From a4e7a359606b276bc595f0273ccc549c766d715b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 20 Nov 2019 11:23:34 +0800 Subject: [PATCH 1/9] document some symbols --- asm/field_control_avatar.s | 2 +- asm/field_effect.s | 10 +- asm/field_map_obj.s | 4 +- asm/field_weather.s | 6 +- asm/item_menu.s | 38 +- asm/link_rfu.s | 8 +- asm/link_rfu_3.s | 18 +- asm/naming_screen.s | 8 +- asm/overworld.s | 26 +- asm/party_menu.s | 5452 +++++++++++++-------------- asm/pokemon_storage_system.s | 4 +- asm/pokemon_summary_screen.s | 18 +- asm/region_map.s | 22 +- asm/script_pokemon_util_80A0058.s | 4 +- asm/script_pokemon_util_80BF8FC.s | 2 +- asm/shop.s | 4 +- data/event_scripts.s | 4 +- data/graphics.s | 6 +- data/party_menu.s | 95 +- data/specials.inc | 2 +- data/strings.s | 90 +- include/battle.h | 2 +- include/field_weather.h | 2 +- include/fldeff.h | 2 +- include/item_menu.h | 4 +- include/overworld.h | 2 +- include/party_menu.h | 60 +- include/region_map.h | 2 +- include/strings.h | 2 +- src/battle_controller_oak_old_man.c | 10 +- src/battle_controller_player.c | 10 +- src/battle_controller_pokedude.c | 10 +- src/battle_controllers.c | 6 +- src/battle_gfx_sfx_util.c | 2 +- src/battle_main.c | 38 +- src/battle_script_commands.c | 4 +- src/berry_pouch.c | 4 +- src/daycare.c | 2 +- src/field_fadetransition.c | 2 +- src/field_poison.c | 4 +- src/field_specials.c | 4 +- src/fieldmap.c | 2 +- src/fldeff_softboiled.c | 56 +- src/fldeff_sweetscent.c | 2 +- src/item_pc.c | 4 +- src/item_use.c | 26 +- src/map_preview_screen.c | 2 +- src/player_pc.c | 8 +- src/quest_log.c | 24 +- src/roamer.c | 2 +- src/save_menu_util.c | 2 +- src/tm_case.c | 10 +- src/trade.c | 18 +- src/wild_pokemon_area.c | 2 +- sym_common.txt | 2 +- sym_ewram.txt | 24 +- 56 files changed, 3088 insertions(+), 3091 deletions(-) diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index dd84f75c1..c0efe9975 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -2572,7 +2572,7 @@ _0806DC78: bl sub_805550C ldrb r0, [r4, 0x7] ldrb r1, [r4, 0x6] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r1, [r0, 0x4] ldrb r0, [r4, 0x5] ldr r1, [r1, 0x8] diff --git a/asm/field_effect.s b/asm/field_effect.s index a8542fcc3..41c33c6fc 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2014,7 +2014,7 @@ task00_8084310: @ 8084310 ldrsh r6, [r4, r0] cmp r6, 0 bne _08084350 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _08084376 @@ -2287,7 +2287,7 @@ _08084560: .4byte gSprites sub_8084564: @ 8084564 push {r4,lr} adds r4, r0, 0 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _08084578 @@ -4002,7 +4002,7 @@ sub_8085274: @ 8085274 adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _080852B4 @@ -5025,7 +5025,7 @@ _08085A50: .4byte gTasks sub_8085A54: @ 8085A54 push {r4,lr} adds r4, r0, 0 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _08085A78 @@ -5492,7 +5492,7 @@ _08085E08: .4byte gTasks sub_8085E0C: @ 8085E0C push {r4-r6,lr} adds r6, r0, 0 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _08085E82 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 8787ff647..8c782d3dd 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -376,7 +376,7 @@ sub_805E080: @ 805E080 str r0, [sp, 0x8] adds r0, r6, 0 adds r1, r7, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r1, [r0, 0x4] lsls r0, r4, 1 adds r0, r4 @@ -4294,7 +4294,7 @@ _0805FD90: .4byte gMapHeader _0805FD94: adds r0, r2, 0 adds r1, r3, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r0, [r0, 0x4] ldr r1, [r0, 0x4] _0805FDA0: diff --git a/asm/field_weather.s b/asm/field_weather.s index b65548171..ece13573f 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1889,8 +1889,8 @@ _0807AA68: .4byte 0x000006ca _0807AA6C: .4byte 0x000006cb thumb_func_end FieldWeather_StartFadingOutCreditsMap - thumb_func_start field_weather_is_fade_finished -field_weather_is_fade_finished: @ 807AA70 + thumb_func_start IsWeatherNotFadingIn +IsWeatherNotFadingIn: @ 807AA70 ldr r0, _0807AA84 @ =gUnknown_2037F34 ldr r1, _0807AA88 @ =0x000006c6 adds r0, r1 @@ -1904,7 +1904,7 @@ field_weather_is_fade_finished: @ 807AA70 .align 2, 0 _0807AA84: .4byte gUnknown_2037F34 _0807AA88: .4byte 0x000006c6 - thumb_func_end field_weather_is_fade_finished + thumb_func_end IsWeatherNotFadingIn thumb_func_start sub_807AA8C sub_807AA8C: @ 807AA8C diff --git a/asm/item_menu.s b/asm/item_menu.s index a8487864a..9774cbe90 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8107DB4 -sub_8107DB4: @ 8107DB4 + thumb_func_start GoToBagMenu +GoToBagMenu: @ 8107DB4 push {r4-r7,lr} mov r7, r8 push {r7} @@ -136,7 +136,7 @@ _08107EA8: .4byte gSpecialVar_ItemId _08107EAC: .4byte sub_8107F10 _08107EB0: .4byte gUnknown_203AD10 _08107EB4: .4byte gUnknown_203ACFC - thumb_func_end sub_8107DB4 + thumb_func_end GoToBagMenu thumb_func_start CB2_BagMenuFromStartMenu CB2_BagMenuFromStartMenu: @ 8107EB8 @@ -144,7 +144,7 @@ CB2_BagMenuFromStartMenu: @ 8107EB8 ldr r2, _08107EC8 @ =CB2_ReturnToStartMenu movs r0, 0 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 @@ -157,7 +157,7 @@ sub_8107ECC: @ 8107ECC ldr r2, _08107EDC @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x5 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 @@ -1934,15 +1934,15 @@ _08108CE8: .4byte 0x0000fff0 _08108CEC: .4byte gUnknown_203ACFC thumb_func_end sub_8108CB4 - thumb_func_start sub_8108CF0 -sub_8108CF0: @ 8108CF0 + thumb_func_start CB2_SetUpReshowBattleScreenAfterMenu +CB2_SetUpReshowBattleScreenAfterMenu: @ 8108CF0 ldr r1, _08108CF8 @ =gUnknown_203ACFC movs r0, 0 strb r0, [r1, 0x5] bx lr .align 2, 0 _08108CF8: .4byte gUnknown_203ACFC - thumb_func_end sub_8108CF0 + thumb_func_end CB2_SetUpReshowBattleScreenAfterMenu thumb_func_start sub_8108CFC sub_8108CFC: @ 8108CFC @@ -4399,7 +4399,7 @@ _0810A120: _0810A13E: ldr r0, _0810A154 @ =gUnknown_203AD10 ldr r1, [r0] - ldr r0, _0810A158 @ =sub_8126EDC + ldr r0, _0810A158 @ =CB2_ChooseMonToGiveItem str r0, [r1] mov r0, r8 subs r0, 0x8 @@ -4409,7 +4409,7 @@ _0810A13E: b _0810A166 .align 2, 0 _0810A154: .4byte gUnknown_203AD10 -_0810A158: .4byte sub_8126EDC +_0810A158: .4byte CB2_ChooseMonToGiveItem _0810A15C: .4byte ItemMenu_StartFadeToExitCallback _0810A160: adds r0, r7, 0 @@ -4786,7 +4786,7 @@ _0810A458: .4byte sub_810A45C thumb_func_start sub_810A45C sub_810A45C: @ 810A45C push {lr} - bl sub_8123730 + bl CB2_SelectBagItemToGive pop {r0} bx r0 thumb_func_end sub_810A45C @@ -4918,7 +4918,7 @@ sub_810A554: @ 810A554 ldr r2, _0810A564 @ =sub_808CE60 movs r0, 0x4 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 @@ -5063,7 +5063,7 @@ sub_810A67C: @ 810A67C ldr r2, _0810A68C @ =CB2_ReturnToField movs r0, 0x2 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 @@ -6127,7 +6127,7 @@ sub_810AF74: @ 810AF74 ldr r2, _0810AF98 @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x6 movs r1, 0 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 @@ -6358,7 +6358,7 @@ _0810B16C: movs r0, 0x8 _0810B170: movs r1, 0 - bl sub_8107DB4 + bl GoToBagMenu pop {r4} pop {r0} bx r0 @@ -6856,10 +6856,10 @@ _0810B564: movs r2, 0 bl DestroyListMenuTask bl sub_810AECC - ldr r1, _0810B5B0 @ =gUnknown_3005E98 + ldr r1, _0810B5B0 @ =gItemUseCB ldr r0, _0810B5B4 @ =ItemUseCB_Medicine str r0, [r1] - ldr r0, _0810B5B8 @ =sub_81279A4 + ldr r0, _0810B5B8 @ =ChooseMonForInBattleItem bl ItemMenu_SetExitCallback mov r0, r9 subs r0, 0x8 @@ -6868,9 +6868,9 @@ _0810B564: str r1, [r0] b _0810B5C6 .align 2, 0 -_0810B5B0: .4byte gUnknown_3005E98 +_0810B5B0: .4byte gItemUseCB _0810B5B4: .4byte ItemUseCB_Medicine -_0810B5B8: .4byte sub_81279A4 +_0810B5B8: .4byte ChooseMonForInBattleItem _0810B5BC: .4byte sub_810B070 _0810B5C0: ldrh r0, [r5, 0x10] diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 0ccbda9eb..df112d1ad 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -3172,8 +3172,8 @@ _080FEBA6: bx r0 thumb_func_end sub_80FEB3C - thumb_func_start sub_80FEBAC -sub_80FEBAC: @ 80FEBAC + thumb_func_start DoEasyChatScreen +DoEasyChatScreen: @ 80FEBAC push {r4-r6,lr} mov r6, r8 push {r6} @@ -3214,7 +3214,7 @@ sub_80FEBAC: @ 80FEBAC _080FEC00: .4byte sub_80FEC54 _080FEC04: .4byte gTasks _080FEC08: .4byte sub_80FEC0C - thumb_func_end sub_80FEBAC + thumb_func_end DoEasyChatScreen thumb_func_start sub_80FEC0C sub_80FEC0C: @ 80FEC0C @@ -3588,7 +3588,7 @@ _080FEF08: ldr r0, _080FEF24 @ =gSpecialVar_0x8004 ldrb r0, [r0] ldr r2, _080FEF28 @ =sub_80568C4 - bl sub_80FEBAC + bl DoEasyChatScreen _080FEF12: pop {r0} bx r0 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 24125485e..d996721ad 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3650,7 +3650,7 @@ _08117784: ldr r0, _0811779C @ =sub_811C1C8 str r0, [r1, 0x8] movs r0, 0x2 - bl sub_81274A8 + bl InitChooseHalfPartyForBattle b _081178E0 .align 2, 0 _08117798: .4byte gMain @@ -5602,12 +5602,12 @@ _0811887C: _081188C4: .4byte gUnknown_203B06C _081188C8: .4byte gSpecialVar_Result _081188CC: - bl sub_811FB18 + bl GetPartyMenuType lsls r0, 24 lsrs r0, 24 cmp r0, 0x8 beq _081188E4 - bl sub_811FB18 + bl GetPartyMenuType lsls r0, 24 lsrs r0, 24 cmp r0, 0x9 @@ -7006,7 +7006,7 @@ _08119512: str r0, [r1] ldr r1, _08119538 @ =CB2_ReturnToField movs r0, 0x8 - bl sub_81277F4 + bl ChooseMonForMoveTutor b _081198DC .align 2, 0 _08119528: .4byte gPaletteFade @@ -7335,7 +7335,7 @@ _081197CA: adds r0, r1 ldr r0, [r0] str r0, [r2] - ldr r2, _0811982C @ =gUnknown_203B06A + ldr r2, _0811982C @ =gUnionRoomRequestedMonType ldr r1, [r6] movs r3, 0x2 ldrsh r0, [r7, r3] @@ -7344,7 +7344,7 @@ _081197CA: ldrb r0, [r1, 0x9] lsrs r0, 2 strb r0, [r2] - ldr r2, _08119830 @ =gUnknown_203B068 + ldr r2, _08119830 @ =gUnionRoomOfferedSpecies ldr r1, [r6] movs r3, 0x2 ldrsh r0, [r7, r3] @@ -7359,7 +7359,7 @@ _081197CA: str r0, [r1] ldr r1, _0811983C @ =CB2_ReturnToField movs r0, 0x9 - bl sub_81277F4 + bl ChooseMonForMoveTutor adds r0, r6, 0 bl sub_81186B0 ldrh r0, [r7, 0x2] @@ -7369,8 +7369,8 @@ _081197CA: _08119820: .4byte gUnknown_8458D1C _08119824: .4byte gUnknown_203B06C _08119828: .4byte gUnknown_203B064 -_0811982C: .4byte gUnknown_203B06A -_08119830: .4byte gUnknown_203B068 +_0811982C: .4byte gUnionRoomRequestedMonType +_08119830: .4byte gUnionRoomOfferedSpecies _08119834: .4byte gFieldCallback _08119838: .4byte sub_807DCE4 _0811983C: .4byte CB2_ReturnToField diff --git a/asm/naming_screen.s b/asm/naming_screen.s index 817d215a0..a42d6e4ab 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -3623,7 +3623,7 @@ sub_809F5C4: @ 809F5C4 push {r4,r5,lr} sub sp, 0x10 movs r4, 0 - ldr r1, _0809F61C @ =gUnknown_841621F + ldr r1, _0809F61C @ =gText_MaleSymbol add r0, sp, 0xC bl StringCopy ldr r5, _0809F620 @ =gUnknown_203998C @@ -3635,7 +3635,7 @@ sub_809F5C4: @ 809F5C4 beq _0809F614 cmp r0, 0xFE bne _0809F5EE - ldr r1, _0809F628 @ =gUnknown_8416221 + ldr r1, _0809F628 @ =gText_FemaleSymbol add r0, sp, 0xC bl StringCopy movs r4, 0x1 @@ -3664,10 +3664,10 @@ _0809F614: pop {r0} bx r0 .align 2, 0 -_0809F61C: .4byte gUnknown_841621F +_0809F61C: .4byte gText_MaleSymbol _0809F620: .4byte gUnknown_203998C _0809F624: .4byte 0x00001e36 -_0809F628: .4byte gUnknown_8416221 +_0809F628: .4byte gText_FemaleSymbol _0809F62C: .4byte 0x00001e13 _0809F630: .4byte gUnknown_83E2428 thumb_func_end sub_809F5C4 diff --git a/asm/overworld.s b/asm/overworld.s index 28bcd8ecb..29c676060 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -473,7 +473,7 @@ _08054F8A: str r2, [sp, 0x4] adds r0, r2, 0 adds r1, r5, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId mov r6, r10 ldr r1, [r6] mov r2, r8 @@ -821,8 +821,8 @@ _08055232: bx r1 thumb_func_end warp_data_is_not_neg_1 - thumb_func_start get_mapheader_by_bank_and_number -get_mapheader_by_bank_and_number: @ 8055238 + thumb_func_start Overworld_GetMapHeaderByGroupAndId +Overworld_GetMapHeaderByGroupAndId: @ 8055238 lsls r0, 16 lsls r1, 16 ldr r2, _0805524C @ =gMapGroups @@ -835,7 +835,7 @@ get_mapheader_by_bank_and_number: @ 8055238 bx lr .align 2, 0 _0805524C: .4byte gMapGroups - thumb_func_end get_mapheader_by_bank_and_number + thumb_func_end Overworld_GetMapHeaderByGroupAndId thumb_func_start warp1_get_mapheader warp1_get_mapheader: @ 8055250 @@ -850,7 +850,7 @@ warp1_get_mapheader: @ 8055250 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId pop {r1} bx r1 .align 2, 0 @@ -872,7 +872,7 @@ set_current_map_header_from_sav1_save_old_name: @ 8055274 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r4, 0 ldm r0!, {r2,r3,r6} stm r1!, {r2,r3,r6} @@ -908,7 +908,7 @@ set_current_map_header_from_sav1: @ 80552BC asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r4, 0 ldm r0!, {r2,r3,r5} stm r1!, {r2,r3,r5} @@ -2336,7 +2336,7 @@ sub_8055D6C: @ 8055D6C asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrh r0, [r0, 0x10] pop {r1} bx r1 @@ -2863,7 +2863,7 @@ get_map_light_level_by_bank_and_number: @ 8056158 lsls r1, 24 asrs r1, 8 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x17] pop {r1} bx r1 @@ -2925,7 +2925,7 @@ sub_80561B4: @ 80561B4 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -3014,7 +3014,7 @@ sav1_saved_warp2_map_get_name: @ 8056238 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -3036,7 +3036,7 @@ GetCurrentRegionMapSectionId: @ 8056260 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -3058,7 +3058,7 @@ sav1_map_get_battletype: @ 8056288 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x1B] pop {r1} bx r1 diff --git a/asm/party_menu.s b/asm/party_menu.s index 3cb62c712..081515121 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5,8 +5,8 @@ .text - thumb_func_start PartyMenuInit -PartyMenuInit: @ 811EA44 + thumb_func_start InitPartyMenu +InitPartyMenu: @ 811EA44 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -28,8 +28,8 @@ PartyMenuInit: @ 811EA44 str r3, [sp] lsls r4, 24 lsrs r7, r4, 24 - bl reset_brm - ldr r6, _0811EA8C @ =gUnknown_203B09C + bl ResetPartyMenu + ldr r6, _0811EA8C @ =sPartyMenuInternal movs r0, 0x8E lsls r0, 2 bl Alloc @@ -41,9 +41,9 @@ PartyMenuInit: @ 811EA44 bl SetMainCallback2 b _0811EB80 .align 2, 0 -_0811EA8C: .4byte gUnknown_203B09C +_0811EA8C: .4byte sPartyMenuInternal _0811EA90: - ldr r3, _0811EAE0 @ =gUnknown_203B0A0 + ldr r3, _0811EAE0 @ =gPartyMenu movs r1, 0xF mov r0, r9 ands r1, r0 @@ -83,7 +83,7 @@ _0811EA90: strb r1, [r0, 0x8] b _0811EAF0 .align 2, 0 -_0811EAE0: .4byte gUnknown_203B0A0 +_0811EAE0: .4byte gPartyMenu _0811EAE4: ldr r2, [r6] ldrb r1, [r2, 0x8] @@ -106,7 +106,7 @@ _0811EAF0: strb r1, [r7, 0x8] _0811EB08: movs r2, 0 - ldr r5, _0811EB90 @ =gUnknown_203B09C + ldr r5, _0811EB90 @ =sPartyMenuInternal movs r4, 0x86 lsls r4, 2 movs r3, 0 @@ -122,7 +122,7 @@ _0811EB12: cmp r2, 0xF bls _0811EB12 movs r2, 0 - ldr r4, _0811EB90 @ =gUnknown_203B09C + ldr r4, _0811EB90 @ =sPartyMenuInternal movs r3, 0xFF _0811EB2C: ldr r0, [r4] @@ -165,7 +165,7 @@ _0811EB6A: ands r0, r1 strb r0, [r2] bl CalculatePlayerPartyCount - ldr r0, _0811EB9C @ =sub_811EBD0 + ldr r0, _0811EB9C @ =CB2_InitPartyMenu bl SetMainCallback2 _0811EB80: add sp, 0x4 @@ -177,14 +177,14 @@ _0811EB80: pop {r0} bx r0 .align 2, 0 -_0811EB90: .4byte gUnknown_203B09C +_0811EB90: .4byte sPartyMenuInternal _0811EB94: .4byte gPlayerParty _0811EB98: .4byte gTextFlags -_0811EB9C: .4byte sub_811EBD0 - thumb_func_end PartyMenuInit +_0811EB9C: .4byte CB2_InitPartyMenu + thumb_func_end InitPartyMenu - thumb_func_start sub_811EBA0 -sub_811EBA0: @ 811EBA0 + thumb_func_start CB2_UpdatePartyMenu +CB2_UpdatePartyMenu: @ 811EBA0 push {lr} bl RunTasks bl AnimateSprites @@ -193,20 +193,20 @@ sub_811EBA0: @ 811EBA0 bl UpdatePaletteFade pop {r0} bx r0 - thumb_func_end sub_811EBA0 + thumb_func_end CB2_UpdatePartyMenu - thumb_func_start sub_811EBBC -sub_811EBBC: @ 811EBBC + thumb_func_start VBlankCB_PartyMenu +VBlankCB_PartyMenu: @ 811EBBC push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 - thumb_func_end sub_811EBBC + thumb_func_end VBlankCB_PartyMenu - thumb_func_start sub_811EBD0 -sub_811EBD0: @ 811EBD0 + thumb_func_start CB2_InitPartyMenu +CB2_InitPartyMenu: @ 811EBD0 push {lr} _0811EBD2: bl sub_80BF748 @@ -214,7 +214,7 @@ _0811EBD2: lsrs r0, 24 cmp r0, 0x1 beq _0811EBF6 - bl sub_811EBFC + bl ShowPartyMenu lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -227,10 +227,10 @@ _0811EBD2: _0811EBF6: pop {r0} bx r0 - thumb_func_end sub_811EBD0 + thumb_func_end CB2_InitPartyMenu - thumb_func_start sub_811EBFC -sub_811EBFC: @ 811EBFC + thumb_func_start ShowPartyMenu +ShowPartyMenu: @ 811EBFC push {r4,lr} sub sp, 0x4 ldr r0, _0811EC1C @ =gMain @@ -308,18 +308,18 @@ _0811ECC0: bl ResetTasks b _0811EDFC _0811ECC6: - bl sub_81208E4 + bl SetPartyMonsAllowedInMinigame b _0811EDFC _0811ECCC: - bl sub_811EECC + bl AllocPartyMenuBg lsls r0, 24 cmp r0, 0 bne _0811ECDE - bl sub_811EE38 + bl ExitPartyMenu movs r0, 0x1 b _0811EE2E _0811ECDE: - ldr r0, _0811ECF0 @ =gUnknown_203B09C + ldr r0, _0811ECF0 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -328,9 +328,9 @@ _0811ECDE: strh r1, [r0] b _0811EDFC .align 2, 0 -_0811ECF0: .4byte gUnknown_203B09C +_0811ECF0: .4byte sPartyMenuInternal _0811ECF4: - bl sub_811EF44 + bl AllocPartyMenuBgGfx lsls r0, 24 cmp r0, 0 bne _0811ED00 @@ -338,21 +338,21 @@ _0811ECF4: _0811ED00: b _0811EDFC _0811ED02: - ldr r0, _0811ED10 @ =gUnknown_203B0A0 + ldr r0, _0811ED10 @ =gPartyMenu ldrb r0, [r0, 0x8] lsls r0, 26 lsrs r0, 30 - bl sub_8121060 + bl InitPartyMenuWindows b _0811EDFC .align 2, 0 -_0811ED10: .4byte gUnknown_203B0A0 +_0811ED10: .4byte gPartyMenu _0811ED14: - ldr r0, _0811ED30 @ =gUnknown_203B0A0 + ldr r0, _0811ED30 @ =gPartyMenu ldrb r0, [r0, 0x8] lsls r0, 26 lsrs r0, 30 - bl sub_811F0BC - ldr r0, _0811ED34 @ =gUnknown_203B09C + bl InitPartyMenuBoxes + ldr r0, _0811ED34 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -361,26 +361,26 @@ _0811ED14: strh r1, [r0] b _0811EDFC .align 2, 0 -_0811ED30: .4byte gUnknown_203B0A0 -_0811ED34: .4byte gUnknown_203B09C +_0811ED30: .4byte gPartyMenu +_0811ED34: .4byte sPartyMenuInternal _0811ED38: bl LoadHeldItemIcons b _0811EDFC _0811ED3E: - bl sub_8122860 + bl LoadPartyMenuPokeballGfx b _0811EDFC _0811ED44: - bl sub_8122980 + bl LoadPartyMenuAilmentGfx b _0811EDFC _0811ED4A: bl LoadMonIconPalettes b _0811EDFC _0811ED50: - bl party_menu_add_per_mon_objects + bl CreatePartyMonSpritesLoop lsls r0, 24 cmp r0, 0 beq _0811EE2C - ldr r0, _0811ED6C @ =gUnknown_203B09C + ldr r0, _0811ED6C @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -389,13 +389,13 @@ _0811ED50: strh r1, [r0] b _0811EDFC .align 2, 0 -_0811ED6C: .4byte gUnknown_203B09C +_0811ED6C: .4byte sPartyMenuInternal _0811ED70: - bl sub_811F5EC + bl RenderPartyMenuBoxes lsls r0, 24 cmp r0, 0 beq _0811EE2C - ldr r0, _0811ED8C @ =gUnknown_203B09C + ldr r0, _0811ED8C @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -404,26 +404,26 @@ _0811ED70: strh r1, [r0] b _0811EDFC .align 2, 0 -_0811ED8C: .4byte gUnknown_203B09C +_0811ED8C: .4byte sPartyMenuInternal _0811ED90: - bl sub_811F774 + bl CreateCancelConfirmPokeballSprites b _0811EDFC _0811ED96: - ldr r0, _0811EDA8 @ =gUnknown_203B09C + ldr r0, _0811EDA8 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 lsrs r0, 31 - bl sub_81210F8 + bl CreateCancelConfirmWindows b _0811EDFC .align 2, 0 -_0811EDA8: .4byte gUnknown_203B09C +_0811EDA8: .4byte sPartyMenuInternal _0811EDAC: movs r0, 0x5 bl HelpSystem_SetSomeVariable2 b _0811EDFC _0811EDB4: - ldr r4, _0811EDCC @ =gUnknown_203B09C + ldr r4, _0811EDCC @ =sPartyMenuInternal ldr r0, [r4] ldr r0, [r0] movs r1, 0 @@ -431,10 +431,10 @@ _0811EDB4: ldr r0, [r4] ldrh r0, [r0, 0xA] lsrs r0, 2 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _0811EDFC .align 2, 0 -_0811EDCC: .4byte gUnknown_203B09C +_0811EDCC: .4byte sPartyMenuInternal _0811EDD0: movs r0, 0x1 negs r0, r0 @@ -471,15 +471,15 @@ _0811EDFC: _0811EE0C: .4byte gPaletteFade _0811EE10: .4byte gMain _0811EE14: - ldr r0, _0811EE24 @ =sub_811EBBC + ldr r0, _0811EE24 @ =VBlankCB_PartyMenu bl SetVBlankCallback - ldr r0, _0811EE28 @ =sub_811EBA0 + ldr r0, _0811EE28 @ =CB2_UpdatePartyMenu bl SetMainCallback2 movs r0, 0x1 b _0811EE2E .align 2, 0 -_0811EE24: .4byte sub_811EBBC -_0811EE28: .4byte sub_811EBA0 +_0811EE24: .4byte VBlankCB_PartyMenu +_0811EE28: .4byte CB2_UpdatePartyMenu _0811EE2C: movs r0, 0 _0811EE2E: @@ -487,10 +487,10 @@ _0811EE2E: pop {r4} pop {r1} bx r1 - thumb_func_end sub_811EBFC + thumb_func_end ShowPartyMenu - thumb_func_start sub_811EE38 -sub_811EE38: @ 811EE38 + thumb_func_start ExitPartyMenu +ExitPartyMenu: @ 811EE38 push {lr} sub sp, 0x4 movs r0, 0x1 @@ -501,24 +501,24 @@ sub_811EE38: @ 811EE38 str r2, [sp] movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _0811EE68 @ =sub_811EE74 + ldr r0, _0811EE68 @ =Task_ExitPartyMenu movs r1, 0 bl CreateTask - ldr r0, _0811EE6C @ =sub_811EBBC + ldr r0, _0811EE6C @ =VBlankCB_PartyMenu bl SetVBlankCallback - ldr r0, _0811EE70 @ =sub_811EBA0 + ldr r0, _0811EE70 @ =CB2_UpdatePartyMenu bl SetMainCallback2 add sp, 0x4 pop {r0} bx r0 .align 2, 0 -_0811EE68: .4byte sub_811EE74 -_0811EE6C: .4byte sub_811EBBC -_0811EE70: .4byte sub_811EBA0 - thumb_func_end sub_811EE38 +_0811EE68: .4byte Task_ExitPartyMenu +_0811EE6C: .4byte VBlankCB_PartyMenu +_0811EE70: .4byte CB2_UpdatePartyMenu + thumb_func_end ExitPartyMenu - thumb_func_start sub_811EE74 -sub_811EE74: @ 811EE74 + thumb_func_start Task_ExitPartyMenu +Task_ExitPartyMenu: @ 811EE74 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -528,10 +528,10 @@ sub_811EE74: @ 811EE74 ands r0, r1 cmp r0, 0 bne _0811EE98 - ldr r0, _0811EEA4 @ =gUnknown_203B0A0 + ldr r0, _0811EEA4 @ =gPartyMenu ldr r0, [r0] bl SetMainCallback2 - bl sub_811F070 + bl FreePartyPointers adds r0, r4, 0 bl DestroyTask _0811EE98: @@ -540,33 +540,33 @@ _0811EE98: bx r0 .align 2, 0 _0811EEA0: .4byte gPaletteFade -_0811EEA4: .4byte gUnknown_203B0A0 - thumb_func_end sub_811EE74 +_0811EEA4: .4byte gPartyMenu + thumb_func_end Task_ExitPartyMenu - thumb_func_start reset_brm -reset_brm: @ 811EEA8 - ldr r0, _0811EEBC @ =gUnknown_203B09C + thumb_func_start ResetPartyMenu +ResetPartyMenu: @ 811EEA8 + ldr r0, _0811EEBC @ =sPartyMenuInternal movs r1, 0 str r1, [r0] - ldr r0, _0811EEC0 @ =gUnknown_203B0BC + ldr r0, _0811EEC0 @ =sPartyBgTilemapBuffer str r1, [r0] - ldr r0, _0811EEC4 @ =gUnknown_203B0B4 + ldr r0, _0811EEC4 @ =sPartyMenuBoxes str r1, [r0] - ldr r0, _0811EEC8 @ =gUnknown_203B0B8 + ldr r0, _0811EEC8 @ =sPartyBgGfxTilemap str r1, [r0] bx lr .align 2, 0 -_0811EEBC: .4byte gUnknown_203B09C -_0811EEC0: .4byte gUnknown_203B0BC -_0811EEC4: .4byte gUnknown_203B0B4 -_0811EEC8: .4byte gUnknown_203B0B8 - thumb_func_end reset_brm +_0811EEBC: .4byte sPartyMenuInternal +_0811EEC0: .4byte sPartyBgTilemapBuffer +_0811EEC4: .4byte sPartyMenuBoxes +_0811EEC8: .4byte sPartyBgGfxTilemap + thumb_func_end ResetPartyMenu - thumb_func_start sub_811EECC -sub_811EECC: @ 811EECC + thumb_func_start AllocPartyMenuBg +AllocPartyMenuBg: @ 811EECC push {r4,r5,lr} bl ResetAllBgsCoordinatesAndBgCntRegs - ldr r5, _0811EF34 @ =gUnknown_203B0BC + ldr r5, _0811EF34 @ =sPartyBgTilemapBuffer movs r4, 0x80 lsls r4, 4 adds r0, r4, 0 @@ -579,7 +579,7 @@ sub_811EECC: @ 811EECC bl memset movs r0, 0 bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0811EF38 @ =gUnknown_8459EB8 + ldr r1, _0811EF38 @ =sPartyMenuBgTemplates movs r0, 0 movs r2, 0x3 bl InitBgsFromTemplates @@ -604,21 +604,21 @@ sub_811EECC: @ 811EECC movs r0, 0x1 b _0811EF3E .align 2, 0 -_0811EF34: .4byte gUnknown_203B0BC -_0811EF38: .4byte gUnknown_8459EB8 +_0811EF34: .4byte sPartyBgTilemapBuffer +_0811EF38: .4byte sPartyMenuBgTemplates _0811EF3C: movs r0, 0 _0811EF3E: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_811EECC + thumb_func_end AllocPartyMenuBg - thumb_func_start sub_811EF44 -sub_811EF44: @ 811EF44 + thumb_func_start AllocPartyMenuBgGfx +AllocPartyMenuBgGfx: @ 811EF44 push {r4,lr} sub sp, 0x4 - ldr r0, _0811EF64 @ =gUnknown_203B09C + ldr r0, _0811EF64 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -633,7 +633,7 @@ sub_811EF44: @ 811EF44 ldr r0, [r0] mov pc, r0 .align 2, 0 -_0811EF64: .4byte gUnknown_203B09C +_0811EF64: .4byte sPartyMenuInternal _0811EF68: .4byte _0811EF6C .align 2, 0 _0811EF6C: @@ -646,8 +646,8 @@ _0811EF6C: .4byte _0811F00C .4byte _0811F010 _0811EF8C: - ldr r4, _0811EFAC @ =gUnknown_203B0B8 - ldr r0, _0811EFB0 @ =gFile_graphics_interface_party_menu_misc_sheet + ldr r4, _0811EFAC @ =sPartyBgGfxTilemap + ldr r0, _0811EFB0 @ =gPartyMenuBg_Gfx mov r1, sp bl MallocAndDecompress adds r1, r0, 0 @@ -660,29 +660,29 @@ _0811EF8C: bl LoadBgTiles b _0811F016 .align 2, 0 -_0811EFAC: .4byte gUnknown_203B0B8 -_0811EFB0: .4byte gFile_graphics_interface_party_menu_misc_sheet +_0811EFAC: .4byte sPartyBgGfxTilemap +_0811EFB0: .4byte gPartyMenuBg_Gfx _0811EFB4: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _0811F030 - ldr r0, _0811EFCC @ =gFile_graphics_interface_party_menu_misc_tilemap - ldr r1, _0811EFD0 @ =gUnknown_203B0BC + ldr r0, _0811EFCC @ =gPartyMenuBg_Tilemap + ldr r1, _0811EFD0 @ =sPartyBgTilemapBuffer ldr r1, [r1] bl LZDecompressWram b _0811F016 .align 2, 0 -_0811EFCC: .4byte gFile_graphics_interface_party_menu_misc_tilemap -_0811EFD0: .4byte gUnknown_203B0BC +_0811EFCC: .4byte gPartyMenuBg_Tilemap +_0811EFD0: .4byte sPartyBgTilemapBuffer _0811EFD4: - ldr r0, _0811EFF4 @ =gUnknown_8E829C8 + ldr r0, _0811EFF4 @ =gPartyMenuBg_Pal movs r2, 0xB0 lsls r2, 1 movs r1, 0 bl LoadCompressedPalette ldr r0, _0811EFF8 @ =gPlttBufferUnfaded - ldr r4, _0811EFFC @ =gUnknown_203B09C + ldr r4, _0811EFFC @ =sPartyMenuInternal ldr r1, [r4] adds r1, 0x18 movs r2, 0xB0 @@ -690,9 +690,9 @@ _0811EFD4: ldr r1, [r4] b _0811F01A .align 2, 0 -_0811EFF4: .4byte gUnknown_8E829C8 +_0811EFF4: .4byte gPartyMenuBg_Pal _0811EFF8: .4byte gPlttBufferUnfaded -_0811EFFC: .4byte gUnknown_203B09C +_0811EFFC: .4byte sPartyMenuInternal _0811F000: movs r0, 0x4 b _0811F012 @@ -708,9 +708,9 @@ _0811F00C: _0811F010: movs r0, 0x8 _0811F012: - bl sub_811F03C + bl PartyPaletteBufferCopy _0811F016: - ldr r0, _0811F028 @ =gUnknown_203B09C + ldr r0, _0811F028 @ =sPartyMenuInternal ldr r1, [r0] _0811F01A: movs r0, 0x86 @@ -721,7 +721,7 @@ _0811F01A: strh r0, [r1] b _0811F030 .align 2, 0 -_0811F028: .4byte gUnknown_203B09C +_0811F028: .4byte sPartyMenuInternal _0811F02C: movs r0, 0x1 b _0811F032 @@ -732,10 +732,10 @@ _0811F032: pop {r4} pop {r1} bx r1 - thumb_func_end sub_811EF44 + thumb_func_end AllocPartyMenuBgGfx - thumb_func_start sub_811F03C -sub_811F03C: @ 811F03C + thumb_func_start PartyPaletteBufferCopy +PartyPaletteBufferCopy: @ 811F03C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 28 @@ -759,30 +759,30 @@ sub_811F03C: @ 811F03C .align 2, 0 _0811F068: .4byte gPlttBufferUnfaded + 0x60 _0811F06C: .4byte gPlttBufferFaded - thumb_func_end sub_811F03C + thumb_func_end PartyPaletteBufferCopy - thumb_func_start sub_811F070 -sub_811F070: @ 811F070 + thumb_func_start FreePartyPointers +FreePartyPointers: @ 811F070 push {lr} - ldr r0, _0811F0AC @ =gUnknown_203B09C + ldr r0, _0811F0AC @ =sPartyMenuInternal ldr r0, [r0] cmp r0, 0 beq _0811F07E bl Free _0811F07E: - ldr r0, _0811F0B0 @ =gUnknown_203B0BC + ldr r0, _0811F0B0 @ =sPartyBgTilemapBuffer ldr r0, [r0] cmp r0, 0 beq _0811F08A bl Free _0811F08A: - ldr r0, _0811F0B4 @ =gUnknown_203B0B8 + ldr r0, _0811F0B4 @ =sPartyBgGfxTilemap ldr r0, [r0] cmp r0, 0 beq _0811F096 bl Free _0811F096: - ldr r0, _0811F0B8 @ =gUnknown_203B0B4 + ldr r0, _0811F0B8 @ =sPartyMenuBoxes ldr r0, [r0] cmp r0, 0 beq _0811F0A2 @@ -792,28 +792,28 @@ _0811F0A2: pop {r0} bx r0 .align 2, 0 -_0811F0AC: .4byte gUnknown_203B09C -_0811F0B0: .4byte gUnknown_203B0BC -_0811F0B4: .4byte gUnknown_203B0B8 -_0811F0B8: .4byte gUnknown_203B0B4 - thumb_func_end sub_811F070 +_0811F0AC: .4byte sPartyMenuInternal +_0811F0B0: .4byte sPartyBgTilemapBuffer +_0811F0B4: .4byte sPartyBgGfxTilemap +_0811F0B8: .4byte sPartyMenuBoxes + thumb_func_end FreePartyPointers - thumb_func_start sub_811F0BC -sub_811F0BC: @ 811F0BC + thumb_func_start InitPartyMenuBoxes +InitPartyMenuBoxes: @ 811F0BC push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r4, _0811F108 @ =gUnknown_203B0B4 + ldr r4, _0811F108 @ =sPartyMenuBoxes movs r0, 0x60 bl Alloc str r0, [r4] movs r2, 0 - ldr r7, _0811F10C @ =gUnknown_8459EE4 + ldr r7, _0811F10C @ =sPartyBoxInfoRects + 0x20 lsls r0, r5, 1 adds r0, r5 lsls r3, r0, 4 mov r12, r4 - ldr r6, _0811F110 @ =gUnknown_8459F04 + ldr r6, _0811F110 @ =sPartyMenuSpriteCoords _0811F0DA: ldr r0, [r4] lsls r1, r2, 4 @@ -831,17 +831,17 @@ _0811F0DA: bls _0811F0DA mov r1, r12 ldr r0, [r1] - ldr r1, _0811F114 @ =gUnknown_8459EC4 + ldr r1, _0811F114 @ =sPartyBoxInfoRects str r1, [r0] cmp r5, 0x3 bne _0811F118 str r1, [r0, 0x30] b _0811F11E .align 2, 0 -_0811F108: .4byte gUnknown_203B0B4 -_0811F10C: .4byte gUnknown_8459EE4 -_0811F110: .4byte gUnknown_8459F04 -_0811F114: .4byte gUnknown_8459EC4 +_0811F108: .4byte sPartyMenuBoxes +_0811F10C: .4byte sPartyBoxInfoRects + 0x20 +_0811F110: .4byte sPartyMenuSpriteCoords +_0811F114: .4byte sPartyBoxInfoRects _0811F118: cmp r5, 0 beq _0811F11E @@ -850,14 +850,14 @@ _0811F11E: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_811F0BC + thumb_func_end InitPartyMenuBoxes - thumb_func_start sub_811F124 -sub_811F124: @ 811F124 + thumb_func_start RenderPartyMenuBox +RenderPartyMenuBox: @ 811F124 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _0811F16C @ =gUnknown_203B0A0 + ldr r0, _0811F16C @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -866,13 +866,13 @@ sub_811F124: @ 811F124 cmp r4, 0x2 bls _0811F174 adds r0, r4, 0 - bl sub_811F528 - ldr r5, _0811F170 @ =gUnknown_203B0B4 + bl DisplayPartyPokemonDataForMultiBattle + ldr r5, _0811F170 @ =sPartyMenuBoxes lsls r4, 4 ldr r0, [r5] adds r0, r4 movs r1, 0x8 - bl sub_812142C + bl LoadPartyBoxPalette ldr r0, [r5] adds r0, r4, r0 ldrb r0, [r0, 0x8] @@ -886,8 +886,8 @@ sub_811F124: @ 811F124 bl ScheduleBgCopyTilemapToVram b _0811F22A .align 2, 0 -_0811F16C: .4byte gUnknown_203B0A0 -_0811F170: .4byte gUnknown_203B0B4 +_0811F16C: .4byte gPartyMenu +_0811F170: .4byte sPartyMenuBoxes _0811F174: movs r0, 0x64 muls r0, r4 @@ -897,12 +897,12 @@ _0811F174: bl GetMonData cmp r0, 0 bne _0811F1AC - ldr r5, _0811F1A8 @ =gUnknown_203B0B4 + ldr r5, _0811F1A8 @ =sPartyMenuBoxes ldr r0, [r5] lsls r4, 4 adds r0, r4, r0 ldrb r0, [r0, 0x8] - bl sub_8121404 + bl DrawEmptySlot ldr r0, [r5] adds r0, r4, r0 ldrb r0, [r0, 0x8] @@ -911,35 +911,35 @@ _0811F174: b _0811F218 .align 2, 0 _0811F1A4: .4byte gPlayerParty -_0811F1A8: .4byte gUnknown_203B0B4 +_0811F1A8: .4byte sPartyMenuBoxes _0811F1AC: - ldr r0, _0811F1C0 @ =gUnknown_203B0A0 + ldr r0, _0811F1C0 @ =gPartyMenu ldrb r0, [r0, 0x8] movs r1, 0xF ands r1, r0 cmp r1, 0x4 bne _0811F1C4 adds r0, r4, 0 - bl sub_811F388 + bl DisplayPartyPokemonDataForChooseHalf b _0811F1E2 .align 2, 0 -_0811F1C0: .4byte gUnknown_203B0A0 +_0811F1C0: .4byte gPartyMenu _0811F1C4: cmp r1, 0xB bne _0811F1D0 adds r0, r4, 0 - bl sub_811F404 + bl DisplayPartyPokemonDataForWirelessMinigame b _0811F1E2 _0811F1D0: adds r0, r4, 0 - bl sub_811F430 + bl DisplayPartyPokemonDataForMoveTutorOrEvolutionItem lsls r0, 24 cmp r0, 0 bne _0811F1E2 adds r0, r4, 0 - bl sub_811F234 + bl DisplayPartyPokemonData _0811F1E2: - ldr r2, _0811F1F8 @ =gUnknown_203B0A0 + ldr r2, _0811F1F8 @ =gPartyMenu ldrb r1, [r2, 0x8] movs r0, 0xF ands r0, r1 @@ -947,10 +947,10 @@ _0811F1E2: bne _0811F1FC adds r0, r4, 0 movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot b _0811F216 .align 2, 0 -_0811F1F8: .4byte gUnknown_203B0A0 +_0811F1F8: .4byte gPartyMenu _0811F1FC: movs r0, 0x9 ldrsb r0, [r2, r0] @@ -958,16 +958,16 @@ _0811F1FC: bne _0811F20E adds r0, r4, 0 movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot b _0811F216 _0811F20E: adds r0, r4, 0 movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot _0811F216: lsls r4, 4 _0811F218: - ldr r0, _0811F230 @ =gUnknown_203B0B4 + ldr r0, _0811F230 @ =sPartyMenuBoxes ldr r0, [r0] adds r0, r4, r0 ldrb r0, [r0, 0x8] @@ -979,11 +979,11 @@ _0811F22A: pop {r0} bx r0 .align 2, 0 -_0811F230: .4byte gUnknown_203B0B4 - thumb_func_end sub_811F124 +_0811F230: .4byte sPartyMenuBoxes + thumb_func_end RenderPartyMenuBox - thumb_func_start sub_811F234 -sub_811F234: @ 811F234 + thumb_func_start DisplayPartyPokemonData +DisplayPartyPokemonData: @ 811F234 push {r4-r7,lr} sub sp, 0x8 lsls r0, 24 @@ -999,7 +999,7 @@ sub_811F234: @ 811F234 adds r2, r0, 0 cmp r2, 0 beq _0811F28C - ldr r6, _0811F288 @ =gUnknown_203B0B4 + ldr r6, _0811F288 @ =sPartyMenuBoxes ldr r0, [r6] lsls r5, r4, 4 adds r0, r5, r0 @@ -1018,13 +1018,13 @@ sub_811F234: @ 811F234 adds r1, r5 adds r0, r7, 0 movs r2, 0 - bl sub_8121738 + bl DisplayPartyPokemonNickname b _0811F2EE .align 2, 0 _0811F284: .4byte gPlayerParty -_0811F288: .4byte gUnknown_203B0B4 +_0811F288: .4byte sPartyMenuBoxes _0811F28C: - ldr r5, _0811F2F8 @ =gUnknown_203B0B4 + ldr r5, _0811F2F8 @ =sPartyMenuBoxes ldr r0, [r5] lsls r4, 4 adds r0, r4, r0 @@ -1041,42 +1041,42 @@ _0811F28C: adds r1, r4 adds r0, r7, 0 movs r2, 0 - bl sub_8121738 + bl DisplayPartyPokemonNickname ldr r1, [r5] adds r1, r4 adds r0, r7, 0 movs r2, 0 - bl sub_8121790 + bl DisplayPartyPokemonLevelCheck ldr r1, [r5] adds r1, r4 adds r0, r7, 0 movs r2, 0 - bl sub_8121854 + bl DisplayPartyPokemonGenderNidoranCheck ldr r1, [r5] adds r1, r4 adds r0, r7, 0 movs r2, 0 - bl sub_812199C + bl DisplayPartyPokemonHPCheck ldr r1, [r5] adds r1, r4 adds r0, r7, 0 movs r2, 0 - bl sub_8121A3C + bl DisplayPartyPokemonMaxHPCheck ldr r1, [r5] adds r1, r4 adds r0, r7, 0 - bl sub_8121AF0 + bl DisplayPartyPokemonHPBarCheck _0811F2EE: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_0811F2F8: .4byte gUnknown_203B0B4 - thumb_func_end sub_811F234 +_0811F2F8: .4byte sPartyMenuBoxes + thumb_func_end DisplayPartyPokemonData - thumb_func_start sub_811F2FC -sub_811F2FC: @ 811F2FC + thumb_func_start DisplayPartyPokemonDescriptionData +DisplayPartyPokemonDescriptionData: @ 811F2FC push {r4-r7,lr} mov r7, r8 push {r7} @@ -1091,7 +1091,7 @@ sub_811F2FC: @ 811F2FC muls r2, r1 ldr r1, _0811F380 @ =gPlayerParty adds r6, r2, r1 - ldr r7, _0811F384 @ =gUnknown_203B0B4 + ldr r7, _0811F384 @ =sPartyMenuBoxes ldr r1, [r7] lsls r5, r0, 4 adds r1, r5, r1 @@ -1110,7 +1110,7 @@ sub_811F2FC: @ 811F2FC adds r1, r5 adds r0, r6, 0 movs r2, 0 - bl sub_8121738 + bl DisplayPartyPokemonNickname adds r0, r6, 0 movs r1, 0x2D bl GetMonData @@ -1120,18 +1120,18 @@ sub_811F2FC: @ 811F2FC adds r1, r5 adds r0, r6, 0 movs r2, 0 - bl sub_8121790 + bl DisplayPartyPokemonLevelCheck ldr r1, [r7] adds r1, r5 adds r0, r6, 0 movs r2, 0 - bl sub_8121854 + bl DisplayPartyPokemonGenderNidoranCheck _0811F368: ldr r1, [r7] adds r1, r5 mov r0, r8 movs r2, 0 - bl sub_8121C70 + bl DisplayPartyPokemonDescriptionText add sp, 0x8 pop {r3} mov r8, r3 @@ -1140,11 +1140,11 @@ _0811F368: bx r0 .align 2, 0 _0811F380: .4byte gPlayerParty -_0811F384: .4byte gUnknown_203B0B4 - thumb_func_end sub_811F2FC +_0811F384: .4byte sPartyMenuBoxes + thumb_func_end DisplayPartyPokemonDescriptionData - thumb_func_start sub_811F388 -sub_811F388: @ 811F388 + thumb_func_start DisplayPartyPokemonDataForChooseHalf +DisplayPartyPokemonDataForChooseHalf: @ 811F388 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -1153,13 +1153,13 @@ sub_811F388: @ 811F388 ldr r1, _0811F3AC @ =gPlayerParty adds r0, r1 ldr r5, _0811F3B0 @ =gSelectedOrderFromParty - bl sub_8127550 + bl GetBattleEntryEligibility lsls r0, 24 cmp r0, 0 bne _0811F3C2 adds r0, r4, 0 movs r1, 0x6 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData b _0811F3F8 .align 2, 0 _0811F3AC: .4byte gPlayerParty @@ -1169,10 +1169,10 @@ _0811F3B4: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData b _0811F3F8 _0811F3C2: - ldr r0, _0811F400 @ =gUnknown_203B0A0 + ldr r0, _0811F400 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xC0 ands r0, r1 @@ -1201,42 +1201,42 @@ _0811F3E6: _0811F3F0: adds r0, r4, 0 movs r1, 0x1 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData _0811F3F8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_0811F400: .4byte gUnknown_203B0A0 - thumb_func_end sub_811F388 +_0811F400: .4byte gPartyMenu + thumb_func_end DisplayPartyPokemonDataForChooseHalf - thumb_func_start sub_811F404 -sub_811F404: @ 811F404 + thumb_func_start DisplayPartyPokemonDataForWirelessMinigame +DisplayPartyPokemonDataForWirelessMinigame: @ 811F404 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_81209D4 + bl IsMonAllowedInMinigame lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0811F422 adds r0, r4, 0 movs r1, 0x5 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData b _0811F42A _0811F422: adds r0, r4, 0 movs r1, 0x6 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData _0811F42A: pop {r4} pop {r0} bx r0 - thumb_func_end sub_811F404 + thumb_func_end DisplayPartyPokemonDataForWirelessMinigame - thumb_func_start sub_811F430 -sub_811F430: @ 811F430 + thumb_func_start DisplayPartyPokemonDataForMoveTutorOrEvolutionItem +DisplayPartyPokemonDataForMoveTutorOrEvolutionItem: @ 811F430 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -1247,7 +1247,7 @@ sub_811F430: @ 811F430 adds r6, r1, r0 ldr r0, _0811F46C @ =gSpecialVar_ItemId ldrh r4, [r0] - ldr r0, _0811F470 @ =gUnknown_203B0A0 + ldr r0, _0811F470 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0xC bne _0811F47C @@ -1262,12 +1262,12 @@ sub_811F430: @ 811F430 lsrs r2, 24 adds r0, r5, 0 movs r1, 0 - bl sub_811F4D0 + bl DisplayPartyPokemonDataToTeachMove b _0811F4C6 .align 2, 0 _0811F468: .4byte gPlayerParty _0811F46C: .4byte gSpecialVar_ItemId -_0811F470: .4byte gUnknown_203B0A0 +_0811F470: .4byte gPartyMenu _0811F474: .4byte gSpecialVar_Result _0811F478: .4byte gSpecialVar_0x8005 _0811F47C: @@ -1288,7 +1288,7 @@ _0811F496: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0 - bl sub_811F4D0 + bl DisplayPartyPokemonDataToTeachMove b _0811F4C6 _0811F4A2: adds r0, r6, 0 @@ -1306,17 +1306,17 @@ _0811F4A2: _0811F4BE: adds r0, r5, 0 movs r1, 0 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData _0811F4C6: movs r0, 0x1 _0811F4C8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_811F430 + thumb_func_end DisplayPartyPokemonDataForMoveTutorOrEvolutionItem - thumb_func_start sub_811F4D0 -sub_811F4D0: @ 811F4D0 + thumb_func_start DisplayPartyPokemonDataToTeachMove +DisplayPartyPokemonDataToTeachMove: @ 811F4D0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -1328,7 +1328,7 @@ sub_811F4D0: @ 811F4D0 muls r0, r4 ldr r3, _0811F4FC @ =gPlayerParty adds r0, r3 - bl sub_8120B20 + bl CanMonLearnTMTutor lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 @@ -1346,38 +1346,38 @@ _0811F500: _0811F504: adds r0, r4, 0 movs r1, 0x8 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData b _0811F520 _0811F50E: adds r0, r4, 0 movs r1, 0x9 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData b _0811F520 _0811F518: adds r0, r4, 0 movs r1, 0x7 - bl sub_811F2FC + bl DisplayPartyPokemonDescriptionData _0811F520: pop {r4} pop {r0} bx r0 - thumb_func_end sub_811F4D0 + thumb_func_end DisplayPartyPokemonDataToTeachMove - thumb_func_start sub_811F528 -sub_811F528: @ 811F528 + thumb_func_start DisplayPartyPokemonDataForMultiBattle +DisplayPartyPokemonDataForMultiBattle: @ 811F528 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 - ldr r1, _0811F558 @ =gUnknown_203B0B4 + ldr r1, _0811F558 @ =sPartyMenuBoxes lsls r2, r0, 4 ldr r1, [r1] adds r5, r1, r2 subs r0, 0x3 lsls r0, 24 - ldr r1, _0811F55C @ =gUnknown_2022B58 + ldr r1, _0811F55C @ =gMultiPartnerParty mov r8, r1 lsrs r7, r0, 19 adds r6, r7, r1 @@ -1385,11 +1385,11 @@ sub_811F528: @ 811F528 cmp r0, 0 bne _0811F560 ldrb r0, [r5, 0x8] - bl sub_8121404 + bl DrawEmptySlot b _0811F5DC .align 2, 0 -_0811F558: .4byte gUnknown_203B0B4 -_0811F55C: .4byte gUnknown_2022B58 +_0811F558: .4byte sPartyMenuBoxes +_0811F55C: .4byte gMultiPartnerParty _0811F560: ldr r2, [r5] ldrb r0, [r5, 0x8] @@ -1424,25 +1424,25 @@ _0811F5A0: adds r3, 0x4 adds r1, r4, 0 movs r2, 0 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail ldrb r0, [r6, 0xF] adds r1, r5, 0 - bl sub_8121808 + bl DisplayPartyPokemonLevel ldrb r0, [r6, 0x1C] ldrh r1, [r6] adds r2, r7, 0 adds r3, r5, 0 - bl sub_81218BC + bl DisplayPartyPokemonGender ldrh r0, [r6, 0x10] adds r1, r5, 0 - bl sub_8121A04 + bl DisplayPartyPokemonHP ldrh r0, [r6, 0x12] adds r1, r5, 0 - bl sub_8121AA4 + bl DisplayPartyPokemonMaxHP ldrh r0, [r6, 0x10] ldrh r1, [r6, 0x12] adds r2, r5, 0 - bl sub_8121B2C + bl DisplayPartyPokemonHPBar _0811F5DC: add sp, 0x8 pop {r3} @@ -1452,18 +1452,18 @@ _0811F5DC: bx r0 .align 2, 0 _0811F5E8: .4byte gStringVar1 - thumb_func_end sub_811F528 + thumb_func_end DisplayPartyPokemonDataForMultiBattle - thumb_func_start sub_811F5EC -sub_811F5EC: @ 811F5EC + thumb_func_start RenderPartyMenuBoxes +RenderPartyMenuBoxes: @ 811F5EC push {r4,r5,lr} - ldr r5, _0811F614 @ =gUnknown_203B09C + ldr r5, _0811F614 @ =sPartyMenuInternal ldr r0, [r5] movs r4, 0x86 lsls r4, 2 adds r0, r4 ldrb r0, [r0] - bl sub_811F124 + bl RenderPartyMenuBox ldr r1, [r5] adds r1, r4 ldrh r0, [r1] @@ -1476,30 +1476,30 @@ sub_811F5EC: @ 811F5EC movs r0, 0 b _0811F61A .align 2, 0 -_0811F614: .4byte gUnknown_203B09C +_0811F614: .4byte sPartyMenuInternal _0811F618: movs r0, 0x1 _0811F61A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_811F5EC + thumb_func_end RenderPartyMenuBoxes - thumb_func_start sub_811F620 -sub_811F620: @ 811F620 + thumb_func_start GetPartyMenuBgTile +GetPartyMenuBgTile: @ 811F620 lsls r0, 16 - ldr r1, _0811F630 @ =gUnknown_203B0B8 + ldr r1, _0811F630 @ =sPartyBgGfxTilemap lsrs r0, 11 ldr r1, [r1] adds r1, r0 adds r0, r1, 0 bx lr .align 2, 0 -_0811F630: .4byte gUnknown_203B0B8 - thumb_func_end sub_811F620 +_0811F630: .4byte sPartyBgGfxTilemap + thumb_func_end GetPartyMenuBgTile - thumb_func_start party_menu_add_per_mon_objects_internal -party_menu_add_per_mon_objects_internal: @ 811F634 + thumb_func_start CreatePartyMonSprites +CreatePartyMonSprites: @ 811F634 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1508,7 +1508,7 @@ party_menu_add_per_mon_objects_internal: @ 811F634 sub sp, 0x4 lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _0811F6A8 @ =gUnknown_203B0A0 + ldr r0, _0811F6A8 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -1520,7 +1520,7 @@ party_menu_add_per_mon_objects_internal: @ 811F634 lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r0, _0811F6AC @ =gUnknown_2022B58 + ldr r0, _0811F6AC @ =gMultiPartnerParty mov r9, r0 mov r2, r10 lsls r2, 5 @@ -1534,54 +1534,54 @@ party_menu_add_per_mon_objects_internal: @ 811F634 adds r1, 0x18 add r1, r8 ldr r1, [r1] - ldr r4, _0811F6B0 @ =gUnknown_203B0B4 + ldr r4, _0811F6B0 @ =sPartyMenuBoxes lsls r5, r7, 4 ldr r2, [r4] adds r2, r5 movs r3, 0 str r3, [sp] - bl party_menu_link_mon_icon_anim + bl CreatePartyMonIconSpriteParameterized ldrh r0, [r6] ldrh r1, [r6, 0x2] ldr r2, [r4] adds r2, r5 - bl party_menu_link_mon_held_item_object + bl CreatePartyMonHeldItemSpriteParameterized ldrh r0, [r6] ldr r1, [r4] adds r1, r5 - bl party_menu_link_mon_pokeball_object + bl CreatePartyMonPokeballSpriteParameterized ldrh r0, [r6, 0x10] cmp r0, 0 bne _0811F6B4 movs r3, 0x7 b _0811F6C4 .align 2, 0 -_0811F6A8: .4byte gUnknown_203B0A0 -_0811F6AC: .4byte gUnknown_2022B58 -_0811F6B0: .4byte gUnknown_203B0B4 +_0811F6A8: .4byte gPartyMenu +_0811F6AC: .4byte gMultiPartnerParty +_0811F6B0: .4byte sPartyMenuBoxes _0811F6B4: mov r0, r9 adds r0, 0x14 add r0, r8 ldr r0, [r0] - bl pokemon_ailments_get_primary + bl GetAilmentFromStatus lsls r0, 24 lsrs r3, r0, 24 _0811F6C4: - ldr r1, _0811F6DC @ =gUnknown_2022B58 + ldr r1, _0811F6DC @ =gMultiPartnerParty mov r2, r10 lsls r0, r2, 5 adds r0, r1 ldrh r0, [r0] - ldr r1, _0811F6E0 @ =gUnknown_203B0B4 + ldr r1, _0811F6E0 @ =sPartyMenuBoxes ldr r2, [r1] adds r2, r5 adds r1, r3, 0 - bl party_menu_link_mon_status_condition_object + bl CreatePartyMonStatusSpriteParameterized b _0811F728 .align 2, 0 -_0811F6DC: .4byte gUnknown_2022B58 -_0811F6E0: .4byte gUnknown_203B0B4 +_0811F6DC: .4byte gMultiPartnerParty +_0811F6E0: .4byte sPartyMenuBoxes _0811F6E4: movs r0, 0x64 adds r1, r7, 0 @@ -1593,25 +1593,25 @@ _0811F6E4: bl GetMonData cmp r0, 0 beq _0811F728 - ldr r4, _0811F73C @ =gUnknown_203B0B4 + ldr r4, _0811F73C @ =sPartyMenuBoxes lsls r5, r7, 4 ldr r1, [r4] adds r1, r5 adds r0, r6, 0 adds r2, r7, 0 - bl party_menu_icon_anim + bl CreatePartyMonIconSprite ldr r1, [r4] adds r1, r5 adds r0, r6, 0 - bl party_menu_held_item_object + bl CreatePartyMonHeldItemSprite ldr r1, [r4] adds r1, r5 adds r0, r6, 0 - bl party_menu_pokeball_object + bl CreatePartyMonPokeballSprite ldr r1, [r4] adds r1, r5 adds r0, r6, 0 - bl party_menu_status_condition_object + bl CreatePartyMonStatusSprite _0811F728: add sp, 0x4 pop {r3-r5} @@ -1623,19 +1623,19 @@ _0811F728: bx r0 .align 2, 0 _0811F738: .4byte gPlayerParty -_0811F73C: .4byte gUnknown_203B0B4 - thumb_func_end party_menu_add_per_mon_objects_internal +_0811F73C: .4byte sPartyMenuBoxes + thumb_func_end CreatePartyMonSprites - thumb_func_start party_menu_add_per_mon_objects -party_menu_add_per_mon_objects: @ 811F740 + thumb_func_start CreatePartyMonSpritesLoop +CreatePartyMonSpritesLoop: @ 811F740 push {r4,r5,lr} - ldr r5, _0811F768 @ =gUnknown_203B09C + ldr r5, _0811F768 @ =sPartyMenuInternal ldr r0, [r5] movs r4, 0x86 lsls r4, 2 adds r0, r4 ldrb r0, [r0] - bl party_menu_add_per_mon_objects_internal + bl CreatePartyMonSprites ldr r1, [r5] adds r1, r4 ldrh r0, [r1] @@ -1648,20 +1648,20 @@ party_menu_add_per_mon_objects: @ 811F740 movs r0, 0 b _0811F76E .align 2, 0 -_0811F768: .4byte gUnknown_203B09C +_0811F768: .4byte sPartyMenuInternal _0811F76C: movs r0, 0x1 _0811F76E: pop {r4,r5} pop {r1} bx r1 - thumb_func_end party_menu_add_per_mon_objects + thumb_func_end CreatePartyMonSpritesLoop - thumb_func_start sub_811F774 -sub_811F774: @ 811F774 + thumb_func_start CreateCancelConfirmPokeballSprites +CreateCancelConfirmPokeballSprites: @ 811F774 push {r4,lr} sub sp, 0xC - ldr r0, _0811F79C @ =gUnknown_203B0A0 + ldr r0, _0811F79C @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -1679,9 +1679,9 @@ sub_811F774: @ 811F774 bl FillBgTilemapBufferRect b _0811F808 .align 2, 0 -_0811F79C: .4byte gUnknown_203B0A0 +_0811F79C: .4byte gPartyMenu _0811F7A0: - ldr r4, _0811F7D8 @ =gUnknown_203B09C + ldr r4, _0811F7D8 @ =sPartyMenuInternal ldr r0, [r4] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -1689,7 +1689,7 @@ _0811F7A0: beq _0811F7E0 movs r0, 0xBF movs r1, 0x88 - bl sub_8122794 + bl CreateSmallPokeballButtonSprite ldr r3, [r4] lsls r0, 24 lsrs r0, 24 @@ -1701,18 +1701,18 @@ _0811F7A0: ands r1, r2 orrs r1, r0 strh r1, [r3, 0x8] - bl sub_811F9DC + bl DrawCancelConfirmButtons movs r0, 0xBF movs r1, 0x98 - bl sub_8122794 + bl CreateSmallPokeballButtonSprite b _0811F7E8 .align 2, 0 -_0811F7D8: .4byte gUnknown_203B09C +_0811F7D8: .4byte sPartyMenuInternal _0811F7DC: .4byte 0xfffff80f _0811F7E0: movs r0, 0xC6 movs r1, 0x94 - bl sub_8122754 + bl CreatePokeballButtonSprite _0811F7E8: ldr r3, [r4] lsls r0, 24 @@ -1725,10 +1725,10 @@ _0811F7E8: ands r1, r2 orrs r1, r0 str r1, [r3, 0x8] - ldr r0, _0811F814 @ =gUnknown_203B0A0 + ldr r0, _0811F814 @ =gPartyMenu ldrb r0, [r0, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot _0811F808: add sp, 0xC pop {r4} @@ -1736,11 +1736,11 @@ _0811F808: bx r0 .align 2, 0 _0811F810: .4byte 0xfffc07ff -_0811F814: .4byte gUnknown_203B0A0 - thumb_func_end sub_811F774 +_0811F814: .4byte gPartyMenu + thumb_func_end CreateCancelConfirmPokeballSprites - thumb_func_start sub_811F818 -sub_811F818: @ 811F818 + thumb_func_start AnimatePartySlot +AnimatePartySlot: @ 811F818 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1762,32 +1762,32 @@ sub_811F818: @ 811F818 bl GetMonData cmp r0, 0 beq _0811F934 - ldr r6, _0811F880 @ =gUnknown_203B0B4 + ldr r6, _0811F880 @ =sPartyMenuBoxes lsls r5, r7, 4 ldr r4, [r6] adds r4, r5 adds r0, r7, 0 mov r1, r8 - bl sub_811F944 + bl GetPartyBoxPaletteFlags adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_812142C + bl LoadPartyBoxPalette ldr r0, [r6] adds r0, r5, r0 ldrb r0, [r0, 0x9] mov r1, r8 - bl sub_812238C + bl AnimateSelectedPartyIcon ldr r0, [r6] adds r5, r0 ldrb r0, [r5, 0xB] mov r1, r8 - bl sub_81227B8 + bl PartyMenuStartSpriteAnim b _0811F934 .align 2, 0 _0811F87C: .4byte gPlayerParty -_0811F880: .4byte gUnknown_203B0B4 +_0811F880: .4byte sPartyMenuBoxes _0811F884: mov r0, r8 cmp r0, 0 @@ -1811,15 +1811,15 @@ _0811F89E: movs r3, 0x7 bl SetBgRectPal _0811F8B0: - ldr r0, _0811F8BC @ =gUnknown_203B09C + ldr r0, _0811F8BC @ =sPartyMenuInternal ldr r0, [r0] ldrh r0, [r0, 0x8] lsls r0, 21 b _0811F926 .align 2, 0 -_0811F8BC: .4byte gUnknown_203B09C +_0811F8BC: .4byte sPartyMenuInternal _0811F8C0: - ldr r0, _0811F8E0 @ =gUnknown_203B09C + ldr r0, _0811F8E0 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -1836,7 +1836,7 @@ _0811F8C0: movs r2, 0x11 b _0811F904 .align 2, 0 -_0811F8E0: .4byte gUnknown_203B09C +_0811F8E0: .4byte sPartyMenuInternal _0811F8E4: movs r0, 0x2 str r0, [sp] @@ -1869,14 +1869,14 @@ _0811F90C: movs r3, 0x7 bl SetBgRectPal _0811F91E: - ldr r0, _0811F940 @ =gUnknown_203B09C + ldr r0, _0811F940 @ =sPartyMenuInternal ldr r0, [r0] ldr r0, [r0, 0x8] lsls r0, 14 _0811F926: lsrs r0, 25 mov r1, r8 - bl sub_81227B8 + bl PartyMenuStartSpriteAnim movs r0, 0x1 bl ScheduleBgCopyTilemapToVram _0811F934: @@ -1887,11 +1887,11 @@ _0811F934: pop {r0} bx r0 .align 2, 0 -_0811F940: .4byte gUnknown_203B09C - thumb_func_end sub_811F818 +_0811F940: .4byte sPartyMenuInternal + thumb_func_end AnimatePartySlot - thumb_func_start sub_811F944 -sub_811F944: @ 811F944 + thumb_func_start GetPartyBoxPaletteFlags +GetPartyBoxPaletteFlags: @ 811F944 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -1913,7 +1913,7 @@ _0811F956: movs r0, 0x2 orrs r4, r0 _0811F96C: - ldr r2, _0811F9D8 @ =gUnknown_203B0A0 + ldr r2, _0811F9D8 @ =gPartyMenu ldrb r1, [r2, 0x8] movs r0, 0x30 ands r0, r1 @@ -1973,11 +1973,11 @@ _0811F9CC: bx r1 .align 2, 0 _0811F9D4: .4byte gPlayerParty -_0811F9D8: .4byte gUnknown_203B0A0 - thumb_func_end sub_811F944 +_0811F9D8: .4byte gPartyMenu + thumb_func_end GetPartyBoxPaletteFlags - thumb_func_start sub_811F9DC -sub_811F9DC: @ 811F9DC + thumb_func_start DrawCancelConfirmButtons +DrawCancelConfirmButtons: @ 811F9DC push {r4-r6,lr} sub sp, 0xC ldr r1, _0811FA18 @ =gUnknown_8459FC4 @@ -2008,7 +2008,7 @@ sub_811F9DC: @ 811F9DC .align 2, 0 _0811FA18: .4byte gUnknown_8459FC4 _0811FA1C: .4byte gUnknown_8459FE0 - thumb_func_end sub_811F9DC + thumb_func_end DrawCancelConfirmButtons thumb_func_start IsMultiBattle IsMultiBattle: @ 811FA20 @@ -2030,8 +2030,8 @@ _0811FA3A: bx r1 thumb_func_end IsMultiBattle - thumb_func_start sub_811FA40 -sub_811FA40: @ 811FA40 + thumb_func_start SwapPartyPokemon +SwapPartyPokemon: @ 811FA40 push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 @@ -2054,10 +2054,10 @@ sub_811FA40: @ 811FA40 pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_811FA40 + thumb_func_end SwapPartyPokemon - thumb_func_start sub_811FA78 -sub_811FA78: @ 811FA78 + thumb_func_start Task_ClosePartyMenu +Task_ClosePartyMenu: @ 811FA78 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -2076,7 +2076,7 @@ sub_811FA78: @ 811FA78 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _0811FAB0 @ =sub_811FAB4 + ldr r1, _0811FAB0 @ =Task_ClosePartyMenuAndSetCB2 str r1, [r0] add sp, 0x4 pop {r4} @@ -2084,11 +2084,11 @@ sub_811FA78: @ 811FA78 bx r0 .align 2, 0 _0811FAAC: .4byte gTasks -_0811FAB0: .4byte sub_811FAB4 - thumb_func_end sub_811FA78 +_0811FAB0: .4byte Task_ClosePartyMenuAndSetCB2 + thumb_func_end Task_ClosePartyMenu - thumb_func_start sub_811FAB4 -sub_811FAB4: @ 811FAB4 + thumb_func_start Task_ClosePartyMenuAndSetCB2 +Task_ClosePartyMenuAndSetCB2: @ 811FAB4 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -2098,15 +2098,15 @@ sub_811FAB4: @ 811FAB4 ands r0, r1 cmp r0, 0 bne _0811FB04 - ldr r4, _0811FAEC @ =gUnknown_203B0A0 + ldr r4, _0811FAEC @ =gPartyMenu ldrb r1, [r4, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _0811FAD6 - bl sub_81280C4 + bl UpdatePartyToFieldOrder _0811FAD6: - ldr r0, _0811FAF0 @ =gUnknown_203B09C + ldr r0, _0811FAF0 @ =sPartyMenuInternal ldr r0, [r0] ldr r0, [r0, 0x4] cmp r0, 0 @@ -2115,43 +2115,43 @@ _0811FAD6: b _0811FAFA .align 2, 0 _0811FAE8: .4byte gPaletteFade -_0811FAEC: .4byte gUnknown_203B0A0 -_0811FAF0: .4byte gUnknown_203B09C +_0811FAEC: .4byte gPartyMenu +_0811FAF0: .4byte sPartyMenuInternal _0811FAF4: ldr r0, [r4] bl SetMainCallback2 _0811FAFA: - bl sub_811F070 + bl FreePartyPointers adds r0, r5, 0 bl DestroyTask _0811FB04: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_811FAB4 + thumb_func_end Task_ClosePartyMenuAndSetCB2 thumb_func_start GetCursorSelectionMonId GetCursorSelectionMonId: @ 811FB0C - ldr r0, _0811FB14 @ =gUnknown_203B0A0 + ldr r0, _0811FB14 @ =gPartyMenu ldrb r0, [r0, 0x9] bx lr .align 2, 0 -_0811FB14: .4byte gUnknown_203B0A0 +_0811FB14: .4byte gPartyMenu thumb_func_end GetCursorSelectionMonId - thumb_func_start sub_811FB18 -sub_811FB18: @ 811FB18 - ldr r0, _0811FB24 @ =gUnknown_203B0A0 + thumb_func_start GetPartyMenuType +GetPartyMenuType: @ 811FB18 + ldr r0, _0811FB24 @ =gPartyMenu ldrb r0, [r0, 0x8] lsls r0, 28 lsrs r0, 28 bx lr .align 2, 0 -_0811FB24: .4byte gUnknown_203B0A0 - thumb_func_end sub_811FB18 +_0811FB24: .4byte gPartyMenu + thumb_func_end GetPartyMenuType - thumb_func_start sub_811FB28 -sub_811FB28: @ 811FB28 + thumb_func_start Task_HandleChooseMonInput +Task_HandleChooseMonInput: @ 811FB28 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -2167,9 +2167,9 @@ sub_811FB28: @ 811FB28 lsrs r0, 24 cmp r0, 0x1 beq _0811FB98 - bl sub_811FBA4 + bl GetCurrentPartySlotPtr adds r4, r0, 0 - bl sub_811FEFC + bl PartyMenuButtonHandler lsls r0, 16 lsrs r0, 16 cmp r0, 0x2 @@ -2188,15 +2188,15 @@ _0811FB68: _0811FB6E: adds r0, r5, 0 adds r1, r4, 0 - bl sub_811FBC4 + bl HandleChooseMonSelection b _0811FB98 _0811FB78: adds r0, r6, 0 adds r1, r4, 0 - bl sub_811FD88 + bl HandleChooseMonCancel b _0811FB98 _0811FB82: - ldr r0, _0811FBA0 @ =gUnknown_203B09C + ldr r0, _0811FBA0 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -2204,19 +2204,19 @@ _0811FB82: beq _0811FB98 movs r0, 0x5 bl PlaySE - bl sub_8124258 + bl MoveCursorToConfirm _0811FB98: pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_0811FBA0: .4byte gUnknown_203B09C - thumb_func_end sub_811FB28 +_0811FBA0: .4byte sPartyMenuInternal + thumb_func_end Task_HandleChooseMonInput - thumb_func_start sub_811FBA4 -sub_811FBA4: @ 811FBA4 + thumb_func_start GetCurrentPartySlotPtr +GetCurrentPartySlotPtr: @ 811FBA4 push {lr} - ldr r0, _0811FBB8 @ =gUnknown_203B0A0 + ldr r0, _0811FBB8 @ =gPartyMenu ldrb r1, [r0, 0xB] cmp r1, 0x8 beq _0811FBB2 @@ -2226,16 +2226,16 @@ _0811FBB2: adds r0, 0xA b _0811FBBE .align 2, 0 -_0811FBB8: .4byte gUnknown_203B0A0 +_0811FBB8: .4byte gPartyMenu _0811FBBC: adds r0, 0x9 _0811FBBE: pop {r1} bx r1 - thumb_func_end sub_811FBA4 + thumb_func_end GetCurrentPartySlotPtr - thumb_func_start sub_811FBC4 -sub_811FBC4: @ 811FBC4 + thumb_func_start HandleChooseMonSelection +HandleChooseMonSelection: @ 811FBC4 push {r4-r6,lr} adds r5, r1, 0 lsls r0, 24 @@ -2244,15 +2244,15 @@ sub_811FBC4: @ 811FBC4 ldrsb r0, [r5, r0] cmp r0, 0x6 bne _0811FBE4 - ldr r0, _0811FBE0 @ =gUnknown_203B0A0 + ldr r0, _0811FBE0 @ =gPartyMenu ldr r1, [r0, 0x4] adds r0, r6, 0 bl _call_via_r1 b _0811FD56 .align 2, 0 -_0811FBE0: .4byte gUnknown_203B0A0 +_0811FBE0: .4byte gPartyMenu _0811FBE4: - ldr r0, _0811FBFC @ =gUnknown_203B0A0 + ldr r0, _0811FBFC @ =gPartyMenu ldrb r0, [r0, 0xB] subs r0, 0x3 cmp r0, 0xA @@ -2265,7 +2265,7 @@ _0811FBF0: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0811FBFC: .4byte gUnknown_203B0A0 +_0811FBFC: .4byte gPartyMenu _0811FC00: .4byte _0811FC04 .align 2, 0 _0811FC04: @@ -2282,7 +2282,7 @@ _0811FC04: .4byte _0811FD34 _0811FC30: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 bne _0811FC3E @@ -2293,73 +2293,73 @@ _0811FC3E: b _0811FD56 _0811FC46: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 bne _0811FC54 b _0811FD56 _0811FC54: - ldr r0, _0811FC78 @ =gUnknown_203B0A0 + ldr r0, _0811FC78 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _0811FC68 - ldr r0, _0811FC7C @ =gUnknown_203B09C + ldr r0, _0811FC7C @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _0811FC80 @ =sub_8128184 + ldr r0, _0811FC80 @ =CB2_SetUpExitToBattleScreen str r0, [r1, 0x4] _0811FC68: - ldr r0, _0811FC84 @ =gUnknown_3005E98 - ldr r1, _0811FC88 @ =sub_81255BC + ldr r0, _0811FC84 @ =gItemUseCB + ldr r1, _0811FC88 @ =Task_ClosePartyMenuAfterText ldr r2, [r0] adds r0, r6, 0 bl _call_via_r2 b _0811FD56 .align 2, 0 -_0811FC78: .4byte gUnknown_203B0A0 -_0811FC7C: .4byte gUnknown_203B09C -_0811FC80: .4byte sub_8128184 -_0811FC84: .4byte gUnknown_3005E98 -_0811FC88: .4byte sub_81255BC +_0811FC78: .4byte gPartyMenu +_0811FC7C: .4byte sPartyMenuInternal +_0811FC80: .4byte CB2_SetUpExitToBattleScreen +_0811FC84: .4byte gItemUseCB +_0811FC88: .4byte Task_ClosePartyMenuAfterText _0811FC8C: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 beq _0811FD56 movs r0, 0x5 bl PlaySE adds r0, r6, 0 - bl sub_8126DC8 + bl TryTutorSelectedMon b _0811FD56 _0811FCA6: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 beq _0811FD56 movs r0, 0x5 bl PlaySE adds r0, r6, 0 - bl sub_8127404 + bl TryGiveMailToSelectedMon b _0811FD56 _0811FCC0: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 beq _0811FD56 movs r0, 0x5 bl PlaySE adds r0, r6, 0 - bl sub_8126F40 + bl TryGiveItemOrMailToSelectedMon b _0811FD56 _0811FCDA: movs r0, 0x5 bl PlaySE adds r0, r6, 0 - bl sub_8122E5C + bl SwitchSelectedMons b _0811FD56 _0811FCE8: movs r0, 0x5 @@ -2368,7 +2368,7 @@ _0811FCE8: movs r0, 0 ldrsb r0, [r5, r0] strh r0, [r1] - ldr r0, _0811FD28 @ =gUnknown_203B0A0 + ldr r0, _0811FD28 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -2387,36 +2387,36 @@ _0811FCE8: strh r0, [r4] _0811FD1A: adds r0, r6, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _0811FD56 .align 2, 0 _0811FD24: .4byte gSpecialVar_0x8004 -_0811FD28: .4byte gUnknown_203B0A0 +_0811FD28: .4byte gPartyMenu _0811FD2C: .4byte gSpecialVar_0x8005 _0811FD30: .4byte gPlayerParty _0811FD34: adds r0, r5, 0 - bl sub_811FD5C + bl IsSelectedMonNotEgg lsls r0, 24 cmp r0, 0 beq _0811FD56 ldrb r1, [r5] adds r0, r6, 0 - bl sub_81209F4 + bl TryEnterMonForMinigame b _0811FD56 _0811FD4A: movs r0, 0x5 bl PlaySE adds r0, r6, 0 - bl sub_8122C30 + bl Task_TryCreateSelectionWindow _0811FD56: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_811FBC4 + thumb_func_end HandleChooseMonSelection - thumb_func_start sub_811FD5C -sub_811FD5C: @ 811FD5C + thumb_func_start IsSelectedMonNotEgg +IsSelectedMonNotEgg: @ 811FD5C push {lr} ldrb r1, [r0] movs r0, 0x64 @@ -2438,15 +2438,15 @@ _0811FD7C: _0811FD84: pop {r1} bx r1 - thumb_func_end sub_811FD5C + thumb_func_end IsSelectedMonNotEgg - thumb_func_start sub_811FD88 -sub_811FD88: @ 811FD88 + thumb_func_start HandleChooseMonCancel +HandleChooseMonCancel: @ 811FD88 push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _0811FDA4 @ =gUnknown_203B0A0 + ldr r0, _0811FDA4 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x8 beq _0811FDBA @@ -2456,7 +2456,7 @@ sub_811FD88: @ 811FD88 beq _0811FDB2 b _0811FDD6 .align 2, 0 -_0811FDA4: .4byte gUnknown_203B0A0 +_0811FDA4: .4byte gPartyMenu _0811FDA8: cmp r0, 0xA beq _0811FDBA @@ -2471,28 +2471,28 @@ _0811FDBA: movs r0, 0x5 bl PlaySE adds r0, r4, 0 - bl sub_81235E8 + bl FinishTwoMonAction b _0811FE14 _0811FDC8: movs r0, 0x5 bl PlaySE adds r0, r4, 0 - bl sub_8120A58 + bl CancelParticipationPrompt b _0811FE14 _0811FDD6: movs r0, 0x5 bl PlaySE - ldr r0, _0811FDF0 @ =gUnknown_203B0A0 + ldr r0, _0811FDF0 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x4 bne _0811FDF4 adds r0, r4, 0 - bl sub_811FE24 + bl DisplayCancelChooseMonYesNo b _0811FE14 .align 2, 0 -_0811FDF0: .4byte gUnknown_203B0A0 +_0811FDF0: .4byte gPartyMenu _0811FDF4: bl MenuHelpers_LinkSomething lsls r0, 24 @@ -2502,74 +2502,74 @@ _0811FDF4: movs r0, 0x7 strh r0, [r1] _0811FE04: - ldr r0, _0811FE20 @ =gUnknown_203B0C0 + ldr r0, _0811FE20 @ =gPartyMenuUseExitCallback movs r1, 0 strb r1, [r0] movs r0, 0x7 strb r0, [r5] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _0811FE14: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0811FE1C: .4byte gSpecialVar_0x8004 -_0811FE20: .4byte gUnknown_203B0C0 - thumb_func_end sub_811FD88 +_0811FE20: .4byte gPartyMenuUseExitCallback + thumb_func_end HandleChooseMonCancel - thumb_func_start sub_811FE24 -sub_811FE24: @ 811FE24 + thumb_func_start DisplayCancelChooseMonYesNo +DisplayCancelChooseMonYesNo: @ 811FE24 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0811FE5C @ =gUnknown_203B09C + ldr r0, _0811FE5C @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r5, _0811FE60 @ =gStringVar4 ldr r1, _0811FE64 @ =gUnknown_84176CF adds r0, r5, 0 bl StringExpandPlaceholders adds r0, r5, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _0811FE68 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _0811FE6C @ =sub_811FE70 + ldr r1, _0811FE6C @ =Task_CancelChooseMonYesNo str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_0811FE5C: .4byte gUnknown_203B09C +_0811FE5C: .4byte sPartyMenuInternal _0811FE60: .4byte gStringVar4 _0811FE64: .4byte gUnknown_84176CF _0811FE68: .4byte gTasks -_0811FE6C: .4byte sub_811FE70 - thumb_func_end sub_811FE24 +_0811FE6C: .4byte Task_CancelChooseMonYesNo + thumb_func_end DisplayCancelChooseMonYesNo - thumb_func_start sub_811FE70 -sub_811FE70: @ 811FE70 + thumb_func_start Task_CancelChooseMonYesNo +Task_CancelChooseMonYesNo: @ 811FE70 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0811FE94 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _0811FE9C @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _0811FEA0 @ =sub_811FEA4 + ldr r0, _0811FEA0 @ =Task_HandleCancelChooseMonYesNoInput str r0, [r1] _0811FE94: pop {r4} @@ -2577,11 +2577,11 @@ _0811FE94: bx r0 .align 2, 0 _0811FE9C: .4byte gTasks -_0811FEA0: .4byte sub_811FEA4 - thumb_func_end sub_811FE70 +_0811FEA0: .4byte Task_HandleCancelChooseMonYesNoInput + thumb_func_end Task_CancelChooseMonYesNo - thumb_func_start sub_811FEA4 -sub_811FEA4: @ 811FEA4 + thumb_func_start Task_HandleCancelChooseMonYesNoInput +Task_HandleCancelChooseMonYesNoInput: @ 811FEA4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -2602,32 +2602,32 @@ _0811FEC4: beq _0811FEEE b _0811FEF4 _0811FECA: - ldr r0, _0811FEE0 @ =gUnknown_203B0C0 + ldr r0, _0811FEE0 @ =gPartyMenuUseExitCallback strb r1, [r0] - ldr r1, _0811FEE4 @ =gUnknown_203B0A0 + ldr r1, _0811FEE4 @ =gPartyMenu movs r0, 0x7 strb r0, [r1, 0x9] - bl sub_81274FC + bl ClearSelectedPartyOrder adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _0811FEF4 .align 2, 0 -_0811FEE0: .4byte gUnknown_203B0C0 -_0811FEE4: .4byte gUnknown_203B0A0 +_0811FEE0: .4byte gPartyMenuUseExitCallback +_0811FEE4: .4byte gPartyMenu _0811FEE8: movs r0, 0x5 bl PlaySE _0811FEEE: adds r0, r4, 0 - bl sub_81203B8 + bl Task_ReturnToChooseMonAfterText _0811FEF4: pop {r4} pop {r0} bx r0 - thumb_func_end sub_811FEA4 + thumb_func_end Task_HandleCancelChooseMonYesNoInput - thumb_func_start sub_811FEFC -sub_811FEFC: @ 811FEFC + thumb_func_start PartyMenuButtonHandler +PartyMenuButtonHandler: @ 811FEFC push {r4,lr} adds r4, r0, 0 ldr r0, _0811FF14 @ =gMain @@ -2693,7 +2693,7 @@ _0811FF60: cmp r1, 0 beq _0811FF72 adds r0, r4, 0 - bl sub_811FF94 + bl UpdateCurrentPartySelection movs r0, 0 b _0811FF8C _0811FF72: @@ -2715,16 +2715,16 @@ _0811FF8C: pop {r4} pop {r1} bx r1 - thumb_func_end sub_811FEFC + thumb_func_end PartyMenuButtonHandler - thumb_func_start sub_811FF94 -sub_811FF94: @ 811FF94 + thumb_func_start UpdateCurrentPartySelection +UpdateCurrentPartySelection: @ 811FF94 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsrs r1, 24 ldrb r4, [r5] - ldr r0, _0811FFB8 @ =gUnknown_203B0A0 + ldr r0, _0811FFB8 @ =gPartyMenu ldrb r0, [r0, 0x8] lsls r0, 26 lsrs r0, 30 @@ -2733,15 +2733,15 @@ sub_811FF94: @ 811FF94 lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl sub_811FFF0 + bl UpdatePartySelectionSingleLayout b _0811FFC6 .align 2, 0 -_0811FFB8: .4byte gUnknown_203B0A0 +_0811FFB8: .4byte gPartyMenu _0811FFBC: lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl sub_81200F8 + bl UpdatePartySelectionDoubleLayout _0811FFC6: movs r1, 0 ldrsb r1, [r5, r1] @@ -2753,18 +2753,18 @@ _0811FFC6: bl PlaySE lsrs r0, r4, 24 movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot ldrb r0, [r5] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot _0811FFE8: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_811FF94 + thumb_func_end UpdateCurrentPartySelection - thumb_func_start sub_811FFF0 -sub_811FFF0: @ 811FFF0 + thumb_func_start UpdatePartySelectionSingleLayout +UpdatePartySelectionSingleLayout: @ 811FFF0 push {r4,lr} adds r4, r0, 0 lsls r1, 24 @@ -2805,7 +2805,7 @@ _08120030: .4byte gPlayerPartyCount _08120034: cmp r1, 0x7 bne _08120058 - ldr r0, _08120048 @ =gUnknown_203B09C + ldr r0, _08120048 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -2814,7 +2814,7 @@ _08120034: movs r0, 0x6 b _081200EC .align 2, 0 -_08120048: .4byte gUnknown_203B09C +_08120048: .4byte sPartyMenuInternal _0812004C: ldr r0, _08120054 @ =gPlayerPartyCount ldrb r0, [r0] @@ -2838,7 +2838,7 @@ _0812005C: subs r0, 0x1 cmp r1, r0 bne _08120090 - ldr r0, _08120088 @ =gUnknown_203B09C + ldr r0, _08120088 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -2848,7 +2848,7 @@ _0812005C: b _081200EC .align 2, 0 _08120084: .4byte gPlayerPartyCount -_08120088: .4byte gUnknown_203B09C +_08120088: .4byte sPartyMenuInternal _0812008C: movs r0, 0x7 b _081200EC @@ -2864,7 +2864,7 @@ _08120094: ldrsb r0, [r4, r0] cmp r0, 0 bne _081200EE - ldr r0, _081200BC @ =gUnknown_203B09C + ldr r0, _081200BC @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 28 @@ -2875,7 +2875,7 @@ _08120094: b _081200EC .align 2, 0 _081200B8: .4byte gPlayerPartyCount -_081200BC: .4byte gUnknown_203B09C +_081200BC: .4byte sPartyMenuInternal _081200C0: movs r0, 0 ldrsb r0, [r4, r0] @@ -2885,7 +2885,7 @@ _081200C0: beq _081200EE cmp r0, 0x7 beq _081200EE - ldr r0, _081200F4 @ =gUnknown_203B09C + ldr r0, _081200F4 @ =sPartyMenuInternal ldr r3, [r0] movs r1, 0 ldrsb r1, [r4, r1] @@ -2907,11 +2907,11 @@ _081200EE: pop {r0} bx r0 .align 2, 0 -_081200F4: .4byte gUnknown_203B09C - thumb_func_end sub_811FFF0 +_081200F4: .4byte sPartyMenuInternal + thumb_func_end UpdatePartySelectionSingleLayout - thumb_func_start sub_81200F8 -sub_81200F8: @ 81200F8 + thumb_func_start UpdatePartySelectionDoubleLayout +UpdatePartySelectionDoubleLayout: @ 81200F8 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 24 @@ -2956,7 +2956,7 @@ _08120140: .4byte gPlayerPartyCount _08120144: cmp r0, 0x7 bne _08120160 - ldr r0, _08120158 @ =gUnknown_203B09C + ldr r0, _08120158 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -2965,7 +2965,7 @@ _08120144: movs r0, 0x6 b _0812028E .align 2, 0 -_08120158: .4byte gUnknown_203B09C +_08120158: .4byte sPartyMenuInternal _0812015C: subs r0, r1, 0x1 strb r0, [r4] @@ -2974,7 +2974,7 @@ _08120160: ldrsb r0, [r4, r0] lsls r1, r2, 24 asrs r1, 24 - bl sub_812029C + bl GetNewSlotDoubleLayout lsls r0, 24 lsrs r2, r0, 24 asrs r0, 24 @@ -3002,13 +3002,13 @@ _08120194: movs r0, 0 ldrsb r0, [r4, r0] movs r1, 0x1 - bl sub_812029C + bl GetNewSlotDoubleLayout lsls r0, 24 lsrs r2, r0, 24 asrs r0, 24 cmp r0, r6 bne _0812017C - ldr r0, _081201B8 @ =gUnknown_203B09C + ldr r0, _081201B8 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -3017,7 +3017,7 @@ _08120194: movs r0, 0x6 b _0812028E .align 2, 0 -_081201B8: .4byte gUnknown_203B09C +_081201B8: .4byte sPartyMenuInternal _081201BC: movs r0, 0x7 b _0812028E @@ -3026,7 +3026,7 @@ _081201C0: ldrsb r0, [r4, r0] cmp r0, 0 bne _081201F8 - ldr r0, _081201E8 @ =gUnknown_203B09C + ldr r0, _081201E8 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 28 @@ -3041,7 +3041,7 @@ _081201C0: strb r6, [r4] b _08120290 .align 2, 0 -_081201E8: .4byte gUnknown_203B09C +_081201E8: .4byte sPartyMenuInternal _081201EC: .4byte gPlayerParty + 300 @ &gPlayerParty[3] _081201F0: ldr r0, _081201F4 @ =gPlayerParty + 200 @ &gPlayerParty[2] @@ -3051,7 +3051,7 @@ _081201F4: .4byte gPlayerParty + 200 @ &gPlayerParty[2] _081201F8: cmp r0, 0x1 bne _08120290 - ldr r0, _0812021C @ =gUnknown_203B09C + ldr r0, _0812021C @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 28 @@ -3067,7 +3067,7 @@ _0812020C: strb r5, [r4] b _08120290 .align 2, 0 -_0812021C: .4byte gUnknown_203B09C +_0812021C: .4byte sPartyMenuInternal _08120220: .4byte gPlayerParty + 500 @ &gPlayerParty[5] _08120224: ldr r0, _08120234 @ =gPlayerParty + 400 @ &gPlayerParty[4] @@ -3086,7 +3086,7 @@ _08120238: lsrs r0, 24 cmp r0, 0x1 bhi _08120268 - ldr r0, _08120264 @ =gUnknown_203B09C + ldr r0, _08120264 @ =sPartyMenuInternal ldr r3, [r0] movs r1, 0 ldrsb r1, [r4, r1] @@ -3102,14 +3102,14 @@ _08120238: movs r0, 0 b _0812028E .align 2, 0 -_08120264: .4byte gUnknown_203B09C +_08120264: .4byte sPartyMenuInternal _08120268: subs r0, r1, 0x4 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _08120290 - ldr r0, _08120298 @ =gUnknown_203B09C + ldr r0, _08120298 @ =sPartyMenuInternal ldr r3, [r0] movs r1, 0 ldrsb r1, [r4, r1] @@ -3130,11 +3130,11 @@ _08120290: pop {r0} bx r0 .align 2, 0 -_08120298: .4byte gUnknown_203B09C - thumb_func_end sub_81200F8 +_08120298: .4byte sPartyMenuInternal + thumb_func_end UpdatePartySelectionDoubleLayout - thumb_func_start sub_812029C -sub_812029C: @ 812029C + thumb_func_start GetNewSlotDoubleLayout +GetNewSlotDoubleLayout: @ 812029C push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -3170,7 +3170,7 @@ _081202D8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_812029C + thumb_func_end GetNewSlotDoubleLayout thumb_func_start GetMonNickname GetMonNickname: @ 81202E0 @@ -3186,13 +3186,13 @@ GetMonNickname: @ 81202E0 bx r1 thumb_func_end GetMonNickname - thumb_func_start sub_81202F8 -sub_81202F8: @ 81202F8 + thumb_func_start DisplayPartyMenuMessage +DisplayPartyMenuMessage: @ 81202F8 push {r4,lr} lsls r4, r1, 24 lsrs r4, 24 - bl sub_8121FC0 - ldr r0, _08120320 @ =sub_8120328 + bl PartyMenuPrintText + ldr r0, _08120320 @ =Task_PrintAndWaitForText movs r1, 0x1 bl CreateTask lsls r0, 24 @@ -3207,12 +3207,12 @@ sub_81202F8: @ 81202F8 pop {r1} bx r1 .align 2, 0 -_08120320: .4byte sub_8120328 +_08120320: .4byte Task_PrintAndWaitForText _08120324: .4byte gTasks - thumb_func_end sub_81202F8 + thumb_func_end DisplayPartyMenuMessage - thumb_func_start sub_8120328 -sub_8120328: @ 8120328 + thumb_func_start Task_PrintAndWaitForText +Task_PrintAndWaitForText: @ 8120328 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -3246,23 +3246,23 @@ _08120364: bx r0 .align 2, 0 _0812036C: .4byte gTasks - thumb_func_end sub_8120328 + thumb_func_end Task_PrintAndWaitForText - thumb_func_start sub_8120370 -sub_8120370: @ 8120370 + thumb_func_start IsPartyMenuTextPrinterActive +IsPartyMenuTextPrinterActive: @ 8120370 push {lr} - ldr r0, _08120380 @ =sub_8120328 + ldr r0, _08120380 @ =Task_PrintAndWaitForText bl FuncIsActiveTask lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .align 2, 0 -_08120380: .4byte sub_8120328 - thumb_func_end sub_8120370 +_08120380: .4byte Task_PrintAndWaitForText + thumb_func_end IsPartyMenuTextPrinterActive - thumb_func_start sub_8120384 -sub_8120384: @ 8120384 + thumb_func_start Task_WaitForLinkAndReturnToChooseMon +Task_WaitForLinkAndReturnToChooseMon: @ 8120384 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -3272,13 +3272,13 @@ sub_8120384: @ 8120384 cmp r0, 0x1 beq _081203AA movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _081203B0 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _081203B4 @ =sub_811FB28 + ldr r0, _081203B4 @ =Task_HandleChooseMonInput str r0, [r1] _081203AA: pop {r4} @@ -3286,16 +3286,16 @@ _081203AA: bx r0 .align 2, 0 _081203B0: .4byte gTasks -_081203B4: .4byte sub_811FB28 - thumb_func_end sub_8120384 +_081203B4: .4byte Task_HandleChooseMonInput + thumb_func_end Task_WaitForLinkAndReturnToChooseMon - thumb_func_start sub_81203B8 -sub_81203B8: @ 81203B8 + thumb_func_start Task_ReturnToChooseMonAfterText +Task_ReturnToChooseMonAfterText: @ 81203B8 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3315,20 +3315,20 @@ sub_81203B8: @ 81203B8 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _081203F8 @ =sub_8120384 + ldr r0, _081203F8 @ =Task_WaitForLinkAndReturnToChooseMon b _0812040E .align 2, 0 _081203F4: .4byte gTasks -_081203F8: .4byte sub_8120384 +_081203F8: .4byte Task_WaitForLinkAndReturnToChooseMon _081203FC: movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _08120418 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _0812041C @ =sub_811FB28 + ldr r0, _0812041C @ =Task_HandleChooseMonInput _0812040E: str r0, [r1] _08120410: @@ -3337,11 +3337,11 @@ _08120410: bx r0 .align 2, 0 _08120418: .4byte gTasks -_0812041C: .4byte sub_811FB28 - thumb_func_end sub_81203B8 +_0812041C: .4byte Task_HandleChooseMonInput + thumb_func_end Task_ReturnToChooseMonAfterText - thumb_func_start sub_8120420 -sub_8120420: @ 8120420 + thumb_func_start DisplayGaveHeldItemMessage +DisplayGaveHeldItemMessage: @ 8120420 push {r4-r6,lr} adds r5, r0, 0 lsls r1, 16 @@ -3357,7 +3357,7 @@ sub_8120420: @ 8120420 .align 2, 0 _08120438: .4byte 0x0000ffff _0812043C: - ldr r0, _08120454 @ =gUnknown_203B0A0 + ldr r0, _08120454 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x6 bne _0812045C @@ -3369,7 +3369,7 @@ _08120448: bl ItemUse_SetQuestLogEvent b _08120468 .align 2, 0 -_08120454: .4byte gUnknown_203B0A0 +_08120454: .4byte gPartyMenu _08120458: .4byte 0x0000ffff _0812045C: ldr r3, _08120498 @ =0x0000ffff @@ -3385,12 +3385,12 @@ _08120468: adds r0, r4, 0 bl CopyItemName ldr r4, _081204A4 @ =gStringVar4 - ldr r1, _081204A8 @ =gUnknown_8416C2A + ldr r1, _081204A8 @ =gText_PkmnWasGivenItem adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 adds r1, r6, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4-r6} @@ -3401,11 +3401,11 @@ _08120498: .4byte 0x0000ffff _0812049C: .4byte gStringVar1 _081204A0: .4byte gStringVar2 _081204A4: .4byte gStringVar4 -_081204A8: .4byte gUnknown_8416C2A - thumb_func_end sub_8120420 +_081204A8: .4byte gText_PkmnWasGivenItem + thumb_func_end DisplayGaveHeldItemMessage - thumb_func_start sub_81204AC -sub_81204AC: @ 81204AC + thumb_func_start DisplayTookHeldItemMessage +DisplayTookHeldItemMessage: @ 81204AC push {r4-r6,lr} adds r6, r0, 0 adds r4, r1, 0 @@ -3426,12 +3426,12 @@ sub_81204AC: @ 81204AC adds r0, r4, 0 bl CopyItemName ldr r4, _08120504 @ =gStringVar4 - ldr r1, _08120508 @ =gUnknown_8416CAC + ldr r1, _08120508 @ =gText_ReceivedItemFromPkmn adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 adds r1, r5, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4-r6} @@ -3442,11 +3442,11 @@ _081204F8: .4byte 0x0000ffff _081204FC: .4byte gStringVar1 _08120500: .4byte gStringVar2 _08120504: .4byte gStringVar4 -_08120508: .4byte gUnknown_8416CAC - thumb_func_end sub_81204AC +_08120508: .4byte gText_ReceivedItemFromPkmn + thumb_func_end DisplayTookHeldItemMessage - thumb_func_start sub_812050C -sub_812050C: @ 812050C + thumb_func_start DisplayAlreadyHoldingItemSwitchMessage +DisplayAlreadyHoldingItemSwitchMessage: @ 812050C push {r4,r5,lr} adds r4, r1, 0 adds r5, r2, 0 @@ -3460,12 +3460,12 @@ sub_812050C: @ 812050C adds r0, r4, 0 bl CopyItemName ldr r4, _08120550 @ =gStringVar4 - ldr r1, _08120554 @ =gUnknown_8416C49 + ldr r1, _08120554 @ =gText_PkmnAlreadyHoldingItemSwitch adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 adds r1, r5, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4,r5} @@ -3475,11 +3475,11 @@ sub_812050C: @ 812050C _08120548: .4byte gStringVar1 _0812054C: .4byte gStringVar2 _08120550: .4byte gStringVar4 -_08120554: .4byte gUnknown_8416C49 - thumb_func_end sub_812050C +_08120554: .4byte gText_PkmnAlreadyHoldingItemSwitch + thumb_func_end DisplayAlreadyHoldingItemSwitchMessage - thumb_func_start sub_8120558 -sub_8120558: @ 8120558 + thumb_func_start DisplaySwitchedHeldItemMessage +DisplaySwitchedHeldItemMessage: @ 8120558 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -3490,7 +3490,7 @@ sub_8120558: @ 8120558 lsrs r5, 16 lsls r6, 24 lsrs r6, 24 - ldr r0, _081205B0 @ =gUnknown_203B0A0 + ldr r0, _081205B0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -3507,28 +3507,28 @@ sub_8120558: @ 8120558 adds r0, r5, 0 bl CopyItemName ldr r4, _081205C0 @ =gStringVar4 - ldr r1, _081205C4 @ =gUnknown_8416CEA + ldr r1, _081205C4 @ =gText_SwitchedPkmnItem adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 adds r1, r6, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_081205B0: .4byte gUnknown_203B0A0 +_081205B0: .4byte gPartyMenu _081205B4: .4byte gPlayerParty _081205B8: .4byte gStringVar1 _081205BC: .4byte gStringVar2 _081205C0: .4byte gStringVar4 -_081205C4: .4byte gUnknown_8416CEA - thumb_func_end sub_8120558 +_081205C4: .4byte gText_SwitchedPkmnItem + thumb_func_end DisplaySwitchedHeldItemMessage - thumb_func_start sub_81205C8 -sub_81205C8: @ 81205C8 + thumb_func_start GiveItemToMon +GiveItemToMon: @ 81205C8 push {r4-r7,lr} sub sp, 0x4 adds r6, r0, 0 @@ -3563,10 +3563,10 @@ _08120606: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_81205C8 + thumb_func_end GiveItemToMon - thumb_func_start sub_8120610 -sub_8120610: @ 8120610 + thumb_func_start TryTakeMonItem +TryTakeMonItem: @ 8120610 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -3602,10 +3602,10 @@ _0812064E: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8120610 + thumb_func_end TryTakeMonItem - thumb_func_start sub_8120658 -sub_8120658: @ 8120658 + thumb_func_start BufferBagFullCantTakeItemMessage +BufferBagFullCantTakeItemMessage: @ 8120658 push {lr} lsls r0, 16 lsrs r0, 16 @@ -3633,7 +3633,7 @@ _08120686: ldr r0, _0812069C @ =gStringVar1 bl StringCopy ldr r0, _081206A0 @ =gStringVar4 - ldr r1, _081206A4 @ =gUnknown_8416D78 + ldr r1, _081206A4 @ =gText_BagFullCouldNotRemoveItem bl StringExpandPlaceholders pop {r0} bx r0 @@ -3641,11 +3641,11 @@ _08120686: _08120698: .4byte 0x0000016d _0812069C: .4byte gStringVar1 _081206A0: .4byte gStringVar4 -_081206A4: .4byte gUnknown_8416D78 - thumb_func_end sub_8120658 +_081206A4: .4byte gText_BagFullCouldNotRemoveItem + thumb_func_end BufferBagFullCantTakeItemMessage - thumb_func_start sub_81206A8 -sub_81206A8: @ 81206A8 + thumb_func_start Task_PartyMenuModifyHP +Task_PartyMenuModifyHP: @ 81206A8 push {r4-r7,lr} mov r7, r8 push {r7} @@ -3678,12 +3678,12 @@ sub_81206A8: @ 81206A8 adds r0, r2, 0 muls r0, r5 adds r0, r4 - ldr r6, _08120758 @ =gUnknown_203B0B4 + ldr r6, _08120758 @ =sPartyMenuBoxes lsls r2, 4 ldr r1, [r6] adds r1, r2 movs r2, 0x1 - bl sub_812199C + bl DisplayPartyPokemonHPCheck movs r0, 0x8 ldrsh r2, [r7, r0] adds r0, r2, 0 @@ -3692,7 +3692,7 @@ sub_81206A8: @ 81206A8 lsls r2, 4 ldr r1, [r6] adds r1, r2 - bl sub_8121AF0 + bl DisplayPartyPokemonHPBarCheck movs r1, 0x6 ldrsh r0, [r7, r1] cmp r0, 0 @@ -3731,12 +3731,12 @@ _08120746: .align 2, 0 _08120750: .4byte gTasks+0x8 _08120754: .4byte gPlayerParty -_08120758: .4byte gUnknown_203B0B4 +_08120758: .4byte sPartyMenuBoxes _0812075C: .4byte gStringVar2 - thumb_func_end sub_81206A8 + thumb_func_end Task_PartyMenuModifyHP - thumb_func_start sub_8120760 -sub_8120760: @ 8120760 + thumb_func_start PartyMenuModifyHP +PartyMenuModifyHP: @ 8120760 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -3788,7 +3788,7 @@ sub_8120760: @ 8120760 strh r0, [r4, 0x8] ldrh r0, [r4] strh r0, [r4, 0xA] - ldr r1, _081207EC @ =sub_81206A8 + ldr r1, _081207EC @ =Task_PartyMenuModifyHP mov r0, r8 adds r2, r7, 0 bl SetTaskFuncWithFollowupFunc @@ -3802,11 +3802,11 @@ sub_8120760: @ 8120760 .align 2, 0 _081207E4: .4byte gPlayerParty _081207E8: .4byte gTasks+0x8 -_081207EC: .4byte sub_81206A8 - thumb_func_end sub_8120760 +_081207EC: .4byte Task_PartyMenuModifyHP + thumb_func_end PartyMenuModifyHP - thumb_func_start sub_81207F0 -sub_81207F0: @ 81207F0 + thumb_func_start ResetHPTaskData +ResetHPTaskData: @ 81207F0 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -3852,7 +3852,7 @@ _08120846: strh r2, [r3, 0x8] b _08120852 _0812084A: - ldr r1, _08120858 @ =sub_81206A8 + ldr r1, _08120858 @ =Task_PartyMenuModifyHP adds r0, r4, 0 bl SetTaskFuncWithFollowupFunc _08120852: @@ -3860,11 +3860,11 @@ _08120852: pop {r0} bx r0 .align 2, 0 -_08120858: .4byte sub_81206A8 - thumb_func_end sub_81207F0 +_08120858: .4byte Task_PartyMenuModifyHP + thumb_func_end ResetHPTaskData - thumb_func_start pokemon_ailments_get_primary -pokemon_ailments_get_primary: @ 812085C + thumb_func_start GetAilmentFromStatus +GetAilmentFromStatus: @ 812085C push {lr} adds r1, r0, 0 movs r0, 0x88 @@ -3906,10 +3906,10 @@ _0812089C: _0812089E: pop {r1} bx r1 - thumb_func_end pokemon_ailments_get_primary + thumb_func_end GetAilmentFromStatus - thumb_func_start sub_81208A4 -sub_81208A4: @ 81208A4 + thumb_func_start GetMonAilment +GetMonAilment: @ 81208A4 push {r4,lr} adds r4, r0, 0 movs r1, 0x39 @@ -3922,7 +3922,7 @@ _081208B6: adds r0, r4, 0 movs r1, 0x37 bl GetMonData - bl pokemon_ailments_get_primary + bl GetAilmentFromStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -3941,12 +3941,12 @@ _081208DE: pop {r4} pop {r1} bx r1 - thumb_func_end sub_81208A4 + thumb_func_end GetMonAilment - thumb_func_start sub_81208E4 -sub_81208E4: @ 81208E4 + thumb_func_start SetPartyMonsAllowedInMinigame +SetPartyMonsAllowedInMinigame: @ 81208E4 push {r4,r5,lr} - ldr r2, _08120934 @ =gUnknown_203B0A0 + ldr r2, _08120934 @ =gPartyMenu ldrb r1, [r2, 0x8] movs r0, 0xF ands r0, r1 @@ -3970,7 +3970,7 @@ _0812090C: muls r0, r4 ldr r1, _08120940 @ =gPlayerParty adds r0, r1 - bl sub_812097C + bl IsMonAllowedInPokemonJump lsls r0, 16 lsrs r0, 16 lsls r0, r4 @@ -3986,7 +3986,7 @@ _0812090C: bcc _0812090C b _0812096E .align 2, 0 -_08120934: .4byte gUnknown_203B0A0 +_08120934: .4byte gPartyMenu _08120938: .4byte gSpecialVar_0x8005 _0812093C: .4byte gPlayerPartyCount _08120940: .4byte gPlayerParty @@ -3998,7 +3998,7 @@ _08120948: muls r0, r4 ldr r1, _08120974 @ =gPlayerParty adds r0, r1 - bl sub_81209AC + bl IsMonAllowedInDodrioBerryPicking lsls r0, 16 lsrs r0, 16 lsls r0, r4 @@ -4020,10 +4020,10 @@ _0812096E: .align 2, 0 _08120974: .4byte gPlayerParty _08120978: .4byte gPlayerPartyCount - thumb_func_end sub_81208E4 + thumb_func_end SetPartyMonsAllowedInMinigame - thumb_func_start sub_812097C -sub_812097C: @ 812097C + thumb_func_start IsMonAllowedInPokemonJump +IsMonAllowedInPokemonJump: @ 812097C push {r4,lr} adds r4, r0, 0 movs r1, 0x2D @@ -4046,10 +4046,10 @@ _081209A4: pop {r4} pop {r1} bx r1 - thumb_func_end sub_812097C + thumb_func_end IsMonAllowedInPokemonJump - thumb_func_start sub_81209AC -sub_81209AC: @ 81209AC + thumb_func_start IsMonAllowedInDodrioBerryPicking +IsMonAllowedInDodrioBerryPicking: @ 81209AC push {r4,lr} adds r4, r0, 0 movs r1, 0x2D @@ -4069,14 +4069,14 @@ _081209CC: pop {r4} pop {r1} bx r1 - thumb_func_end sub_81209AC + thumb_func_end IsMonAllowedInDodrioBerryPicking - thumb_func_start sub_81209D4 -sub_81209D4: @ 81209D4 + thumb_func_start IsMonAllowedInMinigame +IsMonAllowedInMinigame: @ 81209D4 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, _081209F0 @ =gUnknown_203B0A0 + ldr r1, _081209F0 @ =gPartyMenu movs r2, 0xE ldrsh r1, [r1, r2] asrs r1, r0 @@ -4089,18 +4089,18 @@ _081209EC: pop {r1} bx r1 .align 2, 0 -_081209F0: .4byte gUnknown_203B0A0 - thumb_func_end sub_81209D4 +_081209F0: .4byte gPartyMenu + thumb_func_end IsMonAllowedInMinigame - thumb_func_start sub_81209F4 -sub_81209F4: @ 81209F4 + thumb_func_start TryEnterMonForMinigame +TryEnterMonForMinigame: @ 81209F4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r5, r1, 24 adds r0, r5, 0 - bl sub_81209D4 + bl IsMonAllowedInMinigame lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4110,7 +4110,7 @@ sub_81209F4: @ 81209F4 ldr r0, _08120A20 @ =gSpecialVar_0x8004 strh r5, [r0] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _08120A46 .align 2, 0 _08120A20: .4byte gSpecialVar_0x8004 @@ -4119,7 +4119,7 @@ _08120A24: bl PlaySE ldr r0, _08120A4C @ =gUnknown_8417696 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08120A50 @ =gTasks @@ -4127,7 +4127,7 @@ _08120A24: adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08120A54 @ =sub_81203B8 + ldr r1, _08120A54 @ =Task_ReturnToChooseMonAfterText str r1, [r0] _08120A46: pop {r4,r5} @@ -4136,18 +4136,18 @@ _08120A46: .align 2, 0 _08120A4C: .4byte gUnknown_8417696 _08120A50: .4byte gTasks -_08120A54: .4byte sub_81203B8 - thumb_func_end sub_81209F4 +_08120A54: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end TryEnterMonForMinigame - thumb_func_start sub_8120A58 -sub_8120A58: @ 8120A58 + thumb_func_start CancelParticipationPrompt +CancelParticipationPrompt: @ 8120A58 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _08120A84 @ =gUnknown_84176B8 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08120A88 @ =gTasks @@ -4155,7 +4155,7 @@ sub_8120A58: @ 8120A58 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08120A8C @ =sub_8120A90 + ldr r1, _08120A8C @ =Task_CancelParticipationYesNo str r1, [r0] pop {r4} pop {r0} @@ -4163,26 +4163,26 @@ sub_8120A58: @ 8120A58 .align 2, 0 _08120A84: .4byte gUnknown_84176B8 _08120A88: .4byte gTasks -_08120A8C: .4byte sub_8120A90 - thumb_func_end sub_8120A58 +_08120A8C: .4byte Task_CancelParticipationYesNo + thumb_func_end CancelParticipationPrompt - thumb_func_start sub_8120A90 -sub_8120A90: @ 8120A90 + thumb_func_start Task_CancelParticipationYesNo +Task_CancelParticipationYesNo: @ 8120A90 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08120AB4 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08120ABC @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08120AC0 @ =sub_8120AC4 + ldr r0, _08120AC0 @ =Task_HandleCancelParticipationYesNoInput str r0, [r1] _08120AB4: pop {r4} @@ -4190,11 +4190,11 @@ _08120AB4: bx r0 .align 2, 0 _08120ABC: .4byte gTasks -_08120AC0: .4byte sub_8120AC4 - thumb_func_end sub_8120A90 +_08120AC0: .4byte Task_HandleCancelParticipationYesNoInput + thumb_func_end Task_CancelParticipationYesNo - thumb_func_start sub_8120AC4 -sub_8120AC4: @ 8120AC4 + thumb_func_start Task_HandleCancelParticipationYesNoInput +Task_HandleCancelParticipationYesNoInput: @ 8120AC4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -4219,7 +4219,7 @@ _08120AEA: movs r0, 0x7 strh r0, [r1] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _08120B10 .align 2, 0 _08120AF8: .4byte gSpecialVar_0x8004 @@ -4232,7 +4232,7 @@ _08120B02: adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08120B1C @ =sub_81203B8 + ldr r0, _08120B1C @ =Task_ReturnToChooseMonAfterText str r0, [r1] _08120B10: pop {r4} @@ -4240,11 +4240,11 @@ _08120B10: bx r0 .align 2, 0 _08120B18: .4byte gTasks -_08120B1C: .4byte sub_81203B8 - thumb_func_end sub_8120AC4 +_08120B1C: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end Task_HandleCancelParticipationYesNoInput - thumb_func_start sub_8120B20 -sub_8120B20: @ 8120B20 + thumb_func_start CanMonLearnTMTutor +CanMonLearnTMTutor: @ 8120B20 push {r4-r7,lr} mov r7, r8 push {r7} @@ -4284,7 +4284,7 @@ _08120B64: lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 - bl IsMonCompatibleWithMoveTutorMove + bl CanLearnTutorMove lsls r0, 24 cmp r0, 0 bne _08120B80 @@ -4313,7 +4313,7 @@ _08120B9E: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8120B20 + thumb_func_end CanMonLearnTMTutor thumb_func_start GetMoveTutorMove GetMoveTutorMove: @ 8120BA8 @@ -4356,8 +4356,8 @@ _08120BDE: _08120BE4: .4byte gMoveTutorMoves thumb_func_end GetMoveTutorMove - thumb_func_start IsMonCompatibleWithMoveTutorMove -IsMonCompatibleWithMoveTutorMove: @ 8120BE8 + thumb_func_start CanLearnTutorMove +CanLearnTutorMove: @ 8120BE8 push {lr} lsls r0, 16 lsrs r0, 16 @@ -4387,7 +4387,7 @@ _08120C12: beq _08120C34 b _08120C2A _08120C18: - ldr r1, _08120C30 @ =gMoveTutorMoveCompatibilityTable + ldr r1, _08120C30 @ =sTutorLearnsets lsls r0, 1 adds r0, r1 ldrh r0, [r0] @@ -4400,13 +4400,13 @@ _08120C2A: movs r0, 0 b _08120C36 .align 2, 0 -_08120C30: .4byte gMoveTutorMoveCompatibilityTable +_08120C30: .4byte sTutorLearnsets _08120C34: movs r0, 0x1 _08120C36: pop {r1} bx r1 - thumb_func_end IsMonCompatibleWithMoveTutorMove + thumb_func_end CanLearnTutorMove thumb_func_start sub_8120C3C sub_8120C3C: @ 8120C3C @@ -4714,26 +4714,26 @@ sub_8120E58: @ 8120E58 movs r1, 0x58 movs r2, 0xF0 bl TextWindow_SetStdFrame0_WithPal - ldr r0, _08120E94 @ =gUnknown_203B0A0 + ldr r0, _08120E94 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x3 bne _08120E98 movs r0, 0x5 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08120E9E .align 2, 0 _08120E90: .4byte gPaletteFade -_08120E94: .4byte gUnknown_203B0A0 +_08120E94: .4byte gPartyMenu _08120E98: movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage _08120E9E: ldr r0, _08120EB4 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08120EB8 @ =sub_811FB28 + ldr r0, _08120EB8 @ =Task_HandleChooseMonInput str r0, [r1] _08120EAC: pop {r4} @@ -4741,7 +4741,7 @@ _08120EAC: bx r0 .align 2, 0 _08120EB4: .4byte gTasks -_08120EB8: .4byte sub_811FB28 +_08120EB8: .4byte Task_HandleChooseMonInput thumb_func_end sub_8120E58 thumb_func_start sub_8120EBC @@ -4806,21 +4806,21 @@ _08120F24: _08120F2A: ldr r0, _08120F34 @ =gUnknown_203B0A9 movs r1, 0x2 - bl sub_811FF94 + bl UpdateCurrentPartySelection b _08120F62 .align 2, 0 _08120F34: .4byte gUnknown_203B0A9 _08120F38: movs r0, 0x5 bl PlaySE - bl sub_8122BD4 + bl CreateSelectionWindow b _08120F62 _08120F44: - ldr r4, _08120F70 @ =gUnknown_203B09C + ldr r4, _08120F70 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xE - bl sub_8121CE4 - ldr r1, _08120F74 @ =gUnknown_845A618 + bl PartyMenuRemoveWindow + ldr r1, _08120F74 @ =sCursorOptions ldr r0, [r4] ldrb r0, [r0, 0xF] lsls r0, 3 @@ -4838,8 +4838,8 @@ _08120F68: pop {r0} bx r0 .align 2, 0 -_08120F70: .4byte gUnknown_203B09C -_08120F74: .4byte gUnknown_845A618 +_08120F70: .4byte sPartyMenuInternal +_08120F74: .4byte sCursorOptions thumb_func_end sub_8120EE0 thumb_func_start sub_8120F78 @@ -4858,18 +4858,18 @@ sub_8120F78: @ 8120F78 .align 2, 0 _08120F90: .4byte gMain _08120F94: - ldr r0, _08120FA8 @ =gUnknown_203B09C + ldr r0, _08120FA8 @ =sPartyMenuInternal ldr r1, [r0] ldr r0, _08120FAC @ =sub_8120FB0 str r0, [r1, 0x4] adds r0, r2, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu movs r0, 0x1 _08120FA4: pop {r1} bx r1 .align 2, 0 -_08120FA8: .4byte gUnknown_203B09C +_08120FA8: .4byte sPartyMenuInternal _08120FAC: .4byte sub_8120FB0 thumb_func_end sub_8120F78 @@ -4943,12 +4943,12 @@ sub_8120FF0: @ 8120FF0 _0812102C: .4byte gTasks+0x8 _08121030: .4byte gPaletteFade _08121034: - ldr r0, _08121050 @ =gUnknown_203B09C + ldr r0, _08121050 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _08121054 @ =sub_8128184 + ldr r0, _08121054 @ =CB2_SetUpExitToBattleScreen str r0, [r1, 0x4] - ldr r0, _08121058 @ =gUnknown_3005E98 - ldr r1, _0812105C @ =sub_81255BC + ldr r0, _08121058 @ =gItemUseCB + ldr r1, _0812105C @ =Task_ClosePartyMenuAfterText ldr r2, [r0] adds r0, r5, 0 bl _call_via_r2 @@ -4957,14 +4957,14 @@ _08121048: pop {r0} bx r0 .align 2, 0 -_08121050: .4byte gUnknown_203B09C -_08121054: .4byte sub_8128184 -_08121058: .4byte gUnknown_3005E98 -_0812105C: .4byte sub_81255BC +_08121050: .4byte sPartyMenuInternal +_08121054: .4byte CB2_SetUpExitToBattleScreen +_08121058: .4byte gItemUseCB +_0812105C: .4byte Task_ClosePartyMenuAfterText thumb_func_end sub_8120FF0 - thumb_func_start sub_8121060 -sub_8121060: @ 8121060 + thumb_func_start InitPartyMenuWindows +InitPartyMenuWindows: @ 8121060 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -4981,25 +4981,25 @@ _08121076: beq _08121094 b _081210A0 _0812107C: - ldr r0, _08121084 @ =gUnknown_845A010 + ldr r0, _08121084 @ =sSinglePartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 -_08121084: .4byte gUnknown_845A010 +_08121084: .4byte sSinglePartyMenuWindowTemplate _08121088: - ldr r0, _08121090 @ =gUnknown_845A050 + ldr r0, _08121090 @ =sDoublePartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 -_08121090: .4byte gUnknown_845A050 +_08121090: .4byte sDoublePartyMenuWindowTemplate _08121094: - ldr r0, _0812109C @ =gUnknown_845A090 + ldr r0, _0812109C @ =sMultiPartyMenuWindowTemplate bl InitWindows b _081210A6 .align 2, 0 -_0812109C: .4byte gUnknown_845A090 +_0812109C: .4byte sMultiPartyMenuWindowTemplate _081210A0: - ldr r0, _081210F4 @ =gUnknown_845A0D0 + ldr r0, _081210F4 @ =sShowcaseMultiPartyMenuWindowTemplate bl InitWindows _081210A6: bl DeactivateAllTextPrinters @@ -5035,16 +5035,16 @@ _081210AC: pop {r0} bx r0 .align 2, 0 -_081210F4: .4byte gUnknown_845A0D0 - thumb_func_end sub_8121060 +_081210F4: .4byte sShowcaseMultiPartyMenuWindowTemplate + thumb_func_end InitPartyMenuWindows - thumb_func_start sub_81210F8 -sub_81210F8: @ 81210F8 + thumb_func_start CreateCancelConfirmWindows +CreateCancelConfirmWindows: @ 81210F8 push {r4-r6,lr} sub sp, 0x14 lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _08121174 @ =gUnknown_203B0A0 + ldr r0, _08121174 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -5054,7 +5054,7 @@ sub_81210F8: @ 81210F8 _0812110E: cmp r2, 0x1 bne _08121188 - ldr r0, _08121178 @ =gUnknown_845A118 + ldr r0, _08121178 @ =sConfirmButtonWindowTemplate bl AddWindow adds r4, r0, 0 lsls r4, 24 @@ -5062,7 +5062,7 @@ _0812110E: adds r0, r4, 0 movs r1, 0 bl FillWindowPixelBuffer - ldr r5, _0812117C @ =gUnknown_84169D5 + ldr r5, _0812117C @ =gMenuText_Confirm movs r0, 0 adds r1, r5, 0 movs r2, 0 @@ -5075,7 +5075,7 @@ _0812110E: movs r0, 0 str r0, [sp] str r0, [sp, 0x4] - ldr r0, _08121180 @ =gUnknown_8459FFC + ldr r0, _08121180 @ =sFontColorTable str r0, [sp, 0x8] movs r0, 0x1 negs r0, r0 @@ -5090,20 +5090,20 @@ _0812110E: adds r0, r4, 0 movs r1, 0x2 bl CopyWindowToVram - ldr r0, _08121184 @ =gUnknown_845A110 + ldr r0, _08121184 @ =sMultiCancelButtonWindowTemplate bl AddWindow lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 b _08121194 .align 2, 0 -_08121174: .4byte gUnknown_203B0A0 -_08121178: .4byte gUnknown_845A118 -_0812117C: .4byte gUnknown_84169D5 -_08121180: .4byte gUnknown_8459FFC -_08121184: .4byte gUnknown_845A110 +_08121174: .4byte gPartyMenu +_08121178: .4byte sConfirmButtonWindowTemplate +_0812117C: .4byte gMenuText_Confirm +_08121180: .4byte sFontColorTable +_08121184: .4byte sMultiCancelButtonWindowTemplate _08121188: - ldr r0, _081211E0 @ =gUnknown_845A108 + ldr r0, _081211E0 @ =sCancelButtonWindowTemplate bl AddWindow lsls r0, 24 lsrs r6, r0, 24 @@ -5112,7 +5112,7 @@ _08121194: adds r0, r6, 0 movs r1, 0 bl FillWindowPixelBuffer - ldr r0, _081211E4 @ =gUnknown_203B0A0 + ldr r0, _081211E4 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 @@ -5131,7 +5131,7 @@ _08121194: adds r1, r5, r1 lsls r1, 24 lsrs r5, r1, 24 - ldr r0, _081211EC @ =gUnknown_8459FFC + ldr r0, _081211EC @ =sFontColorTable str r0, [sp] movs r0, 0x1 negs r0, r0 @@ -5144,10 +5144,10 @@ _08121194: bl AddTextPrinterParameterized3 b _08121224 .align 2, 0 -_081211E0: .4byte gUnknown_845A108 -_081211E4: .4byte gUnknown_203B0A0 +_081211E0: .4byte sCancelButtonWindowTemplate +_081211E4: .4byte gPartyMenu _081211E8: .4byte gFameCheckerText_Cancel -_081211EC: .4byte gUnknown_8459FFC +_081211EC: .4byte sFontColorTable _081211F0: ldr r4, _08121240 @ =gOtherText_Exit movs r0, 0 @@ -5162,7 +5162,7 @@ _081211F0: adds r1, r5, r1 lsls r1, 24 lsrs r5, r1, 24 - ldr r0, _08121244 @ =gUnknown_8459FFC + ldr r0, _08121244 @ =sFontColorTable str r0, [sp] movs r0, 0x1 negs r0, r0 @@ -5188,13 +5188,13 @@ _08121238: bx r0 .align 2, 0 _08121240: .4byte gOtherText_Exit -_08121244: .4byte gUnknown_8459FFC - thumb_func_end sub_81210F8 +_08121244: .4byte sFontColorTable + thumb_func_end CreateCancelConfirmWindows - thumb_func_start sub_8121248 -sub_8121248: @ 8121248 + thumb_func_start GetPartyMenuPalBufferPtr +GetPartyMenuPalBufferPtr: @ 8121248 lsls r0, 24 - ldr r1, _08121258 @ =gUnknown_203B09C + ldr r1, _08121258 @ =sPartyMenuInternal lsrs r0, 23 adds r0, 0x18 ldr r1, [r1] @@ -5202,11 +5202,11 @@ sub_8121248: @ 8121248 adds r0, r1, 0 bx lr .align 2, 0 -_08121258: .4byte gUnknown_203B09C - thumb_func_end sub_8121248 +_08121258: .4byte sPartyMenuInternal + thumb_func_end GetPartyMenuPalBufferPtr - thumb_func_start sub_812125C -sub_812125C: @ 812125C + thumb_func_start BlitBitmapToPartyWindow +BlitBitmapToPartyWindow: @ 812125C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -5274,7 +5274,7 @@ _081212D4: ldr r2, [sp, 0xC] adds r0, r2, r0 ldrb r0, [r0] - bl sub_811F620 + bl GetPartyMenuBgTile adds r1, r5, 0 muls r1, r6 adds r1, r4 @@ -5318,10 +5318,10 @@ _0812132A: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_812125C + thumb_func_end BlitBitmapToPartyWindow - thumb_func_start sub_812133C -sub_812133C: @ 812133C + thumb_func_start BlitBitmapToPartyWindow_LeftColumn +BlitBitmapToPartyWindow_LeftColumn: @ 812133C push {r4-r6,lr} sub sp, 0xC ldr r4, [sp, 0x1C] @@ -5347,35 +5347,35 @@ sub_812133C: @ 812133C _08121368: cmp r5, 0 bne _08121384 - ldr r1, _08121380 @ =gUnknown_845A180 + ldr r1, _08121380 @ =sMainSlotTileNums str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0xA adds r3, r6, 0 - bl sub_812125C + bl BlitBitmapToPartyWindow b _08121394 .align 2, 0 -_08121380: .4byte gUnknown_845A180 +_08121380: .4byte sMainSlotTileNums _08121384: - ldr r1, _0812139C @ =gUnknown_845A1C6 + ldr r1, _0812139C @ =sMainSlotTileNums_Egg str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0xA adds r3, r6, 0 - bl sub_812125C + bl BlitBitmapToPartyWindow _08121394: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_0812139C: .4byte gUnknown_845A1C6 - thumb_func_end sub_812133C +_0812139C: .4byte sMainSlotTileNums_Egg + thumb_func_end BlitBitmapToPartyWindow_LeftColumn - thumb_func_start sub_81213A0 -sub_81213A0: @ 81213A0 + thumb_func_start BlitBitmapToPartyWindow_RightColumn +BlitBitmapToPartyWindow_RightColumn: @ 81213A0 push {r4-r6,lr} sub sp, 0xC ldr r4, [sp, 0x1C] @@ -5401,35 +5401,35 @@ sub_81213A0: @ 81213A0 _081213CC: cmp r5, 0 bne _081213E8 - ldr r1, _081213E4 @ =gUnknown_845A20C + ldr r1, _081213E4 @ =sOtherSlotTileNums str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0x12 adds r3, r6, 0 - bl sub_812125C + bl BlitBitmapToPartyWindow b _081213F8 .align 2, 0 -_081213E4: .4byte gUnknown_845A20C +_081213E4: .4byte sOtherSlotTileNums _081213E8: - ldr r1, _08121400 @ =gUnknown_845A242 + ldr r1, _08121400 @ =sOtherSlotTileNums_Egg str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] movs r2, 0x12 adds r3, r6, 0 - bl sub_812125C + bl BlitBitmapToPartyWindow _081213F8: add sp, 0xC pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_08121400: .4byte gUnknown_845A242 - thumb_func_end sub_81213A0 +_08121400: .4byte sOtherSlotTileNums_Egg + thumb_func_end BlitBitmapToPartyWindow_RightColumn - thumb_func_start sub_8121404 -sub_8121404: @ 8121404 + thumb_func_start DrawEmptySlot +DrawEmptySlot: @ 8121404 push {lr} sub sp, 0xC lsls r0, 24 @@ -5443,16 +5443,16 @@ sub_8121404: @ 8121404 str r2, [sp, 0x8] movs r2, 0x12 movs r3, 0 - bl sub_812125C + bl BlitBitmapToPartyWindow add sp, 0xC pop {r0} bx r0 .align 2, 0 _08121428: .4byte gUnknown_845A278 - thumb_func_end sub_8121404 + thumb_func_end DrawEmptySlot - thumb_func_start sub_812142C -sub_812142C: @ 812142C + thumb_func_start LoadPartyBoxPalette +LoadPartyBoxPalette: @ 812142C push {r4-r7,lr} lsls r1, 24 lsrs r4, r1, 24 @@ -5478,20 +5478,20 @@ _08121458: .4byte gUnknown_845A2D4 _0812145C: ldr r5, _08121494 @ =gUnknown_845A2D4 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121498 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5509,20 +5509,20 @@ _081214A0: beq _081214EC ldr r5, _081214E0 @ =gUnknown_845A2D4 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _081214E4 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5549,20 +5549,20 @@ _08121500: .4byte gUnknown_845A2D4 _08121504: ldr r5, _0812153C @ =gUnknown_845A2D4 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121540 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5589,20 +5589,20 @@ _0812155C: .4byte gUnknown_845A2D1 _08121560: ldr r5, _08121598 @ =gUnknown_845A2C8 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _0812159C @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5629,20 +5629,20 @@ _081215B8: .4byte gUnknown_845A2CE _081215BC: ldr r5, _081215F4 @ =gUnknown_845A2C5 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _081215F8 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5661,20 +5661,20 @@ _08121600: ldr r5, _08121674 @ =gUnknown_845A2CB _0812160A: ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121678 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5682,20 +5682,20 @@ _0812160A: ldr r5, _0812167C @ =gUnknown_845A2E0 _0812163E: ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121680 @ =gUnknown_845A2B5 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r6 movs r2, 0x2 @@ -5709,40 +5709,40 @@ _08121680: .4byte gUnknown_845A2B5 _08121684: ldr r5, _081216F4 @ =gUnknown_845A2C2 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _081216F8 @ =gUnknown_845A2B2 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r7 movs r2, 0x2 bl LoadPalette ldr r5, _081216FC @ =gUnknown_845A2D7 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121700 @ =gUnknown_845A2B5 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x2] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x2] adds r1, r7 movs r2, 0x2 @@ -5756,10 +5756,10 @@ _081216F4: .4byte gUnknown_845A2C2 _081216F8: .4byte gUnknown_845A2B2 _081216FC: .4byte gUnknown_845A2D7 _08121700: .4byte gUnknown_845A2B5 - thumb_func_end sub_812142C + thumb_func_end LoadPartyBoxPalette - thumb_func_start sub_8121704 -sub_8121704: @ 8121704 + thumb_func_start DisplayPartyPokemonBarDetail +DisplayPartyPokemonBarDetail: @ 8121704 push {r4,r5,lr} sub sp, 0xC lsls r0, 24 @@ -5770,7 +5770,7 @@ sub_8121704: @ 8121704 ldrb r3, [r3, 0x1] lsls r4, r2, 1 adds r4, r2 - ldr r2, _08121734 @ =gUnknown_8459FFC + ldr r2, _08121734 @ =sFontColorTable adds r4, r2 str r4, [sp] movs r2, 0 @@ -5784,11 +5784,11 @@ sub_8121704: @ 8121704 pop {r0} bx r0 .align 2, 0 -_08121734: .4byte gUnknown_8459FFC - thumb_func_end sub_8121704 +_08121734: .4byte sFontColorTable + thumb_func_end DisplayPartyPokemonBarDetail - thumb_func_start sub_8121738 -sub_8121738: @ 8121738 + thumb_func_start DisplayPartyPokemonNickname +DisplayPartyPokemonNickname: @ 8121738 push {r4-r7,lr} sub sp, 0x14 adds r7, r0, 0 @@ -5825,16 +5825,16 @@ _08121772: adds r3, 0x4 add r1, sp, 0x8 movs r2, 0 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail _08121788: add sp, 0x14 pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8121738 + thumb_func_end DisplayPartyPokemonNickname - thumb_func_start sub_8121790 -sub_8121790: @ 8121790 + thumb_func_start DisplayPartyPokemonLevelCheck +DisplayPartyPokemonLevelCheck: @ 8121790 push {r4-r7,lr} mov r7, r8 push {r7} @@ -5849,7 +5849,7 @@ sub_8121790: @ 8121790 cmp r0, 0 beq _081217FC adds r0, r6, 0 - bl sub_81208A4 + bl GetMonAilment lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -5885,7 +5885,7 @@ _081217E4: lsls r0, 24 lsrs r0, 24 adds r1, r7, 0 - bl sub_8121808 + bl DisplayPartyPokemonLevel _081217FC: add sp, 0x8 pop {r3} @@ -5893,10 +5893,10 @@ _081217FC: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8121790 + thumb_func_end DisplayPartyPokemonLevelCheck - thumb_func_start sub_8121808 -sub_8121808: @ 8121808 + thumb_func_start DisplayPartyPokemonLevel +DisplayPartyPokemonLevel: @ 8121808 push {r4-r6,lr} adds r2, r0, 0 adds r6, r1, 0 @@ -5920,7 +5920,7 @@ sub_8121808: @ 8121808 adds r3, 0x8 adds r1, r4, 0 movs r2, 0 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail pop {r4-r6} pop {r0} bx r0 @@ -5928,10 +5928,10 @@ sub_8121808: @ 8121808 _08121848: .4byte gStringVar2 _0812184C: .4byte gStringVar1 _08121850: .4byte gText_Lv - thumb_func_end sub_8121808 + thumb_func_end DisplayPartyPokemonLevel - thumb_func_start sub_8121854 -sub_8121854: @ 8121854 + thumb_func_start DisplayPartyPokemonGenderNidoranCheck +DisplayPartyPokemonGenderNidoranCheck: @ 8121854 push {r4-r7,lr} sub sp, 0x14 adds r6, r0, 0 @@ -5974,15 +5974,15 @@ _08121886: adds r0, r4, 0 add r2, sp, 0x8 adds r3, r7, 0 - bl sub_81218BC + bl DisplayPartyPokemonGender add sp, 0x14 pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8121854 + thumb_func_end DisplayPartyPokemonGenderNidoranCheck - thumb_func_start sub_81218BC -sub_81218BC: @ 81218BC + thumb_func_start DisplayPartyPokemonGender +DisplayPartyPokemonGender: @ 81218BC push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -6026,52 +6026,52 @@ _08121900: .align 2, 0 _0812190C: .4byte gSpeciesNames _08121910: - ldr r5, _08121944 @ =gUnknown_845A2B8 + ldr r5, _08121944 @ =sGenderMalePalIds ldrb r0, [r5] - bl sub_8121248 - ldr r4, _08121948 @ =gUnknown_845A2AE + bl GetPartyMenuPalBufferPtr + ldr r4, _08121948 @ =sGenderPalOffsets ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r7, 0x8] - ldr r1, _0812194C @ =gUnknown_841621F + ldr r1, _0812194C @ =gText_MaleSymbol ldr r3, [r7] adds r3, 0xC movs r2, 0x2 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail b _08121982 .align 2, 0 -_08121944: .4byte gUnknown_845A2B8 -_08121948: .4byte gUnknown_845A2AE -_0812194C: .4byte gUnknown_841621F +_08121944: .4byte sGenderMalePalIds +_08121948: .4byte sGenderPalOffsets +_0812194C: .4byte gText_MaleSymbol _08121950: - ldr r5, _08121990 @ =gUnknown_845A2BA + ldr r5, _08121990 @ =sGenderFemalePalIds ldrb r0, [r5] - bl sub_8121248 - ldr r4, _08121994 @ =gUnknown_845A2AE + bl GetPartyMenuPalBufferPtr + ldr r4, _08121994 @ =sGenderPalOffsets ldrb r1, [r4] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r6 movs r2, 0x2 bl LoadPalette ldrb r0, [r7, 0x8] - ldr r1, _08121998 @ =gUnknown_8416221 + ldr r1, _08121998 @ =gText_FemaleSymbol ldr r3, [r7] adds r3, 0xC movs r2, 0x2 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail _08121982: pop {r3,r4} mov r8, r3 @@ -6080,13 +6080,13 @@ _08121982: pop {r0} bx r0 .align 2, 0 -_08121990: .4byte gUnknown_845A2BA -_08121994: .4byte gUnknown_845A2AE -_08121998: .4byte gUnknown_8416221 - thumb_func_end sub_81218BC +_08121990: .4byte sGenderFemalePalIds +_08121994: .4byte sGenderPalOffsets +_08121998: .4byte gText_FemaleSymbol + thumb_func_end DisplayPartyPokemonGender - thumb_func_start sub_812199C -sub_812199C: @ 812199C + thumb_func_start DisplayPartyPokemonHPCheck +DisplayPartyPokemonHPCheck: @ 812199C push {r4-r7,lr} mov r7, r8 push {r7} @@ -6128,7 +6128,7 @@ _081219DE: lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 - bl sub_8121A04 + bl DisplayPartyPokemonHP _081219F6: add sp, 0x8 pop {r3} @@ -6136,10 +6136,10 @@ _081219F6: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_812199C + thumb_func_end DisplayPartyPokemonHPCheck - thumb_func_start sub_8121A04 -sub_8121A04: @ 8121A04 + thumb_func_start DisplayPartyPokemonHP +DisplayPartyPokemonHP: @ 8121A04 push {r4,r5,lr} adds r2, r0, 0 adds r4, r1, 0 @@ -6160,16 +6160,16 @@ sub_8121A04: @ 8121A04 adds r3, 0x10 adds r1, r5, 0 movs r2, 0 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08121A38: .4byte gStringVar1 - thumb_func_end sub_8121A04 + thumb_func_end DisplayPartyPokemonHP - thumb_func_start sub_8121A3C -sub_8121A3C: @ 8121A3C + thumb_func_start DisplayPartyPokemonMaxHPCheck +DisplayPartyPokemonMaxHPCheck: @ 8121A3C push {r4-r7,lr} mov r7, r8 push {r7} @@ -6212,7 +6212,7 @@ _08121A80: lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 - bl sub_8121AA4 + bl DisplayPartyPokemonMaxHP _08121A98: add sp, 0x8 pop {r3} @@ -6220,10 +6220,10 @@ _08121A98: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8121A3C + thumb_func_end DisplayPartyPokemonMaxHPCheck - thumb_func_start sub_8121AA4 -sub_8121AA4: @ 8121AA4 + thumb_func_start DisplayPartyPokemonMaxHP +DisplayPartyPokemonMaxHP: @ 8121AA4 push {r4-r6,lr} adds r2, r0, 0 adds r6, r1, 0 @@ -6236,7 +6236,7 @@ sub_8121AA4: @ 8121AA4 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _08121AE8 @ =gStringVar1 - ldr r1, _08121AEC @ =gUnknown_841620C + ldr r1, _08121AEC @ =gText_Slash adds r0, r4, 0 bl StringCopy adds r0, r4, 0 @@ -6247,18 +6247,18 @@ sub_8121AA4: @ 8121AA4 adds r3, 0x14 adds r1, r4, 0 movs r2, 0 - bl sub_8121704 + bl DisplayPartyPokemonBarDetail pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08121AE4: .4byte gStringVar2 _08121AE8: .4byte gStringVar1 -_08121AEC: .4byte gUnknown_841620C - thumb_func_end sub_8121AA4 +_08121AEC: .4byte gText_Slash + thumb_func_end DisplayPartyPokemonMaxHP - thumb_func_start sub_8121AF0 -sub_8121AF0: @ 8121AF0 + thumb_func_start DisplayPartyPokemonHPBarCheck +DisplayPartyPokemonHPBarCheck: @ 8121AF0 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 @@ -6280,15 +6280,15 @@ sub_8121AF0: @ 8121AF0 lsrs r1, 16 adds r0, r4, 0 adds r2, r6, 0 - bl sub_8121B2C + bl DisplayPartyPokemonHPBar _08121B24: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8121AF0 + thumb_func_end DisplayPartyPokemonHPBarCheck - thumb_func_start sub_8121B2C -sub_8121B2C: @ 8121B2C + thumb_func_start DisplayPartyPokemonHPBar +DisplayPartyPokemonHPBar: @ 8121B2C push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -6329,14 +6329,14 @@ _08121B78: ldr r5, _08121BA0 @ =gUnknown_845A2BE _08121B7A: ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121BA4 @ =gUnknown_845A2B0 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 @@ -6348,14 +6348,14 @@ _08121BA4: .4byte gUnknown_845A2B0 _08121BA8: ldr r5, _08121C68 @ =gUnknown_845A2C0 ldrb r0, [r5] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldr r4, _08121C6C @ =gUnknown_845A2B0 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 bl LoadPalette ldrb r0, [r5, 0x1] - bl sub_8121248 + bl GetPartyMenuPalBufferPtr ldrb r1, [r4, 0x1] adds r1, r7 movs r2, 0x2 @@ -6436,10 +6436,10 @@ _08121C50: .align 2, 0 _08121C68: .4byte gUnknown_845A2C0 _08121C6C: .4byte gUnknown_845A2B0 - thumb_func_end sub_8121B2C + thumb_func_end DisplayPartyPokemonHPBar - thumb_func_start sub_8121C70 -sub_8121C70: @ 8121C70 + thumb_func_start DisplayPartyPokemonDescriptionText +DisplayPartyPokemonDescriptionText: @ 8121C70 push {r4-r7,lr} mov r7, r8 push {r7} @@ -6475,11 +6475,11 @@ _08121CAA: ldr r1, [r6] ldrb r2, [r1, 0x1C] ldrb r3, [r1, 0x1D] - ldr r1, _08121CDC @ =gUnknown_8459FFC + ldr r1, _08121CDC @ =sFontColorTable str r1, [sp] movs r1, 0 str r1, [sp, 0x4] - ldr r4, _08121CE0 @ =gUnknown_845A354 + ldr r4, _08121CE0 @ =sDescriptionStringTable mov r5, r8 lsls r1, r5, 2 adds r1, r4 @@ -6495,12 +6495,12 @@ _08121CD0: pop {r0} bx r0 .align 2, 0 -_08121CDC: .4byte gUnknown_8459FFC -_08121CE0: .4byte gUnknown_845A354 - thumb_func_end sub_8121C70 +_08121CDC: .4byte sFontColorTable +_08121CE0: .4byte sDescriptionStringTable + thumb_func_end DisplayPartyPokemonDescriptionText - thumb_func_start sub_8121CE4 -sub_8121CE4: @ 8121CE4 + thumb_func_start PartyMenuRemoveWindow +PartyMenuRemoveWindow: @ 8121CE4 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4] @@ -6518,14 +6518,14 @@ _08121D04: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8121CE4 + thumb_func_end PartyMenuRemoveWindow - thumb_func_start sub_8121D0C -sub_8121D0C: @ 8121D0C + thumb_func_start DisplayPartyMenuStdMessage +DisplayPartyMenuStdMessage: @ 8121D0C push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 - ldr r0, _08121D3C @ =gUnknown_203B09C + ldr r0, _08121D3C @ =sPartyMenuInternal ldr r4, [r0] adds r5, r4, 0 adds r5, 0xD @@ -6533,7 +6533,7 @@ sub_8121D0C: @ 8121D0C cmp r0, 0xFF beq _08121D26 adds r0, r5, 0 - bl sub_8121CE4 + bl PartyMenuRemoveWindow _08121D26: cmp r6, 0x7F beq _08121DE8 @@ -6547,7 +6547,7 @@ _08121D26: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08121D3C: .4byte gUnknown_203B09C +_08121D3C: .4byte sPartyMenuInternal _08121D40: .4byte _08121D44 .align 2, 0 _08121D44: @@ -6586,7 +6586,7 @@ _08121D80: _08121D88: cmp r6, 0 bne _08121DB0 - ldr r0, _08121DA0 @ =gUnknown_203B09C + ldr r0, _08121DA0 @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x8] lsls r0, 31 @@ -6596,9 +6596,9 @@ _08121D88: b _08121DB0 .align 2, 0 _08121D9C: .4byte gUnknown_845A120 -_08121DA0: .4byte gUnknown_203B09C +_08121DA0: .4byte sPartyMenuInternal _08121DA4: - bl sub_8121DF8 + bl ShouldUseChooseMonText lsls r0, 24 cmp r0, 0 bne _08121DB0 @@ -6610,7 +6610,7 @@ _08121DB0: movs r3, 0xF bl DrawStdFrameWithCustomTileAndPalette ldr r4, _08121DF0 @ =gStringVar4 - ldr r1, _08121DF4 @ =gUnknown_845A2E8 + ldr r1, _08121DF4 @ =sActionStringTable lsls r0, r6, 2 adds r0, r1 ldr r1, [r0] @@ -6635,15 +6635,15 @@ _08121DE8: bx r0 .align 2, 0 _08121DF0: .4byte gStringVar4 -_08121DF4: .4byte gUnknown_845A2E8 - thumb_func_end sub_8121D0C +_08121DF4: .4byte sActionStringTable + thumb_func_end DisplayPartyMenuStdMessage - thumb_func_start sub_8121DF8 -sub_8121DF8: @ 8121DF8 + thumb_func_start ShouldUseChooseMonText +ShouldUseChooseMonText: @ 8121DF8 push {r4-r7,lr} ldr r7, _08121E0C @ =gPlayerParty movs r6, 0 - ldr r0, _08121E10 @ =gUnknown_203B0A0 + ldr r0, _08121E10 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x1 bne _08121E14 @@ -6652,7 +6652,7 @@ _08121E06: b _08121E56 .align 2, 0 _08121E0C: .4byte gPlayerParty -_08121E10: .4byte gUnknown_203B0A0 +_08121E10: .4byte gPartyMenu _08121E14: movs r5, 0 _08121E16: @@ -6691,10 +6691,10 @@ _08121E56: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8121DF8 + thumb_func_end ShouldUseChooseMonText - thumb_func_start sub_8121E5C -sub_8121E5C: @ 8121E5C + thumb_func_start DisplaySelectionWindow +DisplaySelectionWindow: @ 8121E5C push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -6714,7 +6714,7 @@ _08121E78: beq _08121EC4 b _08121ECC _08121E7E: - ldr r0, _08121EB4 @ =gUnknown_203B09C + ldr r0, _08121EB4 @ =sPartyMenuInternal ldr r1, [r0] ldrb r0, [r1, 0x17] lsls r0, 1 @@ -6740,20 +6740,20 @@ _08121E7E: ldr r1, [sp, 0x18] b _08121ED2 .align 2, 0 -_08121EB4: .4byte gUnknown_203B09C +_08121EB4: .4byte sPartyMenuInternal _08121EB8: .4byte 0x000002bf _08121EBC: - ldr r0, _08121EC0 @ =gUnknown_845A148 + ldr r0, _08121EC0 @ =sItemGiveTakeWindowTemplate b _08121ECE .align 2, 0 -_08121EC0: .4byte gUnknown_845A148 +_08121EC0: .4byte sItemGiveTakeWindowTemplate _08121EC4: - ldr r0, _08121EC8 @ =gUnknown_845A150 + ldr r0, _08121EC8 @ =sMailReadTakeWindowTemplate b _08121ECE .align 2, 0 -_08121EC8: .4byte gUnknown_845A150 +_08121EC8: .4byte sMailReadTakeWindowTemplate _08121ECC: - ldr r0, _08121EF8 @ =gUnknown_845A158 + ldr r0, _08121EF8 @ =sMoveSelectWindowTemplate _08121ECE: ldr r1, [r0, 0x4] ldr r0, [r0] @@ -6762,7 +6762,7 @@ _08121ED2: str r1, [sp, 0x20] add r0, sp, 0x1C bl AddWindow - ldr r6, _08121EFC @ =gUnknown_203B09C + ldr r6, _08121EFC @ =sPartyMenuInternal ldr r1, [r6] strb r0, [r1, 0xC] ldr r0, [r6] @@ -6776,8 +6776,8 @@ _08121ED2: ldr r0, [r6] b _08121FA2 .align 2, 0 -_08121EF8: .4byte gUnknown_845A158 -_08121EFC: .4byte gUnknown_203B09C +_08121EF8: .4byte sMoveSelectWindowTemplate +_08121EFC: .4byte sPartyMenuInternal _08121F00: movs r0, 0x2 movs r1, 0 @@ -6819,11 +6819,11 @@ _08121F3C: str r6, [sp, 0x4] lsls r1, r2, 1 adds r1, r2 - ldr r2, _08121FB4 @ =gUnknown_8459FFC + ldr r2, _08121FB4 @ =sFontColorTable adds r1, r2 str r1, [sp, 0x8] str r6, [sp, 0xC] - ldr r2, _08121FB8 @ =gUnknown_845A618 + ldr r2, _08121FB8 @ =sCursorOptions ldrb r1, [r4] lsls r1, 3 adds r1, r2 @@ -6840,7 +6840,7 @@ _08121F3C: cmp r5, r0 bcc _08121F2A _08121F7A: - ldr r4, _08121FBC @ =gUnknown_203B09C + ldr r4, _08121FBC @ =sPartyMenuInternal ldr r2, [r4] ldrb r0, [r2, 0xC] movs r1, 0x10 @@ -6868,13 +6868,13 @@ _08121FA2: pop {r1} bx r1 .align 2, 0 -_08121FB4: .4byte gUnknown_8459FFC -_08121FB8: .4byte gUnknown_845A618 -_08121FBC: .4byte gUnknown_203B09C - thumb_func_end sub_8121E5C +_08121FB4: .4byte sFontColorTable +_08121FB8: .4byte sCursorOptions +_08121FBC: .4byte sPartyMenuInternal + thumb_func_end DisplaySelectionWindow - thumb_func_start sub_8121FC0 -sub_8121FC0: @ 8121FC0 + thumb_func_start PartyMenuPrintText +PartyMenuPrintText: @ 8121FC0 push {r4,lr} sub sp, 0x10 adds r4, r0, 0 @@ -6910,13 +6910,13 @@ sub_8121FC0: @ 8121FC0 bx r0 .align 2, 0 _08122008: .4byte gTextFlags - thumb_func_end sub_8121FC0 + thumb_func_end PartyMenuPrintText - thumb_func_start sub_812200C -sub_812200C: @ 812200C + thumb_func_start PartyMenuDisplayYesNoMenu +PartyMenuDisplayYesNoMenu: @ 812200C push {lr} sub sp, 0xC - ldr r0, _08122030 @ =gUnknown_845A160 + ldr r0, _08122030 @ =sPartyMenuYesNoWindowTemplate movs r1, 0x4F str r1, [sp] movs r1, 0xD @@ -6931,15 +6931,15 @@ sub_812200C: @ 812200C pop {r0} bx r0 .align 2, 0 -_08122030: .4byte gUnknown_845A160 - thumb_func_end sub_812200C +_08122030: .4byte sPartyMenuYesNoWindowTemplate + thumb_func_end PartyMenuDisplayYesNoMenu - thumb_func_start sub_8122034 -sub_8122034: @ 8122034 + thumb_func_start CreateLevelUpStatsWindow +CreateLevelUpStatsWindow: @ 8122034 push {r4,lr} - ldr r0, _0812205C @ =gUnknown_845A168 + ldr r0, _0812205C @ =sLevelUpStatsWindowTemplate bl AddWindow - ldr r4, _08122060 @ =gUnknown_203B09C + ldr r4, _08122060 @ =sPartyMenuInternal ldr r1, [r4] strb r0, [r1, 0xC] ldr r0, [r4] @@ -6954,26 +6954,26 @@ sub_8122034: @ 8122034 pop {r1} bx r1 .align 2, 0 -_0812205C: .4byte gUnknown_845A168 -_08122060: .4byte gUnknown_203B09C - thumb_func_end sub_8122034 +_0812205C: .4byte sLevelUpStatsWindowTemplate +_08122060: .4byte sPartyMenuInternal + thumb_func_end CreateLevelUpStatsWindow - thumb_func_start sub_8122064 -sub_8122064: @ 8122064 + thumb_func_start RemoveLevelUpStatsWindow +RemoveLevelUpStatsWindow: @ 8122064 push {r4,lr} - ldr r4, _08122080 @ =gUnknown_203B09C + ldr r4, _08122080 @ =sPartyMenuInternal ldr r0, [r4] ldrb r0, [r0, 0xC] bl ClearWindowTilemap ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow pop {r4} pop {r0} bx r0 .align 2, 0 -_08122080: .4byte gUnknown_203B09C - thumb_func_end sub_8122064 +_08122080: .4byte sPartyMenuInternal + thumb_func_end RemoveLevelUpStatsWindow thumb_func_start sub_8122084 sub_8122084: @ 8122084 @@ -7071,7 +7071,7 @@ sub_8122138: @ 8122138 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r0, _08122168 @ =gUnknown_203B09C + ldr r0, _08122168 @ =sPartyMenuInternal ldr r4, [r0] cmp r5, 0x11 bhi _0812216C @@ -7087,7 +7087,7 @@ sub_8122138: @ 8122138 bl ScheduleBgCopyTilemapToVram b _081221C0 .align 2, 0 -_08122168: .4byte gUnknown_203B09C +_08122168: .4byte sPartyMenuInternal _0812216C: ldrb r0, [r4, 0xE] cmp r0, 0xFF @@ -7137,8 +7137,8 @@ _081221CC: .4byte gUnknown_845A00B _081221D0: .4byte gUnknown_845A37C thumb_func_end sub_8122138 - thumb_func_start party_menu_icon_anim -party_menu_icon_anim: @ 81221D4 + thumb_func_start CreatePartyMonIconSprite +CreatePartyMonIconSprite: @ 81221D4 push {r4-r7,lr} sub sp, 0x4 adds r5, r0, 0 @@ -7158,7 +7158,7 @@ party_menu_icon_anim: @ 81221D4 ands r0, r1 cmp r0, 0 beq _0812220A - ldr r0, _08122248 @ =gUnknown_845A59C + ldr r0, _08122248 @ =sMultiBattlePartnersPartyMask adds r0, r4, r0 ldrb r1, [r0] eors r1, r6 @@ -7180,10 +7180,10 @@ _0812220A: adds r0, r4, 0 adds r2, r7, 0 movs r3, 0x1 - bl party_menu_link_mon_icon_anim + bl CreatePartyMonIconSpriteParameterized ldrb r0, [r7, 0x9] adds r1, r5, 0 - bl sub_8122358 + bl UpdatePartyMonHPBar add sp, 0x4 pop {r4-r7} pop {r0} @@ -7191,11 +7191,11 @@ _0812220A: .align 2, 0 _08122240: .4byte gMain _08122244: .4byte 0x00000439 -_08122248: .4byte gUnknown_845A59C - thumb_func_end party_menu_icon_anim +_08122248: .4byte sMultiBattlePartnersPartyMask + thumb_func_end CreatePartyMonIconSprite - thumb_func_start party_menu_link_mon_icon_anim -party_menu_link_mon_icon_anim: @ 812224C + thumb_func_start CreatePartyMonIconSpriteParameterized +CreatePartyMonIconSpriteParameterized: @ 812224C push {r4-r7,lr} sub sp, 0xC adds r6, r1, 0 @@ -7242,10 +7242,10 @@ _0812229A: .align 2, 0 _081222A4: .4byte SpriteCB_MonIcon _081222A8: .4byte gSprites - thumb_func_end party_menu_link_mon_icon_anim + thumb_func_end CreatePartyMonIconSpriteParameterized - thumb_func_start sub_81222AC -sub_81222AC: @ 81222AC + thumb_func_start UpdateHPBar +UpdateHPBar: @ 81222AC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -7327,10 +7327,10 @@ _0812234C: bx r0 .align 2, 0 _08122354: .4byte gSprites - thumb_func_end sub_81222AC + thumb_func_end UpdateHPBar - thumb_func_start sub_8122358 -sub_8122358: @ 8122358 + thumb_func_start UpdatePartyMonHPBar +UpdatePartyMonHPBar: @ 8122358 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 @@ -7350,14 +7350,14 @@ sub_8122358: @ 8122358 lsrs r2, 16 adds r0, r5, 0 adds r1, r4, 0 - bl sub_81222AC + bl UpdateHPBar pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8122358 + thumb_func_end UpdatePartyMonHPBar - thumb_func_start sub_812238C -sub_812238C: @ 812238C + thumb_func_start AnimateSelectedPartyIcon +AnimateSelectedPartyIcon: @ 812238C push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -7395,29 +7395,29 @@ _081223CA: mov r1, r12 adds r1, 0x1C adds r0, r1 - ldr r1, _081223E0 @ =sub_8122428 + ldr r1, _081223E0 @ =SpriteCB_UpdatePartyMonIcon b _081223F0 .align 2, 0 _081223DC: .4byte 0x0000fffc -_081223E0: .4byte sub_8122428 +_081223E0: .4byte SpriteCB_UpdatePartyMonIcon _081223E4: strh r3, [r2, 0x24] strh r3, [r2, 0x26] adds r0, r5, 0 adds r0, 0x1C adds r0, r6, r0 - ldr r1, _081223F8 @ =sub_81223FC + ldr r1, _081223F8 @ =SpriteCB_BouncePartyMonIcon _081223F0: str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_081223F8: .4byte sub_81223FC - thumb_func_end sub_812238C +_081223F8: .4byte SpriteCB_BouncePartyMonIcon + thumb_func_end AnimateSelectedPartyIcon - thumb_func_start sub_81223FC -sub_81223FC: @ 81223FC + thumb_func_start SpriteCB_BouncePartyMonIcon +SpriteCB_BouncePartyMonIcon: @ 81223FC push {r4,lr} adds r4, r0, 0 bl UpdateMonIconFrame @@ -7440,18 +7440,18 @@ _08122422: pop {r4} pop {r0} bx r0 - thumb_func_end sub_81223FC + thumb_func_end SpriteCB_BouncePartyMonIcon - thumb_func_start sub_8122428 -sub_8122428: @ 8122428 + thumb_func_start SpriteCB_UpdatePartyMonIcon +SpriteCB_UpdatePartyMonIcon: @ 8122428 push {lr} bl UpdateMonIconFrame pop {r0} bx r0 - thumb_func_end sub_8122428 + thumb_func_end SpriteCB_UpdatePartyMonIcon - thumb_func_start party_menu_held_item_object -party_menu_held_item_object: @ 8122434 + thumb_func_start CreatePartyMonHeldItemSprite +CreatePartyMonHeldItemSprite: @ 8122434 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -7459,7 +7459,7 @@ party_menu_held_item_object: @ 8122434 bl GetMonData cmp r0, 0 beq _0812245C - ldr r0, _08122464 @ =gUnknown_845A43C + ldr r0, _08122464 @ =sSpriteTemplate_HeldItem ldr r2, [r4, 0x4] ldrb r1, [r2, 0x2] ldrb r2, [r2, 0x3] @@ -7468,17 +7468,17 @@ party_menu_held_item_object: @ 8122434 strb r0, [r4, 0xA] adds r0, r5, 0 adds r1, r4, 0 - bl sub_81224B4 + bl UpdatePartyMonHeldItemSprite _0812245C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08122464: .4byte gUnknown_845A43C - thumb_func_end party_menu_held_item_object +_08122464: .4byte sSpriteTemplate_HeldItem + thumb_func_end CreatePartyMonHeldItemSprite - thumb_func_start party_menu_link_mon_held_item_object -party_menu_link_mon_held_item_object: @ 8122468 + thumb_func_start CreatePartyMonHeldItemSpriteParameterized +CreatePartyMonHeldItemSpriteParameterized: @ 8122468 push {r4,r5,lr} adds r4, r2, 0 lsls r0, 16 @@ -7486,7 +7486,7 @@ party_menu_link_mon_held_item_object: @ 8122468 lsrs r5, r1, 16 cmp r0, 0 beq _081224A4 - ldr r0, _081224AC @ =gUnknown_845A43C + ldr r0, _081224AC @ =sSpriteTemplate_HeldItem ldr r2, [r4, 0x4] ldrb r1, [r2, 0x2] ldrb r2, [r2, 0x3] @@ -7506,18 +7506,18 @@ party_menu_link_mon_held_item_object: @ 8122468 strb r0, [r1, 0x5] adds r0, r5, 0 adds r1, r4, 0 - bl sub_81224D0 + bl ShowOrHideHeldItemSprite _081224A4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_081224AC: .4byte gUnknown_845A43C +_081224AC: .4byte sSpriteTemplate_HeldItem _081224B0: .4byte gSprites - thumb_func_end party_menu_link_mon_held_item_object + thumb_func_end CreatePartyMonHeldItemSpriteParameterized - thumb_func_start sub_81224B4 -sub_81224B4: @ 81224B4 + thumb_func_start UpdatePartyMonHeldItemSprite +UpdatePartyMonHeldItemSprite: @ 81224B4 push {r4,lr} adds r4, r1, 0 movs r1, 0xC @@ -7525,14 +7525,14 @@ sub_81224B4: @ 81224B4 lsls r0, 16 lsrs r0, 16 adds r1, r4, 0 - bl sub_81224D0 + bl ShowOrHideHeldItemSprite pop {r4} pop {r0} bx r0 - thumb_func_end sub_81224B4 + thumb_func_end UpdatePartyMonHeldItemSprite - thumb_func_start sub_81224D0 -sub_81224D0: @ 81224D0 + thumb_func_start ShowOrHideHeldItemSprite +ShowOrHideHeldItemSprite: @ 81224D0 push {r4,lr} adds r4, r1, 0 lsls r0, 16 @@ -7596,24 +7596,24 @@ _08122544: bx r0 .align 2, 0 _0812254C: .4byte gSprites - thumb_func_end sub_81224D0 + thumb_func_end ShowOrHideHeldItemSprite thumb_func_start LoadHeldItemIcons LoadHeldItemIcons: @ 8122550 push {lr} - ldr r0, _08122564 @ =gUnknown_845A42C + ldr r0, _08122564 @ =sSpriteSheet_HeldItem bl LoadSpriteSheet - ldr r0, _08122568 @ =gUnknown_845A434 + ldr r0, _08122568 @ =sSpritePalette_HeldItem bl LoadSpritePalette pop {r0} bx r0 .align 2, 0 -_08122564: .4byte gUnknown_845A42C -_08122568: .4byte gUnknown_845A434 +_08122564: .4byte sSpriteSheet_HeldItem +_08122568: .4byte sSpritePalette_HeldItem thumb_func_end LoadHeldItemIcons - thumb_func_start sub_812256C -sub_812256C: @ 812256C + thumb_func_start DrawHeldItemIconsForTrade +DrawHeldItemIconsForTrade: @ 812256C push {r4-r7,lr} adds r6, r0, 0 adds r7, r1, 0 @@ -7648,7 +7648,7 @@ _08122588: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_8122610 + bl CreateHeldItemSpriteForTrade _081225B4: adds r0, r5, 0x1 lsls r0, 16 @@ -7681,7 +7681,7 @@ _081225CC: lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_8122610 + bl CreateHeldItemSpriteForTrade _081225F8: adds r0, r5, 0x1 lsls r0, 16 @@ -7696,10 +7696,10 @@ _08122604: bx r0 .align 2, 0 _0812260C: .4byte gEnemyParty - thumb_func_end sub_812256C + thumb_func_end DrawHeldItemIconsForTrade - thumb_func_start sub_8122610 -sub_8122610: @ 8122610 + thumb_func_start CreateHeldItemSpriteForTrade +CreateHeldItemSpriteForTrade: @ 8122610 push {r4-r6,lr} mov r6, r9 mov r5, r8 @@ -7720,7 +7720,7 @@ sub_8122610: @ 8122610 add r0, r8 adds r0, 0x43 ldrb r3, [r0] - ldr r0, _0812268C @ =gUnknown_845A43C + ldr r0, _0812268C @ =sSpriteTemplate_HeldItem subs r3, 0x1 lsls r3, 24 lsrs r3, 24 @@ -7741,7 +7741,7 @@ sub_8122610: @ 8122610 movs r0, 0x1C add r8, r0 add r4, r8 - ldr r0, _08122690 @ =sub_8122694 + ldr r0, _08122690 @ =SpriteCB_HeldItem str r0, [r4] strh r6, [r5, 0x3C] adds r0, r5, 0 @@ -7758,12 +7758,12 @@ sub_8122610: @ 8122610 bx r0 .align 2, 0 _08122688: .4byte gSprites -_0812268C: .4byte gUnknown_845A43C -_08122690: .4byte sub_8122694 - thumb_func_end sub_8122610 +_0812268C: .4byte sSpriteTemplate_HeldItem +_08122690: .4byte SpriteCB_HeldItem + thumb_func_end CreateHeldItemSpriteForTrade - thumb_func_start sub_8122694 -sub_8122694: @ 8122694 + thumb_func_start SpriteCB_HeldItem +SpriteCB_HeldItem: @ 8122694 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x3C] @@ -7809,17 +7809,17 @@ _081226E6: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8122694 + thumb_func_end SpriteCB_HeldItem - thumb_func_start party_menu_pokeball_object -party_menu_pokeball_object: @ 81226EC + thumb_func_start CreatePartyMonPokeballSprite +CreatePartyMonPokeballSprite: @ 81226EC push {r4,lr} adds r4, r1, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0812270A - ldr r0, _08122710 @ =gUnknown_845A484 + ldr r0, _08122710 @ =sSpriteTemplate_MenuPokeball ldr r2, [r4, 0x4] ldrb r1, [r2, 0x6] ldrb r2, [r2, 0x7] @@ -7831,17 +7831,17 @@ _0812270A: pop {r0} bx r0 .align 2, 0 -_08122710: .4byte gUnknown_845A484 - thumb_func_end party_menu_pokeball_object +_08122710: .4byte sSpriteTemplate_MenuPokeball + thumb_func_end CreatePartyMonPokeballSprite - thumb_func_start party_menu_link_mon_pokeball_object -party_menu_link_mon_pokeball_object: @ 8122714 + thumb_func_start CreatePartyMonPokeballSpriteParameterized +CreatePartyMonPokeballSpriteParameterized: @ 8122714 push {r4,lr} adds r4, r1, 0 lsls r0, 16 cmp r0, 0 beq _08122744 - ldr r0, _0812274C @ =gUnknown_845A484 + ldr r0, _0812274C @ =sSpriteTemplate_MenuPokeball ldr r2, [r4, 0x4] ldrb r1, [r2, 0x6] ldrb r2, [r2, 0x7] @@ -7864,12 +7864,12 @@ _08122744: pop {r0} bx r0 .align 2, 0 -_0812274C: .4byte gUnknown_845A484 +_0812274C: .4byte sSpriteTemplate_MenuPokeball _08122750: .4byte gSprites - thumb_func_end party_menu_link_mon_pokeball_object + thumb_func_end CreatePartyMonPokeballSpriteParameterized - thumb_func_start sub_8122754 -sub_8122754: @ 8122754 + thumb_func_start CreatePokeballButtonSprite +CreatePokeballButtonSprite: @ 8122754 push {lr} adds r3, r0, 0 adds r2, r1, 0 @@ -7877,7 +7877,7 @@ sub_8122754: @ 8122754 lsrs r3, 24 lsls r2, 24 lsrs r2, 24 - ldr r0, _0812278C @ =gUnknown_845A484 + ldr r0, _0812278C @ =sSpriteTemplate_MenuPokeball adds r1, r3, 0 movs r3, 0x8 bl CreateSprite @@ -7898,12 +7898,12 @@ sub_8122754: @ 8122754 pop {r1} bx r1 .align 2, 0 -_0812278C: .4byte gUnknown_845A484 +_0812278C: .4byte sSpriteTemplate_MenuPokeball _08122790: .4byte gSprites - thumb_func_end sub_8122754 + thumb_func_end CreatePokeballButtonSprite - thumb_func_start sub_8122794 -sub_8122794: @ 8122794 + thumb_func_start CreateSmallPokeballButtonSprite +CreateSmallPokeballButtonSprite: @ 8122794 push {lr} adds r3, r0, 0 adds r2, r1, 0 @@ -7911,7 +7911,7 @@ sub_8122794: @ 8122794 lsrs r3, 24 lsls r2, 24 lsrs r2, 24 - ldr r0, _081227B4 @ =gUnknown_845A4F4 + ldr r0, _081227B4 @ =sSpriteTemplate_MenuPokeballSmall adds r1, r3, 0 movs r3, 0x8 bl CreateSprite @@ -7920,11 +7920,11 @@ sub_8122794: @ 8122794 pop {r1} bx r1 .align 2, 0 -_081227B4: .4byte gUnknown_845A4F4 - thumb_func_end sub_8122794 +_081227B4: .4byte sSpriteTemplate_MenuPokeballSmall + thumb_func_end CreateSmallPokeballButtonSprite - thumb_func_start sub_81227B8 -sub_81227B8: @ 81227B8 + thumb_func_start PartyMenuStartSpriteAnim +PartyMenuStartSpriteAnim: @ 81227B8 push {lr} adds r2, r0, 0 lsls r2, 24 @@ -7941,10 +7941,10 @@ sub_81227B8: @ 81227B8 bx r0 .align 2, 0 _081227D8: .4byte gSprites - thumb_func_end sub_81227B8 + thumb_func_end PartyMenuStartSpriteAnim - thumb_func_start sub_81227DC -sub_81227DC: @ 81227DC + thumb_func_start SpriteCB_BounceConfirmCancelButton +SpriteCB_BounceConfirmCancelButton: @ 81227DC push {r4-r7,lr} mov r7, r8 push {r7} @@ -8007,27 +8007,27 @@ _0812284C: .align 2, 0 _08122858: .4byte gSprites _0812285C: .4byte 0x0000fffc - thumb_func_end sub_81227DC + thumb_func_end SpriteCB_BounceConfirmCancelButton - thumb_func_start sub_8122860 -sub_8122860: @ 8122860 + thumb_func_start LoadPartyMenuPokeballGfx +LoadPartyMenuPokeballGfx: @ 8122860 push {lr} - ldr r0, _08122878 @ =gUnknown_845A474 + ldr r0, _08122878 @ =sSpriteSheet_MenuPokeball bl LoadCompressedSpriteSheet - ldr r0, _0812287C @ =gUnknown_845A4EC + ldr r0, _0812287C @ =sSpriteSheet_MenuPokeballSmall bl LoadCompressedSpriteSheet - ldr r0, _08122880 @ =gUnknown_845A47C + ldr r0, _08122880 @ =sSpritePalette_MenuPokeball bl LoadCompressedSpritePalette pop {r0} bx r0 .align 2, 0 -_08122878: .4byte gUnknown_845A474 -_0812287C: .4byte gUnknown_845A4EC -_08122880: .4byte gUnknown_845A47C - thumb_func_end sub_8122860 +_08122878: .4byte sSpriteSheet_MenuPokeball +_0812287C: .4byte sSpriteSheet_MenuPokeballSmall +_08122880: .4byte sSpritePalette_MenuPokeball + thumb_func_end LoadPartyMenuPokeballGfx - thumb_func_start party_menu_status_condition_object -party_menu_status_condition_object: @ 8122884 + thumb_func_start CreatePartyMonStatusSprite +CreatePartyMonStatusSprite: @ 8122884 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -8035,7 +8035,7 @@ party_menu_status_condition_object: @ 8122884 bl GetMonData cmp r0, 0 beq _081228AC - ldr r0, _081228B4 @ =gUnknown_845A584 + ldr r0, _081228B4 @ =sSpriteTemplate_StatusIcons ldr r2, [r4, 0x4] ldrb r1, [r2, 0x4] ldrb r2, [r2, 0x5] @@ -8044,17 +8044,17 @@ party_menu_status_condition_object: @ 8122884 strb r0, [r4, 0xC] adds r0, r5, 0 adds r1, r4, 0 - bl party_menu_get_status_condition_and_update_object + bl SetPartyMonAilmentGfx _081228AC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_081228B4: .4byte gUnknown_845A584 - thumb_func_end party_menu_status_condition_object +_081228B4: .4byte sSpriteTemplate_StatusIcons + thumb_func_end CreatePartyMonStatusSprite - thumb_func_start party_menu_link_mon_status_condition_object -party_menu_link_mon_status_condition_object: @ 81228B8 + thumb_func_start CreatePartyMonStatusSpriteParameterized +CreatePartyMonStatusSpriteParameterized: @ 81228B8 push {r4,r5,lr} adds r4, r2, 0 lsls r0, 16 @@ -8062,7 +8062,7 @@ party_menu_link_mon_status_condition_object: @ 81228B8 lsrs r5, r1, 24 cmp r0, 0 beq _081228F4 - ldr r0, _081228FC @ =gUnknown_845A584 + ldr r0, _081228FC @ =sSpriteTemplate_StatusIcons ldr r2, [r4, 0x4] ldrb r1, [r2, 0x4] ldrb r2, [r2, 0x5] @@ -8071,7 +8071,7 @@ party_menu_link_mon_status_condition_object: @ 81228B8 strb r0, [r4, 0xC] adds r0, r5, 0 adds r1, r4, 0 - bl party_menu_update_status_condition_object + bl UpdatePartyMonAilmentGfx ldr r2, _08122900 @ =gSprites ldrb r0, [r4, 0xC] lsls r1, r0, 4 @@ -8088,26 +8088,26 @@ _081228F4: pop {r0} bx r0 .align 2, 0 -_081228FC: .4byte gUnknown_845A584 +_081228FC: .4byte sSpriteTemplate_StatusIcons _08122900: .4byte gSprites - thumb_func_end party_menu_link_mon_status_condition_object + thumb_func_end CreatePartyMonStatusSpriteParameterized - thumb_func_start party_menu_get_status_condition_and_update_object -party_menu_get_status_condition_and_update_object: @ 8122904 + thumb_func_start SetPartyMonAilmentGfx +SetPartyMonAilmentGfx: @ 8122904 push {r4,lr} adds r4, r1, 0 - bl sub_81208A4 + bl GetMonAilment lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 - bl party_menu_update_status_condition_object + bl UpdatePartyMonAilmentGfx pop {r4} pop {r0} bx r0 - thumb_func_end party_menu_get_status_condition_and_update_object + thumb_func_end SetPartyMonAilmentGfx - thumb_func_start party_menu_update_status_condition_object -party_menu_update_status_condition_object: @ 812291C + thumb_func_start UpdatePartyMonAilmentGfx +UpdatePartyMonAilmentGfx: @ 812291C push {r4,r5,lr} adds r5, r1, 0 lsls r0, 24 @@ -8158,24 +8158,24 @@ _08122972: bx r0 .align 2, 0 _0812297C: .4byte gSprites - thumb_func_end party_menu_update_status_condition_object + thumb_func_end UpdatePartyMonAilmentGfx - thumb_func_start sub_8122980 -sub_8122980: @ 8122980 + thumb_func_start LoadPartyMenuAilmentGfx +LoadPartyMenuAilmentGfx: @ 8122980 push {lr} - ldr r0, _08122994 @ =gUnknown_845A574 + ldr r0, _08122994 @ =sSpriteSheet_StatusIcons bl LoadCompressedSpriteSheet - ldr r0, _08122998 @ =gUnknown_845A57C + ldr r0, _08122998 @ =sSpritePalette_StatusIcons bl LoadCompressedSpritePalette pop {r0} bx r0 .align 2, 0 -_08122994: .4byte gUnknown_845A574 -_08122998: .4byte gUnknown_845A57C - thumb_func_end sub_8122980 +_08122994: .4byte sSpriteSheet_StatusIcons +_08122998: .4byte sSpritePalette_StatusIcons + thumb_func_end LoadPartyMenuAilmentGfx - thumb_func_start sub_812299C -sub_812299C: @ 812299C + thumb_func_start SetPartyMonSelectionActions +SetPartyMonSelectionActions: @ 812299C push {r4,lr} lsls r1, 24 lsrs r1, 24 @@ -8183,12 +8183,12 @@ sub_812299C: @ 812299C lsrs r2, 24 cmp r2, 0 bne _081229B0 - bl sub_81229FC + bl SetPartyMonFieldSelectionActions b _081229E8 _081229B0: - ldr r4, _081229F0 @ =gUnknown_203B09C + ldr r4, _081229F0 @ =sPartyMenuInternal ldr r1, [r4] - ldr r0, _081229F4 @ =gUnknown_845A760 + ldr r0, _081229F4 @ =sPartyMenuActionCounts adds r0, r2, r0 ldrb r0, [r0] strb r0, [r1, 0x17] @@ -8197,7 +8197,7 @@ _081229B0: ldrb r0, [r0, 0x17] cmp r3, r0 bcs _081229E8 - ldr r1, _081229F8 @ =gUnknown_845A72C + ldr r1, _081229F8 @ =sPartyMenuActions lsls r0, r2, 2 adds r2, r0, r1 _081229CC: @@ -8220,13 +8220,13 @@ _081229E8: pop {r0} bx r0 .align 2, 0 -_081229F0: .4byte gUnknown_203B09C -_081229F4: .4byte gUnknown_845A760 -_081229F8: .4byte gUnknown_845A72C - thumb_func_end sub_812299C +_081229F0: .4byte sPartyMenuInternal +_081229F4: .4byte sPartyMenuActionCounts +_081229F8: .4byte sPartyMenuActions + thumb_func_end SetPartyMonSelectionActions - thumb_func_start sub_81229FC -sub_81229FC: @ 81229FC + thumb_func_start SetPartyMonFieldSelectionActions +SetPartyMonFieldSelectionActions: @ 81229FC push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -8237,7 +8237,7 @@ sub_81229FC: @ 81229FC lsls r1, 24 lsrs r1, 24 mov r10, r1 - ldr r2, _08122A78 @ =gUnknown_203B09C + ldr r2, _08122A78 @ =sPartyMenuInternal ldr r1, [r2] movs r0, 0 strb r0, [r1, 0x17] @@ -8248,7 +8248,7 @@ sub_81229FC: @ 81229FC movs r2, 0 bl AppendToList movs r7, 0 - ldr r0, _08122A7C @ =gUnknown_845A76E + ldr r0, _08122A7C @ =sFieldMoves ldrh r0, [r0] str r0, [sp] mov r0, r9 @@ -8264,7 +8264,7 @@ _08122A34: movs r0, 0x64 mov r6, r10 muls r6, r0 - ldr r5, _08122A7C @ =gUnknown_845A76E + ldr r5, _08122A7C @ =sFieldMoves _08122A48: mov r1, r9 adds r0, r1, r6 @@ -8276,7 +8276,7 @@ _08122A48: ldrh r1, [r1] cmp r0, r1 bne _08122A80 - ldr r0, _08122A78 @ =gUnknown_203B09C + ldr r0, _08122A78 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF @@ -8288,8 +8288,8 @@ _08122A48: bl AppendToList b _08122A90 .align 2, 0 -_08122A78: .4byte gUnknown_203B09C -_08122A7C: .4byte gUnknown_845A76E +_08122A78: .4byte sPartyMenuInternal +_08122A7C: .4byte sFieldMoves _08122A80: adds r0, r4, 0x1 lsls r0, 24 @@ -8310,7 +8310,7 @@ _08122A90: bl GetMonData cmp r0, 0 beq _08122AB6 - ldr r0, _08122AE8 @ =gUnknown_203B09C + ldr r0, _08122AE8 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF @@ -8331,7 +8331,7 @@ _08122AB6: lsls r0, 24 cmp r0, 0 beq _08122AEC - ldr r0, _08122AE8 @ =gUnknown_203B09C + ldr r0, _08122AE8 @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF @@ -8340,9 +8340,9 @@ _08122AB6: bl AppendToList b _08122AFC .align 2, 0 -_08122AE8: .4byte gUnknown_203B09C +_08122AE8: .4byte sPartyMenuInternal _08122AEC: - ldr r0, _08122B1C @ =gUnknown_203B09C + ldr r0, _08122B1C @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF @@ -8350,7 +8350,7 @@ _08122AEC: movs r2, 0x3 bl AppendToList _08122AFC: - ldr r0, _08122B1C @ =gUnknown_203B09C + ldr r0, _08122B1C @ =sPartyMenuInternal ldr r1, [r0] adds r0, r1, 0 adds r0, 0xF @@ -8366,14 +8366,14 @@ _08122AFC: pop {r0} bx r0 .align 2, 0 -_08122B1C: .4byte gUnknown_203B09C - thumb_func_end sub_81229FC +_08122B1C: .4byte sPartyMenuInternal + thumb_func_end SetPartyMonFieldSelectionActions - thumb_func_start sub_8122B20 -sub_8122B20: @ 8122B20 + thumb_func_start GetPartyMenuActionsType +GetPartyMenuActionsType: @ 8122B20 push {lr} adds r2, r0, 0 - ldr r1, _08122B3C @ =gUnknown_203B0A0 + ldr r1, _08122B3C @ =gPartyMenu ldrb r0, [r1, 0x8] lsls r0, 28 lsrs r0, 28 @@ -8386,7 +8386,7 @@ sub_8122B20: @ 8122B20 ldr r0, [r0] mov pc, r0 .align 2, 0 -_08122B3C: .4byte gUnknown_203B0A0 +_08122B3C: .4byte gPartyMenu _08122B40: .4byte _08122B44 .align 2, 0 _08122B44: @@ -8411,14 +8411,14 @@ _08122B70: b _08122BCC _08122B80: adds r0, r2, 0 - bl sub_8127A84 + bl GetPartyMenuActionsTypeInBattle lsls r0, 24 lsrs r1, r0, 24 b _08122BCC _08122B8C: movs r0, 0x9 ldrsb r0, [r3, r0] - bl sub_8127510 + bl GetPartySlotEntryStatus lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -8457,12 +8457,12 @@ _08122BCC: adds r0, r1, 0 pop {r1} bx r1 - thumb_func_end sub_8122B20 + thumb_func_end GetPartyMenuActionsType - thumb_func_start sub_8122BD4 -sub_8122BD4: @ 8122BD4 + thumb_func_start CreateSelectionWindow +CreateSelectionWindow: @ 8122BD4 push {r4-r6,lr} - ldr r5, _08122C20 @ =gUnknown_203B0A0 + ldr r5, _08122C20 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 @@ -8473,40 +8473,40 @@ sub_8122BD4: @ 8122BD4 ldr r1, _08122C28 @ =gStringVar1 adds r0, r4, 0 bl GetMonNickname - ldr r0, _08122C2C @ =gUnknown_203B09C + ldr r0, _08122C2C @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldrb r5, [r5, 0x9] adds r0, r4, 0 - bl sub_8122B20 + bl GetPartyMenuActionsType adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 adds r0, r6, 0 adds r1, r5, 0 - bl sub_812299C + bl SetPartyMonSelectionActions movs r0, 0 - bl sub_8121E5C + bl DisplaySelectionWindow movs r0, 0x16 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_08122C20: .4byte gUnknown_203B0A0 +_08122C20: .4byte gPartyMenu _08122C24: .4byte gPlayerParty _08122C28: .4byte gStringVar1 -_08122C2C: .4byte gUnknown_203B09C - thumb_func_end sub_8122BD4 +_08122C2C: .4byte sPartyMenuInternal + thumb_func_end CreateSelectionWindow - thumb_func_start sub_8122C30 -sub_8122C30: @ 8122C30 + thumb_func_start Task_TryCreateSelectionWindow +Task_TryCreateSelectionWindow: @ 8122C30 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8122BD4 + bl CreateSelectionWindow ldr r1, _08122C54 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -8514,18 +8514,18 @@ sub_8122C30: @ 8122C30 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] - ldr r1, _08122C58 @ =sub_8122C5C + ldr r1, _08122C58 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08122C54: .4byte gTasks -_08122C58: .4byte sub_8122C5C - thumb_func_end sub_8122C30 +_08122C58: .4byte Task_HandleSelectionMenuInput + thumb_func_end Task_TryCreateSelectionWindow - thumb_func_start sub_8122C5C -sub_8122C5C: @ 8122C5C + thumb_func_start Task_HandleSelectionMenuInput +Task_HandleSelectionMenuInput: @ 8122C5C push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -8545,7 +8545,7 @@ sub_8122C5C: @ 8122C5C lsls r0, 3 ldr r1, _08122C98 @ =gTasks+0x8 adds r7, r0, r1 - ldr r0, _08122C9C @ =gUnknown_203B09C + ldr r0, _08122C9C @ =sPartyMenuInternal ldr r0, [r0] ldrb r0, [r0, 0x17] cmp r0, 0x3 @@ -8555,7 +8555,7 @@ sub_8122C5C: @ 8122C5C .align 2, 0 _08122C94: .4byte gPaletteFade _08122C98: .4byte gTasks+0x8 -_08122C9C: .4byte gUnknown_203B09C +_08122C9C: .4byte sPartyMenuInternal _08122CA0: bl Menu_ProcessInput_other _08122CA4: @@ -8568,7 +8568,7 @@ _08122CA4: lsrs r0, 24 cmp r4, r0 beq _08122CCE - ldr r0, _08122D14 @ =gUnknown_203B09C + ldr r0, _08122D14 @ =sPartyMenuInternal ldr r4, [r0] bl Menu_GetCursorPos lsls r0, 24 @@ -8593,11 +8593,11 @@ _08122CCE: bne _08122D1C movs r0, 0x5 bl PlaySE - ldr r4, _08122D14 @ =gUnknown_203B09C + ldr r4, _08122D14 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xE - bl sub_8121CE4 - ldr r2, _08122D18 @ =gUnknown_845A618 + bl PartyMenuRemoveWindow + ldr r2, _08122D18 @ =sCursorOptions ldr r0, [r4] ldrb r1, [r0, 0x17] adds r0, r1 @@ -8610,14 +8610,14 @@ _08122CCE: bl _call_via_r1 b _08122D3E .align 2, 0 -_08122D14: .4byte gUnknown_203B09C -_08122D18: .4byte gUnknown_845A618 +_08122D14: .4byte sPartyMenuInternal +_08122D18: .4byte sCursorOptions _08122D1C: - ldr r4, _08122D44 @ =gUnknown_203B09C + ldr r4, _08122D44 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xE - bl sub_8121CE4 - ldr r1, _08122D48 @ =gUnknown_845A618 + bl PartyMenuRemoveWindow + ldr r1, _08122D48 @ =sCursorOptions ldr r0, [r4] adds r0, 0xF adds r0, r5 @@ -8633,43 +8633,43 @@ _08122D3E: pop {r0} bx r0 .align 2, 0 -_08122D44: .4byte gUnknown_203B09C -_08122D48: .4byte gUnknown_845A618 - thumb_func_end sub_8122C5C +_08122D44: .4byte sPartyMenuInternal +_08122D48: .4byte sCursorOptions + thumb_func_end Task_HandleSelectionMenuInput - thumb_func_start sub_8122D4C -sub_8122D4C: @ 8122D4C + thumb_func_start CursorCB_Summary +CursorCB_Summary: @ 8122D4C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE - ldr r0, _08122D70 @ =gUnknown_203B09C + ldr r0, _08122D70 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _08122D74 @ =sub_8122D78 + ldr r0, _08122D74 @ =CB2_ShowPokemonSummaryScreen str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 -_08122D70: .4byte gUnknown_203B09C -_08122D74: .4byte sub_8122D78 - thumb_func_end sub_8122D4C +_08122D70: .4byte sPartyMenuInternal +_08122D74: .4byte CB2_ShowPokemonSummaryScreen + thumb_func_end CursorCB_Summary - thumb_func_start sub_8122D78 -sub_8122D78: @ 8122D78 + thumb_func_start CB2_ShowPokemonSummaryScreen +CB2_ShowPokemonSummaryScreen: @ 8122D78 push {r4,lr} sub sp, 0x4 - ldr r4, _08122DAC @ =gUnknown_203B0A0 + ldr r4, _08122DAC @ =gPartyMenu ldrb r1, [r4, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _08122D8C - bl pokemon_change_order + bl UpdatePartyToBattleOrder _08122D8C: ldr r0, _08122DB0 @ =gPlayerParty ldrb r1, [r4, 0x9] @@ -8678,7 +8678,7 @@ _08122D8C: subs r2, 0x1 lsls r2, 24 lsrs r2, 24 - ldr r3, _08122DB8 @ =sub_8122DBC + ldr r3, _08122DB8 @ =CB2_ReturnToPartyMenuFromSummaryScreen movs r4, 0 str r4, [sp] bl ShowPokemonSummaryScreen @@ -8687,14 +8687,14 @@ _08122D8C: pop {r0} bx r0 .align 2, 0 -_08122DAC: .4byte gUnknown_203B0A0 +_08122DAC: .4byte gPartyMenu _08122DB0: .4byte gPlayerParty _08122DB4: .4byte gPlayerPartyCount -_08122DB8: .4byte sub_8122DBC - thumb_func_end sub_8122D78 +_08122DB8: .4byte CB2_ReturnToPartyMenuFromSummaryScreen + thumb_func_end CB2_ShowPokemonSummaryScreen - thumb_func_start sub_8122DBC -sub_8122DBC: @ 8122DBC + thumb_func_start CB2_ReturnToPartyMenuFromSummaryScreen +CB2_ReturnToPartyMenuFromSummaryScreen: @ 8122DBC push {lr} sub sp, 0xC ldr r2, _08122DF4 @ =gPaletteFade @@ -8703,7 +8703,7 @@ sub_8122DBC: @ 8122DBC orrs r0, r1 strb r0, [r2, 0x8] bl sub_8138B20 - ldr r3, _08122DF8 @ =gUnknown_203B0A0 + ldr r3, _08122DF8 @ =gPartyMenu strb r0, [r3, 0x9] ldrb r0, [r3, 0x8] lsls r0, 28 @@ -8711,45 +8711,45 @@ sub_8122DBC: @ 8122DBC ldrb r2, [r3, 0xB] movs r1, 0x16 str r1, [sp] - ldr r1, _08122DFC @ =sub_8122C30 + ldr r1, _08122DFC @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08122DF4: .4byte gPaletteFade -_08122DF8: .4byte gUnknown_203B0A0 -_08122DFC: .4byte sub_8122C30 - thumb_func_end sub_8122DBC +_08122DF8: .4byte gPartyMenu +_08122DFC: .4byte Task_TryCreateSelectionWindow + thumb_func_end CB2_ReturnToPartyMenuFromSummaryScreen - thumb_func_start brm_switch -brm_switch: @ 8122E00 + thumb_func_start CursorCB_Switch +CursorCB_Switch: @ 8122E00 push {r4-r6,lr} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 movs r0, 0x5 bl PlaySE - ldr r5, _08122E4C @ =gUnknown_203B0A0 + ldr r5, _08122E4C @ =gPartyMenu movs r0, 0x8 strb r0, [r5, 0xB] - ldr r4, _08122E50 @ =gUnknown_203B09C + ldr r4, _08122E50 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow movs r0, 0x3 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldrb r0, [r5, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot ldrb r0, [r5, 0x9] strb r0, [r5, 0xA] ldr r1, _08122E54 @ =gTasks @@ -8757,20 +8757,20 @@ brm_switch: @ 8122E00 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08122E58 @ =sub_811FB28 + ldr r1, _08122E58 @ =Task_HandleChooseMonInput str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_08122E4C: .4byte gUnknown_203B0A0 -_08122E50: .4byte gUnknown_203B09C +_08122E4C: .4byte gPartyMenu +_08122E50: .4byte sPartyMenuInternal _08122E54: .4byte gTasks -_08122E58: .4byte sub_811FB28 - thumb_func_end brm_switch +_08122E58: .4byte Task_HandleChooseMonInput + thumb_func_end CursorCB_Switch - thumb_func_start sub_8122E5C -sub_8122E5C: @ 8122E5C + thumb_func_start SwitchSelectedMons +SwitchSelectedMons: @ 8122E5C push {r4-r7,lr} sub sp, 0xC lsls r0, 24 @@ -8780,7 +8780,7 @@ sub_8122E5C: @ 8122E5C lsls r0, 3 ldr r1, _08122E84 @ =gTasks+0x8 adds r6, r0, r1 - ldr r4, _08122E88 @ =gUnknown_203B0A0 + ldr r4, _08122E88 @ =gPartyMenu movs r1, 0xA ldrsb r1, [r4, r1] movs r0, 0x9 @@ -8788,17 +8788,17 @@ sub_8122E5C: @ 8122E5C cmp r1, r0 bne _08122E8C adds r0, r7, 0 - bl sub_81235E8 + bl FinishTwoMonAction b _08122FE2 .align 2, 0 _08122E84: .4byte gTasks+0x8 -_08122E88: .4byte gUnknown_203B0A0 +_08122E88: .4byte gPartyMenu _08122E8C: bl sub_812358C add r2, sp, 0x8 movs r0, 0x9 ldrsb r0, [r4, r0] - ldr r1, _08122EE8 @ =gUnknown_203B0B4 + ldr r1, _08122EE8 @ =sPartyMenuBoxes ldr r1, [r1] lsls r0, 4 adds r0, r1 @@ -8835,17 +8835,17 @@ _08122E8C: adds r0, r2, 0 b _08122EEE .align 2, 0 -_08122EE8: .4byte gUnknown_203B0B4 +_08122EE8: .4byte sPartyMenuBoxes _08122EEC: movs r0, 0x1 _08122EEE: strh r0, [r6, 0x14] add r2, sp, 0x8 - ldr r0, _08122F4C @ =gUnknown_203B0A0 + ldr r0, _08122F4C @ =gPartyMenu ldrb r0, [r0, 0xA] lsls r0, 24 asrs r0, 24 - ldr r1, _08122F50 @ =gUnknown_203B0B4 + ldr r1, _08122F50 @ =sPartyMenuBoxes ldr r1, [r1] lsls r0, 4 adds r0, r1 @@ -8882,13 +8882,13 @@ _08122EEE: adds r0, r2, 0 b _08122F56 .align 2, 0 -_08122F4C: .4byte gUnknown_203B0A0 -_08122F50: .4byte gUnknown_203B0B4 +_08122F4C: .4byte gPartyMenu +_08122F50: .4byte sPartyMenuBoxes _08122F54: movs r0, 0x1 _08122F56: strh r0, [r6, 0x16] - ldr r4, _08122FEC @ =gUnknown_203B0C8 + ldr r4, _08122FEC @ =sSlot1TilemapBuffer movs r0, 0x4 ldrsh r1, [r6, r0] movs r2, 0x6 @@ -8897,7 +8897,7 @@ _08122F56: muls r0, r1 bl Alloc str r0, [r4] - ldr r5, _08122FF0 @ =gUnknown_203B0CC + ldr r5, _08122FF0 @ =sSlot2TilemapBuffer movs r0, 0xC ldrsh r1, [r6, r0] movs r2, 0xE @@ -8930,23 +8930,23 @@ _08122F56: add r0, sp, 0x8 ldrb r0, [r0, 0x1] bl ClearWindowTilemap - ldr r4, _08122FF4 @ =gUnknown_203B0A0 + ldr r4, _08122FF4 @ =gPartyMenu movs r0, 0x9 strb r0, [r4, 0xB] ldrb r0, [r4, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot ldrb r0, [r4, 0xA] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot adds r0, r7, 0 - bl sub_81231E8 + bl SlidePartyMenuBoxOneStep ldr r1, _08122FF8 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _08122FFC @ =sub_8123270 + ldr r1, _08122FFC @ =Task_SlideSelectedSlotsOffscreen str r1, [r0] _08122FE2: add sp, 0xC @@ -8954,15 +8954,15 @@ _08122FE2: pop {r0} bx r0 .align 2, 0 -_08122FEC: .4byte gUnknown_203B0C8 -_08122FF0: .4byte gUnknown_203B0CC -_08122FF4: .4byte gUnknown_203B0A0 +_08122FEC: .4byte sSlot1TilemapBuffer +_08122FF0: .4byte sSlot2TilemapBuffer +_08122FF4: .4byte gPartyMenu _08122FF8: .4byte gTasks -_08122FFC: .4byte sub_8123270 - thumb_func_end sub_8122E5C +_08122FFC: .4byte Task_SlideSelectedSlotsOffscreen + thumb_func_end SwitchSelectedMons - thumb_func_start sub_8123000 -sub_8123000: @ 8123000 + thumb_func_start TryMovePartySlot +TryMovePartySlot: @ 8123000 push {r4-r7,lr} mov r7, r8 push {r7} @@ -9020,10 +9020,10 @@ _0812305C: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_8123000 + thumb_func_end TryMovePartySlot - thumb_func_start sub_8123068 -sub_8123068: @ 8123068 + thumb_func_start MoveAndBufferPartySlot +MoveAndBufferPartySlot: @ 8123068 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -9058,7 +9058,7 @@ sub_8123068: @ 8123068 mov r1, r8 add r2, sp, 0x24 adds r3, r5, 0 - bl sub_8123000 + bl TryMovePartySlot lsls r0, 24 cmp r0, 0 beq _08123122 @@ -9087,7 +9087,7 @@ sub_8123068: @ 8123068 mov r1, r8 add r2, sp, 0x24 adds r3, r5, 0 - bl sub_8123000 + bl TryMovePartySlot lsls r0, 24 cmp r0, 0 beq _08123122 @@ -9122,10 +9122,10 @@ _08123122: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8123068 + thumb_func_end MoveAndBufferPartySlot - thumb_func_start sub_8123134 -sub_8123134: @ 8123134 + thumb_func_start MovePartyMenuBoxSprites +MovePartyMenuBoxSprites: @ 8123134 push {r4,lr} ldr r4, _08123184 @ =gSprites ldrb r2, [r0, 0xB] @@ -9167,10 +9167,10 @@ sub_8123134: @ 8123134 bx r0 .align 2, 0 _08123184: .4byte gSprites - thumb_func_end sub_8123134 + thumb_func_end MovePartyMenuBoxSprites - thumb_func_start sub_8123188 -sub_8123188: @ 8123188 + thumb_func_start SlidePartyMenuBoxSpritesOneStep +SlidePartyMenuBoxSpritesOneStep: @ 8123188 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -9183,8 +9183,8 @@ sub_8123188: @ 8123188 ldrsh r0, [r4, r1] cmp r0, 0 beq _081231B6 - ldr r2, _081231E0 @ =gUnknown_203B0B4 - ldr r0, _081231E4 @ =gUnknown_203B0A0 + ldr r2, _081231E0 @ =sPartyMenuBoxes + ldr r0, _081231E4 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] lsls r1, 4 @@ -9192,14 +9192,14 @@ sub_8123188: @ 8123188 adds r0, r1 movs r2, 0x14 ldrsh r1, [r4, r2] - bl sub_8123134 + bl MovePartyMenuBoxSprites _081231B6: movs r1, 0x16 ldrsh r0, [r4, r1] cmp r0, 0 beq _081231D4 - ldr r2, _081231E0 @ =gUnknown_203B0B4 - ldr r0, _081231E4 @ =gUnknown_203B0A0 + ldr r2, _081231E0 @ =sPartyMenuBoxes + ldr r0, _081231E4 @ =gPartyMenu movs r1, 0xA ldrsb r1, [r0, r1] lsls r1, 4 @@ -9207,19 +9207,19 @@ _081231B6: adds r0, r1 movs r2, 0x16 ldrsh r1, [r4, r2] - bl sub_8123134 + bl MovePartyMenuBoxSprites _081231D4: pop {r4} pop {r0} bx r0 .align 2, 0 _081231DC: .4byte gTasks+0x8 -_081231E0: .4byte gUnknown_203B0B4 -_081231E4: .4byte gUnknown_203B0A0 - thumb_func_end sub_8123188 +_081231E0: .4byte sPartyMenuBoxes +_081231E4: .4byte gPartyMenu + thumb_func_end SlidePartyMenuBoxSpritesOneStep - thumb_func_start sub_81231E8 -sub_81231E8: @ 81231E8 + thumb_func_start SlidePartyMenuBoxOneStep +SlidePartyMenuBoxOneStep: @ 81231E8 push {r4-r6,lr} sub sp, 0x8 lsls r0, 24 @@ -9233,7 +9233,7 @@ sub_81231E8: @ 81231E8 ldrsh r0, [r5, r1] cmp r0, 0 beq _08123228 - ldr r0, _08123268 @ =gUnknown_203B0C8 + ldr r0, _08123268 @ =sSlot1TilemapBuffer ldr r0, [r0] ldrh r1, [r5, 0x10] ldrh r2, [r5] @@ -9250,13 +9250,13 @@ sub_81231E8: @ 81231E8 movs r6, 0x14 ldrsh r4, [r5, r6] str r4, [sp, 0x4] - bl sub_8123068 + bl MoveAndBufferPartySlot _08123228: movs r1, 0x16 ldrsh r0, [r5, r1] cmp r0, 0 beq _08123256 - ldr r0, _0812326C @ =gUnknown_203B0CC + ldr r0, _0812326C @ =sSlot2TilemapBuffer ldr r0, [r0] ldrh r1, [r5, 0x12] ldrh r2, [r5, 0x8] @@ -9273,7 +9273,7 @@ _08123228: movs r6, 0x16 ldrsh r4, [r5, r6] str r4, [sp, 0x4] - bl sub_8123068 + bl MoveAndBufferPartySlot _08123256: movs r0, 0 bl ScheduleBgCopyTilemapToVram @@ -9283,12 +9283,12 @@ _08123256: bx r0 .align 2, 0 _08123264: .4byte gTasks+0x8 -_08123268: .4byte gUnknown_203B0C8 -_0812326C: .4byte gUnknown_203B0CC - thumb_func_end sub_81231E8 +_08123268: .4byte sSlot1TilemapBuffer +_0812326C: .4byte sSlot2TilemapBuffer + thumb_func_end SlidePartyMenuBoxOneStep - thumb_func_start sub_8123270 -sub_8123270: @ 8123270 + thumb_func_start Task_SlideSelectedSlotsOffscreen +Task_SlideSelectedSlotsOffscreen: @ 8123270 push {r4-r7,lr} mov r7, r8 push {r7} @@ -9303,9 +9303,9 @@ sub_8123270: @ 8123270 mov r8, r0 adds r6, r7, r0 adds r0, r4, 0 - bl sub_81231E8 + bl SlidePartyMenuBoxOneStep adds r0, r4, 0 - bl sub_8123188 + bl SlidePartyMenuBoxSpritesOneStep ldrh r1, [r6, 0x14] ldrh r2, [r6, 0x10] adds r1, r2 @@ -9339,15 +9339,15 @@ sub_8123270: @ 8123270 ldrsh r0, [r6, r2] negs r0, r0 strh r0, [r6, 0x16] - bl swap_pokemon_and_oams - ldr r4, _08123374 @ =gUnknown_203B0A0 + bl SwitchPartyMon + ldr r4, _08123374 @ =gPartyMenu ldrb r0, [r4, 0x9] - bl sub_811F234 + bl DisplayPartyPokemonData ldrb r0, [r4, 0xA] - bl sub_811F234 + bl DisplayPartyPokemonData movs r0, 0x9 ldrsb r0, [r4, r0] - ldr r5, _08123378 @ =gUnknown_203B0B4 + ldr r5, _08123378 @ =sPartyMenuBoxes ldr r1, [r5] lsls r0, 4 adds r0, r1 @@ -9360,7 +9360,7 @@ sub_8123270: @ 8123270 adds r0, r1 ldrb r0, [r0, 0x8] bl PutWindowTilemap - ldr r0, _0812337C @ =gUnknown_203B0C8 + ldr r0, _0812337C @ =sSlot1TilemapBuffer ldr r1, [r0] ldrb r2, [r6] ldrb r3, [r6, 0x2] @@ -9370,7 +9370,7 @@ sub_8123270: @ 8123270 str r0, [sp, 0x4] movs r0, 0 bl CopyRectIntoAltRect - ldr r0, _08123380 @ =gUnknown_203B0CC + ldr r0, _08123380 @ =sSlot2TilemapBuffer ldr r1, [r0] ldrb r2, [r6, 0x8] ldrb r3, [r6, 0xA] @@ -9397,7 +9397,7 @@ sub_8123270: @ 8123270 mov r0, r8 subs r0, 0x8 adds r0, r7, r0 - ldr r1, _08123384 @ =sub_8123388 + ldr r1, _08123384 @ =Task_SlideSelectedSlotsOnscreen str r1, [r0] _08123362: add sp, 0xC @@ -9408,15 +9408,15 @@ _08123362: bx r0 .align 2, 0 _08123370: .4byte gTasks+0x8 -_08123374: .4byte gUnknown_203B0A0 -_08123378: .4byte gUnknown_203B0B4 -_0812337C: .4byte gUnknown_203B0C8 -_08123380: .4byte gUnknown_203B0CC -_08123384: .4byte sub_8123388 - thumb_func_end sub_8123270 +_08123374: .4byte gPartyMenu +_08123378: .4byte sPartyMenuBoxes +_0812337C: .4byte sSlot1TilemapBuffer +_08123380: .4byte sSlot2TilemapBuffer +_08123384: .4byte Task_SlideSelectedSlotsOnscreen + thumb_func_end Task_SlideSelectedSlotsOffscreen - thumb_func_start sub_8123388 -sub_8123388: @ 8123388 + thumb_func_start Task_SlideSelectedSlotsOnscreen +Task_SlideSelectedSlotsOnscreen: @ 8123388 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 @@ -9426,9 +9426,9 @@ sub_8123388: @ 8123388 ldr r1, _081233E8 @ =gTasks+0x8 adds r4, r0, r1 adds r0, r6, 0 - bl sub_81231E8 + bl SlidePartyMenuBoxOneStep adds r0, r6, 0 - bl sub_8123188 + bl SlidePartyMenuBoxSpritesOneStep movs r1, 0x14 ldrsh r0, [r4, r1] cmp r0, 0 @@ -9437,10 +9437,10 @@ sub_8123388: @ 8123388 ldrsh r0, [r4, r2] cmp r0, 0 bne _081233F4 - ldr r5, _081233EC @ =gUnknown_203B0A0 + ldr r5, _081233EC @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r5, r0] - ldr r4, _081233F0 @ =gUnknown_203B0B4 + ldr r4, _081233F0 @ =sPartyMenuBoxes ldr r1, [r4] lsls r0, 4 adds r0, r1 @@ -9456,12 +9456,12 @@ sub_8123388: @ 8123388 movs r0, 0 bl ScheduleBgCopyTilemapToVram adds r0, r6, 0 - bl sub_81235E8 + bl FinishTwoMonAction b _08123418 .align 2, 0 _081233E8: .4byte gTasks+0x8 -_081233EC: .4byte gUnknown_203B0A0 -_081233F0: .4byte gUnknown_203B0B4 +_081233EC: .4byte gPartyMenu +_081233F0: .4byte sPartyMenuBoxes _081233F4: ldrh r1, [r4, 0x14] ldrh r0, [r4, 0x10] @@ -9486,10 +9486,10 @@ _08123418: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8123388 + thumb_func_end Task_SlideSelectedSlotsOnscreen - thumb_func_start oamt_swap_pos -oamt_swap_pos: @ 8123420 + thumb_func_start SwitchMenuBoxSprites +SwitchMenuBoxSprites: @ 8123420 push {r4-r6,lr} mov r6, r10 mov r5, r9 @@ -9591,14 +9591,14 @@ oamt_swap_pos: @ 8123420 bx r0 .align 2, 0 _081234E8: .4byte gSprites - thumb_func_end oamt_swap_pos + thumb_func_end SwitchMenuBoxSprites - thumb_func_start swap_pokemon_and_oams -swap_pokemon_and_oams: @ 81234EC + thumb_func_start SwitchPartyMon +SwitchPartyMon: @ 81234EC push {r4-r6,lr} sub sp, 0x8 - ldr r1, _08123580 @ =gUnknown_203B0B4 - ldr r2, _08123584 @ =gUnknown_203B0A0 + ldr r1, _08123580 @ =sPartyMenuBoxes + ldr r2, _08123584 @ =gPartyMenu movs r3, 0x9 ldrsb r3, [r2, r3] lsls r0, r3, 4 @@ -9639,31 +9639,31 @@ swap_pokemon_and_oams: @ 81234EC adds r0, 0xB ldr r1, [sp, 0x4] adds r1, 0xB - bl oamt_swap_pos + bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0xA ldr r1, [sp, 0x4] adds r1, 0xA - bl oamt_swap_pos + bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0x9 ldr r1, [sp, 0x4] adds r1, 0x9 - bl oamt_swap_pos + bl SwitchMenuBoxSprites ldr r0, [sp] adds r0, 0xC ldr r1, [sp, 0x4] adds r1, 0xC - bl oamt_swap_pos + bl SwitchMenuBoxSprites add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_08123580: .4byte gUnknown_203B0B4 -_08123584: .4byte gUnknown_203B0A0 +_08123580: .4byte sPartyMenuBoxes +_08123584: .4byte gPartyMenu _08123588: .4byte gPlayerParty - thumb_func_end swap_pokemon_and_oams + thumb_func_end SwitchPartyMon thumb_func_start sub_812358C sub_812358C: @ 812358C @@ -9673,7 +9673,7 @@ sub_812358C: @ 812358C movs r0, 0x4 bl Alloc adds r4, r0, 0 - ldr r0, _081235E0 @ =gUnknown_203B0A0 + ldr r0, _081235E0 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -9704,119 +9704,119 @@ sub_812358C: @ 812358C pop {r0} bx r0 .align 2, 0 -_081235E0: .4byte gUnknown_203B0A0 +_081235E0: .4byte gPartyMenu _081235E4: .4byte gPlayerParty thumb_func_end sub_812358C - thumb_func_start sub_81235E8 -sub_81235E8: @ 81235E8 + thumb_func_start FinishTwoMonAction +FinishTwoMonAction: @ 81235E8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r0, _08123630 @ =gUnknown_203B09C + ldr r0, _08123630 @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xD - bl sub_8121CE4 - ldr r4, _08123634 @ =gUnknown_203B0A0 + bl PartyMenuRemoveWindow + ldr r4, _08123634 @ =gPartyMenu movs r0, 0 strb r0, [r4, 0xB] ldrb r0, [r4, 0x9] movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot ldrb r0, [r4, 0xA] strb r0, [r4, 0x9] ldrb r0, [r4, 0xA] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r1, _08123638 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _0812363C @ =sub_811FB28 + ldr r1, _0812363C @ =Task_HandleChooseMonInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08123630: .4byte gUnknown_203B09C -_08123634: .4byte gUnknown_203B0A0 +_08123630: .4byte sPartyMenuInternal +_08123634: .4byte gPartyMenu _08123638: .4byte gTasks -_0812363C: .4byte sub_811FB28 - thumb_func_end sub_81235E8 +_0812363C: .4byte Task_HandleChooseMonInput + thumb_func_end FinishTwoMonAction - thumb_func_start brm_cancel_1 -brm_cancel_1: @ 8123640 + thumb_func_start CursorCB_Cancel1 +CursorCB_Cancel1: @ 8123640 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x5 bl PlaySE - ldr r4, _08123674 @ =gUnknown_203B09C + ldr r4, _08123674 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 - ldr r0, _08123678 @ =gUnknown_203B0A0 + bl PartyMenuRemoveWindow + ldr r0, _08123678 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x6 bne _0812367C movs r0, 0xF - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08123682 .align 2, 0 -_08123674: .4byte gUnknown_203B09C -_08123678: .4byte gUnknown_203B0A0 +_08123674: .4byte sPartyMenuInternal +_08123678: .4byte gPartyMenu _0812367C: movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage _08123682: ldr r0, _08123698 @ =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _0812369C @ =sub_811FB28 + ldr r0, _0812369C @ =Task_HandleChooseMonInput str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08123698: .4byte gTasks -_0812369C: .4byte sub_811FB28 - thumb_func_end brm_cancel_1 +_0812369C: .4byte Task_HandleChooseMonInput + thumb_func_end CursorCB_Cancel1 - thumb_func_start sub_81236A0 -sub_81236A0: @ 81236A0 + thumb_func_start CursorCB_Item +CursorCB_Item: @ 81236A0 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x5 bl PlaySE - ldr r4, _081236F0 @ =gUnknown_203B09C + ldr r4, _081236F0 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, _081236F4 @ =gPlayerParty - ldr r1, _081236F8 @ =gUnknown_203B0A0 + ldr r1, _081236F8 @ =gPartyMenu ldrb r1, [r1, 0x9] movs r2, 0x8 - bl sub_812299C + bl SetPartyMonSelectionActions movs r0, 0x1 - bl sub_8121E5C + bl DisplaySelectionWindow movs r0, 0x19 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r1, _081236FC @ =gTasks lsls r0, r5, 2 adds r0, r5 @@ -9824,56 +9824,56 @@ sub_81236A0: @ 81236A0 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] - ldr r1, _08123700 @ =sub_8122C5C + ldr r1, _08123700 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_081236F0: .4byte gUnknown_203B09C +_081236F0: .4byte sPartyMenuInternal _081236F4: .4byte gPlayerParty -_081236F8: .4byte gUnknown_203B0A0 +_081236F8: .4byte gPartyMenu _081236FC: .4byte gTasks -_08123700: .4byte sub_8122C5C - thumb_func_end sub_81236A0 +_08123700: .4byte Task_HandleSelectionMenuInput + thumb_func_end CursorCB_Item - thumb_func_start sub_8123704 -sub_8123704: @ 8123704 + thumb_func_start CursorCB_Give +CursorCB_Give: @ 8123704 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE - ldr r0, _08123728 @ =gUnknown_203B09C + ldr r0, _08123728 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _0812372C @ =sub_8123730 + ldr r0, _0812372C @ =CB2_SelectBagItemToGive str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 -_08123728: .4byte gUnknown_203B09C -_0812372C: .4byte sub_8123730 - thumb_func_end sub_8123704 +_08123728: .4byte sPartyMenuInternal +_0812372C: .4byte CB2_SelectBagItemToGive + thumb_func_end CursorCB_Give - thumb_func_start sub_8123730 -sub_8123730: @ 8123730 + thumb_func_start CB2_SelectBagItemToGive +CB2_SelectBagItemToGive: @ 8123730 push {lr} - ldr r2, _08123740 @ =c2_8123744 + ldr r2, _08123740 @ =CB2_GiveHoldItem movs r0, 0x1 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 .align 2, 0 -_08123740: .4byte c2_8123744 - thumb_func_end sub_8123730 +_08123740: .4byte CB2_GiveHoldItem + thumb_func_end CB2_SelectBagItemToGive - thumb_func_start c2_8123744 -c2_8123744: @ 8123744 + thumb_func_start CB2_GiveHoldItem +CB2_GiveHoldItem: @ 8123744 push {r4-r7,lr} mov r7, r8 push {r7} @@ -9882,24 +9882,24 @@ c2_8123744: @ 8123744 ldrh r0, [r6] cmp r0, 0 bne _08123778 - ldr r3, _08123770 @ =gUnknown_203B0A0 + ldr r3, _08123770 @ =gPartyMenu ldrb r0, [r3, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r3, 0xB] movs r1, 0x7F str r1, [sp] - ldr r1, _08123774 @ =sub_8122C30 + ldr r1, _08123774 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] b _081237AE .align 2, 0 _0812376C: .4byte gSpecialVar_ItemId -_08123770: .4byte gUnknown_203B0A0 -_08123774: .4byte sub_8122C30 +_08123770: .4byte gPartyMenu +_08123774: .4byte Task_TryCreateSelectionWindow _08123778: - ldr r4, _081237BC @ =gUnknown_203B0D8 - ldr r5, _081237C0 @ =gUnknown_203B0A0 + ldr r4, _081237BC @ =sPartyMenuItemId + ldr r5, _081237C0 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r5, r0] movs r1, 0x64 @@ -9921,20 +9921,20 @@ _08123778: ldrb r2, [r5, 0xB] movs r1, 0x7F str r1, [sp] - ldr r1, _081237C8 @ =sub_81238A4 + ldr r1, _081237C8 @ =Task_SwitchHoldItemsPrompt str r1, [sp, 0x4] ldr r1, [r5] _081237AE: str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu b _08123814 .align 2, 0 -_081237BC: .4byte gUnknown_203B0D8 -_081237C0: .4byte gUnknown_203B0A0 +_081237BC: .4byte sPartyMenuItemId +_081237C0: .4byte gPartyMenu _081237C4: .4byte gPlayerParty -_081237C8: .4byte sub_81238A4 +_081237C8: .4byte Task_SwitchHoldItemsPrompt _081237CC: ldrh r0, [r6] bl ItemIsMail @@ -9951,8 +9951,8 @@ _081237CC: adds r0, r1, 0 adds r0, r7 ldrh r1, [r6] - bl sub_81205C8 - bl sub_8123A80 + bl GiveItemToMon + bl CB2_WriteMailToGiveMon b _08123814 _081237F8: ldrb r0, [r5, 0x8] @@ -9961,13 +9961,13 @@ _081237F8: ldrb r2, [r5, 0xB] movs r1, 0x7F str r1, [sp] - ldr r1, _08123820 @ =sub_8123824 + ldr r1, _08123820 @ =Task_GiveHoldItem str r1, [sp, 0x4] ldr r1, [r5] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu _08123814: add sp, 0xC pop {r3} @@ -9976,11 +9976,11 @@ _08123814: pop {r0} bx r0 .align 2, 0 -_08123820: .4byte sub_8123824 - thumb_func_end c2_8123744 +_08123820: .4byte Task_GiveHoldItem + thumb_func_end CB2_GiveHoldItem - thumb_func_start sub_8123824 -sub_8123824: @ 8123824 + thumb_func_start Task_GiveHoldItem +Task_GiveHoldItem: @ 8123824 push {r4-r7,lr} mov r7, r8 push {r7} @@ -9994,7 +9994,7 @@ sub_8123824: @ 8123824 bne _08123880 ldr r0, _08123890 @ =gSpecialVar_ItemId ldrh r4, [r0] - ldr r0, _08123894 @ =gUnknown_203B0A0 + ldr r0, _08123894 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -10006,14 +10006,14 @@ sub_8123824: @ 8123824 adds r1, r4, 0 movs r2, 0 movs r3, 0 - bl sub_8120420 + bl DisplayGaveHeldItemMessage mov r1, r8 movs r0, 0x9 ldrsb r0, [r1, r0] muls r0, r6 adds r0, r5 adds r1, r4, 0 - bl sub_81205C8 + bl GiveItemToMon adds r0, r4, 0 movs r1, 0x1 bl RemoveBagItem @@ -10022,7 +10022,7 @@ sub_8123824: @ 8123824 adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _081238A0 @ =sub_8123BF0 + ldr r1, _081238A0 @ =Task_UpdateHeldItemSprite str r1, [r0] _08123880: pop {r3} @@ -10033,14 +10033,14 @@ _08123880: .align 2, 0 _0812388C: .4byte gPaletteFade _08123890: .4byte gSpecialVar_ItemId -_08123894: .4byte gUnknown_203B0A0 +_08123894: .4byte gPartyMenu _08123898: .4byte gPlayerParty _0812389C: .4byte gTasks -_081238A0: .4byte sub_8123BF0 - thumb_func_end sub_8123824 +_081238A0: .4byte Task_UpdateHeldItemSprite + thumb_func_end Task_GiveHoldItem - thumb_func_start sub_81238A4 -sub_81238A4: @ 81238A4 + thumb_func_start Task_SwitchHoldItemsPrompt +Task_SwitchHoldItemsPrompt: @ 81238A4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -10050,23 +10050,23 @@ sub_81238A4: @ 81238A4 ands r0, r1 cmp r0, 0 bne _081238DC - ldr r0, _081238E8 @ =gUnknown_203B0A0 + ldr r0, _081238E8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r0, r1 ldr r1, _081238EC @ =gPlayerParty adds r0, r1 - ldr r1, _081238F0 @ =gUnknown_203B0D8 + ldr r1, _081238F0 @ =sPartyMenuItemId ldrh r1, [r1] movs r2, 0x1 - bl sub_812050C + bl DisplayAlreadyHoldingItemSwitchMessage ldr r1, _081238F4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _081238F8 @ =sub_81238FC + ldr r1, _081238F8 @ =Task_SwitchItemsYesNo str r1, [r0] _081238DC: pop {r4} @@ -10074,30 +10074,30 @@ _081238DC: bx r0 .align 2, 0 _081238E4: .4byte gPaletteFade -_081238E8: .4byte gUnknown_203B0A0 +_081238E8: .4byte gPartyMenu _081238EC: .4byte gPlayerParty -_081238F0: .4byte gUnknown_203B0D8 +_081238F0: .4byte sPartyMenuItemId _081238F4: .4byte gTasks -_081238F8: .4byte sub_81238FC - thumb_func_end sub_81238A4 +_081238F8: .4byte Task_SwitchItemsYesNo + thumb_func_end Task_SwitchHoldItemsPrompt - thumb_func_start sub_81238FC -sub_81238FC: @ 81238FC + thumb_func_start Task_SwitchItemsYesNo +Task_SwitchItemsYesNo: @ 81238FC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123920 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08123928 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _0812392C @ =sub_8123930 + ldr r0, _0812392C @ =Task_HandleSwitchItemsYesNoInput str r0, [r1] _08123920: pop {r4} @@ -10105,11 +10105,11 @@ _08123920: bx r0 .align 2, 0 _08123928: .4byte gTasks -_0812392C: .4byte sub_8123930 - thumb_func_end sub_81238FC +_0812392C: .4byte Task_HandleSwitchItemsYesNoInput + thumb_func_end Task_SwitchItemsYesNo - thumb_func_start sub_8123930 -sub_8123930: @ 8123930 + thumb_func_start Task_HandleSwitchItemsYesNoInput +Task_HandleSwitchItemsYesNoInput: @ 8123930 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -10134,7 +10134,7 @@ _08123956: ldrh r0, [r5] movs r1, 0x1 bl RemoveBagItem - ldr r6, _0812399C @ =gUnknown_203B0D8 + ldr r6, _0812399C @ =sPartyMenuItemId ldrh r0, [r6] movs r1, 0x1 bl AddBagItem @@ -10145,31 +10145,31 @@ _08123956: movs r1, 0x1 bl AddBagItem ldrh r0, [r6] - bl sub_8120658 + bl BufferBagFullCantTakeItemMessage ldr r0, _081239A0 @ =gStringVar4 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _081239A4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _081239A8 @ =sub_81203B8 + ldr r1, _081239A8 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08123A40 .align 2, 0 _08123998: .4byte gSpecialVar_ItemId -_0812399C: .4byte gUnknown_203B0D8 +_0812399C: .4byte sPartyMenuItemId _081239A0: .4byte gStringVar4 _081239A4: .4byte gTasks -_081239A8: .4byte sub_81203B8 +_081239A8: .4byte Task_ReturnToChooseMonAfterText _081239AC: ldrh r0, [r5] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _081239EC - ldr r0, _081239DC @ =gUnknown_203B0A0 + ldr r0, _081239DC @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10177,22 +10177,22 @@ _081239AC: ldr r1, _081239E0 @ =gPlayerParty adds r0, r1 ldrh r1, [r5] - bl sub_81205C8 + bl GiveItemToMon ldr r1, _081239E4 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _081239E8 @ =sub_8123A50 + ldr r1, _081239E8 @ =Task_WriteMailToGiveMonAfterText str r1, [r0] b _08123A40 .align 2, 0 -_081239DC: .4byte gUnknown_203B0A0 +_081239DC: .4byte gPartyMenu _081239E0: .4byte gPlayerParty _081239E4: .4byte gTasks -_081239E8: .4byte sub_8123A50 +_081239E8: .4byte Task_WriteMailToGiveMonAfterText _081239EC: - ldr r0, _08123A1C @ =gUnknown_203B0A0 + ldr r0, _08123A1C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10200,24 +10200,24 @@ _081239EC: ldr r1, _08123A20 @ =gPlayerParty adds r0, r1 ldrh r1, [r5] - bl sub_81205C8 + bl GiveItemToMon ldrh r0, [r5] ldrh r1, [r6] movs r2, 0x1 - bl sub_8120558 + bl DisplaySwitchedHeldItemMessage ldr r1, _08123A24 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08123A28 @ =sub_8123BF0 + ldr r1, _08123A28 @ =Task_UpdateHeldItemSprite str r1, [r0] b _08123A40 .align 2, 0 -_08123A1C: .4byte gUnknown_203B0A0 +_08123A1C: .4byte gPartyMenu _08123A20: .4byte gPlayerParty _08123A24: .4byte gTasks -_08123A28: .4byte sub_8123BF0 +_08123A28: .4byte Task_UpdateHeldItemSprite _08123A2C: movs r0, 0x5 bl PlaySE @@ -10227,7 +10227,7 @@ _08123A32: adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08123A4C @ =sub_81203B8 + ldr r0, _08123A4C @ =Task_ReturnToChooseMonAfterText str r0, [r1] _08123A40: pop {r4-r6} @@ -10235,38 +10235,38 @@ _08123A40: bx r0 .align 2, 0 _08123A48: .4byte gTasks -_08123A4C: .4byte sub_81203B8 - thumb_func_end sub_8123930 +_08123A4C: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end Task_HandleSwitchItemsYesNoInput - thumb_func_start sub_8123A50 -sub_8123A50: @ 8123A50 + thumb_func_start Task_WriteMailToGiveMonAfterText +Task_WriteMailToGiveMonAfterText: @ 8123A50 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123A70 - ldr r0, _08123A78 @ =gUnknown_203B09C + ldr r0, _08123A78 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _08123A7C @ =sub_8123A80 + ldr r0, _08123A7C @ =CB2_WriteMailToGiveMon str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _08123A70: pop {r4} pop {r0} bx r0 .align 2, 0 -_08123A78: .4byte gUnknown_203B09C -_08123A7C: .4byte sub_8123A80 - thumb_func_end sub_8123A50 +_08123A78: .4byte sPartyMenuInternal +_08123A7C: .4byte CB2_WriteMailToGiveMon + thumb_func_end Task_WriteMailToGiveMonAfterText - thumb_func_start sub_8123A80 -sub_8123A80: @ 8123A80 + thumb_func_start CB2_WriteMailToGiveMon +CB2_WriteMailToGiveMon: @ 8123A80 push {lr} - ldr r0, _08123AB8 @ =gUnknown_203B0A0 + ldr r0, _08123AB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10285,26 +10285,26 @@ sub_8123A80: @ 8123A80 adds r2, r0 ldr r1, [r1] adds r1, r2 - ldr r2, _08123AC8 @ =sub_8123ACC + ldr r2, _08123AC8 @ =CB2_ReturnToPartyMenuFromWritingMail movs r0, 0x4 - bl sub_80FEBAC + bl DoEasyChatScreen pop {r0} bx r0 .align 2, 0 -_08123AB8: .4byte gUnknown_203B0A0 +_08123AB8: .4byte gPartyMenu _08123ABC: .4byte gPlayerParty _08123AC0: .4byte gSaveBlock1Ptr _08123AC4: .4byte 0x00002cd0 -_08123AC8: .4byte sub_8123ACC - thumb_func_end sub_8123A80 +_08123AC8: .4byte CB2_ReturnToPartyMenuFromWritingMail + thumb_func_end CB2_WriteMailToGiveMon - thumb_func_start sub_8123ACC -sub_8123ACC: @ 8123ACC + thumb_func_start CB2_ReturnToPartyMenuFromWritingMail +CB2_ReturnToPartyMenuFromWritingMail: @ 8123ACC push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC - ldr r6, _08123B38 @ =gUnknown_203B0A0 + ldr r6, _08123B38 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 @@ -10323,7 +10323,7 @@ sub_8123ACC: @ 8123ACC bne _08123B4C adds r0, r5, 0 bl TakeMailFromMon - ldr r4, _08123B44 @ =gUnknown_203B0D8 + ldr r4, _08123B44 @ =sPartyMenuItemId adds r0, r5, 0 movs r1, 0xC adds r2, r4, 0 @@ -10339,20 +10339,20 @@ sub_8123ACC: @ 8123ACC lsrs r0, 28 ldrb r2, [r6, 0xB] str r7, [sp] - ldr r1, _08123B48 @ =sub_8122C30 + ldr r1, _08123B48 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu b _08123B68 .align 2, 0 -_08123B38: .4byte gUnknown_203B0A0 +_08123B38: .4byte gPartyMenu _08123B3C: .4byte gPlayerParty _08123B40: .4byte gSpecialVar_Result -_08123B44: .4byte gUnknown_203B0D8 -_08123B48: .4byte sub_8122C30 +_08123B44: .4byte sPartyMenuItemId +_08123B48: .4byte Task_TryCreateSelectionWindow _08123B4C: ldrb r0, [r6, 0x8] lsls r0, 28 @@ -10360,13 +10360,13 @@ _08123B4C: ldrb r2, [r6, 0xB] movs r1, 0 str r1, [sp] - ldr r1, _08123B74 @ =sub_8123B78 + ldr r1, _08123B74 @ =Task_DisplayGaveMailFromPartyMessage str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu _08123B68: add sp, 0xC pop {r3} @@ -10375,11 +10375,11 @@ _08123B68: pop {r0} bx r0 .align 2, 0 -_08123B74: .4byte sub_8123B78 - thumb_func_end sub_8123ACC +_08123B74: .4byte Task_DisplayGaveMailFromPartyMessage + thumb_func_end CB2_ReturnToPartyMenuFromWritingMail - thumb_func_start sub_8123B78 -sub_8123B78: @ 8123B78 + thumb_func_start Task_DisplayGaveMailFromPartyMessage +Task_DisplayGaveMailFromPartyMessage: @ 8123B78 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -10389,11 +10389,11 @@ sub_8123B78: @ 8123B78 ands r0, r1 cmp r0, 0 bne _08123BDE - ldr r1, _08123BB4 @ =gUnknown_203B0D8 + ldr r1, _08123BB4 @ =sPartyMenuItemId ldrh r0, [r1] cmp r0, 0 bne _08123BC4 - ldr r0, _08123BB8 @ =gUnknown_203B0A0 + ldr r0, _08123BB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10404,12 +10404,12 @@ sub_8123B78: @ 8123B78 ldrh r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8120420 + bl DisplayGaveHeldItemMessage b _08123BD0 .align 2, 0 _08123BB0: .4byte gPaletteFade -_08123BB4: .4byte gUnknown_203B0D8 -_08123BB8: .4byte gUnknown_203B0A0 +_08123BB4: .4byte sPartyMenuItemId +_08123BB8: .4byte gPartyMenu _08123BBC: .4byte gPlayerParty _08123BC0: .4byte gSpecialVar_ItemId _08123BC4: @@ -10417,14 +10417,14 @@ _08123BC4: ldrh r0, [r0] ldrh r1, [r1] movs r2, 0 - bl sub_8120558 + bl DisplaySwitchedHeldItemMessage _08123BD0: ldr r0, _08123BE8 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08123BEC @ =sub_8123BF0 + ldr r0, _08123BEC @ =Task_UpdateHeldItemSprite str r0, [r1] _08123BDE: pop {r4} @@ -10433,17 +10433,17 @@ _08123BDE: .align 2, 0 _08123BE4: .4byte gSpecialVar_ItemId _08123BE8: .4byte gTasks -_08123BEC: .4byte sub_8123BF0 - thumb_func_end sub_8123B78 +_08123BEC: .4byte Task_UpdateHeldItemSprite + thumb_func_end Task_DisplayGaveMailFromPartyMessage - thumb_func_start sub_8123BF0 -sub_8123BF0: @ 8123BF0 + thumb_func_start Task_UpdateHeldItemSprite +Task_UpdateHeldItemSprite: @ 8123BF0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _08123C2C @ =gUnknown_203B0A0 + ldr r0, _08123C2C @ =gPartyMenu ldrb r4, [r0, 0x9] - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -10454,29 +10454,29 @@ sub_8123BF0: @ 8123BF0 muls r0, r2 ldr r1, _08123C30 @ =gPlayerParty adds r0, r1 - ldr r1, _08123C34 @ =gUnknown_203B0B4 + ldr r1, _08123C34 @ =sPartyMenuBoxes lsls r2, 4 ldr r1, [r1] adds r1, r2 - bl sub_81224B4 + bl UpdatePartyMonHeldItemSprite adds r0, r5, 0 - bl sub_81203B8 + bl Task_ReturnToChooseMonAfterText _08123C24: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08123C2C: .4byte gUnknown_203B0A0 +_08123C2C: .4byte gPartyMenu _08123C30: .4byte gPlayerParty -_08123C34: .4byte gUnknown_203B0B4 - thumb_func_end sub_8123BF0 +_08123C34: .4byte sPartyMenuBoxes + thumb_func_end Task_UpdateHeldItemSprite - thumb_func_start sub_8123C38 -sub_8123C38: @ 8123C38 + thumb_func_start CursorCB_TakeItem +CursorCB_TakeItem: @ 8123C38 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _08123C90 @ =gUnknown_203B0A0 + ldr r0, _08123C90 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10490,15 +10490,15 @@ sub_8123C38: @ 8123C38 lsrs r6, r0, 16 movs r0, 0x5 bl PlaySE - ldr r4, _08123C98 @ =gUnknown_203B09C + ldr r4, _08123C98 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow adds r0, r5, 0 - bl sub_8120610 + bl TryTakeMonItem lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -10508,12 +10508,12 @@ sub_8123C38: @ 8123C38 adds r0, r5, 0 adds r1, r6, 0 movs r2, 0x1 - bl sub_81204AC + bl DisplayTookHeldItemMessage b _08123CCE .align 2, 0 -_08123C90: .4byte gUnknown_203B0A0 +_08123C90: .4byte gPartyMenu _08123C94: .4byte gPlayerParty -_08123C98: .4byte gUnknown_203B09C +_08123C98: .4byte sPartyMenuInternal _08123C9C: ldr r1, _08123CB4 @ =gStringVar1 adds r0, r5, 0 @@ -10530,11 +10530,11 @@ _08123CB8: .4byte gStringVar4 _08123CBC: .4byte gUnknown_8416C8F _08123CC0: adds r0, r6, 0 - bl sub_8120658 + bl BufferBagFullCantTakeItemMessage ldr r0, _08123CE8 @ =gStringVar4 _08123CC8: movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage _08123CCE: movs r0, 0x2 bl ScheduleBgCopyTilemapToVram @@ -10543,7 +10543,7 @@ _08123CCE: adds r1, r7 lsls r1, 3 adds r1, r0 - ldr r0, _08123CF0 @ =sub_8123BF0 + ldr r0, _08123CF0 @ =Task_UpdateHeldItemSprite str r0, [r1] pop {r4-r7} pop {r0} @@ -10551,33 +10551,33 @@ _08123CCE: .align 2, 0 _08123CE8: .4byte gStringVar4 _08123CEC: .4byte gTasks -_08123CF0: .4byte sub_8123BF0 - thumb_func_end sub_8123C38 +_08123CF0: .4byte Task_UpdateHeldItemSprite + thumb_func_end CursorCB_TakeItem - thumb_func_start sub_8123CF4 -sub_8123CF4: @ 8123CF4 + thumb_func_start CursorCB_Mail +CursorCB_Mail: @ 8123CF4 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x5 bl PlaySE - ldr r4, _08123D44 @ =gUnknown_203B09C + ldr r4, _08123D44 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, _08123D48 @ =gPlayerParty - ldr r1, _08123D4C @ =gUnknown_203B0A0 + ldr r1, _08123D4C @ =gPartyMenu ldrb r1, [r1, 0x9] movs r2, 0x9 - bl sub_812299C + bl SetPartyMonSelectionActions movs r0, 0x2 - bl sub_8121E5C + bl DisplaySelectionWindow movs r0, 0x1A - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r1, _08123D50 @ =gTasks lsls r0, r5, 2 adds r0, r5 @@ -10585,45 +10585,45 @@ sub_8123CF4: @ 8123CF4 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] - ldr r1, _08123D54 @ =sub_8122C5C + ldr r1, _08123D54 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08123D44: .4byte gUnknown_203B09C +_08123D44: .4byte sPartyMenuInternal _08123D48: .4byte gPlayerParty -_08123D4C: .4byte gUnknown_203B0A0 +_08123D4C: .4byte gPartyMenu _08123D50: .4byte gTasks -_08123D54: .4byte sub_8122C5C - thumb_func_end sub_8123CF4 +_08123D54: .4byte Task_HandleSelectionMenuInput + thumb_func_end CursorCB_Mail - thumb_func_start sub_8123D58 -sub_8123D58: @ 8123D58 + thumb_func_start CursorCB_Read +CursorCB_Read: @ 8123D58 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE - ldr r0, _08123D7C @ =gUnknown_203B09C + ldr r0, _08123D7C @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _08123D80 @ =sub_8123D84 + ldr r0, _08123D80 @ =CB2_ReadHeldMail str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 -_08123D7C: .4byte gUnknown_203B09C -_08123D80: .4byte sub_8123D84 - thumb_func_end sub_8123D58 +_08123D7C: .4byte sPartyMenuInternal +_08123D80: .4byte CB2_ReadHeldMail + thumb_func_end CursorCB_Read - thumb_func_start sub_8123D84 -sub_8123D84: @ 8123D84 + thumb_func_start CB2_ReadHeldMail +CB2_ReadHeldMail: @ 8123D84 push {lr} - ldr r0, _08123DB8 @ =gUnknown_203B0A0 + ldr r0, _08123DB8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10640,21 +10640,21 @@ sub_8123D84: @ 8123D84 adds r1, r0 ldr r0, [r2] adds r0, r1 - ldr r1, _08123DC8 @ =sub_8123DCC + ldr r1, _08123DC8 @ =CB2_ReturnToPartyMenuFromReadingMail movs r2, 0x1 bl ReadMail pop {r0} bx r0 .align 2, 0 -_08123DB8: .4byte gUnknown_203B0A0 +_08123DB8: .4byte gPartyMenu _08123DBC: .4byte gPlayerParty _08123DC0: .4byte gSaveBlock1Ptr _08123DC4: .4byte 0x00002cd0 -_08123DC8: .4byte sub_8123DCC - thumb_func_end sub_8123D84 +_08123DC8: .4byte CB2_ReturnToPartyMenuFromReadingMail + thumb_func_end CB2_ReadHeldMail - thumb_func_start sub_8123DCC -sub_8123DCC: @ 8123DCC + thumb_func_start CB2_ReturnToPartyMenuFromReadingMail +CB2_ReturnToPartyMenuFromReadingMail: @ 8123DCC push {lr} sub sp, 0xC ldr r2, _08123E00 @ =gPaletteFade @@ -10662,81 +10662,81 @@ sub_8123DCC: @ 8123DCC movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x8] - ldr r3, _08123E04 @ =gUnknown_203B0A0 + ldr r3, _08123E04 @ =gPartyMenu ldrb r0, [r3, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r2, [r3, 0xB] movs r1, 0x16 str r1, [sp] - ldr r1, _08123E08 @ =sub_8122C30 + ldr r1, _08123E08 @ =Task_TryCreateSelectionWindow str r1, [sp, 0x4] ldr r1, [r3] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08123E00: .4byte gPaletteFade -_08123E04: .4byte gUnknown_203B0A0 -_08123E08: .4byte sub_8122C30 - thumb_func_end sub_8123DCC +_08123E04: .4byte gPartyMenu +_08123E08: .4byte Task_TryCreateSelectionWindow + thumb_func_end CB2_ReturnToPartyMenuFromReadingMail - thumb_func_start brm_take_2 -brm_take_2: @ 8123E0C + thumb_func_start CursorCB_TakeMail +CursorCB_TakeMail: @ 8123E0C push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 bl PlaySE - ldr r5, _08123E48 @ =gUnknown_203B09C + ldr r5, _08123E48 @ =sPartyMenuInternal ldr r0, [r5] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r5] adds r0, 0xC - bl sub_8121CE4 - ldr r0, _08123E4C @ =gUnknown_8416B64 + bl PartyMenuRemoveWindow + ldr r0, _08123E4C @ =gText_SendMailToPC movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08123E50 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08123E54 @ =sub_8123E58 + ldr r1, _08123E54 @ =Task_SendMailToPCYesNo str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08123E48: .4byte gUnknown_203B09C -_08123E4C: .4byte gUnknown_8416B64 +_08123E48: .4byte sPartyMenuInternal +_08123E4C: .4byte gText_SendMailToPC _08123E50: .4byte gTasks -_08123E54: .4byte sub_8123E58 - thumb_func_end brm_take_2 +_08123E54: .4byte Task_SendMailToPCYesNo + thumb_func_end CursorCB_TakeMail - thumb_func_start sub_8123E58 -sub_8123E58: @ 8123E58 + thumb_func_start Task_SendMailToPCYesNo +Task_SendMailToPCYesNo: @ 8123E58 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123E7C - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08123E84 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08123E88 @ =sub_8123E8C + ldr r0, _08123E88 @ =Task_HandleSendMailToPCYesNoInput str r0, [r1] _08123E7C: pop {r4} @@ -10744,11 +10744,11 @@ _08123E7C: bx r0 .align 2, 0 _08123E84: .4byte gTasks -_08123E88: .4byte sub_8123E8C - thumb_func_end sub_8123E58 +_08123E88: .4byte Task_HandleSendMailToPCYesNoInput + thumb_func_end Task_SendMailToPCYesNo - thumb_func_start sub_8123E8C -sub_8123E8C: @ 8123E8C + thumb_func_start Task_HandleSendMailToPCYesNoInput +Task_HandleSendMailToPCYesNoInput: @ 8123E8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -10769,7 +10769,7 @@ _08123EAC: beq _08123F22 b _08123F38 _08123EB2: - ldr r0, _08123EE4 @ =gUnknown_203B0A0 + ldr r0, _08123EE4 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -10781,50 +10781,50 @@ _08123EB2: lsrs r0, 24 cmp r0, 0xFF beq _08123EF8 - ldr r0, _08123EEC @ =gUnknown_8416B86 + ldr r0, _08123EEC @ =gText_MailSentToPC movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08123EF0 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08123EF4 @ =sub_8123BF0 + ldr r1, _08123EF4 @ =Task_UpdateHeldItemSprite b _08123F36 .align 2, 0 -_08123EE4: .4byte gUnknown_203B0A0 +_08123EE4: .4byte gPartyMenu _08123EE8: .4byte gPlayerParty -_08123EEC: .4byte gUnknown_8416B86 +_08123EEC: .4byte gText_MailSentToPC _08123EF0: .4byte gTasks -_08123EF4: .4byte sub_8123BF0 +_08123EF4: .4byte Task_UpdateHeldItemSprite _08123EF8: - ldr r0, _08123F10 @ =gUnknown_8416BA6 + ldr r0, _08123F10 @ =gText_PCMailboxFull movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08123F14 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08123F18 @ =sub_81203B8 + ldr r1, _08123F18 @ =Task_ReturnToChooseMonAfterText b _08123F36 .align 2, 0 -_08123F10: .4byte gUnknown_8416BA6 +_08123F10: .4byte gText_PCMailboxFull _08123F14: .4byte gTasks -_08123F18: .4byte sub_81203B8 +_08123F18: .4byte Task_ReturnToChooseMonAfterText _08123F1C: movs r0, 0x5 bl PlaySE _08123F22: - ldr r0, _08123F40 @ =gUnknown_8416BC3 + ldr r0, _08123F40 @ =gText_MailMessageWillBeLost movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08123F44 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08123F48 @ =sub_8123F4C + ldr r1, _08123F48 @ =Task_LoseMailMessageYesNo _08123F36: str r1, [r0] _08123F38: @@ -10832,28 +10832,28 @@ _08123F38: pop {r0} bx r0 .align 2, 0 -_08123F40: .4byte gUnknown_8416BC3 +_08123F40: .4byte gText_MailMessageWillBeLost _08123F44: .4byte gTasks -_08123F48: .4byte sub_8123F4C - thumb_func_end sub_8123E8C +_08123F48: .4byte Task_LoseMailMessageYesNo + thumb_func_end Task_HandleSendMailToPCYesNoInput - thumb_func_start sub_8123F4C -sub_8123F4C: @ 8123F4C + thumb_func_start Task_LoseMailMessageYesNo +Task_LoseMailMessageYesNo: @ 8123F4C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08123F70 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08123F78 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08123F7C @ =sub_8123F80 + ldr r0, _08123F7C @ =Task_HandleLoseMailMessageYesNoInput str r0, [r1] _08123F70: pop {r4} @@ -10861,11 +10861,11 @@ _08123F70: bx r0 .align 2, 0 _08123F78: .4byte gTasks -_08123F7C: .4byte sub_8123F80 - thumb_func_end sub_8123F4C +_08123F7C: .4byte Task_HandleLoseMailMessageYesNoInput + thumb_func_end Task_LoseMailMessageYesNo - thumb_func_start sub_8123F80 -sub_8123F80: @ 8123F80 + thumb_func_start Task_HandleLoseMailMessageYesNoInput +Task_HandleLoseMailMessageYesNoInput: @ 8123F80 push {r4-r7,lr} mov r7, r8 push {r7} @@ -10888,7 +10888,7 @@ _08123FA4: beq _08124042 b _08124050 _08123FAA: - ldr r0, _08123FFC @ =gUnknown_203B0A0 + ldr r0, _08123FFC @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -10914,41 +10914,41 @@ _08123FAA: muls r0, r7 adds r0, r6 bl TakeMailFromMon - ldr r0, _08124004 @ =gUnknown_8416CC7 + ldr r0, _08124004 @ =gText_MailTakenFromPkmn movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08124008 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _0812400C @ =sub_8123BF0 + ldr r1, _0812400C @ =Task_UpdateHeldItemSprite str r1, [r0] b _08124050 .align 2, 0 -_08123FFC: .4byte gUnknown_203B0A0 +_08123FFC: .4byte gPartyMenu _08124000: .4byte gPlayerParty -_08124004: .4byte gUnknown_8416CC7 +_08124004: .4byte gText_MailTakenFromPkmn _08124008: .4byte gTasks -_0812400C: .4byte sub_8123BF0 +_0812400C: .4byte Task_UpdateHeldItemSprite _08124010: adds r0, r4, 0 - bl sub_8120658 + bl BufferBagFullCantTakeItemMessage ldr r0, _08124030 @ =gStringVar4 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08124034 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08124038 @ =sub_81203B8 + ldr r1, _08124038 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08124050 .align 2, 0 _08124030: .4byte gStringVar4 _08124034: .4byte gTasks -_08124038: .4byte sub_81203B8 +_08124038: .4byte Task_ReturnToChooseMonAfterText _0812403C: movs r0, 0x5 bl PlaySE @@ -10958,7 +10958,7 @@ _08124042: adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _08124060 @ =sub_81203B8 + ldr r0, _08124060 @ =Task_ReturnToChooseMonAfterText str r0, [r1] _08124050: pop {r3} @@ -10968,11 +10968,11 @@ _08124050: bx r0 .align 2, 0 _0812405C: .4byte gTasks -_08124060: .4byte sub_81203B8 - thumb_func_end sub_8123F80 +_08124060: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end Task_HandleLoseMailMessageYesNoInput - thumb_func_start sub_8124064 -sub_8124064: @ 8124064 + thumb_func_start CursorCB_Cancel2 +CursorCB_Cancel2: @ 8124064 push {r4-r6,lr} mov r6, r9 mov r5, r8 @@ -10980,7 +10980,7 @@ sub_8124064: @ 8124064 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 - ldr r0, _081240E0 @ =gUnknown_203B0A0 + ldr r0, _081240E0 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] @@ -10992,27 +10992,27 @@ sub_8124064: @ 8124064 add r5, r9 movs r0, 0x5 bl PlaySE - ldr r4, _081240E8 @ =gUnknown_203B09C + ldr r4, _081240E8 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow mov r0, r8 ldrb r4, [r0, 0x9] adds r0, r5, 0 - bl sub_8122B20 + bl GetPartyMenuActionsType adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 mov r0, r9 adds r1, r4, 0 - bl sub_812299C + bl SetPartyMonSelectionActions movs r0, 0 - bl sub_8121E5C + bl DisplaySelectionWindow movs r0, 0x16 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r1, _081240EC @ =gTasks lsls r0, r6, 2 adds r0, r6 @@ -11020,7 +11020,7 @@ sub_8124064: @ 8124064 adds r0, r1 movs r1, 0xFF strh r1, [r0, 0x8] - ldr r1, _081240F0 @ =sub_8122C5C + ldr r1, _081240F0 @ =Task_HandleSelectionMenuInput str r1, [r0] pop {r3,r4} mov r8, r3 @@ -11029,47 +11029,47 @@ sub_8124064: @ 8124064 pop {r0} bx r0 .align 2, 0 -_081240E0: .4byte gUnknown_203B0A0 +_081240E0: .4byte gPartyMenu _081240E4: .4byte gPlayerParty -_081240E8: .4byte gUnknown_203B09C +_081240E8: .4byte sPartyMenuInternal _081240EC: .4byte gTasks -_081240F0: .4byte sub_8122C5C - thumb_func_end sub_8124064 +_081240F0: .4byte Task_HandleSelectionMenuInput + thumb_func_end CursorCB_Cancel2 - thumb_func_start sub_81240F4 -sub_81240F4: @ 81240F4 + thumb_func_start CursorCB_SendMon +CursorCB_SendMon: @ 81240F4 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE - ldr r5, _08124120 @ =gUnknown_203B09C + ldr r5, _08124120 @ =sPartyMenuInternal ldr r0, [r5] adds r0, 0xC - bl sub_8121CE4 - bl sub_8127AC0 + bl PartyMenuRemoveWindow + bl TrySwitchInPokemon lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08124124 adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _08124142 .align 2, 0 -_08124120: .4byte gUnknown_203B09C +_08124120: .4byte sPartyMenuInternal _08124124: ldr r0, [r5] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, _08124148 @ =gStringVar4 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _0812414C @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08124150 @ =sub_81203B8 + ldr r1, _08124150 @ =Task_ReturnToChooseMonAfterText str r1, [r0] _08124142: pop {r4,r5} @@ -11078,11 +11078,11 @@ _08124142: .align 2, 0 _08124148: .4byte gStringVar4 _0812414C: .4byte gTasks -_08124150: .4byte sub_81203B8 - thumb_func_end sub_81240F4 +_08124150: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end CursorCB_SendMon - thumb_func_start sub_8124154 -sub_8124154: @ 8124154 + thumb_func_start CursorCB_Enter +CursorCB_Enter: @ 8124154 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -11091,7 +11091,7 @@ sub_8124154: @ 8124154 sub sp, 0x4 lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _0812417C @ =gUnknown_203B0A0 + ldr r0, _0812417C @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xC0 ands r0, r1 @@ -11103,7 +11103,7 @@ sub_8124154: @ 8124154 str r1, [sp] b _0812418C .align 2, 0 -_0812417C: .4byte gUnknown_203B0A0 +_0812417C: .4byte gPartyMenu _08124180: .4byte gUnknown_8416B3E _08124184: movs r2, 0x3 @@ -11111,19 +11111,19 @@ _08124184: ldr r0, _081241FC @ =gUnknown_8416B16 str r0, [sp] _0812418C: - ldr r4, _08124200 @ =gUnknown_203B09C + ldr r4, _08124200 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow movs r5, 0 lsls r1, r7, 2 mov r9, r1 cmp r5, r8 bcs _08124222 - ldr r6, _08124204 @ =gUnknown_203B0A0 + ldr r6, _08124204 @ =gPartyMenu ldr r1, _08124208 @ =gTasks mov r2, r9 adds r0, r2, r7 @@ -11144,33 +11144,33 @@ _081241B6: adds r0, r5, 0x2 lsls r0, 24 lsrs r0, 24 - ldr r1, _08124210 @ =gUnknown_203B0B4 + ldr r1, _08124210 @ =sPartyMenuBoxes movs r2, 0x9 ldrsb r2, [r6, r2] lsls r2, 4 ldr r1, [r1] adds r1, r2 movs r2, 0x1 - bl sub_8121C70 + bl DisplayPartyPokemonDescriptionText mov r0, r8 subs r0, 0x1 cmp r5, r0 bne _081241F0 - bl sub_8124258 + bl MoveCursorToConfirm _081241F0: movs r0, 0 - bl sub_8121D0C - ldr r0, _08124214 @ =sub_811FB28 + bl DisplayPartyMenuStdMessage + ldr r0, _08124214 @ =Task_HandleChooseMonInput mov r1, r10 b _0812423C .align 2, 0 _081241FC: .4byte gUnknown_8416B16 -_08124200: .4byte gUnknown_203B09C -_08124204: .4byte gUnknown_203B0A0 +_08124200: .4byte sPartyMenuInternal +_08124204: .4byte gPartyMenu _08124208: .4byte gTasks _0812420C: .4byte gSelectedOrderFromParty -_08124210: .4byte gUnknown_203B0B4 -_08124214: .4byte sub_811FB28 +_08124210: .4byte sPartyMenuBoxes +_08124214: .4byte Task_HandleChooseMonInput _08124218: adds r0, r5, 0x1 lsls r0, 24 @@ -11182,13 +11182,13 @@ _08124222: bl PlaySE ldr r0, [sp] movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r0, _08124250 @ =gTasks mov r2, r9 adds r1, r2, r7 lsls r1, 3 adds r1, r0 - ldr r0, _08124254 @ =sub_81203B8 + ldr r0, _08124254 @ =Task_ReturnToChooseMonAfterText _0812423C: str r0, [r1] add sp, 0x4 @@ -11201,44 +11201,44 @@ _0812423C: bx r0 .align 2, 0 _08124250: .4byte gTasks -_08124254: .4byte sub_81203B8 - thumb_func_end sub_8124154 +_08124254: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end CursorCB_Enter - thumb_func_start sub_8124258 -sub_8124258: @ 8124258 + thumb_func_start MoveCursorToConfirm +MoveCursorToConfirm: @ 8124258 push {r4,lr} - ldr r4, _08124274 @ =gUnknown_203B0A0 + ldr r4, _08124274 @ =gPartyMenu ldrb r0, [r4, 0x9] movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot movs r0, 0x6 strb r0, [r4, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot pop {r4} pop {r0} bx r0 .align 2, 0 -_08124274: .4byte gUnknown_203B0A0 - thumb_func_end sub_8124258 +_08124274: .4byte gPartyMenu + thumb_func_end MoveCursorToConfirm - thumb_func_start sub_8124278 -sub_8124278: @ 8124278 + thumb_func_start CursorCB_NoEntry +CursorCB_NoEntry: @ 8124278 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 movs r0, 0x5 bl PlaySE - ldr r4, _081242BC @ =gUnknown_203B09C + ldr r4, _081242BC @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow movs r4, 0 ldr r3, _081242C0 @ =gSelectedOrderFromParty - ldr r6, _081242C4 @ =gUnknown_203B0A0 + ldr r6, _081242C4 @ =gPartyMenu adds r5, r6, 0 _0812429E: adds r2, r4, r3 @@ -11256,9 +11256,9 @@ _0812429E: beq _081242D4 b _081242E6 .align 2, 0 -_081242BC: .4byte gUnknown_203B09C +_081242BC: .4byte sPartyMenuInternal _081242C0: .4byte gSelectedOrderFromParty -_081242C4: .4byte gUnknown_203B0A0 +_081242C4: .4byte gPartyMenu _081242C8: ldrb r0, [r3, 0x1] strb r0, [r3] @@ -11278,7 +11278,7 @@ _081242DC: cmp r4, 0x2 bls _0812429E _081242E6: - ldr r5, _08124344 @ =gUnknown_203B0B4 + ldr r5, _08124344 @ =sPartyMenuBoxes movs r0, 0x9 ldrsb r0, [r6, r0] lsls r0, 4 @@ -11286,7 +11286,7 @@ _081242E6: adds r1, r0 movs r0, 0x1 movs r2, 0x1 - bl sub_8121C70 + bl DisplayPartyPokemonDescriptionText ldr r4, _08124348 @ =gSelectedOrderFromParty ldrb r0, [r4] cmp r0, 0 @@ -11297,7 +11297,7 @@ _081242E6: adds r1, r0 movs r0, 0x2 movs r2, 0x1 - bl sub_8121C70 + bl DisplayPartyPokemonDescriptionText _08124312: ldrb r0, [r4, 0x1] cmp r0, 0 @@ -11308,29 +11308,29 @@ _08124312: adds r1, r0 movs r0, 0x3 movs r2, 0x1 - bl sub_8121C70 + bl DisplayPartyPokemonDescriptionText _08124328: movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _0812434C @ =gTasks lsls r1, r7, 2 adds r1, r7 lsls r1, 3 adds r1, r0 - ldr r0, _08124350 @ =sub_811FB28 + ldr r0, _08124350 @ =Task_HandleChooseMonInput str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_08124344: .4byte gUnknown_203B0B4 +_08124344: .4byte sPartyMenuBoxes _08124348: .4byte gSelectedOrderFromParty _0812434C: .4byte gTasks -_08124350: .4byte sub_811FB28 - thumb_func_end sub_8124278 +_08124350: .4byte Task_HandleChooseMonInput + thumb_func_end CursorCB_NoEntry - thumb_func_start sub_8124354 -sub_8124354: @ 8124354 + thumb_func_start CursorCB_Store +CursorCB_Store: @ 8124354 push {r4,lr} adds r4, r0, 0 lsls r4, 24 @@ -11338,30 +11338,30 @@ sub_8124354: @ 8124354 movs r0, 0x5 bl PlaySE ldr r1, _0812437C @ =gSpecialVar_0x8004 - ldr r0, _08124380 @ =gUnknown_203B0A0 + ldr r0, _08124380 @ =gPartyMenu ldrb r0, [r0, 0x9] lsls r0, 24 asrs r0, 24 strh r0, [r1] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu pop {r4} pop {r0} bx r0 .align 2, 0 _0812437C: .4byte gSpecialVar_0x8004 -_08124380: .4byte gUnknown_203B0A0 - thumb_func_end sub_8124354 +_08124380: .4byte gPartyMenu + thumb_func_end CursorCB_Store - thumb_func_start sub_8124384 -sub_8124384: @ 8124384 + thumb_func_start CursorCB_Register +CursorCB_Register: @ 8124384 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _08124410 @ =gUnknown_203B0A0 + ldr r0, _08124410 @ =gPartyMenu mov r9, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -11415,10 +11415,10 @@ sub_8124384: @ 8124384 movs r0, 0x5 bl PlaySE adds r0, r7, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _0812446C .align 2, 0 -_08124410: .4byte gUnknown_203B0A0 +_08124410: .4byte gPartyMenu _08124414: .4byte gPlayerParty _08124418: ldr r0, _08124424 @ =gStringVar4 @@ -11435,26 +11435,26 @@ _0812442C: _08124434: movs r0, 0x1A bl PlaySE - ldr r4, _08124480 @ =gUnknown_203B09C + ldr r4, _08124480 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r4, _08124478 @ =gStringVar4 - ldr r1, _08124484 @ =gUnknown_84169D9 + ldr r1, _08124484 @ =gText_PauseUntilPress adds r0, r4, 0 bl StringAppend adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08124488 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _0812448C @ =sub_81203B8 + ldr r1, _0812448C @ =Task_ReturnToChooseMonAfterText str r1, [r0] _0812446C: pop {r3,r4} @@ -11466,14 +11466,14 @@ _0812446C: .align 2, 0 _08124478: .4byte gStringVar4 _0812447C: .4byte gUnknown_84170E0 -_08124480: .4byte gUnknown_203B09C -_08124484: .4byte gUnknown_84169D9 +_08124480: .4byte sPartyMenuInternal +_08124484: .4byte gText_PauseUntilPress _08124488: .4byte gTasks -_0812448C: .4byte sub_81203B8 - thumb_func_end sub_8124384 +_0812448C: .4byte Task_ReturnToChooseMonAfterText + thumb_func_end CursorCB_Register - thumb_func_start brm_trade_1 -brm_trade_1: @ 8124490 + thumb_func_start CursorCB_Trade1 +CursorCB_Trade1: @ 8124490 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -11481,7 +11481,7 @@ brm_trade_1: @ 8124490 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _08124558 @ =gUnknown_203B0A0 + ldr r0, _08124558 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -11521,19 +11521,19 @@ brm_trade_1: @ 8124490 ldr r0, [r0] ldr r1, _08124560 @ =gUnknown_203B064 ldr r1, [r1] - ldr r2, _08124564 @ =gUnknown_203B068 + ldr r2, _08124564 @ =gUnionRoomOfferedSpecies ldrh r3, [r2] - ldr r2, _08124568 @ =gUnknown_203B06A + ldr r2, _08124568 @ =gUnionRoomRequestedMonType ldrb r2, [r2] str r2, [sp] str r5, [sp, 0x4] str r4, [sp, 0x8] mov r2, r9 - bl sub_804FBEC + bl GetUnionRoomTradeMessageId cmp r0, 0 beq _08124584 ldr r5, _0812456C @ =gStringVar4 - ldr r1, _08124570 @ =gUnknown_845A7E8 + ldr r1, _08124570 @ =sUnionRoomTradeMessages subs r0, 0x1 lsls r0, 2 adds r0, r1 @@ -11542,44 +11542,44 @@ brm_trade_1: @ 8124490 bl StringExpandPlaceholders movs r0, 0x1A bl PlaySE - ldr r4, _08124574 @ =gUnknown_203B09C + ldr r4, _08124574 @ =sPartyMenuInternal ldr r0, [r4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r4] adds r0, 0xD - bl sub_8121CE4 - ldr r1, _08124578 @ =gUnknown_84169D9 + bl PartyMenuRemoveWindow + ldr r1, _08124578 @ =gText_PauseUntilPress adds r0, r5, 0 bl StringAppend adds r0, r5, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _0812457C @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _08124580 @ =sub_81203B8 + ldr r1, _08124580 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _08124590 .align 2, 0 -_08124558: .4byte gUnknown_203B0A0 +_08124558: .4byte gPartyMenu _0812455C: .4byte gPlayerParty _08124560: .4byte gUnknown_203B064 -_08124564: .4byte gUnknown_203B068 -_08124568: .4byte gUnknown_203B06A +_08124564: .4byte gUnionRoomOfferedSpecies +_08124568: .4byte gUnionRoomRequestedMonType _0812456C: .4byte gStringVar4 -_08124570: .4byte gUnknown_845A7E8 -_08124574: .4byte gUnknown_203B09C -_08124578: .4byte gUnknown_84169D9 +_08124570: .4byte sUnionRoomTradeMessages +_08124574: .4byte sPartyMenuInternal +_08124578: .4byte gText_PauseUntilPress _0812457C: .4byte gTasks -_08124580: .4byte sub_81203B8 +_08124580: .4byte Task_ReturnToChooseMonAfterText _08124584: movs r0, 0x5 bl PlaySE adds r0, r7, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _08124590: add sp, 0xC pop {r3,r4} @@ -11588,20 +11588,20 @@ _08124590: pop {r4-r7} pop {r0} bx r0 - thumb_func_end brm_trade_1 + thumb_func_end CursorCB_Trade1 thumb_func_start nullsub_93 nullsub_93: @ 81245A0 bx lr thumb_func_end nullsub_93 - thumb_func_start sub_81245A4 -sub_81245A4: @ 81245A4 + thumb_func_start CursorCB_FieldMove +CursorCB_FieldMove: @ 81245A4 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 bl Menu_GetCursorPos - ldr r5, _08124610 @ =gUnknown_203B09C + ldr r5, _08124610 @ =sPartyMenuInternal ldr r1, [r5] lsls r0, 24 lsrs r0, 24 @@ -11613,7 +11613,7 @@ sub_81245A4: @ 81245A4 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE - ldr r1, _08124614 @ =gUnknown_845A788 + ldr r1, _08124614 @ =sFieldMoveCursorCallbacks lsls r0, r4, 3 adds r7, r0, r1 ldr r0, [r7] @@ -11623,10 +11623,10 @@ sub_81245A4: @ 81245A4 _081245D6: ldr r0, [r5] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow ldr r0, [r5] adds r0, 0xD - bl sub_8121CE4 + bl PartyMenuRemoveWindow bl MenuHelpers_LinkSomething lsls r0, 24 lsrs r0, 24 @@ -11643,11 +11643,11 @@ _081245FA: cmp r0, 0x1 bhi _08124618 movs r0, 0xD - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _081247A6 .align 2, 0 -_08124610: .4byte gUnknown_203B09C -_08124614: .4byte gUnknown_845A788 +_08124610: .4byte sPartyMenuInternal +_08124614: .4byte sFieldMoveCursorCallbacks _08124618: ldrb r0, [r7, 0x4] b _081247A2 @@ -11662,23 +11662,23 @@ _0812461C: lsrs r0, 24 cmp r0, 0x1 beq _08124658 - ldr r0, _0812464C @ =gUnknown_8416AE2 + ldr r0, _0812464C @ =gText_CantUseUntilNewBadge movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08124650 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08124654 @ =sub_81203B8 + ldr r1, _08124654 @ =Task_ReturnToChooseMonAfterText str r1, [r0] b _081247B4 .align 2, 0 -_0812464C: .4byte gUnknown_8416AE2 +_0812464C: .4byte gText_CantUseUntilNewBadge _08124650: .4byte gTasks -_08124654: .4byte sub_81203B8 +_08124654: .4byte Task_ReturnToChooseMonAfterText _08124658: - ldr r1, _08124680 @ =gUnknown_845A788 + ldr r1, _08124680 @ =sFieldMoveCursorCallbacks lsls r0, r4, 3 adds r5, r0, r1 ldr r0, [r5] @@ -11698,7 +11698,7 @@ _0812466E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08124680: .4byte gUnknown_845A788 +_08124680: .4byte sFieldMoveCursorCallbacks _08124684: .4byte _08124688 .align 2, 0 _08124688: @@ -11713,7 +11713,7 @@ _08124688: .4byte _081246AC _081246AC: adds r0, r6, 0 - bl sub_80E56DC + bl ChooseMonForSoftboiled b _081247B4 _081246B4: ldr r0, _081246E0 @ =gSaveBlock1Ptr @@ -11727,11 +11727,11 @@ _081246B4: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, _081246E4 @ =gStringVar1 ldrb r1, [r1, 0x14] - bl sub_80C4DF8 + bl GetMapNameGeneric ldr r0, _081246E8 @ =gStringVar4 ldr r1, _081246EC @ =gUnknown_8417640 b _08124720 @@ -11756,18 +11756,18 @@ _081246F0: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, _0812473C @ =gStringVar1 ldrb r1, [r1, 0x14] - bl sub_80C4DF8 + bl GetMapNameGeneric ldr r0, _08124740 @ =gStringVar4 ldr r1, _08124744 @ =gUnknown_8417615 _08124720: bl StringExpandPlaceholders adds r0, r6, 0 - bl sub_81247C4 - ldr r0, _08124748 @ =gUnknown_203B09C + bl DisplayFieldMoveExitAreaMessage + ldr r0, _08124748 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0x86 lsls r1, 2 @@ -11779,17 +11779,17 @@ _08124738: .4byte gSaveBlock1Ptr _0812473C: .4byte gStringVar1 _08124740: .4byte gStringVar4 _08124744: .4byte gUnknown_8417615 -_08124748: .4byte gUnknown_203B09C +_08124748: .4byte sPartyMenuInternal _0812474C: - ldr r1, _08124754 @ =gUnknown_203B0A0 + ldr r1, _08124754 @ =gPartyMenu ldr r0, _08124758 @ =sub_80C4EF8 str r0, [r1] b _08124778 .align 2, 0 -_08124754: .4byte gUnknown_203B0A0 +_08124754: .4byte gPartyMenu _08124758: .4byte sub_80C4EF8 _0812475C: - ldr r1, _08124780 @ =gUnknown_203B0A0 + ldr r1, _08124780 @ =gPartyMenu ldr r0, _08124784 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId @@ -11803,10 +11803,10 @@ _0812475C: bl sub_8124BB0 _08124778: adds r0, r6, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _081247B4 .align 2, 0 -_08124780: .4byte gUnknown_203B0A0 +_08124780: .4byte gPartyMenu _08124784: .4byte CB2_ReturnToField _08124788: .4byte gPlayerParty _0812478C: @@ -11814,22 +11814,22 @@ _0812478C: beq _0812479A cmp r4, 0x4 bne _081247A0 - bl sub_8124A0C + bl DisplayCantUseSurfMessage b _081247A6 _0812479A: - bl sub_8124954 + bl DisplayCantUseFlashMessage b _081247A6 _081247A0: ldrb r0, [r5, 0x4] _081247A2: - bl sub_8121D0C + bl DisplayPartyMenuStdMessage _081247A6: ldr r0, _081247BC @ =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, _081247C0 @ =task_brm_cancel_1_on_keypad_a_or_b + ldr r0, _081247C0 @ =Task_CancelAfterAorBPress str r0, [r1] _081247B4: pop {r4-r7} @@ -11837,24 +11837,24 @@ _081247B4: bx r0 .align 2, 0 _081247BC: .4byte gTasks -_081247C0: .4byte task_brm_cancel_1_on_keypad_a_or_b - thumb_func_end sub_81245A4 +_081247C0: .4byte Task_CancelAfterAorBPress + thumb_func_end CursorCB_FieldMove - thumb_func_start sub_81247C4 -sub_81247C4: @ 81247C4 + thumb_func_start DisplayFieldMoveExitAreaMessage +DisplayFieldMoveExitAreaMessage: @ 81247C4 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _081247E8 @ =gStringVar4 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _081247EC @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _081247F0 @ =sub_81247F4 + ldr r1, _081247F0 @ =Task_FieldMoveExitAreaYesNo str r1, [r0] pop {r4} pop {r0} @@ -11862,26 +11862,26 @@ sub_81247C4: @ 81247C4 .align 2, 0 _081247E8: .4byte gStringVar4 _081247EC: .4byte gTasks -_081247F0: .4byte sub_81247F4 - thumb_func_end sub_81247C4 +_081247F0: .4byte Task_FieldMoveExitAreaYesNo + thumb_func_end DisplayFieldMoveExitAreaMessage - thumb_func_start sub_81247F4 -sub_81247F4: @ 81247F4 + thumb_func_start Task_FieldMoveExitAreaYesNo +Task_FieldMoveExitAreaYesNo: @ 81247F4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08124818 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08124820 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08124824 @ =sub_8124828 + ldr r0, _08124824 @ =Task_HandleFieldMoveExitAreaYesNoInput str r0, [r1] _08124818: pop {r4} @@ -11889,11 +11889,11 @@ _08124818: bx r0 .align 2, 0 _08124820: .4byte gTasks -_08124824: .4byte sub_8124828 - thumb_func_end sub_81247F4 +_08124824: .4byte Task_HandleFieldMoveExitAreaYesNoInput + thumb_func_end Task_FieldMoveExitAreaYesNo - thumb_func_start sub_8124828 -sub_8124828: @ 8124828 + thumb_func_start Task_HandleFieldMoveExitAreaYesNoInput +Task_HandleFieldMoveExitAreaYesNoInput: @ 8124828 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -11914,7 +11914,7 @@ _08124848: beq _08124892 b _081248A2 _0812484E: - ldr r1, _0812487C @ =gUnknown_203B0A0 + ldr r1, _0812487C @ =gPartyMenu ldr r0, _08124880 @ =CB2_ReturnToField str r0, [r1] bl GetCursorSelectionMonId @@ -11924,7 +11924,7 @@ _0812484E: muls r0, r1 ldr r1, _08124884 @ =gPlayerParty adds r0, r1 - ldr r1, _08124888 @ =gUnknown_203B09C + ldr r1, _08124888 @ =sPartyMenuInternal ldr r1, [r1] movs r2, 0x86 lsls r2, 2 @@ -11932,13 +11932,13 @@ _0812484E: ldrb r1, [r1] bl sub_8124BB0 adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _081248A2 .align 2, 0 -_0812487C: .4byte gUnknown_203B0A0 +_0812487C: .4byte gPartyMenu _08124880: .4byte CB2_ReturnToField _08124884: .4byte gPlayerParty -_08124888: .4byte gUnknown_203B09C +_08124888: .4byte sPartyMenuInternal _0812488C: movs r0, 0x5 bl PlaySE @@ -11949,7 +11949,7 @@ _08124892: ldr r0, _081248AC @ =gPostMenuFieldCallback str r1, [r0] adds r0, r4, 0 - bl sub_81203B8 + bl Task_ReturnToChooseMonAfterText _081248A2: pop {r4} pop {r0} @@ -11957,33 +11957,33 @@ _081248A2: .align 2, 0 _081248A8: .4byte gFieldCallback2 _081248AC: .4byte gPostMenuFieldCallback - thumb_func_end sub_8124828 + thumb_func_end Task_HandleFieldMoveExitAreaYesNoInput thumb_func_start FieldCallback_PrepareFadeInFromMenu FieldCallback_PrepareFadeInFromMenu: @ 81248B0 push {lr} bl sub_807DC00 - ldr r0, _081248C4 @ =task_launch_hm_phase_2 + ldr r0, _081248C4 @ =Task_FieldMoveWaitForFade movs r1, 0x8 bl CreateTask movs r0, 0x1 pop {r1} bx r1 .align 2, 0 -_081248C4: .4byte task_launch_hm_phase_2 +_081248C4: .4byte Task_FieldMoveWaitForFade thumb_func_end FieldCallback_PrepareFadeInFromMenu - thumb_func_start task_launch_hm_phase_2 -task_launch_hm_phase_2: @ 81248C8 + thumb_func_start Task_FieldMoveWaitForFade +Task_FieldMoveWaitForFade: @ 81248C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _081248F4 - bl brm_get_selected_species + bl GetFieldMoveMonSpecies ldr r1, _081248FC @ =gFieldEffectArguments lsls r0, 16 lsrs r0, 16 @@ -12000,12 +12000,12 @@ _081248F4: .align 2, 0 _081248FC: .4byte gFieldEffectArguments _08124900: .4byte gPostMenuFieldCallback - thumb_func_end task_launch_hm_phase_2 + thumb_func_end Task_FieldMoveWaitForFade - thumb_func_start brm_get_selected_species -brm_get_selected_species: @ 8124904 + thumb_func_start GetFieldMoveMonSpecies +GetFieldMoveMonSpecies: @ 8124904 push {lr} - ldr r0, _08124924 @ =gUnknown_203B0A0 + ldr r0, _08124924 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -12019,12 +12019,12 @@ brm_get_selected_species: @ 8124904 pop {r1} bx r1 .align 2, 0 -_08124924: .4byte gUnknown_203B0A0 +_08124924: .4byte gPartyMenu _08124928: .4byte gPlayerParty - thumb_func_end brm_get_selected_species + thumb_func_end GetFieldMoveMonSpecies - thumb_func_start task_brm_cancel_1_on_keypad_a_or_b -task_brm_cancel_1_on_keypad_a_or_b: @ 812492C + thumb_func_start Task_CancelAfterAorBPress +Task_CancelAfterAorBPress: @ 812492C push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -12040,16 +12040,16 @@ task_brm_cancel_1_on_keypad_a_or_b: @ 812492C beq _0812494C _08124946: adds r0, r2, 0 - bl brm_cancel_1 + bl CursorCB_Cancel1 _0812494C: pop {r0} bx r0 .align 2, 0 _08124950: .4byte gMain - thumb_func_end task_brm_cancel_1_on_keypad_a_or_b + thumb_func_end Task_CancelAfterAorBPress - thumb_func_start sub_8124954 -sub_8124954: @ 8124954 + thumb_func_start DisplayCantUseFlashMessage +DisplayCantUseFlashMessage: @ 8124954 push {lr} ldr r0, _0812496C @ =0x00000806 bl FlagGet @@ -12058,20 +12058,20 @@ sub_8124954: @ 8124954 cmp r0, 0x1 bne _08124970 movs r0, 0xC - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08124976 .align 2, 0 _0812496C: .4byte 0x00000806 _08124970: movs r0, 0xD - bl sub_8121D0C + bl DisplayPartyMenuStdMessage _08124976: pop {r0} bx r0 - thumb_func_end sub_8124954 + thumb_func_end DisplayCantUseFlashMessage - thumb_func_start hm_surf_run_dp02scr -hm_surf_run_dp02scr: @ 812497C + thumb_func_start FieldCallback_Surf +FieldCallback_Surf: @ 812497C push {lr} bl GetCursorSelectionMonId ldr r1, _08124994 @ =gFieldEffectArguments @@ -12084,10 +12084,10 @@ hm_surf_run_dp02scr: @ 812497C bx r0 .align 2, 0 _08124994: .4byte gFieldEffectArguments - thumb_func_end hm_surf_run_dp02scr + thumb_func_end FieldCallback_Surf - thumb_func_start sub_8124998 -sub_8124998: @ 8124998 + thumb_func_start SetUpFieldMove_Surf +SetUpFieldMove_Surf: @ 8124998 push {r4,lr} sub sp, 0x4 mov r4, sp @@ -12122,7 +12122,7 @@ sub_8124998: @ 8124998 ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] ldr r1, _081249F8 @ =gPostMenuFieldCallback - ldr r0, _081249FC @ =hm_surf_run_dp02scr + ldr r0, _081249FC @ =FieldCallback_Surf str r0, [r1] movs r0, 0x1 b _08124A02 @@ -12130,7 +12130,7 @@ sub_8124998: @ 8124998 _081249F0: .4byte gFieldCallback2 _081249F4: .4byte FieldCallback_PrepareFadeInFromMenu _081249F8: .4byte gPostMenuFieldCallback -_081249FC: .4byte hm_surf_run_dp02scr +_081249FC: .4byte FieldCallback_Surf _08124A00: movs r0, 0 _08124A02: @@ -12138,10 +12138,10 @@ _08124A02: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8124998 + thumb_func_end SetUpFieldMove_Surf - thumb_func_start sub_8124A0C -sub_8124A0C: @ 8124A0C + thumb_func_start DisplayCantUseSurfMessage +DisplayCantUseSurfMessage: @ 8124A0C push {r4,lr} sub sp, 0x4 movs r0, 0x8 @@ -12150,7 +12150,7 @@ sub_8124A0C: @ 8124A0C cmp r0, 0 beq _08124A24 movs r0, 0x9 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08124A82 _08124A24: mov r4, sp @@ -12172,7 +12172,7 @@ _08124A24: cmp r0, 0x1 bne _08124A56 movs r0, 0xA - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08124A82 _08124A56: ldr r0, _08124A78 @ =gSaveBlock1Ptr @@ -12188,22 +12188,22 @@ _08124A56: cmp r0, 0x1 bhi _08124A7C movs r0, 0xB - bl sub_8121D0C + bl DisplayPartyMenuStdMessage b _08124A82 .align 2, 0 _08124A78: .4byte gSaveBlock1Ptr _08124A7C: movs r0, 0x8 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage _08124A82: add sp, 0x4 pop {r4} pop {r0} bx r0 - thumb_func_end sub_8124A0C + thumb_func_end DisplayCantUseSurfMessage - thumb_func_start sub_8124A8C -sub_8124A8C: @ 8124A8C + thumb_func_start SetUpFieldMove_Fly +SetUpFieldMove_Fly: @ 8124A8C push {lr} ldr r0, _08124AA4 @ =gMapHeader ldrb r0, [r0, 0x17] @@ -12221,15 +12221,15 @@ _08124AA8: _08124AAA: pop {r1} bx r1 - thumb_func_end sub_8124A8C + thumb_func_end SetUpFieldMove_Fly - thumb_func_start sub_8124AB0 -sub_8124AB0: @ 8124AB0 + thumb_func_start CB2_ReturnToPartyMenuFromFlyMap +CB2_ReturnToPartyMenuFromFlyMap: @ 8124AB0 push {lr} sub sp, 0xC movs r0, 0 str r0, [sp] - ldr r0, _08124AD4 @ =sub_811FB28 + ldr r0, _08124AD4 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] @@ -12237,17 +12237,17 @@ sub_8124AB0: @ 8124AB0 movs r1, 0 movs r2, 0 movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_08124AD4: .4byte sub_811FB28 +_08124AD4: .4byte Task_HandleChooseMonInput _08124AD8: .4byte CB2_ReturnToStartMenu - thumb_func_end sub_8124AB0 + thumb_func_end CB2_ReturnToPartyMenuFromFlyMap - thumb_func_start hm2_waterfall -hm2_waterfall: @ 8124ADC + thumb_func_start FieldCallback_Waterfall +FieldCallback_Waterfall: @ 8124ADC push {lr} bl GetCursorSelectionMonId ldr r1, _08124AF4 @ =gFieldEffectArguments @@ -12260,10 +12260,10 @@ hm2_waterfall: @ 8124ADC bx r0 .align 2, 0 _08124AF4: .4byte gFieldEffectArguments - thumb_func_end hm2_waterfall + thumb_func_end FieldCallback_Waterfall - thumb_func_start hm_prepare_waterfall -hm_prepare_waterfall: @ 8124AF8 + thumb_func_start SetUpFieldMove_Waterfall +SetUpFieldMove_Waterfall: @ 8124AF8 push {r4,lr} sub sp, 0x4 mov r4, sp @@ -12293,7 +12293,7 @@ hm_prepare_waterfall: @ 8124AF8 ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu str r0, [r1] ldr r1, _08124B4C @ =gPostMenuFieldCallback - ldr r0, _08124B50 @ =hm2_waterfall + ldr r0, _08124B50 @ =FieldCallback_Waterfall str r0, [r1] movs r0, 0x1 b _08124B56 @@ -12301,7 +12301,7 @@ hm_prepare_waterfall: @ 8124AF8 _08124B44: .4byte gFieldCallback2 _08124B48: .4byte FieldCallback_PrepareFadeInFromMenu _08124B4C: .4byte gPostMenuFieldCallback -_08124B50: .4byte hm2_waterfall +_08124B50: .4byte FieldCallback_Waterfall _08124B54: movs r0, 0 _08124B56: @@ -12309,7 +12309,7 @@ _08124B56: pop {r4} pop {r1} bx r1 - thumb_func_end hm_prepare_waterfall + thumb_func_end SetUpFieldMove_Waterfall thumb_func_start sub_8124B60 sub_8124B60: @ 8124B60 @@ -12330,7 +12330,7 @@ sub_8124B60: @ 8124B60 strh r0, [r7, 0x4] strh r4, [r7] strh r5, [r7, 0x2] - ldr r0, _08124B98 @ =gUnknown_203B0A0 + ldr r0, _08124B98 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x6 bne _08124B9C @@ -12339,7 +12339,7 @@ sub_8124B60: @ 8124B60 bl sub_8113550 b _08124BA4 .align 2, 0 -_08124B98: .4byte gUnknown_203B0A0 +_08124B98: .4byte gPartyMenu _08124B9C: movs r0, 0x9 adds r1, r7, 0 @@ -12385,7 +12385,7 @@ _08124BDA: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId b _08124BFE .align 2, 0 _08124BF8: .4byte gSaveBlock1Ptr @@ -12426,7 +12426,7 @@ sub_8124C1C: @ 8124C1C ldrsb r1, [r4, r1] lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r5, r0, 0 adds r0, r4, 0 bl Free @@ -12459,13 +12459,13 @@ sub_8124C1C: @ 8124C1C _08124C88: .4byte gPlayerParty thumb_func_end sub_8124C1C - thumb_func_start sub_8124C8C -sub_8124C8C: @ 8124C8C + thumb_func_start CB2_ShowPartyMenuForItemUse +CB2_ShowPartyMenuForItemUse: @ 8124C8C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0xC - ldr r6, _08124CB4 @ =sub_8124D90 + ldr r6, _08124CB4 @ =CB2_ReturnToBagMenu ldr r0, _08124CB8 @ =gMain ldr r1, _08124CBC @ =0x00000439 adds r0, r1 @@ -12476,20 +12476,20 @@ sub_8124C8C: @ 8124C8C beq _08124CCC movs r0, 0x1 mov r8, r0 - bl sub_81278B4 + bl GetPartyLayoutFromBattleType lsls r0, 24 lsrs r7, r0, 24 b _08124CD2 .align 2, 0 -_08124CB4: .4byte sub_8124D90 +_08124CB4: .4byte CB2_ReturnToBagMenu _08124CB8: .4byte gMain _08124CBC: .4byte 0x00000439 _08124CC0: - ldr r0, _08124CC8 @ =gUnknown_203B0A0 + ldr r0, _08124CC8 @ =gPartyMenu strb r5, [r0, 0x9] b _08124D16 .align 2, 0 -_08124CC8: .4byte gUnknown_203B0A0 +_08124CC8: .4byte gPartyMenu _08124CCC: movs r1, 0 mov r8, r1 @@ -12502,7 +12502,7 @@ _08124CD2: lsrs r0, 24 cmp r0, 0xA bne _08124D44 - ldr r1, _08124D34 @ =gUnknown_203B0A0 + ldr r1, _08124D34 @ =gPartyMenu movs r0, 0 strb r0, [r1, 0x9] movs r5, 0 @@ -12538,15 +12538,15 @@ _08124D16: bne _08124D28 ldr r6, _08124D3C @ =sub_8124DB0 _08124D28: - ldr r1, _08124D40 @ =sub_8124FC8 + ldr r1, _08124D40 @ =Task_SetSacredAshCB movs r0, 0x7F b _08124D6A .align 2, 0 _08124D30: .4byte gSpecialVar_ItemId -_08124D34: .4byte gUnknown_203B0A0 +_08124D34: .4byte gPartyMenu _08124D38: .4byte gPlayerParty _08124D3C: .4byte sub_8124DB0 -_08124D40: .4byte sub_8124FC8 +_08124D40: .4byte Task_SetSacredAshCB _08124D44: ldrh r0, [r4] bl GetPocketByItemId @@ -12568,7 +12568,7 @@ _08124D64: movs r0, 0x5 ldr r6, _08124D88 @ =sub_8124DB0 _08124D68: - ldr r1, _08124D8C @ =sub_811FB28 + ldr r1, _08124D8C @ =Task_HandleChooseMonInput _08124D6A: str r0, [sp] str r1, [sp, 0x4] @@ -12577,7 +12577,7 @@ _08124D6A: adds r1, r7, 0 movs r2, 0x3 movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r3} mov r8, r3 @@ -12586,19 +12586,19 @@ _08124D6A: bx r0 .align 2, 0 _08124D88: .4byte sub_8124DB0 -_08124D8C: .4byte sub_811FB28 - thumb_func_end sub_8124C8C +_08124D8C: .4byte Task_HandleChooseMonInput + thumb_func_end CB2_ShowPartyMenuForItemUse - thumb_func_start sub_8124D90 -sub_8124D90: @ 8124D90 + thumb_func_start CB2_ReturnToBagMenu +CB2_ReturnToBagMenu: @ 8124D90 push {lr} movs r0, 0xB movs r1, 0x3 movs r2, 0 - bl sub_8107DB4 + bl GoToBagMenu pop {r0} bx r0 - thumb_func_end sub_8124D90 + thumb_func_end CB2_ReturnToBagMenu thumb_func_start sub_8124DA0 sub_8124DA0: @ 8124DA0 @@ -12627,15 +12627,15 @@ sub_8124DC0: @ 8124DC0 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r1, _08124DD8 @ =gUnknown_203B09C + ldr r1, _08124DD8 @ =sPartyMenuInternal ldr r2, [r1] ldr r1, _08124DDC @ =sub_8124DE0 str r1, [r2, 0x4] - bl sub_811FA78 + bl Task_ClosePartyMenu pop {r0} bx r0 .align 2, 0 -_08124DD8: .4byte gUnknown_203B09C +_08124DD8: .4byte sPartyMenuInternal _08124DDC: .4byte sub_8124DE0 thumb_func_end sub_8124DC0 @@ -12654,27 +12654,27 @@ sub_8124DE0: @ 8124DE0 lsrs r0, 24 cmp r0, 0x1 bne _08124E18 - ldr r0, _08124E10 @ =gUnknown_203B0A0 + ldr r0, _08124E10 @ =gPartyMenu ldrb r0, [r0, 0x9] ldrh r1, [r4] - ldr r2, _08124E14 @ =sub_8126BD4 + ldr r2, _08124E14 @ =ItemUseCB_EvolutionStone bl sub_811C540 b _08124E38 .align 2, 0 _08124E0C: .4byte gSpecialVar_ItemId -_08124E10: .4byte gUnknown_203B0A0 -_08124E14: .4byte sub_8126BD4 +_08124E10: .4byte gPartyMenu +_08124E14: .4byte ItemUseCB_EvolutionStone _08124E18: - ldr r2, _08124E28 @ =gUnknown_203B0A0 + ldr r2, _08124E28 @ =gPartyMenu ldrb r0, [r2, 0x9] ldrh r1, [r4] ldr r2, [r2] bl sub_811C5AC b _08124E38 .align 2, 0 -_08124E28: .4byte gUnknown_203B0A0 +_08124E28: .4byte gPartyMenu _08124E2C: - ldr r0, _08124E40 @ =gUnknown_203B0A0 + ldr r0, _08124E40 @ =gPartyMenu ldrb r0, [r0, 0x9] ldrh r1, [r4] ldr r2, _08124E44 @ =sub_8124E48 @@ -12684,7 +12684,7 @@ _08124E38: pop {r0} bx r0 .align 2, 0 -_08124E40: .4byte gUnknown_203B0A0 +_08124E40: .4byte gPartyMenu _08124E44: .4byte sub_8124E48 thumb_func_end sub_8124DE0 @@ -12704,7 +12704,7 @@ sub_8124E48: @ 8124E48 bl sub_811D178 cmp r0, 0x1 bne _08124EC8 - ldr r0, _08124EC0 @ =gUnknown_203B0A0 + ldr r0, _08124EC0 @ =gPartyMenu mov r8, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -12743,23 +12743,23 @@ _08124EB0: b _08124EE6 .align 2, 0 _08124EBC: .4byte gSpecialVar_ItemId -_08124EC0: .4byte gUnknown_203B0A0 +_08124EC0: .4byte gPartyMenu _08124EC4: .4byte gPlayerParty _08124EC8: - ldr r2, _08124EF4 @ =gUnknown_203B0A0 + ldr r2, _08124EF4 @ =gPartyMenu ldrb r0, [r2, 0x8] lsls r0, 28 lsrs r0, 28 ldrb r3, [r2, 0x9] movs r1, 0x7F str r1, [sp] - ldr r1, _08124EF8 @ =sub_8124FC8 + ldr r1, _08124EF8 @ =Task_SetSacredAshCB str r1, [sp, 0x4] ldr r1, [r2] str r1, [sp, 0x8] movs r1, 0xFF movs r2, 0 - bl PartyMenuInit + bl InitPartyMenu _08124EE6: add sp, 0xC pop {r3} @@ -12768,8 +12768,8 @@ _08124EE6: pop {r0} bx r0 .align 2, 0 -_08124EF4: .4byte gUnknown_203B0A0 -_08124EF8: .4byte sub_8124FC8 +_08124EF4: .4byte gPartyMenu +_08124EF8: .4byte Task_SetSacredAshCB thumb_func_end sub_8124E48 thumb_func_start sub_8124EFC @@ -12781,7 +12781,7 @@ sub_8124EFC: @ 8124EFC bl sub_811D178 cmp r0, 0x1 bne _08124F94 - ldr r0, _08124F88 @ =gUnknown_203B0A0 + ldr r0, _08124F88 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] @@ -12835,11 +12835,11 @@ _08124F7C: bl SetMainCallback2 b _08124FB2 .align 2, 0 -_08124F88: .4byte gUnknown_203B0A0 +_08124F88: .4byte gPartyMenu _08124F8C: .4byte gPlayerParty _08124F90: .4byte gSpecialVar_ItemId _08124F94: - ldr r4, _08124FC0 @ =gUnknown_203B0A0 + ldr r4, _08124FC0 @ =gPartyMenu ldrb r0, [r4, 0x8] lsls r0, 28 lsrs r0, 28 @@ -12847,12 +12847,12 @@ _08124F94: ldrb r3, [r4, 0x9] movs r1, 0x7F str r1, [sp] - ldr r1, _08124FC4 @ =sub_8124FC8 + ldr r1, _08124FC4 @ =Task_SetSacredAshCB str r1, [sp, 0x4] ldr r1, [r4] str r1, [sp, 0x8] movs r1, 0xFF - bl PartyMenuInit + bl InitPartyMenu _08124FB2: add sp, 0xC pop {r3} @@ -12861,12 +12861,12 @@ _08124FB2: pop {r0} bx r0 .align 2, 0 -_08124FC0: .4byte gUnknown_203B0A0 -_08124FC4: .4byte sub_8124FC8 +_08124FC0: .4byte gPartyMenu +_08124FC4: .4byte Task_SetSacredAshCB thumb_func_end sub_8124EFC - thumb_func_start sub_8124FC8 -sub_8124FC8: @ 8124FC8 + thumb_func_start Task_SetSacredAshCB +Task_SetSacredAshCB: @ 8124FC8 push {lr} lsls r0, 24 lsrs r3, r0, 24 @@ -12876,19 +12876,19 @@ sub_8124FC8: @ 8124FC8 ands r0, r1 cmp r0, 0 bne _08124FFA - ldr r0, _08125004 @ =gUnknown_203B0A0 + ldr r0, _08125004 @ =gPartyMenu ldrb r1, [r0, 0x8] movs r0, 0xF ands r0, r1 cmp r0, 0x1 bne _08124FEE - ldr r0, _08125008 @ =gUnknown_203B09C + ldr r0, _08125008 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _0812500C @ =sub_8128184 + ldr r0, _0812500C @ =CB2_SetUpExitToBattleScreen str r0, [r1, 0x4] _08124FEE: - ldr r0, _08125010 @ =gUnknown_3005E98 - ldr r1, _08125014 @ =sub_81255BC + ldr r0, _08125010 @ =gItemUseCB + ldr r1, _08125014 @ =Task_ClosePartyMenuAfterText ldr r2, [r0] adds r0, r3, 0 bl _call_via_r2 @@ -12897,12 +12897,12 @@ _08124FFA: bx r0 .align 2, 0 _08125000: .4byte gPaletteFade -_08125004: .4byte gUnknown_203B0A0 -_08125008: .4byte gUnknown_203B09C -_0812500C: .4byte sub_8128184 -_08125010: .4byte gUnknown_3005E98 -_08125014: .4byte sub_81255BC - thumb_func_end sub_8124FC8 +_08125004: .4byte gPartyMenu +_08125008: .4byte sPartyMenuInternal +_0812500C: .4byte CB2_SetUpExitToBattleScreen +_08125010: .4byte gItemUseCB +_08125014: .4byte Task_ClosePartyMenuAfterText + thumb_func_end Task_SetSacredAshCB thumb_func_start IsHPRecoveryItem IsHPRecoveryItem: @ 8125018 @@ -12985,147 +12985,147 @@ _0812507C: .4byte _081251F0 _081250C8: ldr r0, _081250D4 @ =gStringVar4 - ldr r1, _081250D8 @ =gUnknown_8416F4E + ldr r1, _081250D8 @ =gText_PkmnCuredOfPoison bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250D4: .4byte gStringVar4 -_081250D8: .4byte gUnknown_8416F4E +_081250D8: .4byte gText_PkmnCuredOfPoison _081250DC: ldr r0, _081250E8 @ =gStringVar4 - ldr r1, _081250EC @ =gUnknown_8416F8C + ldr r1, _081250EC @ =gText_PkmnWokeUp2 bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250E8: .4byte gStringVar4 -_081250EC: .4byte gUnknown_8416F8C +_081250EC: .4byte gText_PkmnWokeUp2 _081250F0: ldr r0, _081250FC @ =gStringVar4 - ldr r1, _08125100 @ =gUnknown_8416F9A + ldr r1, _08125100 @ =gText_PkmnBurnHealed bl StringExpandPlaceholders b _0812520C .align 2, 0 _081250FC: .4byte gStringVar4 -_08125100: .4byte gUnknown_8416F9A +_08125100: .4byte gText_PkmnBurnHealed _08125104: ldr r0, _08125110 @ =gStringVar4 - ldr r1, _08125114 @ =gUnknown_8416FB2 + ldr r1, _08125114 @ =gText_PkmnThawedOut bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125110: .4byte gStringVar4 -_08125114: .4byte gUnknown_8416FB2 +_08125114: .4byte gText_PkmnThawedOut _08125118: ldr r0, _08125124 @ =gStringVar4 - ldr r1, _08125128 @ =gUnknown_8416F6F + ldr r1, _08125128 @ =gText_PkmnCuredOfParalysis bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125124: .4byte gStringVar4 -_08125128: .4byte gUnknown_8416F6F +_08125128: .4byte gText_PkmnCuredOfParalysis _0812512C: ldr r0, _08125138 @ =gStringVar4 - ldr r1, _0812513C @ =gUnknown_8417052 + ldr r1, _0812513C @ =gText_PkmnSnappedOutOfConfusion bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125138: .4byte gStringVar4 -_0812513C: .4byte gUnknown_8417052 +_0812513C: .4byte gText_PkmnSnappedOutOfConfusion _08125140: ldr r0, _0812514C @ =gStringVar4 - ldr r1, _08125150 @ =gUnknown_8417075 + ldr r1, _08125150 @ =gText_PkmnGotOverInfatuation bl StringExpandPlaceholders b _0812520C .align 2, 0 _0812514C: .4byte gStringVar4 -_08125150: .4byte gUnknown_8417075 +_08125150: .4byte gText_PkmnGotOverInfatuation _08125154: ldr r0, _08125160 @ =gStringVar4 - ldr r1, _08125164 @ =gUnknown_8416FED + ldr r1, _08125164 @ =gText_PkmnBecameHealthy bl StringExpandPlaceholders b _0812520C .align 2, 0 _08125160: .4byte gStringVar4 -_08125164: .4byte gUnknown_8416FED +_08125164: .4byte gText_PkmnBecameHealthy _08125168: ldr r0, _08125170 @ =gStringVar2 - ldr r1, _08125174 @ =gUnknown_84169C2 + ldr r1, _08125174 @ =gText_HP3 b _081251BC .align 2, 0 _08125170: .4byte gStringVar2 -_08125174: .4byte gUnknown_84169C2 +_08125174: .4byte gText_HP3 _08125178: ldr r0, _08125180 @ =gStringVar2 - ldr r1, _08125184 @ =gUnknown_8417674 + ldr r1, _08125184 @ =gText_Attack3 b _081251BC .align 2, 0 _08125180: .4byte gStringVar2 -_08125184: .4byte gUnknown_8417674 +_08125184: .4byte gText_Attack3 _08125188: ldr r0, _08125190 @ =gStringVar2 - ldr r1, _08125194 @ =gUnknown_841767B + ldr r1, _08125194 @ =gText_Defense3 b _081251BC .align 2, 0 _08125190: .4byte gStringVar2 -_08125194: .4byte gUnknown_841767B +_08125194: .4byte gText_Defense3 _08125198: ldr r0, _081251A0 @ =gStringVar2 - ldr r1, _081251A4 @ =gUnknown_841768D + ldr r1, _081251A4 @ =gText_Speed2 b _081251BC .align 2, 0 _081251A0: .4byte gStringVar2 -_081251A4: .4byte gUnknown_841768D +_081251A4: .4byte gText_Speed2 _081251A8: ldr r0, _081251B0 @ =gStringVar2 - ldr r1, _081251B4 @ =gUnknown_84169C5 + ldr r1, _081251B4 @ =gText_SpAtk3 b _081251BC .align 2, 0 _081251B0: .4byte gStringVar2 -_081251B4: .4byte gUnknown_84169C5 +_081251B4: .4byte gText_SpAtk3 _081251B8: ldr r0, _081251CC @ =gStringVar2 - ldr r1, _081251D0 @ =gUnknown_84169CD + ldr r1, _081251D0 @ =gText_SpDef3 _081251BC: bl StringCopy ldr r0, _081251D4 @ =gStringVar4 - ldr r1, _081251D8 @ =gUnknown_8417032 + ldr r1, _081251D8 @ =gText_PkmnBaseVar2StatIncreased bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251CC: .4byte gStringVar2 -_081251D0: .4byte gUnknown_84169CD +_081251D0: .4byte gText_SpDef3 _081251D4: .4byte gStringVar4 -_081251D8: .4byte gUnknown_8417032 +_081251D8: .4byte gText_PkmnBaseVar2StatIncreased _081251DC: ldr r0, _081251E8 @ =gStringVar4 - ldr r1, _081251EC @ =gUnknown_8417002 + ldr r1, _081251EC @ =gText_MovesPPIncreased bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251E8: .4byte gStringVar4 -_081251EC: .4byte gUnknown_8417002 +_081251EC: .4byte gText_MovesPPIncreased _081251F0: ldr r0, _081251FC @ =gStringVar4 - ldr r1, _08125200 @ =gUnknown_8416FC7 + ldr r1, _08125200 @ =gText_PPWasRestored bl StringExpandPlaceholders b _0812520C .align 2, 0 _081251FC: .4byte gStringVar4 -_08125200: .4byte gUnknown_8416FC7 +_08125200: .4byte gText_PPWasRestored _08125204: ldr r0, _08125210 @ =gStringVar4 - ldr r1, _08125214 @ =gUnknown_84169DC + ldr r1, _08125214 @ =gText_WontHaveEffect bl StringExpandPlaceholders _0812520C: pop {r0} bx r0 .align 2, 0 _08125210: .4byte gStringVar4 -_08125214: .4byte gUnknown_84169DC +_08125214: .4byte gText_WontHaveEffect thumb_func_end GetMedicineItemEffectMessage - thumb_func_start UsingHPEVItemOnShedinja -UsingHPEVItemOnShedinja: @ 8125218 + thumb_func_start NotUsingHPEVItemOnShedinja +NotUsingHPEVItemOnShedinja: @ 8125218 push {r4,lr} adds r4, r0, 0 lsls r0, r1, 16 @@ -13151,10 +13151,10 @@ _08125246: pop {r4} pop {r1} bx r1 - thumb_func_end UsingHPEVItemOnShedinja + thumb_func_end NotUsingHPEVItemOnShedinja - thumb_func_start IsBlueYellowRedFlute -IsBlueYellowRedFlute: @ 812524C + thumb_func_start IsItemFlute +IsItemFlute: @ 812524C push {lr} lsls r0, 16 lsrs r0, 16 @@ -13172,10 +13172,10 @@ _08125262: _08125264: pop {r1} bx r1 - thumb_func_end IsBlueYellowRedFlute + thumb_func_end IsItemFlute - thumb_func_start ExecuteTableBasedItemEffect__ -ExecuteTableBasedItemEffect__: @ 8125268 + thumb_func_start ExecuteTableBasedItemEffect_ +ExecuteTableBasedItemEffect_: @ 8125268 push {r4-r6,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -13209,7 +13209,7 @@ _081252A0: ldr r0, _081252CC @ =gPlayerParty adds r4, r0 adds r0, r3, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -13225,7 +13225,7 @@ _081252BA: bx r1 .align 2, 0 _081252CC: .4byte gPlayerParty - thumb_func_end ExecuteTableBasedItemEffect__ + thumb_func_end ExecuteTableBasedItemEffect_ thumb_func_start sub_81252D0 sub_81252D0: @ 81252D0 @@ -13235,7 +13235,7 @@ sub_81252D0: @ 81252D0 mov r8, r1 lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _08125300 @ =gUnknown_203B0A0 + ldr r0, _08125300 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -13246,14 +13246,14 @@ sub_81252D0: @ 81252D0 ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 - bl UsingHPEVItemOnShedinja + bl NotUsingHPEVItemOnShedinja lsls r0, 24 cmp r0, 0 bne _0812530C movs r4, 0x1 b _08125342 .align 2, 0 -_08125300: .4byte gUnknown_203B0A0 +_08125300: .4byte gPartyMenu _08125304: .4byte gPlayerParty _08125308: .4byte gSpecialVar_ItemId _0812530C: @@ -13273,7 +13273,7 @@ _0812530C: movs r1, 0x3A bl GetMonData _08125330: - ldr r0, _08125370 @ =gUnknown_203B0A0 + ldr r0, _08125370 @ =gPartyMenu ldrb r2, [r0, 0x9] adds r0, r5, 0 adds r1, r6, 0 @@ -13286,12 +13286,12 @@ _08125342: bl PlaySE cmp r4, 0 beq _08125380 - ldr r1, _08125374 @ =gUnknown_203B0C0 + ldr r1, _08125374 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] - ldr r0, _08125378 @ =gUnknown_84169DC + ldr r0, _08125378 @ =gText_WontHaveEffect movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812537C @ =gTasks @@ -13303,9 +13303,9 @@ _08125342: str r1, [r0] b _08125398 .align 2, 0 -_08125370: .4byte gUnknown_203B0A0 -_08125374: .4byte gUnknown_203B0C0 -_08125378: .4byte gUnknown_84169DC +_08125370: .4byte gPartyMenu +_08125374: .4byte gPartyMenuUseExitCallback +_08125378: .4byte gText_WontHaveEffect _0812537C: .4byte gTasks _08125380: ldr r3, _081253A4 @ =0x0000ffff @@ -13315,7 +13315,7 @@ _08125380: bl ItemUse_SetQuestLogEvent adds r0, r7, 0 bl sub_8124DC0 - ldr r1, _081253A8 @ =gUnknown_3005E98 + ldr r1, _081253A8 @ =gItemUseCB ldr r0, _081253AC @ =ItemUseCB_Medicine str r0, [r1] _08125398: @@ -13326,7 +13326,7 @@ _08125398: bx r0 .align 2, 0 _081253A4: .4byte 0x0000ffff -_081253A8: .4byte gUnknown_3005E98 +_081253A8: .4byte gItemUseCB _081253AC: .4byte ItemUseCB_Medicine thumb_func_end sub_81252D0 @@ -13344,7 +13344,7 @@ ItemUseCB_Medicine: @ 81253B0 mov r9, r0 movs r0, 0 mov r10, r0 - ldr r0, _08125438 @ =gUnknown_203B0A0 + ldr r0, _08125438 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -13355,7 +13355,7 @@ ItemUseCB_Medicine: @ 81253B0 ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 - bl UsingHPEVItemOnShedinja + bl NotUsingHPEVItemOnShedinja lsls r0, 24 cmp r0, 0 beq _08125428 @@ -13380,34 +13380,34 @@ ItemUseCB_Medicine: @ 81253B0 movs r1, 0 mov r8, r1 _08125416: - ldr r4, _08125438 @ =gUnknown_203B0A0 + ldr r4, _08125438 @ =gPartyMenu ldrb r0, [r4, 0x9] adds r1, r6, 0 movs r2, 0 - bl ExecuteTableBasedItemEffect__ + bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _0812544C _08125428: - ldr r1, _08125444 @ =gUnknown_203B0C0 + ldr r1, _08125444 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] movs r0, 0x5 bl PlaySE - ldr r0, _08125448 @ =gUnknown_84169DC + ldr r0, _08125448 @ =gText_WontHaveEffect b _0812551C .align 2, 0 -_08125438: .4byte gUnknown_203B0A0 +_08125438: .4byte gPartyMenu _0812543C: .4byte gPlayerParty _08125440: .4byte gSpecialVar_ItemId -_08125444: .4byte gUnknown_203B0C0 -_08125448: .4byte gUnknown_84169DC +_08125444: .4byte gPartyMenuUseExitCallback +_08125448: .4byte gText_WontHaveEffect _0812544C: - ldr r1, _08125474 @ =gUnknown_203B0C0 + ldr r1, _08125474 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] adds r0, r6, 0 - bl IsBlueYellowRedFlute + bl IsItemFlute lsls r0, 24 cmp r0, 0 bne _08125478 @@ -13421,20 +13421,20 @@ _0812544C: bl RemoveBagItem b _0812547E .align 2, 0 -_08125474: .4byte gUnknown_203B0C0 +_08125474: .4byte gPartyMenuUseExitCallback _08125478: movs r0, 0x6E bl PlaySE _0812547E: - ldr r4, _081254FC @ =gUnknown_203B0B4 - ldr r7, _08125500 @ =gUnknown_203B0A0 + ldr r4, _081254FC @ =sPartyMenuBoxes + ldr r7, _08125500 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r7, r0] lsls r0, 4 ldr r1, [r4] adds r1, r0 adds r0, r5, 0 - bl party_menu_get_status_condition_and_update_object + bl SetPartyMonAilmentGfx ldr r2, _08125504 @ =gSprites movs r0, 0x9 ldrsb r0, [r7, r0] @@ -13454,7 +13454,7 @@ _0812547E: adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 - bl sub_8121790 + bl DisplayPartyPokemonLevelCheck _081254BC: mov r2, r8 cmp r2, 0x1 @@ -13464,7 +13464,7 @@ _081254BC: bne _081254D0 ldrb r0, [r7, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot _081254D0: adds r0, r5, 0 movs r1, 0x39 @@ -13475,21 +13475,21 @@ _081254D0: lsls r3, 16 asrs r3, 16 ldrb r1, [r7, 0x9] - ldr r0, _08125508 @ =sub_8125554 + ldr r0, _08125508 @ =Task_DisplayHPRestoredMessage str r0, [sp] mov r0, r9 movs r2, 0x1 - bl sub_8120760 + bl PartyMenuModifyHP mov r0, r9 movs r1, 0 mov r2, r10 - bl sub_81207F0 + bl ResetHPTaskData b _08125538 .align 2, 0 -_081254FC: .4byte gUnknown_203B0B4 -_08125500: .4byte gUnknown_203B0A0 +_081254FC: .4byte sPartyMenuBoxes +_08125500: .4byte gPartyMenu _08125504: .4byte gSprites -_08125508: .4byte sub_8125554 +_08125508: .4byte Task_DisplayHPRestoredMessage _0812550C: ldr r1, _08125548 @ =gStringVar1 adds r0, r5, 0 @@ -13499,7 +13499,7 @@ _0812550C: ldr r0, _0812554C @ =gStringVar4 _0812551C: movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125550 @ =gTasks @@ -13525,13 +13525,13 @@ _0812554C: .4byte gStringVar4 _08125550: .4byte gTasks thumb_func_end ItemUseCB_Medicine - thumb_func_start sub_8125554 -sub_8125554: @ 8125554 + thumb_func_start Task_DisplayHPRestoredMessage +Task_DisplayHPRestoredMessage: @ 8125554 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r0, _081255A0 @ =gUnknown_203B0A0 + ldr r0, _081255A0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -13541,12 +13541,12 @@ sub_8125554: @ 8125554 ldr r1, _081255A8 @ =gStringVar1 bl GetMonNickname ldr r4, _081255AC @ =gStringVar4 - ldr r1, _081255B0 @ =gUnknown_8416F27 + ldr r1, _081255B0 @ =gText_PkmnHPRestoredByVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram bl HandleBattleLowHpMusicChange @@ -13555,52 +13555,52 @@ sub_8125554: @ 8125554 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _081255B8 @ =sub_81255BC + ldr r1, _081255B8 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_081255A0: .4byte gUnknown_203B0A0 +_081255A0: .4byte gPartyMenu _081255A4: .4byte gPlayerParty _081255A8: .4byte gStringVar1 _081255AC: .4byte gStringVar4 -_081255B0: .4byte gUnknown_8416F27 +_081255B0: .4byte gText_PkmnHPRestoredByVar2 _081255B4: .4byte gTasks -_081255B8: .4byte sub_81255BC - thumb_func_end sub_8125554 +_081255B8: .4byte Task_ClosePartyMenuAfterText + thumb_func_end Task_DisplayHPRestoredMessage - thumb_func_start sub_81255BC -sub_81255BC: @ 81255BC + thumb_func_start Task_ClosePartyMenuAfterText +Task_ClosePartyMenuAfterText: @ 81255BC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081255E2 - ldr r0, _081255E8 @ =gUnknown_203B0C0 + ldr r0, _081255E8 @ =gPartyMenuUseExitCallback ldrb r1, [r0] cmp r1, 0 bne _081255DC - ldr r0, _081255EC @ =gUnknown_203B09C + ldr r0, _081255EC @ =sPartyMenuInternal ldr r0, [r0] str r1, [r0, 0x4] _081255DC: adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _081255E2: pop {r4} pop {r0} bx r0 .align 2, 0 -_081255E8: .4byte gUnknown_203B0C0 -_081255EC: .4byte gUnknown_203B09C - thumb_func_end sub_81255BC +_081255E8: .4byte gPartyMenuUseExitCallback +_081255EC: .4byte sPartyMenuInternal + thumb_func_end Task_ClosePartyMenuAfterText - thumb_func_start sub_81255F0 -sub_81255F0: @ 81255F0 + thumb_func_start ShowMoveSelectWindow +ShowMoveSelectWindow: @ 81255F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -13615,7 +13615,7 @@ sub_81255F0: @ 81255F0 movs r1, 0x2 mov r8, r1 movs r0, 0x3 - bl sub_8121E5C + bl DisplaySelectionWindow lsls r0, 24 lsrs r0, 24 mov r9, r0 @@ -13698,10 +13698,10 @@ _08125680: .align 2, 0 _081256B8: .4byte gPlayerParty _081256BC: .4byte gMoveNames - thumb_func_end sub_81255F0 + thumb_func_end ShowMoveSelectWindow - thumb_func_start sub_81256C0 -sub_81256C0: @ 81256C0 + thumb_func_start Task_HandleWhichMoveInput +Task_HandleWhichMoveInput: @ 81256C0 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -13719,19 +13719,19 @@ sub_81256C0: @ 81256C0 movs r0, 0x5 bl PlaySE adds r0, r4, 0 - bl sub_81257D4 + bl ReturnToUseOnWhichMon b _081256F2 _081256EC: adds r0, r5, 0 - bl sub_8125790 + bl SetSelectedMoveForPPItem _081256F2: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_81256C0 + thumb_func_end Task_HandleWhichMoveInput - thumb_func_start ItemUseCB_PpRestore -ItemUseCB_PpRestore: @ 81256F8 + thumb_func_start ItemUseCB_PPRecovery +ItemUseCB_PPRecovery: @ 81256F8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -13762,7 +13762,7 @@ _08125726: lsrs r1, r0, 24 cmp r1, 0 bne _0812575C - ldr r0, _08125750 @ =gUnknown_203B0A0 + ldr r0, _08125750 @ =gPartyMenu strh r1, [r0, 0xE] ldrb r1, [r0, 0x8] movs r0, 0xF @@ -13770,11 +13770,11 @@ _08125726: cmp r0, 0x1 bne _08125754 adds r0, r4, 0 - bl sub_8125958 + bl TryUsePPItem b _0812577E .align 2, 0 _0812574C: .4byte gItemEffectTable -_08125750: .4byte gUnknown_203B0A0 +_08125750: .4byte gPartyMenu _08125754: adds r0, r4, 0 bl sub_812580C @@ -13783,38 +13783,38 @@ _0812575C: movs r0, 0x5 bl PlaySE movs r0, 0x17 - bl sub_8121D0C - ldr r0, _08125784 @ =gUnknown_203B0A0 + bl DisplayPartyMenuStdMessage + ldr r0, _08125784 @ =gPartyMenu ldrb r0, [r0, 0x9] - bl sub_81255F0 + bl ShowMoveSelectWindow ldr r1, _08125788 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _0812578C @ =sub_81256C0 + ldr r1, _0812578C @ =Task_HandleWhichMoveInput str r1, [r0] _0812577E: pop {r4} pop {r0} bx r0 .align 2, 0 -_08125784: .4byte gUnknown_203B0A0 +_08125784: .4byte gPartyMenu _08125788: .4byte gTasks -_0812578C: .4byte sub_81256C0 - thumb_func_end ItemUseCB_PpRestore +_0812578C: .4byte Task_HandleWhichMoveInput + thumb_func_end ItemUseCB_PPRecovery - thumb_func_start sub_8125790 -sub_8125790: @ 8125790 + thumb_func_start SetSelectedMoveForPPItem +SetSelectedMoveForPPItem: @ 8125790 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _081257C0 @ =gUnknown_203B09C + ldr r0, _081257C0 @ =sPartyMenuInternal ldr r0, [r0] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow bl Menu_GetCursorPos - ldr r1, _081257C4 @ =gUnknown_203B0A0 + ldr r1, _081257C4 @ =gPartyMenu lsls r0, 24 lsrs r0, 24 strh r0, [r1, 0xE] @@ -13824,11 +13824,11 @@ sub_8125790: @ 8125790 cmp r0, 0x1 bne _081257C8 adds r0, r4, 0 - bl sub_8125958 + bl TryUsePPItem b _081257CE .align 2, 0 -_081257C0: .4byte gUnknown_203B09C -_081257C4: .4byte gUnknown_203B0A0 +_081257C0: .4byte sPartyMenuInternal +_081257C4: .4byte gPartyMenu _081257C8: adds r0, r4, 0 bl sub_812580C @@ -13836,10 +13836,10 @@ _081257CE: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8125790 + thumb_func_end SetSelectedMoveForPPItem - thumb_func_start sub_81257D4 -sub_81257D4: @ 81257D4 + thumb_func_start ReturnToUseOnWhichMon +ReturnToUseOnWhichMon: @ 81257D4 push {lr} lsls r0, 24 lsrs r0, 24 @@ -13848,30 +13848,30 @@ sub_81257D4: @ 81257D4 adds r1, r0 lsls r1, 3 adds r1, r2 - ldr r0, _08125804 @ =sub_811FB28 + ldr r0, _08125804 @ =Task_HandleChooseMonInput str r0, [r1] - ldr r0, _08125808 @ =gUnknown_203B09C + ldr r0, _08125808 @ =sPartyMenuInternal ldr r0, [r0] movs r1, 0 str r1, [r0, 0x4] adds r0, 0xC - bl sub_8121CE4 + bl PartyMenuRemoveWindow movs r0, 0x5 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage pop {r0} bx r0 .align 2, 0 _08125800: .4byte gTasks -_08125804: .4byte sub_811FB28 -_08125808: .4byte gUnknown_203B09C - thumb_func_end sub_81257D4 +_08125804: .4byte Task_HandleChooseMonInput +_08125808: .4byte sPartyMenuInternal + thumb_func_end ReturnToUseOnWhichMon thumb_func_start sub_812580C sub_812580C: @ 812580C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r3, _08125860 @ =gUnknown_203B0A0 + ldr r3, _08125860 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r3, r1] movs r0, 0x64 @@ -13890,12 +13890,12 @@ sub_812580C: @ 812580C bl PlaySE cmp r4, 0 beq _0812587C - ldr r1, _0812586C @ =gUnknown_203B0C0 + ldr r1, _0812586C @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] - ldr r0, _08125870 @ =gUnknown_84169DC + ldr r0, _08125870 @ =gText_WontHaveEffect movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125874 @ =gTasks @@ -13903,21 +13903,21 @@ sub_812580C: @ 812580C adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08125878 @ =sub_81255BC + ldr r1, _08125878 @ =Task_ClosePartyMenuAfterText str r1, [r0] b _08125888 .align 2, 0 -_08125860: .4byte gUnknown_203B0A0 +_08125860: .4byte gPartyMenu _08125864: .4byte gPlayerParty _08125868: .4byte gSpecialVar_ItemId -_0812586C: .4byte gUnknown_203B0C0 -_08125870: .4byte gUnknown_84169DC +_0812586C: .4byte gPartyMenuUseExitCallback +_08125870: .4byte gText_WontHaveEffect _08125874: .4byte gTasks -_08125878: .4byte sub_81255BC +_08125878: .4byte Task_ClosePartyMenuAfterText _0812587C: adds r0, r5, 0 bl sub_8124DC0 - ldr r1, _08125890 @ =gUnknown_3005E98 + ldr r1, _08125890 @ =gItemUseCB ldr r0, _08125894 @ =sub_8125898 str r0, [r1] _08125888: @@ -13925,7 +13925,7 @@ _08125888: pop {r0} bx r0 .align 2, 0 -_08125890: .4byte gUnknown_3005E98 +_08125890: .4byte gItemUseCB _08125894: .4byte sub_8125898 thumb_func_end sub_812580C @@ -13938,7 +13938,7 @@ sub_8125898: @ 8125898 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r5, _08125930 @ =gUnknown_203B0A0 + ldr r5, _08125930 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 @@ -13950,8 +13950,8 @@ sub_8125898: @ 8125898 ldr r6, _08125938 @ =gSpecialVar_ItemId ldrh r1, [r6] ldrb r2, [r5, 0xE] - bl ExecuteTableBasedItemEffect__ - ldr r1, _0812593C @ =gUnknown_203B0C0 + bl ExecuteTableBasedItemEffect_ + ldr r1, _0812593C @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrh r2, [r6] @@ -13982,7 +13982,7 @@ sub_8125898: @ 8125898 bl GetMedicineItemEffectMessage ldr r0, _0812594C @ =gStringVar4 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125950 @ =gTasks @@ -13991,7 +13991,7 @@ sub_8125898: @ 8125898 add r0, r8 lsls r0, 3 adds r0, r1 - ldr r1, _08125954 @ =sub_81255BC + ldr r1, _08125954 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r3} mov r8, r3 @@ -13999,20 +13999,20 @@ sub_8125898: @ 8125898 pop {r0} bx r0 .align 2, 0 -_08125930: .4byte gUnknown_203B0A0 +_08125930: .4byte gPartyMenu _08125934: .4byte gPlayerParty _08125938: .4byte gSpecialVar_ItemId -_0812593C: .4byte gUnknown_203B0C0 +_0812593C: .4byte gPartyMenuUseExitCallback _08125940: .4byte 0x0000ffff _08125944: .4byte gStringVar1 _08125948: .4byte gMoveNames _0812594C: .4byte gStringVar4 _08125950: .4byte gTasks -_08125954: .4byte sub_81255BC +_08125954: .4byte Task_ClosePartyMenuAfterText thumb_func_end sub_8125898 - thumb_func_start sub_8125958 -sub_8125958: @ 8125958 + thumb_func_start TryUsePPItem +TryUsePPItem: @ 8125958 push {r4-r7,lr} mov r7, r8 push {r7} @@ -14029,23 +14029,23 @@ sub_8125958: @ 8125958 ldrb r0, [r0, 0x9] ldrb r2, [r7] adds r1, r5, 0 - bl ExecuteTableBasedItemEffect__ + bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _081259A0 - ldr r0, _08125998 @ =gUnknown_203B0C0 + ldr r0, _08125998 @ =gPartyMenuUseExitCallback strb r4, [r0] movs r0, 0x5 bl PlaySE - ldr r0, _0812599C @ =gUnknown_84169DC + ldr r0, _0812599C @ =gText_WontHaveEffect b _081259F6 .align 2, 0 _08125990: .4byte gUnknown_203B0AE _08125994: .4byte gSpecialVar_ItemId -_08125998: .4byte gUnknown_203B0C0 -_0812599C: .4byte gUnknown_84169DC +_08125998: .4byte gPartyMenuUseExitCallback +_0812599C: .4byte gText_WontHaveEffect _081259A0: - ldr r1, _08125A1C @ =gUnknown_203B0C0 + ldr r1, _08125A1C @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] mov r0, r8 @@ -14084,7 +14084,7 @@ _081259A0: ldr r0, _08125A30 @ =gStringVar4 _081259F6: movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125A34 @ =gTasks @@ -14092,7 +14092,7 @@ _081259F6: adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08125A38 @ =sub_81255BC + ldr r1, _08125A38 @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r3} mov r8, r3 @@ -14100,18 +14100,18 @@ _081259F6: pop {r0} bx r0 .align 2, 0 -_08125A1C: .4byte gUnknown_203B0C0 +_08125A1C: .4byte gPartyMenuUseExitCallback _08125A20: .4byte gPlayerParty _08125A24: .4byte 0x0000ffff _08125A28: .4byte gStringVar1 _08125A2C: .4byte gMoveNames _08125A30: .4byte gStringVar4 _08125A34: .4byte gTasks -_08125A38: .4byte sub_81255BC - thumb_func_end sub_8125958 +_08125A38: .4byte Task_ClosePartyMenuAfterText + thumb_func_end TryUsePPItem - thumb_func_start dp05_pp_up -dp05_pp_up: @ 8125A3C + thumb_func_start ItemUseCB_PPUp +ItemUseCB_PPUp: @ 8125A3C push {r4,lr} adds r4, r0, 0 lsls r4, 24 @@ -14119,48 +14119,48 @@ dp05_pp_up: @ 8125A3C movs r0, 0x5 bl PlaySE movs r0, 0x18 - bl sub_8121D0C - ldr r0, _08125A6C @ =gUnknown_203B0A0 + bl DisplayPartyMenuStdMessage + ldr r0, _08125A6C @ =gPartyMenu ldrb r0, [r0, 0x9] - bl sub_81255F0 + bl ShowMoveSelectWindow ldr r1, _08125A70 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08125A74 @ =sub_81256C0 + ldr r1, _08125A74 @ =Task_HandleWhichMoveInput str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 -_08125A6C: .4byte gUnknown_203B0A0 +_08125A6C: .4byte gPartyMenu _08125A70: .4byte gTasks -_08125A74: .4byte sub_81256C0 - thumb_func_end dp05_pp_up +_08125A74: .4byte Task_HandleWhichMoveInput + thumb_func_end ItemUseCB_PPUp thumb_func_start ItemIdToBattleMoveId ItemIdToBattleMoveId: @ 8125A78 lsls r0, 16 ldr r1, _08125A88 @ =0xfedf0000 adds r0, r1 - ldr r1, _08125A8C @ =gUnknown_845A80C + ldr r1, _08125A8C @ =sTMHMMoves lsrs r0, 15 adds r0, r1 ldrh r0, [r0] bx lr .align 2, 0 _08125A88: .4byte 0xfedf0000 -_08125A8C: .4byte gUnknown_845A80C +_08125A8C: .4byte sTMHMMoves thumb_func_end ItemIdToBattleMoveId - thumb_func_start sub_8125A90 -sub_8125A90: @ 8125A90 + thumb_func_start IsMoveHm +IsMoveHm: @ 8125A90 push {lr} lsls r0, 16 lsrs r2, r0, 16 movs r1, 0 - ldr r3, _08125AAC @ =gUnknown_845A80C + ldr r3, _08125AAC @ =sTMHMMoves _08125A9A: adds r0, r1, 0 adds r0, 0x32 @@ -14172,7 +14172,7 @@ _08125A9A: movs r0, 0x1 b _08125ABC .align 2, 0 -_08125AAC: .4byte gUnknown_845A80C +_08125AAC: .4byte sTMHMMoves _08125AB0: adds r0, r1, 0x1 lsls r0, 24 @@ -14183,7 +14183,7 @@ _08125AB0: _08125ABC: pop {r1} bx r1 - thumb_func_end sub_8125A90 + thumb_func_end IsMoveHm thumb_func_start MonKnowsMove MonKnowsMove: @ 8125AC0 @@ -14214,8 +14214,8 @@ _08125AE8: bx r1 thumb_func_end MonKnowsMove - thumb_func_start sub_8125AF0 -sub_8125AF0: @ 8125AF0 + thumb_func_start DisplayLearnMoveMessage +DisplayLearnMoveMessage: @ 8125AF0 push {r4,lr} adds r1, r0, 0 ldr r4, _08125B10 @ =gStringVar4 @@ -14223,7 +14223,7 @@ sub_8125AF0: @ 8125AF0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram pop {r4} @@ -14231,33 +14231,33 @@ sub_8125AF0: @ 8125AF0 bx r0 .align 2, 0 _08125B10: .4byte gStringVar4 - thumb_func_end sub_8125AF0 + thumb_func_end DisplayLearnMoveMessage - thumb_func_start sub_8125B14 -sub_8125B14: @ 8125B14 + thumb_func_start DisplayLearnMoveMessageAndClose +DisplayLearnMoveMessageAndClose: @ 8125B14 push {r4,lr} adds r4, r0, 0 adds r0, r1, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8125AF0 + bl DisplayLearnMoveMessage ldr r1, _08125B38 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08125B3C @ =sub_81255BC + ldr r1, _08125B3C @ =Task_ClosePartyMenuAfterText str r1, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08125B38: .4byte gTasks -_08125B3C: .4byte sub_81255BC - thumb_func_end sub_8125B14 +_08125B3C: .4byte Task_ClosePartyMenuAfterText + thumb_func_end DisplayLearnMoveMessageAndClose - thumb_func_start sub_8125B40 -sub_8125B40: @ 8125B40 + thumb_func_start ItemUseCB_TMHM +ItemUseCB_TMHM: @ 8125B40 push {r4-r7,lr} mov r7, r8 push {r7} @@ -14265,7 +14265,7 @@ sub_8125B40: @ 8125B40 lsrs r6, r0, 24 movs r0, 0x5 bl PlaySE - ldr r7, _08125BD0 @ =gUnknown_203B0A0 + ldr r7, _08125BD0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 @@ -14297,7 +14297,7 @@ sub_8125B40: @ 8125B40 adds r0, r4, 0 adds r1, r5, 0 movs r2, 0 - bl sub_8120B20 + bl CanMonLearnTMTutor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -14318,42 +14318,42 @@ sub_8125B40: @ 8125B40 bl ItemUse_SetQuestLogEvent adds r0, r6, 0 bl sub_8124DC0 - ldr r1, _08125BEC @ =gUnknown_3005E98 - ldr r0, _08125BF0 @ =sub_8125C38 + ldr r1, _08125BEC @ =gItemUseCB + ldr r0, _08125BF0 @ =Task_LearnedMove_ str r0, [r1] b _08125C20 .align 2, 0 -_08125BD0: .4byte gUnknown_203B0A0 +_08125BD0: .4byte gPartyMenu _08125BD4: .4byte gPlayerParty _08125BD8: .4byte gSpecialVar_ItemId _08125BDC: .4byte gStringVar1 _08125BE0: .4byte gStringVar2 _08125BE4: .4byte gMoveNames _08125BE8: .4byte 0x0000ffff -_08125BEC: .4byte gUnknown_3005E98 -_08125BF0: .4byte sub_8125C38 +_08125BEC: .4byte gItemUseCB +_08125BF0: .4byte Task_LearnedMove_ _08125BF4: - ldr r1, _08125BF8 @ =gUnknown_8416DC2 + ldr r1, _08125BF8 @ =gText_PkmnCantLearnMove b _08125BFE .align 2, 0 -_08125BF8: .4byte gUnknown_8416DC2 +_08125BF8: .4byte gText_PkmnCantLearnMove _08125BFC: - ldr r1, _08125C08 @ =gUnknown_8416F10 + ldr r1, _08125C08 @ =gText_PkmnAlreadyKnows _08125BFE: adds r0, r6, 0 - bl sub_8125B14 + bl DisplayLearnMoveMessageAndClose b _08125C20 .align 2, 0 -_08125C08: .4byte gUnknown_8416F10 +_08125C08: .4byte gText_PkmnAlreadyKnows _08125C0C: - ldr r0, _08125C2C @ =gUnknown_8416DF7 - bl sub_8125AF0 + ldr r0, _08125C2C @ =gText_PkmnNeedsToReplaceMove + bl DisplayLearnMoveMessage ldr r1, _08125C30 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08125C34 @ =sub_8125D88 + ldr r1, _08125C34 @ =Task_ReplaceMoveYesNo str r1, [r0] _08125C20: pop {r3} @@ -14362,27 +14362,27 @@ _08125C20: pop {r0} bx r0 .align 2, 0 -_08125C2C: .4byte gUnknown_8416DF7 +_08125C2C: .4byte gText_PkmnNeedsToReplaceMove _08125C30: .4byte gTasks -_08125C34: .4byte sub_8125D88 - thumb_func_end sub_8125B40 +_08125C34: .4byte Task_ReplaceMoveYesNo + thumb_func_end ItemUseCB_TMHM - thumb_func_start sub_8125C38 -sub_8125C38: @ 8125C38 + thumb_func_start Task_LearnedMove_ +Task_LearnedMove_: @ 8125C38 push {lr} lsls r0, 24 lsrs r0, 24 - bl sub_8125C48 + bl Task_LearnedMove pop {r0} bx r0 - thumb_func_end sub_8125C38 + thumb_func_end Task_LearnedMove_ - thumb_func_start sub_8125C48 -sub_8125C48: @ 8125C48 + thumb_func_start Task_LearnedMove +Task_LearnedMove: @ 8125C48 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r2, _08125CCC @ =gUnknown_203B0A0 + ldr r2, _08125CCC @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 @@ -14420,12 +14420,12 @@ _08125C84: adds r1, r2 bl StringCopy ldr r4, _08125CE4 @ =gStringVar4 - ldr r1, _08125CE8 @ =gUnknown_8416DB3 + ldr r1, _08125CE8 @ =gText_PkmnLearnedMove3 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08125CEC @ =gTasks @@ -14433,30 +14433,30 @@ _08125C84: adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _08125CF0 @ =sub_8125CF4 + ldr r1, _08125CF0 @ =Task_DoLearnedMoveFanfareAfterText str r1, [r0] pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_08125CCC: .4byte gUnknown_203B0A0 +_08125CCC: .4byte gPartyMenu _08125CD0: .4byte gPlayerParty _08125CD4: .4byte gSpecialVar_ItemId _08125CD8: .4byte gStringVar1 _08125CDC: .4byte gStringVar2 _08125CE0: .4byte gMoveNames _08125CE4: .4byte gStringVar4 -_08125CE8: .4byte gUnknown_8416DB3 +_08125CE8: .4byte gText_PkmnLearnedMove3 _08125CEC: .4byte gTasks -_08125CF0: .4byte sub_8125CF4 - thumb_func_end sub_8125C48 +_08125CF0: .4byte Task_DoLearnedMoveFanfareAfterText + thumb_func_end Task_LearnedMove - thumb_func_start sub_8125CF4 -sub_8125CF4: @ 8125CF4 + thumb_func_start Task_DoLearnedMoveFanfareAfterText +Task_DoLearnedMoveFanfareAfterText: @ 8125CF4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -14468,7 +14468,7 @@ sub_8125CF4: @ 8125CF4 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08125D28 @ =sub_8125D2C + ldr r1, _08125D28 @ =Task_LearnNextMoveOrClosePartyMenu str r1, [r0] _08125D1A: pop {r4} @@ -14477,11 +14477,11 @@ _08125D1A: .align 2, 0 _08125D20: .4byte 0x00000101 _08125D24: .4byte gTasks -_08125D28: .4byte sub_8125D2C - thumb_func_end sub_8125CF4 +_08125D28: .4byte Task_LearnNextMoveOrClosePartyMenu + thumb_func_end Task_DoLearnedMoveFanfareAfterText - thumb_func_start sub_8125D2C -sub_8125D2C: @ 8125D2C + thumb_func_start Task_LearnNextMoveOrClosePartyMenu +Task_LearnNextMoveOrClosePartyMenu: @ 8125D2C push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -14502,17 +14502,17 @@ sub_8125D2C: @ 8125D2C cmp r0, 0 beq _08125D7E _08125D54: - ldr r0, _08125D6C @ =gUnknown_203B0A0 + ldr r0, _08125D6C @ =gPartyMenu movs r1, 0x10 ldrsh r0, [r0, r1] cmp r0, 0x1 bne _08125D70 adds r0, r4, 0 - bl sub_81266A0 + bl Task_TryLearningNextMove b _08125D7E .align 2, 0 _08125D68: .4byte gMain -_08125D6C: .4byte gUnknown_203B0A0 +_08125D6C: .4byte gPartyMenu _08125D70: cmp r0, 0x2 bne _08125D78 @@ -14520,32 +14520,32 @@ _08125D70: strh r2, [r0] _08125D78: adds r0, r5, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _08125D7E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08125D84: .4byte gSpecialVar_Result - thumb_func_end sub_8125D2C + thumb_func_end Task_LearnNextMoveOrClosePartyMenu - thumb_func_start sub_8125D88 -sub_8125D88: @ 8125D88 + thumb_func_start Task_ReplaceMoveYesNo +Task_ReplaceMoveYesNo: @ 8125D88 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125DAC - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08125DB4 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08125DB8 @ =sub_8125DBC + ldr r0, _08125DB8 @ =Task_HandleReplaceMoveYesNoInput str r0, [r1] _08125DAC: pop {r4} @@ -14553,11 +14553,11 @@ _08125DAC: bx r0 .align 2, 0 _08125DB4: .4byte gTasks -_08125DB8: .4byte sub_8125DBC - thumb_func_end sub_8125D88 +_08125DB8: .4byte Task_HandleReplaceMoveYesNoInput + thumb_func_end Task_ReplaceMoveYesNo - thumb_func_start sub_8125DBC -sub_8125DBC: @ 8125DBC + thumb_func_start Task_HandleReplaceMoveYesNoInput +Task_HandleReplaceMoveYesNoInput: @ 8125DBC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -14578,71 +14578,71 @@ _08125DDC: beq _08125E0E b _08125E14 _08125DE2: - ldr r0, _08125DFC @ =gUnknown_8416EA4 + ldr r0, _08125DFC @ =gText_WhichMoveToForget movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage ldr r1, _08125E00 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08125E04 @ =sub_8125E1C + ldr r1, _08125E04 @ =Task_ShowSummaryScreenToForgetMove str r1, [r0] b _08125E14 .align 2, 0 -_08125DFC: .4byte gUnknown_8416EA4 +_08125DFC: .4byte gText_WhichMoveToForget _08125E00: .4byte gTasks -_08125E04: .4byte sub_8125E1C +_08125E04: .4byte Task_ShowSummaryScreenToForgetMove _08125E08: movs r0, 0x5 bl PlaySE _08125E0E: adds r0, r4, 0 - bl sub_81260D8 + bl StopLearningMovePrompt _08125E14: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8125DBC + thumb_func_end Task_HandleReplaceMoveYesNoInput - thumb_func_start sub_8125E1C -sub_8125E1C: @ 8125E1C + thumb_func_start Task_ShowSummaryScreenToForgetMove +Task_ShowSummaryScreenToForgetMove: @ 8125E1C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08125E3C - ldr r0, _08125E44 @ =gUnknown_203B09C + ldr r0, _08125E44 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _08125E48 @ =sub_8125E4C + ldr r0, _08125E48 @ =CB2_ShowSummaryScreenToForgetMove str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _08125E3C: pop {r4} pop {r0} bx r0 .align 2, 0 -_08125E44: .4byte gUnknown_203B09C -_08125E48: .4byte sub_8125E4C - thumb_func_end sub_8125E1C +_08125E44: .4byte sPartyMenuInternal +_08125E48: .4byte CB2_ShowSummaryScreenToForgetMove + thumb_func_end Task_ShowSummaryScreenToForgetMove - thumb_func_start sub_8125E4C -sub_8125E4C: @ 8125E4C + thumb_func_start CB2_ShowSummaryScreenToForgetMove +CB2_ShowSummaryScreenToForgetMove: @ 8125E4C push {r4,lr} sub sp, 0x4 ldr r0, _08125E74 @ =gPlayerParty - ldr r4, _08125E78 @ =gUnknown_203B0A0 + ldr r4, _08125E78 @ =gPartyMenu ldrb r1, [r4, 0x9] ldr r2, _08125E7C @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 - ldr r3, _08125E80 @ =sub_8125E84 + ldr r3, _08125E80 @ =CB2_ReturnToPartyMenuWhileLearningMove ldrh r4, [r4, 0xE] str r4, [sp] bl ShowSelectMovePokemonSummaryScreen @@ -14652,19 +14652,19 @@ sub_8125E4C: @ 8125E4C bx r0 .align 2, 0 _08125E74: .4byte gPlayerParty -_08125E78: .4byte gUnknown_203B0A0 +_08125E78: .4byte gPartyMenu _08125E7C: .4byte gPlayerPartyCount -_08125E80: .4byte sub_8125E84 - thumb_func_end sub_8125E4C +_08125E80: .4byte CB2_ReturnToPartyMenuWhileLearningMove + thumb_func_end CB2_ShowSummaryScreenToForgetMove - thumb_func_start sub_8125E84 -sub_8125E84: @ 8125E84 + thumb_func_start CB2_ReturnToPartyMenuWhileLearningMove +CB2_ReturnToPartyMenuWhileLearningMove: @ 8125E84 push {r4,r5,lr} sub sp, 0xC bl GetMoveSlotToReplace lsls r0, 24 lsrs r2, r0, 24 - ldr r4, _08125ED0 @ =gUnknown_203B0A0 + ldr r4, _08125ED0 @ =gPartyMenu movs r0, 0x10 ldrsh r5, [r4, r0] cmp r5, 0 @@ -14688,43 +14688,43 @@ sub_8125E84: @ 8125E84 ldrh r1, [r1] ldr r3, _08125EDC @ =sub_8124EFC bl sub_811C568 - ldr r1, _08125EE0 @ =gUnknown_3005E98 + ldr r1, _08125EE0 @ =gItemUseCB ldr r0, _08125EE4 @ =sub_8125F4C str r0, [r1] strb r5, [r4, 0xB] b _08125F02 .align 2, 0 -_08125ED0: .4byte gUnknown_203B0A0 +_08125ED0: .4byte gPartyMenu _08125ED4: .4byte gPlayerParty _08125ED8: .4byte gSpecialVar_ItemId _08125EDC: .4byte sub_8124EFC -_08125EE0: .4byte gUnknown_3005E98 +_08125EE0: .4byte gItemUseCB _08125EE4: .4byte sub_8125F4C _08125EE8: movs r0, 0x7F str r0, [sp] - ldr r0, _08125F0C @ =sub_8125F14 + ldr r0, _08125F0C @ =Task_ReturnToPartyMenuWhileLearningMove str r0, [sp, 0x4] - ldr r0, _08125F10 @ =gUnknown_203B0A0 + ldr r0, _08125F10 @ =gPartyMenu ldr r0, [r0] str r0, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0 movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu _08125F02: add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08125F0C: .4byte sub_8125F14 -_08125F10: .4byte gUnknown_203B0A0 - thumb_func_end sub_8125E84 +_08125F0C: .4byte Task_ReturnToPartyMenuWhileLearningMove +_08125F10: .4byte gPartyMenu + thumb_func_end CB2_ReturnToPartyMenuWhileLearningMove - thumb_func_start sub_8125F14 -sub_8125F14: @ 8125F14 + thumb_func_start Task_ReturnToPartyMenuWhileLearningMove +Task_ReturnToPartyMenuWhileLearningMove: @ 8125F14 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -14741,18 +14741,18 @@ sub_8125F14: @ 8125F14 cmp r0, 0x4 beq _08125F40 adds r0, r4, 0 - bl sub_8125FFC + bl DisplayPartyMenuForgotMoveMessage b _08125F46 .align 2, 0 _08125F3C: .4byte gPaletteFade _08125F40: adds r0, r5, 0 - bl sub_81260D8 + bl StopLearningMovePrompt _08125F46: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_8125F14 + thumb_func_end Task_ReturnToPartyMenuWhileLearningMove thumb_func_start sub_8125F4C sub_8125F4C: @ 8125F4C @@ -14774,7 +14774,7 @@ sub_8125F5C: @ 8125F5C lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r0, _08125FE4 @ =gUnknown_203B0A0 + ldr r0, _08125FE4 @ =gPartyMenu mov r9, r0 movs r1, 0x9 ldrsb r1, [r0, r1] @@ -14818,7 +14818,7 @@ sub_8125F5C: @ 8125F5C adds r2, r5, 0 bl SetMonMoveSlot mov r0, r8 - bl sub_8125C48 + bl Task_LearnedMove pop {r3,r4} mov r8, r3 mov r9, r4 @@ -14826,7 +14826,7 @@ sub_8125F5C: @ 8125F5C pop {r0} bx r0 .align 2, 0 -_08125FE4: .4byte gUnknown_203B0A0 +_08125FE4: .4byte gPartyMenu _08125FE8: .4byte gPlayerParty _08125FEC: .4byte gSpecialVar_ItemId _08125FF0: .4byte gStringVar1 @@ -14834,13 +14834,13 @@ _08125FF4: .4byte gStringVar2 _08125FF8: .4byte gMoveNames thumb_func_end sub_8125F5C - thumb_func_start sub_8125FFC -sub_8125FFC: @ 8125FFC + thumb_func_start DisplayPartyMenuForgotMoveMessage +DisplayPartyMenuForgotMoveMessage: @ 8125FFC push {r4-r6,lr} adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 - ldr r0, _0812605C @ =gUnknown_203B0A0 + ldr r0, _0812605C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -14868,39 +14868,39 @@ sub_8125FFC: @ 8125FFC adds r1, r2 bl StringCopy ldr r0, _08126070 @ =gUnknown_8416EC6 - bl sub_8125AF0 + bl DisplayLearnMoveMessage ldr r1, _08126074 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08126078 @ =sub_812607C + ldr r1, _08126078 @ =Task_PartyMenuReplaceMove str r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_0812605C: .4byte gUnknown_203B0A0 +_0812605C: .4byte gPartyMenu _08126060: .4byte gPlayerParty _08126064: .4byte gStringVar1 _08126068: .4byte gStringVar2 _0812606C: .4byte gMoveNames _08126070: .4byte gUnknown_8416EC6 _08126074: .4byte gTasks -_08126078: .4byte sub_812607C - thumb_func_end sub_8125FFC +_08126078: .4byte Task_PartyMenuReplaceMove + thumb_func_end DisplayPartyMenuForgotMoveMessage - thumb_func_start sub_812607C -sub_812607C: @ 812607C + thumb_func_start Task_PartyMenuReplaceMove +Task_PartyMenuReplaceMove: @ 812607C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081260C8 - ldr r5, _081260D0 @ =gUnknown_203B0A0 + ldr r5, _081260D0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r5, r1] movs r0, 0x64 @@ -14923,24 +14923,24 @@ sub_812607C: @ 812607C adds r1, r5, 0 bl SetMonMoveSlot adds r0, r6, 0 - bl sub_8125C48 + bl Task_LearnedMove _081260C8: pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_081260D0: .4byte gUnknown_203B0A0 +_081260D0: .4byte gPartyMenu _081260D4: .4byte gPlayerParty - thumb_func_end sub_812607C + thumb_func_end Task_PartyMenuReplaceMove - thumb_func_start sub_81260D8 -sub_81260D8: @ 81260D8 + thumb_func_start StopLearningMovePrompt +StopLearningMovePrompt: @ 81260D8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _08126120 @ =gStringVar2 - ldr r1, _08126124 @ =gUnknown_203B0A0 + ldr r1, _08126124 @ =gPartyMenu movs r3, 0xE ldrsh r2, [r1, r3] movs r1, 0xD @@ -14949,12 +14949,12 @@ sub_81260D8: @ 81260D8 adds r1, r2 bl StringCopy ldr r4, _0812612C @ =gStringVar4 - ldr r1, _08126130 @ =gUnknown_8416E6B + ldr r1, _08126130 @ =gText_StopLearningMove2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126134 @ =gTasks @@ -14962,38 +14962,38 @@ sub_81260D8: @ 81260D8 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08126138 @ =sub_812613C + ldr r1, _08126138 @ =Task_StopLearningMoveYesNo str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08126120: .4byte gStringVar2 -_08126124: .4byte gUnknown_203B0A0 +_08126124: .4byte gPartyMenu _08126128: .4byte gMoveNames _0812612C: .4byte gStringVar4 -_08126130: .4byte gUnknown_8416E6B +_08126130: .4byte gText_StopLearningMove2 _08126134: .4byte gTasks -_08126138: .4byte sub_812613C - thumb_func_end sub_81260D8 +_08126138: .4byte Task_StopLearningMoveYesNo + thumb_func_end StopLearningMovePrompt - thumb_func_start sub_812613C -sub_812613C: @ 812613C + thumb_func_start Task_StopLearningMoveYesNo +Task_StopLearningMoveYesNo: @ 812613C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126160 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08126168 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _0812616C @ =sub_8126170 + ldr r0, _0812616C @ =Task_HandleStopLearningMoveYesNoInput str r0, [r1] _08126160: pop {r4} @@ -15001,15 +15001,15 @@ _08126160: bx r0 .align 2, 0 _08126168: .4byte gTasks -_0812616C: .4byte sub_8126170 - thumb_func_end sub_812613C +_0812616C: .4byte Task_HandleStopLearningMoveYesNoInput + thumb_func_end Task_StopLearningMoveYesNo - thumb_func_start sub_8126170 -sub_8126170: @ 8126170 + thumb_func_start Task_HandleStopLearningMoveYesNoInput +Task_HandleStopLearningMoveYesNoInput: @ 8126170 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r7, _081261A0 @ =gUnknown_203B0A0 + ldr r7, _081261A0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 @@ -15029,7 +15029,7 @@ sub_8126170: @ 8126170 beq _08126234 b _0812626A .align 2, 0 -_081261A0: .4byte gUnknown_203B0A0 +_081261A0: .4byte gPartyMenu _081261A4: .4byte gPlayerParty _081261A8: cmp r5, 0x1 @@ -15048,12 +15048,12 @@ _081261AE: adds r1, r2 bl StringCopy ldr r4, _08126200 @ =gStringVar4 - ldr r1, _08126204 @ =gUnknown_8416E84 + ldr r1, _08126204 @ =gText_MoveNotLearned adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r3, 0x10 ldrsh r0, [r7, r3] cmp r0, 0x1 @@ -15063,7 +15063,7 @@ _081261AE: adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, _0812620C @ =sub_812628C + ldr r0, _0812620C @ =Task_TryLearningNextMoveAfterText str r0, [r1] b _0812626A .align 2, 0 @@ -15071,9 +15071,9 @@ _081261F4: .4byte gStringVar1 _081261F8: .4byte gStringVar2 _081261FC: .4byte gMoveNames _08126200: .4byte gStringVar4 -_08126204: .4byte gUnknown_8416E84 +_08126204: .4byte gText_MoveNotLearned _08126208: .4byte gTasks -_0812620C: .4byte sub_812628C +_0812620C: .4byte Task_TryLearningNextMoveAfterText _08126210: cmp r0, 0x2 bne _08126218 @@ -15085,13 +15085,13 @@ _08126218: adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, _08126230 @ =sub_81255BC + ldr r0, _08126230 @ =Task_ClosePartyMenuAfterText str r0, [r1] b _0812626A .align 2, 0 _08126228: .4byte gSpecialVar_Result _0812622C: .4byte gTasks -_08126230: .4byte sub_81255BC +_08126230: .4byte Task_ClosePartyMenuAfterText _08126234: movs r0, 0x5 bl PlaySE @@ -15100,7 +15100,7 @@ _0812623A: adds r0, r4, 0 bl GetMonNickname ldr r0, _08126274 @ =gStringVar2 - ldr r1, _08126278 @ =gUnknown_203B0A0 + ldr r1, _08126278 @ =gPartyMenu movs r3, 0xE ldrsh r2, [r1, r3] movs r1, 0xD @@ -15108,14 +15108,14 @@ _0812623A: ldr r2, _0812627C @ =gMoveNames adds r1, r2 bl StringCopy - ldr r0, _08126280 @ =gUnknown_8416DF7 - bl sub_8125AF0 + ldr r0, _08126280 @ =gText_PkmnNeedsToReplaceMove + bl DisplayLearnMoveMessage ldr r1, _08126284 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08126288 @ =sub_8125D88 + ldr r1, _08126288 @ =Task_ReplaceMoveYesNo str r1, [r0] _0812626A: pop {r4-r7} @@ -15124,30 +15124,30 @@ _0812626A: .align 2, 0 _08126270: .4byte gStringVar1 _08126274: .4byte gStringVar2 -_08126278: .4byte gUnknown_203B0A0 +_08126278: .4byte gPartyMenu _0812627C: .4byte gMoveNames -_08126280: .4byte gUnknown_8416DF7 +_08126280: .4byte gText_PkmnNeedsToReplaceMove _08126284: .4byte gTasks -_08126288: .4byte sub_8125D88 - thumb_func_end sub_8126170 +_08126288: .4byte Task_ReplaceMoveYesNo + thumb_func_end Task_HandleStopLearningMoveYesNoInput - thumb_func_start sub_812628C -sub_812628C: @ 812628C + thumb_func_start Task_TryLearningNextMoveAfterText +Task_TryLearningNextMoveAfterText: @ 812628C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _081262A4 adds r0, r4, 0 - bl sub_81266A0 + bl Task_TryLearningNextMove _081262A4: pop {r4} pop {r0} bx r0 - thumb_func_end sub_812628C + thumb_func_end Task_TryLearningNextMoveAfterText thumb_func_start dp05_rare_candy dp05_rare_candy: @ 81262AC @@ -15157,7 +15157,7 @@ dp05_rare_candy: @ 81262AC mov r8, r1 lsls r0, 24 lsrs r6, r0, 24 - ldr r7, _081262E8 @ =gUnknown_203B0A0 + ldr r7, _081262E8 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 @@ -15180,7 +15180,7 @@ dp05_rare_candy: @ 81262AC lsrs r4, r0, 24 b _081262F6 .align 2, 0 -_081262E8: .4byte gUnknown_203B0A0 +_081262E8: .4byte gPartyMenu _081262EC: .4byte gPlayerParty _081262F0: .4byte gSpecialVar_ItemId _081262F4: @@ -15190,12 +15190,12 @@ _081262F6: bl PlaySE cmp r4, 0 beq _08126330 - ldr r1, _08126324 @ =gUnknown_203B0C0 + ldr r1, _08126324 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] - ldr r0, _08126328 @ =gUnknown_84169DC + ldr r0, _08126328 @ =gText_WontHaveEffect movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812632C @ =gTasks @@ -15207,14 +15207,14 @@ _081262F6: str r1, [r0] b _0812633C .align 2, 0 -_08126324: .4byte gUnknown_203B0C0 -_08126328: .4byte gUnknown_84169DC +_08126324: .4byte gPartyMenuUseExitCallback +_08126328: .4byte gText_WontHaveEffect _0812632C: .4byte gTasks _08126330: adds r0, r6, 0 bl sub_8124DC0 - ldr r1, _08126348 @ =gUnknown_3005E98 - ldr r0, _0812634C @ =sub_8126350 + ldr r1, _08126348 @ =gItemUseCB + ldr r0, _0812634C @ =ItemUseCB_RareCandy str r0, [r1] _0812633C: pop {r3} @@ -15223,12 +15223,12 @@ _0812633C: pop {r0} bx r0 .align 2, 0 -_08126348: .4byte gUnknown_3005E98 -_0812634C: .4byte sub_8126350 +_08126348: .4byte gItemUseCB +_0812634C: .4byte ItemUseCB_RareCandy thumb_func_end dp05_rare_candy - thumb_func_start sub_8126350 -sub_8126350: @ 8126350 + thumb_func_start ItemUseCB_RareCandy +ItemUseCB_RareCandy: @ 8126350 push {r4-r7,lr} mov r7, r8 push {r7} @@ -15236,7 +15236,7 @@ sub_8126350: @ 8126350 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r6, _08126410 @ =gUnknown_203B0A0 + ldr r6, _08126410 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 @@ -15244,7 +15244,7 @@ sub_8126350: @ 8126350 muls r4, r0 ldr r0, _08126414 @ =gPlayerParty adds r4, r0 - ldr r0, _08126418 @ =gUnknown_203B09C + ldr r0, _08126418 @ =sPartyMenuInternal ldr r7, [r0] movs r2, 0x86 lsls r2, 2 @@ -15255,13 +15255,13 @@ sub_8126350: @ 8126350 ldr r5, _0812641C @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 - bl ExecuteTableBasedItemEffect__ + bl ExecuteTableBasedItemEffect_ movs r0, 0x89 lsls r0, 2 adds r1, r7, r0 adds r0, r4, 0 bl GetMonLevelUpWindowStats - ldr r1, _08126420 @ =gUnknown_203B0C0 + ldr r1, _08126420 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrh r2, [r5] @@ -15273,7 +15273,7 @@ sub_8126350: @ 8126350 bl PlayFanfareByFanfareNum ldrb r0, [r6, 0x9] adds r1, r4, 0 - bl sub_8126440 + bl UpdateMonDisplayInfoAfterRareCandy ldrh r0, [r5] movs r1, 0x1 bl RemoveBagItem @@ -15291,12 +15291,12 @@ sub_8126350: @ 8126350 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r4, _08126430 @ =gStringVar4 - ldr r1, _08126434 @ =gUnknown_8417017 + ldr r1, _08126434 @ =gText_PkmnElevatedToLvVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126438 @ =gTasks @@ -15305,7 +15305,7 @@ sub_8126350: @ 8126350 add r0, r8 lsls r0, 3 adds r0, r1 - ldr r1, _0812643C @ =sub_81264C8 + ldr r1, _0812643C @ =Task_DisplayLevelUpStatsPg1 str r1, [r0] pop {r3} mov r8, r3 @@ -15313,33 +15313,33 @@ sub_8126350: @ 8126350 pop {r0} bx r0 .align 2, 0 -_08126410: .4byte gUnknown_203B0A0 +_08126410: .4byte gPartyMenu _08126414: .4byte gPlayerParty -_08126418: .4byte gUnknown_203B09C +_08126418: .4byte sPartyMenuInternal _0812641C: .4byte gSpecialVar_ItemId -_08126420: .4byte gUnknown_203B0C0 +_08126420: .4byte gPartyMenuUseExitCallback _08126424: .4byte 0x0000ffff _08126428: .4byte gStringVar1 _0812642C: .4byte gStringVar2 _08126430: .4byte gStringVar4 -_08126434: .4byte gUnknown_8417017 +_08126434: .4byte gText_PkmnElevatedToLvVar2 _08126438: .4byte gTasks -_0812643C: .4byte sub_81264C8 - thumb_func_end sub_8126350 +_0812643C: .4byte Task_DisplayLevelUpStatsPg1 + thumb_func_end ItemUseCB_RareCandy - thumb_func_start sub_8126440 -sub_8126440: @ 8126440 + thumb_func_start UpdateMonDisplayInfoAfterRareCandy +UpdateMonDisplayInfoAfterRareCandy: @ 8126440 push {r4-r7,lr} adds r5, r1, 0 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r6, _081264C0 @ =gUnknown_203B0B4 + ldr r6, _081264C0 @ =sPartyMenuBoxes lsls r4, r7, 4 ldr r1, [r6] adds r1, r4 adds r0, r5, 0 - bl party_menu_get_status_condition_and_update_object + bl SetPartyMonAilmentGfx ldr r2, _081264C4 @ =gSprites ldr r0, [r6] adds r3, r4, r0 @@ -15356,42 +15356,42 @@ sub_8126440: @ 8126440 adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 - bl sub_8121790 + bl DisplayPartyPokemonLevelCheck _0812647C: ldr r1, [r6] adds r1, r4 adds r0, r5, 0 movs r2, 0x1 - bl sub_812199C + bl DisplayPartyPokemonHPCheck ldr r1, [r6] adds r1, r4 adds r0, r5, 0 movs r2, 0x1 - bl sub_8121A3C + bl DisplayPartyPokemonMaxHPCheck ldr r1, [r6] adds r1, r4 adds r0, r5, 0 - bl sub_8121AF0 + bl DisplayPartyPokemonHPBarCheck ldr r0, [r6] adds r0, r4, r0 ldrb r0, [r0, 0x9] adds r1, r5, 0 - bl sub_8122358 + bl UpdatePartyMonHPBar adds r0, r7, 0 movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot movs r0, 0 bl ScheduleBgCopyTilemapToVram pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_081264C0: .4byte gUnknown_203B0B4 +_081264C0: .4byte sPartyMenuBoxes _081264C4: .4byte gSprites - thumb_func_end sub_8126440 + thumb_func_end UpdateMonDisplayInfoAfterRareCandy - thumb_func_start sub_81264C8 -sub_81264C8: @ 81264C8 + thumb_func_start Task_DisplayLevelUpStatsPg1 +Task_DisplayLevelUpStatsPg1: @ 81264C8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -15400,7 +15400,7 @@ sub_81264C8: @ 81264C8 lsls r0, 24 cmp r0, 0 beq _08126514 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -15419,13 +15419,13 @@ _081264FA: movs r0, 0x5 bl PlaySE adds r0, r4, 0 - bl sub_8126570 + bl DisplayLevelUpStatsPg1 ldr r0, _08126520 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08126524 @ =sub_8126528 + ldr r0, _08126524 @ =Task_DisplayLevelUpStatsPg2 str r0, [r1] _08126514: pop {r4} @@ -15434,11 +15434,11 @@ _08126514: .align 2, 0 _0812651C: .4byte gMain _08126520: .4byte gTasks -_08126524: .4byte sub_8126528 - thumb_func_end sub_81264C8 +_08126524: .4byte Task_DisplayLevelUpStatsPg2 + thumb_func_end Task_DisplayLevelUpStatsPg1 - thumb_func_start sub_8126528 -sub_8126528: @ 8126528 + thumb_func_start Task_DisplayLevelUpStatsPg2 +Task_DisplayLevelUpStatsPg2: @ 8126528 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -15456,13 +15456,13 @@ _08126542: movs r0, 0x5 bl PlaySE adds r0, r4, 0 - bl sub_81265BC + bl DisplayLevelUpStatsPg2 ldr r0, _08126568 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _0812656C @ =sub_81265F8 + ldr r0, _0812656C @ =Task_TryLearnNewMoves str r0, [r1] _0812655C: pop {r4} @@ -15471,19 +15471,19 @@ _0812655C: .align 2, 0 _08126564: .4byte gMain _08126568: .4byte gTasks -_0812656C: .4byte sub_81265F8 - thumb_func_end sub_8126528 +_0812656C: .4byte Task_TryLearnNewMoves + thumb_func_end Task_DisplayLevelUpStatsPg2 - thumb_func_start sub_8126570 -sub_8126570: @ 8126570 + thumb_func_start DisplayLevelUpStatsPg1 +DisplayLevelUpStatsPg1: @ 8126570 push {r4,r5,lr} sub sp, 0x8 - ldr r0, _081265B8 @ =gUnknown_203B09C + ldr r0, _081265B8 @ =sPartyMenuInternal ldr r5, [r0] movs r0, 0x86 lsls r0, 2 adds r4, r5, r0 - bl sub_8122034 + bl CreateLevelUpStatsWindow lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x18] @@ -15508,14 +15508,14 @@ sub_8126570: @ 8126570 pop {r0} bx r0 .align 2, 0 -_081265B8: .4byte gUnknown_203B09C - thumb_func_end sub_8126570 +_081265B8: .4byte sPartyMenuInternal + thumb_func_end DisplayLevelUpStatsPg1 - thumb_func_start sub_81265BC -sub_81265BC: @ 81265BC + thumb_func_start DisplayLevelUpStatsPg2 +DisplayLevelUpStatsPg2: @ 81265BC push {r4,lr} sub sp, 0x4 - ldr r0, _081265F4 @ =gUnknown_203B09C + ldr r0, _081265F4 @ =sPartyMenuInternal ldr r1, [r0] movs r0, 0x86 lsls r0, 2 @@ -15539,11 +15539,11 @@ sub_81265BC: @ 81265BC pop {r0} bx r0 .align 2, 0 -_081265F4: .4byte gUnknown_203B09C - thumb_func_end sub_81265BC +_081265F4: .4byte sPartyMenuInternal + thumb_func_end DisplayLevelUpStatsPg2 - thumb_func_start sub_81265F8 -sub_81265F8: @ 81265F8 + thumb_func_start Task_TryLearnNewMoves +Task_TryLearnNewMoves: @ 81265F8 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -15564,8 +15564,8 @@ sub_81265F8: @ 81265F8 cmp r0, 0 beq _0812669A _08126620: - bl sub_8122064 - ldr r4, _08126654 @ =gUnknown_203B0A0 + bl RemoveLevelUpStatsWindow + ldr r4, _08126654 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r4, r1] movs r0, 0x64 @@ -15587,7 +15587,7 @@ _08126620: b _08126694 .align 2, 0 _08126650: .4byte gMain -_08126654: .4byte gUnknown_203B0A0 +_08126654: .4byte gPartyMenu _08126658: .4byte gPlayerParty _0812665C: .4byte 0x0000fffe _08126660: @@ -15599,11 +15599,11 @@ _08126660: _08126668: .4byte 0x0000ffff _0812666C: adds r0, r5, 0 - bl sub_8126704 + bl PartyMenuTryEvolution b _0812669A _08126674: adds r0, r5, 0 - bl sub_8126770 + bl DisplayMonNeedsToReplaceMove b _0812669A _0812667C: ldr r0, _0812668C @ =gTasks @@ -15611,27 +15611,27 @@ _0812667C: adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _08126690 @ =sub_81266A0 + ldr r0, _08126690 @ =Task_TryLearningNextMove str r0, [r1] b _0812669A .align 2, 0 _0812668C: .4byte gTasks -_08126690: .4byte sub_81266A0 +_08126690: .4byte Task_TryLearningNextMove _08126694: adds r0, r5, 0 - bl sub_8126804 + bl DisplayMonLearnedMove _0812669A: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_81265F8 + thumb_func_end Task_TryLearnNewMoves - thumb_func_start sub_81266A0 -sub_81266A0: @ 81266A0 + thumb_func_start Task_TryLearningNextMove +Task_TryLearningNextMove: @ 81266A0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _081266D0 @ =gUnknown_203B0A0 + ldr r0, _081266D0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -15651,7 +15651,7 @@ sub_81266A0: @ 81266A0 beq _081266E8 b _081266F8 .align 2, 0 -_081266D0: .4byte gUnknown_203B0A0 +_081266D0: .4byte gPartyMenu _081266D4: .4byte gPlayerParty _081266D8: .4byte 0x0000fffe _081266DC: @@ -15663,27 +15663,27 @@ _081266DC: _081266E4: .4byte 0x0000ffff _081266E8: adds r0, r4, 0 - bl sub_8126704 + bl PartyMenuTryEvolution b _081266FE _081266F0: adds r0, r4, 0 - bl sub_8126770 + bl DisplayMonNeedsToReplaceMove b _081266FE _081266F8: adds r0, r4, 0 - bl sub_8126804 + bl DisplayMonLearnedMove _081266FE: pop {r4} pop {r0} bx r0 - thumb_func_end sub_81266A0 + thumb_func_end Task_TryLearningNextMove - thumb_func_start sub_8126704 -sub_8126704: @ 8126704 + thumb_func_start PartyMenuTryEvolution +PartyMenuTryEvolution: @ 8126704 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r6, _08126748 @ =gUnknown_203B0A0 + ldr r6, _08126748 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 @@ -15698,7 +15698,7 @@ sub_8126704: @ 8126704 lsrs r4, r0, 16 cmp r4, 0 beq _08126754 - bl sub_811F070 + bl FreePartyPointers ldr r0, _08126750 @ =gCB2_AfterEvolution ldr r1, [r6] str r1, [r0] @@ -15711,7 +15711,7 @@ sub_8126704: @ 8126704 bl DestroyTask b _08126762 .align 2, 0 -_08126748: .4byte gUnknown_203B0A0 +_08126748: .4byte gPartyMenu _0812674C: .4byte gPlayerParty _08126750: .4byte gCB2_AfterEvolution _08126754: @@ -15720,7 +15720,7 @@ _08126754: adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _0812676C @ =sub_81255BC + ldr r0, _0812676C @ =Task_ClosePartyMenuAfterText str r0, [r1] _08126762: pop {r4-r7} @@ -15728,18 +15728,18 @@ _08126762: bx r0 .align 2, 0 _08126768: .4byte gTasks -_0812676C: .4byte sub_81255BC - thumb_func_end sub_8126704 +_0812676C: .4byte Task_ClosePartyMenuAfterText + thumb_func_end PartyMenuTryEvolution - thumb_func_start sub_8126770 -sub_8126770: @ 8126770 + thumb_func_start DisplayMonNeedsToReplaceMove +DisplayMonNeedsToReplaceMove: @ 8126770 push {r4-r6,lr} mov r6, r8 push {r6} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r0, _081267DC @ =gUnknown_203B0A0 + ldr r0, _081267DC @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] @@ -15758,12 +15758,12 @@ sub_8126770: @ 8126770 adds r1, r2 bl StringCopy ldr r4, _081267F4 @ =gStringVar4 - ldr r1, _081267F8 @ =gUnknown_8416DF7 + ldr r1, _081267F8 @ =gText_PkmnNeedsToReplaceMove adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldrh r0, [r6] @@ -15774,7 +15774,7 @@ sub_8126770: @ 8126770 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08126800 @ =sub_8125D88 + ldr r1, _08126800 @ =Task_ReplaceMoveYesNo str r1, [r0] pop {r3} mov r8, r3 @@ -15782,20 +15782,20 @@ sub_8126770: @ 8126770 pop {r0} bx r0 .align 2, 0 -_081267DC: .4byte gUnknown_203B0A0 +_081267DC: .4byte gPartyMenu _081267E0: .4byte gPlayerParty _081267E4: .4byte gStringVar1 _081267E8: .4byte gStringVar2 _081267EC: .4byte gMoveToLearn _081267F0: .4byte gMoveNames _081267F4: .4byte gStringVar4 -_081267F8: .4byte gUnknown_8416DF7 +_081267F8: .4byte gText_PkmnNeedsToReplaceMove _081267FC: .4byte gTasks -_08126800: .4byte sub_8125D88 - thumb_func_end sub_8126770 +_08126800: .4byte Task_ReplaceMoveYesNo + thumb_func_end DisplayMonNeedsToReplaceMove - thumb_func_start sub_8126804 -sub_8126804: @ 8126804 + thumb_func_start DisplayMonLearnedMove +DisplayMonLearnedMove: @ 8126804 push {r4-r6,lr} mov r6, r8 push {r6} @@ -15805,7 +15805,7 @@ sub_8126804: @ 8126804 lsrs r6, 24 lsls r5, 16 lsrs r5, 16 - ldr r0, _08126870 @ =gUnknown_203B0A0 + ldr r0, _08126870 @ =gPartyMenu mov r8, r0 movs r1, 0x9 ldrsb r1, [r0, r1] @@ -15822,12 +15822,12 @@ sub_8126804: @ 8126804 adds r1, r2 bl StringCopy ldr r4, _08126884 @ =gStringVar4 - ldr r1, _08126888 @ =gUnknown_8416DB3 + ldr r1, _08126888 @ =gText_PkmnLearnedMove3 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram mov r0, r8 @@ -15837,7 +15837,7 @@ sub_8126804: @ 8126804 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08126890 @ =sub_8125CF4 + ldr r1, _08126890 @ =Task_DoLearnedMoveFanfareAfterText str r1, [r0] pop {r3} mov r8, r3 @@ -15845,23 +15845,23 @@ sub_8126804: @ 8126804 pop {r0} bx r0 .align 2, 0 -_08126870: .4byte gUnknown_203B0A0 +_08126870: .4byte gPartyMenu _08126874: .4byte gPlayerParty _08126878: .4byte gStringVar1 _0812687C: .4byte gStringVar2 _08126880: .4byte gMoveNames _08126884: .4byte gStringVar4 -_08126888: .4byte gUnknown_8416DB3 +_08126888: .4byte gText_PkmnLearnedMove3 _0812688C: .4byte gTasks -_08126890: .4byte sub_8125CF4 - thumb_func_end sub_8126804 +_08126890: .4byte Task_DoLearnedMoveFanfareAfterText + thumb_func_end DisplayMonLearnedMove - thumb_func_start sub_8126894 -sub_8126894: @ 8126894 + thumb_func_start ItemUseCB_SacredAsh +ItemUseCB_SacredAsh: @ 8126894 push {r4,lr} lsls r0, 24 lsrs r0, 24 - ldr r1, _081268C8 @ =gUnknown_203B09C + ldr r1, _081268C8 @ =sPartyMenuInternal ldr r2, [r1] movs r3, 0x86 lsls r3, 2 @@ -15871,7 +15871,7 @@ sub_8126894: @ 8126894 ldr r4, _081268CC @ =0x0000021a adds r1, r2, r4 strh r3, [r1] - ldr r1, _081268D0 @ =gUnknown_203B0A0 + ldr r1, _081268D0 @ =gPartyMenu ldrb r1, [r1, 0x9] lsls r1, 24 asrs r1, 24 @@ -15879,18 +15879,18 @@ sub_8126894: @ 8126894 lsls r3, 2 adds r2, r3 strh r1, [r2] - bl sub_81268D4 + bl UseSacredAsh pop {r4} pop {r0} bx r0 .align 2, 0 -_081268C8: .4byte gUnknown_203B09C +_081268C8: .4byte sPartyMenuInternal _081268CC: .4byte 0x0000021a -_081268D0: .4byte gUnknown_203B0A0 - thumb_func_end sub_8126894 +_081268D0: .4byte gPartyMenu + thumb_func_end ItemUseCB_SacredAsh - thumb_func_start sub_81268D4 -sub_81268D4: @ 81268D4 + thumb_func_start UseSacredAsh +UseSacredAsh: @ 81268D4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -15900,7 +15900,7 @@ sub_81268D4: @ 81268D4 lsls r0, 24 lsrs r4, r0, 24 mov r9, r4 - ldr r6, _08126930 @ =gUnknown_203B0A0 + ldr r6, _08126930 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 @@ -15922,7 +15922,7 @@ sub_81268D4: @ 81268D4 ldr r1, _08126938 @ =gSpecialVar_ItemId ldrh r1, [r1] movs r2, 0 - bl ExecuteTableBasedItemEffect__ + bl ExecuteTableBasedItemEffect_ lsls r0, 24 cmp r0, 0 beq _08126944 @@ -15932,19 +15932,19 @@ _08126920: adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08126940 @ =sub_8126A18 + ldr r0, _08126940 @ =Task_SacredAshLoop str r0, [r1] b _081269EE .align 2, 0 -_08126930: .4byte gUnknown_203B0A0 +_08126930: .4byte gPartyMenu _08126934: .4byte gPlayerParty _08126938: .4byte gSpecialVar_ItemId _0812693C: .4byte gTasks -_08126940: .4byte sub_8126A18 +_08126940: .4byte Task_SacredAshLoop _08126944: movs r0, 0x1 bl PlaySE - ldr r7, _08126A00 @ =gUnknown_203B09C + ldr r7, _08126A00 @ =sPartyMenuInternal ldr r0, [r7] ldr r1, _08126A04 @ =0x0000021a mov r10, r1 @@ -15956,14 +15956,14 @@ _08126944: ldr r0, _08126A08 @ =gUnknown_203B0D0 str r5, [r0] _08126960: - ldr r4, _08126A0C @ =gUnknown_203B0B4 + ldr r4, _08126A0C @ =sPartyMenuBoxes movs r0, 0x9 ldrsb r0, [r6, r0] lsls r0, 4 ldr r1, [r4] adds r1, r0 adds r0, r5, 0 - bl party_menu_get_status_condition_and_update_object + bl SetPartyMonAilmentGfx ldr r2, _08126A10 @ =gSprites movs r0, 0x9 ldrsb r0, [r6, r0] @@ -15983,7 +15983,7 @@ _08126960: adds r0, r5, 0 adds r1, r3, 0 movs r2, 0x1 - bl sub_8121790 + bl DisplayPartyPokemonLevelCheck _0812699C: ldr r0, [r7] movs r1, 0x87 @@ -15991,10 +15991,10 @@ _0812699C: adds r0, r1 ldrb r0, [r0] movs r1, 0 - bl sub_811F818 + bl AnimatePartySlot ldrb r0, [r6, 0x9] movs r1, 0x1 - bl sub_811F818 + bl AnimatePartySlot adds r0, r5, 0 movs r1, 0x39 bl GetMonData @@ -16004,15 +16004,15 @@ _0812699C: lsls r3, 16 asrs r3, 16 ldrb r1, [r6, 0x9] - ldr r0, _08126A14 @ =sub_8126AFC + ldr r0, _08126A14 @ =Task_SacredAshDisplayHPRestored str r0, [sp] mov r0, r9 movs r2, 0x1 - bl sub_8120760 + bl PartyMenuModifyHP mov r0, r9 movs r1, 0 mov r2, r8 - bl sub_81207F0 + bl ResetHPTaskData ldr r0, [r7] movs r2, 0x86 lsls r2, 2 @@ -16031,32 +16031,32 @@ _081269EE: pop {r0} bx r0 .align 2, 0 -_08126A00: .4byte gUnknown_203B09C +_08126A00: .4byte sPartyMenuInternal _08126A04: .4byte 0x0000021a _08126A08: .4byte gUnknown_203B0D0 -_08126A0C: .4byte gUnknown_203B0B4 +_08126A0C: .4byte sPartyMenuBoxes _08126A10: .4byte gSprites -_08126A14: .4byte sub_8126AFC - thumb_func_end sub_81268D4 +_08126A14: .4byte Task_SacredAshDisplayHPRestored + thumb_func_end UseSacredAsh - thumb_func_start sub_8126A18 -sub_8126A18: @ 8126A18 + thumb_func_start Task_SacredAshLoop +Task_SacredAshLoop: @ 8126A18 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08126AF6 - ldr r5, _08126A80 @ =gUnknown_203B09C + ldr r5, _08126A80 @ =sPartyMenuInternal ldr r2, [r5] movs r0, 0x86 lsls r0, 2 adds r1, r2, r0 movs r3, 0 ldrsh r0, [r1, r3] - ldr r3, _08126A84 @ =gUnknown_203B0A0 + ldr r3, _08126A84 @ =gPartyMenu cmp r0, 0x1 bne _08126A4E movs r0, 0 @@ -16083,22 +16083,22 @@ _08126A4E: ldrsh r1, [r0, r2] cmp r1, 0 bne _08126A94 - ldr r0, _08126A8C @ =gUnknown_203B0C0 + ldr r0, _08126A8C @ =gPartyMenuUseExitCallback strb r1, [r0] - ldr r0, _08126A90 @ =gUnknown_84169DC + ldr r0, _08126A90 @ =gText_WontHaveEffect movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram b _08126ABE .align 2, 0 -_08126A80: .4byte gUnknown_203B09C -_08126A84: .4byte gUnknown_203B0A0 +_08126A80: .4byte sPartyMenuInternal +_08126A84: .4byte gPartyMenu _08126A88: .4byte 0x0000021a -_08126A8C: .4byte gUnknown_203B0C0 -_08126A90: .4byte gUnknown_84169DC +_08126A8C: .4byte gPartyMenuUseExitCallback +_08126A90: .4byte gText_WontHaveEffect _08126A94: - ldr r1, _08126AD4 @ =gUnknown_203B0C0 + ldr r1, _08126AD4 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldrb r1, [r3, 0x8] @@ -16124,36 +16124,36 @@ _08126ABE: adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08126AE8 @ =sub_81255BC + ldr r1, _08126AE8 @ =Task_ClosePartyMenuAfterText str r1, [r0] - ldr r1, _08126AEC @ =gUnknown_203B0A0 + ldr r1, _08126AEC @ =gPartyMenu movs r0, 0 strb r0, [r1, 0x9] b _08126AF6 .align 2, 0 -_08126AD4: .4byte gUnknown_203B0C0 +_08126AD4: .4byte gPartyMenuUseExitCallback _08126AD8: .4byte gUnknown_203B0D0 _08126ADC: .4byte gSpecialVar_ItemId _08126AE0: .4byte 0x0000ffff _08126AE4: .4byte gTasks -_08126AE8: .4byte sub_81255BC -_08126AEC: .4byte gUnknown_203B0A0 +_08126AE8: .4byte Task_ClosePartyMenuAfterText +_08126AEC: .4byte gPartyMenu _08126AF0: adds r0, r4, 0 - bl sub_81268D4 + bl UseSacredAsh _08126AF6: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8126A18 + thumb_func_end Task_SacredAshLoop - thumb_func_start sub_8126AFC -sub_8126AFC: @ 8126AFC + thumb_func_start Task_SacredAshDisplayHPRestored +Task_SacredAshDisplayHPRestored: @ 8126AFC push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r0, _08126B44 @ =gUnknown_203B0A0 + ldr r0, _08126B44 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -16163,12 +16163,12 @@ sub_8126AFC: @ 8126AFC ldr r1, _08126B4C @ =gStringVar1 bl GetMonNickname ldr r4, _08126B50 @ =gStringVar4 - ldr r1, _08126B54 @ =gUnknown_8416F27 + ldr r1, _08126B54 @ =gText_PkmnHPRestoredByVar2 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126B58 @ =gTasks @@ -16176,20 +16176,20 @@ sub_8126AFC: @ 8126AFC adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08126B5C @ =sub_8126A18 + ldr r1, _08126B5C @ =Task_SacredAshLoop str r1, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_08126B44: .4byte gUnknown_203B0A0 +_08126B44: .4byte gPartyMenu _08126B48: .4byte gPlayerParty _08126B4C: .4byte gStringVar1 _08126B50: .4byte gStringVar4 -_08126B54: .4byte gUnknown_8416F27 +_08126B54: .4byte gText_PkmnHPRestoredByVar2 _08126B58: .4byte gTasks -_08126B5C: .4byte sub_8126A18 - thumb_func_end sub_8126AFC +_08126B5C: .4byte Task_SacredAshLoop + thumb_func_end Task_SacredAshDisplayHPRestored thumb_func_start sub_8126B60 sub_8126B60: @ 8126B60 @@ -16199,7 +16199,7 @@ sub_8126B60: @ 8126B60 lsrs r4, r0, 24 movs r0, 0x5 bl PlaySE - ldr r2, _08126BB0 @ =gUnknown_203B0A0 + ldr r2, _08126BB0 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 @@ -16214,12 +16214,12 @@ sub_8126B60: @ 8126B60 lsls r0, 24 cmp r0, 0 beq _08126BC8 - ldr r1, _08126BBC @ =gUnknown_203B0C0 + ldr r1, _08126BBC @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] - ldr r0, _08126BC0 @ =gUnknown_84169DC + ldr r0, _08126BC0 @ =gText_WontHaveEffect movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _08126BC4 @ =gTasks @@ -16230,11 +16230,11 @@ sub_8126B60: @ 8126B60 str r5, [r0] b _08126BCE .align 2, 0 -_08126BB0: .4byte gUnknown_203B0A0 +_08126BB0: .4byte gPartyMenu _08126BB4: .4byte gPlayerParty _08126BB8: .4byte gSpecialVar_ItemId -_08126BBC: .4byte gUnknown_203B0C0 -_08126BC0: .4byte gUnknown_84169DC +_08126BBC: .4byte gPartyMenuUseExitCallback +_08126BC0: .4byte gText_WontHaveEffect _08126BC4: .4byte gTasks _08126BC8: adds r0, r4, 0 @@ -16245,18 +16245,18 @@ _08126BCE: bx r0 thumb_func_end sub_8126B60 - thumb_func_start sub_8126BD4 -sub_8126BD4: @ 8126BD4 + thumb_func_start ItemUseCB_EvolutionStone +ItemUseCB_EvolutionStone: @ 8126BD4 push {r4,r5,lr} ldr r1, _08126C10 @ =gCB2_AfterEvolution - ldr r4, _08126C14 @ =gUnknown_203B0A0 + ldr r4, _08126C14 @ =gPartyMenu ldr r0, [r4] str r0, [r1] ldrb r0, [r4, 0x9] ldr r5, _08126C18 @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 - bl ExecuteTableBasedItemEffect__ + bl ExecuteTableBasedItemEffect_ movs r1, 0x9 ldrsb r1, [r4, r1] movs r0, 0x64 @@ -16275,11 +16275,11 @@ sub_8126BD4: @ 8126BD4 bx r0 .align 2, 0 _08126C10: .4byte gCB2_AfterEvolution -_08126C14: .4byte gUnknown_203B0A0 +_08126C14: .4byte gPartyMenu _08126C18: .4byte gSpecialVar_ItemId _08126C1C: .4byte gPlayerParty _08126C20: .4byte 0x0000ffff - thumb_func_end sub_8126BD4 + thumb_func_end ItemUseCB_EvolutionStone thumb_func_start sub_8126C24 sub_8126C24: @ 8126C24 @@ -16287,7 +16287,7 @@ sub_8126C24: @ 8126C24 bl IsNationalPokedexEnabled cmp r0, 0 bne _08126C60 - ldr r0, _08126C54 @ =gUnknown_203B0A0 + ldr r0, _08126C54 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 @@ -16305,7 +16305,7 @@ sub_8126C24: @ 8126C24 movs r0, 0 b _08126C62 .align 2, 0 -_08126C54: .4byte gUnknown_203B0A0 +_08126C54: .4byte gPartyMenu _08126C58: .4byte gPlayerParty _08126C5C: .4byte gSpecialVar_ItemId _08126C60: @@ -16521,8 +16521,8 @@ _08126DC2: bx r1 thumb_func_end GetItemEffectType - thumb_func_start sub_8126DC8 -sub_8126DC8: @ 8126DC8 + thumb_func_start TryTutorSelectedMon +TryTutorSelectedMon: @ 8126DC8 push {r4-r7,lr} mov r7, r8 push {r7} @@ -16534,7 +16534,7 @@ sub_8126DC8: @ 8126DC8 ands r0, r1 cmp r0, 0 bne _08126E98 - ldr r7, _08126E50 @ =gUnknown_203B0A0 + ldr r7, _08126E50 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r7, r1] movs r0, 0x64 @@ -16565,7 +16565,7 @@ sub_8126DC8: @ 8126DC8 ldrb r2, [r4] adds r0, r5, 0 movs r1, 0 - bl sub_8120B20 + bl CanMonLearnTMTutor lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -16580,11 +16580,11 @@ sub_8126DC8: @ 8126DC8 cmp r0, r1 beq _08126E84 adds r0, r6, 0 - bl sub_8125C48 + bl Task_LearnedMove b _08126E98 .align 2, 0 _08126E4C: .4byte gPaletteFade -_08126E50: .4byte gUnknown_203B0A0 +_08126E50: .4byte gPartyMenu _08126E54: .4byte gPlayerParty _08126E58: .4byte gStringVar1 _08126E5C: .4byte gSpecialVar_0x8005 @@ -16592,27 +16592,27 @@ _08126E60: .4byte gStringVar2 _08126E64: .4byte gMoveNames _08126E68: .4byte 0xffff0000 _08126E6C: - ldr r1, _08126E70 @ =gUnknown_8416DC2 + ldr r1, _08126E70 @ =gText_PkmnCantLearnMove b _08126E76 .align 2, 0 -_08126E70: .4byte gUnknown_8416DC2 +_08126E70: .4byte gText_PkmnCantLearnMove _08126E74: - ldr r1, _08126E80 @ =gUnknown_8416F10 + ldr r1, _08126E80 @ =gText_PkmnAlreadyKnows _08126E76: adds r0, r6, 0 - bl sub_8125B14 + bl DisplayLearnMoveMessageAndClose b _08126E98 .align 2, 0 -_08126E80: .4byte gUnknown_8416F10 +_08126E80: .4byte gText_PkmnAlreadyKnows _08126E84: - ldr r0, _08126EA4 @ =gUnknown_8416DF7 - bl sub_8125AF0 + ldr r0, _08126EA4 @ =gText_PkmnNeedsToReplaceMove + bl DisplayLearnMoveMessage ldr r1, _08126EA8 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08126EAC @ =sub_8125D88 + ldr r1, _08126EAC @ =Task_ReplaceMoveYesNo str r1, [r0] _08126E98: pop {r3} @@ -16621,10 +16621,10 @@ _08126E98: pop {r0} bx r0 .align 2, 0 -_08126EA4: .4byte gUnknown_8416DF7 +_08126EA4: .4byte gText_PkmnNeedsToReplaceMove _08126EA8: .4byte gTasks -_08126EAC: .4byte sub_8125D88 - thumb_func_end sub_8126DC8 +_08126EAC: .4byte Task_ReplaceMoveYesNo + thumb_func_end TryTutorSelectedMon thumb_func_start CB2_PartyMenuFromStartMenu CB2_PartyMenuFromStartMenu: @ 8126EB0 @@ -16632,7 +16632,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 sub sp, 0xC movs r0, 0 str r0, [sp] - ldr r0, _08126ED4 @ =sub_811FB28 + ldr r0, _08126ED4 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu str r0, [sp, 0x8] @@ -16640,17 +16640,17 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 movs r1, 0 movs r2, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_08126ED4: .4byte sub_811FB28 +_08126ED4: .4byte Task_HandleChooseMonInput _08126ED8: .4byte CB2_ReturnToStartMenu thumb_func_end CB2_PartyMenuFromStartMenu - thumb_func_start sub_8126EDC -sub_8126EDC: @ 8126EDC + thumb_func_start CB2_ChooseMonToGiveItem +CB2_ChooseMonToGiveItem: @ 8126EDC push {lr} sub sp, 0xC ldr r0, _08126EF8 @ =gSpecialVar_ItemId @@ -16662,11 +16662,11 @@ sub_8126EDC: @ 8126EDC beq _08126F00 cmp r0, 0x5 beq _08126F08 - ldr r1, _08126EFC @ =sub_8124D90 + ldr r1, _08126EFC @ =CB2_ReturnToBagMenu b _08126F0A .align 2, 0 _08126EF8: .4byte gSpecialVar_ItemId -_08126EFC: .4byte sub_8124D90 +_08126EFC: .4byte CB2_ReturnToBagMenu _08126F00: ldr r1, _08126F04 @ =sub_8124DA0 b _08126F0A @@ -16677,15 +16677,15 @@ _08126F08: _08126F0A: movs r0, 0x6 str r0, [sp] - ldr r0, _08126F34 @ =sub_811FB28 + ldr r0, _08126F34 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] str r1, [sp, 0x8] movs r0, 0 movs r1, 0 movs r2, 0x5 movs r3, 0 - bl PartyMenuInit - ldr r1, _08126F38 @ =gUnknown_203B0A0 + bl InitPartyMenu + ldr r1, _08126F38 @ =gPartyMenu ldr r0, _08126F3C @ =gSpecialVar_ItemId ldrh r0, [r0] strh r0, [r1, 0xC] @@ -16694,13 +16694,13 @@ _08126F0A: bx r0 .align 2, 0 _08126F30: .4byte sub_8124DB0 -_08126F34: .4byte sub_811FB28 -_08126F38: .4byte gUnknown_203B0A0 +_08126F34: .4byte Task_HandleChooseMonInput +_08126F38: .4byte gPartyMenu _08126F3C: .4byte gSpecialVar_ItemId - thumb_func_end sub_8126EDC + thumb_func_end CB2_ChooseMonToGiveItem - thumb_func_start sub_8126F40 -sub_8126F40: @ 8126F40 + thumb_func_start TryGiveItemOrMailToSelectedMon +TryGiveItemOrMailToSelectedMon: @ 8126F40 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -16708,8 +16708,8 @@ sub_8126F40: @ 8126F40 lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 - ldr r5, _08126F80 @ =gUnknown_203B0D8 - ldr r0, _08126F84 @ =gUnknown_203B0A0 + ldr r5, _08126F80 @ =sPartyMenuItemId + ldr r0, _08126F84 @ =gPartyMenu mov r9, r0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -16728,11 +16728,11 @@ sub_8126F40: @ 8126F40 cmp r0, 0 bne _08126F8C adds r0, r4, 0 - bl sub_8126FD8 + bl GiveItemOrMailToSelectedMon b _08126FC4 .align 2, 0 -_08126F80: .4byte gUnknown_203B0D8 -_08126F84: .4byte gUnknown_203B0A0 +_08126F80: .4byte sPartyMenuItemId +_08126F84: .4byte gPartyMenu _08126F88: .4byte gPlayerParty _08126F8C: ldrh r0, [r5] @@ -16741,7 +16741,7 @@ _08126F8C: cmp r0, 0 beq _08126FA0 adds r0, r4, 0 - bl sub_812734C + bl DisplayItemMustBeRemovedFirstMessage b _08126FC4 _08126FA0: mov r1, r9 @@ -16753,13 +16753,13 @@ _08126FA0: adds r0, r7 ldrh r1, [r5] movs r2, 0x1 - bl sub_812050C + bl DisplayAlreadyHoldingItemSwitchMessage ldr r1, _08126FD0 @ =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 - ldr r1, _08126FD4 @ =sub_8127234 + ldr r1, _08126FD4 @ =Task_SwitchItemsFromBagYesNo str r1, [r0] _08126FC4: pop {r3,r4} @@ -16770,44 +16770,44 @@ _08126FC4: bx r0 .align 2, 0 _08126FD0: .4byte gTasks -_08126FD4: .4byte sub_8127234 - thumb_func_end sub_8126F40 +_08126FD4: .4byte Task_SwitchItemsFromBagYesNo + thumb_func_end TryGiveItemOrMailToSelectedMon - thumb_func_start sub_8126FD8 -sub_8126FD8: @ 8126FD8 + thumb_func_start GiveItemOrMailToSelectedMon +GiveItemOrMailToSelectedMon: @ 8126FD8 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r5, _08127004 @ =gUnknown_203B0A0 + ldr r5, _08127004 @ =gPartyMenu ldrh r0, [r5, 0xC] bl ItemIsMail lsls r0, 24 cmp r0, 0 beq _08127010 ldrh r0, [r5, 0xC] - bl sub_8127384 - ldr r0, _08127008 @ =gUnknown_203B09C + bl RemoveItemToGiveFromBag + ldr r0, _08127008 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _0812700C @ =sub_81270E0 + ldr r0, _0812700C @ =CB2_WriteMailToGiveMonFromBag str r0, [r1, 0x4] adds r0, r4, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _08127016 .align 2, 0 -_08127004: .4byte gUnknown_203B0A0 -_08127008: .4byte gUnknown_203B09C -_0812700C: .4byte sub_81270E0 +_08127004: .4byte gPartyMenu +_08127008: .4byte sPartyMenuInternal +_0812700C: .4byte CB2_WriteMailToGiveMonFromBag _08127010: adds r0, r4, 0 - bl sub_812701C + bl GiveItemToSelectedMon _08127016: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_8126FD8 + thumb_func_end GiveItemOrMailToSelectedMon - thumb_func_start sub_812701C -sub_812701C: @ 812701C + thumb_func_start GiveItemToSelectedMon +GiveItemToSelectedMon: @ 812701C push {r4-r7,lr} mov r7, r8 push {r7} @@ -16819,7 +16819,7 @@ sub_812701C: @ 812701C ands r0, r1 cmp r0, 0 bne _08127078 - ldr r4, _08127088 @ =gUnknown_203B0A0 + ldr r4, _08127088 @ =gPartyMenu ldrh r5, [r4, 0xC] movs r0, 0x9 ldrsb r0, [r4, r0] @@ -16833,7 +16833,7 @@ sub_812701C: @ 812701C adds r1, r5, 0 movs r2, 0 movs r3, 0x1 - bl sub_8120420 + bl DisplayGaveHeldItemMessage movs r0, 0x9 ldrsb r0, [r4, r0] mov r1, r8 @@ -16841,15 +16841,15 @@ sub_812701C: @ 812701C adds r0, r1, 0 adds r0, r6 adds r1, r5, 0 - bl sub_81205C8 + bl GiveItemToMon adds r0, r5, 0 - bl sub_8127384 + bl RemoveItemToGiveFromBag ldr r1, _08127090 @ =gTasks lsls r0, r7, 2 adds r0, r7 lsls r0, 3 adds r0, r1 - ldr r1, _08127094 @ =sub_8127098 + ldr r1, _08127094 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] _08127078: pop {r3} @@ -16859,20 +16859,20 @@ _08127078: bx r0 .align 2, 0 _08127084: .4byte gPaletteFade -_08127088: .4byte gUnknown_203B0A0 +_08127088: .4byte gPartyMenu _0812708C: .4byte gPlayerParty _08127090: .4byte gTasks -_08127094: .4byte sub_8127098 - thumb_func_end sub_812701C +_08127094: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu + thumb_func_end GiveItemToSelectedMon - thumb_func_start sub_8127098 -sub_8127098: @ 8127098 + thumb_func_start Task_UpdateHeldItemSpriteAndClosePartyMenu +Task_UpdateHeldItemSpriteAndClosePartyMenu: @ 8127098 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _081270D4 @ =gUnknown_203B0A0 + ldr r0, _081270D4 @ =gPartyMenu ldrb r4, [r0, 0x9] - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -16883,27 +16883,27 @@ sub_8127098: @ 8127098 muls r0, r2 ldr r1, _081270D8 @ =gPlayerParty adds r0, r1 - ldr r1, _081270DC @ =gUnknown_203B0B4 + ldr r1, _081270DC @ =sPartyMenuBoxes lsls r2, 4 ldr r1, [r1] adds r1, r2 - bl sub_81224B4 + bl UpdatePartyMonHeldItemSprite adds r0, r5, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _081270CC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_081270D4: .4byte gUnknown_203B0A0 +_081270D4: .4byte gPartyMenu _081270D8: .4byte gPlayerParty -_081270DC: .4byte gUnknown_203B0B4 - thumb_func_end sub_8127098 +_081270DC: .4byte sPartyMenuBoxes + thumb_func_end Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_start sub_81270E0 -sub_81270E0: @ 81270E0 + thumb_func_start CB2_WriteMailToGiveMonFromBag +CB2_WriteMailToGiveMonFromBag: @ 81270E0 push {r4-r6,lr} - ldr r4, _08127128 @ =gUnknown_203B0A0 + ldr r4, _08127128 @ =gPartyMenu movs r0, 0x9 ldrsb r0, [r4, r0] movs r6, 0x64 @@ -16911,7 +16911,7 @@ sub_81270E0: @ 81270E0 ldr r5, _0812712C @ =gPlayerParty adds r0, r5 ldrh r1, [r4, 0xC] - bl sub_81205C8 + bl GiveItemToMon movs r0, 0x9 ldrsb r0, [r4, r0] muls r0, r6 @@ -16928,25 +16928,25 @@ sub_81270E0: @ 81270E0 adds r2, r0 ldr r1, [r1] adds r1, r2 - ldr r2, _08127138 @ =sub_812713C + ldr r2, _08127138 @ =CB2_ReturnToPartyOrBagMenuFromWritingMail movs r0, 0x4 - bl sub_80FEBAC + bl DoEasyChatScreen pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_08127128: .4byte gUnknown_203B0A0 +_08127128: .4byte gPartyMenu _0812712C: .4byte gPlayerParty _08127130: .4byte gSaveBlock1Ptr _08127134: .4byte 0x00002cd0 -_08127138: .4byte sub_812713C - thumb_func_end sub_81270E0 +_08127138: .4byte CB2_ReturnToPartyOrBagMenuFromWritingMail + thumb_func_end CB2_WriteMailToGiveMonFromBag - thumb_func_start sub_812713C -sub_812713C: @ 812713C + thumb_func_start CB2_ReturnToPartyOrBagMenuFromWritingMail +CB2_ReturnToPartyOrBagMenuFromWritingMail: @ 812713C push {r4-r7,lr} sub sp, 0xC - ldr r6, _0812718C @ =gUnknown_203B0A0 + ldr r6, _0812718C @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r6, r1] movs r0, 0x64 @@ -16964,7 +16964,7 @@ sub_812713C: @ 812713C bne _0812719C adds r0, r5, 0 bl TakeMailFromMon - ldr r4, _08127198 @ =gUnknown_203B0D8 + ldr r4, _08127198 @ =sPartyMenuItemId adds r0, r5, 0 movs r1, 0xC adds r2, r4, 0 @@ -16973,15 +16973,15 @@ sub_812713C: @ 812713C movs r1, 0x1 bl RemoveBagItem adds r0, r7, 0 - bl sub_81273AC + bl ReturnGiveItemToBagOrPC ldr r0, [r6] bl SetMainCallback2 b _081271B8 .align 2, 0 -_0812718C: .4byte gUnknown_203B0A0 +_0812718C: .4byte gPartyMenu _08127190: .4byte gPlayerParty _08127194: .4byte gSpecialVar_Result -_08127198: .4byte gUnknown_203B0D8 +_08127198: .4byte sPartyMenuItemId _0812719C: ldrb r0, [r6, 0x8] lsls r0, 28 @@ -16989,24 +16989,24 @@ _0812719C: ldrb r2, [r6, 0xB] movs r1, 0x7F str r1, [sp] - ldr r1, _081271C0 @ =sub_81271C4 + ldr r1, _081271C0 @ =Task_DisplayGaveMailFromBagMessage str r1, [sp, 0x4] ldr r1, [r6] str r1, [sp, 0x8] movs r1, 0xFF movs r3, 0x1 - bl PartyMenuInit + bl InitPartyMenu _081271B8: add sp, 0xC pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_081271C0: .4byte sub_81271C4 - thumb_func_end sub_812713C +_081271C0: .4byte Task_DisplayGaveMailFromBagMessage + thumb_func_end CB2_ReturnToPartyOrBagMenuFromWritingMail - thumb_func_start sub_81271C4 -sub_81271C4: @ 81271C4 + thumb_func_start Task_DisplayGaveMailFromBagMessage +Task_DisplayGaveMailFromBagMessage: @ 81271C4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -17016,22 +17016,22 @@ sub_81271C4: @ 81271C4 ands r0, r1 cmp r0, 0 bne _0812721E - ldr r1, _081271F0 @ =gUnknown_203B0D8 + ldr r1, _081271F0 @ =sPartyMenuItemId ldrh r0, [r1] cmp r0, 0 beq _081271F8 - ldr r0, _081271F4 @ =gUnknown_203B0A0 + ldr r0, _081271F4 @ =gPartyMenu ldrh r0, [r0, 0xC] ldrh r1, [r1] movs r2, 0 - bl sub_8120558 + bl DisplaySwitchedHeldItemMessage b _08127210 .align 2, 0 _081271EC: .4byte gPaletteFade -_081271F0: .4byte gUnknown_203B0D8 -_081271F4: .4byte gUnknown_203B0A0 +_081271F0: .4byte sPartyMenuItemId +_081271F4: .4byte gPartyMenu _081271F8: - ldr r2, _08127224 @ =gUnknown_203B0A0 + ldr r2, _08127224 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r2, r1] movs r0, 0x64 @@ -17041,43 +17041,43 @@ _081271F8: ldrh r1, [r2, 0xC] movs r2, 0 movs r3, 0x1 - bl sub_8120420 + bl DisplayGaveHeldItemMessage _08127210: ldr r0, _0812722C @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08127230 @ =sub_8127098 + ldr r0, _08127230 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] _0812721E: pop {r4} pop {r0} bx r0 .align 2, 0 -_08127224: .4byte gUnknown_203B0A0 +_08127224: .4byte gPartyMenu _08127228: .4byte gPlayerParty _0812722C: .4byte gTasks -_08127230: .4byte sub_8127098 - thumb_func_end sub_81271C4 +_08127230: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu + thumb_func_end Task_DisplayGaveMailFromBagMessage - thumb_func_start sub_8127234 -sub_8127234: @ 8127234 + thumb_func_start Task_SwitchItemsFromBagYesNo +Task_SwitchItemsFromBagYesNo: @ 8127234 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8120370 + bl IsPartyMenuTextPrinterActive lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08127258 - bl sub_812200C + bl PartyMenuDisplayYesNoMenu ldr r0, _08127260 @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _08127264 @ =sub_8127268 + ldr r0, _08127264 @ =Task_HandleSwitchItemsFromBagYesNoInput str r0, [r1] _08127258: pop {r4} @@ -17085,11 +17085,11 @@ _08127258: bx r0 .align 2, 0 _08127260: .4byte gTasks -_08127264: .4byte sub_8127268 - thumb_func_end sub_8127234 +_08127264: .4byte Task_HandleSwitchItemsFromBagYesNoInput + thumb_func_end Task_SwitchItemsFromBagYesNo - thumb_func_start sub_8127268 -sub_8127268: @ 8127268 + thumb_func_start Task_HandleSwitchItemsFromBagYesNoInput +Task_HandleSwitchItemsFromBagYesNoInput: @ 8127268 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -17110,11 +17110,11 @@ _08127288: beq _0812732E b _0812733C _0812728E: - ldr r7, _081272C0 @ =gUnknown_203B0A0 + ldr r7, _081272C0 @ =gPartyMenu ldrh r4, [r7, 0xC] adds r0, r4, 0 - bl sub_8127384 - ldr r6, _081272C4 @ =gUnknown_203B0D8 + bl RemoveItemToGiveFromBag + ldr r6, _081272C4 @ =sPartyMenuItemId ldrh r0, [r6] movs r1, 0x1 bl AddBagItem @@ -17122,16 +17122,16 @@ _0812728E: cmp r0, 0 bne _081272CC adds r0, r4, 0 - bl sub_81273AC + bl ReturnGiveItemToBagOrPC ldrh r0, [r6] - bl sub_8120658 + bl BufferBagFullCantTakeItemMessage ldr r0, _081272C8 @ =gStringVar4 movs r1, 0 - bl sub_81202F8 + bl DisplayPartyMenuMessage b _0812730C .align 2, 0 -_081272C0: .4byte gUnknown_203B0A0 -_081272C4: .4byte gUnknown_203B0D8 +_081272C0: .4byte gPartyMenu +_081272C4: .4byte sPartyMenuItemId _081272C8: .4byte gStringVar4 _081272CC: adds r0, r4, 0 @@ -17139,16 +17139,16 @@ _081272CC: lsls r0, 24 cmp r0, 0 beq _081272F0 - ldr r0, _081272E8 @ =gUnknown_203B09C + ldr r0, _081272E8 @ =sPartyMenuInternal ldr r1, [r0] - ldr r0, _081272EC @ =sub_81270E0 + ldr r0, _081272EC @ =CB2_WriteMailToGiveMonFromBag str r0, [r1, 0x4] adds r0, r5, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _0812733C .align 2, 0 -_081272E8: .4byte gUnknown_203B09C -_081272EC: .4byte sub_81270E0 +_081272E8: .4byte sPartyMenuInternal +_081272EC: .4byte CB2_WriteMailToGiveMonFromBag _081272F0: movs r1, 0x9 ldrsb r1, [r7, r1] @@ -17157,24 +17157,24 @@ _081272F0: ldr r1, _0812731C @ =gPlayerParty adds r0, r1 adds r1, r4, 0 - bl sub_81205C8 + bl GiveItemToMon ldrh r1, [r6] adds r0, r4, 0 movs r2, 0x1 - bl sub_8120558 + bl DisplaySwitchedHeldItemMessage _0812730C: ldr r1, _08127320 @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 - ldr r1, _08127324 @ =sub_8127098 + ldr r1, _08127324 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] b _0812733C .align 2, 0 _0812731C: .4byte gPlayerParty _08127320: .4byte gTasks -_08127324: .4byte sub_8127098 +_08127324: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu _08127328: movs r0, 0x5 bl PlaySE @@ -17184,7 +17184,7 @@ _0812732E: adds r1, r5 lsls r1, 3 adds r1, r0 - ldr r0, _08127348 @ =sub_8127098 + ldr r0, _08127348 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] _0812733C: pop {r4-r7} @@ -17192,18 +17192,18 @@ _0812733C: bx r0 .align 2, 0 _08127344: .4byte gTasks -_08127348: .4byte sub_8127098 - thumb_func_end sub_8127268 +_08127348: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu + thumb_func_end Task_HandleSwitchItemsFromBagYesNoInput - thumb_func_start sub_812734C -sub_812734C: @ 812734C + thumb_func_start DisplayItemMustBeRemovedFirstMessage +DisplayItemMustBeRemovedFirstMessage: @ 812734C push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, _08127378 @ =gUnknown_8416BFB movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage movs r0, 0x2 bl ScheduleBgCopyTilemapToVram ldr r1, _0812737C @ =gTasks @@ -17211,7 +17211,7 @@ sub_812734C: @ 812734C adds r0, r4 lsls r0, 3 adds r0, r1 - ldr r1, _08127380 @ =sub_8127098 + ldr r1, _08127380 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r1, [r0] pop {r4} pop {r0} @@ -17219,15 +17219,15 @@ sub_812734C: @ 812734C .align 2, 0 _08127378: .4byte gUnknown_8416BFB _0812737C: .4byte gTasks -_08127380: .4byte sub_8127098 - thumb_func_end sub_812734C +_08127380: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu + thumb_func_end DisplayItemMustBeRemovedFirstMessage - thumb_func_start sub_8127384 -sub_8127384: @ 8127384 + thumb_func_start RemoveItemToGiveFromBag +RemoveItemToGiveFromBag: @ 8127384 push {lr} lsls r0, 16 lsrs r1, r0, 16 - ldr r0, _0812739C @ =gUnknown_203B0A0 + ldr r0, _0812739C @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x6 bne _081273A0 @@ -17236,7 +17236,7 @@ sub_8127384: @ 8127384 bl RemoveItemFromPC b _081273A8 .align 2, 0 -_0812739C: .4byte gUnknown_203B0A0 +_0812739C: .4byte gPartyMenu _081273A0: adds r0, r1, 0 movs r1, 0x1 @@ -17244,14 +17244,14 @@ _081273A0: _081273A8: pop {r0} bx r0 - thumb_func_end sub_8127384 + thumb_func_end RemoveItemToGiveFromBag - thumb_func_start sub_81273AC -sub_81273AC: @ 81273AC + thumb_func_start ReturnGiveItemToBagOrPC +ReturnGiveItemToBagOrPC: @ 81273AC push {lr} lsls r0, 16 lsrs r1, r0, 16 - ldr r0, _081273C4 @ =gUnknown_203B0A0 + ldr r0, _081273C4 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x5 beq _081273C8 @@ -17260,7 +17260,7 @@ sub_81273AC: @ 81273AC bl AddPCItem b _081273D0 .align 2, 0 -_081273C4: .4byte gUnknown_203B0A0 +_081273C4: .4byte gPartyMenu _081273C8: adds r0, r1, 0 movs r1, 0x1 @@ -17270,15 +17270,15 @@ _081273D0: lsrs r0, 24 pop {r1} bx r1 - thumb_func_end sub_81273AC + thumb_func_end ReturnGiveItemToBagOrPC - thumb_func_start PartyMenuInit_FromPlayerPc -PartyMenuInit_FromPlayerPc: @ 81273D8 + thumb_func_start ChooseMonToGiveMailFromMailbox +ChooseMonToGiveMailFromMailbox: @ 81273D8 push {lr} sub sp, 0xC movs r0, 0x6 str r0, [sp] - ldr r0, _081273FC @ =sub_811FB28 + ldr r0, _081273FC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu str r0, [sp, 0x8] @@ -17286,28 +17286,28 @@ PartyMenuInit_FromPlayerPc: @ 81273D8 movs r1, 0 movs r2, 0x7 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_081273FC: .4byte sub_811FB28 +_081273FC: .4byte Task_HandleChooseMonInput _08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu - thumb_func_end PartyMenuInit_FromPlayerPc + thumb_func_end ChooseMonToGiveMailFromMailbox - thumb_func_start sub_8127404 -sub_8127404: @ 8127404 + thumb_func_start TryGiveMailToSelectedMon +TryGiveMailToSelectedMon: @ 8127404 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r0, _08127450 @ =gUnknown_203B0A0 + ldr r0, _08127450 @ =gPartyMenu movs r1, 0x9 ldrsb r1, [r0, r1] movs r0, 0x64 muls r1, r0 ldr r0, _08127454 @ =gPlayerParty adds r5, r1, r0 - ldr r1, _08127458 @ =gUnknown_203B0C0 + ldr r1, _08127458 @ =gPartyMenuUseExitCallback movs r0, 0 strb r0, [r1] ldr r2, _0812745C @ =gSaveBlock1Ptr @@ -17328,27 +17328,27 @@ sub_8127404: @ 8127404 bl GetMonData cmp r0, 0 beq _0812746C - ldr r0, _08127468 @ =gUnknown_8416D17 + ldr r0, _08127468 @ =gText_PkmnHoldingItemCantHoldMail movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage b _08127482 .align 2, 0 -_08127450: .4byte gUnknown_203B0A0 +_08127450: .4byte gPartyMenu _08127454: .4byte gPlayerParty -_08127458: .4byte gUnknown_203B0C0 +_08127458: .4byte gPartyMenuUseExitCallback _0812745C: .4byte gSaveBlock1Ptr _08127460: .4byte gPlayerPcMenuManager _08127464: .4byte 0x00002cd0 -_08127468: .4byte gUnknown_8416D17 +_08127468: .4byte gText_PkmnHoldingItemCantHoldMail _0812746C: adds r0, r5, 0 adds r1, r4, 0 bl GiveMailToMon2 adds r0, r4, 0 bl ClearMailStruct - ldr r0, _0812749C @ =gUnknown_8416D4F + ldr r0, _0812749C @ =gText_MailTransferredFromMailbox movs r1, 0x1 - bl sub_81202F8 + bl DisplayPartyMenuMessage _08127482: movs r0, 0x2 bl ScheduleBgCopyTilemapToVram @@ -17357,28 +17357,28 @@ _08127482: adds r1, r6 lsls r1, 3 adds r1, r0 - ldr r0, _081274A4 @ =sub_8127098 + ldr r0, _081274A4 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_0812749C: .4byte gUnknown_8416D4F +_0812749C: .4byte gText_MailTransferredFromMailbox _081274A0: .4byte gTasks -_081274A4: .4byte sub_8127098 - thumb_func_end sub_8127404 +_081274A4: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu + thumb_func_end TryGiveMailToSelectedMon - thumb_func_start sub_81274A8 -sub_81274A8: @ 81274A8 + thumb_func_start InitChooseHalfPartyForBattle +InitChooseHalfPartyForBattle: @ 81274A8 push {r4,lr} sub sp, 0xC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_81274FC + bl ClearSelectedPartyOrder movs r0, 0 str r0, [sp] - ldr r0, _081274EC @ =sub_811FB28 + ldr r0, _081274EC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081274F0 @ =gMain ldr r0, [r0, 0x8] @@ -17387,29 +17387,29 @@ sub_81274A8: @ 81274A8 movs r1, 0 movs r2, 0 movs r3, 0 - bl PartyMenuInit - ldr r1, _081274F4 @ =gUnknown_203B0A0 + bl InitPartyMenu + ldr r1, _081274F4 @ =gPartyMenu lsls r4, 6 ldrb r2, [r1, 0x8] movs r0, 0x3F ands r0, r2 orrs r0, r4 strb r0, [r1, 0x8] - ldr r0, _081274F8 @ =sub_812773C + ldr r0, _081274F8 @ =Task_ValidateChosenHalfParty str r0, [r1, 0x4] add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 -_081274EC: .4byte sub_811FB28 +_081274EC: .4byte Task_HandleChooseMonInput _081274F0: .4byte gMain -_081274F4: .4byte gUnknown_203B0A0 -_081274F8: .4byte sub_812773C - thumb_func_end sub_81274A8 +_081274F4: .4byte gPartyMenu +_081274F8: .4byte Task_ValidateChosenHalfParty + thumb_func_end InitChooseHalfPartyForBattle - thumb_func_start sub_81274FC -sub_81274FC: @ 81274FC + thumb_func_start ClearSelectedPartyOrder +ClearSelectedPartyOrder: @ 81274FC push {lr} ldr r0, _0812750C @ =gSelectedOrderFromParty movs r1, 0 @@ -17419,10 +17419,10 @@ sub_81274FC: @ 81274FC bx r0 .align 2, 0 _0812750C: .4byte gSelectedOrderFromParty - thumb_func_end sub_81274FC + thumb_func_end ClearSelectedPartyOrder - thumb_func_start sub_8127510 -sub_8127510: @ 8127510 + thumb_func_start GetPartySlotEntryStatus +GetPartySlotEntryStatus: @ 8127510 push {r4,lr} lsls r0, 24 asrs r4, r0, 24 @@ -17430,7 +17430,7 @@ sub_8127510: @ 8127510 muls r0, r4 ldr r1, _0812752C @ =gPlayerParty adds r0, r1 - bl sub_8127550 + bl GetBattleEntryEligibility lsls r0, 24 cmp r0, 0 bne _08127530 @@ -17442,7 +17442,7 @@ _08127530: adds r0, r4, 0x1 lsls r0, 24 lsrs r0, 24 - bl sub_8127710 + bl HasPartySlotAlreadyBeenSelected lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -17455,10 +17455,10 @@ _08127548: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8127510 + thumb_func_end GetPartySlotEntryStatus - thumb_func_start sub_8127550 -sub_8127550: @ 8127550 + thumb_func_start GetBattleEntryEligibility +GetBattleEntryEligibility: @ 8127550 push {r4,r5,lr} adds r4, r0, 0 movs r5, 0 @@ -17466,7 +17466,7 @@ sub_8127550: @ 8127550 bl GetMonData cmp r0, 0 bne _0812757A - ldr r0, _08127580 @ =gUnknown_203B0A0 + ldr r0, _08127580 @ =gPartyMenu ldrb r0, [r0, 0x8] lsrs r1, r0, 6 cmp r1, 0 @@ -17482,7 +17482,7 @@ _0812757A: movs r0, 0 b _081275E2 .align 2, 0 -_08127580: .4byte gUnknown_203B0A0 +_08127580: .4byte gPartyMenu _08127584: adds r0, r4, 0 movs r1, 0x39 @@ -17541,10 +17541,10 @@ _081275E8: .4byte gSaveBlock2Ptr _081275EC: .4byte 0x0000055c _081275F0: .4byte gBattleTowerBannedSpecies _081275F4: .4byte 0x0000ffff - thumb_func_end sub_8127550 + thumb_func_end GetBattleEntryEligibility - thumb_func_start sub_81275F8 -sub_81275F8: @ 81275F8 + thumb_func_start CheckBattleEntriesAndGetMessage +CheckBattleEntriesAndGetMessage: @ 81275F8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -17552,7 +17552,7 @@ sub_81275F8: @ 81275F8 push {r5-r7} ldr r0, _08127618 @ =gPlayerParty mov r10, r0 - ldr r0, _0812761C @ =gUnknown_203B0A0 + ldr r0, _0812761C @ =gPartyMenu ldrb r0, [r0, 0x8] lsrs r0, 6 cmp r0, 0x1 @@ -17562,7 +17562,7 @@ sub_81275F8: @ 81275F8 b _08127700 .align 2, 0 _08127618: .4byte gPlayerParty -_0812761C: .4byte gUnknown_203B0A0 +_0812761C: .4byte gPartyMenu _08127620: ldr r1, _0812762C @ =gSelectedOrderFromParty ldrb r0, [r1, 0x2] @@ -17584,7 +17584,7 @@ _08127632: add r0, r10 movs r1, 0xB bl GetMonData - ldr r2, _081276E0 @ =gUnknown_203B09C + ldr r2, _081276E0 @ =sPartyMenuInternal ldr r1, [r2] ldr r2, _081276E4 @ =0x00000236 adds r1, r2 @@ -17596,7 +17596,7 @@ _08127632: add r0, r10 movs r1, 0xC bl GetMonData - ldr r2, _081276E0 @ =gUnknown_203B09C + ldr r2, _081276E0 @ =sPartyMenuInternal ldr r1, [r2] movs r2, 0x8D lsls r2, 2 @@ -17608,7 +17608,7 @@ _08127632: mov r9, r1 cmp r5, 0x2 bhi _081276D0 - ldr r0, _081276E0 @ =gUnknown_203B09C + ldr r0, _081276E0 @ =sPartyMenuInternal mov r8, r0 movs r7, 0x64 _0812767E: @@ -17661,7 +17661,7 @@ _081276D0: b _08127700 .align 2, 0 _081276DC: .4byte gSelectedOrderFromParty -_081276E0: .4byte gUnknown_203B09C +_081276E0: .4byte sPartyMenuInternal _081276E4: .4byte 0x00000236 _081276E8: ldr r2, _081276F4 @ =gSelectedOrderFromParty @@ -17688,10 +17688,10 @@ _08127702: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_81275F8 + thumb_func_end CheckBattleEntriesAndGetMessage - thumb_func_start sub_8127710 -sub_8127710: @ 8127710 + thumb_func_start HasPartySlotAlreadyBeenSelected +HasPartySlotAlreadyBeenSelected: @ 8127710 push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -17716,15 +17716,15 @@ _0812772C: _08127738: pop {r1} bx r1 - thumb_func_end sub_8127710 + thumb_func_end HasPartySlotAlreadyBeenSelected - thumb_func_start sub_812773C -sub_812773C: @ 812773C + thumb_func_start Task_ValidateChosenHalfParty +Task_ValidateChosenHalfParty: @ 812773C push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 adds r6, r5, 0 - bl sub_81275F8 + bl CheckBattleEntriesAndGetMessage lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xFF @@ -17732,7 +17732,7 @@ sub_812773C: @ 812773C movs r0, 0x1A bl PlaySE adds r0, r4, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _08127764 @ =gTasks lsls r1, r5, 2 adds r1, r5 @@ -17747,7 +17747,7 @@ _08127768: movs r0, 0x5 bl PlaySE adds r0, r5, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu b _0812779E .align 2, 0 _08127780: .4byte gSelectedOrderFromParty @@ -17755,14 +17755,14 @@ _08127784: movs r0, 0x1A bl PlaySE movs r0, 0xE - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _081277A4 @ =gTasks lsls r1, r6, 2 adds r1, r6 _08127796: lsls r1, 3 adds r1, r0 - ldr r0, _081277A8 @ =sub_81277AC + ldr r0, _081277A8 @ =Task_ContinueChoosingHalfParty str r0, [r1] _0812779E: pop {r4-r6} @@ -17770,11 +17770,11 @@ _0812779E: bx r0 .align 2, 0 _081277A4: .4byte gTasks -_081277A8: .4byte sub_81277AC - thumb_func_end sub_812773C +_081277A8: .4byte Task_ContinueChoosingHalfParty + thumb_func_end Task_ValidateChosenHalfParty - thumb_func_start sub_81277AC -sub_81277AC: @ 81277AC + thumb_func_start Task_ContinueChoosingHalfParty +Task_ContinueChoosingHalfParty: @ 81277AC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -17792,13 +17792,13 @@ _081277C6: movs r0, 0x5 bl PlaySE movs r0, 0 - bl sub_8121D0C + bl DisplayPartyMenuStdMessage ldr r0, _081277EC @ =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 - ldr r0, _081277F0 @ =sub_811FB28 + ldr r0, _081277F0 @ =Task_HandleChooseMonInput str r0, [r1] _081277E0: pop {r4} @@ -17807,30 +17807,30 @@ _081277E0: .align 2, 0 _081277E8: .4byte gMain _081277EC: .4byte gTasks -_081277F0: .4byte sub_811FB28 - thumb_func_end sub_81277AC +_081277F0: .4byte Task_HandleChooseMonInput + thumb_func_end Task_ContinueChoosingHalfParty - thumb_func_start sub_81277F4 -sub_81277F4: @ 81277F4 + thumb_func_start ChooseMonForMoveTutor +ChooseMonForMoveTutor: @ 81277F4 push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 movs r2, 0 str r2, [sp] - ldr r2, _08127818 @ =sub_811FB28 + ldr r2, _08127818 @ =Task_HandleChooseMonInput str r2, [sp, 0x4] str r1, [sp, 0x8] movs r1, 0 movs r2, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_08127818: .4byte sub_811FB28 - thumb_func_end sub_81277F4 +_08127818: .4byte Task_HandleChooseMonInput + thumb_func_end ChooseMonForMoveTutor thumb_func_start sub_812781C sub_812781C: @ 812781C @@ -17842,7 +17842,7 @@ sub_812781C: @ 812781C bhi _08127850 movs r0, 0x4 str r0, [sp] - ldr r0, _08127848 @ =sub_811FB28 + ldr r0, _08127848 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] @@ -17850,16 +17850,16 @@ sub_812781C: @ 812781C movs r1, 0 movs r2, 0xC movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu b _08127870 .align 2, 0 _08127844: .4byte gSpecialVar_0x8005 -_08127848: .4byte sub_811FB28 +_08127848: .4byte Task_HandleChooseMonInput _0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08127850: movs r0, 0x7F str r0, [sp] - ldr r0, _08127878 @ =sub_8126DC8 + ldr r0, _08127878 @ =TryTutorSelectedMon str r0, [sp, 0x4] ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] @@ -17867,8 +17867,8 @@ _08127850: movs r1, 0 movs r2, 0xC movs r3, 0 - bl PartyMenuInit - ldr r1, _08127880 @ =gUnknown_203B0A0 + bl InitPartyMenu + ldr r1, _08127880 @ =gPartyMenu ldr r0, _08127884 @ =gSpecialVar_0x8007 ldrh r0, [r0] strb r0, [r1, 0x9] @@ -17877,19 +17877,19 @@ _08127870: pop {r0} bx r0 .align 2, 0 -_08127878: .4byte sub_8126DC8 +_08127878: .4byte TryTutorSelectedMon _0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08127880: .4byte gUnknown_203B0A0 +_08127880: .4byte gPartyMenu _08127884: .4byte gSpecialVar_0x8007 thumb_func_end sub_812781C - thumb_func_start sub_8127888 -sub_8127888: @ 8127888 + thumb_func_start ChooseMonForWirelessMinigame +ChooseMonForWirelessMinigame: @ 8127888 push {lr} sub sp, 0xC movs r0, 0x1 str r0, [sp] - ldr r0, _081278AC @ =sub_811FB28 + ldr r0, _081278AC @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [sp, 0x8] @@ -17897,17 +17897,17 @@ sub_8127888: @ 8127888 movs r1, 0 movs r2, 0xD movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_081278AC: .4byte sub_811FB28 +_081278AC: .4byte Task_HandleChooseMonInput _081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end sub_8127888 + thumb_func_end ChooseMonForWirelessMinigame - thumb_func_start sub_81278B4 -sub_81278B4: @ 81278B4 + thumb_func_start GetPartyLayoutFromBattleType +GetPartyLayoutFromBattleType: @ 81278B4 push {lr} bl IsDoubleBattle lsls r0, 24 @@ -17928,10 +17928,10 @@ _081278D4: _081278D6: pop {r1} bx r1 - thumb_func_end sub_81278B4 + thumb_func_end GetPartyLayoutFromBattleType - thumb_func_start OpenPartyMenuInBattle -OpenPartyMenuInBattle: @ 81278DC + thumb_func_start OpenPartyMenuInTutorialBattle +OpenPartyMenuInTutorialBattle: @ 81278DC push {r4,lr} sub sp, 0xC lsls r0, 24 @@ -17947,7 +17947,7 @@ OpenPartyMenuInBattle: @ 81278DC ands r0, r1 cmp r0, 0 beq _08127930 - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -17960,7 +17960,7 @@ OpenPartyMenuInBattle: @ 81278DC movs r0, 0x1 adds r2, r4, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu movs r0, 0x8 bl sub_80EB2F4 b _08127950 @@ -17969,37 +17969,37 @@ _08127924: .4byte gBattleTypeFlags _08127928: .4byte sub_8120C3C _0812792C: .4byte SetCB2ToReshowScreenAfterMenu _08127930: - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0 str r0, [sp] - ldr r0, _08127960 @ =sub_811FB28 + ldr r0, _08127960 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _08127964 @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 adds r2, r4, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu _08127950: bl nullsub_44 - bl pokemon_change_order + bl UpdatePartyToBattleOrder add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 -_08127960: .4byte sub_811FB28 +_08127960: .4byte Task_HandleChooseMonInput _08127964: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end OpenPartyMenuInBattle + thumb_func_end OpenPartyMenuInTutorialBattle - thumb_func_start sub_8127968 -sub_8127968: @ 8127968 + thumb_func_start OpenPartyMenuInBattle +OpenPartyMenuInBattle: @ 8127968 push {lr} sub sp, 0xC - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -18012,22 +18012,22 @@ sub_8127968: @ 8127968 movs r0, 0x1 movs r2, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu bl nullsub_44 - bl pokemon_change_order + bl UpdatePartyToBattleOrder add sp, 0xC pop {r0} bx r0 .align 2, 0 _0812799C: .4byte sub_8120EBC _081279A0: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end sub_8127968 + thumb_func_end OpenPartyMenuInBattle - thumb_func_start sub_81279A4 -sub_81279A4: @ 81279A4 + thumb_func_start ChooseMonForInBattleItem +ChooseMonForInBattleItem: @ 81279A4 push {lr} sub sp, 0xC - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -18040,16 +18040,16 @@ sub_81279A4: @ 81279A4 movs r0, 0x1 movs r2, 0xE movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu bl nullsub_44 - bl pokemon_change_order + bl UpdatePartyToBattleOrder add sp, 0xC pop {r0} bx r0 .align 2, 0 _081279D8: .4byte sub_8120FCC _081279DC: .4byte sub_8107ECC - thumb_func_end sub_81279A4 + thumb_func_end ChooseMonForInBattleItem thumb_func_start sub_81279E0 sub_81279E0: @ 81279E0 @@ -18066,7 +18066,7 @@ sub_81279E0: @ 81279E0 ands r0, r1 cmp r0, 0 beq _08127A30 - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -18079,7 +18079,7 @@ sub_81279E0: @ 81279E0 movs r0, 0x1 movs r2, 0x3 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu movs r0, 0x8 bl sub_80EB2F4 b _08127A62 @@ -18098,22 +18098,22 @@ _08127A30: bne _08127A44 ldr r4, _08127A7C @ =sub_8124DB0 _08127A44: - bl sub_81278B4 + bl GetPartyLayoutFromBattleType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x5 str r0, [sp] - ldr r0, _08127A80 @ =sub_811FB28 + ldr r0, _08127A80 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0x1 movs r2, 0x3 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu _08127A62: bl nullsub_44 - bl pokemon_change_order + bl UpdatePartyToBattleOrder add sp, 0xC pop {r4} pop {r0} @@ -18122,11 +18122,11 @@ _08127A62: _08127A74: .4byte gSpecialVar_ItemId _08127A78: .4byte sub_8107ECC _08127A7C: .4byte sub_8124DB0 -_08127A80: .4byte sub_811FB28 +_08127A80: .4byte Task_HandleChooseMonInput thumb_func_end sub_81279E0 - thumb_func_start sub_8127A84 -sub_8127A84: @ 8127A84 + thumb_func_start GetPartyMenuActionsTypeInBattle +GetPartyMenuActionsTypeInBattle: @ 8127A84 push {r4,lr} adds r4, r0, 0 ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1] @@ -18145,24 +18145,24 @@ _08127AA0: .align 2, 0 _08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1] _08127AA8: - ldr r0, _08127AB4 @ =gUnknown_203B0A0 + ldr r0, _08127AB4 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x1 beq _08127AB8 movs r0, 0x2 b _08127ABA .align 2, 0 -_08127AB4: .4byte gUnknown_203B0A0 +_08127AB4: .4byte gPartyMenu _08127AB8: movs r0, 0x3 _08127ABA: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8127A84 + thumb_func_end GetPartyMenuActionsTypeInBattle - thumb_func_start sub_8127AC0 -sub_8127AC0: @ 8127AC0 + thumb_func_start TrySwitchInPokemon +TrySwitchInPokemon: @ 8127AC0 push {r4-r7,lr} mov r7, r8 push {r7} @@ -18225,7 +18225,7 @@ _08127B40: cmp r0, 0 bne _08127B62 adds r0, r5, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot lsls r0, 24 ldr r2, _08127B90 @ =gBattlerPartyIndexes lsls r1, r4, 1 @@ -18265,7 +18265,7 @@ _08127B9C: .4byte gStringVar4 _08127BA0: .4byte gUnknown_8416ACB _08127BA4: adds r0, r5, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot ldr r1, _08127BC8 @ =gBattleStruct ldr r1, [r1] adds r1, 0x8B @@ -18286,22 +18286,22 @@ _08127BCC: .4byte gStringVar1 _08127BD0: .4byte gStringVar4 _08127BD4: .4byte gUnknown_8416A55 _08127BD8: - ldr r0, _08127BE8 @ =gUnknown_203B0A0 + ldr r0, _08127BE8 @ =gPartyMenu ldrb r0, [r0, 0xB] cmp r0, 0x4 bne _08127BEC bl SetMonPreventsSwitchingString b _08127C8A .align 2, 0 -_08127BE8: .4byte gUnknown_203B0A0 +_08127BE8: .4byte gPartyMenu _08127BEC: cmp r0, 0x2 beq _08127C64 adds r0, r5, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot ldr r1, _08127C30 @ =gUnknown_203B0C1 strb r0, [r1] - ldr r1, _08127C34 @ =gUnknown_203B0C0 + ldr r1, _08127C34 @ =gPartyMenuUseExitCallback movs r0, 0x1 strb r0, [r1] ldr r1, _08127C38 @ =gBattlerPartyIndexes @@ -18316,17 +18316,17 @@ _08127BEC: lsrs r4, 24 adds r0, r4, 0 adds r1, r5, 0 - bl sub_8127FF4 + bl SwitchPartyMonSlots adds r0, r4, 0 muls r0, r7 add r0, r8 adds r1, r6, 0 - bl sub_811FA40 + bl SwapPartyPokemon movs r0, 0x1 b _08127C8C .align 2, 0 _08127C30: .4byte gUnknown_203B0C1 -_08127C34: .4byte gUnknown_203B0C0 +_08127C34: .4byte gPartyMenuUseExitCallback _08127C38: .4byte gBattlerPartyIndexes _08127C3C: .4byte gBattlerInMenuId _08127C40: @@ -18376,27 +18376,27 @@ _08127C9C: .4byte gBattlerPartyIndexes _08127CA0: .4byte gStringVar1 _08127CA4: .4byte gStringVar4 _08127CA8: .4byte gUnknown_8416A1E - thumb_func_end sub_8127AC0 + thumb_func_end TrySwitchInPokemon - thumb_func_start sub_8127CAC -sub_8127CAC: @ 8127CAC + thumb_func_start BufferBattlePartyCurrentOrder +BufferBattlePartyCurrentOrder: @ 8127CAC push {r4,lr} - ldr r4, _08127CC8 @ =gUnknown_203B0DC + ldr r4, _08127CC8 @ =gBattlePartyCurrentOrder bl sub_80435E0 adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_8127CCC + bl BufferBattlePartyOrder pop {r4} pop {r0} bx r0 .align 2, 0 -_08127CC8: .4byte gUnknown_203B0DC - thumb_func_end sub_8127CAC +_08127CC8: .4byte gBattlePartyCurrentOrder + thumb_func_end BufferBattlePartyCurrentOrder - thumb_func_start sub_8127CCC -sub_8127CCC: @ 8127CCC + thumb_func_start BufferBattlePartyOrder +BufferBattlePartyOrder: @ 8127CCC push {r4-r6,lr} sub sp, 0x8 adds r6, r0, 0 @@ -18512,10 +18512,10 @@ _08127D9C: bx r0 .align 2, 0 _08127DA4: .4byte gBattlerPartyIndexes - thumb_func_end sub_8127CCC + thumb_func_end BufferBattlePartyOrder - thumb_func_start sub_8127DA8 -sub_8127DA8: @ 8127DA8 + thumb_func_start BufferBattlePartyCurrentOrderBySide +BufferBattlePartyCurrentOrderBySide: @ 8127DA8 push {lr} adds r2, r0, 0 lsls r2, 24 @@ -18528,15 +18528,15 @@ sub_8127DA8: @ 8127DA8 adds r3, 0x60 ldr r0, [r0] adds r0, r3 - bl sub_8127DCC + bl BufferBattlePartyOrderBySide pop {r0} bx r0 .align 2, 0 _08127DC8: .4byte gBattleStruct - thumb_func_end sub_8127DA8 + thumb_func_end BufferBattlePartyCurrentOrderBySide - thumb_func_start sub_8127DCC -sub_8127DCC: @ 8127DCC + thumb_func_start BufferBattlePartyOrderBySide +BufferBattlePartyOrderBySide: @ 8127DCC push {r4-r7,lr} sub sp, 0x8 adds r5, r0, 0 @@ -18665,10 +18665,10 @@ _08127EB6: bx r0 .align 2, 0 _08127EC0: .4byte gBattlerPartyIndexes - thumb_func_end sub_8127DCC + thumb_func_end BufferBattlePartyOrderBySide - thumb_func_start sub_8127EC4 -sub_8127EC4: @ 8127EC4 + thumb_func_start SwitchPartyOrderLinkMulti +SwitchPartyOrderLinkMulti: @ 8127EC4 push {r4-r7,lr} sub sp, 0x8 lsls r0, 24 @@ -18762,10 +18762,10 @@ _08127F72: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8127EC4 + thumb_func_end SwitchPartyOrderLinkMulti - thumb_func_start sub_8127F7C -sub_8127F7C: @ 8127F7C + thumb_func_start GetPartyIdFromBattleSlot +GetPartyIdFromBattleSlot: @ 8127F7C push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -18774,16 +18774,16 @@ sub_8127F7C: @ 8127F7C lsrs r2, r0, 25 cmp r1, 0 beq _08127F9C - ldr r0, _08127F98 @ =gUnknown_203B0DC + ldr r0, _08127F98 @ =gBattlePartyCurrentOrder adds r0, r2, r0 ldrb r0, [r0] movs r1, 0xF ands r1, r0 b _08127FA4 .align 2, 0 -_08127F98: .4byte gUnknown_203B0DC +_08127F98: .4byte gBattlePartyCurrentOrder _08127F9C: - ldr r0, _08127FAC @ =gUnknown_203B0DC + ldr r0, _08127FAC @ =gBattlePartyCurrentOrder adds r0, r2, r0 ldrb r0, [r0] lsrs r1, r0, 4 @@ -18792,11 +18792,11 @@ _08127FA4: pop {r1} bx r1 .align 2, 0 -_08127FAC: .4byte gUnknown_203B0DC - thumb_func_end sub_8127F7C +_08127FAC: .4byte gBattlePartyCurrentOrder + thumb_func_end GetPartyIdFromBattleSlot - thumb_func_start sub_8127FB0 -sub_8127FB0: @ 8127FB0 + thumb_func_start SetPartyIdAtBattleSlot +SetPartyIdAtBattleSlot: @ 8127FB0 push {r4,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -18807,7 +18807,7 @@ sub_8127FB0: @ 8127FB0 lsrs r3, r0, 25 cmp r1, 0 beq _08127FD8 - ldr r0, _08127FD4 @ =gUnknown_203B0DC + ldr r0, _08127FD4 @ =gBattlePartyCurrentOrder adds r0, r3, r0 ldrb r2, [r0] movs r1, 0xF0 @@ -18816,9 +18816,9 @@ sub_8127FB0: @ 8127FB0 strb r1, [r0] b _08127FE8 .align 2, 0 -_08127FD4: .4byte gUnknown_203B0DC +_08127FD4: .4byte gBattlePartyCurrentOrder _08127FD8: - ldr r2, _08127FF0 @ =gUnknown_203B0DC + ldr r2, _08127FF0 @ =gBattlePartyCurrentOrder adds r2, r3, r2 ldrb r1, [r2] movs r0, 0xF @@ -18831,11 +18831,11 @@ _08127FE8: pop {r0} bx r0 .align 2, 0 -_08127FF0: .4byte gUnknown_203B0DC - thumb_func_end sub_8127FB0 +_08127FF0: .4byte gBattlePartyCurrentOrder + thumb_func_end SetPartyIdAtBattleSlot - thumb_func_start sub_8127FF4 -sub_8127FF4: @ 8127FF4 + thumb_func_start SwitchPartyMonSlots +SwitchPartyMonSlots: @ 8127FF4 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 @@ -18844,24 +18844,24 @@ sub_8127FF4: @ 8127FF4 lsls r6, 24 lsrs r6, 24 adds r0, r5, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 - bl sub_8127FB0 + bl SetPartyIdAtBattleSlot adds r0, r6, 0 adds r1, r4, 0 - bl sub_8127FB0 + bl SetPartyIdAtBattleSlot pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8127FF4 + thumb_func_end SwitchPartyMonSlots thumb_func_start pokemon_order_func pokemon_order_func: @ 8128030 @@ -18870,7 +18870,7 @@ pokemon_order_func: @ 8128030 lsrs r4, r0, 24 movs r3, 0 movs r2, 0 - ldr r5, _08128058 @ =gUnknown_203B0DC + ldr r5, _08128058 @ =gBattlePartyCurrentOrder _0812803C: adds r0, r3, r5 ldrb r1, [r0] @@ -18888,7 +18888,7 @@ _08128054: adds r0, r2, 0 b _0812806E .align 2, 0 -_08128058: .4byte gUnknown_203B0DC +_08128058: .4byte gBattlePartyCurrentOrder _0812805C: adds r0, r2, 0x1 lsls r0, 24 @@ -18905,8 +18905,8 @@ _0812806E: bx r1 thumb_func_end pokemon_order_func - thumb_func_start pokemon_change_order -pokemon_change_order: @ 8128074 + thumb_func_start UpdatePartyToBattleOrder +UpdatePartyToBattleOrder: @ 8128074 push {r4-r6,lr} movs r4, 0x96 lsls r4, 2 @@ -18943,10 +18943,10 @@ _0812808E: bx r0 .align 2, 0 _081280C0: .4byte gPlayerParty - thumb_func_end pokemon_change_order + thumb_func_end UpdatePartyToBattleOrder - thumb_func_start sub_81280C4 -sub_81280C4: @ 81280C4 + thumb_func_start UpdatePartyToFieldOrder +UpdatePartyToFieldOrder: @ 81280C4 push {r4-r6,lr} movs r4, 0x96 lsls r4, 2 @@ -18960,7 +18960,7 @@ sub_81280C4: @ 81280C4 movs r6, 0x64 _081280DE: adds r0, r4, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot lsls r0, 24 lsrs r0, 24 muls r0, r6 @@ -18983,10 +18983,10 @@ _081280DE: bx r0 .align 2, 0 _08128110: .4byte gPlayerParty - thumb_func_end sub_81280C4 + thumb_func_end UpdatePartyToFieldOrder - thumb_func_start sub_8128114 -sub_8128114: @ 8128114 + thumb_func_start SwitchAliveMonIntoLeadSlot +SwitchAliveMonIntoLeadSlot: @ 8128114 push {r4-r7,lr} mov r7, r8 push {r7} @@ -18996,7 +18996,7 @@ sub_8128114: @ 8128114 mov r8, r0 _08128122: adds r0, r6, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot lsls r0, 24 lsrs r0, 24 muls r0, r7 @@ -19013,18 +19013,18 @@ _08128122: cmp r0, 0 beq _08128170 movs r0, 0 - bl sub_8127F7C + bl GetPartyIdFromBattleSlot adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0 adds r1, r6, 0 - bl sub_8127FF4 + bl SwitchPartyMonSlots adds r0, r4, 0 muls r0, r7 add r0, r8 adds r1, r5, 0 - bl sub_811FA40 + bl SwapPartyPokemon b _0812817A .align 2, 0 _0812816C: .4byte gPlayerParty @@ -19040,27 +19040,27 @@ _0812817A: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_8128114 + thumb_func_end SwitchAliveMonIntoLeadSlot - thumb_func_start sub_8128184 -sub_8128184: @ 8128184 + thumb_func_start CB2_SetUpExitToBattleScreen +CB2_SetUpExitToBattleScreen: @ 8128184 push {lr} - bl sub_8108CF0 + bl CB2_SetUpReshowBattleScreenAfterMenu ldr r0, _08128194 @ =SetCB2ToReshowScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 _08128194: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end sub_8128184 + thumb_func_end CB2_SetUpExitToBattleScreen - thumb_func_start sub_8128198 -sub_8128198: @ 8128198 + thumb_func_start ShowPartyMenuToShowcaseMultiBattleParty +ShowPartyMenuToShowcaseMultiBattleParty: @ 8128198 push {lr} sub sp, 0xC movs r0, 0x7F str r0, [sp] - ldr r0, _081281BC @ =sub_81281C4 + ldr r0, _081281BC @ =Task_InitMultiPartnerPartySlideIn str r0, [sp, 0x4] ldr r0, _081281C0 @ =gMain ldr r0, [r0, 0x8] @@ -19069,17 +19069,17 @@ sub_8128198: @ 8128198 movs r1, 0x3 movs r2, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 -_081281BC: .4byte sub_81281C4 +_081281BC: .4byte Task_InitMultiPartnerPartySlideIn _081281C0: .4byte gMain - thumb_func_end sub_8128198 + thumb_func_end ShowPartyMenuToShowcaseMultiBattleParty - thumb_func_start sub_81281C4 -sub_81281C4: @ 81281C4 + thumb_func_start Task_InitMultiPartnerPartySlideIn +Task_InitMultiPartnerPartySlideIn: @ 81281C4 push {r4,lr} lsls r0, 24 lsrs r0, 24 @@ -19091,24 +19091,24 @@ sub_81281C4: @ 81281C4 movs r1, 0x80 lsls r1, 1 strh r1, [r4, 0x8] - bl sub_81282DC + bl SlideMultiPartyMenuBoxSpritesOneStep movs r1, 0x80 lsls r1, 9 movs r0, 0x2 movs r2, 0 bl ChangeBgX - ldr r0, _081281F8 @ =sub_81281FC + ldr r0, _081281F8 @ =Task_MultiPartnerPartySlideIn str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _081281F4: .4byte gTasks -_081281F8: .4byte sub_81281FC - thumb_func_end sub_81281C4 +_081281F8: .4byte Task_MultiPartnerPartySlideIn + thumb_func_end Task_InitMultiPartnerPartySlideIn - thumb_func_start sub_81281FC -sub_81281FC: @ 81281FC + thumb_func_start Task_MultiPartnerPartySlideIn +Task_MultiPartnerPartySlideIn: @ 81281FC push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -19127,13 +19127,13 @@ sub_81281FC: @ 81281FC subs r0, 0x8 strh r0, [r4] adds r0, r5, 0 - bl sub_81282DC + bl SlideMultiPartyMenuBoxSpritesOneStep movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 bne _08128268 movs r4, 0x3 - ldr r7, _08128278 @ =gUnknown_2022B58 + ldr r7, _08128278 @ =gMultiPartnerParty _08128230: subs r0, r4, 0x3 lsls r0, 5 @@ -19141,13 +19141,13 @@ _08128230: ldrh r0, [r0] cmp r0, 0 beq _0812824C - ldr r0, _0812827C @ =gUnknown_203B0B4 + ldr r0, _0812827C @ =sPartyMenuBoxes ldr r1, [r0] lsls r0, r4, 4 adds r0, r1 ldrb r0, [r0, 0x9] movs r1, 0 - bl sub_812238C + bl AnimateSelectedPartyIcon _0812824C: adds r0, r4, 0x1 lsls r0, 24 @@ -19160,7 +19160,7 @@ _0812824C: adds r1, r6, r5 lsls r1, 3 adds r1, r0 - ldr r0, _08128284 @ =sub_8128288 + ldr r0, _08128284 @ =Task_WaitAfterMultiPartnerPartySlideIn str r0, [r1] _08128268: pop {r4-r7} @@ -19169,14 +19169,14 @@ _08128268: .align 2, 0 _08128270: .4byte gTasks+0x8 _08128274: .4byte gPaletteFade -_08128278: .4byte gUnknown_2022B58 -_0812827C: .4byte gUnknown_203B0B4 +_08128278: .4byte gMultiPartnerParty +_0812827C: .4byte sPartyMenuBoxes _08128280: .4byte gTasks -_08128284: .4byte sub_8128288 - thumb_func_end sub_81281FC +_08128284: .4byte Task_WaitAfterMultiPartnerPartySlideIn + thumb_func_end Task_MultiPartnerPartySlideIn - thumb_func_start sub_8128288 -sub_8128288: @ 8128288 + thumb_func_start Task_WaitAfterMultiPartnerPartySlideIn +Task_WaitAfterMultiPartnerPartySlideIn: @ 8128288 push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -19194,16 +19194,16 @@ sub_8128288: @ 8128288 cmp r1, r0 bne _081282AE adds r0, r2, 0 - bl sub_811FA78 + bl Task_ClosePartyMenu _081282AE: pop {r0} bx r0 .align 2, 0 _081282B4: .4byte gTasks+0x8 - thumb_func_end sub_8128288 + thumb_func_end Task_WaitAfterMultiPartnerPartySlideIn - thumb_func_start sub_81282B8 -sub_81282B8: @ 81282B8 + thumb_func_start MoveMultiPartyMenuBoxSprite +MoveMultiPartyMenuBoxSprite: @ 81282B8 push {lr} lsls r0, 24 lsrs r2, r0, 24 @@ -19222,10 +19222,10 @@ _081282D2: bx r0 .align 2, 0 _081282D8: .4byte gSprites - thumb_func_end sub_81282B8 + thumb_func_end MoveMultiPartyMenuBoxSprite - thumb_func_start sub_81282DC -sub_81282DC: @ 81282DC + thumb_func_start SlideMultiPartyMenuBoxSpritesOneStep +SlideMultiPartyMenuBoxSpritesOneStep: @ 81282DC push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 @@ -19235,9 +19235,9 @@ sub_81282DC: @ 81282DC ldr r0, _08128364 @ =gTasks+0x8 adds r5, r1, r0 movs r6, 0x3 - ldr r7, _08128368 @ =gUnknown_203B0B4 + ldr r7, _08128368 @ =sPartyMenuBoxes _081282F0: - ldr r0, _0812836C @ =gUnknown_2022B58 + ldr r0, _0812836C @ =gMultiPartnerParty subs r1, r6, 0x3 lsls r1, 5 adds r1, r0 @@ -19252,7 +19252,7 @@ _081282F0: subs r1, 0x8 lsls r1, 16 asrs r1, 16 - bl sub_81282B8 + bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r0, r4, r0 ldrb r0, [r0, 0xA] @@ -19260,7 +19260,7 @@ _081282F0: subs r1, 0x8 lsls r1, 16 asrs r1, 16 - bl sub_81282B8 + bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r0, r4, r0 ldrb r0, [r0, 0xB] @@ -19268,7 +19268,7 @@ _081282F0: subs r1, 0x8 lsls r1, 16 asrs r1, 16 - bl sub_81282B8 + bl MoveMultiPartyMenuBoxSprite ldr r0, [r7] adds r4, r0 ldrb r0, [r4, 0xC] @@ -19276,7 +19276,7 @@ _081282F0: subs r1, 0x8 lsls r1, 16 asrs r1, 16 - bl sub_81282B8 + bl MoveMultiPartyMenuBoxSprite _08128348: adds r0, r6, 0x1 lsls r0, 24 @@ -19293,20 +19293,20 @@ _08128348: bx r0 .align 2, 0 _08128364: .4byte gTasks+0x8 -_08128368: .4byte gUnknown_203B0B4 -_0812836C: .4byte gUnknown_2022B58 - thumb_func_end sub_81282DC +_08128368: .4byte sPartyMenuBoxes +_0812836C: .4byte gMultiPartnerParty + thumb_func_end SlideMultiPartyMenuBoxSpritesOneStep - thumb_func_start sub_8128370 -sub_8128370: @ 8128370 + thumb_func_start ChooseMonForDaycare +ChooseMonForDaycare: @ 8128370 push {lr} sub sp, 0xC ldr r1, _08128398 @ =gFieldCallback2 - ldr r0, _0812839C @ =hm_add_c3_without_phase_2 + ldr r0, _0812839C @ =CB2_FadeFromPartyMenu str r0, [r1] movs r0, 0xF str r0, [sp] - ldr r0, _081283A0 @ =sub_811FB28 + ldr r0, _081283A0 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] ldr r0, _081283A4 @ =CB2_ReturnToField str r0, [sp, 0x8] @@ -19314,66 +19314,66 @@ sub_8128370: @ 8128370 movs r1, 0 movs r2, 0 movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _08128398: .4byte gFieldCallback2 -_0812839C: .4byte hm_add_c3_without_phase_2 -_081283A0: .4byte sub_811FB28 +_0812839C: .4byte CB2_FadeFromPartyMenu +_081283A0: .4byte Task_HandleChooseMonInput _081283A4: .4byte CB2_ReturnToField - thumb_func_end sub_8128370 + thumb_func_end ChooseMonForDaycare - thumb_func_start sub_81283A8 -sub_81283A8: @ 81283A8 + thumb_func_start ChoosePartyMonByMenuType +ChoosePartyMonByMenuType: @ 81283A8 push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 ldr r2, _081283D4 @ =gFieldCallback2 - ldr r1, _081283D8 @ =hm_add_c3_without_phase_2 + ldr r1, _081283D8 @ =CB2_FadeFromPartyMenu str r1, [r2] movs r1, 0 str r1, [sp] - ldr r1, _081283DC @ =sub_811FB28 + ldr r1, _081283DC @ =Task_HandleChooseMonInput str r1, [sp, 0x4] ldr r1, _081283E0 @ =CB2_ReturnToField str r1, [sp, 0x8] movs r1, 0 movs r2, 0xB movs r3, 0 - bl PartyMenuInit + bl InitPartyMenu add sp, 0xC pop {r0} bx r0 .align 2, 0 _081283D4: .4byte gFieldCallback2 -_081283D8: .4byte hm_add_c3_without_phase_2 -_081283DC: .4byte sub_811FB28 +_081283D8: .4byte CB2_FadeFromPartyMenu +_081283DC: .4byte Task_HandleChooseMonInput _081283E0: .4byte CB2_ReturnToField - thumb_func_end sub_81283A8 + thumb_func_end ChoosePartyMonByMenuType - thumb_func_start hm_add_c3_without_phase_2 -hm_add_c3_without_phase_2: @ 81283E4 + thumb_func_start CB2_FadeFromPartyMenu +CB2_FadeFromPartyMenu: @ 81283E4 push {lr} bl sub_807DC00 - ldr r0, _081283F8 @ =task_hm_without_phase_2 + ldr r0, _081283F8 @ =Task_PartyMenuWaitForFade movs r1, 0xA bl CreateTask movs r0, 0x1 pop {r1} bx r1 .align 2, 0 -_081283F8: .4byte task_hm_without_phase_2 - thumb_func_end hm_add_c3_without_phase_2 +_081283F8: .4byte Task_PartyMenuWaitForFade + thumb_func_end CB2_FadeFromPartyMenu - thumb_func_start task_hm_without_phase_2 -task_hm_without_phase_2: @ 81283FC + thumb_func_start Task_PartyMenuWaitForFade +Task_PartyMenuWaitForFade: @ 81283FC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 beq _0812841A @@ -19385,6 +19385,6 @@ _0812841A: pop {r4} pop {r0} bx r0 - thumb_func_end task_hm_without_phase_2 + thumb_func_end Task_PartyMenuWaitForFade .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 5c95eb22a..337361dcf 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1455,7 +1455,7 @@ _0808C3E0: .align 2, 0 _0808C444: .4byte gUnknown_83CDA20 _0808C448: - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 bne _0808C454 @@ -6591,7 +6591,7 @@ _0808EEE8: ldr r2, _0808EF08 @ =sub_808CE60 movs r0, 0x4 movs r1, 0 - bl sub_8107DB4 + bl GoToBagMenu _0808EEF6: adds r0, r7, 0 bl DestroyTask diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index d1d6ed06f..ee5a96156 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -3448,7 +3448,7 @@ _08136168: ldr r0, [r6] ldr r3, _08136208 @ =0x00003084 adds r0, r3 - ldr r1, _0813620C @ =gUnknown_8416221 + ldr r1, _0813620C @ =gText_FemaleSymbol bl StringCopy b _08136238 .align 2, 0 @@ -3459,19 +3459,19 @@ _081361FC: .4byte 0x00003220 _08136200: .4byte 0x00003221 _08136204: .4byte 0x00003034 _08136208: .4byte 0x00003084 -_0813620C: .4byte gUnknown_8416221 +_0813620C: .4byte gText_FemaleSymbol _08136210: cmp r7, 0 bne _0813622C ldr r0, [r6] ldr r1, _08136224 @ =0x00003084 adds r0, r1 - ldr r1, _08136228 @ =gUnknown_841621F + ldr r1, _08136228 @ =gText_MaleSymbol bl StringCopy b _08136238 .align 2, 0 _08136224: .4byte 0x00003084 -_08136228: .4byte gUnknown_841621F +_08136228: .4byte gText_MaleSymbol _0813622C: ldr r0, [r6] ldr r2, _08136308 @ =0x00003084 @@ -3622,7 +3622,7 @@ sub_8136350: @ 8136350 bl ConvertIntToDecimalStringN ldr r0, [r6] adds r0, r4 - ldr r1, _08136504 @ =gUnknown_841620C + ldr r1, _08136504 @ =gText_Slash bl StringAppend ldr r0, [r6] adds r0, r7 @@ -3794,7 +3794,7 @@ _081363E6: _081364F8: .4byte gUnknown_203B140 _081364FC: .4byte 0x00003290 _08136500: .4byte 0x00003090 -_08136504: .4byte gUnknown_841620C +_08136504: .4byte gText_Slash _08136508: .4byte gUnknown_203B144 _0813650C: .4byte 0x000032f8 _08136510: .4byte sub_804CF14 @@ -5618,7 +5618,7 @@ _081373EA: str r6, [sp] mov r7, r9 str r7, [sp, 0x4] - ldr r1, _081374E0 @ =gUnknown_841620C + ldr r1, _081374E0 @ =gText_Slash str r1, [sp, 0x8] movs r1, 0x2 movs r2, 0x3A @@ -5663,7 +5663,7 @@ _081374D0: .4byte gUnknown_8416238 _081374D4: .4byte gUnknown_203B144 _081374D8: .4byte 0x000030b8 _081374DC: .4byte 0x00003258 -_081374E0: .4byte gUnknown_841620C +_081374E0: .4byte gText_Slash _081374E4: .4byte 0x000030f0 thumb_func_end sub_81372E4 @@ -9489,7 +9489,7 @@ sub_8139388: @ 8139388 bl sub_8138BEC lsls r0, 16 lsrs r0, 16 - bl sub_8125A90 + bl IsMoveHm lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/region_map.s b/asm/region_map.s index 5d136385b..7b23cf1e3 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -7395,7 +7395,7 @@ sub_80C3B00: @ 80C3B00 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -7477,7 +7477,7 @@ _080C3BAC: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r2, r0, 0 ldr r0, _080C3BEC @ =gUnknown_20399E4 ldr r1, [r0] @@ -7506,7 +7506,7 @@ _080C3BF0: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r2, r0, 0 ldr r0, _080C3C28 @ =gUnknown_20399E4 ldr r1, [r0] @@ -7543,7 +7543,7 @@ _080C3C2C: ldrsb r1, [r5, r1] lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r2, r0, 0 b _080C3C8E .align 2, 0 @@ -7564,7 +7564,7 @@ _080C3C68: ldrsb r1, [r5, r1] lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r2, r0, 0 ldr r1, [r4] ldrb r0, [r2, 0x14] @@ -9761,8 +9761,8 @@ _080C4DF2: bx r1 thumb_func_end GetMapName - thumb_func_start sub_80C4DF8 -sub_80C4DF8: @ 80C4DF8 + thumb_func_start GetMapNameGeneric +GetMapNameGeneric: @ 80C4DF8 push {lr} lsls r1, 16 lsrs r1, 16 @@ -9770,14 +9770,14 @@ sub_80C4DF8: @ 80C4DF8 bl GetMapName pop {r1} bx r1 - thumb_func_end sub_80C4DF8 + thumb_func_end GetMapNameGeneric thumb_func_start sub_80C4E08 sub_80C4E08: @ 80C4E08 push {lr} lsls r1, 16 lsrs r1, 16 - bl sub_80C4DF8 + bl GetMapNameGeneric pop {r1} bx r1 thumb_func_end sub_80C4E08 @@ -10283,7 +10283,7 @@ _080C5220: _080C5250: .4byte gUnknown_20399FC _080C5254: .4byte CB2_ReturnToField _080C5258: - ldr r0, _080C5274 @ =sub_8124AB0 + ldr r0, _080C5274 @ =CB2_ReturnToPartyMenuFromFlyMap bl SetMainCallback2 _080C525E: ldr r4, _080C5278 @ =gUnknown_20399FC @@ -10298,7 +10298,7 @@ _080C526E: pop {r0} bx r0 .align 2, 0 -_080C5274: .4byte sub_8124AB0 +_080C5274: .4byte CB2_ReturnToPartyMenuFromFlyMap _080C5278: .4byte gUnknown_20399FC thumb_func_end sub_80C5208 diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s index 81b3b7efe..6f451b90a 100644 --- a/asm/script_pokemon_util_80A0058.s +++ b/asm/script_pokemon_util_80A0058.s @@ -385,7 +385,7 @@ sub_80A0334: @ 80A0334 ldr r0, _080A034C @ =sub_80A0350 str r0, [r1, 0x8] movs r0, 0 - bl sub_81274A8 + bl InitChooseHalfPartyForBattle pop {r0} bx r0 .align 2, 0 @@ -427,7 +427,7 @@ ChooseBattleTowerPlayerParty: @ 80A0380 ldr r0, _080A0398 @ =sub_80A039C str r0, [r1, 0x8] movs r0, 0x1 - bl sub_81274A8 + bl InitChooseHalfPartyForBattle pop {r0} bx r0 .align 2, 0 diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s index 15d19e08b..a909758c2 100644 --- a/asm/script_pokemon_util_80BF8FC.s +++ b/asm/script_pokemon_util_80BF8FC.s @@ -88,7 +88,7 @@ sub_80BF97C: @ 80BF97C lsls r0, 3 adds r0, r1 ldrb r0, [r0, 0x8] - bl sub_81283A8 + bl ChoosePartyMonByMenuType adds r0, r4, 0 bl DestroyTask _080BF9AC: diff --git a/asm/shop.s b/asm/shop.s index bc5eccd64..7df8f037a 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -291,7 +291,7 @@ sub_809ACD4: @ 809ACD4 ldr r2, _0809ACEC @ =CB2_ReturnToField movs r0, 0x2 movs r1, 0x3 - bl sub_8107DB4 + bl GoToBagMenu ldr r1, _0809ACF0 @ =gFieldCallback ldr r0, _0809ACF4 @ =sub_809AD74 str r0, [r1] @@ -386,7 +386,7 @@ sub_809AD8C: @ 809AD8C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl field_weather_is_fade_finished + bl IsWeatherNotFadingIn lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/event_scripts.s b/data/event_scripts.s index f75442912..89099c58f 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -9706,7 +9706,7 @@ EventScript_1BC13A:: @ 81BC13A goto_if eq, EventScript_1BC2A6 msgbox gUnknown_81BD059 setvar VAR_0x8005, 0 - special sub_8127888 + special ChooseMonForWirelessMinigame waitstate compare_var_to_value VAR_0x8004, 6 goto_if ge, EventScript_1BB83F @@ -9726,7 +9726,7 @@ EventScript_1BC184:: @ 81BC184 goto_if eq, EventScript_1BC2A6 msgbox gUnknown_81BD059 setvar VAR_0x8005, 1 - special sub_8127888 + special ChooseMonForWirelessMinigame waitstate compare_var_to_value VAR_0x8004, 6 goto_if ge, EventScript_1BB83F diff --git a/data/graphics.s b/data/graphics.s index 5eacc0cb2..9810abf91 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13892,15 +13892,15 @@ gFile_graphics_battle_anims_sprites_188_palette:: @ 8E826E8 .incbin "graphics/battle_anims/sprites/188.gbapal.lz" .align 2 -gFile_graphics_interface_party_menu_misc_sheet:: @ 8E82700 +gPartyMenuBg_Gfx:: @ 8E82700 .incbin "graphics/interface/party_menu_misc.4bpp.lz" .align 2 -gUnknown_8E829C8:: @ 8E829C8 +gPartyMenuBg_Pal:: @ 8E829C8 .incbin "baserom.gba", 0xE829C8, 0xE8 .align 2 -gFile_graphics_interface_party_menu_misc_tilemap:: @ 8E82AB0 +gPartyMenuBg_Tilemap:: @ 8E82AB0 .incbin "graphics/interface/party_menu_misc.bin.lz" .align 2 diff --git a/data/party_menu.s b/data/party_menu.s index 7c484deb3..1f10d0ea5 100644 --- a/data/party_menu.s +++ b/data/party_menu.s @@ -23,7 +23,7 @@ gMoveTutorMoves:: @ 8459B60 .2byte MOVE_ROCK_SLIDE .2byte MOVE_SUBSTITUTE -gMoveTutorMoveCompatibilityTable:: @ 8459B7E +sTutorLearnsets:: @ 8459B7E .2byte 0x0000 .2byte 0x409a .2byte 0x409a @@ -438,16 +438,13 @@ gMoveTutorMoveCompatibilityTable:: @ 8459B7E .2byte 0x4490 .align 2 -gUnknown_8459EB8:: @ 8459EB8 +sPartyMenuBgTemplates:: @ 8459EB8 .incbin "baserom.gba", 0x459EB8, 0xC -gUnknown_8459EC4:: @ 8459EC4 - .incbin "baserom.gba", 0x459EC4, 0x20 +sPartyBoxInfoRects:: @ 8459EC4 + .incbin "baserom.gba", 0x459EC4, 0x40 -gUnknown_8459EE4:: @ 8459EE4 - .incbin "baserom.gba", 0x459EE4, 0x20 - -gUnknown_8459F04:: @ 8459F04 +sPartyMenuSpriteCoords:: @ 8459F04 .incbin "baserom.gba", 0x459F04, 0xC0 gUnknown_8459FC4:: @ 8459FC4 @@ -456,31 +453,31 @@ gUnknown_8459FC4:: @ 8459FC4 gUnknown_8459FE0:: @ 8459FE0 .incbin "baserom.gba", 0x459FE0, 0x1C -gUnknown_8459FFC:: @ 8459FFC +sFontColorTable:: @ 8459FFC .incbin "baserom.gba", 0x459FFC, 0xF gUnknown_845A00B:: @ 845A00B .incbin "baserom.gba", 0x45A00B, 0x5 -gUnknown_845A010:: @ 845A010 +sSinglePartyMenuWindowTemplate:: @ 845A010 .incbin "baserom.gba", 0x45A010, 0x40 -gUnknown_845A050:: @ 845A050 +sDoublePartyMenuWindowTemplate:: @ 845A050 .incbin "baserom.gba", 0x45A050, 0x40 -gUnknown_845A090:: @ 845A090 +sMultiPartyMenuWindowTemplate:: @ 845A090 .incbin "baserom.gba", 0x45A090, 0x40 -gUnknown_845A0D0:: @ 845A0D0 +sShowcaseMultiPartyMenuWindowTemplate:: @ 845A0D0 .incbin "baserom.gba", 0x45A0D0, 0x38 -gUnknown_845A108:: @ 845A108 +sCancelButtonWindowTemplate:: @ 845A108 .incbin "baserom.gba", 0x45A108, 0x8 -gUnknown_845A110:: @ 845A110 +sMultiCancelButtonWindowTemplate:: @ 845A110 .incbin "baserom.gba", 0x45A110, 0x8 -gUnknown_845A118:: @ 845A118 +sConfirmButtonWindowTemplate:: @ 845A118 .incbin "baserom.gba", 0x45A118, 0x8 gUnknown_845A120:: @ 845A120 @@ -498,19 +495,19 @@ gUnknown_845A138:: @ 845A138 gUnknown_845A140:: @ 845A140 .incbin "baserom.gba", 0x45A140, 0x8 -gUnknown_845A148:: @ 845A148 +sItemGiveTakeWindowTemplate:: @ 845A148 .incbin "baserom.gba", 0x45A148, 0x8 -gUnknown_845A150:: @ 845A150 +sMailReadTakeWindowTemplate:: @ 845A150 .incbin "baserom.gba", 0x45A150, 0x8 -gUnknown_845A158:: @ 845A158 +sMoveSelectWindowTemplate:: @ 845A158 .incbin "baserom.gba", 0x45A158, 0x8 -gUnknown_845A160:: @ 845A160 +sPartyMenuYesNoWindowTemplate:: @ 845A160 .incbin "baserom.gba", 0x45A160, 0x8 -gUnknown_845A168:: @ 845A168 +sLevelUpStatsWindowTemplate:: @ 845A168 .incbin "baserom.gba", 0x45A168, 0x8 gUnknown_845A170:: @ 845A170 @@ -519,22 +516,22 @@ gUnknown_845A170:: @ 845A170 gUnknown_845A178:: @ 845A178 .incbin "baserom.gba", 0x45A178, 0x8 -gUnknown_845A180:: @ 845A180 +sMainSlotTileNums:: @ 845A180 .incbin "baserom.gba", 0x45A180, 0x46 -gUnknown_845A1C6:: @ 845A1C6 +sMainSlotTileNums_Egg:: @ 845A1C6 .incbin "baserom.gba", 0x45A1C6, 0x46 -gUnknown_845A20C:: @ 845A20C +sOtherSlotTileNums:: @ 845A20C .incbin "baserom.gba", 0x45A20C, 0x36 -gUnknown_845A242:: @ 845A242 +sOtherSlotTileNums_Egg:: @ 845A242 .incbin "baserom.gba", 0x45A242, 0x36 gUnknown_845A278:: @ 845A278 .incbin "baserom.gba", 0x45A278, 0x36 -gUnknown_845A2AE:: @ 845A2AE +sGenderPalOffsets:: @ 845A2AE .incbin "baserom.gba", 0x45A2AE, 0x2 gUnknown_845A2B0:: @ 845A2B0 @@ -546,10 +543,10 @@ gUnknown_845A2B2:: @ 845A2B2 gUnknown_845A2B5:: @ 845A2B5 .incbin "baserom.gba", 0x45A2B5, 0x3 -gUnknown_845A2B8:: @ 845A2B8 +sGenderMalePalIds:: @ 845A2B8 .incbin "baserom.gba", 0x45A2B8, 0x2 -gUnknown_845A2BA:: @ 845A2BA +sGenderFemalePalIds:: @ 845A2BA .incbin "baserom.gba", 0x45A2BA, 0x2 gUnknown_845A2BC:: @ 845A2BC @@ -597,67 +594,67 @@ gUnknown_845A2E0:: @ 845A2E0 gUnknown_845A2E3:: @ 845A2E3 .incbin "baserom.gba", 0x45A2E3, 0x5 -gUnknown_845A2E8:: @ 845A2E8 +sActionStringTable:: @ 845A2E8 .incbin "baserom.gba", 0x45A2E8, 0x6C -gUnknown_845A354:: @ 845A354 +sDescriptionStringTable:: @ 845A354 .incbin "baserom.gba", 0x45A354, 0x28 gUnknown_845A37C:: @ 845A37C .incbin "baserom.gba", 0x45A37C, 0xB0 -gUnknown_845A42C:: @ 845A42C +sSpriteSheet_HeldItem:: @ 845A42C .incbin "baserom.gba", 0x45A42C, 0x8 -gUnknown_845A434:: @ 845A434 +sSpritePalette_HeldItem:: @ 845A434 .incbin "baserom.gba", 0x45A434, 0x8 -gUnknown_845A43C:: @ 845A43C +sSpriteTemplate_HeldItem:: @ 845A43C .incbin "baserom.gba", 0x45A43C, 0x38 -gUnknown_845A474:: @ 845A474 +sSpriteSheet_MenuPokeball:: @ 845A474 .incbin "baserom.gba", 0x45A474, 0x8 -gUnknown_845A47C:: @ 845A47C +sSpritePalette_MenuPokeball:: @ 845A47C .incbin "baserom.gba", 0x45A47C, 0x8 -gUnknown_845A484:: @ 845A484 +sSpriteTemplate_MenuPokeball:: @ 845A484 .incbin "baserom.gba", 0x45A484, 0x68 -gUnknown_845A4EC:: @ 845A4EC +sSpriteSheet_MenuPokeballSmall:: @ 845A4EC .incbin "baserom.gba", 0x45A4EC, 0x8 -gUnknown_845A4F4:: @ 845A4F4 +sSpriteTemplate_MenuPokeballSmall:: @ 845A4F4 .incbin "baserom.gba", 0x45A4F4, 0x80 -gUnknown_845A574:: @ 845A574 +sSpriteSheet_StatusIcons:: @ 845A574 .incbin "baserom.gba", 0x45A574, 0x8 -gUnknown_845A57C:: @ 845A57C +sSpritePalette_StatusIcons:: @ 845A57C .incbin "baserom.gba", 0x45A57C, 0x8 -gUnknown_845A584:: @ 845A584 +sSpriteTemplate_StatusIcons:: @ 845A584 .incbin "baserom.gba", 0x45A584, 0x18 -gUnknown_845A59C:: @ 845A59C +sMultiBattlePartnersPartyMask:: @ 845A59C .incbin "baserom.gba", 0x45A59C, 0x7C -gUnknown_845A618:: @ 845A618 +sCursorOptions:: @ 845A618 .incbin "baserom.gba", 0x45A618, 0x114 -gUnknown_845A72C:: @ 845A72C +sPartyMenuActions:: @ 845A72C .incbin "baserom.gba", 0x45A72C, 0x34 -gUnknown_845A760:: @ 845A760 +sPartyMenuActionCounts:: @ 845A760 .incbin "baserom.gba", 0x45A760, 0xE -gUnknown_845A76E:: @ 845A76E +sFieldMoves:: @ 845A76E .incbin "baserom.gba", 0x45A76E, 0x1A -gUnknown_845A788:: @ 845A788 +sFieldMoveCursorCallbacks:: @ 845A788 .incbin "baserom.gba", 0x45A788, 0x60 -gUnknown_845A7E8:: @ 845A7E8 +sUnionRoomTradeMessages:: @ 845A7E8 .4byte gUnknown_841718C @ Not what other player wants .4byte gUnknown_84171CC @ Not an egg .4byte gUnknown_84170BC @ Mon can't be traded @@ -668,5 +665,5 @@ gUnknown_845A7E8:: @ 845A7E8 .4byte gUnknown_8417164 @ Can't trade with trainer now .4byte gUnknown_8417164 @ Can't trade with trainer now -gUnknown_845A80C:: @ 845A80C +sTMHMMoves:: @ 845A80C .incbin "baserom.gba", 0x45A80C, 0x74 diff --git a/data/specials.inc b/data/specials.inc index 6c1cbfa8e..148da72dc 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -406,7 +406,7 @@ gSpecials:: @ 815FD60 def_special Special_OpenMuseumFossilPic def_special Special_CloseMuseumFossilPic def_special sub_812781C - def_special sub_8127888 + def_special ChooseMonForWirelessMinigame def_special SetBattledTrainerFlag def_special sub_812B35C def_special Special_SSAnneDepartureCutscene diff --git a/data/strings.s b/data/strings.s index a1892e209..3cd263df9 100644 --- a/data/strings.s +++ b/data/strings.s @@ -463,7 +463,7 @@ gUnknown_8416202:: @ 8416202 gUnknown_8416206:: .string "?????$" -gUnknown_841620C:: @ 841620C +gText_Slash:: @ 841620C .string "/$" gUnknown_841620E:: @ 841620E @@ -478,10 +478,10 @@ gText_ThreeHyphens:: @ 8416213 gUnknown_8416217:: @ 8416217 .string "-------$" -gUnknown_841621F:: @ 841621F +gText_MaleSymbol:: @ 841621F .string "♂$" -gUnknown_8416221:: @ 8416221 +gText_FemaleSymbol:: @ 8416221 .string "♀$" gText_Lv:: @ 8416223 @@ -834,25 +834,25 @@ gUnknown_84169B7:: @ 0x84169B7 gUnknown_84169BC:: @ 0x84169BC .string "TRADE$" -gUnknown_84169C2:: @ 84169C2 +gText_HP3:: @ 84169C2 .string "HP$" -gUnknown_84169C5:: @ 84169C5 +gText_SpAtk3:: @ 84169C5 .string "SP. ATK$" -gUnknown_84169CD:: @ 84169CD +gText_SpDef3:: @ 84169CD .string "SP. DEF$" -gUnknown_84169D5:: @ 84169D5 +gMenuText_Confirm:: @ 84169D5 .string "OK$" gUnknown_84169D8:: @ 0x84169D8 .string "$" -gUnknown_84169D9:: @ 84169D9 +gText_PauseUntilPress:: @ 84169D9 .string "{PAUSE_UNTIL_PRESS}$" -gUnknown_84169DC:: @ 84169DC +gText_WontHaveEffect:: @ 84169DC .string "It won't have any effect.{PAUSE_UNTIL_PRESS}$" gUnknown_84169F8:: @ 84169F8 @@ -882,7 +882,7 @@ gUnknown_8416A98:: @ 8416A98 gUnknown_8416ACB:: @ 8416ACB .string "An EGG can't battle!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416AE2:: @ 8416AE2 +gText_CantUseUntilNewBadge:: @ 8416AE2 .string "This can't be used until a new\n" .string "BADGE is obtained.{PAUSE_UNTIL_PRESS}$" @@ -894,17 +894,17 @@ gUnknown_8416B3E:: @ 8416B3E .string "No more than two POKéMON\n" .string "may enter.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416B64:: @ 8416B64 +gText_SendMailToPC:: @ 8416B64 .string "Send the removed MAIL to\n" .string "your PC?$" -gUnknown_8416B86:: @ 8416B86 +gText_MailSentToPC:: @ 8416B86 .string "The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416BA6:: @ 8416BA6 +gText_PCMailboxFull:: @ 8416BA6 .string "Your PC's MAILBOX is full.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416BC3:: @ 8416BC3 +gText_MailMessageWillBeLost:: @ 8416BC3 .string "If the MAIL is removed, the\n" .string "message will be lost. Okay?$" @@ -912,11 +912,11 @@ gUnknown_8416BFB:: @ 8416BFB .string "MAIL must be removed before\n" .string "holding an item.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416C2A:: @ 8416C2A +gText_PkmnWasGivenItem:: @ 8416C2A .string "{STR_VAR_1} was given the\n" .string "{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416C49:: @ 8416C49 +gText_PkmnAlreadyHoldingItemSwitch:: @ 8416C49 .string "{STR_VAR_1} is already holding\n" .string "one {STR_VAR_2}.\p" .string "Would you like to switch the\n" @@ -926,41 +926,41 @@ gUnknown_8416C8F:: @ 8416C8F .string "{STR_VAR_1} isn't holding\n" .string "anything.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416CAC:: @ 8416CAC +gText_ReceivedItemFromPkmn:: @ 8416CAC .string "Received the {STR_VAR_2}\n" .string "from {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416CC7:: @ 8416CC7 +gText_MailTakenFromPkmn:: @ 8416CC7 .string "MAIL was taken from the\n" .string "POKéMON.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416CEA:: @ 8416CEA +gText_SwitchedPkmnItem:: @ 8416CEA .string "The {STR_VAR_2} was taken and\n" .string "replaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416D17:: @ 8416D17 +gText_PkmnHoldingItemCantHoldMail:: @ 8416D17 .string "This POKéMON is holding an\n" .string "item. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416D4F:: @ 8416D4F +gText_MailTransferredFromMailbox:: @ 8416D4F .string "MAIL was transferred from\n" .string "the MAILBOX.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416D78:: @ 8416D78 +gText_BagFullCouldNotRemoveItem:: @ 8416D78 .string "The {STR_VAR_1} is full. The POKéMON's\n" .string "item could not be removed.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416DB3:: @ 8416DB3 +gText_PkmnLearnedMove3:: @ 8416DB3 .string "{STR_VAR_1} learned\n" .string "{STR_VAR_2}!$" -gUnknown_8416DC2:: @ 8416DC2 +gText_PkmnCantLearnMove:: @ 8416DC2 .string "{STR_VAR_1} and {STR_VAR_2}\n" .string "are not compatible.\p" .string "{STR_VAR_2} can't be\n" .string "learned.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416DF7:: @ 8416DF7 +gText_PkmnNeedsToReplaceMove:: @ 8416DF7 .string "{STR_VAR_1} wants to learn the\n" .string "move {STR_VAR_2}.\p" .string "However, {STR_VAR_1} already\n" @@ -968,15 +968,15 @@ gUnknown_8416DF7:: @ 8416DF7 .string "Should a move be deleted and\n" .string "replaced with {STR_VAR_2}?$" -gUnknown_8416E6B:: @ 8416E6B +gText_StopLearningMove2:: @ 8416E6B .string "Stop trying to teach\n" .string "{STR_VAR_2}?$" -gUnknown_8416E84:: @ 8416E84 +gText_MoveNotLearned:: @ 8416E84 .string "{STR_VAR_1} did not learn the\n" .string "move {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416EA4:: @ 8416EA4 +gText_WhichMoveToForget:: @ 8416EA4 .string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$" gUnknown_8416EC6:: @ 8416EC6 @@ -985,57 +985,57 @@ gUnknown_8416EC6:: @ 8416EC6 .string "use {STR_VAR_2}.\p" .string "And...{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F10:: @ 8416F10 +gText_PkmnAlreadyKnows:: @ 8416F10 .string "{STR_VAR_1} already knows\n" .string "{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F27:: @ 8416F27 +gText_PkmnHPRestoredByVar2:: @ 8416F27 .string "{STR_VAR_1}'s HP was restored\n" .string "by {STR_VAR_2} point(s).{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F4E:: @ 8416F4E +gText_PkmnCuredOfPoison:: @ 8416F4E .string "{STR_VAR_1} was cured of its\n" .string "poisoning.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F6F:: @ 8416F6F +gText_PkmnCuredOfParalysis:: @ 8416F6F .string "{STR_VAR_1} was cured of\n" .string "paralysis.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F8C:: @ 8416F8C +gText_PkmnWokeUp2:: @ 8416F8C .string "{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416F9A:: @ 8416F9A +gText_PkmnBurnHealed:: @ 8416F9A .string "{STR_VAR_1}'s burn was healed.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416FB2:: @ 8416FB2 +gText_PkmnThawedOut:: @ 8416FB2 .string "{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416FC7:: @ 8416FC7 +gText_PPWasRestored:: @ 8416FC7 .string "PP was restored.{PAUSE_UNTIL_PRESS}$" gUnknown_8416FDA:: @ 0x8416FDA .string "{STR_VAR_1}は\n" .string "げんきを とりもどした!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416FED:: @ 8416FED +gText_PkmnBecameHealthy:: @ 8416FED .string "{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417002:: @ 8417002 +gText_MovesPPIncreased:: @ 8417002 .string "{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417017:: @ 8417017 +gText_PkmnElevatedToLvVar2:: @ 8417017 .string "{STR_VAR_1} was elevated to\n" .string "Lv. {STR_VAR_2}.$" -gUnknown_8417032:: @ 8417032 +gText_PkmnBaseVar2StatIncreased:: @ 8417032 .string "{STR_VAR_1}'s base {STR_VAR_2}\n" .string "stat was raised.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417052:: @ 8417052 +gText_PkmnSnappedOutOfConfusion:: @ 8417052 .string "{STR_VAR_1} snapped out of its\n" .string "confusion.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417075:: @ 8417075 +gText_PkmnGotOverInfatuation:: @ 8417075 .string "{STR_VAR_1} got over its\n" .string "infatuation.{PAUSE_UNTIL_PRESS}$" @@ -1241,10 +1241,10 @@ gUnknown_8417640:: @ 8417640 .string "Want to return to the healing spot\n" .string "used last in {STR_VAR_1}?$" -gUnknown_8417674:: @ 8417674 +gText_Attack3:: @ 8417674 .string "ATTACK$" -gUnknown_841767B:: @ 841767B +gText_Defense3:: @ 841767B .string "DEFENSE$" gUnknown_8417683:: @ 0x8417683 @@ -1253,7 +1253,7 @@ gUnknown_8417683:: @ 0x8417683 gUnknown_8417688:: @ 0x8417688 .string "とくぼう$" -gUnknown_841768D:: @ 841768D +gText_Speed2:: @ 841768D .string "SPEED$" gUnknown_8417693:: @ 0x8417693 diff --git a/include/battle.h b/include/battle.h index 00f7dcea9..0298dd265 100644 --- a/include/battle.h +++ b/include/battle.h @@ -712,7 +712,7 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; extern u8 gBattleTerrain; -extern struct UnknownPokemonStruct4 gUnknown_2022B58[3]; +extern struct UnknownPokemonStruct4 gMultiPartnerParty[3]; extern u16 *gUnknown_2022BC0; extern u16 gRandomTurnNumber; diff --git a/include/field_weather.h b/include/field_weather.h index 96c1ce7cb..2709a7298 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -13,7 +13,7 @@ void DoCurrentWeather(void); void SetSav1WeatherFromCurrMapHeader(void); void sub_807B0C4(u16 *, u16 *, u32); void PlayRainStoppingSoundEffect(void); -bool8 field_weather_is_fade_finished(void); +bool8 IsWeatherNotFadingIn(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); u8 GetCurrentWeather(void); diff --git a/include/fldeff.h b/include/fldeff.h index 25d5b8d43..690d5f953 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -44,7 +44,7 @@ bool8 FldEff_UseTeleport(void); // softboiled bool8 hm_prepare_dive_probably(void); -void sub_80E56DC(u8 taskId); +void ChooseMonForSoftboiled(u8 taskId); void sub_80E5724(u8 taskId); // sweetscent diff --git a/include/item_menu.h b/include/item_menu.h index d12b9f394..187674e83 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -25,7 +25,7 @@ extern u16 gSpecialVar_ItemId; // Exported ROM declarations void sub_81AAC50(void); void sub_81AAC70(void); -void sub_8108CF0(void); +void CB2_SetUpReshowBattleScreenAfterMenu(void); void sub_81089BC(void); void sub_810B108(u8); void CB2_BagMenuFromStartMenu(void); @@ -39,6 +39,6 @@ void sub_8107ECC(void); void sub_810AF74(void); void sub_8108DC8(u8 pocketId); void sub_81089F4(u8 pocketId); -void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback); +void GoToBagMenu(u8 menuType, u8 pocket, MainCallback callback); #endif //GUARD_ITEM_MENU_H diff --git a/include/overworld.h b/include/overworld.h index 36c890eb5..d893899eb 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -72,7 +72,7 @@ void Overworld_ChangeMusicTo(u16); bool32 IsUpdateLinkStateCBActive(void); void strange_npc_table_clear(void); -const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16); +const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16); void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); void CB2_ReturnToField(void); diff --git a/include/party_menu.h b/include/party_menu.h index 19cdda1dc..6e96c47ee 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -40,55 +40,55 @@ struct Struct203B0A0 s16 unk10; }; -extern struct Struct203B0A0 gUnknown_203B0A0; -extern u8 gUnknown_203B0C0; +extern struct Struct203B0A0 gPartyMenu; +extern u8 gPartyMenuUseExitCallback; extern u8 gUnknown_203B0C1; -extern u8 gUnknown_203B0DC[3]; -extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); +extern u8 gBattlePartyCurrentOrder[3]; +extern void (*gItemUseCB)(u8 taskId, TaskFunc func); extern u8 gSelectedOrderFromParty[3]; bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); -u8 pokemon_ailments_get_primary(u32 status); +u8 GetAilmentFromStatus(u32 status); u16 ItemIdToBattleMoveId(u16 itemId); -void sub_8125B40(u8 taskId, TaskFunc func); -void sub_8124C8C(void); -void sub_8126EDC(void); -void c2_8123744(void); +void ItemUseCB_TMHM(u8 taskId, TaskFunc func); +void CB2_ShowPartyMenuForItemUse(void); +void CB2_ChooseMonToGiveItem(void); +void CB2_GiveHoldItem(void); u8 GetCursorSelectionMonId(void); -void sub_8128370(void); -void sub_811F818(u8 monId, u8 a1); -void sub_8121D0C(u8); -void sub_811FB28(u8 taskId); -void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); +void ChooseMonForDaycare(void); +void AnimatePartySlot(u8 monId, u8 a1); +void DisplayPartyMenuStdMessage(u8); +void Task_HandleChooseMonInput(u8 taskId); +void PartyMenuModifyHP(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); void GetMonNickname(const struct Pokemon * mon, u8 * dest); -void sub_81202F8(const u8 * src, u8 a1); -bool8 sub_8120370(void); -void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); +void DisplayPartyMenuMessage(const u8 * src, u8 a1); +bool8 IsPartyMenuTextPrinterActive(void); +void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); void sub_81252D0(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_PpRestore(u8 taskId, TaskFunc followUpFunc); -void dp05_pp_up(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_PPRecovery(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_PPUp(u8 taskId, TaskFunc followUpFunc); void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc); void sub_8126B60(u8 taskId, TaskFunc followUpFunc); -void sub_8126894(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_SacredAsh(u8 taskId, TaskFunc followUpFunc); void sub_81279E0(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); -void sub_8127CAC(void); -void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); -void OpenPartyMenuInBattle(u8 arg); -void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); +void BufferBattlePartyCurrentOrder(void); +void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 multiplayerFlag); +void OpenPartyMenuInBattle(void); +void SwitchPartyOrderLinkMulti(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); -void sub_8126EDC(void); -void sub_812256C(u8 *partyCount, u8 (*icons)[6], u8 side); -void PartyMenuInit_FromPlayerPc(void); +void CB2_ChooseMonToGiveItem(void); +void DrawHeldItemIconsForTrade(u8 *partyCount, u8 (*icons)[6], u8 side); +void ChooseMonToGiveMailFromMailbox(void); void CB2_PartyMenuFromStartMenu(void); -void sub_8128198(void); -void sub_8127FF4(u8 slot, u8 slot2); +void ShowPartyMenuToShowcaseMultiBattleParty(void); +void SwitchPartyMonSlots(u8 slot, u8 slot2); void LoadHeldItemIcons(void); -void sub_8127968(void); +void OpenPartyMenuInTutorialBattle(u8 partyAction); #endif // GUARD_PARTY_MENU_H diff --git a/include/region_map.h b/include/region_map.h index 394fee469..8d609f104 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -94,7 +94,7 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); -void sub_80C4DF8(u8 *, u8); +void GetMapNameGeneric(u8 *, u8); void sub_80BFF50(u8 a0, void (*a1)(void)); #endif //GUARD_REGION_MAP_H diff --git a/include/strings.h b/include/strings.h index 7750b271c..f5dc759e6 100644 --- a/include/strings.h +++ b/include/strings.h @@ -181,7 +181,7 @@ extern const u8 gUnknown_8416644[]; extern const u8 gUnknown_841665C[]; extern const u8 gUnknown_8416690[]; extern const u8 gUnknown_84166A7[]; -extern const u8 gUnknown_84169DC[]; +extern const u8 gText_WontHaveEffect[]; extern const u8 gUnknown_841623D[]; extern const u8 gUnknown_84162BD[]; extern const u8 gUnknown_841D148[]; diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index a6730cbbb..da8530c72 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -355,7 +355,7 @@ static void OpenPartyMenuToChooseMon(void) caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; DestroyTask(gUnknown_3004FFC[gActiveBattler]); FreeAllWindowBuffers(); - OpenPartyMenuInBattle(caseId); + OpenPartyMenuInTutorialBattle(caseId); } } @@ -363,8 +363,8 @@ static void WaitForMonSelection(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - if (gUnknown_203B0C0 == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + if (gPartyMenuUseExitCallback == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); OakOldManBufferExecCompleted(); @@ -1879,7 +1879,7 @@ static void OakOldManHandleChooseItem(void) gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][i + 1]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][i + 1]; } static void OakOldManHandleChoosePokemon(void) @@ -1892,7 +1892,7 @@ static void OakOldManHandleChoosePokemon(void) *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; gBattlerInMenuId = gActiveBattler; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16bf1ec87..41d81052e 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1305,7 +1305,7 @@ static void OpenPartyMenuToChooseMon(void) caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; DestroyTask(gUnknown_3004FFC[gActiveBattler]); FreeAllWindowBuffers(); - OpenPartyMenuInBattle(caseId); + OpenPartyMenuInTutorialBattle(caseId); } } @@ -1313,8 +1313,8 @@ static void WaitForMonSelection(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - if (gUnknown_203B0C0 == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + if (gPartyMenuUseExitCallback == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) @@ -2462,7 +2462,7 @@ static void PlayerHandleChooseItem(void) gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][1 + i]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][1 + i]; } static void PlayerHandleChoosePokemon(void) @@ -2475,7 +2475,7 @@ static void PlayerHandleChoosePokemon(void) *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; gBattlerInMenuId = gActiveBattler; diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 57a405f3c..59fda163b 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -706,7 +706,7 @@ static void OpenPartyMenuToChooseMon(void) gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection; DestroyTask(gUnknown_3004FFC[gActiveBattler]); FreeAllWindowBuffers(); - sub_8127968(); + OpenPartyMenuInBattle(); } } @@ -714,8 +714,8 @@ static void WaitForMonSelection(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - if (gUnknown_203B0C0 == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + if (gPartyMenuUseExitCallback == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); PokedudeBufferExecCompleted(); @@ -1985,7 +1985,7 @@ static void PokedudeHandleChooseItem(void) gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][i + 1]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][i + 1]; } static void PokedudeHandleChoosePokemon(void) @@ -1998,7 +1998,7 @@ static void PokedudeHandleChoosePokemon(void) *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; gBattlerInMenuId = gActiveBattler; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 6fb090307..ca2ef0b22 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -75,7 +75,7 @@ void sub_800D30C(void) SetBattlePartyIds(); if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) for (i = 0; i < gBattlersCount; ++i) - sub_8127DA8(i, 0); + BufferBattlePartyCurrentOrderBySide(i, 0); } static void InitSinglePlayerBtlControllers(void) @@ -199,11 +199,11 @@ static void InitLinkBtlControllers(void) { case 0: case 3: - sub_8127DA8(gLinkPlayers[i].id, 0); + BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 0); break; case 1: case 2: - sub_8127DA8(gLinkPlayers[i].id, 1); + BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1); break; } if (i == multiplayerId) diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index d2e728d0c..55d413b3b 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -620,7 +620,7 @@ bool8 BattleInitAllSprites(u8 *state, u8 *battlerId) break; case 6: LoadAndCreateEnemyShadowSprites(); - sub_8127CAC(); + BufferBattlePartyCurrentOrder(); retVal = TRUE; break; } diff --git a/src/battle_main.c b/src/battle_main.c index 1125a8d2d..da9bc1a49 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -144,7 +144,7 @@ static EWRAM_DATA u32 gUnknown_2022AE8[25] = {0}; EWRAM_DATA u32 gBattleTypeFlags = 0; EWRAM_DATA u8 gBattleTerrain = 0; EWRAM_DATA u32 gUnknown_2022B54 = 0; -EWRAM_DATA struct UnknownPokemonStruct4 gUnknown_2022B58[3] = {0}; +EWRAM_DATA struct UnknownPokemonStruct4 gMultiPartnerParty[3] = {0}; EWRAM_DATA u8 *gUnknown_2022BB8 = NULL; EWRAM_DATA u8 *gUnknown_2022BBC = NULL; EWRAM_DATA u16 *gUnknown_2022BC0 = NULL; @@ -1078,16 +1078,16 @@ static void sub_80108C4(void) for (i = 0; i < 3; ++i) { - gUnknown_2022B58[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); - gUnknown_2022B58[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - nick = gUnknown_2022B58[i].nickname; + gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); + gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + nick = gMultiPartnerParty[i].nickname; GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); - gUnknown_2022B58[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); - gUnknown_2022B58[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - gUnknown_2022B58[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); - gUnknown_2022B58[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); - gUnknown_2022B58[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); - gUnknown_2022B58[i].gender = GetMonGender(&gPlayerParty[i]); + gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[i]); StripExtCtrlCodes(nick); if (GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) { @@ -1098,7 +1098,7 @@ static void sub_80108C4(void) cur[j] = EOS; } } - memcpy(&gBattleStruct->field_184, gUnknown_2022B58, sizeof(gUnknown_2022B58)); + memcpy(&gBattleStruct->field_184, gMultiPartnerParty, sizeof(gMultiPartnerParty)); } static void CB2_PreInitMultiBattle(void) @@ -1123,7 +1123,7 @@ static void CB2_PreInitMultiBattle(void) if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) { sub_80108C4(); - SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, sizeof(gUnknown_2022B58)); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, sizeof(gMultiPartnerParty)); ++gBattleCommunication[MULTIUSE_STATE]; } break; @@ -1137,13 +1137,13 @@ static void CB2_PreInitMultiBattle(void) continue; if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1)) || (gLinkPlayers[i].id & 1 && gLinkPlayers[playerMultiplierId].id & 1)) - memcpy(gUnknown_2022B58, gBlockRecvBuffer[i], sizeof(gUnknown_2022B58)); + memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(gMultiPartnerParty)); } ++gBattleCommunication[MULTIUSE_STATE]; *savedCallback = gMain.savedCallback; *savedBattleTypeFlags = gBattleTypeFlags; gMain.savedCallback = CB2_PreInitMultiBattle; - sub_8128198(); + ShowPartyMenuToShowcaseMultiBattleParty(); } break; case 2: @@ -3004,22 +3004,22 @@ void sub_8013F6C(u8 battler) u8 r4, r1; for (i = 0; i < 3; ++i) - gUnknown_203B0DC[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)); + gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)); r4 = pokemon_order_func(gBattlerPartyIndexes[battler]); r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler)); - sub_8127FF4(r4, r1); + SwitchPartyMonSlots(r4, r1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { for (i = 0; i < 3; ++i) { - *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; - *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; + *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i]; + *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i]; } } else { for (i = 0; i < 3; ++i) - *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gUnknown_203B0DC[i]; + *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i]; } } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8a0e32ba8..c568d96f9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7140,8 +7140,8 @@ static void atk8F_forcerandomswitch(void) *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i; if (!IsMultiBattle()) sub_8013F6C(gBattlerTarget); - sub_8127EC4(gBattlerTarget, i, 0); - sub_8127EC4(gBattlerTarget ^ 2, i, 1); + SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0); + SwitchPartyOrderLinkMulti(gBattlerTarget ^ 2, i, 1); } } else diff --git a/src/berry_pouch.c b/src/berry_pouch.c index b8b66c0bc..466fe7927 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1194,7 +1194,7 @@ static void Task_BerryPouch_Give(u8 taskId) Task_Give_PrintThereIsNoPokemon(taskId); else { - sResources->exitCallback = sub_8126EDC; + sResources->exitCallback = CB2_ChooseMonToGiveItem; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } @@ -1251,7 +1251,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId) } else { - sResources->exitCallback = c2_8123744; + sResources->exitCallback = CB2_GiveHoldItem; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } diff --git a/src/daycare.c b/src/daycare.c index f034bc220..8862dfda9 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1582,7 +1582,7 @@ void ShowDaycareLevelMenu(void) void ChooseSendDaycareMon(void) { - sub_8128370(); + ChooseMonForDaycare(); gMain.savedCallback = CB2_ReturnToField; } diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 58caad509..d6bf4ea07 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -522,7 +522,7 @@ static bool32 sub_807E40C(void) bool32 sub_807E418(void) { - if (field_weather_is_fade_finished() == TRUE && sub_80F83B0()) + if (IsWeatherNotFadingIn() == TRUE && sub_80F83B0()) return TRUE; else return FALSE; diff --git a/src/field_poison.c b/src/field_poison.c index 474fbcd69..07c2b763f 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -43,7 +43,7 @@ static void FaintFromFieldPoison(u8 partyIdx) static bool32 MonFaintedFromPoison(u8 partyIdx) { struct Pokemon *pokemon = gPlayerParty + partyIdx; - if (IsMonValidSpecies(pokemon) && !GetMonData(pokemon, MON_DATA_HP) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) + if (IsMonValidSpecies(pokemon) && !GetMonData(pokemon, MON_DATA_HP) && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) return TRUE; return FALSE; } @@ -97,7 +97,7 @@ s32 DoPoisonFieldEffect(void) u32 numFainted = 0; for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) + if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && GetAilmentFromStatus(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN) { hp = GetMonData(pokemon, MON_DATA_HP); if (hp == 0 || --hp == 0) diff --git a/src/field_specials.c b/src/field_specials.c index 617faa017..374c74f3c 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1863,7 +1863,7 @@ void sub_80CC59C(void) { if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23))) { - sp0.unk0 = get_mapheader_by_bank_and_number(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId; + sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId; if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22)) sp0.unk1 = r5; else @@ -1875,7 +1875,7 @@ void sub_80CC59C(void) } if (gSaveBlock1Ptr->location.mapGroup == sInsideOutsidePairs[r5].grp2 && gSaveBlock1Ptr->location.mapNum == sInsideOutsidePairs[r5].num2) { - sp0.unk0 = get_mapheader_by_bank_and_number(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId; + sp0.unk0 = Overworld_GetMapHeaderByGroupAndId(sInsideOutsidePairs[r5].grp, sInsideOutsidePairs[r5].num)->regionMapSectionId; sp0.unk1 = r5; if (r5 == 22) { diff --git a/src/fieldmap.c b/src/fieldmap.c index 000b8105b..4244762c0 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -60,7 +60,7 @@ const u8 gUnknown_8352F10[] = { const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection) { - return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum); + return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } void not_trainer_hill_battle_pyramid(void) diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index 400a1d382..6840df686 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -13,7 +13,7 @@ static void sub_80E58A0(u8 taskId); static void sub_80E5934(u8 taskId); extern const u8 gUnknown_84169F8[]; -extern const u8 gUnknown_8416F27[]; +extern const u8 gText_PkmnHPRestoredByVar2[]; bool8 hm_prepare_dive_probably(void) { @@ -26,27 +26,27 @@ bool8 hm_prepare_dive_probably(void) return FALSE; } -void sub_80E56DC(u8 taskId) +void ChooseMonForSoftboiled(u8 taskId) { - gUnknown_203B0A0.unkB = 10; - gUnknown_203B0A0.unkA = gUnknown_203B0A0.unk9; - sub_811F818(GetCursorSelectionMonId(), 1); - sub_8121D0C(5); - gTasks[taskId].func = sub_811FB28; + gPartyMenu.unkB = 10; + gPartyMenu.unkA = gPartyMenu.unk9; + AnimatePartySlot(GetCursorSelectionMonId(), 1); + DisplayPartyMenuStdMessage(5); + gTasks[taskId].func = Task_HandleChooseMonInput; } void sub_80E5724(u8 taskId) { - u8 r8 = gUnknown_203B0A0.unk9; - u8 r5 = gUnknown_203B0A0.unkA; + u8 r8 = gPartyMenu.unk9; + u8 r5 = gPartyMenu.unkA; u16 curHp; s16 delta; if (r5 > 6) { - gUnknown_203B0A0.unkB = 0; - sub_8121D0C(0); - gTasks[taskId].func = sub_811FB28; + gPartyMenu.unkB = 0; + DisplayPartyMenuStdMessage(0); + gTasks[taskId].func = Task_HandleChooseMonInput; } else { @@ -58,7 +58,7 @@ void sub_80E5724(u8 taskId) else { PlaySE(SE_KAIFUKU); - sub_8120760(taskId, r8, -1, GetMonData(&gPlayerParty[r8], MON_DATA_MAX_HP) / 5, sub_80E57E8); + PartyMenuModifyHP(taskId, r8, -1, GetMonData(&gPlayerParty[r8], MON_DATA_MAX_HP) / 5, sub_80E57E8); } } } @@ -66,46 +66,46 @@ void sub_80E5724(u8 taskId) static void sub_80E57E8(u8 taskId) { PlaySE(SE_KAIFUKU); - sub_8120760(taskId, gUnknown_203B0A0.unkA, 1, GetMonData(&gPlayerParty[gUnknown_203B0A0.unk9], MON_DATA_MAX_HP) / 5, sub_80E583C); + PartyMenuModifyHP(taskId, gPartyMenu.unkA, 1, GetMonData(&gPlayerParty[gPartyMenu.unk9], MON_DATA_MAX_HP) / 5, sub_80E583C); } static void sub_80E583C(u8 taskId) { - GetMonNickname(&gPlayerParty[gUnknown_203B0A0.unkA], gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_8416F27); - sub_81202F8(gStringVar4, 0); + GetMonNickname(&gPlayerParty[gPartyMenu.unkA], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); + DisplayPartyMenuMessage(gStringVar4, 0); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = sub_80E58A0; } static void sub_80E58A0(u8 taskId) { - if (sub_8120370() != TRUE) + if (IsPartyMenuTextPrinterActive() != TRUE) { - gUnknown_203B0A0.unkB = 0; - sub_811F818(gUnknown_203B0A0.unk9, 0); - gUnknown_203B0A0.unk9 = gUnknown_203B0A0.unkA; - sub_811F818(gUnknown_203B0A0.unkA, 1); + gPartyMenu.unkB = 0; + AnimatePartySlot(gPartyMenu.unk9, 0); + gPartyMenu.unk9 = gPartyMenu.unkA; + AnimatePartySlot(gPartyMenu.unkA, 1); ClearStdWindowAndFrameToTransparent(6, 0); ClearWindowTilemap(6); - sub_8121D0C(0); - gTasks[taskId].func = sub_811FB28; + DisplayPartyMenuStdMessage(0); + gTasks[taskId].func = Task_HandleChooseMonInput; } } static void sub_80E5900(u8 taskId) { - if (sub_8120370() != TRUE) + if (IsPartyMenuTextPrinterActive() != TRUE) { - sub_8121D0C(5); - gTasks[taskId].func = sub_811FB28; + DisplayPartyMenuStdMessage(5); + gTasks[taskId].func = Task_HandleChooseMonInput; } } static void sub_80E5934(u8 taskId) { PlaySE(SE_SELECT); - sub_81202F8(gUnknown_84169F8, 0); + DisplayPartyMenuMessage(gUnknown_84169F8, 0); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = sub_80E5900; } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 114bf0b57..c413f29c1 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -20,7 +20,7 @@ static void FailSweetScentEncounter(u8 taskId); static void Unused_StartSweetscentFldeff(void) { - gUnknown_203B0A0.unk9 = 0; + gPartyMenu.unk9 = 0; FieldCallback_SweetScent(); } diff --git a/src/item_pc.c b/src/item_pc.c index 60a74ac59..450e0d142 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -1029,8 +1029,8 @@ static void Task_ItemPcGive(u8 taskId) static void ItemPc_CB2_SwitchToPartyMenu(void) { - PartyMenuInit(0, 0, 6, 0, 6, sub_811FB28, ItemPc_CB2_ReturnFromPartyMenu); - gUnknown_203B0A0.unkC = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition()); + InitPartyMenu(0, 0, 6, 0, 6, Task_HandleChooseMonInput, ItemPc_CB2_ReturnFromPartyMenu); + gPartyMenu.unkC = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition()); } static void ItemPc_CB2_ReturnFromPartyMenu(void) diff --git a/src/item_use.c b/src/item_use.c index db0475370..73ad9a284 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -133,7 +133,7 @@ static const u8 sUnref_83E27B4[] = { }; void (*const gUnknown_83E2954[])(void) = { - sub_8124C8C, + CB2_ShowPartyMenuForItemUse, CB2_ReturnToField, NULL, NULL @@ -179,7 +179,7 @@ void sub_80A1084(void) void sub_80A109C(u8 taskId) { - if (field_weather_is_fade_finished() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { sItemUseOnFieldCB(taskId); } @@ -234,7 +234,7 @@ bool8 sub_80A1194(void) void sub_80A11C0(u8 taskId) { - if (field_weather_is_fade_finished() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { UnfreezeMapObjects(); ScriptContext2_Disable(); @@ -415,37 +415,37 @@ void sub_80A16D0(u8 taskId) void FieldUseFunc_Medicine(u8 taskId) { - gUnknown_3005E98 = sub_81252D0; + gItemUseCB = sub_81252D0; sub_80A16D0(taskId); } void FieldUseFunc_Ether(u8 taskId) { - gUnknown_3005E98 = ItemUseCB_PpRestore; + gItemUseCB = ItemUseCB_PPRecovery; sub_80A16D0(taskId); } void FieldUseFunc_PpUp(u8 taskId) { - gUnknown_3005E98 = dp05_pp_up; + gItemUseCB = ItemUseCB_PPUp; sub_80A16D0(taskId); } void FieldUseFunc_RareCandy(u8 taskId) { - gUnknown_3005E98 = dp05_rare_candy; + gItemUseCB = dp05_rare_candy; sub_80A16D0(taskId); } void FieldUseFunc_EvoItem(u8 taskId) { - gUnknown_3005E98 = sub_8126B60; + gItemUseCB = sub_8126B60; sub_80A16D0(taskId); } void FieldUseFunc_SacredAsh(u8 taskId) { - gUnknown_3005E98 = sub_8126894; + gItemUseCB = ItemUseCB_SacredAsh; sub_80A0FBC(taskId); } @@ -765,7 +765,7 @@ void BattleUseFunc_GuardSpec(u8 taskId) { if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0)) { - DisplayItemMessageInBag(taskId, 2, gUnknown_84169DC, sub_810A1F8); + DisplayItemMessageInBag(taskId, 2, gText_WontHaveEffect, sub_810A1F8); } else { @@ -812,19 +812,19 @@ void ItemUse_SwitchToPartyMenuInBattle(u8 taskId) void BattleUseFunc_Medicine(u8 taskId) { - gUnknown_3005E98 = ItemUseCB_Medicine; + gItemUseCB = ItemUseCB_Medicine; ItemUse_SwitchToPartyMenuInBattle(taskId); } void sub_80A1FD8(u8 taskId) { - gUnknown_3005E98 = sub_8126894; + gItemUseCB = ItemUseCB_SacredAsh; ItemUse_SwitchToPartyMenuInBattle(taskId); } void BattleUseFunc_Ether(u8 taskId) { - gUnknown_3005E98 = ItemUseCB_PpRestore; + gItemUseCB = ItemUseCB_PPRecovery; ItemUse_SwitchToPartyMenuInBattle(taskId); } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index c465a5683..0747e8ade 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -495,7 +495,7 @@ static void sub_80F83D0(u8 taskId) } break; case 2: - if (field_weather_is_fade_finished()) + if (IsWeatherNotFadingIn()) { Overworld_PlaySpecialMapMusic(); data[0]++; diff --git a/src/player_pc.c b/src/player_pc.c index f454cd07f..c3dc81dd2 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -322,7 +322,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId) if (!gPaletteFade.active) { CleanupOverworldWindowsAndTilemaps(); - sub_8107DB4(3, POCKET_ITEMS - 1, CB2_ReturnToField); + GoToBagMenu(3, POCKET_ITEMS - 1, CB2_ReturnToField); gFieldCallback = CB2_ReturnFromDepositMenu; DestroyTask(taskId); } @@ -336,7 +336,7 @@ static void Task_PlayerPcDepositItem(u8 taskId) static void Task_ReturnToItemStorageSubmenu(u8 taskId) { - if (field_weather_is_fade_finished() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) gTasks[taskId].func = Task_TopMenu_ItemStorageSubmenu_HandleInput; } @@ -573,7 +573,7 @@ static void Task_WaitFadeAndReadSelectedMail(u8 taskId) static void Task_WaitFadeAndReturnToMailboxPcInputHandler(u8 taskId) { - if (field_weather_is_fade_finished() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) gTasks[taskId].func = Task_MailboxPcHandleInput; } @@ -674,7 +674,7 @@ static void Task_WaitFadeAndGoToPartyMenu(u8 taskId) { MailboxPC_DestroyListMenuBuffer(); CleanupOverworldWindowsAndTilemaps(); - PartyMenuInit_FromPlayerPc(); + ChooseMonToGiveMailFromMailbox(); DestroyTask(taskId); } } diff --git a/src/quest_log.c b/src/quest_log.c index d7b544882..9683d7799 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -987,7 +987,7 @@ void sub_8111708(void) gSaveBlock1Ptr->mapDataId = VarGet(VAR_0x40AE); if (gSaveBlock1Ptr->mapDataId == 0) { - sp0 = *get_mapheader_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + sp0 = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); gSaveBlock1Ptr->mapDataId = sp0.mapDataId; } } @@ -1363,7 +1363,7 @@ static void sub_8111FCC(u8 taskId) { if (gUnknown_203AE94.unk_0_6 != 1) { - sub_80C4DF8(gStringVar1, gMapHeader.regionMapSectionId); + GetMapNameGeneric(gStringVar1, gMapHeader.regionMapSectionId); StringExpandPlaceholders(gStringVar4, gUnknown_841B073); sub_8111D10(); } @@ -3166,7 +3166,7 @@ static const u16 *sub_8113FBC(const u16 *a0) StringCopy(gStringVar1, ItemId_GetName(r5[0])); if (r5[0] == ITEM_ESCAPE_ROPE) { - sub_80C4DF8(gStringVar2, r5[2]); + GetMapNameGeneric(gStringVar2, r5[2]); StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6); } else if (r5[1] != 0xFFFF) @@ -3814,7 +3814,7 @@ static const u16 *sub_8114D68(const u16 *a0) a0 = sub_8113E88(30, a0); r6 = (const u8 *)a0 + 6; DynamicPlaceholderTextUtil_Reset(); - sub_80C4DF8(gStringVar1, r6[0]); + GetMapNameGeneric(gStringVar1, r6[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[a0[2]].trainerName); QuestLog_AutoGetSpeciesName(a0[0], 0, 2); @@ -3855,7 +3855,7 @@ static const u16 *sub_8114E68(const u16 *a0) r6 = (const u8 *)a0 + 8; DynamicPlaceholderTextUtil_Reset(); - sub_80C4DF8(gStringVar1, r6[2]); + GetMapNameGeneric(gStringVar1, r6[2]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); QuestLog_AutoGetSpeciesName(a0[2], NULL, 1); ConvertIntToDecimalStringN(gStringVar2, r6[0], STR_CONV_MODE_LEFT_ALIGN, 3); @@ -3983,7 +3983,7 @@ static const u16 *sub_81151DC(const u16 *a0) const u16 *r5 = sub_8113E88(34, a0); const u8 *r6 = (const u8 *)r5 + 6; DynamicPlaceholderTextUtil_Reset(); - sub_80C4DF8(gStringVar1, r6[0]); + GetMapNameGeneric(gStringVar1, r6[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); if ( gTrainers[r5[2]].trainerClass == 0x51 @@ -4164,7 +4164,7 @@ static const u16 *sub_81152BC(const u16 *a0) const u16 *r5 = sub_8113E88(35, a0); const u8 *r5_2 = (const u8 *)r5 + 0; r6 = r5_2[1]; - sub_80C4DF8(gStringVar1, r5_2[0]); + GetMapNameGeneric(gStringVar1, r5_2[0]); StringCopy(gStringVar2, gUnknown_8456AF0[r6]); if (gUnknown_8456BE4[r6] == 5) { @@ -4238,7 +4238,7 @@ static const u16 *sub_8115460(const u16 *a0) const u8 *r5 = (const u8 *)r4 + 2; QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0); if (r5[1] != 0xFF) - sub_80C4DF8(gStringVar2, r5[1]); + GetMapNameGeneric(gStringVar2, r5[1]); if (r5[0] == 7) { if (r5[1] == 0x58) @@ -4270,7 +4270,7 @@ static const u16 *sub_8115518(const u16 *a0) const u8 *r7 = (const u8 *)r4 + 8; u32 r6 = (r4[2] << 16) + r4[3]; DynamicPlaceholderTextUtil_Reset(); - sub_80C4DF8(gStringVar1, r7[0]); + GetMapNameGeneric(gStringVar1, r7[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r4[0])); if (r4[1] < 2) @@ -4303,7 +4303,7 @@ static const u16 *sub_81155E0(const u16 *a0) { const u8 *r7 = (const u8 *) r5 + 8; u32 r6 = (r5[2] << 16) + r5[3]; DynamicPlaceholderTextUtil_Reset(); - sub_80C4DF8(gStringVar1, r7[0]); + GetMapNameGeneric(gStringVar1, r7[0]); if (r7[1] == 0) { DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); @@ -4344,7 +4344,7 @@ static const u16 *sub_8115700(const u16 *a0) { const u16 *r4 = sub_8113E88(40, a0); const u8 *r5 = (const u8 *)r4 + 2; - sub_80C4DF8(gStringVar1, r5[0]); + GetMapNameGeneric(gStringVar1, r5[0]); StringCopy(gStringVar2, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841B03F); return (const u16 *)(r5 + 2); @@ -4420,7 +4420,7 @@ static u16 *sub_81157DC(u16 *a0, const u16 *a1) static const u16 *sub_8115800(const u16 *a0) { const u16 *r4 = sub_8113E88(42, a0); - sub_80C4DF8(gStringVar1, r4[0]); + GetMapNameGeneric(gStringVar1, r4[0]); StringExpandPlaceholders(gStringVar4, gUnknown_841B064); return r4 + 1; } diff --git a/src/roamer.c b/src/roamer.c index b42855644..b3cc67f85 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -236,5 +236,5 @@ u16 GetRoamerLocationMapSectionId(void) struct Roamer *roamer = &saveRoamer; if (!saveRoamer.active) return MAPSEC_NONE; - return get_mapheader_by_bank_and_number(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; + return Overworld_GetMapHeaderByGroupAndId(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; } diff --git a/src/save_menu_util.c b/src/save_menu_util.c index 195b29b0c..54073785e 100644 --- a/src/save_menu_util.c +++ b/src/save_menu_util.c @@ -41,7 +41,7 @@ void SaveStatToString(u8 gameStatId, u8 *dest0, u8 color) dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); break; case SAVE_STAT_LOCATION: - sub_80C4DF8(dest, gMapHeader.regionMapSectionId); + GetMapNameGeneric(dest, gMapHeader.regionMapSectionId); break; case SAVE_STAT_BADGES: for (flagId = FLAG_BADGE01_GET, nBadges = 0; flagId < FLAG_BADGE01_GET + 8; flagId++) diff --git a/src/tm_case.c b/src/tm_case.c index 25fe9a72c..0734c6d24 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -848,8 +848,8 @@ static void TMHMContextMenuAction_Use(u8 taskId) } else { - gUnknown_3005E98 = sub_8125B40; - sTMCaseDynamicResources->savedCallback = sub_8124C8C; + gItemUseCB = ItemUseCB_TMHM; + sTMCaseDynamicResources->savedCallback = CB2_ShowPartyMenuForItemUse; Task_BeginFadeOutFromTMCase(taskId); } } @@ -874,7 +874,7 @@ static void TMHMContextMenuAction_Give(u8 taskId) } else { - sTMCaseDynamicResources->savedCallback = sub_8126EDC; + sTMCaseDynamicResources->savedCallback = CB2_ChooseMonToGiveItem; Task_BeginFadeOutFromTMCase(taskId); } } @@ -945,7 +945,7 @@ static void Task_SelectTMAction_Type1(u8 taskId) if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - sTMCaseDynamicResources->savedCallback = c2_8123744; + sTMCaseDynamicResources->savedCallback = CB2_GiveHoldItem; Task_BeginFadeOutFromTMCase(taskId); } else @@ -1274,7 +1274,7 @@ static void Task_TMCaseDude_Playback(u8 taskId) sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162; Free(sPokeDudePackBackup); CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); - sub_8108CF0(); + CB2_SetUpReshowBattleScreenAfterMenu(); BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); data[8]++; } diff --git a/src/trade.c b/src/trade.c index 5151ecedd..792f1524b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -879,11 +879,11 @@ static void sub_804C728(void) break; case 8: LoadHeldItemIcons(); - sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); + DrawHeldItemIconsForTrade(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); gMain.state++; break; case 9: - sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); + DrawHeldItemIconsForTrade(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); gMain.state++; break; case 10: @@ -1483,7 +1483,7 @@ static void sub_804C728(void) "\tadds r0, 0x36\n" "\tadds r1, 0x28\n" "\tmovs r2, 0\n" - "\tbl sub_812256C\n" + "\tbl DrawHeldItemIconsForTrade\n" "\tldr r1, _0804CB74 @ =gMain\n" "\tmovs r5, 0x87\n" "\tlsls r5, 3\n" @@ -1499,7 +1499,7 @@ static void sub_804C728(void) "\tadds r0, 0x36\n" "\tadds r1, 0x28\n" "\tmovs r2, 0x1\n" - "\tbl sub_812256C\n" + "\tbl DrawHeldItemIconsForTrade\n" "\tldr r1, _0804CB98 @ =gMain\n" "\tmovs r7, 0x87\n" "\tlsls r7, 3\n" @@ -1989,11 +1989,11 @@ void sub_804CF14(void) break; case 8: LoadHeldItemIcons(); - sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); + DrawHeldItemIconsForTrade(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); gMain.state++; break; case 9: - sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); + DrawHeldItemIconsForTrade(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); gMain.state++; break; case 10: @@ -2365,7 +2365,7 @@ void sub_804CF14(void) "\tadds r0, 0x36\n" "\tadds r1, 0x28\n" "\tmovs r2, 0\n" - "\tbl sub_812256C\n" + "\tbl DrawHeldItemIconsForTrade\n" "\tldr r1, _0804D174 @ =gMain\n" "\tmovs r5, 0x87\n" "\tlsls r5, 3\n" @@ -2381,7 +2381,7 @@ void sub_804CF14(void) "\tadds r0, 0x36\n" "\tadds r1, 0x28\n" "\tmovs r2, 0x1\n" - "\tbl sub_812256C\n" + "\tbl DrawHeldItemIconsForTrade\n" "\tldr r1, _0804D198 @ =gMain\n" "\tmovs r7, 0x87\n" "\tlsls r7, 3\n" @@ -4394,7 +4394,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet) return FALSE; } -int sub_804FBEC(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet) +int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet) { u8 r9 = a0.unk_01_0; u8 r4 = a0.unk_00_7; diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index fc4df06ed..3c5afaf25 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -289,7 +289,7 @@ static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * info, s32 s static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header) { - return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId; + return Overworld_GetMapHeaderByGroupAndId(header->mapGroup, header->mapNum)->regionMapSectionId; } static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lutIdx_p, u16 * tableIdx_p) diff --git a/sym_common.txt b/sym_common.txt index b6e5f8b5e..30b886f7a 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -180,7 +180,7 @@ gUnknown_3005E90: @ 3005E90 gUnknown_3005E94: @ 3005E94 .space 0x4 -gUnknown_3005E98: @ 3005E98 +gItemUseCB: @ 3005E98 .space 0x4 .include "help_system_812B1E0.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 7a25f1726..891ba29a3 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -569,10 +569,10 @@ gUnknown_203B05C: @ 203B05C gUnknown_203B064: @ 203B064 .space 0x4 -gUnknown_203B068: @ 203B068 +gUnionRoomOfferedSpecies: @ 203B068 .space 0x2 -gUnknown_203B06A: @ 203B06A +gUnionRoomRequestedMonType: @ 203B06A .space 0x2 gUnknown_203B06C: @ 203B06C @@ -596,10 +596,10 @@ gUnknown_203B094: @ 203B094 gUnknown_203B098: @ 203B098 .space 0x4 -gUnknown_203B09C: @ 203B09C +sPartyMenuInternal: @ 203B09C .space 0x4 -gUnknown_203B0A0: @ 203B0A0 +gPartyMenu: @ 203B0A0 .space 0x9 gUnknown_203B0A9: @ 203B0A9 @@ -608,16 +608,16 @@ gUnknown_203B0A9: @ 203B0A9 gUnknown_203B0AE: @ 203B0AE .space 0x6 -gUnknown_203B0B4: @ 203B0B4 +sPartyMenuBoxes: @ 203B0B4 .space 0x4 -gUnknown_203B0B8: @ 203B0B8 +sPartyBgGfxTilemap: @ 203B0B8 .space 0x4 -gUnknown_203B0BC: @ 203B0BC +sPartyBgTilemapBuffer: @ 203B0BC .space 0x4 -gUnknown_203B0C0: @ 203B0C0 +gPartyMenuUseExitCallback: @ 203B0C0 .space 0x1 gUnknown_203B0C1: @ 203B0C1 @@ -626,10 +626,10 @@ gUnknown_203B0C1: @ 203B0C1 gPostMenuFieldCallback: @ 203B0C4 .space 0x4 -gUnknown_203B0C8: @ 203B0C8 +sSlot1TilemapBuffer: @ 203B0C8 .space 0x4 -gUnknown_203B0CC: @ 203B0CC +sSlot2TilemapBuffer: @ 203B0CC .space 0x4 gUnknown_203B0D0: @ 203B0D0 @@ -638,10 +638,10 @@ gUnknown_203B0D0: @ 203B0D0 gSelectedOrderFromParty: @ 203B0D4 .space 0x4 -gUnknown_203B0D8: @ 203B0D8 +sPartyMenuItemId: @ 203B0D8 .space 0x4 -gUnknown_203B0DC: @ 203B0DC +gBattlePartyCurrentOrder: @ 203B0DC .space 0x4 gUnknown_203B0E0: @ 203B0E0 From 1d96920da05f7b5c25aef42931576f3e61099f66 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 21 Nov 2019 10:48:08 +0800 Subject: [PATCH 2/9] party_menu data --- asm/fldeff_cut.s | 6 +- asm/fldeff_flash.s | 6 +- asm/party_menu.s | 218 +- common_syms/party_menu.txt | 1 + data/graphics.s | 10 +- data/party_menu.s | 669 ---- data/strings.s | 136 +- graphics/interface/hold_icons.pal | 19 + graphics/interface/hold_icons.png | Bin 0 -> 120 bytes .../interface/party_menu_cancel_button.bin | 2 + .../interface/party_menu_confirm_button.bin | 1 + include/constants/party_menu.h | 114 + include/constants/trade.h | 118 + include/fldeff.h | 4 +- include/graphics.h | 7 + include/party_menu.h | 51 +- include/strings.h | 79 +- include/trade.h | 3 + include/union_room.h | 3 + ld_script.txt | 3 +- src/battle_controller_oak_old_man.c | 2 +- src/battle_controller_player.c | 2 +- src/battle_controller_pokedude.c | 2 +- src/battle_main.c | 10 +- src/battle_script_commands.c | 6 +- src/data/party_menu.h | 1334 ++++++++ src/data/pokemon/tutor_learnsets.h | 2813 +++++++++++++++++ src/fldeff_softboiled.c | 24 +- src/fldeff_sweetscent.c | 2 +- src/item_pc.c | 2 +- src/party_menu.c | 172 + src/trade.c | 6 +- sym_common.txt | 4 +- sym_ewram.txt | 50 +- 34 files changed, 4902 insertions(+), 977 deletions(-) create mode 100644 common_syms/party_menu.txt delete mode 100644 data/party_menu.s create mode 100644 graphics/interface/hold_icons.pal create mode 100644 graphics/interface/hold_icons.png create mode 100644 graphics/interface/party_menu_cancel_button.bin create mode 100644 graphics/interface/party_menu_confirm_button.bin create mode 100644 include/constants/party_menu.h create mode 100644 include/constants/trade.h create mode 100644 src/data/party_menu.h create mode 100644 src/data/pokemon/tutor_learnsets.h create mode 100644 src/party_menu.c diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index ec892e0bb..d56ccd500 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -24,8 +24,8 @@ sub_8097874: @ 8097874 bx r1 thumb_func_end sub_8097874 - thumb_func_start sub_8097898 -sub_8097898: @ 8097898 + thumb_func_start SetUpFieldMove_Cut +SetUpFieldMove_Cut: @ 8097898 push {r4-r7,lr} mov r7, r8 push {r7} @@ -138,7 +138,7 @@ _08097970: .align 2, 0 _0809797C: .4byte gPlayerFacingPosition _08097980: .4byte 0x0000ffff - thumb_func_end sub_8097898 + thumb_func_end SetUpFieldMove_Cut thumb_func_start sub_8097984 sub_8097984: @ 8097984 diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index 51e55de63..23f86d6b7 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80C9B2C -sub_80C9B2C: @ 80C9B2C + thumb_func_start SetUpFieldMove_Flash +SetUpFieldMove_Flash: @ 80C9B2C push {lr} ldr r0, _080C9B54 @ =gMapHeader ldrb r0, [r0, 0x15] @@ -37,7 +37,7 @@ _080C9B6C: _080C9B6E: pop {r1} bx r1 - thumb_func_end sub_80C9B2C + thumb_func_end SetUpFieldMove_Flash thumb_func_start sub_80C9B74 sub_80C9B74: @ 80C9B74 diff --git a/asm/party_menu.s b/asm/party_menu.s index 081515121..955fba24e 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -1980,7 +1980,7 @@ _0811F9D8: .4byte gPartyMenu DrawCancelConfirmButtons: @ 811F9DC push {r4-r6,lr} sub sp, 0xC - ldr r1, _0811FA18 @ =gUnknown_8459FC4 + ldr r1, _0811FA18 @ =sConfirmButton_Tilemap movs r6, 0x7 str r6, [sp] movs r5, 0x2 @@ -1991,7 +1991,7 @@ DrawCancelConfirmButtons: @ 811F9DC movs r2, 0x17 movs r3, 0x10 bl CopyToBgTilemapBufferRect_ChangePalette - ldr r1, _0811FA1C @ =gUnknown_8459FE0 + ldr r1, _0811FA1C @ =sCancelButton_Tilemap str r6, [sp] str r5, [sp, 0x4] str r4, [sp, 0x8] @@ -2006,8 +2006,8 @@ DrawCancelConfirmButtons: @ 811F9DC pop {r0} bx r0 .align 2, 0 -_0811FA18: .4byte gUnknown_8459FC4 -_0811FA1C: .4byte gUnknown_8459FE0 +_0811FA18: .4byte sConfirmButton_Tilemap +_0811FA1C: .4byte sCancelButton_Tilemap thumb_func_end DrawCancelConfirmButtons thumb_func_start IsMultiBattle @@ -4293,7 +4293,7 @@ _08120B7C: b _08120B9E _08120B80: mov r0, r8 - bl GetMoveTutorMove + bl GetTutorMove _08120B86: lsls r0, 16 lsrs r1, r0, 16 @@ -4315,8 +4315,8 @@ _08120B9E: bx r1 thumb_func_end CanMonLearnTMTutor - thumb_func_start GetMoveTutorMove -GetMoveTutorMove: @ 8120BA8 + thumb_func_start GetTutorMove +GetTutorMove: @ 8120BA8 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -4345,7 +4345,7 @@ _08120BD0: lsls r0, 1 @ MOVE_HYDRO_CANNON b _08120BDE _08120BD6: - ldr r0, _08120BE4 @ =gMoveTutorMoves + ldr r0, _08120BE4 @ =sTutorMoves lsls r1, 1 adds r1, r0 ldrh r0, [r1] @@ -4353,8 +4353,8 @@ _08120BDE: pop {r1} bx r1 .align 2, 0 -_08120BE4: .4byte gMoveTutorMoves - thumb_func_end GetMoveTutorMove +_08120BE4: .4byte sTutorMoves + thumb_func_end GetTutorMove thumb_func_start CanLearnTutorMove CanLearnTutorMove: @ 8120BE8 @@ -4804,12 +4804,12 @@ _08120F24: beq _08120F44 b _08120F62 _08120F2A: - ldr r0, _08120F34 @ =gUnknown_203B0A9 + ldr r0, _08120F34 @ =gPartyMenu + 9 movs r1, 0x2 bl UpdateCurrentPartySelection b _08120F62 .align 2, 0 -_08120F34: .4byte gUnknown_203B0A9 +_08120F34: .4byte gPartyMenu + 9 _08120F38: movs r0, 0x5 bl PlaySE @@ -5401,7 +5401,7 @@ BlitBitmapToPartyWindow_RightColumn: @ 81213A0 _081213CC: cmp r5, 0 bne _081213E8 - ldr r1, _081213E4 @ =sOtherSlotTileNums + ldr r1, _081213E4 @ =sOtherSlotsTileNums str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] @@ -5410,9 +5410,9 @@ _081213CC: bl BlitBitmapToPartyWindow b _081213F8 .align 2, 0 -_081213E4: .4byte sOtherSlotTileNums +_081213E4: .4byte sOtherSlotsTileNums _081213E8: - ldr r1, _08121400 @ =sOtherSlotTileNums_Egg + ldr r1, _08121400 @ =sOtherSlotsTileNums_Egg str r2, [sp] str r3, [sp, 0x4] str r4, [sp, 0x8] @@ -5425,7 +5425,7 @@ _081213F8: pop {r0} bx r0 .align 2, 0 -_08121400: .4byte sOtherSlotTileNums_Egg +_08121400: .4byte sOtherSlotsTileNums_Egg thumb_func_end BlitBitmapToPartyWindow_RightColumn thumb_func_start DrawEmptySlot @@ -5434,7 +5434,7 @@ DrawEmptySlot: @ 8121404 sub sp, 0xC lsls r0, 24 lsrs r0, 24 - ldr r1, _08121428 @ =gUnknown_845A278 + ldr r1, _08121428 @ =sEmptySlotTileNums movs r2, 0 str r2, [sp] movs r2, 0x12 @@ -5448,7 +5448,7 @@ DrawEmptySlot: @ 8121404 pop {r0} bx r0 .align 2, 0 -_08121428: .4byte gUnknown_845A278 +_08121428: .4byte sEmptySlotTileNums thumb_func_end DrawEmptySlot thumb_func_start LoadPartyBoxPalette @@ -5471,15 +5471,15 @@ LoadPartyBoxPalette: @ 812142C ands r0, r4 cmp r0, 0 beq _0812145C - ldr r5, _08121458 @ =gUnknown_845A2D4 + ldr r5, _08121458 @ =sPartyBoxSelectedForActionPalIds1 b _0812160A .align 2, 0 -_08121458: .4byte gUnknown_845A2D4 +_08121458: .4byte sPartyBoxSelectedForActionPalIds1 _0812145C: - ldr r5, _08121494 @ =gUnknown_845A2D4 + ldr r5, _08121494 @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121498 @ =gUnknown_845A2B2 + ldr r4, _08121498 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5496,21 +5496,21 @@ _0812145C: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _0812149C @ =gUnknown_845A2E3 + ldr r5, _0812149C @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 -_08121494: .4byte gUnknown_845A2D4 -_08121498: .4byte gUnknown_845A2B2 -_0812149C: .4byte gUnknown_845A2E3 +_08121494: .4byte sPartyBoxSelectedForActionPalIds1 +_08121498: .4byte sPartyBoxPalOffsets1 +_0812149C: .4byte sPartyBoxSelectedForActionPalIds2 _081214A0: movs r0, 0x10 ands r0, r4 cmp r0, 0 beq _081214EC - ldr r5, _081214E0 @ =gUnknown_845A2D4 + ldr r5, _081214E0 @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _081214E4 @ =gUnknown_845A2B2 + ldr r4, _081214E4 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5527,12 +5527,12 @@ _081214A0: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _081214E8 @ =gUnknown_845A2E3 + ldr r5, _081214E8 @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 -_081214E0: .4byte gUnknown_845A2D4 -_081214E4: .4byte gUnknown_845A2B2 -_081214E8: .4byte gUnknown_845A2E3 +_081214E0: .4byte sPartyBoxSelectedForActionPalIds1 +_081214E4: .4byte sPartyBoxPalOffsets1 +_081214E8: .4byte sPartyBoxSelectedForActionPalIds2 _081214EC: movs r0, 0x4 ands r0, r4 @@ -5542,15 +5542,15 @@ _081214EC: ands r0, r4 cmp r0, 0 beq _08121504 - ldr r5, _08121500 @ =gUnknown_845A2D4 + ldr r5, _08121500 @ =sPartyBoxSelectedForActionPalIds1 b _0812160A .align 2, 0 -_08121500: .4byte gUnknown_845A2D4 +_08121500: .4byte sPartyBoxSelectedForActionPalIds1 _08121504: - ldr r5, _0812153C @ =gUnknown_845A2D4 + ldr r5, _0812153C @ =sPartyBoxSelectedForActionPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121540 @ =gUnknown_845A2B2 + ldr r4, _08121540 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5567,12 +5567,12 @@ _08121504: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _08121544 @ =gUnknown_845A2E3 + ldr r5, _08121544 @ =sPartyBoxSelectedForActionPalIds2 b _0812163E .align 2, 0 -_0812153C: .4byte gUnknown_845A2D4 -_08121540: .4byte gUnknown_845A2B2 -_08121544: .4byte gUnknown_845A2E3 +_0812153C: .4byte sPartyBoxSelectedForActionPalIds1 +_08121540: .4byte sPartyBoxPalOffsets1 +_08121544: .4byte sPartyBoxSelectedForActionPalIds2 _08121548: movs r0, 0x2 ands r0, r4 @@ -5582,15 +5582,15 @@ _08121548: ands r0, r4 cmp r0, 0 beq _08121560 - ldr r5, _0812155C @ =gUnknown_845A2D1 + ldr r5, _0812155C @ =sPartyBoxCurrSelectionFaintedPalIds b _0812160A .align 2, 0 -_0812155C: .4byte gUnknown_845A2D1 +_0812155C: .4byte sPartyBoxCurrSelectionFaintedPalIds _08121560: - ldr r5, _08121598 @ =gUnknown_845A2C8 + ldr r5, _08121598 @ =sPartyBoxFaintedPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _0812159C @ =gUnknown_845A2B2 + ldr r4, _0812159C @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5607,12 +5607,12 @@ _08121560: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _081215A0 @ =gUnknown_845A2DD + ldr r5, _081215A0 @ =sPartyBoxFaintedPalIds2 b _0812163E .align 2, 0 -_08121598: .4byte gUnknown_845A2C8 -_0812159C: .4byte gUnknown_845A2B2 -_081215A0: .4byte gUnknown_845A2DD +_08121598: .4byte sPartyBoxFaintedPalIds1 +_0812159C: .4byte sPartyBoxPalOffsets1 +_081215A0: .4byte sPartyBoxFaintedPalIds2 _081215A4: movs r0, 0x8 ands r0, r4 @@ -5622,15 +5622,15 @@ _081215A4: ands r0, r4 cmp r0, 0 beq _081215BC - ldr r5, _081215B8 @ =gUnknown_845A2CE + ldr r5, _081215B8 @ =sPartyBoxCurrSelectionMultiPalIds b _0812160A .align 2, 0 -_081215B8: .4byte gUnknown_845A2CE +_081215B8: .4byte sPartyBoxCurrSelectionMultiPalIds _081215BC: - ldr r5, _081215F4 @ =gUnknown_845A2C5 + ldr r5, _081215F4 @ =sPartyBoxMultiPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _081215F8 @ =gUnknown_845A2B2 + ldr r4, _081215F8 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5647,22 +5647,22 @@ _081215BC: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _081215FC @ =gUnknown_845A2DA + ldr r5, _081215FC @ =sPartyBoxMultiPalIds2 b _0812163E .align 2, 0 -_081215F4: .4byte gUnknown_845A2C5 -_081215F8: .4byte gUnknown_845A2B2 -_081215FC: .4byte gUnknown_845A2DA +_081215F4: .4byte sPartyBoxMultiPalIds1 +_081215F8: .4byte sPartyBoxPalOffsets1 +_081215FC: .4byte sPartyBoxMultiPalIds2 _08121600: movs r0, 0x1 ands r5, r0 cmp r5, 0 beq _08121684 - ldr r5, _08121674 @ =gUnknown_845A2CB + ldr r5, _08121674 @ =sPartyBoxCurrSelectionPalIds1 _0812160A: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121678 @ =gUnknown_845A2B2 + ldr r4, _08121678 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5679,11 +5679,11 @@ _0812160A: adds r1, r6 movs r2, 0x2 bl LoadPalette - ldr r5, _0812167C @ =gUnknown_845A2E0 + ldr r5, _0812167C @ =sPartyBoxCurrSelectionPalIds2 _0812163E: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121680 @ =gUnknown_845A2B5 + ldr r4, _08121680 @ =sPartyBoxPalOffsets2 ldrb r1, [r4] adds r1, r6 movs r2, 0x2 @@ -5702,15 +5702,15 @@ _0812163E: bl LoadPalette b _081216EC .align 2, 0 -_08121674: .4byte gUnknown_845A2CB -_08121678: .4byte gUnknown_845A2B2 -_0812167C: .4byte gUnknown_845A2E0 -_08121680: .4byte gUnknown_845A2B5 +_08121674: .4byte sPartyBoxCurrSelectionPalIds1 +_08121678: .4byte sPartyBoxPalOffsets1 +_0812167C: .4byte sPartyBoxCurrSelectionPalIds2 +_08121680: .4byte sPartyBoxPalOffsets2 _08121684: - ldr r5, _081216F4 @ =gUnknown_845A2C2 + ldr r5, _081216F4 @ =sPartyBoxEmptySlotPalIds1 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _081216F8 @ =gUnknown_845A2B2 + ldr r4, _081216F8 @ =sPartyBoxPalOffsets1 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 @@ -5727,10 +5727,10 @@ _08121684: adds r1, r7 movs r2, 0x2 bl LoadPalette - ldr r5, _081216FC @ =gUnknown_845A2D7 + ldr r5, _081216FC @ =sPartyBoxEmptySlotPalIds2 ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121700 @ =gUnknown_845A2B5 + ldr r4, _08121700 @ =sPartyBoxPalOffsets2 ldrb r1, [r4] adds r1, r7 movs r2, 0x2 @@ -5752,10 +5752,10 @@ _081216EC: pop {r0} bx r0 .align 2, 0 -_081216F4: .4byte gUnknown_845A2C2 -_081216F8: .4byte gUnknown_845A2B2 -_081216FC: .4byte gUnknown_845A2D7 -_08121700: .4byte gUnknown_845A2B5 +_081216F4: .4byte sPartyBoxEmptySlotPalIds1 +_081216F8: .4byte sPartyBoxPalOffsets1 +_081216FC: .4byte sPartyBoxEmptySlotPalIds2 +_08121700: .4byte sPartyBoxPalOffsets2 thumb_func_end LoadPartyBoxPalette thumb_func_start DisplayPartyPokemonBarDetail @@ -6321,16 +6321,16 @@ DisplayPartyPokemonHPBar: @ 8121B2C blt _08121BA8 cmp r0, 0x4 bgt _08121BA8 - ldr r5, _08121B74 @ =gUnknown_845A2BC + ldr r5, _08121B74 @ =sHPBarGreenPalIds b _08121B7A .align 2, 0 -_08121B74: .4byte gUnknown_845A2BC +_08121B74: .4byte sHPBarGreenPalIds _08121B78: - ldr r5, _08121BA0 @ =gUnknown_845A2BE + ldr r5, _08121BA0 @ =sHPBarYellowPalIds _08121B7A: ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121BA4 @ =gUnknown_845A2B0 + ldr r4, _08121BA4 @ =sHPBarPalOffsets ldrb r1, [r4] adds r1, r7 movs r2, 0x2 @@ -6343,13 +6343,13 @@ _08121B7A: bl LoadPalette b _08121BCC .align 2, 0 -_08121BA0: .4byte gUnknown_845A2BE -_08121BA4: .4byte gUnknown_845A2B0 +_08121BA0: .4byte sHPBarYellowPalIds +_08121BA4: .4byte sHPBarPalOffsets _08121BA8: - ldr r5, _08121C68 @ =gUnknown_845A2C0 + ldr r5, _08121C68 @ =sHPBarRedPalIds ldrb r0, [r5] bl GetPartyMenuPalBufferPtr - ldr r4, _08121C6C @ =gUnknown_845A2B0 + ldr r4, _08121C6C @ =sHPBarPalOffsets ldrb r1, [r4] adds r1, r7 movs r2, 0x2 @@ -6373,7 +6373,7 @@ _08121BCC: lsls r0, 24 lsrs r5, r0, 24 ldrb r0, [r6, 0x8] - ldr r4, _08121C6C @ =gUnknown_845A2B0 + ldr r4, _08121C6C @ =sHPBarPalOffsets ldrb r1, [r4, 0x1] ldr r3, [r6] ldrb r2, [r3, 0x18] @@ -6434,8 +6434,8 @@ _08121C50: pop {r0} bx r0 .align 2, 0 -_08121C68: .4byte gUnknown_845A2C0 -_08121C6C: .4byte gUnknown_845A2B0 +_08121C68: .4byte sHPBarRedPalIds +_08121C6C: .4byte sHPBarPalOffsets thumb_func_end DisplayPartyPokemonHPBar thumb_func_start DisplayPartyPokemonDescriptionText @@ -6557,30 +6557,30 @@ _08121D44: .4byte _08121D60 .4byte _08121D68 _08121D58: - ldr r0, _08121D5C @ =gUnknown_845A128 + ldr r0, _08121D5C @ =sDoWhatWithMonMsgWindowTemplate b _08121D72 .align 2, 0 -_08121D5C: .4byte gUnknown_845A128 +_08121D5C: .4byte sDoWhatWithMonMsgWindowTemplate _08121D60: - ldr r0, _08121D64 @ =gUnknown_845A130 + ldr r0, _08121D64 @ =sDoWhatWithItemMsgWindowTemplate b _08121D72 .align 2, 0 -_08121D64: .4byte gUnknown_845A130 +_08121D64: .4byte sDoWhatWithItemMsgWindowTemplate _08121D68: - ldr r0, _08121D6C @ =gUnknown_845A138 + ldr r0, _08121D6C @ =sDoWhatWithMailMsgWindowTemplate b _08121D72 .align 2, 0 -_08121D6C: .4byte gUnknown_845A138 +_08121D6C: .4byte sDoWhatWithMailMsgWindowTemplate _08121D70: - ldr r0, _08121D7C @ =gUnknown_845A140 + ldr r0, _08121D7C @ =sWhichMoveMsgWindowTemplate _08121D72: bl AddWindow strb r0, [r5] b _08121D88 .align 2, 0 -_08121D7C: .4byte gUnknown_845A140 +_08121D7C: .4byte sWhichMoveMsgWindowTemplate _08121D80: - ldr r0, _08121D9C @ =gUnknown_845A120 + ldr r0, _08121D9C @ =sDefaultPartyMsgWindowTemplate bl AddWindow strb r0, [r4, 0xD] _08121D88: @@ -6595,7 +6595,7 @@ _08121D88: movs r6, 0x2 b _08121DB0 .align 2, 0 -_08121D9C: .4byte gUnknown_845A120 +_08121D9C: .4byte sDefaultPartyMsgWindowTemplate _08121DA0: .4byte sPartyMenuInternal _08121DA4: bl ShouldUseChooseMonText @@ -7107,10 +7107,10 @@ _0812217A: str r0, [sp] movs r1, 0 str r1, [sp, 0x4] - ldr r0, _081221CC @ =gUnknown_845A00B + ldr r0, _081221CC @ =sFontColorTable + 15 str r0, [sp, 0x8] str r1, [sp, 0xC] - ldr r1, _081221D0 @ =gUnknown_845A37C + ldr r1, _081221D0 @ =sHMDescriptionTable adds r0, r5, 0 subs r0, 0x12 lsls r0, 2 @@ -7133,8 +7133,8 @@ _081221C0: bx r0 .align 2, 0 _081221C8: .4byte gUnknown_845A178 -_081221CC: .4byte gUnknown_845A00B -_081221D0: .4byte gUnknown_845A37C +_081221CC: .4byte sFontColorTable + 15 +_081221D0: .4byte sHMDescriptionTable thumb_func_end sub_8122138 thumb_func_start CreatePartyMonIconSprite @@ -11422,15 +11422,15 @@ _08124410: .4byte gPartyMenu _08124414: .4byte gPlayerParty _08124418: ldr r0, _08124424 @ =gStringVar4 - ldr r1, _08124428 @ =gUnknown_84170BC + ldr r1, _08124428 @ =gText_PkmnCantBeTradedNow bl StringExpandPlaceholders b _08124434 .align 2, 0 _08124424: .4byte gStringVar4 -_08124428: .4byte gUnknown_84170BC +_08124428: .4byte gText_PkmnCantBeTradedNow _0812442C: ldr r0, _08124478 @ =gStringVar4 - ldr r1, _0812447C @ =gUnknown_84170E0 + ldr r1, _0812447C @ =gText_EggCantBeTradedNow bl StringExpandPlaceholders _08124434: movs r0, 0x1A @@ -11465,7 +11465,7 @@ _0812446C: bx r0 .align 2, 0 _08124478: .4byte gStringVar4 -_0812447C: .4byte gUnknown_84170E0 +_0812447C: .4byte gText_EggCantBeTradedNow _08124480: .4byte sPartyMenuInternal _08124484: .4byte gText_PauseUntilPress _08124488: .4byte gTasks @@ -11590,10 +11590,10 @@ _08124590: bx r0 thumb_func_end CursorCB_Trade1 - thumb_func_start nullsub_93 -nullsub_93: @ 81245A0 + thumb_func_start CursorCB_Trade2 +CursorCB_Trade2: @ 81245A0 bx lr - thumb_func_end nullsub_93 + thumb_func_end CursorCB_Trade2 thumb_func_start CursorCB_FieldMove CursorCB_FieldMove: @ 81245A4 @@ -14019,7 +14019,7 @@ TryUsePPItem: @ 8125958 lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 - ldr r7, _08125990 @ =gUnknown_203B0AE + ldr r7, _08125990 @ =gPartyMenu + 14 ldr r0, _08125994 @ =gSpecialVar_ItemId ldrh r5, [r0] movs r0, 0xE @@ -14040,7 +14040,7 @@ TryUsePPItem: @ 8125958 ldr r0, _0812599C @ =gText_WontHaveEffect b _081259F6 .align 2, 0 -_08125990: .4byte gUnknown_203B0AE +_08125990: .4byte gPartyMenu + 14 _08125994: .4byte gSpecialVar_ItemId _08125998: .4byte gPartyMenuUseExitCallback _0812599C: .4byte gText_WontHaveEffect @@ -16549,7 +16549,7 @@ TryTutorSelectedMon: @ 8126DC8 bl GetMonNickname ldr r4, _08126E5C @ =gSpecialVar_0x8005 ldrb r0, [r4] - bl GetMoveTutorMove + bl GetTutorMove strh r0, [r7, 0xE] ldr r0, _08126E60 @ =gStringVar2 movs r1, 0xE @@ -18299,7 +18299,7 @@ _08127BEC: beq _08127C64 adds r0, r5, 0 bl GetPartyIdFromBattleSlot - ldr r1, _08127C30 @ =gUnknown_203B0C1 + ldr r1, _08127C30 @ =gSelectedMonPartyId strb r0, [r1] ldr r1, _08127C34 @ =gPartyMenuUseExitCallback movs r0, 0x1 @@ -18325,7 +18325,7 @@ _08127BEC: movs r0, 0x1 b _08127C8C .align 2, 0 -_08127C30: .4byte gUnknown_203B0C1 +_08127C30: .4byte gSelectedMonPartyId _08127C34: .4byte gPartyMenuUseExitCallback _08127C38: .4byte gBattlerPartyIndexes _08127C3C: .4byte gBattlerInMenuId diff --git a/common_syms/party_menu.txt b/common_syms/party_menu.txt new file mode 100644 index 000000000..6ed37392c --- /dev/null +++ b/common_syms/party_menu.txt @@ -0,0 +1 @@ +gItemUseCB diff --git a/data/graphics.s b/data/graphics.s index 9810abf91..a6b9db097 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13904,23 +13904,23 @@ gPartyMenuBg_Tilemap:: @ 8E82AB0 .incbin "graphics/interface/party_menu_misc.bin.lz" .align 2 -gFile_graphics_interface_party_menu_pokeball_sheet:: @ 8E82BE8 +gPartyMenuPokeball_Gfx:: @ 8E82BE8 .incbin "graphics/interface/party_menu_pokeball.4bpp.lz" .align 2 -gFile_graphics_interface_party_menu_pokeball_small_sheet:: @ 8E82D68 +gPartyMenuPokeballSmall_Gfx:: @ 8E82D68 .incbin "graphics/interface/party_menu_pokeball_small.4bpp.lz" .align 2 -gFile_graphics_interface_party_menu_pokeball_palette:: @ 8E82E7C +gPartyMenuPokeball_Pal:: @ 8E82E7C .incbin "graphics/interface/party_menu_pokeball.gbapal.lz" .align 2 -gUnknown_8E82EA0:: @ 8E82EA0 +gStatusGfx_Icons:: @ 8E82EA0 .incbin "baserom.gba", 0xE82EA0, 0x204 .align 2 -gFile_graphics_interface_status_icons_palette:: @ 8E830A4 +gStatusPal_Icons:: @ 8E830A4 .incbin "graphics/interface/status_icons.gbapal.lz" .align 2 diff --git a/data/party_menu.s b/data/party_menu.s deleted file mode 100644 index 1f10d0ea5..000000000 --- a/data/party_menu.s +++ /dev/null @@ -1,669 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gMoveTutorMoves:: @ 8459B60 - .2byte MOVE_MEGA_PUNCH - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_MEGA_KICK - .2byte MOVE_BODY_SLAM - .2byte MOVE_DOUBLE_EDGE - .2byte MOVE_COUNTER - .2byte MOVE_SEISMIC_TOSS - .2byte MOVE_MIMIC - .2byte MOVE_METRONOME - .2byte MOVE_SOFT_BOILED - .2byte MOVE_DREAM_EATER - .2byte MOVE_THUNDER_WAVE - .2byte MOVE_EXPLOSION - .2byte MOVE_ROCK_SLIDE - .2byte MOVE_SUBSTITUTE - -sTutorLearnsets:: @ 8459B7E - .2byte 0x0000 - .2byte 0x409a - .2byte 0x409a - .2byte 0x409a - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x40fd - .2byte 0x40fd - .2byte 0x40fd - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x4490 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x4092 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x48b8 - .2byte 0x48b8 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x48fd - .2byte 0x48fd - .2byte 0x60fa - .2byte 0x60fa - .2byte 0x40b8 - .2byte 0x40b8 - .2byte 0x60fd - .2byte 0x40b8 - .2byte 0x40b8 - .2byte 0x60fd - .2byte 0x4ffd - .2byte 0x4ffd - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4cfd - .2byte 0x4cfd - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x409a - .2byte 0x40ba - .2byte 0x40ba - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x4498 - .2byte 0x4498 - .2byte 0x40fd - .2byte 0x40fd - .2byte 0x61fd - .2byte 0x61fd - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x41fd - .2byte 0x41fd - .2byte 0x4dfd - .2byte 0x4dfd - .2byte 0x4dfd - .2byte 0x61fd - .2byte 0x61fd - .2byte 0x61fd - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x409a - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x71f9 - .2byte 0x71f9 - .2byte 0x71fd - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4c98 - .2byte 0x4cfd - .2byte 0x4890 - .2byte 0x4890 - .2byte 0x409a - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x5088 - .2byte 0x5088 - .2byte 0x5090 - .2byte 0x5090 - .2byte 0x5480 - .2byte 0x5480 - .2byte 0x55fd - .2byte 0x7098 - .2byte 0x4dfd - .2byte 0x4dfd - .2byte 0x409a - .2byte 0x409a - .2byte 0x5880 - .2byte 0x5880 - .2byte 0x5490 - .2byte 0x5490 - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x61fd - .2byte 0x61fd - .2byte 0x64ff - .2byte 0x5080 - .2byte 0x5080 - .2byte 0x60ba - .2byte 0x60ff - .2byte 0x4ffd - .2byte 0x409a - .2byte 0x60fd - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4890 - .2byte 0x4c90 - .2byte 0x4dfd - .2byte 0x40b2 - .2byte 0x45fd - .2byte 0x48fd - .2byte 0x40fd - .2byte 0x60da - .2byte 0x4098 - .2byte 0x0000 - .2byte 0x4898 - .2byte 0x4498 - .2byte 0x0000 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4898 - .2byte 0x4098 - .2byte 0x4c90 - .2byte 0x6098 - .2byte 0x60d8 - .2byte 0x6098 - .2byte 0x60de - .2byte 0x6090 - .2byte 0x61fd - .2byte 0x4090 - .2byte 0x4890 - .2byte 0x4090 - .2byte 0x4898 - .2byte 0x4898 - .2byte 0x4898 - .2byte 0x4dfd - .2byte 0x7fff - .2byte 0x40ba - .2byte 0x40ba - .2byte 0x40ba - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x60fd - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4490 - .2byte 0x4490 - .2byte 0x4093 - .2byte 0x4093 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4090 - .2byte 0x4890 - .2byte 0x4890 - .2byte 0x48fd - .2byte 0x4ffd - .2byte 0x4cfd - .2byte 0x4ffd - .2byte 0x4ffd - .2byte 0x4c90 - .2byte 0x4c90 - .2byte 0x4898 - .2byte 0x48fd - .2byte 0x48fd - .2byte 0x4092 - .2byte 0x40dd - .2byte 0x40dd - .2byte 0x70fd - .2byte 0x41fd - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x4dfd - .2byte 0x4092 - .2byte 0x4092 - .2byte 0x4490 - .2byte 0x4098 - .2byte 0x40fd - .2byte 0x4498 - .2byte 0x4498 - .2byte 0x4c90 - .2byte 0x4cfd - .2byte 0x4c90 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x4c98 - .2byte 0x70b8 - .2byte 0x70b8 - .2byte 0x6cb8 - .2byte 0x64b2 - .2byte 0x7098 - .2byte 0x49fd - .2byte 0x69fd - .2byte 0x4892 - .2byte 0x40b2 - .2byte 0x6098 - .2byte 0x60fa - .2byte 0x44b2 - .2byte 0x41ff - .2byte 0x61ff - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x7098 - .2byte 0x4890 - .2byte 0x48d0 - .2byte 0x40fd - .2byte 0x4098 - .2byte 0x60b0 - .2byte 0x44b8 - .2byte 0x44b8 - .2byte 0x4098 - .2byte 0x40b8 - .2byte 0x60b8 - .2byte 0x4c90 - .2byte 0x4c98 - .2byte 0x0000 - .2byte 0x60fc - .2byte 0x60fc - .2byte 0x45fd - .2byte 0x48fd - .2byte 0x40fd - .2byte 0x69fd - .2byte 0x4ffd - .2byte 0x4898 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x68fd - .2byte 0x4c98 - .2byte 0x4c90 - .2byte 0x4592 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x40ff - .2byte 0x40ff - .2byte 0x40ff - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x60ff - .2byte 0x4098 - .2byte 0x60fd - .2byte 0x60fd - .2byte 0x40b8 - .2byte 0x40b8 - .2byte 0x4898 - .2byte 0x4898 - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x4090 - .2byte 0x0000 - .2byte 0x4090 - .2byte 0x409a - .2byte 0x409a - .2byte 0x41ff - .2byte 0x509a - .2byte 0x509e - .2byte 0x509e - .2byte 0x4090 - .2byte 0x4092 - .2byte 0x4490 - .2byte 0x40b0 - .2byte 0x40b0 - .2byte 0x409a - .2byte 0x40ff - .2byte 0x65fd - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4c98 - .2byte 0x4c98 - .2byte 0x69fd - .2byte 0x7490 - .2byte 0x7490 - .2byte 0x7898 - .2byte 0x7098 - .2byte 0x45fd - .2byte 0x4090 - .2byte 0x6090 - .2byte 0x4090 - .2byte 0x40ba - .2byte 0x40ba - .2byte 0x4090 - .2byte 0x4098 - .2byte 0x4090 - .2byte 0x4090 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x61fd - .2byte 0x61fd - .2byte 0x4898 - .2byte 0x4898 - .2byte 0x6098 - .2byte 0x7098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x40fb - .2byte 0x40ff - .2byte 0x4098 - .2byte 0x5098 - .2byte 0x7498 - .2byte 0x7498 - .2byte 0x4098 - .2byte 0x4498 - .2byte 0x44fd - .2byte 0x49fd - .2byte 0x49fd - .2byte 0x60ff - .2byte 0x45fd - .2byte 0x65fd - .2byte 0x4498 - .2byte 0x4498 - .2byte 0x0000 - .2byte 0x4498 - .2byte 0x65fd - .2byte 0x409a - .2byte 0x60fd - .2byte 0x60fd - .2byte 0x60fd - .2byte 0x54b8 - .2byte 0x54b8 - .2byte 0x409a - .2byte 0x40fd - .2byte 0x60fd - .2byte 0x60fd - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x4098 - .2byte 0x6cba - .2byte 0x4c98 - .2byte 0x4d98 - .2byte 0x4098 - .2byte 0x68ff - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x68fd - .2byte 0x4898 - .2byte 0x49fd - .2byte 0x49fd - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x609a - .2byte 0x60da - .2byte 0x4c98 - .2byte 0x4c98 - .2byte 0x4c98 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x6098 - .2byte 0x0000 - .2byte 0x7098 - .2byte 0x7098 - .2byte 0x78fd - .2byte 0x78fd - .2byte 0x78fd - .2byte 0x6898 - .2byte 0x68ff - .2byte 0x6898 - .2byte 0x4c98 - .2byte 0x4c98 - .2byte 0x4d98 - .2byte 0x6cfd - .2byte 0x4490 - - .align 2 -sPartyMenuBgTemplates:: @ 8459EB8 - .incbin "baserom.gba", 0x459EB8, 0xC - -sPartyBoxInfoRects:: @ 8459EC4 - .incbin "baserom.gba", 0x459EC4, 0x40 - -sPartyMenuSpriteCoords:: @ 8459F04 - .incbin "baserom.gba", 0x459F04, 0xC0 - -gUnknown_8459FC4:: @ 8459FC4 - .incbin "baserom.gba", 0x459FC4, 0x1C - -gUnknown_8459FE0:: @ 8459FE0 - .incbin "baserom.gba", 0x459FE0, 0x1C - -sFontColorTable:: @ 8459FFC - .incbin "baserom.gba", 0x459FFC, 0xF - -gUnknown_845A00B:: @ 845A00B - .incbin "baserom.gba", 0x45A00B, 0x5 - -sSinglePartyMenuWindowTemplate:: @ 845A010 - .incbin "baserom.gba", 0x45A010, 0x40 - -sDoublePartyMenuWindowTemplate:: @ 845A050 - .incbin "baserom.gba", 0x45A050, 0x40 - -sMultiPartyMenuWindowTemplate:: @ 845A090 - .incbin "baserom.gba", 0x45A090, 0x40 - -sShowcaseMultiPartyMenuWindowTemplate:: @ 845A0D0 - .incbin "baserom.gba", 0x45A0D0, 0x38 - -sCancelButtonWindowTemplate:: @ 845A108 - .incbin "baserom.gba", 0x45A108, 0x8 - -sMultiCancelButtonWindowTemplate:: @ 845A110 - .incbin "baserom.gba", 0x45A110, 0x8 - -sConfirmButtonWindowTemplate:: @ 845A118 - .incbin "baserom.gba", 0x45A118, 0x8 - -gUnknown_845A120:: @ 845A120 - .incbin "baserom.gba", 0x45A120, 0x8 - -gUnknown_845A128:: @ 845A128 - .incbin "baserom.gba", 0x45A128, 0x8 - -gUnknown_845A130:: @ 845A130 - .incbin "baserom.gba", 0x45A130, 0x8 - -gUnknown_845A138:: @ 845A138 - .incbin "baserom.gba", 0x45A138, 0x8 - -gUnknown_845A140:: @ 845A140 - .incbin "baserom.gba", 0x45A140, 0x8 - -sItemGiveTakeWindowTemplate:: @ 845A148 - .incbin "baserom.gba", 0x45A148, 0x8 - -sMailReadTakeWindowTemplate:: @ 845A150 - .incbin "baserom.gba", 0x45A150, 0x8 - -sMoveSelectWindowTemplate:: @ 845A158 - .incbin "baserom.gba", 0x45A158, 0x8 - -sPartyMenuYesNoWindowTemplate:: @ 845A160 - .incbin "baserom.gba", 0x45A160, 0x8 - -sLevelUpStatsWindowTemplate:: @ 845A168 - .incbin "baserom.gba", 0x45A168, 0x8 - -gUnknown_845A170:: @ 845A170 - .incbin "baserom.gba", 0x45A170, 0x8 - -gUnknown_845A178:: @ 845A178 - .incbin "baserom.gba", 0x45A178, 0x8 - -sMainSlotTileNums:: @ 845A180 - .incbin "baserom.gba", 0x45A180, 0x46 - -sMainSlotTileNums_Egg:: @ 845A1C6 - .incbin "baserom.gba", 0x45A1C6, 0x46 - -sOtherSlotTileNums:: @ 845A20C - .incbin "baserom.gba", 0x45A20C, 0x36 - -sOtherSlotTileNums_Egg:: @ 845A242 - .incbin "baserom.gba", 0x45A242, 0x36 - -gUnknown_845A278:: @ 845A278 - .incbin "baserom.gba", 0x45A278, 0x36 - -sGenderPalOffsets:: @ 845A2AE - .incbin "baserom.gba", 0x45A2AE, 0x2 - -gUnknown_845A2B0:: @ 845A2B0 - .incbin "baserom.gba", 0x45A2B0, 0x2 - -gUnknown_845A2B2:: @ 845A2B2 - .incbin "baserom.gba", 0x45A2B2, 0x3 - -gUnknown_845A2B5:: @ 845A2B5 - .incbin "baserom.gba", 0x45A2B5, 0x3 - -sGenderMalePalIds:: @ 845A2B8 - .incbin "baserom.gba", 0x45A2B8, 0x2 - -sGenderFemalePalIds:: @ 845A2BA - .incbin "baserom.gba", 0x45A2BA, 0x2 - -gUnknown_845A2BC:: @ 845A2BC - .incbin "baserom.gba", 0x45A2BC, 0x2 - -gUnknown_845A2BE:: @ 845A2BE - .incbin "baserom.gba", 0x45A2BE, 0x2 - -gUnknown_845A2C0:: @ 845A2C0 - .incbin "baserom.gba", 0x45A2C0, 0x2 - -gUnknown_845A2C2:: @ 845A2C2 - .incbin "baserom.gba", 0x45A2C2, 0x3 - -gUnknown_845A2C5:: @ 845A2C5 - .incbin "baserom.gba", 0x45A2C5, 0x3 - -gUnknown_845A2C8:: @ 845A2C8 - .incbin "baserom.gba", 0x45A2C8, 0x3 - -gUnknown_845A2CB:: @ 845A2CB - .incbin "baserom.gba", 0x45A2CB, 0x3 - -gUnknown_845A2CE:: @ 845A2CE - .incbin "baserom.gba", 0x45A2CE, 0x3 - -gUnknown_845A2D1:: @ 845A2D1 - .incbin "baserom.gba", 0x45A2D1, 0x3 - -gUnknown_845A2D4:: @ 845A2D4 - .incbin "baserom.gba", 0x45A2D4, 0x3 - -gUnknown_845A2D7:: @ 845A2D7 - .incbin "baserom.gba", 0x45A2D7, 0x3 - -gUnknown_845A2DA:: @ 845A2DA - .incbin "baserom.gba", 0x45A2DA, 0x3 - -gUnknown_845A2DD:: @ 845A2DD - .incbin "baserom.gba", 0x45A2DD, 0x3 - -gUnknown_845A2E0:: @ 845A2E0 - .incbin "baserom.gba", 0x45A2E0, 0x3 - -gUnknown_845A2E3:: @ 845A2E3 - .incbin "baserom.gba", 0x45A2E3, 0x5 - -sActionStringTable:: @ 845A2E8 - .incbin "baserom.gba", 0x45A2E8, 0x6C - -sDescriptionStringTable:: @ 845A354 - .incbin "baserom.gba", 0x45A354, 0x28 - -gUnknown_845A37C:: @ 845A37C - .incbin "baserom.gba", 0x45A37C, 0xB0 - -sSpriteSheet_HeldItem:: @ 845A42C - .incbin "baserom.gba", 0x45A42C, 0x8 - -sSpritePalette_HeldItem:: @ 845A434 - .incbin "baserom.gba", 0x45A434, 0x8 - -sSpriteTemplate_HeldItem:: @ 845A43C - .incbin "baserom.gba", 0x45A43C, 0x38 - -sSpriteSheet_MenuPokeball:: @ 845A474 - .incbin "baserom.gba", 0x45A474, 0x8 - -sSpritePalette_MenuPokeball:: @ 845A47C - .incbin "baserom.gba", 0x45A47C, 0x8 - -sSpriteTemplate_MenuPokeball:: @ 845A484 - .incbin "baserom.gba", 0x45A484, 0x68 - -sSpriteSheet_MenuPokeballSmall:: @ 845A4EC - .incbin "baserom.gba", 0x45A4EC, 0x8 - -sSpriteTemplate_MenuPokeballSmall:: @ 845A4F4 - .incbin "baserom.gba", 0x45A4F4, 0x80 - -sSpriteSheet_StatusIcons:: @ 845A574 - .incbin "baserom.gba", 0x45A574, 0x8 - -sSpritePalette_StatusIcons:: @ 845A57C - .incbin "baserom.gba", 0x45A57C, 0x8 - -sSpriteTemplate_StatusIcons:: @ 845A584 - .incbin "baserom.gba", 0x45A584, 0x18 - -sMultiBattlePartnersPartyMask:: @ 845A59C - .incbin "baserom.gba", 0x45A59C, 0x7C - -sCursorOptions:: @ 845A618 - .incbin "baserom.gba", 0x45A618, 0x114 - -sPartyMenuActions:: @ 845A72C - .incbin "baserom.gba", 0x45A72C, 0x34 - -sPartyMenuActionCounts:: @ 845A760 - .incbin "baserom.gba", 0x45A760, 0xE - -sFieldMoves:: @ 845A76E - .incbin "baserom.gba", 0x45A76E, 0x1A - -sFieldMoveCursorCallbacks:: @ 845A788 - .incbin "baserom.gba", 0x45A788, 0x60 - -sUnionRoomTradeMessages:: @ 845A7E8 - .4byte gUnknown_841718C @ Not what other player wants - .4byte gUnknown_84171CC @ Not an egg - .4byte gUnknown_84170BC @ Mon can't be traded - .4byte gUnknown_84170BC @ Mon can't be traded - .4byte gUnknown_84170FC @ Other trainer's mon can't be traded - .4byte gUnknown_84170E0 @ Egg can't be traded - .4byte gUnknown_8417130 @ Other trainer can't accept - .4byte gUnknown_8417164 @ Can't trade with trainer now - .4byte gUnknown_8417164 @ Can't trade with trainer now - -sTMHMMoves:: @ 845A80C - .incbin "baserom.gba", 0x45A80C, 0x74 diff --git a/data/strings.s b/data/strings.s index 3cd263df9..a0454c12b 100644 --- a/data/strings.s +++ b/data/strings.s @@ -433,16 +433,16 @@ gString_Dummy:: @ 84161CD gUnknown_84161CE:: .string "キャンセル$" -gUnknown_84161D4:: +gText_Item:: .string "ITEM$" -gUnknown_84161D9:: +gText_Mail:: .string "MAIL$" -gUnknown_84161DE:: +gText_Take:: .string "TAKE$" -gUnknown_84161E3:: +gText_Store:: .string "STORE$" gUnknown_84161E9:: @@ -804,34 +804,34 @@ gText_TurnedOverItemsWorthYen:: @ 8416959 gText_PokedollarVar1:: @ 841697A .string "¥{STR_VAR_1}$" -gUnknown_841697E:: @ 0x841697E +gText_Shift:: @ 0x841697E .string "SHIFT$" -gUnknown_8416984:: @ 0x8416984 +gText_SendOut:: @ 0x8416984 .string "SEND OUT$" -gUnknown_841698D:: @ 0x841698D +gText_Switch2:: @ 0x841698D .string "SWITCH$" -gUnknown_8416994:: @ 0x8416994 +gText_Summary5:: @ 0x8416994 .string "SUMMARY$" gUnknown_841699C:: @ 0x841699C .string "つかえるわざ$" -gUnknown_84169A3:: @ 0x84169A3 +gText_Enter:: @ 0x84169A3 .string "ENTER$" -gUnknown_84169A9:: @ 0x84169A9 +gText_NoEntry:: @ 0x84169A9 .string "NO ENTRY$" -gUnknown_84169B2:: @ 0x84169B2 +gText_Take2:: @ 0x84169B2 .string "TAKE$" -gUnknown_84169B7:: @ 0x84169B7 +gText_Read2:: @ 0x84169B7 .string "READ$" -gUnknown_84169BC:: @ 0x84169BC +gText_Trade4:: @ 0x84169BC .string "TRADE$" gText_HP3:: @ 84169C2 @@ -1044,144 +1044,144 @@ gUnknown_8417094:: @ 0x8417094 .string "POKéMON for battle.$" .align 2 -gUnknown_84170BC:: @ 84170BC +gText_PkmnCantBeTradedNow:: @ 84170BC .string "That POKéMON can't be traded\n" .string "now.$" .align 2 -gUnknown_84170E0:: @ 84170E0 +gText_EggCantBeTradedNow:: @ 84170E0 .string "An EGG can't be traded now.$" .align 2 -gUnknown_84170FC:: @ 0x84170FC +gText_OtherTrainersPkmnCantBeTraded:: @ 0x84170FC .string "The other TRAINER's POKéMON\n" .string "can't be traded now.$" .align 2 -gUnknown_8417130:: @ 0x8417130 +gText_OtherTrainerCantAcceptPkmn:: @ 0x8417130 .string "The other TRAINER can't accept\n" .string "that POKéMON now.$" .align 2 -gUnknown_8417164:: @ 0x8417164 +gText_CantTradeWithTrainer:: @ 0x8417164 .string "You can't trade with that\n" .string "TRAINER now.$" .align 2 -gUnknown_841718C:: @ 0x841718C +gText_NotPkmnOtherTrainerWants:: @ 0x841718C .string "That isn't the type of POKéMON\n" .string "that the other TRAINER wants.$" .align 2 -gUnknown_84171CC:: @ 0x84171CC +gText_ThatIsntAnEgg:: @ 0x84171CC .string "That isn't an EGG.$" -gUnknown_84171DF:: @ 0x84171DF +gText_ChoosePokemon:: @ 0x84171DF .string "Choose a POKéMON.$" -gUnknown_84171F1:: @ 0x84171F1 +gText_MoveToWhere:: @ 0x84171F1 .string "Move to where?$" -gUnknown_8417200:: @ 0x8417200 +gText_TeachWhichPokemon:: @ 0x8417200 .string "Teach which POKéMON?$" -gUnknown_8417215:: @ 0x8417215 +gText_UseOnWhichPokemon:: @ 0x8417215 .string "Use on which POKéMON?$" -gUnknown_841722B:: @ 0x841722B +gText_GiveToWhichPokemon:: @ 0x841722B .string "Give to which POKéMON?$" -gUnknown_8417242:: @ 0x8417242 +gText_DoWhatWithPokemon:: @ 0x8417242 .string "Do what with this {PKMN}?$" -gUnknown_8417258:: @ 0x8417258 +gText_NothingToCut:: @ 0x8417258 .string "There's nothing to CUT.$" -gUnknown_8417270:: @ 0x8417270 +gText_CantSurfHere:: @ 0x8417270 .string "No SURFING here!$" -gUnknown_8417281:: @ 0x8417281 +gText_AlreadySurfing:: @ 0x8417281 .string "You're already SURFING.$" -gUnknown_8417299:: @ 0x8417299 +gText_CantUseHere:: @ 0x8417299 .string "Can't use that here.$" -gUnknown_84172AE:: @ 0x84172AE +gText_RestoreWhichMove:: @ 0x84172AE .string "Restore which move?$" -gUnknown_84172C2:: @ 0x84172C2 +gText_BoostPp:: @ 0x84172C2 .string "Boost PP of which?$" -gUnknown_84172D5:: @ 0x84172D5 +gText_DoWhatWithItem:: @ 0x84172D5 .string "Do what with an item?$" -gUnknown_84172EB:: @ 0x84172EB +gText_NoPokemonForBattle:: @ 0x84172EB .string "No battling this way!$" -gUnknown_8417301:: @ 0x8417301 +gText_ChoosePokemon2:: @ 0x8417301 .string "Choose a POKéMON.$" -gUnknown_8417313:: @ 0x8417313 +gText_NotEnoughHp:: @ 0x8417313 .string "Not enough HP‥$" -gUnknown_8417322:: @ 0x8417322 +gText_ThreePkmnAreNeeded:: @ 0x8417322 .string "Three {PKMN} are needed.$" -gUnknown_8417337:: @ 0x8417337 +gText_PokemonCantBeSame:: @ 0x8417337 .string "{PKMN} can't be the same.$" -gUnknown_841734D:: @ 0x841734D +gText_NoIdenticalHoldItems:: @ 0x841734D .string "No same hold items!$" -gUnknown_8417361:: @ 0x8417361 +gText_CurrentIsTooFast:: @ 0x8417361 .string "The current is much too fast!$" -gUnknown_841737F:: @ 0x841737F +gText_DoWhatWithMail:: @ 0x841737F .string "Do what with the MAIL?$" -gUnknown_8417396:: @ 0x8417396 +gText_ChoosePokemonCancel:: @ 0x8417396 .string "Choose POKéMON or CANCEL.$" -gUnknown_84173B0:: @ 0x84173B0 +gText_ChoosePokemonConfirm:: @ 0x84173B0 .string "Choose POKéMON and confirm.$" -gUnknown_84173CC:: @ 0x84173CC +gText_TwoPokemonAreNeeded:: @ 0x84173CC .string "Two POKéMON are needed.$" -gUnknown_84173E4:: @ 0x84173E4 +gText_EnjoyCycling:: @ 0x84173E4 .string "Let's enjoy cycling!$" -gUnknown_84173F9:: @ 0x84173F9 +gText_InUseAlready_PM:: @ 0x84173F9 .string "This is in use already.$" -gUnknown_8417411:: @ 0x8417411 +gText_NoUse:: @ 0x8417411 .string "No use.$" -gUnknown_8417419:: @ 0x8417419 +gText_Able:: @ 0x8417419 .string "ABLE$" -gUnknown_841741E:: @ 0x841741E +gText_First_PM:: @ 0x841741E .string "FIRST$" -gUnknown_8417424:: @ 0x8417424 +gText_Second_PM:: @ 0x8417424 .string "SECOND$" -gUnknown_841742B:: @ 0x841742B +gText_Third_PM:: @ 0x841742B .string "THIRD$" -gUnknown_8417431:: @ 0x8417431 +gText_Able2:: @ 0x8417431 .string "ABLE$" -gUnknown_8417436:: @ 0x8417436 +gText_NotAble:: @ 0x8417436 .string "NOT ABLE$" -gUnknown_841743F:: @ 0x841743F +gText_Able3:: @ 0x841743F .string "ABLE!$" -gUnknown_8417445:: @ 0x8417445 +gText_NotAble2:: @ 0x8417445 .string "NOT ABLE!$" -gUnknown_841744F:: @ 0x841744F +gText_Learned:: @ 0x841744F .string "LEARNED$" gUnknown_8417457:: @ 8417457 @@ -1197,40 +1197,40 @@ gUnknown_8417494:: @ 8417494 .string "You also choose POKéMON here if\n" .string "you want to use an item on one.{PAUSE_UNTIL_PRESS}$" -gUnknown_8417533:: @ 0x8417533 +gText_CutATreeOrGrass:: @ 0x8417533 .string "Cut a tree or grass.$" -gUnknown_8417548:: @ 0x8417548 +gText_FlyToAKnownTown:: @ 0x8417548 .string "Fly to a known town.$" -gUnknown_841755D:: @ 0x841755D +gText_TravelOnWater:: @ 0x841755D .string "Travel on water.$" -gUnknown_841756E:: @ 0x841756E +gText_MoveHeavyBoulders:: @ 0x841756E .string "Move heavy boulders.$" -gUnknown_8417583:: @ 0x8417583 +gText_LightUpDarkness:: @ 0x8417583 .string "Light up darkness.$" -gUnknown_8417596:: @ 0x8417596 +gText_ShatterACrackedRock:: @ 0x8417596 .string "Shatter a cracked rock.$" -gUnknown_84175AE:: @ 0x84175AE +gText_ClimbAWaterfall:: @ 0x84175AE .string "Climb a waterfall.$" gUnknown_84175C1:: @ 0x84175C1 .string "すいちゅうに もぐる$" -gUnknown_84175CC:: @ 0x84175CC +gText_EscapeFromHere:: @ 0x84175CC .string "Escape from here.$" -gUnknown_84175DE:: @ 0x84175DE +gText_LureWildPokemon:: @ 0x84175DE .string "Lure wild POKéMON.$" -gUnknown_84175F1:: @ 0x84175F1 +gText_ShareHp:: @ 0x84175F1 .string "Share HP.$" -gUnknown_84175FB:: @ 0x84175FB +gText_ReturnToAHealingSpot:: @ 0x84175FB .string "Return to a healing spot.$" gUnknown_8417615:: @ 8417615 @@ -3266,7 +3266,7 @@ gText_Badges:: @ 841B6EC gTextJPDummy_Ko:: @ 841B6F3 .string "$" -gUnknown_841B6F4:: @ 0x841B6F4 +gText_Register:: @ 0x841B6F4 .string "REGISTER$" gText_HatchedFromEgg:: @ 841B6FD diff --git a/graphics/interface/hold_icons.pal b/graphics/interface/hold_icons.pal new file mode 100644 index 000000000..e31d717c9 --- /dev/null +++ b/graphics/interface/hold_icons.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +57 205 106 +255 255 255 +213 213 255 +148 148 180 +255 246 156 +222 222 115 +246 82 41 +164 90 82 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +98 98 98 diff --git a/graphics/interface/hold_icons.png b/graphics/interface/hold_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..15df00440bc69660313f69f9e7a1d7acbaa850dd GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^96&6<0wfqt3-&AkQudxMjv*W~lYj8D@a!*pAIGmG z=FlN;oNng8Ves9aS)k$S-|Fx0Y!A;bf6r&|$NKv-#>4lm)AbGh?5+OJfield_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler]; if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION) || gStatuses3[gActiveBattler] & STATUS3_ROOTED) { - BtlController_EmitChoosePokemon(0, PARTY_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, PARTY_ACTION_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); } else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG)) || ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP)) @@ -3146,16 +3146,16 @@ static void HandleTurnActionSelectionState(void) || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0)) && IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL))) { - BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]); } else { if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH) - BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH) - BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); else - BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]); } MarkBattlerForControllerExec(gActiveBattler); break; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c568d96f9..fe7359eb9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4504,7 +4504,7 @@ static void atk4F_jumpifcantswitch(void) static void sub_8024398(u8 arg0) { *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler]; - BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]); + BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, arg0, 0, gBattleStruct->field_60[gActiveBattler]); MarkBattlerForControllerExec(gActiveBattler); } @@ -4739,9 +4739,9 @@ static void atk50_openpartyscreen(void) else { if (gBattlescriptCurrInstr[1] & OPEN_PARTY_ALLOW_CANCEL) - hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function. + hitmarkerFaintBits = PARTY_ACTION_CHOOSE_MON; // Used here as the caseId for the EmitChoose function. else - hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON; + hitmarkerFaintBits = PARTY_ACTION_SEND_OUT; battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(OPEN_PARTY_ALLOW_CANCEL)); if (gSpecialStatuses[battlerId].flag40) { diff --git a/src/data/party_menu.h b/src/data/party_menu.h new file mode 100644 index 000000000..fde1a80f8 --- /dev/null +++ b/src/data/party_menu.h @@ -0,0 +1,1334 @@ +const struct BgTemplate sPartyMenuBgTemplates[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 1, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, +}; + +enum +{ + PARTY_BOX_LEFT_COLUMN, + PARTY_BOX_RIGHT_COLUMN, +}; + +const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = +{ + [PARTY_BOX_LEFT_COLUMN] = + { + BlitBitmapToPartyWindow_LeftColumn, + { + // The below are the x, y, width, and height for each of the following info + 24, 11, 40, 13, // Nickname + 32, 20, 32, 8, // Level + 64, 20, 8, 8, // Gender + 38, 36, 24, 8, // HP + 53, 36, 24, 8, // Max HP + 24, 35, 48, 3 // HP bar + }, + 12, 34, 64, 16 // Description text (e.g. NO USE) + }, + [PARTY_BOX_RIGHT_COLUMN] = + { + BlitBitmapToPartyWindow_RightColumn, + { + // The below are the x, y, width, and height for each of the following info + 22, 3, 40, 13, // Nickname + 32, 12, 32, 8, // Level + 64, 12, 8, 8, // Gender + 102, 12, 24, 8, // HP + 117, 12, 24, 8, // Max HP + 88, 10, 48, 3 // HP bar + }, + 77, 4, 64, 16 // Description text + }, +}; + +const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = +{ + [PARTY_LAYOUT_SINGLE] = + { + { 16, 40, 20, 50, 56, 52, 16, 34}, + {104, 18, 108, 28, 144, 27, 102, 25}, + {104, 42, 108, 52, 144, 51, 102, 49}, + {104, 66, 108, 76, 144, 75, 102, 73}, + {104, 90, 108, 100, 144, 99, 102, 97}, + {104, 114, 108, 124, 144, 123, 102, 121}, + }, + [PARTY_LAYOUT_DOUBLE] = + { + { 16, 24, 20, 34, 56, 36, 16, 18}, + { 16, 80, 20, 90, 56, 92, 16, 74}, + {104, 18, 108, 28, 144, 27, 102, 25}, + {104, 50, 108, 60, 144, 59, 102, 57}, + {104, 82, 108, 92, 144, 91, 102, 89}, + {104, 114, 108, 124, 144, 123, 102, 121}, + }, + [PARTY_LAYOUT_MULTI] = + { + { 16, 24, 20, 34, 56, 36, 16, 18}, + { 16, 80, 20, 90, 56, 92, 16, 74}, + {104, 26, 106, 36, 144, 35, 102, 33}, + {104, 50, 106, 60, 144, 59, 102, 57}, + {104, 82, 106, 92, 144, 91, 102, 89}, + {104, 106, 106, 116, 144, 115, 102, 113}, + }, + [PARTY_LAYOUT_MULTI_SHOWCASE] = + { + { 16, 32, 20, 42, 56, 44, 16, 26}, + {104, 34, 106, 44, 144, 43, 102, 41}, + {104, 58, 106, 68, 144, 67, 102, 65}, + { 16, 104, 20, 114, 56, 116, 16, 98}, + {104, 106, 106, 116, 144, 115, 102, 113}, + {104, 130, 106, 140, 144, 139, 102, 137}, + }, +}; + +const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); +const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); + +// NOTE TO MYSELF: remove these after #159 gets merged +#define TEXT_COLOR_TRANSPARENT 0x0 +#define TEXT_COLOR_WHITE 0x1 +#define TEXT_COLOR_DARK_GREY 0x2 +#define TEXT_COLOR_LIGHT_GREY 0x3 +#define TEXT_COLOR_RED 0x4 +#define TEXT_COLOR_LIGHT_RED 0x5 +#define TEXT_COLOR_GREEN 0x6 +#define TEXT_COLOR_LIGHT_GREEN 0x7 +#define TEXT_COLOR_BLUE 0x8 +#define TEXT_COLOR_LIGHT_BLUE 0x9 +#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white +#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green +#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white +#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine +#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green +#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean + +const u8 sFontColorTable[][3] = +{ + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, // Default + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_GREEN}, // Unused + {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_2, TEXT_DYNAMIC_COLOR_3}, // Gender symbol + {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}, // Selection actions + {TEXT_COLOR_WHITE, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_BLUE}, // Field moves + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, // Unused +}; + +const struct WindowTemplate sSinglePartyMenuWindowTemplate[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 3, + .width = 10, + .height = 7, + .paletteNum = 3, + .baseBlock = 0x63, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 1, + .width = 18, + .height = 3, + .paletteNum = 4, + .baseBlock = 0xA9, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 4, + .width = 18, + .height = 3, + .paletteNum = 5, + .baseBlock = 0xDF, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 7, + .width = 18, + .height = 3, + .paletteNum = 6, + .baseBlock = 0x115, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 10, + .width = 18, + .height = 3, + .paletteNum = 7, + .baseBlock = 0x14B, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 13, + .width = 18, + .height = 3, + .paletteNum = 8, + .baseBlock = 0x181, + }, + { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 28, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x1DF, + }, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate sDoublePartyMenuWindowTemplate[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 7, + .paletteNum = 3, + .baseBlock = 0x63, + }, + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 8, + .width = 10, + .height = 7, + .paletteNum = 4, + .baseBlock = 0xA9, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 1, + .width = 18, + .height = 3, + .paletteNum = 5, + .baseBlock = 0xEF, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 5, + .width = 18, + .height = 3, + .paletteNum = 6, + .baseBlock = 0x125, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 9, + .width = 18, + .height = 3, + .paletteNum = 7, + .baseBlock = 0x15B, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 13, + .width = 18, + .height = 3, + .paletteNum = 8, + .baseBlock = 0x191, + }, + { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 28, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x1DF, + }, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate sMultiPartyMenuWindowTemplate[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 7, + .paletteNum = 3, + .baseBlock = 0x63, + }, + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 8, + .width = 10, + .height = 7, + .paletteNum = 4, + .baseBlock = 0xA9, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 2, + .width = 18, + .height = 3, + .paletteNum = 5, + .baseBlock = 0xEF, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 5, + .width = 18, + .height = 3, + .paletteNum = 6, + .baseBlock = 0x125, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 9, + .width = 18, + .height = 3, + .paletteNum = 7, + .baseBlock = 0x15B, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 12, + .width = 18, + .height = 3, + .paletteNum = 8, + .baseBlock = 0x191, + }, + { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 28, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x1DF, + }, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate sShowcaseMultiPartyMenuWindowTemplate[] = +{ + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 2, + .width = 10, + .height = 7, + .paletteNum = 3, + .baseBlock = 0x63, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 3, + .width = 18, + .height = 3, + .paletteNum = 5, + .baseBlock = 0xA9, + }, + { + .bg = 0, + .tilemapLeft = 12, + .tilemapTop = 6, + .width = 18, + .height = 3, + .paletteNum = 6, + .baseBlock = 0xDF, + }, + { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 11, + .width = 10, + .height = 7, + .paletteNum = 4, + .baseBlock = 0x115, + }, + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 12, + .width = 18, + .height = 3, + .paletteNum = 7, + .baseBlock = 0x16B, + }, + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 15, + .width = 18, + .height = 3, + .paletteNum = 8, + .baseBlock = 0x1A1, + }, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate sCancelButtonWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 24, + .tilemapTop = 17, + .width = 6, + .height = 2, + .paletteNum = 3, + .baseBlock = 0x1C7, +}; + +const struct WindowTemplate sMultiCancelButtonWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 24, + .tilemapTop = 18, + .width = 6, + .height = 2, + .paletteNum = 3, + .baseBlock = 0x1C7, +}; + +const struct WindowTemplate sConfirmButtonWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 24, + .tilemapTop = 16, + .width = 6, + .height = 2, + .paletteNum = 3, + .baseBlock = 0x1D3, +}; + +const struct WindowTemplate sDefaultPartyMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 17, + .width = 21, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x24F, +}; + +const struct WindowTemplate sDoWhatWithMonMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 17, + .width = 16, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x279, +}; + +const struct WindowTemplate sDoWhatWithItemMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 17, + .width = 19, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x299, +}; + +const struct WindowTemplate sDoWhatWithMailMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 17, + .width = 16, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x299, +}; + +const struct WindowTemplate sWhichMoveMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 17, + .width = 15, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x299, +}; + +const struct WindowTemplate sItemGiveTakeWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 22, + .tilemapTop = 13, + .width = 7, + .height = 6, + .paletteNum = 14, + .baseBlock = 0x373, +}; + +const struct WindowTemplate sMailReadTakeWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 19, + .tilemapTop = 13, + .width = 10, + .height = 6, + .paletteNum = 14, + .baseBlock = 0x373, +}; + +const struct WindowTemplate sMoveSelectWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 18, + .tilemapTop = 11, + .width = 11, + .height = 8, + .paletteNum = 14, + .baseBlock = 0x2BF, +}; + +const struct WindowTemplate sPartyMenuYesNoWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x2BF, +}; + +const struct WindowTemplate sLevelUpStatsWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 19, + .tilemapTop = 1, + .width = 10, + .height = 11, + .paletteNum = 14, + .baseBlock = 0x2BF, +}; + +const struct WindowTemplate gUnknown_845A170 = +{ + .bg = 2, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 14, + .baseBlock = 0x1DF, +}; + +const struct WindowTemplate gUnknown_845A178 = +{ + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 13, + .width = 18, + .height = 3, + .paletteNum = 12, + .baseBlock = 0x373, +}; + +const u8 sMainSlotTileNums[] = +{ + 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 40, 59, 60, 58, 58, 58, 58, 58, 58, 61, + 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, + 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, +}; + +const u8 sMainSlotTileNums_Egg[] = +{ + 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, + 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, + 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, + 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, +}; + +const u8 sOtherSlotsTileNums[] = +{ + 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, + 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, + 51, 51, 51, 51, 51, 54, 55, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 57, +}; + +const u8 sOtherSlotsTileNums_Egg[] = +{ + 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 50, 55, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 57, +}; + +const u8 sEmptySlotTileNums[] = +{ + 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 23, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 37, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 39, +}; + +const u8 sGenderPalOffsets[] = {11, 12}; + +const u8 sHPBarPalOffsets[] = {9, 10}; + +const u8 sPartyBoxPalOffsets1[] = {4, 5, 6}; + +const u8 sPartyBoxPalOffsets2[] = {1, 7, 8}; + +const u8 sGenderMalePalIds[] = {59, 60}; + +const u8 sGenderFemalePalIds[] = {75, 76}; + +const u8 sHPBarGreenPalIds[] = {57, 58}; + +const u8 sHPBarYellowPalIds[] = {73, 74}; + +const u8 sHPBarRedPalIds[] = {89, 90}; + +const u8 sPartyBoxEmptySlotPalIds1[] = {52, 53, 54}; + +const u8 sPartyBoxMultiPalIds1[] = {68, 69, 70}; + +const u8 sPartyBoxFaintedPalIds1[] = {84, 85, 86}; + +const u8 sPartyBoxCurrSelectionPalIds1[] = {116, 117, 118}; + +const u8 sPartyBoxCurrSelectionMultiPalIds[] = {132, 133, 134}; + +const u8 sPartyBoxCurrSelectionFaintedPalIds[] = {148, 149, 150}; + +const u8 sPartyBoxSelectedForActionPalIds1[] = {100, 101, 102}; + +const u8 sPartyBoxEmptySlotPalIds2[] = {49, 55, 56}; + +const u8 sPartyBoxMultiPalIds2[] = {65, 71, 72}; + +const u8 sPartyBoxFaintedPalIds2[] = {81, 87, 88}; + +const u8 sPartyBoxCurrSelectionPalIds2[] = {97, 103, 104}; + +const u8 sPartyBoxSelectedForActionPalIds2[] = {161, 167, 168}; + +const u8 *const sActionStringTable[] = +{ + [PARTY_MSG_CHOOSE_MON] = gText_ChoosePokemon, + [PARTY_MSG_CHOOSE_MON_OR_CANCEL] = gText_ChoosePokemonCancel, + [PARTY_MSG_CHOOSE_MON_AND_CONFIRM] = gText_ChoosePokemonConfirm, + [PARTY_MSG_MOVE_TO_WHERE] = gText_MoveToWhere, + [PARTY_MSG_TEACH_WHICH_MON] = gText_TeachWhichPokemon, + [PARTY_MSG_USE_ON_WHICH_MON] = gText_UseOnWhichPokemon, + [PARTY_MSG_GIVE_TO_WHICH_MON] = gText_GiveToWhichPokemon, + [PARTY_MSG_NOTHING_TO_CUT] = gText_NothingToCut, + [PARTY_MSG_CANT_SURF_HERE] = gText_CantSurfHere, + [PARTY_MSG_ALREADY_SURFING] = gText_AlreadySurfing, + [PARTY_MSG_CURRENT_TOO_FAST] = gText_CurrentIsTooFast, + [PARTY_MSG_ENJOY_CYCLING] = gText_EnjoyCycling, + [PARTY_MSG_ALREADY_IN_USE] = gText_InUseAlready_PM, + [PARTY_MSG_CANT_USE_HERE] = gText_CantUseHere, + [PARTY_MSG_NO_MON_FOR_BATTLE] = gText_NoPokemonForBattle, + [PARTY_MSG_CHOOSE_MON_2] = gText_ChoosePokemon2, + [PARTY_MSG_NOT_ENOUGH_HP] = gText_NotEnoughHp, + [PARTY_MSG_THREE_MONS_ARE_NEEDED] = gText_ThreePkmnAreNeeded, + [PARTY_MSG_TWO_MONS_ARE_NEEDED] = gText_TwoPokemonAreNeeded, + [PARTY_MSG_MONS_CANT_BE_SAME] = gText_PokemonCantBeSame, + [PARTY_MSG_NO_SAME_HOLD_ITEMS] = gText_NoIdenticalHoldItems, + [PARTY_MSG_UNUSED] = gString_Dummy, + [PARTY_MSG_DO_WHAT_WITH_MON] = gText_DoWhatWithPokemon, + [PARTY_MSG_RESTORE_WHICH_MOVE] = gText_RestoreWhichMove, + [PARTY_MSG_BOOST_PP_WHICH_MOVE] = gText_BoostPp, + [PARTY_MSG_DO_WHAT_WITH_ITEM] = gText_DoWhatWithItem, + [PARTY_MSG_DO_WHAT_WITH_MAIL] = gText_DoWhatWithMail, +}; + +const u8 *const sDescriptionStringTable[] = +{ + [PARTYBOX_DESC_NO_USE] = gText_NoUse, + [PARTYBOX_DESC_ABLE_3] = gText_Able, + [PARTYBOX_DESC_FIRST] = gText_First_PM, + [PARTYBOX_DESC_SECOND] = gText_Second_PM, + [PARTYBOX_DESC_THIRD] = gText_Third_PM, + [PARTYBOX_DESC_ABLE] = gText_Able2, + [PARTYBOX_DESC_NOT_ABLE] = gText_NotAble, + [PARTYBOX_DESC_ABLE_2] = gText_Able3, + [PARTYBOX_DESC_NOT_ABLE_2] = gText_NotAble2, + [PARTYBOX_DESC_LEARNED] = gText_Learned, +}; + +const u8 *const sHMDescriptionTable[] = +{ + gText_LightUpDarkness, + gText_CutATreeOrGrass, + gText_FlyToAKnownTown, + gText_MoveHeavyBoulders, + gText_TravelOnWater, + gText_ShatterACrackedRock, + gText_ClimbAWaterfall, + gText_ReturnToAHealingSpot, + gText_EscapeFromHere, + gText_ShareHp, + gText_ShareHp, + gText_LureWildPokemon, +}; + +const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp"); +const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); + +const struct OamData sOamData_HeldItem = +{ + .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 = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd sSpriteAnim_HeldItem[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_HeldMail[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END +}; + +const union AnimCmd *const sSpriteAnimTable_HeldItem[] = +{ + sSpriteAnim_HeldItem, + sSpriteAnim_HeldMail, +}; + +const struct SpriteSheet sSpriteSheet_HeldItem = +{ + sHeldItemGfx, sizeof(sHeldItemGfx), 0xd750 +}; + +const struct SpritePalette sSpritePalette_HeldItem = +{ + sHeldItemPalette, 0xd750 +}; + +const struct SpriteTemplate sSpriteTemplate_HeldItem = +{ + 0xd750, + 0xd750, + &sOamData_HeldItem, + sSpriteAnimTable_HeldItem, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy, +}; + +const struct OamData sOamData_MenuPokeball = +{ + .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, +}; + +const union AnimCmd sPokeballAnim_Closed[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd sPokeballAnim_Open[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd *const sSpriteAnimTable_MenuPokeball[] = +{ + sPokeballAnim_Closed, + sPokeballAnim_Open, +}; + +const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball = +{ + gPartyMenuPokeball_Gfx, 0x400, 0x04b0 +}; + +const struct CompressedSpritePalette sSpritePalette_MenuPokeball = +{ + gPartyMenuPokeball_Pal, 0x04b0 +}; + +// Used for the pokeball sprite on each party slot / Cancel button +const struct SpriteTemplate sSpriteTemplate_MenuPokeball = +{ + .tileTag = 0x04b0, + .paletteTag = 0x04b0, + .oam = &sOamData_MenuPokeball, + .anims = sSpriteAnimTable_MenuPokeball, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct OamData sOamData_MenuPokeballSmall = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd sSmallPokeballAnim_Closed[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd sSmallPokeballAnim_Open[] = +{ + ANIMCMD_FRAME(4, 0), + ANIMCMD_END +}; + +const union AnimCmd sSmallPokeballAnim_Blank1[] = +{ + ANIMCMD_FRAME(8, 0), + ANIMCMD_END +}; + +const union AnimCmd sSmallPokeballAnim_Blank2[] = +{ + ANIMCMD_FRAME(12, 0), + ANIMCMD_END +}; + +const union AnimCmd sSmallPokeballAnim_Blank3[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd sSmallPokeballAnim_Blank4[] = +{ + ANIMCMD_FRAME(20, 0), + ANIMCMD_END +}; + +// The blanks below are never used. See SpriteCB_BounceConfirmCancelButton, where they were intended to be used +const union AnimCmd *const sSpriteAnimTable_MenuPokeballSmall[] = +{ + sSmallPokeballAnim_Closed, + sSmallPokeballAnim_Open, + sSmallPokeballAnim_Blank1, + sSmallPokeballAnim_Blank2, + sSmallPokeballAnim_Blank3, + sSmallPokeballAnim_Blank4, +}; + +const struct CompressedSpriteSheet sSpriteSheet_MenuPokeballSmall = +{ + gPartyMenuPokeballSmall_Gfx, 0x0300, 0x04b1 +}; + +// Used for the pokeball sprite next to Cancel and Confirm when both are present, otherwise sSpriteTemplate_MenuPokeball is used +const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall = +{ + .tileTag = 1201, + .paletteTag = 1200, + .oam = &sOamData_MenuPokeballSmall, + .anims = sSpriteAnimTable_MenuPokeballSmall, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct OamData sOamData_StatusCondition = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd sSpriteAnim_StatusPoison[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusParalyzed[] = +{ + ANIMCMD_FRAME(4, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusSleep[] = +{ + ANIMCMD_FRAME(8, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusFrozen[] = +{ + ANIMCMD_FRAME(12, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusBurn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusPokerus[] = +{ + ANIMCMD_FRAME(20, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_StatusFaint[] = +{ + ANIMCMD_FRAME(24, 0), + ANIMCMD_END +}; + +const union AnimCmd sSpriteAnim_Blank[] = +{ + ANIMCMD_FRAME(28, 0), + ANIMCMD_END +}; + +const union AnimCmd *const sSpriteTemplate_StatusCondition[] = +{ + sSpriteAnim_StatusPoison, + sSpriteAnim_StatusParalyzed, + sSpriteAnim_StatusSleep, + sSpriteAnim_StatusFrozen, + sSpriteAnim_StatusBurn, + sSpriteAnim_StatusPokerus, + sSpriteAnim_StatusFaint, + sSpriteAnim_Blank, +}; + +const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = +{ + gStatusGfx_Icons, 0x400, 1202 +}; + +const struct CompressedSpritePalette sSpritePalette_StatusIcons = +{ + gStatusPal_Icons, 1202 +}; + +const struct SpriteTemplate sSpriteTemplate_StatusIcons = +{ + .tileTag = 1202, + .paletteTag = 1202, + .oam = &sOamData_StatusCondition, + .anims = sSpriteTemplate_StatusCondition, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = +{ + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, +}; + +const u16 sTMHMMoves_Duplicate[] = +{ + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLAR_BEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; + +enum +{ + MENU_SUMMARY, + MENU_SWITCH, + MENU_CANCEL1, + MENU_ITEM, + MENU_GIVE, + MENU_TAKE_ITEM, + MENU_MAIL, + MENU_TAKE_MAIL, + MENU_READ, + MENU_CANCEL2, + MENU_SHIFT, + MENU_SEND_OUT, + MENU_ENTER, + MENU_NO_ENTRY, + MENU_STORE, + MENU_REGISTER, + MENU_TRADE1, + MENU_TRADE2, + MENU_FIELD_MOVES, +}; + +enum +{ + FIELD_MOVE_FLASH, + FIELD_MOVE_CUT, + FIELD_MOVE_FLY, + FIELD_MOVE_STRENGTH, + FIELD_MOVE_SURF, + FIELD_MOVE_ROCK_SMASH, + FIELD_MOVE_WATERFALL, + FIELD_MOVE_TELEPORT, + FIELD_MOVE_DIG, + FIELD_MOVE_MILK_DRINK, + FIELD_MOVE_SOFT_BOILED, + FIELD_MOVE_SWEET_SCENT, + FIELD_MOVE_END, +}; + +struct +{ + const u8 *text; + TaskFunc func; +} const sCursorOptions[] = +{ + [MENU_SUMMARY] = {gText_Summary5, CursorCB_Summary}, + [MENU_SWITCH] = {gText_Switch2, CursorCB_Switch}, + [MENU_CANCEL1] = {gFameCheckerText_Cancel, CursorCB_Cancel1}, + [MENU_ITEM] = {gText_Item, CursorCB_Item}, + [MENU_GIVE] = {gOtherText_Give, CursorCB_Give}, + [MENU_TAKE_ITEM] = {gText_Take, CursorCB_TakeItem}, + [MENU_MAIL] = {gText_Mail, CursorCB_Mail}, + [MENU_TAKE_MAIL] = {gText_Take2, CursorCB_TakeMail}, + [MENU_READ] = {gText_Read2, CursorCB_Read}, + [MENU_CANCEL2] = {gFameCheckerText_Cancel, CursorCB_Cancel2}, + [MENU_SHIFT] = {gText_Shift, CursorCB_SendMon}, + [MENU_SEND_OUT] = {gText_SendOut, CursorCB_SendMon}, + [MENU_ENTER] = {gText_Enter, CursorCB_Enter}, + [MENU_NO_ENTRY] = {gText_NoEntry, CursorCB_NoEntry}, + [MENU_STORE] = {gText_Store, CursorCB_Store}, + [MENU_REGISTER] = {gText_Register, CursorCB_Register}, + [MENU_TRADE1] = {gText_Trade4, CursorCB_Trade1}, + [MENU_TRADE2] = {gText_Trade4, CursorCB_Trade2}, + [MENU_FIELD_MOVES + FIELD_MOVE_FLASH] = {gMoveNames[MOVE_FLASH], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_CUT] = {gMoveNames[MOVE_CUT], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_FLY] = {gMoveNames[MOVE_FLY], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_STRENGTH] = {gMoveNames[MOVE_STRENGTH], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_SURF] = {gMoveNames[MOVE_SURF], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_ROCK_SMASH] = {gMoveNames[MOVE_ROCK_SMASH], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_WATERFALL] = {gMoveNames[MOVE_WATERFALL], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_TELEPORT] = {gMoveNames[MOVE_TELEPORT], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_DIG] = {gMoveNames[MOVE_DIG], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_MILK_DRINK] = {gMoveNames[MOVE_MILK_DRINK], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_SOFT_BOILED] = {gMoveNames[MOVE_SOFT_BOILED], CursorCB_FieldMove}, + [MENU_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCB_FieldMove}, +}; + +const u8 sPartyMenuAction_SummarySwitchCancel[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1}; +const u8 sPartyMenuAction_ShiftSummaryCancel[] = {MENU_SHIFT, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_SendOutSummaryCancel[] = {MENU_SEND_OUT, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_SummaryCancel[] = {MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_EnterSummaryCancel[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_StoreSummaryCancel[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2}; +const u8 sPartyMenuAction_ReadTakeMailCancel[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2}; +const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1}; +const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1}; + +// IDs for the action lists that appear when a party mon is selected +enum +{ + ACTIONS_NONE, + ACTIONS_SWITCH, + ACTIONS_SHIFT, + ACTIONS_SEND_OUT, + ACTIONS_ENTER, + ACTIONS_NO_ENTRY, + ACTIONS_STORE, + ACTIONS_SUMMARY_ONLY, + ACTIONS_ITEM, + ACTIONS_MAIL, + ACTIONS_REGISTER, + ACTIONS_TRADE, + ACTIONS_SPIN_TRADE, +}; + +const u8 *const sPartyMenuActions[] = +{ + [ACTIONS_NONE] = NULL, + [ACTIONS_SWITCH] = sPartyMenuAction_SummarySwitchCancel, + [ACTIONS_SHIFT] = sPartyMenuAction_ShiftSummaryCancel, + [ACTIONS_SEND_OUT] = sPartyMenuAction_SendOutSummaryCancel, + [ACTIONS_ENTER] = sPartyMenuAction_EnterSummaryCancel, + [ACTIONS_NO_ENTRY] = sPartyMenuAction_NoEntrySummaryCancel, + [ACTIONS_STORE] = sPartyMenuAction_StoreSummaryCancel, + [ACTIONS_SUMMARY_ONLY] = sPartyMenuAction_SummaryCancel, + [ACTIONS_ITEM] = sPartyMenuAction_GiveTakeItemCancel, + [ACTIONS_MAIL] = sPartyMenuAction_ReadTakeMailCancel, + [ACTIONS_REGISTER] = sPartyMenuAction_RegisterSummaryCancel, + [ACTIONS_TRADE] = sPartyMenuAction_TradeSummaryCancel1, + [ACTIONS_SPIN_TRADE] = sPartyMenuAction_TradeSummaryCancel2, +}; + +const u8 sPartyMenuActionCounts[] = +{ + [ACTIONS_NONE] = 0, + [ACTIONS_SWITCH] = NELEMS(sPartyMenuAction_SummarySwitchCancel), + [ACTIONS_SHIFT] = NELEMS(sPartyMenuAction_ShiftSummaryCancel), + [ACTIONS_SEND_OUT] = NELEMS(sPartyMenuAction_SendOutSummaryCancel), + [ACTIONS_ENTER] = NELEMS(sPartyMenuAction_EnterSummaryCancel), + [ACTIONS_NO_ENTRY] = NELEMS(sPartyMenuAction_NoEntrySummaryCancel), + [ACTIONS_STORE] = NELEMS(sPartyMenuAction_StoreSummaryCancel), + [ACTIONS_SUMMARY_ONLY] = NELEMS(sPartyMenuAction_SummaryCancel), + [ACTIONS_ITEM] = NELEMS(sPartyMenuAction_GiveTakeItemCancel), + [ACTIONS_MAIL] = NELEMS(sPartyMenuAction_ReadTakeMailCancel), + [ACTIONS_REGISTER] = NELEMS(sPartyMenuAction_RegisterSummaryCancel), + [ACTIONS_TRADE] = NELEMS(sPartyMenuAction_TradeSummaryCancel1), + [ACTIONS_SPIN_TRADE] = NELEMS(sPartyMenuAction_TradeSummaryCancel2), +}; + +const u16 sFieldMoves[] = +{ + MOVE_FLASH, MOVE_CUT, MOVE_FLY, MOVE_STRENGTH, MOVE_SURF, MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_TELEPORT, + MOVE_DIG, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_END // this may be misuse of enum. same in emerald +}; + +struct +{ + bool8 (*fieldMoveFunc)(void); + u8 msgId; +} const sFieldMoveCursorCallbacks[] = +{ + [FIELD_MOVE_FLASH] = {SetUpFieldMove_Flash, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, PARTY_MSG_NOTHING_TO_CUT}, + [FIELD_MOVE_FLY] = {SetUpFieldMove_Fly, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_STRENGTH] = {SetUpFieldMove_Strength, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_SURF] = {SetUpFieldMove_Surf, PARTY_MSG_CANT_SURF_HERE}, + [FIELD_MOVE_ROCK_SMASH] = {SetUpFieldMove_RockSmash, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_WATERFALL] = {SetUpFieldMove_Waterfall, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_TELEPORT] = {SetUpFieldMove_Teleport, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_DIG] = {SetUpFieldMove_Dig, PARTY_MSG_CANT_USE_HERE}, + [FIELD_MOVE_MILK_DRINK] = {SetUpFieldMove_SoftBoiled, PARTY_MSG_NOT_ENOUGH_HP}, + [FIELD_MOVE_SOFT_BOILED] = {SetUpFieldMove_SoftBoiled, PARTY_MSG_NOT_ENOUGH_HP}, + [FIELD_MOVE_SWEET_SCENT] = {SetUpFieldMove_SweetScent, PARTY_MSG_CANT_USE_HERE}, +}; + +const u8 *const sUnionRoomTradeMessages[] = +{ + [UR_TRADE_MSG_NOT_MON_PARTNER_WANTS - 1] = gText_NotPkmnOtherTrainerWants, + [UR_TRADE_MSG_NOT_EGG - 1] = gText_ThatIsntAnEgg, + [UR_TRADE_MSG_MON_CANT_BE_TRADED_1 - 1] = gText_PkmnCantBeTradedNow, + [UR_TRADE_MSG_MON_CANT_BE_TRADED_2 - 1] = gText_PkmnCantBeTradedNow, + [UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED - 1] = gText_OtherTrainersPkmnCantBeTraded, + [UR_TRADE_MSG_EGG_CANT_BE_TRADED -1] = gText_EggCantBeTradedNow, + [UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON - 1] = gText_OtherTrainerCantAcceptPkmn, + [UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 - 1] = gText_CantTradeWithTrainer, + [UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 - 1] = gText_CantTradeWithTrainer, +}; + +const u16 sTMHMMoves[] = +{ + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLAR_BEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h new file mode 100644 index 000000000..3f2fbf6a0 --- /dev/null +++ b/src/data/pokemon/tutor_learnsets.h @@ -0,0 +1,2813 @@ +const u16 sTutorMoves[TUTOR_MOVE_COUNT] = +{ + [TUTOR_MOVE_MEGA_PUNCH] = MOVE_MEGA_PUNCH, + [TUTOR_MOVE_SWORDS_DANCE] = MOVE_SWORDS_DANCE, + [TUTOR_MOVE_MEGA_KICK] = MOVE_MEGA_KICK, + [TUTOR_MOVE_BODY_SLAM] = MOVE_BODY_SLAM, + [TUTOR_MOVE_DOUBLE_EDGE] = MOVE_DOUBLE_EDGE, + [TUTOR_MOVE_COUNTER] = MOVE_COUNTER, + [TUTOR_MOVE_SEISMIC_TOSS] = MOVE_SEISMIC_TOSS, + [TUTOR_MOVE_MIMIC] = MOVE_MIMIC, + [TUTOR_MOVE_METRONOME] = MOVE_METRONOME, + [TUTOR_MOVE_SOFT_BOILED] = MOVE_SOFT_BOILED, + [TUTOR_MOVE_DREAM_EATER] = MOVE_DREAM_EATER, + [TUTOR_MOVE_THUNDER_WAVE] = MOVE_THUNDER_WAVE, + [TUTOR_MOVE_EXPLOSION] = MOVE_EXPLOSION, + [TUTOR_MOVE_ROCK_SLIDE] = MOVE_ROCK_SLIDE, + [TUTOR_MOVE_SUBSTITUTE] = MOVE_SUBSTITUTE, +}; + +#define TUTOR(move) (1u << (TUTOR_##move)) + +const u16 sTutorLearnsets[] = +{ + [SPECIES_NONE] = 0, + + [SPECIES_BULBASAUR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_IVYSAUR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VENUSAUR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHARMANDER] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHARMELEON] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHARIZARD] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SQUIRTLE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WARTORTLE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BLASTOISE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CATERPIE] = 0, + + [SPECIES_METAPOD] = 0, + + [SPECIES_BUTTERFREE] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WEEDLE] = 0, + + [SPECIES_KAKUNA] = 0, + + [SPECIES_BEEDRILL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PIDGEY] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PIDGEOTTO] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PIDGEOT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RATTATA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RATICATE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SPEAROW] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FEAROW] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_EKANS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARBOK] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PIKACHU] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RAICHU] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SANDSHREW] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SANDSLASH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDORAN_F] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDORINA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDOQUEEN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDORAN_M] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDORINO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NIDOKING] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLEFAIRY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLEFABLE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VULPIX] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NINETALES] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_JIGGLYPUFF] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WIGGLYTUFF] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ZUBAT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GOLBAT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ODDISH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GLOOM] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VILEPLUME] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PARAS] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PARASECT] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VENONAT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VENOMOTH] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DIGLETT] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DUGTRIO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEOWTH] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PERSIAN] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PSYDUCK] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GOLDUCK] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MANKEY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PRIMEAPE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GROWLITHE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARCANINE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_POLIWAG] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_POLIWHIRL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_POLIWRATH] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ABRA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KADABRA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ALAKAZAM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MACHOP] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MACHOKE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MACHAMP] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BELLSPROUT] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WEEPINBELL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VICTREEBEL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TENTACOOL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TENTACRUEL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GEODUDE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GRAVELER] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GOLEM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PONYTA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RAPIDASH] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLOWPOKE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLOWBRO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGNEMITE] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGNETON] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FARFETCHD] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DODUO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DODRIO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEEL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DEWGONG] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GRIMER] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MUK] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHELLDER] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLOYSTER] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GASTLY] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HAUNTER] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GENGAR] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ONIX] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DROWZEE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HYPNO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KRABBY] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KINGLER] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VOLTORB] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ELECTRODE] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_EXEGGCUTE] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_EXEGGUTOR] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CUBONE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAROWAK] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HITMONLEE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HITMONCHAN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LICKITUNG] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KOFFING] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WEEZING] = TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RHYHORN] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RHYDON] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHANSEY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TANGELA] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KANGASKHAN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HORSEA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEADRA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GOLDEEN] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEAKING] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_STARYU] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_STARMIE] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MR_MIME] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SCYTHER] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_JYNX] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ELECTABUZZ] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGMAR] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PINSIR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TAUROS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGIKARP] = 0, + + [SPECIES_GYARADOS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LAPRAS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DITTO] = 0, + + [SPECIES_EEVEE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VAPOREON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_JOLTEON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FLAREON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PORYGON] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_OMANYTE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_OMASTAR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KABUTO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KABUTOPS] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AERODACTYL] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SNORLAX] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARTICUNO] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ZAPDOS] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MOLTRES] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DRATINI] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DRAGONAIR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DRAGONITE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEWTWO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEW] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHIKORITA] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BAYLEEF] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEGANIUM] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CYNDAQUIL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_QUILAVA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TYPHLOSION] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TOTODILE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CROCONAW] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FERALIGATR] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SENTRET] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FURRET] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HOOTHOOT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NOCTOWL] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LEDYBA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LEDIAN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SPINARAK] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARIADOS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CROBAT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHINCHOU] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LANTURN] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PICHU] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLEFFA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_IGGLYBUFF] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TOGEPI] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TOGETIC] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NATU] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_XATU] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAREEP] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FLAAFFY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AMPHAROS] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BELLOSSOM] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MARILL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AZUMARILL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SUDOWOODO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_POLITOED] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HOPPIP] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SKIPLOOM] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_JUMPLUFF] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AIPOM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SUNKERN] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SUNFLORA] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_YANMA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WOOPER] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_QUAGSIRE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ESPEON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_UMBREON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MURKROW] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLOWKING] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MISDREAVUS] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_UNOWN] = 0, + + [SPECIES_WOBBUFFET] = 0, + + [SPECIES_GIRAFARIG] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PINECO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FORRETRESS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DUNSPARCE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GLIGAR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_STEELIX] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SNUBBULL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GRANBULL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_QWILFISH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SCIZOR] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHUCKLE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HERACROSS] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SNEASEL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TEDDIURSA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_URSARING] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLUGMA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGCARGO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SWINUB] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PILOSWINE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CORSOLA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_REMORAID] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_OCTILLERY] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DELIBIRD] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MANTINE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SKARMORY] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HOUNDOUR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HOUNDOOM] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KINGDRA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PHANPY] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DONPHAN] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PORYGON2] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_STANTLER] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SMEARGLE] = 0, + + [SPECIES_TYROGUE] = TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HITMONTOP] = TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SMOOCHUM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ELEKID] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAGBY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MILTANK] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BLISSEY] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RAIKOU] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ENTEI] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SUICUNE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LARVITAR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PUPITAR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TYRANITAR] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LUGIA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HO_OH] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CELEBI] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TREECKO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GROVYLE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SCEPTILE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TORCHIC] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_COMBUSKEN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BLAZIKEN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MUDKIP] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MARSHTOMP] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SWAMPERT] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_POOCHYENA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MIGHTYENA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ZIGZAGOON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LINOONE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WURMPLE] = 0, + + [SPECIES_SILCOON] = 0, + + [SPECIES_BEAUTIFLY] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CASCOON] = 0, + + [SPECIES_DUSTOX] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LOTAD] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LOMBRE] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LUDICOLO] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEEDOT] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NUZLEAF] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHIFTRY] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NINCADA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NINJASK] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHEDINJA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TAILLOW] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SWELLOW] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHROOMISH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BRELOOM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SPINDA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WINGULL] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PELIPPER] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SURSKIT] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MASQUERAIN] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WAILMER] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WAILORD] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SKITTY] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DELCATTY] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KECLEON] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BALTOY] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLAYDOL] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NOSEPASS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TORKOAL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SABLEYE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BARBOACH] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WHISCASH] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LUVDISC] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CORPHISH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CRAWDAUNT] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FEEBAS] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MILOTIC] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CARVANHA] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHARPEDO] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TRAPINCH] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VIBRAVA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_FLYGON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAKUHITA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HARIYAMA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ELECTRIKE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MANECTRIC] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_NUMEL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CAMERUPT] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SPHEAL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEALEO] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WALREIN] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CACNEA] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CACTURNE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SNORUNT] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GLALIE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LUNATONE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SOLROCK] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AZURILL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SPOINK] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GRUMPIG] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_PLUSLE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MINUN] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MAWILE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEDITITE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_MEDICHAM] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SWABLU] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ALTARIA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WYNAUT] = 0, + + [SPECIES_DUSKULL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DUSCLOPS] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ROSELIA] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLAKOTH] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VIGOROTH] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SLAKING] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GULPIN] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SWALOT] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_TROPIUS] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_WHISMUR] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LOUDRED] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_EXPLOUD] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CLAMPERL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_HUNTAIL] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GOREBYSS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ABSOL] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHUPPET] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BANETTE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SEVIPER] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ZANGOOSE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RELICANTH] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LAIRON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_AGGRON] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CASTFORM] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_VOLBEAT] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ILLUMISE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LILEEP] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CRADILY] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ANORITH] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_ARMALDO] = TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RALTS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KIRLIA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GARDEVOIR] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BAGON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SHELGON] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_SALAMENCE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_BELDUM] = 0, + + [SPECIES_METANG] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_METAGROSS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_REGIROCK] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_REGICE] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_REGISTEEL] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_KYOGRE] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_GROUDON] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_RAYQUAZA] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LATIAS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_LATIOS] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_JIRACHI] = TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_DEOXYS] = TUTOR(MOVE_MEGA_PUNCH) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), + + [SPECIES_CHIMECHO] = TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), +}; diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index 6840df686..d68d66d08 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -15,7 +15,7 @@ static void sub_80E5934(u8 taskId); extern const u8 gUnknown_84169F8[]; extern const u8 gText_PkmnHPRestoredByVar2[]; -bool8 hm_prepare_dive_probably(void) +bool8 SetUpFieldMove_SoftBoiled(void) { u16 maxHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_MAX_HP); u16 curHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_HP); @@ -28,8 +28,8 @@ bool8 hm_prepare_dive_probably(void) void ChooseMonForSoftboiled(u8 taskId) { - gPartyMenu.unkB = 10; - gPartyMenu.unkA = gPartyMenu.unk9; + gPartyMenu.action = 10; + gPartyMenu.slotId2 = gPartyMenu.slotId; AnimatePartySlot(GetCursorSelectionMonId(), 1); DisplayPartyMenuStdMessage(5); gTasks[taskId].func = Task_HandleChooseMonInput; @@ -37,14 +37,14 @@ void ChooseMonForSoftboiled(u8 taskId) void sub_80E5724(u8 taskId) { - u8 r8 = gPartyMenu.unk9; - u8 r5 = gPartyMenu.unkA; + u8 r8 = gPartyMenu.slotId; + u8 r5 = gPartyMenu.slotId2; u16 curHp; s16 delta; if (r5 > 6) { - gPartyMenu.unkB = 0; + gPartyMenu.action = 0; DisplayPartyMenuStdMessage(0); gTasks[taskId].func = Task_HandleChooseMonInput; } @@ -66,12 +66,12 @@ void sub_80E5724(u8 taskId) static void sub_80E57E8(u8 taskId) { PlaySE(SE_KAIFUKU); - PartyMenuModifyHP(taskId, gPartyMenu.unkA, 1, GetMonData(&gPlayerParty[gPartyMenu.unk9], MON_DATA_MAX_HP) / 5, sub_80E583C); + PartyMenuModifyHP(taskId, gPartyMenu.slotId2, 1, GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAX_HP) / 5, sub_80E583C); } static void sub_80E583C(u8 taskId) { - GetMonNickname(&gPlayerParty[gPartyMenu.unkA], gStringVar1); + GetMonNickname(&gPlayerParty[gPartyMenu.slotId2], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); DisplayPartyMenuMessage(gStringVar4, 0); ScheduleBgCopyTilemapToVram(2); @@ -82,10 +82,10 @@ static void sub_80E58A0(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { - gPartyMenu.unkB = 0; - AnimatePartySlot(gPartyMenu.unk9, 0); - gPartyMenu.unk9 = gPartyMenu.unkA; - AnimatePartySlot(gPartyMenu.unkA, 1); + gPartyMenu.action = 0; + AnimatePartySlot(gPartyMenu.slotId, 0); + gPartyMenu.slotId = gPartyMenu.slotId2; + AnimatePartySlot(gPartyMenu.slotId2, 1); ClearStdWindowAndFrameToTransparent(6, 0); ClearWindowTilemap(6); DisplayPartyMenuStdMessage(0); diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index c413f29c1..66529cd55 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -20,7 +20,7 @@ static void FailSweetScentEncounter(u8 taskId); static void Unused_StartSweetscentFldeff(void) { - gPartyMenu.unk9 = 0; + gPartyMenu.slotId = 0; FieldCallback_SweetScent(); } diff --git a/src/item_pc.c b/src/item_pc.c index 450e0d142..f4320cd41 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -1030,7 +1030,7 @@ static void Task_ItemPcGive(u8 taskId) static void ItemPc_CB2_SwitchToPartyMenu(void) { InitPartyMenu(0, 0, 6, 0, 6, Task_HandleChooseMonInput, ItemPc_CB2_ReturnFromPartyMenu); - gPartyMenu.unkC = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition()); + gPartyMenu.bagItem = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition()); } static void ItemPc_CB2_ReturnFromPartyMenu(void) diff --git a/src/party_menu.c b/src/party_menu.c new file mode 100644 index 000000000..674b329c2 --- /dev/null +++ b/src/party_menu.c @@ -0,0 +1,172 @@ +#include "global.h" +#include "malloc.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_gfx_sfx_util.h" +#include "battle_interface.h" +#include "bg.h" +#include "data.h" +#include "decompress.h" +#include "easy_chat.h" +#include "event_data.h" +#include "evolution_scene.h" +#include "field_control_avatar.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "field_screen_effect.h" +#include "field_specials.h" +#include "field_weather.h" +#include "fieldmap.h" +#include "fldeff.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "item.h" +#include "item_menu.h" +#include "item_use.h" +#include "link.h" +#include "link_rfu.h" +#include "mail.h" +#include "main.h" +#include "menu.h" +#include "menu_helpers.h" +#include "new_menu_helpers.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "player_pc.h" +#include "pokemon.h" +#include "pokemon_icon.h" +#include "pokemon_jump.h" +#include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" +#include "region_map.h" +#include "reshow_battle_screen.h" +#include "scanline_effect.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "start_menu.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "text_window.h" +#include "trade.h" +#include "union_room.h" +#include "window.h" +#include "constants/battle.h" +#include "constants/easy_chat.h" +#include "constants/field_effects.h" +#include "constants/flags.h" +#include "constants/item_effects.h" +#include "constants/items.h" +#include "constants/maps.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/vars.h" + +#define PARTY_PAL_SELECTED (1 << 0) +#define PARTY_PAL_FAINTED (1 << 1) +#define PARTY_PAL_TO_SWITCH (1 << 2) +#define PARTY_PAL_MULTI_ALT (1 << 3) +#define PARTY_PAL_SWITCHING (1 << 4) +#define PARTY_PAL_TO_SOFTBOIL (1 << 5) +#define PARTY_PAL_NO_MON (1 << 6) +#define PARTY_PAL_UNUSED (1 << 7) + +#define MENU_DIR_DOWN 1 +#define MENU_DIR_UP -1 +#define MENU_DIR_RIGHT 2 +#define MENU_DIR_LEFT -2 + +enum +{ + CAN_LEARN_MOVE, + CANNOT_LEARN_MOVE, + ALREADY_KNOWS_MOVE, + CANNOT_LEARN_MOVE_IS_EGG +}; + +struct PartyMenuBoxInfoRects +{ + void (*blitFunc)(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); + u8 dimensions[24]; + u8 descTextLeft; + u8 descTextTop; + u8 descTextWidth; + u8 descTextHeight; +}; + +struct PartyMenuInternal +{ + TaskFunc task; + MainCallback exitCallback; + u32 chooseHalf:1; + u32 lastSelectedSlot:3; // Used to return to same slot when going left/right bewtween columns + u32 spriteIdConfirmPokeball:7; + u32 spriteIdCancelPokeball:7; + u32 messageId:14; + u8 windowId[3]; + u8 actions[8]; + u8 numActions; + u16 palBuffer[BG_PLTT_SIZE / sizeof(u16)]; + s16 data[16]; +}; + +struct PartyMenuBox +{ + const struct PartyMenuBoxInfoRects *infoRects; + const u8 *spriteCoords; + u8 windowId; + u8 monSpriteId; + u8 itemSpriteId; + u8 pokeballSpriteId; + u8 statusSpriteId; +}; + +void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); +void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); +void CursorCB_Summary(u8 taskId); +void CursorCB_Switch(u8 taskId); +void CursorCB_Cancel1(u8 taskId); +void CursorCB_Item(u8 taskId); +void CursorCB_Give(u8 taskId); +void CursorCB_TakeItem(u8 taskId); +void CursorCB_Mail(u8 taskId); +void CursorCB_Read(u8 taskId); +void CursorCB_TakeMail(u8 taskId); +void CursorCB_Cancel2(u8 taskId); +void CursorCB_SendMon(u8 taskId); +void CursorCB_Enter(u8 taskId); +void CursorCB_NoEntry(u8 taskId); +void CursorCB_Store(u8 taskId); +void CursorCB_Register(u8 taskId); +void CursorCB_Trade1(u8 taskId); +void CursorCB_Trade2(u8 taskId); +void CursorCB_FieldMove(u8 taskId); +bool8 SetUpFieldMove_Fly(void); +bool8 SetUpFieldMove_Waterfall(void); +bool8 SetUpFieldMove_Surf(void); + +EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; +EWRAM_DATA struct PartyMenu gPartyMenu = {0}; +EWRAM_DATA struct PartyMenuBox *sPartyMenuBoxes = NULL; +EWRAM_DATA u8 *sPartyBgGfxTilemap = NULL; +EWRAM_DATA u8 *sPartyBgTilemapBuffer = NULL; +EWRAM_DATA bool8 gPartyMenuUseExitCallback = FALSE; +EWRAM_DATA u8 gSelectedMonPartyId = 0; +EWRAM_DATA MainCallback gPostMenuFieldCallback = NULL; +EWRAM_DATA u16 *sSlot1TilemapBuffer = NULL; // for switching party slots +EWRAM_DATA u16 *sSlot2TilemapBuffer = NULL; +EWRAM_DATA struct Pokemon *gUnknown_203B0D0 = NULL; +EWRAM_DATA u8 gSelectedOrderFromParty[4] = {0}; +EWRAM_DATA u16 sPartyMenuItemId = ITEM_NONE; +ALIGNED(4) EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on + +void (*gItemUseCB)(u8, TaskFunc); + +#include "data/pokemon/tutor_learnsets.h" +#include "data/party_menu.h" diff --git a/src/trade.c b/src/trade.c index 792f1524b..85bd7b2ca 100644 --- a/src/trade.c +++ b/src/trade.c @@ -459,9 +459,9 @@ static const u8 *const sTradeErrorOrStatusMessagePtrs[] = { gUnknown_8417094, // That's your only POKéMON for battle gUnknown_841E199, // Waiting for your friend to finish gUnknown_841E1C5, // Your friend wants to trade POKéMON - gUnknown_84170BC, // That POKéMON can't be traded now - gUnknown_84170E0, // An EGG can't be traded now - gUnknown_84170FC // The other TRAINER's POKéMON can't be traded now + gText_PkmnCantBeTradedNow, // That POKéMON can't be traded now + gText_EggCantBeTradedNow, // An EGG can't be traded now + gText_OtherTrainersPkmnCantBeTraded // The other TRAINER's POKéMON can't be traded now }; static const u8 gUnknown_8261F18[] = { 0, 1, 2 }; diff --git a/sym_common.txt b/sym_common.txt index 30b886f7a..3fcbce1e0 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -180,9 +180,7 @@ gUnknown_3005E90: @ 3005E90 gUnknown_3005E94: @ 3005E94 .space 0x4 -gItemUseCB: @ 3005E98 - .space 0x4 - + .include "party_menu.o" .include "help_system_812B1E0.o" .align 4 .include "fame_checker.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 891ba29a3..e4de1e801 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -596,54 +596,10 @@ gUnknown_203B094: @ 203B094 gUnknown_203B098: @ 203B098 .space 0x4 -sPartyMenuInternal: @ 203B09C - .space 0x4 - -gPartyMenu: @ 203B0A0 - .space 0x9 - -gUnknown_203B0A9: @ 203B0A9 - .space 0x5 - -gUnknown_203B0AE: @ 203B0AE - .space 0x6 - -sPartyMenuBoxes: @ 203B0B4 - .space 0x4 - -sPartyBgGfxTilemap: @ 203B0B8 - .space 0x4 - -sPartyBgTilemapBuffer: @ 203B0BC - .space 0x4 - -gPartyMenuUseExitCallback: @ 203B0C0 - .space 0x1 - -gUnknown_203B0C1: @ 203B0C1 - .space 0x3 - -gPostMenuFieldCallback: @ 203B0C4 - .space 0x4 - -sSlot1TilemapBuffer: @ 203B0C8 - .space 0x4 - -sSlot2TilemapBuffer: @ 203B0CC - .space 0x4 - -gUnknown_203B0D0: @ 203B0D0 - .space 0x4 - -gSelectedOrderFromParty: @ 203B0D4 - .space 0x4 - -sPartyMenuItemId: @ 203B0D8 - .space 0x4 - -gBattlePartyCurrentOrder: @ 203B0DC - .space 0x4 + .align 2 + .include "src/party_menu.o" + .align 2 gUnknown_203B0E0: @ 203B0E0 .space 0x4 From 499c09a49f4e587c6f3135afe609a057f3dbd4d8 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 22 Nov 2019 06:46:04 +0800 Subject: [PATCH 3/9] party_menu first quarter --- asm/item_menu.s | 2 +- asm/party_menu.s | 4839 +------------------------------- asm/pokemon_jump_2.s | 8 +- asm/pokemon_special_anim.s | 2 +- asm/shop.s | 4 +- data/strings.s | 4 +- include/constants/global.h | 2 + include/constants/party_menu.h | 8 +- include/fldeff.h | 2 +- include/graphics.h | 3 + include/item_use.h | 1 + include/menu_helpers.h | 7 +- include/new_menu_helpers.h | 2 +- include/party_menu.h | 8 +- include/pokemon_jump.h | 1 + include/strings.h | 9 + src/berry_pouch.c | 2 +- src/data/party_menu.h | 18 - src/fldeff_softboiled.c | 2 +- src/item_pc.c | 2 +- src/item_use.c | 135 +- src/menu.c | 8 +- src/menu_helpers.c | 4 +- src/new_menu_helpers.c | 2 +- src/party_menu.c | 1787 ++++++++++++ src/tm_case.c | 2 +- 26 files changed, 1910 insertions(+), 4954 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index 9774cbe90..6967a7876 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -2514,7 +2514,7 @@ sub_8109140: @ 8109140 movs r1, 0 movs r2, 0xE movs r3, 0x1E - bl SetBgRectPal + bl SetBgTilemapPalette movs r0, 0x1 bl ScheduleBgCopyTilemapToVram add sp, 0x8 diff --git a/asm/party_menu.s b/asm/party_menu.s index 955fba24e..c394b4917 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5,4843 +5,6 @@ .text - thumb_func_start InitPartyMenu -InitPartyMenu: @ 811EA44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - lsls r4, 24 - lsrs r7, r4, 24 - bl ResetPartyMenu - ldr r6, _0811EA8C @ =sPartyMenuInternal - movs r0, 0x8E - lsls r0, 2 - bl Alloc - adds r5, r0, 0 - str r5, [r6] - cmp r5, 0 - bne _0811EA90 - ldr r0, [sp, 0x2C] - bl SetMainCallback2 - b _0811EB80 - .align 2, 0 -_0811EA8C: .4byte sPartyMenuInternal -_0811EA90: - ldr r3, _0811EAE0 @ =gPartyMenu - movs r1, 0xF - mov r0, r9 - ands r1, r0 - ldrb r2, [r3, 0x8] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x8] - ldr r1, [sp, 0x2C] - str r1, [r3] - movs r4, 0 - mov r0, r8 - strb r0, [r3, 0xB] - lsls r2, r7, 2 - ldrh r1, [r5, 0xA] - movs r0, 0x3 - ands r0, r1 - orrs r0, r2 - strh r0, [r5, 0xA] - ldr r0, [sp, 0x28] - str r0, [r5] - str r4, [r5, 0x4] - ldrb r1, [r5, 0x8] - movs r0, 0xF - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x8] - adds r7, r3, 0 - mov r1, r9 - cmp r1, 0x4 - bne _0811EAE4 - ldr r0, [r6] - ldrb r1, [r0, 0x8] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x8] - b _0811EAF0 - .align 2, 0 -_0811EAE0: .4byte gPartyMenu -_0811EAE4: - ldr r2, [r6] - ldrb r1, [r2, 0x8] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x8] -_0811EAF0: - mov r5, r10 - cmp r5, 0xFF - beq _0811EB08 - movs r0, 0x3 - ands r0, r5 - lsls r0, 4 - ldrb r2, [r7, 0x8] - movs r1, 0x31 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x8] -_0811EB08: - movs r2, 0 - ldr r5, _0811EB90 @ =sPartyMenuInternal - movs r4, 0x86 - lsls r4, 2 - movs r3, 0 -_0811EB12: - ldr r0, [r5] - lsls r1, r2, 1 - adds r0, r4 - adds r0, r1 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _0811EB12 - movs r2, 0 - ldr r4, _0811EB90 @ =sPartyMenuInternal - movs r3, 0xFF -_0811EB2C: - ldr r0, [r4] - adds r0, 0xC - adds r0, r2 - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x2 - bls _0811EB2C - ldr r0, [sp] - cmp r0, 0 - beq _0811EB68 - adds r1, r7, 0 - movs r0, 0x9 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0811EB66 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0811EB94 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0811EB6A -_0811EB66: - movs r0, 0 -_0811EB68: - strb r0, [r7, 0x9] -_0811EB6A: - ldr r2, _0811EB98 @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl CalculatePlayerPartyCount - ldr r0, _0811EB9C @ =CB2_InitPartyMenu - bl SetMainCallback2 -_0811EB80: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811EB90: .4byte sPartyMenuInternal -_0811EB94: .4byte gPlayerParty -_0811EB98: .4byte gTextFlags -_0811EB9C: .4byte CB2_InitPartyMenu - thumb_func_end InitPartyMenu - - thumb_func_start CB2_UpdatePartyMenu -CB2_UpdatePartyMenu: @ 811EBA0 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl DoScheduledBgTilemapCopiesToVram - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end CB2_UpdatePartyMenu - - thumb_func_start VBlankCB_PartyMenu -VBlankCB_PartyMenu: @ 811EBBC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_PartyMenu - - thumb_func_start CB2_InitPartyMenu -CB2_InitPartyMenu: @ 811EBD0 - push {lr} -_0811EBD2: - bl sub_80BF748 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811EBF6 - bl ShowPartyMenu - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811EBF6 - bl MenuHelpers_LinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0811EBD2 -_0811EBF6: - pop {r0} - bx r0 - thumb_func_end CB2_InitPartyMenu - - thumb_func_start ShowPartyMenu -ShowPartyMenu: @ 811EBFC - push {r4,lr} - sub sp, 0x4 - ldr r0, _0811EC1C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x16 - bls _0811EC10 - b _0811EE14 -_0811EC10: - lsls r0, 2 - ldr r1, _0811EC20 @ =_0811EC24 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811EC1C: .4byte gMain -_0811EC20: .4byte _0811EC24 - .align 2, 0 -_0811EC24: - .4byte _0811EC80 - .4byte _0811EC8E - .4byte _0811EC94 - .4byte _0811ECA8 - .4byte _0811ECAE - .4byte _0811ECB4 - .4byte _0811ECC6 - .4byte _0811ECCC - .4byte _0811ECF4 - .4byte _0811ED02 - .4byte _0811ED14 - .4byte _0811ED38 - .4byte _0811ED3E - .4byte _0811ED44 - .4byte _0811ED4A - .4byte _0811ED50 - .4byte _0811ED70 - .4byte _0811ED90 - .4byte _0811ED96 - .4byte _0811EDAC - .4byte _0811EDB4 - .4byte _0811EDD0 - .4byte _0811EDDE -_0811EC80: - bl SetVBlankHBlankCallbacksToNull - bl ClearVramOamPltt - bl ClearScheduledBgCopiesToVram - b _0811EDFC -_0811EC8E: - bl ScanlineEffect_Stop - b _0811EDFC -_0811EC94: - bl ResetPaletteFade - ldr r2, _0811ECA4 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - b _0811EDFA - .align 2, 0 -_0811ECA4: .4byte gPaletteFade -_0811ECA8: - bl ResetSpriteData - b _0811EDFC -_0811ECAE: - bl FreeAllSpritePalettes - b _0811EDFC -_0811ECB4: - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - beq _0811ECC0 - b _0811EDFC -_0811ECC0: - bl ResetTasks - b _0811EDFC -_0811ECC6: - bl SetPartyMonsAllowedInMinigame - b _0811EDFC -_0811ECCC: - bl AllocPartyMenuBg - lsls r0, 24 - cmp r0, 0 - bne _0811ECDE - bl ExitPartyMenu - movs r0, 0x1 - b _0811EE2E -_0811ECDE: - ldr r0, _0811ECF0 @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _0811EDFC - .align 2, 0 -_0811ECF0: .4byte sPartyMenuInternal -_0811ECF4: - bl AllocPartyMenuBgGfx - lsls r0, 24 - cmp r0, 0 - bne _0811ED00 - b _0811EE2C -_0811ED00: - b _0811EDFC -_0811ED02: - ldr r0, _0811ED10 @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsls r0, 26 - lsrs r0, 30 - bl InitPartyMenuWindows - b _0811EDFC - .align 2, 0 -_0811ED10: .4byte gPartyMenu -_0811ED14: - ldr r0, _0811ED30 @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsls r0, 26 - lsrs r0, 30 - bl InitPartyMenuBoxes - ldr r0, _0811ED34 @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _0811EDFC - .align 2, 0 -_0811ED30: .4byte gPartyMenu -_0811ED34: .4byte sPartyMenuInternal -_0811ED38: - bl LoadHeldItemIcons - b _0811EDFC -_0811ED3E: - bl LoadPartyMenuPokeballGfx - b _0811EDFC -_0811ED44: - bl LoadPartyMenuAilmentGfx - b _0811EDFC -_0811ED4A: - bl LoadMonIconPalettes - b _0811EDFC -_0811ED50: - bl CreatePartyMonSpritesLoop - lsls r0, 24 - cmp r0, 0 - beq _0811EE2C - ldr r0, _0811ED6C @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _0811EDFC - .align 2, 0 -_0811ED6C: .4byte sPartyMenuInternal -_0811ED70: - bl RenderPartyMenuBoxes - lsls r0, 24 - cmp r0, 0 - beq _0811EE2C - ldr r0, _0811ED8C @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _0811EDFC - .align 2, 0 -_0811ED8C: .4byte sPartyMenuInternal -_0811ED90: - bl CreateCancelConfirmPokeballSprites - b _0811EDFC -_0811ED96: - ldr r0, _0811EDA8 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - lsrs r0, 31 - bl CreateCancelConfirmWindows - b _0811EDFC - .align 2, 0 -_0811EDA8: .4byte sPartyMenuInternal -_0811EDAC: - movs r0, 0x5 - bl HelpSystem_SetSomeVariable2 - b _0811EDFC -_0811EDB4: - ldr r4, _0811EDCC @ =sPartyMenuInternal - ldr r0, [r4] - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldr r0, [r4] - ldrh r0, [r0, 0xA] - lsrs r0, 2 - bl DisplayPartyMenuStdMessage - b _0811EDFC - .align 2, 0 -_0811EDCC: .4byte sPartyMenuInternal -_0811EDD0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _0811EDFC -_0811EDDE: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0811EE0C @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 -_0811EDFA: - strb r0, [r2, 0x8] -_0811EDFC: - ldr r1, _0811EE10 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0811EE2C - .align 2, 0 -_0811EE0C: .4byte gPaletteFade -_0811EE10: .4byte gMain -_0811EE14: - ldr r0, _0811EE24 @ =VBlankCB_PartyMenu - bl SetVBlankCallback - ldr r0, _0811EE28 @ =CB2_UpdatePartyMenu - bl SetMainCallback2 - movs r0, 0x1 - b _0811EE2E - .align 2, 0 -_0811EE24: .4byte VBlankCB_PartyMenu -_0811EE28: .4byte CB2_UpdatePartyMenu -_0811EE2C: - movs r0, 0 -_0811EE2E: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ShowPartyMenu - - thumb_func_start ExitPartyMenu -ExitPartyMenu: @ 811EE38 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0811EE68 @ =Task_ExitPartyMenu - movs r1, 0 - bl CreateTask - ldr r0, _0811EE6C @ =VBlankCB_PartyMenu - bl SetVBlankCallback - ldr r0, _0811EE70 @ =CB2_UpdatePartyMenu - bl SetMainCallback2 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0811EE68: .4byte Task_ExitPartyMenu -_0811EE6C: .4byte VBlankCB_PartyMenu -_0811EE70: .4byte CB2_UpdatePartyMenu - thumb_func_end ExitPartyMenu - - thumb_func_start Task_ExitPartyMenu -Task_ExitPartyMenu: @ 811EE74 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0811EEA0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811EE98 - ldr r0, _0811EEA4 @ =gPartyMenu - ldr r0, [r0] - bl SetMainCallback2 - bl FreePartyPointers - adds r0, r4, 0 - bl DestroyTask -_0811EE98: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811EEA0: .4byte gPaletteFade -_0811EEA4: .4byte gPartyMenu - thumb_func_end Task_ExitPartyMenu - - thumb_func_start ResetPartyMenu -ResetPartyMenu: @ 811EEA8 - ldr r0, _0811EEBC @ =sPartyMenuInternal - movs r1, 0 - str r1, [r0] - ldr r0, _0811EEC0 @ =sPartyBgTilemapBuffer - str r1, [r0] - ldr r0, _0811EEC4 @ =sPartyMenuBoxes - str r1, [r0] - ldr r0, _0811EEC8 @ =sPartyBgGfxTilemap - str r1, [r0] - bx lr - .align 2, 0 -_0811EEBC: .4byte sPartyMenuInternal -_0811EEC0: .4byte sPartyBgTilemapBuffer -_0811EEC4: .4byte sPartyMenuBoxes -_0811EEC8: .4byte sPartyBgGfxTilemap - thumb_func_end ResetPartyMenu - - thumb_func_start AllocPartyMenuBg -AllocPartyMenuBg: @ 811EECC - push {r4,r5,lr} - bl ResetAllBgsCoordinatesAndBgCntRegs - ldr r5, _0811EF34 @ =sPartyBgTilemapBuffer - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl Alloc - str r0, [r5] - cmp r0, 0 - beq _0811EF3C - movs r1, 0 - adds r2, r4, 0 - bl memset - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0811EF38 @ =sPartyMenuBgTemplates - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r1, [r5] - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - b _0811EF3E - .align 2, 0 -_0811EF34: .4byte sPartyBgTilemapBuffer -_0811EF38: .4byte sPartyMenuBgTemplates -_0811EF3C: - movs r0, 0 -_0811EF3E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end AllocPartyMenuBg - - thumb_func_start AllocPartyMenuBgGfx -AllocPartyMenuBgGfx: @ 811EF44 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0811EF64 @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - bhi _0811F02C - lsls r0, 2 - ldr r1, _0811EF68 @ =_0811EF6C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811EF64: .4byte sPartyMenuInternal -_0811EF68: .4byte _0811EF6C - .align 2, 0 -_0811EF6C: - .4byte _0811EF8C - .4byte _0811EFB4 - .4byte _0811EFD4 - .4byte _0811F000 - .4byte _0811F004 - .4byte _0811F008 - .4byte _0811F00C - .4byte _0811F010 -_0811EF8C: - ldr r4, _0811EFAC @ =sPartyBgGfxTilemap - ldr r0, _0811EFB0 @ =gPartyMenuBg_Gfx - mov r1, sp - bl MallocAndDecompress - adds r1, r0, 0 - str r1, [r4] - ldr r2, [sp] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r3, 0 - bl LoadBgTiles - b _0811F016 - .align 2, 0 -_0811EFAC: .4byte sPartyBgGfxTilemap -_0811EFB0: .4byte gPartyMenuBg_Gfx -_0811EFB4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811F030 - ldr r0, _0811EFCC @ =gPartyMenuBg_Tilemap - ldr r1, _0811EFD0 @ =sPartyBgTilemapBuffer - ldr r1, [r1] - bl LZDecompressWram - b _0811F016 - .align 2, 0 -_0811EFCC: .4byte gPartyMenuBg_Tilemap -_0811EFD0: .4byte sPartyBgTilemapBuffer -_0811EFD4: - ldr r0, _0811EFF4 @ =gPartyMenuBg_Pal - movs r2, 0xB0 - lsls r2, 1 - movs r1, 0 - bl LoadCompressedPalette - ldr r0, _0811EFF8 @ =gPlttBufferUnfaded - ldr r4, _0811EFFC @ =sPartyMenuInternal - ldr r1, [r4] - adds r1, 0x18 - movs r2, 0xB0 - bl CpuSet - ldr r1, [r4] - b _0811F01A - .align 2, 0 -_0811EFF4: .4byte gPartyMenuBg_Pal -_0811EFF8: .4byte gPlttBufferUnfaded -_0811EFFC: .4byte sPartyMenuInternal -_0811F000: - movs r0, 0x4 - b _0811F012 -_0811F004: - movs r0, 0x5 - b _0811F012 -_0811F008: - movs r0, 0x6 - b _0811F012 -_0811F00C: - movs r0, 0x7 - b _0811F012 -_0811F010: - movs r0, 0x8 -_0811F012: - bl PartyPaletteBufferCopy -_0811F016: - ldr r0, _0811F028 @ =sPartyMenuInternal - ldr r1, [r0] -_0811F01A: - movs r0, 0x86 - lsls r0, 2 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811F030 - .align 2, 0 -_0811F028: .4byte sPartyMenuInternal -_0811F02C: - movs r0, 0x1 - b _0811F032 -_0811F030: - movs r0, 0 -_0811F032: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end AllocPartyMenuBgGfx - - thumb_func_start PartyPaletteBufferCopy -PartyPaletteBufferCopy: @ 811F03C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 28 - ldr r5, _0811F068 @ =gPlttBufferUnfaded + 0x60 - lsrs r4, 23 - adds r1, r5, 0 - subs r1, 0x60 - adds r1, r4, r1 - adds r0, r5, 0 - movs r2, 0x10 - bl CpuSet - ldr r0, _0811F06C @ =gPlttBufferFaded - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x10 - bl CpuSet - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811F068: .4byte gPlttBufferUnfaded + 0x60 -_0811F06C: .4byte gPlttBufferFaded - thumb_func_end PartyPaletteBufferCopy - - thumb_func_start FreePartyPointers -FreePartyPointers: @ 811F070 - push {lr} - ldr r0, _0811F0AC @ =sPartyMenuInternal - ldr r0, [r0] - cmp r0, 0 - beq _0811F07E - bl Free -_0811F07E: - ldr r0, _0811F0B0 @ =sPartyBgTilemapBuffer - ldr r0, [r0] - cmp r0, 0 - beq _0811F08A - bl Free -_0811F08A: - ldr r0, _0811F0B4 @ =sPartyBgGfxTilemap - ldr r0, [r0] - cmp r0, 0 - beq _0811F096 - bl Free -_0811F096: - ldr r0, _0811F0B8 @ =sPartyMenuBoxes - ldr r0, [r0] - cmp r0, 0 - beq _0811F0A2 - bl Free -_0811F0A2: - bl FreeAllWindowBuffers - pop {r0} - bx r0 - .align 2, 0 -_0811F0AC: .4byte sPartyMenuInternal -_0811F0B0: .4byte sPartyBgTilemapBuffer -_0811F0B4: .4byte sPartyBgGfxTilemap -_0811F0B8: .4byte sPartyMenuBoxes - thumb_func_end FreePartyPointers - - thumb_func_start InitPartyMenuBoxes -InitPartyMenuBoxes: @ 811F0BC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0811F108 @ =sPartyMenuBoxes - movs r0, 0x60 - bl Alloc - str r0, [r4] - movs r2, 0 - ldr r7, _0811F10C @ =sPartyBoxInfoRects + 0x20 - lsls r0, r5, 1 - adds r0, r5 - lsls r3, r0, 4 - mov r12, r4 - ldr r6, _0811F110 @ =sPartyMenuSpriteCoords -_0811F0DA: - ldr r0, [r4] - lsls r1, r2, 4 - adds r1, r0 - str r7, [r1] - lsls r0, r2, 3 - adds r0, r6 - adds r0, r3, r0 - str r0, [r1, 0x4] - strb r2, [r1, 0x8] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bls _0811F0DA - mov r1, r12 - ldr r0, [r1] - ldr r1, _0811F114 @ =sPartyBoxInfoRects - str r1, [r0] - cmp r5, 0x3 - bne _0811F118 - str r1, [r0, 0x30] - b _0811F11E - .align 2, 0 -_0811F108: .4byte sPartyMenuBoxes -_0811F10C: .4byte sPartyBoxInfoRects + 0x20 -_0811F110: .4byte sPartyMenuSpriteCoords -_0811F114: .4byte sPartyBoxInfoRects -_0811F118: - cmp r5, 0 - beq _0811F11E - str r1, [r0, 0x10] -_0811F11E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end InitPartyMenuBoxes - - thumb_func_start RenderPartyMenuBox -RenderPartyMenuBox: @ 811F124 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0811F16C @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0811F174 - cmp r4, 0x2 - bls _0811F174 - adds r0, r4, 0 - bl DisplayPartyPokemonDataForMultiBattle - ldr r5, _0811F170 @ =sPartyMenuBoxes - lsls r4, 4 - ldr r0, [r5] - adds r0, r4 - movs r1, 0x8 - bl LoadPartyBoxPalette - ldr r0, [r5] - adds r0, r4, r0 - ldrb r0, [r0, 0x8] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r5] - adds r4, r0 - ldrb r0, [r4, 0x8] - bl PutWindowTilemap - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - b _0811F22A - .align 2, 0 -_0811F16C: .4byte gPartyMenu -_0811F170: .4byte sPartyMenuBoxes -_0811F174: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0811F1A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _0811F1AC - ldr r5, _0811F1A8 @ =sPartyMenuBoxes - ldr r0, [r5] - lsls r4, 4 - adds r0, r4, r0 - ldrb r0, [r0, 0x8] - bl DrawEmptySlot - ldr r0, [r5] - adds r0, r4, r0 - ldrb r0, [r0, 0x8] - movs r1, 0x2 - bl CopyWindowToVram - b _0811F218 - .align 2, 0 -_0811F1A4: .4byte gPlayerParty -_0811F1A8: .4byte sPartyMenuBoxes -_0811F1AC: - ldr r0, _0811F1C0 @ =gPartyMenu - ldrb r0, [r0, 0x8] - movs r1, 0xF - ands r1, r0 - cmp r1, 0x4 - bne _0811F1C4 - adds r0, r4, 0 - bl DisplayPartyPokemonDataForChooseHalf - b _0811F1E2 - .align 2, 0 -_0811F1C0: .4byte gPartyMenu -_0811F1C4: - cmp r1, 0xB - bne _0811F1D0 - adds r0, r4, 0 - bl DisplayPartyPokemonDataForWirelessMinigame - b _0811F1E2 -_0811F1D0: - adds r0, r4, 0 - bl DisplayPartyPokemonDataForMoveTutorOrEvolutionItem - lsls r0, 24 - cmp r0, 0 - bne _0811F1E2 - adds r0, r4, 0 - bl DisplayPartyPokemonData -_0811F1E2: - ldr r2, _0811F1F8 @ =gPartyMenu - ldrb r1, [r2, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0811F1FC - adds r0, r4, 0 - movs r1, 0 - bl AnimatePartySlot - b _0811F216 - .align 2, 0 -_0811F1F8: .4byte gPartyMenu -_0811F1FC: - movs r0, 0x9 - ldrsb r0, [r2, r0] - cmp r0, r4 - bne _0811F20E - adds r0, r4, 0 - movs r1, 0x1 - bl AnimatePartySlot - b _0811F216 -_0811F20E: - adds r0, r4, 0 - movs r1, 0 - bl AnimatePartySlot -_0811F216: - lsls r4, 4 -_0811F218: - ldr r0, _0811F230 @ =sPartyMenuBoxes - ldr r0, [r0] - adds r0, r4, r0 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram -_0811F22A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811F230: .4byte sPartyMenuBoxes - thumb_func_end RenderPartyMenuBox - - thumb_func_start DisplayPartyPokemonData -DisplayPartyPokemonData: @ 811F234 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0811F284 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x2D - bl GetMonData - adds r2, r0, 0 - cmp r2, 0 - beq _0811F28C - ldr r6, _0811F288 @ =sPartyMenuBoxes - ldr r0, [r6] - lsls r5, r4, 4 - adds r0, r5, r0 - ldr r2, [r0] - ldrb r0, [r0, 0x8] - movs r1, 0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - ldr r4, [r2] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl _call_via_r4 - ldr r1, [r6] - adds r1, r5 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonNickname - b _0811F2EE - .align 2, 0 -_0811F284: .4byte gPlayerParty -_0811F288: .4byte sPartyMenuBoxes -_0811F28C: - ldr r5, _0811F2F8 @ =sPartyMenuBoxes - ldr r0, [r5] - lsls r4, 4 - adds r0, r4, r0 - ldr r1, [r0] - ldrb r0, [r0, 0x8] - str r2, [sp] - str r2, [sp, 0x4] - ldr r6, [r1] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl _call_via_r6 - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonNickname - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonLevelCheck - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonGenderNidoranCheck - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonHPCheck - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - movs r2, 0 - bl DisplayPartyPokemonMaxHPCheck - ldr r1, [r5] - adds r1, r4 - adds r0, r7, 0 - bl DisplayPartyPokemonHPBarCheck -_0811F2EE: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811F2F8: .4byte sPartyMenuBoxes - thumb_func_end DisplayPartyPokemonData - - thumb_func_start DisplayPartyPokemonDescriptionData -DisplayPartyPokemonDescriptionData: @ 811F2FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r1, 0x64 - adds r2, r0, 0 - muls r2, r1 - ldr r1, _0811F380 @ =gPlayerParty - adds r6, r2, r1 - ldr r7, _0811F384 @ =sPartyMenuBoxes - ldr r1, [r7] - lsls r5, r0, 4 - adds r1, r5, r1 - ldr r2, [r1] - ldrb r0, [r1, 0x8] - movs r1, 0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - ldr r4, [r2] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl _call_via_r4 - ldr r1, [r7] - adds r1, r5 - adds r0, r6, 0 - movs r2, 0 - bl DisplayPartyPokemonNickname - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0811F368 - ldr r1, [r7] - adds r1, r5 - adds r0, r6, 0 - movs r2, 0 - bl DisplayPartyPokemonLevelCheck - ldr r1, [r7] - adds r1, r5 - adds r0, r6, 0 - movs r2, 0 - bl DisplayPartyPokemonGenderNidoranCheck -_0811F368: - ldr r1, [r7] - adds r1, r5 - mov r0, r8 - movs r2, 0 - bl DisplayPartyPokemonDescriptionText - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811F380: .4byte gPlayerParty -_0811F384: .4byte sPartyMenuBoxes - thumb_func_end DisplayPartyPokemonDescriptionData - - thumb_func_start DisplayPartyPokemonDataForChooseHalf -DisplayPartyPokemonDataForChooseHalf: @ 811F388 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x64 - muls r0, r4 - ldr r1, _0811F3AC @ =gPlayerParty - adds r0, r1 - ldr r5, _0811F3B0 @ =gSelectedOrderFromParty - bl GetBattleEntryEligibility - lsls r0, 24 - cmp r0, 0 - bne _0811F3C2 - adds r0, r4, 0 - movs r1, 0x6 - bl DisplayPartyPokemonDescriptionData - b _0811F3F8 - .align 2, 0 -_0811F3AC: .4byte gPlayerParty -_0811F3B0: .4byte gSelectedOrderFromParty -_0811F3B4: - adds r1, 0x2 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl DisplayPartyPokemonDescriptionData - b _0811F3F8 -_0811F3C2: - ldr r0, _0811F400 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xC0 - ands r0, r1 - movs r3, 0x3 - cmp r0, 0x80 - bne _0811F3D2 - movs r3, 0x2 -_0811F3D2: - movs r1, 0 - cmp r1, r3 - bcs _0811F3F0 -_0811F3D8: - adds r2, r5, r1 - ldrb r0, [r2] - cmp r0, 0 - beq _0811F3E6 - subs r0, 0x1 - cmp r0, r4 - beq _0811F3B4 -_0811F3E6: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r3 - bcc _0811F3D8 -_0811F3F0: - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyPokemonDescriptionData -_0811F3F8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811F400: .4byte gPartyMenu - thumb_func_end DisplayPartyPokemonDataForChooseHalf - - thumb_func_start DisplayPartyPokemonDataForWirelessMinigame -DisplayPartyPokemonDataForWirelessMinigame: @ 811F404 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsMonAllowedInMinigame - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0811F422 - adds r0, r4, 0 - movs r1, 0x5 - bl DisplayPartyPokemonDescriptionData - b _0811F42A -_0811F422: - adds r0, r4, 0 - movs r1, 0x6 - bl DisplayPartyPokemonDescriptionData -_0811F42A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonDataForWirelessMinigame - - thumb_func_start DisplayPartyPokemonDataForMoveTutorOrEvolutionItem -DisplayPartyPokemonDataForMoveTutorOrEvolutionItem: @ 811F430 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0811F468 @ =gPlayerParty - adds r6, r1, r0 - ldr r0, _0811F46C @ =gSpecialVar_ItemId - ldrh r4, [r0] - ldr r0, _0811F470 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0xC - bne _0811F47C - ldr r0, _0811F474 @ =gSpecialVar_Result - movs r1, 0 - strh r1, [r0] - ldr r0, _0811F478 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0xE - bhi _0811F492 - lsls r2, r0, 24 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0 - bl DisplayPartyPokemonDataToTeachMove - b _0811F4C6 - .align 2, 0 -_0811F468: .4byte gPlayerParty -_0811F46C: .4byte gSpecialVar_ItemId -_0811F470: .4byte gPartyMenu -_0811F474: .4byte gSpecialVar_Result -_0811F478: .4byte gSpecialVar_0x8005 -_0811F47C: - cmp r0, 0x3 - bne _0811F492 - adds r0, r4, 0 - bl GetItemCompatibilityRule - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811F496 - cmp r0, 0x2 - beq _0811F4A2 -_0811F492: - movs r0, 0 - b _0811F4C8 -_0811F496: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonDataToTeachMove - b _0811F4C6 -_0811F4A2: - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0811F4BE - adds r0, r6, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - cmp r0, 0 - bne _0811F492 -_0811F4BE: - adds r0, r5, 0 - movs r1, 0 - bl DisplayPartyPokemonDescriptionData -_0811F4C6: - movs r0, 0x1 -_0811F4C8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end DisplayPartyPokemonDataForMoveTutorOrEvolutionItem - - thumb_func_start DisplayPartyPokemonDataToTeachMove -DisplayPartyPokemonDataToTeachMove: @ 811F4D0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x64 - muls r0, r4 - ldr r3, _0811F4FC @ =gPlayerParty - adds r0, r3 - bl CanMonLearnTMTutor - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0811F50E - cmp r0, 0x2 - bgt _0811F500 - cmp r0, 0x1 - beq _0811F504 - b _0811F518 - .align 2, 0 -_0811F4FC: .4byte gPlayerParty -_0811F500: - cmp r0, 0x3 - bne _0811F518 -_0811F504: - adds r0, r4, 0 - movs r1, 0x8 - bl DisplayPartyPokemonDescriptionData - b _0811F520 -_0811F50E: - adds r0, r4, 0 - movs r1, 0x9 - bl DisplayPartyPokemonDescriptionData - b _0811F520 -_0811F518: - adds r0, r4, 0 - movs r1, 0x7 - bl DisplayPartyPokemonDescriptionData -_0811F520: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonDataToTeachMove - - thumb_func_start DisplayPartyPokemonDataForMultiBattle -DisplayPartyPokemonDataForMultiBattle: @ 811F528 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0811F558 @ =sPartyMenuBoxes - lsls r2, r0, 4 - ldr r1, [r1] - adds r5, r1, r2 - subs r0, 0x3 - lsls r0, 24 - ldr r1, _0811F55C @ =gMultiPartnerParty - mov r8, r1 - lsrs r7, r0, 19 - adds r6, r7, r1 - ldrh r0, [r6] - cmp r0, 0 - bne _0811F560 - ldrb r0, [r5, 0x8] - bl DrawEmptySlot - b _0811F5DC - .align 2, 0 -_0811F558: .4byte sPartyMenuBoxes -_0811F55C: .4byte gMultiPartnerParty -_0811F560: - ldr r2, [r5] - ldrb r0, [r5, 0x8] - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - ldr r4, [r2] - movs r2, 0 - movs r3, 0 - bl _call_via_r4 - ldr r4, _0811F5E8 @ =gStringVar1 - mov r0, r8 - adds r0, 0x4 - adds r7, r0 - adds r0, r4, 0 - adds r1, r7, 0 - bl StringCopy - adds r0, r4, 0 - bl StringGetEnd10 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bhi _0811F5A0 - adds r0, r4, 0 - movs r1, 0x1 - bl ConvertInternationalString -_0811F5A0: - ldrb r0, [r5, 0x8] - ldr r3, [r5] - adds r3, 0x4 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - ldrb r0, [r6, 0xF] - adds r1, r5, 0 - bl DisplayPartyPokemonLevel - ldrb r0, [r6, 0x1C] - ldrh r1, [r6] - adds r2, r7, 0 - adds r3, r5, 0 - bl DisplayPartyPokemonGender - ldrh r0, [r6, 0x10] - adds r1, r5, 0 - bl DisplayPartyPokemonHP - ldrh r0, [r6, 0x12] - adds r1, r5, 0 - bl DisplayPartyPokemonMaxHP - ldrh r0, [r6, 0x10] - ldrh r1, [r6, 0x12] - adds r2, r5, 0 - bl DisplayPartyPokemonHPBar -_0811F5DC: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811F5E8: .4byte gStringVar1 - thumb_func_end DisplayPartyPokemonDataForMultiBattle - - thumb_func_start RenderPartyMenuBoxes -RenderPartyMenuBoxes: @ 811F5EC - push {r4,r5,lr} - ldr r5, _0811F614 @ =sPartyMenuInternal - ldr r0, [r5] - movs r4, 0x86 - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0] - bl RenderPartyMenuBox - ldr r1, [r5] - adds r1, r4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - beq _0811F618 - movs r0, 0 - b _0811F61A - .align 2, 0 -_0811F614: .4byte sPartyMenuInternal -_0811F618: - movs r0, 0x1 -_0811F61A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end RenderPartyMenuBoxes - - thumb_func_start GetPartyMenuBgTile -GetPartyMenuBgTile: @ 811F620 - lsls r0, 16 - ldr r1, _0811F630 @ =sPartyBgGfxTilemap - lsrs r0, 11 - ldr r1, [r1] - adds r1, r0 - adds r0, r1, 0 - bx lr - .align 2, 0 -_0811F630: .4byte sPartyBgGfxTilemap - thumb_func_end GetPartyMenuBgTile - - thumb_func_start CreatePartyMonSprites -CreatePartyMonSprites: @ 811F634 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0811F6A8 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0811F6E4 - cmp r7, 0x2 - bls _0811F6E4 - subs r0, r7, 0x3 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _0811F6AC @ =gMultiPartnerParty - mov r9, r0 - mov r2, r10 - lsls r2, 5 - mov r8, r2 - mov r6, r8 - add r6, r9 - ldrh r0, [r6] - cmp r0, 0 - beq _0811F728 - mov r1, r9 - adds r1, 0x18 - add r1, r8 - ldr r1, [r1] - ldr r4, _0811F6B0 @ =sPartyMenuBoxes - lsls r5, r7, 4 - ldr r2, [r4] - adds r2, r5 - movs r3, 0 - str r3, [sp] - bl CreatePartyMonIconSpriteParameterized - ldrh r0, [r6] - ldrh r1, [r6, 0x2] - ldr r2, [r4] - adds r2, r5 - bl CreatePartyMonHeldItemSpriteParameterized - ldrh r0, [r6] - ldr r1, [r4] - adds r1, r5 - bl CreatePartyMonPokeballSpriteParameterized - ldrh r0, [r6, 0x10] - cmp r0, 0 - bne _0811F6B4 - movs r3, 0x7 - b _0811F6C4 - .align 2, 0 -_0811F6A8: .4byte gPartyMenu -_0811F6AC: .4byte gMultiPartnerParty -_0811F6B0: .4byte sPartyMenuBoxes -_0811F6B4: - mov r0, r9 - adds r0, 0x14 - add r0, r8 - ldr r0, [r0] - bl GetAilmentFromStatus - lsls r0, 24 - lsrs r3, r0, 24 -_0811F6C4: - ldr r1, _0811F6DC @ =gMultiPartnerParty - mov r2, r10 - lsls r0, r2, 5 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _0811F6E0 @ =sPartyMenuBoxes - ldr r2, [r1] - adds r2, r5 - adds r1, r3, 0 - bl CreatePartyMonStatusSpriteParameterized - b _0811F728 - .align 2, 0 -_0811F6DC: .4byte gMultiPartnerParty -_0811F6E0: .4byte sPartyMenuBoxes -_0811F6E4: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0811F738 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0811F728 - ldr r4, _0811F73C @ =sPartyMenuBoxes - lsls r5, r7, 4 - ldr r1, [r4] - adds r1, r5 - adds r0, r6, 0 - adds r2, r7, 0 - bl CreatePartyMonIconSprite - ldr r1, [r4] - adds r1, r5 - adds r0, r6, 0 - bl CreatePartyMonHeldItemSprite - ldr r1, [r4] - adds r1, r5 - adds r0, r6, 0 - bl CreatePartyMonPokeballSprite - ldr r1, [r4] - adds r1, r5 - adds r0, r6, 0 - bl CreatePartyMonStatusSprite -_0811F728: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811F738: .4byte gPlayerParty -_0811F73C: .4byte sPartyMenuBoxes - thumb_func_end CreatePartyMonSprites - - thumb_func_start CreatePartyMonSpritesLoop -CreatePartyMonSpritesLoop: @ 811F740 - push {r4,r5,lr} - ldr r5, _0811F768 @ =sPartyMenuInternal - ldr r0, [r5] - movs r4, 0x86 - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0] - bl CreatePartyMonSprites - ldr r1, [r5] - adds r1, r4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - beq _0811F76C - movs r0, 0 - b _0811F76E - .align 2, 0 -_0811F768: .4byte sPartyMenuInternal -_0811F76C: - movs r0, 0x1 -_0811F76E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CreatePartyMonSpritesLoop - - thumb_func_start CreateCancelConfirmPokeballSprites -CreateCancelConfirmPokeballSprites: @ 811F774 - push {r4,lr} - sub sp, 0xC - ldr r0, _0811F79C @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0811F7A0 - movs r0, 0x7 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r1, 0xE - movs r2, 0x17 - movs r3, 0x11 - bl FillBgTilemapBufferRect - b _0811F808 - .align 2, 0 -_0811F79C: .4byte gPartyMenu -_0811F7A0: - ldr r4, _0811F7D8 @ =sPartyMenuInternal - ldr r0, [r4] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _0811F7E0 - movs r0, 0xBF - movs r1, 0x88 - bl CreateSmallPokeballButtonSprite - ldr r3, [r4] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x7F - ands r0, r1 - lsls r0, 4 - ldrh r2, [r3, 0x8] - ldr r1, _0811F7DC @ =0xfffff80f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x8] - bl DrawCancelConfirmButtons - movs r0, 0xBF - movs r1, 0x98 - bl CreateSmallPokeballButtonSprite - b _0811F7E8 - .align 2, 0 -_0811F7D8: .4byte sPartyMenuInternal -_0811F7DC: .4byte 0xfffff80f -_0811F7E0: - movs r0, 0xC6 - movs r1, 0x94 - bl CreatePokeballButtonSprite -_0811F7E8: - ldr r3, [r4] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x7F - ands r0, r1 - lsls r0, 11 - ldr r1, [r3, 0x8] - ldr r2, _0811F810 @ =0xfffc07ff - ands r1, r2 - orrs r1, r0 - str r1, [r3, 0x8] - ldr r0, _0811F814 @ =gPartyMenu - ldrb r0, [r0, 0x9] - movs r1, 0x1 - bl AnimatePartySlot -_0811F808: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811F810: .4byte 0xfffc07ff -_0811F814: .4byte gPartyMenu - thumb_func_end CreateCancelConfirmPokeballSprites - - thumb_func_start AnimatePartySlot -AnimatePartySlot: @ 811F818 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - cmp r7, 0x6 - beq _0811F884 - cmp r7, 0x7 - beq _0811F8C0 - movs r0, 0x64 - muls r0, r7 - ldr r1, _0811F87C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0811F934 - ldr r6, _0811F880 @ =sPartyMenuBoxes - lsls r5, r7, 4 - ldr r4, [r6] - adds r4, r5 - adds r0, r7, 0 - mov r1, r8 - bl GetPartyBoxPaletteFlags - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl LoadPartyBoxPalette - ldr r0, [r6] - adds r0, r5, r0 - ldrb r0, [r0, 0x9] - mov r1, r8 - bl AnimateSelectedPartyIcon - ldr r0, [r6] - adds r5, r0 - ldrb r0, [r5, 0xB] - mov r1, r8 - bl PartyMenuStartSpriteAnim - b _0811F934 - .align 2, 0 -_0811F87C: .4byte gPlayerParty -_0811F880: .4byte sPartyMenuBoxes -_0811F884: - mov r0, r8 - cmp r0, 0 - bne _0811F89E - movs r0, 0x2 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r1, 0x17 - movs r2, 0x10 - movs r3, 0x7 - bl SetBgRectPal - b _0811F8B0 -_0811F89E: - movs r0, 0x2 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x17 - movs r2, 0x10 - movs r3, 0x7 - bl SetBgRectPal -_0811F8B0: - ldr r0, _0811F8BC @ =sPartyMenuInternal - ldr r0, [r0] - ldrh r0, [r0, 0x8] - lsls r0, 21 - b _0811F926 - .align 2, 0 -_0811F8BC: .4byte sPartyMenuInternal -_0811F8C0: - ldr r0, _0811F8E0 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - bne _0811F8F2 - mov r0, r8 - cmp r0, 0 - bne _0811F8E4 - movs r0, 0x2 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r1, 0x17 - movs r2, 0x11 - b _0811F904 - .align 2, 0 -_0811F8E0: .4byte sPartyMenuInternal -_0811F8E4: - movs r0, 0x2 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x17 - movs r2, 0x11 - b _0811F904 -_0811F8F2: - mov r0, r8 - cmp r0, 0 - bne _0811F90C - movs r0, 0x2 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r1, 0x17 - movs r2, 0x12 -_0811F904: - movs r3, 0x7 - bl SetBgRectPal - b _0811F91E -_0811F90C: - movs r0, 0x2 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x17 - movs r2, 0x12 - movs r3, 0x7 - bl SetBgRectPal -_0811F91E: - ldr r0, _0811F940 @ =sPartyMenuInternal - ldr r0, [r0] - ldr r0, [r0, 0x8] - lsls r0, 14 -_0811F926: - lsrs r0, 25 - mov r1, r8 - bl PartyMenuStartSpriteAnim - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram -_0811F934: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811F940: .4byte sPartyMenuInternal - thumb_func_end AnimatePartySlot - - thumb_func_start GetPartyBoxPaletteFlags -GetPartyBoxPaletteFlags: @ 811F944 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r4, 0 - cmp r1, 0x1 - bne _0811F956 - movs r4, 0x1 -_0811F956: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0811F9D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _0811F96C - movs r0, 0x2 - orrs r4, r0 -_0811F96C: - ldr r2, _0811F9D8 @ =gPartyMenu - ldrb r1, [r2, 0x8] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0x20 - bne _0811F98C - cmp r5, 0x1 - beq _0811F984 - cmp r5, 0x4 - beq _0811F984 - cmp r5, 0x5 - bne _0811F98C -_0811F984: - movs r0, 0x8 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0811F98C: - ldrb r1, [r2, 0xB] - cmp r1, 0x9 - bne _0811F99A - movs r0, 0x10 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0811F99A: - cmp r1, 0x8 - bne _0811F9B6 - movs r0, 0x9 - ldrsb r0, [r2, r0] - cmp r5, r0 - beq _0811F9AE - movs r0, 0xA - ldrsb r0, [r2, r0] - cmp r5, r0 - bne _0811F9B6 -_0811F9AE: - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0811F9B6: - ldrb r0, [r2, 0xB] - cmp r0, 0xA - bne _0811F9CC - movs r0, 0x9 - ldrsb r0, [r2, r0] - cmp r5, r0 - bne _0811F9CC - movs r0, 0x20 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0811F9CC: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811F9D4: .4byte gPlayerParty -_0811F9D8: .4byte gPartyMenu - thumb_func_end GetPartyBoxPaletteFlags - - thumb_func_start DrawCancelConfirmButtons -DrawCancelConfirmButtons: @ 811F9DC - push {r4-r6,lr} - sub sp, 0xC - ldr r1, _0811FA18 @ =sConfirmButton_Tilemap - movs r6, 0x7 - str r6, [sp] - movs r5, 0x2 - str r5, [sp, 0x4] - movs r4, 0x11 - str r4, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x17 - movs r3, 0x10 - bl CopyToBgTilemapBufferRect_ChangePalette - ldr r1, _0811FA1C @ =sCancelButton_Tilemap - str r6, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x17 - movs r3, 0x12 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811FA18: .4byte sConfirmButton_Tilemap -_0811FA1C: .4byte sCancelButton_Tilemap - thumb_func_end DrawCancelConfirmButtons - - thumb_func_start IsMultiBattle -IsMultiBattle: @ 811FA20 - push {lr} - ldr r0, _0811FA34 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4B - ands r0, r1 - cmp r0, 0x4B - beq _0811FA38 - movs r0, 0 - b _0811FA3A - .align 2, 0 -_0811FA34: .4byte gBattleTypeFlags -_0811FA38: - movs r0, 0x1 -_0811FA3A: - pop {r1} - bx r1 - thumb_func_end IsMultiBattle - - thumb_func_start SwapPartyPokemon -SwapPartyPokemon: @ 811FA40 - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - movs r0, 0x64 - bl Alloc - adds r5, r0, 0 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0x64 - bl memcpy - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r5, 0 - bl Free - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SwapPartyPokemon - - thumb_func_start Task_ClosePartyMenu -Task_ClosePartyMenu: @ 811FA78 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x2 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0811FAAC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0811FAB0 @ =Task_ClosePartyMenuAndSetCB2 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811FAAC: .4byte gTasks -_0811FAB0: .4byte Task_ClosePartyMenuAndSetCB2 - thumb_func_end Task_ClosePartyMenu - - thumb_func_start Task_ClosePartyMenuAndSetCB2 -Task_ClosePartyMenuAndSetCB2: @ 811FAB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0811FAE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811FB04 - ldr r4, _0811FAEC @ =gPartyMenu - ldrb r1, [r4, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _0811FAD6 - bl UpdatePartyToFieldOrder -_0811FAD6: - ldr r0, _0811FAF0 @ =sPartyMenuInternal - ldr r0, [r0] - ldr r0, [r0, 0x4] - cmp r0, 0 - beq _0811FAF4 - bl SetMainCallback2 - b _0811FAFA - .align 2, 0 -_0811FAE8: .4byte gPaletteFade -_0811FAEC: .4byte gPartyMenu -_0811FAF0: .4byte sPartyMenuInternal -_0811FAF4: - ldr r0, [r4] - bl SetMainCallback2 -_0811FAFA: - bl FreePartyPointers - adds r0, r5, 0 - bl DestroyTask -_0811FB04: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end Task_ClosePartyMenuAndSetCB2 - - thumb_func_start GetCursorSelectionMonId -GetCursorSelectionMonId: @ 811FB0C - ldr r0, _0811FB14 @ =gPartyMenu - ldrb r0, [r0, 0x9] - bx lr - .align 2, 0 -_0811FB14: .4byte gPartyMenu - thumb_func_end GetCursorSelectionMonId - - thumb_func_start GetPartyMenuType -GetPartyMenuType: @ 811FB18 - ldr r0, _0811FB24 @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsls r0, 28 - lsrs r0, 28 - bx lr - .align 2, 0 -_0811FB24: .4byte gPartyMenu - thumb_func_end GetPartyMenuType - - thumb_func_start Task_HandleChooseMonInput -Task_HandleChooseMonInput: @ 811FB28 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, _0811FB64 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811FB98 - bl sub_80BF748 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811FB98 - bl GetCurrentPartySlotPtr - adds r4, r0, 0 - bl PartyMenuButtonHandler - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - beq _0811FB78 - cmp r0, 0x2 - bgt _0811FB68 - cmp r0, 0x1 - beq _0811FB6E - b _0811FB98 - .align 2, 0 -_0811FB64: .4byte gPaletteFade -_0811FB68: - cmp r0, 0x8 - beq _0811FB82 - b _0811FB98 -_0811FB6E: - adds r0, r5, 0 - adds r1, r4, 0 - bl HandleChooseMonSelection - b _0811FB98 -_0811FB78: - adds r0, r6, 0 - adds r1, r4, 0 - bl HandleChooseMonCancel - b _0811FB98 -_0811FB82: - ldr r0, _0811FBA0 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _0811FB98 - movs r0, 0x5 - bl PlaySE - bl MoveCursorToConfirm -_0811FB98: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811FBA0: .4byte sPartyMenuInternal - thumb_func_end Task_HandleChooseMonInput - - thumb_func_start GetCurrentPartySlotPtr -GetCurrentPartySlotPtr: @ 811FBA4 - push {lr} - ldr r0, _0811FBB8 @ =gPartyMenu - ldrb r1, [r0, 0xB] - cmp r1, 0x8 - beq _0811FBB2 - cmp r1, 0xA - bne _0811FBBC -_0811FBB2: - adds r0, 0xA - b _0811FBBE - .align 2, 0 -_0811FBB8: .4byte gPartyMenu -_0811FBBC: - adds r0, 0x9 -_0811FBBE: - pop {r1} - bx r1 - thumb_func_end GetCurrentPartySlotPtr - - thumb_func_start HandleChooseMonSelection -HandleChooseMonSelection: @ 811FBC4 - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r0, 0x6 - bne _0811FBE4 - ldr r0, _0811FBE0 @ =gPartyMenu - ldr r1, [r0, 0x4] - adds r0, r6, 0 - bl _call_via_r1 - b _0811FD56 - .align 2, 0 -_0811FBE0: .4byte gPartyMenu -_0811FBE4: - ldr r0, _0811FBFC @ =gPartyMenu - ldrb r0, [r0, 0xB] - subs r0, 0x3 - cmp r0, 0xA - bls _0811FBF0 - b _0811FD4A -_0811FBF0: - lsls r0, 2 - ldr r1, _0811FC00 @ =_0811FC04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811FBFC: .4byte gPartyMenu -_0811FC00: .4byte _0811FC04 - .align 2, 0 -_0811FC04: - .4byte _0811FC46 - .4byte _0811FD4A - .4byte _0811FCC0 - .4byte _0811FCC0 - .4byte _0811FCA6 - .4byte _0811FCDA - .4byte _0811FD4A - .4byte _0811FC30 - .4byte _0811FCE8 - .4byte _0811FC8C - .4byte _0811FD34 -_0811FC30: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - bne _0811FC3E - b _0811FD56 -_0811FC3E: - adds r0, r6, 0 - bl sub_80E5724 - b _0811FD56 -_0811FC46: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - bne _0811FC54 - b _0811FD56 -_0811FC54: - ldr r0, _0811FC78 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _0811FC68 - ldr r0, _0811FC7C @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _0811FC80 @ =CB2_SetUpExitToBattleScreen - str r0, [r1, 0x4] -_0811FC68: - ldr r0, _0811FC84 @ =gItemUseCB - ldr r1, _0811FC88 @ =Task_ClosePartyMenuAfterText - ldr r2, [r0] - adds r0, r6, 0 - bl _call_via_r2 - b _0811FD56 - .align 2, 0 -_0811FC78: .4byte gPartyMenu -_0811FC7C: .4byte sPartyMenuInternal -_0811FC80: .4byte CB2_SetUpExitToBattleScreen -_0811FC84: .4byte gItemUseCB -_0811FC88: .4byte Task_ClosePartyMenuAfterText -_0811FC8C: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - beq _0811FD56 - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl TryTutorSelectedMon - b _0811FD56 -_0811FCA6: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - beq _0811FD56 - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl TryGiveMailToSelectedMon - b _0811FD56 -_0811FCC0: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - beq _0811FD56 - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl TryGiveItemOrMailToSelectedMon - b _0811FD56 -_0811FCDA: - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl SwitchSelectedMons - b _0811FD56 -_0811FCE8: - movs r0, 0x5 - bl PlaySE - ldr r1, _0811FD24 @ =gSpecialVar_0x8004 - movs r0, 0 - ldrsb r0, [r5, r0] - strh r0, [r1] - ldr r0, _0811FD28 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x7 - bne _0811FD1A - ldr r4, _0811FD2C @ =gSpecialVar_0x8005 - movs r1, 0 - ldrsb r1, [r5, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0811FD30 @ =gPlayerParty - adds r0, r1 - bl GetNumberOfRelearnableMoves - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] -_0811FD1A: - adds r0, r6, 0 - bl Task_ClosePartyMenu - b _0811FD56 - .align 2, 0 -_0811FD24: .4byte gSpecialVar_0x8004 -_0811FD28: .4byte gPartyMenu -_0811FD2C: .4byte gSpecialVar_0x8005 -_0811FD30: .4byte gPlayerParty -_0811FD34: - adds r0, r5, 0 - bl IsSelectedMonNotEgg - lsls r0, 24 - cmp r0, 0 - beq _0811FD56 - ldrb r1, [r5] - adds r0, r6, 0 - bl TryEnterMonForMinigame - b _0811FD56 -_0811FD4A: - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl Task_TryCreateSelectionWindow -_0811FD56: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end HandleChooseMonSelection - - thumb_func_start IsSelectedMonNotEgg -IsSelectedMonNotEgg: @ 811FD5C - push {lr} - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0811FD78 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _0811FD7C - movs r0, 0x1 - b _0811FD84 - .align 2, 0 -_0811FD78: .4byte gPlayerParty -_0811FD7C: - movs r0, 0x1A - bl PlaySE - movs r0, 0 -_0811FD84: - pop {r1} - bx r1 - thumb_func_end IsSelectedMonNotEgg - - thumb_func_start HandleChooseMonCancel -HandleChooseMonCancel: @ 811FD88 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0811FDA4 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x8 - beq _0811FDBA - cmp r0, 0x8 - bgt _0811FDA8 - cmp r0, 0x1 - beq _0811FDB2 - b _0811FDD6 - .align 2, 0 -_0811FDA4: .4byte gPartyMenu -_0811FDA8: - cmp r0, 0xA - beq _0811FDBA - cmp r0, 0xD - beq _0811FDC8 - b _0811FDD6 -_0811FDB2: - movs r0, 0x1A - bl PlaySE - b _0811FE14 -_0811FDBA: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl FinishTwoMonAction - b _0811FE14 -_0811FDC8: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl CancelParticipationPrompt - b _0811FE14 -_0811FDD6: - movs r0, 0x5 - bl PlaySE - ldr r0, _0811FDF0 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x4 - bne _0811FDF4 - adds r0, r4, 0 - bl DisplayCancelChooseMonYesNo - b _0811FE14 - .align 2, 0 -_0811FDF0: .4byte gPartyMenu -_0811FDF4: - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - bne _0811FE04 - ldr r1, _0811FE1C @ =gSpecialVar_0x8004 - movs r0, 0x7 - strh r0, [r1] -_0811FE04: - ldr r0, _0811FE20 @ =gPartyMenuUseExitCallback - movs r1, 0 - strb r1, [r0] - movs r0, 0x7 - strb r0, [r5] - adds r0, r4, 0 - bl Task_ClosePartyMenu -_0811FE14: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811FE1C: .4byte gSpecialVar_0x8004 -_0811FE20: .4byte gPartyMenuUseExitCallback - thumb_func_end HandleChooseMonCancel - - thumb_func_start DisplayCancelChooseMonYesNo -DisplayCancelChooseMonYesNo: @ 811FE24 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0811FE5C @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r5, _0811FE60 @ =gStringVar4 - ldr r1, _0811FE64 @ =gUnknown_84176CF - adds r0, r5, 0 - bl StringExpandPlaceholders - adds r0, r5, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _0811FE68 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0811FE6C @ =Task_CancelChooseMonYesNo - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811FE5C: .4byte sPartyMenuInternal -_0811FE60: .4byte gStringVar4 -_0811FE64: .4byte gUnknown_84176CF -_0811FE68: .4byte gTasks -_0811FE6C: .4byte Task_CancelChooseMonYesNo - thumb_func_end DisplayCancelChooseMonYesNo - - thumb_func_start Task_CancelChooseMonYesNo -Task_CancelChooseMonYesNo: @ 811FE70 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811FE94 - bl PartyMenuDisplayYesNoMenu - ldr r0, _0811FE9C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0811FEA0 @ =Task_HandleCancelChooseMonYesNoInput - str r0, [r1] -_0811FE94: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811FE9C: .4byte gTasks -_0811FEA0: .4byte Task_HandleCancelChooseMonYesNoInput - thumb_func_end Task_CancelChooseMonYesNo - - thumb_func_start Task_HandleCancelChooseMonYesNoInput -Task_HandleCancelChooseMonYesNoInput: @ 811FEA4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0811FECA - cmp r1, 0 - bgt _0811FEC4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0811FEE8 - b _0811FEF4 -_0811FEC4: - cmp r1, 0x1 - beq _0811FEEE - b _0811FEF4 -_0811FECA: - ldr r0, _0811FEE0 @ =gPartyMenuUseExitCallback - strb r1, [r0] - ldr r1, _0811FEE4 @ =gPartyMenu - movs r0, 0x7 - strb r0, [r1, 0x9] - bl ClearSelectedPartyOrder - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _0811FEF4 - .align 2, 0 -_0811FEE0: .4byte gPartyMenuUseExitCallback -_0811FEE4: .4byte gPartyMenu -_0811FEE8: - movs r0, 0x5 - bl PlaySE -_0811FEEE: - adds r0, r4, 0 - bl Task_ReturnToChooseMonAfterText -_0811FEF4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_HandleCancelChooseMonYesNoInput - - thumb_func_start PartyMenuButtonHandler -PartyMenuButtonHandler: @ 811FEFC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811FF14 @ =gMain - ldrh r1, [r0, 0x30] - adds r3, r0, 0 - cmp r1, 0x20 - beq _0811FF2A - cmp r1, 0x20 - bgt _0811FF18 - cmp r1, 0x10 - beq _0811FF2E - b _0811FF32 - .align 2, 0 -_0811FF14: .4byte gMain -_0811FF18: - cmp r1, 0x40 - beq _0811FF22 - cmp r1, 0x80 - beq _0811FF26 - b _0811FF32 -_0811FF22: - movs r1, 0xFF - b _0811FF4E -_0811FF26: - movs r1, 0x1 - b _0811FF4E -_0811FF2A: - movs r1, 0xFE - b _0811FF4E -_0811FF2E: - movs r1, 0x2 - b _0811FF4E -_0811FF32: - bl sub_80BF66C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811FF46 - cmp r0, 0x2 - beq _0811FF4A - movs r1, 0 - b _0811FF4C -_0811FF46: - movs r1, 0xFF - b _0811FF4C -_0811FF4A: - movs r1, 0x1 -_0811FF4C: - ldr r3, _0811FF5C @ =gMain -_0811FF4E: - ldrh r2, [r3, 0x2E] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0811FF60 - movs r0, 0x8 - b _0811FF8C - .align 2, 0 -_0811FF5C: .4byte gMain -_0811FF60: - lsls r0, r1, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0811FF72 - adds r0, r4, 0 - bl UpdateCurrentPartySelection - movs r0, 0 - b _0811FF8C -_0811FF72: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0811FF86 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x7 - bne _0811FF86 - movs r0, 0x2 - b _0811FF8C -_0811FF86: - ldrh r1, [r3, 0x2E] - movs r0, 0x3 - ands r0, r1 -_0811FF8C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end PartyMenuButtonHandler - - thumb_func_start UpdateCurrentPartySelection -UpdateCurrentPartySelection: @ 811FF94 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrb r4, [r5] - ldr r0, _0811FFB8 @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsls r0, 26 - lsrs r0, 30 - cmp r0, 0 - bne _0811FFBC - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl UpdatePartySelectionSingleLayout - b _0811FFC6 - .align 2, 0 -_0811FFB8: .4byte gPartyMenu -_0811FFBC: - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl UpdatePartySelectionDoubleLayout -_0811FFC6: - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r4, 24 - asrs r0, r4, 24 - cmp r1, r0 - beq _0811FFE8 - movs r0, 0x5 - bl PlaySE - lsrs r0, r4, 24 - movs r1, 0 - bl AnimatePartySlot - ldrb r0, [r5] - movs r1, 0x1 - bl AnimatePartySlot -_0811FFE8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end UpdateCurrentPartySelection - - thumb_func_start UpdatePartySelectionSingleLayout -UpdatePartySelectionSingleLayout: @ 811FFF0 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08120016 - cmp r1, r0 - bgt _0812000C - subs r0, 0x1 - cmp r1, r0 - beq _081200C0 - b _081200EE -_0812000C: - cmp r1, 0x1 - beq _0812005C - cmp r1, 0x2 - beq _08120094 - b _081200EE -_08120016: - ldrb r0, [r4] - movs r1, 0 - ldrsb r1, [r4, r1] - cmp r1, 0 - bne _08120024 - movs r0, 0x7 - b _081200EC -_08120024: - cmp r1, 0x6 - bne _08120034 - ldr r0, _08120030 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _081200EC - .align 2, 0 -_08120030: .4byte gPlayerPartyCount -_08120034: - cmp r1, 0x7 - bne _08120058 - ldr r0, _08120048 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _0812004C - movs r0, 0x6 - b _081200EC - .align 2, 0 -_08120048: .4byte sPartyMenuInternal -_0812004C: - ldr r0, _08120054 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _081200EC - .align 2, 0 -_08120054: .4byte gPlayerPartyCount -_08120058: - subs r0, 0x1 - b _081200EC -_0812005C: - ldrb r2, [r4] - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x7 - beq _081200EA - movs r1, 0 - ldrsb r1, [r4, r1] - ldr r0, _08120084 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _08120090 - ldr r0, _08120088 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _0812008C - movs r0, 0x6 - b _081200EC - .align 2, 0 -_08120084: .4byte gPlayerPartyCount -_08120088: .4byte sPartyMenuInternal -_0812008C: - movs r0, 0x7 - b _081200EC -_08120090: - adds r0, r2, 0x1 - b _081200EC -_08120094: - ldr r0, _081200B8 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x1 - beq _081200EE - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _081200EE - ldr r0, _081200BC @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 28 - lsrs r0, 29 - cmp r0, 0 - bne _081200EC - movs r0, 0x1 - b _081200EC - .align 2, 0 -_081200B8: .4byte gPlayerPartyCount -_081200BC: .4byte sPartyMenuInternal -_081200C0: - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - beq _081200EE - cmp r0, 0x6 - beq _081200EE - cmp r0, 0x7 - beq _081200EE - ldr r0, _081200F4 @ =sPartyMenuInternal - ldr r3, [r0] - movs r1, 0 - ldrsb r1, [r4, r1] - movs r0, 0x7 - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3, 0x8] - movs r0, 0xF - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x8] -_081200EA: - movs r0, 0 -_081200EC: - strb r0, [r4] -_081200EE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081200F4: .4byte sPartyMenuInternal - thumb_func_end UpdatePartySelectionSingleLayout - - thumb_func_start UpdatePartySelectionDoubleLayout -UpdatePartySelectionDoubleLayout: @ 81200F8 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r2, r1, 24 - asrs r5, r1, 24 - movs r6, 0x1 - negs r6, r6 - cmp r5, r6 - beq _08120124 - cmp r5, r6 - bgt _0812011A - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - bne _08120118 - b _08120238 -_08120118: - b _08120290 -_0812011A: - cmp r5, 0x1 - beq _08120180 - cmp r5, 0x2 - beq _081201C0 - b _08120290 -_08120124: - ldrb r1, [r4] - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _08120132 - movs r0, 0x7 - b _0812028E -_08120132: - cmp r0, 0x6 - bne _08120144 - ldr r0, _08120140 @ =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - b _0812028E - .align 2, 0 -_08120140: .4byte gPlayerPartyCount -_08120144: - cmp r0, 0x7 - bne _08120160 - ldr r0, _08120158 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _0812015C - movs r0, 0x6 - b _0812028E - .align 2, 0 -_08120158: .4byte sPartyMenuInternal -_0812015C: - subs r0, r1, 0x1 - strb r0, [r4] -_08120160: - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r1, r2, 24 - asrs r1, 24 - bl GetNewSlotDoubleLayout - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0812017C - b _08120290 -_0812017C: - strb r2, [r4] - b _08120290 -_08120180: - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x6 - bne _0812018C - movs r0, 0x7 - b _0812028E -_0812018C: - cmp r0, 0x7 - bne _08120194 - movs r0, 0 - b _0812028E -_08120194: - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x1 - bl GetNewSlotDoubleLayout - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, r6 - bne _0812017C - ldr r0, _081201B8 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _081201BC - movs r0, 0x6 - b _0812028E - .align 2, 0 -_081201B8: .4byte sPartyMenuInternal -_081201BC: - movs r0, 0x7 - b _0812028E -_081201C0: - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _081201F8 - ldr r0, _081201E8 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 28 - lsrs r6, r0, 29 - cmp r6, 0x3 - bne _081201F0 - ldr r0, _081201EC @ =gPlayerParty + 300 @ &gPlayerParty[3] - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08120290 - strb r6, [r4] - b _08120290 - .align 2, 0 -_081201E8: .4byte sPartyMenuInternal -_081201EC: .4byte gPlayerParty + 300 @ &gPlayerParty[3] -_081201F0: - ldr r0, _081201F4 @ =gPlayerParty + 200 @ &gPlayerParty[2] - b _0812020C - .align 2, 0 -_081201F4: .4byte gPlayerParty + 200 @ &gPlayerParty[2] -_081201F8: - cmp r0, 0x1 - bne _08120290 - ldr r0, _0812021C @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 28 - lsrs r5, r0, 29 - cmp r5, 0x5 - bne _08120224 - ldr r0, _08120220 @ =gPlayerParty + 500 @ &gPlayerParty[5] -_0812020C: - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08120290 - strb r5, [r4] - b _08120290 - .align 2, 0 -_0812021C: .4byte sPartyMenuInternal -_08120220: .4byte gPlayerParty + 500 @ &gPlayerParty[5] -_08120224: - ldr r0, _08120234 @ =gPlayerParty + 400 @ &gPlayerParty[4] - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08120290 - movs r0, 0x4 - b _0812028E - .align 2, 0 -_08120234: .4byte gPlayerParty + 400 @ &gPlayerParty[4] -_08120238: - ldrb r1, [r4] - subs r0, r1, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120268 - ldr r0, _08120264 @ =sPartyMenuInternal - ldr r3, [r0] - movs r1, 0 - ldrsb r1, [r4, r1] - movs r0, 0x7 - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3, 0x8] - movs r0, 0xF - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x8] - movs r0, 0 - b _0812028E - .align 2, 0 -_08120264: .4byte sPartyMenuInternal -_08120268: - subs r0, r1, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08120290 - ldr r0, _08120298 @ =sPartyMenuInternal - ldr r3, [r0] - movs r1, 0 - ldrsb r1, [r4, r1] - movs r0, 0x7 - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3, 0x8] - movs r0, 0xF - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x8] - movs r0, 0x1 -_0812028E: - strb r0, [r4] -_08120290: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08120298: .4byte sPartyMenuInternal - thumb_func_end UpdatePartySelectionDoubleLayout - - thumb_func_start GetNewSlotDoubleLayout -GetNewSlotDoubleLayout: @ 812029C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - asrs r6, r1, 24 -_081202A6: - lsls r0, r5, 24 - asrs r0, 24 - adds r0, r6 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, r5, 24 - lsrs r0, r1, 24 - cmp r0, 0x5 - bhi _081202D4 - asrs r4, r1, 24 - movs r0, 0x64 - muls r0, r4 - ldr r1, _081202D0 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081202A6 - adds r0, r4, 0 - b _081202D8 - .align 2, 0 -_081202D0: .4byte gPlayerParty -_081202D4: - movs r0, 0x1 - negs r0, r0 -_081202D8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetNewSlotDoubleLayout - - thumb_func_start GetMonNickname -GetMonNickname: @ 81202E0 - push {r4,lr} - adds r4, r1, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMonNickname - - thumb_func_start DisplayPartyMenuMessage -DisplayPartyMenuMessage: @ 81202F8 - push {r4,lr} - lsls r4, r1, 24 - lsrs r4, 24 - bl PartyMenuPrintText - ldr r0, _08120320 @ =Task_PrintAndWaitForText - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08120324 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08120320: .4byte Task_PrintAndWaitForText -_08120324: .4byte gTasks - thumb_func_end DisplayPartyMenuMessage - - thumb_func_start Task_PrintAndWaitForText -Task_PrintAndWaitForText: @ 8120328 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r0, 0x6 - bl RunTextPrinters_CheckActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08120364 - ldr r0, _0812036C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0812035E - movs r0, 0x6 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x6 - bl ClearWindowTilemap -_0812035E: - adds r0, r5, 0 - bl DestroyTask -_08120364: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812036C: .4byte gTasks - thumb_func_end Task_PrintAndWaitForText - - thumb_func_start IsPartyMenuTextPrinterActive -IsPartyMenuTextPrinterActive: @ 8120370 - push {lr} - ldr r0, _08120380 @ =Task_PrintAndWaitForText - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08120380: .4byte Task_PrintAndWaitForText - thumb_func_end IsPartyMenuTextPrinterActive - - thumb_func_start Task_WaitForLinkAndReturnToChooseMon -Task_WaitForLinkAndReturnToChooseMon: @ 8120384 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80BF748 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081203AA - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _081203B0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _081203B4 @ =Task_HandleChooseMonInput - str r0, [r1] -_081203AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081203B0: .4byte gTasks -_081203B4: .4byte Task_HandleChooseMonInput - thumb_func_end Task_WaitForLinkAndReturnToChooseMon - - thumb_func_start Task_ReturnToChooseMonAfterText -Task_ReturnToChooseMonAfterText: @ 81203B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08120410 - movs r0, 0x6 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x6 - bl ClearWindowTilemap - bl MenuHelpers_LinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081203FC - ldr r0, _081203F4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _081203F8 @ =Task_WaitForLinkAndReturnToChooseMon - b _0812040E - .align 2, 0 -_081203F4: .4byte gTasks -_081203F8: .4byte Task_WaitForLinkAndReturnToChooseMon -_081203FC: - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _08120418 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812041C @ =Task_HandleChooseMonInput -_0812040E: - str r0, [r1] -_08120410: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120418: .4byte gTasks -_0812041C: .4byte Task_HandleChooseMonInput - thumb_func_end Task_ReturnToChooseMonAfterText - - thumb_func_start DisplayGaveHeldItemMessage -DisplayGaveHeldItemMessage: @ 8120420 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - cmp r3, 0 - bne _0812043C - ldr r3, _08120438 @ =0x0000ffff - movs r0, 0x5 - b _08120448 - .align 2, 0 -_08120438: .4byte 0x0000ffff -_0812043C: - ldr r0, _08120454 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x6 - bne _0812045C - ldr r3, _08120458 @ =0x0000ffff - movs r0, 0x7 -_08120448: - adds r1, r5, 0 - adds r2, r4, 0 - bl ItemUse_SetQuestLogEvent - b _08120468 - .align 2, 0 -_08120454: .4byte gPartyMenu -_08120458: .4byte 0x0000ffff -_0812045C: - ldr r3, _08120498 @ =0x0000ffff - movs r0, 0x6 - adds r1, r5, 0 - adds r2, r4, 0 - bl ItemUse_SetQuestLogEvent -_08120468: - ldr r1, _0812049C @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r1, _081204A0 @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _081204A4 @ =gStringVar4 - ldr r1, _081204A8 @ =gText_PkmnWasGivenItem - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r6, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08120498: .4byte 0x0000ffff -_0812049C: .4byte gStringVar1 -_081204A0: .4byte gStringVar2 -_081204A4: .4byte gStringVar4 -_081204A8: .4byte gText_PkmnWasGivenItem - thumb_func_end DisplayGaveHeldItemMessage - - thumb_func_start DisplayTookHeldItemMessage -DisplayTookHeldItemMessage: @ 81204AC - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - ldr r3, _081204F8 @ =0x0000ffff - movs r0, 0x8 - adds r1, r6, 0 - adds r2, r4, 0 - bl ItemUse_SetQuestLogEvent - ldr r1, _081204FC @ =gStringVar1 - adds r0, r6, 0 - bl GetMonNickname - ldr r1, _08120500 @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _08120504 @ =gStringVar4 - ldr r1, _08120508 @ =gText_ReceivedItemFromPkmn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081204F8: .4byte 0x0000ffff -_081204FC: .4byte gStringVar1 -_08120500: .4byte gStringVar2 -_08120504: .4byte gStringVar4 -_08120508: .4byte gText_ReceivedItemFromPkmn - thumb_func_end DisplayTookHeldItemMessage - - thumb_func_start DisplayAlreadyHoldingItemSwitchMessage -DisplayAlreadyHoldingItemSwitchMessage: @ 812050C - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _08120548 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0812054C @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _08120550 @ =gStringVar4 - ldr r1, _08120554 @ =gText_PkmnAlreadyHoldingItemSwitch - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120548: .4byte gStringVar1 -_0812054C: .4byte gStringVar2 -_08120550: .4byte gStringVar4 -_08120554: .4byte gText_PkmnAlreadyHoldingItemSwitch - thumb_func_end DisplayAlreadyHoldingItemSwitchMessage - - thumb_func_start DisplaySwitchedHeldItemMessage -DisplaySwitchedHeldItemMessage: @ 8120558 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _081205B0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081205B4 @ =gPlayerParty - adds r0, r1 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8124B60 - ldr r1, _081205B8 @ =gStringVar1 - adds r0, r4, 0 - bl CopyItemName - ldr r1, _081205BC @ =gStringVar2 - adds r0, r5, 0 - bl CopyItemName - ldr r4, _081205C0 @ =gStringVar4 - ldr r1, _081205C4 @ =gText_SwitchedPkmnItem - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r6, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081205B0: .4byte gPartyMenu -_081205B4: .4byte gPlayerParty -_081205B8: .4byte gStringVar1 -_081205BC: .4byte gStringVar2 -_081205C0: .4byte gStringVar4 -_081205C4: .4byte gText_SwitchedPkmnItem - thumb_func_end DisplaySwitchedHeldItemMessage - - thumb_func_start GiveItemToMon -GiveItemToMon: @ 81205C8 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r4, r5, 16 - adds r7, r4, 0 - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081205F2 - adds r0, r6, 0 - adds r1, r4, 0 - bl GiveMailToMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08120606 -_081205F2: - mov r0, sp - strb r7, [r0] - mov r1, sp - lsrs r0, r5, 24 - strb r0, [r1, 0x1] - adds r0, r6, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData -_08120606: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end GiveItemToMon - - thumb_func_start TryTakeMonItem -TryTakeMonItem: @ 8120610 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - strh r0, [r1] - cmp r0, 0 - bne _0812062C - movs r0, 0 - b _0812064E -_0812062C: - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _0812064C - movs r1, 0 - mov r0, sp - strh r1, [r0] - adds r0, r4, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - movs r0, 0x2 - b _0812064E -_0812064C: - movs r0, 0x1 -_0812064E: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end TryTakeMonItem - - thumb_func_start BufferBagFullCantTakeItemMessage -BufferBagFullCantTakeItemMessage: @ 8120658 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08120678 - cmp r0, 0x5 - beq _0812067E - ldr r1, _08120674 @ =gStartMenuText_Bag - b _08120686 - .align 2, 0 -_08120674: .4byte gStartMenuText_Bag -_08120678: - movs r0, 0xB6 - lsls r0, 1 - b _08120680 -_0812067E: - ldr r0, _08120698 @ =0x0000016d -_08120680: - bl ItemId_GetName - adds r1, r0, 0 -_08120686: - ldr r0, _0812069C @ =gStringVar1 - bl StringCopy - ldr r0, _081206A0 @ =gStringVar4 - ldr r1, _081206A4 @ =gText_BagFullCouldNotRemoveItem - bl StringExpandPlaceholders - pop {r0} - bx r0 - .align 2, 0 -_08120698: .4byte 0x0000016d -_0812069C: .4byte gStringVar1 -_081206A0: .4byte gStringVar4 -_081206A4: .4byte gText_BagFullCouldNotRemoveItem - thumb_func_end BufferBagFullCantTakeItemMessage - - thumb_func_start Task_PartyMenuModifyHP -Task_PartyMenuModifyHP: @ 81206A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _08120750 @ =gTasks+0x8 - adds r7, r0, r1 - ldrh r0, [r7, 0x4] - ldrh r1, [r7] - adds r0, r1 - strh r0, [r7] - ldrh r0, [r7, 0x6] - subs r0, 0x1 - strh r0, [r7, 0x6] - movs r2, 0x8 - ldrsh r0, [r7, r2] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08120754 @ =gPlayerParty - adds r0, r4 - movs r1, 0x39 - adds r2, r7, 0 - bl SetMonData - movs r3, 0x8 - ldrsh r2, [r7, r3] - adds r0, r2, 0 - muls r0, r5 - adds r0, r4 - ldr r6, _08120758 @ =sPartyMenuBoxes - lsls r2, 4 - ldr r1, [r6] - adds r1, r2 - movs r2, 0x1 - bl DisplayPartyPokemonHPCheck - movs r0, 0x8 - ldrsh r2, [r7, r0] - adds r0, r2, 0 - muls r0, r5 - adds r0, r4 - lsls r2, 4 - ldr r1, [r6] - adds r1, r2 - bl DisplayPartyPokemonHPBarCheck - movs r1, 0x6 - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _08120724 - movs r2, 0 - ldrsh r1, [r7, r2] - cmp r1, 0 - beq _08120724 - movs r3, 0x2 - ldrsh r0, [r7, r3] - cmp r1, r0 - bne _08120746 -_08120724: - movs r0, 0 - ldrsh r1, [r7, r0] - movs r2, 0xA - ldrsh r0, [r7, r2] - cmp r1, r0 - ble _08120740 - ldr r0, _0812075C @ =gStringVar2 - movs r3, 0xA - ldrsh r2, [r7, r3] - subs r1, r2 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN -_08120740: - mov r0, r8 - bl SwitchTaskToFollowupFunc -_08120746: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08120750: .4byte gTasks+0x8 -_08120754: .4byte gPlayerParty -_08120758: .4byte sPartyMenuBoxes -_0812075C: .4byte gStringVar2 - thumb_func_end Task_PartyMenuModifyHP - - thumb_func_start PartyMenuModifyHP -PartyMenuModifyHP: @ 8120760 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - mov r9, r1 - adds r5, r2, 0 - mov r10, r3 - ldr r7, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r5, 24 - lsrs r5, 24 - mov r0, r10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - movs r0, 0x64 - mov r6, r9 - muls r6, r0 - ldr r0, _081207E4 @ =gPlayerParty - adds r6, r0 - mov r0, r8 - lsls r4, r0, 2 - add r4, r8 - lsls r4, 3 - ldr r0, _081207E8 @ =gTasks+0x8 - adds r4, r0 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r4] - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r4, 0x2] - lsls r5, 24 - asrs r5, 24 - strh r5, [r4, 0x4] - mov r0, r10 - strh r0, [r4, 0x6] - mov r0, r9 - strh r0, [r4, 0x8] - ldrh r0, [r4] - strh r0, [r4, 0xA] - ldr r1, _081207EC @ =Task_PartyMenuModifyHP - mov r0, r8 - adds r2, r7, 0 - bl SetTaskFuncWithFollowupFunc - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081207E4: .4byte gPlayerParty -_081207E8: .4byte gTasks+0x8 -_081207EC: .4byte Task_PartyMenuModifyHP - thumb_func_end PartyMenuModifyHP - - thumb_func_start ResetHPTaskData -ResetHPTaskData: @ 81207F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08120814 @ =gTasks+0x8 - adds r3, r0, r1 - cmp r5, 0x5 - bhi _08120852 - lsls r0, r5, 2 - ldr r1, _08120818 @ =_0812081C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08120814: .4byte gTasks+0x8 -_08120818: .4byte _0812081C - .align 2, 0 -_0812081C: - .4byte _08120834 - .4byte _0812083A - .4byte _0812083E - .4byte _08120842 - .4byte _08120846 - .4byte _0812084A -_08120834: - strh r2, [r3] - strh r2, [r3, 0xA] - b _08120852 -_0812083A: - strh r2, [r3, 0x2] - b _08120852 -_0812083E: - strh r2, [r3, 0x4] - b _08120852 -_08120842: - strh r2, [r3, 0x6] - b _08120852 -_08120846: - strh r2, [r3, 0x8] - b _08120852 -_0812084A: - ldr r1, _08120858 @ =Task_PartyMenuModifyHP - adds r0, r4, 0 - bl SetTaskFuncWithFollowupFunc -_08120852: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120858: .4byte Task_PartyMenuModifyHP - thumb_func_end ResetHPTaskData - - thumb_func_start GetAilmentFromStatus -GetAilmentFromStatus: @ 812085C - push {lr} - adds r1, r0, 0 - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - beq _0812086C - movs r0, 0x1 - b _0812089E -_0812086C: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08120878 - movs r0, 0x2 - b _0812089E -_08120878: - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08120884 - movs r0, 0x3 - b _0812089E -_08120884: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08120890 - movs r0, 0x4 - b _0812089E -_08120890: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0812089C - movs r0, 0 - b _0812089E -_0812089C: - movs r0, 0x5 -_0812089E: - pop {r1} - bx r1 - thumb_func_end GetAilmentFromStatus - - thumb_func_start GetMonAilment -GetMonAilment: @ 81208A4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _081208B6 - movs r0, 0x7 - b _081208DE -_081208B6: - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - bl GetAilmentFromStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _081208DE - adds r0, r4, 0 - movs r1, 0 - bl CheckPartyPokerus - lsls r0, 24 - cmp r0, 0 - bne _081208DC - movs r0, 0 - b _081208DE -_081208DC: - movs r0, 0x6 -_081208DE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetMonAilment - - thumb_func_start SetPartyMonsAllowedInMinigame -SetPartyMonsAllowedInMinigame: @ 81208E4 - push {r4,r5,lr} - ldr r2, _08120934 @ =gPartyMenu - ldrb r1, [r2, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0xB - bne _0812096E - adds r5, r2, 0 - adds r5, 0xE - movs r0, 0 - strh r0, [r2, 0xE] - ldr r0, _08120938 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - bne _08120944 - movs r4, 0 - ldr r0, _0812093C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - bcs _0812096E -_0812090C: - movs r0, 0x64 - muls r0, r4 - ldr r1, _08120940 @ =gPlayerParty - adds r0, r1 - bl IsMonAllowedInPokemonJump - lsls r0, 16 - lsrs r0, 16 - lsls r0, r4 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0812093C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - bcc _0812090C - b _0812096E - .align 2, 0 -_08120934: .4byte gPartyMenu -_08120938: .4byte gSpecialVar_0x8005 -_0812093C: .4byte gPlayerPartyCount -_08120940: .4byte gPlayerParty -_08120944: - movs r4, 0 - b _08120966 -_08120948: - movs r0, 0x64 - muls r0, r4 - ldr r1, _08120974 @ =gPlayerParty - adds r0, r1 - bl IsMonAllowedInDodrioBerryPicking - lsls r0, 16 - lsrs r0, 16 - lsls r0, r4 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08120966: - ldr r0, _08120978 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - bcc _08120948 -_0812096E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120974: .4byte gPlayerParty -_08120978: .4byte gPlayerPartyCount - thumb_func_end SetPartyMonsAllowedInMinigame - - thumb_func_start IsMonAllowedInPokemonJump -IsMonAllowedInPokemonJump: @ 812097C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _081209A2 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl sub_8149A00 - cmp r0, 0 - beq _081209A2 - movs r0, 0x1 - b _081209A4 -_081209A2: - movs r0, 0 -_081209A4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsMonAllowedInPokemonJump - - thumb_func_start IsMonAllowedInDodrioBerryPicking -IsMonAllowedInDodrioBerryPicking: @ 81209AC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _081209CA - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0x55 - bne _081209CA - movs r0, 0x1 - b _081209CC -_081209CA: - movs r0, 0 -_081209CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsMonAllowedInDodrioBerryPicking - - thumb_func_start IsMonAllowedInMinigame -IsMonAllowedInMinigame: @ 81209D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081209F0 @ =gPartyMenu - movs r2, 0xE - ldrsh r1, [r1, r2] - asrs r1, r0 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - bne _081209EC - movs r0, 0 -_081209EC: - pop {r1} - bx r1 - .align 2, 0 -_081209F0: .4byte gPartyMenu - thumb_func_end IsMonAllowedInMinigame - - thumb_func_start TryEnterMonForMinigame -TryEnterMonForMinigame: @ 81209F4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - adds r0, r5, 0 - bl IsMonAllowedInMinigame - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08120A24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08120A20 @ =gSpecialVar_0x8004 - strh r5, [r0] - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _08120A46 - .align 2, 0 -_08120A20: .4byte gSpecialVar_0x8004 -_08120A24: - movs r0, 0x1A - bl PlaySE - ldr r0, _08120A4C @ =gUnknown_8417696 - movs r1, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08120A50 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08120A54 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] -_08120A46: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120A4C: .4byte gUnknown_8417696 -_08120A50: .4byte gTasks -_08120A54: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end TryEnterMonForMinigame - - thumb_func_start CancelParticipationPrompt -CancelParticipationPrompt: @ 8120A58 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08120A84 @ =gUnknown_84176B8 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08120A88 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08120A8C @ =Task_CancelParticipationYesNo - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120A84: .4byte gUnknown_84176B8 -_08120A88: .4byte gTasks -_08120A8C: .4byte Task_CancelParticipationYesNo - thumb_func_end CancelParticipationPrompt - - thumb_func_start Task_CancelParticipationYesNo -Task_CancelParticipationYesNo: @ 8120A90 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08120AB4 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08120ABC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120AC0 @ =Task_HandleCancelParticipationYesNoInput - str r0, [r1] -_08120AB4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120ABC: .4byte gTasks -_08120AC0: .4byte Task_HandleCancelParticipationYesNoInput - thumb_func_end Task_CancelParticipationYesNo - - thumb_func_start Task_HandleCancelParticipationYesNoInput -Task_HandleCancelParticipationYesNoInput: @ 8120AC4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08120AEA - cmp r1, 0 - bgt _08120AE4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08120AFC - b _08120B10 -_08120AE4: - cmp r1, 0x1 - beq _08120B02 - b _08120B10 -_08120AEA: - ldr r1, _08120AF8 @ =gSpecialVar_0x8004 - movs r0, 0x7 - strh r0, [r1] - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _08120B10 - .align 2, 0 -_08120AF8: .4byte gSpecialVar_0x8004 -_08120AFC: - movs r0, 0x5 - bl PlaySE -_08120B02: - ldr r0, _08120B18 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120B1C @ =Task_ReturnToChooseMonAfterText - str r0, [r1] -_08120B10: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120B18: .4byte gTasks -_08120B1C: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end Task_HandleCancelParticipationYesNoInput - - thumb_func_start CanMonLearnTMTutor -CanMonLearnTMTutor: @ 8120B20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - lsls r2, 24 - lsrs r6, r2, 24 - mov r8, r6 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08120B42 - movs r0, 0x3 - b _08120B9E -_08120B42: - movs r0, 0x90 - lsls r0, 1 - cmp r4, r0 - bls _08120B64 - adds r1, r4, 0 - subs r1, 0x21 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl CanMonLearnTMHM - cmp r0, 0 - beq _08120B7C - adds r0, r7, 0 - bl ItemIdToBattleMoveId - b _08120B86 -_08120B64: - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl CanLearnTutorMove - lsls r0, 24 - cmp r0, 0 - bne _08120B80 -_08120B7C: - movs r0, 0x1 - b _08120B9E -_08120B80: - mov r0, r8 - bl GetTutorMove -_08120B86: - lsls r0, 16 - lsrs r1, r0, 16 - adds r0, r5, 0 - bl MonKnowsMove - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08120B9C - movs r0, 0 - b _08120B9E -_08120B9C: - movs r0, 0x2 -_08120B9E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CanMonLearnTMTutor - - thumb_func_start GetTutorMove -GetTutorMove: @ 8120BA8 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x10 - beq _08120BC8 - cmp r1, 0x10 - bgt _08120BBC - cmp r1, 0xF - beq _08120BC2 - b _08120BD6 -_08120BBC: - cmp r1, 0x11 - beq _08120BD0 - b _08120BD6 -_08120BC2: - movs r0, 0xA9 - lsls r0, 1 @ MOVE_FRENZY_PLANT - b _08120BDE -_08120BC8: - ldr r0, _08120BCC @ =0x00000133 @ MOVE_BLAST_BURN - b _08120BDE - .align 2, 0 -_08120BCC: .4byte 0x00000133 -_08120BD0: - movs r0, 0x9A - lsls r0, 1 @ MOVE_HYDRO_CANNON - b _08120BDE -_08120BD6: - ldr r0, _08120BE4 @ =sTutorMoves - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] -_08120BDE: - pop {r1} - bx r1 - .align 2, 0 -_08120BE4: .4byte sTutorMoves - thumb_func_end GetTutorMove - - thumb_func_start CanLearnTutorMove -CanLearnTutorMove: @ 8120BE8 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r2, r1, 24 - cmp r2, 0x10 - beq _08120C0C - cmp r2, 0x10 - bgt _08120C00 - cmp r2, 0xF - beq _08120C06 - b _08120C18 -_08120C00: - cmp r2, 0x11 - beq _08120C12 - b _08120C18 -_08120C06: - cmp r0, 3 @ SPECIES_VENUSAUR - beq _08120C34 - b _08120C2A -_08120C0C: - cmp r0, 6 @ SPECIES_CHARIZARD - beq _08120C34 - b _08120C2A -_08120C12: - cmp r0, 9 @ SPECIES_BLASTOISE - beq _08120C34 - b _08120C2A -_08120C18: - ldr r1, _08120C30 @ =sTutorLearnsets - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - asrs r0, r2 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08120C34 -_08120C2A: - movs r0, 0 - b _08120C36 - .align 2, 0 -_08120C30: .4byte sTutorLearnsets -_08120C34: - movs r0, 0x1 -_08120C36: - pop {r1} - bx r1 - thumb_func_end CanLearnTutorMove - - thumb_func_start sub_8120C3C -sub_8120C3C: @ 8120C3C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08120C60 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08120C5C - ldr r0, _08120C64 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120C68 @ =sub_8120C6C - str r0, [r1] -_08120C5C: - pop {r0} - bx r0 - .align 2, 0 -_08120C60: .4byte gPaletteFade -_08120C64: .4byte gTasks -_08120C68: .4byte sub_8120C6C - thumb_func_end sub_8120C3C - - thumb_func_start sub_8120C6C -sub_8120C6C: @ 8120C6C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08120C9C @ =0xffff1fff - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x6 - bl BeginNormalPaletteFade - ldr r1, _08120CA0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08120CA4 @ =sub_8120CA8 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120C9C: .4byte 0xffff1fff -_08120CA0: .4byte gTasks -_08120CA4: .4byte sub_8120CA8 - thumb_func_end sub_8120C6C - - thumb_func_start sub_8120CA8 -sub_8120CA8: @ 8120CA8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08120CCC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08120CC8 - ldr r0, _08120CD0 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120CD4 @ =sub_8120CD8 - str r0, [r1] -_08120CC8: - pop {r0} - bx r0 - .align 2, 0 -_08120CCC: .4byte gPaletteFade -_08120CD0: .4byte gTasks -_08120CD4: .4byte sub_8120CD8 - thumb_func_end sub_8120CA8 - - thumb_func_start sub_8120CD8 -sub_8120CD8: @ 8120CD8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_81220D4 - ldr r2, _08120D00 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x8] - ldr r0, _08120D04 @ =sub_8120D08 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120D00: .4byte gTasks -_08120D04: .4byte sub_8120D08 - thumb_func_end sub_8120CD8 - - thumb_func_start sub_8120D08 -sub_8120D08: @ 8120D08 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r4, r1, 3 - ldr r5, _08120D38 @ =gTasks+0x8 - adds r0, r4, r5 - ldrb r0, [r0] - bl RunTextPrinters_CheckActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08120D30 - adds r0, r5, 0 - subs r0, 0x8 - adds r0, r4, r0 - ldr r1, _08120D3C @ =sub_8120D40 - str r1, [r0] -_08120D30: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120D38: .4byte gTasks+0x8 -_08120D3C: .4byte sub_8120D40 - thumb_func_end sub_8120D08 - - thumb_func_start sub_8120D40 -sub_8120D40: @ 8120D40 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08120D70 @ =0xffff0008 - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x6 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _08120D74 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08120D78 @ =sub_8120D7C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120D70: .4byte 0xffff0008 -_08120D74: .4byte gTasks -_08120D78: .4byte sub_8120D7C - thumb_func_end sub_8120D40 - - thumb_func_start sub_8120D7C -sub_8120D7C: @ 8120D7C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08120DA0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08120D9C - ldr r0, _08120DA4 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120DA8 @ =sub_8120DAC - str r0, [r1] -_08120D9C: - pop {r0} - bx r0 - .align 2, 0 -_08120DA0: .4byte gPaletteFade -_08120DA4: .4byte gTasks -_08120DA8: .4byte sub_8120DAC - thumb_func_end sub_8120D7C - - thumb_func_start sub_8120DAC -sub_8120DAC: @ 8120DAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r5, _08120DD4 @ =gTasks+0x8 - adds r0, r4, r5 - ldrb r0, [r0] - ldr r1, _08120DD8 @ =gUnknown_8417494 - bl sub_8122084 - subs r5, 0x8 - adds r4, r5 - ldr r0, _08120DDC @ =sub_8120DE0 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08120DD4: .4byte gTasks+0x8 -_08120DD8: .4byte gUnknown_8417494 -_08120DDC: .4byte sub_8120DE0 - thumb_func_end sub_8120DAC - - thumb_func_start sub_8120DE0 -sub_8120DE0: @ 8120DE0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, _08120E14 @ =gTasks+0x8 - adds r4, r5, r6 - ldrb r0, [r4] - bl RunTextPrinters_CheckActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08120E0E - ldrb r0, [r4] - bl sub_8122110 - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _08120E18 @ =sub_8120E1C - str r1, [r0] -_08120E0E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08120E14: .4byte gTasks+0x8 -_08120E18: .4byte sub_8120E1C - thumb_func_end sub_8120DE0 - - thumb_func_start sub_8120E1C -sub_8120E1C: @ 8120E1C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08120E4C @ =0x0000fff7 - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x6 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _08120E50 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08120E54 @ =sub_8120E58 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120E4C: .4byte 0x0000fff7 -_08120E50: .4byte gTasks -_08120E54: .4byte sub_8120E58 - thumb_func_end sub_8120E1C - - thumb_func_start sub_8120E58 -sub_8120E58: @ 8120E58 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08120E90 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08120EAC - movs r0, 0 - movs r1, 0x4F - movs r2, 0xD0 - bl TextWindow_SetUserSelectedFrame - movs r0, 0 - movs r1, 0x58 - movs r2, 0xF0 - bl TextWindow_SetStdFrame0_WithPal - ldr r0, _08120E94 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x3 - bne _08120E98 - movs r0, 0x5 - bl DisplayPartyMenuStdMessage - b _08120E9E - .align 2, 0 -_08120E90: .4byte gPaletteFade -_08120E94: .4byte gPartyMenu -_08120E98: - movs r0, 0 - bl DisplayPartyMenuStdMessage -_08120E9E: - ldr r0, _08120EB4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08120EB8 @ =Task_HandleChooseMonInput - str r0, [r1] -_08120EAC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08120EB4: .4byte gTasks -_08120EB8: .4byte Task_HandleChooseMonInput - thumb_func_end sub_8120E58 - - thumb_func_start sub_8120EBC -sub_8120EBC: @ 8120EBC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08120ED8 @ =gTasks+0x8 - adds r3, r1, r0 - movs r2, 0 - strh r2, [r3] - subs r0, 0x8 - adds r1, r0 - ldr r0, _08120EDC @ =sub_8120EE0 - str r0, [r1] - bx lr - .align 2, 0 -_08120ED8: .4byte gTasks+0x8 -_08120EDC: .4byte sub_8120EE0 - thumb_func_end sub_8120EBC - - thumb_func_start sub_8120EE0 -sub_8120EE0: @ 8120EE0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08120F1C @ =gTasks+0x8 - adds r6, r0, r1 - ldr r0, _08120F20 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08120F68 - adds r0, r5, 0 - bl sub_8120F78 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08120F68 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0xA0 - beq _08120F38 - cmp r0, 0xA0 - bgt _08120F24 - cmp r0, 0x50 - beq _08120F2A - b _08120F62 - .align 2, 0 -_08120F1C: .4byte gTasks+0x8 -_08120F20: .4byte gPaletteFade -_08120F24: - cmp r0, 0xF0 - beq _08120F44 - b _08120F62 -_08120F2A: - ldr r0, _08120F34 @ =gPartyMenu + 9 - movs r1, 0x2 - bl UpdateCurrentPartySelection - b _08120F62 - .align 2, 0 -_08120F34: .4byte gPartyMenu + 9 -_08120F38: - movs r0, 0x5 - bl PlaySE - bl CreateSelectionWindow - b _08120F62 -_08120F44: - ldr r4, _08120F70 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xE - bl PartyMenuRemoveWindow - ldr r1, _08120F74 @ =sCursorOptions - ldr r0, [r4] - ldrb r0, [r0, 0xF] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_08120F62: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] -_08120F68: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08120F70: .4byte sPartyMenuInternal -_08120F74: .4byte sCursorOptions - thumb_func_end sub_8120EE0 - thumb_func_start sub_8120F78 sub_8120F78: @ 8120F78 push {lr} @@ -12644,7 +7807,7 @@ sub_8124DE0: @ 8124DE0 push {r4,lr} ldr r4, _08124E0C @ =gSpecialVar_ItemId ldrh r0, [r4] - bl GetItemCompatibilityRule + bl CheckIfItemIsTMHMOrEvolutionStone lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index 44598a330..8ae94ce5e 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -4230,8 +4230,8 @@ sub_81499E0: @ 81499E0 _081499FC: .4byte gUnknown_203F3D4 thumb_func_end sub_81499E0 - thumb_func_start sub_8149A00 -sub_8149A00: @ 8149A00 + thumb_func_start IsSpeciesAllowedInPokemonJump +IsSpeciesAllowedInPokemonJump: @ 8149A00 push {lr} lsls r0, 16 lsrs r0, 16 @@ -4242,7 +4242,7 @@ sub_8149A00: @ 8149A00 lsrs r0, 31 pop {r1} bx r1 - thumb_func_end sub_8149A00 + thumb_func_end IsSpeciesAllowedInPokemonJump thumb_func_start sub_8149A18 sub_8149A18: @ 8149A18 @@ -4264,7 +4264,7 @@ _08149A1C: bl GetMonData lsls r0, 16 lsrs r0, 16 - bl sub_8149A00 + bl IsSpeciesAllowedInPokemonJump cmp r0, 0 beq _08149A54 ldr r1, _08149A50 @ =gSpecialVar_Result diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index 9092a38aa..c757216fd 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -558,7 +558,7 @@ _0811C9AA: adds r0, r4, 0 adds r0, 0x96 ldrh r0, [r0] - bl GetItemCompatibilityRule + bl CheckIfItemIsTMHMOrEvolutionStone lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 diff --git a/asm/shop.s b/asm/shop.s index 7df8f037a..ca92ff4b7 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -793,7 +793,7 @@ _0809B118: movs r1, 0 movs r2, 0xE movs r3, 0x1E - bl SetBgRectPal + bl SetBgTilemapPalette b _0809B14E .align 2, 0 _0809B138: .4byte gUnknown_2039934 @@ -805,7 +805,7 @@ _0809B13C: movs r1, 0 movs r2, 0xC movs r3, 0x1E - bl SetBgRectPal + bl SetBgTilemapPalette _0809B14E: movs r0, 0x1 bl ScheduleBgCopyTilemapToVram diff --git a/data/strings.s b/data/strings.s index a0454c12b..547005fd6 100644 --- a/data/strings.s +++ b/data/strings.s @@ -1259,10 +1259,10 @@ gText_Speed2:: @ 841768D gUnknown_8417693:: @ 0x8417693 .string "HP$" -gUnknown_8417696:: @ 8417696 +gText_PkmnCantParticipate:: @ 8417696 .string "That POKéMON can't participate.{PAUSE_UNTIL_PRESS}$" -gUnknown_84176B8:: @ 84176B8 +gText_CancelParticipation:: @ 84176B8 .string "Cancel participation?$" gUnknown_84176CE:: @ 0x84176CE diff --git a/include/constants/global.h b/include/constants/global.h index d7508c940..68c4f8246 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -80,4 +80,6 @@ enum #define NUM_BAG_POCKETS 5 +#define MULTI_PARTY_SIZE PARTY_SIZE / 2 + #endif //GUARD_CONSTANTS_GLOBAL_H diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index f8f77f466..5c084ee6e 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -25,7 +25,11 @@ #define TUTOR_MOVE_EXPLOSION 12 #define TUTOR_MOVE_ROCK_SLIDE 13 #define TUTOR_MOVE_SUBSTITUTE 14 -#define TUTOR_MOVE_COUNT 15 +#define TUTOR_MOVE_COUNT 15 // regular tutor move count + +#define TUTOR_MOVE_FRENZY_PLANT 15 +#define TUTOR_MOVE_BLAST_BURN 16 +#define TUTOR_MOVE_HYDRO_CANNON 17 #define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_DOUBLE 1 @@ -54,7 +58,7 @@ #define PARTY_ACTION_USE_ITEM 3 #define PARTY_ACTION_ABILITY_PREVENTS 4 #define PARTY_ACTION_GIVE_ITEM 5 -#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC +#define PARTY_ACTION_GIVE_PC_ITEM 6 // TODO: rename this one if necessary. Used for quest log. #define PARTY_ACTION_GIVE_MAILBOX_MAIL 7 #define PARTY_ACTION_SWITCH 8 #define PARTY_ACTION_SWITCHING 9 diff --git a/include/fldeff.h b/include/fldeff.h index 8dcb42500..d44ce75a2 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -47,7 +47,7 @@ bool8 FldEff_UseTeleport(void); // softboiled bool8 SetUpFieldMove_SoftBoiled(void); void ChooseMonForSoftboiled(u8 taskId); -void sub_80E5724(u8 taskId); +void Task_TryUseSoftboiledOnPartyMon(u8 taskId); // sweetscent bool8 SetUpFieldMove_SweetScent(void); diff --git a/include/graphics.h b/include/graphics.h index 930201403..e04f7b564 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3746,6 +3746,9 @@ extern const u32 gPartyMenuPokeball_Pal[]; extern const u32 gPartyMenuPokeballSmall_Gfx[]; extern const u32 gStatusGfx_Icons[]; extern const u32 gStatusPal_Icons[]; +extern const u32 gPartyMenuBg_Gfx[]; +extern const u32 gPartyMenuBg_Tilemap[]; +extern const u32 gPartyMenuBg_Pal[]; // credits extern const u32 gCreditsPokeballBgGfxTiles[]; diff --git a/include/item_use.h b/include/item_use.h index db98533f1..7e9f7a61d 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -40,5 +40,6 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId); void ItemUseOutOfBattle_Itemfinder(u8 taskId); void sub_80A1C44(u8 taskId); u8 CanUseEscapeRopeOnCurrMap(void); +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); #endif //GUARD_ITEM_USE_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 8d042825c..1e75b336c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -5,6 +5,9 @@ #include "task.h" #include "window.h" +#define MENU_L_PRESSED 1 +#define MENU_R_PRESSED 2 + struct YesNoFuncTable { TaskFunc yesFunc; @@ -22,9 +25,9 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1); void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); u8 GetLRKeysState(void); -u8 sub_80BF66C(void); +u8 GetLRKeysPressedAndHeld(void); bool8 itemid_link_can_give_berry(u16 itemId); bool8 itemid_80BF6D8_mail_related(u16 itemId); -void ClearVramOamPltt(void); +void ResetVramOamAndBgCntRegs(void); #endif //GUARD_MENU_HELPERS_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 644e65289..fdc835625 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -15,7 +15,7 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void * MallocAndDecompress(const void * src, u32 * size); -void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); +void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); void ResetBgPositions(void); void InitStandardTextBoxWindows(void); diff --git a/include/party_menu.h b/include/party_menu.h index f5b4bd827..d3eb0181f 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -11,6 +11,7 @@ struct PartyMenu TaskFunc task; u8 menuType:4; u8 layout:2; + u8 unk_8_6:2; s8 slotId; s8 slotId2; u8 action; @@ -39,11 +40,11 @@ void CB2_GiveHoldItem(void); u8 GetCursorSelectionMonId(void); void ChooseMonForDaycare(void); void AnimatePartySlot(u8 monId, u8 a1); -void DisplayPartyMenuStdMessage(u8); +void DisplayPartyMenuStdMessage(u32); void Task_HandleChooseMonInput(u8 taskId); void PartyMenuModifyHP(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); -void GetMonNickname(const struct Pokemon * mon, u8 * dest); -void DisplayPartyMenuMessage(const u8 * src, u8 a1); +u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); +u8 DisplayPartyMenuMessage(const u8 * src, u8 a1); bool8 IsPartyMenuTextPrinterActive(void); void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); void sub_81252D0(u8 taskId, TaskFunc followUpFunc); @@ -69,5 +70,6 @@ void ShowPartyMenuToShowcaseMultiBattleParty(void); void SwitchPartyMonSlots(u8 slot, u8 slot2); void LoadHeldItemIcons(void); void OpenPartyMenuInTutorialBattle(u8 partyAction); +void ClearSelectedPartyOrder(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 62d0e610f..8623b223a 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -4,5 +4,6 @@ #include "main.h" void ResetPokeJumpResults(void); +bool32 IsSpeciesAllowedInPokemonJump(u16 species); #endif // GUARD_POKEMON_JUMP_H diff --git a/include/strings.h b/include/strings.h index 9242c7eaa..b60a5d568 100644 --- a/include/strings.h +++ b/include/strings.h @@ -335,6 +335,15 @@ extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_OtherTrainerCantAcceptPkmn[]; extern const u8 gText_CantTradeWithTrainer[]; +extern const u8 gUnknown_84176CF[]; +extern const u8 gText_PkmnWasGivenItem[]; +extern const u8 gText_ReceivedItemFromPkmn[]; +extern const u8 gText_PkmnAlreadyHoldingItemSwitch[]; +extern const u8 gText_SwitchedPkmnItem[]; +extern const u8 gText_BagFullCouldNotRemoveItem[]; +extern const u8 gText_PkmnCantParticipate[]; +extern const u8 gText_CancelParticipation[]; +extern const u8 gUnknown_8417494[]; // credits extern const u8 gString_Dummy[]; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 466fe7927..bb1b106af 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -765,7 +765,7 @@ static void PrintSelectedBerryDescription(s32 itemIdx) static void SetDescriptionWindowBorderPalette(s32 pal) { - SetBgRectPal(1, 0, 16, 30, 4, pal + 1); + SetBgTilemapPalette(1, 0, 16, 30, 4, pal + 1); ScheduleBgCopyTilemapToVram(1); } diff --git a/src/data/party_menu.h b/src/data/party_menu.h index fde1a80f8..c00fe3613 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -110,24 +110,6 @@ const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); -// NOTE TO MYSELF: remove these after #159 gets merged -#define TEXT_COLOR_TRANSPARENT 0x0 -#define TEXT_COLOR_WHITE 0x1 -#define TEXT_COLOR_DARK_GREY 0x2 -#define TEXT_COLOR_LIGHT_GREY 0x3 -#define TEXT_COLOR_RED 0x4 -#define TEXT_COLOR_LIGHT_RED 0x5 -#define TEXT_COLOR_GREEN 0x6 -#define TEXT_COLOR_LIGHT_GREEN 0x7 -#define TEXT_COLOR_BLUE 0x8 -#define TEXT_COLOR_LIGHT_BLUE 0x9 -#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white -#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green -#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white -#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine -#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green -#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean - const u8 sFontColorTable[][3] = { {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, // Default diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index d68d66d08..60437c125 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -35,7 +35,7 @@ void ChooseMonForSoftboiled(u8 taskId) gTasks[taskId].func = Task_HandleChooseMonInput; } -void sub_80E5724(u8 taskId) +void Task_TryUseSoftboiledOnPartyMon(u8 taskId) { u8 r8 = gPartyMenu.slotId; u8 r5 = gPartyMenu.slotId2; diff --git a/src/item_pc.c b/src/item_pc.c index f4320cd41..f30cf1381 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -709,7 +709,7 @@ static void ItemPc_SetScrollPosition(void) static void ItemPc_SetMessageWindowPalette(int a0) { - SetBgRectPal(1, 0, 14, 30, 6, a0 + 1); + SetBgTilemapPalette(1, 0, 14, 30, 6, a0 + 1); ScheduleBgCopyTilemapToVram(1); } diff --git a/src/item_use.c b/src/item_use.c index 73ad9a284..70673d681 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -44,37 +44,36 @@ #include "constants/songs.h" #include "constants/map_types.h" -EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL; +static EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL; -void sub_80A1084(void); -void sub_80A109C(u8 taskId); -void sub_80A112C(u8 taskId); -void sub_80A11C0(u8 taskId); -bool8 sub_80A1194(void); -void sub_80A1208(void); -void ItemUseOnFieldCB_Bicycle(u8 taskId); -bool8 ItemUseCheckFunc_Rod(void); -void ItemUseOnFieldCB_Rod(u8 taskId); -void FieldUseFunc_EvoItem(u8 taskId); -void sub_80A1648(u8 taskId); -void sub_80A1674(u8 taskId); -void InitTMCaseFromBag(void); -void Task_InitTMCaseFromField(u8 taskId); -void InitBerryPouchFromBag(void); -void Task_InitBerryPouchFromField(u8 taskId); -void InitBerryPouchFromBattle(void); -void InitTeachyTvFromBag(void); -void Task_InitTeachyTvFromField(u8 taskId); -void sub_80A19E8(u8 taskId); -void sub_80A1A44(void); -void sub_80A1B48(u8 taskId); -void sub_80A1C08(u8 taskId); -void sub_80A1CAC(void); -void sub_80A1CC0(u8 taskId); -void sub_80A1D58(void); -void sub_80A1D68(u8 taskId); -void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId); -void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId); +static void sub_80A1084(void); +static void sub_80A109C(u8 taskId); +static void sub_80A112C(u8 taskId); +static void sub_80A11C0(u8 taskId); +static bool8 sub_80A1194(void); +static void sub_80A1208(void); +static void ItemUseOnFieldCB_Bicycle(u8 taskId); +static bool8 ItemUseCheckFunc_Rod(void); +static void ItemUseOnFieldCB_Rod(u8 taskId); +static void sub_80A1648(u8 taskId); +static void sub_80A1674(u8 taskId); +static void InitTMCaseFromBag(void); +static void Task_InitTMCaseFromField(u8 taskId); +static void InitBerryPouchFromBag(void); +static void Task_InitBerryPouchFromField(u8 taskId); +static void InitBerryPouchFromBattle(void); +static void InitTeachyTvFromBag(void); +static void Task_InitTeachyTvFromField(u8 taskId); +static void sub_80A19E8(u8 taskId); +static void sub_80A1A44(void); +static void sub_80A1B48(u8 taskId); +static void sub_80A1C08(u8 taskId); +static void sub_80A1CAC(void); +static void sub_80A1CC0(u8 taskId); +static void sub_80A1D58(void); +static void sub_80A1D68(u8 taskId); +static void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId); +static void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId); // No clue what this is static const u8 sUnref_83E27B4[] = { @@ -132,14 +131,14 @@ static const u8 sUnref_83E27B4[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -void (*const gUnknown_83E2954[])(void) = { +static void (*const gUnknown_83E2954[])(void) = { CB2_ShowPartyMenuForItemUse, CB2_ReturnToField, NULL, NULL }; -void sub_80A0FBC(u8 taskId) +static void sub_80A0FBC(u8 taskId) { u8 itemType; if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY) @@ -160,7 +159,7 @@ void sub_80A0FBC(u8 taskId) } } -void sub_80A103C(u8 taskId) +static void sub_80A103C(u8 taskId) { if (gTasks[taskId].data[3] != 1) { @@ -171,13 +170,13 @@ void sub_80A103C(u8 taskId) sItemUseOnFieldCB(taskId); } -void sub_80A1084(void) +static void sub_80A1084(void) { sub_807DC00(); CreateTask(sub_80A109C, 8); } -void sub_80A109C(u8 taskId) +static void sub_80A109C(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) { @@ -185,7 +184,7 @@ void sub_80A109C(u8 taskId) } } -void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str) +static void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str) { StringExpandPlaceholders(gStringVar4, str); if (a1 == FALSE) @@ -194,12 +193,12 @@ void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str) DisplayItemMessageOnField(taskId, a2, gStringVar4, sub_80A112C); } -void sub_80A1110(u8 taskId, bool8 a1) +static void sub_80A1110(u8 taskId, bool8 a1) { sub_80A10C4(taskId, a1, 4, gUnknown_8416425); } -void sub_80A112C(u8 taskId) +static void sub_80A112C(u8 taskId) { ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); @@ -207,7 +206,7 @@ void sub_80A112C(u8 taskId) ScriptContext2_Disable(); } -u8 GetItemCompatibilityRule(u16 itemId) +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) { if (ItemId_GetPocket(itemId) == POCKET_TM_CASE) return 1; @@ -217,12 +216,12 @@ u8 GetItemCompatibilityRule(u16 itemId) return 0; } -void sub_80A1184(void) +static void sub_80A1184(void) { gFieldCallback2 = sub_80A1194; } -bool8 sub_80A1194(void) +static bool8 sub_80A1194(void) { FreezeEventObjects(); ScriptContext2_Enable(); @@ -232,7 +231,7 @@ bool8 sub_80A1194(void) return TRUE; } -void sub_80A11C0(u8 taskId) +static void sub_80A11C0(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) { @@ -248,7 +247,7 @@ void FieldUseFunc_OrangeMail(u8 taskId) ItemMenu_StartFadeToExitCallback(taskId); } -void sub_80A1208(void) +static void sub_80A1208(void) { struct MailStruct mail; @@ -279,7 +278,7 @@ void FieldUseFunc_MachBike(u8 taskId) sub_80A1110(taskId, gTasks[taskId].data[3]); } -void ItemUseOnFieldCB_Bicycle(u8 taskId) +static void ItemUseOnFieldCB_Bicycle(u8 taskId) { if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) PlaySE(SE_JITENSYA); @@ -300,7 +299,7 @@ void FieldUseFunc_OldRod(u8 taskId) sub_80A1110(taskId, gTasks[taskId].data[3]); } -bool8 ItemUseCheckFunc_Rod(void) +static bool8 ItemUseCheckFunc_Rod(void) { s16 x, y; u16 behavior; @@ -327,7 +326,7 @@ bool8 ItemUseCheckFunc_Rod(void) return FALSE; } -void ItemUseOnFieldCB_Rod(u8 taskId) +static void ItemUseOnFieldCB_Rod(u8 taskId) { sub_805D2C0(ItemId_GetSecondaryId(gSpecialVar_ItemId)); DestroyTask(taskId); @@ -391,13 +390,13 @@ void FieldUseFunc_PokeFlute(u8 taskId) } } -void sub_80A1648(u8 taskId) +static void sub_80A1648(u8 taskId) { PlayFanfareByFanfareNum(FANFARE_POKEFLUTE); gTasks[taskId].func = sub_80A1674; } -void sub_80A1674(u8 taskId) +static void sub_80A1674(u8 taskId) { if (WaitFanfare(FALSE)) { @@ -408,7 +407,7 @@ void sub_80A1674(u8 taskId) } } -void sub_80A16D0(u8 taskId) +static void sub_80A16D0(u8 taskId) { sub_80A0FBC(taskId); } @@ -464,12 +463,12 @@ void FieldUseFunc_TmCase(u8 taskId) } } -void InitTMCaseFromBag(void) +static void InitTMCaseFromBag(void) { InitTMCase(0, CB2_BagMenuFromStartMenu, 0); } -void Task_InitTMCaseFromField(u8 taskId) +static void Task_InitTMCaseFromField(u8 taskId) { if (!gPaletteFade.active) { @@ -495,12 +494,12 @@ void FieldUseFunc_BerryPouch(u8 taskId) } } -void InitBerryPouchFromBag(void) +static void InitBerryPouchFromBag(void) { InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_BagMenuFromStartMenu, 0); } -void Task_InitBerryPouchFromField(u8 taskId) +static void Task_InitBerryPouchFromField(u8 taskId) { if (!gPaletteFade.active) { @@ -517,7 +516,7 @@ void BattleUseFunc_BerryPouch(u8 taskId) ItemMenu_StartFadeToExitCallback(taskId); } -void InitBerryPouchFromBattle(void) +static void InitBerryPouchFromBattle(void) { InitBerryPouch(BERRYPOUCH_FROMBATTLE, sub_8107ECC, 0); } @@ -538,12 +537,12 @@ void FieldUseFunc_TeachyTv(u8 taskId) } } -void InitTeachyTvFromBag(void) +static void InitTeachyTvFromBag(void) { InitTeachyTvController(0, CB2_BagMenuFromStartMenu); } -void Task_InitTeachyTvFromField(u8 taskId) +static void Task_InitTeachyTvFromField(u8 taskId) { if (!gPaletteFade.active) { @@ -566,7 +565,7 @@ void FieldUseFunc_SuperRepel(u8 taskId) DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8); } -void sub_80A19E8(u8 taskId) +static void sub_80A19E8(u8 taskId) { if (!IsSEPlaying()) { @@ -577,7 +576,7 @@ void sub_80A19E8(u8 taskId) } } -void sub_80A1A44(void) +static void sub_80A1A44(void) { RemoveBagItem(gSpecialVar_ItemId, 1); sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId)); @@ -609,7 +608,7 @@ void FieldUseFunc_BlackFlute(u8 taskId) } } -void sub_80A1B48(u8 taskId) +static void sub_80A1B48(u8 taskId) { if (++gTasks[taskId].data[8] > 7) { @@ -638,7 +637,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) sub_80A1110(taskId, gTasks[taskId].data[3]); } -void sub_80A1C08(u8 taskId) +static void sub_80A1C08(u8 taskId) { Overworld_ResetStateAfterDigEscRope(); sub_80A1A44(); @@ -668,12 +667,12 @@ void FieldUseFunc_TownMap(u8 taskId) } } -void sub_80A1CAC(void) +static void sub_80A1CAC(void) { sub_80BFF50(0, CB2_BagMenuFromStartMenu); } -void sub_80A1CC0(u8 taskId) +static void sub_80A1CC0(u8 taskId) { if (!gPaletteFade.active) { @@ -700,12 +699,12 @@ void FieldUseFunc_FameChecker(u8 taskId) } } -void sub_80A1D58(void) +static void sub_80A1D58(void) { UseFameChecker(CB2_BagMenuFromStartMenu); } -void sub_80A1D68(u8 taskId) +static void sub_80A1D68(u8 taskId) { if (!gPaletteFade.active) { @@ -774,7 +773,7 @@ void BattleUseFunc_GuardSpec(u8 taskId) } } -void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId) +static void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -787,7 +786,7 @@ void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId) } } -void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId) +static void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -796,7 +795,7 @@ void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId) } } -void ItemUse_SwitchToPartyMenuInBattle(u8 taskId) +static void ItemUse_SwitchToPartyMenuInBattle(u8 taskId) { if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) { @@ -816,7 +815,7 @@ void BattleUseFunc_Medicine(u8 taskId) ItemUse_SwitchToPartyMenuInBattle(taskId); } -void sub_80A1FD8(u8 taskId) +static void sub_80A1FD8(u8 taskId) { gItemUseCB = ItemUseCB_SacredAsh; ItemUse_SwitchToPartyMenuInBattle(taskId); diff --git a/src/menu.c b/src/menu.c index b8a68145c..5a0da28b9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -815,13 +815,13 @@ static s8 sub_81106F4(void) MultichoiceGrid_MoveCursor(0, 1); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1) + else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == 1) { PlaySE(SE_SELECT); MultichoiceGrid_MoveCursor(-1, 0); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2) + else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == 2) { PlaySE(SE_SELECT); MultichoiceGrid_MoveCursor(1, 0); @@ -857,13 +857,13 @@ static s8 sub_81107A0(void) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1) + else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == 1) { if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2) + else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == 2) { if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0)) PlaySE(SE_SELECT); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index f17bff0d0..905e3c1ea 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -83,7 +83,7 @@ u8 GetLRKeysState(void) return 0; } -u8 sub_80BF66C(void) +u8 GetLRKeysPressedAndHeld(void) { if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { @@ -149,7 +149,7 @@ void SetVBlankHBlankCallbacksToNull(void) SetHBlankCallback(NULL); } -void ClearVramOamPltt(void) +void ResetVramOamAndBgCntRegs(void) { ResetAllBgsCoordinatesAndBgCntRegs(); CpuFill16(0, (void*) VRAM, VRAM_SIZE); diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index f879e6810..decd000d6 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -343,7 +343,7 @@ static u16 CopyDecompressedTileDataToVram(u8 bgId, const void *src, u16 size, u1 return LoadBgTilemap(bgId, src, size, offset); } -void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette) +void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette) { u8 i, j; u16 *ptr = GetBgTilemapBuffer(bgId); diff --git a/src/party_menu.c b/src/party_menu.c index 674b329c2..73965c4ae 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -21,12 +21,14 @@ #include "fldeff.h" #include "gpu_regs.h" #include "graphics.h" +#include "help_system.h" #include "item.h" #include "item_menu.h" #include "item_use.h" #include "link.h" #include "link_rfu.h" #include "mail.h" +#include "mail_data.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" @@ -150,6 +152,117 @@ void CursorCB_FieldMove(u8 taskId); bool8 SetUpFieldMove_Fly(void); bool8 SetUpFieldMove_Waterfall(void); bool8 SetUpFieldMove_Surf(void); +void CB2_InitPartyMenu(void); +void ResetPartyMenu(void); +bool8 ShowPartyMenu(void); +void SetPartyMonsAllowedInMinigame(void); +void ExitPartyMenu(void); +bool8 CreatePartyMonSpritesLoop(void); +bool8 AllocPartyMenuBg(void); +bool8 AllocPartyMenuBgGfx(void); +void InitPartyMenuWindows(u8 layout); +void InitPartyMenuBoxes(u8 layout); +void LoadPartyMenuPokeballGfx(void); +void LoadPartyMenuAilmentGfx(void); +bool8 RenderPartyMenuBoxes(void); +void CreateCancelConfirmPokeballSprites(void); +void CreateCancelConfirmWindows(bool8 chooseHalf); +void Task_ExitPartyMenu(u8 taskId); +void FreePartyPointers(void); +void PartyPaletteBufferCopy(u8 offset); +void DisplayPartyPokemonDataForMultiBattle(u8 slot); +void DisplayPartyPokemonDataForChooseHalf(u8 slot); +bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot); +void DisplayPartyPokemonData(u8 slot); +void DisplayPartyPokemonDataForWirelessMinigame(u8 slot); +void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags); +void DrawEmptySlot(u8 windowId); +void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c); +bool8 GetBattleEntryEligibility(struct Pokemon *mon); +bool8 IsMonAllowedInMinigame(u8 slot); +void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor); +u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor); +void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align); +void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox); +void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox); +void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox); +void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox); +void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox); +void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys); +void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox); +void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox); +void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox); +void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot); +void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void CreateCancelConfirmPokeballSprites(void); +void DrawCancelConfirmButtons(void); +u8 CreatePokeballButtonSprite(u8 x, u8 y); +u8 CreateSmallPokeballButtonSprite(u8 x, u8 y); +u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum); +void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum); +void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum); +void Task_ClosePartyMenuAndSetCB2(u8 taskId); +void UpdatePartyToFieldOrder(void); +s8 *GetCurrentPartySlotPtr(void); +u16 PartyMenuButtonHandler(s8 *slotPtr); +void HandleChooseMonSelection(u8 taskId, s8 *slotPtr); +void HandleChooseMonCancel(u8 taskId, s8 *slotPtr); +void MoveCursorToConfirm(void); +bool8 IsSelectedMonNotEgg(u8 *slotPtr); +void TryTutorSelectedMon(u8 taskId); +void TryGiveMailToSelectedMon(u8 taskId); +void SwitchSelectedMons(u8 taskId); +void TryEnterMonForMinigame(u8 taskId, u8 slot); +void Task_TryCreateSelectionWindow(u8 taskId); +void TryGiveItemOrMailToSelectedMon(u8 taskId); +void PartyMenuRemoveWindow(u8 *ptr); +void CB2_SetUpExitToBattleScreen(void); +void Task_ClosePartyMenuAfterText(u8 taskId); +void FinishTwoMonAction(u8 taskId); +void CancelParticipationPrompt(u8 taskId); +void DisplayCancelChooseMonYesNo(u8 taskId); +void Task_CancelChooseMonYesNo(u8 taskId); +void Task_HandleCancelChooseMonYesNoInput(u8 taskId); +void PartyMenuDisplayYesNoMenu(void); +void Task_ReturnToChooseMonAfterText(u8 taskId); +void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir); +void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir); +void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir); +s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir); +void Task_PrintAndWaitForText(u8 taskId); +void PartyMenuPrintText(const u8 *text); +void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2); +bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon); +bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon); +void Task_CancelParticipationYesNo(u8 taskId); +void Task_HandleCancelParticipationYesNoInput(u8 taskId); +void Task_TryCreateSelectionWindow(u8 taskId); +u16 GetTutorMove(u8 tutor); +bool8 CanLearnTutorMove(u16 species, u8 tutor); +void sub_8120C6C(u8 taskId); +void sub_8120CA8(u8 taskId); +void sub_8120CD8(u8 taskId); +void sub_8120D08(u8 taskId); +void sub_8120D40(u8 taskId); +void sub_8120D7C(u8 taskId); +void sub_8120DAC(u8 taskId); +void sub_8120DE0(u8 taskId); +void sub_8120E1C(u8 taskId); +void sub_8120E58(u8 taskId); +void sub_8120EE0(u8 taskId); +bool8 sub_8120F78(u8 taskId); +bool8 sub_81220D4(void); +void sub_8122084(u8 windowId, const u8 *str); +void sub_8122110(u8 windowId); +void CreateSelectionWindow(void); EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; EWRAM_DATA struct PartyMenu gPartyMenu = {0}; @@ -170,3 +283,1677 @@ void (*gItemUseCB)(u8, TaskFunc); #include "data/pokemon/tutor_learnsets.h" #include "data/party_menu.h" + +void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCursorPos, u8 messageId, TaskFunc task, MainCallback callback) +{ + u16 i; + + ResetPartyMenu(); + sPartyMenuInternal = Alloc(sizeof(struct PartyMenuInternal)); + if (sPartyMenuInternal == NULL) + { + SetMainCallback2(callback); + } + else + { + gPartyMenu.menuType = menuType; + gPartyMenu.exitCallback = callback; + gPartyMenu.action = partyAction; + sPartyMenuInternal->messageId = messageId; + sPartyMenuInternal->task = task; + sPartyMenuInternal->exitCallback = NULL; + sPartyMenuInternal->lastSelectedSlot = 0; + if (menuType == PARTY_MENU_TYPE_CHOOSE_HALF) + sPartyMenuInternal->chooseHalf = TRUE; + else + sPartyMenuInternal->chooseHalf = FALSE; + if (layout != KEEP_PARTY_LAYOUT) + gPartyMenu.layout = layout; + for (i = 0; i < NELEMS(sPartyMenuInternal->data); ++i) + sPartyMenuInternal->data[i] = 0; + for (i = 0; i < NELEMS(sPartyMenuInternal->windowId); ++i) + sPartyMenuInternal->windowId[i] = 0xFF; + if (!keepCursorPos) + gPartyMenu.slotId = 0; + else if (gPartyMenu.slotId > PARTY_SIZE - 1 || GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES) == SPECIES_NONE) + gPartyMenu.slotId = 0; + gTextFlags.autoScroll = FALSE; + CalculatePlayerPartyCount(); + SetMainCallback2(CB2_InitPartyMenu); + } +} + +void CB2_UpdatePartyMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + DoScheduledBgTilemapCopiesToVram(); + UpdatePaletteFade(); +} + +void VBlankCB_PartyMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void CB2_InitPartyMenu(void) +{ + while (TRUE) + { + if (sub_80BF748() == TRUE || ShowPartyMenu() == TRUE || MenuHelpers_LinkSomething() == TRUE) + break; + } +} + +bool8 ShowPartyMenu(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + ResetVramOamAndBgCntRegs(); + ClearScheduledBgCopiesToVram(); + ++gMain.state; + break; + case 1: + ScanlineEffect_Stop(); + ++gMain.state; + break; + case 2: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + ++gMain.state; + break; + case 3: + ResetSpriteData(); + ++gMain.state; + break; + case 4: + FreeAllSpritePalettes(); + ++gMain.state; + break; + case 5: + if (!MenuHelpers_LinkSomething()) + ResetTasks(); + ++gMain.state; + break; + case 6: + SetPartyMonsAllowedInMinigame(); + ++gMain.state; + break; + case 7: + if (!AllocPartyMenuBg()) + { + ExitPartyMenu(); + return TRUE; + } + else + { + sPartyMenuInternal->data[0] = 0; + ++gMain.state; + } + break; + case 8: + if (AllocPartyMenuBgGfx()) + ++gMain.state; + break; + case 9: + InitPartyMenuWindows(gPartyMenu.layout); + ++gMain.state; + break; + case 10: + InitPartyMenuBoxes(gPartyMenu.layout); + sPartyMenuInternal->data[0] = 0; + ++gMain.state; + break; + case 11: + LoadHeldItemIcons(); + ++gMain.state; + break; + case 12: + LoadPartyMenuPokeballGfx(); + ++gMain.state; + break; + case 13: + LoadPartyMenuAilmentGfx(); + ++gMain.state; + break; + case 14: + LoadMonIconPalettes(); + ++gMain.state; + break; + case 15: + if (CreatePartyMonSpritesLoop()) + { + sPartyMenuInternal->data[0] = 0; + ++gMain.state; + } + break; + case 16: + if (RenderPartyMenuBoxes()) + { + sPartyMenuInternal->data[0] = 0; + ++gMain.state; + } + break; + case 17: + CreateCancelConfirmPokeballSprites(); + ++gMain.state; + break; + case 18: + CreateCancelConfirmWindows(sPartyMenuInternal->chooseHalf); + ++gMain.state; + break; + case 19: + HelpSystem_SetSomeVariable2(5); + ++gMain.state; + break; + case 20: + CreateTask(sPartyMenuInternal->task, 0); + DisplayPartyMenuStdMessage(sPartyMenuInternal->messageId); + ++gMain.state; + break; + case 21: + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + ++gMain.state; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK); + gPaletteFade.bufferTransferDisabled = FALSE; + ++gMain.state; + break; + default: + SetVBlankCallback(VBlankCB_PartyMenu); + SetMainCallback2(CB2_UpdatePartyMenu); + return TRUE; + } + return FALSE; +} + +void ExitPartyMenu(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + CreateTask(Task_ExitPartyMenu, 0); + SetVBlankCallback(VBlankCB_PartyMenu); + SetMainCallback2(CB2_UpdatePartyMenu); +} + +void Task_ExitPartyMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(gPartyMenu.exitCallback); + FreePartyPointers(); + DestroyTask(taskId); + } +} + +void ResetPartyMenu(void) +{ + sPartyMenuInternal = NULL; + sPartyBgTilemapBuffer = NULL; + sPartyMenuBoxes = NULL; + sPartyBgGfxTilemap = NULL; +} + +bool8 AllocPartyMenuBg(void) +{ + ResetAllBgsCoordinatesAndBgCntRegs(); + sPartyBgTilemapBuffer = Alloc(0x800); + if (sPartyBgTilemapBuffer == NULL) + return FALSE; + memset(sPartyBgTilemapBuffer, 0, 0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sPartyMenuBgTemplates, NELEMS(sPartyMenuBgTemplates)); + SetBgTilemapBuffer(1, sPartyBgTilemapBuffer); + ScheduleBgCopyTilemapToVram(1); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + return TRUE; +} + +bool8 AllocPartyMenuBgGfx(void) +{ + u32 sizeout; + + switch (sPartyMenuInternal->data[0]) + { + case 0: + sPartyBgGfxTilemap = MallocAndDecompress(gPartyMenuBg_Gfx, &sizeout); + LoadBgTiles(1, sPartyBgGfxTilemap, sizeout, 0); + ++sPartyMenuInternal->data[0]; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + LZDecompressWram(gPartyMenuBg_Tilemap, sPartyBgTilemapBuffer); + ++sPartyMenuInternal->data[0]; + } + break; + case 2: + LoadCompressedPalette(gPartyMenuBg_Pal, 0, 0x160); + CpuCopy16(gPlttBufferUnfaded, sPartyMenuInternal->palBuffer, 0x160); + ++sPartyMenuInternal->data[0]; + break; + case 3: + PartyPaletteBufferCopy(4); + ++sPartyMenuInternal->data[0]; + break; + case 4: + PartyPaletteBufferCopy(5); + ++sPartyMenuInternal->data[0]; + break; + case 5: + PartyPaletteBufferCopy(6); + ++sPartyMenuInternal->data[0]; + break; + case 6: + PartyPaletteBufferCopy(7); + ++sPartyMenuInternal->data[0]; + break; + case 7: + PartyPaletteBufferCopy(8); + ++sPartyMenuInternal->data[0]; + break; + default: + return TRUE; + } + return FALSE; +} + +void PartyPaletteBufferCopy(u8 offset) +{ + offset *= 16; + CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferUnfaded[offset], 32); + CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferFaded[offset], 32); +} + +void FreePartyPointers(void) +{ + if (sPartyMenuInternal) + Free(sPartyMenuInternal); + if (sPartyBgTilemapBuffer) + Free(sPartyBgTilemapBuffer); + if (sPartyBgGfxTilemap) + Free(sPartyBgGfxTilemap); + if (sPartyMenuBoxes) + Free(sPartyMenuBoxes); + FreeAllWindowBuffers(); +} + +void InitPartyMenuBoxes(u8 layout) +{ + u8 i; + + sPartyMenuBoxes = Alloc(sizeof(struct PartyMenuBox[PARTY_SIZE])); + for (i = 0; i < PARTY_SIZE; ++i) + { + sPartyMenuBoxes[i].infoRects = &sPartyBoxInfoRects[PARTY_BOX_RIGHT_COLUMN]; + sPartyMenuBoxes[i].spriteCoords = sPartyMenuSpriteCoords[layout][i]; + sPartyMenuBoxes[i].windowId = i; + } + // The first party mon goes in the left column + sPartyMenuBoxes[0].infoRects = &sPartyBoxInfoRects[PARTY_BOX_LEFT_COLUMN]; + if (layout == PARTY_LAYOUT_MULTI_SHOWCASE) + sPartyMenuBoxes[3].infoRects = &sPartyBoxInfoRects[PARTY_BOX_LEFT_COLUMN]; + else if (layout != PARTY_LAYOUT_SINGLE) + sPartyMenuBoxes[1].infoRects = &sPartyBoxInfoRects[PARTY_BOX_LEFT_COLUMN]; +} + +void RenderPartyMenuBox(u8 slot) +{ + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE && slot >= MULTI_PARTY_SIZE) + { + DisplayPartyPokemonDataForMultiBattle(slot); + LoadPartyBoxPalette(&sPartyMenuBoxes[slot], PARTY_PAL_MULTI_ALT); + CopyWindowToVram(sPartyMenuBoxes[slot].windowId, 2); + PutWindowTilemap(sPartyMenuBoxes[slot].windowId); + ScheduleBgCopyTilemapToVram(2); + } + else + { + if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) == SPECIES_NONE) + { + DrawEmptySlot(sPartyMenuBoxes[slot].windowId); + CopyWindowToVram(sPartyMenuBoxes[slot].windowId, 2); + } + else + { + if (gPartyMenu.menuType == PARTY_MENU_TYPE_CHOOSE_HALF) + DisplayPartyPokemonDataForChooseHalf(slot); + else if (gPartyMenu.menuType == PARTY_MENU_TYPE_MINIGAME) + DisplayPartyPokemonDataForWirelessMinigame(slot); + else if (!DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(slot)) + DisplayPartyPokemonData(slot); + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE) + AnimatePartySlot(slot, 0); + else if (gPartyMenu.slotId == slot) + AnimatePartySlot(slot, 1); + else + AnimatePartySlot(slot, 0); + } + PutWindowTilemap(sPartyMenuBoxes[slot].windowId); + ScheduleBgCopyTilemapToVram(0); + } +} + +void DisplayPartyPokemonData(u8 slot) +{ + if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG)) + { + sPartyMenuBoxes[slot].infoRects->blitFunc(sPartyMenuBoxes[slot].windowId, 0, 0, 0, 0, TRUE); + DisplayPartyPokemonNickname(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + } + else + { + sPartyMenuBoxes[slot].infoRects->blitFunc(sPartyMenuBoxes[slot].windowId, 0, 0, 0, 0, FALSE); + DisplayPartyPokemonNickname(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonLevelCheck(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonGenderNidoranCheck(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonHPCheck(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonMaxHPCheck(&gPlayerParty[slot], &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonHPBarCheck(&gPlayerParty[slot], &sPartyMenuBoxes[slot]); + } +} + +void DisplayPartyPokemonDescriptionData(u8 slot, u8 stringId) +{ + struct Pokemon *mon = &gPlayerParty[slot]; + + sPartyMenuBoxes[slot].infoRects->blitFunc(sPartyMenuBoxes[slot].windowId, 0, 0, 0, 0, TRUE); + DisplayPartyPokemonNickname(mon, &sPartyMenuBoxes[slot], 0); + if (!GetMonData(mon, MON_DATA_IS_EGG)) + { + DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[slot], 0); + DisplayPartyPokemonGenderNidoranCheck(mon, &sPartyMenuBoxes[slot], 0); + } + DisplayPartyPokemonDescriptionText(stringId, &sPartyMenuBoxes[slot], 0); +} + +void DisplayPartyPokemonDataForChooseHalf(u8 slot) +{ + u8 i; + struct Pokemon *mon = &gPlayerParty[slot]; + u8 *order = gSelectedOrderFromParty; + u8 r3; + + if (!GetBattleEntryEligibility(mon)) + { + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NOT_ABLE); + } + else + { + if (gPartyMenu.unk_8_6 == 2) + r3 = 2; + else + r3 = 3; + for (i = 0; i < r3; ++i) + { + if (order[i] != 0 && (order[i] - 1) == slot) + { + DisplayPartyPokemonDescriptionData(slot, i + PARTYBOX_DESC_FIRST); + return; + } + } + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_ABLE_3); + } +} + +void DisplayPartyPokemonDataForWirelessMinigame(u8 slot) +{ + if (IsMonAllowedInMinigame(slot) == TRUE) + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_ABLE); + else + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NOT_ABLE); +} + +// Returns TRUE if teaching move or cant evolve with item (i.e. description data is shown), FALSE otherwise +bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) +{ + struct Pokemon *currentPokemon = &gPlayerParty[slot]; + u16 item = gSpecialVar_ItemId; + + if (gPartyMenu.action == PARTY_ACTION_MOVE_TUTOR) + { + gSpecialVar_Result = FALSE; + if (gSpecialVar_0x8005 > 14) + return FALSE; + DisplayPartyPokemonDataToTeachMove(slot, 0, gSpecialVar_0x8005); + } + else + { + if (gPartyMenu.action != PARTY_ACTION_USE_ITEM) + return FALSE; + switch (CheckIfItemIsTMHMOrEvolutionStone(item)) + { + default: + return FALSE; + case 1: // TM/HM + DisplayPartyPokemonDataToTeachMove(slot, item, 0); + break; + case 2: // Evolution stone + if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE) + return FALSE; + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NO_USE); + break; + } + } + return TRUE; +} + +void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor) +{ + switch (CanMonLearnTMTutor(&gPlayerParty[slot], item, tutor)) + { + case CANNOT_LEARN_MOVE: + case CANNOT_LEARN_MOVE_IS_EGG: + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NOT_ABLE_2); + break; + case ALREADY_KNOWS_MOVE: + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_LEARNED); + break; + default: + DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_ABLE_2); + break; + } +} + +void DisplayPartyPokemonDataForMultiBattle(u8 slot) +{ + struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot]; + u8 actualSlot = slot - (3); + + if (gMultiPartnerParty[actualSlot].species == SPECIES_NONE) + { + DrawEmptySlot(menuBox->windowId); + } + else + { + menuBox->infoRects->blitFunc(menuBox->windowId, 0, 0, 0, 0, FALSE); + StringCopy(gStringVar1, gMultiPartnerParty[actualSlot].nickname); + StringGetEnd10(gStringVar1); + if (StringLength(gStringVar1) <= 5) + ConvertInternationalString(gStringVar1, 1); + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, menuBox->infoRects->dimensions); + DisplayPartyPokemonLevel(gMultiPartnerParty[actualSlot].level, menuBox); + DisplayPartyPokemonGender(gMultiPartnerParty[actualSlot].gender, gMultiPartnerParty[actualSlot].species, gMultiPartnerParty[actualSlot].nickname, menuBox); + DisplayPartyPokemonHP(gMultiPartnerParty[actualSlot].hp, menuBox); + DisplayPartyPokemonMaxHP(gMultiPartnerParty[actualSlot].maxhp, menuBox); + DisplayPartyPokemonHPBar(gMultiPartnerParty[actualSlot].hp, gMultiPartnerParty[actualSlot].maxhp, menuBox); + } +} + +bool8 RenderPartyMenuBoxes(void) +{ + RenderPartyMenuBox(sPartyMenuInternal->data[0]); + if (++sPartyMenuInternal->data[0] == PARTY_SIZE) + return TRUE; + else + return FALSE; +} + +u8 *GetPartyMenuBgTile(u16 tileId) +{ + return &sPartyBgGfxTilemap[tileId << 5]; +} + +void CreatePartyMonSprites(u8 slot) +{ + u8 actualSlot; + + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE && slot >= MULTI_PARTY_SIZE) + { + u8 status; + + actualSlot = slot - MULTI_PARTY_SIZE; + if (gMultiPartnerParty[actualSlot].species != SPECIES_NONE) + { + CreatePartyMonIconSpriteParameterized(gMultiPartnerParty[actualSlot].species, gMultiPartnerParty[actualSlot].personality, &sPartyMenuBoxes[slot], 0, FALSE); + CreatePartyMonHeldItemSpriteParameterized(gMultiPartnerParty[actualSlot].species, gMultiPartnerParty[actualSlot].heldItem, &sPartyMenuBoxes[slot]); + CreatePartyMonPokeballSpriteParameterized(gMultiPartnerParty[actualSlot].species, &sPartyMenuBoxes[slot]); + if (gMultiPartnerParty[actualSlot].hp == 0) + status = AILMENT_FNT; + else + status = GetAilmentFromStatus(gMultiPartnerParty[actualSlot].status); + CreatePartyMonStatusSpriteParameterized(gMultiPartnerParty[actualSlot].species, status, &sPartyMenuBoxes[slot]); + } + } + else if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE) + { + CreatePartyMonIconSprite(&gPlayerParty[slot], &sPartyMenuBoxes[slot], slot); + CreatePartyMonHeldItemSprite(&gPlayerParty[slot], &sPartyMenuBoxes[slot]); + CreatePartyMonPokeballSprite(&gPlayerParty[slot], &sPartyMenuBoxes[slot]); + CreatePartyMonStatusSprite(&gPlayerParty[slot], &sPartyMenuBoxes[slot]); + } +} + +bool8 CreatePartyMonSpritesLoop(void) +{ + CreatePartyMonSprites(sPartyMenuInternal->data[0]); + if (++sPartyMenuInternal->data[0] == PARTY_SIZE) + return TRUE; + else + return FALSE; +} + +void CreateCancelConfirmPokeballSprites(void) +{ + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE) + { + // The showcase has no Cancel/Confirm buttons + FillBgTilemapBufferRect(1, 14, 23, 17, 7, 2, 1); + } + else + { + if (sPartyMenuInternal->chooseHalf) + { + sPartyMenuInternal->spriteIdConfirmPokeball = CreateSmallPokeballButtonSprite(0xBF, 0x88); + DrawCancelConfirmButtons(); + sPartyMenuInternal->spriteIdCancelPokeball = CreateSmallPokeballButtonSprite(0xBF, 0x98); + } + else + { + sPartyMenuInternal->spriteIdCancelPokeball = CreatePokeballButtonSprite(198, 148); + } + AnimatePartySlot(gPartyMenu.slotId, 1); + } +} + +void AnimatePartySlot(u8 slot, u8 animNum) +{ + u8 spriteId; + + switch (slot) + { + default: + if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE) + { + LoadPartyBoxPalette(&sPartyMenuBoxes[slot], GetPartyBoxPaletteFlags(slot, animNum)); + AnimateSelectedPartyIcon(sPartyMenuBoxes[slot].monSpriteId, animNum); + PartyMenuStartSpriteAnim(sPartyMenuBoxes[slot].pokeballSpriteId, animNum); + } + return; + case PARTY_SIZE: // Confirm + if (animNum == 0) + SetBgTilemapPalette(1, 23, 16, 7, 2, 1); + else + SetBgTilemapPalette(1, 23, 16, 7, 2, 2); + spriteId = sPartyMenuInternal->spriteIdConfirmPokeball; + break; + case PARTY_SIZE + 1: // Cancel + // The position of the Cancel button changes if Confirm is present + if (!sPartyMenuInternal->chooseHalf) + { + if (animNum == 0) + SetBgTilemapPalette(1, 23, 17, 7, 2, 1); + else + SetBgTilemapPalette(1, 23, 17, 7, 2, 2); + } + else if (animNum == 0) + { + SetBgTilemapPalette(1, 23, 18, 7, 2, 1); + } + else + { + SetBgTilemapPalette(1, 23, 18, 7, 2, 2); + } + spriteId = sPartyMenuInternal->spriteIdCancelPokeball; + break; + } + PartyMenuStartSpriteAnim(spriteId, animNum); + ScheduleBgCopyTilemapToVram(1); +} + +u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum) +{ + u8 palFlags = 0; + + if (animNum == 1) + palFlags |= PARTY_PAL_SELECTED; + if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0) + palFlags |= PARTY_PAL_FAINTED; + if (gPartyMenu.layout == PARTY_LAYOUT_MULTI + && (slot == 1 || slot == 4 || slot == 5)) + palFlags |= PARTY_PAL_MULTI_ALT; + if (gPartyMenu.action == PARTY_ACTION_SWITCHING) + palFlags |= PARTY_PAL_SWITCHING; + if (gPartyMenu.action == PARTY_ACTION_SWITCH) + { + if (slot == gPartyMenu.slotId || slot == gPartyMenu.slotId2) + palFlags |= PARTY_PAL_TO_SWITCH; + } + if (gPartyMenu.action == PARTY_ACTION_SOFTBOILED && slot == gPartyMenu.slotId ) + palFlags |= PARTY_PAL_TO_SOFTBOIL; + return palFlags; +} + +void DrawCancelConfirmButtons(void) +{ + CopyToBgTilemapBufferRect_ChangePalette(1, sConfirmButton_Tilemap, 23, 16, 7, 2, 17); + CopyToBgTilemapBufferRect_ChangePalette(1, sCancelButton_Tilemap, 23, 18, 7, 2, 17); + ScheduleBgCopyTilemapToVram(1); +} + +bool8 IsMultiBattle(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattleTypeFlags & BATTLE_TYPE_LINK) + return TRUE; + else + return FALSE; +} + +void SwapPartyPokemon(struct Pokemon *mon1, struct Pokemon *mon2) +{ + struct Pokemon *buffer = Alloc(sizeof(struct Pokemon)); + + *buffer = *mon1; + *mon1 = *mon2; + *mon2 = *buffer; + Free(buffer); +} + +void Task_ClosePartyMenu(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ClosePartyMenuAndSetCB2; +} + +void Task_ClosePartyMenuAndSetCB2(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + UpdatePartyToFieldOrder(); + if (sPartyMenuInternal->exitCallback != NULL) + SetMainCallback2(sPartyMenuInternal->exitCallback); + else + SetMainCallback2(gPartyMenu.exitCallback); + FreePartyPointers(); + DestroyTask(taskId); + } +} + +u8 GetCursorSelectionMonId(void) +{ + return gPartyMenu.slotId; +} + +u8 GetPartyMenuType(void) +{ + return gPartyMenu.menuType; +} + +void Task_HandleChooseMonInput(u8 taskId) +{ + if (!gPaletteFade.active && sub_80BF748() != TRUE) + { + s8 *slotPtr = GetCurrentPartySlotPtr(); + + switch (PartyMenuButtonHandler(slotPtr)) + { + case 1: // Selected mon + HandleChooseMonSelection(taskId, slotPtr); + break; + case 2: // Selected Cancel + HandleChooseMonCancel(taskId, slotPtr); + break; + case 8: // Start button + if (sPartyMenuInternal->chooseHalf) + { + PlaySE(SE_SELECT); + MoveCursorToConfirm(); + } + break; + } + } +} + +s8 *GetCurrentPartySlotPtr(void) +{ + if (gPartyMenu.action == PARTY_ACTION_SWITCH || gPartyMenu.action == PARTY_ACTION_SOFTBOILED) + return &gPartyMenu.slotId2; + else + return &gPartyMenu.slotId; +} + +void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) +{ + if (*slotPtr == PARTY_SIZE) + { + gPartyMenu.task(taskId); + } + else + { + switch (gPartyMenu.action - 3) + { + case PARTY_ACTION_SOFTBOILED - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + Task_TryUseSoftboiledOnPartyMon(taskId); + break; + case PARTY_ACTION_USE_ITEM - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + { + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + sPartyMenuInternal->exitCallback = CB2_SetUpExitToBattleScreen; + gItemUseCB(taskId, Task_ClosePartyMenuAfterText); + } + break; + case PARTY_ACTION_MOVE_TUTOR - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + { + PlaySE(SE_SELECT); + TryTutorSelectedMon(taskId); + } + break; + case PARTY_ACTION_GIVE_MAILBOX_MAIL - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + { + PlaySE(SE_SELECT); + TryGiveMailToSelectedMon(taskId); + } + break; + case PARTY_ACTION_GIVE_ITEM - 3: + case PARTY_ACTION_GIVE_PC_ITEM - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + { + PlaySE(SE_SELECT); + TryGiveItemOrMailToSelectedMon(taskId); + } + break; + case PARTY_ACTION_SWITCH - 3: + PlaySE(SE_SELECT); + SwitchSelectedMons(taskId); + break; + case PARTY_ACTION_CHOOSE_AND_CLOSE - 3: + PlaySE(SE_SELECT); + gSpecialVar_0x8004 = *slotPtr; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MOVE_RELEARNER) + gSpecialVar_0x8005 = GetNumberOfRelearnableMoves(&gPlayerParty[*slotPtr]); + Task_ClosePartyMenu(taskId); + break; + case PARTY_ACTION_MINIGAME - 3: + if (IsSelectedMonNotEgg((u8 *)slotPtr)) + TryEnterMonForMinigame(taskId, (u8)*slotPtr); + break; + default: + case PARTY_ACTION_ABILITY_PREVENTS - 3: + case PARTY_ACTION_SWITCHING - 3: + PlaySE(SE_SELECT); + Task_TryCreateSelectionWindow(taskId); + break; + } + } +} + +bool8 IsSelectedMonNotEgg(u8 *slotPtr) +{ + if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_IS_EGG) == TRUE) + { + PlaySE(SE_HAZURE); + return FALSE; + } + return TRUE; +} + +void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) +{ + switch (gPartyMenu.action) + { + case PARTY_ACTION_SEND_OUT: + PlaySE(SE_HAZURE); + break; + case PARTY_ACTION_SWITCH: + case PARTY_ACTION_SOFTBOILED: + PlaySE(SE_SELECT); + FinishTwoMonAction(taskId); + break; + case PARTY_ACTION_MINIGAME: + PlaySE(SE_SELECT); + CancelParticipationPrompt(taskId); + break; + default: + PlaySE(SE_SELECT); + if (gPartyMenu.menuType == PARTY_MENU_TYPE_CHOOSE_HALF) + { + DisplayCancelChooseMonYesNo(taskId); + } + else + { + if (!MenuHelpers_LinkSomething()) + gSpecialVar_0x8004 = PARTY_SIZE + 1; + gPartyMenuUseExitCallback = FALSE; + *slotPtr = PARTY_SIZE + 1; + Task_ClosePartyMenu(taskId); + } + break; + } +} + +void DisplayCancelChooseMonYesNo(u8 taskId) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + StringExpandPlaceholders(gStringVar4, gUnknown_84176CF); + DisplayPartyMenuMessage(gStringVar4, TRUE); + gTasks[taskId].func = Task_CancelChooseMonYesNo; +} + +void Task_CancelChooseMonYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleCancelChooseMonYesNoInput; + } +} + +void Task_HandleCancelChooseMonYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + gPartyMenuUseExitCallback = FALSE; + gPartyMenu.slotId = PARTY_SIZE + 1; + ClearSelectedPartyOrder(); + Task_ClosePartyMenu(taskId); + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + Task_ReturnToChooseMonAfterText(taskId); + break; + } +} + +u16 PartyMenuButtonHandler(s8 *slotPtr) +{ + s8 movementDir; + + switch (gMain.newAndRepeatedKeys) + { + case DPAD_UP: + movementDir = MENU_DIR_UP; + break; + case DPAD_DOWN: + movementDir = MENU_DIR_DOWN; + break; + case DPAD_LEFT: + movementDir = MENU_DIR_LEFT; + break; + case DPAD_RIGHT: + movementDir = MENU_DIR_RIGHT; + break; + default: + switch (GetLRKeysPressedAndHeld()) + { + case MENU_L_PRESSED: + movementDir = MENU_DIR_UP; + break; + case MENU_R_PRESSED: + movementDir = MENU_DIR_DOWN; + break; + default: + movementDir = 0; + break; + } + break; + } + if (JOY_NEW(START_BUTTON)) + return 8; + if (movementDir) + { + UpdateCurrentPartySelection(slotPtr, movementDir); + return 0; + } + // Pressed Cancel + if (JOY_NEW(A_BUTTON) && *slotPtr == PARTY_SIZE + 1) + return 2; + return JOY_NEW(A_BUTTON | B_BUTTON); +} + +void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir) +{ + s8 newSlotId = *slotPtr; + u8 layout = gPartyMenu.layout; + + if (layout == PARTY_LAYOUT_SINGLE) + UpdatePartySelectionSingleLayout(slotPtr, movementDir); + else + UpdatePartySelectionDoubleLayout(slotPtr, movementDir); + if (*slotPtr != newSlotId) + { + PlaySE(SE_SELECT); + AnimatePartySlot(newSlotId, 0); + AnimatePartySlot(*slotPtr, 1); + } +} + +void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir) +{ + // PARTY_SIZE + 1 is Cancel, PARTY_SIZE is Confirm + switch (movementDir) + { + case MENU_DIR_UP: + if (*slotPtr == 0) + { + *slotPtr = PARTY_SIZE + 1; + } + else if (*slotPtr == PARTY_SIZE) + { + *slotPtr = gPlayerPartyCount - 1; + } + else if (*slotPtr == PARTY_SIZE + 1) + { + if (sPartyMenuInternal->chooseHalf) + *slotPtr = PARTY_SIZE; + else + *slotPtr = gPlayerPartyCount - 1; + } + else + { + --*slotPtr; + } + break; + case MENU_DIR_DOWN: + if (*slotPtr == PARTY_SIZE + 1) + { + *slotPtr = 0; + } + else + { + if (*slotPtr == gPlayerPartyCount - 1) + { + if (sPartyMenuInternal->chooseHalf) + *slotPtr = PARTY_SIZE; + else + *slotPtr = PARTY_SIZE + 1; + } + else + { + ++*slotPtr; + } + } + break; + case MENU_DIR_RIGHT: + if (gPlayerPartyCount != 1 && *slotPtr == 0) + { + if (sPartyMenuInternal->lastSelectedSlot == 0) + *slotPtr = 1; + else + *slotPtr = sPartyMenuInternal->lastSelectedSlot; + } + break; + case MENU_DIR_LEFT: + if (*slotPtr != 0 && *slotPtr != PARTY_SIZE && *slotPtr != PARTY_SIZE + 1) + { + sPartyMenuInternal->lastSelectedSlot = *slotPtr; + *slotPtr = 0; + } + break; + } +} + +void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir) +{ + // PARTY_SIZE + 1 is Cancel, PARTY_SIZE is Confirm + // newSlot is used temporarily as a movement direction during its later assignment + s8 newSlot = movementDir; + + switch (movementDir) + { + case MENU_DIR_UP: + if (*slotPtr == 0) + { + *slotPtr = PARTY_SIZE + 1; + break; + } + else if (*slotPtr == PARTY_SIZE) + { + *slotPtr = gPlayerPartyCount - 1; + break; + } + else if (*slotPtr == PARTY_SIZE + 1) + { + if (sPartyMenuInternal->chooseHalf) + { + *slotPtr = PARTY_SIZE; + break; + } + --*slotPtr; + } + newSlot = GetNewSlotDoubleLayout(*slotPtr, newSlot); + if (newSlot != -1) + *slotPtr = newSlot; + break; + case MENU_DIR_DOWN: + if (*slotPtr == PARTY_SIZE) + { + *slotPtr = PARTY_SIZE + 1; + } + else if (*slotPtr == PARTY_SIZE + 1) + { + *slotPtr = 0; + } + else + { + newSlot = GetNewSlotDoubleLayout(*slotPtr, MENU_DIR_DOWN); + if (newSlot == -1) + { + if (sPartyMenuInternal->chooseHalf) + *slotPtr = PARTY_SIZE; + else + *slotPtr = PARTY_SIZE + 1; + } + else + { + *slotPtr = newSlot; + } + } + break; + case MENU_DIR_RIGHT: + if (*slotPtr == 0) + { + if (sPartyMenuInternal->lastSelectedSlot == 3) + { + if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES) != SPECIES_NONE) + *slotPtr = 3; + } + else if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES) != SPECIES_NONE) + { + *slotPtr = 2; + } + } + else if (*slotPtr == 1) + { + if (sPartyMenuInternal->lastSelectedSlot == 5) + { + if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES) != SPECIES_NONE) + *slotPtr = 5; + } + else if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES) != SPECIES_NONE) + { + *slotPtr = 4; + } + } + break; + case MENU_DIR_LEFT: + if (*slotPtr == 2 || *slotPtr == 3) + { + sPartyMenuInternal->lastSelectedSlot = *slotPtr; + *slotPtr = 0; + } + else if (*slotPtr == 4 || *slotPtr == 5) + { + sPartyMenuInternal->lastSelectedSlot = *slotPtr; + *slotPtr = 1; + } + break; + } +} + +s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir) +{ + while (TRUE) + { + slotId += movementDir; + if ((u8)slotId >= PARTY_SIZE) + return -1; + if (GetMonData(&gPlayerParty[slotId], MON_DATA_SPECIES) != SPECIES_NONE) + return slotId; + } +} + +u8 *GetMonNickname(struct Pokemon *mon, u8 *dest) +{ + GetMonData(mon, MON_DATA_NICKNAME, dest); + return StringGetEnd10(dest); +} + +#define tKeepOpen data[0] + +u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen) +{ + u8 taskId; + + PartyMenuPrintText(str); + taskId = CreateTask(Task_PrintAndWaitForText, 1); + gTasks[taskId].tKeepOpen = keepOpen; + return taskId; +} + +void Task_PrintAndWaitForText(u8 taskId) +{ + if (RunTextPrinters_CheckActive(6) != TRUE) + { + if (gTasks[taskId].tKeepOpen == FALSE) + { + ClearStdWindowAndFrameToTransparent(6, 0); + ClearWindowTilemap(6); + } + DestroyTask(taskId); + } +} + +#undef tKeepOpen + +bool8 IsPartyMenuTextPrinterActive(void) +{ + return FuncIsActiveTask(Task_PrintAndWaitForText); +} + +void Task_WaitForLinkAndReturnToChooseMon(u8 taskId) +{ + if (sub_80BF748() != TRUE) + { + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; + } +} + +void Task_ReturnToChooseMonAfterText(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + ClearStdWindowAndFrameToTransparent(6, 0); + ClearWindowTilemap(6); + if (MenuHelpers_LinkSomething() == TRUE) + { + gTasks[taskId].func = Task_WaitForLinkAndReturnToChooseMon; + } + else + { + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; + } + } +} + +void DisplayGaveHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen, u8 a4) +{ + if (!a4) + ItemUse_SetQuestLogEvent(5, mon, item, 0xFFFF); + else if (gPartyMenu.action == PARTY_ACTION_GIVE_PC_ITEM) + ItemUse_SetQuestLogEvent(7, mon, item, 0xFFFF); + else + ItemUse_SetQuestLogEvent(6, mon, item, 0xFFFF); + GetMonNickname(mon, gStringVar1); + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_PkmnWasGivenItem); + DisplayPartyMenuMessage(gStringVar4, keepOpen); + ScheduleBgCopyTilemapToVram(2); +} + +void DisplayTookHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) +{ + ItemUse_SetQuestLogEvent(8, mon, item, 0xFFFF); + GetMonNickname(mon, gStringVar1); + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_ReceivedItemFromPkmn); + DisplayPartyMenuMessage(gStringVar4, keepOpen); + ScheduleBgCopyTilemapToVram(2); +} + +void DisplayAlreadyHoldingItemSwitchMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) +{ + GetMonNickname(mon, gStringVar1); + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadyHoldingItemSwitch); + DisplayPartyMenuMessage(gStringVar4, keepOpen); + ScheduleBgCopyTilemapToVram(2); +} + +void DisplaySwitchedHeldItemMessage(u16 item, u16 item2, bool8 keepOpen) +{ + sub_8124B60(&gPlayerParty[gPartyMenu.slotId], item2, item); + CopyItemName(item, gStringVar1); + CopyItemName(item2, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_SwitchedPkmnItem); + DisplayPartyMenuMessage(gStringVar4, keepOpen); + ScheduleBgCopyTilemapToVram(2); +} + +void GiveItemToMon(struct Pokemon *mon, u16 item) +{ + u8 itemBytes[2]; + + if (ItemIsMail(item) == TRUE) + { + if (GiveMailToMon(mon, item) == 0xFF) + return; + } + itemBytes[0] = item; + itemBytes[1] = item >> 8; + SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes); +} + +u8 TryTakeMonItem(struct Pokemon *mon) +{ + u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); + + if (item == ITEM_NONE) + return 0; + if (AddBagItem(item, 1) == FALSE) + return 1; + item = ITEM_NONE; + SetMonData(mon, MON_DATA_HELD_ITEM, &item); + return 2; +} + +void BufferBagFullCantTakeItemMessage(u16 itemId) +{ + const u8 *string; + + switch (ItemId_GetPocket(itemId)) + { + default: + string = gStartMenuText_Bag; + break; + case POCKET_TM_CASE: + string = ItemId_GetName(ITEM_TM_CASE); + break; + case POCKET_BERRY_POUCH: + string = ItemId_GetName(ITEM_BERRY_POUCH); + break; + } + StringCopy(gStringVar1, string); + StringExpandPlaceholders(gStringVar4, gText_BagFullCouldNotRemoveItem); +} + +#define tHP data[0] +#define tMaxHP data[1] +#define tHPIncrement data[2] +#define tHPToAdd data[3] +#define tPartyId data[4] +#define tStartHP data[5] + +void Task_PartyMenuModifyHP(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + tHP += tHPIncrement; + --tHPToAdd; + SetMonData(&gPlayerParty[tPartyId], MON_DATA_HP, &tHP); + DisplayPartyPokemonHPCheck(&gPlayerParty[tPartyId], &sPartyMenuBoxes[tPartyId], 1); + DisplayPartyPokemonHPBarCheck(&gPlayerParty[tPartyId], &sPartyMenuBoxes[tPartyId]); + if (tHPToAdd == 0 || tHP == 0 || tHP == tMaxHP) + { + // If HP was recovered, buffer the amount recovered + if (tHP > tStartHP) + ConvertIntToDecimalStringN(gStringVar2, tHP - tStartHP, STR_CONV_MODE_LEFT_ALIGN, 3); + SwitchTaskToFollowupFunc(taskId); + } +} + +void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 hpDifference, TaskFunc task) +{ + struct Pokemon *mon = &gPlayerParty[slot]; + s16 *data = gTasks[taskId].data; + + tHP = GetMonData(mon, MON_DATA_HP); + tMaxHP = GetMonData(mon, MON_DATA_MAX_HP); + tHPIncrement = hpIncrement; + tHPToAdd = hpDifference; + tPartyId = slot; + tStartHP = tHP; + SetTaskFuncWithFollowupFunc(taskId, Task_PartyMenuModifyHP, task); +} + +void ResetHPTaskData(u8 taskId, u8 caseId, u32 hp) +{ + s16 *data = gTasks[taskId].data; + + switch (caseId) // always zero + { + case 0: + tHP = hp; + tStartHP = hp; + break; + case 1: + tMaxHP = hp; + break; + case 2: + tHPIncrement = hp; + break; + case 3: + tHPToAdd = hp; + break; + case 4: + tPartyId = hp; + break; + case 5: + SetTaskFuncWithFollowupFunc(taskId, Task_PartyMenuModifyHP, (TaskFunc)hp); // >casting hp as a taskfunc + break; + } +} + +#undef tHP +#undef tMaxHP +#undef tHPIncrement +#undef tHPToAdd +#undef tPartyId +#undef tStartHP + +u8 GetAilmentFromStatus(u32 status) +{ + if (status & STATUS1_PSN_ANY) + return AILMENT_PSN; + if (status & STATUS1_PARALYSIS) + return AILMENT_PRZ; + if (status & STATUS1_SLEEP) + return AILMENT_SLP; + if (status & STATUS1_FREEZE) + return AILMENT_FRZ; + if (status & STATUS1_BURN) + return AILMENT_BRN; + return AILMENT_NONE; +} + +u8 GetMonAilment(struct Pokemon *mon) +{ + u8 ailment; + + if (GetMonData(mon, MON_DATA_HP) == 0) + return AILMENT_FNT; + ailment = GetAilmentFromStatus(GetMonData(mon, MON_DATA_STATUS)); + if (ailment != AILMENT_NONE) + return ailment; + if (CheckPartyPokerus(mon, 0)) + return AILMENT_PKRS; + return AILMENT_NONE; +} + +void SetPartyMonsAllowedInMinigame(void) +{ + u16 *ptr; + + if (gPartyMenu.menuType == PARTY_MENU_TYPE_MINIGAME) + { + u8 i; + + ptr = &gPartyMenu.data1; + gPartyMenu.data1 = 0; + if (gSpecialVar_0x8005 == 0) + { + for (i = 0; i < gPlayerPartyCount; ++i) + *ptr += IsMonAllowedInPokemonJump(&gPlayerParty[i]) << i; + } + else + { + for (i = 0; i < gPlayerPartyCount; ++i) + *ptr += IsMonAllowedInDodrioBerryPicking(&gPlayerParty[i]) << i; + } + } +} + +bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon) +{ + if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && IsSpeciesAllowedInPokemonJump(GetMonData(mon, MON_DATA_SPECIES))) + return TRUE; + return FALSE; +} + + +bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon) +{ + if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DODRIO) + return TRUE; + return FALSE; +} + +bool8 IsMonAllowedInMinigame(u8 slot) +{ + if (!((gPartyMenu.data1 >> slot) & 1)) + return FALSE; + return TRUE; +} + +void TryEnterMonForMinigame(u8 taskId, u8 slot) +{ + if (IsMonAllowedInMinigame(slot) == TRUE) + { + PlaySE(SE_SELECT); + gSpecialVar_0x8004 = slot; + Task_ClosePartyMenu(taskId); + } + else + { + PlaySE(SE_HAZURE); + DisplayPartyMenuMessage(gText_PkmnCantParticipate, FALSE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } +} + +void CancelParticipationPrompt(u8 taskId) +{ + DisplayPartyMenuMessage(gText_CancelParticipation, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_CancelParticipationYesNo; +} + +void Task_CancelParticipationYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleCancelParticipationYesNoInput; + } +} + +void Task_HandleCancelParticipationYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + gSpecialVar_0x8004 = PARTY_SIZE + 1; + Task_ClosePartyMenu(taskId); + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + break; + } +} + +u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) +{ + u16 move; + + if (GetMonData(mon, MON_DATA_IS_EGG)) + return CANNOT_LEARN_MOVE_IS_EGG; + + if (item >= ITEM_TM01_FOCUS_PUNCH) + { + if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH)) + move = ItemIdToBattleMoveId(item); + else + return CANNOT_LEARN_MOVE; + do + { + } while (0); + } + else if (CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE) + { + return CANNOT_LEARN_MOVE; + } + else + { + move = GetTutorMove(tutor); + } + if (MonKnowsMove(mon, move) == TRUE) + return ALREADY_KNOWS_MOVE; + else + return CAN_LEARN_MOVE; +} + +u16 GetTutorMove(u8 tutor) +{ + switch (tutor) + { + case TUTOR_MOVE_FRENZY_PLANT: + return MOVE_FRENZY_PLANT; + case TUTOR_MOVE_BLAST_BURN: + return MOVE_BLAST_BURN; + case TUTOR_MOVE_HYDRO_CANNON: + return MOVE_HYDRO_CANNON; + default: + return sTutorMoves[tutor]; + } +} + +bool8 CanLearnTutorMove(u16 species, u8 tutor) +{ + switch (tutor) + { + case TUTOR_MOVE_FRENZY_PLANT: + if (species == SPECIES_VENUSAUR) + return TRUE; + else + return FALSE; + case TUTOR_MOVE_BLAST_BURN: + if (species == SPECIES_CHARIZARD) + return TRUE; + else + return FALSE; + case TUTOR_MOVE_HYDRO_CANNON: + if (species == SPECIES_BLASTOISE) + return TRUE; + else + return FALSE; + default: + if (sTutorLearnsets[species] & (1 << tutor)) + return TRUE; + else + return FALSE; + } +} + +void sub_8120C3C(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_8120C6C; +} + +void sub_8120C6C(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFF1FFF, 4, 0, 6, RGB_BLACK); + gTasks[taskId].func = sub_8120CA8; +} + +void sub_8120CA8(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_8120CD8; +} + +void sub_8120CD8(u8 taskId) +{ + gTasks[taskId].data[0] = sub_81220D4(); + gTasks[taskId].func = sub_8120D08; +} + +void sub_8120D08(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (RunTextPrinters_CheckActive((u8)data[0]) != TRUE) + gTasks[taskId].func = sub_8120D40; +} + +void sub_8120D40(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFF0008, 4, 6, 0, RGB_BLACK); + gTasks[taskId].func = sub_8120D7C; +} + +void sub_8120D7C(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_8120DAC; +} + +void sub_8120DAC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + sub_8122084(data[0], gUnknown_8417494); + gTasks[taskId].func = sub_8120DE0; +} + +void sub_8120DE0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (RunTextPrinters_CheckActive((u8)data[0]) != TRUE) + { + sub_8122110((u8)data[0]); + gTasks[taskId].func = sub_8120E1C; + } +} + +void sub_8120E1C(u8 taskId) +{ + BeginNormalPaletteFade(0x0000FFF7, 4, 6, 0, RGB_BLACK); + gTasks[taskId].func = sub_8120E58; +} + +void sub_8120E58(u8 taskId) +{ + if (!gPaletteFade.active) + { + TextWindow_SetUserSelectedFrame(0, 0x4F, 0xD0); + TextWindow_SetStdFrame0_WithPal(0, 0x58, 0xF0); + if (gPartyMenu.action == PARTY_ACTION_USE_ITEM) + DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); + else + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; + } +} + +void sub_8120EBC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[0] = 0; + gTasks[taskId].func = sub_8120EE0; +} + +void sub_8120EE0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active && sub_8120F78(taskId) != TRUE) + { + switch (data[0]) + { + case 80: + #ifndef NONMATCHING + asm("":::"r5"); + #endif + UpdateCurrentPartySelection(&gPartyMenu.slotId, 2); + ++data[0]; + break; + case 160: + PlaySE(SE_SELECT); + CreateSelectionWindow(); + ++data[0]; + break; + case 240: + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); + sCursorOptions[sPartyMenuInternal->actions[0]].func(taskId); + // fall through + default: + ++data[0]; + break; + } + } +} diff --git a/src/tm_case.c b/src/tm_case.c index 0734c6d24..a9af2332e 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -595,7 +595,7 @@ static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex) static void FillBG2RowWithPalette_2timesNplus1(s32 a0) { - SetBgRectPal(2, 0, 12, 30, 8, 2 * a0 + 1); + SetBgTilemapPalette(2, 0, 12, 30, 8, 2 * a0 + 1); ScheduleBgCopyTilemapToVram(2); } From 49eb3504620af68314628eb945c14be4afd441cf Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 22 Nov 2019 13:31:48 +0800 Subject: [PATCH 4/9] party_menu second quarter --- asm/party_menu.s | 5197 ------------------------------ asm/pokemon_storage_system.s | 2 +- asm/pokemon_summary_screen.s | 60 +- include/new_menu_helpers.h | 2 +- include/party_menu.h | 3 +- include/pokemon_icon.h | 2 +- include/pokemon_summary_screen.h | 2 +- include/quest_log.h | 1 + include/strings.h | 6 + src/new_menu_helpers.c | 2 +- src/party_menu.c | 1455 ++++++++- src/pokemon_icon.c | 2 +- src/quest_log.c | 12 +- src/trade.c | 10 +- sym_ewram.txt | 2 +- 15 files changed, 1504 insertions(+), 5254 deletions(-) diff --git a/asm/party_menu.s b/asm/party_menu.s index c394b4917..32674fea2 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5,5203 +5,6 @@ .text - thumb_func_start sub_8120F78 -sub_8120F78: @ 8120F78 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08120F90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08120F94 - movs r0, 0 - b _08120FA4 - .align 2, 0 -_08120F90: .4byte gMain -_08120F94: - ldr r0, _08120FA8 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08120FAC @ =sub_8120FB0 - str r0, [r1, 0x4] - adds r0, r2, 0 - bl Task_ClosePartyMenu - movs r0, 0x1 -_08120FA4: - pop {r1} - bx r1 - .align 2, 0 -_08120FA8: .4byte sPartyMenuInternal -_08120FAC: .4byte sub_8120FB0 - thumb_func_end sub_8120F78 - - thumb_func_start sub_8120FB0 -sub_8120FB0: @ 8120FB0 - push {lr} - bl FreeRestoreBattleData - bl LoadPlayerParty - bl SetTeachyTvControllerModeToResume - ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08120FC8: .4byte CB2_ReturnToTeachyTV - thumb_func_end sub_8120FB0 - - thumb_func_start sub_8120FCC -sub_8120FCC: @ 8120FCC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08120FE8 @ =gTasks+0x8 - adds r3, r1, r0 - movs r2, 0 - strh r2, [r3] - subs r0, 0x8 - adds r1, r0 - ldr r0, _08120FEC @ =sub_8120FF0 - str r0, [r1] - bx lr - .align 2, 0 -_08120FE8: .4byte gTasks+0x8 -_08120FEC: .4byte sub_8120FF0 - thumb_func_end sub_8120FCC - - thumb_func_start sub_8120FF0 -sub_8120FF0: @ 8120FF0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0812102C @ =gTasks+0x8 - adds r4, r0, r1 - ldr r0, _08121030 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08121048 - adds r0, r2, 0 - bl sub_8120F78 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08121048 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x50 - beq _08121034 - adds r0, r1, 0x1 - strh r0, [r4] - b _08121048 - .align 2, 0 -_0812102C: .4byte gTasks+0x8 -_08121030: .4byte gPaletteFade -_08121034: - ldr r0, _08121050 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08121054 @ =CB2_SetUpExitToBattleScreen - str r0, [r1, 0x4] - ldr r0, _08121058 @ =gItemUseCB - ldr r1, _0812105C @ =Task_ClosePartyMenuAfterText - ldr r2, [r0] - adds r0, r5, 0 - bl _call_via_r2 -_08121048: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121050: .4byte sPartyMenuInternal -_08121054: .4byte CB2_SetUpExitToBattleScreen -_08121058: .4byte gItemUseCB -_0812105C: .4byte Task_ClosePartyMenuAfterText - thumb_func_end sub_8120FF0 - - thumb_func_start InitPartyMenuWindows -InitPartyMenuWindows: @ 8121060 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _08121088 - cmp r0, 0x1 - bgt _08121076 - cmp r0, 0 - beq _0812107C - b _081210A0 -_08121076: - cmp r1, 0x2 - beq _08121094 - b _081210A0 -_0812107C: - ldr r0, _08121084 @ =sSinglePartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_08121084: .4byte sSinglePartyMenuWindowTemplate -_08121088: - ldr r0, _08121090 @ =sDoublePartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_08121090: .4byte sDoublePartyMenuWindowTemplate -_08121094: - ldr r0, _0812109C @ =sMultiPartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_0812109C: .4byte sMultiPartyMenuWindowTemplate -_081210A0: - ldr r0, _081210F4 @ =sShowcaseMultiPartyMenuWindowTemplate - bl InitWindows -_081210A6: - bl DeactivateAllTextPrinters - movs r4, 0 -_081210AC: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _081210AC - movs r0, 0 - movs r1, 0x4F - movs r2, 0xD0 - bl TextWindow_SetUserSelectedFrame - movs r0, 0 - movs r1, 0x58 - movs r2, 0xF0 - bl TextWindow_SetStdFrame0_WithPal - movs r0, 0x2 - bl stdpal_get - movs r1, 0xC0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - bl stdpal_get - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081210F4: .4byte sShowcaseMultiPartyMenuWindowTemplate - thumb_func_end InitPartyMenuWindows - - thumb_func_start CreateCancelConfirmWindows -CreateCancelConfirmWindows: @ 81210F8 - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08121174 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0812110E - b _08121238 -_0812110E: - cmp r2, 0x1 - bne _08121188 - ldr r0, _08121178 @ =sConfirmButtonWindowTemplate - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r5, _0812117C @ =gMenuText_Confirm - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r2, 0x30 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - ldr r0, _08121180 @ =sFontColorTable - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - str r5, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized4 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, _08121184 @ =sMultiCancelButtonWindowTemplate - bl AddWindow - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - b _08121194 - .align 2, 0 -_08121174: .4byte gPartyMenu -_08121178: .4byte sConfirmButtonWindowTemplate -_0812117C: .4byte gMenuText_Confirm -_08121180: .4byte sFontColorTable -_08121184: .4byte sMultiCancelButtonWindowTemplate -_08121188: - ldr r0, _081211E0 @ =sCancelButtonWindowTemplate - bl AddWindow - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0x3 -_08121194: - adds r0, r6, 0 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, _081211E4 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0xA - beq _081211F0 - ldr r4, _081211E8 @ =gFameCheckerText_Cancel - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0x30 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r1, r5, r1 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _081211EC @ =sFontColorTable - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - b _08121224 - .align 2, 0 -_081211E0: .4byte sCancelButtonWindowTemplate -_081211E4: .4byte gPartyMenu -_081211E8: .4byte gFameCheckerText_Cancel -_081211EC: .4byte sFontColorTable -_081211F0: - ldr r4, _08121240 @ =gOtherText_Exit - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0x30 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r1, r5, r1 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _08121244 @ =sFontColorTable - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 -_08121224: - adds r0, r6, 0 - bl PutWindowTilemap - adds r0, r6, 0 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl ScheduleBgCopyTilemapToVram -_08121238: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121240: .4byte gOtherText_Exit -_08121244: .4byte sFontColorTable - thumb_func_end CreateCancelConfirmWindows - - thumb_func_start GetPartyMenuPalBufferPtr -GetPartyMenuPalBufferPtr: @ 8121248 - lsls r0, 24 - ldr r1, _08121258 @ =sPartyMenuInternal - lsrs r0, 23 - adds r0, 0x18 - ldr r1, [r1] - adds r1, r0 - adds r0, r1, 0 - bx lr - .align 2, 0 -_08121258: .4byte sPartyMenuInternal - thumb_func_end GetPartyMenuPalBufferPtr - - thumb_func_start BlitBitmapToPartyWindow -BlitBitmapToPartyWindow: @ 812125C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r1, [sp, 0xC] - ldr r1, [sp, 0x4C] - ldr r4, [sp, 0x50] - ldr r5, [sp, 0x54] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x14] - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r4, 24 - lsrs r6, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r10, r5 - mov r0, r10 - muls r0, r6 - lsls r0, 5 - bl AllocZeroed - mov r9, r0 - cmp r0, 0 - beq _0812132A - movs r5, 0 - ldr r0, [sp, 0x14] - lsls r0, 19 - str r0, [sp, 0x1C] - ldr r1, [sp, 0x18] - lsls r1, 19 - str r1, [sp, 0x20] - lsls r2, r6, 19 - str r2, [sp, 0x24] - mov r0, r10 - lsls r0, 19 - str r0, [sp, 0x28] - cmp r5, r10 - bcs _08121308 -_081212BE: - movs r4, 0 - adds r1, r5, 0x1 - mov r8, r1 - cmp r4, r6 - bcs _081212FE - ldr r2, [sp, 0x18] - adds r0, r2, r5 - ldr r2, [sp, 0x10] - adds r1, r0, 0 - muls r1, r2 - adds r7, r1, 0 -_081212D4: - ldr r1, [sp, 0x14] - adds r0, r1, r4 - adds r0, r7 - ldr r2, [sp, 0xC] - adds r0, r2, r0 - ldrb r0, [r0] - bl GetPartyMenuBgTile - adds r1, r5, 0 - muls r1, r6 - adds r1, r4 - lsls r1, 5 - add r1, r9 - movs r2, 0x10 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _081212D4 -_081212FE: - mov r1, r8 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, r10 - bcc _081212BE -_08121308: - ldr r0, [sp, 0x1C] - lsrs r2, r0, 16 - ldr r1, [sp, 0x20] - lsrs r3, r1, 16 - ldr r1, [sp, 0x24] - lsrs r0, r1, 16 - str r0, [sp] - ldr r1, [sp, 0x28] - lsrs r0, r1, 16 - str r0, [sp, 0x4] - ldr r0, [sp, 0x8] - mov r1, r9 - bl BlitBitmapToWindow - mov r0, r9 - bl Free -_0812132A: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BlitBitmapToPartyWindow - - thumb_func_start BlitBitmapToPartyWindow_LeftColumn -BlitBitmapToPartyWindow_LeftColumn: @ 812133C - push {r4-r6,lr} - sub sp, 0xC - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - cmp r3, 0 - bne _08121368 - cmp r4, 0 - bne _08121368 - movs r3, 0xA - movs r4, 0x7 -_08121368: - cmp r5, 0 - bne _08121384 - ldr r1, _08121380 @ =sMainSlotTileNums - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0xA - adds r3, r6, 0 - bl BlitBitmapToPartyWindow - b _08121394 - .align 2, 0 -_08121380: .4byte sMainSlotTileNums -_08121384: - ldr r1, _0812139C @ =sMainSlotTileNums_Egg - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0xA - adds r3, r6, 0 - bl BlitBitmapToPartyWindow -_08121394: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812139C: .4byte sMainSlotTileNums_Egg - thumb_func_end BlitBitmapToPartyWindow_LeftColumn - - thumb_func_start BlitBitmapToPartyWindow_RightColumn -BlitBitmapToPartyWindow_RightColumn: @ 81213A0 - push {r4-r6,lr} - sub sp, 0xC - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - cmp r3, 0 - bne _081213CC - cmp r4, 0 - bne _081213CC - movs r3, 0x12 - movs r4, 0x3 -_081213CC: - cmp r5, 0 - bne _081213E8 - ldr r1, _081213E4 @ =sOtherSlotsTileNums - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x12 - adds r3, r6, 0 - bl BlitBitmapToPartyWindow - b _081213F8 - .align 2, 0 -_081213E4: .4byte sOtherSlotsTileNums -_081213E8: - ldr r1, _08121400 @ =sOtherSlotsTileNums_Egg - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x12 - adds r3, r6, 0 - bl BlitBitmapToPartyWindow -_081213F8: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121400: .4byte sOtherSlotsTileNums_Egg - thumb_func_end BlitBitmapToPartyWindow_RightColumn - - thumb_func_start DrawEmptySlot -DrawEmptySlot: @ 8121404 - push {lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08121428 @ =sEmptySlotTileNums - movs r2, 0 - str r2, [sp] - movs r2, 0x12 - str r2, [sp, 0x4] - movs r2, 0x3 - str r2, [sp, 0x8] - movs r2, 0x12 - movs r3, 0 - bl BlitBitmapToPartyWindow - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08121428: .4byte sEmptySlotTileNums - thumb_func_end DrawEmptySlot - - thumb_func_start LoadPartyBoxPalette -LoadPartyBoxPalette: @ 812142C - push {r4-r7,lr} - lsls r1, 24 - lsrs r4, r1, 24 - adds r5, r4, 0 - ldrb r0, [r0, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r6, r0, 24 - adds r7, r6, 0 - movs r0, 0x20 - ands r0, r4 - cmp r0, 0 - beq _081214A0 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0812145C - ldr r5, _08121458 @ =sPartyBoxSelectedForActionPalIds1 - b _0812160A - .align 2, 0 -_08121458: .4byte sPartyBoxSelectedForActionPalIds1 -_0812145C: - ldr r5, _08121494 @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121498 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _0812149C @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_08121494: .4byte sPartyBoxSelectedForActionPalIds1 -_08121498: .4byte sPartyBoxPalOffsets1 -_0812149C: .4byte sPartyBoxSelectedForActionPalIds2 -_081214A0: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _081214EC - ldr r5, _081214E0 @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081214E4 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081214E8 @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_081214E0: .4byte sPartyBoxSelectedForActionPalIds1 -_081214E4: .4byte sPartyBoxPalOffsets1 -_081214E8: .4byte sPartyBoxSelectedForActionPalIds2 -_081214EC: - movs r0, 0x4 - ands r0, r4 - cmp r0, 0 - beq _08121548 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08121504 - ldr r5, _08121500 @ =sPartyBoxSelectedForActionPalIds1 - b _0812160A - .align 2, 0 -_08121500: .4byte sPartyBoxSelectedForActionPalIds1 -_08121504: - ldr r5, _0812153C @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121540 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _08121544 @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_0812153C: .4byte sPartyBoxSelectedForActionPalIds1 -_08121540: .4byte sPartyBoxPalOffsets1 -_08121544: .4byte sPartyBoxSelectedForActionPalIds2 -_08121548: - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _081215A4 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08121560 - ldr r5, _0812155C @ =sPartyBoxCurrSelectionFaintedPalIds - b _0812160A - .align 2, 0 -_0812155C: .4byte sPartyBoxCurrSelectionFaintedPalIds -_08121560: - ldr r5, _08121598 @ =sPartyBoxFaintedPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _0812159C @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081215A0 @ =sPartyBoxFaintedPalIds2 - b _0812163E - .align 2, 0 -_08121598: .4byte sPartyBoxFaintedPalIds1 -_0812159C: .4byte sPartyBoxPalOffsets1 -_081215A0: .4byte sPartyBoxFaintedPalIds2 -_081215A4: - movs r0, 0x8 - ands r0, r4 - cmp r0, 0 - beq _08121600 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _081215BC - ldr r5, _081215B8 @ =sPartyBoxCurrSelectionMultiPalIds - b _0812160A - .align 2, 0 -_081215B8: .4byte sPartyBoxCurrSelectionMultiPalIds -_081215BC: - ldr r5, _081215F4 @ =sPartyBoxMultiPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081215F8 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081215FC @ =sPartyBoxMultiPalIds2 - b _0812163E - .align 2, 0 -_081215F4: .4byte sPartyBoxMultiPalIds1 -_081215F8: .4byte sPartyBoxPalOffsets1 -_081215FC: .4byte sPartyBoxMultiPalIds2 -_08121600: - movs r0, 0x1 - ands r5, r0 - cmp r5, 0 - beq _08121684 - ldr r5, _08121674 @ =sPartyBoxCurrSelectionPalIds1 -_0812160A: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121678 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _0812167C @ =sPartyBoxCurrSelectionPalIds2 -_0812163E: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121680 @ =sPartyBoxPalOffsets2 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - b _081216EC - .align 2, 0 -_08121674: .4byte sPartyBoxCurrSelectionPalIds1 -_08121678: .4byte sPartyBoxPalOffsets1 -_0812167C: .4byte sPartyBoxCurrSelectionPalIds2 -_08121680: .4byte sPartyBoxPalOffsets2 -_08121684: - ldr r5, _081216F4 @ =sPartyBoxEmptySlotPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081216F8 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081216FC @ =sPartyBoxEmptySlotPalIds2 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121700 @ =sPartyBoxPalOffsets2 - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette -_081216EC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081216F4: .4byte sPartyBoxEmptySlotPalIds1 -_081216F8: .4byte sPartyBoxPalOffsets1 -_081216FC: .4byte sPartyBoxEmptySlotPalIds2 -_08121700: .4byte sPartyBoxPalOffsets2 - thumb_func_end LoadPartyBoxPalette - - thumb_func_start DisplayPartyPokemonBarDetail -DisplayPartyPokemonBarDetail: @ 8121704 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldrb r5, [r3] - ldrb r3, [r3, 0x1] - lsls r4, r2, 1 - adds r4, r2 - ldr r2, _08121734 @ =sFontColorTable - adds r4, r2 - str r4, [sp] - movs r2, 0 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - adds r2, r5, 0 - bl AddTextPrinterParameterized3 - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121734: .4byte sFontColorTable - thumb_func_end DisplayPartyPokemonBarDetail - - thumb_func_start DisplayPartyPokemonNickname -DisplayPartyPokemonNickname: @ 8121738 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121788 - cmp r4, 0x1 - bne _08121772 - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x4] - lsrs r1, 3 - ldrb r2, [r5, 0x5] - lsrs r2, 3 - ldrb r3, [r5, 0x6] - lsrs r3, 3 - ldrb r4, [r5, 0x7] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121772: - adds r0, r7, 0 - add r1, sp, 0x8 - bl GetMonNickname - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x4 - add r1, sp, 0x8 - movs r2, 0 - bl DisplayPartyPokemonBarDetail -_08121788: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonNickname - - thumb_func_start DisplayPartyPokemonLevelCheck -DisplayPartyPokemonLevelCheck: @ 8121790 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081217FC - adds r0, r6, 0 - bl GetMonAilment - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081217BE - cmp r0, 0x6 - bne _081217FC -_081217BE: - cmp r4, 0 - beq _081217E4 - ldr r5, [r7] - ldrb r0, [r7, 0x8] - ldrb r1, [r5, 0x8] - lsrs r1, 3 - ldrb r2, [r5, 0x9] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0xA] - lsrs r3, 3 - ldrb r4, [r5, 0xB] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_081217E4: - mov r0, r8 - cmp r0, 0x2 - beq _081217FC - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - adds r1, r7, 0 - bl DisplayPartyPokemonLevel -_081217FC: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonLevelCheck - - thumb_func_start DisplayPartyPokemonLevel -DisplayPartyPokemonLevel: @ 8121808 - push {r4-r6,lr} - adds r2, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r5, _08121848 @ =gStringVar2 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _0812184C @ =gStringVar1 - ldr r1, _08121850 @ =gText_Lv - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x8 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121848: .4byte gStringVar2 -_0812184C: .4byte gStringVar1 -_08121850: .4byte gText_Lv - thumb_func_end DisplayPartyPokemonLevel - - thumb_func_start DisplayPartyPokemonGenderNidoranCheck -DisplayPartyPokemonGenderNidoranCheck: @ 8121854 - push {r4-r7,lr} - sub sp, 0x14 - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0x1 - bne _08121886 - ldr r5, [r7] - ldrb r0, [r7, 0x8] - ldrb r1, [r5, 0xC] - lsrs r1, 3 - ldrb r2, [r5, 0xD] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0xE] - lsrs r3, 3 - ldrb r4, [r5, 0xF] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121886: - adds r0, r6, 0 - add r1, sp, 0x8 - bl GetMonNickname - adds r0, r6, 0 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - add r2, sp, 0x8 - adds r3, r7, 0 - bl DisplayPartyPokemonGender - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonGenderNidoranCheck - - thumb_func_start DisplayPartyPokemonGender -DisplayPartyPokemonGender: @ 81218BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r2 - adds r7, r3, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r5, r4, 0 - ldrb r0, [r7, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r6, r0, 24 - cmp r4, 0 - beq _08121982 - cmp r4, 0x20 - beq _081218EC - cmp r4, 0x1D - bne _08121900 -_081218EC: - movs r0, 0xB - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0812190C @ =gSpeciesNames - adds r1, r0 - mov r0, r9 - bl StringCompare - cmp r0, 0 - beq _08121982 -_08121900: - mov r0, r8 - cmp r0, 0 - beq _08121910 - cmp r0, 0xFE - beq _08121950 - b _08121982 - .align 2, 0 -_0812190C: .4byte gSpeciesNames -_08121910: - ldr r5, _08121944 @ =sGenderMalePalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121948 @ =sGenderPalOffsets - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r7, 0x8] - ldr r1, _0812194C @ =gText_MaleSymbol - ldr r3, [r7] - adds r3, 0xC - movs r2, 0x2 - bl DisplayPartyPokemonBarDetail - b _08121982 - .align 2, 0 -_08121944: .4byte sGenderMalePalIds -_08121948: .4byte sGenderPalOffsets -_0812194C: .4byte gText_MaleSymbol -_08121950: - ldr r5, _08121990 @ =sGenderFemalePalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121994 @ =sGenderPalOffsets - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r7, 0x8] - ldr r1, _08121998 @ =gText_FemaleSymbol - ldr r3, [r7] - adds r3, 0xC - movs r2, 0x2 - bl DisplayPartyPokemonBarDetail -_08121982: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121990: .4byte sGenderFemalePalIds -_08121994: .4byte sGenderPalOffsets -_08121998: .4byte gText_FemaleSymbol - thumb_func_end DisplayPartyPokemonGender - - thumb_func_start DisplayPartyPokemonHPCheck -DisplayPartyPokemonHPCheck: @ 812199C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081219F6 - cmp r4, 0 - beq _081219DE - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x10] - lsrs r1, 3 - ldrb r2, [r5, 0x11] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0x12] - lsrs r3, 3 - ldrb r4, [r5, 0x13] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_081219DE: - mov r0, r8 - cmp r0, 0x2 - beq _081219F6 - adds r0, r7, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl DisplayPartyPokemonHP -_081219F6: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonHPCheck - - thumb_func_start DisplayPartyPokemonHP -DisplayPartyPokemonHP: @ 8121A04 - push {r4,r5,lr} - adds r2, r0, 0 - adds r4, r1, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r5, _08121A38 @ =gStringVar1 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r1, 0xBA - strb r1, [r0] - movs r1, 0xFF - strb r1, [r0, 0x1] - ldrb r0, [r4, 0x8] - ldr r3, [r4] - adds r3, 0x10 - adds r1, r5, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121A38: .4byte gStringVar1 - thumb_func_end DisplayPartyPokemonHP - - thumb_func_start DisplayPartyPokemonMaxHPCheck -DisplayPartyPokemonMaxHPCheck: @ 8121A3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121A98 - cmp r4, 0 - beq _08121A80 - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x14] - lsrs r1, 3 - adds r1, 0x1 - ldrb r2, [r5, 0x15] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0x16] - lsrs r3, 3 - ldrb r4, [r5, 0x17] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121A80: - mov r0, r8 - cmp r0, 0x2 - beq _08121A98 - adds r0, r7, 0 - movs r1, 0x3A - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl DisplayPartyPokemonMaxHP -_08121A98: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonMaxHPCheck - - thumb_func_start DisplayPartyPokemonMaxHP -DisplayPartyPokemonMaxHP: @ 8121AA4 - push {r4-r6,lr} - adds r2, r0, 0 - adds r6, r1, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r5, _08121AE4 @ =gStringVar2 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08121AE8 @ =gStringVar1 - ldr r1, _08121AEC @ =gText_Slash - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x14 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121AE4: .4byte gStringVar2 -_08121AE8: .4byte gStringVar1 -_08121AEC: .4byte gText_Slash - thumb_func_end DisplayPartyPokemonMaxHP - - thumb_func_start DisplayPartyPokemonHPBarCheck -DisplayPartyPokemonHPBarCheck: @ 8121AF0 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121B24 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - adds r2, r6, 0 - bl DisplayPartyPokemonHPBar -_08121B24: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonHPBarCheck - - thumb_func_start DisplayPartyPokemonHPBar -DisplayPartyPokemonHPBar: @ 8121B2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r6, r2, 0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldrb r0, [r6, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r7, r0, 24 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08121B78 - cmp r0, 0x2 - blt _08121BA8 - cmp r0, 0x4 - bgt _08121BA8 - ldr r5, _08121B74 @ =sHPBarGreenPalIds - b _08121B7A - .align 2, 0 -_08121B74: .4byte sHPBarGreenPalIds -_08121B78: - ldr r5, _08121BA0 @ =sHPBarYellowPalIds -_08121B7A: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121BA4 @ =sHPBarPalOffsets - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - b _08121BCC - .align 2, 0 -_08121BA0: .4byte sHPBarYellowPalIds -_08121BA4: .4byte sHPBarPalOffsets -_08121BA8: - ldr r5, _08121C68 @ =sHPBarRedPalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121C6C @ =sHPBarPalOffsets - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette -_08121BCC: - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - ldr r2, [r6] - ldrb r2, [r2, 0x1A] - bl GetScaledHPFraction - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6, 0x8] - ldr r4, _08121C6C @ =sHPBarPalOffsets - ldrb r1, [r4, 0x1] - ldr r3, [r6] - ldrb r2, [r3, 0x18] - ldrb r3, [r3, 0x19] - str r5, [sp] - movs r7, 0x1 - str r7, [sp, 0x4] - bl FillWindowPixelRect - ldrb r0, [r6, 0x8] - ldrb r1, [r4] - ldr r3, [r6] - ldrb r2, [r3, 0x18] - ldrb r3, [r3, 0x19] - adds r3, 0x1 - str r5, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - bl FillWindowPixelRect - ldr r1, [r6] - ldrb r0, [r1, 0x1A] - cmp r5, r0 - beq _08121C50 - ldrb r0, [r6, 0x8] - ldrb r2, [r1, 0x18] - adds r2, r5 - ldrb r3, [r1, 0x19] - ldrb r1, [r1, 0x1A] - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - str r7, [sp, 0x4] - movs r1, 0xD - bl FillWindowPixelRect - ldrb r0, [r6, 0x8] - ldr r1, [r6] - ldrb r2, [r1, 0x18] - adds r2, r5 - ldrb r3, [r1, 0x19] - adds r3, 0x1 - ldrb r1, [r1, 0x1A] - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - str r4, [sp, 0x4] - movs r1, 0x2 - bl FillWindowPixelRect -_08121C50: - ldrb r0, [r6, 0x8] - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121C68: .4byte sHPBarRedPalIds -_08121C6C: .4byte sHPBarPalOffsets - thumb_func_end DisplayPartyPokemonHPBar - - thumb_func_start DisplayPartyPokemonDescriptionText -DisplayPartyPokemonDescriptionText: @ 8121C70 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r2, 24 - lsrs r2, 24 - adds r7, r2, 0 - cmp r7, 0 - beq _08121CAA - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x1C] - lsrs r1, 3 - ldrb r2, [r5, 0x1D] - lsrs r2, 3 - ldrb r3, [r5, 0x1E] - lsrs r3, 3 - ldrb r4, [r5, 0x1F] - lsrs r4, 3 - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121CAA: - cmp r7, 0x2 - beq _08121CD0 - ldrb r0, [r6, 0x8] - ldr r1, [r6] - ldrb r2, [r1, 0x1C] - ldrb r3, [r1, 0x1D] - ldr r1, _08121CDC @ =sFontColorTable - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - ldr r4, _08121CE0 @ =sDescriptionStringTable - mov r5, r8 - lsls r1, r5, 2 - adds r1, r4 - ldr r1, [r1] - str r1, [sp, 0x8] - movs r1, 0x1 - bl AddTextPrinterParameterized3 -_08121CD0: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121CDC: .4byte sFontColorTable -_08121CE0: .4byte sDescriptionStringTable - thumb_func_end DisplayPartyPokemonDescriptionText - - thumb_func_start PartyMenuRemoveWindow -PartyMenuRemoveWindow: @ 8121CE4 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _08121D04 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_08121D04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end PartyMenuRemoveWindow - - thumb_func_start DisplayPartyMenuStdMessage -DisplayPartyMenuStdMessage: @ 8121D0C - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r0, _08121D3C @ =sPartyMenuInternal - ldr r4, [r0] - adds r5, r4, 0 - adds r5, 0xD - ldrb r0, [r4, 0xD] - cmp r0, 0xFF - beq _08121D26 - adds r0, r5, 0 - bl PartyMenuRemoveWindow -_08121D26: - cmp r6, 0x7F - beq _08121DE8 - adds r0, r6, 0 - subs r0, 0x16 - cmp r0, 0x4 - bhi _08121D80 - lsls r0, 2 - ldr r1, _08121D40 @ =_08121D44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121D3C: .4byte sPartyMenuInternal -_08121D40: .4byte _08121D44 - .align 2, 0 -_08121D44: - .4byte _08121D58 - .4byte _08121D70 - .4byte _08121D70 - .4byte _08121D60 - .4byte _08121D68 -_08121D58: - ldr r0, _08121D5C @ =sDoWhatWithMonMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D5C: .4byte sDoWhatWithMonMsgWindowTemplate -_08121D60: - ldr r0, _08121D64 @ =sDoWhatWithItemMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D64: .4byte sDoWhatWithItemMsgWindowTemplate -_08121D68: - ldr r0, _08121D6C @ =sDoWhatWithMailMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D6C: .4byte sDoWhatWithMailMsgWindowTemplate -_08121D70: - ldr r0, _08121D7C @ =sWhichMoveMsgWindowTemplate -_08121D72: - bl AddWindow - strb r0, [r5] - b _08121D88 - .align 2, 0 -_08121D7C: .4byte sWhichMoveMsgWindowTemplate -_08121D80: - ldr r0, _08121D9C @ =sDefaultPartyMsgWindowTemplate - bl AddWindow - strb r0, [r4, 0xD] -_08121D88: - cmp r6, 0 - bne _08121DB0 - ldr r0, _08121DA0 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _08121DA4 - movs r6, 0x2 - b _08121DB0 - .align 2, 0 -_08121D9C: .4byte sDefaultPartyMsgWindowTemplate -_08121DA0: .4byte sPartyMenuInternal -_08121DA4: - bl ShouldUseChooseMonText - lsls r0, 24 - cmp r0, 0 - bne _08121DB0 - movs r6, 0x1 -_08121DB0: - ldrb r0, [r5] - movs r1, 0 - movs r2, 0x58 - movs r3, 0xF - bl DrawStdFrameWithCustomTileAndPalette - ldr r4, _08121DF0 @ =gStringVar4 - ldr r1, _08121DF4 @ =sActionStringTable - lsls r0, r6, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringExpandPlaceholders - ldrb r0, [r5] - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_08121DE8: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121DF0: .4byte gStringVar4 -_08121DF4: .4byte sActionStringTable - thumb_func_end DisplayPartyMenuStdMessage - - thumb_func_start ShouldUseChooseMonText -ShouldUseChooseMonText: @ 8121DF8 - push {r4-r7,lr} - ldr r7, _08121E0C @ =gPlayerParty - movs r6, 0 - ldr r0, _08121E10 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x1 - bne _08121E14 -_08121E06: - movs r0, 0x1 - b _08121E56 - .align 2, 0 -_08121E0C: .4byte gPlayerParty -_08121E10: .4byte gPartyMenu -_08121E14: - movs r5, 0 -_08121E16: - movs r0, 0x64 - muls r0, r5 - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121E46 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08121E40 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08121E46 -_08121E40: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08121E46: - cmp r6, 0x1 - bhi _08121E06 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08121E16 - movs r0, 0 -_08121E56: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ShouldUseChooseMonText - - thumb_func_start DisplaySelectionWindow -DisplaySelectionWindow: @ 8121E5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _08121EBC - cmp r4, 0x1 - bgt _08121E78 - cmp r4, 0 - beq _08121E7E - b _08121ECC -_08121E78: - cmp r4, 0x2 - beq _08121EC4 - b _08121ECC -_08121E7E: - ldr r0, _08121EB4 @ =sPartyMenuInternal - ldr r1, [r0] - ldrb r0, [r1, 0x17] - lsls r0, 1 - movs r3, 0x13 - subs r3, r0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xA - str r0, [sp] - ldrb r0, [r1, 0x17] - lsls r0, 25 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0xE - str r0, [sp, 0x8] - ldr r0, _08121EB8 @ =0x000002bf - str r0, [sp, 0xC] - add r0, sp, 0x14 - movs r1, 0x2 - movs r2, 0x13 - bl SetWindowTemplateFields - ldr r0, [sp, 0x14] - ldr r1, [sp, 0x18] - b _08121ED2 - .align 2, 0 -_08121EB4: .4byte sPartyMenuInternal -_08121EB8: .4byte 0x000002bf -_08121EBC: - ldr r0, _08121EC0 @ =sItemGiveTakeWindowTemplate - b _08121ECE - .align 2, 0 -_08121EC0: .4byte sItemGiveTakeWindowTemplate -_08121EC4: - ldr r0, _08121EC8 @ =sMailReadTakeWindowTemplate - b _08121ECE - .align 2, 0 -_08121EC8: .4byte sMailReadTakeWindowTemplate -_08121ECC: - ldr r0, _08121EF8 @ =sMoveSelectWindowTemplate -_08121ECE: - ldr r1, [r0, 0x4] - ldr r0, [r0] -_08121ED2: - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - add r0, sp, 0x1C - bl AddWindow - ldr r6, _08121EFC @ =sPartyMenuInternal - ldr r1, [r6] - strb r0, [r1, 0xC] - ldr r0, [r6] - ldrb r0, [r0, 0xC] - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - cmp r4, 0x3 - bne _08121F00 - ldr r0, [r6] - b _08121FA2 - .align 2, 0 -_08121EF8: .4byte sMoveSelectWindowTemplate -_08121EFC: .4byte sPartyMenuInternal -_08121F00: - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r0, [r6] - ldrb r0, [r0, 0x17] - cmp r5, r0 - bcs _08121F7A - adds r7, r6, 0 - movs r6, 0 -_08121F2A: - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xF - adds r4, r0, r5 - ldrb r0, [r4] - movs r2, 0x3 - cmp r0, 0x11 - bls _08121F3C - movs r2, 0x4 -_08121F3C: - ldrb r0, [r1, 0xC] - lsls r3, r5, 4 - adds r3, 0x2 - lsls r3, 24 - lsrs r3, 24 - mov r1, r8 - str r1, [sp] - str r6, [sp, 0x4] - lsls r1, r2, 1 - adds r1, r2 - ldr r2, _08121FB4 @ =sFontColorTable - adds r1, r2 - str r1, [sp, 0x8] - str r6, [sp, 0xC] - ldr r2, _08121FB8 @ =sCursorOptions - ldrb r1, [r4] - lsls r1, 3 - adds r1, r2 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - mov r2, r9 - bl AddTextPrinterParameterized4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r7] - ldrb r0, [r0, 0x17] - cmp r5, r0 - bcc _08121F2A -_08121F7A: - ldr r4, _08121FBC @ =sPartyMenuInternal - ldr r2, [r4] - ldrb r0, [r2, 0xC] - movs r1, 0x10 - str r1, [sp] - ldrb r1, [r2, 0x17] - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - str r1, [sp, 0xC] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursorInternal - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, [r4] -_08121FA2: - ldrb r0, [r0, 0xC] - add sp, 0x24 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08121FB4: .4byte sFontColorTable -_08121FB8: .4byte sCursorOptions -_08121FBC: .4byte sPartyMenuInternal - thumb_func_end DisplaySelectionWindow - - thumb_func_start PartyMenuPrintText -PartyMenuPrintText: @ 8121FC0 - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - movs r0, 0x6 - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - ldr r2, _08122008 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0x6 - movs r1, 0x2 - adds r2, r4, 0 - bl AddTextPrinterParameterized2 - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122008: .4byte gTextFlags - thumb_func_end PartyMenuPrintText - - thumb_func_start PartyMenuDisplayYesNoMenu -PartyMenuDisplayYesNoMenu: @ 812200C - push {lr} - sub sp, 0xC - ldr r0, _08122030 @ =sPartyMenuYesNoWindowTemplate - movs r1, 0x4F - str r1, [sp] - movs r1, 0xD - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08122030: .4byte sPartyMenuYesNoWindowTemplate - thumb_func_end PartyMenuDisplayYesNoMenu - - thumb_func_start CreateLevelUpStatsWindow -CreateLevelUpStatsWindow: @ 8122034 - push {r4,lr} - ldr r0, _0812205C @ =sLevelUpStatsWindowTemplate - bl AddWindow - ldr r4, _08122060 @ =sPartyMenuInternal - ldr r1, [r4] - strb r0, [r1, 0xC] - ldr r0, [r4] - ldrb r0, [r0, 0xC] - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - ldr r0, [r4] - ldrb r0, [r0, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0812205C: .4byte sLevelUpStatsWindowTemplate -_08122060: .4byte sPartyMenuInternal - thumb_func_end CreateLevelUpStatsWindow - - thumb_func_start RemoveLevelUpStatsWindow -RemoveLevelUpStatsWindow: @ 8122064 - push {r4,lr} - ldr r4, _08122080 @ =sPartyMenuInternal - ldr r0, [r4] - ldrb r0, [r0, 0xC] - bl ClearWindowTilemap - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122080: .4byte sPartyMenuInternal - thumb_func_end RemoveLevelUpStatsWindow - - thumb_func_start sub_8122084 -sub_8122084: @ 8122084 - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _081220CC @ =gStringVar4 - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, _081220D0 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - adds r0, r4, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParameterized2 - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081220CC: .4byte gStringVar4 -_081220D0: .4byte gTextFlags - thumb_func_end sub_8122084 - - thumb_func_start sub_81220D4 -sub_81220D4: @ 81220D4 - push {r4,lr} - ldr r0, _08122108 @ =gUnknown_845A170 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x4F - movs r2, 0xE0 - bl TextWindow_LoadResourcesStdFrame0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x4F - movs r3, 0xE - bl DrawDialogFrameWithCustomTileAndPalette - ldr r1, _0812210C @ =gUnknown_8417457 - adds r0, r4, 0 - bl sub_8122084 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08122108: .4byte gUnknown_845A170 -_0812210C: .4byte gUnknown_8417457 - thumb_func_end sub_81220D4 - - thumb_func_start sub_8122110 -sub_8122110: @ 8122110 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0 - bl ClearDialogWindowAndFrameToTransparent - adds r0, r4, 0 - bl RemoveWindow - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8122110 - - thumb_func_start sub_8122138 -sub_8122138: @ 8122138 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _08122168 @ =sPartyMenuInternal - ldr r4, [r0] - cmp r5, 0x11 - bhi _0812216C - ldrb r0, [r4, 0xE] - cmp r0, 0xFF - beq _081221C0 - bl ClearWindowTilemap - ldrb r0, [r4, 0xE] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4, 0xE] - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - b _081221C0 - .align 2, 0 -_08122168: .4byte sPartyMenuInternal -_0812216C: - ldrb r0, [r4, 0xE] - cmp r0, 0xFF - bne _0812217A - ldr r0, _081221C8 @ =gUnknown_845A178 - bl AddWindow - strb r0, [r4, 0xE] -_0812217A: - ldrb r0, [r4, 0xE] - bl sub_8112F18 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4, 0xE] - str r0, [sp] - movs r1, 0 - str r1, [sp, 0x4] - ldr r0, _081221CC @ =sFontColorTable + 15 - str r0, [sp, 0x8] - str r1, [sp, 0xC] - ldr r1, _081221D0 @ =sHMDescriptionTable - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [sp, 0x10] - adds r0, r2, 0 - movs r1, 0x2 - movs r2, 0x3 - movs r3, 0x6 - bl AddTextPrinterParameterized4 - ldrb r0, [r4, 0xE] - bl PutWindowTilemap - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_081221C0: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081221C8: .4byte gUnknown_845A178 -_081221CC: .4byte sFontColorTable + 15 -_081221D0: .4byte sHMDescriptionTable - thumb_func_end sub_8122138 - - thumb_func_start CreatePartyMonIconSprite -CreatePartyMonIconSprite: @ 81221D4 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r7, r1, 0 - adds r4, r2, 0 - movs r6, 0x1 - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812220A - ldr r0, _08122240 @ =gMain - ldr r1, _08122244 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812220A - ldr r0, _08122248 @ =sMultiBattlePartnersPartyMask - adds r0, r4, r0 - ldrb r1, [r0] - eors r1, r6 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 -_0812220A: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - str r6, [sp] - adds r0, r4, 0 - adds r2, r7, 0 - movs r3, 0x1 - bl CreatePartyMonIconSpriteParameterized - ldrb r0, [r7, 0x9] - adds r1, r5, 0 - bl UpdatePartyMonHPBar - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122240: .4byte gMain -_08122244: .4byte 0x00000439 -_08122248: .4byte sMultiBattlePartnersPartyMask - thumb_func_end CreatePartyMonIconSprite - - thumb_func_start CreatePartyMonIconSpriteParameterized -CreatePartyMonIconSpriteParameterized: @ 812224C - push {r4-r7,lr} - sub sp, 0xC - adds r6, r1, 0 - adds r4, r2, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r3, 24 - lsrs r7, r3, 24 - cmp r5, 0 - beq _0812229A - ldr r1, _081222A4 @ =SpriteCB_MonIcon - ldr r0, [r4, 0x4] - ldrb r2, [r0] - ldrb r3, [r0, 0x1] - movs r0, 0x4 - str r0, [sp] - str r6, [sp, 0x4] - ldr r0, [sp, 0x20] - str r0, [sp, 0x8] - adds r0, r5, 0 - bl CreateMonIcon - strb r0, [r4, 0x9] - ldr r2, _081222A8 @ =gSprites - ldrb r0, [r4, 0x9] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r7, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0812229A: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081222A4: .4byte SpriteCB_MonIcon -_081222A8: .4byte gSprites - thumb_func_end CreatePartyMonIconSpriteParameterized - - thumb_func_start UpdateHPBar -UpdateHPBar: @ 81222AC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - adds r0, r1, 0 - adds r1, r2, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0812230C - cmp r0, 0x2 - bgt _081222D4 - cmp r0, 0x1 - beq _08122324 - b _0812233C -_081222D4: - cmp r0, 0x3 - beq _081222F4 - cmp r0, 0x4 - bne _0812233C - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _081222F0 @ =gSprites - adds r0, r1 - movs r1, 0 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_081222F0: .4byte gSprites -_081222F4: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122308 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122308: .4byte gSprites -_0812230C: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122320 @ =gSprites - adds r0, r1 - movs r1, 0x2 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122320: .4byte gSprites -_08122324: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122338 @ =gSprites - adds r0, r1 - movs r1, 0x3 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122338: .4byte gSprites -_0812233C: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122354 @ =gSprites - adds r0, r1 - movs r1, 0x4 - bl MonIcon_SetAnim -_0812234C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122354: .4byte gSprites - thumb_func_end UpdateHPBar - - thumb_func_start UpdatePartyMonHPBar -UpdatePartyMonHPBar: @ 8122358 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdateHPBar - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end UpdatePartyMonHPBar - - thumb_func_start AnimateSelectedPartyIcon -AnimateSelectedPartyIcon: @ 812238C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - ldr r5, _081223BC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r6, r0, 2 - adds r2, r6, r5 - movs r7, 0 - movs r3, 0 - strh r3, [r2, 0x2E] - mov r12, r5 - cmp r1, 0 - bne _081223E4 - movs r1, 0x20 - ldrsh r0, [r2, r1] - cmp r0, 0x10 - bne _081223C4 - strh r3, [r2, 0x24] - ldr r0, _081223C0 @ =0x0000fffc - strh r0, [r2, 0x26] - b _081223CA - .align 2, 0 -_081223BC: .4byte gSprites -_081223C0: .4byte 0x0000fffc -_081223C4: - ldr r0, _081223DC @ =0x0000fffc - strh r0, [r2, 0x24] - strh r3, [r2, 0x26] -_081223CA: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - mov r1, r12 - adds r1, 0x1C - adds r0, r1 - ldr r1, _081223E0 @ =SpriteCB_UpdatePartyMonIcon - b _081223F0 - .align 2, 0 -_081223DC: .4byte 0x0000fffc -_081223E0: .4byte SpriteCB_UpdatePartyMonIcon -_081223E4: - strh r3, [r2, 0x24] - strh r3, [r2, 0x26] - adds r0, r5, 0 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _081223F8 @ =SpriteCB_BouncePartyMonIcon -_081223F0: - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081223F8: .4byte SpriteCB_BouncePartyMonIcon - thumb_func_end AnimateSelectedPartyIcon - - thumb_func_start SpriteCB_BouncePartyMonIcon -SpriteCB_BouncePartyMonIcon: @ 81223FC - push {r4,lr} - adds r4, r0, 0 - bl UpdateMonIconFrame - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08122422 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08122420 - ldr r0, _0812241C @ =0x0000fffd - strh r0, [r4, 0x26] - b _08122422 - .align 2, 0 -_0812241C: .4byte 0x0000fffd -_08122420: - strh r1, [r4, 0x26] -_08122422: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_BouncePartyMonIcon - - thumb_func_start SpriteCB_UpdatePartyMonIcon -SpriteCB_UpdatePartyMonIcon: @ 8122428 - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end SpriteCB_UpdatePartyMonIcon - - thumb_func_start CreatePartyMonHeldItemSprite -CreatePartyMonHeldItemSprite: @ 8122434 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0812245C - ldr r0, _08122464 @ =sSpriteTemplate_HeldItem - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x3] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xA] - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdatePartyMonHeldItemSprite -_0812245C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08122464: .4byte sSpriteTemplate_HeldItem - thumb_func_end CreatePartyMonHeldItemSprite - - thumb_func_start CreatePartyMonHeldItemSpriteParameterized -CreatePartyMonHeldItemSpriteParameterized: @ 8122468 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r0, 0 - beq _081224A4 - ldr r0, _081224AC @ =sSpriteTemplate_HeldItem - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x3] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xA] - ldr r2, _081224B0 @ =gSprites - ldrb r0, [r4, 0xA] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] - adds r0, r5, 0 - adds r1, r4, 0 - bl ShowOrHideHeldItemSprite -_081224A4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081224AC: .4byte sSpriteTemplate_HeldItem -_081224B0: .4byte gSprites - thumb_func_end CreatePartyMonHeldItemSpriteParameterized - - thumb_func_start UpdatePartyMonHeldItemSprite -UpdatePartyMonHeldItemSprite: @ 81224B4 - push {r4,lr} - adds r4, r1, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl ShowOrHideHeldItemSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end UpdatePartyMonHeldItemSprite - - thumb_func_start ShowOrHideHeldItemSprite -ShowOrHideHeldItemSprite: @ 81224D0 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _081224F8 - ldr r2, _081224F4 @ =gSprites - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _08122544 - .align 2, 0 -_081224F4: .4byte gSprites -_081224F8: - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0812251C - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08122518 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _0812252E - .align 2, 0 -_08122518: .4byte gSprites -_0812251C: - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812254C @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim -_0812252E: - ldr r2, _0812254C @ =gSprites - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_08122544: - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812254C: .4byte gSprites - thumb_func_end ShowOrHideHeldItemSprite - - thumb_func_start LoadHeldItemIcons -LoadHeldItemIcons: @ 8122550 - push {lr} - ldr r0, _08122564 @ =sSpriteSheet_HeldItem - bl LoadSpriteSheet - ldr r0, _08122568 @ =sSpritePalette_HeldItem - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122564: .4byte sSpriteSheet_HeldItem -_08122568: .4byte sSpritePalette_HeldItem - thumb_func_end LoadHeldItemIcons - - thumb_func_start DrawHeldItemIconsForTrade -DrawHeldItemIconsForTrade: @ 812256C - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0 - beq _08122580 - cmp r2, 0x1 - beq _081225C8 - b _08122604 -_08122580: - movs r5, 0 - ldrb r0, [r6] - cmp r5, r0 - bcs _08122604 -_08122588: - movs r0, 0x64 - muls r0, r5 - ldr r1, _081225C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _081225B4 - adds r0, r7, r5 - ldrb r4, [r0] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemSpriteForTrade -_081225B4: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r0, [r6] - cmp r5, r0 - bcc _08122588 - b _08122604 - .align 2, 0 -_081225C4: .4byte gPlayerParty -_081225C8: - movs r5, 0 - b _081225FE -_081225CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0812260C @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _081225F8 - adds r0, r5, r7 - ldrb r4, [r0, 0x6] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemSpriteForTrade -_081225F8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_081225FE: - ldrb r0, [r6, 0x1] - cmp r5, r0 - bcc _081225CC -_08122604: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812260C: .4byte gEnemyParty - thumb_func_end DrawHeldItemIconsForTrade - - thumb_func_start CreateHeldItemSpriteForTrade -CreateHeldItemSpriteForTrade: @ 8122610 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r6, r0, 0 - mov r9, r1 - lsls r6, 24 - lsrs r6, 24 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _08122688 @ =gSprites - mov r8, r0 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - add r0, r8 - adds r0, 0x43 - ldrb r3, [r0] - ldr r0, _0812268C @ =sSpriteTemplate_HeldItem - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xFA - movs r2, 0xAA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r0, r8 - adds r5, r4, r0 - movs r0, 0x4 - strh r0, [r5, 0x24] - movs r0, 0xA - strh r0, [r5, 0x26] - movs r0, 0x1C - add r8, r0 - add r4, r8 - ldr r0, _08122690 @ =SpriteCB_HeldItem - str r0, [r4] - strh r6, [r5, 0x3C] - adds r0, r5, 0 - mov r1, r9 - bl StartSpriteAnim - ldr r1, [r4] - adds r0, r5, 0 - bl _call_via_r1 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122688: .4byte gSprites -_0812268C: .4byte sSpriteTemplate_HeldItem -_08122690: .4byte SpriteCB_HeldItem - thumb_func_end CreateHeldItemSpriteForTrade - - thumb_func_start SpriteCB_HeldItem -SpriteCB_HeldItem: @ 8122694 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _081226C4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _081226C8 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _081226E6 - .align 2, 0 -_081226C4: .4byte gSprites -_081226C8: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x26] - ldrh r2, [r2, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] -_081226E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_HeldItem - - thumb_func_start CreatePartyMonPokeballSprite -CreatePartyMonPokeballSprite: @ 81226EC - push {r4,lr} - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0812270A - ldr r0, _08122710 @ =sSpriteTemplate_MenuPokeball - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x6] - ldrb r2, [r2, 0x7] - movs r3, 0x8 - bl CreateSprite - strb r0, [r4, 0xB] -_0812270A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122710: .4byte sSpriteTemplate_MenuPokeball - thumb_func_end CreatePartyMonPokeballSprite - - thumb_func_start CreatePartyMonPokeballSpriteParameterized -CreatePartyMonPokeballSpriteParameterized: @ 8122714 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - cmp r0, 0 - beq _08122744 - ldr r0, _0812274C @ =sSpriteTemplate_MenuPokeball - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x6] - ldrb r2, [r2, 0x7] - movs r3, 0x8 - bl CreateSprite - strb r0, [r4, 0xB] - ldr r2, _08122750 @ =gSprites - ldrb r0, [r4, 0xB] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_08122744: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812274C: .4byte sSpriteTemplate_MenuPokeball -_08122750: .4byte gSprites - thumb_func_end CreatePartyMonPokeballSpriteParameterized - - thumb_func_start CreatePokeballButtonSprite -CreatePokeballButtonSprite: @ 8122754 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0812278C @ =sSpriteTemplate_MenuPokeball - adds r1, r3, 0 - movs r3, 0x8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08122790 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - ands r2, r3 - movs r3, 0x8 - orrs r2, r3 - strb r2, [r1, 0x5] - pop {r1} - bx r1 - .align 2, 0 -_0812278C: .4byte sSpriteTemplate_MenuPokeball -_08122790: .4byte gSprites - thumb_func_end CreatePokeballButtonSprite - - thumb_func_start CreateSmallPokeballButtonSprite -CreateSmallPokeballButtonSprite: @ 8122794 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _081227B4 @ =sSpriteTemplate_MenuPokeballSmall - adds r1, r3, 0 - movs r3, 0x8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_081227B4: .4byte sSpriteTemplate_MenuPokeballSmall - thumb_func_end CreateSmallPokeballButtonSprite - - thumb_func_start PartyMenuStartSpriteAnim -PartyMenuStartSpriteAnim: @ 81227B8 - push {lr} - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _081227D8 @ =gSprites - adds r0, r2 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_081227D8: .4byte gSprites - thumb_func_end PartyMenuStartSpriteAnim - - thumb_func_start SpriteCB_BounceConfirmCancelButton -SpriteCB_BounceConfirmCancelButton: @ 81227DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - cmp r6, 0 - bne _08122820 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0812281C @ =gSprites - mov r8, r0 - add r4, r8 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - lsls r5, r7, 4 - adds r5, r7 - lsls r5, 2 - add r5, r8 - adds r0, r5, 0 - movs r1, 0x4 - bl StartSpriteAnim - strh r6, [r4, 0x26] - strh r6, [r5, 0x26] - b _0812284C - .align 2, 0 -_0812281C: .4byte gSprites -_08122820: - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _08122858 @ =gSprites - mov r8, r0 - add r5, r8 - adds r0, r5, 0 - movs r1, 0x3 - bl StartSpriteAnim - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - add r4, r8 - adds r0, r4, 0 - movs r1, 0x5 - bl StartSpriteAnim - ldr r0, _0812285C @ =0x0000fffc - strh r0, [r5, 0x26] - movs r0, 0x4 - strh r0, [r4, 0x26] -_0812284C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122858: .4byte gSprites -_0812285C: .4byte 0x0000fffc - thumb_func_end SpriteCB_BounceConfirmCancelButton - - thumb_func_start LoadPartyMenuPokeballGfx -LoadPartyMenuPokeballGfx: @ 8122860 - push {lr} - ldr r0, _08122878 @ =sSpriteSheet_MenuPokeball - bl LoadCompressedSpriteSheet - ldr r0, _0812287C @ =sSpriteSheet_MenuPokeballSmall - bl LoadCompressedSpriteSheet - ldr r0, _08122880 @ =sSpritePalette_MenuPokeball - bl LoadCompressedSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122878: .4byte sSpriteSheet_MenuPokeball -_0812287C: .4byte sSpriteSheet_MenuPokeballSmall -_08122880: .4byte sSpritePalette_MenuPokeball - thumb_func_end LoadPartyMenuPokeballGfx - - thumb_func_start CreatePartyMonStatusSprite -CreatePartyMonStatusSprite: @ 8122884 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081228AC - ldr r0, _081228B4 @ =sSpriteTemplate_StatusIcons - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x4] - ldrb r2, [r2, 0x5] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl SetPartyMonAilmentGfx -_081228AC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081228B4: .4byte sSpriteTemplate_StatusIcons - thumb_func_end CreatePartyMonStatusSprite - - thumb_func_start CreatePartyMonStatusSpriteParameterized -CreatePartyMonStatusSpriteParameterized: @ 81228B8 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0 - beq _081228F4 - ldr r0, _081228FC @ =sSpriteTemplate_StatusIcons - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x4] - ldrb r2, [r2, 0x5] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdatePartyMonAilmentGfx - ldr r2, _08122900 @ =gSprites - ldrb r0, [r4, 0xC] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_081228F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081228FC: .4byte sSpriteTemplate_StatusIcons -_08122900: .4byte gSprites - thumb_func_end CreatePartyMonStatusSpriteParameterized - - thumb_func_start SetPartyMonAilmentGfx -SetPartyMonAilmentGfx: @ 8122904 - push {r4,lr} - adds r4, r1, 0 - bl GetMonAilment - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl UpdatePartyMonAilmentGfx - pop {r4} - pop {r0} - bx r0 - thumb_func_end SetPartyMonAilmentGfx - - thumb_func_start UpdatePartyMonAilmentGfx -UpdatePartyMonAilmentGfx: @ 812291C - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0812292C - cmp r2, 0x6 - bne _08122948 -_0812292C: - ldr r2, _08122944 @ =gSprites - ldrb r1, [r5, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _08122972 - .align 2, 0 -_08122944: .4byte gSprites -_08122948: - ldrb r1, [r5, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0812297C @ =gSprites - adds r0, r4 - subs r1, r2, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldrb r1, [r5, 0xC] - 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 -_08122972: - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812297C: .4byte gSprites - thumb_func_end UpdatePartyMonAilmentGfx - - thumb_func_start LoadPartyMenuAilmentGfx -LoadPartyMenuAilmentGfx: @ 8122980 - push {lr} - ldr r0, _08122994 @ =sSpriteSheet_StatusIcons - bl LoadCompressedSpriteSheet - ldr r0, _08122998 @ =sSpritePalette_StatusIcons - bl LoadCompressedSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122994: .4byte sSpriteSheet_StatusIcons -_08122998: .4byte sSpritePalette_StatusIcons - thumb_func_end LoadPartyMenuAilmentGfx - - thumb_func_start SetPartyMonSelectionActions -SetPartyMonSelectionActions: @ 812299C - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0 - bne _081229B0 - bl SetPartyMonFieldSelectionActions - b _081229E8 -_081229B0: - ldr r4, _081229F0 @ =sPartyMenuInternal - ldr r1, [r4] - ldr r0, _081229F4 @ =sPartyMenuActionCounts - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1, 0x17] - movs r3, 0 - ldr r0, [r4] - ldrb r0, [r0, 0x17] - cmp r3, r0 - bcs _081229E8 - ldr r1, _081229F8 @ =sPartyMenuActions - lsls r0, r2, 2 - adds r2, r0, r1 -_081229CC: - ldr r1, [r4] - adds r1, 0xF - adds r1, r3 - ldr r0, [r2] - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, [r4] - ldrb r0, [r0, 0x17] - cmp r3, r0 - bcc _081229CC -_081229E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081229F0: .4byte sPartyMenuInternal -_081229F4: .4byte sPartyMenuActionCounts -_081229F8: .4byte sPartyMenuActions - thumb_func_end SetPartyMonSelectionActions - - thumb_func_start SetPartyMonFieldSelectionActions -SetPartyMonFieldSelectionActions: @ 81229FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - ldr r2, _08122A78 @ =sPartyMenuInternal - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0x17] - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0 - bl AppendToList - movs r7, 0 - ldr r0, _08122A7C @ =sFieldMoves - ldrh r0, [r0] - str r0, [sp] - mov r0, r9 - adds r0, 0x64 - str r0, [sp, 0x4] -_08122A34: - movs r4, 0 - adds r1, r7, 0x1 - mov r8, r1 - ldr r0, [sp] - cmp r0, 0xC - beq _08122A90 - movs r0, 0x64 - mov r6, r10 - muls r6, r0 - ldr r5, _08122A7C @ =sFieldMoves -_08122A48: - mov r1, r9 - adds r0, r1, r6 - adds r1, r7, 0 - adds r1, 0xD - bl GetMonData - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - cmp r0, r1 - bne _08122A80 - ldr r0, _08122A78 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - adds r2, r4, 0 - adds r2, 0x12 - lsls r2, 24 - lsrs r2, 24 - bl AppendToList - b _08122A90 - .align 2, 0 -_08122A78: .4byte sPartyMenuInternal -_08122A7C: .4byte sFieldMoves -_08122A80: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0xC - bne _08122A48 -_08122A90: - mov r1, r8 - lsls r0, r1, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _08122A34 - ldr r0, [sp, 0x4] - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08122AB6 - ldr r0, _08122AE8 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x1 - bl AppendToList -_08122AB6: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08122AEC - ldr r0, _08122AE8 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x6 - bl AppendToList - b _08122AFC - .align 2, 0 -_08122AE8: .4byte sPartyMenuInternal -_08122AEC: - ldr r0, _08122B1C @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x3 - bl AppendToList -_08122AFC: - ldr r0, _08122B1C @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x2 - bl AppendToList - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122B1C: .4byte sPartyMenuInternal - thumb_func_end SetPartyMonFieldSelectionActions - - thumb_func_start GetPartyMenuActionsType -GetPartyMenuActionsType: @ 8122B20 - push {lr} - adds r2, r0, 0 - ldr r1, _08122B3C @ =gPartyMenu - ldrb r0, [r1, 0x8] - lsls r0, 28 - lsrs r0, 28 - adds r3, r1, 0 - cmp r0, 0xA - bhi _08122BCA - lsls r0, 2 - ldr r1, _08122B40 @ =_08122B44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08122B3C: .4byte gPartyMenu -_08122B40: .4byte _08122B44 - .align 2, 0 -_08122B44: - .4byte _08122B70 - .4byte _08122B80 - .4byte _08122BCA - .4byte _08122BCA - .4byte _08122B8C - .4byte _08122BCA - .4byte _08122BAC - .4byte _08122BCA - .4byte _08122BBE - .4byte _08122BC2 - .4byte _08122BC6 -_08122B70: - adds r0, r2, 0 - movs r1, 0x2D - bl GetMonData - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - b _08122BCC -_08122B80: - adds r0, r2, 0 - bl GetPartyMenuActionsTypeInBattle - lsls r0, 24 - lsrs r1, r0, 24 - b _08122BCC -_08122B8C: - movs r0, 0x9 - ldrsb r0, [r3, r0] - bl GetPartySlotEntryStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08122BA4 - cmp r0, 0x1 - beq _08122BA8 - movs r1, 0x7 - b _08122BCC -_08122BA4: - movs r1, 0x4 - b _08122BCC -_08122BA8: - movs r1, 0x5 - b _08122BCC -_08122BAC: - adds r0, r2, 0 - movs r1, 0x2D - bl GetMonData - movs r1, 0x6 - cmp r0, 0 - beq _08122BCC - movs r1, 0x7 - b _08122BCC -_08122BBE: - movs r1, 0xA - b _08122BCC -_08122BC2: - movs r1, 0xB - b _08122BCC -_08122BC6: - movs r1, 0xC - b _08122BCC -_08122BCA: - movs r1, 0 -_08122BCC: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end GetPartyMenuActionsType - - thumb_func_start CreateSelectionWindow -CreateSelectionWindow: @ 8122BD4 - push {r4-r6,lr} - ldr r5, _08122C20 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r5, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r6, _08122C24 @ =gPlayerParty - adds r4, r6 - ldr r1, _08122C28 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - ldr r0, _08122C2C @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldrb r5, [r5, 0x9] - adds r0, r4, 0 - bl GetPartyMenuActionsType - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetPartyMonSelectionActions - movs r0, 0 - bl DisplaySelectionWindow - movs r0, 0x16 - bl DisplayPartyMenuStdMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122C20: .4byte gPartyMenu -_08122C24: .4byte gPlayerParty -_08122C28: .4byte gStringVar1 -_08122C2C: .4byte sPartyMenuInternal - thumb_func_end CreateSelectionWindow - - thumb_func_start Task_TryCreateSelectionWindow -Task_TryCreateSelectionWindow: @ 8122C30 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl CreateSelectionWindow - ldr r1, _08122C54 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _08122C58 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122C54: .4byte gTasks -_08122C58: .4byte Task_HandleSelectionMenuInput - thumb_func_end Task_TryCreateSelectionWindow - - thumb_func_start Task_HandleSelectionMenuInput -Task_HandleSelectionMenuInput: @ 8122C5C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08122C94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08122D3E - bl sub_80BF748 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08122D3E - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _08122C98 @ =gTasks+0x8 - adds r7, r0, r1 - ldr r0, _08122C9C @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x17] - cmp r0, 0x3 - bhi _08122CA0 - bl Menu_ProcessInputNoWrapAround_other - b _08122CA4 - .align 2, 0 -_08122C94: .4byte gPaletteFade -_08122C98: .4byte gTasks+0x8 -_08122C9C: .4byte sPartyMenuInternal -_08122CA0: - bl Menu_ProcessInput_other -_08122CA4: - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - ldrsh r4, [r7, r0] - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _08122CCE - ldr r0, _08122D14 @ =sPartyMenuInternal - ldr r4, [r0] - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - adds r4, 0xF - adds r4, r0 - ldrb r0, [r4] - bl sub_8122138 -_08122CCE: - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7] - lsls r0, r5, 24 - asrs r5, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _08122D3E - adds r0, 0x1 - cmp r5, r0 - bne _08122D1C - movs r0, 0x5 - bl PlaySE - ldr r4, _08122D14 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xE - bl PartyMenuRemoveWindow - ldr r2, _08122D18 @ =sCursorOptions - ldr r0, [r4] - ldrb r1, [r0, 0x17] - adds r0, r1 - ldrb r0, [r0, 0xE] - lsls r0, 3 - adds r2, 0x4 - adds r0, r2 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 - b _08122D3E - .align 2, 0 -_08122D14: .4byte sPartyMenuInternal -_08122D18: .4byte sCursorOptions -_08122D1C: - ldr r4, _08122D44 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xE - bl PartyMenuRemoveWindow - ldr r1, _08122D48 @ =sCursorOptions - ldr r0, [r4] - adds r0, 0xF - adds r0, r5 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_08122D3E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122D44: .4byte sPartyMenuInternal -_08122D48: .4byte sCursorOptions - thumb_func_end Task_HandleSelectionMenuInput - - thumb_func_start CursorCB_Summary -CursorCB_Summary: @ 8122D4C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08122D70 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08122D74 @ =CB2_ShowPokemonSummaryScreen - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122D70: .4byte sPartyMenuInternal -_08122D74: .4byte CB2_ShowPokemonSummaryScreen - thumb_func_end CursorCB_Summary - - thumb_func_start CB2_ShowPokemonSummaryScreen -CB2_ShowPokemonSummaryScreen: @ 8122D78 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08122DAC @ =gPartyMenu - ldrb r1, [r4, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _08122D8C - bl UpdatePartyToBattleOrder -_08122D8C: - ldr r0, _08122DB0 @ =gPlayerParty - ldrb r1, [r4, 0x9] - ldr r2, _08122DB4 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08122DB8 @ =CB2_ReturnToPartyMenuFromSummaryScreen - movs r4, 0 - str r4, [sp] - bl ShowPokemonSummaryScreen - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122DAC: .4byte gPartyMenu -_08122DB0: .4byte gPlayerParty -_08122DB4: .4byte gPlayerPartyCount -_08122DB8: .4byte CB2_ReturnToPartyMenuFromSummaryScreen - thumb_func_end CB2_ShowPokemonSummaryScreen - - thumb_func_start CB2_ReturnToPartyMenuFromSummaryScreen -CB2_ReturnToPartyMenuFromSummaryScreen: @ 8122DBC - push {lr} - sub sp, 0xC - ldr r2, _08122DF4 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - bl sub_8138B20 - ldr r3, _08122DF8 @ =gPartyMenu - strb r0, [r3, 0x9] - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r3, 0xB] - movs r1, 0x16 - str r1, [sp] - ldr r1, _08122DFC @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r3] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08122DF4: .4byte gPaletteFade -_08122DF8: .4byte gPartyMenu -_08122DFC: .4byte Task_TryCreateSelectionWindow - thumb_func_end CB2_ReturnToPartyMenuFromSummaryScreen - - thumb_func_start CursorCB_Switch -CursorCB_Switch: @ 8122E00 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x5 - bl PlaySE - ldr r5, _08122E4C @ =gPartyMenu - movs r0, 0x8 - strb r0, [r5, 0xB] - ldr r4, _08122E50 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - movs r0, 0x3 - bl DisplayPartyMenuStdMessage - ldrb r0, [r5, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - ldrb r0, [r5, 0x9] - strb r0, [r5, 0xA] - ldr r1, _08122E54 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122E58 @ =Task_HandleChooseMonInput - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122E4C: .4byte gPartyMenu -_08122E50: .4byte sPartyMenuInternal -_08122E54: .4byte gTasks -_08122E58: .4byte Task_HandleChooseMonInput - thumb_func_end CursorCB_Switch - - thumb_func_start SwitchSelectedMons -SwitchSelectedMons: @ 8122E5C - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _08122E84 @ =gTasks+0x8 - adds r6, r0, r1 - ldr r4, _08122E88 @ =gPartyMenu - movs r1, 0xA - ldrsb r1, [r4, r1] - movs r0, 0x9 - ldrsb r0, [r4, r0] - cmp r1, r0 - bne _08122E8C - adds r0, r7, 0 - bl FinishTwoMonAction - b _08122FE2 - .align 2, 0 -_08122E84: .4byte gTasks+0x8 -_08122E88: .4byte gPartyMenu -_08122E8C: - bl sub_812358C - add r2, sp, 0x8 - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r1, _08122EE8 @ =sPartyMenuBoxes - ldr r1, [r1] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r4, 0 - strb r0, [r2] - adds r0, r2, 0 - ldrb r0, [r0] - movs r1, 0x1 - bl GetWindowAttribute - strh r0, [r6] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x2 - bl GetWindowAttribute - strh r0, [r6, 0x2] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x3 - bl GetWindowAttribute - strh r0, [r6, 0x4] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x4 - bl GetWindowAttribute - strh r0, [r6, 0x6] - strh r4, [r6, 0x10] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0xA - bne _08122EEC - movs r2, 0x1 - negs r2, r2 - adds r0, r2, 0 - b _08122EEE - .align 2, 0 -_08122EE8: .4byte sPartyMenuBoxes -_08122EEC: - movs r0, 0x1 -_08122EEE: - strh r0, [r6, 0x14] - add r2, sp, 0x8 - ldr r0, _08122F4C @ =gPartyMenu - ldrb r0, [r0, 0xA] - lsls r0, 24 - asrs r0, 24 - ldr r1, _08122F50 @ =sPartyMenuBoxes - ldr r1, [r1] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r4, 0 - strb r0, [r2, 0x1] - adds r0, r2, 0 - ldrb r0, [r0, 0x1] - movs r1, 0x1 - bl GetWindowAttribute - strh r0, [r6, 0x8] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x2 - bl GetWindowAttribute - strh r0, [r6, 0xA] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x3 - bl GetWindowAttribute - strh r0, [r6, 0xC] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x4 - bl GetWindowAttribute - strh r0, [r6, 0xE] - strh r4, [r6, 0x12] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0xA - bne _08122F54 - movs r2, 0x1 - negs r2, r2 - adds r0, r2, 0 - b _08122F56 - .align 2, 0 -_08122F4C: .4byte gPartyMenu -_08122F50: .4byte sPartyMenuBoxes -_08122F54: - movs r0, 0x1 -_08122F56: - strh r0, [r6, 0x16] - ldr r4, _08122FEC @ =sSlot1TilemapBuffer - movs r0, 0x4 - ldrsh r1, [r6, r0] - movs r2, 0x6 - ldrsh r0, [r6, r2] - lsls r0, 1 - muls r0, r1 - bl Alloc - str r0, [r4] - ldr r5, _08122FF0 @ =sSlot2TilemapBuffer - movs r0, 0xC - ldrsh r1, [r6, r0] - movs r2, 0xE - ldrsh r0, [r6, r2] - lsls r0, 1 - muls r0, r1 - bl Alloc - str r0, [r5] - ldr r1, [r4] - ldrb r2, [r6] - ldrb r3, [r6, 0x2] - ldrb r0, [r6, 0x4] - str r0, [sp] - ldrb r0, [r6, 0x6] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - ldr r1, [r5] - ldrb r2, [r6, 0x8] - ldrb r3, [r6, 0xA] - ldrb r0, [r6, 0xC] - str r0, [sp] - ldrb r0, [r6, 0xE] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - add r0, sp, 0x8 - ldrb r0, [r0] - bl ClearWindowTilemap - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl ClearWindowTilemap - ldr r4, _08122FF4 @ =gPartyMenu - movs r0, 0x9 - strb r0, [r4, 0xB] - ldrb r0, [r4, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - ldrb r0, [r4, 0xA] - movs r1, 0x1 - bl AnimatePartySlot - adds r0, r7, 0 - bl SlidePartyMenuBoxOneStep - ldr r1, _08122FF8 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122FFC @ =Task_SlideSelectedSlotsOffscreen - str r1, [r0] -_08122FE2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122FEC: .4byte sSlot1TilemapBuffer -_08122FF0: .4byte sSlot2TilemapBuffer -_08122FF4: .4byte gPartyMenu -_08122FF8: .4byte gTasks -_08122FFC: .4byte Task_SlideSelectedSlotsOffscreen - thumb_func_end SwitchSelectedMons - - thumb_func_start TryMovePartySlot -TryMovePartySlot: @ 8123000 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r2, 0 - mov r12, r3 - ldr r7, [sp, 0x18] - lsls r0, 16 - lsrs r3, r0, 16 - adds r5, r3, 0 - lsls r1, 16 - lsrs r2, r1, 16 - mov r8, r2 - lsls r0, r3, 16 - asrs r1, r0, 16 - lsls r0, r2, 16 - asrs r0, 16 - adds r4, r1, r0 - cmp r4, 0 - blt _0812302A - cmp r1, 0x1F - ble _0812302E -_0812302A: - movs r0, 0 - b _0812305C -_0812302E: - cmp r1, 0 - bge _08123042 - negs r0, r1 - strb r0, [r6] - movs r0, 0 - mov r1, r12 - strb r0, [r1] - adds r0, r2, r3 - strb r0, [r7] - b _0812305A -_08123042: - movs r0, 0 - strb r0, [r6] - mov r0, r12 - strb r5, [r0] - cmp r4, 0x1F - ble _08123056 - movs r0, 0x20 - subs r0, r5 - strb r0, [r7] - b _0812305A -_08123056: - mov r1, r8 - strb r1, [r7] -_0812305A: - movs r0, 0x1 -_0812305C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TryMovePartySlot - - thumb_func_start MoveAndBufferPartySlot -MoveAndBufferPartySlot: @ 8123068 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - str r0, [sp, 0x28] - ldr r0, [sp, 0x54] - ldr r4, [sp, 0x58] - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 16 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x30] - lsls r1, 16 - asrs r7, r1, 16 - lsrs r0, r3, 16 - str r0, [sp, 0x2C] - asrs r3, 16 - mov r8, r3 - mov r5, sp - adds r5, 0x25 - mov r6, sp - adds r6, 0x26 - str r6, [sp] - adds r0, r7, 0 - mov r1, r8 - add r2, sp, 0x24 - adds r3, r5, 0 - bl TryMovePartySlot - lsls r0, 24 - cmp r0, 0 - beq _08123122 - ldrb r2, [r5] - mov r1, r9 - lsls r0, r1, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r0, [r6] - str r0, [sp] - mov r1, r10 - lsls r0, r1, 24 - lsrs r4, r0, 24 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - mov r3, r9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, [sp, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r7, r0 - lsls r0, 16 - asrs r0, 16 - str r6, [sp] - mov r1, r8 - add r2, sp, 0x24 - adds r3, r5, 0 - bl TryMovePartySlot - lsls r0, 24 - cmp r0, 0 - beq _08123122 - add r0, sp, 0x24 - ldrb r2, [r0] - ldr r1, [sp, 0x2C] - lsls r0, r1, 24 - lsrs r0, 24 - str r0, [sp] - str r4, [sp, 0x4] - ldrb r0, [r5] - str r0, [sp, 0x8] - mov r0, r9 - str r0, [sp, 0xC] - ldrb r0, [r6] - str r0, [sp, 0x10] - str r4, [sp, 0x14] - movs r0, 0x11 - str r0, [sp, 0x18] - movs r0, 0 - str r0, [sp, 0x1C] - str r0, [sp, 0x20] - ldr r1, [sp, 0x28] - movs r3, 0 - bl CopyRectToBgTilemapBufferRect -_08123122: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end MoveAndBufferPartySlot - - thumb_func_start MovePartyMenuBoxSprites -MovePartyMenuBoxSprites: @ 8123134 - push {r4,lr} - ldr r4, _08123184 @ =gSprites - ldrb r2, [r0, 0xB] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - lsls r1, 16 - asrs r1, 13 - ldrh r2, [r3, 0x24] - adds r2, r1 - strh r2, [r3, 0x24] - ldrb r3, [r0, 0xA] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r4 - ldrh r3, [r2, 0x24] - adds r3, r1 - strh r3, [r2, 0x24] - ldrb r3, [r0, 0x9] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r4 - ldrh r3, [r2, 0x24] - adds r3, r1 - strh r3, [r2, 0x24] - ldrb r2, [r0, 0xC] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrh r2, [r0, 0x24] - adds r2, r1 - strh r2, [r0, 0x24] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123184: .4byte gSprites - thumb_func_end MovePartyMenuBoxSprites - - thumb_func_start SlidePartyMenuBoxSpritesOneStep -SlidePartyMenuBoxSpritesOneStep: @ 8123188 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081231DC @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081231B6 - ldr r2, _081231E0 @ =sPartyMenuBoxes - ldr r0, _081231E4 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - lsls r1, 4 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x14 - ldrsh r1, [r4, r2] - bl MovePartyMenuBoxSprites -_081231B6: - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081231D4 - ldr r2, _081231E0 @ =sPartyMenuBoxes - ldr r0, _081231E4 @ =gPartyMenu - movs r1, 0xA - ldrsb r1, [r0, r1] - lsls r1, 4 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x16 - ldrsh r1, [r4, r2] - bl MovePartyMenuBoxSprites -_081231D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081231DC: .4byte gTasks+0x8 -_081231E0: .4byte sPartyMenuBoxes -_081231E4: .4byte gPartyMenu - thumb_func_end SlidePartyMenuBoxSpritesOneStep - - thumb_func_start SlidePartyMenuBoxOneStep -SlidePartyMenuBoxOneStep: @ 81231E8 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08123264 @ =gTasks+0x8 - adds r5, r1, r0 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08123228 - ldr r0, _08123268 @ =sSlot1TilemapBuffer - ldr r0, [r0] - ldrh r1, [r5, 0x10] - ldrh r2, [r5] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r3, 0x2 - ldrsh r2, [r5, r3] - movs r4, 0x4 - ldrsh r3, [r5, r4] - movs r6, 0x6 - ldrsh r4, [r5, r6] - str r4, [sp] - movs r6, 0x14 - ldrsh r4, [r5, r6] - str r4, [sp, 0x4] - bl MoveAndBufferPartySlot -_08123228: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08123256 - ldr r0, _0812326C @ =sSlot2TilemapBuffer - ldr r0, [r0] - ldrh r1, [r5, 0x12] - ldrh r2, [r5, 0x8] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r3, 0xA - ldrsh r2, [r5, r3] - movs r4, 0xC - ldrsh r3, [r5, r4] - movs r6, 0xE - ldrsh r4, [r5, r6] - str r4, [sp] - movs r6, 0x16 - ldrsh r4, [r5, r6] - str r4, [sp, 0x4] - bl MoveAndBufferPartySlot -_08123256: - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123264: .4byte gTasks+0x8 -_08123268: .4byte sSlot1TilemapBuffer -_0812326C: .4byte sSlot2TilemapBuffer - thumb_func_end SlidePartyMenuBoxOneStep - - thumb_func_start Task_SlideSelectedSlotsOffscreen -Task_SlideSelectedSlotsOffscreen: @ 8123270 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r7, r0, 3 - ldr r0, _08123370 @ =gTasks+0x8 - mov r8, r0 - adds r6, r7, r0 - adds r0, r4, 0 - bl SlidePartyMenuBoxOneStep - adds r0, r4, 0 - bl SlidePartyMenuBoxSpritesOneStep - ldrh r1, [r6, 0x14] - ldrh r2, [r6, 0x10] - adds r1, r2 - strh r1, [r6, 0x10] - ldrh r0, [r6, 0x16] - ldrh r3, [r6, 0x12] - adds r0, r3 - strh r0, [r6, 0x12] - add r2, sp, 0x8 - ldrh r0, [r6] - adds r0, r1 - strh r0, [r2] - adds r1, r2, 0 - ldrh r0, [r6, 0x12] - ldrh r3, [r6, 0x8] - adds r2, r0, r3 - strh r2, [r1, 0x2] - adds r0, r1, 0 - ldrh r0, [r0] - cmp r0, 0x21 - bls _08123362 - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0x21 - bls _08123362 - movs r1, 0x14 - ldrsh r0, [r6, r1] - negs r0, r0 - strh r0, [r6, 0x14] - movs r2, 0x16 - ldrsh r0, [r6, r2] - negs r0, r0 - strh r0, [r6, 0x16] - bl SwitchPartyMon - ldr r4, _08123374 @ =gPartyMenu - ldrb r0, [r4, 0x9] - bl DisplayPartyPokemonData - ldrb r0, [r4, 0xA] - bl DisplayPartyPokemonData - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r5, _08123378 @ =sPartyMenuBoxes - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0xA - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - ldr r0, _0812337C @ =sSlot1TilemapBuffer - ldr r1, [r0] - ldrb r2, [r6] - ldrb r3, [r6, 0x2] - ldrb r0, [r6, 0x4] - str r0, [sp] - ldrb r0, [r6, 0x6] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - ldr r0, _08123380 @ =sSlot2TilemapBuffer - ldr r1, [r0] - ldrb r2, [r6, 0x8] - ldrb r3, [r6, 0xA] - ldrb r0, [r6, 0xC] - str r0, [sp] - ldrb r0, [r6, 0xE] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl ClearWindowTilemap - movs r0, 0xA - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl ClearWindowTilemap - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _08123384 @ =Task_SlideSelectedSlotsOnscreen - str r1, [r0] -_08123362: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123370: .4byte gTasks+0x8 -_08123374: .4byte gPartyMenu -_08123378: .4byte sPartyMenuBoxes -_0812337C: .4byte sSlot1TilemapBuffer -_08123380: .4byte sSlot2TilemapBuffer -_08123384: .4byte Task_SlideSelectedSlotsOnscreen - thumb_func_end Task_SlideSelectedSlotsOffscreen - - thumb_func_start Task_SlideSelectedSlotsOnscreen -Task_SlideSelectedSlotsOnscreen: @ 8123388 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _081233E8 @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r6, 0 - bl SlidePartyMenuBoxOneStep - adds r0, r6, 0 - bl SlidePartyMenuBoxSpritesOneStep - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081233F4 - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _081233F4 - ldr r5, _081233EC @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r5, r0] - ldr r4, _081233F0 @ =sPartyMenuBoxes - ldr r1, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0xA - ldrsb r0, [r5, r0] - ldr r1, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - adds r0, r6, 0 - bl FinishTwoMonAction - b _08123418 - .align 2, 0 -_081233E8: .4byte gTasks+0x8 -_081233EC: .4byte gPartyMenu -_081233F0: .4byte sPartyMenuBoxes -_081233F4: - ldrh r1, [r4, 0x14] - ldrh r0, [r4, 0x10] - adds r1, r0 - strh r1, [r4, 0x10] - ldrh r0, [r4, 0x16] - ldrh r2, [r4, 0x12] - adds r0, r2 - strh r0, [r4, 0x12] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0 - bne _0812340E - strh r1, [r4, 0x14] -_0812340E: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08123418 - strh r0, [r4, 0x16] -_08123418: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end Task_SlideSelectedSlotsOnscreen - - thumb_func_start SwitchMenuBoxSprites -SwitchMenuBoxSprites: @ 8123420 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldrb r3, [r0] - ldrb r2, [r1] - strb r2, [r0] - strb r3, [r1] - ldr r5, _081234E8 @ =gSprites - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrh r6, [r3, 0x20] - ldrh r2, [r3, 0x22] - mov r8, r2 - ldrh r2, [r3, 0x24] - mov r9, r2 - ldrh r2, [r3, 0x26] - mov r10, r2 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x20] - strh r2, [r3, 0x20] - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x22] - strh r2, [r3, 0x22] - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x24] - strh r2, [r3, 0x24] - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldrb r3, [r1] - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x26] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x20] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - mov r2, r8 - strh r2, [r0, 0x22] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - mov r2, r9 - strh r2, [r0, 0x24] - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r10 - strh r1, [r0, 0x26] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081234E8: .4byte gSprites - thumb_func_end SwitchMenuBoxSprites - - thumb_func_start SwitchPartyMon -SwitchPartyMon: @ 81234EC - push {r4-r6,lr} - sub sp, 0x8 - ldr r1, _08123580 @ =sPartyMenuBoxes - ldr r2, _08123584 @ =gPartyMenu - movs r3, 0x9 - ldrsb r3, [r2, r3] - lsls r0, r3, 4 - ldr r1, [r1] - adds r0, r1, r0 - str r0, [sp] - ldrb r2, [r2, 0xA] - lsls r2, 24 - asrs r2, 24 - lsls r0, r2, 4 - adds r0, r1, r0 - str r0, [sp, 0x4] - movs r1, 0x64 - adds r4, r3, 0 - muls r4, r1 - ldr r0, _08123588 @ =gPlayerParty - adds r4, r0 - adds r5, r2, 0 - muls r5, r1 - adds r5, r0 - movs r0, 0x64 - bl Alloc - adds r6, r0, 0 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x64 - bl memcpy - adds r0, r6, 0 - bl Free - ldr r0, [sp] - adds r0, 0xB - ldr r1, [sp, 0x4] - adds r1, 0xB - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0xA - ldr r1, [sp, 0x4] - adds r1, 0xA - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0x9 - ldr r1, [sp, 0x4] - adds r1, 0x9 - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0xC - ldr r1, [sp, 0x4] - adds r1, 0xC - bl SwitchMenuBoxSprites - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123580: .4byte sPartyMenuBoxes -_08123584: .4byte gPartyMenu -_08123588: .4byte gPlayerParty - thumb_func_end SwitchPartyMon - - thumb_func_start sub_812358C -sub_812358C: @ 812358C - push {r4-r6,lr} - mov r6, r8 - push {r6} - movs r0, 0x4 - bl Alloc - adds r4, r0, 0 - ldr r0, _081235E0 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - muls r0, r6 - ldr r5, _081235E4 @ =gPlayerParty - adds r0, r5 - movs r1, 0x41 - bl GetMonData - strh r0, [r4] - mov r1, r8 - movs r0, 0xA - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x41 - bl GetMonData - strh r0, [r4, 0x2] - movs r0, 0x3 - adds r1, r4, 0 - bl sub_8113550 - adds r0, r4, 0 - bl Free - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081235E0: .4byte gPartyMenu -_081235E4: .4byte gPlayerParty - thumb_func_end sub_812358C - - thumb_func_start FinishTwoMonAction -FinishTwoMonAction: @ 81235E8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08123630 @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r4, _08123634 @ =gPartyMenu - movs r0, 0 - strb r0, [r4, 0xB] - ldrb r0, [r4, 0x9] - movs r1, 0 - bl AnimatePartySlot - ldrb r0, [r4, 0xA] - strb r0, [r4, 0x9] - ldrb r0, [r4, 0xA] - movs r1, 0x1 - bl AnimatePartySlot - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r1, _08123638 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812363C @ =Task_HandleChooseMonInput - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123630: .4byte sPartyMenuInternal -_08123634: .4byte gPartyMenu -_08123638: .4byte gTasks -_0812363C: .4byte Task_HandleChooseMonInput - thumb_func_end FinishTwoMonAction - - thumb_func_start CursorCB_Cancel1 -CursorCB_Cancel1: @ 8123640 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _08123674 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _08123678 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x6 - bne _0812367C - movs r0, 0xF - bl DisplayPartyMenuStdMessage - b _08123682 - .align 2, 0 -_08123674: .4byte sPartyMenuInternal -_08123678: .4byte gPartyMenu -_0812367C: - movs r0, 0 - bl DisplayPartyMenuStdMessage -_08123682: - ldr r0, _08123698 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812369C @ =Task_HandleChooseMonInput - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123698: .4byte gTasks -_0812369C: .4byte Task_HandleChooseMonInput - thumb_func_end CursorCB_Cancel1 - - thumb_func_start CursorCB_Item -CursorCB_Item: @ 81236A0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _081236F0 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _081236F4 @ =gPlayerParty - ldr r1, _081236F8 @ =gPartyMenu - ldrb r1, [r1, 0x9] - movs r2, 0x8 - bl SetPartyMonSelectionActions - movs r0, 0x1 - bl DisplaySelectionWindow - movs r0, 0x19 - bl DisplayPartyMenuStdMessage - ldr r1, _081236FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _08123700 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081236F0: .4byte sPartyMenuInternal -_081236F4: .4byte gPlayerParty -_081236F8: .4byte gPartyMenu -_081236FC: .4byte gTasks -_08123700: .4byte Task_HandleSelectionMenuInput - thumb_func_end CursorCB_Item - - thumb_func_start CursorCB_Give -CursorCB_Give: @ 8123704 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08123728 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _0812372C @ =CB2_SelectBagItemToGive - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123728: .4byte sPartyMenuInternal -_0812372C: .4byte CB2_SelectBagItemToGive - thumb_func_end CursorCB_Give - - thumb_func_start CB2_SelectBagItemToGive -CB2_SelectBagItemToGive: @ 8123730 - push {lr} - ldr r2, _08123740 @ =CB2_GiveHoldItem - movs r0, 0x1 - movs r1, 0x3 - bl GoToBagMenu - pop {r0} - bx r0 - .align 2, 0 -_08123740: .4byte CB2_GiveHoldItem - thumb_func_end CB2_SelectBagItemToGive - - thumb_func_start CB2_GiveHoldItem -CB2_GiveHoldItem: @ 8123744 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r6, _0812376C @ =gSpecialVar_ItemId - ldrh r0, [r6] - cmp r0, 0 - bne _08123778 - ldr r3, _08123770 @ =gPartyMenu - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r3, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08123774 @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r3] - b _081237AE - .align 2, 0 -_0812376C: .4byte gSpecialVar_ItemId -_08123770: .4byte gPartyMenu -_08123774: .4byte Task_TryCreateSelectionWindow -_08123778: - ldr r4, _081237BC @ =sPartyMenuItemId - ldr r5, _081237C0 @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r5, r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _081237C4 @ =gPlayerParty - adds r0, r7 - movs r1, 0xC - bl GetMonData - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - beq _081237CC - ldrb r0, [r5, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r5, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _081237C8 @ =Task_SwitchHoldItemsPrompt - str r1, [sp, 0x4] - ldr r1, [r5] -_081237AE: - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - b _08123814 - .align 2, 0 -_081237BC: .4byte sPartyMenuItemId -_081237C0: .4byte gPartyMenu -_081237C4: .4byte gPlayerParty -_081237C8: .4byte Task_SwitchHoldItemsPrompt -_081237CC: - ldrh r0, [r6] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081237F8 - ldrh r0, [r6] - movs r1, 0x1 - bl RemoveBagItem - movs r0, 0x9 - ldrsb r0, [r5, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - ldrh r1, [r6] - bl GiveItemToMon - bl CB2_WriteMailToGiveMon - b _08123814 -_081237F8: - ldrb r0, [r5, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r5, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08123820 @ =Task_GiveHoldItem - str r1, [sp, 0x4] - ldr r1, [r5] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu -_08123814: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123820: .4byte Task_GiveHoldItem - thumb_func_end CB2_GiveHoldItem - - thumb_func_start Task_GiveHoldItem -Task_GiveHoldItem: @ 8123824 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0812388C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08123880 - ldr r0, _08123890 @ =gSpecialVar_ItemId - ldrh r4, [r0] - ldr r0, _08123894 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - muls r0, r6 - ldr r5, _08123898 @ =gPlayerParty - adds r0, r5 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl DisplayGaveHeldItemMessage - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r5 - adds r1, r4, 0 - bl GiveItemToMon - adds r0, r4, 0 - movs r1, 0x1 - bl RemoveBagItem - ldr r1, _0812389C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _081238A0 @ =Task_UpdateHeldItemSprite - str r1, [r0] -_08123880: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812388C: .4byte gPaletteFade -_08123890: .4byte gSpecialVar_ItemId -_08123894: .4byte gPartyMenu -_08123898: .4byte gPlayerParty -_0812389C: .4byte gTasks -_081238A0: .4byte Task_UpdateHeldItemSprite - thumb_func_end Task_GiveHoldItem - thumb_func_start Task_SwitchHoldItemsPrompt Task_SwitchHoldItemsPrompt: @ 81238A4 push {r4,lr} diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 337361dcf..460410f47 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -15947,7 +15947,7 @@ sub_80937B4: @ 80937B4 _080937C4: .4byte gUnknown_2039822 _080937C8: ldr r4, _080937D8 @ =gUnknown_2039821 - bl sub_8138B20 + bl GetLastViewedMonIndex strb r0, [r4] _080937D0: pop {r4} diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index ee5a96156..b345231f3 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -42,7 +42,7 @@ _0813453C: .4byte gUnknown_203B140 _08134540: .4byte 0x00003308 _08134544: .4byte gUnknown_203B144 _08134548: - ldr r0, _08134574 @ =gUnknown_203B16C + ldr r0, _08134574 @ =gLastViewedMonIndex strb r6, [r0] ldr r0, _08134578 @ =gUnknown_203B16D movs r1, 0 @@ -64,7 +64,7 @@ _08134548: movs r0, 0x1 b _08134596 .align 2, 0 -_08134574: .4byte gUnknown_203B16C +_08134574: .4byte gLastViewedMonIndex _08134578: .4byte gUnknown_203B16D _0813457C: .4byte gUnknown_203B16E _08134580: .4byte 0x000032f8 @@ -6839,8 +6839,8 @@ _08137E82: adds r0, r1 ldr r0, [r0] bl SetMainCallback2 - bl sub_8138B20 - ldr r1, _08137EE0 @ =gUnknown_203B16C + bl GetLastViewedMonIndex + ldr r1, _08137EE0 @ =gLastViewedMonIndex strb r0, [r1] ldr r0, [r4] cmp r0, 0 @@ -6864,7 +6864,7 @@ _08137ECC: _08137ED4: .4byte gUnknown_203B140 _08137ED8: .4byte 0x00003214 _08137EDC: .4byte 0x000032f8 -_08137EE0: .4byte gUnknown_203B16C +_08137EE0: .4byte gLastViewedMonIndex _08137EE4: .4byte gUnknown_203B144 thumb_func_end sub_8137E64 @@ -8397,14 +8397,14 @@ _08138B18: .4byte 0x00003220 _08138B1C: .4byte 0x00003221 thumb_func_end sub_8138A38 - thumb_func_start sub_8138B20 -sub_8138B20: @ 8138B20 - ldr r0, _08138B28 @ =gUnknown_203B16C + thumb_func_start GetLastViewedMonIndex +GetLastViewedMonIndex: @ 8138B20 + ldr r0, _08138B28 @ =gLastViewedMonIndex ldrb r0, [r0] bx lr .align 2, 0 -_08138B28: .4byte gUnknown_203B16C - thumb_func_end sub_8138B20 +_08138B28: .4byte gLastViewedMonIndex + thumb_func_end GetLastViewedMonIndex thumb_func_start GetMoveSlotToReplace GetMoveSlotToReplace: @ 8138B2C @@ -8443,7 +8443,7 @@ sub_8138B4C: @ 8138B4C ldrb r0, [r0] cmp r0, 0x1 bne _08138B84 - ldr r0, _08138B80 @ =gUnknown_203B16C + ldr r0, _08138B80 @ =gLastViewedMonIndex ldrb r0, [r0] cmp r0, 0x3 bhi _08138B76 @@ -8454,7 +8454,7 @@ _08138B76: b _08138B86 .align 2, 0 _08138B7C: .4byte gReceivedRemoteLinkPlayers -_08138B80: .4byte gUnknown_203B16C +_08138B80: .4byte gLastViewedMonIndex _08138B84: movs r0, 0 _08138B86: @@ -8476,7 +8476,7 @@ sub_8138B8C: @ 8138B8C adds r2, 0xD8 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -8493,7 +8493,7 @@ _08138BC4: ldr r2, _08138BE8 @ =0x000032f4 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -9148,7 +9148,7 @@ sub_81390B0: @ 81390B0 ldr r1, _081391DC @ =0x000032f4 adds r0, r1 ldr r6, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -9294,7 +9294,7 @@ sub_81391EC: @ 81391EC ldr r1, _08139318 @ =0x000032f4 adds r0, r1 ldr r6, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -9442,7 +9442,7 @@ sub_8139328: @ 8139328 adds r2, 0xD8 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -9459,7 +9459,7 @@ _08139360: ldr r2, _08139384 @ =0x000032f4 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -10269,7 +10269,7 @@ _081399DC: .4byte sub_804CF14 _081399E0: .4byte 0x00003024 _081399E4: .4byte 0x0000ffff _081399E8: - ldr r0, _08139A1C @ =gUnknown_203B16C + ldr r0, _08139A1C @ =gLastViewedMonIndex ldrb r1, [r0] movs r0, 0x3 bl sub_804455C @@ -10293,7 +10293,7 @@ _081399E8: bl CreateMonPicSprite b _08139A40 .align 2, 0 -_08139A1C: .4byte gUnknown_203B16C +_08139A1C: .4byte gLastViewedMonIndex _08139A20: .4byte 0x0000ffff _08139A24: movs r0, 0x3C @@ -10787,7 +10787,7 @@ _08139E20: .align 2, 0 _08139E28: .4byte SpriteCallbackDummy _08139E2C: - ldr r0, _08139E48 @ =gUnknown_203B16C + ldr r0, _08139E48 @ =gLastViewedMonIndex ldrb r1, [r0] movs r0, 0x3 bl sub_804455C @@ -10801,7 +10801,7 @@ _08139E2C: str r4, [sp, 0x4] b _08139E58 .align 2, 0 -_08139E48: .4byte gUnknown_203B16C +_08139E48: .4byte gLastViewedMonIndex _08139E4C: .4byte SpriteCallbackDummy _08139E50: ldr r1, _08139E98 @ =SpriteCallbackDummy @@ -13221,7 +13221,7 @@ _0813B16C: ldr r2, _0813B190 @ =0x000032f4 adds r0, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -13268,7 +13268,7 @@ _0813B1CC: negs r1, r1 cmp r0, r1 beq _0813B1F4 - ldr r0, _0813B1FC @ =gUnknown_203B16C + ldr r0, _0813B1FC @ =gLastViewedMonIndex strb r2, [r0] ldr r0, _0813B200 @ =sub_813B3F0 movs r1, 0 @@ -13284,7 +13284,7 @@ _0813B1F4: pop {r0} bx r0 .align 2, 0 -_0813B1FC: .4byte gUnknown_203B16C +_0813B1FC: .4byte gLastViewedMonIndex _0813B200: .4byte sub_813B3F0 _0813B204: .4byte gUnknown_203B140 _0813B208: .4byte 0x0000328c @@ -13311,7 +13311,7 @@ sub_813B20C: @ 813B20C movs r1, 0x1 negs r1, r1 adds r5, r0, 0 - ldr r6, _0813B264 @ =gUnknown_203B16C + ldr r6, _0813B264 @ =gLastViewedMonIndex cmp r3, r1 bne _0813B23E ldrb r0, [r6] @@ -13336,7 +13336,7 @@ _0813B252: _0813B258: .4byte gUnknown_203B140 _0813B25C: .4byte 0x000032f4 _0813B260: .4byte 0x00003214 -_0813B264: .4byte gUnknown_203B16C +_0813B264: .4byte gLastViewedMonIndex _0813B268: .4byte 0x00003210 _0813B26C: lsls r5, r4, 24 @@ -13346,7 +13346,7 @@ _0813B26E: asrs r1, r5, 24 adds r0, r1 lsls r0, 24 - ldr r4, _0813B29C @ =gUnknown_203B16C + ldr r4, _0813B29C @ =gLastViewedMonIndex lsrs r6, r0, 24 asrs r0, 24 ldrb r3, [r4] @@ -13365,7 +13365,7 @@ _0813B294: negs r0, r0 b _0813B2C0 .align 2, 0 -_0813B29C: .4byte gUnknown_203B16C +_0813B29C: .4byte gLastViewedMonIndex _0813B2A0: .4byte gUnknown_203B140 _0813B2A4: .4byte 0x00003210 _0813B2A8: @@ -13514,7 +13514,7 @@ _0813B39E: bhi _0813B3B6 ldr r4, _0813B3D4 @ =gUnknown_8463FB8 adds r4, r5, r4 - bl sub_8138B20 + bl GetLastViewedMonIndex ldrb r1, [r4] lsls r0, 24 lsrs r0, 24 diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index fdc835625..f20375675 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -16,7 +16,7 @@ void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 off void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void * MallocAndDecompress(const void * src, u32 * size); void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); -void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); +void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); void ResetBgPositions(void); void InitStandardTextBoxWindows(void); void FreeAllOverworldWindowBuffers(void); diff --git a/include/party_menu.h b/include/party_menu.h index d3eb0181f..b100097df 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -63,7 +63,7 @@ void OpenPartyMenuInBattle(void); void SwitchPartyOrderLinkMulti(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); void CB2_ChooseMonToGiveItem(void); -void DrawHeldItemIconsForTrade(u8 *partyCount, u8 (*icons)[6], u8 side); +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); void ChooseMonToGiveMailFromMailbox(void); void CB2_PartyMenuFromStartMenu(void); void ShowPartyMenuToShowcaseMultiBattleParty(void); @@ -71,5 +71,6 @@ void SwitchPartyMonSlots(u8 slot, u8 slot2); void LoadHeldItemIcons(void); void OpenPartyMenuInTutorialBattle(u8 partyAction); void ClearSelectedPartyOrder(void); +void CB2_SelectBagItemToGive(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index cfc3c18f0..f0e5c8b9d 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -22,6 +22,6 @@ u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subprior u8 UpdateMonIconFrame(struct Sprite * sprite); void LoadMonIconPalette(u16 iconId); void FreeMonIconPalette(u16 iconId); -void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum); +void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 2655405e5..3695d46df 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -32,7 +32,7 @@ enum PokemonSummaryScreenPage PSS_PAGE_CONTEST_MOVES, }; -s32 sub_8138B20(void); +s32 GetLastViewedMonIndex(void); void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4); #endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/quest_log.h b/include/quest_log.h index 3f6c94de5..4040ed4c9 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -47,6 +47,7 @@ void sub_81139BC(void); void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); void sub_8110840(void *oldSave); +void sub_8112F18(u8 windowId); extern u8 gUnknown_203ADFA; diff --git a/include/strings.h b/include/strings.h index b60a5d568..16a107de7 100644 --- a/include/strings.h +++ b/include/strings.h @@ -344,6 +344,12 @@ extern const u8 gText_BagFullCouldNotRemoveItem[]; extern const u8 gText_PkmnCantParticipate[]; extern const u8 gText_CancelParticipation[]; extern const u8 gUnknown_8417494[]; +extern const u8 gMenuText_Confirm[]; +extern const u8 gText_Lv[]; +extern const u8 gText_MaleSymbol[]; +extern const u8 gText_FemaleSymbol[]; +extern const u8 gText_Slash[]; +extern const u8 gUnknown_8417457[]; // credits extern const u8 gString_Dummy[]; diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index decd000d6..d2421ed9f 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -357,7 +357,7 @@ void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palet } } -void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height) +void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height) { u8 i,j; const u16 *src = GetBgTilemapBuffer(bgId); diff --git a/src/party_menu.c b/src/party_menu.c index 73965c4ae..08600229a 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -27,6 +27,7 @@ #include "item_use.h" #include "link.h" #include "link_rfu.h" +#include "load_save.h" #include "mail.h" #include "mail_data.h" #include "main.h" @@ -43,6 +44,7 @@ #include "pokemon_jump.h" #include "pokemon_storage_system.h" #include "pokemon_summary_screen.h" +#include "quest_log.h" #include "region_map.h" #include "reshow_battle_screen.h" #include "scanline_effect.h" @@ -53,6 +55,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "teachy_tv.h" #include "text.h" #include "text_window.h" #include "trade.h" @@ -258,11 +261,39 @@ void sub_8120DE0(u8 taskId); void sub_8120E1C(u8 taskId); void sub_8120E58(u8 taskId); void sub_8120EE0(u8 taskId); +void sub_8120FF0(u8 taskId); +void sub_8120FB0(void); bool8 sub_8120F78(u8 taskId); -bool8 sub_81220D4(void); +u8 sub_81220D4(void); void sub_8122084(u8 windowId, const u8 *str); void sub_8122110(u8 windowId); +void sub_812358C(void); void CreateSelectionWindow(void); +bool8 ShouldUseChooseMonText(void); +void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon); +void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite); +void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite); +void SpriteCB_HeldItem(struct Sprite *sprite); +void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox); +void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail); +void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox); +void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId); +u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon); +u8 GetPartySlotEntryStatus(s8 slot); +void Task_HandleSelectionMenuInput(u8 taskId); +void CB2_ShowPokemonSummaryScreen(void); +void CB2_ReturnToPartyMenuFromSummaryScreen(void); +void UpdatePartyToBattleOrder(void); +void SlidePartyMenuBoxOneStep(u8 taskId); +void Task_SlideSelectedSlotsOffscreen(u8 taskId); +void SwitchPartyMon(void); +void Task_SlideSelectedSlotsOnscreen(u8 taskId); +void CB2_WriteMailToGiveMon(void); +void Task_SwitchHoldItemsPrompt(u8 taskId); +void Task_GiveHoldItem(u8 taskId); +void Task_UpdateHeldItemSprite(u8 taskId); EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; EWRAM_DATA struct PartyMenu gPartyMenu = {0}; @@ -1936,24 +1967,1432 @@ void sub_8120EE0(u8 taskId) switch (data[0]) { case 80: - #ifndef NONMATCHING - asm("":::"r5"); - #endif UpdateCurrentPartySelection(&gPartyMenu.slotId, 2); - ++data[0]; break; case 160: PlaySE(SE_SELECT); CreateSelectionWindow(); - ++data[0]; break; case 240: PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); sCursorOptions[sPartyMenuInternal->actions[0]].func(taskId); - // fall through - default: + break; + } + ++data[0]; + } +} + +bool8 sub_8120F78(u8 taskId) +{ + if (JOY_NEW(B_BUTTON)) + { + sPartyMenuInternal->exitCallback = sub_8120FB0; + Task_ClosePartyMenu(taskId); + return TRUE; + } + return FALSE; +} + +void sub_8120FB0(void) +{ + FreeRestoreBattleData(); + LoadPlayerParty(); + SetTeachyTvControllerModeToResume(); + SetMainCallback2(CB2_ReturnToTeachyTV); +} + +void sub_8120FCC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[0] = 0; + gTasks[taskId].func = sub_8120FF0; +} + +void sub_8120FF0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active && sub_8120F78(taskId) != TRUE) + { + if (data[0] != 80) + { ++data[0]; + } + else + { + sPartyMenuInternal->exitCallback = CB2_SetUpExitToBattleScreen; + gItemUseCB(taskId, Task_ClosePartyMenuAfterText); + } + } +} + +void InitPartyMenuWindows(u8 layout) +{ + u8 i; + + switch (layout) + { + case PARTY_LAYOUT_SINGLE: + InitWindows(sSinglePartyMenuWindowTemplate); + break; + case PARTY_LAYOUT_DOUBLE: + InitWindows(sDoublePartyMenuWindowTemplate); + break; + case PARTY_LAYOUT_MULTI: + InitWindows(sMultiPartyMenuWindowTemplate); + break; + default: // PARTY_LAYOUT_MULTI_SHOWCASE + InitWindows(sShowcaseMultiPartyMenuWindowTemplate); + break; + } + DeactivateAllTextPrinters(); + for (i = 0; i < PARTY_SIZE; ++i) + FillWindowPixelBuffer(i, PIXEL_FILL(0)); + TextWindow_SetUserSelectedFrame(0, 0x4F, 0xD0); + TextWindow_SetStdFrame0_WithPal(0, 0x58, 0xF0); + LoadPalette(stdpal_get(2), 0xC0, 0x20); + LoadPalette(stdpal_get(0), 0xE0, 0x20); +} + +void CreateCancelConfirmWindows(bool8 chooseHalf) +{ + u8 confirmWindowId; + u8 cancelWindowId; + u8 offset; + + if (gPartyMenu.menuType != PARTY_MENU_TYPE_MULTI_SHOWCASE) + { + if (chooseHalf == TRUE) + { + confirmWindowId = AddWindow(&sConfirmButtonWindowTemplate); + FillWindowPixelBuffer(confirmWindowId, PIXEL_FILL(0)); + AddTextPrinterParameterized4(confirmWindowId, 0, (48 - GetStringWidth(0, gMenuText_Confirm, 0)) / 2u, 1, 0, 0, sFontColorTable[0], -1, gMenuText_Confirm); + PutWindowTilemap(confirmWindowId); + CopyWindowToVram(confirmWindowId, 2); + cancelWindowId = AddWindow(&sMultiCancelButtonWindowTemplate); + offset = 0; + } + else + { + cancelWindowId = AddWindow(&sCancelButtonWindowTemplate); + offset = 3; + } + FillWindowPixelBuffer(cancelWindowId, PIXEL_FILL(0)); + // Branches are functionally identical. Second branch is never reached, Spin Trade wasnt fully implemented + if (gPartyMenu.menuType != PARTY_MENU_TYPE_SPIN_TRADE) + { + offset += (48 - GetStringWidth(0, gFameCheckerText_Cancel, 0)) / 2; + AddTextPrinterParameterized3(cancelWindowId, 0, offset, 1, sFontColorTable[0], -1, gFameCheckerText_Cancel); + } + else + { + offset += (48 - GetStringWidth(0, gOtherText_Exit, 0)) / 2; + AddTextPrinterParameterized3(cancelWindowId, 0, offset, 1, sFontColorTable[0], -1, gOtherText_Exit); + } + PutWindowTilemap(cancelWindowId); + CopyWindowToVram(cancelWindowId, 2); + ScheduleBgCopyTilemapToVram(0); + } +} + +u16 *GetPartyMenuPalBufferPtr(u8 paletteId) +{ + return &sPartyMenuInternal->palBuffer[paletteId]; +} + +void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height) +{ + u8 *pixels = AllocZeroed(height * width * 32); + u8 i, j; + + if (pixels != NULL) + { + for (i = 0; i < height; ++i) + for (j = 0; j < width; ++j) + CpuCopy16(GetPartyMenuBgTile(b[x + j + ((y + i) * c)]), &pixels[(i * width + j) * 32], 32); + BlitBitmapToWindow(windowId, pixels, x * 8, y * 8, width * 8, height * 8); + Free(pixels); + } +} + +void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +{ + if (width == 0 && height == 0) + { + width = 10; + height = 7; + } + if (!isEgg) + BlitBitmapToPartyWindow(windowId, sMainSlotTileNums, 10, x, y, width, height); + else + BlitBitmapToPartyWindow(windowId, sMainSlotTileNums_Egg, 10, x, y, width, height); +} + +void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +{ + if (width == 0 && height == 0) + { + width = 18; + height = 3; + } + if (!isEgg) + BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums, 18, x, y, width, height); + else + BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums_Egg, 18, x, y, width, height); +} + +void DrawEmptySlot(u8 windowId) +{ + BlitBitmapToPartyWindow(windowId, sEmptySlotTileNums, 18, 0, 0, 18, 3); +} + +#define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ +{ \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palNum, 2); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palNum, 2); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, 2); \ +} + +void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + + if (palFlags & PARTY_PAL_TO_SOFTBOIL) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_SWITCHING) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + else if (palFlags & PARTY_PAL_TO_SWITCH) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_FAINTED) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionFaintedPalIds, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxFaintedPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxFaintedPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_MULTI_ALT) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionMultiPalIds, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxMultiPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxMultiPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxEmptySlotPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxEmptySlotPalIds2, sPartyBoxPalOffsets2); + } +} + +void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align) +{ + AddTextPrinterParameterized3(windowId, 0, align[0], align[1], sFontColorTable[color], 0, str); +} + +void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c == 1) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[0] >> 3, menuBox->infoRects->dimensions[1] >> 3, menuBox->infoRects->dimensions[2] >> 3, menuBox->infoRects->dimensions[3] >> 3, FALSE); + GetMonNickname(mon, nickname); + DisplayPartyPokemonBarDetail(menuBox->windowId, nickname, 0, menuBox->infoRects->dimensions); + } +} + +void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + u8 ailment = GetMonAilment(mon); + + if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[4] >> 3, (menuBox->infoRects->dimensions[5] >> 3) + 1, menuBox->infoRects->dimensions[6] >> 3, menuBox->infoRects->dimensions[7] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonLevel(GetMonData(mon, MON_DATA_LEVEL), menuBox); + } + } +} + +void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox) +{ + ConvertIntToDecimalStringN(gStringVar2, level, STR_CONV_MODE_LEFT_ALIGN, 3); + StringCopy(gStringVar1, gText_Lv); + StringAppend(gStringVar1, gStringVar2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[4]); +} + +void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + if (c == 1) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[8] >> 3, (menuBox->infoRects->dimensions[9] >> 3) + 1, menuBox->infoRects->dimensions[10] >> 3, menuBox->infoRects->dimensions[11] >> 3, FALSE); + GetMonNickname(mon, nickname); + DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, menuBox); +} + +void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + + if (species == SPECIES_NONE) + return; + if ((species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) && StringCompare(nickname, gSpeciesNames[species]) == 0) + return; + switch (gender) + { + case MON_MALE: + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gText_MaleSymbol, 2, &menuBox->infoRects->dimensions[8]); + break; + case MON_FEMALE: + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gText_FemaleSymbol, 2, &menuBox->infoRects->dimensions[8]); + break; + } +} + +void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[12] >> 3, (menuBox->infoRects->dimensions[13] >> 3) + 1, menuBox->infoRects->dimensions[14] >> 3, menuBox->infoRects->dimensions[15] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonHP(GetMonData(mon, MON_DATA_HP), menuBox); + } +} + +void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) +{ + u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 3); + + strOut[0] = CHAR_SLASH; + strOut[1] = EOS; + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[12]); +} + +void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, (menuBox->infoRects->dimensions[16] >> 3) + 1, (menuBox->infoRects->dimensions[17] >> 3) + 1, menuBox->infoRects->dimensions[18] >> 3, menuBox->infoRects->dimensions[19] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonMaxHP(GetMonData(mon, MON_DATA_MAX_HP), menuBox); + } +} + +void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) +{ + ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringCopy(gStringVar1, gText_Slash); + StringAppend(gStringVar1, gStringVar2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); +} + +void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + DisplayPartyPokemonHPBar(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), menuBox); +} + +void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + u8 hpFraction; + + switch (GetHPBarLevel(hp, maxhp)) + { + case HP_BAR_GREEN: + case HP_BAR_FULL: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + case HP_BAR_YELLOW: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + default: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + } + hpFraction = GetScaledHPFraction(hp, maxhp, menuBox->infoRects->dimensions[22]); + FillWindowPixelRect(menuBox->windowId, sHPBarPalOffsets[1], menuBox->infoRects->dimensions[20], menuBox->infoRects->dimensions[21], hpFraction, 1); + FillWindowPixelRect(menuBox->windowId, sHPBarPalOffsets[0], menuBox->infoRects->dimensions[20], menuBox->infoRects->dimensions[21] + 1, hpFraction, 2); + if (hpFraction != menuBox->infoRects->dimensions[22]) + { + // This appears to be an alternating fill + FillWindowPixelRect(menuBox->windowId, 0x0D, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21], menuBox->infoRects->dimensions[22] - hpFraction, 1); + FillWindowPixelRect(menuBox->windowId, 0x02, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21] + 1, menuBox->infoRects->dimensions[22] - hpFraction, 2); + } + CopyWindowToVram(menuBox->windowId, 2); +} + +void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c) +{ + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->descTextLeft >> 3, menuBox->infoRects->descTextTop >> 3, menuBox->infoRects->descTextWidth >> 3, menuBox->infoRects->descTextHeight >> 3, TRUE); + if (c != 2) + AddTextPrinterParameterized3(menuBox->windowId, 1, menuBox->infoRects->descTextLeft, menuBox->infoRects->descTextTop, sFontColorTable[0], 0, sDescriptionStringTable[stringId]); +} + +void PartyMenuRemoveWindow(u8 *ptr) +{ + if (*ptr != 0xFF) + { + ClearStdWindowAndFrameToTransparent(*ptr, 0); + RemoveWindow(*ptr); + *ptr = 0xFF; + ScheduleBgCopyTilemapToVram(2); + } +} + +void DisplayPartyMenuStdMessage(u32 stringId) +{ + u8 *windowPtr = &sPartyMenuInternal->windowId[1]; + + if (*windowPtr != 0xFF) + PartyMenuRemoveWindow(windowPtr); + + if (stringId != PARTY_MSG_NONE) + { + switch (stringId) + { + case PARTY_MSG_DO_WHAT_WITH_MON: + *windowPtr = AddWindow(&sDoWhatWithMonMsgWindowTemplate); + break; + case PARTY_MSG_DO_WHAT_WITH_ITEM: + *windowPtr = AddWindow(&sDoWhatWithItemMsgWindowTemplate); + break; + case PARTY_MSG_DO_WHAT_WITH_MAIL: + *windowPtr = AddWindow(&sDoWhatWithMailMsgWindowTemplate); + break; + case PARTY_MSG_RESTORE_WHICH_MOVE: + case PARTY_MSG_BOOST_PP_WHICH_MOVE: + *windowPtr = AddWindow(&sWhichMoveMsgWindowTemplate); + break; + default: + *windowPtr = AddWindow(&sDefaultPartyMsgWindowTemplate); + break; + } + + if (stringId == PARTY_MSG_CHOOSE_MON) + { + if (sPartyMenuInternal->chooseHalf) + stringId = PARTY_MSG_CHOOSE_MON_AND_CONFIRM; + else if (!ShouldUseChooseMonText()) + stringId = PARTY_MSG_CHOOSE_MON_OR_CANCEL; + } + DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x58, 0xF); + StringExpandPlaceholders(gStringVar4, sActionStringTable[stringId]); + AddTextPrinterParameterized(*windowPtr, 2, gStringVar4, 0, 2, 0, 0); + ScheduleBgCopyTilemapToVram(2); + } +} + +bool8 ShouldUseChooseMonText(void) +{ + struct Pokemon *party = gPlayerParty; + u8 i; + u8 numAliveMons = 0; + + if (gPartyMenu.action == PARTY_ACTION_SEND_OUT) + return TRUE; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && (GetMonData(&party[i], MON_DATA_HP) != 0 || GetMonData(&party[i], MON_DATA_IS_EGG))) + ++numAliveMons; + if (numAliveMons > 1) + return TRUE; + } + return FALSE; +} + +u8 DisplaySelectionWindow(u8 windowType) +{ + struct WindowTemplate window; + u8 cursorDimension; + u8 fontAttribute; + u8 i; + + switch (windowType) + { + case SELECTWINDOW_ACTIONS: + window = SetWindowTemplateFields(2, 19, 19 - (sPartyMenuInternal->numActions * 2), 10, sPartyMenuInternal->numActions * 2, 14, 0x2BF); + break; + case SELECTWINDOW_ITEM: + window = sItemGiveTakeWindowTemplate; + break; + case SELECTWINDOW_MAIL: + window = sMailReadTakeWindowTemplate; + break; + default: // SELECTWINDOW_MOVES + window = sMoveSelectWindowTemplate; + break; + } + sPartyMenuInternal->windowId[0] = AddWindow(&window); + DrawStdFrameWithCustomTileAndPalette(sPartyMenuInternal->windowId[0], FALSE, 0x4F, 13); + if (windowType == SELECTWINDOW_MOVES) + return sPartyMenuInternal->windowId[0]; + cursorDimension = GetMenuCursorDimensionByFont(2, 0); + fontAttribute = GetFontAttribute(2, FONTATTR_LETTER_SPACING); + for (i = 0; i < sPartyMenuInternal->numActions; ++i) + { + u8 fontColorsId = (sPartyMenuInternal->actions[i] >= MENU_FIELD_MOVES) ? 4 : 3; + + AddTextPrinterParameterized4(sPartyMenuInternal->windowId[0], 2, cursorDimension, (i * 16) + 2, fontAttribute, 0, sFontColorTable[fontColorsId], 0, sCursorOptions[sPartyMenuInternal->actions[i]].text); + } + Menu_InitCursorInternal(sPartyMenuInternal->windowId[0], 2, 0, 2, 16, sPartyMenuInternal->numActions, 0, 1); + ScheduleBgCopyTilemapToVram(2); + return sPartyMenuInternal->windowId[0]; +} + +void PartyMenuPrintText(const u8 *text) +{ + DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13); + gTextFlags.canABSpeedUpPrint = TRUE; + AddTextPrinterParameterized2(6, 2, text, GetTextSpeedSetting(), 0, 2, 1, 3); +} + +void PartyMenuDisplayYesNoMenu(void) +{ + CreateYesNoMenu(&sPartyMenuYesNoWindowTemplate, 2, 0, 2, 0x4F, 13, 0); +} + +u8 CreateLevelUpStatsWindow(void) +{ + sPartyMenuInternal->windowId[0] = AddWindow(&sLevelUpStatsWindowTemplate); + DrawStdFrameWithCustomTileAndPalette(sPartyMenuInternal->windowId[0], FALSE, 0x4F, 13); + return sPartyMenuInternal->windowId[0]; +} + +void RemoveLevelUpStatsWindow(void) +{ + ClearWindowTilemap(sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); +} + +void sub_8122084(u8 windowId, const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + gTextFlags.canABSpeedUpPrint = TRUE; + AddTextPrinterParameterized2(windowId, 4, gStringVar4, GetTextSpeedSetting(), 0, 2, 1, 3); +} + +bool8 sub_81220D4(void) +{ + u8 windowId = AddWindow(&gUnknown_845A170); + + TextWindow_LoadResourcesStdFrame0(windowId, 0x4F, 0xE0); + DrawDialogFrameWithCustomTileAndPalette(windowId, 1, 0x4F, 0xE); + sub_8122084(windowId, gUnknown_8417457); + return windowId; +} + +void sub_8122110(u8 windowId) +{ + ClearWindowTilemap(windowId); + ClearDialogWindowAndFrameToTransparent(windowId, FALSE); + RemoveWindow(windowId); + ScheduleBgCopyTilemapToVram(2); +} + +void sub_8122138(u8 action) +{ + u8 attr; + struct PartyMenuInternal *ptr = sPartyMenuInternal; + + if (action <= 17) + { + if (ptr->windowId[2] != 0xFF) + { + ClearWindowTilemap(ptr->windowId[2]); + RemoveWindow(ptr->windowId[2]); + ptr->windowId[2] = 0xFF; + ScheduleBgCopyTilemapToVram(2); + } + } + else + { + if (ptr->windowId[2] == 0xFF) + ptr->windowId[2] = AddWindow(&gUnknown_845A178); + sub_8112F18(ptr->windowId[2]); + attr = GetFontAttribute(2, FONTATTR_LETTER_SPACING); + AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - 18]); + PutWindowTilemap(ptr->windowId[2]); + ScheduleBgCopyTilemapToVram(2); + } +} + +void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot) +{ + bool32 handleDeoxys = TRUE; + u16 species2; + + // If in a multi battle, show partners Deoxys icon as Normal forme + if (IsMultiBattle() == TRUE && gMain.inBattle) + handleDeoxys = (sMultiBattlePartnersPartyMask[slot] ^ handleDeoxys) ? TRUE : FALSE; + species2 = GetMonData(mon, MON_DATA_SPECIES2); + CreatePartyMonIconSpriteParameterized(species2, GetMonData(mon, MON_DATA_PERSONALITY), menuBox, 1, handleDeoxys); + UpdatePartyMonHPBar(menuBox->monSpriteId, mon); +} + +void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys) +{ + if (species != SPECIES_NONE) + { + menuBox->monSpriteId = CreateMonIcon(species, SpriteCB_MonIcon, menuBox->spriteCoords[0], menuBox->spriteCoords[1], 4, pid, handleDeoxys); + gSprites[menuBox->monSpriteId].oam.priority = priority; + } +} + +void UpdateHPBar(u8 spriteId, u16 hp, u16 maxhp) +{ + switch (GetHPBarLevel(hp, maxhp)) + { + case HP_BAR_FULL: + SetPartyHPBarSprite(&gSprites[spriteId], 0); + break; + case HP_BAR_GREEN: + SetPartyHPBarSprite(&gSprites[spriteId], 1); + break; + case HP_BAR_YELLOW: + SetPartyHPBarSprite(&gSprites[spriteId], 2); + break; + case HP_BAR_RED: + SetPartyHPBarSprite(&gSprites[spriteId], 3); + break; + default: + SetPartyHPBarSprite(&gSprites[spriteId], 4); + break; + } +} + +void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon) +{ + UpdateHPBar(spriteId, GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP)); +} + +void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum) +{ + gSprites[spriteId].data[0] = 0; + if (animNum == 0) + { + if (gSprites[spriteId].pos1.x == 16) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = -4; + } + else + { + gSprites[spriteId].pos2.x = -4; + gSprites[spriteId].pos2.y = 0; + } + gSprites[spriteId].callback = SpriteCB_UpdatePartyMonIcon; + } + else + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId].callback = SpriteCB_BouncePartyMonIcon; + } +} + +void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite) +{ + u8 animCmd = UpdateMonIconFrame(sprite); + + if (animCmd != 0) + { + if (animCmd & 1) // % 2 also matches + sprite->pos2.y = -3; + else + sprite->pos2.y = 1; + } +} + +void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); +} + +void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + menuBox->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, menuBox->spriteCoords[2], menuBox->spriteCoords[3], 0); + UpdatePartyMonHeldItemSprite(mon, menuBox); + } +} + +void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, menuBox->spriteCoords[2], menuBox->spriteCoords[3], 0); + gSprites[menuBox->itemSpriteId].oam.priority = 0; + ShowOrHideHeldItemSprite(item, menuBox); + } +} + +void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + ShowOrHideHeldItemSprite(GetMonData(mon, MON_DATA_HELD_ITEM), menuBox); +} + +void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox) +{ + if (item == ITEM_NONE) + { + gSprites[menuBox->itemSpriteId].invisible = TRUE; + } + else + { + if (ItemIsMail(item)) + StartSpriteAnim(&gSprites[menuBox->itemSpriteId], 1); + else + StartSpriteAnim(&gSprites[menuBox->itemSpriteId], 0); + gSprites[menuBox->itemSpriteId].invisible = FALSE; + } +} + +void LoadHeldItemIcons(void) +{ + LoadSpriteSheet(&sSpriteSheet_HeldItem); + LoadSpritePalette(&sSpritePalette_HeldItem); +} + +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty) +{ + u16 i; + u16 item; + + switch (whichParty) + { + case TRADE_PLAYER: + for (i = 0; i < partyCounts[TRADE_PLAYER]; ++i) + { + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item != ITEM_NONE) + CreateHeldItemSpriteForTrade(partySpriteIds[i], ItemIsMail(item)); + } + break; + case TRADE_PARTNER: + for (i = 0; i < partyCounts[TRADE_PARTNER]; ++i) + { + item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM); + if (item != ITEM_NONE) + CreateHeldItemSpriteForTrade(partySpriteIds[i + PARTY_SIZE], ItemIsMail(item)); + } + break; + } +} + +void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail) +{ + u8 subpriority = gSprites[spriteId].subpriority; + u8 newSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, 250, 170, subpriority - 1); + + gSprites[newSpriteId].pos2.x = 4; + gSprites[newSpriteId].pos2.y = 10; + gSprites[newSpriteId].callback = SpriteCB_HeldItem; + gSprites[newSpriteId].data[7] = spriteId; + StartSpriteAnim(&gSprites[newSpriteId], isMail); + gSprites[newSpriteId].callback(&gSprites[newSpriteId]); +} + +void SpriteCB_HeldItem(struct Sprite *sprite) +{ + u8 otherSpriteId = sprite->data[7]; + + if (gSprites[otherSpriteId].invisible) + { + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + sprite->pos1.x = gSprites[otherSpriteId].pos1.x + gSprites[otherSpriteId].pos2.x; + sprite->pos1.y = gSprites[otherSpriteId].pos1.y + gSprites[otherSpriteId].pos2.y; + } +} + +void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8); +} + +void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8); + gSprites[menuBox->pokeballSpriteId].oam.priority = 0; + } +} + +// For Cancel when Confirm isnt present +u8 CreatePokeballButtonSprite(u8 x, u8 y) +{ + u8 spriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, x, y, 8); + + gSprites[spriteId].oam.priority = 2; + return spriteId; +} + +// For Confirm and Cancel when both are present +u8 CreateSmallPokeballButtonSprite(u8 x, u8 y) +{ + return CreateSprite(&sSpriteTemplate_MenuPokeballSmall, x, y, 8); +} + +void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum) +{ + StartSpriteAnim(&gSprites[spriteId], animNum); +} + +// Unused. Might explain the large blank section in gPartyMenuPokeballSmall_Gfx +// At the very least this is how the unused anim cmds for sSpriteAnimTable_MenuPokeballSmall were meant to be accessed +void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum) +{ + if (animNum == 0) + { + StartSpriteAnim(&gSprites[spriteId], 2); + StartSpriteAnim(&gSprites[spriteId2], 4); + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId2].pos2.y = 0; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 3); + StartSpriteAnim(&gSprites[spriteId2], 5); + gSprites[spriteId].pos2.y = -4; + gSprites[spriteId2].pos2.y = 4; + } +} + +void LoadPartyMenuPokeballGfx(void) +{ + LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeball); + LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeballSmall); + LoadCompressedSpritePalette(&sSpritePalette_MenuPokeball); +} + +void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + SetPartyMonAilmentGfx(mon, menuBox); + } +} + +void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + UpdatePartyMonAilmentGfx(status, menuBox); + gSprites[menuBox->statusSpriteId].oam.priority = 0; + } +} + +void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + UpdatePartyMonAilmentGfx(GetMonAilment(mon), menuBox); +} + +void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) +{ + switch (status) + { + case AILMENT_NONE: + case AILMENT_PKRS: + gSprites[menuBox->statusSpriteId].invisible = TRUE; + break; + default: + StartSpriteAnim(&gSprites[menuBox->statusSpriteId], status - 1); + gSprites[menuBox->statusSpriteId].invisible = FALSE; + break; + } +} + +void LoadPartyMenuAilmentGfx(void) +{ + LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons); + LoadCompressedSpritePalette(&sSpritePalette_StatusIcons); +} + +void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 action) +{ + u8 i; + + if (action == ACTIONS_NONE) + { + SetPartyMonFieldSelectionActions(mons, slotId); + } + else + { + sPartyMenuInternal->numActions = sPartyMenuActionCounts[action]; + for (i = 0; i < sPartyMenuInternal->numActions; ++i) + sPartyMenuInternal->actions[i] = sPartyMenuActions[action][i]; + } +} + +void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) +{ + u8 i, j; + + sPartyMenuInternal->numActions = 0; + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SUMMARY); + // Add field moves to action list + for (i = 0; i < MAX_MON_MOVES; ++i) + { + for (j = 0; sFieldMoves[j] != FIELD_MOVE_END; ++j) + { + if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j]) + { + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, j + MENU_FIELD_MOVES); + break; + } + } + } + if (GetMonData(&mons[1], MON_DATA_SPECIES) != SPECIES_NONE) + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SWITCH); + if (ItemIsMail(GetMonData(&mons[slotId], MON_DATA_HELD_ITEM))) + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_MAIL); + else + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_ITEM); + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_CANCEL1); +} + +u8 GetPartyMenuActionsType(struct Pokemon *mon) +{ + u32 actionType; + + switch (gPartyMenu.menuType) + { + case PARTY_MENU_TYPE_FIELD: + if (GetMonData(mon, MON_DATA_IS_EGG)) + actionType = ACTIONS_SWITCH; + else + actionType = ACTIONS_NONE; // actions populated by SetPartyMonFieldSelectionActions + break; + case PARTY_MENU_TYPE_IN_BATTLE: + actionType = GetPartyMenuActionsTypeInBattle(mon); + break; + case PARTY_MENU_TYPE_CHOOSE_HALF: + switch (GetPartySlotEntryStatus(gPartyMenu.slotId)) + { + default: // Not eligible + actionType = ACTIONS_SUMMARY_ONLY; + break; + case 0: // Eligible + actionType = ACTIONS_ENTER; + break; + case 1: // Already selected + actionType = ACTIONS_NO_ENTRY; + break; + } + break; + case PARTY_MENU_TYPE_DAYCARE: + actionType = (GetMonData(mon, MON_DATA_IS_EGG)) ? ACTIONS_SUMMARY_ONLY : ACTIONS_STORE; + break; + case PARTY_MENU_TYPE_UNION_ROOM_REGISTER: + actionType = ACTIONS_REGISTER; + break; + case PARTY_MENU_TYPE_UNION_ROOM_TRADE: + actionType = ACTIONS_TRADE; + break; + case PARTY_MENU_TYPE_SPIN_TRADE: + actionType = ACTIONS_SPIN_TRADE; + break; + // The following have no selection actions (i.e. they exit immediately upon selection) + // PARTY_MENU_TYPE_CONTEST + // PARTY_MENU_TYPE_CHOOSE_MON + // PARTY_MENU_TYPE_MULTI_SHOWCASE + // PARTY_MENU_TYPE_MOVE_RELEARNER + // PARTY_MENU_TYPE_MINIGAME + default: + actionType = ACTIONS_NONE; + break; + } + return actionType; +} + +void CreateSelectionWindow(void) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + GetMonNickname(mon, gStringVar1); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, GetPartyMenuActionsType(mon)); + DisplaySelectionWindow(SELECTWINDOW_ACTIONS); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MON); +} + +void Task_TryCreateSelectionWindow(u8 taskId) +{ + CreateSelectionWindow(); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void Task_HandleSelectionMenuInput(u8 taskId) +{ + if (!gPaletteFade.active && sub_80BF748() != TRUE) + { + s8 input; + s16 *data = gTasks[taskId].data; + + if (sPartyMenuInternal->numActions <= 3) + input = Menu_ProcessInputNoWrapAround_other(); + else + input = Menu_ProcessInput_other(); + if (data[0] != Menu_GetCursorPos()) + sub_8122138(sPartyMenuInternal->actions[Menu_GetCursorPos()]); + data[0] = Menu_GetCursorPos(); + switch (input) + { + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); + sCursorOptions[sPartyMenuInternal->actions[sPartyMenuInternal->numActions - 1]].func(taskId); + break; + default: + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); + sCursorOptions[sPartyMenuInternal->actions[input]].func(taskId); break; } } } + +void CursorCB_Summary(u8 taskId) +{ + PlaySE(SE_SELECT); + sPartyMenuInternal->exitCallback = CB2_ShowPokemonSummaryScreen; + Task_ClosePartyMenu(taskId); +} + +void CB2_ShowPokemonSummaryScreen(void) +{ + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + UpdatePartyToBattleOrder(); + ShowPokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen, 0); +} + +void CB2_ReturnToPartyMenuFromSummaryScreen(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + gPartyMenu.slotId = GetLastViewedMonIndex(); + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); +} + +void CursorCB_Switch(u8 taskId) +{ + PlaySE(SE_SELECT); + gPartyMenu.action = PARTY_ACTION_SWITCH; + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + DisplayPartyMenuStdMessage(PARTY_MSG_MOVE_TO_WHERE); + AnimatePartySlot(gPartyMenu.slotId, 1); + gPartyMenu.slotId2 = gPartyMenu.slotId; + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +#define tSlot1Left data[0] +#define tSlot1Top data[1] +#define tSlot1Width data[2] +#define tSlot1Height data[3] +#define tSlot2Left data[4] +#define tSlot2Top data[5] +#define tSlot2Width data[6] +#define tSlot2Height data[7] +#define tSlot1Offset data[8] +#define tSlot2Offset data[9] +#define tSlot1SlideDir data[10] +#define tSlot2SlideDir data[11] + +void SwitchSelectedMons(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 windowIds[2]; + + if (gPartyMenu.slotId2 == gPartyMenu.slotId) + { + FinishTwoMonAction(taskId); + } + else + { + // Initialize switching party mons slide animation + sub_812358C(); + windowIds[0] = sPartyMenuBoxes[gPartyMenu.slotId].windowId; + tSlot1Left = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_LEFT); + tSlot1Top = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_TOP); + tSlot1Width = GetWindowAttribute(windowIds[0], WINDOW_WIDTH); + tSlot1Height = GetWindowAttribute(windowIds[0], WINDOW_HEIGHT); + tSlot1Offset = 0; + if (tSlot1Width == 10) + tSlot1SlideDir = -1; + else + tSlot1SlideDir = 1; + windowIds[1] = sPartyMenuBoxes[gPartyMenu.slotId2].windowId; + tSlot2Left = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_LEFT); + tSlot2Top = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_TOP); + tSlot2Width = GetWindowAttribute(windowIds[1], WINDOW_WIDTH); + tSlot2Height = GetWindowAttribute(windowIds[1], WINDOW_HEIGHT); + tSlot2Offset = 0; + if (tSlot2Width == 10) + tSlot2SlideDir = -1; + else + tSlot2SlideDir = 1; + sSlot1TilemapBuffer = Alloc(tSlot1Width * (tSlot1Height << 1)); + sSlot2TilemapBuffer = Alloc(tSlot2Width * (tSlot2Height << 1)); + CopyToBufferFromBgTilemap(0, sSlot1TilemapBuffer, tSlot1Left, tSlot1Top, tSlot1Width, tSlot1Height); + CopyToBufferFromBgTilemap(0, sSlot2TilemapBuffer, tSlot2Left, tSlot2Top, tSlot2Width, tSlot2Height); + ClearWindowTilemap(windowIds[0]); + ClearWindowTilemap(windowIds[1]); + gPartyMenu.action = PARTY_ACTION_SWITCHING; + AnimatePartySlot(gPartyMenu.slotId, 1); + AnimatePartySlot(gPartyMenu.slotId2, 1); + SlidePartyMenuBoxOneStep(taskId); + gTasks[taskId].func = Task_SlideSelectedSlotsOffscreen; + } +} + +// returns FALSE if the slot has slid fully offscreen / back onscreen +bool8 TryMovePartySlot(s16 x, s16 width, u8 *leftMove, u8 *newX, u8 *newWidth) +{ + if ((x + width) < 0) + return FALSE; + if (x > 31) + return FALSE; + if (x < 0) + { + *leftMove = x * -1; + *newX = 0; + *newWidth = width + x; + } + else + { + *leftMove = 0; + *newX = x; + if ((x + width) > 31) + *newWidth = 32 - x; + else + *newWidth = width; + } + return TRUE; +} + +void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width, s16 height, s16 dir) +{ + // The use of the dimension parameters here is a mess + u8 leftMove, newX, newWidth; // leftMove is used as a srcX, newX is used as both x and srcHeight, newWidth is used as both width and destY + + if (TryMovePartySlot(x, width, &leftMove, &newX, &newWidth)) + { + FillBgTilemapBufferRect_Palette0(0, 0, newX, y, newWidth, height); + if (TryMovePartySlot(x + dir, width, &leftMove, &newX, &newWidth)) + CopyRectToBgTilemapBufferRect(0, rectSrc, leftMove, 0, width, height, newX, y, newWidth, height, 17, 0, 0); + } +} + +void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset) +{ + gSprites[menuBox->pokeballSpriteId].pos2.x += offset * 8; + gSprites[menuBox->itemSpriteId].pos2.x += offset * 8; + gSprites[menuBox->monSpriteId].pos2.x += offset * 8; + gSprites[menuBox->statusSpriteId].pos2.x += offset * 8; +} + +void SlidePartyMenuBoxSpritesOneStep(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (tSlot1SlideDir != 0) + MovePartyMenuBoxSprites(&sPartyMenuBoxes[gPartyMenu.slotId], tSlot1SlideDir); + if (tSlot2SlideDir != 0) + MovePartyMenuBoxSprites(&sPartyMenuBoxes[gPartyMenu.slotId2], tSlot2SlideDir); +} + +void SlidePartyMenuBoxOneStep(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (tSlot1SlideDir != 0) + MoveAndBufferPartySlot(sSlot1TilemapBuffer, tSlot1Left + tSlot1Offset, tSlot1Top, tSlot1Width, tSlot1Height, tSlot1SlideDir); + if (tSlot2SlideDir != 0) + MoveAndBufferPartySlot(sSlot2TilemapBuffer, tSlot2Left + tSlot2Offset, tSlot2Top, tSlot2Width, tSlot2Height, tSlot2SlideDir); + ScheduleBgCopyTilemapToVram(0); +} + +void Task_SlideSelectedSlotsOffscreen(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 slidingSlotPositions[2]; + + SlidePartyMenuBoxOneStep(taskId); + SlidePartyMenuBoxSpritesOneStep(taskId); + tSlot1Offset += tSlot1SlideDir; + tSlot2Offset += tSlot2SlideDir; + slidingSlotPositions[0] = tSlot1Left + tSlot1Offset; + slidingSlotPositions[1] = tSlot2Left + tSlot2Offset; + // Both slots have slid offscreen + if (slidingSlotPositions[0] > 33 && slidingSlotPositions[1] > 33) + { + tSlot1SlideDir *= -1; + tSlot2SlideDir *= -1; + SwitchPartyMon(); + DisplayPartyPokemonData(gPartyMenu.slotId); + DisplayPartyPokemonData(gPartyMenu.slotId2); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + CopyToBufferFromBgTilemap(0, sSlot1TilemapBuffer, tSlot1Left, tSlot1Top, tSlot1Width, tSlot1Height); + CopyToBufferFromBgTilemap(0, sSlot2TilemapBuffer, tSlot2Left, tSlot2Top, tSlot2Width, tSlot2Height); + ClearWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + ClearWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + gTasks[taskId].func = Task_SlideSelectedSlotsOnscreen; + } +} + +void Task_SlideSelectedSlotsOnscreen(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + SlidePartyMenuBoxOneStep(taskId); + SlidePartyMenuBoxSpritesOneStep(taskId); + + // Both slots have slide back onscreen + if (tSlot1SlideDir == 0 && tSlot2SlideDir == 0) + { + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + ScheduleBgCopyTilemapToVram(0); + // memory leak + // Free(sSlot1TilemapBuffer); + // Free(sSlot2TilemapBuffer); + FinishTwoMonAction(taskId); + } + // Continue sliding + else + { + tSlot1Offset += tSlot1SlideDir; + tSlot2Offset += tSlot2SlideDir; + if (tSlot1Offset == 0) + tSlot1SlideDir = 0; + if (tSlot2Offset == 0) + tSlot2SlideDir = 0; + } +} + +void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2) +{ + u8 spriteIdBuffer = *spriteIdPtr1; + u16 xBuffer1, yBuffer1, xBuffer2, yBuffer2; + + *spriteIdPtr1 = *spriteIdPtr2; + *spriteIdPtr2 = spriteIdBuffer; + xBuffer1 = gSprites[*spriteIdPtr1].pos1.x; + yBuffer1 = gSprites[*spriteIdPtr1].pos1.y; + xBuffer2 = gSprites[*spriteIdPtr1].pos2.x; + yBuffer2 = gSprites[*spriteIdPtr1].pos2.y; + gSprites[*spriteIdPtr1].pos1.x = gSprites[*spriteIdPtr2].pos1.x; + gSprites[*spriteIdPtr1].pos1.y = gSprites[*spriteIdPtr2].pos1.y; + gSprites[*spriteIdPtr1].pos2.x = gSprites[*spriteIdPtr2].pos2.x; + gSprites[*spriteIdPtr1].pos2.y = gSprites[*spriteIdPtr2].pos2.y; + gSprites[*spriteIdPtr2].pos1.x = xBuffer1; + gSprites[*spriteIdPtr2].pos1.y = yBuffer1; + gSprites[*spriteIdPtr2].pos2.x = xBuffer2; + gSprites[*spriteIdPtr2].pos2.y = yBuffer2; +} + +void SwitchPartyMon(void) +{ + struct PartyMenuBox *menuBoxes[2]; + struct Pokemon *mon1, *mon2; + struct Pokemon *monBuffer; + + menuBoxes[0] = &sPartyMenuBoxes[gPartyMenu.slotId]; + menuBoxes[1] = &sPartyMenuBoxes[gPartyMenu.slotId2]; + mon1 = &gPlayerParty[gPartyMenu.slotId]; + mon2 = &gPlayerParty[gPartyMenu.slotId2]; + monBuffer = Alloc(sizeof(struct Pokemon)); + *monBuffer = *mon1; + *mon1 = *mon2; + *mon2 = *monBuffer; + Free(monBuffer); + SwitchMenuBoxSprites(&menuBoxes[0]->pokeballSpriteId, &menuBoxes[1]->pokeballSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->itemSpriteId, &menuBoxes[1]->itemSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->monSpriteId, &menuBoxes[1]->monSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->statusSpriteId, &menuBoxes[1]->statusSpriteId); +} + +void sub_812358C(void) +{ + u16 *buffer = Alloc(2 * sizeof(u16)); + + buffer[0] = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + buffer[1] = GetMonData(&gPlayerParty[gPartyMenu.slotId2], MON_DATA_SPECIES2); + sub_8113550(3, buffer); + Free(buffer); +} + +// Finish switching mons or using Softboiled +void FinishTwoMonAction(u8 taskId) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; + AnimatePartySlot(gPartyMenu.slotId, 0); + gPartyMenu.slotId = gPartyMenu.slotId2; + AnimatePartySlot(gPartyMenu.slotId2, 1); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +#undef tSlot1Left +#undef tSlot1Top +#undef tSlot1Width +#undef tSlot1Height +#undef tSlot2Left +#undef tSlot2Top +#undef tSlot2Width +#undef tSlot2Height +#undef tSlot1Offset +#undef tSlot2Offset +#undef tSlot1SlideDir +#undef tSlot2SlideDir + +void CursorCB_Cancel1(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + if (gPartyMenu.menuType == PARTY_MENU_TYPE_DAYCARE) + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON_2); + else + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +void CursorCB_Item(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_ITEM); + DisplaySelectionWindow(SELECTWINDOW_ITEM); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_ITEM); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void CursorCB_Give(u8 taskId) +{ + PlaySE(SE_SELECT); + sPartyMenuInternal->exitCallback = CB2_SelectBagItemToGive; + Task_ClosePartyMenu(taskId); +} + +void CB2_SelectBagItemToGive(void) +{ + GoToBagMenu(1, 3, CB2_GiveHoldItem); +} + +void CB2_GiveHoldItem(void) +{ + if (gSpecialVar_ItemId == ITEM_NONE) + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); + } + else + { + sPartyMenuItemId = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); + // Already holding item + if (sPartyMenuItemId != ITEM_NONE) + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_SwitchHoldItemsPrompt, gPartyMenu.exitCallback); + } + // Give mail + else if (ItemIsMail(gSpecialVar_ItemId)) + { + RemoveBagItem(gSpecialVar_ItemId, 1); + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId); + CB2_WriteMailToGiveMon(); + } + // Give item + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_GiveHoldItem, gPartyMenu.exitCallback); + } + } +} + +void Task_GiveHoldItem(u8 taskId) +{ + u16 item; + + if (!gPaletteFade.active) + { + item = gSpecialVar_ItemId; + DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], item, FALSE, 0); + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], item); + RemoveBagItem(item, 1); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } +} diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index f3492593c..4c7681231 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1276,7 +1276,7 @@ static void DestroyMonIconInternal(struct Sprite * sprite) DestroySprite(sprite); } -void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum) +void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum) { sprite->animNum = animNum; sprite->animDelayCounter = 0; diff --git a/src/quest_log.c b/src/quest_log.c index 9683d7799..04369f1c2 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1972,15 +1972,15 @@ void DestroyHelpMessageWindow(u8 a0) } #ifdef NONMATCHING -void sub_8112F18(u8 a0) +void sub_8112F18(u8 windowId) { - u8 width = GetWindowAttribute(a0, WINDOW_WIDTH); - u8 height = GetWindowAttribute(a0, WINDOW_HEIGHT); + u8 width = GetWindowAttribute(windowId, WINDOW_WIDTH); + u8 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); u8 *buffer = Alloc(32 * width * height); u8 i, j; u8 k; - if (buffer) + if (buffer != NULL) { for (i = 0; i < height; i++) { @@ -1999,13 +1999,13 @@ void sub_8112F18(u8 a0) ); } } - CopyToWindowPixelBuffer(a0, buffer, width * height * 32, 0); + CopyToWindowPixelBuffer(windowId, buffer, width * height * 32, 0); Free(buffer); } } #else NAKED -void sub_8112F18(u8 a0) +void sub_8112F18(u8 windowId) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/trade.c b/src/trade.c index 85bd7b2ca..537a5503b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2053,9 +2053,9 @@ void sub_804CF14(void) } if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) - sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20(); + sTradeMenuResourcesPtr->tradeMenuCursorPosition = GetLastViewedMonIndex(); else - sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20() + 6; + sTradeMenuResourcesPtr->tradeMenuCursorPosition = GetLastViewedMonIndex() + 6; sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][0] * 8 + 32, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][1] * 8, 2); gMain.state = 16; @@ -2633,14 +2633,14 @@ void sub_804CF14(void) "\tldrb r0, [r0]\n" "\tcmp r0, 0x5\n" "\tbhi _0804D3B8\n" - "\tbl sub_8138B20\n" + "\tbl GetLastViewedMonIndex\n" "\tldr r1, [r4]\n" "\tb _0804D3C0\n" "\t.align 2, 0\n" "_0804D3B0: .4byte sSpriteTemplate_Text\n" "_0804D3B4: .4byte sTradeMenuResourcesPtr\n" "_0804D3B8:\n" - "\tbl sub_8138B20\n" + "\tbl GetLastViewedMonIndex\n" "\tldr r1, [r4]\n" "\tadds r0, 0x6\n" "_0804D3C0:\n" @@ -4243,7 +4243,7 @@ static void sub_804F964(void) { for (j = 0; j < sTradeMenuResourcesPtr->partyCounts[i]; j++) { - MonIcon_SetAnim(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); + SetPartyHPBarSprite(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); } } } diff --git a/sym_ewram.txt b/sym_ewram.txt index e4de1e801..1fc0deab1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -643,7 +643,7 @@ gUnknown_203B164: @ 203B164 gUnknown_203B168: @ 203B168 .space 0x4 -gUnknown_203B16C: @ 203B16C +gLastViewedMonIndex: @ 203B16C .space 0x1 gUnknown_203B16D: @ 203B16D From 5c1bdd0eb54b4159e4d66d9f733b0f66697a2436 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 23 Nov 2019 08:09:06 +0800 Subject: [PATCH 5/9] party_menu third quarter --- asm/item_menu.s | 4 +- asm/naming_screen.s | 20 +- asm/overworld.s | 6 +- asm/party_menu.s | 5102 +------------------------------- asm/pokedex_screen.s | 4 +- asm/region_map.s | 6 +- data/strings.s | 8 +- include/constants/easy_chat.h | 22 + include/easy_chat.h | 1 + include/field_player_avatar.h | 2 + include/field_screen_effect.h | 1 + include/global.h | 2 +- include/link_rfu.h | 4 + include/overworld.h | 2 +- include/pokemon_special_anim.h | 4 + include/quest_log.h | 2 - include/region_map.h | 1 + include/strings.h | 38 + include/trade.h | 3 + include/union_room.h | 4 + src/option_menu.c | 2 +- src/party_menu.c | 1660 ++++++++++- src/start_menu.c | 6 +- src/trade.c | 2 +- 24 files changed, 1752 insertions(+), 5154 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index 6967a7876..c2c1925f2 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -141,14 +141,14 @@ _08107EB4: .4byte gUnknown_203ACFC thumb_func_start CB2_BagMenuFromStartMenu CB2_BagMenuFromStartMenu: @ 8107EB8 push {lr} - ldr r2, _08107EC8 @ =CB2_ReturnToStartMenu + ldr r2, _08107EC8 @ =CB2_ReturnToFieldWithOpenMenu movs r0, 0 movs r1, 0x3 bl GoToBagMenu pop {r0} bx r0 .align 2, 0 -_08107EC8: .4byte CB2_ReturnToStartMenu +_08107EC8: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end CB2_BagMenuFromStartMenu thumb_func_start sub_8107ECC diff --git a/asm/naming_screen.s b/asm/naming_screen.s index a42d6e4ab..49ab9164f 100644 --- a/asm/naming_screen.s +++ b/asm/naming_screen.s @@ -4490,7 +4490,7 @@ sub_809FC90: @ 809FC90 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FCB4 @ =CB2_ReturnToStartMenu + ldr r0, _0809FCB4 @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x4] movs r0, 0 movs r3, 0 @@ -4500,7 +4500,7 @@ sub_809FC90: @ 809FC90 bx r0 .align 2, 0 _0809FCB0: .4byte gSaveBlock2Ptr -_0809FCB4: .4byte CB2_ReturnToStartMenu +_0809FCB4: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_809FC90 thumb_func_start sub_809FCB8 @@ -4512,7 +4512,7 @@ sub_809FCB8: @ 809FCB8 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FCDC @ =CB2_ReturnToStartMenu + ldr r0, _0809FCDC @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x4] movs r0, 0x1 movs r3, 0 @@ -4522,7 +4522,7 @@ sub_809FCB8: @ 809FCB8 bx r0 .align 2, 0 _0809FCD8: .4byte gSaveBlock2Ptr -_0809FCDC: .4byte CB2_ReturnToStartMenu +_0809FCDC: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_809FCB8 thumb_func_start sub_809FCE0 @@ -4534,7 +4534,7 @@ sub_809FCE0: @ 809FCE0 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD04 @ =CB2_ReturnToStartMenu + ldr r0, _0809FD04 @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x4] movs r0, 0x2 movs r3, 0 @@ -4544,7 +4544,7 @@ sub_809FCE0: @ 809FCE0 bx r0 .align 2, 0 _0809FD00: .4byte gSaveBlock2Ptr -_0809FD04: .4byte CB2_ReturnToStartMenu +_0809FD04: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_809FCE0 thumb_func_start sub_809FD08 @@ -4556,7 +4556,7 @@ sub_809FD08: @ 809FD08 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD2C @ =CB2_ReturnToStartMenu + ldr r0, _0809FD2C @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x4] movs r0, 0x3 movs r3, 0 @@ -4566,7 +4566,7 @@ sub_809FD08: @ 809FD08 bx r0 .align 2, 0 _0809FD28: .4byte gSaveBlock2Ptr -_0809FD2C: .4byte CB2_ReturnToStartMenu +_0809FD2C: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_809FD08 thumb_func_start sub_809FD30 @@ -4578,7 +4578,7 @@ sub_809FD30: @ 809FD30 ldrb r2, [r1, 0x8] movs r0, 0 str r0, [sp] - ldr r0, _0809FD54 @ =CB2_ReturnToStartMenu + ldr r0, _0809FD54 @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x4] movs r0, 0x4 movs r3, 0 @@ -4588,7 +4588,7 @@ sub_809FD30: @ 809FD30 bx r0 .align 2, 0 _0809FD50: .4byte gSaveBlock2Ptr -_0809FD54: .4byte CB2_ReturnToStartMenu +_0809FD54: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_809FD30 .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 29c676060..370aa054d 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3754,8 +3754,8 @@ _080568A0: .4byte gFieldCallback _080568A4: .4byte sub_807DDD0 thumb_func_end c2_8056854 - thumb_func_start CB2_ReturnToStartMenu -CB2_ReturnToStartMenu: @ 80568A8 + thumb_func_start CB2_ReturnToFieldWithOpenMenu +CB2_ReturnToFieldWithOpenMenu: @ 80568A8 push {lr} bl sub_80569BC ldr r1, _080568BC @ =gFieldCallback2 @@ -3767,7 +3767,7 @@ CB2_ReturnToStartMenu: @ 80568A8 .align 2, 0 _080568BC: .4byte gFieldCallback2 _080568C0: .4byte FieldCB2_ReturnToStartMenuInit - thumb_func_end CB2_ReturnToStartMenu + thumb_func_end CB2_ReturnToFieldWithOpenMenu thumb_func_start sub_80568C4 sub_80568C4: @ 80568C4 diff --git a/asm/party_menu.s b/asm/party_menu.s index 32674fea2..0e68a23b2 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5,5098 +5,6 @@ .text - thumb_func_start Task_SwitchHoldItemsPrompt -Task_SwitchHoldItemsPrompt: @ 81238A4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081238E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081238DC - ldr r0, _081238E8 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081238EC @ =gPlayerParty - adds r0, r1 - ldr r1, _081238F0 @ =sPartyMenuItemId - ldrh r1, [r1] - movs r2, 0x1 - bl DisplayAlreadyHoldingItemSwitchMessage - ldr r1, _081238F4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081238F8 @ =Task_SwitchItemsYesNo - str r1, [r0] -_081238DC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081238E4: .4byte gPaletteFade -_081238E8: .4byte gPartyMenu -_081238EC: .4byte gPlayerParty -_081238F0: .4byte sPartyMenuItemId -_081238F4: .4byte gTasks -_081238F8: .4byte Task_SwitchItemsYesNo - thumb_func_end Task_SwitchHoldItemsPrompt - - thumb_func_start Task_SwitchItemsYesNo -Task_SwitchItemsYesNo: @ 81238FC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08123920 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08123928 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812392C @ =Task_HandleSwitchItemsYesNoInput - str r0, [r1] -_08123920: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123928: .4byte gTasks -_0812392C: .4byte Task_HandleSwitchItemsYesNoInput - thumb_func_end Task_SwitchItemsYesNo - - thumb_func_start Task_HandleSwitchItemsYesNoInput -Task_HandleSwitchItemsYesNoInput: @ 8123930 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08123956 - cmp r1, 0 - bgt _08123950 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08123A2C - b _08123A40 -_08123950: - cmp r1, 0x1 - beq _08123A32 - b _08123A40 -_08123956: - ldr r5, _08123998 @ =gSpecialVar_ItemId - ldrh r0, [r5] - movs r1, 0x1 - bl RemoveBagItem - ldr r6, _0812399C @ =sPartyMenuItemId - ldrh r0, [r6] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - bne _081239AC - ldrh r0, [r5] - movs r1, 0x1 - bl AddBagItem - ldrh r0, [r6] - bl BufferBagFullCantTakeItemMessage - ldr r0, _081239A0 @ =gStringVar4 - movs r1, 0 - bl DisplayPartyMenuMessage - ldr r1, _081239A4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081239A8 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] - b _08123A40 - .align 2, 0 -_08123998: .4byte gSpecialVar_ItemId -_0812399C: .4byte sPartyMenuItemId -_081239A0: .4byte gStringVar4 -_081239A4: .4byte gTasks -_081239A8: .4byte Task_ReturnToChooseMonAfterText -_081239AC: - ldrh r0, [r5] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081239EC - ldr r0, _081239DC @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081239E0 @ =gPlayerParty - adds r0, r1 - ldrh r1, [r5] - bl GiveItemToMon - ldr r1, _081239E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081239E8 @ =Task_WriteMailToGiveMonAfterText - str r1, [r0] - b _08123A40 - .align 2, 0 -_081239DC: .4byte gPartyMenu -_081239E0: .4byte gPlayerParty -_081239E4: .4byte gTasks -_081239E8: .4byte Task_WriteMailToGiveMonAfterText -_081239EC: - ldr r0, _08123A1C @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08123A20 @ =gPlayerParty - adds r0, r1 - ldrh r1, [r5] - bl GiveItemToMon - ldrh r0, [r5] - ldrh r1, [r6] - movs r2, 0x1 - bl DisplaySwitchedHeldItemMessage - ldr r1, _08123A24 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123A28 @ =Task_UpdateHeldItemSprite - str r1, [r0] - b _08123A40 - .align 2, 0 -_08123A1C: .4byte gPartyMenu -_08123A20: .4byte gPlayerParty -_08123A24: .4byte gTasks -_08123A28: .4byte Task_UpdateHeldItemSprite -_08123A2C: - movs r0, 0x5 - bl PlaySE -_08123A32: - ldr r0, _08123A48 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08123A4C @ =Task_ReturnToChooseMonAfterText - str r0, [r1] -_08123A40: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123A48: .4byte gTasks -_08123A4C: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end Task_HandleSwitchItemsYesNoInput - - thumb_func_start Task_WriteMailToGiveMonAfterText -Task_WriteMailToGiveMonAfterText: @ 8123A50 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08123A70 - ldr r0, _08123A78 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08123A7C @ =CB2_WriteMailToGiveMon - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu -_08123A70: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123A78: .4byte sPartyMenuInternal -_08123A7C: .4byte CB2_WriteMailToGiveMon - thumb_func_end Task_WriteMailToGiveMonAfterText - - thumb_func_start CB2_WriteMailToGiveMon -CB2_WriteMailToGiveMon: @ 8123A80 - push {lr} - ldr r0, _08123AB8 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08123ABC @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08123AC0 @ =gSaveBlock1Ptr - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - ldr r0, _08123AC4 @ =0x00002cd0 - adds r2, r0 - ldr r1, [r1] - adds r1, r2 - ldr r2, _08123AC8 @ =CB2_ReturnToPartyMenuFromWritingMail - movs r0, 0x4 - bl DoEasyChatScreen - pop {r0} - bx r0 - .align 2, 0 -_08123AB8: .4byte gPartyMenu -_08123ABC: .4byte gPlayerParty -_08123AC0: .4byte gSaveBlock1Ptr -_08123AC4: .4byte 0x00002cd0 -_08123AC8: .4byte CB2_ReturnToPartyMenuFromWritingMail - thumb_func_end CB2_WriteMailToGiveMon - - thumb_func_start CB2_ReturnToPartyMenuFromWritingMail -CB2_ReturnToPartyMenuFromWritingMail: @ 8123ACC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r6, _08123B38 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r6, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08123B3C @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08123B40 @ =gSpecialVar_Result - ldrh r7, [r0] - cmp r7, 0 - bne _08123B4C - adds r0, r5, 0 - bl TakeMailFromMon - ldr r4, _08123B44 @ =sPartyMenuItemId - adds r0, r5, 0 - movs r1, 0xC - adds r2, r4, 0 - bl SetMonData - ldrh r0, [r4] - movs r1, 0x1 - bl RemoveBagItem - mov r0, r8 - movs r1, 0x1 - bl AddBagItem - ldrb r0, [r6, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r6, 0xB] - str r7, [sp] - ldr r1, _08123B48 @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r6] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - b _08123B68 - .align 2, 0 -_08123B38: .4byte gPartyMenu -_08123B3C: .4byte gPlayerParty -_08123B40: .4byte gSpecialVar_Result -_08123B44: .4byte sPartyMenuItemId -_08123B48: .4byte Task_TryCreateSelectionWindow -_08123B4C: - ldrb r0, [r6, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r6, 0xB] - movs r1, 0 - str r1, [sp] - ldr r1, _08123B74 @ =Task_DisplayGaveMailFromPartyMessage - str r1, [sp, 0x4] - ldr r1, [r6] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu -_08123B68: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123B74: .4byte Task_DisplayGaveMailFromPartyMessage - thumb_func_end CB2_ReturnToPartyMenuFromWritingMail - - thumb_func_start Task_DisplayGaveMailFromPartyMessage -Task_DisplayGaveMailFromPartyMessage: @ 8123B78 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08123BB0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08123BDE - ldr r1, _08123BB4 @ =sPartyMenuItemId - ldrh r0, [r1] - cmp r0, 0 - bne _08123BC4 - ldr r0, _08123BB8 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08123BBC @ =gPlayerParty - adds r0, r1 - ldr r1, _08123BC0 @ =gSpecialVar_ItemId - ldrh r1, [r1] - movs r2, 0 - movs r3, 0 - bl DisplayGaveHeldItemMessage - b _08123BD0 - .align 2, 0 -_08123BB0: .4byte gPaletteFade -_08123BB4: .4byte sPartyMenuItemId -_08123BB8: .4byte gPartyMenu -_08123BBC: .4byte gPlayerParty -_08123BC0: .4byte gSpecialVar_ItemId -_08123BC4: - ldr r0, _08123BE4 @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldrh r1, [r1] - movs r2, 0 - bl DisplaySwitchedHeldItemMessage -_08123BD0: - ldr r0, _08123BE8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08123BEC @ =Task_UpdateHeldItemSprite - str r0, [r1] -_08123BDE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123BE4: .4byte gSpecialVar_ItemId -_08123BE8: .4byte gTasks -_08123BEC: .4byte Task_UpdateHeldItemSprite - thumb_func_end Task_DisplayGaveMailFromPartyMessage - - thumb_func_start Task_UpdateHeldItemSprite -Task_UpdateHeldItemSprite: @ 8123BF0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08123C2C @ =gPartyMenu - ldrb r4, [r0, 0x9] - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08123C24 - lsls r2, r4, 24 - asrs r2, 24 - movs r0, 0x64 - muls r0, r2 - ldr r1, _08123C30 @ =gPlayerParty - adds r0, r1 - ldr r1, _08123C34 @ =sPartyMenuBoxes - lsls r2, 4 - ldr r1, [r1] - adds r1, r2 - bl UpdatePartyMonHeldItemSprite - adds r0, r5, 0 - bl Task_ReturnToChooseMonAfterText -_08123C24: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123C2C: .4byte gPartyMenu -_08123C30: .4byte gPlayerParty -_08123C34: .4byte sPartyMenuBoxes - thumb_func_end Task_UpdateHeldItemSprite - - thumb_func_start CursorCB_TakeItem -CursorCB_TakeItem: @ 8123C38 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08123C90 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08123C94 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0x5 - bl PlaySE - ldr r4, _08123C98 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - adds r0, r5, 0 - bl TryTakeMonItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08123C9C - cmp r0, 0x1 - beq _08123CC0 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl DisplayTookHeldItemMessage - b _08123CCE - .align 2, 0 -_08123C90: .4byte gPartyMenu -_08123C94: .4byte gPlayerParty -_08123C98: .4byte sPartyMenuInternal -_08123C9C: - ldr r1, _08123CB4 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r4, _08123CB8 @ =gStringVar4 - ldr r1, _08123CBC @ =gUnknown_8416C8F - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - b _08123CC8 - .align 2, 0 -_08123CB4: .4byte gStringVar1 -_08123CB8: .4byte gStringVar4 -_08123CBC: .4byte gUnknown_8416C8F -_08123CC0: - adds r0, r6, 0 - bl BufferBagFullCantTakeItemMessage - ldr r0, _08123CE8 @ =gStringVar4 -_08123CC8: - movs r1, 0x1 - bl DisplayPartyMenuMessage -_08123CCE: - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, _08123CEC @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _08123CF0 @ =Task_UpdateHeldItemSprite - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123CE8: .4byte gStringVar4 -_08123CEC: .4byte gTasks -_08123CF0: .4byte Task_UpdateHeldItemSprite - thumb_func_end CursorCB_TakeItem - - thumb_func_start CursorCB_Mail -CursorCB_Mail: @ 8123CF4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _08123D44 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _08123D48 @ =gPlayerParty - ldr r1, _08123D4C @ =gPartyMenu - ldrb r1, [r1, 0x9] - movs r2, 0x9 - bl SetPartyMonSelectionActions - movs r0, 0x2 - bl DisplaySelectionWindow - movs r0, 0x1A - bl DisplayPartyMenuStdMessage - ldr r1, _08123D50 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _08123D54 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123D44: .4byte sPartyMenuInternal -_08123D48: .4byte gPlayerParty -_08123D4C: .4byte gPartyMenu -_08123D50: .4byte gTasks -_08123D54: .4byte Task_HandleSelectionMenuInput - thumb_func_end CursorCB_Mail - - thumb_func_start CursorCB_Read -CursorCB_Read: @ 8123D58 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08123D7C @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08123D80 @ =CB2_ReadHeldMail - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123D7C: .4byte sPartyMenuInternal -_08123D80: .4byte CB2_ReadHeldMail - thumb_func_end CursorCB_Read - - thumb_func_start CB2_ReadHeldMail -CB2_ReadHeldMail: @ 8123D84 - push {lr} - ldr r0, _08123DB8 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08123DBC @ =gPlayerParty - adds r0, r1 - movs r1, 0x40 - bl GetMonData - ldr r2, _08123DC0 @ =gSaveBlock1Ptr - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08123DC4 @ =0x00002cd0 - adds r1, r0 - ldr r0, [r2] - adds r0, r1 - ldr r1, _08123DC8 @ =CB2_ReturnToPartyMenuFromReadingMail - movs r2, 0x1 - bl ReadMail - pop {r0} - bx r0 - .align 2, 0 -_08123DB8: .4byte gPartyMenu -_08123DBC: .4byte gPlayerParty -_08123DC0: .4byte gSaveBlock1Ptr -_08123DC4: .4byte 0x00002cd0 -_08123DC8: .4byte CB2_ReturnToPartyMenuFromReadingMail - thumb_func_end CB2_ReadHeldMail - - thumb_func_start CB2_ReturnToPartyMenuFromReadingMail -CB2_ReturnToPartyMenuFromReadingMail: @ 8123DCC - push {lr} - sub sp, 0xC - ldr r2, _08123E00 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r3, _08123E04 @ =gPartyMenu - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r3, 0xB] - movs r1, 0x16 - str r1, [sp] - ldr r1, _08123E08 @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r3] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08123E00: .4byte gPaletteFade -_08123E04: .4byte gPartyMenu -_08123E08: .4byte Task_TryCreateSelectionWindow - thumb_func_end CB2_ReturnToPartyMenuFromReadingMail - - thumb_func_start CursorCB_TakeMail -CursorCB_TakeMail: @ 8123E0C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r5, _08123E48 @ =sPartyMenuInternal - ldr r0, [r5] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, [r5] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, _08123E4C @ =gText_SendMailToPC - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _08123E50 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123E54 @ =Task_SendMailToPCYesNo - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123E48: .4byte sPartyMenuInternal -_08123E4C: .4byte gText_SendMailToPC -_08123E50: .4byte gTasks -_08123E54: .4byte Task_SendMailToPCYesNo - thumb_func_end CursorCB_TakeMail - - thumb_func_start Task_SendMailToPCYesNo -Task_SendMailToPCYesNo: @ 8123E58 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08123E7C - bl PartyMenuDisplayYesNoMenu - ldr r0, _08123E84 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08123E88 @ =Task_HandleSendMailToPCYesNoInput - str r0, [r1] -_08123E7C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123E84: .4byte gTasks -_08123E88: .4byte Task_HandleSendMailToPCYesNoInput - thumb_func_end Task_SendMailToPCYesNo - - thumb_func_start Task_HandleSendMailToPCYesNoInput -Task_HandleSendMailToPCYesNoInput: @ 8123E8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08123EB2 - cmp r1, 0 - bgt _08123EAC - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08123F1C - b _08123F38 -_08123EAC: - cmp r1, 0x1 - beq _08123F22 - b _08123F38 -_08123EB2: - ldr r0, _08123EE4 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08123EE8 @ =gPlayerParty - adds r0, r1 - bl TakeMailFromMon2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08123EF8 - ldr r0, _08123EEC @ =gText_MailSentToPC - movs r1, 0 - bl DisplayPartyMenuMessage - ldr r1, _08123EF0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123EF4 @ =Task_UpdateHeldItemSprite - b _08123F36 - .align 2, 0 -_08123EE4: .4byte gPartyMenu -_08123EE8: .4byte gPlayerParty -_08123EEC: .4byte gText_MailSentToPC -_08123EF0: .4byte gTasks -_08123EF4: .4byte Task_UpdateHeldItemSprite -_08123EF8: - ldr r0, _08123F10 @ =gText_PCMailboxFull - movs r1, 0 - bl DisplayPartyMenuMessage - ldr r1, _08123F14 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123F18 @ =Task_ReturnToChooseMonAfterText - b _08123F36 - .align 2, 0 -_08123F10: .4byte gText_PCMailboxFull -_08123F14: .4byte gTasks -_08123F18: .4byte Task_ReturnToChooseMonAfterText -_08123F1C: - movs r0, 0x5 - bl PlaySE -_08123F22: - ldr r0, _08123F40 @ =gText_MailMessageWillBeLost - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _08123F44 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123F48 @ =Task_LoseMailMessageYesNo -_08123F36: - str r1, [r0] -_08123F38: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123F40: .4byte gText_MailMessageWillBeLost -_08123F44: .4byte gTasks -_08123F48: .4byte Task_LoseMailMessageYesNo - thumb_func_end Task_HandleSendMailToPCYesNoInput - - thumb_func_start Task_LoseMailMessageYesNo -Task_LoseMailMessageYesNo: @ 8123F4C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08123F70 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08123F78 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08123F7C @ =Task_HandleLoseMailMessageYesNoInput - str r0, [r1] -_08123F70: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123F78: .4byte gTasks -_08123F7C: .4byte Task_HandleLoseMailMessageYesNoInput - thumb_func_end Task_LoseMailMessageYesNo - - thumb_func_start Task_HandleLoseMailMessageYesNoInput -Task_HandleLoseMailMessageYesNoInput: @ 8123F80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08123FAA - cmp r1, 0 - bgt _08123FA4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0812403C - b _08124050 -_08123FA4: - cmp r1, 0x1 - beq _08124042 - b _08124050 -_08123FAA: - ldr r0, _08123FFC @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r7, 0x64 - muls r0, r7 - ldr r6, _08124000 @ =gPlayerParty - adds r0, r6 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124010 - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r7 - adds r0, r6 - bl TakeMailFromMon - ldr r0, _08124004 @ =gText_MailTakenFromPkmn - movs r1, 0 - bl DisplayPartyMenuMessage - ldr r1, _08124008 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812400C @ =Task_UpdateHeldItemSprite - str r1, [r0] - b _08124050 - .align 2, 0 -_08123FFC: .4byte gPartyMenu -_08124000: .4byte gPlayerParty -_08124004: .4byte gText_MailTakenFromPkmn -_08124008: .4byte gTasks -_0812400C: .4byte Task_UpdateHeldItemSprite -_08124010: - adds r0, r4, 0 - bl BufferBagFullCantTakeItemMessage - ldr r0, _08124030 @ =gStringVar4 - movs r1, 0 - bl DisplayPartyMenuMessage - ldr r1, _08124034 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08124038 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] - b _08124050 - .align 2, 0 -_08124030: .4byte gStringVar4 -_08124034: .4byte gTasks -_08124038: .4byte Task_ReturnToChooseMonAfterText -_0812403C: - movs r0, 0x5 - bl PlaySE -_08124042: - ldr r0, _0812405C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08124060 @ =Task_ReturnToChooseMonAfterText - str r0, [r1] -_08124050: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812405C: .4byte gTasks -_08124060: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end Task_HandleLoseMailMessageYesNoInput - - thumb_func_start CursorCB_Cancel2 -CursorCB_Cancel2: @ 8124064 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _081240E0 @ =gPartyMenu - mov r8, r0 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _081240E4 @ =gPlayerParty - mov r9, r0 - add r5, r9 - movs r0, 0x5 - bl PlaySE - ldr r4, _081240E8 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - mov r0, r8 - ldrb r4, [r0, 0x9] - adds r0, r5, 0 - bl GetPartyMenuActionsType - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r0, r9 - adds r1, r4, 0 - bl SetPartyMonSelectionActions - movs r0, 0 - bl DisplaySelectionWindow - movs r0, 0x16 - bl DisplayPartyMenuStdMessage - ldr r1, _081240EC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _081240F0 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081240E0: .4byte gPartyMenu -_081240E4: .4byte gPlayerParty -_081240E8: .4byte sPartyMenuInternal -_081240EC: .4byte gTasks -_081240F0: .4byte Task_HandleSelectionMenuInput - thumb_func_end CursorCB_Cancel2 - - thumb_func_start CursorCB_SendMon -CursorCB_SendMon: @ 81240F4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r5, _08124120 @ =sPartyMenuInternal - ldr r0, [r5] - adds r0, 0xC - bl PartyMenuRemoveWindow - bl TrySwitchInPokemon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124124 - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _08124142 - .align 2, 0 -_08124120: .4byte sPartyMenuInternal -_08124124: - ldr r0, [r5] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _08124148 @ =gStringVar4 - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _0812414C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08124150 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] -_08124142: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08124148: .4byte gStringVar4 -_0812414C: .4byte gTasks -_08124150: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end CursorCB_SendMon - - thumb_func_start CursorCB_Enter -CursorCB_Enter: @ 8124154 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0812417C @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0x80 - bne _08124184 - movs r0, 0x2 - mov r8, r0 - ldr r1, _08124180 @ =gUnknown_8416B3E - str r1, [sp] - b _0812418C - .align 2, 0 -_0812417C: .4byte gPartyMenu -_08124180: .4byte gUnknown_8416B3E -_08124184: - movs r2, 0x3 - mov r8, r2 - ldr r0, _081241FC @ =gUnknown_8416B16 - str r0, [sp] -_0812418C: - ldr r4, _08124200 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - movs r5, 0 - lsls r1, r7, 2 - mov r9, r1 - cmp r5, r8 - bcs _08124222 - ldr r6, _08124204 @ =gPartyMenu - ldr r1, _08124208 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - mov r10, r0 -_081241B6: - ldr r0, _0812420C @ =gSelectedOrderFromParty - adds r4, r5, r0 - ldrb r0, [r4] - cmp r0, 0 - bne _08124218 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r6, 0x9] - adds r0, 0x1 - strb r0, [r4] - adds r0, r5, 0x2 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08124210 @ =sPartyMenuBoxes - movs r2, 0x9 - ldrsb r2, [r6, r2] - lsls r2, 4 - ldr r1, [r1] - adds r1, r2 - movs r2, 0x1 - bl DisplayPartyPokemonDescriptionText - mov r0, r8 - subs r0, 0x1 - cmp r5, r0 - bne _081241F0 - bl MoveCursorToConfirm -_081241F0: - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _08124214 @ =Task_HandleChooseMonInput - mov r1, r10 - b _0812423C - .align 2, 0 -_081241FC: .4byte gUnknown_8416B16 -_08124200: .4byte sPartyMenuInternal -_08124204: .4byte gPartyMenu -_08124208: .4byte gTasks -_0812420C: .4byte gSelectedOrderFromParty -_08124210: .4byte sPartyMenuBoxes -_08124214: .4byte Task_HandleChooseMonInput -_08124218: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r8 - bcc _081241B6 -_08124222: - movs r0, 0x1A - bl PlaySE - ldr r0, [sp] - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r0, _08124250 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _08124254 @ =Task_ReturnToChooseMonAfterText -_0812423C: - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124250: .4byte gTasks -_08124254: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end CursorCB_Enter - - thumb_func_start MoveCursorToConfirm -MoveCursorToConfirm: @ 8124258 - push {r4,lr} - ldr r4, _08124274 @ =gPartyMenu - ldrb r0, [r4, 0x9] - movs r1, 0 - bl AnimatePartySlot - movs r0, 0x6 - strb r0, [r4, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08124274: .4byte gPartyMenu - thumb_func_end MoveCursorToConfirm - - thumb_func_start CursorCB_NoEntry -CursorCB_NoEntry: @ 8124278 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _081242BC @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - movs r4, 0 - ldr r3, _081242C0 @ =gSelectedOrderFromParty - ldr r6, _081242C4 @ =gPartyMenu - adds r5, r6, 0 -_0812429E: - adds r2, r4, r3 - ldrb r1, [r2] - movs r0, 0x9 - ldrsb r0, [r5, r0] - adds r0, 0x1 - cmp r1, r0 - bne _081242DC - movs r1, 0 - strb r1, [r2] - cmp r4, 0 - beq _081242C8 - cmp r4, 0x1 - beq _081242D4 - b _081242E6 - .align 2, 0 -_081242BC: .4byte sPartyMenuInternal -_081242C0: .4byte gSelectedOrderFromParty -_081242C4: .4byte gPartyMenu -_081242C8: - ldrb r0, [r3, 0x1] - strb r0, [r3] - ldrb r0, [r3, 0x2] - strb r0, [r3, 0x1] - strb r4, [r3, 0x2] - b _081242E6 -_081242D4: - ldrb r0, [r3, 0x2] - strb r0, [r3, 0x1] - strb r1, [r3, 0x2] - b _081242E6 -_081242DC: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0812429E -_081242E6: - ldr r5, _08124344 @ =sPartyMenuBoxes - movs r0, 0x9 - ldrsb r0, [r6, r0] - lsls r0, 4 - ldr r1, [r5] - adds r1, r0 - movs r0, 0x1 - movs r2, 0x1 - bl DisplayPartyPokemonDescriptionText - ldr r4, _08124348 @ =gSelectedOrderFromParty - ldrb r0, [r4] - cmp r0, 0 - beq _08124312 - lsls r0, 4 - subs r0, 0x10 - ldr r1, [r5] - adds r1, r0 - movs r0, 0x2 - movs r2, 0x1 - bl DisplayPartyPokemonDescriptionText -_08124312: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08124328 - lsls r0, 4 - subs r0, 0x10 - ldr r1, [r5] - adds r1, r0 - movs r0, 0x3 - movs r2, 0x1 - bl DisplayPartyPokemonDescriptionText -_08124328: - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _0812434C @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _08124350 @ =Task_HandleChooseMonInput - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124344: .4byte sPartyMenuBoxes -_08124348: .4byte gSelectedOrderFromParty -_0812434C: .4byte gTasks -_08124350: .4byte Task_HandleChooseMonInput - thumb_func_end CursorCB_NoEntry - - thumb_func_start CursorCB_Store -CursorCB_Store: @ 8124354 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r1, _0812437C @ =gSpecialVar_0x8004 - ldr r0, _08124380 @ =gPartyMenu - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812437C: .4byte gSpecialVar_0x8004 -_08124380: .4byte gPartyMenu - thumb_func_end CursorCB_Store - - thumb_func_start CursorCB_Register -CursorCB_Register: @ 8124384 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08124410 @ =gPartyMenu - mov r9, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r4, _08124414 @ =gPlayerParty - adds r0, r4 - movs r1, 0x41 - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - mov r1, r9 - movs r0, 0x9 - ldrsb r0, [r1, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r9 - movs r0, 0x9 - ldrsb r0, [r1, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4 - movs r1, 0x50 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80F9800 - ldr r0, [r0] - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl Trade_CanTradeSelectedMon - cmp r0, 0x1 - beq _08124418 - cmp r0, 0x2 - beq _0812442C - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - bl Task_ClosePartyMenu - b _0812446C - .align 2, 0 -_08124410: .4byte gPartyMenu -_08124414: .4byte gPlayerParty -_08124418: - ldr r0, _08124424 @ =gStringVar4 - ldr r1, _08124428 @ =gText_PkmnCantBeTradedNow - bl StringExpandPlaceholders - b _08124434 - .align 2, 0 -_08124424: .4byte gStringVar4 -_08124428: .4byte gText_PkmnCantBeTradedNow -_0812442C: - ldr r0, _08124478 @ =gStringVar4 - ldr r1, _0812447C @ =gText_EggCantBeTradedNow - bl StringExpandPlaceholders -_08124434: - movs r0, 0x1A - bl PlaySE - ldr r4, _08124480 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r4, _08124478 @ =gStringVar4 - ldr r1, _08124484 @ =gText_PauseUntilPress - adds r0, r4, 0 - bl StringAppend - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _08124488 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812448C @ =Task_ReturnToChooseMonAfterText - str r1, [r0] -_0812446C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124478: .4byte gStringVar4 -_0812447C: .4byte gText_EggCantBeTradedNow -_08124480: .4byte sPartyMenuInternal -_08124484: .4byte gText_PauseUntilPress -_08124488: .4byte gTasks -_0812448C: .4byte Task_ReturnToChooseMonAfterText - thumb_func_end CursorCB_Register - - thumb_func_start CursorCB_Trade1 -CursorCB_Trade1: @ 8124490 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08124558 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - muls r0, r6 - ldr r4, _0812455C @ =gPlayerParty - adds r0, r4 - movs r1, 0x41 - bl GetMonData - mov r9, r0 - mov r1, r9 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r4 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r4 - movs r1, 0x50 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80F9800 - ldr r0, [r0] - ldr r1, _08124560 @ =gUnknown_203B064 - ldr r1, [r1] - ldr r2, _08124564 @ =gUnionRoomOfferedSpecies - ldrh r3, [r2] - ldr r2, _08124568 @ =gUnionRoomRequestedMonType - ldrb r2, [r2] - str r2, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - mov r2, r9 - bl GetUnionRoomTradeMessageId - cmp r0, 0 - beq _08124584 - ldr r5, _0812456C @ =gStringVar4 - ldr r1, _08124570 @ =sUnionRoomTradeMessages - subs r0, 0x1 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x1A - bl PlaySE - ldr r4, _08124574 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r1, _08124578 @ =gText_PauseUntilPress - adds r0, r5, 0 - bl StringAppend - adds r0, r5, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _0812457C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08124580 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] - b _08124590 - .align 2, 0 -_08124558: .4byte gPartyMenu -_0812455C: .4byte gPlayerParty -_08124560: .4byte gUnknown_203B064 -_08124564: .4byte gUnionRoomOfferedSpecies -_08124568: .4byte gUnionRoomRequestedMonType -_0812456C: .4byte gStringVar4 -_08124570: .4byte sUnionRoomTradeMessages -_08124574: .4byte sPartyMenuInternal -_08124578: .4byte gText_PauseUntilPress -_0812457C: .4byte gTasks -_08124580: .4byte Task_ReturnToChooseMonAfterText -_08124584: - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - bl Task_ClosePartyMenu -_08124590: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CursorCB_Trade1 - - thumb_func_start CursorCB_Trade2 -CursorCB_Trade2: @ 81245A0 - bx lr - thumb_func_end CursorCB_Trade2 - - thumb_func_start CursorCB_FieldMove -CursorCB_FieldMove: @ 81245A4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl Menu_GetCursorPos - ldr r5, _08124610 @ =sPartyMenuInternal - ldr r1, [r5] - lsls r0, 24 - lsrs r0, 24 - adds r1, 0xF - adds r1, r0 - ldrb r0, [r1] - subs r0, 0x12 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r1, _08124614 @ =sFieldMoveCursorCallbacks - lsls r0, r4, 3 - adds r7, r0, r1 - ldr r0, [r7] - cmp r0, 0 - bne _081245D6 - b _081247B4 -_081245D6: - ldr r0, [r5] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r5] - adds r0, 0xD - bl PartyMenuRemoveWindow - bl MenuHelpers_LinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081245FA - bl InUnionRoom - cmp r0, 0x1 - bne _0812461C -_081245FA: - adds r0, r4, 0 - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08124618 - movs r0, 0xD - bl DisplayPartyMenuStdMessage - b _081247A6 - .align 2, 0 -_08124610: .4byte sPartyMenuInternal -_08124614: .4byte sFieldMoveCursorCallbacks -_08124618: - ldrb r0, [r7, 0x4] - b _081247A2 -_0812461C: - cmp r4, 0x6 - bhi _08124658 - movs r1, 0x82 - lsls r1, 4 - adds r0, r4, r1 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08124658 - ldr r0, _0812464C @ =gText_CantUseUntilNewBadge - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _08124650 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08124654 @ =Task_ReturnToChooseMonAfterText - str r1, [r0] - b _081247B4 - .align 2, 0 -_0812464C: .4byte gText_CantUseUntilNewBadge -_08124650: .4byte gTasks -_08124654: .4byte Task_ReturnToChooseMonAfterText -_08124658: - ldr r1, _08124680 @ =sFieldMoveCursorCallbacks - lsls r0, r4, 3 - adds r5, r0, r1 - ldr r0, [r5] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0812466E - b _0812478C -_0812466E: - subs r0, r4, 0x2 - cmp r0, 0x8 - bhi _0812475C - lsls r0, 2 - ldr r1, _08124684 @ =_08124688 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08124680: .4byte sFieldMoveCursorCallbacks -_08124684: .4byte _08124688 - .align 2, 0 -_08124688: - .4byte _0812474C - .4byte _0812475C - .4byte _0812475C - .4byte _0812475C - .4byte _0812475C - .4byte _081246B4 - .4byte _081246F0 - .4byte _081246AC - .4byte _081246AC -_081246AC: - adds r0, r6, 0 - bl ChooseMonForSoftboiled - b _081247B4 -_081246B4: - ldr r0, _081246E0 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x1C - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x1D] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r1, r0, 0 - ldr r0, _081246E4 @ =gStringVar1 - ldrb r1, [r1, 0x14] - bl GetMapNameGeneric - ldr r0, _081246E8 @ =gStringVar4 - ldr r1, _081246EC @ =gUnknown_8417640 - b _08124720 - .align 2, 0 -_081246E0: .4byte gSaveBlock1Ptr -_081246E4: .4byte gStringVar1 -_081246E8: .4byte gStringVar4 -_081246EC: .4byte gUnknown_8417640 -_081246F0: - ldr r0, _08124738 @ =gSaveBlock1Ptr - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - adds r1, 0x25 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r1, r0, 0 - ldr r0, _0812473C @ =gStringVar1 - ldrb r1, [r1, 0x14] - bl GetMapNameGeneric - ldr r0, _08124740 @ =gStringVar4 - ldr r1, _08124744 @ =gUnknown_8417615 -_08124720: - bl StringExpandPlaceholders - adds r0, r6, 0 - bl DisplayFieldMoveExitAreaMessage - ldr r0, _08124748 @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - strh r4, [r0] - b _081247B4 - .align 2, 0 -_08124738: .4byte gSaveBlock1Ptr -_0812473C: .4byte gStringVar1 -_08124740: .4byte gStringVar4 -_08124744: .4byte gUnknown_8417615 -_08124748: .4byte sPartyMenuInternal -_0812474C: - ldr r1, _08124754 @ =gPartyMenu - ldr r0, _08124758 @ =sub_80C4EF8 - str r0, [r1] - b _08124778 - .align 2, 0 -_08124754: .4byte gPartyMenu -_08124758: .4byte sub_80C4EF8 -_0812475C: - ldr r1, _08124780 @ =gPartyMenu - ldr r0, _08124784 @ =CB2_ReturnToField - str r0, [r1] - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08124788 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_8124BB0 -_08124778: - adds r0, r6, 0 - bl Task_ClosePartyMenu - b _081247B4 - .align 2, 0 -_08124780: .4byte gPartyMenu -_08124784: .4byte CB2_ReturnToField -_08124788: .4byte gPlayerParty -_0812478C: - cmp r4, 0 - beq _0812479A - cmp r4, 0x4 - bne _081247A0 - bl DisplayCantUseSurfMessage - b _081247A6 -_0812479A: - bl DisplayCantUseFlashMessage - b _081247A6 -_081247A0: - ldrb r0, [r5, 0x4] -_081247A2: - bl DisplayPartyMenuStdMessage -_081247A6: - ldr r0, _081247BC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _081247C0 @ =Task_CancelAfterAorBPress - str r0, [r1] -_081247B4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081247BC: .4byte gTasks -_081247C0: .4byte Task_CancelAfterAorBPress - thumb_func_end CursorCB_FieldMove - - thumb_func_start DisplayFieldMoveExitAreaMessage -DisplayFieldMoveExitAreaMessage: @ 81247C4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _081247E8 @ =gStringVar4 - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _081247EC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081247F0 @ =Task_FieldMoveExitAreaYesNo - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081247E8: .4byte gStringVar4 -_081247EC: .4byte gTasks -_081247F0: .4byte Task_FieldMoveExitAreaYesNo - thumb_func_end DisplayFieldMoveExitAreaMessage - - thumb_func_start Task_FieldMoveExitAreaYesNo -Task_FieldMoveExitAreaYesNo: @ 81247F4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08124818 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08124820 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08124824 @ =Task_HandleFieldMoveExitAreaYesNoInput - str r0, [r1] -_08124818: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08124820: .4byte gTasks -_08124824: .4byte Task_HandleFieldMoveExitAreaYesNoInput - thumb_func_end Task_FieldMoveExitAreaYesNo - - thumb_func_start Task_HandleFieldMoveExitAreaYesNoInput -Task_HandleFieldMoveExitAreaYesNoInput: @ 8124828 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0812484E - cmp r1, 0 - bgt _08124848 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0812488C - b _081248A2 -_08124848: - cmp r1, 0x1 - beq _08124892 - b _081248A2 -_0812484E: - ldr r1, _0812487C @ =gPartyMenu - ldr r0, _08124880 @ =CB2_ReturnToField - str r0, [r1] - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08124884 @ =gPlayerParty - adds r0, r1 - ldr r1, _08124888 @ =sPartyMenuInternal - ldr r1, [r1] - movs r2, 0x86 - lsls r2, 2 - adds r1, r2 - ldrb r1, [r1] - bl sub_8124BB0 - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _081248A2 - .align 2, 0 -_0812487C: .4byte gPartyMenu -_08124880: .4byte CB2_ReturnToField -_08124884: .4byte gPlayerParty -_08124888: .4byte sPartyMenuInternal -_0812488C: - movs r0, 0x5 - bl PlaySE -_08124892: - ldr r0, _081248A8 @ =gFieldCallback2 - movs r1, 0 - str r1, [r0] - ldr r0, _081248AC @ =gPostMenuFieldCallback - str r1, [r0] - adds r0, r4, 0 - bl Task_ReturnToChooseMonAfterText -_081248A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081248A8: .4byte gFieldCallback2 -_081248AC: .4byte gPostMenuFieldCallback - thumb_func_end Task_HandleFieldMoveExitAreaYesNoInput - - thumb_func_start FieldCallback_PrepareFadeInFromMenu -FieldCallback_PrepareFadeInFromMenu: @ 81248B0 - push {lr} - bl sub_807DC00 - ldr r0, _081248C4 @ =Task_FieldMoveWaitForFade - movs r1, 0x8 - bl CreateTask - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_081248C4: .4byte Task_FieldMoveWaitForFade - thumb_func_end FieldCallback_PrepareFadeInFromMenu - - thumb_func_start Task_FieldMoveWaitForFade -Task_FieldMoveWaitForFade: @ 81248C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsWeatherNotFadingIn - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081248F4 - bl GetFieldMoveMonSpecies - ldr r1, _081248FC @ =gFieldEffectArguments - lsls r0, 16 - lsrs r0, 16 - str r0, [r1] - ldr r0, _08124900 @ =gPostMenuFieldCallback - ldr r0, [r0] - bl _call_via_r0 - adds r0, r4, 0 - bl DestroyTask -_081248F4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081248FC: .4byte gFieldEffectArguments -_08124900: .4byte gPostMenuFieldCallback - thumb_func_end Task_FieldMoveWaitForFade - - thumb_func_start GetFieldMoveMonSpecies -GetFieldMoveMonSpecies: @ 8124904 - push {lr} - ldr r0, _08124924 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08124928 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08124924: .4byte gPartyMenu -_08124928: .4byte gPlayerParty - thumb_func_end GetFieldMoveMonSpecies - - thumb_func_start Task_CancelAfterAorBPress -Task_CancelAfterAorBPress: @ 812492C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08124950 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08124946 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812494C -_08124946: - adds r0, r2, 0 - bl CursorCB_Cancel1 -_0812494C: - pop {r0} - bx r0 - .align 2, 0 -_08124950: .4byte gMain - thumb_func_end Task_CancelAfterAorBPress - - thumb_func_start DisplayCantUseFlashMessage -DisplayCantUseFlashMessage: @ 8124954 - push {lr} - ldr r0, _0812496C @ =0x00000806 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124970 - movs r0, 0xC - bl DisplayPartyMenuStdMessage - b _08124976 - .align 2, 0 -_0812496C: .4byte 0x00000806 -_08124970: - movs r0, 0xD - bl DisplayPartyMenuStdMessage -_08124976: - pop {r0} - bx r0 - thumb_func_end DisplayCantUseFlashMessage - - thumb_func_start FieldCallback_Surf -FieldCallback_Surf: @ 812497C - push {lr} - bl GetCursorSelectionMonId - ldr r1, _08124994 @ =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - movs r0, 0x9 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08124994: .4byte gFieldEffectArguments - thumb_func_end FieldCallback_Surf - - thumb_func_start SetUpFieldMove_Surf -SetUpFieldMove_Surf: @ 8124998 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSemiDeepWater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08124A00 - bl PartyHasMonWithSurf - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124A00 - bl IsPlayerFacingSurfableFishableWater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124A00 - ldr r1, _081249F0 @ =gFieldCallback2 - ldr r0, _081249F4 @ =FieldCallback_PrepareFadeInFromMenu - str r0, [r1] - ldr r1, _081249F8 @ =gPostMenuFieldCallback - ldr r0, _081249FC @ =FieldCallback_Surf - str r0, [r1] - movs r0, 0x1 - b _08124A02 - .align 2, 0 -_081249F0: .4byte gFieldCallback2 -_081249F4: .4byte FieldCallback_PrepareFadeInFromMenu -_081249F8: .4byte gPostMenuFieldCallback -_081249FC: .4byte FieldCallback_Surf -_08124A00: - movs r0, 0 -_08124A02: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Surf - - thumb_func_start DisplayCantUseSurfMessage -DisplayCantUseSurfMessage: @ 8124A0C - push {r4,lr} - sub sp, 0x4 - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08124A24 - movs r0, 0x9 - bl DisplayPartyMenuStdMessage - b _08124A82 -_08124A24: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSemiDeepWater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124A56 - movs r0, 0xA - bl DisplayPartyMenuStdMessage - b _08124A82 -_08124A56: - ldr r0, _08124A78 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x3 - bne _08124A7C - ldrb r0, [r1, 0x5] - subs r0, 0x23 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08124A7C - movs r0, 0xB - bl DisplayPartyMenuStdMessage - b _08124A82 - .align 2, 0 -_08124A78: .4byte gSaveBlock1Ptr -_08124A7C: - movs r0, 0x8 - bl DisplayPartyMenuStdMessage -_08124A82: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end DisplayCantUseSurfMessage - - thumb_func_start SetUpFieldMove_Fly -SetUpFieldMove_Fly: @ 8124A8C - push {lr} - ldr r0, _08124AA4 @ =gMapHeader - ldrb r0, [r0, 0x17] - bl Overworld_MapTypeAllowsTeleportAndFly - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08124AA8 - movs r0, 0 - b _08124AAA - .align 2, 0 -_08124AA4: .4byte gMapHeader -_08124AA8: - movs r0, 0x1 -_08124AAA: - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Fly - - thumb_func_start CB2_ReturnToPartyMenuFromFlyMap -CB2_ReturnToPartyMenuFromFlyMap: @ 8124AB0 - push {lr} - sub sp, 0xC - movs r0, 0 - str r0, [sp] - ldr r0, _08124AD4 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08124AD4: .4byte Task_HandleChooseMonInput -_08124AD8: .4byte CB2_ReturnToStartMenu - thumb_func_end CB2_ReturnToPartyMenuFromFlyMap - - thumb_func_start FieldCallback_Waterfall -FieldCallback_Waterfall: @ 8124ADC - push {lr} - bl GetCursorSelectionMonId - ldr r1, _08124AF4 @ =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - movs r0, 0x2B - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08124AF4: .4byte gFieldEffectArguments - thumb_func_end FieldCallback_Waterfall - - thumb_func_start SetUpFieldMove_Waterfall -SetUpFieldMove_Waterfall: @ 8124AF8 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124B54 - bl IsPlayerSurfingNorth - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124B54 - ldr r1, _08124B44 @ =gFieldCallback2 - ldr r0, _08124B48 @ =FieldCallback_PrepareFadeInFromMenu - str r0, [r1] - ldr r1, _08124B4C @ =gPostMenuFieldCallback - ldr r0, _08124B50 @ =FieldCallback_Waterfall - str r0, [r1] - movs r0, 0x1 - b _08124B56 - .align 2, 0 -_08124B44: .4byte gFieldCallback2 -_08124B48: .4byte FieldCallback_PrepareFadeInFromMenu -_08124B4C: .4byte gPostMenuFieldCallback -_08124B50: .4byte FieldCallback_Waterfall -_08124B54: - movs r0, 0 -_08124B56: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Waterfall - - thumb_func_start sub_8124B60 -sub_8124B60: @ 8124B60 - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0x8 - bl Alloc - adds r7, r0, 0 - adds r0, r6, 0 - movs r1, 0x41 - bl GetMonData - strh r0, [r7, 0x4] - strh r4, [r7] - strh r5, [r7, 0x2] - ldr r0, _08124B98 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x6 - bne _08124B9C - movs r0, 0xA - adds r1, r7, 0 - bl sub_8113550 - b _08124BA4 - .align 2, 0 -_08124B98: .4byte gPartyMenu -_08124B9C: - movs r0, 0x9 - adds r1, r7, 0 - bl sub_8113550 -_08124BA4: - adds r0, r7, 0 - bl Free - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8124B60 - - thumb_func_start sub_8124BB0 -sub_8124BB0: @ 8124BB0 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - movs r0, 0x4 - bl Alloc - adds r6, r0, 0 - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - strh r0, [r6] - strb r4, [r6, 0x2] - ldrb r0, [r6, 0x2] - cmp r0, 0x7 - beq _08124BDA - cmp r0, 0x8 - beq _08124BFC - movs r0, 0xFF - b _08124C00 -_08124BDA: - ldr r0, _08124BF8 @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x1C - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x1D] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - b _08124BFE - .align 2, 0 -_08124BF8: .4byte gSaveBlock1Ptr -_08124BFC: - ldr r0, _08124C18 @ =gMapHeader -_08124BFE: - ldrb r0, [r0, 0x14] -_08124C00: - strb r0, [r6, 0x3] - movs r0, 0x24 - adds r1, r6, 0 - bl sub_8113550 - adds r0, r6, 0 - bl Free - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08124C18: .4byte gMapHeader - thumb_func_end sub_8124BB0 - - thumb_func_start sub_8124C1C -sub_8124C1C: @ 8124C1C - push {r4,r5,lr} - adds r5, r0, 0 - movs r0, 0x8 - bl Alloc - adds r4, r0, 0 - ldrb r0, [r5] - strb r0, [r4] - ldrb r0, [r5, 0x1] - strb r0, [r4, 0x1] - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - adds r5, r0, 0 - adds r0, r4, 0 - bl Free - movs r0, 0x4 - bl Alloc - adds r4, r0, 0 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08124C88 @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - strh r0, [r4] - movs r0, 0x2 - strb r0, [r4, 0x2] - ldrb r0, [r5, 0x14] - strb r0, [r4, 0x3] - movs r0, 0x24 - adds r1, r4, 0 - bl sub_8113550 - adds r0, r4, 0 - bl Free - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08124C88: .4byte gPlayerParty - thumb_func_end sub_8124C1C - - thumb_func_start CB2_ShowPartyMenuForItemUse -CB2_ShowPartyMenuForItemUse: @ 8124C8C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r6, _08124CB4 @ =CB2_ReturnToBagMenu - ldr r0, _08124CB8 @ =gMain - ldr r1, _08124CBC @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08124CCC - movs r0, 0x1 - mov r8, r0 - bl GetPartyLayoutFromBattleType - lsls r0, 24 - lsrs r7, r0, 24 - b _08124CD2 - .align 2, 0 -_08124CB4: .4byte CB2_ReturnToBagMenu -_08124CB8: .4byte gMain -_08124CBC: .4byte 0x00000439 -_08124CC0: - ldr r0, _08124CC8 @ =gPartyMenu - strb r5, [r0, 0x9] - b _08124D16 - .align 2, 0 -_08124CC8: .4byte gPartyMenu -_08124CCC: - movs r1, 0 - mov r8, r1 - movs r7, 0 -_08124CD2: - ldr r4, _08124D30 @ =gSpecialVar_ItemId - ldrh r0, [r4] - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - bne _08124D44 - ldr r1, _08124D34 @ =gPartyMenu - movs r0, 0 - strb r0, [r1, 0x9] - movs r5, 0 -_08124CEA: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08124D38 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08124D0C - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08124CC0 -_08124D0C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08124CEA -_08124D16: - ldr r0, _08124D30 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _08124D28 - ldr r6, _08124D3C @ =sub_8124DB0 -_08124D28: - ldr r1, _08124D40 @ =Task_SetSacredAshCB - movs r0, 0x7F - b _08124D6A - .align 2, 0 -_08124D30: .4byte gSpecialVar_ItemId -_08124D34: .4byte gPartyMenu -_08124D38: .4byte gPlayerParty -_08124D3C: .4byte sub_8124DB0 -_08124D40: .4byte Task_SetSacredAshCB -_08124D44: - ldrh r0, [r4] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08124D5A - cmp r0, 0x5 - beq _08124D64 - movs r0, 0x5 - b _08124D68 -_08124D5A: - movs r0, 0x4 - ldr r6, _08124D60 @ =sub_8124DA0 - b _08124D68 - .align 2, 0 -_08124D60: .4byte sub_8124DA0 -_08124D64: - movs r0, 0x5 - ldr r6, _08124D88 @ =sub_8124DB0 -_08124D68: - ldr r1, _08124D8C @ =Task_HandleChooseMonInput -_08124D6A: - str r0, [sp] - str r1, [sp, 0x4] - str r6, [sp, 0x8] - mov r0, r8 - adds r1, r7, 0 - movs r2, 0x3 - movs r3, 0x1 - bl InitPartyMenu - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124D88: .4byte sub_8124DB0 -_08124D8C: .4byte Task_HandleChooseMonInput - thumb_func_end CB2_ShowPartyMenuForItemUse - - thumb_func_start CB2_ReturnToBagMenu -CB2_ReturnToBagMenu: @ 8124D90 - push {lr} - movs r0, 0xB - movs r1, 0x3 - movs r2, 0 - bl GoToBagMenu - pop {r0} - bx r0 - thumb_func_end CB2_ReturnToBagMenu - - thumb_func_start sub_8124DA0 -sub_8124DA0: @ 8124DA0 - push {lr} - movs r0, 0x5 - movs r1, 0 - movs r2, 0xFF - bl InitTMCase - pop {r0} - bx r0 - thumb_func_end sub_8124DA0 - - thumb_func_start sub_8124DB0 -sub_8124DB0: @ 8124DB0 - push {lr} - movs r0, 0x6 - movs r1, 0 - movs r2, 0xFF - bl InitBerryPouch - pop {r0} - bx r0 - thumb_func_end sub_8124DB0 - - thumb_func_start sub_8124DC0 -sub_8124DC0: @ 8124DC0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08124DD8 @ =sPartyMenuInternal - ldr r2, [r1] - ldr r1, _08124DDC @ =sub_8124DE0 - str r1, [r2, 0x4] - bl Task_ClosePartyMenu - pop {r0} - bx r0 - .align 2, 0 -_08124DD8: .4byte sPartyMenuInternal -_08124DDC: .4byte sub_8124DE0 - thumb_func_end sub_8124DC0 - - thumb_func_start sub_8124DE0 -sub_8124DE0: @ 8124DE0 - push {r4,lr} - ldr r4, _08124E0C @ =gSpecialVar_ItemId - ldrh r0, [r4] - bl CheckIfItemIsTMHMOrEvolutionStone - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08124E2C - bl sub_8126C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08124E18 - ldr r0, _08124E10 @ =gPartyMenu - ldrb r0, [r0, 0x9] - ldrh r1, [r4] - ldr r2, _08124E14 @ =ItemUseCB_EvolutionStone - bl sub_811C540 - b _08124E38 - .align 2, 0 -_08124E0C: .4byte gSpecialVar_ItemId -_08124E10: .4byte gPartyMenu -_08124E14: .4byte ItemUseCB_EvolutionStone -_08124E18: - ldr r2, _08124E28 @ =gPartyMenu - ldrb r0, [r2, 0x9] - ldrh r1, [r4] - ldr r2, [r2] - bl sub_811C5AC - b _08124E38 - .align 2, 0 -_08124E28: .4byte gPartyMenu -_08124E2C: - ldr r0, _08124E40 @ =gPartyMenu - ldrb r0, [r0, 0x9] - ldrh r1, [r4] - ldr r2, _08124E44 @ =sub_8124E48 - bl sub_811C540 -_08124E38: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08124E40: .4byte gPartyMenu -_08124E44: .4byte sub_8124E48 - thumb_func_end sub_8124DE0 - - thumb_func_start sub_8124E48 -sub_8124E48: @ 8124E48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r7, _08124EBC @ =gSpecialVar_ItemId - ldrh r0, [r7] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _08124EC8 - bl sub_811D178 - cmp r0, 0x1 - bne _08124EC8 - ldr r0, _08124EC0 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - adds r4, r0, 0 - muls r4, r6 - ldr r5, _08124EC4 @ =gPlayerParty - adds r4, r5 - ldrh r0, [r7] - bl ItemIdToBattleMoveId - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl GiveMoveToMon - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x4 - bl AdjustFriendship - ldrh r1, [r7] - movs r0, 0xA9 - lsls r0, 1 - cmp r1, r0 - bhi _08124EB0 - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveBagItem -_08124EB0: - mov r1, r8 - ldr r0, [r1] - bl SetMainCallback2 - b _08124EE6 - .align 2, 0 -_08124EBC: .4byte gSpecialVar_ItemId -_08124EC0: .4byte gPartyMenu -_08124EC4: .4byte gPlayerParty -_08124EC8: - ldr r2, _08124EF4 @ =gPartyMenu - ldrb r0, [r2, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r3, [r2, 0x9] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08124EF8 @ =Task_SetSacredAshCB - str r1, [sp, 0x4] - ldr r1, [r2] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r2, 0 - bl InitPartyMenu -_08124EE6: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124EF4: .4byte gPartyMenu -_08124EF8: .4byte Task_SetSacredAshCB - thumb_func_end sub_8124E48 - - thumb_func_start sub_8124EFC -sub_8124EFC: @ 8124EFC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - bl sub_811D178 - cmp r0, 0x1 - bne _08124F94 - ldr r0, _08124F88 @ =gPartyMenu - mov r8, r0 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _08124F8C @ =gPlayerParty - adds r5, r0 - bl GetMoveSlotToReplace - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r1, r4, 0 - adds r1, 0xD - adds r0, r5, 0 - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl RemoveMonPPBonus - ldr r7, _08124F90 @ =gSpecialVar_ItemId - ldrh r0, [r7] - bl ItemIdToBattleMoveId - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonMoveSlot - adds r0, r5, 0 - movs r1, 0x4 - bl AdjustFriendship - ldrh r2, [r7] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r6, 0 - bl ItemUse_SetQuestLogEvent - ldrh r1, [r7] - movs r0, 0xA9 - lsls r0, 1 - cmp r1, r0 - bhi _08124F7C - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveBagItem -_08124F7C: - mov r1, r8 - ldr r0, [r1] - bl SetMainCallback2 - b _08124FB2 - .align 2, 0 -_08124F88: .4byte gPartyMenu -_08124F8C: .4byte gPlayerParty -_08124F90: .4byte gSpecialVar_ItemId -_08124F94: - ldr r4, _08124FC0 @ =gPartyMenu - ldrb r0, [r4, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r4, 0xB] - ldrb r3, [r4, 0x9] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08124FC4 @ =Task_SetSacredAshCB - str r1, [sp, 0x4] - ldr r1, [r4] - str r1, [sp, 0x8] - movs r1, 0xFF - bl InitPartyMenu -_08124FB2: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08124FC0: .4byte gPartyMenu -_08124FC4: .4byte Task_SetSacredAshCB - thumb_func_end sub_8124EFC - - thumb_func_start Task_SetSacredAshCB -Task_SetSacredAshCB: @ 8124FC8 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08125000 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08124FFA - ldr r0, _08125004 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _08124FEE - ldr r0, _08125008 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _0812500C @ =CB2_SetUpExitToBattleScreen - str r0, [r1, 0x4] -_08124FEE: - ldr r0, _08125010 @ =gItemUseCB - ldr r1, _08125014 @ =Task_ClosePartyMenuAfterText - ldr r2, [r0] - adds r0, r3, 0 - bl _call_via_r2 -_08124FFA: - pop {r0} - bx r0 - .align 2, 0 -_08125000: .4byte gPaletteFade -_08125004: .4byte gPartyMenu -_08125008: .4byte sPartyMenuInternal -_0812500C: .4byte CB2_SetUpExitToBattleScreen -_08125010: .4byte gItemUseCB -_08125014: .4byte Task_ClosePartyMenuAfterText - thumb_func_end Task_SetSacredAshCB - - thumb_func_start IsHPRecoveryItem -IsHPRecoveryItem: @ 8125018 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _08125034 - ldr r0, _0812502C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08125030 @ =0x00003108 - adds r0, r1 - b _0812503E - .align 2, 0 -_0812502C: .4byte gSaveBlock1Ptr -_08125030: .4byte 0x00003108 -_08125034: - ldr r1, _0812504C @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_0812503E: - ldrb r1, [r0, 0x4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08125050 - movs r0, 0 - b _08125052 - .align 2, 0 -_0812504C: .4byte gItemEffectTable -_08125050: - movs r0, 0x1 -_08125052: - pop {r1} - bx r1 - thumb_func_end IsHPRecoveryItem - - thumb_func_start GetMedicineItemEffectMessage -GetMedicineItemEffectMessage: @ 8125058 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x3 - cmp r0, 0x12 - bls _0812506E - b _08125204 -_0812506E: - lsls r0, 2 - ldr r1, _08125078 @ =_0812507C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08125078: .4byte _0812507C - .align 2, 0 -_0812507C: - .4byte _081250C8 - .4byte _081250DC - .4byte _081250F0 - .4byte _08125104 - .4byte _08125118 - .4byte _0812512C - .4byte _08125140 - .4byte _08125204 - .4byte _08125154 - .4byte _08125178 - .4byte _08125168 - .4byte _081251A8 - .4byte _081251B8 - .4byte _08125198 - .4byte _08125188 - .4byte _08125204 - .4byte _081251DC - .4byte _081251DC - .4byte _081251F0 -_081250C8: - ldr r0, _081250D4 @ =gStringVar4 - ldr r1, _081250D8 @ =gText_PkmnCuredOfPoison - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081250D4: .4byte gStringVar4 -_081250D8: .4byte gText_PkmnCuredOfPoison -_081250DC: - ldr r0, _081250E8 @ =gStringVar4 - ldr r1, _081250EC @ =gText_PkmnWokeUp2 - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081250E8: .4byte gStringVar4 -_081250EC: .4byte gText_PkmnWokeUp2 -_081250F0: - ldr r0, _081250FC @ =gStringVar4 - ldr r1, _08125100 @ =gText_PkmnBurnHealed - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081250FC: .4byte gStringVar4 -_08125100: .4byte gText_PkmnBurnHealed -_08125104: - ldr r0, _08125110 @ =gStringVar4 - ldr r1, _08125114 @ =gText_PkmnThawedOut - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_08125110: .4byte gStringVar4 -_08125114: .4byte gText_PkmnThawedOut -_08125118: - ldr r0, _08125124 @ =gStringVar4 - ldr r1, _08125128 @ =gText_PkmnCuredOfParalysis - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_08125124: .4byte gStringVar4 -_08125128: .4byte gText_PkmnCuredOfParalysis -_0812512C: - ldr r0, _08125138 @ =gStringVar4 - ldr r1, _0812513C @ =gText_PkmnSnappedOutOfConfusion - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_08125138: .4byte gStringVar4 -_0812513C: .4byte gText_PkmnSnappedOutOfConfusion -_08125140: - ldr r0, _0812514C @ =gStringVar4 - ldr r1, _08125150 @ =gText_PkmnGotOverInfatuation - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_0812514C: .4byte gStringVar4 -_08125150: .4byte gText_PkmnGotOverInfatuation -_08125154: - ldr r0, _08125160 @ =gStringVar4 - ldr r1, _08125164 @ =gText_PkmnBecameHealthy - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_08125160: .4byte gStringVar4 -_08125164: .4byte gText_PkmnBecameHealthy -_08125168: - ldr r0, _08125170 @ =gStringVar2 - ldr r1, _08125174 @ =gText_HP3 - b _081251BC - .align 2, 0 -_08125170: .4byte gStringVar2 -_08125174: .4byte gText_HP3 -_08125178: - ldr r0, _08125180 @ =gStringVar2 - ldr r1, _08125184 @ =gText_Attack3 - b _081251BC - .align 2, 0 -_08125180: .4byte gStringVar2 -_08125184: .4byte gText_Attack3 -_08125188: - ldr r0, _08125190 @ =gStringVar2 - ldr r1, _08125194 @ =gText_Defense3 - b _081251BC - .align 2, 0 -_08125190: .4byte gStringVar2 -_08125194: .4byte gText_Defense3 -_08125198: - ldr r0, _081251A0 @ =gStringVar2 - ldr r1, _081251A4 @ =gText_Speed2 - b _081251BC - .align 2, 0 -_081251A0: .4byte gStringVar2 -_081251A4: .4byte gText_Speed2 -_081251A8: - ldr r0, _081251B0 @ =gStringVar2 - ldr r1, _081251B4 @ =gText_SpAtk3 - b _081251BC - .align 2, 0 -_081251B0: .4byte gStringVar2 -_081251B4: .4byte gText_SpAtk3 -_081251B8: - ldr r0, _081251CC @ =gStringVar2 - ldr r1, _081251D0 @ =gText_SpDef3 -_081251BC: - bl StringCopy - ldr r0, _081251D4 @ =gStringVar4 - ldr r1, _081251D8 @ =gText_PkmnBaseVar2StatIncreased - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081251CC: .4byte gStringVar2 -_081251D0: .4byte gText_SpDef3 -_081251D4: .4byte gStringVar4 -_081251D8: .4byte gText_PkmnBaseVar2StatIncreased -_081251DC: - ldr r0, _081251E8 @ =gStringVar4 - ldr r1, _081251EC @ =gText_MovesPPIncreased - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081251E8: .4byte gStringVar4 -_081251EC: .4byte gText_MovesPPIncreased -_081251F0: - ldr r0, _081251FC @ =gStringVar4 - ldr r1, _08125200 @ =gText_PPWasRestored - bl StringExpandPlaceholders - b _0812520C - .align 2, 0 -_081251FC: .4byte gStringVar4 -_08125200: .4byte gText_PPWasRestored -_08125204: - ldr r0, _08125210 @ =gStringVar4 - ldr r1, _08125214 @ =gText_WontHaveEffect - bl StringExpandPlaceholders -_0812520C: - pop {r0} - bx r0 - .align 2, 0 -_08125210: .4byte gStringVar4 -_08125214: .4byte gText_WontHaveEffect - thumb_func_end GetMedicineItemEffectMessage - - thumb_func_start NotUsingHPEVItemOnShedinja -NotUsingHPEVItemOnShedinja: @ 8125218 - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bne _08125244 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _08125240 @ =0x0000012f - cmp r0, r1 - bne _08125244 - movs r0, 0 - b _08125246 - .align 2, 0 -_08125240: .4byte 0x0000012f -_08125244: - movs r0, 0x1 -_08125246: - pop {r4} - pop {r1} - bx r1 - thumb_func_end NotUsingHPEVItemOnShedinja - - thumb_func_start IsItemFlute -IsItemFlute: @ 812524C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x27 - beq _0812525E - cmp r0, 0x29 - beq _0812525E - cmp r0, 0x28 - bne _08125262 -_0812525E: - movs r0, 0x1 - b _08125264 -_08125262: - movs r0, 0 -_08125264: - pop {r1} - bx r1 - thumb_func_end IsItemFlute - - thumb_func_start ExecuteTableBasedItemEffect_ -ExecuteTableBasedItemEffect_: @ 8125268 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _08125294 @ =gMain - ldr r1, _08125298 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081252A0 - movs r0, 0x64 - muls r0, r3 - ldr r1, _0812529C @ =gPlayerParty - adds r0, r1 - adds r1, r5, 0 - adds r2, r3, 0 - b _081252BA - .align 2, 0 -_08125294: .4byte gMain -_08125298: .4byte 0x00000439 -_0812529C: .4byte gPlayerParty -_081252A0: - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r0, _081252CC @ =gPlayerParty - adds r4, r0 - adds r0, r3, 0 - bl GetPartyIdFromBattleSlot - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 -_081252BA: - adds r3, r6, 0 - bl ExecuteTableBasedItemEffect - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081252CC: .4byte gPlayerParty - thumb_func_end ExecuteTableBasedItemEffect_ - - thumb_func_start sub_81252D0 -sub_81252D0: @ 81252D0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08125300 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08125304 @ =gPlayerParty - adds r5, r1, r0 - ldr r0, _08125308 @ =gSpecialVar_ItemId - ldrh r6, [r0] - adds r0, r5, 0 - adds r1, r6, 0 - bl NotUsingHPEVItemOnShedinja - lsls r0, 24 - cmp r0, 0 - bne _0812530C - movs r4, 0x1 - b _08125342 - .align 2, 0 -_08125300: .4byte gPartyMenu -_08125304: .4byte gPlayerParty -_08125308: .4byte gSpecialVar_ItemId -_0812530C: - adds r0, r6, 0 - bl IsHPRecoveryItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08125330 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData -_08125330: - ldr r0, _08125370 @ =gPartyMenu - ldrb r2, [r0, 0x9] - adds r0, r5, 0 - adds r1, r6, 0 - movs r3, 0 - bl PokemonUseItemEffects2 - lsls r0, 24 - lsrs r4, r0, 24 -_08125342: - movs r0, 0x5 - bl PlaySE - cmp r4, 0 - beq _08125380 - ldr r1, _08125374 @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - ldr r0, _08125378 @ =gText_WontHaveEffect - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _0812537C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - mov r1, r8 - str r1, [r0] - b _08125398 - .align 2, 0 -_08125370: .4byte gPartyMenu -_08125374: .4byte gPartyMenuUseExitCallback -_08125378: .4byte gText_WontHaveEffect -_0812537C: .4byte gTasks -_08125380: - ldr r3, _081253A4 @ =0x0000ffff - movs r0, 0x4 - adds r1, r5, 0 - adds r2, r6, 0 - bl ItemUse_SetQuestLogEvent - adds r0, r7, 0 - bl sub_8124DC0 - ldr r1, _081253A8 @ =gItemUseCB - ldr r0, _081253AC @ =ItemUseCB_Medicine - str r0, [r1] -_08125398: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081253A4: .4byte 0x0000ffff -_081253A8: .4byte gItemUseCB -_081253AC: .4byte ItemUseCB_Medicine - thumb_func_end sub_81252D0 - - thumb_func_start ItemUseCB_Medicine -ItemUseCB_Medicine: @ 81253B0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - str r1, [sp, 0x4] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0 - mov r10, r0 - ldr r0, _08125438 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0812543C @ =gPlayerParty - adds r5, r1, r0 - ldr r0, _08125440 @ =gSpecialVar_ItemId - ldrh r6, [r0] - adds r0, r5, 0 - adds r1, r6, 0 - bl NotUsingHPEVItemOnShedinja - lsls r0, 24 - cmp r0, 0 - beq _08125428 - adds r0, r6, 0 - bl IsHPRecoveryItem - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bne _08125416 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - cmp r10, r0 - bne _08125416 - movs r1, 0 - mov r8, r1 -_08125416: - ldr r4, _08125438 @ =gPartyMenu - ldrb r0, [r4, 0x9] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - cmp r0, 0 - beq _0812544C -_08125428: - ldr r1, _08125444 @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldr r0, _08125448 @ =gText_WontHaveEffect - b _0812551C - .align 2, 0 -_08125438: .4byte gPartyMenu -_0812543C: .4byte gPlayerParty -_08125440: .4byte gSpecialVar_ItemId -_08125444: .4byte gPartyMenuUseExitCallback -_08125448: .4byte gText_WontHaveEffect -_0812544C: - ldr r1, _08125474 @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - adds r0, r6, 0 - bl IsItemFlute - lsls r0, 24 - cmp r0, 0 - bne _08125478 - movs r0, 0x1 - bl PlaySE - ldrb r0, [r4, 0xB] - cmp r0, 0xE - beq _0812547E - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem - b _0812547E - .align 2, 0 -_08125474: .4byte gPartyMenuUseExitCallback -_08125478: - movs r0, 0x6E - bl PlaySE -_0812547E: - ldr r4, _081254FC @ =sPartyMenuBoxes - ldr r7, _08125500 @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r7, r0] - lsls r0, 4 - ldr r1, [r4] - adds r1, r0 - adds r0, r5, 0 - bl SetPartyMonAilmentGfx - ldr r2, _08125504 @ =gSprites - movs r0, 0x9 - ldrsb r0, [r7, r0] - ldr r1, [r4] - lsls r0, 4 - adds r3, r0, r1 - ldrb r1, [r3, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _081254BC - adds r0, r5, 0 - adds r1, r3, 0 - movs r2, 0x1 - bl DisplayPartyPokemonLevelCheck -_081254BC: - mov r2, r8 - cmp r2, 0x1 - bne _0812550C - mov r0, r10 - cmp r0, 0 - bne _081254D0 - ldrb r0, [r7, 0x9] - movs r1, 0x1 - bl AnimatePartySlot -_081254D0: - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r10 - subs r3, r1 - lsls r3, 16 - asrs r3, 16 - ldrb r1, [r7, 0x9] - ldr r0, _08125508 @ =Task_DisplayHPRestoredMessage - str r0, [sp] - mov r0, r9 - movs r2, 0x1 - bl PartyMenuModifyHP - mov r0, r9 - movs r1, 0 - mov r2, r10 - bl ResetHPTaskData - b _08125538 - .align 2, 0 -_081254FC: .4byte sPartyMenuBoxes -_08125500: .4byte gPartyMenu -_08125504: .4byte gSprites -_08125508: .4byte Task_DisplayHPRestoredMessage -_0812550C: - ldr r1, _08125548 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - adds r0, r6, 0 - bl GetMedicineItemEffectMessage - ldr r0, _0812554C @ =gStringVar4 -_0812551C: - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08125550 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldr r1, [sp, 0x4] - str r1, [r0] -_08125538: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08125548: .4byte gStringVar1 -_0812554C: .4byte gStringVar4 -_08125550: .4byte gTasks - thumb_func_end ItemUseCB_Medicine - - thumb_func_start Task_DisplayHPRestoredMessage -Task_DisplayHPRestoredMessage: @ 8125554 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _081255A0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081255A4 @ =gPlayerParty - adds r0, r1 - ldr r1, _081255A8 @ =gStringVar1 - bl GetMonNickname - ldr r4, _081255AC @ =gStringVar4 - ldr r1, _081255B0 @ =gText_PkmnHPRestoredByVar2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - bl HandleBattleLowHpMusicChange - ldr r1, _081255B4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _081255B8 @ =Task_ClosePartyMenuAfterText - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081255A0: .4byte gPartyMenu -_081255A4: .4byte gPlayerParty -_081255A8: .4byte gStringVar1 -_081255AC: .4byte gStringVar4 -_081255B0: .4byte gText_PkmnHPRestoredByVar2 -_081255B4: .4byte gTasks -_081255B8: .4byte Task_ClosePartyMenuAfterText - thumb_func_end Task_DisplayHPRestoredMessage - - thumb_func_start Task_ClosePartyMenuAfterText -Task_ClosePartyMenuAfterText: @ 81255BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081255E2 - ldr r0, _081255E8 @ =gPartyMenuUseExitCallback - ldrb r1, [r0] - cmp r1, 0 - bne _081255DC - ldr r0, _081255EC @ =sPartyMenuInternal - ldr r0, [r0] - str r1, [r0, 0x4] -_081255DC: - adds r0, r4, 0 - bl Task_ClosePartyMenu -_081255E2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081255E8: .4byte gPartyMenuUseExitCallback -_081255EC: .4byte sPartyMenuInternal - thumb_func_end Task_ClosePartyMenuAfterText - - thumb_func_start ShowMoveSelectWindow -ShowMoveSelectWindow: @ 81255F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - mov r10, r0 - movs r1, 0x2 - mov r8, r1 - movs r0, 0x3 - bl DisplaySelectionWindow - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r6, 0 - movs r0, 0x64 - adds r2, r4, 0 - muls r2, r0 - str r2, [sp, 0xC] -_08125620: - ldr r0, _081256B8 @ =gPlayerParty - adds r1, r6, 0 - adds r1, 0xD - ldr r2, [sp, 0xC] - adds r0, r2, r0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r0, r8 - movs r1, 0 - bl GetFontAttribute - adds r4, r0, 0 - mov r0, r8 - movs r1, 0x2 - bl GetFontAttribute - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xD - adds r2, r5, 0 - muls r2, r0 - ldr r0, _081256BC @ =gMoveNames - adds r2, r0 - lsls r0, r6, 4 - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r7, 0 - str r7, [sp, 0x8] - mov r0, r9 - mov r1, r8 - adds r3, r4, 0 - bl AddTextPrinterParameterized - cmp r5, 0 - beq _08125680 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_08125680: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _08125620 - movs r0, 0x10 - str r0, [sp] - mov r0, r10 - str r0, [sp, 0x4] - str r7, [sp, 0x8] - mov r0, r9 - mov r1, r8 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081256B8: .4byte gPlayerParty -_081256BC: .4byte gMoveNames - thumb_func_end ShowMoveSelectWindow - - thumb_func_start Task_HandleWhichMoveInput -Task_HandleWhichMoveInput: @ 81256C0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl Menu_ProcessInput - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _081256F2 - adds r0, 0x1 - cmp r1, r0 - bne _081256EC - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl ReturnToUseOnWhichMon - b _081256F2 -_081256EC: - adds r0, r5, 0 - bl SetSelectedMoveForPPItem -_081256F2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end Task_HandleWhichMoveInput - - thumb_func_start ItemUseCB_PPRecovery -ItemUseCB_PPRecovery: @ 81256F8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08125710 @ =gSpecialVar_ItemId - ldrh r0, [r0] - cmp r0, 0xAF - bne _0812571C - ldr r0, _08125714 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08125718 @ =0x00003108 - adds r0, r1 - b _08125726 - .align 2, 0 -_08125710: .4byte gSpecialVar_ItemId -_08125714: .4byte gSaveBlock1Ptr -_08125718: .4byte 0x00003108 -_0812571C: - ldr r1, _0812574C @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_08125726: - ldrb r1, [r0, 0x4] - movs r0, 0x10 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0812575C - ldr r0, _08125750 @ =gPartyMenu - strh r1, [r0, 0xE] - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _08125754 - adds r0, r4, 0 - bl TryUsePPItem - b _0812577E - .align 2, 0 -_0812574C: .4byte gItemEffectTable -_08125750: .4byte gPartyMenu -_08125754: - adds r0, r4, 0 - bl sub_812580C - b _0812577E -_0812575C: - movs r0, 0x5 - bl PlaySE - movs r0, 0x17 - bl DisplayPartyMenuStdMessage - ldr r0, _08125784 @ =gPartyMenu - ldrb r0, [r0, 0x9] - bl ShowMoveSelectWindow - ldr r1, _08125788 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812578C @ =Task_HandleWhichMoveInput - str r1, [r0] -_0812577E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125784: .4byte gPartyMenu -_08125788: .4byte gTasks -_0812578C: .4byte Task_HandleWhichMoveInput - thumb_func_end ItemUseCB_PPRecovery - - thumb_func_start SetSelectedMoveForPPItem -SetSelectedMoveForPPItem: @ 8125790 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081257C0 @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xC - bl PartyMenuRemoveWindow - bl Menu_GetCursorPos - ldr r1, _081257C4 @ =gPartyMenu - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - ldrb r1, [r1, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _081257C8 - adds r0, r4, 0 - bl TryUsePPItem - b _081257CE - .align 2, 0 -_081257C0: .4byte sPartyMenuInternal -_081257C4: .4byte gPartyMenu -_081257C8: - adds r0, r4, 0 - bl sub_812580C -_081257CE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SetSelectedMoveForPPItem - - thumb_func_start ReturnToUseOnWhichMon -ReturnToUseOnWhichMon: @ 81257D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08125800 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _08125804 @ =Task_HandleChooseMonInput - str r0, [r1] - ldr r0, _08125808 @ =sPartyMenuInternal - ldr r0, [r0] - movs r1, 0 - str r1, [r0, 0x4] - adds r0, 0xC - bl PartyMenuRemoveWindow - movs r0, 0x5 - bl DisplayPartyMenuStdMessage - pop {r0} - bx r0 - .align 2, 0 -_08125800: .4byte gTasks -_08125804: .4byte Task_HandleChooseMonInput -_08125808: .4byte sPartyMenuInternal - thumb_func_end ReturnToUseOnWhichMon - - thumb_func_start sub_812580C -sub_812580C: @ 812580C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r3, _08125860 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r3, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08125864 @ =gPlayerParty - adds r0, r1 - ldr r1, _08125868 @ =gSpecialVar_ItemId - ldrh r1, [r1] - ldrb r2, [r3, 0x9] - ldrb r3, [r3, 0xE] - bl PokemonUseItemEffects2 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - cmp r4, 0 - beq _0812587C - ldr r1, _0812586C @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - ldr r0, _08125870 @ =gText_WontHaveEffect - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08125874 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125878 @ =Task_ClosePartyMenuAfterText - str r1, [r0] - b _08125888 - .align 2, 0 -_08125860: .4byte gPartyMenu -_08125864: .4byte gPlayerParty -_08125868: .4byte gSpecialVar_ItemId -_0812586C: .4byte gPartyMenuUseExitCallback -_08125870: .4byte gText_WontHaveEffect -_08125874: .4byte gTasks -_08125878: .4byte Task_ClosePartyMenuAfterText -_0812587C: - adds r0, r5, 0 - bl sub_8124DC0 - ldr r1, _08125890 @ =gItemUseCB - ldr r0, _08125894 @ =sub_8125898 - str r0, [r1] -_08125888: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08125890: .4byte gItemUseCB -_08125894: .4byte sub_8125898 - thumb_func_end sub_812580C - - thumb_func_start sub_8125898 -sub_8125898: @ 8125898 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r5, _08125930 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r5, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, _08125934 @ =gPlayerParty - adds r4, r0 - ldrb r0, [r5, 0x9] - ldr r6, _08125938 @ =gSpecialVar_ItemId - ldrh r1, [r6] - ldrb r2, [r5, 0xE] - bl ExecuteTableBasedItemEffect_ - ldr r1, _0812593C @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - ldrh r2, [r6] - ldr r3, _08125940 @ =0x0000ffff - movs r0, 0x4 - adds r1, r4, 0 - bl ItemUse_SetQuestLogEvent - movs r0, 0x1 - bl PlaySE - ldrh r0, [r6] - movs r1, 0x1 - bl RemoveBagItem - movs r2, 0xE - ldrsh r1, [r5, r2] - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08125944 @ =gStringVar1 - movs r1, 0xD - muls r1, r0 - ldr r0, _08125948 @ =gMoveNames - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - ldrh r0, [r6] - bl GetMedicineItemEffectMessage - ldr r0, _0812594C @ =gStringVar4 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08125950 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125954 @ =Task_ClosePartyMenuAfterText - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08125930: .4byte gPartyMenu -_08125934: .4byte gPlayerParty -_08125938: .4byte gSpecialVar_ItemId -_0812593C: .4byte gPartyMenuUseExitCallback -_08125940: .4byte 0x0000ffff -_08125944: .4byte gStringVar1 -_08125948: .4byte gMoveNames -_0812594C: .4byte gStringVar4 -_08125950: .4byte gTasks -_08125954: .4byte Task_ClosePartyMenuAfterText - thumb_func_end sub_8125898 - - thumb_func_start TryUsePPItem -TryUsePPItem: @ 8125958 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r7, _08125990 @ =gPartyMenu + 14 - ldr r0, _08125994 @ =gSpecialVar_ItemId - ldrh r5, [r0] - movs r0, 0xE - negs r0, r0 - adds r0, r7 - mov r8, r0 - ldrb r0, [r0, 0x9] - ldrb r2, [r7] - adds r1, r5, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - cmp r0, 0 - beq _081259A0 - ldr r0, _08125998 @ =gPartyMenuUseExitCallback - strb r4, [r0] - movs r0, 0x5 - bl PlaySE - ldr r0, _0812599C @ =gText_WontHaveEffect - b _081259F6 - .align 2, 0 -_08125990: .4byte gPartyMenu + 14 -_08125994: .4byte gSpecialVar_ItemId -_08125998: .4byte gPartyMenuUseExitCallback -_0812599C: .4byte gText_WontHaveEffect -_081259A0: - ldr r1, _08125A1C @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - mov r0, r8 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, _08125A20 @ =gPlayerParty - adds r4, r0 - ldr r3, _08125A24 @ =0x0000ffff - movs r0, 0x4 - adds r1, r4, 0 - adds r2, r5, 0 - bl ItemUse_SetQuestLogEvent - movs r0, 0x1 - bl PlaySE - adds r0, r5, 0 - movs r1, 0x1 - bl RemoveBagItem - movs r0, 0 - ldrsh r1, [r7, r0] - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _08125A28 @ =gStringVar1 - movs r1, 0xD - muls r1, r4 - ldr r2, _08125A2C @ =gMoveNames - adds r1, r2 - bl StringCopy - adds r0, r5, 0 - bl GetMedicineItemEffectMessage - ldr r0, _08125A30 @ =gStringVar4 -_081259F6: - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08125A34 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125A38 @ =Task_ClosePartyMenuAfterText - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08125A1C: .4byte gPartyMenuUseExitCallback -_08125A20: .4byte gPlayerParty -_08125A24: .4byte 0x0000ffff -_08125A28: .4byte gStringVar1 -_08125A2C: .4byte gMoveNames -_08125A30: .4byte gStringVar4 -_08125A34: .4byte gTasks -_08125A38: .4byte Task_ClosePartyMenuAfterText - thumb_func_end TryUsePPItem - - thumb_func_start ItemUseCB_PPUp -ItemUseCB_PPUp: @ 8125A3C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0x18 - bl DisplayPartyMenuStdMessage - ldr r0, _08125A6C @ =gPartyMenu - ldrb r0, [r0, 0x9] - bl ShowMoveSelectWindow - ldr r1, _08125A70 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125A74 @ =Task_HandleWhichMoveInput - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125A6C: .4byte gPartyMenu -_08125A70: .4byte gTasks -_08125A74: .4byte Task_HandleWhichMoveInput - thumb_func_end ItemUseCB_PPUp - - thumb_func_start ItemIdToBattleMoveId -ItemIdToBattleMoveId: @ 8125A78 - lsls r0, 16 - ldr r1, _08125A88 @ =0xfedf0000 - adds r0, r1 - ldr r1, _08125A8C @ =sTMHMMoves - lsrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_08125A88: .4byte 0xfedf0000 -_08125A8C: .4byte sTMHMMoves - thumb_func_end ItemIdToBattleMoveId - - thumb_func_start IsMoveHm -IsMoveHm: @ 8125A90 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, _08125AAC @ =sTMHMMoves -_08125A9A: - adds r0, r1, 0 - adds r0, 0x32 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _08125AB0 - movs r0, 0x1 - b _08125ABC - .align 2, 0 -_08125AAC: .4byte sTMHMMoves -_08125AB0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _08125A9A - movs r0, 0 -_08125ABC: - pop {r1} - bx r1 - thumb_func_end IsMoveHm - - thumb_func_start MonKnowsMove -MonKnowsMove: @ 8125AC0 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 -_08125ACA: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - cmp r0, r5 - bne _08125ADC - movs r0, 0x1 - b _08125AE8 -_08125ADC: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08125ACA - movs r0, 0 -_08125AE8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MonKnowsMove - - thumb_func_start DisplayLearnMoveMessage -DisplayLearnMoveMessage: @ 8125AF0 - push {r4,lr} - adds r1, r0, 0 - ldr r4, _08125B10 @ =gStringVar4 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125B10: .4byte gStringVar4 - thumb_func_end DisplayLearnMoveMessage - - thumb_func_start DisplayLearnMoveMessageAndClose -DisplayLearnMoveMessageAndClose: @ 8125B14 - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - bl DisplayLearnMoveMessage - ldr r1, _08125B38 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125B3C @ =Task_ClosePartyMenuAfterText - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125B38: .4byte gTasks -_08125B3C: .4byte Task_ClosePartyMenuAfterText - thumb_func_end DisplayLearnMoveMessageAndClose - - thumb_func_start ItemUseCB_TMHM -ItemUseCB_TMHM: @ 8125B40 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r7, _08125BD0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r7, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08125BD4 @ =gPlayerParty - adds r4, r1, r0 - movs r0, 0xE - adds r0, r7 - mov r8, r0 - ldr r0, _08125BD8 @ =gSpecialVar_ItemId - ldrh r5, [r0] - ldr r1, _08125BDC @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - adds r0, r5, 0 - bl ItemIdToBattleMoveId - strh r0, [r7, 0xE] - ldr r0, _08125BE0 @ =gStringVar2 - movs r1, 0xE - ldrsh r2, [r7, r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08125BE4 @ =gMoveNames - adds r1, r2 - bl StringCopy - movs r0, 0 - mov r1, r8 - strh r0, [r1, 0x2] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl CanMonLearnTMTutor - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08125BF4 - cmp r0, 0x2 - beq _08125BFC - ldrh r1, [r7, 0xE] - adds r0, r4, 0 - bl GiveMoveToMon - lsls r0, 16 - lsrs r0, 16 - ldr r3, _08125BE8 @ =0x0000ffff - cmp r0, r3 - beq _08125C0C - movs r0, 0x4 - adds r1, r4, 0 - adds r2, r5, 0 - bl ItemUse_SetQuestLogEvent - adds r0, r6, 0 - bl sub_8124DC0 - ldr r1, _08125BEC @ =gItemUseCB - ldr r0, _08125BF0 @ =Task_LearnedMove_ - str r0, [r1] - b _08125C20 - .align 2, 0 -_08125BD0: .4byte gPartyMenu -_08125BD4: .4byte gPlayerParty -_08125BD8: .4byte gSpecialVar_ItemId -_08125BDC: .4byte gStringVar1 -_08125BE0: .4byte gStringVar2 -_08125BE4: .4byte gMoveNames -_08125BE8: .4byte 0x0000ffff -_08125BEC: .4byte gItemUseCB -_08125BF0: .4byte Task_LearnedMove_ -_08125BF4: - ldr r1, _08125BF8 @ =gText_PkmnCantLearnMove - b _08125BFE - .align 2, 0 -_08125BF8: .4byte gText_PkmnCantLearnMove -_08125BFC: - ldr r1, _08125C08 @ =gText_PkmnAlreadyKnows -_08125BFE: - adds r0, r6, 0 - bl DisplayLearnMoveMessageAndClose - b _08125C20 - .align 2, 0 -_08125C08: .4byte gText_PkmnAlreadyKnows -_08125C0C: - ldr r0, _08125C2C @ =gText_PkmnNeedsToReplaceMove - bl DisplayLearnMoveMessage - ldr r1, _08125C30 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125C34 @ =Task_ReplaceMoveYesNo - str r1, [r0] -_08125C20: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08125C2C: .4byte gText_PkmnNeedsToReplaceMove -_08125C30: .4byte gTasks -_08125C34: .4byte Task_ReplaceMoveYesNo - thumb_func_end ItemUseCB_TMHM - - thumb_func_start Task_LearnedMove_ -Task_LearnedMove_: @ 8125C38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl Task_LearnedMove - pop {r0} - bx r0 - thumb_func_end Task_LearnedMove_ - - thumb_func_start Task_LearnedMove -Task_LearnedMove: @ 8125C48 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _08125CCC @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r2, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08125CD0 @ =gPlayerParty - adds r5, r1, r0 - adds r6, r2, 0 - adds r6, 0xE - ldr r0, _08125CD4 @ =gSpecialVar_ItemId - ldrh r4, [r0] - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08125C84 - adds r0, r5, 0 - movs r1, 0x4 - bl AdjustFriendship - movs r0, 0xA9 - lsls r0, 1 - cmp r4, r0 - bhi _08125C84 - adds r0, r4, 0 - movs r1, 0x1 - bl RemoveBagItem -_08125C84: - ldr r1, _08125CD8 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r0, _08125CDC @ =gStringVar2 - movs r1, 0 - ldrsh r2, [r6, r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08125CE0 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08125CE4 @ =gStringVar4 - ldr r1, _08125CE8 @ =gText_PkmnLearnedMove3 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08125CEC @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125CF0 @ =Task_DoLearnedMoveFanfareAfterText - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08125CCC: .4byte gPartyMenu -_08125CD0: .4byte gPlayerParty -_08125CD4: .4byte gSpecialVar_ItemId -_08125CD8: .4byte gStringVar1 -_08125CDC: .4byte gStringVar2 -_08125CE0: .4byte gMoveNames -_08125CE4: .4byte gStringVar4 -_08125CE8: .4byte gText_PkmnLearnedMove3 -_08125CEC: .4byte gTasks -_08125CF0: .4byte Task_DoLearnedMoveFanfareAfterText - thumb_func_end Task_LearnedMove - - thumb_func_start Task_DoLearnedMoveFanfareAfterText -Task_DoLearnedMoveFanfareAfterText: @ 8125CF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08125D1A - ldr r0, _08125D20 @ =0x00000101 - bl PlayFanfare - ldr r1, _08125D24 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125D28 @ =Task_LearnNextMoveOrClosePartyMenu - str r1, [r0] -_08125D1A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125D20: .4byte 0x00000101 -_08125D24: .4byte gTasks -_08125D28: .4byte Task_LearnNextMoveOrClosePartyMenu - thumb_func_end Task_DoLearnedMoveFanfareAfterText - - thumb_func_start Task_LearnNextMoveOrClosePartyMenu -Task_LearnNextMoveOrClosePartyMenu: @ 8125D2C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08125D7E - ldr r0, _08125D68 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08125D54 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08125D7E -_08125D54: - ldr r0, _08125D6C @ =gPartyMenu - movs r1, 0x10 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _08125D70 - adds r0, r4, 0 - bl Task_TryLearningNextMove - b _08125D7E - .align 2, 0 -_08125D68: .4byte gMain -_08125D6C: .4byte gPartyMenu -_08125D70: - cmp r0, 0x2 - bne _08125D78 - ldr r0, _08125D84 @ =gSpecialVar_Result - strh r2, [r0] -_08125D78: - adds r0, r5, 0 - bl Task_ClosePartyMenu -_08125D7E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08125D84: .4byte gSpecialVar_Result - thumb_func_end Task_LearnNextMoveOrClosePartyMenu - - thumb_func_start Task_ReplaceMoveYesNo -Task_ReplaceMoveYesNo: @ 8125D88 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08125DAC - bl PartyMenuDisplayYesNoMenu - ldr r0, _08125DB4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08125DB8 @ =Task_HandleReplaceMoveYesNoInput - str r0, [r1] -_08125DAC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125DB4: .4byte gTasks -_08125DB8: .4byte Task_HandleReplaceMoveYesNoInput - thumb_func_end Task_ReplaceMoveYesNo - - thumb_func_start Task_HandleReplaceMoveYesNoInput -Task_HandleReplaceMoveYesNoInput: @ 8125DBC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _08125DE2 - cmp r1, 0 - bgt _08125DDC - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08125E08 - b _08125E14 -_08125DDC: - cmp r1, 0x1 - beq _08125E0E - b _08125E14 -_08125DE2: - ldr r0, _08125DFC @ =gText_WhichMoveToForget - movs r1, 0x1 - bl DisplayPartyMenuMessage - ldr r1, _08125E00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08125E04 @ =Task_ShowSummaryScreenToForgetMove - str r1, [r0] - b _08125E14 - .align 2, 0 -_08125DFC: .4byte gText_WhichMoveToForget -_08125E00: .4byte gTasks -_08125E04: .4byte Task_ShowSummaryScreenToForgetMove -_08125E08: - movs r0, 0x5 - bl PlaySE -_08125E0E: - adds r0, r4, 0 - bl StopLearningMovePrompt -_08125E14: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_HandleReplaceMoveYesNoInput - - thumb_func_start Task_ShowSummaryScreenToForgetMove -Task_ShowSummaryScreenToForgetMove: @ 8125E1C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08125E3C - ldr r0, _08125E44 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08125E48 @ =CB2_ShowSummaryScreenToForgetMove - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu -_08125E3C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125E44: .4byte sPartyMenuInternal -_08125E48: .4byte CB2_ShowSummaryScreenToForgetMove - thumb_func_end Task_ShowSummaryScreenToForgetMove - - thumb_func_start CB2_ShowSummaryScreenToForgetMove -CB2_ShowSummaryScreenToForgetMove: @ 8125E4C - push {r4,lr} - sub sp, 0x4 - ldr r0, _08125E74 @ =gPlayerParty - ldr r4, _08125E78 @ =gPartyMenu - ldrb r1, [r4, 0x9] - ldr r2, _08125E7C @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08125E80 @ =CB2_ReturnToPartyMenuWhileLearningMove - ldrh r4, [r4, 0xE] - str r4, [sp] - bl ShowSelectMovePokemonSummaryScreen - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08125E74: .4byte gPlayerParty -_08125E78: .4byte gPartyMenu -_08125E7C: .4byte gPlayerPartyCount -_08125E80: .4byte CB2_ReturnToPartyMenuWhileLearningMove - thumb_func_end CB2_ShowSummaryScreenToForgetMove - - thumb_func_start CB2_ReturnToPartyMenuWhileLearningMove -CB2_ReturnToPartyMenuWhileLearningMove: @ 8125E84 - push {r4,r5,lr} - sub sp, 0xC - bl GetMoveSlotToReplace - lsls r0, 24 - lsrs r2, r0, 24 - ldr r4, _08125ED0 @ =gPartyMenu - movs r0, 0x10 - ldrsh r5, [r4, r0] - cmp r5, 0 - bne _08125EE8 - cmp r2, 0x4 - beq _08125EE8 - movs r1, 0x9 - ldrsb r1, [r4, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08125ED4 @ =gPlayerParty - adds r0, r1 - adds r1, r2, 0 - adds r1, 0xD - bl GetMonData - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldrb r0, [r4, 0x9] - ldr r1, _08125ED8 @ =gSpecialVar_ItemId - ldrh r1, [r1] - ldr r3, _08125EDC @ =sub_8124EFC - bl sub_811C568 - ldr r1, _08125EE0 @ =gItemUseCB - ldr r0, _08125EE4 @ =sub_8125F4C - str r0, [r1] - strb r5, [r4, 0xB] - b _08125F02 - .align 2, 0 -_08125ED0: .4byte gPartyMenu -_08125ED4: .4byte gPlayerParty -_08125ED8: .4byte gSpecialVar_ItemId -_08125EDC: .4byte sub_8124EFC -_08125EE0: .4byte gItemUseCB -_08125EE4: .4byte sub_8125F4C -_08125EE8: - movs r0, 0x7F - str r0, [sp] - ldr r0, _08125F0C @ =Task_ReturnToPartyMenuWhileLearningMove - str r0, [sp, 0x4] - ldr r0, _08125F10 @ =gPartyMenu - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl InitPartyMenu -_08125F02: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08125F0C: .4byte Task_ReturnToPartyMenuWhileLearningMove -_08125F10: .4byte gPartyMenu - thumb_func_end CB2_ReturnToPartyMenuWhileLearningMove - - thumb_func_start Task_ReturnToPartyMenuWhileLearningMove -Task_ReturnToPartyMenuWhileLearningMove: @ 8125F14 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08125F3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08125F46 - bl GetMoveSlotToReplace - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08125F40 - adds r0, r4, 0 - bl DisplayPartyMenuForgotMoveMessage - b _08125F46 - .align 2, 0 -_08125F3C: .4byte gPaletteFade -_08125F40: - adds r0, r5, 0 - bl StopLearningMovePrompt -_08125F46: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end Task_ReturnToPartyMenuWhileLearningMove - - thumb_func_start sub_8125F4C -sub_8125F4C: @ 8125F4C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8125F5C - pop {r0} - bx r0 - thumb_func_end sub_8125F4C - - thumb_func_start sub_8125F5C -sub_8125F5C: @ 8125F5C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08125FE4 @ =gPartyMenu - mov r9, r0 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _08125FE8 @ =gPlayerParty - adds r6, r0 - bl GetMoveSlotToReplace - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r1, r5, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08125FEC @ =gSpecialVar_ItemId - ldrh r2, [r0] - movs r0, 0x4 - adds r1, r6, 0 - adds r3, r4, 0 - bl ItemUse_SetQuestLogEvent - ldr r1, _08125FF0 @ =gStringVar1 - adds r0, r6, 0 - bl GetMonNickname - ldr r0, _08125FF4 @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _08125FF8 @ =gMoveNames - adds r1, r2 - bl StringCopy - adds r0, r6, 0 - adds r1, r5, 0 - bl RemoveMonPPBonus - mov r0, r9 - ldrh r1, [r0, 0xE] - adds r0, r6, 0 - adds r2, r5, 0 - bl SetMonMoveSlot - mov r0, r8 - bl Task_LearnedMove - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08125FE4: .4byte gPartyMenu -_08125FE8: .4byte gPlayerParty -_08125FEC: .4byte gSpecialVar_ItemId -_08125FF0: .4byte gStringVar1 -_08125FF4: .4byte gStringVar2 -_08125FF8: .4byte gMoveNames - thumb_func_end sub_8125F5C - - thumb_func_start DisplayPartyMenuForgotMoveMessage -DisplayPartyMenuForgotMoveMessage: @ 8125FFC - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _0812605C @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - adds r5, r1, 0 - muls r5, r0 - ldr r0, _08126060 @ =gPlayerParty - adds r5, r0 - bl GetMoveSlotToReplace - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r1, 0xD - adds r0, r5, 0 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r1, _08126064 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r0, _08126068 @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _0812606C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _08126070 @ =gUnknown_8416EC6 - bl DisplayLearnMoveMessage - ldr r1, _08126074 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126078 @ =Task_PartyMenuReplaceMove - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812605C: .4byte gPartyMenu -_08126060: .4byte gPlayerParty -_08126064: .4byte gStringVar1 -_08126068: .4byte gStringVar2 -_0812606C: .4byte gMoveNames -_08126070: .4byte gUnknown_8416EC6 -_08126074: .4byte gTasks -_08126078: .4byte Task_PartyMenuReplaceMove - thumb_func_end DisplayPartyMenuForgotMoveMessage - - thumb_func_start Task_PartyMenuReplaceMove -Task_PartyMenuReplaceMove: @ 812607C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081260C8 - ldr r5, _081260D0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r5, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, _081260D4 @ =gPlayerParty - adds r4, r0 - bl GetMoveSlotToReplace - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl RemoveMonPPBonus - ldrh r5, [r5, 0xE] - bl GetMoveSlotToReplace - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl SetMonMoveSlot - adds r0, r6, 0 - bl Task_LearnedMove -_081260C8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081260D0: .4byte gPartyMenu -_081260D4: .4byte gPlayerParty - thumb_func_end Task_PartyMenuReplaceMove - - thumb_func_start StopLearningMovePrompt -StopLearningMovePrompt: @ 81260D8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08126120 @ =gStringVar2 - ldr r1, _08126124 @ =gPartyMenu - movs r3, 0xE - ldrsh r2, [r1, r3] - movs r1, 0xD - muls r1, r2 - ldr r2, _08126128 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0812612C @ =gStringVar4 - ldr r1, _08126130 @ =gText_StopLearningMove2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08126134 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126138 @ =Task_StopLearningMoveYesNo - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08126120: .4byte gStringVar2 -_08126124: .4byte gPartyMenu -_08126128: .4byte gMoveNames -_0812612C: .4byte gStringVar4 -_08126130: .4byte gText_StopLearningMove2 -_08126134: .4byte gTasks -_08126138: .4byte Task_StopLearningMoveYesNo - thumb_func_end StopLearningMovePrompt - - thumb_func_start Task_StopLearningMoveYesNo -Task_StopLearningMoveYesNo: @ 812613C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08126160 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08126168 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812616C @ =Task_HandleStopLearningMoveYesNoInput - str r0, [r1] -_08126160: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08126168: .4byte gTasks -_0812616C: .4byte Task_HandleStopLearningMoveYesNoInput - thumb_func_end Task_StopLearningMoveYesNo - - thumb_func_start Task_HandleStopLearningMoveYesNoInput -Task_HandleStopLearningMoveYesNoInput: @ 8126170 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _081261A0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r7, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081261A4 @ =gPlayerParty - adds r4, r1, r0 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r5, r0, 24 - cmp r5, 0 - beq _081261AE - cmp r5, 0 - bgt _081261A8 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08126234 - b _0812626A - .align 2, 0 -_081261A0: .4byte gPartyMenu -_081261A4: .4byte gPlayerParty -_081261A8: - cmp r5, 0x1 - beq _0812623A - b _0812626A -_081261AE: - ldr r1, _081261F4 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - ldr r0, _081261F8 @ =gStringVar2 - movs r1, 0xE - ldrsh r2, [r7, r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _081261FC @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08126200 @ =gStringVar4 - ldr r1, _08126204 @ =gText_MoveNotLearned - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r3, 0x10 - ldrsh r0, [r7, r3] - cmp r0, 0x1 - bne _08126210 - ldr r0, _08126208 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812620C @ =Task_TryLearningNextMoveAfterText - str r0, [r1] - b _0812626A - .align 2, 0 -_081261F4: .4byte gStringVar1 -_081261F8: .4byte gStringVar2 -_081261FC: .4byte gMoveNames -_08126200: .4byte gStringVar4 -_08126204: .4byte gText_MoveNotLearned -_08126208: .4byte gTasks -_0812620C: .4byte Task_TryLearningNextMoveAfterText -_08126210: - cmp r0, 0x2 - bne _08126218 - ldr r0, _08126228 @ =gSpecialVar_Result - strh r5, [r0] -_08126218: - ldr r0, _0812622C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _08126230 @ =Task_ClosePartyMenuAfterText - str r0, [r1] - b _0812626A - .align 2, 0 -_08126228: .4byte gSpecialVar_Result -_0812622C: .4byte gTasks -_08126230: .4byte Task_ClosePartyMenuAfterText -_08126234: - movs r0, 0x5 - bl PlaySE -_0812623A: - ldr r1, _08126270 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - ldr r0, _08126274 @ =gStringVar2 - ldr r1, _08126278 @ =gPartyMenu - movs r3, 0xE - ldrsh r2, [r1, r3] - movs r1, 0xD - muls r1, r2 - ldr r2, _0812627C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _08126280 @ =gText_PkmnNeedsToReplaceMove - bl DisplayLearnMoveMessage - ldr r1, _08126284 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126288 @ =Task_ReplaceMoveYesNo - str r1, [r0] -_0812626A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126270: .4byte gStringVar1 -_08126274: .4byte gStringVar2 -_08126278: .4byte gPartyMenu -_0812627C: .4byte gMoveNames -_08126280: .4byte gText_PkmnNeedsToReplaceMove -_08126284: .4byte gTasks -_08126288: .4byte Task_ReplaceMoveYesNo - thumb_func_end Task_HandleStopLearningMoveYesNoInput - thumb_func_start Task_TryLearningNextMoveAfterText Task_TryLearningNextMoveAfterText: @ 812628C push {r4,lr} @@ -6211,8 +1119,8 @@ _08126BCE: bx r0 thumb_func_end sub_8126B60 - thumb_func_start ItemUseCB_EvolutionStone -ItemUseCB_EvolutionStone: @ 8126BD4 + thumb_func_start sub_8126BD4 +sub_8126BD4: @ 8126BD4 push {r4,r5,lr} ldr r1, _08126C10 @ =gCB2_AfterEvolution ldr r4, _08126C14 @ =gPartyMenu @@ -6245,7 +1153,7 @@ _08126C14: .4byte gPartyMenu _08126C18: .4byte gSpecialVar_ItemId _08126C1C: .4byte gPlayerParty _08126C20: .4byte 0x0000ffff - thumb_func_end ItemUseCB_EvolutionStone + thumb_func_end sub_8126BD4 thumb_func_start sub_8126C24 sub_8126C24: @ 8126C24 @@ -6600,7 +1508,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 str r0, [sp] ldr r0, _08126ED4 @ =Task_HandleChooseMonInput str r0, [sp, 0x4] - ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu + ldr r0, _08126ED8 @ =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -6612,7 +1520,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0 bx r0 .align 2, 0 _08126ED4: .4byte Task_HandleChooseMonInput -_08126ED8: .4byte CB2_ReturnToStartMenu +_08126ED8: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end CB2_PartyMenuFromStartMenu thumb_func_start CB2_ChooseMonToGiveItem diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 8320c5809..9c57cff88 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -428,13 +428,13 @@ sub_8102858: @ 8102858 lsls r1, 7 movs r0, 0 bl SetGpuRegBits - ldr r0, _08102878 @ =CB2_ReturnToStartMenu + ldr r0, _08102878 @ =CB2_ReturnToFieldWithOpenMenu bl SetMainCallback2 _08102874: pop {r0} bx r0 .align 2, 0 -_08102878: .4byte CB2_ReturnToStartMenu +_08102878: .4byte CB2_ReturnToFieldWithOpenMenu thumb_func_end sub_8102858 thumb_func_start sub_810287C diff --git a/asm/region_map.s b/asm/region_map.s index 7b23cf1e3..662c65fa7 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -9893,15 +9893,15 @@ _080C4EF2: bx r0 thumb_func_end sub_80C4ED0 - thumb_func_start sub_80C4EF8 -sub_80C4EF8: @ 80C4EF8 + thumb_func_start MCB2_FlyMap +MCB2_FlyMap: @ 80C4EF8 push {lr} bl sub_80C51E8 movs r0, 0x2 bl sub_80BFEDC pop {r0} bx r0 - thumb_func_end sub_80C4EF8 + thumb_func_end MCB2_FlyMap thumb_func_start sub_80C4F08 sub_80C4F08: @ 80C4F08 diff --git a/data/strings.s b/data/strings.s index 547005fd6..35548d0dc 100644 --- a/data/strings.s +++ b/data/strings.s @@ -922,7 +922,7 @@ gText_PkmnAlreadyHoldingItemSwitch:: @ 8416C49 .string "Would you like to switch the\n" .string "two items?$" -gUnknown_8416C8F:: @ 8416C8F +gText_PkmnNotHolding:: @ 8416C8F .string "{STR_VAR_1} isn't holding\n" .string "anything.{PAUSE_UNTIL_PRESS}$" @@ -979,7 +979,7 @@ gText_MoveNotLearned:: @ 8416E84 gText_WhichMoveToForget:: @ 8416EA4 .string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$" -gUnknown_8416EC6:: @ 8416EC6 +gText_12PoofForgotMove:: @ 8416EC6 .string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p" .string "{STR_VAR_1} forgot how to\n" .string "use {STR_VAR_2}.\p" @@ -1233,11 +1233,11 @@ gText_ShareHp:: @ 0x84175F1 gText_ReturnToAHealingSpot:: @ 0x84175FB .string "Return to a healing spot.$" -gUnknown_8417615:: @ 8417615 +gText_EscapeFromHereAndReturnTo:: @ 8417615 .string "Want to escape from here and return\n" .string "to {STR_VAR_1}?$" -gUnknown_8417640:: @ 8417640 +gText_ReturnToHealingSpot:: @ 8417640 .string "Want to return to the healing spot\n" .string "used last in {STR_VAR_1}?$" diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index 746f10679..4ef90ed60 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -1,6 +1,28 @@ #ifndef GUARD_CONSTANTS_EASY_CHAT_H #define GUARD_CONSTANTS_EASY_CHAT_H +#define EASY_CHAT_TYPE_PROFILE 0 +#define EASY_CHAT_TYPE_BATTLE_START 1 +#define EASY_CHAT_TYPE_BATTLE_WON 2 +#define EASY_CHAT_TYPE_BATTLE_LOST 3 +#define EASY_CHAT_TYPE_MAIL 4 +#define EASY_CHAT_TYPE_INTERVIEW 5 +#define EASY_CHAT_TYPE_BARD_SONG 6 +#define EASY_CHAT_TYPE_FAN_CLUB 7 +#define EASY_CHAT_TYPE_UNK_8 8 +#define EASY_CHAT_TYPE_TRENDY_PHRASE 9 +#define EASY_CHAT_TYPE_GABBY_AND_TY 10 +#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11 +#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12 +#define EASY_CHAT_TYPE_GOOD_SAYING 13 +#define EASY_CHAT_TYPE_FAN_QUESTION 14 +#define EASY_CHAT_TYPE_QUIZ_ANSWER 15 +#define EASY_CHAT_TYPE_QUIZ_QUESTION 16 +#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17 +#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18 +#define EASY_CHAT_TYPE_APPRENTICE 19 +#define EASY_CHAT_TYPE_QUESTIONNAIRE 20 + #define EC_GROUP_POKEMON_2 0x0 #define EC_GROUP_TRAINER 0x1 #define EC_GROUP_STATUS 0x2 diff --git a/include/easy_chat.h b/include/easy_chat.h index 765758035..9c642bb36 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -45,5 +45,6 @@ u16 GetDisplayedWordByIndex(u16 index); u16 GetNumDisplayedWords(void); const u8 *GetEasyChatWordGroupName(u8); u8 *CopyEasyChatWordPadded(u8 *, u16, u16); +void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback); // TODO: currently in link_rfu.s. further file split needed? #endif // GUARD_EASYCHAT_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 1d431771b..ec1a077be 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -33,5 +33,7 @@ void sub_805DC04(void); void sub_805DAB0(void); bool32 sub_805DAD0(void); bool32 sub_805DC24(void); +bool8 PartyHasMonWithSurf(void); +bool8 IsPlayerSurfingNorth(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 1b8044592..86fab62e0 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -9,5 +9,6 @@ void sub_80B0244(void); void sub_807E3EC(void); void sub_807F114(void); void sub_807F204(u8 taskId); +void sub_807DC00(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/global.h b/include/global.h index 744d23eb3..3d6049d64 100644 --- a/include/global.h +++ b/include/global.h @@ -742,7 +742,7 @@ struct SaveBlock1 /*0x000C*/ struct WarpData warp1; /*0x0014*/ struct WarpData warp2; /*0x001C*/ struct WarpData lastHealLocation; - /*0x0024*/ struct WarpData warp4; + /*0x0024*/ struct WarpData escapeWarp; /*0x002C*/ u16 savedMusic; /*0x002E*/ u8 weather; /*0x002F*/ u8 filler_2F; diff --git a/include/link_rfu.h b/include/link_rfu.h index 671488be0..d1bc2b2bc 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -1,6 +1,9 @@ #ifndef GUARD_LINK_RFU_H #define GUARD_LINK_RFU_H +#include "global.h" +#include "librfu.h" + struct Padded_U8 { u8 value; @@ -42,6 +45,7 @@ void sub_80F8DC0(void); void sub_80FBB20(void); bool8 sub_80FA484(bool32 a0); void var_800D_set_xB(void); +struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/include/overworld.h b/include/overworld.h index d893899eb..ab20d9ff0 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -140,7 +140,7 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd bool32 sub_8058318(void); -void CB2_ReturnToStartMenu(void); +void CB2_ReturnToFieldWithOpenMenu(void); void CB2_WhiteOut(void); void c2_8056854(void); void sub_8054F38(u32 newKey); diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h index 8dbf0efa4..d2580552d 100644 --- a/include/pokemon_special_anim.h +++ b/include/pokemon_special_anim.h @@ -8,5 +8,9 @@ bool8 sub_811E680(void); void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats); void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr); void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr); +void sub_811C540(u8 slotId, u16 itemId, MainCallback callback); +void sub_811C5AC(u8 slotId, u16 itemId, MainCallback callback); +u32 sub_811D178(void); +void sub_811C568(u8 slotId, u16 itemId, u16 moveId, MainCallback callback); #endif // GUARD_POKEMON_SPECIAL_ANIM_H diff --git a/include/quest_log.h b/include/quest_log.h index 4040ed4c9..3dfd5f35c 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -49,6 +49,4 @@ void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); void sub_8110840(void *oldSave); void sub_8112F18(u8 windowId); -extern u8 gUnknown_203ADFA; - #endif //GUARD_QUEST_LOG_H diff --git a/include/region_map.h b/include/region_map.h index 8d609f104..67287b6c4 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -96,5 +96,6 @@ u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); void GetMapNameGeneric(u8 *, u8); void sub_80BFF50(u8 a0, void (*a1)(void)); +void MCB2_FlyMap(void); #endif //GUARD_REGION_MAP_H diff --git a/include/strings.h b/include/strings.h index 16a107de7..8c082ccb4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -350,6 +350,44 @@ extern const u8 gText_MaleSymbol[]; extern const u8 gText_FemaleSymbol[]; extern const u8 gText_Slash[]; extern const u8 gUnknown_8417457[]; +extern const u8 gText_PkmnNotHolding[]; +extern const u8 gText_PCMailboxFull[]; +extern const u8 gText_MailSentToPC[]; +extern const u8 gText_MailMessageWillBeLost[]; +extern const u8 gText_SendMailToPC[]; +extern const u8 gText_MailTakenFromPkmn[]; +extern const u8 gUnknown_8416B3E[]; +extern const u8 gUnknown_8416B16[]; +extern const u8 gText_PauseUntilPress[]; +extern const u8 gText_CantUseUntilNewBadge[]; +extern const u8 gText_ReturnToHealingSpot[]; +extern const u8 gText_EscapeFromHereAndReturnTo[]; +extern const u8 gText_PkmnCuredOfPoison[]; +extern const u8 gText_PkmnWokeUp2[]; +extern const u8 gText_PkmnBurnHealed[]; +extern const u8 gText_PkmnThawedOut[]; +extern const u8 gText_PkmnCuredOfParalysis[]; +extern const u8 gText_PkmnSnappedOutOfConfusion[]; +extern const u8 gText_PkmnGotOverInfatuation[]; +extern const u8 gText_PkmnBecameHealthy[]; +extern const u8 gText_HP3[]; +extern const u8 gText_Attack3[]; +extern const u8 gText_Defense3[]; +extern const u8 gText_Speed2[]; +extern const u8 gText_SpAtk3[]; +extern const u8 gText_SpDef3[]; +extern const u8 gText_PkmnBaseVar2StatIncreased[]; +extern const u8 gText_MovesPPIncreased[]; +extern const u8 gText_PPWasRestored[]; +extern const u8 gText_PkmnHPRestoredByVar2[]; +extern const u8 gText_PkmnNeedsToReplaceMove[]; +extern const u8 gText_PkmnCantLearnMove[]; +extern const u8 gText_PkmnAlreadyKnows[]; +extern const u8 gText_PkmnLearnedMove3[]; +extern const u8 gText_WhichMoveToForget[]; +extern const u8 gText_12PoofForgotMove[]; +extern const u8 gText_StopLearningMove2[]; +extern const u8 gText_MoveNotLearned[]; // credits extern const u8 gString_Dummy[]; diff --git a/include/trade.h b/include/trade.h index 3c42be3ea..b3b1de23b 100644 --- a/include/trade.h +++ b/include/trade.h @@ -2,6 +2,7 @@ #define GUARD_TRADE_H #include "global.h" +#include "librfu.h" #include "constants/trade.h" extern struct MailStruct gLinkPartnerMail[6]; @@ -10,5 +11,7 @@ extern u8 gSelectedTradeMonPositions[2]; extern const u16 gUnknown_826601C[]; void CB2_ReturnFromLinkTrade(void); s32 sub_804FB34(void); +s32 CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet); // TODO: currently in link_rfu_2.s. further file split needed? +s32 GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, struct UnkLinkRfuStruct_02022B14Substruct rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet); #endif //GUARD_TRADE_H diff --git a/include/union_room.h b/include/union_room.h index 00354ff31..03628441b 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -149,4 +149,8 @@ struct TradeUnkStruct u32 personality; }; +extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_203B064; +extern u16 gUnionRoomOfferedSpecies; +extern u8 gUnionRoomRequestedMonType; + #endif //GUARD_UNION_ROOM_H diff --git a/src/option_menu.c b/src/option_menu.c index 35fe957be..5453dfa9e 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -206,7 +206,7 @@ void CB2_OptionsMenuFromStartMenu(void) u8 i; if (gMain.savedCallback == NULL) - gMain.savedCallback = CB2_ReturnToStartMenu; + gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu; sOptionMenuPtr = AllocZeroed(sizeof(struct OptionMenu)); sOptionMenuPtr->state3 = 0; sOptionMenuPtr->state2 = 0; diff --git a/src/party_menu.c b/src/party_menu.c index 08600229a..f88f2f6fc 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,6 +5,7 @@ #include "battle_controllers.h" #include "battle_gfx_sfx_util.h" #include "battle_interface.h" +#include "berry_pouch.h" #include "bg.h" #include "data.h" #include "decompress.h" @@ -42,6 +43,7 @@ #include "pokemon.h" #include "pokemon_icon.h" #include "pokemon_jump.h" +#include "pokemon_special_anim.h" #include "pokemon_storage_system.h" #include "pokemon_summary_screen.h" #include "quest_log.h" @@ -58,6 +60,7 @@ #include "teachy_tv.h" #include "text.h" #include "text_window.h" +#include "tm_case.h" #include "trade.h" #include "union_room.h" #include "window.h" @@ -69,6 +72,7 @@ #include "constants/items.h" #include "constants/maps.h" #include "constants/moves.h" +#include "constants/pokemon.h" #include "constants/songs.h" #include "constants/species.h" #include "constants/vars.h" @@ -250,24 +254,6 @@ void Task_HandleCancelParticipationYesNoInput(u8 taskId); void Task_TryCreateSelectionWindow(u8 taskId); u16 GetTutorMove(u8 tutor); bool8 CanLearnTutorMove(u16 species, u8 tutor); -void sub_8120C6C(u8 taskId); -void sub_8120CA8(u8 taskId); -void sub_8120CD8(u8 taskId); -void sub_8120D08(u8 taskId); -void sub_8120D40(u8 taskId); -void sub_8120D7C(u8 taskId); -void sub_8120DAC(u8 taskId); -void sub_8120DE0(u8 taskId); -void sub_8120E1C(u8 taskId); -void sub_8120E58(u8 taskId); -void sub_8120EE0(u8 taskId); -void sub_8120FF0(u8 taskId); -void sub_8120FB0(void); -bool8 sub_8120F78(u8 taskId); -u8 sub_81220D4(void); -void sub_8122084(u8 windowId, const u8 *str); -void sub_8122110(u8 windowId); -void sub_812358C(void); void CreateSelectionWindow(void); bool8 ShouldUseChooseMonText(void); void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon); @@ -294,6 +280,81 @@ void CB2_WriteMailToGiveMon(void); void Task_SwitchHoldItemsPrompt(u8 taskId); void Task_GiveHoldItem(u8 taskId); void Task_UpdateHeldItemSprite(u8 taskId); +void Task_HandleSwitchItemsYesNoInput(u8 taskId); +void Task_SwitchItemsYesNo(u8 taskId); +void Task_WriteMailToGiveMonAfterText(u8 taskId); +void CB2_ReturnToPartyMenuFromWritingMail(void); +void CB2_ReturnToPartyMenuFromWritingMail(void); +void Task_DisplayGaveMailFromPartyMessage(u8 taskId); +void CB2_ReadHeldMail(void); +void CB2_ReturnToPartyMenuFromReadingMail(void); +void Task_SendMailToPCYesNo(u8 taskId); +void Task_HandleSendMailToPCYesNoInput(u8 taskId); +void Task_LoseMailMessageYesNo(u8 taskId); +void Task_HandleLoseMailMessageYesNoInput(u8 taskId); +bool8 TrySwitchInPokemon(void); +void DisplayCantUseFlashMessage(void); +void DisplayCantUseSurfMessage(void); +void Task_CancelAfterAorBPress(u8 taskId); +void DisplayFieldMoveExitAreaMessage(u8 taskId); +void Task_FieldMoveExitAreaYesNo(u8 taskId); +void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId); +void Task_FieldMoveWaitForFade(u8 taskId); +u16 GetFieldMoveMonSpecies(void); +u8 GetPartyLayoutFromBattleType(void); +void Task_SetSacredAshCB(u8 taskId); +void CB2_ReturnToBagMenu(void); +u8 GetPartyIdFromBattleSlot(u8 slot); +void Task_DisplayHPRestoredMessage(u8 taskId); +void SetSelectedMoveForPPItem(u8 taskId); +void ReturnToUseOnWhichMon(u8 taskId); +void TryUsePPItem(u8 taskId); +void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func); +void Task_LearnedMove(u8 taskId); +void Task_ReplaceMoveYesNo(u8 taskId); +void Task_DoLearnedMoveFanfareAfterText(u8 taskId); +void Task_TryLearningNextMove(u8 taskId); +void Task_LearnNextMoveOrClosePartyMenu(u8 taskId); +void Task_HandleReplaceMoveYesNoInput(u8 taskId); +void StopLearningMovePrompt(u8 taskId); +void Task_ShowSummaryScreenToForgetMove(u8 taskId); +void CB2_ShowSummaryScreenToForgetMove(void); +void CB2_ReturnToPartyMenuWhileLearningMove(void); +void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId); +void DisplayPartyMenuForgotMoveMessage(u8 taskId); +void Task_PartyMenuReplaceMove(u8 taskId); +void Task_StopLearningMoveYesNo(u8 taskId); +void Task_HandleStopLearningMoveYesNoInput(u8 taskId); +void Task_TryLearningNextMoveAfterText(u8 taskId); +void sub_8120C6C(u8 taskId); +void sub_8120CA8(u8 taskId); +void sub_8120CD8(u8 taskId); +void sub_8120D08(u8 taskId); +void sub_8120D40(u8 taskId); +void sub_8120D7C(u8 taskId); +void sub_8120DAC(u8 taskId); +void sub_8120DE0(u8 taskId); +void sub_8120E1C(u8 taskId); +void sub_8120E58(u8 taskId); +void sub_8120EE0(u8 taskId); +void sub_8120FF0(u8 taskId); +bool8 sub_8120F78(u8 taskId); +void sub_8120FB0(void); +void sub_8122084(u8 windowId, const u8 *str); +u8 sub_81220D4(void); +void sub_8122110(u8 windowId); +void sub_812358C(void); +void sub_8124BB0(struct Pokemon *mon, u8 fieldMove); +void sub_8124DB0(void); +void sub_8124DA0(void); +void sub_8124DE0(void); +void sub_8124E48(void); +void sub_812580C(u8 taskId); +void sub_8125898(u8 taskId, UNUSED TaskFunc func); +void sub_8125F4C(u8 taskId, UNUSED TaskFunc func); +void sub_8125F5C(u8 taskId); +void sub_8126BD4(void); +bool8 sub_8126C24(void); EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; EWRAM_DATA struct PartyMenu gPartyMenu = {0}; @@ -712,7 +773,7 @@ void DisplayPartyPokemonDataForChooseHalf(u8 slot) u8 i; struct Pokemon *mon = &gPlayerParty[slot]; u8 *order = gSelectedOrderFromParty; - u8 r3; + u8 maxBattlers; if (!GetBattleEntryEligibility(mon)) { @@ -721,10 +782,10 @@ void DisplayPartyPokemonDataForChooseHalf(u8 slot) else { if (gPartyMenu.unk_8_6 == 2) - r3 = 2; + maxBattlers = 2; else - r3 = 3; - for (i = 0; i < r3; ++i) + maxBattlers = 3; + for (i = 0; i < maxBattlers; ++i) { if (order[i] != 0 && (order[i] - 1) == slot) { @@ -2570,7 +2631,7 @@ void sub_8122138(u8 action) ptr->windowId[2] = AddWindow(&gUnknown_845A178); sub_8112F18(ptr->windowId[2]); attr = GetFontAttribute(2, FONTATTR_LETTER_SPACING); - AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - 18]); + AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - MENU_FIELD_MOVES]); PutWindowTilemap(ptr->windowId[2]); ScheduleBgCopyTilemapToVram(2); } @@ -3224,7 +3285,7 @@ void Task_SlideSelectedSlotsOnscreen(u8 taskId) PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); ScheduleBgCopyTilemapToVram(0); - // memory leak + // BUG: memory leak // Free(sSlot1TilemapBuffer); // Free(sSlot2TilemapBuffer); FinishTwoMonAction(taskId); @@ -3396,3 +3457,1554 @@ void Task_GiveHoldItem(u8 taskId) gTasks[taskId].func = Task_UpdateHeldItemSprite; } } + +void Task_SwitchHoldItemsPrompt(u8 taskId) +{ + if (!gPaletteFade.active) + { + DisplayAlreadyHoldingItemSwitchMessage(&gPlayerParty[gPartyMenu.slotId], sPartyMenuItemId, TRUE); + gTasks[taskId].func = Task_SwitchItemsYesNo; + } +} + +void Task_SwitchItemsYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleSwitchItemsYesNoInput; + } +} + +void Task_HandleSwitchItemsYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: // Yes, switch items + RemoveBagItem(gSpecialVar_ItemId, 1); + + // No room to return held item to bag + if (AddBagItem(sPartyMenuItemId, 1) == FALSE) + { + AddBagItem(gSpecialVar_ItemId, 1); + BufferBagFullCantTakeItemMessage(sPartyMenuItemId); + DisplayPartyMenuMessage(gStringVar4, FALSE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } + // Giving mail + else if (ItemIsMail(gSpecialVar_ItemId)) + { + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId); + gTasks[taskId].func = Task_WriteMailToGiveMonAfterText; + } + // Giving item + else + { + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId); + DisplaySwitchedHeldItemMessage(gSpecialVar_ItemId, sPartyMenuItemId, TRUE); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: // No + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + break; + } +} + +void Task_WriteMailToGiveMonAfterText(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + sPartyMenuInternal->exitCallback = CB2_WriteMailToGiveMon; + Task_ClosePartyMenu(taskId); + } +} + +void CB2_WriteMailToGiveMon(void) +{ + u8 mail = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL); + + DoEasyChatScreen(EASY_CHAT_TYPE_MAIL, + gSaveBlock1Ptr->mail[mail].words, + CB2_ReturnToPartyMenuFromWritingMail); +} + +void CB2_ReturnToPartyMenuFromWritingMail(void) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); + + // Canceled writing mail + if (gSpecialVar_Result == FALSE) + { + TakeMailFromMon(mon); + SetMonData(mon, MON_DATA_HELD_ITEM, &sPartyMenuItemId); + RemoveBagItem(sPartyMenuItemId, 1); + AddBagItem(item, 1); + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_CHOOSE_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); + } + // Wrote mail + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_CHOOSE_MON, Task_DisplayGaveMailFromPartyMessage, gPartyMenu.exitCallback); + } +} + +// Nearly redundant with Task_DisplayGaveMailFromBagMessgae +void Task_DisplayGaveMailFromPartyMessage(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (sPartyMenuItemId == ITEM_NONE) + DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, FALSE, 0); + else + DisplaySwitchedHeldItemMessage(gSpecialVar_ItemId, sPartyMenuItemId, FALSE); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } +} + +void Task_UpdateHeldItemSprite(u8 taskId) +{ + s8 slotId = gPartyMenu.slotId; + + if (IsPartyMenuTextPrinterActive() != TRUE) + { + UpdatePartyMonHeldItemSprite(&gPlayerParty[slotId], &sPartyMenuBoxes[slotId]); + Task_ReturnToChooseMonAfterText(taskId); + } +} + +void CursorCB_TakeItem(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); + + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + switch (TryTakeMonItem(mon)) + { + case 0: // Not holding item + GetMonNickname(mon, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding); + DisplayPartyMenuMessage(gStringVar4, TRUE); + break; + case 1: // No room to take item + BufferBagFullCantTakeItemMessage(item); + DisplayPartyMenuMessage(gStringVar4, TRUE); + break; + default: // Took item + DisplayTookHeldItemMessage(mon, item, TRUE); + break; + } + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_UpdateHeldItemSprite; +} + +void CursorCB_Mail(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_MAIL); + DisplaySelectionWindow(SELECTWINDOW_MAIL); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MAIL); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void CursorCB_Read(u8 taskId) +{ + PlaySE(SE_SELECT); + sPartyMenuInternal->exitCallback = CB2_ReadHeldMail; + Task_ClosePartyMenu(taskId); +} + +void CB2_ReadHeldMail(void) +{ + ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL)], CB2_ReturnToPartyMenuFromReadingMail, 1); +} + +void CB2_ReturnToPartyMenuFromReadingMail(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); +} + +void CursorCB_TakeMail(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + DisplayPartyMenuMessage(gText_SendMailToPC, TRUE); + gTasks[taskId].func = Task_SendMailToPCYesNo; +} + +void Task_SendMailToPCYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleSendMailToPCYesNoInput; + } +} + +void Task_HandleSendMailToPCYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: // Yes, send to PC + if (TakeMailFromMon2(&gPlayerParty[gPartyMenu.slotId]) != 0xFF) + { + DisplayPartyMenuMessage(gText_MailSentToPC, FALSE); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } + else + { + DisplayPartyMenuMessage(gText_PCMailboxFull, FALSE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + DisplayPartyMenuMessage(gText_MailMessageWillBeLost, TRUE); + gTasks[taskId].func = Task_LoseMailMessageYesNo; + break; + } +} + +void Task_LoseMailMessageYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleLoseMailMessageYesNoInput; + } +} + +void Task_HandleLoseMailMessageYesNoInput(u8 taskId) +{ + u16 item; + + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: // Yes, lose mail message + item = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); + if (AddBagItem(item, 1) == TRUE) + { + TakeMailFromMon(&gPlayerParty[gPartyMenu.slotId]); + DisplayPartyMenuMessage(gText_MailTakenFromPkmn, FALSE); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } + else + { + BufferBagFullCantTakeItemMessage(item); + DisplayPartyMenuMessage(gStringVar4, FALSE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + break; + } +} + +void CursorCB_Cancel2(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, GetPartyMenuActionsType(mon)); + DisplaySelectionWindow(SELECTWINDOW_ACTIONS); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MON); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void CursorCB_SendMon(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + if (TrySwitchInPokemon() == TRUE) + { + Task_ClosePartyMenu(taskId); + } + else + { + // gStringVar4 below is the error message buffered by TrySwitchInPokemon + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + DisplayPartyMenuMessage(gStringVar4, TRUE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } +} + +void CursorCB_Enter(u8 taskId) +{ + u8 maxBattlers; + u8 i; + const u8 *str; + + if (gPartyMenu.unk_8_6 == 2) + { + maxBattlers = 2; + str = gUnknown_8416B3E; + } + else + { + maxBattlers = 3; + str = gUnknown_8416B16; + } + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + for (i = 0; i < maxBattlers; ++i) + { + if (gSelectedOrderFromParty[i] == 0) + { + PlaySE(SE_SELECT); + gSelectedOrderFromParty[i] = gPartyMenu.slotId + 1; + DisplayPartyPokemonDescriptionText(i + PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gPartyMenu.slotId], 1); + if (i == (maxBattlers - 1)) + MoveCursorToConfirm(); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; + return; + } + } + PlaySE(SE_HAZURE); + DisplayPartyMenuMessage(str, TRUE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; +} + +void MoveCursorToConfirm(void) +{ + AnimatePartySlot(gPartyMenu.slotId, 0); + gPartyMenu.slotId = PARTY_SIZE; + AnimatePartySlot(gPartyMenu.slotId, 1); +} + +void CursorCB_NoEntry(u8 taskId) +{ + u8 i; + + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + for (i = 0; i < 3; ++i) + { + if (gSelectedOrderFromParty[i] == gPartyMenu.slotId + 1) + { + gSelectedOrderFromParty[i] = 0; + switch (i) + { + case 0: + gSelectedOrderFromParty[0] = gSelectedOrderFromParty[1]; + gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; + gSelectedOrderFromParty[2] = 0; + break; + case 1: + gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; + gSelectedOrderFromParty[2] = 0; + break; + } + break; + } + } + DisplayPartyPokemonDescriptionText(PARTYBOX_DESC_ABLE_3, &sPartyMenuBoxes[gPartyMenu.slotId], 1); + if (gSelectedOrderFromParty[0] != 0) + DisplayPartyPokemonDescriptionText(PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gSelectedOrderFromParty[0] - 1], 1); + if (gSelectedOrderFromParty[1] != 0) + DisplayPartyPokemonDescriptionText(1 + PARTYBOX_DESC_FIRST, &sPartyMenuBoxes[gSelectedOrderFromParty[1] - 1], 1); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +void CursorCB_Store(u8 taskId) +{ + PlaySE(SE_SELECT); + gSpecialVar_0x8004 = gPartyMenu.slotId; + Task_ClosePartyMenu(taskId); +} + +// Register mon for the Trading Board in Union Room +void CursorCB_Register(u8 taskId) +{ + u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); + u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE); + + switch (CanRegisterMonForTradingBoard(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), species2, species, obedience)) + { + case CANT_REGISTER_MON: + StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow); + break; + case CANT_REGISTER_EGG: + StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow); + break; + default: + PlaySE(SE_SELECT); + Task_ClosePartyMenu(taskId); + return; + } + PlaySE(SE_HAZURE); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + StringAppend(gStringVar4, gText_PauseUntilPress); + DisplayPartyMenuMessage(gStringVar4, TRUE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; +} + +void CursorCB_Trade1(u8 taskId) +{ + u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); + u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE); + u32 stringId = GetUnionRoomTradeMessageId(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience); + + if (stringId != UR_TRADE_MSG_NONE) + { + StringExpandPlaceholders(gStringVar4, sUnionRoomTradeMessages[stringId - 1]); + PlaySE(SE_HAZURE); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + StringAppend(gStringVar4, gText_PauseUntilPress); + DisplayPartyMenuMessage(gStringVar4, TRUE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } + else + { + PlaySE(SE_SELECT); + Task_ClosePartyMenu(taskId); + } +} + +// Spin Trade (based on the translation of the Japanese trade prompt) +// Not implemented, and normally unreachable because PARTY_MENU_TYPE_SPIN_TRADE is never used +void CursorCB_Trade2(u8 taskId) +{ +} + +void CursorCB_FieldMove(u8 taskId) +{ + u8 fieldMove = sPartyMenuInternal->actions[Menu_GetCursorPos()] - MENU_FIELD_MOVES; + const struct MapHeader *mapHeader; + + PlaySE(SE_SELECT); + if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc == NULL) + return; + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) + { + if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED) + DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE); + else + DisplayPartyMenuStdMessage(sFieldMoveCursorCallbacks[fieldMove].msgId); + gTasks[taskId].func = Task_CancelAfterAorBPress; + } + else + { + // All field moves before WATERFALL are HMs. + if (fieldMove <= FIELD_MOVE_WATERFALL && FlagGet(FLAG_BADGE01_GET + fieldMove) != TRUE) + { + DisplayPartyMenuMessage(gText_CantUseUntilNewBadge, TRUE); + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + } + else if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc() == TRUE) + { + switch (fieldMove) + { + case FIELD_MOVE_MILK_DRINK: + case FIELD_MOVE_SOFT_BOILED: + ChooseMonForSoftboiled(taskId); + break; + case FIELD_MOVE_TELEPORT: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum); + GetMapNameGeneric(gStringVar1, mapHeader->regionMapSectionId); + StringExpandPlaceholders(gStringVar4, gText_ReturnToHealingSpot); + DisplayFieldMoveExitAreaMessage(taskId); + sPartyMenuInternal->data[0] = fieldMove; + break; + case FIELD_MOVE_DIG: + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); + GetMapNameGeneric(gStringVar1, mapHeader->regionMapSectionId); + StringExpandPlaceholders(gStringVar4, gText_EscapeFromHereAndReturnTo); + DisplayFieldMoveExitAreaMessage(taskId); + sPartyMenuInternal->data[0] = fieldMove; + break; + case FIELD_MOVE_FLY: + gPartyMenu.exitCallback = MCB2_FlyMap; + Task_ClosePartyMenu(taskId); + break; + default: + gPartyMenu.exitCallback = CB2_ReturnToField; + sub_8124BB0(&gPlayerParty[GetCursorSelectionMonId()], fieldMove); + Task_ClosePartyMenu(taskId); + break; + } + } + // Cant use Field Move + else + { + switch (fieldMove) + { + case FIELD_MOVE_SURF: + DisplayCantUseSurfMessage(); + break; + case FIELD_MOVE_FLASH: + DisplayCantUseFlashMessage(); + break; + default: + DisplayPartyMenuStdMessage(sFieldMoveCursorCallbacks[fieldMove].msgId); + break; + } + gTasks[taskId].func = Task_CancelAfterAorBPress; + } + } +} + +void DisplayFieldMoveExitAreaMessage(u8 taskId) +{ + DisplayPartyMenuMessage(gStringVar4, TRUE); + gTasks[taskId].func = Task_FieldMoveExitAreaYesNo; +} + +void Task_FieldMoveExitAreaYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleFieldMoveExitAreaYesNoInput; + } +} + +void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + gPartyMenu.exitCallback = CB2_ReturnToField; + sub_8124BB0(&gPlayerParty[GetCursorSelectionMonId()], sPartyMenuInternal->data[0]); + Task_ClosePartyMenu(taskId); + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + gFieldCallback2 = NULL; + gPostMenuFieldCallback = NULL; + Task_ReturnToChooseMonAfterText(taskId); + break; + } +} + +bool8 FieldCallback_PrepareFadeInFromMenu(void) +{ + sub_807DC00(); + CreateTask(Task_FieldMoveWaitForFade, 8); + return TRUE; +} + +void Task_FieldMoveWaitForFade(u8 taskId) +{ + if (IsWeatherNotFadingIn() == TRUE) + { + gFieldEffectArguments[0] = GetFieldMoveMonSpecies(); + gPostMenuFieldCallback(); + DestroyTask(taskId); + } +} + +u16 GetFieldMoveMonSpecies(void) +{ + return GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); +} + +void Task_CancelAfterAorBPress(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + CursorCB_Cancel1(taskId); +} + +void DisplayCantUseFlashMessage(void) +{ + if (FlagGet(FLAG_SYS_FLASH_ACTIVE) == TRUE) + DisplayPartyMenuStdMessage(PARTY_MSG_ALREADY_IN_USE); + else + DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE); +} + +void FieldCallback_Surf(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + FieldEffectStart(FLDEFF_USE_SURF); +} + +bool8 SetUpFieldMove_Surf(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsSemiDeepWater(MapGridGetMetatileBehaviorAt(x, y)) != TRUE + && PartyHasMonWithSurf() == TRUE + && IsPlayerFacingSurfableFishableWater() == TRUE) + { + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FieldCallback_Surf; + return TRUE; + } + return FALSE; +} + +void DisplayCantUseSurfMessage(void) +{ + s16 x, y; + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + DisplayPartyMenuStdMessage(PARTY_MSG_ALREADY_SURFING); + } + else + { + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsSemiDeepWater(MapGridGetMetatileBehaviorAt(x, y)) == TRUE) + DisplayPartyMenuStdMessage(PARTY_MSG_CURRENT_TOO_FAST); + else if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE17)) + && ((gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE17)) + || (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE18)))) + DisplayPartyMenuStdMessage(PARTY_MSG_ENJOY_CYCLING); + else + DisplayPartyMenuStdMessage(PARTY_MSG_CANT_SURF_HERE); + } +} + +bool8 SetUpFieldMove_Fly(void) +{ + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) + return TRUE; + else + return FALSE; +} + +void CB2_ReturnToPartyMenuFromFlyMap(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToFieldWithOpenMenu); +} + +void FieldCallback_Waterfall(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + FieldEffectStart(FLDEFF_USE_WATERFALL); +} + +bool8 SetUpFieldMove_Waterfall(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE && IsPlayerSurfingNorth() == TRUE) + { + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FieldCallback_Waterfall; + return TRUE; + } + return FALSE; +} + +void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2) +{ + u16 *ptr = Alloc(4 * sizeof(u16)); + + ptr[2] = GetMonData(mon, MON_DATA_SPECIES2); + ptr[0] = item; + ptr[1] = item2; + if (gPartyMenu.action == PARTY_ACTION_GIVE_PC_ITEM) + sub_8113550(10, ptr); + else + sub_8113550(9, ptr); + Free(ptr); +} + +struct FieldMoveWarpParams +{ + u16 species; + u8 fieldMove; + u8 regionMapSectionId; +}; + +void sub_8124BB0(struct Pokemon *mon, u8 fieldMove) +{ + struct FieldMoveWarpParams *ptr = Alloc(sizeof(*ptr)); + + ptr->species = GetMonData(mon, MON_DATA_SPECIES2); + ptr->fieldMove = fieldMove; + switch (ptr->fieldMove) + { + case FIELD_MOVE_TELEPORT: + ptr->regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum)->regionMapSectionId; + break; + case FIELD_MOVE_DIG: + ptr->regionMapSectionId = gMapHeader.regionMapSectionId; + break; + default: + ptr->regionMapSectionId = 0xFF; + } + sub_8113550(36, (u16 *)ptr); + Free(ptr); +} + +void sub_8124C1C(const u8 *healLocCtrlData) // TODO: confirm the type of data chunk at 0x83F2EE0 +{ + const struct MapHeader *mapHeader; + struct FieldMoveWarpParams *ptr2; + struct + { + s8 mapGroup; + s8 mapNum; + u32 unk_4; + } *ptr = Alloc(sizeof(*ptr)); + + ptr->mapGroup = healLocCtrlData[0]; + ptr->mapNum = healLocCtrlData[1]; + mapHeader = Overworld_GetMapHeaderByGroupAndId(ptr->mapGroup, ptr->mapNum); + Free(ptr); + ptr2 = Alloc(4); + ptr2->species = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_SPECIES2); + ptr2->fieldMove = FIELD_MOVE_FLY; + ptr2->regionMapSectionId = mapHeader->regionMapSectionId; + sub_8113550(36, (u16 *)ptr2); + Free(ptr2); +} + +void CB2_ShowPartyMenuForItemUse(void) +{ + MainCallback callback = CB2_ReturnToBagMenu; + u8 partyLayout; + u8 menuType; + u8 i; + u8 msgId; + TaskFunc task; + + if (gMain.inBattle) + { + menuType = PARTY_MENU_TYPE_IN_BATTLE; + partyLayout = GetPartyLayoutFromBattleType(); + } + else + { + menuType = PARTY_MENU_TYPE_FIELD; + partyLayout = PARTY_LAYOUT_SINGLE; + } + + if (GetItemEffectType(gSpecialVar_ItemId) == ITEM_EFFECT_SACRED_ASH) + { + gPartyMenu.slotId = 0; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + { + gPartyMenu.slotId = i; + break; + } + } + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + callback = sub_8124DB0; + task = Task_SetSacredAshCB; + msgId = PARTY_MSG_NONE; + } + else + { + switch (GetPocketByItemId(gSpecialVar_ItemId)) + { + default: + msgId = PARTY_MSG_USE_ON_WHICH_MON; + break; + case POCKET_TM_CASE: + msgId = PARTY_MSG_TEACH_WHICH_MON; + callback = sub_8124DA0; + break; + case POCKET_BERRY_POUCH: + msgId = PARTY_MSG_USE_ON_WHICH_MON; + callback = sub_8124DB0; + break; + } + task = Task_HandleChooseMonInput; + } + InitPartyMenu(menuType, partyLayout, PARTY_ACTION_USE_ITEM, TRUE, msgId, task, callback); +} + +void CB2_ReturnToBagMenu(void) +{ + GoToBagMenu(11, 3, NULL); +} + +void sub_8124DA0(void) +{ + InitTMCase(5, NULL, 0xFF); +} + +void sub_8124DB0(void) +{ + InitBerryPouch(BERRYPOUCH_NA, NULL, 0xFF); +} + +void sub_8124DC0(u8 taskId) +{ + sPartyMenuInternal->exitCallback = sub_8124DE0; + Task_ClosePartyMenu(taskId); +} + +void sub_8124DE0(void) +{ + if (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId) == 2) // Evolution stone + { + if (sub_8126C24() == TRUE) + sub_811C540(gPartyMenu.slotId, gSpecialVar_ItemId, sub_8126BD4); + else + sub_811C5AC(gPartyMenu.slotId, gSpecialVar_ItemId, gPartyMenu.exitCallback); + } + else + { + sub_811C540(gPartyMenu.slotId, gSpecialVar_ItemId, sub_8124E48); + } +} + +void sub_8124E48(void) +{ + if (ItemId_GetPocket(gSpecialVar_ItemId) == POCKET_TM_CASE + && sub_811D178() == 1) + { + GiveMoveToMon(&gPlayerParty[gPartyMenu.slotId], ItemIdToBattleMoveId(gSpecialVar_ItemId)); + AdjustFriendship(&gPlayerParty[gPartyMenu.slotId], 4); + if (gSpecialVar_ItemId <= ITEM_TM50) + RemoveBagItem(gSpecialVar_ItemId, 1); + SetMainCallback2(gPartyMenu.exitCallback); + } + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, PARTY_ACTION_CHOOSE_MON, gPartyMenu.slotId, PARTY_MSG_NONE, Task_SetSacredAshCB, gPartyMenu.exitCallback); + } +} + +void sub_8124EFC(void) +{ + if (sub_811D178() == 1) + { + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u8 moveIdx = GetMoveSlotToReplace(); + u16 move = GetMonData(mon, moveIdx + MON_DATA_MOVE1); + + RemoveMonPPBonus(mon, moveIdx); + SetMonMoveSlot(mon, ItemIdToBattleMoveId(gSpecialVar_ItemId), moveIdx); + AdjustFriendship(mon, 4); + ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, move); + if (gSpecialVar_ItemId <= ITEM_TM50) + RemoveBagItem(gSpecialVar_ItemId, 1); + SetMainCallback2(gPartyMenu.exitCallback); + } + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, gPartyMenu.slotId, PARTY_MSG_NONE, Task_SetSacredAshCB, gPartyMenu.exitCallback); + } +} + +void Task_SetSacredAshCB(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + sPartyMenuInternal->exitCallback = CB2_SetUpExitToBattleScreen; + gItemUseCB(taskId, Task_ClosePartyMenuAfterText); // ItemUseCB_SacredAsh in this case + } +} + +bool8 IsHPRecoveryItem(u16 item) +{ + const u8 *effect; + + if (item == ITEM_ENIGMA_BERRY) + effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + effect = gItemEffectTable[item - ITEM_POTION]; + if (effect[4] & ITEM4_HEAL_HP) + return TRUE; + else + return FALSE; +} + +void GetMedicineItemEffectMessage(u16 item) +{ + switch (GetItemEffectType(item)) + { + case ITEM_EFFECT_CURE_POISON: + StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison); + break; + case ITEM_EFFECT_CURE_SLEEP: + StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2); + break; + case ITEM_EFFECT_CURE_BURN: + StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed); + break; + case ITEM_EFFECT_CURE_FREEZE: + StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut); + break; + case ITEM_EFFECT_CURE_PARALYSIS: + StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis); + break; + case ITEM_EFFECT_CURE_CONFUSION: + StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion); + break; + case ITEM_EFFECT_CURE_INFATUATION: + StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation); + break; + case ITEM_EFFECT_CURE_ALL_STATUS: + StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy); + break; + case ITEM_EFFECT_HP_EV: + StringCopy(gStringVar2, gText_HP3); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_ATK_EV: + StringCopy(gStringVar2, gText_Attack3); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_DEF_EV: + StringCopy(gStringVar2, gText_Defense3); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_SPEED_EV: + StringCopy(gStringVar2, gText_Speed2); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_SPATK_EV: + StringCopy(gStringVar2, gText_SpAtk3); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_SPDEF_EV: + StringCopy(gStringVar2, gText_SpDef3); + StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased); + break; + case ITEM_EFFECT_PP_UP: + case ITEM_EFFECT_PP_MAX: + StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased); + break; + case ITEM_EFFECT_HEAL_PP: + StringExpandPlaceholders(gStringVar4, gText_PPWasRestored); + break; + default: + StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect); + break; + } +} + +bool8 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item) +{ + if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return FALSE; + return TRUE; +} + +bool8 IsItemFlute(u16 item) +{ + if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE) + return TRUE; + return FALSE; +} + +bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex) +{ + if (gMain.inBattle) + return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex); + else + return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex); +} + +void sub_81252D0(u8 taskId, TaskFunc func) +{ + u16 hp; + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = gSpecialVar_ItemId; + bool8 canHeal; + + if (!NotUsingHPEVItemOnShedinja(mon, item)) + { + canHeal = TRUE; + } + else + { + if (IsHPRecoveryItem(item) == TRUE) + { + hp = GetMonData(mon, MON_DATA_HP); + if (hp == GetMonData(mon, MON_DATA_MAX_HP)) + canHeal = FALSE; + } + canHeal = PokemonUseItemEffects2(mon, item, gPartyMenu.slotId, 0); + } + PlaySE(SE_SELECT); + if (canHeal) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = func; + } + else + { + ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF); + sub_8124DC0(taskId); + gItemUseCB = ItemUseCB_Medicine; + } +} + +void ItemUseCB_Medicine(u8 taskId, TaskFunc func) +{ + u16 hp = 0; + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = gSpecialVar_ItemId; + bool8 canHeal; + + if (NotUsingHPEVItemOnShedinja(mon, item)) + { + canHeal = IsHPRecoveryItem(item); + if (canHeal == TRUE) + { + hp = GetMonData(mon, MON_DATA_HP); + if (hp == GetMonData(mon, MON_DATA_MAX_HP)) + canHeal = FALSE; + } + if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0)) + { + WONT_HAVE_EFFECT: + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = func; + return; + } + } + else + { + goto WONT_HAVE_EFFECT; // even loop wrap won't work + } + gPartyMenuUseExitCallback = TRUE; + if (!IsItemFlute(item)) + { + PlaySE(SE_KAIFUKU); + if (gPartyMenu.action != PARTY_ACTION_REUSABLE_ITEM) + RemoveBagItem(item, 1); + } + else + { + PlaySE(SE_BIDORO); + } + SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]); + if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible) + DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1); + if (canHeal == TRUE) + { + if (hp == 0) + AnimatePartySlot(gPartyMenu.slotId, 1); + PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_DisplayHPRestoredMessage); + ResetHPTaskData(taskId, 0, hp); + return; + } + else + { + GetMonNickname(mon, gStringVar1); + GetMedicineItemEffectMessage(item); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = func; + } +} + +void Task_DisplayHPRestoredMessage(u8 taskId) +{ + GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); + DisplayPartyMenuMessage(gStringVar4, FALSE); + ScheduleBgCopyTilemapToVram(2); + HandleBattleLowHpMusicChange(); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; +} + +void Task_ClosePartyMenuAfterText(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + if (gPartyMenuUseExitCallback == FALSE) + sPartyMenuInternal->exitCallback = NULL; + Task_ClosePartyMenu(taskId); + } +} + +void ShowMoveSelectWindow(u8 slot) +{ + u8 i; + u8 moveCount = 0; + u8 fontId = 2; + u8 windowId = DisplaySelectionWindow(SELECTWINDOW_MOVES); + u16 move; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + move = GetMonData(&gPlayerParty[slot], MON_DATA_MOVE1 + i); + AddTextPrinterParameterized(windowId, + fontId, + gMoveNames[move], + GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), + (i * 16) + 2, + TEXT_SPEED_FF, + NULL); + if (move != MOVE_NONE) + ++moveCount; + } + Menu_InitCursor(windowId, fontId, 0, 2, 16, moveCount, FALSE); + ScheduleBgCopyTilemapToVram(2); +} + +void Task_HandleWhichMoveInput(u8 taskId) +{ + s8 input = Menu_ProcessInput(); + + if (input != MENU_NOTHING_CHOSEN) + { + if (input == MENU_B_PRESSED) + { + PlaySE(SE_SELECT); + ReturnToUseOnWhichMon(taskId); + } + else + { + SetSelectedMoveForPPItem(taskId); + } + } +} + +void ItemUseCB_PPRecovery(u8 taskId, UNUSED TaskFunc func) +{ + const u8 *effect; + u16 item = gSpecialVar_ItemId; + + if (item == ITEM_ENIGMA_BERRY) + effect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + effect = gItemEffectTable[item - ITEM_POTION]; + + if (!(effect[4] & ITEM4_HEAL_PP_ONE)) + { + gPartyMenu.data1 = 0; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + TryUsePPItem(taskId); + else + sub_812580C(taskId); + } + else + { + PlaySE(SE_SELECT); + DisplayPartyMenuStdMessage(PARTY_MSG_RESTORE_WHICH_MOVE); + ShowMoveSelectWindow(gPartyMenu.slotId); + gTasks[taskId].func = Task_HandleWhichMoveInput; + } +} + +void SetSelectedMoveForPPItem(u8 taskId) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + gPartyMenu.data1 = Menu_GetCursorPos(); + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + TryUsePPItem(taskId); + else + sub_812580C(taskId); +} + +void ReturnToUseOnWhichMon(u8 taskId) +{ + gTasks[taskId].func = Task_HandleChooseMonInput; + sPartyMenuInternal->exitCallback = NULL; + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); +} + +void sub_812580C(u8 taskId) +{ + bool8 noEffect = PokemonUseItemEffects2(&gPlayerParty[gPartyMenu.slotId], + gSpecialVar_ItemId, + gPartyMenu.slotId, + gPartyMenu.data1); + PlaySE(SE_SELECT); + if (noEffect) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } + else + { + sub_8124DC0(taskId); + gItemUseCB = sub_8125898; + } +} + +void sub_8125898(u8 taskId, UNUSED TaskFunc func) +{ + u16 move; + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, (u8)gPartyMenu.data1); + gPartyMenuUseExitCallback = TRUE; + ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, 0xFFFF); + PlaySE(SE_KAIFUKU); + RemoveBagItem(gSpecialVar_ItemId, 1); + move = GetMonData(mon, gPartyMenu.data1 + MON_DATA_MOVE1); + StringCopy(gStringVar1, gMoveNames[move]); + GetMedicineItemEffectMessage(gSpecialVar_ItemId); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; +} + +void TryUsePPItem(u8 taskId) +{ + u16 move = MOVE_NONE; + s16 *moveSlot = &gPartyMenu.data1; + u16 item = gSpecialVar_ItemId; + struct PartyMenu *ptr = &gPartyMenu; + struct Pokemon *mon; + + if (ExecuteTableBasedItemEffect_(ptr->slotId, item, *moveSlot)) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } + else + { + gPartyMenuUseExitCallback = TRUE; + mon = &gPlayerParty[ptr->slotId]; + ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF); + PlaySE(SE_KAIFUKU); + RemoveBagItem(item, 1); + move = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot); + StringCopy(gStringVar1, gMoveNames[move]); + GetMedicineItemEffectMessage(item); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } +} + +void ItemUseCB_PPUp(u8 taskId, UNUSED TaskFunc func) +{ + PlaySE(SE_SELECT); + DisplayPartyMenuStdMessage(PARTY_MSG_BOOST_PP_WHICH_MOVE); + ShowMoveSelectWindow(gPartyMenu.slotId); + gTasks[taskId].func = Task_HandleWhichMoveInput; +} + +u16 ItemIdToBattleMoveId(u16 item) +{ + u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH; + + return sTMHMMoves[tmNumber]; +} + +bool8 IsMoveHm(u16 move) +{ + u8 i; + + for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive + if (sTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move) + return TRUE; + return FALSE; +} + +bool8 MonKnowsMove(struct Pokemon *mon, u16 move) +{ + u8 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (GetMonData(mon, MON_DATA_MOVE1 + i) == move) + return TRUE; + } + return FALSE; +} + +void DisplayLearnMoveMessage(const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); +} + +void DisplayLearnMoveMessageAndClose(u8 taskId, const u8 *str) +{ + DisplayLearnMoveMessage(str); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; +} + +void ItemUseCB_TMHM(u8 taskId, UNUSED TaskFunc func) +{ + struct Pokemon *mon; + s16 *move; + u16 item; + + PlaySE(SE_SELECT); + mon = &gPlayerParty[gPartyMenu.slotId]; + move = &gPartyMenu.data1; + item = gSpecialVar_ItemId; + GetMonNickname(mon, gStringVar1); + move[0] = ItemIdToBattleMoveId(item); + StringCopy(gStringVar2, gMoveNames[move[0]]); + move[1] = 0; + switch (CanMonLearnTMTutor(mon, item, 0)) + { + case CANNOT_LEARN_MOVE: + DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); + return; + case ALREADY_KNOWS_MOVE: + DisplayLearnMoveMessageAndClose(taskId, gText_PkmnAlreadyKnows); + return; + } + if (GiveMoveToMon(mon, move[0]) != MON_HAS_MAX_MOVES) + { + ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF); + sub_8124DC0(taskId); + gItemUseCB = ItemUseCB_LearnedMove; + } + else + { + DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove); + gTasks[taskId].func = Task_ReplaceMoveYesNo; + } +} + +void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func) +{ + Task_LearnedMove(taskId); +} + +void Task_LearnedMove(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + s16 *move = &gPartyMenu.data1; + u16 item = gSpecialVar_ItemId; + + if (move[1] == 0) + { + AdjustFriendship(mon, 4); + if (item < ITEM_HM01_CUT) + RemoveBagItem(item, 1); + } + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[move[0]]); + StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_DoLearnedMoveFanfareAfterText; +} + +void Task_DoLearnedMoveFanfareAfterText(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PlayFanfare(MUS_FANFA1); + gTasks[taskId].func = Task_LearnNextMoveOrClosePartyMenu; + } +} + +void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) +{ + if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))) + { + if (gPartyMenu.learnMoveState == 1) + Task_TryLearningNextMove(taskId); + else + { + if (gPartyMenu.learnMoveState == 2) // never occurs + gSpecialVar_Result = TRUE; + Task_ClosePartyMenu(taskId); + } + } +} + +void Task_ReplaceMoveYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleReplaceMoveYesNoInput; + } +} + +void Task_HandleReplaceMoveYesNoInput(u8 taskId) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + DisplayPartyMenuMessage(gText_WhichMoveToForget, TRUE); + gTasks[taskId].func = Task_ShowSummaryScreenToForgetMove; + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + StopLearningMovePrompt(taskId); + break; + } +} + +void Task_ShowSummaryScreenToForgetMove(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + sPartyMenuInternal->exitCallback = CB2_ShowSummaryScreenToForgetMove; + Task_ClosePartyMenu(taskId); + } +} + +void CB2_ShowSummaryScreenToForgetMove(void) +{ + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuWhileLearningMove, gPartyMenu.data1); +} + +void CB2_ReturnToPartyMenuWhileLearningMove(void) +{ + u8 moveIdx = GetMoveSlotToReplace(); + u16 move; + s32 learnMoveState = gPartyMenu.learnMoveState; + + if (learnMoveState == 0 && moveIdx != MAX_MON_MOVES) + { + move = GetMonData(&gPlayerParty[gPartyMenu.slotId], moveIdx + MON_DATA_MOVE1); + sub_811C568(gPartyMenu.slotId, gSpecialVar_ItemId, move, sub_8124EFC); + gItemUseCB = sub_8125F4C; + gPartyMenu.action = learnMoveState; + } + else + { + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); + } +} + +void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (GetMoveSlotToReplace() != MAX_MON_MOVES) + DisplayPartyMenuForgotMoveMessage(taskId); + else + StopLearningMovePrompt(taskId); + } +} + +void sub_8125F4C(u8 taskId, UNUSED TaskFunc func) +{ + sub_8125F5C(taskId); +} + +void sub_8125F5C(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u8 moveIdx = GetMoveSlotToReplace(); + u16 move = GetMonData(mon, moveIdx + MON_DATA_MOVE1); + + ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, move); + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[move]); + RemoveMonPPBonus(mon, moveIdx); + SetMonMoveSlot(mon, gPartyMenu.data1, moveIdx); + Task_LearnedMove(taskId); +} + +void DisplayPartyMenuForgotMoveMessage(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 move = GetMonData(mon, MON_DATA_MOVE1 + GetMoveSlotToReplace()); + + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[move]); + DisplayLearnMoveMessage(gText_12PoofForgotMove); + gTasks[taskId].func = Task_PartyMenuReplaceMove; +} + +void Task_PartyMenuReplaceMove(u8 taskId) +{ + struct Pokemon *mon; + u16 move; + + if (IsPartyMenuTextPrinterActive() != TRUE) + { + mon = &gPlayerParty[gPartyMenu.slotId]; + RemoveMonPPBonus(mon, GetMoveSlotToReplace()); + move = gPartyMenu.data1; + SetMonMoveSlot(mon, move, GetMoveSlotToReplace()); + Task_LearnedMove(taskId); + } +} + +void StopLearningMovePrompt(u8 taskId) +{ + StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); + StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_StopLearningMoveYesNo; +} + +void Task_StopLearningMoveYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleStopLearningMoveYesNoInput; + } +} + +void Task_HandleStopLearningMoveYesNoInput(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); + StringExpandPlaceholders(gStringVar4, gText_MoveNotLearned); + DisplayPartyMenuMessage(gStringVar4, TRUE); + if (gPartyMenu.learnMoveState == 1) + { + gTasks[taskId].func = Task_TryLearningNextMoveAfterText; + } + else + { + if (gPartyMenu.learnMoveState == 2) // never occurs + gSpecialVar_Result = FALSE; + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); + DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove); + gTasks[taskId].func = Task_ReplaceMoveYesNo; + break; + } +} diff --git a/src/start_menu.c b/src/start_menu.c index 4a4fe52e3..2a1713902 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -504,7 +504,7 @@ static bool8 StartMenuPlayerCallback(void) PlayRainStoppingSoundEffect(); DestroySafariZoneStatsWindow(); CleanupOverworldWindowsAndTilemaps(); - InitTrainerCard(CB2_ReturnToStartMenu); + InitTrainerCard(CB2_ReturnToFieldWithOpenMenu); return TRUE; } return FALSE; @@ -524,7 +524,7 @@ static bool8 StartMenuOptionCallback(void) DestroySafariZoneStatsWindow(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_OptionsMenuFromStartMenu); - gMain.savedCallback = CB2_ReturnToStartMenu; + gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu; return TRUE; } return FALSE; @@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void) { PlayRainStoppingSoundEffect(); CleanupOverworldWindowsAndTilemaps(); - InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToStartMenu); + InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu); return TRUE; } return FALSE; diff --git a/src/trade.c b/src/trade.c index 537a5503b..4921a1ba3 100644 --- a/src/trade.c +++ b/src/trade.c @@ -4474,7 +4474,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str return 0; } -int Trade_CanTradeSelectedMon(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) +int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) { u8 canTradeEggAndNational = a0.unk_01_0; From 972c044d71a870128d2ac41b5b407a1db41d60de Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 03:03:29 +0800 Subject: [PATCH 6/9] party_menu fourth quarter --- asm/item_menu.s | 4 +- asm/link_rfu_3.s | 4 +- asm/party_menu.s | 4264 -------------------------------- asm/pokemon_special_anim.s | 6 +- data/event_scripts.s | 2 +- data/specials.inc | 2 +- data/strings.s | 14 +- include/battle_tower.h | 2 + include/constants/party_menu.h | 4 +- include/item.h | 3 +- include/party_menu.h | 12 +- include/player_pc.h | 5 +- include/pokemon.h | 4 +- include/pokemon_special_anim.h | 2 +- include/strings.h | 10 + ld_script.txt | 1 - src/battle_gfx_sfx_util.c | 4 +- src/battle_main.c | 4 +- src/battle_script_commands.c | 4 +- src/item.c | 2 +- src/item_pc.c | 2 +- src/item_use.c | 8 +- src/mailbox_pc.c | 4 +- src/party_menu.c | 1491 ++++++++++- src/player_pc.c | 24 +- src/pokemon.c | 10 +- 26 files changed, 1551 insertions(+), 4341 deletions(-) delete mode 100644 asm/party_menu.s diff --git a/asm/item_menu.s b/asm/item_menu.s index c2c1925f2..3f662656e 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -6857,7 +6857,7 @@ _0810B564: bl DestroyListMenuTask bl sub_810AECC ldr r1, _0810B5B0 @ =gItemUseCB - ldr r0, _0810B5B4 @ =ItemUseCB_Medicine + ldr r0, _0810B5B4 @ =ItemUseCB_MedicineStep str r0, [r1] ldr r0, _0810B5B8 @ =ChooseMonForInBattleItem bl ItemMenu_SetExitCallback @@ -6869,7 +6869,7 @@ _0810B564: b _0810B5C6 .align 2, 0 _0810B5B0: .4byte gItemUseCB -_0810B5B4: .4byte ItemUseCB_Medicine +_0810B5B4: .4byte ItemUseCB_MedicineStep _0810B5B8: .4byte ChooseMonForInBattleItem _0810B5BC: .4byte sub_810B070 _0810B5C0: diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index d996721ad..1e076a55e 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -7006,7 +7006,7 @@ _08119512: str r0, [r1] ldr r1, _08119538 @ =CB2_ReturnToField movs r0, 0x8 - bl ChooseMonForMoveTutor + bl sub_81277F4 b _081198DC .align 2, 0 _08119528: .4byte gPaletteFade @@ -7359,7 +7359,7 @@ _081197CA: str r0, [r1] ldr r1, _0811983C @ =CB2_ReturnToField movs r0, 0x9 - bl ChooseMonForMoveTutor + bl sub_81277F4 adds r0, r6, 0 bl sub_81186B0 ldrh r0, [r7, 0x2] diff --git a/asm/party_menu.s b/asm/party_menu.s deleted file mode 100644 index 0e68a23b2..000000000 --- a/asm/party_menu.s +++ /dev/null @@ -1,4264 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Task_TryLearningNextMoveAfterText -Task_TryLearningNextMoveAfterText: @ 812628C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081262A4 - adds r0, r4, 0 - bl Task_TryLearningNextMove -_081262A4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_TryLearningNextMoveAfterText - - thumb_func_start dp05_rare_candy -dp05_rare_candy: @ 81262AC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _081262E8 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r7, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081262EC @ =gPlayerParty - adds r4, r1, r0 - ldr r0, _081262F0 @ =gSpecialVar_ItemId - ldrh r5, [r0] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _081262F4 - ldrb r2, [r7, 0x9] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl PokemonUseItemEffects2 - lsls r0, 24 - lsrs r4, r0, 24 - b _081262F6 - .align 2, 0 -_081262E8: .4byte gPartyMenu -_081262EC: .4byte gPlayerParty -_081262F0: .4byte gSpecialVar_ItemId -_081262F4: - movs r4, 0x1 -_081262F6: - movs r0, 0x5 - bl PlaySE - cmp r4, 0 - beq _08126330 - ldr r1, _08126324 @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - ldr r0, _08126328 @ =gText_WontHaveEffect - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _0812632C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - mov r1, r8 - str r1, [r0] - b _0812633C - .align 2, 0 -_08126324: .4byte gPartyMenuUseExitCallback -_08126328: .4byte gText_WontHaveEffect -_0812632C: .4byte gTasks -_08126330: - adds r0, r6, 0 - bl sub_8124DC0 - ldr r1, _08126348 @ =gItemUseCB - ldr r0, _0812634C @ =ItemUseCB_RareCandy - str r0, [r1] -_0812633C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126348: .4byte gItemUseCB -_0812634C: .4byte ItemUseCB_RareCandy - thumb_func_end dp05_rare_candy - - thumb_func_start ItemUseCB_RareCandy -ItemUseCB_RareCandy: @ 8126350 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r6, _08126410 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r6, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r0, _08126414 @ =gPlayerParty - adds r4, r0 - ldr r0, _08126418 @ =sPartyMenuInternal - ldr r7, [r0] - movs r2, 0x86 - lsls r2, 2 - adds r1, r7, r2 - adds r0, r4, 0 - bl GetMonLevelUpWindowStats - ldrb r0, [r6, 0x9] - ldr r5, _0812641C @ =gSpecialVar_ItemId - ldrh r1, [r5] - movs r2, 0 - bl ExecuteTableBasedItemEffect_ - movs r0, 0x89 - lsls r0, 2 - adds r1, r7, r0 - adds r0, r4, 0 - bl GetMonLevelUpWindowStats - ldr r1, _08126420 @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - ldrh r2, [r5] - ldr r3, _08126424 @ =0x0000ffff - movs r0, 0x4 - adds r1, r4, 0 - bl ItemUse_SetQuestLogEvent - movs r0, 0 - bl PlayFanfareByFanfareNum - ldrb r0, [r6, 0x9] - adds r1, r4, 0 - bl UpdateMonDisplayInfoAfterRareCandy - ldrh r0, [r5] - movs r1, 0x1 - bl RemoveBagItem - ldr r1, _08126428 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _0812642C @ =gStringVar2 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08126430 @ =gStringVar4 - ldr r1, _08126434 @ =gText_PkmnElevatedToLvVar2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08126438 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812643C @ =Task_DisplayLevelUpStatsPg1 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126410: .4byte gPartyMenu -_08126414: .4byte gPlayerParty -_08126418: .4byte sPartyMenuInternal -_0812641C: .4byte gSpecialVar_ItemId -_08126420: .4byte gPartyMenuUseExitCallback -_08126424: .4byte 0x0000ffff -_08126428: .4byte gStringVar1 -_0812642C: .4byte gStringVar2 -_08126430: .4byte gStringVar4 -_08126434: .4byte gText_PkmnElevatedToLvVar2 -_08126438: .4byte gTasks -_0812643C: .4byte Task_DisplayLevelUpStatsPg1 - thumb_func_end ItemUseCB_RareCandy - - thumb_func_start UpdateMonDisplayInfoAfterRareCandy -UpdateMonDisplayInfoAfterRareCandy: @ 8126440 - push {r4-r7,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r6, _081264C0 @ =sPartyMenuBoxes - lsls r4, r7, 4 - ldr r1, [r6] - adds r1, r4 - adds r0, r5, 0 - bl SetPartyMonAilmentGfx - ldr r2, _081264C4 @ =gSprites - ldr r0, [r6] - adds r3, r4, r0 - ldrb r1, [r3, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _0812647C - adds r0, r5, 0 - adds r1, r3, 0 - movs r2, 0x1 - bl DisplayPartyPokemonLevelCheck -_0812647C: - ldr r1, [r6] - adds r1, r4 - adds r0, r5, 0 - movs r2, 0x1 - bl DisplayPartyPokemonHPCheck - ldr r1, [r6] - adds r1, r4 - adds r0, r5, 0 - movs r2, 0x1 - bl DisplayPartyPokemonMaxHPCheck - ldr r1, [r6] - adds r1, r4 - adds r0, r5, 0 - bl DisplayPartyPokemonHPBarCheck - ldr r0, [r6] - adds r0, r4, r0 - ldrb r0, [r0, 0x9] - adds r1, r5, 0 - bl UpdatePartyMonHPBar - adds r0, r7, 0 - movs r1, 0x1 - bl AnimatePartySlot - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081264C0: .4byte sPartyMenuBoxes -_081264C4: .4byte gSprites - thumb_func_end UpdateMonDisplayInfoAfterRareCandy - - thumb_func_start Task_DisplayLevelUpStatsPg1 -Task_DisplayLevelUpStatsPg1: @ 81264C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _08126514 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08126514 - ldr r0, _0812651C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081264FA - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08126514 -_081264FA: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl DisplayLevelUpStatsPg1 - ldr r0, _08126520 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08126524 @ =Task_DisplayLevelUpStatsPg2 - str r0, [r1] -_08126514: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812651C: .4byte gMain -_08126520: .4byte gTasks -_08126524: .4byte Task_DisplayLevelUpStatsPg2 - thumb_func_end Task_DisplayLevelUpStatsPg1 - - thumb_func_start Task_DisplayLevelUpStatsPg2 -Task_DisplayLevelUpStatsPg2: @ 8126528 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08126564 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08126542 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812655C -_08126542: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl DisplayLevelUpStatsPg2 - ldr r0, _08126568 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812656C @ =Task_TryLearnNewMoves - str r0, [r1] -_0812655C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08126564: .4byte gMain -_08126568: .4byte gTasks -_0812656C: .4byte Task_TryLearnNewMoves - thumb_func_end Task_DisplayLevelUpStatsPg2 - - thumb_func_start DisplayLevelUpStatsPg1 -DisplayLevelUpStatsPg1: @ 8126570 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _081265B8 @ =sPartyMenuInternal - ldr r5, [r0] - movs r0, 0x86 - lsls r0, 2 - adds r4, r5, r0 - bl CreateLevelUpStatsWindow - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x18] - ldrh r0, [r4, 0x18] - movs r1, 0x89 - lsls r1, 2 - adds r2, r5, r1 - movs r1, 0x2 - str r1, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - adds r1, r4, 0 - movs r3, 0x1 - bl DrawLevelUpWindowPg1 - ldrb r0, [r4, 0x18] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081265B8: .4byte sPartyMenuInternal - thumb_func_end DisplayLevelUpStatsPg1 - - thumb_func_start DisplayLevelUpStatsPg2 -DisplayLevelUpStatsPg2: @ 81265BC - push {r4,lr} - sub sp, 0x4 - ldr r0, _081265F4 @ =sPartyMenuInternal - ldr r1, [r0] - movs r0, 0x86 - lsls r0, 2 - adds r4, r1, r0 - ldrh r0, [r4, 0x18] - movs r2, 0x89 - lsls r2, 2 - adds r1, r2 - movs r2, 0x3 - str r2, [sp] - movs r2, 0x1 - movs r3, 0x2 - bl DrawLevelUpWindowPg2 - ldrb r0, [r4, 0x18] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081265F4: .4byte sPartyMenuInternal - thumb_func_end DisplayLevelUpStatsPg2 - - thumb_func_start Task_TryLearnNewMoves -Task_TryLearnNewMoves: @ 81265F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _0812669A - ldr r0, _08126650 @ =gMain - ldrh r1, [r0, 0x2E] - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _08126620 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812669A -_08126620: - bl RemoveLevelUpStatsWindow - ldr r4, _08126654 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r4, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08126658 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r1, r0, 16 - strh r6, [r4, 0x10] - ldr r0, _0812665C @ =0x0000fffe - cmp r1, r0 - beq _0812667C - cmp r1, r0 - bgt _08126660 - cmp r1, 0 - beq _0812666C - b _08126694 - .align 2, 0 -_08126650: .4byte gMain -_08126654: .4byte gPartyMenu -_08126658: .4byte gPlayerParty -_0812665C: .4byte 0x0000fffe -_08126660: - ldr r0, _08126668 @ =0x0000ffff - cmp r1, r0 - beq _08126674 - b _08126694 - .align 2, 0 -_08126668: .4byte 0x0000ffff -_0812666C: - adds r0, r5, 0 - bl PartyMenuTryEvolution - b _0812669A -_08126674: - adds r0, r5, 0 - bl DisplayMonNeedsToReplaceMove - b _0812669A -_0812667C: - ldr r0, _0812668C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08126690 @ =Task_TryLearningNextMove - str r0, [r1] - b _0812669A - .align 2, 0 -_0812668C: .4byte gTasks -_08126690: .4byte Task_TryLearningNextMove -_08126694: - adds r0, r5, 0 - bl DisplayMonLearnedMove -_0812669A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end Task_TryLearnNewMoves - - thumb_func_start Task_TryLearningNextMove -Task_TryLearningNextMove: @ 81266A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081266D0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081266D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _081266D8 @ =0x0000fffe - cmp r1, r0 - beq _081266FE - cmp r1, r0 - bgt _081266DC - cmp r1, 0 - beq _081266E8 - b _081266F8 - .align 2, 0 -_081266D0: .4byte gPartyMenu -_081266D4: .4byte gPlayerParty -_081266D8: .4byte 0x0000fffe -_081266DC: - ldr r0, _081266E4 @ =0x0000ffff - cmp r1, r0 - beq _081266F0 - b _081266F8 - .align 2, 0 -_081266E4: .4byte 0x0000ffff -_081266E8: - adds r0, r4, 0 - bl PartyMenuTryEvolution - b _081266FE -_081266F0: - adds r0, r4, 0 - bl DisplayMonNeedsToReplaceMove - b _081266FE -_081266F8: - adds r0, r4, 0 - bl DisplayMonLearnedMove -_081266FE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_TryLearningNextMove - - thumb_func_start PartyMenuTryEvolution -PartyMenuTryEvolution: @ 8126704 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _08126748 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r6, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0812674C @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08126754 - bl FreePartyPointers - ldr r0, _08126750 @ =gCB2_AfterEvolution - ldr r1, [r6] - str r1, [r0] - ldrb r3, [r6, 0x9] - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl BeginEvolutionScene - adds r0, r5, 0 - bl DestroyTask - b _08126762 - .align 2, 0 -_08126748: .4byte gPartyMenu -_0812674C: .4byte gPlayerParty -_08126750: .4byte gCB2_AfterEvolution -_08126754: - ldr r0, _08126768 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812676C @ =Task_ClosePartyMenuAfterText - str r0, [r1] -_08126762: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126768: .4byte gTasks -_0812676C: .4byte Task_ClosePartyMenuAfterText - thumb_func_end PartyMenuTryEvolution - - thumb_func_start DisplayMonNeedsToReplaceMove -DisplayMonNeedsToReplaceMove: @ 8126770 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _081267DC @ =gPartyMenu - mov r8, r0 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _081267E0 @ =gPlayerParty - adds r0, r1 - ldr r1, _081267E4 @ =gStringVar1 - bl GetMonNickname - ldr r0, _081267E8 @ =gStringVar2 - ldr r6, _081267EC @ =gMoveToLearn - ldrh r2, [r6] - movs r1, 0xD - muls r1, r2 - ldr r2, _081267F0 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _081267F4 @ =gStringVar4 - ldr r1, _081267F8 @ =gText_PkmnNeedsToReplaceMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldrh r0, [r6] - mov r1, r8 - strh r0, [r1, 0xE] - ldr r1, _081267FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126800 @ =Task_ReplaceMoveYesNo - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081267DC: .4byte gPartyMenu -_081267E0: .4byte gPlayerParty -_081267E4: .4byte gStringVar1 -_081267E8: .4byte gStringVar2 -_081267EC: .4byte gMoveToLearn -_081267F0: .4byte gMoveNames -_081267F4: .4byte gStringVar4 -_081267F8: .4byte gText_PkmnNeedsToReplaceMove -_081267FC: .4byte gTasks -_08126800: .4byte Task_ReplaceMoveYesNo - thumb_func_end DisplayMonNeedsToReplaceMove - - thumb_func_start DisplayMonLearnedMove -DisplayMonLearnedMove: @ 8126804 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - adds r5, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _08126870 @ =gPartyMenu - mov r8, r0 - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08126874 @ =gPlayerParty - adds r0, r1 - ldr r1, _08126878 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0812687C @ =gStringVar2 - movs r1, 0xD - muls r1, r5 - ldr r2, _08126880 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _08126884 @ =gStringVar4 - ldr r1, _08126888 @ =gText_PkmnLearnedMove3 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - mov r0, r8 - strh r5, [r0, 0xE] - ldr r1, _0812688C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126890 @ =Task_DoLearnedMoveFanfareAfterText - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08126870: .4byte gPartyMenu -_08126874: .4byte gPlayerParty -_08126878: .4byte gStringVar1 -_0812687C: .4byte gStringVar2 -_08126880: .4byte gMoveNames -_08126884: .4byte gStringVar4 -_08126888: .4byte gText_PkmnLearnedMove3 -_0812688C: .4byte gTasks -_08126890: .4byte Task_DoLearnedMoveFanfareAfterText - thumb_func_end DisplayMonLearnedMove - - thumb_func_start ItemUseCB_SacredAsh -ItemUseCB_SacredAsh: @ 8126894 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081268C8 @ =sPartyMenuInternal - ldr r2, [r1] - movs r3, 0x86 - lsls r3, 2 - adds r1, r2, r3 - movs r3, 0 - strh r3, [r1] - ldr r4, _081268CC @ =0x0000021a - adds r1, r2, r4 - strh r3, [r1] - ldr r1, _081268D0 @ =gPartyMenu - ldrb r1, [r1, 0x9] - lsls r1, 24 - asrs r1, 24 - movs r3, 0x87 - lsls r3, 2 - adds r2, r3 - strh r1, [r2] - bl UseSacredAsh - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081268C8: .4byte sPartyMenuInternal -_081268CC: .4byte 0x0000021a -_081268D0: .4byte gPartyMenu - thumb_func_end ItemUseCB_SacredAsh - - thumb_func_start UseSacredAsh -UseSacredAsh: @ 81268D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - mov r9, r4 - ldr r6, _08126930 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r6, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08126934 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08126920 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r6, 0x9] - ldr r1, _08126938 @ =gSpecialVar_ItemId - ldrh r1, [r1] - movs r2, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - cmp r0, 0 - beq _08126944 -_08126920: - ldr r0, _0812693C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08126940 @ =Task_SacredAshLoop - str r0, [r1] - b _081269EE - .align 2, 0 -_08126930: .4byte gPartyMenu -_08126934: .4byte gPlayerParty -_08126938: .4byte gSpecialVar_ItemId -_0812693C: .4byte gTasks -_08126940: .4byte Task_SacredAshLoop -_08126944: - movs r0, 0x1 - bl PlaySE - ldr r7, _08126A00 @ =sPartyMenuInternal - ldr r0, [r7] - ldr r1, _08126A04 @ =0x0000021a - mov r10, r1 - add r0, r10 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _08126960 - ldr r0, _08126A08 @ =gUnknown_203B0D0 - str r5, [r0] -_08126960: - ldr r4, _08126A0C @ =sPartyMenuBoxes - movs r0, 0x9 - ldrsb r0, [r6, r0] - lsls r0, 4 - ldr r1, [r4] - adds r1, r0 - adds r0, r5, 0 - bl SetPartyMonAilmentGfx - ldr r2, _08126A10 @ =gSprites - movs r0, 0x9 - ldrsb r0, [r6, r0] - ldr r1, [r4] - lsls r0, 4 - adds r3, r0, r1 - ldrb r1, [r3, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _0812699C - adds r0, r5, 0 - adds r1, r3, 0 - movs r2, 0x1 - bl DisplayPartyPokemonLevelCheck -_0812699C: - ldr r0, [r7] - movs r1, 0x87 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl AnimatePartySlot - ldrb r0, [r6, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r2, r8 - subs r3, r2 - lsls r3, 16 - asrs r3, 16 - ldrb r1, [r6, 0x9] - ldr r0, _08126A14 @ =Task_SacredAshDisplayHPRestored - str r0, [sp] - mov r0, r9 - movs r2, 0x1 - bl PartyMenuModifyHP - mov r0, r9 - movs r1, 0 - mov r2, r8 - bl ResetHPTaskData - ldr r0, [r7] - movs r2, 0x86 - lsls r2, 2 - adds r1, r0, r2 - movs r2, 0x1 - strh r2, [r1] - add r0, r10 - strh r2, [r0] -_081269EE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126A00: .4byte sPartyMenuInternal -_08126A04: .4byte 0x0000021a -_08126A08: .4byte gUnknown_203B0D0 -_08126A0C: .4byte sPartyMenuBoxes -_08126A10: .4byte gSprites -_08126A14: .4byte Task_SacredAshDisplayHPRestored - thumb_func_end UseSacredAsh - - thumb_func_start Task_SacredAshLoop -Task_SacredAshLoop: @ 8126A18 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08126AF6 - ldr r5, _08126A80 @ =sPartyMenuInternal - ldr r2, [r5] - movs r0, 0x86 - lsls r0, 2 - adds r1, r2, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - ldr r3, _08126A84 @ =gPartyMenu - cmp r0, 0x1 - bne _08126A4E - movs r0, 0 - strh r0, [r1] - movs r1, 0x9 - ldrsb r1, [r3, r1] - movs r6, 0x87 - lsls r6, 2 - adds r0, r2, r6 - strh r1, [r0] -_08126A4E: - adds r1, r3, 0 - ldrb r0, [r1, 0x9] - adds r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x6 - bne _08126AF0 - ldr r0, [r5] - ldr r1, _08126A88 @ =0x0000021a - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - cmp r1, 0 - bne _08126A94 - ldr r0, _08126A8C @ =gPartyMenuUseExitCallback - strb r1, [r0] - ldr r0, _08126A90 @ =gText_WontHaveEffect - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - b _08126ABE - .align 2, 0 -_08126A80: .4byte sPartyMenuInternal -_08126A84: .4byte gPartyMenu -_08126A88: .4byte 0x0000021a -_08126A8C: .4byte gPartyMenuUseExitCallback -_08126A90: .4byte gText_WontHaveEffect -_08126A94: - ldr r1, _08126AD4 @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - ldrb r1, [r3, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _08126AB4 - ldr r0, _08126AD8 @ =gUnknown_203B0D0 - ldr r1, [r0] - ldr r0, _08126ADC @ =gSpecialVar_ItemId - ldrh r2, [r0] - ldr r3, _08126AE0 @ =0x0000ffff - movs r0, 0x4 - bl ItemUse_SetQuestLogEvent -_08126AB4: - ldr r0, _08126ADC @ =gSpecialVar_ItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem -_08126ABE: - ldr r1, _08126AE4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126AE8 @ =Task_ClosePartyMenuAfterText - str r1, [r0] - ldr r1, _08126AEC @ =gPartyMenu - movs r0, 0 - strb r0, [r1, 0x9] - b _08126AF6 - .align 2, 0 -_08126AD4: .4byte gPartyMenuUseExitCallback -_08126AD8: .4byte gUnknown_203B0D0 -_08126ADC: .4byte gSpecialVar_ItemId -_08126AE0: .4byte 0x0000ffff -_08126AE4: .4byte gTasks -_08126AE8: .4byte Task_ClosePartyMenuAfterText -_08126AEC: .4byte gPartyMenu -_08126AF0: - adds r0, r4, 0 - bl UseSacredAsh -_08126AF6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end Task_SacredAshLoop - - thumb_func_start Task_SacredAshDisplayHPRestored -Task_SacredAshDisplayHPRestored: @ 8126AFC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08126B44 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08126B48 @ =gPlayerParty - adds r0, r1 - ldr r1, _08126B4C @ =gStringVar1 - bl GetMonNickname - ldr r4, _08126B50 @ =gStringVar4 - ldr r1, _08126B54 @ =gText_PkmnHPRestoredByVar2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08126B58 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126B5C @ =Task_SacredAshLoop - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08126B44: .4byte gPartyMenu -_08126B48: .4byte gPlayerParty -_08126B4C: .4byte gStringVar1 -_08126B50: .4byte gStringVar4 -_08126B54: .4byte gText_PkmnHPRestoredByVar2 -_08126B58: .4byte gTasks -_08126B5C: .4byte Task_SacredAshLoop - thumb_func_end Task_SacredAshDisplayHPRestored - - thumb_func_start sub_8126B60 -sub_8126B60: @ 8126B60 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r2, _08126BB0 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r2, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08126BB4 @ =gPlayerParty - adds r0, r1 - ldr r1, _08126BB8 @ =gSpecialVar_ItemId - ldrh r1, [r1] - ldrb r2, [r2, 0x9] - movs r3, 0 - bl PokemonUseItemEffects2 - lsls r0, 24 - cmp r0, 0 - beq _08126BC8 - ldr r1, _08126BBC @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - ldr r0, _08126BC0 @ =gText_WontHaveEffect - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _08126BC4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - str r5, [r0] - b _08126BCE - .align 2, 0 -_08126BB0: .4byte gPartyMenu -_08126BB4: .4byte gPlayerParty -_08126BB8: .4byte gSpecialVar_ItemId -_08126BBC: .4byte gPartyMenuUseExitCallback -_08126BC0: .4byte gText_WontHaveEffect -_08126BC4: .4byte gTasks -_08126BC8: - adds r0, r4, 0 - bl sub_8124DC0 -_08126BCE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8126B60 - - thumb_func_start sub_8126BD4 -sub_8126BD4: @ 8126BD4 - push {r4,r5,lr} - ldr r1, _08126C10 @ =gCB2_AfterEvolution - ldr r4, _08126C14 @ =gPartyMenu - ldr r0, [r4] - str r0, [r1] - ldrb r0, [r4, 0x9] - ldr r5, _08126C18 @ =gSpecialVar_ItemId - ldrh r1, [r5] - movs r2, 0 - bl ExecuteTableBasedItemEffect_ - movs r1, 0x9 - ldrsb r1, [r4, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08126C1C @ =gPlayerParty - adds r1, r0 - ldrh r2, [r5] - ldr r3, _08126C20 @ =0x0000ffff - movs r0, 0x4 - bl ItemUse_SetQuestLogEvent - ldrh r0, [r5] - movs r1, 0x1 - bl RemoveBagItem - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08126C10: .4byte gCB2_AfterEvolution -_08126C14: .4byte gPartyMenu -_08126C18: .4byte gSpecialVar_ItemId -_08126C1C: .4byte gPlayerParty -_08126C20: .4byte 0x0000ffff - thumb_func_end sub_8126BD4 - - thumb_func_start sub_8126C24 -sub_8126C24: @ 8126C24 - push {lr} - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _08126C60 - ldr r0, _08126C54 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08126C58 @ =gPlayerParty - adds r0, r1 - ldr r1, _08126C5C @ =gSpecialVar_ItemId - ldrh r2, [r1] - movs r1, 0x2 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x97 - bls _08126C60 - movs r0, 0 - b _08126C62 - .align 2, 0 -_08126C54: .4byte gPartyMenu -_08126C58: .4byte gPlayerParty -_08126C5C: .4byte gSpecialVar_ItemId -_08126C60: - movs r0, 0x1 -_08126C62: - pop {r1} - bx r1 - thumb_func_end sub_8126C24 - - thumb_func_start GetItemEffectType -GetItemEffectType: @ 8126C68 - push {r4,r5,lr} - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, r1, 0 - subs r2, 0xD - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0xA5 - bls _08126C7C - b _08126DBC -_08126C7C: - cmp r1, 0xAF - bne _08126C94 - ldr r0, _08126C8C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08126C90 @ =0x00003108 - adds r4, r0, r1 - b _08126C9C - .align 2, 0 -_08126C8C: .4byte gSaveBlock1Ptr -_08126C90: .4byte 0x00003108 -_08126C94: - ldr r1, _08126CC4 @ =gItemEffectTable - lsls r0, r2, 2 - adds r0, r1 - ldr r4, [r0] -_08126C9C: - ldrb r1, [r4] - movs r5, 0x3F - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08126CBE - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08126CBE - ldrb r0, [r4, 0x2] - cmp r0, 0 - bne _08126CBE - ldrb r3, [r4, 0x3] - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _08126CC8 -_08126CBE: - movs r0, 0 - b _08126DC2 - .align 2, 0 -_08126CC4: .4byte gItemEffectTable -_08126CC8: - movs r2, 0x40 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08126CD6 - movs r0, 0xA - b _08126DC2 -_08126CD6: - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _08126CE2 - movs r0, 0x1 - b _08126DC2 -_08126CE2: - adds r2, r5, 0 - ands r2, r3 - cmp r2, 0 - bne _08126CF0 - lsrs r0, r1, 7 - cmp r0, 0 - beq _08126D32 -_08126CF0: - cmp r2, 0x20 - bne _08126CF8 - movs r0, 0x4 - b _08126DC2 -_08126CF8: - cmp r2, 0x10 - bne _08126D00 - movs r0, 0x3 - b _08126DC2 -_08126D00: - cmp r2, 0x8 - bne _08126D08 - movs r0, 0x5 - b _08126DC2 -_08126D08: - cmp r2, 0x4 - bne _08126D10 - movs r0, 0x6 - b _08126DC2 -_08126D10: - cmp r2, 0x2 - bne _08126D18 - movs r0, 0x7 - b _08126DC2 -_08126D18: - cmp r2, 0x1 - bne _08126D20 - movs r0, 0x8 - b _08126DC2 -_08126D20: - lsrs r0, r1, 7 - cmp r0, 0 - beq _08126D2E - cmp r2, 0 - bne _08126D2E - movs r0, 0x9 - b _08126DC2 -_08126D2E: - movs r0, 0xB - b _08126DC2 -_08126D32: - ldrb r1, [r4, 0x4] - movs r0, 0x44 - ands r0, r1 - adds r2, r1, 0 - cmp r0, 0 - beq _08126D42 - movs r0, 0x2 - b _08126DC2 -_08126D42: - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _08126D50 - movs r0, 0xC - b _08126DC2 -_08126D50: - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r2 - cmp r0, 0 - beq _08126D5E - movs r0, 0xD - b _08126DC2 -_08126D5E: - ldrb r1, [r4, 0x5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08126D6C - movs r0, 0xE - b _08126DC2 -_08126D6C: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08126D78 - movs r0, 0xF - b _08126DC2 -_08126D78: - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08126D84 - movs r0, 0x10 - b _08126DC2 -_08126D84: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08126D90 - movs r0, 0x11 - b _08126DC2 -_08126D90: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _08126D9C - movs r0, 0x12 - b _08126DC2 -_08126D9C: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _08126DA8 - movs r0, 0x13 - b _08126DC2 -_08126DA8: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08126DB4 - movs r0, 0x14 - b _08126DC2 -_08126DB4: - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - bne _08126DC0 -_08126DBC: - movs r0, 0x16 - b _08126DC2 -_08126DC0: - movs r0, 0x15 -_08126DC2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetItemEffectType - - thumb_func_start TryTutorSelectedMon -TryTutorSelectedMon: @ 8126DC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08126E4C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08126E98 - ldr r7, _08126E50 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r7, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08126E54 @ =gPlayerParty - adds r5, r1, r0 - movs r0, 0xE - adds r0, r7 - mov r8, r0 - ldr r1, _08126E58 @ =gStringVar1 - adds r0, r5, 0 - bl GetMonNickname - ldr r4, _08126E5C @ =gSpecialVar_0x8005 - ldrb r0, [r4] - bl GetTutorMove - strh r0, [r7, 0xE] - ldr r0, _08126E60 @ =gStringVar2 - movs r1, 0xE - ldrsh r2, [r7, r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _08126E64 @ =gMoveNames - adds r1, r2 - bl StringCopy - movs r0, 0x2 - mov r1, r8 - strh r0, [r1, 0x2] - ldrb r2, [r4] - adds r0, r5, 0 - movs r1, 0 - bl CanMonLearnTMTutor - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08126E6C - cmp r0, 0x2 - beq _08126E74 - ldrh r1, [r7, 0xE] - adds r0, r5, 0 - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _08126E68 @ =0xffff0000 - cmp r0, r1 - beq _08126E84 - adds r0, r6, 0 - bl Task_LearnedMove - b _08126E98 - .align 2, 0 -_08126E4C: .4byte gPaletteFade -_08126E50: .4byte gPartyMenu -_08126E54: .4byte gPlayerParty -_08126E58: .4byte gStringVar1 -_08126E5C: .4byte gSpecialVar_0x8005 -_08126E60: .4byte gStringVar2 -_08126E64: .4byte gMoveNames -_08126E68: .4byte 0xffff0000 -_08126E6C: - ldr r1, _08126E70 @ =gText_PkmnCantLearnMove - b _08126E76 - .align 2, 0 -_08126E70: .4byte gText_PkmnCantLearnMove -_08126E74: - ldr r1, _08126E80 @ =gText_PkmnAlreadyKnows -_08126E76: - adds r0, r6, 0 - bl DisplayLearnMoveMessageAndClose - b _08126E98 - .align 2, 0 -_08126E80: .4byte gText_PkmnAlreadyKnows -_08126E84: - ldr r0, _08126EA4 @ =gText_PkmnNeedsToReplaceMove - bl DisplayLearnMoveMessage - ldr r1, _08126EA8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126EAC @ =Task_ReplaceMoveYesNo - str r1, [r0] -_08126E98: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126EA4: .4byte gText_PkmnNeedsToReplaceMove -_08126EA8: .4byte gTasks -_08126EAC: .4byte Task_ReplaceMoveYesNo - thumb_func_end TryTutorSelectedMon - - thumb_func_start CB2_PartyMenuFromStartMenu -CB2_PartyMenuFromStartMenu: @ 8126EB0 - push {lr} - sub sp, 0xC - movs r0, 0 - str r0, [sp] - ldr r0, _08126ED4 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _08126ED8 @ =CB2_ReturnToFieldWithOpenMenu - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08126ED4: .4byte Task_HandleChooseMonInput -_08126ED8: .4byte CB2_ReturnToFieldWithOpenMenu - thumb_func_end CB2_PartyMenuFromStartMenu - - thumb_func_start CB2_ChooseMonToGiveItem -CB2_ChooseMonToGiveItem: @ 8126EDC - push {lr} - sub sp, 0xC - ldr r0, _08126EF8 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08126F00 - cmp r0, 0x5 - beq _08126F08 - ldr r1, _08126EFC @ =CB2_ReturnToBagMenu - b _08126F0A - .align 2, 0 -_08126EF8: .4byte gSpecialVar_ItemId -_08126EFC: .4byte CB2_ReturnToBagMenu -_08126F00: - ldr r1, _08126F04 @ =sub_8124DA0 - b _08126F0A - .align 2, 0 -_08126F04: .4byte sub_8124DA0 -_08126F08: - ldr r1, _08126F30 @ =sub_8124DB0 -_08126F0A: - movs r0, 0x6 - str r0, [sp] - ldr r0, _08126F34 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - str r1, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0x5 - movs r3, 0 - bl InitPartyMenu - ldr r1, _08126F38 @ =gPartyMenu - ldr r0, _08126F3C @ =gSpecialVar_ItemId - ldrh r0, [r0] - strh r0, [r1, 0xC] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08126F30: .4byte sub_8124DB0 -_08126F34: .4byte Task_HandleChooseMonInput -_08126F38: .4byte gPartyMenu -_08126F3C: .4byte gSpecialVar_ItemId - thumb_func_end CB2_ChooseMonToGiveItem - - thumb_func_start TryGiveItemOrMailToSelectedMon -TryGiveItemOrMailToSelectedMon: @ 8126F40 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - ldr r5, _08126F80 @ =sPartyMenuItemId - ldr r0, _08126F84 @ =gPartyMenu - mov r9, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _08126F88 @ =gPlayerParty - adds r0, r7 - movs r1, 0xC - bl GetMonData - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - bne _08126F8C - adds r0, r4, 0 - bl GiveItemOrMailToSelectedMon - b _08126FC4 - .align 2, 0 -_08126F80: .4byte sPartyMenuItemId -_08126F84: .4byte gPartyMenu -_08126F88: .4byte gPlayerParty -_08126F8C: - ldrh r0, [r5] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08126FA0 - adds r0, r4, 0 - bl DisplayItemMustBeRemovedFirstMessage - b _08126FC4 -_08126FA0: - mov r1, r9 - movs r0, 0x9 - ldrsb r0, [r1, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - ldrh r1, [r5] - movs r2, 0x1 - bl DisplayAlreadyHoldingItemSwitchMessage - ldr r1, _08126FD0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08126FD4 @ =Task_SwitchItemsFromBagYesNo - str r1, [r0] -_08126FC4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08126FD0: .4byte gTasks -_08126FD4: .4byte Task_SwitchItemsFromBagYesNo - thumb_func_end TryGiveItemOrMailToSelectedMon - - thumb_func_start GiveItemOrMailToSelectedMon -GiveItemOrMailToSelectedMon: @ 8126FD8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _08127004 @ =gPartyMenu - ldrh r0, [r5, 0xC] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08127010 - ldrh r0, [r5, 0xC] - bl RemoveItemToGiveFromBag - ldr r0, _08127008 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _0812700C @ =CB2_WriteMailToGiveMonFromBag - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - b _08127016 - .align 2, 0 -_08127004: .4byte gPartyMenu -_08127008: .4byte sPartyMenuInternal -_0812700C: .4byte CB2_WriteMailToGiveMonFromBag -_08127010: - adds r0, r4, 0 - bl GiveItemToSelectedMon -_08127016: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GiveItemOrMailToSelectedMon - - thumb_func_start GiveItemToSelectedMon -GiveItemToSelectedMon: @ 812701C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08127084 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08127078 - ldr r4, _08127088 @ =gPartyMenu - ldrh r5, [r4, 0xC] - movs r0, 0x9 - ldrsb r0, [r4, r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, _0812708C @ =gPlayerParty - adds r0, r6 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x1 - bl DisplayGaveHeldItemMessage - movs r0, 0x9 - ldrsb r0, [r4, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - adds r1, r5, 0 - bl GiveItemToMon - adds r0, r5, 0 - bl RemoveItemToGiveFromBag - ldr r1, _08127090 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08127094 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r1, [r0] -_08127078: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08127084: .4byte gPaletteFade -_08127088: .4byte gPartyMenu -_0812708C: .4byte gPlayerParty -_08127090: .4byte gTasks -_08127094: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_end GiveItemToSelectedMon - - thumb_func_start Task_UpdateHeldItemSpriteAndClosePartyMenu -Task_UpdateHeldItemSpriteAndClosePartyMenu: @ 8127098 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _081270D4 @ =gPartyMenu - ldrb r4, [r0, 0x9] - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081270CC - lsls r2, r4, 24 - asrs r2, 24 - movs r0, 0x64 - muls r0, r2 - ldr r1, _081270D8 @ =gPlayerParty - adds r0, r1 - ldr r1, _081270DC @ =sPartyMenuBoxes - lsls r2, 4 - ldr r1, [r1] - adds r1, r2 - bl UpdatePartyMonHeldItemSprite - adds r0, r5, 0 - bl Task_ClosePartyMenu -_081270CC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081270D4: .4byte gPartyMenu -_081270D8: .4byte gPlayerParty -_081270DC: .4byte sPartyMenuBoxes - thumb_func_end Task_UpdateHeldItemSpriteAndClosePartyMenu - - thumb_func_start CB2_WriteMailToGiveMonFromBag -CB2_WriteMailToGiveMonFromBag: @ 81270E0 - push {r4-r6,lr} - ldr r4, _08127128 @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r4, r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0812712C @ =gPlayerParty - adds r0, r5 - ldrh r1, [r4, 0xC] - bl GiveItemToMon - movs r0, 0x9 - ldrsb r0, [r4, r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x40 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08127130 @ =gSaveBlock1Ptr - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - ldr r0, _08127134 @ =0x00002cd0 - adds r2, r0 - ldr r1, [r1] - adds r1, r2 - ldr r2, _08127138 @ =CB2_ReturnToPartyOrBagMenuFromWritingMail - movs r0, 0x4 - bl DoEasyChatScreen - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08127128: .4byte gPartyMenu -_0812712C: .4byte gPlayerParty -_08127130: .4byte gSaveBlock1Ptr -_08127134: .4byte 0x00002cd0 -_08127138: .4byte CB2_ReturnToPartyOrBagMenuFromWritingMail - thumb_func_end CB2_WriteMailToGiveMonFromBag - - thumb_func_start CB2_ReturnToPartyOrBagMenuFromWritingMail -CB2_ReturnToPartyOrBagMenuFromWritingMail: @ 812713C - push {r4-r7,lr} - sub sp, 0xC - ldr r6, _0812718C @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r6, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08127190 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _08127194 @ =gSpecialVar_Result - ldrh r0, [r0] - cmp r0, 0 - bne _0812719C - adds r0, r5, 0 - bl TakeMailFromMon - ldr r4, _08127198 @ =sPartyMenuItemId - adds r0, r5, 0 - movs r1, 0xC - adds r2, r4, 0 - bl SetMonData - ldrh r0, [r4] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r7, 0 - bl ReturnGiveItemToBagOrPC - ldr r0, [r6] - bl SetMainCallback2 - b _081271B8 - .align 2, 0 -_0812718C: .4byte gPartyMenu -_08127190: .4byte gPlayerParty -_08127194: .4byte gSpecialVar_Result -_08127198: .4byte sPartyMenuItemId -_0812719C: - ldrb r0, [r6, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r6, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _081271C0 @ =Task_DisplayGaveMailFromBagMessage - str r1, [sp, 0x4] - ldr r1, [r6] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu -_081271B8: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081271C0: .4byte Task_DisplayGaveMailFromBagMessage - thumb_func_end CB2_ReturnToPartyOrBagMenuFromWritingMail - - thumb_func_start Task_DisplayGaveMailFromBagMessage -Task_DisplayGaveMailFromBagMessage: @ 81271C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081271EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812721E - ldr r1, _081271F0 @ =sPartyMenuItemId - ldrh r0, [r1] - cmp r0, 0 - beq _081271F8 - ldr r0, _081271F4 @ =gPartyMenu - ldrh r0, [r0, 0xC] - ldrh r1, [r1] - movs r2, 0 - bl DisplaySwitchedHeldItemMessage - b _08127210 - .align 2, 0 -_081271EC: .4byte gPaletteFade -_081271F0: .4byte sPartyMenuItemId -_081271F4: .4byte gPartyMenu -_081271F8: - ldr r2, _08127224 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r2, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08127228 @ =gPlayerParty - adds r0, r1 - ldrh r1, [r2, 0xC] - movs r2, 0 - movs r3, 0x1 - bl DisplayGaveHeldItemMessage -_08127210: - ldr r0, _0812722C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08127230 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r0, [r1] -_0812721E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127224: .4byte gPartyMenu -_08127228: .4byte gPlayerParty -_0812722C: .4byte gTasks -_08127230: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_end Task_DisplayGaveMailFromBagMessage - - thumb_func_start Task_SwitchItemsFromBagYesNo -Task_SwitchItemsFromBagYesNo: @ 8127234 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPartyMenuTextPrinterActive - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08127258 - bl PartyMenuDisplayYesNoMenu - ldr r0, _08127260 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08127264 @ =Task_HandleSwitchItemsFromBagYesNoInput - str r0, [r1] -_08127258: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127260: .4byte gTasks -_08127264: .4byte Task_HandleSwitchItemsFromBagYesNoInput - thumb_func_end Task_SwitchItemsFromBagYesNo - - thumb_func_start Task_HandleSwitchItemsFromBagYesNoInput -Task_HandleSwitchItemsFromBagYesNoInput: @ 8127268 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0812728E - cmp r1, 0 - bgt _08127288 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08127328 - b _0812733C -_08127288: - cmp r1, 0x1 - beq _0812732E - b _0812733C -_0812728E: - ldr r7, _081272C0 @ =gPartyMenu - ldrh r4, [r7, 0xC] - adds r0, r4, 0 - bl RemoveItemToGiveFromBag - ldr r6, _081272C4 @ =sPartyMenuItemId - ldrh r0, [r6] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - bne _081272CC - adds r0, r4, 0 - bl ReturnGiveItemToBagOrPC - ldrh r0, [r6] - bl BufferBagFullCantTakeItemMessage - ldr r0, _081272C8 @ =gStringVar4 - movs r1, 0 - bl DisplayPartyMenuMessage - b _0812730C - .align 2, 0 -_081272C0: .4byte gPartyMenu -_081272C4: .4byte sPartyMenuItemId -_081272C8: .4byte gStringVar4 -_081272CC: - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081272F0 - ldr r0, _081272E8 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _081272EC @ =CB2_WriteMailToGiveMonFromBag - str r0, [r1, 0x4] - adds r0, r5, 0 - bl Task_ClosePartyMenu - b _0812733C - .align 2, 0 -_081272E8: .4byte sPartyMenuInternal -_081272EC: .4byte CB2_WriteMailToGiveMonFromBag -_081272F0: - movs r1, 0x9 - ldrsb r1, [r7, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0812731C @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl GiveItemToMon - ldrh r1, [r6] - adds r0, r4, 0 - movs r2, 0x1 - bl DisplaySwitchedHeldItemMessage -_0812730C: - ldr r1, _08127320 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08127324 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r1, [r0] - b _0812733C - .align 2, 0 -_0812731C: .4byte gPlayerParty -_08127320: .4byte gTasks -_08127324: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu -_08127328: - movs r0, 0x5 - bl PlaySE -_0812732E: - ldr r0, _08127344 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08127348 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r0, [r1] -_0812733C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08127344: .4byte gTasks -_08127348: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_end Task_HandleSwitchItemsFromBagYesNoInput - - thumb_func_start DisplayItemMustBeRemovedFirstMessage -DisplayItemMustBeRemovedFirstMessage: @ 812734C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08127378 @ =gUnknown_8416BFB - movs r1, 0x1 - bl DisplayPartyMenuMessage - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _0812737C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08127380 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127378: .4byte gUnknown_8416BFB -_0812737C: .4byte gTasks -_08127380: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_end DisplayItemMustBeRemovedFirstMessage - - thumb_func_start RemoveItemToGiveFromBag -RemoveItemToGiveFromBag: @ 8127384 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0812739C @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x6 - bne _081273A0 - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveItemFromPC - b _081273A8 - .align 2, 0 -_0812739C: .4byte gPartyMenu -_081273A0: - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveBagItem -_081273A8: - pop {r0} - bx r0 - thumb_func_end RemoveItemToGiveFromBag - - thumb_func_start ReturnGiveItemToBagOrPC -ReturnGiveItemToBagOrPC: @ 81273AC - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _081273C4 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x5 - beq _081273C8 - adds r0, r1, 0 - movs r1, 0x1 - bl AddPCItem - b _081273D0 - .align 2, 0 -_081273C4: .4byte gPartyMenu -_081273C8: - adds r0, r1, 0 - movs r1, 0x1 - bl AddBagItem -_081273D0: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end ReturnGiveItemToBagOrPC - - thumb_func_start ChooseMonToGiveMailFromMailbox -ChooseMonToGiveMailFromMailbox: @ 81273D8 - push {lr} - sub sp, 0xC - movs r0, 0x6 - str r0, [sp] - ldr r0, _081273FC @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0x7 - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_081273FC: .4byte Task_HandleChooseMonInput -_08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu - thumb_func_end ChooseMonToGiveMailFromMailbox - - thumb_func_start TryGiveMailToSelectedMon -TryGiveMailToSelectedMon: @ 8127404 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08127450 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08127454 @ =gPlayerParty - adds r5, r1, r0 - ldr r1, _08127458 @ =gPartyMenuUseExitCallback - movs r0, 0 - strb r0, [r1] - ldr r2, _0812745C @ =gSaveBlock1Ptr - ldr r0, _08127460 @ =gPlayerPcMenuManager - ldrh r1, [r0] - adds r1, 0x6 - ldrh r0, [r0, 0x2] - adds r1, r0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08127464 @ =0x00002cd0 - adds r0, r1 - ldr r1, [r2] - adds r4, r1, r0 - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - cmp r0, 0 - beq _0812746C - ldr r0, _08127468 @ =gText_PkmnHoldingItemCantHoldMail - movs r1, 0x1 - bl DisplayPartyMenuMessage - b _08127482 - .align 2, 0 -_08127450: .4byte gPartyMenu -_08127454: .4byte gPlayerParty -_08127458: .4byte gPartyMenuUseExitCallback -_0812745C: .4byte gSaveBlock1Ptr -_08127460: .4byte gPlayerPcMenuManager -_08127464: .4byte 0x00002cd0 -_08127468: .4byte gText_PkmnHoldingItemCantHoldMail -_0812746C: - adds r0, r5, 0 - adds r1, r4, 0 - bl GiveMailToMon2 - adds r0, r4, 0 - bl ClearMailStruct - ldr r0, _0812749C @ =gText_MailTransferredFromMailbox - movs r1, 0x1 - bl DisplayPartyMenuMessage -_08127482: - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, _081274A0 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _081274A4 @ =Task_UpdateHeldItemSpriteAndClosePartyMenu - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812749C: .4byte gText_MailTransferredFromMailbox -_081274A0: .4byte gTasks -_081274A4: .4byte Task_UpdateHeldItemSpriteAndClosePartyMenu - thumb_func_end TryGiveMailToSelectedMon - - thumb_func_start InitChooseHalfPartyForBattle -InitChooseHalfPartyForBattle: @ 81274A8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ClearSelectedPartyOrder - movs r0, 0 - str r0, [sp] - ldr r0, _081274EC @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _081274F0 @ =gMain - ldr r0, [r0, 0x8] - str r0, [sp, 0x8] - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - ldr r1, _081274F4 @ =gPartyMenu - lsls r4, 6 - ldrb r2, [r1, 0x8] - movs r0, 0x3F - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x8] - ldr r0, _081274F8 @ =Task_ValidateChosenHalfParty - str r0, [r1, 0x4] - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081274EC: .4byte Task_HandleChooseMonInput -_081274F0: .4byte gMain -_081274F4: .4byte gPartyMenu -_081274F8: .4byte Task_ValidateChosenHalfParty - thumb_func_end InitChooseHalfPartyForBattle - - thumb_func_start ClearSelectedPartyOrder -ClearSelectedPartyOrder: @ 81274FC - push {lr} - ldr r0, _0812750C @ =gSelectedOrderFromParty - movs r1, 0 - movs r2, 0x3 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_0812750C: .4byte gSelectedOrderFromParty - thumb_func_end ClearSelectedPartyOrder - - thumb_func_start GetPartySlotEntryStatus -GetPartySlotEntryStatus: @ 8127510 - push {r4,lr} - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x64 - muls r0, r4 - ldr r1, _0812752C @ =gPlayerParty - adds r0, r1 - bl GetBattleEntryEligibility - lsls r0, 24 - cmp r0, 0 - bne _08127530 - movs r0, 0x2 - b _08127548 - .align 2, 0 -_0812752C: .4byte gPlayerParty -_08127530: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r0, 24 - bl HasPartySlotAlreadyBeenSelected - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08127546 - movs r0, 0 - b _08127548 -_08127546: - movs r0, 0x1 -_08127548: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetPartySlotEntryStatus - - thumb_func_start GetBattleEntryEligibility -GetBattleEntryEligibility: @ 8127550 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0812757A - ldr r0, _08127580 @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsrs r1, r0, 6 - cmp r1, 0 - beq _08127584 - cmp r1, 0x1 - beq _08127592 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x1E - bls _081275E0 -_0812757A: - movs r0, 0 - b _081275E2 - .align 2, 0 -_08127580: .4byte gPartyMenu -_08127584: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _081275E0 - b _0812757A -_08127592: - ldr r0, _081275E8 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, _081275EC @ =0x0000055c - adds r0, r2 - ldrb r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _081275AE - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x32 - bhi _0812757A -_081275AE: - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r3, _081275F0 @ =gBattleTowerBannedSpecies - lsls r1, r5, 1 - adds r0, r1, r3 - ldrh r0, [r0] - ldr r2, _081275F4 @ =0x0000ffff - cmp r0, r2 - beq _081275E0 -_081275C8: - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, r4 - beq _0812757A - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, r5, 1 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _081275C8 -_081275E0: - movs r0, 0x1 -_081275E2: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081275E8: .4byte gSaveBlock2Ptr -_081275EC: .4byte 0x0000055c -_081275F0: .4byte gBattleTowerBannedSpecies -_081275F4: .4byte 0x0000ffff - thumb_func_end GetBattleEntryEligibility - - thumb_func_start CheckBattleEntriesAndGetMessage -CheckBattleEntriesAndGetMessage: @ 81275F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08127618 @ =gPlayerParty - mov r10, r0 - ldr r0, _0812761C @ =gPartyMenu - ldrb r0, [r0, 0x8] - lsrs r0, 6 - cmp r0, 0x1 - beq _08127620 - cmp r0, 0x2 - beq _081276E8 - b _08127700 - .align 2, 0 -_08127618: .4byte gPlayerParty -_0812761C: .4byte gPartyMenu -_08127620: - ldr r1, _0812762C @ =gSelectedOrderFromParty - ldrb r0, [r1, 0x2] - cmp r0, 0 - bne _08127630 - movs r0, 0x11 - b _08127702 - .align 2, 0 -_0812762C: .4byte gSelectedOrderFromParty -_08127630: - movs r5, 0 -_08127632: - ldr r2, _081276DC @ =gSelectedOrderFromParty - adds r4, r2, r5 - ldrb r0, [r4] - movs r1, 0x64 - muls r0, r1 - subs r0, 0x64 - add r0, r10 - movs r1, 0xB - bl GetMonData - ldr r2, _081276E0 @ =sPartyMenuInternal - ldr r1, [r2] - ldr r2, _081276E4 @ =0x00000236 - adds r1, r2 - strh r0, [r1] - ldrb r0, [r4] - movs r1, 0x64 - muls r0, r1 - subs r0, 0x64 - add r0, r10 - movs r1, 0xC - bl GetMonData - ldr r2, _081276E0 @ =sPartyMenuInternal - ldr r1, [r2] - movs r2, 0x8D - lsls r2, 2 - adds r1, r2 - strh r0, [r1] - adds r1, r5, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - mov r9, r1 - cmp r5, 0x2 - bhi _081276D0 - ldr r0, _081276E0 @ =sPartyMenuInternal - mov r8, r0 - movs r7, 0x64 -_0812767E: - mov r1, r8 - ldr r0, [r1] - ldr r2, _081276E4 @ =0x00000236 - adds r0, r2 - movs r1, 0 - ldrsh r4, [r0, r1] - ldr r2, _081276DC @ =gSelectedOrderFromParty - adds r6, r2, r5 - ldrb r0, [r6] - muls r0, r7 - subs r0, 0x64 - add r0, r10 - movs r1, 0xB - bl GetMonData - cmp r4, r0 - beq _081276F8 - mov r1, r8 - ldr r0, [r1] - movs r2, 0x8D - lsls r2, 2 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _081276C6 - adds r4, r0, 0 - ldrb r0, [r6] - muls r0, r7 - subs r0, 0x64 - add r0, r10 - movs r1, 0xC - bl GetMonData - cmp r4, r0 - beq _081276FC -_081276C6: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _0812767E -_081276D0: - mov r1, r9 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _08127632 - b _08127700 - .align 2, 0 -_081276DC: .4byte gSelectedOrderFromParty -_081276E0: .4byte sPartyMenuInternal -_081276E4: .4byte 0x00000236 -_081276E8: - ldr r2, _081276F4 @ =gSelectedOrderFromParty - ldrb r0, [r2, 0x1] - cmp r0, 0 - bne _08127700 - movs r0, 0x12 - b _08127702 - .align 2, 0 -_081276F4: .4byte gSelectedOrderFromParty -_081276F8: - movs r0, 0x13 - b _08127702 -_081276FC: - movs r0, 0x14 - b _08127702 -_08127700: - movs r0, 0xFF -_08127702: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckBattleEntriesAndGetMessage - - thumb_func_start HasPartySlotAlreadyBeenSelected -HasPartySlotAlreadyBeenSelected: @ 8127710 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, _08127728 @ =gSelectedOrderFromParty -_0812771A: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _0812772C - movs r0, 0x1 - b _08127738 - .align 2, 0 -_08127728: .4byte gSelectedOrderFromParty -_0812772C: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _0812771A - movs r0, 0 -_08127738: - pop {r1} - bx r1 - thumb_func_end HasPartySlotAlreadyBeenSelected - - thumb_func_start Task_ValidateChosenHalfParty -Task_ValidateChosenHalfParty: @ 812773C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl CheckBattleEntriesAndGetMessage - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _08127768 - movs r0, 0x1A - bl PlaySE - adds r0, r4, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _08127764 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - b _08127796 - .align 2, 0 -_08127764: .4byte gTasks -_08127768: - ldr r0, _08127780 @ =gSelectedOrderFromParty - ldrb r0, [r0] - cmp r0, 0 - beq _08127784 - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - bl Task_ClosePartyMenu - b _0812779E - .align 2, 0 -_08127780: .4byte gSelectedOrderFromParty -_08127784: - movs r0, 0x1A - bl PlaySE - movs r0, 0xE - bl DisplayPartyMenuStdMessage - ldr r0, _081277A4 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 -_08127796: - lsls r1, 3 - adds r1, r0 - ldr r0, _081277A8 @ =Task_ContinueChoosingHalfParty - str r0, [r1] -_0812779E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081277A4: .4byte gTasks -_081277A8: .4byte Task_ContinueChoosingHalfParty - thumb_func_end Task_ValidateChosenHalfParty - - thumb_func_start Task_ContinueChoosingHalfParty -Task_ContinueChoosingHalfParty: @ 81277AC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081277E8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081277C6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081277E0 -_081277C6: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r0, _081277EC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _081277F0 @ =Task_HandleChooseMonInput - str r0, [r1] -_081277E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081277E8: .4byte gMain -_081277EC: .4byte gTasks -_081277F0: .4byte Task_HandleChooseMonInput - thumb_func_end Task_ContinueChoosingHalfParty - - thumb_func_start ChooseMonForMoveTutor -ChooseMonForMoveTutor: @ 81277F4 - push {lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - str r2, [sp] - ldr r2, _08127818 @ =Task_HandleChooseMonInput - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08127818: .4byte Task_HandleChooseMonInput - thumb_func_end ChooseMonForMoveTutor - - thumb_func_start sub_812781C -sub_812781C: @ 812781C - push {lr} - sub sp, 0xC - ldr r0, _08127844 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0xE - bhi _08127850 - movs r0, 0x4 - str r0, [sp] - ldr r0, _08127848 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0xC - movs r3, 0 - bl InitPartyMenu - b _08127870 - .align 2, 0 -_08127844: .4byte gSpecialVar_0x8005 -_08127848: .4byte Task_HandleChooseMonInput -_0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08127850: - movs r0, 0x7F - str r0, [sp] - ldr r0, _08127878 @ =TryTutorSelectedMon - str r0, [sp, 0x4] - ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0xC - movs r3, 0 - bl InitPartyMenu - ldr r1, _08127880 @ =gPartyMenu - ldr r0, _08127884 @ =gSpecialVar_0x8007 - ldrh r0, [r0] - strb r0, [r1, 0x9] -_08127870: - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08127878: .4byte TryTutorSelectedMon -_0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_08127880: .4byte gPartyMenu -_08127884: .4byte gSpecialVar_0x8007 - thumb_func_end sub_812781C - - thumb_func_start ChooseMonForWirelessMinigame -ChooseMonForWirelessMinigame: @ 8127888 - push {lr} - sub sp, 0xC - movs r0, 0x1 - str r0, [sp] - ldr r0, _081278AC @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - str r0, [sp, 0x8] - movs r0, 0xB - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_081278AC: .4byte Task_HandleChooseMonInput -_081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic - thumb_func_end ChooseMonForWirelessMinigame - - thumb_func_start GetPartyLayoutFromBattleType -GetPartyLayoutFromBattleType: @ 81278B4 - push {lr} - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _081278C4 - movs r0, 0 - b _081278D6 -_081278C4: - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081278D4 - movs r0, 0x1 - b _081278D6 -_081278D4: - movs r0, 0x2 -_081278D6: - pop {r1} - bx r1 - thumb_func_end GetPartyLayoutFromBattleType - - thumb_func_start OpenPartyMenuInTutorialBattle -OpenPartyMenuInTutorialBattle: @ 81278DC - push {r4,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x8 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _08127930 - ldr r0, _08127924 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08127930 - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x7F - str r0, [sp] - ldr r0, _08127928 @ =sub_8120C3C - str r0, [sp, 0x4] - ldr r0, _0812792C @ =SetCB2ToReshowScreenAfterMenu - str r0, [sp, 0x8] - movs r0, 0x1 - adds r2, r4, 0 - movs r3, 0 - bl InitPartyMenu - movs r0, 0x8 - bl sub_80EB2F4 - b _08127950 - .align 2, 0 -_08127924: .4byte gBattleTypeFlags -_08127928: .4byte sub_8120C3C -_0812792C: .4byte SetCB2ToReshowScreenAfterMenu -_08127930: - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - str r0, [sp] - ldr r0, _08127960 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _08127964 @ =SetCB2ToReshowScreenAfterMenu - str r0, [sp, 0x8] - movs r0, 0x1 - adds r2, r4, 0 - movs r3, 0 - bl InitPartyMenu -_08127950: - bl nullsub_44 - bl UpdatePartyToBattleOrder - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127960: .4byte Task_HandleChooseMonInput -_08127964: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end OpenPartyMenuInTutorialBattle - - thumb_func_start OpenPartyMenuInBattle -OpenPartyMenuInBattle: @ 8127968 - push {lr} - sub sp, 0xC - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - str r0, [sp] - ldr r0, _0812799C @ =sub_8120EBC - str r0, [sp, 0x4] - ldr r0, _081279A0 @ =SetCB2ToReshowScreenAfterMenu - str r0, [sp, 0x8] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - bl nullsub_44 - bl UpdatePartyToBattleOrder - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0812799C: .4byte sub_8120EBC -_081279A0: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end OpenPartyMenuInBattle - - thumb_func_start ChooseMonForInBattleItem -ChooseMonForInBattleItem: @ 81279A4 - push {lr} - sub sp, 0xC - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - str r0, [sp] - ldr r0, _081279D8 @ =sub_8120FCC - str r0, [sp, 0x4] - ldr r0, _081279DC @ =sub_8107ECC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r2, 0xE - movs r3, 0 - bl InitPartyMenu - bl nullsub_44 - bl UpdatePartyToBattleOrder - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_081279D8: .4byte sub_8120FCC -_081279DC: .4byte sub_8107ECC - thumb_func_end ChooseMonForInBattleItem - - thumb_func_start sub_81279E0 -sub_81279E0: @ 81279E0 - push {r4,lr} - sub sp, 0xC - movs r0, 0x8 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _08127A30 - ldr r0, _08127A24 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08127A30 - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x7F - str r0, [sp] - ldr r0, _08127A28 @ =sub_8120C3C - str r0, [sp, 0x4] - ldr r0, _08127A2C @ =sub_8107ECC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x3 - movs r3, 0 - bl InitPartyMenu - movs r0, 0x8 - bl sub_80EB2F4 - b _08127A62 - .align 2, 0 -_08127A24: .4byte gBattleTypeFlags -_08127A28: .4byte sub_8120C3C -_08127A2C: .4byte sub_8107ECC -_08127A30: - ldr r0, _08127A74 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08127A78 @ =sub_8107ECC - cmp r0, 0x5 - bne _08127A44 - ldr r4, _08127A7C @ =sub_8124DB0 -_08127A44: - bl GetPartyLayoutFromBattleType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - str r0, [sp] - ldr r0, _08127A80 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x3 - movs r3, 0 - bl InitPartyMenu -_08127A62: - bl nullsub_44 - bl UpdatePartyToBattleOrder - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127A74: .4byte gSpecialVar_ItemId -_08127A78: .4byte sub_8107ECC -_08127A7C: .4byte sub_8124DB0 -_08127A80: .4byte Task_HandleChooseMonInput - thumb_func_end sub_81279E0 - - thumb_func_start GetPartyMenuActionsTypeInBattle -GetPartyMenuActionsTypeInBattle: @ 8127A84 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1] - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08127AA0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08127AA8 -_08127AA0: - movs r0, 0x7 - b _08127ABA - .align 2, 0 -_08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1] -_08127AA8: - ldr r0, _08127AB4 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x1 - beq _08127AB8 - movs r0, 0x2 - b _08127ABA - .align 2, 0 -_08127AB4: .4byte gPartyMenu -_08127AB8: - movs r0, 0x3 -_08127ABA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetPartyMenuActionsTypeInBattle - - thumb_func_start TrySwitchInPokemon -TrySwitchInPokemon: @ 8127AC0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r5, r0, 24 - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08127B08 - cmp r5, 0x1 - beq _08127AE6 - cmp r5, 0x4 - beq _08127AE6 - cmp r5, 0x5 - bne _08127B08 -_08127AE6: - ldr r4, _08127AFC @ =gStringVar1 - bl GetTrainerPartnerName - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _08127B00 @ =gStringVar4 - ldr r1, _08127B04 @ =gUnknown_8416A98 - b _08127C86 - .align 2, 0 -_08127AFC: .4byte gStringVar1 -_08127B00: .4byte gStringVar4 -_08127B04: .4byte gUnknown_8416A98 -_08127B08: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08127B2C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08127B3C - ldr r1, _08127B30 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - ldr r0, _08127B34 @ =gStringVar4 - ldr r1, _08127B38 @ =gUnknown_8416A75 - b _08127C86 - .align 2, 0 -_08127B2C: .4byte gPlayerParty -_08127B30: .4byte gStringVar1 -_08127B34: .4byte gStringVar4 -_08127B38: .4byte gUnknown_8416A75 -_08127B3C: - movs r4, 0 - b _08127B68 -_08127B40: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08127B62 - adds r0, r5, 0 - bl GetPartyIdFromBattleSlot - lsls r0, 24 - ldr r2, _08127B90 @ =gBattlerPartyIndexes - lsls r1, r4, 1 - adds r1, r2 - lsrs r0, 24 - ldrh r1, [r1] - cmp r0, r1 - beq _08127C40 -_08127B62: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08127B68: - ldr r0, _08127B94 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _08127B40 - movs r7, 0x64 - adds r0, r5, 0 - muls r0, r7 - ldr r1, _08127B98 @ =gPlayerParty - mov r8, r1 - adds r6, r0, r1 - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08127BA4 - ldr r0, _08127B9C @ =gStringVar4 - ldr r1, _08127BA0 @ =gUnknown_8416ACB - b _08127C86 - .align 2, 0 -_08127B90: .4byte gBattlerPartyIndexes -_08127B94: .4byte gBattlersCount -_08127B98: .4byte gPlayerParty -_08127B9C: .4byte gStringVar4 -_08127BA0: .4byte gUnknown_8416ACB -_08127BA4: - adds r0, r5, 0 - bl GetPartyIdFromBattleSlot - ldr r1, _08127BC8 @ =gBattleStruct - ldr r1, [r1] - adds r1, 0x8B - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08127BD8 - ldr r1, _08127BCC @ =gStringVar1 - adds r0, r6, 0 - bl GetMonNickname - ldr r0, _08127BD0 @ =gStringVar4 - ldr r1, _08127BD4 @ =gUnknown_8416A55 - b _08127C86 - .align 2, 0 -_08127BC8: .4byte gBattleStruct -_08127BCC: .4byte gStringVar1 -_08127BD0: .4byte gStringVar4 -_08127BD4: .4byte gUnknown_8416A55 -_08127BD8: - ldr r0, _08127BE8 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x4 - bne _08127BEC - bl SetMonPreventsSwitchingString - b _08127C8A - .align 2, 0 -_08127BE8: .4byte gPartyMenu -_08127BEC: - cmp r0, 0x2 - beq _08127C64 - adds r0, r5, 0 - bl GetPartyIdFromBattleSlot - ldr r1, _08127C30 @ =gSelectedMonPartyId - strb r0, [r1] - ldr r1, _08127C34 @ =gPartyMenuUseExitCallback - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08127C38 @ =gBattlerPartyIndexes - ldr r0, _08127C3C @ =gBattlerInMenuId - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl SwitchPartyMonSlots - adds r0, r4, 0 - muls r0, r7 - add r0, r8 - adds r1, r6, 0 - bl SwapPartyPokemon - movs r0, 0x1 - b _08127C8C - .align 2, 0 -_08127C30: .4byte gSelectedMonPartyId -_08127C34: .4byte gPartyMenuUseExitCallback -_08127C38: .4byte gBattlerPartyIndexes -_08127C3C: .4byte gBattlerInMenuId -_08127C40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08127C54 @ =gPlayerParty - adds r0, r1 - ldr r1, _08127C58 @ =gStringVar1 - bl GetMonNickname - ldr r0, _08127C5C @ =gStringVar4 - ldr r1, _08127C60 @ =gUnknown_8416A3A - b _08127C86 - .align 2, 0 -_08127C54: .4byte gPlayerParty -_08127C58: .4byte gStringVar1 -_08127C5C: .4byte gStringVar4 -_08127C60: .4byte gUnknown_8416A3A -_08127C64: - ldr r0, _08127C98 @ =gBattlerInMenuId - ldrb r0, [r0] - ldr r1, _08127C9C @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - bl pokemon_order_func - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - add r0, r8 - ldr r1, _08127CA0 @ =gStringVar1 - bl GetMonNickname - ldr r0, _08127CA4 @ =gStringVar4 - ldr r1, _08127CA8 @ =gUnknown_8416A1E -_08127C86: - bl StringExpandPlaceholders -_08127C8A: - movs r0, 0 -_08127C8C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08127C98: .4byte gBattlerInMenuId -_08127C9C: .4byte gBattlerPartyIndexes -_08127CA0: .4byte gStringVar1 -_08127CA4: .4byte gStringVar4 -_08127CA8: .4byte gUnknown_8416A1E - thumb_func_end TrySwitchInPokemon - - thumb_func_start BufferBattlePartyCurrentOrder -BufferBattlePartyCurrentOrder: @ 8127CAC - push {r4,lr} - ldr r4, _08127CC8 @ =gBattlePartyCurrentOrder - bl sub_80435E0 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl BufferBattlePartyOrder - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127CC8: .4byte gBattlePartyCurrentOrder - thumb_func_end BufferBattlePartyCurrentOrder - - thumb_func_start BufferBattlePartyOrder -BufferBattlePartyOrder: @ 8127CCC - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08127D02 - cmp r4, 0 - beq _08127CF4 - movs r0, 0x30 - strb r0, [r6] - movs r0, 0x45 - strb r0, [r6, 0x1] - movs r0, 0x12 - strb r0, [r6, 0x2] - b _08127D9C -_08127CF4: - movs r0, 0x3 - strb r0, [r6] - movs r0, 0x12 - strb r0, [r6, 0x1] - movs r0, 0x45 - strb r0, [r6, 0x2] - b _08127D9C -_08127D02: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08127D40 - movs r5, 0x1 - movs r0, 0 - bl GetBattlerAtPosition - mov r2, sp - ldr r1, _08127D3C @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r0, [r0] - strb r0, [r2] - movs r4, 0 - mov r1, sp -_08127D26: - ldrb r0, [r1] - cmp r4, r0 - beq _08127D34 - mov r2, sp - adds r0, r2, r5 - strb r4, [r0] - adds r5, 0x1 -_08127D34: - adds r4, 0x1 - cmp r4, 0x5 - ble _08127D26 - b _08127D84 - .align 2, 0 -_08127D3C: .4byte gBattlerPartyIndexes -_08127D40: - movs r5, 0x2 - movs r0, 0 - bl GetBattlerAtPosition - mov r1, sp - ldr r4, _08127DA4 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r0, [r0] - strb r0, [r1] - movs r0, 0x2 - bl GetBattlerAtPosition - mov r1, sp - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r0, [r0] - strb r0, [r1, 0x1] - movs r4, 0 -_08127D6A: - ldrb r0, [r1] - cmp r4, r0 - beq _08127D7E - ldrb r0, [r1, 0x1] - cmp r4, r0 - beq _08127D7E - mov r2, sp - adds r0, r2, r5 - strb r4, [r0] - adds r5, 0x1 -_08127D7E: - adds r4, 0x1 - cmp r4, 0x5 - ble _08127D6A -_08127D84: - movs r4, 0 - mov r3, sp -_08127D88: - adds r0, r6, r4 - ldrb r1, [r3] - lsls r1, 4 - ldrb r2, [r3, 0x1] - orrs r1, r2 - strb r1, [r0] - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _08127D88 -_08127D9C: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08127DA4: .4byte gBattlerPartyIndexes - thumb_func_end BufferBattlePartyOrder - - thumb_func_start BufferBattlePartyCurrentOrderBySide -BufferBattlePartyCurrentOrderBySide: @ 8127DA8 - push {lr} - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08127DC8 @ =gBattleStruct - lsls r3, r2, 1 - adds r3, r2 - adds r3, 0x60 - ldr r0, [r0] - adds r0, r3 - bl BufferBattlePartyOrderBySide - pop {r0} - bx r0 - .align 2, 0 -_08127DC8: .4byte gBattleStruct - thumb_func_end BufferBattlePartyCurrentOrderBySide - - thumb_func_start BufferBattlePartyOrderBySide -BufferBattlePartyOrderBySide: @ 8127DCC - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r0, r2, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08127DF4 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x2 - b _08127E00 -_08127DF4: - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x3 -_08127E00: - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08127E34 - cmp r7, 0 - beq _08127E26 - movs r0, 0x30 - strb r0, [r5] - movs r0, 0x45 - strb r0, [r5, 0x1] - movs r0, 0x12 - strb r0, [r5, 0x2] - b _08127EB6 -_08127E26: - movs r0, 0x3 - strb r0, [r5] - movs r0, 0x12 - strb r0, [r5, 0x1] - movs r0, 0x45 - strb r0, [r5, 0x2] - b _08127EB6 -_08127E34: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08127E6C - movs r3, 0x1 - mov r2, sp - ldr r1, _08127E68 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - strb r0, [r2] - movs r4, 0 - mov r1, sp -_08127E50: - ldrb r0, [r1] - cmp r4, r0 - beq _08127E5E - mov r2, sp - adds r0, r2, r3 - strb r4, [r0] - adds r3, 0x1 -_08127E5E: - adds r4, 0x1 - cmp r4, 0x5 - ble _08127E50 - b _08127E9E - .align 2, 0 -_08127E68: .4byte gBattlerPartyIndexes -_08127E6C: - movs r3, 0x2 - mov r1, sp - ldr r2, _08127EC0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - lsls r0, r6, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x1] - movs r4, 0 -_08127E84: - ldrb r0, [r1] - cmp r4, r0 - beq _08127E98 - ldrb r0, [r1, 0x1] - cmp r4, r0 - beq _08127E98 - mov r2, sp - adds r0, r2, r3 - strb r4, [r0] - adds r3, 0x1 -_08127E98: - adds r4, 0x1 - cmp r4, 0x5 - ble _08127E84 -_08127E9E: - movs r4, 0 - mov r3, sp -_08127EA2: - adds r0, r5, r4 - ldrb r1, [r3] - lsls r1, 4 - ldrb r2, [r3, 0x1] - orrs r1, r2 - strb r1, [r0] - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _08127EA2 -_08127EB6: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08127EC0: .4byte gBattlerPartyIndexes - thumb_func_end BufferBattlePartyOrderBySide - - thumb_func_start SwitchPartyOrderLinkMulti -SwitchPartyOrderLinkMulti: @ 8127EC4 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r7, 0 - bl IsMultiBattle - lsls r0, 24 - cmp r0, 0 - beq _08127F72 - ldr r0, _08127F28 @ =gBattleStruct - lsls r1, r4, 1 - adds r1, r4 - adds r1, 0x60 - ldr r0, [r0] - adds r4, r0, r1 - movs r2, 0 - add r6, sp - mov r12, r6 - movs r6, 0xF - mov r3, sp -_08127EF6: - adds r1, r4, r2 - ldrb r0, [r1] - lsrs r0, 4 - strb r0, [r3] - adds r3, 0x1 - ldrb r1, [r1] - adds r0, r6, 0 - ands r0, r1 - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2 - ble _08127EF6 - mov r0, r12 - ldrb r3, [r0] - movs r2, 0 - mov r0, sp - ldrb r0, [r0] - cmp r0, r5 - bne _08127F2C - mov r0, sp - ldrb r7, [r0] - strb r3, [r0] - b _08127F40 - .align 2, 0 -_08127F28: .4byte gBattleStruct -_08127F2C: - adds r2, 0x1 - cmp r2, 0x5 - bgt _08127F40 - mov r0, sp - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, r5 - bne _08127F2C - adds r7, r0, 0 - strb r3, [r1] -_08127F40: - cmp r2, 0x6 - beq _08127F72 - mov r0, r12 - strb r7, [r0] - mov r0, sp - ldrb r0, [r0] - lsls r0, 4 - mov r1, sp - ldrb r1, [r1, 0x1] - orrs r0, r1 - strb r0, [r4] - mov r0, sp - ldrb r0, [r0, 0x2] - lsls r0, 4 - mov r1, sp - ldrb r1, [r1, 0x3] - orrs r0, r1 - strb r0, [r4, 0x1] - mov r0, sp - ldrb r0, [r0, 0x4] - lsls r0, 4 - mov r1, sp - ldrb r1, [r1, 0x5] - orrs r0, r1 - strb r0, [r4, 0x2] -_08127F72: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SwitchPartyOrderLinkMulti - - thumb_func_start GetPartyIdFromBattleSlot -GetPartyIdFromBattleSlot: @ 8127F7C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0x1 - ands r1, r2 - lsrs r2, r0, 25 - cmp r1, 0 - beq _08127F9C - ldr r0, _08127F98 @ =gBattlePartyCurrentOrder - adds r0, r2, r0 - ldrb r0, [r0] - movs r1, 0xF - ands r1, r0 - b _08127FA4 - .align 2, 0 -_08127F98: .4byte gBattlePartyCurrentOrder -_08127F9C: - ldr r0, _08127FAC @ =gBattlePartyCurrentOrder - adds r0, r2, r0 - ldrb r0, [r0] - lsrs r1, r0, 4 -_08127FA4: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_08127FAC: .4byte gBattlePartyCurrentOrder - thumb_func_end GetPartyIdFromBattleSlot - - thumb_func_start SetPartyIdAtBattleSlot -SetPartyIdAtBattleSlot: @ 8127FB0 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - movs r1, 0x1 - ands r1, r3 - lsrs r3, r0, 25 - cmp r1, 0 - beq _08127FD8 - ldr r0, _08127FD4 @ =gBattlePartyCurrentOrder - adds r0, r3, r0 - ldrb r2, [r0] - movs r1, 0xF0 - ands r1, r2 - orrs r1, r4 - strb r1, [r0] - b _08127FE8 - .align 2, 0 -_08127FD4: .4byte gBattlePartyCurrentOrder -_08127FD8: - ldr r2, _08127FF0 @ =gBattlePartyCurrentOrder - adds r2, r3, r2 - ldrb r1, [r2] - movs r0, 0xF - ands r0, r1 - lsls r1, r4, 4 - orrs r0, r1 - strb r0, [r2] -_08127FE8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08127FF0: .4byte gBattlePartyCurrentOrder - thumb_func_end SetPartyIdAtBattleSlot - - thumb_func_start SwitchPartyMonSlots -SwitchPartyMonSlots: @ 8127FF4 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - adds r0, r5, 0 - bl GetPartyIdFromBattleSlot - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetPartyIdFromBattleSlot - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl SetPartyIdAtBattleSlot - adds r0, r6, 0 - adds r1, r4, 0 - bl SetPartyIdAtBattleSlot - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end SwitchPartyMonSlots - - thumb_func_start pokemon_order_func -pokemon_order_func: @ 8128030 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r3, 0 - movs r2, 0 - ldr r5, _08128058 @ =gBattlePartyCurrentOrder -_0812803C: - adds r0, r3, r5 - ldrb r1, [r0] - lsrs r0, r1, 4 - cmp r0, r4 - beq _08128054 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - movs r0, 0xF - ands r0, r1 - cmp r0, r4 - bne _0812805C -_08128054: - adds r0, r2, 0 - b _0812806E - .align 2, 0 -_08128058: .4byte gBattlePartyCurrentOrder -_0812805C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _0812803C - movs r0, 0 -_0812806E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end pokemon_order_func - - thumb_func_start UpdatePartyToBattleOrder -UpdatePartyToBattleOrder: @ 8128074 - push {r4-r6,lr} - movs r4, 0x96 - lsls r4, 2 - adds r0, r4, 0 - bl Alloc - adds r5, r0, 0 - ldr r1, _081280C0 @ =gPlayerParty - adds r2, r4, 0 - bl memcpy - movs r4, 0 - movs r6, 0x64 -_0812808E: - adds r0, r4, 0 - bl pokemon_order_func - lsls r0, 24 - lsrs r0, 24 - muls r0, r6 - ldr r1, _081280C0 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0812808E - adds r0, r5, 0 - bl Free - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081280C0: .4byte gPlayerParty - thumb_func_end UpdatePartyToBattleOrder - - thumb_func_start UpdatePartyToFieldOrder -UpdatePartyToFieldOrder: @ 81280C4 - push {r4-r6,lr} - movs r4, 0x96 - lsls r4, 2 - adds r0, r4, 0 - bl Alloc - adds r5, r0, 0 - ldr r1, _08128110 @ =gPlayerParty - adds r2, r4, 0 - bl memcpy - movs r4, 0 - movs r6, 0x64 -_081280DE: - adds r0, r4, 0 - bl GetPartyIdFromBattleSlot - lsls r0, 24 - lsrs r0, 24 - muls r0, r6 - ldr r1, _08128110 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _081280DE - adds r0, r5, 0 - bl Free - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08128110: .4byte gPlayerParty - thumb_func_end UpdatePartyToFieldOrder - - thumb_func_start SwitchAliveMonIntoLeadSlot -SwitchAliveMonIntoLeadSlot: @ 8128114 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0x1 - movs r7, 0x64 - ldr r0, _0812816C @ =gPlayerParty - mov r8, r0 -_08128122: - adds r0, r6, 0 - bl GetPartyIdFromBattleSlot - lsls r0, 24 - lsrs r0, 24 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08128170 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08128170 - movs r0, 0 - bl GetPartyIdFromBattleSlot - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - adds r1, r6, 0 - bl SwitchPartyMonSlots - adds r0, r4, 0 - muls r0, r7 - add r0, r8 - adds r1, r5, 0 - bl SwapPartyPokemon - b _0812817A - .align 2, 0 -_0812816C: .4byte gPlayerParty -_08128170: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x5 - bls _08128122 -_0812817A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SwitchAliveMonIntoLeadSlot - - thumb_func_start CB2_SetUpExitToBattleScreen -CB2_SetUpExitToBattleScreen: @ 8128184 - push {lr} - bl CB2_SetUpReshowBattleScreenAfterMenu - ldr r0, _08128194 @ =SetCB2ToReshowScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08128194: .4byte SetCB2ToReshowScreenAfterMenu - thumb_func_end CB2_SetUpExitToBattleScreen - - thumb_func_start ShowPartyMenuToShowcaseMultiBattleParty -ShowPartyMenuToShowcaseMultiBattleParty: @ 8128198 - push {lr} - sub sp, 0xC - movs r0, 0x7F - str r0, [sp] - ldr r0, _081281BC @ =Task_InitMultiPartnerPartySlideIn - str r0, [sp, 0x4] - ldr r0, _081281C0 @ =gMain - ldr r0, [r0, 0x8] - str r0, [sp, 0x8] - movs r0, 0x5 - movs r1, 0x3 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_081281BC: .4byte Task_InitMultiPartnerPartySlideIn -_081281C0: .4byte gMain - thumb_func_end ShowPartyMenuToShowcaseMultiBattleParty - - thumb_func_start Task_InitMultiPartnerPartySlideIn -Task_InitMultiPartnerPartySlideIn: @ 81281C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081281F4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r1, 0x80 - lsls r1, 1 - strh r1, [r4, 0x8] - bl SlideMultiPartyMenuBoxSpritesOneStep - movs r1, 0x80 - lsls r1, 9 - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - ldr r0, _081281F8 @ =Task_MultiPartnerPartySlideIn - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081281F4: .4byte gTasks -_081281F8: .4byte Task_MultiPartnerPartySlideIn - thumb_func_end Task_InitMultiPartnerPartySlideIn - - thumb_func_start Task_MultiPartnerPartySlideIn -Task_MultiPartnerPartySlideIn: @ 81281FC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r6, r5, 2 - adds r0, r6, r5 - lsls r0, 3 - ldr r1, _08128270 @ =gTasks+0x8 - adds r4, r0, r1 - ldr r0, _08128274 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08128268 - ldrh r0, [r4] - subs r0, 0x8 - strh r0, [r4] - adds r0, r5, 0 - bl SlideMultiPartyMenuBoxSpritesOneStep - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08128268 - movs r4, 0x3 - ldr r7, _08128278 @ =gMultiPartnerParty -_08128230: - subs r0, r4, 0x3 - lsls r0, 5 - adds r0, r7 - ldrh r0, [r0] - cmp r0, 0 - beq _0812824C - ldr r0, _0812827C @ =sPartyMenuBoxes - ldr r1, [r0] - lsls r0, r4, 4 - adds r0, r1 - ldrb r0, [r0, 0x9] - movs r1, 0 - bl AnimateSelectedPartyIcon -_0812824C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _08128230 - movs r0, 0x71 - bl PlaySE - ldr r0, _08128280 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08128284 @ =Task_WaitAfterMultiPartnerPartySlideIn - str r0, [r1] -_08128268: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08128270: .4byte gTasks+0x8 -_08128274: .4byte gPaletteFade -_08128278: .4byte gMultiPartnerParty -_0812827C: .4byte sPartyMenuBoxes -_08128280: .4byte gTasks -_08128284: .4byte Task_WaitAfterMultiPartnerPartySlideIn - thumb_func_end Task_MultiPartnerPartySlideIn - - thumb_func_start Task_WaitAfterMultiPartnerPartySlideIn -Task_WaitAfterMultiPartnerPartySlideIn: @ 8128288 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _081282B4 @ =gTasks+0x8 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x80 - lsls r0, 17 - cmp r1, r0 - bne _081282AE - adds r0, r2, 0 - bl Task_ClosePartyMenu -_081282AE: - pop {r0} - bx r0 - .align 2, 0 -_081282B4: .4byte gTasks+0x8 - thumb_func_end Task_WaitAfterMultiPartnerPartySlideIn - - thumb_func_start MoveMultiPartyMenuBoxSprite -MoveMultiPartyMenuBoxSprite: @ 81282B8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 16 - lsrs r3, r1, 16 - cmp r1, 0 - blt _081282D2 - ldr r1, _081282D8 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strh r3, [r0, 0x24] -_081282D2: - pop {r0} - bx r0 - .align 2, 0 -_081282D8: .4byte gSprites - thumb_func_end MoveMultiPartyMenuBoxSprite - - thumb_func_start SlideMultiPartyMenuBoxSpritesOneStep -SlideMultiPartyMenuBoxSpritesOneStep: @ 81282DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08128364 @ =gTasks+0x8 - adds r5, r1, r0 - movs r6, 0x3 - ldr r7, _08128368 @ =sPartyMenuBoxes -_081282F0: - ldr r0, _0812836C @ =gMultiPartnerParty - subs r1, r6, 0x3 - lsls r1, 5 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08128348 - ldr r0, [r7] - lsls r4, r6, 4 - adds r0, r4, r0 - ldrb r0, [r0, 0x9] - ldrh r1, [r5] - subs r1, 0x8 - lsls r1, 16 - asrs r1, 16 - bl MoveMultiPartyMenuBoxSprite - ldr r0, [r7] - adds r0, r4, r0 - ldrb r0, [r0, 0xA] - ldrh r1, [r5] - subs r1, 0x8 - lsls r1, 16 - asrs r1, 16 - bl MoveMultiPartyMenuBoxSprite - ldr r0, [r7] - adds r0, r4, r0 - ldrb r0, [r0, 0xB] - ldrh r1, [r5] - subs r1, 0x8 - lsls r1, 16 - asrs r1, 16 - bl MoveMultiPartyMenuBoxSprite - ldr r0, [r7] - adds r4, r0 - ldrb r0, [r4, 0xC] - ldrh r1, [r5] - subs r1, 0x8 - lsls r1, 16 - asrs r1, 16 - bl MoveMultiPartyMenuBoxSprite -_08128348: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x5 - bls _081282F0 - movs r1, 0x80 - lsls r1, 4 - movs r0, 0x2 - movs r2, 0x1 - bl ChangeBgX - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08128364: .4byte gTasks+0x8 -_08128368: .4byte sPartyMenuBoxes -_0812836C: .4byte gMultiPartnerParty - thumb_func_end SlideMultiPartyMenuBoxSpritesOneStep - - thumb_func_start ChooseMonForDaycare -ChooseMonForDaycare: @ 8128370 - push {lr} - sub sp, 0xC - ldr r1, _08128398 @ =gFieldCallback2 - ldr r0, _0812839C @ =CB2_FadeFromPartyMenu - str r0, [r1] - movs r0, 0xF - str r0, [sp] - ldr r0, _081283A0 @ =Task_HandleChooseMonInput - str r0, [sp, 0x4] - ldr r0, _081283A4 @ =CB2_ReturnToField - str r0, [sp, 0x8] - movs r0, 0x6 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08128398: .4byte gFieldCallback2 -_0812839C: .4byte CB2_FadeFromPartyMenu -_081283A0: .4byte Task_HandleChooseMonInput -_081283A4: .4byte CB2_ReturnToField - thumb_func_end ChooseMonForDaycare - - thumb_func_start ChoosePartyMonByMenuType -ChoosePartyMonByMenuType: @ 81283A8 - push {lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081283D4 @ =gFieldCallback2 - ldr r1, _081283D8 @ =CB2_FadeFromPartyMenu - str r1, [r2] - movs r1, 0 - str r1, [sp] - ldr r1, _081283DC @ =Task_HandleChooseMonInput - str r1, [sp, 0x4] - ldr r1, _081283E0 @ =CB2_ReturnToField - str r1, [sp, 0x8] - movs r1, 0 - movs r2, 0xB - movs r3, 0 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_081283D4: .4byte gFieldCallback2 -_081283D8: .4byte CB2_FadeFromPartyMenu -_081283DC: .4byte Task_HandleChooseMonInput -_081283E0: .4byte CB2_ReturnToField - thumb_func_end ChoosePartyMonByMenuType - - thumb_func_start CB2_FadeFromPartyMenu -CB2_FadeFromPartyMenu: @ 81283E4 - push {lr} - bl sub_807DC00 - ldr r0, _081283F8 @ =Task_PartyMenuWaitForFade - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_081283F8: .4byte Task_PartyMenuWaitForFade - thumb_func_end CB2_FadeFromPartyMenu - - thumb_func_start Task_PartyMenuWaitForFade -Task_PartyMenuWaitForFade: @ 81283FC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsWeatherNotFadingIn - lsls r0, 24 - cmp r0, 0 - beq _0812841A - adds r0, r4, 0 - bl DestroyTask - bl ScriptContext2_Disable - bl EnableBothScriptContexts -_0812841A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end Task_PartyMenuWaitForFade - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index c757216fd..b499f0999 100644 --- a/asm/pokemon_special_anim.s +++ b/asm/pokemon_special_anim.s @@ -1508,8 +1508,8 @@ sub_811D120: @ 811D120 bx r1 thumb_func_end sub_811D120 - thumb_func_start GetMonLevelUpWindowStats -GetMonLevelUpWindowStats: @ 811D130 + thumb_func_start BufferMonStatsToTaskData +BufferMonStatsToTaskData: @ 811D130 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -1539,7 +1539,7 @@ GetMonLevelUpWindowStats: @ 811D130 pop {r4,r5} pop {r0} bx r0 - thumb_func_end GetMonLevelUpWindowStats + thumb_func_end BufferMonStatsToTaskData thumb_func_start sub_811D178 sub_811D178: @ 811D178 diff --git a/data/event_scripts.s b/data/event_scripts.s index 89099c58f..c07f400a1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -13968,7 +13968,7 @@ EventScript_1C4F26:: @ 81C4F26 end EventScript_1C4F30:: @ 81C4F30 - special sub_812781C + special ChooseMonForMoveTutor waitstate lock faceplayer diff --git a/data/specials.inc b/data/specials.inc index 148da72dc..74ba0c849 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -405,7 +405,7 @@ gSpecials:: @ 815FD60 def_special get_unknown_box_id def_special Special_OpenMuseumFossilPic def_special Special_CloseMuseumFossilPic - def_special sub_812781C + def_special ChooseMonForMoveTutor def_special ChooseMonForWirelessMinigame def_special SetBattledTrainerFlag def_special sub_812B35C diff --git a/data/strings.s b/data/strings.s index 35548d0dc..628bbda28 100644 --- a/data/strings.s +++ b/data/strings.s @@ -859,27 +859,27 @@ gUnknown_84169F8:: @ 84169F8 .string "This can't be used on\n" .string "that POKéMON.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416A1E:: @ 8416A1E +gText_PkmnCantSwitchOut:: @ 8416A1E .string "{STR_VAR_1} can't be switched\n" .string "out!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416A3A:: @ 8416A3A +gText_PkmnAlreadyInBattle:: @ 8416A3A .string "{STR_VAR_1} is already\n" .string "in battle!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416A55:: @ 8416A55 +gText_PkmnAlreadySelected:: @ 8416A55 .string "{STR_VAR_1} has already been\n" .string "selected.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416A75:: @ 8416A75 +gText_PkmnHasNoEnergy:: @ 8416A75 .string "{STR_VAR_1} has no energy\n" .string "left to battle!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416A98:: @ 8416A98 +gText_CantSwitchWithAlly:: @ 8416A98 .string "You can't switch {STR_VAR_1}'s\n" .string "POKéMON with one of yours!{PAUSE_UNTIL_PRESS}$" -gUnknown_8416ACB:: @ 8416ACB +gText_EggCantBattle:: @ 8416ACB .string "An EGG can't battle!{PAUSE_UNTIL_PRESS}$" gText_CantUseUntilNewBadge:: @ 8416AE2 @@ -908,7 +908,7 @@ gText_MailMessageWillBeLost:: @ 8416BC3 .string "If the MAIL is removed, the\n" .string "message will be lost. Okay?$" -gUnknown_8416BFB:: @ 8416BFB +gText_RemoveMailBeforeItem:: @ 8416BFB .string "MAIL must be removed before\n" .string "holding an item.{PAUSE_UNTIL_PRESS}$" diff --git a/include/battle_tower.h b/include/battle_tower.h index 9bb93f1c2..e9425e76f 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -25,6 +25,8 @@ struct BattleTowerPokemonTemplate u8 nature; }; +extern const u16 gBattleTowerBannedSpecies[]; + u16 sub_8164FCC(u8, u8); void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *); void ValidateEReaderTrainer(void); diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index 5c084ee6e..9b5660f6f 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -58,7 +58,7 @@ #define PARTY_ACTION_USE_ITEM 3 #define PARTY_ACTION_ABILITY_PREVENTS 4 #define PARTY_ACTION_GIVE_ITEM 5 -#define PARTY_ACTION_GIVE_PC_ITEM 6 // TODO: rename this one if necessary. Used for quest log. +#define PARTY_ACTION_GIVE_PC_ITEM 6 // TODO: rename this one if necessary. Used for quest log. #define PARTY_ACTION_GIVE_MAILBOX_MAIL 7 #define PARTY_ACTION_SWITCH 8 #define PARTY_ACTION_SWITCHING 9 @@ -66,7 +66,7 @@ #define PARTY_ACTION_CHOOSE_AND_CLOSE 11 #define PARTY_ACTION_MOVE_TUTOR 12 #define PARTY_ACTION_MINIGAME 13 -#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately +#define PARTY_ACTION_REUSABLE_ITEM 14 // IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu #define PARTY_MSG_CHOOSE_MON 0 diff --git a/include/item.h b/include/item.h index ccc9cd3bb..01d2a55e5 100644 --- a/include/item.h +++ b/include/item.h @@ -43,7 +43,6 @@ void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); u8 CountUsedPCItemSlots(void); bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); -void RemovePCItem(u8 index, u16 count); void SwapRegisteredBike(void); const u8 *ItemId_GetName(u16 itemId); u16 ItemId_GetId(u16 itemId); @@ -75,7 +74,7 @@ u16 GetPcItemQuantity(u16 *); void SetBagPocketsPointers(void); void ItemPcCompaction(void); -void RemoveItemFromPC(u16 itemId, u16 quantity); +void RemovePCItem(u16 itemId, u16 quantity); void SortAndCompactBagPocket(struct BagPocket * pocket); u8 CountItemsInPC(void); void ApplyNewEncryptionKeyToBagItems_(u32 newKey); diff --git a/include/party_menu.h b/include/party_menu.h index b100097df..edd5efc92 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -25,7 +25,7 @@ extern u8 gPartyMenuUseExitCallback; extern u8 gSelectedMonPartyId; extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; extern void (*gItemUseCB)(u8 taskId, TaskFunc func); -extern u8 gSelectedOrderFromParty[4]; +extern u8 gSelectedOrderFromParty[3]; bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); @@ -47,16 +47,16 @@ u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); u8 DisplayPartyMenuMessage(const u8 * src, u8 a1); bool8 IsPartyMenuTextPrinterActive(void); void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); -void sub_81252D0(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); void ItemUseCB_PPRecovery(u8 taskId, TaskFunc followUpFunc); void ItemUseCB_PPUp(u8 taskId, TaskFunc followUpFunc); -void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc); -void sub_8126B60(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_RareCandy(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc followUpFunc); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc followUpFunc); void sub_81279E0(void); -void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); +void ItemUseCB_MedicineStep(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); -u8 pokemon_order_func(u8); +u8 GetPartyIdFromBattlePartyId(u8); void BufferBattlePartyCurrentOrder(void); void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 multiplayerFlag); void OpenPartyMenuInBattle(void); diff --git a/include/player_pc.h b/include/player_pc.h index a1ebcddaa..f62835911 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -8,8 +8,8 @@ struct PlayerPCItemPageStruct { - u16 selectedRow; - u16 scrollOffset; + u16 cursorPos; + u16 itemsAbove; u8 pageItems; u8 count; u8 filler_6[3]; @@ -25,5 +25,6 @@ extern struct PlayerPCItemPageStruct gPlayerPcMenuManager; void sub_816B060(u8 taskId); void NewGameInitPCItems(void); +void Mailbox_ReturnToMailListAfterDeposit(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon.h b/include/pokemon.h index c5ad89f41..7bc1239f1 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -582,7 +582,7 @@ void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); -bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); +bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); u8 GetNature(struct Pokemon *mon); @@ -593,7 +593,7 @@ u16 HoennToNationalOrder(u16 hoennNum); u16 SpeciesToCryId(u16 species); void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); -bool8 sub_80435E0(void); +bool8 GetPlayerFlankId(void); bool16 GetLinkTrainerFlankId(u8 linkPlayerId); s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainer); diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h index d2580552d..5cc567580 100644 --- a/include/pokemon_special_anim.h +++ b/include/pokemon_special_anim.h @@ -5,7 +5,7 @@ void sub_811E5B8(u16, u16, u16, u16, u16, u16); bool8 sub_811E680(void); -void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats); +void BufferMonStatsToTaskData(struct Pokemon *mon, u16 *currStats); void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr); void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr); void sub_811C540(u8 slotId, u16 itemId, MainCallback callback); diff --git a/include/strings.h b/include/strings.h index 8c082ccb4..4b80c1308 100644 --- a/include/strings.h +++ b/include/strings.h @@ -388,6 +388,16 @@ extern const u8 gText_WhichMoveToForget[]; extern const u8 gText_12PoofForgotMove[]; extern const u8 gText_StopLearningMove2[]; extern const u8 gText_MoveNotLearned[]; +extern const u8 gText_PkmnElevatedToLvVar2[]; +extern const u8 gText_PkmnHoldingItemCantHoldMail[]; +extern const u8 gText_MailTransferredFromMailbox[]; +extern const u8 gText_RemoveMailBeforeItem[]; +extern const u8 gText_CantSwitchWithAlly[]; +extern const u8 gText_PkmnHasNoEnergy[]; +extern const u8 gText_PkmnAlreadyInBattle[]; +extern const u8 gText_EggCantBattle[]; +extern const u8 gText_PkmnAlreadySelected[]; +extern const u8 gText_PkmnCantSwitchOut[]; // credits extern const u8 gString_Dummy[]; diff --git a/ld_script.txt b/ld_script.txt index fcf214ccb..db98b79a1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -240,7 +240,6 @@ SECTIONS { asm/link_rfu_3.o(.text); asm/pokemon_special_anim.o(.text); src/party_menu.o(.text); - asm/party_menu.o(.text); asm/union_room_chat.o(.text); src/help_system_812B1E0.o(.text); src/quest_log_battle.o(.text); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 55d413b3b..d7bccb298 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -859,8 +859,8 @@ void HandleBattleLowHpMusicChange(void) { u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - u8 battler1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler1]); - u8 battler2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler2]); + u8 battler1PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler1]); + u8 battler2PartyId = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[playerBattler2]); if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0) HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1); diff --git a/src/battle_main.c b/src/battle_main.c index a6d7e69c8..d307d4f55 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3005,8 +3005,8 @@ void sub_8013F6C(u8 battler) for (i = 0; i < 3; ++i) gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)); - r4 = pokemon_order_func(gBattlerPartyIndexes[battler]); - r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler)); + r4 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]); + r1 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler)); SwitchPartyMonSlots(r4, r1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fe7359eb9..a20f47ad4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5831,7 +5831,7 @@ static void DrawLevelUpWindow1(void) { u16 currStats[NUM_STATS]; - GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); + BufferMonStatsToTaskData(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); DrawLevelUpWindowPg1(12, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF); } @@ -5839,7 +5839,7 @@ static void DrawLevelUpWindow2(void) { u16 currStats[NUM_STATS]; - GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); + BufferMonStatsToTaskData(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); DrawLevelUpWindowPg2(12, currStats, 0xE, 0xD, 0xF); } diff --git a/src/item.c b/src/item.c index 677c13ad7..e16d5055c 100644 --- a/src/item.c +++ b/src/item.c @@ -412,7 +412,7 @@ bool8 AddPCItem(u16 itemId, u16 count) return TRUE; } -void RemoveItemFromPC(u16 itemId, u16 count) +void RemovePCItem(u16 itemId, u16 count) { u32 i; u16 quantity; diff --git a/src/item_pc.c b/src/item_pc.c index f30cf1381..3e0c50b60 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -926,7 +926,7 @@ static void Task_ItemPcWaitButtonAndFinishWithdrawMultiple(u8 taskId) { PlaySE(SE_SELECT); itemId = ItemPc_GetItemIdBySlotId(data[1]); - RemoveItemFromPC(itemId, data[8]); + RemovePCItem(itemId, data[8]); ItemPcCompaction(); Task_ItemPcCleanUpWithdraw(taskId); } diff --git a/src/item_use.c b/src/item_use.c index 70673d681..256711463 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -414,7 +414,7 @@ static void sub_80A16D0(u8 taskId) void FieldUseFunc_Medicine(u8 taskId) { - gItemUseCB = sub_81252D0; + gItemUseCB = ItemUseCB_Medicine; sub_80A16D0(taskId); } @@ -432,13 +432,13 @@ void FieldUseFunc_PpUp(u8 taskId) void FieldUseFunc_RareCandy(u8 taskId) { - gItemUseCB = dp05_rare_candy; + gItemUseCB = ItemUseCB_RareCandy; sub_80A16D0(taskId); } void FieldUseFunc_EvoItem(u8 taskId) { - gItemUseCB = sub_8126B60; + gItemUseCB = ItemUseCB_EvolutionStone; sub_80A16D0(taskId); } @@ -811,7 +811,7 @@ static void ItemUse_SwitchToPartyMenuInBattle(u8 taskId) void BattleUseFunc_Medicine(u8 taskId) { - gItemUseCB = ItemUseCB_Medicine; + gItemUseCB = ItemUseCB_MedicineStep; ItemUse_SwitchToPartyMenuInBattle(taskId); } diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 0a4535271..5489c4c4e 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -123,7 +123,7 @@ u8 MailboxPC_InitListMenu(struct PlayerPCItemPageStruct * playerPcStruct) gMultiuseListMenuTemplate.itemPrintFunc = ItemPrintFunc; gMultiuseListMenuTemplate.cursorKind = 0; gMultiuseListMenuTemplate.scrollMultiple = 0; - return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow); + return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->itemsAbove, playerPcStruct->cursorPos); } static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) @@ -134,7 +134,7 @@ static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) void MailboxPC_AddScrollIndicatorArrows(struct PlayerPCItemPageStruct * playerPcStruct) { - playerPcStruct->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->count - playerPcStruct->pageItems + 1, 110, 110, &playerPcStruct->scrollOffset); + playerPcStruct->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->count - playerPcStruct->pageItems + 1, 110, 110, &playerPcStruct->itemsAbove); } void MailboxPC_DestroyListMenuBuffer(void) diff --git a/src/party_menu.c b/src/party_menu.c index f88f2f6fc..5bee1442e 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,6 +5,7 @@ #include "battle_controllers.h" #include "battle_gfx_sfx_util.h" #include "battle_interface.h" +#include "battle_tower.h" #include "berry_pouch.h" #include "bg.h" #include "data.h" @@ -40,6 +41,7 @@ #include "palette.h" #include "party_menu.h" #include "player_pc.h" +#include "pokedex.h" #include "pokemon.h" #include "pokemon_icon.h" #include "pokemon_jump.h" @@ -326,6 +328,43 @@ void Task_PartyMenuReplaceMove(u8 taskId); void Task_StopLearningMoveYesNo(u8 taskId); void Task_HandleStopLearningMoveYesNoInput(u8 taskId); void Task_TryLearningNextMoveAfterText(u8 taskId); +void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func); +void Task_DisplayLevelUpStatsPg1(u8 taskId); +void Task_DisplayLevelUpStatsPg2(u8 taskId); +void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon); +void DisplayLevelUpStatsPg1(u8 taskId); +void DisplayLevelUpStatsPg2(u8 taskId); +void Task_TryLearnNewMoves(u8 taskId); +void PartyMenuTryEvolution(u8 taskId); +void DisplayMonNeedsToReplaceMove(u8 taskId); +void DisplayMonLearnedMove(u8 taskId, u16 move); +void Task_SacredAshDisplayHPRestored(u8 taskId); +void Task_SacredAshLoop(u8 taskId); +void UseSacredAsh(u8 taskId); +void CB2_ReturnToBerryPouchMenu(void); +void CB2_ReturnToTMCaseMenu(void); +void GiveItemOrMailToSelectedMon(u8 taskId); +void RemoveItemToGiveFromBag(u16 item); +void DisplayItemMustBeRemovedFirstMessage(u8 taskId); +void CB2_WriteMailToGiveMonFromBag(void); +void GiveItemToSelectedMon(u8 taskId); +void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId); +void Task_SwitchItemsFromBagYesNo(u8 taskId); +void CB2_ReturnToPartyOrBagMenuFromWritingMail(void); +bool8 ReturnGiveItemToBagOrPC(u16 item); +void Task_DisplayGaveMailFromBagMessage(u8 taskId); +void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId); +void Task_ValidateChosenHalfParty(u8 taskId); +bool8 HasPartySlotAlreadyBeenSelected(u8 slot); +void Task_ContinueChoosingHalfParty(u8 taskId); +void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId); +void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId); +void Task_InitMultiPartnerPartySlideIn(u8 taskId); +void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId); +void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId); +void Task_MultiPartnerPartySlideIn(u8 taskId); +bool8 CB2_FadeFromPartyMenu(void); +void Task_PartyMenuWaitForFade(u8 taskId); void sub_8120C6C(u8 taskId); void sub_8120CA8(u8 taskId); void sub_8120CD8(u8 taskId); @@ -345,8 +384,6 @@ u8 sub_81220D4(void); void sub_8122110(u8 windowId); void sub_812358C(void); void sub_8124BB0(struct Pokemon *mon, u8 fieldMove); -void sub_8124DB0(void); -void sub_8124DA0(void); void sub_8124DE0(void); void sub_8124E48(void); void sub_812580C(u8 taskId); @@ -366,8 +403,8 @@ EWRAM_DATA u8 gSelectedMonPartyId = 0; EWRAM_DATA MainCallback gPostMenuFieldCallback = NULL; EWRAM_DATA u16 *sSlot1TilemapBuffer = NULL; // for switching party slots EWRAM_DATA u16 *sSlot2TilemapBuffer = NULL; -EWRAM_DATA struct Pokemon *gUnknown_203B0D0 = NULL; -EWRAM_DATA u8 gSelectedOrderFromParty[4] = {0}; +EWRAM_DATA struct Pokemon *sSacredAshQuestLogMonBackup = NULL; +EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; EWRAM_DATA u16 sPartyMenuItemId = ITEM_NONE; ALIGNED(4) EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on @@ -4217,7 +4254,7 @@ void CB2_ShowPartyMenuForItemUse(void) } } if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) - callback = sub_8124DB0; + callback = CB2_ReturnToBerryPouchMenu; task = Task_SetSacredAshCB; msgId = PARTY_MSG_NONE; } @@ -4230,11 +4267,11 @@ void CB2_ShowPartyMenuForItemUse(void) break; case POCKET_TM_CASE: msgId = PARTY_MSG_TEACH_WHICH_MON; - callback = sub_8124DA0; + callback = CB2_ReturnToTMCaseMenu; break; case POCKET_BERRY_POUCH: msgId = PARTY_MSG_USE_ON_WHICH_MON; - callback = sub_8124DB0; + callback = CB2_ReturnToBerryPouchMenu; break; } task = Task_HandleChooseMonInput; @@ -4247,12 +4284,12 @@ void CB2_ReturnToBagMenu(void) GoToBagMenu(11, 3, NULL); } -void sub_8124DA0(void) +void CB2_ReturnToTMCaseMenu(void) { InitTMCase(5, NULL, 0xFF); } -void sub_8124DB0(void) +void CB2_ReturnToBerryPouchMenu(void) { InitBerryPouch(BERRYPOUCH_NA, NULL, 0xFF); } @@ -4428,7 +4465,7 @@ bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex) return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, partyMonIndex, monMoveIndex); } -void sub_81252D0(u8 taskId, TaskFunc func) +void ItemUseCB_Medicine(u8 taskId, TaskFunc func) { u16 hp; struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -4447,7 +4484,7 @@ void sub_81252D0(u8 taskId, TaskFunc func) if (hp == GetMonData(mon, MON_DATA_MAX_HP)) canHeal = FALSE; } - canHeal = PokemonUseItemEffects2(mon, item, gPartyMenu.slotId, 0); + canHeal = PokemonItemUseNoEffect(mon, item, gPartyMenu.slotId, 0); } PlaySE(SE_SELECT); if (canHeal) @@ -4461,11 +4498,11 @@ void sub_81252D0(u8 taskId, TaskFunc func) { ItemUse_SetQuestLogEvent(4, mon, item, 0xFFFF); sub_8124DC0(taskId); - gItemUseCB = ItemUseCB_Medicine; + gItemUseCB = ItemUseCB_MedicineStep; } } -void ItemUseCB_Medicine(u8 taskId, TaskFunc func) +void ItemUseCB_MedicineStep(u8 taskId, TaskFunc func) { u16 hp = 0; struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -4638,7 +4675,7 @@ void ReturnToUseOnWhichMon(u8 taskId) void sub_812580C(u8 taskId) { - bool8 noEffect = PokemonUseItemEffects2(&gPlayerParty[gPartyMenu.slotId], + bool8 noEffect = PokemonItemUseNoEffect(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, gPartyMenu.slotId, gPartyMenu.data1); @@ -5008,3 +5045,1429 @@ void Task_HandleStopLearningMoveYesNoInput(u8 taskId) break; } } + +void Task_TryLearningNextMoveAfterText(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + Task_TryLearningNextMove(taskId); +} + +void ItemUseCB_RareCandy(u8 taskId, TaskFunc func) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = gSpecialVar_ItemId; + bool8 noEffect; + + if (GetMonData(mon, MON_DATA_LEVEL) != MAX_LEVEL) + noEffect = PokemonItemUseNoEffect(mon, item, gPartyMenu.slotId, 0); + else + noEffect = TRUE; + PlaySE(SE_SELECT); + if (noEffect) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = func; + } + else + { + sub_8124DC0(taskId); + gItemUseCB = ItemUseCB_RareCandyStep; + } +} + +void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + struct PartyMenuInternal *ptr = sPartyMenuInternal; + s16 *arrayPtr = ptr->data; + u8 level; + + BufferMonStatsToTaskData(mon, arrayPtr); + ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0); + BufferMonStatsToTaskData(mon, &ptr->data[NUM_STATS]); + gPartyMenuUseExitCallback = TRUE; + ItemUse_SetQuestLogEvent(4, mon, gSpecialVar_ItemId, 0xFFFF); + PlayFanfareByFanfareNum(0); + UpdateMonDisplayInfoAfterRareCandy(gPartyMenu.slotId, mon); + RemoveBagItem(gSpecialVar_ItemId, 1); + GetMonNickname(mon, gStringVar1); + level = GetMonData(mon, MON_DATA_LEVEL); + ConvertIntToDecimalStringN(gStringVar2, level, STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; +} + +void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon) +{ + SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[slot]); + if (gSprites[sPartyMenuBoxes[slot].statusSpriteId].invisible) + DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[slot], 1); + DisplayPartyPokemonHPCheck(mon, &sPartyMenuBoxes[slot], 1); + DisplayPartyPokemonMaxHPCheck(mon, &sPartyMenuBoxes[slot], 1); + DisplayPartyPokemonHPBarCheck(mon, &sPartyMenuBoxes[slot]); + UpdatePartyMonHPBar(sPartyMenuBoxes[slot].monSpriteId, mon); + AnimatePartySlot(slot, 1); + ScheduleBgCopyTilemapToVram(0); +} + +void Task_DisplayLevelUpStatsPg1(u8 taskId) +{ + if (WaitFanfare(FALSE) && IsPartyMenuTextPrinterActive() != TRUE && (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))) + { + PlaySE(SE_SELECT); + DisplayLevelUpStatsPg1(taskId); + gTasks[taskId].func = Task_DisplayLevelUpStatsPg2; + } +} + +void Task_DisplayLevelUpStatsPg2(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + DisplayLevelUpStatsPg2(taskId); + gTasks[taskId].func = Task_TryLearnNewMoves; + } +} + +void DisplayLevelUpStatsPg1(u8 taskId) +{ + s16 *arrayPtr = sPartyMenuInternal->data; + + arrayPtr[12] = CreateLevelUpStatsWindow(); + DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3); + CopyWindowToVram(arrayPtr[12], 2); + ScheduleBgCopyTilemapToVram(2); +} + +void DisplayLevelUpStatsPg2(u8 taskId) +{ + s16 *arrayPtr = sPartyMenuInternal->data; + + DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], 1, 2, 3); + CopyWindowToVram(arrayPtr[12], 2); + ScheduleBgCopyTilemapToVram(2); +} + +void Task_TryLearnNewMoves(u8 taskId) +{ + u16 learnMove; + + if (WaitFanfare(0) && (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))) + { + RemoveLevelUpStatsWindow(); + learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); + gPartyMenu.learnMoveState = 1; + switch (learnMove) + { + case 0: // No moves to learn + PartyMenuTryEvolution(taskId); + break; + case MON_HAS_MAX_MOVES: + DisplayMonNeedsToReplaceMove(taskId); + break; + case MON_ALREADY_KNOWS_MOVE: + gTasks[taskId].func = Task_TryLearningNextMove; + break; + default: + DisplayMonLearnedMove(taskId, learnMove); + break; + } + } +} + +void Task_TryLearningNextMove(u8 taskId) +{ + u16 result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); + + switch (result) + { + case 0: // No moves to learn + PartyMenuTryEvolution(taskId); + break; + case MON_HAS_MAX_MOVES: + DisplayMonNeedsToReplaceMove(taskId); + break; + case MON_ALREADY_KNOWS_MOVE: + return; + default: + DisplayMonLearnedMove(taskId, result); + break; + } +} + +void PartyMenuTryEvolution(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0); + + if (targetSpecies != SPECIES_NONE) + { + FreePartyPointers(); + gCB2_AfterEvolution = gPartyMenu.exitCallback; + BeginEvolutionScene(mon, targetSpecies, 1, gPartyMenu.slotId); + DestroyTask(taskId); + } + else + { + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } +} + +void DisplayMonNeedsToReplaceMove(u8 taskId) +{ + GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); + StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + StringExpandPlaceholders(gStringVar4, gText_PkmnNeedsToReplaceMove); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gPartyMenu.data1 = gMoveToLearn; + gTasks[taskId].func = Task_ReplaceMoveYesNo; +} + +void DisplayMonLearnedMove(u8 taskId, u16 move) +{ + GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); + StringCopy(gStringVar2, gMoveNames[move]); + StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gPartyMenu.data1 = move; + gTasks[taskId].func = Task_DoLearnedMoveFanfareAfterText; +} + +#define tUsedOnSlot data[0] +#define tHadEffect data[1] +#define tLastSlotUsed data[2] + +void ItemUseCB_SacredAsh(u8 taskId, UNUSED TaskFunc func) +{ + sPartyMenuInternal->tUsedOnSlot = FALSE; + sPartyMenuInternal->tHadEffect = FALSE; + sPartyMenuInternal->tLastSlotUsed = gPartyMenu.slotId; + UseSacredAsh(taskId); +} + +void UseSacredAsh(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 hp; + + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE) + { + gTasks[taskId].func = Task_SacredAshLoop; + return; + } + hp = GetMonData(mon, MON_DATA_HP); + if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0)) + { + gTasks[taskId].func = Task_SacredAshLoop; + return; + } + PlaySE(SE_KAIFUKU); + if (sPartyMenuInternal->tHadEffect == 0) + sSacredAshQuestLogMonBackup = mon; + SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]); + if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible) + DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1); + AnimatePartySlot(sPartyMenuInternal->tLastSlotUsed, 0); + AnimatePartySlot(gPartyMenu.slotId, 1); + PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_SacredAshDisplayHPRestored); + ResetHPTaskData(taskId, 0, hp); + sPartyMenuInternal->tUsedOnSlot = TRUE; + sPartyMenuInternal->tHadEffect = TRUE; +} + +void Task_SacredAshLoop(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + if (sPartyMenuInternal->tUsedOnSlot == TRUE) + { + sPartyMenuInternal->tUsedOnSlot = FALSE; + sPartyMenuInternal->tLastSlotUsed = gPartyMenu.slotId; + } + if (++(gPartyMenu.slotId) == PARTY_SIZE) + { + if (sPartyMenuInternal->tHadEffect == FALSE) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + } + else + { + gPartyMenuUseExitCallback = TRUE; + if (gPartyMenu.menuType != PARTY_MENU_TYPE_IN_BATTLE) + ItemUse_SetQuestLogEvent(4, sSacredAshQuestLogMonBackup, gSpecialVar_ItemId, 0xFFFF); + RemoveBagItem(gSpecialVar_ItemId, 1); + } + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + gPartyMenu.slotId = 0; + } + else + { + UseSacredAsh(taskId); + } + } +} + +void Task_SacredAshDisplayHPRestored(u8 taskId) +{ + GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); + DisplayPartyMenuMessage(gStringVar4, FALSE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_SacredAshLoop; +} + +#undef tUsedOnSlot +#undef tHadEffect +#undef tLastSlotUsed + +void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc func) +{ + bool8 noEffect; + + PlaySE(SE_SELECT); + noEffect = PokemonItemUseNoEffect(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, gPartyMenu.slotId, 0); + if (noEffect) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = func; + } + else + { + sub_8124DC0(taskId); + } +} + +void sub_8126BD4(void) +{ + gCB2_AfterEvolution = gPartyMenu.exitCallback; + ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0); + ItemUse_SetQuestLogEvent(4, &gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, 0xFFFF); + RemoveBagItem(gSpecialVar_ItemId, 1); +} + +bool8 sub_8126C24(void) +{ + if (!IsNationalPokedexEnabled() + && GetEvolutionTargetSpecies(&gPlayerParty[gPartyMenu.slotId], 2, gSpecialVar_ItemId) > KANTO_DEX_COUNT) + return FALSE; + else + return TRUE; +} + +u8 GetItemEffectType(u16 item) +{ + const u8 *itemEffect; + u32 statusCure; + + if (!IS_POKEMON_ITEM(item)) + return ITEM_EFFECT_NONE; + // Read the item's effect properties. + if (item == ITEM_ENIGMA_BERRY) + itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[item - ITEM_POTION]; + if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST)) + return ITEM_EFFECT_X_ITEM; + else if (itemEffect[0] & ITEM0_SACRED_ASH) + return ITEM_EFFECT_SACRED_ASH; + else if (itemEffect[3] & ITEM3_LEVEL_UP) + return ITEM_EFFECT_RAISE_LEVEL; + statusCure = itemEffect[3] & ITEM3_STATUS_ALL; + if (statusCure || (itemEffect[0] >> 7)) + { + if (statusCure == ITEM3_SLEEP) + return ITEM_EFFECT_CURE_SLEEP; + else if (statusCure == ITEM3_POISON) + return ITEM_EFFECT_CURE_POISON; + else if (statusCure == ITEM3_BURN) + return ITEM_EFFECT_CURE_BURN; + else if (statusCure == ITEM3_FREEZE) + return ITEM_EFFECT_CURE_FREEZE; + else if (statusCure == ITEM3_PARALYSIS) + return ITEM_EFFECT_CURE_PARALYSIS; + else if (statusCure == ITEM3_CONFUSION) + return ITEM_EFFECT_CURE_CONFUSION; + else if (itemEffect[0] >> 7 && !statusCure) + return ITEM_EFFECT_CURE_INFATUATION; + else + return ITEM_EFFECT_CURE_ALL_STATUS; + } + if (itemEffect[4] & (ITEM4_REVIVE | ITEM4_HEAL_HP)) + return ITEM_EFFECT_HEAL_HP; + else if (itemEffect[4] & ITEM4_EV_ATK) + return ITEM_EFFECT_ATK_EV; + else if (itemEffect[4] & ITEM4_EV_HP) + return ITEM_EFFECT_HP_EV; + else if (itemEffect[5] & ITEM5_EV_SPATK) + return ITEM_EFFECT_SPATK_EV; + else if (itemEffect[5] & ITEM5_EV_SPDEF) + return ITEM_EFFECT_SPDEF_EV; + else if (itemEffect[5] & ITEM5_EV_SPEED) + return ITEM_EFFECT_SPEED_EV; + else if (itemEffect[5] & ITEM5_EV_DEF) + return ITEM_EFFECT_DEF_EV; + else if (itemEffect[4] & ITEM4_EVO_STONE) + return ITEM_EFFECT_EVO_STONE; + else if (itemEffect[4] & ITEM4_PP_UP) + return ITEM_EFFECT_PP_UP; + else if (itemEffect[5] & ITEM5_PP_MAX) + return ITEM_EFFECT_PP_MAX; + else if (itemEffect[4] & (ITEM4_HEAL_PP_ALL | ITEM4_HEAL_PP_ONE)) + return ITEM_EFFECT_HEAL_PP; + else + return ITEM_EFFECT_NONE; +} + +void TryTutorSelectedMon(u8 taskId) +{ + struct Pokemon *mon; + s16 *move; + + if (!gPaletteFade.active) + { + mon = &gPlayerParty[gPartyMenu.slotId]; + move = &gPartyMenu.data1; + GetMonNickname(mon, gStringVar1); + gPartyMenu.data1 = GetTutorMove(gSpecialVar_0x8005); + StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); + move[1] = 2; + switch (CanMonLearnTMTutor(mon, 0, gSpecialVar_0x8005)) + { + case CANNOT_LEARN_MOVE: + DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); + return; + case ALREADY_KNOWS_MOVE: + DisplayLearnMoveMessageAndClose(taskId, gText_PkmnAlreadyKnows); + return; + default: + if (GiveMoveToMon(mon, gPartyMenu.data1) != MON_HAS_MAX_MOVES) + { + Task_LearnedMove(taskId); + return; + } + break; + } + DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove); + gTasks[taskId].func = Task_ReplaceMoveYesNo; + } +} + +void CB2_PartyMenuFromStartMenu(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToFieldWithOpenMenu); +} + +// Giving an item by selecting Give from the bag menu +// As opposted to by selecting Give in the party menu, which is handled by CursorCB_Give +void CB2_ChooseMonToGiveItem(void) +{ + MainCallback callback; + + switch (GetPocketByItemId(gSpecialVar_ItemId)) + { + default: + callback = CB2_ReturnToBagMenu; + break; + case POCKET_TM_CASE: + callback = CB2_ReturnToTMCaseMenu; + break; + case POCKET_BERRY_POUCH: + callback = CB2_ReturnToBerryPouchMenu; + break; + } + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_GIVE_ITEM, FALSE, PARTY_MSG_GIVE_TO_WHICH_MON, Task_HandleChooseMonInput, callback); + gPartyMenu.bagItem = gSpecialVar_ItemId; +} + +void TryGiveItemOrMailToSelectedMon(u8 taskId) +{ + sPartyMenuItemId = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); + if (sPartyMenuItemId == ITEM_NONE) + { + GiveItemOrMailToSelectedMon(taskId); + } + else if (ItemIsMail(sPartyMenuItemId)) + { + DisplayItemMustBeRemovedFirstMessage(taskId); + } + else + { + DisplayAlreadyHoldingItemSwitchMessage(&gPlayerParty[gPartyMenu.slotId], sPartyMenuItemId, TRUE); + gTasks[taskId].func = Task_SwitchItemsFromBagYesNo; + } +} + +void GiveItemOrMailToSelectedMon(u8 taskId) +{ + if (ItemIsMail(gPartyMenu.bagItem)) + { + RemoveItemToGiveFromBag(gPartyMenu.bagItem); + sPartyMenuInternal->exitCallback = CB2_WriteMailToGiveMonFromBag; + Task_ClosePartyMenu(taskId); + } + else + { + GiveItemToSelectedMon(taskId); + } +} + +void GiveItemToSelectedMon(u8 taskId) +{ + u16 item; + + if (!gPaletteFade.active) + { + item = gPartyMenu.bagItem; + DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], item, FALSE, 1); + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], item); + RemoveItemToGiveFromBag(item); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; + } +} + +void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId) +{ + s8 slot = gPartyMenu.slotId; + + if (IsPartyMenuTextPrinterActive() != TRUE) + { + UpdatePartyMonHeldItemSprite(&gPlayerParty[slot], &sPartyMenuBoxes[slot]); + Task_ClosePartyMenu(taskId); + } +} + +void CB2_WriteMailToGiveMonFromBag(void) +{ + u8 mail; + + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gPartyMenu.bagItem); + mail = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL); + DoEasyChatScreen(EASY_CHAT_TYPE_MAIL, gSaveBlock1Ptr->mail[mail].words, CB2_ReturnToPartyOrBagMenuFromWritingMail); +} + +void CB2_ReturnToPartyOrBagMenuFromWritingMail(void) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); + + // Canceled writing mail + if (gSpecialVar_Result == FALSE) + { + TakeMailFromMon(mon); + SetMonData(mon, MON_DATA_HELD_ITEM, &sPartyMenuItemId); + RemoveBagItem(sPartyMenuItemId, 1); + ReturnGiveItemToBagOrPC(item); + SetMainCallback2(gPartyMenu.exitCallback); + } + // Wrote mail + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_DisplayGaveMailFromBagMessage, gPartyMenu.exitCallback); + } +} + +void Task_DisplayGaveMailFromBagMessage(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (sPartyMenuItemId != ITEM_NONE) + DisplaySwitchedHeldItemMessage(gPartyMenu.bagItem, sPartyMenuItemId, FALSE); + else + DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], gPartyMenu.bagItem, FALSE, 1); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; + } +} + +void Task_SwitchItemsFromBagYesNo(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + PartyMenuDisplayYesNoMenu(); + gTasks[taskId].func = Task_HandleSwitchItemsFromBagYesNoInput; + } +} + +void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId) +{ + u16 item; + + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: // Yes, switch items + item = gPartyMenu.bagItem; + RemoveItemToGiveFromBag(item); + if (AddBagItem(sPartyMenuItemId, 1) == FALSE) + { + ReturnGiveItemToBagOrPC(item); + BufferBagFullCantTakeItemMessage(sPartyMenuItemId); + DisplayPartyMenuMessage(gStringVar4, FALSE); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; + } + else if (ItemIsMail(item)) + { + sPartyMenuInternal->exitCallback = CB2_WriteMailToGiveMonFromBag; + Task_ClosePartyMenu(taskId); + } + else + { + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], item); + DisplaySwitchedHeldItemMessage(item, sPartyMenuItemId, TRUE); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; + } + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + // fallthrough + case 1: // No, dont switch items + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; + break; + } +} + +void DisplayItemMustBeRemovedFirstMessage(u8 taskId) +{ + DisplayPartyMenuMessage(gText_RemoveMailBeforeItem, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; +} + +void RemoveItemToGiveFromBag(u16 item) +{ + if (gPartyMenu.action == PARTY_ACTION_GIVE_PC_ITEM) // Unused, never occurs + RemovePCItem(item, 1); + else + RemoveBagItem(item, 1); +} + +// Returns FALSE if there was no space to return the item +// but there always should be, and the return is ignored in all uses +bool8 ReturnGiveItemToBagOrPC(u16 item) +{ + if (gPartyMenu.action == PARTY_ACTION_GIVE_ITEM) + return AddBagItem(item, 1); + else + return AddPCItem(item, 1); +} + +void ChooseMonToGiveMailFromMailbox(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_GIVE_MAILBOX_MAIL, FALSE, PARTY_MSG_GIVE_TO_WHICH_MON, Task_HandleChooseMonInput, Mailbox_ReturnToMailListAfterDeposit); +} + +void TryGiveMailToSelectedMon(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + struct MailStruct *mail; + + gPartyMenuUseExitCallback = FALSE; + mail = &gSaveBlock1Ptr->mail[gPlayerPcMenuManager.itemsAbove + 6 + gPlayerPcMenuManager.cursorPos]; + if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE) + { + DisplayPartyMenuMessage(gText_PkmnHoldingItemCantHoldMail, TRUE); + } + else + { + GiveMailToMon2(mon, mail); + ClearMailStruct(mail); + DisplayPartyMenuMessage(gText_MailTransferredFromMailbox, TRUE); + } + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; +} + +void InitChooseHalfPartyForBattle(u8 maxBattlers) +{ + ClearSelectedPartyOrder(); + InitPartyMenu(PARTY_MENU_TYPE_CHOOSE_HALF, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, gMain.savedCallback); + gPartyMenu.unk_8_6 = maxBattlers; + gPartyMenu.task = Task_ValidateChosenHalfParty; +} + +void ClearSelectedPartyOrder(void) +{ + memset(gSelectedOrderFromParty, 0, sizeof(gSelectedOrderFromParty)); +} + +u8 GetPartySlotEntryStatus(s8 slot) +{ + if (GetBattleEntryEligibility(&gPlayerParty[slot]) == FALSE) + return 2; + if (HasPartySlotAlreadyBeenSelected(slot + 1) == TRUE) + return 1; + return 0; +} + +#ifdef NONMATCHING +bool8 GetBattleEntryEligibility(struct Pokemon *mon) +{ + u16 species; + u16 i = 0; + + if (GetMonData(mon, MON_DATA_IS_EGG)) + return FALSE; + switch (gPartyMenu.unk_8_6) + { + default: + if (GetMonData(mon, MON_DATA_LEVEL) <= 30) + return TRUE; + return FALSE; + case 0: + if (GetMonData(mon, MON_DATA_HP) != 0) + return TRUE; + return FALSE; + case 1: + if (gSaveBlock2Ptr->battleTower.battleTowerLevelType != 0 // level 100 + || GetMonData(mon, MON_DATA_LEVEL) <= 50) + { + species = GetMonData(mon, MON_DATA_SPECIES); + // Although i is always 0, the compiler still computes the offset of + // gBattleTowerBannedSpecies[i] by shifting i. + // It's also in emerald, but for whatever reason it's generated. + for (; gBattleTowerBannedSpecies[i] != 0xFFFF; ++i) + if (gBattleTowerBannedSpecies[i] == species) + return FALSE; + return TRUE; + } + return FALSE; + } +} +#else +NAKED +bool8 GetBattleEntryEligibility(struct Pokemon *mon) +{ + asm_unified("push {r4,r5,lr}\n\ + adds r4, r0, 0\n\ + movs r5, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0812757A\n\ + ldr r0, _08127580 @ =gPartyMenu\n\ + ldrb r0, [r0, 0x8]\n\ + lsrs r1, r0, 6\n\ + cmp r1, 0\n\ + beq _08127584\n\ + cmp r1, 0x1\n\ + beq _08127592\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x1E\n\ + bls _081275E0\n\ + _0812757A:\n\ + movs r0, 0\n\ + b _081275E2\n\ + .align 2, 0\n\ + _08127580: .4byte gPartyMenu\n\ + _08127584:\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _081275E0\n\ + b _0812757A\n\ + _08127592:\n\ + ldr r0, _081275E8 @ =gSaveBlock2Ptr\n\ + ldr r0, [r0]\n\ + ldr r2, _081275EC @ =0x0000055c\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _081275AE\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x32\n\ + bhi _0812757A\n\ + _081275AE:\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r3, _081275F0 @ =gBattleTowerBannedSpecies\n\ + lsls r1, r5, 1\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + ldr r2, _081275F4 @ =0x0000ffff\n\ + cmp r0, r2\n\ + beq _081275E0\n\ + _081275C8:\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + cmp r0, r4\n\ + beq _0812757A\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + lsls r1, r5, 1\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + cmp r0, r2\n\ + bne _081275C8\n\ + _081275E0:\n\ + movs r0, 0x1\n\ + _081275E2:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ + _081275E8: .4byte gSaveBlock2Ptr\n\ + _081275EC: .4byte 0x0000055c\n\ + _081275F0: .4byte gBattleTowerBannedSpecies\n\ + _081275F4: .4byte 0x0000ffff\n\ + "); +} +#endif + +u8 CheckBattleEntriesAndGetMessage(void) +{ + u8 i, j; + struct Pokemon *party = gPlayerParty; + u8 *order = gSelectedOrderFromParty; + + switch (gPartyMenu.unk_8_6) + { + case 1: + if (order[2] == 0) + return PARTY_MSG_THREE_MONS_ARE_NEEDED; + for (i = 0; i < 2; ++i) + { + sPartyMenuInternal->data[15] = GetMonData(&party[order[i] - 1], MON_DATA_SPECIES); + sPartyMenuInternal->data[14] = GetMonData(&party[order[i] - 1], MON_DATA_HELD_ITEM); + for (j = i + 1; j < 3; ++j) + { + if (sPartyMenuInternal->data[15] == GetMonData(&party[order[j] - 1], MON_DATA_SPECIES)) + return PARTY_MSG_MONS_CANT_BE_SAME; + if (sPartyMenuInternal->data[14] != ITEM_NONE && sPartyMenuInternal->data[14] == GetMonData(&party[order[j] - 1], MON_DATA_HELD_ITEM)) + return PARTY_MSG_NO_SAME_HOLD_ITEMS; + } + } + break; + case 2: + if (order[1] == 0) + return PARTY_MSG_TWO_MONS_ARE_NEEDED; + break; + } + return 0xFF; +} + +bool8 HasPartySlotAlreadyBeenSelected(u8 slot) +{ + u8 i; + + for (i = 0; i < NELEMS(gSelectedOrderFromParty); ++i) + if (gSelectedOrderFromParty[i] == slot) + return TRUE; + return FALSE; +} + +void Task_ValidateChosenHalfParty(u8 taskId) +{ + u8 msgId = CheckBattleEntriesAndGetMessage(); + + if (msgId != 0xFF) + { + PlaySE(SE_HAZURE); + DisplayPartyMenuStdMessage(msgId); + gTasks[taskId].func = Task_ContinueChoosingHalfParty; + } + else + { + if (gSelectedOrderFromParty[0] != 0) + { + PlaySE(SE_SELECT); + Task_ClosePartyMenu(taskId); + } + else + { + PlaySE(SE_HAZURE); + DisplayPartyMenuStdMessage(PARTY_MSG_NO_MON_FOR_BATTLE); + gTasks[taskId].func = Task_ContinueChoosingHalfParty; + } + } +} + +void Task_ContinueChoosingHalfParty(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; + } +} + +void sub_81277F4(u8 menuType, MainCallback callback) +{ + InitPartyMenu(menuType, + PARTY_LAYOUT_SINGLE, + PARTY_ACTION_CHOOSE_MON, + FALSE, + PARTY_MSG_CHOOSE_MON, + Task_HandleChooseMonInput, + callback); +} + +void ChooseMonForMoveTutor(void) +{ + if (gSpecialVar_0x8005 < TUTOR_MOVE_COUNT) + { + InitPartyMenu(PARTY_MENU_TYPE_FIELD, + PARTY_LAYOUT_SINGLE, + PARTY_ACTION_MOVE_TUTOR, + FALSE, + PARTY_MSG_TEACH_WHICH_MON, + Task_HandleChooseMonInput, + CB2_ReturnToFieldContinueScriptPlayMapMusic); + } + else + { + InitPartyMenu(PARTY_MENU_TYPE_FIELD, + PARTY_LAYOUT_SINGLE, + PARTY_ACTION_MOVE_TUTOR, + FALSE, + PARTY_MSG_NONE, + TryTutorSelectedMon, + CB2_ReturnToFieldContinueScriptPlayMapMusic); + gPartyMenu.slotId = gSpecialVar_0x8007; + } +} + +void ChooseMonForWirelessMinigame(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_MINIGAME, PARTY_LAYOUT_SINGLE, PARTY_ACTION_MINIGAME, FALSE, PARTY_MSG_CHOOSE_MON_OR_CANCEL, Task_HandleChooseMonInput, CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +u8 GetPartyLayoutFromBattleType(void) +{ + if (IsDoubleBattle() == FALSE) + return PARTY_LAYOUT_SINGLE; + if (IsMultiBattle() == TRUE) + return PARTY_LAYOUT_MULTI; + return PARTY_LAYOUT_DOUBLE; +} + +void OpenPartyMenuInTutorialBattle(u8 partyAction) +{ + if (!sub_80EB2E0(8) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)) + { + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, + GetPartyLayoutFromBattleType(), + partyAction, + FALSE, + PARTY_MSG_NONE, + sub_8120C3C, + SetCB2ToReshowScreenAfterMenu); + sub_80EB2F4(8); + } + else + { + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, + GetPartyLayoutFromBattleType(), + partyAction, + FALSE, + PARTY_MSG_CHOOSE_MON, + Task_HandleChooseMonInput, + SetCB2ToReshowScreenAfterMenu); + } + nullsub_44(); + UpdatePartyToBattleOrder(); +} + +void OpenPartyMenuInBattle(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, sub_8120EBC, SetCB2ToReshowScreenAfterMenu); + nullsub_44(); + UpdatePartyToBattleOrder(); +} + +void ChooseMonForInBattleItem(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_REUSABLE_ITEM, FALSE, PARTY_MSG_USE_ON_WHICH_MON, sub_8120FCC, sub_8107ECC); + nullsub_44(); + UpdatePartyToBattleOrder(); +} + +void sub_81279E0(void) +{ + if (!sub_80EB2E0(8) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)) + { + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, + GetPartyLayoutFromBattleType(), + PARTY_ACTION_USE_ITEM, + FALSE, + PARTY_MSG_NONE, + sub_8120C3C, + sub_8107ECC); + sub_80EB2F4(8); + } + else + { + MainCallback callback; + + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + callback = CB2_ReturnToBerryPouchMenu; + else + callback = sub_8107ECC; + InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, + GetPartyLayoutFromBattleType(), + PARTY_ACTION_USE_ITEM, + FALSE, + PARTY_MSG_USE_ON_WHICH_MON, + Task_HandleChooseMonInput, + callback); + } + nullsub_44(); + UpdatePartyToBattleOrder(); +} + +u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon) +{ + if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) + return ACTIONS_SUMMARY_ONLY; + else if (gPartyMenu.action == PARTY_ACTION_SEND_OUT) + return ACTIONS_SEND_OUT; + else + return ACTIONS_SHIFT; +} + +bool8 TrySwitchInPokemon(void) +{ + u8 slot = GetCursorSelectionMonId(); + u8 newSlot; + u8 i; + + // In a multi battle, slots 1, 4, and 5 are the partner's pokemon + if (IsMultiBattle() == TRUE && (slot == 1 || slot == 4 || slot == 5)) + { + StringCopy(gStringVar1, GetTrainerPartnerName()); + StringExpandPlaceholders(gStringVar4, gText_CantSwitchWithAlly); + return FALSE; + } + if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0) + { + GetMonNickname(&gPlayerParty[slot], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnHasNoEnergy); + return FALSE; + } + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) == B_SIDE_PLAYER && GetPartyIdFromBattleSlot(slot) == gBattlerPartyIndexes[i]) + { + GetMonNickname(&gPlayerParty[slot], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadyInBattle); + return FALSE; + } + } + if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG)) + { + StringExpandPlaceholders(gStringVar4, gText_EggCantBattle); + return FALSE; + } + if (GetPartyIdFromBattleSlot(slot) == gBattleStruct->field_8B) + { + GetMonNickname(&gPlayerParty[slot], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadySelected); + return FALSE; + } + if (gPartyMenu.action == PARTY_ACTION_ABILITY_PREVENTS) + { + SetMonPreventsSwitchingString(); + return FALSE; + } + if (gPartyMenu.action == PARTY_ACTION_CANT_SWITCH) + { + u8 currBattler = gBattlerInMenuId; + + GetMonNickname(&gPlayerParty[GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[currBattler])], gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnCantSwitchOut); + return FALSE; + } + gSelectedMonPartyId = GetPartyIdFromBattleSlot(slot); + gPartyMenuUseExitCallback = TRUE; + newSlot = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattlerInMenuId]); + SwitchPartyMonSlots(newSlot, slot); + SwapPartyPokemon(&gPlayerParty[newSlot], &gPlayerParty[slot]); + return TRUE; +} + +void BufferBattlePartyCurrentOrder(void) +{ + BufferBattlePartyOrder(gBattlePartyCurrentOrder, GetPlayerFlankId()); +} + +void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) +{ + u8 partyIds[PARTY_SIZE]; + s32 i, j; + + if (IsMultiBattle() == TRUE) + { + // Party ids are packed in 4 bits at a time + // i.e. the party id order below would be 0, 3, 5, 4, 2, 1, and the two parties would be 0,5,4 and 3,2,1 + if (flankId != 0) + { + partyBattleOrder[0] = 0 | (3 << 4); + partyBattleOrder[1] = 5 | (4 << 4); + partyBattleOrder[2] = 2 | (1 << 4); + } + else + { + partyBattleOrder[0] = 3 | (0 << 4); + partyBattleOrder[1] = 2 | (1 << 4); + partyBattleOrder[2] = 5 | (4 << 4); + } + return; + } + else if (IsDoubleBattle() == FALSE) + { + j = 1; + partyIds[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (i != partyIds[0]) + { + partyIds[j] = i; + ++j; + } + } + } + else + { + j = 2; + partyIds[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]; + partyIds[1] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (i != partyIds[0] && i != partyIds[1]) + { + partyIds[j] = i; + ++j; + } + } + } + for (i = 0; i < (s32)NELEMS(gBattlePartyCurrentOrder); ++i) + partyBattleOrder[i] = (partyIds[0 + (i * 2)] << 4) | partyIds[1 + (i * 2)]; +} + +void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId) +{ + BufferBattlePartyOrderBySide(gBattleStruct->field_60[battlerId], flankId, battlerId); +} + +// when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above +void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId) +{ + u8 partyIndexes[PARTY_SIZE]; + s32 i, j; + u8 leftBattler; + u8 rightBattler; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + else + { + leftBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + rightBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + if (IsMultiBattle() == TRUE) + { + if (flankId != 0) + { + partyBattleOrder[0] = 0 | (3 << 4); + partyBattleOrder[1] = 5 | (4 << 4); + partyBattleOrder[2] = 2 | (1 << 4); + } + else + { + partyBattleOrder[0] = 3 | (0 << 4); + partyBattleOrder[1] = 2 | (1 << 4); + partyBattleOrder[2] = 5 | (4 << 4); + } + return; + } + else if (IsDoubleBattle() == FALSE) + { + j = 1; + partyIndexes[0] = gBattlerPartyIndexes[leftBattler]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (i != partyIndexes[0]) + { + partyIndexes[j] = i; + ++j; + } + } + } + else + { + j = 2; + partyIndexes[0] = gBattlerPartyIndexes[leftBattler]; + partyIndexes[1] = gBattlerPartyIndexes[rightBattler]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (i != partyIndexes[0] && i != partyIndexes[1]) + { + partyIndexes[j] = i; + ++j; + } + } + } + for (i = 0; i < 3; ++i) + partyBattleOrder[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)]; +} + +void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2) +{ + u8 partyIds[PARTY_SIZE]; + u8 tempSlot = 0; + s32 i, j; + u8 *partyBattleOrder; + u8 partyIdBuffer; + + if (IsMultiBattle()) + { + partyBattleOrder = gBattleStruct->field_60[battlerId]; + for (i = j = 0; i < 3; ++j, ++i) + { + partyIds[j] = partyBattleOrder[i] >> 4; + j++; + partyIds[j] = partyBattleOrder[i] & 0xF; + } + partyIdBuffer = partyIds[slot2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (partyIds[i] == slot) + { + tempSlot = partyIds[i]; + partyIds[i] = partyIdBuffer; + break; + } + } + if (i != PARTY_SIZE) + { + partyIds[slot2] = tempSlot; + partyBattleOrder[0] = (partyIds[0] << 4) | partyIds[1]; + partyBattleOrder[1] = (partyIds[2] << 4) | partyIds[3]; + partyBattleOrder[2] = (partyIds[4] << 4) | partyIds[5]; + } + } +} + +u8 GetPartyIdFromBattleSlot(u8 slot) +{ + u8 modResult = slot & 1; + u8 retVal; + + slot /= 2; + if (modResult != 0) + retVal = gBattlePartyCurrentOrder[slot] & 0xF; + else + retVal = gBattlePartyCurrentOrder[slot] >> 4; + return retVal; +} + +void SetPartyIdAtBattleSlot(u8 slot, u8 setVal) +{ + bool32 modResult = slot & 1; + + slot /= 2; + if (modResult != 0) + gBattlePartyCurrentOrder[slot] = (gBattlePartyCurrentOrder[slot] & 0xF0) | setVal; + else + gBattlePartyCurrentOrder[slot] = (gBattlePartyCurrentOrder[slot] & 0xF) | (setVal << 4); +} + +void SwitchPartyMonSlots(u8 slot, u8 slot2) +{ + u8 partyId = GetPartyIdFromBattleSlot(slot); + + SetPartyIdAtBattleSlot(slot, GetPartyIdFromBattleSlot(slot2)); + SetPartyIdAtBattleSlot(slot2, partyId); +} + +u8 GetPartyIdFromBattlePartyId(u8 battlePartyId) +{ + u8 i, j; + + for (j = i = 0; i < (s32)NELEMS(gBattlePartyCurrentOrder); ++j, ++i) + { + if ((gBattlePartyCurrentOrder[i] >> 4) != battlePartyId) + { + ++j; + if ((gBattlePartyCurrentOrder[i] & 0xF) == battlePartyId) + return j; + } + else + { + return j; + } + } + return 0; +} + +void UpdatePartyToBattleOrder(void) +{ + struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty)); + u8 i; + + memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty)); + for (i = 0; i < PARTY_SIZE; ++i) + memcpy(&gPlayerParty[GetPartyIdFromBattlePartyId(i)], &partyBuffer[i], sizeof(struct Pokemon)); + Free(partyBuffer); +} + +void UpdatePartyToFieldOrder(void) +{ + struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty)); + u8 i; + + memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty)); + for (i = 0; i < PARTY_SIZE; ++i) + memcpy(&gPlayerParty[GetPartyIdFromBattleSlot(i)], &partyBuffer[i], sizeof(struct Pokemon)); + Free(partyBuffer); +} + +// not used +void SwitchAliveMonIntoLeadSlot(void) +{ + u8 i; + struct Pokemon *mon; + u8 partyId; + + for (i = 1; i < PARTY_SIZE; ++i) + { + mon = &gPlayerParty[GetPartyIdFromBattleSlot(i)]; + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(mon, MON_DATA_HP) != 0) + { + partyId = GetPartyIdFromBattleSlot(0); + SwitchPartyMonSlots(0, i); + SwapPartyPokemon(&gPlayerParty[partyId], mon); + break; + } + } +} + +void CB2_SetUpExitToBattleScreen(void) +{ + CB2_SetUpReshowBattleScreenAfterMenu(); + SetMainCallback2(SetCB2ToReshowScreenAfterMenu); +} + +void ShowPartyMenuToShowcaseMultiBattleParty(void) +{ + InitPartyMenu(PARTY_MENU_TYPE_MULTI_SHOWCASE, PARTY_LAYOUT_MULTI_SHOWCASE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_NONE, Task_InitMultiPartnerPartySlideIn, gMain.savedCallback); +} + +#define tXPos data[0] + +void Task_InitMultiPartnerPartySlideIn(u8 taskId) +{ + // The first slide step also sets the sprites offscreen + gTasks[taskId].tXPos = 256; + SlideMultiPartyMenuBoxSpritesOneStep(taskId); + ChangeBgX(2, 0x10000, 0); + gTasks[taskId].func = Task_MultiPartnerPartySlideIn; +} + +void Task_MultiPartnerPartySlideIn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 i; + + if (!gPaletteFade.active) + { + tXPos -= 8; + SlideMultiPartyMenuBoxSpritesOneStep(taskId); + if (tXPos == 0) + { + for (i = 3; i < PARTY_SIZE; ++i) + { + if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE) + AnimateSelectedPartyIcon(sPartyMenuBoxes[i].monSpriteId, 0); + } + PlaySE(SE_W231); // The Harden SE plays once the partners party mons have slid on screen + gTasks[taskId].func = Task_WaitAfterMultiPartnerPartySlideIn; + } + } +} + +void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + // data[0] used as a timer afterwards rather than the x pos + if (++data[0] == 256) + Task_ClosePartyMenu(taskId); +} + +void MoveMultiPartyMenuBoxSprite(u8 spriteId, s16 x) +{ + if (x >= 0) + gSprites[spriteId].pos2.x = x; +} + +void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 i; + + for (i = 3; i < PARTY_SIZE; ++i) + { + if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE) + { + MoveMultiPartyMenuBoxSprite(sPartyMenuBoxes[i].monSpriteId, tXPos - 8); + MoveMultiPartyMenuBoxSprite(sPartyMenuBoxes[i].itemSpriteId, tXPos - 8); + MoveMultiPartyMenuBoxSprite(sPartyMenuBoxes[i].pokeballSpriteId, tXPos - 8); + MoveMultiPartyMenuBoxSprite(sPartyMenuBoxes[i].statusSpriteId, tXPos - 8); + } + } + ChangeBgX(2, 0x800, 1); +} + +#undef tXpos + +void ChooseMonForDaycare(void) +{ + gFieldCallback2 = CB2_FadeFromPartyMenu; + InitPartyMenu(PARTY_MENU_TYPE_DAYCARE, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON_2, Task_HandleChooseMonInput, CB2_ReturnToField); +} + +void ChoosePartyMonByMenuType(u8 menuType) +{ + gFieldCallback2 = CB2_FadeFromPartyMenu; + InitPartyMenu(menuType, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_AND_CLOSE, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToField); +} + +bool8 CB2_FadeFromPartyMenu(void) +{ + sub_807DC00(); + CreateTask(Task_PartyMenuWaitForFade, 10); + return TRUE; +} + +void Task_PartyMenuWaitForFade(u8 taskId) +{ + if (IsWeatherNotFadingIn()) + { + DestroyTask(taskId); + ScriptContext2_Disable(); + EnableBothScriptContexts(); + } +} diff --git a/src/player_pc.c b/src/player_pc.c index c3dc81dd2..00d41abe6 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -38,7 +38,7 @@ static EWRAM_DATA const u8 *sItemOrder = NULL; static EWRAM_DATA u8 sTopMenuItemCount = 0; EWRAM_DATA struct PlayerPCItemPageStruct gPlayerPcMenuManager = {}; -#define SELECTED_MAIL (gSaveBlock1Ptr->mail[PC_MAIL_NUM(gPlayerPcMenuManager.scrollOffset) + gPlayerPcMenuManager.selectedRow]) +#define SELECTED_MAIL (gSaveBlock1Ptr->mail[PC_MAIL_NUM(gPlayerPcMenuManager.itemsAbove) + gPlayerPcMenuManager.cursorPos]) static void Task_DrawPlayerPcTopMenu(u8 taskId); static void Task_TopMenuHandleInput(u8 taskId); @@ -234,8 +234,8 @@ static void Task_PlayerPcMailbox(u8 taskId) } else { - gPlayerPcMenuManager.selectedRow = 0; - gPlayerPcMenuManager.scrollOffset = 0; + gPlayerPcMenuManager.cursorPos = 0; + gPlayerPcMenuManager.itemsAbove = 0; PCMailCompaction(); Task_SetPageItemVars(taskId); if (gPlayerPcMenuManager.unk_9 == 0) @@ -469,7 +469,7 @@ static void Task_MailboxPcHandleInput(u8 taskId) if (!gPaletteFade.active) { input = ListMenu_ProcessInput(tListMenuTaskId); - ListMenuGetScrollAndRow(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow); + ListMenuGetScrollAndRow(tListMenuTaskId, &gPlayerPcMenuManager.itemsAbove, &gPlayerPcMenuManager.cursorPos); switch (input) { case -1: @@ -483,7 +483,7 @@ static void Task_MailboxPcHandleInput(u8 taskId) PlaySE(SE_SELECT); MailboxPC_RemoveWindow(0); MailboxPC_RemoveWindow(1); - DestroyListMenuTask(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow); + DestroyListMenuTask(tListMenuTaskId, &gPlayerPcMenuManager.itemsAbove, &gPlayerPcMenuManager.cursorPos); ScheduleBgCopyTilemapToVram(0); RemoveScrollIndicatorArrowPair(gPlayerPcMenuManager.scrollIndicatorId); gTasks[taskId].func = Task_PrintWhatToDoWithSelectedMail; @@ -641,10 +641,10 @@ static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId) ClearMailStruct(mail); PCMailCompaction(); gPlayerPcMenuManager.count--; - if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset) + if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.itemsAbove) { - if (gPlayerPcMenuManager.scrollOffset != 0) - gPlayerPcMenuManager.scrollOffset--; + if (gPlayerPcMenuManager.itemsAbove != 0) + gPlayerPcMenuManager.itemsAbove--; } Task_SetPageItemVars(taskId); } @@ -693,10 +693,10 @@ static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void) PCMailCompaction(); if (count != gPlayerPcMenuManager.count) { - if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset) + if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.itemsAbove) { - if (gPlayerPcMenuManager.scrollOffset != 0) - gPlayerPcMenuManager.scrollOffset--; + if (gPlayerPcMenuManager.itemsAbove != 0) + gPlayerPcMenuManager.itemsAbove--; } } Task_SetPageItemVars(taskId); @@ -708,7 +708,7 @@ static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void) sub_807DC00(); } -void CB2_PlayerPC_ReturnFromPartyMenu(void) +void Mailbox_ReturnToMailListAfterDeposit(void) { gFieldCallback = CB2_ReturnToMailboxPc_UpdateScrollVariables; SetMainCallback2(CB2_ReturnToField); diff --git a/src/pokemon.c b/src/pokemon.c index 9aaddc142..33a3f387e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4117,7 +4117,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (sp34 != 4) { gAbsentBattlerFlags &= ~gBitTable[sp34]; - CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34])); + CopyPlayerPartyMonToBattleData(sp34, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[sp34])); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) gBattleResults.numRevivesUsed++; } @@ -4405,7 +4405,7 @@ static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, } } -bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) +bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) { u32 data; s32 tmp; @@ -5179,7 +5179,7 @@ void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies) SetMonData(mon, MON_DATA_NICKNAME, gSpeciesNames[newSpecies]); } -bool8 sub_80435E0(void) +bool8 GetPlayerFlankId(void) { bool8 retVal = FALSE; switch (gLinkPlayers[GetMultiplayerId()].id) @@ -5813,11 +5813,11 @@ void SetMonPreventsSwitchingString(void) gBattleTextBuff1[4] = B_BUFF_EOS; if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER) - gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]); + gBattleTextBuff1[3] = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]); else gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]; - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId])) + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattlerInMenuId])) BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4); } From 7817546781884daeaf46ebdede62d02ad0a7ab29 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 03:50:28 +0800 Subject: [PATCH 7/9] clean up --- include/party_menu.h | 103 +-- src/data/party_menu.h | 240 +++--- src/data/pokemon/tutor_learnsets.h | 6 +- src/party_menu.c | 1140 ++++++++++++++-------------- 4 files changed, 751 insertions(+), 738 deletions(-) diff --git a/include/party_menu.h b/include/party_menu.h index edd5efc92..e2aee442f 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -17,60 +17,71 @@ struct PartyMenu u8 action; u16 bagItem; s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos - s16 learnMoveState; // data2, used only as a learn move state + s16 learnMoveState; }; extern struct PartyMenu gPartyMenu; -extern u8 gPartyMenuUseExitCallback; +extern bool8 gPartyMenuUseExitCallback; extern u8 gSelectedMonPartyId; -extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; -extern void (*gItemUseCB)(u8 taskId, TaskFunc func); +extern MainCallback gPostMenuFieldCallback; extern u8 gSelectedOrderFromParty[3]; +extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; -bool8 FieldCallback_PrepareFadeInFromMenu(void); -bool8 MonKnowsMove(struct Pokemon *, u16); -void sub_81B58A8(void); -void DoWallyTutorialBagMenu(void); -u8 GetAilmentFromStatus(u32 status); -u16 ItemIdToBattleMoveId(u16 itemId); -void ItemUseCB_TMHM(u8 taskId, TaskFunc func); -void CB2_ShowPartyMenuForItemUse(void); -void CB2_ChooseMonToGiveItem(void); -void CB2_GiveHoldItem(void); -u8 GetCursorSelectionMonId(void); -void ChooseMonForDaycare(void); -void AnimatePartySlot(u8 monId, u8 a1); -void DisplayPartyMenuStdMessage(u32); -void Task_HandleChooseMonInput(u8 taskId); -void PartyMenuModifyHP(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc); -u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); -u8 DisplayPartyMenuMessage(const u8 * src, u8 a1); -bool8 IsPartyMenuTextPrinterActive(void); -void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); -void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_PPRecovery(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_PPUp(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_RareCandy(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc followUpFunc); -void ItemUseCB_SacredAsh(u8 taskId, TaskFunc followUpFunc); -void sub_81279E0(void); -void ItemUseCB_MedicineStep(u8 taskId, TaskFunc followUpFunc); -u8 GetItemEffectType(u16 itemId); -u8 GetPartyIdFromBattlePartyId(u8); -void BufferBattlePartyCurrentOrder(void); -void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 multiplayerFlag); -void OpenPartyMenuInBattle(void); -void SwitchPartyOrderLinkMulti(u8 battlerId, u8 unk, u8 arrayIndex); +extern void (*gItemUseCB)(u8, TaskFunc); + +void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCursorPos, u8 messageId, TaskFunc task, MainCallback callback); +void AnimatePartySlot(u8 slot, u8 animNum); bool8 IsMultiBattle(void); -void CB2_ChooseMonToGiveItem(void); -void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); -void ChooseMonToGiveMailFromMailbox(void); -void CB2_PartyMenuFromStartMenu(void); -void ShowPartyMenuToShowcaseMultiBattleParty(void); -void SwitchPartyMonSlots(u8 slot, u8 slot2); +u8 GetCursorSelectionMonId(void); +u8 GetPartyMenuType(void); +void Task_HandleChooseMonInput(u8 taskId); +u8 *GetMonNickname(struct Pokemon *mon, u8 *dest); +u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen); +bool8 IsPartyMenuTextPrinterActive(void); +void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 hpDifference, TaskFunc task); +u8 GetAilmentFromStatus(u32 status); +u8 GetMonAilment(struct Pokemon *mon); +void DisplayPartyMenuStdMessage(u32 stringId); void LoadHeldItemIcons(void); -void OpenPartyMenuInTutorialBattle(u8 partyAction); -void ClearSelectedPartyOrder(void); +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); +void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum); void CB2_SelectBagItemToGive(void); +void CB2_GiveHoldItem(void); +bool8 FieldCallback_PrepareFadeInFromMenu(void); +void CB2_ReturnToPartyMenuFromFlyMap(void); +void sub_8124C1C(const u8 *healLocCtrlData); +void CB2_ShowPartyMenuForItemUse(void); +void ItemUseCB_Medicine(u8 taskId, TaskFunc func); +void ItemUseCB_MedicineStep(u8 taskId, TaskFunc func); +void ItemUseCB_PPRecovery(u8 taskId, UNUSED TaskFunc func); +void ItemUseCB_PPUp(u8 taskId, UNUSED TaskFunc func); +u16 ItemIdToBattleMoveId(u16 item); +bool8 IsMoveHm(u16 move); +bool8 MonKnowsMove(struct Pokemon *mon, u16 move); +void ItemUseCB_TMHM(u8 taskId, UNUSED TaskFunc func); +void ItemUseCB_RareCandy(u8 taskId, TaskFunc func); +void ItemUseCB_SacredAsh(u8 taskId, UNUSED TaskFunc func); +void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc func); +u8 GetItemEffectType(u16 item); +void CB2_PartyMenuFromStartMenu(void); +void CB2_ChooseMonToGiveItem(void); +void ChooseMonToGiveMailFromMailbox(void); +void InitChooseHalfPartyForBattle(u8 a1); +void ClearSelectedPartyOrder(void); +void sub_81277F4(u8 menuType, MainCallback callback); +void ChooseMonForMoveTutor(void); +void ChooseMonForWirelessMinigame(void); +void OpenPartyMenuInTutorialBattle(u8 partyAction); +void OpenPartyMenuInBattle(void); +void ChooseMonForInBattleItem(void); +void sub_81279E0(void); +void BufferBattlePartyCurrentOrder(void); +void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId); +void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2); +void SwitchPartyMonSlots(u8 slot, u8 slot2); +u8 GetPartyIdFromBattlePartyId(u8 battlePartyId); +void ShowPartyMenuToShowcaseMultiBattleParty(void); +void ChooseMonForDaycare(void); +void ChoosePartyMonByMenuType(u8 menuType); #endif // GUARD_PARTY_MENU_H diff --git a/src/data/party_menu.h b/src/data/party_menu.h index c00fe3613..fa74d1ad8 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -1,4 +1,4 @@ -const struct BgTemplate sPartyMenuBgTemplates[] = +static const struct BgTemplate sPartyMenuBgTemplates[] = { { .bg = 0, @@ -35,7 +35,7 @@ enum PARTY_BOX_RIGHT_COLUMN, }; -const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = +static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = { [PARTY_BOX_LEFT_COLUMN] = { @@ -67,7 +67,7 @@ const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = }, }; -const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = +static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = { [PARTY_LAYOUT_SINGLE] = { @@ -107,10 +107,10 @@ const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = }, }; -const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); -const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); +static const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); +static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); -const u8 sFontColorTable[][3] = +static const u8 sFontColorTable[][3] = { {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, // Default {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_GREEN}, // Unused @@ -120,7 +120,7 @@ const u8 sFontColorTable[][3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, // Unused }; -const struct WindowTemplate sSinglePartyMenuWindowTemplate[] = +static const struct WindowTemplate sSinglePartyMenuWindowTemplate[] = { { .bg = 0, @@ -185,10 +185,10 @@ const struct WindowTemplate sSinglePartyMenuWindowTemplate[] = .paletteNum = 14, .baseBlock = 0x1DF, }, - DUMMY_WIN_TEMPLATE + DUMMY_WIN_TEMPLATE, }; -const struct WindowTemplate sDoublePartyMenuWindowTemplate[] = +static const struct WindowTemplate sDoublePartyMenuWindowTemplate[] = { { .bg = 0, @@ -253,10 +253,10 @@ const struct WindowTemplate sDoublePartyMenuWindowTemplate[] = .paletteNum = 14, .baseBlock = 0x1DF, }, - DUMMY_WIN_TEMPLATE + DUMMY_WIN_TEMPLATE, }; -const struct WindowTemplate sMultiPartyMenuWindowTemplate[] = +static const struct WindowTemplate sMultiPartyMenuWindowTemplate[] = { { .bg = 0, @@ -324,7 +324,7 @@ const struct WindowTemplate sMultiPartyMenuWindowTemplate[] = DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate sShowcaseMultiPartyMenuWindowTemplate[] = +static const struct WindowTemplate sShowcaseMultiPartyMenuWindowTemplate[] = { { .bg = 0, @@ -383,7 +383,7 @@ const struct WindowTemplate sShowcaseMultiPartyMenuWindowTemplate[] = DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate sCancelButtonWindowTemplate = +static const struct WindowTemplate sCancelButtonWindowTemplate = { .bg = 0, .tilemapLeft = 24, @@ -394,7 +394,7 @@ const struct WindowTemplate sCancelButtonWindowTemplate = .baseBlock = 0x1C7, }; -const struct WindowTemplate sMultiCancelButtonWindowTemplate = +static const struct WindowTemplate sMultiCancelButtonWindowTemplate = { .bg = 0, .tilemapLeft = 24, @@ -405,7 +405,7 @@ const struct WindowTemplate sMultiCancelButtonWindowTemplate = .baseBlock = 0x1C7, }; -const struct WindowTemplate sConfirmButtonWindowTemplate = +static const struct WindowTemplate sConfirmButtonWindowTemplate = { .bg = 0, .tilemapLeft = 24, @@ -416,7 +416,7 @@ const struct WindowTemplate sConfirmButtonWindowTemplate = .baseBlock = 0x1D3, }; -const struct WindowTemplate sDefaultPartyMsgWindowTemplate = +static const struct WindowTemplate sDefaultPartyMsgWindowTemplate = { .bg = 2, .tilemapLeft = 1, @@ -427,7 +427,7 @@ const struct WindowTemplate sDefaultPartyMsgWindowTemplate = .baseBlock = 0x24F, }; -const struct WindowTemplate sDoWhatWithMonMsgWindowTemplate = +static const struct WindowTemplate sDoWhatWithMonMsgWindowTemplate = { .bg = 2, .tilemapLeft = 1, @@ -438,7 +438,7 @@ const struct WindowTemplate sDoWhatWithMonMsgWindowTemplate = .baseBlock = 0x279, }; -const struct WindowTemplate sDoWhatWithItemMsgWindowTemplate = +static const struct WindowTemplate sDoWhatWithItemMsgWindowTemplate = { .bg = 2, .tilemapLeft = 1, @@ -449,7 +449,7 @@ const struct WindowTemplate sDoWhatWithItemMsgWindowTemplate = .baseBlock = 0x299, }; -const struct WindowTemplate sDoWhatWithMailMsgWindowTemplate = +static const struct WindowTemplate sDoWhatWithMailMsgWindowTemplate = { .bg = 2, .tilemapLeft = 1, @@ -460,7 +460,7 @@ const struct WindowTemplate sDoWhatWithMailMsgWindowTemplate = .baseBlock = 0x299, }; -const struct WindowTemplate sWhichMoveMsgWindowTemplate = +static const struct WindowTemplate sWhichMoveMsgWindowTemplate = { .bg = 2, .tilemapLeft = 1, @@ -471,7 +471,7 @@ const struct WindowTemplate sWhichMoveMsgWindowTemplate = .baseBlock = 0x299, }; -const struct WindowTemplate sItemGiveTakeWindowTemplate = +static const struct WindowTemplate sItemGiveTakeWindowTemplate = { .bg = 2, .tilemapLeft = 22, @@ -482,7 +482,7 @@ const struct WindowTemplate sItemGiveTakeWindowTemplate = .baseBlock = 0x373, }; -const struct WindowTemplate sMailReadTakeWindowTemplate = +static const struct WindowTemplate sMailReadTakeWindowTemplate = { .bg = 2, .tilemapLeft = 19, @@ -493,7 +493,7 @@ const struct WindowTemplate sMailReadTakeWindowTemplate = .baseBlock = 0x373, }; -const struct WindowTemplate sMoveSelectWindowTemplate = +static const struct WindowTemplate sMoveSelectWindowTemplate = { .bg = 2, .tilemapLeft = 18, @@ -504,7 +504,7 @@ const struct WindowTemplate sMoveSelectWindowTemplate = .baseBlock = 0x2BF, }; -const struct WindowTemplate sPartyMenuYesNoWindowTemplate = +static const struct WindowTemplate sPartyMenuYesNoWindowTemplate = { .bg = 2, .tilemapLeft = 21, @@ -515,7 +515,7 @@ const struct WindowTemplate sPartyMenuYesNoWindowTemplate = .baseBlock = 0x2BF, }; -const struct WindowTemplate sLevelUpStatsWindowTemplate = +static const struct WindowTemplate sLevelUpStatsWindowTemplate = { .bg = 2, .tilemapLeft = 19, @@ -526,7 +526,7 @@ const struct WindowTemplate sLevelUpStatsWindowTemplate = .baseBlock = 0x2BF, }; -const struct WindowTemplate gUnknown_845A170 = +static const struct WindowTemplate gUnknown_845A170 = { .bg = 2, .tilemapLeft = 2, @@ -537,7 +537,7 @@ const struct WindowTemplate gUnknown_845A170 = .baseBlock = 0x1DF, }; -const struct WindowTemplate gUnknown_845A178 = +static const struct WindowTemplate gUnknown_845A178 = { .bg = 2, .tilemapLeft = 0, @@ -548,7 +548,7 @@ const struct WindowTemplate gUnknown_845A178 = .baseBlock = 0x373, }; -const u8 sMainSlotTileNums[] = +static const u8 sMainSlotTileNums[] = { 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, @@ -559,7 +559,7 @@ const u8 sMainSlotTileNums[] = 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, }; -const u8 sMainSlotTileNums_Egg[] = +static const u8 sMainSlotTileNums_Egg[] = { 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, @@ -570,7 +570,7 @@ const u8 sMainSlotTileNums_Egg[] = 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, }; -const u8 sOtherSlotsTileNums[] = +static const u8 sOtherSlotsTileNums[] = { 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, @@ -580,7 +580,7 @@ const u8 sOtherSlotsTileNums[] = 56, 56, 56, 57, }; -const u8 sOtherSlotsTileNums_Egg[] = +static const u8 sOtherSlotsTileNums_Egg[] = { 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, @@ -590,7 +590,7 @@ const u8 sOtherSlotsTileNums_Egg[] = 56, 56, 56, 57, }; -const u8 sEmptySlotTileNums[] = +static const u8 sEmptySlotTileNums[] = { 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 30, 0, @@ -600,49 +600,49 @@ const u8 sEmptySlotTileNums[] = 38, 38, 38, 39, }; -const u8 sGenderPalOffsets[] = {11, 12}; +static const u8 sGenderPalOffsets[] = {11, 12}; -const u8 sHPBarPalOffsets[] = {9, 10}; +static const u8 sHPBarPalOffsets[] = {9, 10}; -const u8 sPartyBoxPalOffsets1[] = {4, 5, 6}; +static const u8 sPartyBoxPalOffsets1[] = {4, 5, 6}; -const u8 sPartyBoxPalOffsets2[] = {1, 7, 8}; +static const u8 sPartyBoxPalOffsets2[] = {1, 7, 8}; -const u8 sGenderMalePalIds[] = {59, 60}; +static const u8 sGenderMalePalIds[] = {59, 60}; -const u8 sGenderFemalePalIds[] = {75, 76}; +static const u8 sGenderFemalePalIds[] = {75, 76}; -const u8 sHPBarGreenPalIds[] = {57, 58}; +static const u8 sHPBarGreenPalIds[] = {57, 58}; -const u8 sHPBarYellowPalIds[] = {73, 74}; +static const u8 sHPBarYellowPalIds[] = {73, 74}; -const u8 sHPBarRedPalIds[] = {89, 90}; +static const u8 sHPBarRedPalIds[] = {89, 90}; -const u8 sPartyBoxEmptySlotPalIds1[] = {52, 53, 54}; +static const u8 sPartyBoxEmptySlotPalIds1[] = {52, 53, 54}; -const u8 sPartyBoxMultiPalIds1[] = {68, 69, 70}; +static const u8 sPartyBoxMultiPalIds1[] = {68, 69, 70}; -const u8 sPartyBoxFaintedPalIds1[] = {84, 85, 86}; +static const u8 sPartyBoxFaintedPalIds1[] = {84, 85, 86}; -const u8 sPartyBoxCurrSelectionPalIds1[] = {116, 117, 118}; +static const u8 sPartyBoxCurrSelectionPalIds1[] = {116, 117, 118}; -const u8 sPartyBoxCurrSelectionMultiPalIds[] = {132, 133, 134}; +static const u8 sPartyBoxCurrSelectionMultiPalIds[] = {132, 133, 134}; -const u8 sPartyBoxCurrSelectionFaintedPalIds[] = {148, 149, 150}; +static const u8 sPartyBoxCurrSelectionFaintedPalIds[] = {148, 149, 150}; -const u8 sPartyBoxSelectedForActionPalIds1[] = {100, 101, 102}; +static const u8 sPartyBoxSelectedForActionPalIds1[] = {100, 101, 102}; -const u8 sPartyBoxEmptySlotPalIds2[] = {49, 55, 56}; +static const u8 sPartyBoxEmptySlotPalIds2[] = {49, 55, 56}; -const u8 sPartyBoxMultiPalIds2[] = {65, 71, 72}; +static const u8 sPartyBoxMultiPalIds2[] = {65, 71, 72}; -const u8 sPartyBoxFaintedPalIds2[] = {81, 87, 88}; +static const u8 sPartyBoxFaintedPalIds2[] = {81, 87, 88}; -const u8 sPartyBoxCurrSelectionPalIds2[] = {97, 103, 104}; +static const u8 sPartyBoxCurrSelectionPalIds2[] = {97, 103, 104}; -const u8 sPartyBoxSelectedForActionPalIds2[] = {161, 167, 168}; +static const u8 sPartyBoxSelectedForActionPalIds2[] = {161, 167, 168}; -const u8 *const sActionStringTable[] = +static const u8 *const sActionStringTable[] = { [PARTY_MSG_CHOOSE_MON] = gText_ChoosePokemon, [PARTY_MSG_CHOOSE_MON_OR_CANCEL] = gText_ChoosePokemonCancel, @@ -673,7 +673,7 @@ const u8 *const sActionStringTable[] = [PARTY_MSG_DO_WHAT_WITH_MAIL] = gText_DoWhatWithMail, }; -const u8 *const sDescriptionStringTable[] = +static const u8 *const sDescriptionStringTable[] = { [PARTYBOX_DESC_NO_USE] = gText_NoUse, [PARTYBOX_DESC_ABLE_3] = gText_Able, @@ -687,7 +687,7 @@ const u8 *const sDescriptionStringTable[] = [PARTYBOX_DESC_LEARNED] = gText_Learned, }; -const u8 *const sHMDescriptionTable[] = +static const u8 *const sHMDescriptionTable[] = { gText_LightUpDarkness, gText_CutATreeOrGrass, @@ -703,10 +703,10 @@ const u8 *const sHMDescriptionTable[] = gText_LureWildPokemon, }; -const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp"); -const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); +static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp"); +static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); -const struct OamData sOamData_HeldItem = +static const struct OamData sOamData_HeldItem = { .y = 0, .affineMode = 0, @@ -723,38 +723,38 @@ const struct OamData sOamData_HeldItem = .affineParam = 0, }; -const union AnimCmd sSpriteAnim_HeldItem[] = +static const union AnimCmd sSpriteAnim_HeldItem[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_HeldMail[] = +static const union AnimCmd sSpriteAnim_HeldMail[] = { ANIMCMD_FRAME(1, 1), ANIMCMD_END }; -const union AnimCmd *const sSpriteAnimTable_HeldItem[] = +static const union AnimCmd *const sSpriteAnimTable_HeldItem[] = { sSpriteAnim_HeldItem, sSpriteAnim_HeldMail, }; -const struct SpriteSheet sSpriteSheet_HeldItem = +static const struct SpriteSheet sSpriteSheet_HeldItem = { - sHeldItemGfx, sizeof(sHeldItemGfx), 0xd750 + sHeldItemGfx, sizeof(sHeldItemGfx), 0xD750 }; -const struct SpritePalette sSpritePalette_HeldItem = +static const struct SpritePalette sSpritePalette_HeldItem = { - sHeldItemPalette, 0xd750 + sHeldItemPalette, 0xD750 }; -const struct SpriteTemplate sSpriteTemplate_HeldItem = +static const struct SpriteTemplate sSpriteTemplate_HeldItem = { - 0xd750, - 0xd750, + 0xD750, + 0xD750, &sOamData_HeldItem, sSpriteAnimTable_HeldItem, NULL, @@ -762,7 +762,7 @@ const struct SpriteTemplate sSpriteTemplate_HeldItem = SpriteCallbackDummy, }; -const struct OamData sOamData_MenuPokeball = +static const struct OamData sOamData_MenuPokeball = { .y = 0, .affineMode = 0, @@ -779,36 +779,36 @@ const struct OamData sOamData_MenuPokeball = .affineParam = 0, }; -const union AnimCmd sPokeballAnim_Closed[] = +static const union AnimCmd sPokeballAnim_Closed[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd sPokeballAnim_Open[] = +static const union AnimCmd sPokeballAnim_Open[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd *const sSpriteAnimTable_MenuPokeball[] = +static const union AnimCmd *const sSpriteAnimTable_MenuPokeball[] = { sPokeballAnim_Closed, sPokeballAnim_Open, }; -const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball = +static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball = { gPartyMenuPokeball_Gfx, 0x400, 0x04b0 }; -const struct CompressedSpritePalette sSpritePalette_MenuPokeball = +static const struct CompressedSpritePalette sSpritePalette_MenuPokeball = { gPartyMenuPokeball_Pal, 0x04b0 }; // Used for the pokeball sprite on each party slot / Cancel button -const struct SpriteTemplate sSpriteTemplate_MenuPokeball = +static const struct SpriteTemplate sSpriteTemplate_MenuPokeball = { .tileTag = 0x04b0, .paletteTag = 0x04b0, @@ -819,7 +819,7 @@ const struct SpriteTemplate sSpriteTemplate_MenuPokeball = .callback = SpriteCallbackDummy, }; -const struct OamData sOamData_MenuPokeballSmall = +static const struct OamData sOamData_MenuPokeballSmall = { .y = 0, .affineMode = 0, @@ -836,44 +836,44 @@ const struct OamData sOamData_MenuPokeballSmall = .affineParam = 0, }; -const union AnimCmd sSmallPokeballAnim_Closed[] = +static const union AnimCmd sSmallPokeballAnim_Closed[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd sSmallPokeballAnim_Open[] = +static const union AnimCmd sSmallPokeballAnim_Open[] = { ANIMCMD_FRAME(4, 0), ANIMCMD_END }; -const union AnimCmd sSmallPokeballAnim_Blank1[] = +static const union AnimCmd sSmallPokeballAnim_Blank1[] = { ANIMCMD_FRAME(8, 0), ANIMCMD_END }; -const union AnimCmd sSmallPokeballAnim_Blank2[] = +static const union AnimCmd sSmallPokeballAnim_Blank2[] = { ANIMCMD_FRAME(12, 0), ANIMCMD_END }; -const union AnimCmd sSmallPokeballAnim_Blank3[] = +static const union AnimCmd sSmallPokeballAnim_Blank3[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd sSmallPokeballAnim_Blank4[] = +static const union AnimCmd sSmallPokeballAnim_Blank4[] = { ANIMCMD_FRAME(20, 0), ANIMCMD_END }; // The blanks below are never used. See SpriteCB_BounceConfirmCancelButton, where they were intended to be used -const union AnimCmd *const sSpriteAnimTable_MenuPokeballSmall[] = +static const union AnimCmd *const sSpriteAnimTable_MenuPokeballSmall[] = { sSmallPokeballAnim_Closed, sSmallPokeballAnim_Open, @@ -883,13 +883,13 @@ const union AnimCmd *const sSpriteAnimTable_MenuPokeballSmall[] = sSmallPokeballAnim_Blank4, }; -const struct CompressedSpriteSheet sSpriteSheet_MenuPokeballSmall = +static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeballSmall = { gPartyMenuPokeballSmall_Gfx, 0x0300, 0x04b1 }; // Used for the pokeball sprite next to Cancel and Confirm when both are present, otherwise sSpriteTemplate_MenuPokeball is used -const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall = +static const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall = { .tileTag = 1201, .paletteTag = 1200, @@ -900,7 +900,7 @@ const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall = .callback = SpriteCallbackDummy, }; -const struct OamData sOamData_StatusCondition = +static const struct OamData sOamData_StatusCondition = { .y = 0, .affineMode = 0, @@ -917,55 +917,55 @@ const struct OamData sOamData_StatusCondition = .affineParam = 0, }; -const union AnimCmd sSpriteAnim_StatusPoison[] = +static const union AnimCmd sSpriteAnim_StatusPoison[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusParalyzed[] = +static const union AnimCmd sSpriteAnim_StatusParalyzed[] = { ANIMCMD_FRAME(4, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusSleep[] = +static const union AnimCmd sSpriteAnim_StatusSleep[] = { ANIMCMD_FRAME(8, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusFrozen[] = +static const union AnimCmd sSpriteAnim_StatusFrozen[] = { ANIMCMD_FRAME(12, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusBurn[] = +static const union AnimCmd sSpriteAnim_StatusBurn[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusPokerus[] = +static const union AnimCmd sSpriteAnim_StatusPokerus[] = { ANIMCMD_FRAME(20, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_StatusFaint[] = +static const union AnimCmd sSpriteAnim_StatusFaint[] = { ANIMCMD_FRAME(24, 0), ANIMCMD_END }; -const union AnimCmd sSpriteAnim_Blank[] = +static const union AnimCmd sSpriteAnim_Blank[] = { ANIMCMD_FRAME(28, 0), ANIMCMD_END }; -const union AnimCmd *const sSpriteTemplate_StatusCondition[] = +static const union AnimCmd *const sSpriteTemplate_StatusCondition[] = { sSpriteAnim_StatusPoison, sSpriteAnim_StatusParalyzed, @@ -977,17 +977,17 @@ const union AnimCmd *const sSpriteTemplate_StatusCondition[] = sSpriteAnim_Blank, }; -const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = +static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = { gStatusGfx_Icons, 0x400, 1202 }; -const struct CompressedSpritePalette sSpritePalette_StatusIcons = +static const struct CompressedSpritePalette sSpritePalette_StatusIcons = { gStatusPal_Icons, 1202 }; -const struct SpriteTemplate sSpriteTemplate_StatusIcons = +static const struct SpriteTemplate sSpriteTemplate_StatusIcons = { .tileTag = 1202, .paletteTag = 1202, @@ -998,7 +998,7 @@ const struct SpriteTemplate sSpriteTemplate_StatusIcons = .callback = SpriteCallbackDummy, }; -const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = +static const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = { FALSE, TRUE, @@ -1009,7 +1009,7 @@ const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = FALSE, }; -const u16 sTMHMMoves_Duplicate[] = +static const u16 sTMHMMoves_Duplicate[] = { MOVE_FOCUS_PUNCH, MOVE_DRAGON_CLAW, @@ -1111,7 +1111,7 @@ enum FIELD_MOVE_END, }; -struct +static struct { const u8 *text; TaskFunc func; @@ -1149,18 +1149,18 @@ struct [MENU_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCB_FieldMove}, }; -const u8 sPartyMenuAction_SummarySwitchCancel[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1}; -const u8 sPartyMenuAction_ShiftSummaryCancel[] = {MENU_SHIFT, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_SendOutSummaryCancel[] = {MENU_SEND_OUT, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_SummaryCancel[] = {MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_EnterSummaryCancel[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_StoreSummaryCancel[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2}; -const u8 sPartyMenuAction_ReadTakeMailCancel[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2}; -const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1}; -const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_SummarySwitchCancel[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1}; +static const u8 sPartyMenuAction_ShiftSummaryCancel[] = {MENU_SHIFT, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_SendOutSummaryCancel[] = {MENU_SEND_OUT, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_SummaryCancel[] = {MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_EnterSummaryCancel[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_StoreSummaryCancel[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2}; +static const u8 sPartyMenuAction_ReadTakeMailCancel[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2}; +static const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1}; +static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1}; // IDs for the action lists that appear when a party mon is selected enum @@ -1180,7 +1180,7 @@ enum ACTIONS_SPIN_TRADE, }; -const u8 *const sPartyMenuActions[] = +static const u8 *const sPartyMenuActions[] = { [ACTIONS_NONE] = NULL, [ACTIONS_SWITCH] = sPartyMenuAction_SummarySwitchCancel, @@ -1197,7 +1197,7 @@ const u8 *const sPartyMenuActions[] = [ACTIONS_SPIN_TRADE] = sPartyMenuAction_TradeSummaryCancel2, }; -const u8 sPartyMenuActionCounts[] = +static const u8 sPartyMenuActionCounts[] = { [ACTIONS_NONE] = 0, [ACTIONS_SWITCH] = NELEMS(sPartyMenuAction_SummarySwitchCancel), @@ -1214,13 +1214,13 @@ const u8 sPartyMenuActionCounts[] = [ACTIONS_SPIN_TRADE] = NELEMS(sPartyMenuAction_TradeSummaryCancel2), }; -const u16 sFieldMoves[] = +static const u16 sFieldMoves[] = { MOVE_FLASH, MOVE_CUT, MOVE_FLY, MOVE_STRENGTH, MOVE_SURF, MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_TELEPORT, MOVE_DIG, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_END // this may be misuse of enum. same in emerald }; -struct +static struct { bool8 (*fieldMoveFunc)(void); u8 msgId; @@ -1240,7 +1240,7 @@ struct [FIELD_MOVE_SWEET_SCENT] = {SetUpFieldMove_SweetScent, PARTY_MSG_CANT_USE_HERE}, }; -const u8 *const sUnionRoomTradeMessages[] = +static const u8 *const sUnionRoomTradeMessages[] = { [UR_TRADE_MSG_NOT_MON_PARTNER_WANTS - 1] = gText_NotPkmnOtherTrainerWants, [UR_TRADE_MSG_NOT_EGG - 1] = gText_ThatIsntAnEgg, @@ -1253,7 +1253,7 @@ const u8 *const sUnionRoomTradeMessages[] = [UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 - 1] = gText_CantTradeWithTrainer, }; -const u16 sTMHMMoves[] = +static const u16 sTMHMMoves[] = { MOVE_FOCUS_PUNCH, MOVE_DRAGON_CLAW, diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h index 3f2fbf6a0..afd3814a5 100644 --- a/src/data/pokemon/tutor_learnsets.h +++ b/src/data/pokemon/tutor_learnsets.h @@ -1,4 +1,4 @@ -const u16 sTutorMoves[TUTOR_MOVE_COUNT] = +static const u16 sTutorMoves[TUTOR_MOVE_COUNT] = { [TUTOR_MOVE_MEGA_PUNCH] = MOVE_MEGA_PUNCH, [TUTOR_MOVE_SWORDS_DANCE] = MOVE_SWORDS_DANCE, @@ -17,9 +17,9 @@ const u16 sTutorMoves[TUTOR_MOVE_COUNT] = [TUTOR_MOVE_SUBSTITUTE] = MOVE_SUBSTITUTE, }; -#define TUTOR(move) (1u << (TUTOR_##move)) +#define TUTOR(move) (1 << (TUTOR_##move)) -const u16 sTutorLearnsets[] = +static const u16 sTutorLearnsets[] = { [SPECIES_NONE] = 0, diff --git a/src/party_menu.c b/src/party_menu.c index 5bee1442e..6f543ca9c 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -138,274 +138,274 @@ struct PartyMenuBox u8 statusSpriteId; }; -void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); -void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); -void CursorCB_Summary(u8 taskId); -void CursorCB_Switch(u8 taskId); -void CursorCB_Cancel1(u8 taskId); -void CursorCB_Item(u8 taskId); -void CursorCB_Give(u8 taskId); -void CursorCB_TakeItem(u8 taskId); -void CursorCB_Mail(u8 taskId); -void CursorCB_Read(u8 taskId); -void CursorCB_TakeMail(u8 taskId); -void CursorCB_Cancel2(u8 taskId); -void CursorCB_SendMon(u8 taskId); -void CursorCB_Enter(u8 taskId); -void CursorCB_NoEntry(u8 taskId); -void CursorCB_Store(u8 taskId); -void CursorCB_Register(u8 taskId); -void CursorCB_Trade1(u8 taskId); -void CursorCB_Trade2(u8 taskId); -void CursorCB_FieldMove(u8 taskId); -bool8 SetUpFieldMove_Fly(void); -bool8 SetUpFieldMove_Waterfall(void); -bool8 SetUpFieldMove_Surf(void); -void CB2_InitPartyMenu(void); -void ResetPartyMenu(void); -bool8 ShowPartyMenu(void); -void SetPartyMonsAllowedInMinigame(void); -void ExitPartyMenu(void); -bool8 CreatePartyMonSpritesLoop(void); -bool8 AllocPartyMenuBg(void); -bool8 AllocPartyMenuBgGfx(void); -void InitPartyMenuWindows(u8 layout); -void InitPartyMenuBoxes(u8 layout); -void LoadPartyMenuPokeballGfx(void); -void LoadPartyMenuAilmentGfx(void); -bool8 RenderPartyMenuBoxes(void); -void CreateCancelConfirmPokeballSprites(void); -void CreateCancelConfirmWindows(bool8 chooseHalf); -void Task_ExitPartyMenu(u8 taskId); -void FreePartyPointers(void); -void PartyPaletteBufferCopy(u8 offset); -void DisplayPartyPokemonDataForMultiBattle(u8 slot); -void DisplayPartyPokemonDataForChooseHalf(u8 slot); -bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot); -void DisplayPartyPokemonData(u8 slot); -void DisplayPartyPokemonDataForWirelessMinigame(u8 slot); -void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags); -void DrawEmptySlot(u8 windowId); -void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); -void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); -void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); -void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); -void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); -void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c); -bool8 GetBattleEntryEligibility(struct Pokemon *mon); -bool8 IsMonAllowedInMinigame(u8 slot); -void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor); -u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor); -void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align); -void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox); -void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox); -void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox); -void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox); -void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox); -void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys); -void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox); -void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox); -void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox); -void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot); -void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void CreateCancelConfirmPokeballSprites(void); -void DrawCancelConfirmButtons(void); -u8 CreatePokeballButtonSprite(u8 x, u8 y); -u8 CreateSmallPokeballButtonSprite(u8 x, u8 y); -u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum); -void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum); -void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum); -void Task_ClosePartyMenuAndSetCB2(u8 taskId); -void UpdatePartyToFieldOrder(void); -s8 *GetCurrentPartySlotPtr(void); -u16 PartyMenuButtonHandler(s8 *slotPtr); -void HandleChooseMonSelection(u8 taskId, s8 *slotPtr); -void HandleChooseMonCancel(u8 taskId, s8 *slotPtr); -void MoveCursorToConfirm(void); -bool8 IsSelectedMonNotEgg(u8 *slotPtr); -void TryTutorSelectedMon(u8 taskId); -void TryGiveMailToSelectedMon(u8 taskId); -void SwitchSelectedMons(u8 taskId); -void TryEnterMonForMinigame(u8 taskId, u8 slot); -void Task_TryCreateSelectionWindow(u8 taskId); -void TryGiveItemOrMailToSelectedMon(u8 taskId); -void PartyMenuRemoveWindow(u8 *ptr); -void CB2_SetUpExitToBattleScreen(void); -void Task_ClosePartyMenuAfterText(u8 taskId); -void FinishTwoMonAction(u8 taskId); -void CancelParticipationPrompt(u8 taskId); -void DisplayCancelChooseMonYesNo(u8 taskId); -void Task_CancelChooseMonYesNo(u8 taskId); -void Task_HandleCancelChooseMonYesNoInput(u8 taskId); -void PartyMenuDisplayYesNoMenu(void); -void Task_ReturnToChooseMonAfterText(u8 taskId); -void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir); -void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir); -void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir); -s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir); -void Task_PrintAndWaitForText(u8 taskId); -void PartyMenuPrintText(const u8 *text); -void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2); -bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon); -bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon); -void Task_CancelParticipationYesNo(u8 taskId); -void Task_HandleCancelParticipationYesNoInput(u8 taskId); -void Task_TryCreateSelectionWindow(u8 taskId); -u16 GetTutorMove(u8 tutor); -bool8 CanLearnTutorMove(u16 species, u8 tutor); -void CreateSelectionWindow(void); -bool8 ShouldUseChooseMonText(void); -void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon); -void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite); -void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite); -void SpriteCB_HeldItem(struct Sprite *sprite); -void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox); -void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail); -void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox); -void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox); -void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId); -u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon); -u8 GetPartySlotEntryStatus(s8 slot); -void Task_HandleSelectionMenuInput(u8 taskId); -void CB2_ShowPokemonSummaryScreen(void); -void CB2_ReturnToPartyMenuFromSummaryScreen(void); -void UpdatePartyToBattleOrder(void); -void SlidePartyMenuBoxOneStep(u8 taskId); -void Task_SlideSelectedSlotsOffscreen(u8 taskId); -void SwitchPartyMon(void); -void Task_SlideSelectedSlotsOnscreen(u8 taskId); -void CB2_WriteMailToGiveMon(void); -void Task_SwitchHoldItemsPrompt(u8 taskId); -void Task_GiveHoldItem(u8 taskId); -void Task_UpdateHeldItemSprite(u8 taskId); -void Task_HandleSwitchItemsYesNoInput(u8 taskId); -void Task_SwitchItemsYesNo(u8 taskId); -void Task_WriteMailToGiveMonAfterText(u8 taskId); -void CB2_ReturnToPartyMenuFromWritingMail(void); -void CB2_ReturnToPartyMenuFromWritingMail(void); -void Task_DisplayGaveMailFromPartyMessage(u8 taskId); -void CB2_ReadHeldMail(void); -void CB2_ReturnToPartyMenuFromReadingMail(void); -void Task_SendMailToPCYesNo(u8 taskId); -void Task_HandleSendMailToPCYesNoInput(u8 taskId); -void Task_LoseMailMessageYesNo(u8 taskId); -void Task_HandleLoseMailMessageYesNoInput(u8 taskId); -bool8 TrySwitchInPokemon(void); -void DisplayCantUseFlashMessage(void); -void DisplayCantUseSurfMessage(void); -void Task_CancelAfterAorBPress(u8 taskId); -void DisplayFieldMoveExitAreaMessage(u8 taskId); -void Task_FieldMoveExitAreaYesNo(u8 taskId); -void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId); -void Task_FieldMoveWaitForFade(u8 taskId); -u16 GetFieldMoveMonSpecies(void); -u8 GetPartyLayoutFromBattleType(void); -void Task_SetSacredAshCB(u8 taskId); -void CB2_ReturnToBagMenu(void); -u8 GetPartyIdFromBattleSlot(u8 slot); -void Task_DisplayHPRestoredMessage(u8 taskId); -void SetSelectedMoveForPPItem(u8 taskId); -void ReturnToUseOnWhichMon(u8 taskId); -void TryUsePPItem(u8 taskId); -void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func); -void Task_LearnedMove(u8 taskId); -void Task_ReplaceMoveYesNo(u8 taskId); -void Task_DoLearnedMoveFanfareAfterText(u8 taskId); -void Task_TryLearningNextMove(u8 taskId); -void Task_LearnNextMoveOrClosePartyMenu(u8 taskId); -void Task_HandleReplaceMoveYesNoInput(u8 taskId); -void StopLearningMovePrompt(u8 taskId); -void Task_ShowSummaryScreenToForgetMove(u8 taskId); -void CB2_ShowSummaryScreenToForgetMove(void); -void CB2_ReturnToPartyMenuWhileLearningMove(void); -void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId); -void DisplayPartyMenuForgotMoveMessage(u8 taskId); -void Task_PartyMenuReplaceMove(u8 taskId); -void Task_StopLearningMoveYesNo(u8 taskId); -void Task_HandleStopLearningMoveYesNoInput(u8 taskId); -void Task_TryLearningNextMoveAfterText(u8 taskId); -void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func); -void Task_DisplayLevelUpStatsPg1(u8 taskId); -void Task_DisplayLevelUpStatsPg2(u8 taskId); -void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon); -void DisplayLevelUpStatsPg1(u8 taskId); -void DisplayLevelUpStatsPg2(u8 taskId); -void Task_TryLearnNewMoves(u8 taskId); -void PartyMenuTryEvolution(u8 taskId); -void DisplayMonNeedsToReplaceMove(u8 taskId); -void DisplayMonLearnedMove(u8 taskId, u16 move); -void Task_SacredAshDisplayHPRestored(u8 taskId); -void Task_SacredAshLoop(u8 taskId); -void UseSacredAsh(u8 taskId); -void CB2_ReturnToBerryPouchMenu(void); -void CB2_ReturnToTMCaseMenu(void); -void GiveItemOrMailToSelectedMon(u8 taskId); -void RemoveItemToGiveFromBag(u16 item); -void DisplayItemMustBeRemovedFirstMessage(u8 taskId); -void CB2_WriteMailToGiveMonFromBag(void); -void GiveItemToSelectedMon(u8 taskId); -void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId); -void Task_SwitchItemsFromBagYesNo(u8 taskId); -void CB2_ReturnToPartyOrBagMenuFromWritingMail(void); -bool8 ReturnGiveItemToBagOrPC(u16 item); -void Task_DisplayGaveMailFromBagMessage(u8 taskId); -void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId); -void Task_ValidateChosenHalfParty(u8 taskId); -bool8 HasPartySlotAlreadyBeenSelected(u8 slot); -void Task_ContinueChoosingHalfParty(u8 taskId); -void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId); -void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId); -void Task_InitMultiPartnerPartySlideIn(u8 taskId); -void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId); -void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId); -void Task_MultiPartnerPartySlideIn(u8 taskId); -bool8 CB2_FadeFromPartyMenu(void); -void Task_PartyMenuWaitForFade(u8 taskId); -void sub_8120C6C(u8 taskId); -void sub_8120CA8(u8 taskId); -void sub_8120CD8(u8 taskId); -void sub_8120D08(u8 taskId); -void sub_8120D40(u8 taskId); -void sub_8120D7C(u8 taskId); -void sub_8120DAC(u8 taskId); -void sub_8120DE0(u8 taskId); -void sub_8120E1C(u8 taskId); -void sub_8120E58(u8 taskId); -void sub_8120EE0(u8 taskId); -void sub_8120FF0(u8 taskId); -bool8 sub_8120F78(u8 taskId); -void sub_8120FB0(void); -void sub_8122084(u8 windowId, const u8 *str); -u8 sub_81220D4(void); -void sub_8122110(u8 windowId); -void sub_812358C(void); -void sub_8124BB0(struct Pokemon *mon, u8 fieldMove); -void sub_8124DE0(void); -void sub_8124E48(void); -void sub_812580C(u8 taskId); -void sub_8125898(u8 taskId, UNUSED TaskFunc func); -void sub_8125F4C(u8 taskId, UNUSED TaskFunc func); -void sub_8125F5C(u8 taskId); -void sub_8126BD4(void); -bool8 sub_8126C24(void); +static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); +static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); +static void CursorCB_Summary(u8 taskId); +static void CursorCB_Switch(u8 taskId); +static void CursorCB_Cancel1(u8 taskId); +static void CursorCB_Item(u8 taskId); +static void CursorCB_Give(u8 taskId); +static void CursorCB_TakeItem(u8 taskId); +static void CursorCB_Mail(u8 taskId); +static void CursorCB_Read(u8 taskId); +static void CursorCB_TakeMail(u8 taskId); +static void CursorCB_Cancel2(u8 taskId); +static void CursorCB_SendMon(u8 taskId); +static void CursorCB_Enter(u8 taskId); +static void CursorCB_NoEntry(u8 taskId); +static void CursorCB_Store(u8 taskId); +static void CursorCB_Register(u8 taskId); +static void CursorCB_Trade1(u8 taskId); +static void CursorCB_Trade2(u8 taskId); +static void CursorCB_FieldMove(u8 taskId); +static bool8 SetUpFieldMove_Fly(void); +static bool8 SetUpFieldMove_Waterfall(void); +static bool8 SetUpFieldMove_Surf(void); +static void CB2_InitPartyMenu(void); +static void ResetPartyMenu(void); +static bool8 ShowPartyMenu(void); +static void SetPartyMonsAllowedInMinigame(void); +static void ExitPartyMenu(void); +static bool8 CreatePartyMonSpritesLoop(void); +static bool8 AllocPartyMenuBg(void); +static bool8 AllocPartyMenuBgGfx(void); +static void InitPartyMenuWindows(u8 layout); +static void InitPartyMenuBoxes(u8 layout); +static void LoadPartyMenuPokeballGfx(void); +static void LoadPartyMenuAilmentGfx(void); +static bool8 RenderPartyMenuBoxes(void); +static void CreateCancelConfirmPokeballSprites(void); +static void CreateCancelConfirmWindows(bool8 chooseHalf); +static void Task_ExitPartyMenu(u8 taskId); +static void FreePartyPointers(void); +static void PartyPaletteBufferCopy(u8 offset); +static void DisplayPartyPokemonDataForMultiBattle(u8 slot); +static void DisplayPartyPokemonDataForChooseHalf(u8 slot); +static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot); +static void DisplayPartyPokemonData(u8 slot); +static void DisplayPartyPokemonDataForWirelessMinigame(u8 slot); +static void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags); +static void DrawEmptySlot(u8 windowId); +static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +static void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c); +static void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c); +static bool8 GetBattleEntryEligibility(struct Pokemon *mon); +static bool8 IsMonAllowedInMinigame(u8 slot); +static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor); +static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor); +static void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align); +static void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox); +static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox); +static void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox); +static void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox); +static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox); +static void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys); +static void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox); +static void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox); +static void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox); +static void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot); +static void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void CreateCancelConfirmPokeballSprites(void); +static void DrawCancelConfirmButtons(void); +static u8 CreatePokeballButtonSprite(u8 x, u8 y); +static u8 CreateSmallPokeballButtonSprite(u8 x, u8 y); +static u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum); +static void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum); +static void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum); +static void Task_ClosePartyMenuAndSetCB2(u8 taskId); +static void UpdatePartyToFieldOrder(void); +static s8 *GetCurrentPartySlotPtr(void); +static u16 PartyMenuButtonHandler(s8 *slotPtr); +static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr); +static void HandleChooseMonCancel(u8 taskId, s8 *slotPtr); +static void MoveCursorToConfirm(void); +static bool8 IsSelectedMonNotEgg(u8 *slotPtr); +static void TryTutorSelectedMon(u8 taskId); +static void TryGiveMailToSelectedMon(u8 taskId); +static void SwitchSelectedMons(u8 taskId); +static void TryEnterMonForMinigame(u8 taskId, u8 slot); +static void Task_TryCreateSelectionWindow(u8 taskId); +static void TryGiveItemOrMailToSelectedMon(u8 taskId); +static void PartyMenuRemoveWindow(u8 *ptr); +static void CB2_SetUpExitToBattleScreen(void); +static void Task_ClosePartyMenuAfterText(u8 taskId); +static void FinishTwoMonAction(u8 taskId); +static void CancelParticipationPrompt(u8 taskId); +static void DisplayCancelChooseMonYesNo(u8 taskId); +static void Task_CancelChooseMonYesNo(u8 taskId); +static void Task_HandleCancelChooseMonYesNoInput(u8 taskId); +static void PartyMenuDisplayYesNoMenu(void); +static void Task_ReturnToChooseMonAfterText(u8 taskId); +static void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir); +static void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir); +static void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir); +static s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir); +static void Task_PrintAndWaitForText(u8 taskId); +static void PartyMenuPrintText(const u8 *text); +static void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2); +static bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon); +static bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon); +static void Task_CancelParticipationYesNo(u8 taskId); +static void Task_HandleCancelParticipationYesNoInput(u8 taskId); +static void Task_TryCreateSelectionWindow(u8 taskId); +static u16 GetTutorMove(u8 tutor); +static bool8 CanLearnTutorMove(u16 species, u8 tutor); +static void CreateSelectionWindow(void); +static bool8 ShouldUseChooseMonText(void); +static void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon); +static void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite); +static void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite); +static void SpriteCB_HeldItem(struct Sprite *sprite); +static void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox); +static void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail); +static void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox); +static void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox); +static void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId); +static u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon); +static u8 GetPartySlotEntryStatus(s8 slot); +static void Task_HandleSelectionMenuInput(u8 taskId); +static void CB2_ShowPokemonSummaryScreen(void); +static void CB2_ReturnToPartyMenuFromSummaryScreen(void); +static void UpdatePartyToBattleOrder(void); +static void SlidePartyMenuBoxOneStep(u8 taskId); +static void Task_SlideSelectedSlotsOffscreen(u8 taskId); +static void SwitchPartyMon(void); +static void Task_SlideSelectedSlotsOnscreen(u8 taskId); +static void CB2_WriteMailToGiveMon(void); +static void Task_SwitchHoldItemsPrompt(u8 taskId); +static void Task_GiveHoldItem(u8 taskId); +static void Task_UpdateHeldItemSprite(u8 taskId); +static void Task_HandleSwitchItemsYesNoInput(u8 taskId); +static void Task_SwitchItemsYesNo(u8 taskId); +static void Task_WriteMailToGiveMonAfterText(u8 taskId); +static void CB2_ReturnToPartyMenuFromWritingMail(void); +static void CB2_ReturnToPartyMenuFromWritingMail(void); +static void Task_DisplayGaveMailFromPartyMessage(u8 taskId); +static void CB2_ReadHeldMail(void); +static void CB2_ReturnToPartyMenuFromReadingMail(void); +static void Task_SendMailToPCYesNo(u8 taskId); +static void Task_HandleSendMailToPCYesNoInput(u8 taskId); +static void Task_LoseMailMessageYesNo(u8 taskId); +static void Task_HandleLoseMailMessageYesNoInput(u8 taskId); +static bool8 TrySwitchInPokemon(void); +static void DisplayCantUseFlashMessage(void); +static void DisplayCantUseSurfMessage(void); +static void Task_CancelAfterAorBPress(u8 taskId); +static void DisplayFieldMoveExitAreaMessage(u8 taskId); +static void Task_FieldMoveExitAreaYesNo(u8 taskId); +static void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId); +static void Task_FieldMoveWaitForFade(u8 taskId); +static u16 GetFieldMoveMonSpecies(void); +static u8 GetPartyLayoutFromBattleType(void); +static void Task_SetSacredAshCB(u8 taskId); +static void CB2_ReturnToBagMenu(void); +static u8 GetPartyIdFromBattleSlot(u8 slot); +static void Task_DisplayHPRestoredMessage(u8 taskId); +static void SetSelectedMoveForPPItem(u8 taskId); +static void ReturnToUseOnWhichMon(u8 taskId); +static void TryUsePPItem(u8 taskId); +static void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func); +static void Task_LearnedMove(u8 taskId); +static void Task_ReplaceMoveYesNo(u8 taskId); +static void Task_DoLearnedMoveFanfareAfterText(u8 taskId); +static void Task_TryLearningNextMove(u8 taskId); +static void Task_LearnNextMoveOrClosePartyMenu(u8 taskId); +static void Task_HandleReplaceMoveYesNoInput(u8 taskId); +static void StopLearningMovePrompt(u8 taskId); +static void Task_ShowSummaryScreenToForgetMove(u8 taskId); +static void CB2_ShowSummaryScreenToForgetMove(void); +static void CB2_ReturnToPartyMenuWhileLearningMove(void); +static void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId); +static void DisplayPartyMenuForgotMoveMessage(u8 taskId); +static void Task_PartyMenuReplaceMove(u8 taskId); +static void Task_StopLearningMoveYesNo(u8 taskId); +static void Task_HandleStopLearningMoveYesNoInput(u8 taskId); +static void Task_TryLearningNextMoveAfterText(u8 taskId); +static void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func); +static void Task_DisplayLevelUpStatsPg1(u8 taskId); +static void Task_DisplayLevelUpStatsPg2(u8 taskId); +static void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon); +static void DisplayLevelUpStatsPg1(u8 taskId); +static void DisplayLevelUpStatsPg2(u8 taskId); +static void Task_TryLearnNewMoves(u8 taskId); +static void PartyMenuTryEvolution(u8 taskId); +static void DisplayMonNeedsToReplaceMove(u8 taskId); +static void DisplayMonLearnedMove(u8 taskId, u16 move); +static void Task_SacredAshDisplayHPRestored(u8 taskId); +static void Task_SacredAshLoop(u8 taskId); +static void UseSacredAsh(u8 taskId); +static void CB2_ReturnToBerryPouchMenu(void); +static void CB2_ReturnToTMCaseMenu(void); +static void GiveItemOrMailToSelectedMon(u8 taskId); +static void RemoveItemToGiveFromBag(u16 item); +static void DisplayItemMustBeRemovedFirstMessage(u8 taskId); +static void CB2_WriteMailToGiveMonFromBag(void); +static void GiveItemToSelectedMon(u8 taskId); +static void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId); +static void Task_SwitchItemsFromBagYesNo(u8 taskId); +static void CB2_ReturnToPartyOrBagMenuFromWritingMail(void); +static bool8 ReturnGiveItemToBagOrPC(u16 item); +static void Task_DisplayGaveMailFromBagMessage(u8 taskId); +static void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId); +static void Task_ValidateChosenHalfParty(u8 taskId); +static bool8 HasPartySlotAlreadyBeenSelected(u8 slot); +static void Task_ContinueChoosingHalfParty(u8 taskId); +static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId); +static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId); +static void Task_InitMultiPartnerPartySlideIn(u8 taskId); +static void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId); +static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId); +static void Task_MultiPartnerPartySlideIn(u8 taskId); +static bool8 CB2_FadeFromPartyMenu(void); +static void Task_PartyMenuWaitForFade(u8 taskId); +static void sub_8120C6C(u8 taskId); +static void sub_8120CA8(u8 taskId); +static void sub_8120CD8(u8 taskId); +static void sub_8120D08(u8 taskId); +static void sub_8120D40(u8 taskId); +static void sub_8120D7C(u8 taskId); +static void sub_8120DAC(u8 taskId); +static void sub_8120DE0(u8 taskId); +static void sub_8120E1C(u8 taskId); +static void sub_8120E58(u8 taskId); +static void sub_8120EE0(u8 taskId); +static void sub_8120FF0(u8 taskId); +static bool8 sub_8120F78(u8 taskId); +static void sub_8120FB0(void); +static void sub_8122084(u8 windowId, const u8 *str); +static u8 sub_81220D4(void); +static void sub_8122110(u8 windowId); +static void sub_812358C(void); +static void sub_8124BB0(struct Pokemon *mon, u8 fieldMove); +static void sub_8124DE0(void); +static void sub_8124E48(void); +static void sub_812580C(u8 taskId); +static void sub_8125898(u8 taskId, UNUSED TaskFunc func); +static void sub_8125F4C(u8 taskId, UNUSED TaskFunc func); +static void sub_8125F5C(u8 taskId); +static void sub_8126BD4(void); +static bool8 sub_8126C24(void); -EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; +static EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; EWRAM_DATA struct PartyMenu gPartyMenu = {0}; -EWRAM_DATA struct PartyMenuBox *sPartyMenuBoxes = NULL; -EWRAM_DATA u8 *sPartyBgGfxTilemap = NULL; -EWRAM_DATA u8 *sPartyBgTilemapBuffer = NULL; +static EWRAM_DATA struct PartyMenuBox *sPartyMenuBoxes = NULL; +static EWRAM_DATA u8 *sPartyBgGfxTilemap = NULL; +static EWRAM_DATA u8 *sPartyBgTilemapBuffer = NULL; EWRAM_DATA bool8 gPartyMenuUseExitCallback = FALSE; EWRAM_DATA u8 gSelectedMonPartyId = 0; EWRAM_DATA MainCallback gPostMenuFieldCallback = NULL; -EWRAM_DATA u16 *sSlot1TilemapBuffer = NULL; // for switching party slots -EWRAM_DATA u16 *sSlot2TilemapBuffer = NULL; -EWRAM_DATA struct Pokemon *sSacredAshQuestLogMonBackup = NULL; +static EWRAM_DATA u16 *sSlot1TilemapBuffer = NULL; // for switching party slots +static EWRAM_DATA u16 *sSlot2TilemapBuffer = NULL; +static EWRAM_DATA struct Pokemon *sSacredAshQuestLogMonBackup = NULL; EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; -EWRAM_DATA u16 sPartyMenuItemId = ITEM_NONE; +static EWRAM_DATA u16 sPartyMenuItemId = ITEM_NONE; ALIGNED(4) EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on void (*gItemUseCB)(u8, TaskFunc); @@ -452,7 +452,7 @@ void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCursorPos, } } -void CB2_UpdatePartyMenu(void) +static void CB2_UpdatePartyMenu(void) { RunTasks(); AnimateSprites(); @@ -461,14 +461,14 @@ void CB2_UpdatePartyMenu(void) UpdatePaletteFade(); } -void VBlankCB_PartyMenu(void) +static void VBlankCB_PartyMenu(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void CB2_InitPartyMenu(void) +static void CB2_InitPartyMenu(void) { while (TRUE) { @@ -477,7 +477,7 @@ void CB2_InitPartyMenu(void) } } -bool8 ShowPartyMenu(void) +static bool8 ShowPartyMenu(void) { switch (gMain.state) { @@ -602,7 +602,7 @@ bool8 ShowPartyMenu(void) return FALSE; } -void ExitPartyMenu(void) +static void ExitPartyMenu(void) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); CreateTask(Task_ExitPartyMenu, 0); @@ -610,7 +610,7 @@ void ExitPartyMenu(void) SetMainCallback2(CB2_UpdatePartyMenu); } -void Task_ExitPartyMenu(u8 taskId) +static void Task_ExitPartyMenu(u8 taskId) { if (!gPaletteFade.active) { @@ -620,7 +620,7 @@ void Task_ExitPartyMenu(u8 taskId) } } -void ResetPartyMenu(void) +static void ResetPartyMenu(void) { sPartyMenuInternal = NULL; sPartyBgTilemapBuffer = NULL; @@ -628,7 +628,7 @@ void ResetPartyMenu(void) sPartyBgGfxTilemap = NULL; } -bool8 AllocPartyMenuBg(void) +static bool8 AllocPartyMenuBg(void) { ResetAllBgsCoordinatesAndBgCntRegs(); sPartyBgTilemapBuffer = Alloc(0x800); @@ -647,7 +647,7 @@ bool8 AllocPartyMenuBg(void) return TRUE; } -bool8 AllocPartyMenuBgGfx(void) +static bool8 AllocPartyMenuBgGfx(void) { u32 sizeout; @@ -696,14 +696,14 @@ bool8 AllocPartyMenuBgGfx(void) return FALSE; } -void PartyPaletteBufferCopy(u8 offset) +static void PartyPaletteBufferCopy(u8 offset) { offset *= 16; CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferUnfaded[offset], 32); CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferFaded[offset], 32); } -void FreePartyPointers(void) +static void FreePartyPointers(void) { if (sPartyMenuInternal) Free(sPartyMenuInternal); @@ -716,7 +716,7 @@ void FreePartyPointers(void) FreeAllWindowBuffers(); } -void InitPartyMenuBoxes(u8 layout) +static void InitPartyMenuBoxes(u8 layout) { u8 i; @@ -735,7 +735,7 @@ void InitPartyMenuBoxes(u8 layout) sPartyMenuBoxes[1].infoRects = &sPartyBoxInfoRects[PARTY_BOX_LEFT_COLUMN]; } -void RenderPartyMenuBox(u8 slot) +static void RenderPartyMenuBox(u8 slot) { if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE && slot >= MULTI_PARTY_SIZE) { @@ -772,7 +772,7 @@ void RenderPartyMenuBox(u8 slot) } } -void DisplayPartyPokemonData(u8 slot) +static void DisplayPartyPokemonData(u8 slot) { if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG)) { @@ -791,7 +791,7 @@ void DisplayPartyPokemonData(u8 slot) } } -void DisplayPartyPokemonDescriptionData(u8 slot, u8 stringId) +static void DisplayPartyPokemonDescriptionData(u8 slot, u8 stringId) { struct Pokemon *mon = &gPlayerParty[slot]; @@ -805,7 +805,7 @@ void DisplayPartyPokemonDescriptionData(u8 slot, u8 stringId) DisplayPartyPokemonDescriptionText(stringId, &sPartyMenuBoxes[slot], 0); } -void DisplayPartyPokemonDataForChooseHalf(u8 slot) +static void DisplayPartyPokemonDataForChooseHalf(u8 slot) { u8 i; struct Pokemon *mon = &gPlayerParty[slot]; @@ -834,7 +834,7 @@ void DisplayPartyPokemonDataForChooseHalf(u8 slot) } } -void DisplayPartyPokemonDataForWirelessMinigame(u8 slot) +static void DisplayPartyPokemonDataForWirelessMinigame(u8 slot) { if (IsMonAllowedInMinigame(slot) == TRUE) DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_ABLE); @@ -843,7 +843,7 @@ void DisplayPartyPokemonDataForWirelessMinigame(u8 slot) } // Returns TRUE if teaching move or cant evolve with item (i.e. description data is shown), FALSE otherwise -bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) +static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) { struct Pokemon *currentPokemon = &gPlayerParty[slot]; u16 item = gSpecialVar_ItemId; @@ -876,7 +876,7 @@ bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) return TRUE; } -void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor) +static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor) { switch (CanMonLearnTMTutor(&gPlayerParty[slot], item, tutor)) { @@ -893,7 +893,7 @@ void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor) } } -void DisplayPartyPokemonDataForMultiBattle(u8 slot) +static void DisplayPartyPokemonDataForMultiBattle(u8 slot) { struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot]; u8 actualSlot = slot - (3); @@ -918,7 +918,7 @@ void DisplayPartyPokemonDataForMultiBattle(u8 slot) } } -bool8 RenderPartyMenuBoxes(void) +static bool8 RenderPartyMenuBoxes(void) { RenderPartyMenuBox(sPartyMenuInternal->data[0]); if (++sPartyMenuInternal->data[0] == PARTY_SIZE) @@ -927,12 +927,12 @@ bool8 RenderPartyMenuBoxes(void) return FALSE; } -u8 *GetPartyMenuBgTile(u16 tileId) +static u8 *GetPartyMenuBgTile(u16 tileId) { return &sPartyBgGfxTilemap[tileId << 5]; } -void CreatePartyMonSprites(u8 slot) +static void CreatePartyMonSprites(u8 slot) { u8 actualSlot; @@ -962,7 +962,7 @@ void CreatePartyMonSprites(u8 slot) } } -bool8 CreatePartyMonSpritesLoop(void) +static bool8 CreatePartyMonSpritesLoop(void) { CreatePartyMonSprites(sPartyMenuInternal->data[0]); if (++sPartyMenuInternal->data[0] == PARTY_SIZE) @@ -971,7 +971,7 @@ bool8 CreatePartyMonSpritesLoop(void) return FALSE; } -void CreateCancelConfirmPokeballSprites(void) +static void CreateCancelConfirmPokeballSprites(void) { if (gPartyMenu.menuType == PARTY_MENU_TYPE_MULTI_SHOWCASE) { @@ -1039,7 +1039,7 @@ void AnimatePartySlot(u8 slot, u8 animNum) ScheduleBgCopyTilemapToVram(1); } -u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum) +static u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum) { u8 palFlags = 0; @@ -1062,7 +1062,7 @@ u8 GetPartyBoxPaletteFlags(u8 slot, u8 animNum) return palFlags; } -void DrawCancelConfirmButtons(void) +static void DrawCancelConfirmButtons(void) { CopyToBgTilemapBufferRect_ChangePalette(1, sConfirmButton_Tilemap, 23, 16, 7, 2, 17); CopyToBgTilemapBufferRect_ChangePalette(1, sCancelButton_Tilemap, 23, 18, 7, 2, 17); @@ -1077,7 +1077,7 @@ bool8 IsMultiBattle(void) return FALSE; } -void SwapPartyPokemon(struct Pokemon *mon1, struct Pokemon *mon2) +static void SwapPartyPokemon(struct Pokemon *mon1, struct Pokemon *mon2) { struct Pokemon *buffer = Alloc(sizeof(struct Pokemon)); @@ -1087,13 +1087,13 @@ void SwapPartyPokemon(struct Pokemon *mon1, struct Pokemon *mon2) Free(buffer); } -void Task_ClosePartyMenu(u8 taskId) +static void Task_ClosePartyMenu(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); gTasks[taskId].func = Task_ClosePartyMenuAndSetCB2; } -void Task_ClosePartyMenuAndSetCB2(u8 taskId) +static void Task_ClosePartyMenuAndSetCB2(u8 taskId) { if (!gPaletteFade.active) { @@ -1143,7 +1143,7 @@ void Task_HandleChooseMonInput(u8 taskId) } } -s8 *GetCurrentPartySlotPtr(void) +static s8 *GetCurrentPartySlotPtr(void) { if (gPartyMenu.action == PARTY_ACTION_SWITCH || gPartyMenu.action == PARTY_ACTION_SOFTBOILED) return &gPartyMenu.slotId2; @@ -1151,7 +1151,7 @@ s8 *GetCurrentPartySlotPtr(void) return &gPartyMenu.slotId; } -void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) +static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) { if (*slotPtr == PARTY_SIZE) { @@ -1220,7 +1220,7 @@ void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) } } -bool8 IsSelectedMonNotEgg(u8 *slotPtr) +static bool8 IsSelectedMonNotEgg(u8 *slotPtr) { if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_IS_EGG) == TRUE) { @@ -1230,7 +1230,7 @@ bool8 IsSelectedMonNotEgg(u8 *slotPtr) return TRUE; } -void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) +static void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) { switch (gPartyMenu.action) { @@ -1264,7 +1264,7 @@ void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) } } -void DisplayCancelChooseMonYesNo(u8 taskId) +static void DisplayCancelChooseMonYesNo(u8 taskId) { PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); StringExpandPlaceholders(gStringVar4, gUnknown_84176CF); @@ -1272,7 +1272,7 @@ void DisplayCancelChooseMonYesNo(u8 taskId) gTasks[taskId].func = Task_CancelChooseMonYesNo; } -void Task_CancelChooseMonYesNo(u8 taskId) +static void Task_CancelChooseMonYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -1281,7 +1281,7 @@ void Task_CancelChooseMonYesNo(u8 taskId) } } -void Task_HandleCancelChooseMonYesNoInput(u8 taskId) +static void Task_HandleCancelChooseMonYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -1300,7 +1300,7 @@ void Task_HandleCancelChooseMonYesNoInput(u8 taskId) } } -u16 PartyMenuButtonHandler(s8 *slotPtr) +static u16 PartyMenuButtonHandler(s8 *slotPtr) { s8 movementDir; @@ -1346,7 +1346,7 @@ u16 PartyMenuButtonHandler(s8 *slotPtr) return JOY_NEW(A_BUTTON | B_BUTTON); } -void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir) +static void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir) { s8 newSlotId = *slotPtr; u8 layout = gPartyMenu.layout; @@ -1363,7 +1363,7 @@ void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir) } } -void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir) +static void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir) { // PARTY_SIZE + 1 is Cancel, PARTY_SIZE is Confirm switch (movementDir) @@ -1428,7 +1428,7 @@ void UpdatePartySelectionSingleLayout(s8 *slotPtr, s8 movementDir) } } -void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir) +static void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir) { // PARTY_SIZE + 1 is Cancel, PARTY_SIZE is Confirm // newSlot is used temporarily as a movement direction during its later assignment @@ -1526,7 +1526,7 @@ void UpdatePartySelectionDoubleLayout(s8 *slotPtr, s8 movementDir) } } -s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir) +static s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir) { while (TRUE) { @@ -1556,7 +1556,7 @@ u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen) return taskId; } -void Task_PrintAndWaitForText(u8 taskId) +static void Task_PrintAndWaitForText(u8 taskId) { if (RunTextPrinters_CheckActive(6) != TRUE) { @@ -1576,7 +1576,7 @@ bool8 IsPartyMenuTextPrinterActive(void) return FuncIsActiveTask(Task_PrintAndWaitForText); } -void Task_WaitForLinkAndReturnToChooseMon(u8 taskId) +static void Task_WaitForLinkAndReturnToChooseMon(u8 taskId) { if (sub_80BF748() != TRUE) { @@ -1585,7 +1585,7 @@ void Task_WaitForLinkAndReturnToChooseMon(u8 taskId) } } -void Task_ReturnToChooseMonAfterText(u8 taskId) +static void Task_ReturnToChooseMonAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -1603,7 +1603,7 @@ void Task_ReturnToChooseMonAfterText(u8 taskId) } } -void DisplayGaveHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen, u8 a4) +static void DisplayGaveHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen, u8 a4) { if (!a4) ItemUse_SetQuestLogEvent(5, mon, item, 0xFFFF); @@ -1618,7 +1618,7 @@ void DisplayGaveHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen, u ScheduleBgCopyTilemapToVram(2); } -void DisplayTookHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) +static void DisplayTookHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) { ItemUse_SetQuestLogEvent(8, mon, item, 0xFFFF); GetMonNickname(mon, gStringVar1); @@ -1628,7 +1628,7 @@ void DisplayTookHeldItemMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) ScheduleBgCopyTilemapToVram(2); } -void DisplayAlreadyHoldingItemSwitchMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) +static void DisplayAlreadyHoldingItemSwitchMessage(struct Pokemon *mon, u16 item, bool8 keepOpen) { GetMonNickname(mon, gStringVar1); CopyItemName(item, gStringVar2); @@ -1637,7 +1637,7 @@ void DisplayAlreadyHoldingItemSwitchMessage(struct Pokemon *mon, u16 item, bool8 ScheduleBgCopyTilemapToVram(2); } -void DisplaySwitchedHeldItemMessage(u16 item, u16 item2, bool8 keepOpen) +static void DisplaySwitchedHeldItemMessage(u16 item, u16 item2, bool8 keepOpen) { sub_8124B60(&gPlayerParty[gPartyMenu.slotId], item2, item); CopyItemName(item, gStringVar1); @@ -1647,7 +1647,7 @@ void DisplaySwitchedHeldItemMessage(u16 item, u16 item2, bool8 keepOpen) ScheduleBgCopyTilemapToVram(2); } -void GiveItemToMon(struct Pokemon *mon, u16 item) +static void GiveItemToMon(struct Pokemon *mon, u16 item) { u8 itemBytes[2]; @@ -1661,7 +1661,7 @@ void GiveItemToMon(struct Pokemon *mon, u16 item) SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes); } -u8 TryTakeMonItem(struct Pokemon *mon) +static u8 TryTakeMonItem(struct Pokemon *mon) { u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); @@ -1674,7 +1674,7 @@ u8 TryTakeMonItem(struct Pokemon *mon) return 2; } -void BufferBagFullCantTakeItemMessage(u16 itemId) +static void BufferBagFullCantTakeItemMessage(u16 itemId) { const u8 *string; @@ -1701,7 +1701,7 @@ void BufferBagFullCantTakeItemMessage(u16 itemId) #define tPartyId data[4] #define tStartHP data[5] -void Task_PartyMenuModifyHP(u8 taskId) +static void Task_PartyMenuModifyHP(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1733,7 +1733,9 @@ void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 hpDifference, Tas SetTaskFuncWithFollowupFunc(taskId, Task_PartyMenuModifyHP, task); } -void ResetHPTaskData(u8 taskId, u8 caseId, u32 hp) +// The usage of hp in this function is mostly nonsense +// Because caseId is always passed 0, none of the other cases ever occur +static void ResetHPTaskData(u8 taskId, u8 caseId, u32 hp) { s16 *data = gTasks[taskId].data; @@ -1797,7 +1799,7 @@ u8 GetMonAilment(struct Pokemon *mon) return AILMENT_NONE; } -void SetPartyMonsAllowedInMinigame(void) +static void SetPartyMonsAllowedInMinigame(void) { u16 *ptr; @@ -1820,7 +1822,7 @@ void SetPartyMonsAllowedInMinigame(void) } } -bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon) +static bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon) { if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && IsSpeciesAllowedInPokemonJump(GetMonData(mon, MON_DATA_SPECIES))) return TRUE; @@ -1828,21 +1830,21 @@ bool16 IsMonAllowedInPokemonJump(struct Pokemon *mon) } -bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon) +static bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *mon) { if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DODRIO) return TRUE; return FALSE; } -bool8 IsMonAllowedInMinigame(u8 slot) +static bool8 IsMonAllowedInMinigame(u8 slot) { if (!((gPartyMenu.data1 >> slot) & 1)) return FALSE; return TRUE; } -void TryEnterMonForMinigame(u8 taskId, u8 slot) +static void TryEnterMonForMinigame(u8 taskId, u8 slot) { if (IsMonAllowedInMinigame(slot) == TRUE) { @@ -1859,14 +1861,14 @@ void TryEnterMonForMinigame(u8 taskId, u8 slot) } } -void CancelParticipationPrompt(u8 taskId) +static void CancelParticipationPrompt(u8 taskId) { DisplayPartyMenuMessage(gText_CancelParticipation, TRUE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = Task_CancelParticipationYesNo; } -void Task_CancelParticipationYesNo(u8 taskId) +static void Task_CancelParticipationYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -1875,7 +1877,7 @@ void Task_CancelParticipationYesNo(u8 taskId) } } -void Task_HandleCancelParticipationYesNoInput(u8 taskId) +static void Task_HandleCancelParticipationYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -1892,7 +1894,7 @@ void Task_HandleCancelParticipationYesNoInput(u8 taskId) } } -u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) +static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) { u16 move; @@ -1923,7 +1925,7 @@ u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) return CAN_LEARN_MOVE; } -u16 GetTutorMove(u8 tutor) +static u16 GetTutorMove(u8 tutor) { switch (tutor) { @@ -1938,7 +1940,7 @@ u16 GetTutorMove(u8 tutor) } } -bool8 CanLearnTutorMove(u16 species, u8 tutor) +static bool8 CanLearnTutorMove(u16 species, u8 tutor) { switch (tutor) { @@ -1965,31 +1967,31 @@ bool8 CanLearnTutorMove(u16 species, u8 tutor) } } -void sub_8120C3C(u8 taskId) +static void sub_8120C3C(u8 taskId) { if (!gPaletteFade.active) gTasks[taskId].func = sub_8120C6C; } -void sub_8120C6C(u8 taskId) +static void sub_8120C6C(u8 taskId) { BeginNormalPaletteFade(0xFFFF1FFF, 4, 0, 6, RGB_BLACK); gTasks[taskId].func = sub_8120CA8; } -void sub_8120CA8(u8 taskId) +static void sub_8120CA8(u8 taskId) { if (!gPaletteFade.active) gTasks[taskId].func = sub_8120CD8; } -void sub_8120CD8(u8 taskId) +static void sub_8120CD8(u8 taskId) { gTasks[taskId].data[0] = sub_81220D4(); gTasks[taskId].func = sub_8120D08; } -void sub_8120D08(u8 taskId) +static void sub_8120D08(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1997,19 +1999,19 @@ void sub_8120D08(u8 taskId) gTasks[taskId].func = sub_8120D40; } -void sub_8120D40(u8 taskId) +static void sub_8120D40(u8 taskId) { BeginNormalPaletteFade(0xFFFF0008, 4, 6, 0, RGB_BLACK); gTasks[taskId].func = sub_8120D7C; } -void sub_8120D7C(u8 taskId) +static void sub_8120D7C(u8 taskId) { if (!gPaletteFade.active) gTasks[taskId].func = sub_8120DAC; } -void sub_8120DAC(u8 taskId) +static void sub_8120DAC(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2017,7 +2019,7 @@ void sub_8120DAC(u8 taskId) gTasks[taskId].func = sub_8120DE0; } -void sub_8120DE0(u8 taskId) +static void sub_8120DE0(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2028,13 +2030,13 @@ void sub_8120DE0(u8 taskId) } } -void sub_8120E1C(u8 taskId) +static void sub_8120E1C(u8 taskId) { BeginNormalPaletteFade(0x0000FFF7, 4, 6, 0, RGB_BLACK); gTasks[taskId].func = sub_8120E58; } -void sub_8120E58(u8 taskId) +static void sub_8120E58(u8 taskId) { if (!gPaletteFade.active) { @@ -2048,7 +2050,7 @@ void sub_8120E58(u8 taskId) } } -void sub_8120EBC(u8 taskId) +static void sub_8120EBC(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2056,7 +2058,7 @@ void sub_8120EBC(u8 taskId) gTasks[taskId].func = sub_8120EE0; } -void sub_8120EE0(u8 taskId) +static void sub_8120EE0(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2080,7 +2082,7 @@ void sub_8120EE0(u8 taskId) } } -bool8 sub_8120F78(u8 taskId) +static bool8 sub_8120F78(u8 taskId) { if (JOY_NEW(B_BUTTON)) { @@ -2091,7 +2093,7 @@ bool8 sub_8120F78(u8 taskId) return FALSE; } -void sub_8120FB0(void) +static void sub_8120FB0(void) { FreeRestoreBattleData(); LoadPlayerParty(); @@ -2099,7 +2101,7 @@ void sub_8120FB0(void) SetMainCallback2(CB2_ReturnToTeachyTV); } -void sub_8120FCC(u8 taskId) +static void sub_8120FCC(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2107,7 +2109,7 @@ void sub_8120FCC(u8 taskId) gTasks[taskId].func = sub_8120FF0; } -void sub_8120FF0(u8 taskId) +static void sub_8120FF0(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2125,7 +2127,7 @@ void sub_8120FF0(u8 taskId) } } -void InitPartyMenuWindows(u8 layout) +static void InitPartyMenuWindows(u8 layout) { u8 i; @@ -2153,7 +2155,7 @@ void InitPartyMenuWindows(u8 layout) LoadPalette(stdpal_get(0), 0xE0, 0x20); } -void CreateCancelConfirmWindows(bool8 chooseHalf) +static void CreateCancelConfirmWindows(bool8 chooseHalf) { u8 confirmWindowId; u8 cancelWindowId; @@ -2194,12 +2196,12 @@ void CreateCancelConfirmWindows(bool8 chooseHalf) } } -u16 *GetPartyMenuPalBufferPtr(u8 paletteId) +static u16 *GetPartyMenuPalBufferPtr(u8 paletteId) { return &sPartyMenuInternal->palBuffer[paletteId]; } -void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height) +static void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height) { u8 *pixels = AllocZeroed(height * width * 32); u8 i, j; @@ -2214,7 +2216,7 @@ void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 widt } } -void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) { if (width == 0 && height == 0) { @@ -2227,7 +2229,7 @@ void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 he BlitBitmapToPartyWindow(windowId, sMainSlotTileNums_Egg, 10, x, y, width, height); } -void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) { if (width == 0 && height == 0) { @@ -2240,7 +2242,7 @@ void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 h BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums_Egg, 18, x, y, width, height); } -void DrawEmptySlot(u8 windowId) +static void DrawEmptySlot(u8 windowId) { BlitBitmapToPartyWindow(windowId, sEmptySlotTileNums, 18, 0, 0, 18, 3); } @@ -2252,7 +2254,7 @@ void DrawEmptySlot(u8 windowId) LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, 2); \ } -void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) +static void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) { u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; @@ -2325,12 +2327,12 @@ void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) } } -void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align) +static void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align) { AddTextPrinterParameterized3(windowId, 0, align[0], align[1], sFontColorTable[color], 0, str); } -void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { u8 nickname[POKEMON_NAME_LENGTH + 1]; @@ -2343,7 +2345,7 @@ void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuB } } -void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { @@ -2359,7 +2361,7 @@ void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *men } } -void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox) { ConvertIntToDecimalStringN(gStringVar2, level, STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(gStringVar1, gText_Lv); @@ -2367,7 +2369,7 @@ void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox) DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[4]); } -void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { u8 nickname[POKEMON_NAME_LENGTH + 1]; @@ -2377,7 +2379,7 @@ void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenu DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, menuBox); } -void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox) { u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; @@ -2400,7 +2402,7 @@ void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct Part } } -void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { @@ -2411,7 +2413,7 @@ void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBo } } -void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) { u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -2420,7 +2422,7 @@ void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[12]); } -void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { @@ -2431,7 +2433,7 @@ void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *men } } -void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) { ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 3); StringCopy(gStringVar1, gText_Slash); @@ -2439,13 +2441,13 @@ void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); } -void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) DisplayPartyPokemonHPBar(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), menuBox); } -void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) +static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) { u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; u8 hpFraction; @@ -2478,7 +2480,7 @@ void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) CopyWindowToVram(menuBox->windowId, 2); } -void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c) +static void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c) { if (c != 0) menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->descTextLeft >> 3, menuBox->infoRects->descTextTop >> 3, menuBox->infoRects->descTextWidth >> 3, menuBox->infoRects->descTextHeight >> 3, TRUE); @@ -2486,7 +2488,7 @@ void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBo AddTextPrinterParameterized3(menuBox->windowId, 1, menuBox->infoRects->descTextLeft, menuBox->infoRects->descTextTop, sFontColorTable[0], 0, sDescriptionStringTable[stringId]); } -void PartyMenuRemoveWindow(u8 *ptr) +static void PartyMenuRemoveWindow(u8 *ptr) { if (*ptr != 0xFF) { @@ -2540,7 +2542,7 @@ void DisplayPartyMenuStdMessage(u32 stringId) } } -bool8 ShouldUseChooseMonText(void) +static bool8 ShouldUseChooseMonText(void) { struct Pokemon *party = gPlayerParty; u8 i; @@ -2558,7 +2560,7 @@ bool8 ShouldUseChooseMonText(void) return FALSE; } -u8 DisplaySelectionWindow(u8 windowType) +static u8 DisplaySelectionWindow(u8 windowType) { struct WindowTemplate window; u8 cursorDimension; @@ -2597,39 +2599,39 @@ u8 DisplaySelectionWindow(u8 windowType) return sPartyMenuInternal->windowId[0]; } -void PartyMenuPrintText(const u8 *text) +static void PartyMenuPrintText(const u8 *text) { DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13); gTextFlags.canABSpeedUpPrint = TRUE; AddTextPrinterParameterized2(6, 2, text, GetTextSpeedSetting(), 0, 2, 1, 3); } -void PartyMenuDisplayYesNoMenu(void) +static void PartyMenuDisplayYesNoMenu(void) { CreateYesNoMenu(&sPartyMenuYesNoWindowTemplate, 2, 0, 2, 0x4F, 13, 0); } -u8 CreateLevelUpStatsWindow(void) +static u8 CreateLevelUpStatsWindow(void) { sPartyMenuInternal->windowId[0] = AddWindow(&sLevelUpStatsWindowTemplate); DrawStdFrameWithCustomTileAndPalette(sPartyMenuInternal->windowId[0], FALSE, 0x4F, 13); return sPartyMenuInternal->windowId[0]; } -void RemoveLevelUpStatsWindow(void) +static void RemoveLevelUpStatsWindow(void) { ClearWindowTilemap(sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); } -void sub_8122084(u8 windowId, const u8 *str) +static void sub_8122084(u8 windowId, const u8 *str) { StringExpandPlaceholders(gStringVar4, str); gTextFlags.canABSpeedUpPrint = TRUE; AddTextPrinterParameterized2(windowId, 4, gStringVar4, GetTextSpeedSetting(), 0, 2, 1, 3); } -bool8 sub_81220D4(void) +static bool8 sub_81220D4(void) { u8 windowId = AddWindow(&gUnknown_845A170); @@ -2639,7 +2641,7 @@ bool8 sub_81220D4(void) return windowId; } -void sub_8122110(u8 windowId) +static void sub_8122110(u8 windowId) { ClearWindowTilemap(windowId); ClearDialogWindowAndFrameToTransparent(windowId, FALSE); @@ -2647,7 +2649,7 @@ void sub_8122110(u8 windowId) ScheduleBgCopyTilemapToVram(2); } -void sub_8122138(u8 action) +static void sub_8122138(u8 action) { u8 attr; struct PartyMenuInternal *ptr = sPartyMenuInternal; @@ -2674,7 +2676,7 @@ void sub_8122138(u8 action) } } -void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot) +static void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot) { bool32 handleDeoxys = TRUE; u16 species2; @@ -2687,7 +2689,7 @@ void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, UpdatePartyMonHPBar(menuBox->monSpriteId, mon); } -void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys) +static void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys) { if (species != SPECIES_NONE) { @@ -2696,7 +2698,7 @@ void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMen } } -void UpdateHPBar(u8 spriteId, u16 hp, u16 maxhp) +static void UpdateHPBar(u8 spriteId, u16 hp, u16 maxhp) { switch (GetHPBarLevel(hp, maxhp)) { @@ -2718,12 +2720,12 @@ void UpdateHPBar(u8 spriteId, u16 hp, u16 maxhp) } } -void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon) +static void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon) { UpdateHPBar(spriteId, GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP)); } -void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum) +static void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum) { gSprites[spriteId].data[0] = 0; if (animNum == 0) @@ -2748,7 +2750,7 @@ void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum) } } -void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite) +static void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite) { u8 animCmd = UpdateMonIconFrame(sprite); @@ -2761,12 +2763,12 @@ void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite) } } -void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite) +static void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite) { UpdateMonIconFrame(sprite); } -void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { @@ -2775,7 +2777,7 @@ void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menu } } -void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox) +static void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox) { if (species != SPECIES_NONE) { @@ -2785,12 +2787,12 @@ void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct Par } } -void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) { ShowOrHideHeldItemSprite(GetMonData(mon, MON_DATA_HELD_ITEM), menuBox); } -void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox) +static void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox) { if (item == ITEM_NONE) { @@ -2838,7 +2840,7 @@ void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichPart } } -void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail) +static void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail) { u8 subpriority = gSprites[spriteId].subpriority; u8 newSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, 250, 170, subpriority - 1); @@ -2851,7 +2853,7 @@ void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail) gSprites[newSpriteId].callback(&gSprites[newSpriteId]); } -void SpriteCB_HeldItem(struct Sprite *sprite) +static void SpriteCB_HeldItem(struct Sprite *sprite) { u8 otherSpriteId = sprite->data[7]; @@ -2867,13 +2869,13 @@ void SpriteCB_HeldItem(struct Sprite *sprite) } } -void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8); } -void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox) +static void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox) { if (species != SPECIES_NONE) { @@ -2883,7 +2885,7 @@ void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox } // For Cancel when Confirm isnt present -u8 CreatePokeballButtonSprite(u8 x, u8 y) +static u8 CreatePokeballButtonSprite(u8 x, u8 y) { u8 spriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, x, y, 8); @@ -2892,12 +2894,12 @@ u8 CreatePokeballButtonSprite(u8 x, u8 y) } // For Confirm and Cancel when both are present -u8 CreateSmallPokeballButtonSprite(u8 x, u8 y) +static u8 CreateSmallPokeballButtonSprite(u8 x, u8 y) { return CreateSprite(&sSpriteTemplate_MenuPokeballSmall, x, y, 8); } -void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum) +static void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum) { StartSpriteAnim(&gSprites[spriteId], animNum); } @@ -2922,14 +2924,14 @@ void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum) } } -void LoadPartyMenuPokeballGfx(void) +static void LoadPartyMenuPokeballGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeball); LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeballSmall); LoadCompressedSpritePalette(&sSpritePalette_MenuPokeball); } -void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { @@ -2938,7 +2940,7 @@ void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBo } } -void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox) +static void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox) { if (species != SPECIES_NONE) { @@ -2948,12 +2950,12 @@ void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct Part } } -void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox) +static void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox) { UpdatePartyMonAilmentGfx(GetMonAilment(mon), menuBox); } -void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) +static void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) { switch (status) { @@ -2968,13 +2970,13 @@ void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) } } -void LoadPartyMenuAilmentGfx(void) +static void LoadPartyMenuAilmentGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons); LoadCompressedSpritePalette(&sSpritePalette_StatusIcons); } -void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 action) +static void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 action) { u8 i; @@ -2990,7 +2992,7 @@ void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 action) } } -void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) +static void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) { u8 i, j; @@ -3017,7 +3019,7 @@ void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_CANCEL1); } -u8 GetPartyMenuActionsType(struct Pokemon *mon) +static u8 GetPartyMenuActionsType(struct Pokemon *mon) { u32 actionType; @@ -3071,7 +3073,7 @@ u8 GetPartyMenuActionsType(struct Pokemon *mon) return actionType; } -void CreateSelectionWindow(void) +static void CreateSelectionWindow(void) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -3082,14 +3084,14 @@ void CreateSelectionWindow(void) DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MON); } -void Task_TryCreateSelectionWindow(u8 taskId) +static void Task_TryCreateSelectionWindow(u8 taskId) { CreateSelectionWindow(); gTasks[taskId].data[0] = 0xFF; gTasks[taskId].func = Task_HandleSelectionMenuInput; } -void Task_HandleSelectionMenuInput(u8 taskId) +static void Task_HandleSelectionMenuInput(u8 taskId) { if (!gPaletteFade.active && sub_80BF748() != TRUE) { @@ -3120,28 +3122,28 @@ void Task_HandleSelectionMenuInput(u8 taskId) } } -void CursorCB_Summary(u8 taskId) +static void CursorCB_Summary(u8 taskId) { PlaySE(SE_SELECT); sPartyMenuInternal->exitCallback = CB2_ShowPokemonSummaryScreen; Task_ClosePartyMenu(taskId); } -void CB2_ShowPokemonSummaryScreen(void) +static void CB2_ShowPokemonSummaryScreen(void) { if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) UpdatePartyToBattleOrder(); ShowPokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen, 0); } -void CB2_ReturnToPartyMenuFromSummaryScreen(void) +static void CB2_ReturnToPartyMenuFromSummaryScreen(void) { gPaletteFade.bufferTransferDisabled = TRUE; gPartyMenu.slotId = GetLastViewedMonIndex(); InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); } -void CursorCB_Switch(u8 taskId) +static void CursorCB_Switch(u8 taskId) { PlaySE(SE_SELECT); gPartyMenu.action = PARTY_ACTION_SWITCH; @@ -3166,7 +3168,7 @@ void CursorCB_Switch(u8 taskId) #define tSlot1SlideDir data[10] #define tSlot2SlideDir data[11] -void SwitchSelectedMons(u8 taskId) +static void SwitchSelectedMons(u8 taskId) { s16 *data = gTasks[taskId].data; u8 windowIds[2]; @@ -3214,7 +3216,7 @@ void SwitchSelectedMons(u8 taskId) } // returns FALSE if the slot has slid fully offscreen / back onscreen -bool8 TryMovePartySlot(s16 x, s16 width, u8 *leftMove, u8 *newX, u8 *newWidth) +static bool8 TryMovePartySlot(s16 x, s16 width, u8 *leftMove, u8 *newX, u8 *newWidth) { if ((x + width) < 0) return FALSE; @@ -3238,7 +3240,7 @@ bool8 TryMovePartySlot(s16 x, s16 width, u8 *leftMove, u8 *newX, u8 *newWidth) return TRUE; } -void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width, s16 height, s16 dir) +static void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width, s16 height, s16 dir) { // The use of the dimension parameters here is a mess u8 leftMove, newX, newWidth; // leftMove is used as a srcX, newX is used as both x and srcHeight, newWidth is used as both width and destY @@ -3251,7 +3253,7 @@ void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width, s16 he } } -void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset) +static void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset) { gSprites[menuBox->pokeballSpriteId].pos2.x += offset * 8; gSprites[menuBox->itemSpriteId].pos2.x += offset * 8; @@ -3259,7 +3261,7 @@ void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset) gSprites[menuBox->statusSpriteId].pos2.x += offset * 8; } -void SlidePartyMenuBoxSpritesOneStep(u8 taskId) +static void SlidePartyMenuBoxSpritesOneStep(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3269,7 +3271,7 @@ void SlidePartyMenuBoxSpritesOneStep(u8 taskId) MovePartyMenuBoxSprites(&sPartyMenuBoxes[gPartyMenu.slotId2], tSlot2SlideDir); } -void SlidePartyMenuBoxOneStep(u8 taskId) +static void SlidePartyMenuBoxOneStep(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3280,7 +3282,7 @@ void SlidePartyMenuBoxOneStep(u8 taskId) ScheduleBgCopyTilemapToVram(0); } -void Task_SlideSelectedSlotsOffscreen(u8 taskId) +static void Task_SlideSelectedSlotsOffscreen(u8 taskId) { s16 *data = gTasks[taskId].data; u16 slidingSlotPositions[2]; @@ -3309,7 +3311,7 @@ void Task_SlideSelectedSlotsOffscreen(u8 taskId) } } -void Task_SlideSelectedSlotsOnscreen(u8 taskId) +static void Task_SlideSelectedSlotsOnscreen(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3339,7 +3341,7 @@ void Task_SlideSelectedSlotsOnscreen(u8 taskId) } } -void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2) +static void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2) { u8 spriteIdBuffer = *spriteIdPtr1; u16 xBuffer1, yBuffer1, xBuffer2, yBuffer2; @@ -3360,7 +3362,7 @@ void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2) gSprites[*spriteIdPtr2].pos2.y = yBuffer2; } -void SwitchPartyMon(void) +static void SwitchPartyMon(void) { struct PartyMenuBox *menuBoxes[2]; struct Pokemon *mon1, *mon2; @@ -3381,7 +3383,7 @@ void SwitchPartyMon(void) SwitchMenuBoxSprites(&menuBoxes[0]->statusSpriteId, &menuBoxes[1]->statusSpriteId); } -void sub_812358C(void) +static void sub_812358C(void) { u16 *buffer = Alloc(2 * sizeof(u16)); @@ -3392,7 +3394,7 @@ void sub_812358C(void) } // Finish switching mons or using Softboiled -void FinishTwoMonAction(u8 taskId) +static void FinishTwoMonAction(u8 taskId) { PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; @@ -3416,7 +3418,7 @@ void FinishTwoMonAction(u8 taskId) #undef tSlot1SlideDir #undef tSlot2SlideDir -void CursorCB_Cancel1(u8 taskId) +static void CursorCB_Cancel1(u8 taskId) { PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); @@ -3428,7 +3430,7 @@ void CursorCB_Cancel1(u8 taskId) gTasks[taskId].func = Task_HandleChooseMonInput; } -void CursorCB_Item(u8 taskId) +static void CursorCB_Item(u8 taskId) { PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); @@ -3440,7 +3442,7 @@ void CursorCB_Item(u8 taskId) gTasks[taskId].func = Task_HandleSelectionMenuInput; } -void CursorCB_Give(u8 taskId) +static void CursorCB_Give(u8 taskId) { PlaySE(SE_SELECT); sPartyMenuInternal->exitCallback = CB2_SelectBagItemToGive; @@ -3481,7 +3483,7 @@ void CB2_GiveHoldItem(void) } } -void Task_GiveHoldItem(u8 taskId) +static void Task_GiveHoldItem(u8 taskId) { u16 item; @@ -3495,7 +3497,7 @@ void Task_GiveHoldItem(u8 taskId) } } -void Task_SwitchHoldItemsPrompt(u8 taskId) +static void Task_SwitchHoldItemsPrompt(u8 taskId) { if (!gPaletteFade.active) { @@ -3504,7 +3506,7 @@ void Task_SwitchHoldItemsPrompt(u8 taskId) } } -void Task_SwitchItemsYesNo(u8 taskId) +static void Task_SwitchItemsYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -3513,7 +3515,7 @@ void Task_SwitchItemsYesNo(u8 taskId) } } -void Task_HandleSwitchItemsYesNoInput(u8 taskId) +static void Task_HandleSwitchItemsYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -3551,7 +3553,7 @@ void Task_HandleSwitchItemsYesNoInput(u8 taskId) } } -void Task_WriteMailToGiveMonAfterText(u8 taskId) +static void Task_WriteMailToGiveMonAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -3560,7 +3562,7 @@ void Task_WriteMailToGiveMonAfterText(u8 taskId) } } -void CB2_WriteMailToGiveMon(void) +static void CB2_WriteMailToGiveMon(void) { u8 mail = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL); @@ -3569,7 +3571,7 @@ void CB2_WriteMailToGiveMon(void) CB2_ReturnToPartyMenuFromWritingMail); } -void CB2_ReturnToPartyMenuFromWritingMail(void) +static void CB2_ReturnToPartyMenuFromWritingMail(void) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); @@ -3591,7 +3593,7 @@ void CB2_ReturnToPartyMenuFromWritingMail(void) } // Nearly redundant with Task_DisplayGaveMailFromBagMessgae -void Task_DisplayGaveMailFromPartyMessage(u8 taskId) +static void Task_DisplayGaveMailFromPartyMessage(u8 taskId) { if (!gPaletteFade.active) { @@ -3603,7 +3605,7 @@ void Task_DisplayGaveMailFromPartyMessage(u8 taskId) } } -void Task_UpdateHeldItemSprite(u8 taskId) +static void Task_UpdateHeldItemSprite(u8 taskId) { s8 slotId = gPartyMenu.slotId; @@ -3614,7 +3616,7 @@ void Task_UpdateHeldItemSprite(u8 taskId) } } -void CursorCB_TakeItem(u8 taskId) +static void CursorCB_TakeItem(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); @@ -3641,7 +3643,7 @@ void CursorCB_TakeItem(u8 taskId) gTasks[taskId].func = Task_UpdateHeldItemSprite; } -void CursorCB_Mail(u8 taskId) +static void CursorCB_Mail(u8 taskId) { PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); @@ -3653,25 +3655,25 @@ void CursorCB_Mail(u8 taskId) gTasks[taskId].func = Task_HandleSelectionMenuInput; } -void CursorCB_Read(u8 taskId) +static void CursorCB_Read(u8 taskId) { PlaySE(SE_SELECT); sPartyMenuInternal->exitCallback = CB2_ReadHeldMail; Task_ClosePartyMenu(taskId); } -void CB2_ReadHeldMail(void) +static void CB2_ReadHeldMail(void) { ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAIL)], CB2_ReturnToPartyMenuFromReadingMail, 1); } -void CB2_ReturnToPartyMenuFromReadingMail(void) +static void CB2_ReturnToPartyMenuFromReadingMail(void) { gPaletteFade.bufferTransferDisabled = TRUE; InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); } -void CursorCB_TakeMail(u8 taskId) +static void CursorCB_TakeMail(u8 taskId) { PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); @@ -3680,7 +3682,7 @@ void CursorCB_TakeMail(u8 taskId) gTasks[taskId].func = Task_SendMailToPCYesNo; } -void Task_SendMailToPCYesNo(u8 taskId) +static void Task_SendMailToPCYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -3689,7 +3691,7 @@ void Task_SendMailToPCYesNo(u8 taskId) } } -void Task_HandleSendMailToPCYesNoInput(u8 taskId) +static void Task_HandleSendMailToPCYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -3715,7 +3717,7 @@ void Task_HandleSendMailToPCYesNoInput(u8 taskId) } } -void Task_LoseMailMessageYesNo(u8 taskId) +static void Task_LoseMailMessageYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -3724,7 +3726,7 @@ void Task_LoseMailMessageYesNo(u8 taskId) } } -void Task_HandleLoseMailMessageYesNoInput(u8 taskId) +static void Task_HandleLoseMailMessageYesNoInput(u8 taskId) { u16 item; @@ -3754,7 +3756,7 @@ void Task_HandleLoseMailMessageYesNoInput(u8 taskId) } } -void CursorCB_Cancel2(u8 taskId) +static void CursorCB_Cancel2(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -3768,7 +3770,7 @@ void CursorCB_Cancel2(u8 taskId) gTasks[taskId].func = Task_HandleSelectionMenuInput; } -void CursorCB_SendMon(u8 taskId) +static void CursorCB_SendMon(u8 taskId) { PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); @@ -3785,7 +3787,7 @@ void CursorCB_SendMon(u8 taskId) } } -void CursorCB_Enter(u8 taskId) +static void CursorCB_Enter(u8 taskId) { u8 maxBattlers; u8 i; @@ -3822,14 +3824,14 @@ void CursorCB_Enter(u8 taskId) gTasks[taskId].func = Task_ReturnToChooseMonAfterText; } -void MoveCursorToConfirm(void) +static void MoveCursorToConfirm(void) { AnimatePartySlot(gPartyMenu.slotId, 0); gPartyMenu.slotId = PARTY_SIZE; AnimatePartySlot(gPartyMenu.slotId, 1); } -void CursorCB_NoEntry(u8 taskId) +static void CursorCB_NoEntry(u8 taskId) { u8 i; @@ -3865,7 +3867,7 @@ void CursorCB_NoEntry(u8 taskId) gTasks[taskId].func = Task_HandleChooseMonInput; } -void CursorCB_Store(u8 taskId) +static void CursorCB_Store(u8 taskId) { PlaySE(SE_SELECT); gSpecialVar_0x8004 = gPartyMenu.slotId; @@ -3873,7 +3875,7 @@ void CursorCB_Store(u8 taskId) } // Register mon for the Trading Board in Union Room -void CursorCB_Register(u8 taskId) +static void CursorCB_Register(u8 taskId) { u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); @@ -3900,7 +3902,7 @@ void CursorCB_Register(u8 taskId) gTasks[taskId].func = Task_ReturnToChooseMonAfterText; } -void CursorCB_Trade1(u8 taskId) +static void CursorCB_Trade1(u8 taskId) { u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); @@ -3926,11 +3928,11 @@ void CursorCB_Trade1(u8 taskId) // Spin Trade (based on the translation of the Japanese trade prompt) // Not implemented, and normally unreachable because PARTY_MENU_TYPE_SPIN_TRADE is never used -void CursorCB_Trade2(u8 taskId) +static void CursorCB_Trade2(u8 taskId) { } -void CursorCB_FieldMove(u8 taskId) +static void CursorCB_FieldMove(u8 taskId) { u8 fieldMove = sPartyMenuInternal->actions[Menu_GetCursorPos()] - MENU_FIELD_MOVES; const struct MapHeader *mapHeader; @@ -4009,13 +4011,13 @@ void CursorCB_FieldMove(u8 taskId) } } -void DisplayFieldMoveExitAreaMessage(u8 taskId) +static void DisplayFieldMoveExitAreaMessage(u8 taskId) { DisplayPartyMenuMessage(gStringVar4, TRUE); gTasks[taskId].func = Task_FieldMoveExitAreaYesNo; } -void Task_FieldMoveExitAreaYesNo(u8 taskId) +static void Task_FieldMoveExitAreaYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -4024,7 +4026,7 @@ void Task_FieldMoveExitAreaYesNo(u8 taskId) } } -void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId) +static void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -4051,7 +4053,7 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void) return TRUE; } -void Task_FieldMoveWaitForFade(u8 taskId) +static void Task_FieldMoveWaitForFade(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) { @@ -4061,18 +4063,18 @@ void Task_FieldMoveWaitForFade(u8 taskId) } } -u16 GetFieldMoveMonSpecies(void) +static u16 GetFieldMoveMonSpecies(void) { return GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); } -void Task_CancelAfterAorBPress(u8 taskId) +static void Task_CancelAfterAorBPress(u8 taskId) { if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) CursorCB_Cancel1(taskId); } -void DisplayCantUseFlashMessage(void) +static void DisplayCantUseFlashMessage(void) { if (FlagGet(FLAG_SYS_FLASH_ACTIVE) == TRUE) DisplayPartyMenuStdMessage(PARTY_MSG_ALREADY_IN_USE); @@ -4080,13 +4082,13 @@ void DisplayCantUseFlashMessage(void) DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE); } -void FieldCallback_Surf(void) +static void FieldCallback_Surf(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); FieldEffectStart(FLDEFF_USE_SURF); } -bool8 SetUpFieldMove_Surf(void) +static bool8 SetUpFieldMove_Surf(void) { s16 x, y; @@ -4102,7 +4104,7 @@ bool8 SetUpFieldMove_Surf(void) return FALSE; } -void DisplayCantUseSurfMessage(void) +static void DisplayCantUseSurfMessage(void) { s16 x, y; @@ -4124,7 +4126,7 @@ void DisplayCantUseSurfMessage(void) } } -bool8 SetUpFieldMove_Fly(void) +static bool8 SetUpFieldMove_Fly(void) { if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) return TRUE; @@ -4137,13 +4139,13 @@ void CB2_ReturnToPartyMenuFromFlyMap(void) InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToFieldWithOpenMenu); } -void FieldCallback_Waterfall(void) +static void FieldCallback_Waterfall(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); FieldEffectStart(FLDEFF_USE_WATERFALL); } -bool8 SetUpFieldMove_Waterfall(void) +static bool8 SetUpFieldMove_Waterfall(void) { s16 x, y; @@ -4157,7 +4159,7 @@ bool8 SetUpFieldMove_Waterfall(void) return FALSE; } -void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2) +static void sub_8124B60(struct Pokemon *mon, u16 item, u16 item2) { u16 *ptr = Alloc(4 * sizeof(u16)); @@ -4178,7 +4180,7 @@ struct FieldMoveWarpParams u8 regionMapSectionId; }; -void sub_8124BB0(struct Pokemon *mon, u8 fieldMove) +static void sub_8124BB0(struct Pokemon *mon, u8 fieldMove) { struct FieldMoveWarpParams *ptr = Alloc(sizeof(*ptr)); @@ -4279,28 +4281,28 @@ void CB2_ShowPartyMenuForItemUse(void) InitPartyMenu(menuType, partyLayout, PARTY_ACTION_USE_ITEM, TRUE, msgId, task, callback); } -void CB2_ReturnToBagMenu(void) +static void CB2_ReturnToBagMenu(void) { GoToBagMenu(11, 3, NULL); } -void CB2_ReturnToTMCaseMenu(void) +static void CB2_ReturnToTMCaseMenu(void) { InitTMCase(5, NULL, 0xFF); } -void CB2_ReturnToBerryPouchMenu(void) +static void CB2_ReturnToBerryPouchMenu(void) { InitBerryPouch(BERRYPOUCH_NA, NULL, 0xFF); } -void sub_8124DC0(u8 taskId) +static void sub_8124DC0(u8 taskId) { sPartyMenuInternal->exitCallback = sub_8124DE0; Task_ClosePartyMenu(taskId); } -void sub_8124DE0(void) +static void sub_8124DE0(void) { if (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId) == 2) // Evolution stone { @@ -4315,7 +4317,7 @@ void sub_8124DE0(void) } } -void sub_8124E48(void) +static void sub_8124E48(void) { if (ItemId_GetPocket(gSpecialVar_ItemId) == POCKET_TM_CASE && sub_811D178() == 1) @@ -4332,7 +4334,7 @@ void sub_8124E48(void) } } -void sub_8124EFC(void) +static void sub_8124EFC(void) { if (sub_811D178() == 1) { @@ -4354,7 +4356,7 @@ void sub_8124EFC(void) } } -void Task_SetSacredAshCB(u8 taskId) +static void Task_SetSacredAshCB(u8 taskId) { if (!gPaletteFade.active) { @@ -4364,7 +4366,7 @@ void Task_SetSacredAshCB(u8 taskId) } } -bool8 IsHPRecoveryItem(u16 item) +static bool8 IsHPRecoveryItem(u16 item) { const u8 *effect; @@ -4378,7 +4380,7 @@ bool8 IsHPRecoveryItem(u16 item) return FALSE; } -void GetMedicineItemEffectMessage(u16 item) +static void GetMedicineItemEffectMessage(u16 item) { switch (GetItemEffectType(item)) { @@ -4443,21 +4445,21 @@ void GetMedicineItemEffectMessage(u16 item) } } -bool8 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item) +static bool8 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item) { if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) return FALSE; return TRUE; } -bool8 IsItemFlute(u16 item) +static bool8 IsItemFlute(u16 item) { if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE) return TRUE; return FALSE; } -bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex) +static bool8 ExecuteTableBasedItemEffect_(u8 partyMonIndex, u16 item, u8 monMoveIndex) { if (gMain.inBattle) return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, GetPartyIdFromBattleSlot(partyMonIndex), monMoveIndex); @@ -4565,7 +4567,7 @@ void ItemUseCB_MedicineStep(u8 taskId, TaskFunc func) } } -void Task_DisplayHPRestoredMessage(u8 taskId) +static void Task_DisplayHPRestoredMessage(u8 taskId) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); @@ -4575,7 +4577,7 @@ void Task_DisplayHPRestoredMessage(u8 taskId) gTasks[taskId].func = Task_ClosePartyMenuAfterText; } -void Task_ClosePartyMenuAfterText(u8 taskId) +static void Task_ClosePartyMenuAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -4585,7 +4587,7 @@ void Task_ClosePartyMenuAfterText(u8 taskId) } } -void ShowMoveSelectWindow(u8 slot) +static void ShowMoveSelectWindow(u8 slot) { u8 i; u8 moveCount = 0; @@ -4610,7 +4612,7 @@ void ShowMoveSelectWindow(u8 slot) ScheduleBgCopyTilemapToVram(2); } -void Task_HandleWhichMoveInput(u8 taskId) +static void Task_HandleWhichMoveInput(u8 taskId) { s8 input = Menu_ProcessInput(); @@ -4655,7 +4657,7 @@ void ItemUseCB_PPRecovery(u8 taskId, UNUSED TaskFunc func) } } -void SetSelectedMoveForPPItem(u8 taskId) +static void SetSelectedMoveForPPItem(u8 taskId) { PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); gPartyMenu.data1 = Menu_GetCursorPos(); @@ -4665,7 +4667,7 @@ void SetSelectedMoveForPPItem(u8 taskId) sub_812580C(taskId); } -void ReturnToUseOnWhichMon(u8 taskId) +static void ReturnToUseOnWhichMon(u8 taskId) { gTasks[taskId].func = Task_HandleChooseMonInput; sPartyMenuInternal->exitCallback = NULL; @@ -4673,7 +4675,7 @@ void ReturnToUseOnWhichMon(u8 taskId) DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); } -void sub_812580C(u8 taskId) +static void sub_812580C(u8 taskId) { bool8 noEffect = PokemonItemUseNoEffect(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId, @@ -4694,7 +4696,7 @@ void sub_812580C(u8 taskId) } } -void sub_8125898(u8 taskId, UNUSED TaskFunc func) +static void sub_8125898(u8 taskId, UNUSED TaskFunc func) { u16 move; struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -4712,7 +4714,7 @@ void sub_8125898(u8 taskId, UNUSED TaskFunc func) gTasks[taskId].func = Task_ClosePartyMenuAfterText; } -void TryUsePPItem(u8 taskId) +static void TryUsePPItem(u8 taskId) { u16 move = MOVE_NONE; s16 *moveSlot = &gPartyMenu.data1; @@ -4781,14 +4783,14 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move) return FALSE; } -void DisplayLearnMoveMessage(const u8 *str) +static void DisplayLearnMoveMessage(const u8 *str) { StringExpandPlaceholders(gStringVar4, str); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); } -void DisplayLearnMoveMessageAndClose(u8 taskId, const u8 *str) +static void DisplayLearnMoveMessageAndClose(u8 taskId, const u8 *str) { DisplayLearnMoveMessage(str); gTasks[taskId].func = Task_ClosePartyMenuAfterText; @@ -4830,12 +4832,12 @@ void ItemUseCB_TMHM(u8 taskId, UNUSED TaskFunc func) } } -void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func) +static void ItemUseCB_LearnedMove(u8 taskId, UNUSED TaskFunc func) { Task_LearnedMove(taskId); } -void Task_LearnedMove(u8 taskId) +static void Task_LearnedMove(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; s16 *move = &gPartyMenu.data1; @@ -4855,7 +4857,7 @@ void Task_LearnedMove(u8 taskId) gTasks[taskId].func = Task_DoLearnedMoveFanfareAfterText; } -void Task_DoLearnedMoveFanfareAfterText(u8 taskId) +static void Task_DoLearnedMoveFanfareAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -4864,7 +4866,7 @@ void Task_DoLearnedMoveFanfareAfterText(u8 taskId) } } -void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) +static void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) { if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))) { @@ -4879,7 +4881,7 @@ void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) } } -void Task_ReplaceMoveYesNo(u8 taskId) +static void Task_ReplaceMoveYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -4888,7 +4890,7 @@ void Task_ReplaceMoveYesNo(u8 taskId) } } -void Task_HandleReplaceMoveYesNoInput(u8 taskId) +static void Task_HandleReplaceMoveYesNoInput(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { @@ -4905,7 +4907,7 @@ void Task_HandleReplaceMoveYesNoInput(u8 taskId) } } -void Task_ShowSummaryScreenToForgetMove(u8 taskId) +static void Task_ShowSummaryScreenToForgetMove(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -4914,12 +4916,12 @@ void Task_ShowSummaryScreenToForgetMove(u8 taskId) } } -void CB2_ShowSummaryScreenToForgetMove(void) +static void CB2_ShowSummaryScreenToForgetMove(void) { ShowSelectMovePokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuWhileLearningMove, gPartyMenu.data1); } -void CB2_ReturnToPartyMenuWhileLearningMove(void) +static void CB2_ReturnToPartyMenuWhileLearningMove(void) { u8 moveIdx = GetMoveSlotToReplace(); u16 move; @@ -4938,7 +4940,7 @@ void CB2_ReturnToPartyMenuWhileLearningMove(void) } } -void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId) +static void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId) { if (!gPaletteFade.active) { @@ -4949,12 +4951,12 @@ void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId) } } -void sub_8125F4C(u8 taskId, UNUSED TaskFunc func) +static void sub_8125F4C(u8 taskId, UNUSED TaskFunc func) { sub_8125F5C(taskId); } -void sub_8125F5C(u8 taskId) +static void sub_8125F5C(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u8 moveIdx = GetMoveSlotToReplace(); @@ -4968,7 +4970,7 @@ void sub_8125F5C(u8 taskId) Task_LearnedMove(taskId); } -void DisplayPartyMenuForgotMoveMessage(u8 taskId) +static void DisplayPartyMenuForgotMoveMessage(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 move = GetMonData(mon, MON_DATA_MOVE1 + GetMoveSlotToReplace()); @@ -4979,7 +4981,7 @@ void DisplayPartyMenuForgotMoveMessage(u8 taskId) gTasks[taskId].func = Task_PartyMenuReplaceMove; } -void Task_PartyMenuReplaceMove(u8 taskId) +static void Task_PartyMenuReplaceMove(u8 taskId) { struct Pokemon *mon; u16 move; @@ -4994,7 +4996,7 @@ void Task_PartyMenuReplaceMove(u8 taskId) } } -void StopLearningMovePrompt(u8 taskId) +static void StopLearningMovePrompt(u8 taskId) { StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2); @@ -5003,7 +5005,7 @@ void StopLearningMovePrompt(u8 taskId) gTasks[taskId].func = Task_StopLearningMoveYesNo; } -void Task_StopLearningMoveYesNo(u8 taskId) +static void Task_StopLearningMoveYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -5012,7 +5014,7 @@ void Task_StopLearningMoveYesNo(u8 taskId) } } -void Task_HandleStopLearningMoveYesNoInput(u8 taskId) +static void Task_HandleStopLearningMoveYesNoInput(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -5046,7 +5048,7 @@ void Task_HandleStopLearningMoveYesNoInput(u8 taskId) } } -void Task_TryLearningNextMoveAfterText(u8 taskId) +static void Task_TryLearningNextMoveAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) Task_TryLearningNextMove(taskId); @@ -5077,7 +5079,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc func) } } -void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func) +static void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; struct PartyMenuInternal *ptr = sPartyMenuInternal; @@ -5101,7 +5103,7 @@ void ItemUseCB_RareCandyStep(u8 taskId, UNUSED TaskFunc func) gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; } -void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon) +static void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon) { SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[slot]); if (gSprites[sPartyMenuBoxes[slot].statusSpriteId].invisible) @@ -5114,7 +5116,7 @@ void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon) ScheduleBgCopyTilemapToVram(0); } -void Task_DisplayLevelUpStatsPg1(u8 taskId) +static void Task_DisplayLevelUpStatsPg1(u8 taskId) { if (WaitFanfare(FALSE) && IsPartyMenuTextPrinterActive() != TRUE && (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))) { @@ -5124,7 +5126,7 @@ void Task_DisplayLevelUpStatsPg1(u8 taskId) } } -void Task_DisplayLevelUpStatsPg2(u8 taskId) +static void Task_DisplayLevelUpStatsPg2(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -5134,7 +5136,7 @@ void Task_DisplayLevelUpStatsPg2(u8 taskId) } } -void DisplayLevelUpStatsPg1(u8 taskId) +static void DisplayLevelUpStatsPg1(u8 taskId) { s16 *arrayPtr = sPartyMenuInternal->data; @@ -5144,7 +5146,7 @@ void DisplayLevelUpStatsPg1(u8 taskId) ScheduleBgCopyTilemapToVram(2); } -void DisplayLevelUpStatsPg2(u8 taskId) +static void DisplayLevelUpStatsPg2(u8 taskId) { s16 *arrayPtr = sPartyMenuInternal->data; @@ -5153,7 +5155,7 @@ void DisplayLevelUpStatsPg2(u8 taskId) ScheduleBgCopyTilemapToVram(2); } -void Task_TryLearnNewMoves(u8 taskId) +static void Task_TryLearnNewMoves(u8 taskId) { u16 learnMove; @@ -5180,7 +5182,7 @@ void Task_TryLearnNewMoves(u8 taskId) } } -void Task_TryLearningNextMove(u8 taskId) +static void Task_TryLearningNextMove(u8 taskId) { u16 result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); @@ -5200,7 +5202,7 @@ void Task_TryLearningNextMove(u8 taskId) } } -void PartyMenuTryEvolution(u8 taskId) +static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0); @@ -5218,7 +5220,7 @@ void PartyMenuTryEvolution(u8 taskId) } } -void DisplayMonNeedsToReplaceMove(u8 taskId) +static void DisplayMonNeedsToReplaceMove(u8 taskId) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); @@ -5229,7 +5231,7 @@ void DisplayMonNeedsToReplaceMove(u8 taskId) gTasks[taskId].func = Task_ReplaceMoveYesNo; } -void DisplayMonLearnedMove(u8 taskId, u16 move) +static void DisplayMonLearnedMove(u8 taskId, u16 move) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); StringCopy(gStringVar2, gMoveNames[move]); @@ -5252,7 +5254,7 @@ void ItemUseCB_SacredAsh(u8 taskId, UNUSED TaskFunc func) UseSacredAsh(taskId); } -void UseSacredAsh(u8 taskId) +static void UseSacredAsh(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 hp; @@ -5282,7 +5284,7 @@ void UseSacredAsh(u8 taskId) sPartyMenuInternal->tHadEffect = TRUE; } -void Task_SacredAshLoop(u8 taskId) +static void Task_SacredAshLoop(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -5316,7 +5318,7 @@ void Task_SacredAshLoop(u8 taskId) } } -void Task_SacredAshDisplayHPRestored(u8 taskId) +static void Task_SacredAshDisplayHPRestored(u8 taskId) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); @@ -5348,7 +5350,7 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc func) } } -void sub_8126BD4(void) +static void sub_8126BD4(void) { gCB2_AfterEvolution = gPartyMenu.exitCallback; ExecuteTableBasedItemEffect_(gPartyMenu.slotId, gSpecialVar_ItemId, 0); @@ -5356,7 +5358,7 @@ void sub_8126BD4(void) RemoveBagItem(gSpecialVar_ItemId, 1); } -bool8 sub_8126C24(void) +static bool8 sub_8126C24(void) { if (!IsNationalPokedexEnabled() && GetEvolutionTargetSpecies(&gPlayerParty[gPartyMenu.slotId], 2, gSpecialVar_ItemId) > KANTO_DEX_COUNT) @@ -5429,7 +5431,7 @@ u8 GetItemEffectType(u16 item) return ITEM_EFFECT_NONE; } -void TryTutorSelectedMon(u8 taskId) +static void TryTutorSelectedMon(u8 taskId) { struct Pokemon *mon; s16 *move; @@ -5490,7 +5492,7 @@ void CB2_ChooseMonToGiveItem(void) gPartyMenu.bagItem = gSpecialVar_ItemId; } -void TryGiveItemOrMailToSelectedMon(u8 taskId) +static void TryGiveItemOrMailToSelectedMon(u8 taskId) { sPartyMenuItemId = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); if (sPartyMenuItemId == ITEM_NONE) @@ -5508,7 +5510,7 @@ void TryGiveItemOrMailToSelectedMon(u8 taskId) } } -void GiveItemOrMailToSelectedMon(u8 taskId) +static void GiveItemOrMailToSelectedMon(u8 taskId) { if (ItemIsMail(gPartyMenu.bagItem)) { @@ -5522,7 +5524,7 @@ void GiveItemOrMailToSelectedMon(u8 taskId) } } -void GiveItemToSelectedMon(u8 taskId) +static void GiveItemToSelectedMon(u8 taskId) { u16 item; @@ -5536,7 +5538,7 @@ void GiveItemToSelectedMon(u8 taskId) } } -void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId) +static void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId) { s8 slot = gPartyMenu.slotId; @@ -5547,7 +5549,7 @@ void Task_UpdateHeldItemSpriteAndClosePartyMenu(u8 taskId) } } -void CB2_WriteMailToGiveMonFromBag(void) +static void CB2_WriteMailToGiveMonFromBag(void) { u8 mail; @@ -5556,7 +5558,7 @@ void CB2_WriteMailToGiveMonFromBag(void) DoEasyChatScreen(EASY_CHAT_TYPE_MAIL, gSaveBlock1Ptr->mail[mail].words, CB2_ReturnToPartyOrBagMenuFromWritingMail); } -void CB2_ReturnToPartyOrBagMenuFromWritingMail(void) +static void CB2_ReturnToPartyOrBagMenuFromWritingMail(void) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 item = GetMonData(mon, MON_DATA_HELD_ITEM); @@ -5577,7 +5579,7 @@ void CB2_ReturnToPartyOrBagMenuFromWritingMail(void) } } -void Task_DisplayGaveMailFromBagMessage(u8 taskId) +static void Task_DisplayGaveMailFromBagMessage(u8 taskId) { if (!gPaletteFade.active) { @@ -5589,7 +5591,7 @@ void Task_DisplayGaveMailFromBagMessage(u8 taskId) } } -void Task_SwitchItemsFromBagYesNo(u8 taskId) +static void Task_SwitchItemsFromBagYesNo(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { @@ -5598,7 +5600,7 @@ void Task_SwitchItemsFromBagYesNo(u8 taskId) } } -void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId) +static void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId) { u16 item; @@ -5635,14 +5637,14 @@ void Task_HandleSwitchItemsFromBagYesNoInput(u8 taskId) } } -void DisplayItemMustBeRemovedFirstMessage(u8 taskId) +static void DisplayItemMustBeRemovedFirstMessage(u8 taskId) { DisplayPartyMenuMessage(gText_RemoveMailBeforeItem, TRUE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; } -void RemoveItemToGiveFromBag(u16 item) +static void RemoveItemToGiveFromBag(u16 item) { if (gPartyMenu.action == PARTY_ACTION_GIVE_PC_ITEM) // Unused, never occurs RemovePCItem(item, 1); @@ -5652,7 +5654,7 @@ void RemoveItemToGiveFromBag(u16 item) // Returns FALSE if there was no space to return the item // but there always should be, and the return is ignored in all uses -bool8 ReturnGiveItemToBagOrPC(u16 item) +static bool8 ReturnGiveItemToBagOrPC(u16 item) { if (gPartyMenu.action == PARTY_ACTION_GIVE_ITEM) return AddBagItem(item, 1); @@ -5665,7 +5667,7 @@ void ChooseMonToGiveMailFromMailbox(void) InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_GIVE_MAILBOX_MAIL, FALSE, PARTY_MSG_GIVE_TO_WHICH_MON, Task_HandleChooseMonInput, Mailbox_ReturnToMailListAfterDeposit); } -void TryGiveMailToSelectedMon(u8 taskId) +static void TryGiveMailToSelectedMon(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; struct MailStruct *mail; @@ -5686,11 +5688,11 @@ void TryGiveMailToSelectedMon(u8 taskId) gTasks[taskId].func = Task_UpdateHeldItemSpriteAndClosePartyMenu; } -void InitChooseHalfPartyForBattle(u8 maxBattlers) +void InitChooseHalfPartyForBattle(u8 a1) { ClearSelectedPartyOrder(); InitPartyMenu(PARTY_MENU_TYPE_CHOOSE_HALF, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, gMain.savedCallback); - gPartyMenu.unk_8_6 = maxBattlers; + gPartyMenu.unk_8_6 = a1; gPartyMenu.task = Task_ValidateChosenHalfParty; } @@ -5699,7 +5701,7 @@ void ClearSelectedPartyOrder(void) memset(gSelectedOrderFromParty, 0, sizeof(gSelectedOrderFromParty)); } -u8 GetPartySlotEntryStatus(s8 slot) +static u8 GetPartySlotEntryStatus(s8 slot) { if (GetBattleEntryEligibility(&gPlayerParty[slot]) == FALSE) return 2; @@ -5709,7 +5711,7 @@ u8 GetPartySlotEntryStatus(s8 slot) } #ifdef NONMATCHING -bool8 GetBattleEntryEligibility(struct Pokemon *mon) +static bool8 GetBattleEntryEligibility(struct Pokemon *mon) { u16 species; u16 i = 0; @@ -5744,7 +5746,7 @@ bool8 GetBattleEntryEligibility(struct Pokemon *mon) } #else NAKED -bool8 GetBattleEntryEligibility(struct Pokemon *mon) +static bool8 GetBattleEntryEligibility(struct Pokemon *mon) { asm_unified("push {r4,r5,lr}\n\ adds r4, r0, 0\n\ @@ -5832,7 +5834,7 @@ bool8 GetBattleEntryEligibility(struct Pokemon *mon) } #endif -u8 CheckBattleEntriesAndGetMessage(void) +static u8 CheckBattleEntriesAndGetMessage(void) { u8 i, j; struct Pokemon *party = gPlayerParty; @@ -5864,7 +5866,7 @@ u8 CheckBattleEntriesAndGetMessage(void) return 0xFF; } -bool8 HasPartySlotAlreadyBeenSelected(u8 slot) +static bool8 HasPartySlotAlreadyBeenSelected(u8 slot) { u8 i; @@ -5874,7 +5876,7 @@ bool8 HasPartySlotAlreadyBeenSelected(u8 slot) return FALSE; } -void Task_ValidateChosenHalfParty(u8 taskId) +static void Task_ValidateChosenHalfParty(u8 taskId) { u8 msgId = CheckBattleEntriesAndGetMessage(); @@ -5900,7 +5902,7 @@ void Task_ValidateChosenHalfParty(u8 taskId) } } -void Task_ContinueChoosingHalfParty(u8 taskId) +static void Task_ContinueChoosingHalfParty(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -5951,7 +5953,7 @@ void ChooseMonForWirelessMinigame(void) InitPartyMenu(PARTY_MENU_TYPE_MINIGAME, PARTY_LAYOUT_SINGLE, PARTY_ACTION_MINIGAME, FALSE, PARTY_MSG_CHOOSE_MON_OR_CANCEL, Task_HandleChooseMonInput, CB2_ReturnToFieldContinueScriptPlayMapMusic); } -u8 GetPartyLayoutFromBattleType(void) +static u8 GetPartyLayoutFromBattleType(void) { if (IsDoubleBattle() == FALSE) return PARTY_LAYOUT_SINGLE; @@ -6034,7 +6036,7 @@ void sub_81279E0(void) UpdatePartyToBattleOrder(); } -u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon) +static u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon) { if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) return ACTIONS_SUMMARY_ONLY; @@ -6044,7 +6046,7 @@ u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon) return ACTIONS_SHIFT; } -bool8 TrySwitchInPokemon(void) +static bool8 TrySwitchInPokemon(void) { u8 slot = GetCursorSelectionMonId(); u8 newSlot; @@ -6109,7 +6111,7 @@ void BufferBattlePartyCurrentOrder(void) BufferBattlePartyOrder(gBattlePartyCurrentOrder, GetPlayerFlankId()); } -void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) +static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) { u8 partyIds[PARTY_SIZE]; s32 i, j; @@ -6169,7 +6171,7 @@ void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId) } // when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above -void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId) +static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId) { u8 partyIndexes[PARTY_SIZE]; s32 i, j; @@ -6247,7 +6249,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2) for (i = j = 0; i < 3; ++j, ++i) { partyIds[j] = partyBattleOrder[i] >> 4; - j++; + ++j; partyIds[j] = partyBattleOrder[i] & 0xF; } partyIdBuffer = partyIds[slot2]; @@ -6270,7 +6272,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2) } } -u8 GetPartyIdFromBattleSlot(u8 slot) +static u8 GetPartyIdFromBattleSlot(u8 slot) { u8 modResult = slot & 1; u8 retVal; @@ -6283,7 +6285,7 @@ u8 GetPartyIdFromBattleSlot(u8 slot) return retVal; } -void SetPartyIdAtBattleSlot(u8 slot, u8 setVal) +static void SetPartyIdAtBattleSlot(u8 slot, u8 setVal) { bool32 modResult = slot & 1; @@ -6322,7 +6324,7 @@ u8 GetPartyIdFromBattlePartyId(u8 battlePartyId) return 0; } -void UpdatePartyToBattleOrder(void) +static void UpdatePartyToBattleOrder(void) { struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty)); u8 i; @@ -6333,7 +6335,7 @@ void UpdatePartyToBattleOrder(void) Free(partyBuffer); } -void UpdatePartyToFieldOrder(void) +static void UpdatePartyToFieldOrder(void) { struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty)); u8 i; @@ -6345,7 +6347,7 @@ void UpdatePartyToFieldOrder(void) } // not used -void SwitchAliveMonIntoLeadSlot(void) +static void SwitchAliveMonIntoLeadSlot(void) { u8 i; struct Pokemon *mon; @@ -6364,7 +6366,7 @@ void SwitchAliveMonIntoLeadSlot(void) } } -void CB2_SetUpExitToBattleScreen(void) +static void CB2_SetUpExitToBattleScreen(void) { CB2_SetUpReshowBattleScreenAfterMenu(); SetMainCallback2(SetCB2ToReshowScreenAfterMenu); @@ -6377,7 +6379,7 @@ void ShowPartyMenuToShowcaseMultiBattleParty(void) #define tXPos data[0] -void Task_InitMultiPartnerPartySlideIn(u8 taskId) +static void Task_InitMultiPartnerPartySlideIn(u8 taskId) { // The first slide step also sets the sprites offscreen gTasks[taskId].tXPos = 256; @@ -6386,7 +6388,7 @@ void Task_InitMultiPartnerPartySlideIn(u8 taskId) gTasks[taskId].func = Task_MultiPartnerPartySlideIn; } -void Task_MultiPartnerPartySlideIn(u8 taskId) +static void Task_MultiPartnerPartySlideIn(u8 taskId) { s16 *data = gTasks[taskId].data; u8 i; @@ -6408,7 +6410,7 @@ void Task_MultiPartnerPartySlideIn(u8 taskId) } } -void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId) +static void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -6417,13 +6419,13 @@ void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId) Task_ClosePartyMenu(taskId); } -void MoveMultiPartyMenuBoxSprite(u8 spriteId, s16 x) +static void MoveMultiPartyMenuBoxSprite(u8 spriteId, s16 x) { if (x >= 0) gSprites[spriteId].pos2.x = x; } -void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId) +static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId) { s16 *data = gTasks[taskId].data; u8 i; @@ -6455,14 +6457,14 @@ void ChoosePartyMonByMenuType(u8 menuType) InitPartyMenu(menuType, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_AND_CLOSE, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToField); } -bool8 CB2_FadeFromPartyMenu(void) +static bool8 CB2_FadeFromPartyMenu(void) { sub_807DC00(); CreateTask(Task_PartyMenuWaitForFade, 10); return TRUE; } -void Task_PartyMenuWaitForFade(u8 taskId) +static void Task_PartyMenuWaitForFade(u8 taskId) { if (IsWeatherNotFadingIn()) { From 0ca414959b799af53da0926901a0ebe64347a152 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 09:28:43 +0800 Subject: [PATCH 8/9] resolve change requests --- include/global.h | 20 - include/list_menu.h | 12 +- src/data/pokemon/tutor_learnsets.h | 4032 ++++++++++++++-------------- src/list_menu.c | 126 +- src/party_menu.c | 24 +- sym_common.txt | 2 + 6 files changed, 2099 insertions(+), 2117 deletions(-) diff --git a/include/global.h b/include/global.h index 3d6049d64..8e5d90964 100644 --- a/include/global.h +++ b/include/global.h @@ -206,26 +206,6 @@ struct LinkBattleRecords #include "global.berry.h" #include "pokemon.h" -struct UnknownSaveBlock2Struct -{ - u8 field_0; - u8 field_1; - u8 field_2[2]; - u8 field_4[8]; - u8 field_C[16]; - u16 field_1C[6]; - u16 field_28[6]; - u8 field_34[176]; - u8 field_E4; - u8 field_E5; - u8 field_E6; - u8 field_E7; - u8 field_E8; - u8 field_E9; - u8 field_EA; - u8 field_EB; -}; // sizeof = 0xEC - struct BattleTowerRecord // record mixing { /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 diff --git a/include/list_menu.h b/include/list_menu.h index df53bb529..e688c474f 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -53,8 +53,8 @@ struct ListMenuTemplate struct ListMenu { struct ListMenuTemplate template; - u16 scrollOffset; - u16 selectedRow; + u16 cursorPos; + u16 itemsAbove; u8 unk_1C; u8 unk_1D; u8 taskId; @@ -73,12 +73,12 @@ struct ListMenuWindowRect extern struct ListMenuTemplate gMultiuseListMenuTemplate; s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); -u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); -u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow); +u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); +u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove); s32 ListMenu_ProcessInput(u8 listTaskId); -void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +void DestroyListMenuTask(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove); void RedrawListMenu(u8 listTaskId); -void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow); +void ListMenuGetScrollAndRow(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove); u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h index afd3814a5..5396c1ecc 100644 --- a/src/data/pokemon/tutor_learnsets.h +++ b/src/data/pokemon/tutor_learnsets.h @@ -24,2790 +24,2790 @@ static const u16 sTutorLearnsets[] = [SPECIES_NONE] = 0, [SPECIES_BULBASAUR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_IVYSAUR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VENUSAUR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHARMANDER] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHARMELEON] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHARIZARD] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SQUIRTLE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WARTORTLE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BLASTOISE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CATERPIE] = 0, [SPECIES_METAPOD] = 0, [SPECIES_BUTTERFREE] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WEEDLE] = 0, [SPECIES_KAKUNA] = 0, [SPECIES_BEEDRILL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PIDGEY] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PIDGEOTTO] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PIDGEOT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RATTATA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RATICATE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SPEAROW] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FEAROW] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_EKANS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARBOK] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PIKACHU] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RAICHU] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SANDSHREW] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SANDSLASH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDORAN_F] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDORINA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDOQUEEN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDORAN_M] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDORINO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NIDOKING] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLEFAIRY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLEFABLE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VULPIX] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NINETALES] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_JIGGLYPUFF] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WIGGLYTUFF] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ZUBAT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GOLBAT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ODDISH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GLOOM] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VILEPLUME] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PARAS] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PARASECT] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VENONAT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VENOMOTH] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DIGLETT] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DUGTRIO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEOWTH] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PERSIAN] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PSYDUCK] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GOLDUCK] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MANKEY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PRIMEAPE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GROWLITHE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARCANINE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_POLIWAG] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_POLIWHIRL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_POLIWRATH] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ABRA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KADABRA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ALAKAZAM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MACHOP] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MACHOKE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MACHAMP] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BELLSPROUT] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WEEPINBELL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VICTREEBEL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TENTACOOL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TENTACRUEL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GEODUDE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GRAVELER] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GOLEM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PONYTA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RAPIDASH] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLOWPOKE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLOWBRO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGNEMITE] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGNETON] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FARFETCHD] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DODUO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DODRIO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEEL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DEWGONG] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GRIMER] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MUK] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHELLDER] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLOYSTER] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GASTLY] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HAUNTER] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GENGAR] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ONIX] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DROWZEE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HYPNO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KRABBY] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KINGLER] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VOLTORB] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ELECTRODE] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_EXEGGCUTE] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_EXEGGUTOR] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CUBONE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAROWAK] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HITMONLEE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HITMONCHAN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LICKITUNG] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KOFFING] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WEEZING] = TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RHYHORN] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RHYDON] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHANSEY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TANGELA] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KANGASKHAN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HORSEA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEADRA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GOLDEEN] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEAKING] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_STARYU] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_STARMIE] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MR_MIME] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SCYTHER] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_JYNX] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ELECTABUZZ] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGMAR] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PINSIR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TAUROS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGIKARP] = 0, [SPECIES_GYARADOS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LAPRAS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DITTO] = 0, [SPECIES_EEVEE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VAPOREON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_JOLTEON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FLAREON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PORYGON] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_OMANYTE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_OMASTAR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KABUTO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KABUTOPS] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AERODACTYL] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SNORLAX] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARTICUNO] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ZAPDOS] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MOLTRES] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DRATINI] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DRAGONAIR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DRAGONITE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEWTWO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEW] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHIKORITA] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BAYLEEF] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEGANIUM] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CYNDAQUIL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_QUILAVA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TYPHLOSION] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TOTODILE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CROCONAW] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FERALIGATR] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SENTRET] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FURRET] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HOOTHOOT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NOCTOWL] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LEDYBA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LEDIAN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SPINARAK] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARIADOS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CROBAT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHINCHOU] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LANTURN] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PICHU] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLEFFA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_IGGLYBUFF] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TOGEPI] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TOGETIC] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NATU] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_XATU] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAREEP] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FLAAFFY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AMPHAROS] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BELLOSSOM] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MARILL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AZUMARILL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SUDOWOODO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_POLITOED] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HOPPIP] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SKIPLOOM] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_JUMPLUFF] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AIPOM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SUNKERN] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SUNFLORA] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_YANMA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WOOPER] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_QUAGSIRE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ESPEON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_UMBREON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MURKROW] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLOWKING] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MISDREAVUS] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_UNOWN] = 0, [SPECIES_WOBBUFFET] = 0, [SPECIES_GIRAFARIG] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PINECO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FORRETRESS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DUNSPARCE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GLIGAR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_STEELIX] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SNUBBULL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GRANBULL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_QWILFISH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SCIZOR] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHUCKLE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HERACROSS] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SNEASEL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TEDDIURSA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_URSARING] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLUGMA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGCARGO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SWINUB] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PILOSWINE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CORSOLA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_REMORAID] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_OCTILLERY] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DELIBIRD] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MANTINE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SKARMORY] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HOUNDOUR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HOUNDOOM] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KINGDRA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PHANPY] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DONPHAN] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PORYGON2] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_STANTLER] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SMEARGLE] = 0, [SPECIES_TYROGUE] = TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HITMONTOP] = TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SMOOCHUM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ELEKID] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAGBY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MILTANK] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BLISSEY] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SOFT_BOILED) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RAIKOU] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ENTEI] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SUICUNE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LARVITAR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PUPITAR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TYRANITAR] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LUGIA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HO_OH] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CELEBI] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TREECKO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GROVYLE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SCEPTILE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TORCHIC] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_COMBUSKEN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BLAZIKEN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MUDKIP] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MARSHTOMP] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SWAMPERT] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_POOCHYENA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MIGHTYENA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ZIGZAGOON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LINOONE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WURMPLE] = 0, [SPECIES_SILCOON] = 0, [SPECIES_BEAUTIFLY] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CASCOON] = 0, [SPECIES_DUSTOX] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LOTAD] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LOMBRE] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LUDICOLO] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEEDOT] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NUZLEAF] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHIFTRY] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NINCADA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NINJASK] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHEDINJA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TAILLOW] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SWELLOW] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHROOMISH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BRELOOM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SPINDA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WINGULL] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PELIPPER] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SURSKIT] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MASQUERAIN] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WAILMER] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WAILORD] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SKITTY] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DELCATTY] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KECLEON] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BALTOY] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLAYDOL] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NOSEPASS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TORKOAL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SABLEYE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BARBOACH] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WHISCASH] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LUVDISC] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CORPHISH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CRAWDAUNT] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FEEBAS] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MILOTIC] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CARVANHA] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHARPEDO] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TRAPINCH] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VIBRAVA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_FLYGON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAKUHITA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HARIYAMA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ELECTRIKE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MANECTRIC] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_NUMEL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CAMERUPT] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SPHEAL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEALEO] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WALREIN] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CACNEA] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CACTURNE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SNORUNT] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GLALIE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LUNATONE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SOLROCK] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AZURILL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SPOINK] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GRUMPIG] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_PLUSLE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MINUN] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MAWILE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEDITITE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_MEDICHAM] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SWABLU] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ALTARIA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WYNAUT] = 0, [SPECIES_DUSKULL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DUSCLOPS] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ROSELIA] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLAKOTH] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VIGOROTH] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SLAKING] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GULPIN] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SWALOT] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_TROPIUS] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_WHISMUR] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LOUDRED] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_EXPLOUD] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CLAMPERL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_HUNTAIL] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GOREBYSS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ABSOL] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHUPPET] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BANETTE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SEVIPER] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ZANGOOSE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RELICANTH] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LAIRON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_AGGRON] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CASTFORM] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_VOLBEAT] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ILLUMISE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LILEEP] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CRADILY] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ANORITH] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_ARMALDO] = TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RALTS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KIRLIA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GARDEVOIR] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BAGON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SHELGON] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_SALAMENCE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_BELDUM] = 0, [SPECIES_METANG] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_METAGROSS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_REGIROCK] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_REGICE] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_REGISTEEL] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_EXPLOSION) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_KYOGRE] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_GROUDON] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_SWORDS_DANCE) + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_RAYQUAZA] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LATIAS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_LATIOS] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_JIRACHI] = TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_METRONOME) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_DEOXYS] = TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_THUNDER_WAVE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MEGA_KICK) + | TUTOR(MOVE_BODY_SLAM) + | TUTOR(MOVE_DOUBLE_EDGE) + | TUTOR(MOVE_COUNTER) + | TUTOR(MOVE_SEISMIC_TOSS) + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_THUNDER_WAVE) + | TUTOR(MOVE_ROCK_SLIDE) + | TUTOR(MOVE_SUBSTITUTE), [SPECIES_CHIMECHO] = TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SUBSTITUTE), + | TUTOR(MOVE_MIMIC) + | TUTOR(MOVE_DREAM_EATER) + | TUTOR(MOVE_SUBSTITUTE), }; diff --git a/src/list_menu.c b/src/list_menu.c index d25eb3faf..484da31ad 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -70,7 +70,7 @@ static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0}; struct ListMenuOverride gListMenuOverride; struct ListMenuTemplate gMultiuseListMenuTemplate; -static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); +static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown); static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count); static void ListMenuDrawCursor(struct ListMenu *list); @@ -172,18 +172,18 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str return LIST_NOTHING_CHOSEN; } -u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow) +u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) { - u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow); + u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove); PutWindowTilemap(listMenuTemplate->windowId); CopyWindowToVram(listMenuTemplate->windowId, 2); return taskId; } -u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow) +u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove) { s32 i; - u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow); + u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove); for (i = 0; rect[i].palNum != 0xFF; i++) PutWindowRectTilemapOverridePalette(listMenuTemplate->windowId, rect[i].x, rect[i].y, rect[i].width, rect[i].height, rect[i].palNum); @@ -197,7 +197,7 @@ s32 ListMenu_ProcessInput(u8 listTaskId) if (JOY_NEW(A_BUTTON)) { - return list->template.items[list->scrollOffset + list->selectedRow].index; + return list->template.items[list->cursorPos + list->itemsAbove].index; } else if (JOY_NEW(B_BUTTON)) { @@ -249,14 +249,14 @@ s32 ListMenu_ProcessInput(u8 listTaskId) } } -void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow) +void DestroyListMenuTask(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove) { struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; - if (scrollOffset != NULL) - *scrollOffset = list->scrollOffset; - if (selectedRow != NULL) - *selectedRow = list->selectedRow; + if (cursorPos != NULL) + *cursorPos = list->cursorPos; + if (itemsAbove != NULL) + *itemsAbove = list->itemsAbove; if (list->taskId != TASK_NONE) ListMenuRemoveCursorObject(list->taskId, list->template.cursorKind - 2); @@ -269,7 +269,7 @@ void RedrawListMenu(u8 listTaskId) struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); - ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); ListMenuDrawCursor(list); CopyWindowToVram(list->template.windowId, 2); } @@ -291,13 +291,13 @@ static void ChangeListMenuCoords(u8 listTaskId, u8 x, u8 y) SetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP, y); } -static s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset, u32 selectedRow, u16 keys, u16 *newScrollOffset, u16 *newSelectedRow) +static s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 cursorPos, u32 itemsAbove, u16 keys, u16 *newCursorPos, u16 *newItemsAbove) { struct ListMenu list; list.template = *template; - list.scrollOffset = scrollOffset; - list.selectedRow = selectedRow; + list.cursorPos = cursorPos; + list.itemsAbove = itemsAbove; list.unk_1C = 0; list.unk_1D = 0; if (keys == DPAD_UP) @@ -305,10 +305,10 @@ static s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset if (keys == DPAD_DOWN) ListMenuChangeSelection(&list, FALSE, 1, TRUE); - if (newScrollOffset != NULL) - *newScrollOffset = list.scrollOffset; - if (newSelectedRow != NULL) - *newSelectedRow = list.selectedRow; + if (newCursorPos != NULL) + *newCursorPos = list.cursorPos; + if (newItemsAbove != NULL) + *newItemsAbove = list.itemsAbove; return LIST_NOTHING_CHOSEN; } @@ -317,17 +317,17 @@ static void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId) struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; if (arrayId != NULL) - *arrayId = list->scrollOffset + list->selectedRow; + *arrayId = list->cursorPos + list->itemsAbove; } -void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow) +void ListMenuGetScrollAndRow(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove) { struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; - if (scrollOffset != NULL) - *scrollOffset = list->scrollOffset; - if (selectedRow != NULL) - *selectedRow = list->selectedRow; + if (cursorPos != NULL) + *cursorPos = list->cursorPos; + if (itemsAbove != NULL) + *itemsAbove = list->itemsAbove; } u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId) @@ -335,17 +335,17 @@ u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId) struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding; - return list->selectedRow * yMultiplier + list->template.upText_Y; + return list->itemsAbove * yMultiplier + list->template.upText_Y; } -static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow) +static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) { u8 listTaskId = CreateTask(ListMenuDummyTask, 0); struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; list->template = *listMenuTemplate; - list->scrollOffset = scrollOffset; - list->selectedRow = selectedRow; + list->cursorPos = cursorPos; + list->itemsAbove = itemsAbove; list->unk_1C = 0; list->unk_1D = 0; list->taskId = TASK_NONE; @@ -359,7 +359,7 @@ static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 sc if (list->template.totalItems < list->template.maxShowed) list->template.maxShowed = list->template.totalItems; FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); - ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); ListMenuDrawCursor(list); ListMenuCallSelectionChangedCallback(list, TRUE); @@ -410,7 +410,7 @@ static void ListMenuDrawCursor(struct ListMenu *list) { u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding; u8 x = list->template.cursor_X; - u8 y = list->selectedRow * yMultiplier + list->template.upText_Y; + u8 y = list->itemsAbove * yMultiplier + list->template.upText_Y; switch (list->template.cursorKind) { @@ -446,7 +446,7 @@ static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind) return ListMenuAddCursorObjectInternal(&cursor, cursorKind); } -static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow) +static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 itemsAbove) { u8 cursorKind = list->template.cursorKind; if (cursorKind == 0) @@ -457,7 +457,7 @@ static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow) FillWindowPixelRect(list->template.windowId, PIXEL_FILL(list->template.fillValue), list->template.cursor_X, - selectedRow * yMultiplier + list->template.upText_Y, + itemsAbove * yMultiplier + list->template.upText_Y, width, height); } @@ -465,8 +465,8 @@ static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow) static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, bool8 movingDown) { - u16 selectedRow = list->selectedRow; - u16 scrollOffset = list->scrollOffset; + u16 itemsAbove = list->itemsAbove; + u16 cursorPos = list->cursorPos; u16 newRow; u32 newScroll; @@ -477,14 +477,14 @@ static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, b else newRow = list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1; - if (scrollOffset == 0) + if (cursorPos == 0) { - while (selectedRow != 0) + while (itemsAbove != 0) { - selectedRow--; - if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER) + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].index != LIST_HEADER) { - list->selectedRow = selectedRow; + list->itemsAbove = itemsAbove; return 1; } } @@ -492,16 +492,16 @@ static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, b } else { - while (selectedRow > newRow) + while (itemsAbove > newRow) { - selectedRow--; - if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER) + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].index != LIST_HEADER) { - list->selectedRow = selectedRow; + list->itemsAbove = itemsAbove; return 1; } } - newScroll = scrollOffset - 1; + newScroll = cursorPos - 1; } } else @@ -511,14 +511,14 @@ static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, b else newRow = ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)); - if (scrollOffset == list->template.totalItems - list->template.maxShowed) + if (cursorPos == list->template.totalItems - list->template.maxShowed) { - while (selectedRow < list->template.maxShowed - 1) + while (itemsAbove < list->template.maxShowed - 1) { - selectedRow++; - if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER) + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].index != LIST_HEADER) { - list->selectedRow = selectedRow; + list->itemsAbove = itemsAbove; return 1; } } @@ -526,20 +526,20 @@ static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, b } else { - while (selectedRow < newRow) + while (itemsAbove < newRow) { - selectedRow++; - if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER) + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].index != LIST_HEADER) { - list->selectedRow = selectedRow; + list->itemsAbove = itemsAbove; return 1; } } - newScroll = scrollOffset + 1; + newScroll = cursorPos + 1; } } - list->selectedRow = newRow; - list->scrollOffset = newScroll; + list->itemsAbove = newRow; + list->cursorPos = newScroll; return 2; } @@ -548,7 +548,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) if (count >= list->template.maxShowed) { FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); - ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); } else { @@ -559,7 +559,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) u16 y, width, height; ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue)); - ListMenuPrintEntries(list, list->scrollOffset, 0, count); + ListMenuPrintEntries(list, list->cursorPos, 0, count); y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y; width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8; @@ -573,7 +573,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) u16 width; ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue)); - ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count); + ListMenuPrintEntries(list, list->cursorPos + (list->template.maxShowed - count), list->template.maxShowed - count, count); width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8; FillWindowPixelRect(list->template.windowId, @@ -588,7 +588,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn u16 oldSelectedRow; u8 selectionChange, i, cursorCount; - oldSelectedRow = list->selectedRow; + oldSelectedRow = list->itemsAbove; cursorCount = 0; selectionChange = 0; for (i = 0; i < count; i++) @@ -602,7 +602,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn break; cursorCount++; } - while (list->template.items[list->scrollOffset + list->selectedRow].index == LIST_HEADER); + while (list->template.items[list->cursorPos + list->itemsAbove].index == LIST_HEADER); } if (updateCursorAndCallCallback) @@ -634,7 +634,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit) { if (list->template.moveCursorFunc != NULL) - list->template.moveCursorFunc(list->template.items[list->scrollOffset + list->selectedRow].index, onInit, list); + list->template.moveCursorFunc(list->template.items[list->cursorPos + list->itemsAbove].index, onInit, list); } void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal) diff --git a/src/party_menu.c b/src/party_menu.c index 6f543ca9c..e981bccf3 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1159,13 +1159,13 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) } else { - switch (gPartyMenu.action - 3) + switch (gPartyMenu.action) { - case PARTY_ACTION_SOFTBOILED - 3: + case PARTY_ACTION_SOFTBOILED: if (IsSelectedMonNotEgg((u8 *)slotPtr)) Task_TryUseSoftboiledOnPartyMon(taskId); break; - case PARTY_ACTION_USE_ITEM - 3: + case PARTY_ACTION_USE_ITEM: if (IsSelectedMonNotEgg((u8 *)slotPtr)) { if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) @@ -1173,46 +1173,46 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr) gItemUseCB(taskId, Task_ClosePartyMenuAfterText); } break; - case PARTY_ACTION_MOVE_TUTOR - 3: + case PARTY_ACTION_MOVE_TUTOR: if (IsSelectedMonNotEgg((u8 *)slotPtr)) { PlaySE(SE_SELECT); TryTutorSelectedMon(taskId); } break; - case PARTY_ACTION_GIVE_MAILBOX_MAIL - 3: + case PARTY_ACTION_GIVE_MAILBOX_MAIL: if (IsSelectedMonNotEgg((u8 *)slotPtr)) { PlaySE(SE_SELECT); TryGiveMailToSelectedMon(taskId); } break; - case PARTY_ACTION_GIVE_ITEM - 3: - case PARTY_ACTION_GIVE_PC_ITEM - 3: + case PARTY_ACTION_GIVE_ITEM: + case PARTY_ACTION_GIVE_PC_ITEM: if (IsSelectedMonNotEgg((u8 *)slotPtr)) { PlaySE(SE_SELECT); TryGiveItemOrMailToSelectedMon(taskId); } break; - case PARTY_ACTION_SWITCH - 3: + case PARTY_ACTION_SWITCH: PlaySE(SE_SELECT); SwitchSelectedMons(taskId); break; - case PARTY_ACTION_CHOOSE_AND_CLOSE - 3: + case PARTY_ACTION_CHOOSE_AND_CLOSE: PlaySE(SE_SELECT); gSpecialVar_0x8004 = *slotPtr; if (gPartyMenu.menuType == PARTY_MENU_TYPE_MOVE_RELEARNER) gSpecialVar_0x8005 = GetNumberOfRelearnableMoves(&gPlayerParty[*slotPtr]); Task_ClosePartyMenu(taskId); break; - case PARTY_ACTION_MINIGAME - 3: + case PARTY_ACTION_MINIGAME: if (IsSelectedMonNotEgg((u8 *)slotPtr)) TryEnterMonForMinigame(taskId, (u8)*slotPtr); break; default: - case PARTY_ACTION_ABILITY_PREVENTS - 3: - case PARTY_ACTION_SWITCHING - 3: + case PARTY_ACTION_ABILITY_PREVENTS: + case PARTY_ACTION_SWITCHING: PlaySE(SE_SELECT); Task_TryCreateSelectionWindow(taskId); break; diff --git a/sym_common.txt b/sym_common.txt index 3fcbce1e0..9a64a9d0f 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -180,7 +180,9 @@ gUnknown_3005E90: @ 3005E90 gUnknown_3005E94: @ 3005E94 .space 0x4 + .align 2 .include "party_menu.o" + .align 2 .include "help_system_812B1E0.o" .align 4 .include "fame_checker.o" From 2b2dfa7e49a0d28983a4e516ca44aee8cb7c66bb Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 14:36:15 +0800 Subject: [PATCH 9/9] GetBattleEntryEligibility --- src/party_menu.c | 124 ++++++----------------------------------------- 1 file changed, 15 insertions(+), 109 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index e981bccf3..399794b2d 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5710,7 +5710,6 @@ static u8 GetPartySlotEntryStatus(s8 slot) return 0; } -#ifdef NONMATCHING static bool8 GetBattleEntryEligibility(struct Pokemon *mon) { u16 species; @@ -5721,118 +5720,25 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) switch (gPartyMenu.unk_8_6) { default: - if (GetMonData(mon, MON_DATA_LEVEL) <= 30) - return TRUE; - return FALSE; + if (GetMonData(mon, MON_DATA_LEVEL) > 30) + return FALSE; + break; case 0: - if (GetMonData(mon, MON_DATA_HP) != 0) - return TRUE; - return FALSE; + if (GetMonData(mon, MON_DATA_HP) == 0) + return FALSE; + break; case 1: - if (gSaveBlock2Ptr->battleTower.battleTowerLevelType != 0 // level 100 - || GetMonData(mon, MON_DATA_LEVEL) <= 50) - { - species = GetMonData(mon, MON_DATA_SPECIES); - // Although i is always 0, the compiler still computes the offset of - // gBattleTowerBannedSpecies[i] by shifting i. - // It's also in emerald, but for whatever reason it's generated. - for (; gBattleTowerBannedSpecies[i] != 0xFFFF; ++i) - if (gBattleTowerBannedSpecies[i] == species) - return FALSE; - return TRUE; - } - return FALSE; + if (gSaveBlock2Ptr->battleTower.battleTowerLevelType == 0 // level 50 + && GetMonData(mon, MON_DATA_LEVEL) > 50) + return FALSE; + species = GetMonData(mon, MON_DATA_SPECIES); + for (; gBattleTowerBannedSpecies[i] != 0xFFFF; ++i) + if (gBattleTowerBannedSpecies[i] == species) + return FALSE; + break; } + return TRUE; } -#else -NAKED -static bool8 GetBattleEntryEligibility(struct Pokemon *mon) -{ - asm_unified("push {r4,r5,lr}\n\ - adds r4, r0, 0\n\ - movs r5, 0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _0812757A\n\ - ldr r0, _08127580 @ =gPartyMenu\n\ - ldrb r0, [r0, 0x8]\n\ - lsrs r1, r0, 6\n\ - cmp r1, 0\n\ - beq _08127584\n\ - cmp r1, 0x1\n\ - beq _08127592\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x1E\n\ - bls _081275E0\n\ - _0812757A:\n\ - movs r0, 0\n\ - b _081275E2\n\ - .align 2, 0\n\ - _08127580: .4byte gPartyMenu\n\ - _08127584:\n\ - adds r0, r4, 0\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _081275E0\n\ - b _0812757A\n\ - _08127592:\n\ - ldr r0, _081275E8 @ =gSaveBlock2Ptr\n\ - ldr r0, [r0]\n\ - ldr r2, _081275EC @ =0x0000055c\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _081275AE\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x32\n\ - bhi _0812757A\n\ - _081275AE:\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - ldr r3, _081275F0 @ =gBattleTowerBannedSpecies\n\ - lsls r1, r5, 1\n\ - adds r0, r1, r3\n\ - ldrh r0, [r0]\n\ - ldr r2, _081275F4 @ =0x0000ffff\n\ - cmp r0, r2\n\ - beq _081275E0\n\ - _081275C8:\n\ - adds r0, r1, r3\n\ - ldrh r0, [r0]\n\ - cmp r0, r4\n\ - beq _0812757A\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsls r1, r5, 1\n\ - adds r0, r1, r3\n\ - ldrh r0, [r0]\n\ - cmp r0, r2\n\ - bne _081275C8\n\ - _081275E0:\n\ - movs r0, 0x1\n\ - _081275E2:\n\ - pop {r4,r5}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ - _081275E8: .4byte gSaveBlock2Ptr\n\ - _081275EC: .4byte 0x0000055c\n\ - _081275F0: .4byte gBattleTowerBannedSpecies\n\ - _081275F4: .4byte 0x0000ffff\n\ - "); -} -#endif static u8 CheckBattleEntriesAndGetMessage(void) {