From a4e7a359606b276bc595f0273ccc549c766d715b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 20 Nov 2019 11:23:34 +0800 Subject: 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 | 5454 +++++++++++++++++------------------ 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, 3089 insertions(+), 3092 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 - - thumb_func_start sub_8123388 -sub_8123388: @ 8123388 +_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 @@ -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 -- cgit v1.2.3 From 1d96920da05f7b5c25aef42931576f3e61099f66 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 21 Nov 2019 10:48:08 +0800 Subject: 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 graphics/interface/party_menu_cancel_button.bin | 2 + graphics/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 000000000..15df00440 Binary files /dev/null and b/graphics/interface/hold_icons.png differ diff --git a/graphics/interface/party_menu_cancel_button.bin b/graphics/interface/party_menu_cancel_button.bin new file mode 100644 index 000000000..7f11aaf4e --- /dev/null +++ b/graphics/interface/party_menu_cancel_button.bin @@ -0,0 +1,2 @@ + +            \ No newline at end of file diff --git a/graphics/interface/party_menu_confirm_button.bin b/graphics/interface/party_menu_confirm_button.bin new file mode 100644 index 000000000..8c3c1be3d --- /dev/null +++ b/graphics/interface/party_menu_confirm_button.bin @@ -0,0 +1 @@ +#$ \ No newline at end of file diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h new file mode 100644 index 000000000..f8f77f466 --- /dev/null +++ b/include/constants/party_menu.h @@ -0,0 +1,114 @@ +#ifndef GUARD_CONSTANTS_PARTY_MENU_H +#define GUARD_CONSTANTS_PARTY_MENU_H + +#define AILMENT_NONE 0 +#define AILMENT_PSN 1 +#define AILMENT_PRZ 2 +#define AILMENT_SLP 3 +#define AILMENT_FRZ 4 +#define AILMENT_BRN 5 +#define AILMENT_PKRS 6 +#define AILMENT_FNT 7 + +#define TUTOR_MOVE_MEGA_PUNCH 0 +#define TUTOR_MOVE_SWORDS_DANCE 1 +#define TUTOR_MOVE_MEGA_KICK 2 +#define TUTOR_MOVE_BODY_SLAM 3 +#define TUTOR_MOVE_DOUBLE_EDGE 4 +#define TUTOR_MOVE_COUNTER 5 +#define TUTOR_MOVE_SEISMIC_TOSS 6 +#define TUTOR_MOVE_MIMIC 7 +#define TUTOR_MOVE_METRONOME 8 +#define TUTOR_MOVE_SOFT_BOILED 9 +#define TUTOR_MOVE_DREAM_EATER 10 +#define TUTOR_MOVE_THUNDER_WAVE 11 +#define TUTOR_MOVE_EXPLOSION 12 +#define TUTOR_MOVE_ROCK_SLIDE 13 +#define TUTOR_MOVE_SUBSTITUTE 14 +#define TUTOR_MOVE_COUNT 15 + +#define PARTY_LAYOUT_SINGLE 0 +#define PARTY_LAYOUT_DOUBLE 1 +#define PARTY_LAYOUT_MULTI 2 +#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle +#define PARTY_LAYOUT_COUNT 4 +#define KEEP_PARTY_LAYOUT 0xFF + +#define PARTY_MENU_TYPE_FIELD 0 +#define PARTY_MENU_TYPE_IN_BATTLE 1 +#define PARTY_MENU_TYPE_CONTEST 2 +#define PARTY_MENU_TYPE_CHOOSE_MON 3 +#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities +#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5 +#define PARTY_MENU_TYPE_DAYCARE 6 +#define PARTY_MENU_TYPE_MOVE_RELEARNER 7 +#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board +#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board +#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade +#define PARTY_MENU_TYPE_MINIGAME 11 +#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12 + +#define PARTY_ACTION_CHOOSE_MON 0 +#define PARTY_ACTION_SEND_OUT 1 +#define PARTY_ACTION_CANT_SWITCH 2 +#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_MAILBOX_MAIL 7 +#define PARTY_ACTION_SWITCH 8 +#define PARTY_ACTION_SWITCHING 9 +#define PARTY_ACTION_SOFTBOILED 10 +#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 + +// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu +#define PARTY_MSG_CHOOSE_MON 0 +#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1 +#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2 +#define PARTY_MSG_MOVE_TO_WHERE 3 +#define PARTY_MSG_TEACH_WHICH_MON 4 +#define PARTY_MSG_USE_ON_WHICH_MON 5 +#define PARTY_MSG_GIVE_TO_WHICH_MON 6 +#define PARTY_MSG_NOTHING_TO_CUT 7 +#define PARTY_MSG_CANT_SURF_HERE 8 +#define PARTY_MSG_ALREADY_SURFING 9 +#define PARTY_MSG_CURRENT_TOO_FAST 10 +#define PARTY_MSG_ENJOY_CYCLING 11 +#define PARTY_MSG_ALREADY_IN_USE 12 +#define PARTY_MSG_CANT_USE_HERE 13 +#define PARTY_MSG_NO_MON_FOR_BATTLE 14 +#define PARTY_MSG_CHOOSE_MON_2 15 +#define PARTY_MSG_NOT_ENOUGH_HP 16 +#define PARTY_MSG_THREE_MONS_ARE_NEEDED 17 +#define PARTY_MSG_TWO_MONS_ARE_NEEDED 18 +#define PARTY_MSG_MONS_CANT_BE_SAME 19 +#define PARTY_MSG_NO_SAME_HOLD_ITEMS 20 +#define PARTY_MSG_UNUSED 21 +#define PARTY_MSG_DO_WHAT_WITH_MON 22 +#define PARTY_MSG_RESTORE_WHICH_MOVE 23 +#define PARTY_MSG_BOOST_PP_WHICH_MOVE 24 +#define PARTY_MSG_DO_WHAT_WITH_ITEM 25 +#define PARTY_MSG_DO_WHAT_WITH_MAIL 26 +#define PARTY_MSG_NONE 127 + +// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box +#define PARTYBOX_DESC_NO_USE 0 +#define PARTYBOX_DESC_ABLE_3 1 +#define PARTYBOX_DESC_FIRST 2 +#define PARTYBOX_DESC_SECOND 3 +#define PARTYBOX_DESC_THIRD 4 +#define PARTYBOX_DESC_ABLE 5 +#define PARTYBOX_DESC_NOT_ABLE 6 +#define PARTYBOX_DESC_ABLE_2 7 +#define PARTYBOX_DESC_NOT_ABLE_2 8 +#define PARTYBOX_DESC_LEARNED 9 + +#define SELECTWINDOW_ACTIONS 0 +#define SELECTWINDOW_ITEM 1 +#define SELECTWINDOW_MAIL 2 +#define SELECTWINDOW_MOVES 3 + +#endif // GUARD_CONSTANTS_PARTY_MENU_H diff --git a/include/constants/trade.h b/include/constants/trade.h new file mode 100644 index 000000000..b1371caab --- /dev/null +++ b/include/constants/trade.h @@ -0,0 +1,118 @@ + #ifndef GUARD_CONSTANTS_TRADE_H +#define GUARD_CONSTANTS_TRADE_H + +// TODO: document trade.c and trade_scene.c with corresponding macros +// and examine if these are correct + +#define TRADE_PLAYER 0 +#define TRADE_PARTNER 1 + +#define LINK_TRADE_TIMEOUT 300 + +// In-game Trade IDs +#define INGAME_TRADE_SEEDOT 0 +#define INGAME_TRADE_PLUSLE 1 +#define INGAME_TRADE_HORSEA 2 +#define INGAME_TRADE_MEOWTH 3 + +// Flag IDs for sending link data +#define INITIATE_TRADE 1 +#define CANCEL_TRADE 2 +#define WANTS_TO_TRADE 1 +#define WANTS_TO_CANCEL 2 +#define READY_FINISH_TRADE 1 +#define FINISH_TRADE 2 + +// Return values for CanTradeSelectedMon and CanSpinTradeMon +#define CAN_TRADE_MON 0 +#define CANT_TRADE_LAST_MON 1 +#define CANT_TRADE_NATIONAL 2 +#define CANT_TRADE_EGG_YET 3 +#define CANT_TRADE_INVALID_MON 4 +#define CANT_TRADE_EGG_YET2 5 + +// Return values for CheckValidityOfTradeMons +#define PLAYER_MON_INVALID 0 +#define BOTH_MONS_VALID 1 +#define PARTNER_MON_INVALID 2 + +// Return values for GetGameProgressForLinkTrade +#define TRADE_BOTH_PLAYERS_READY 0 +#define TRADE_PLAYER_NOT_READY 1 +#define TRADE_PARTNER_NOT_READY 2 + +// Indexes for sTradeActionTexts +#define TRADE_TEXT_CANCEL 0 +#define TRADE_TEXT_CHOOSE_MON 1 +#define TRADE_TEXT_SUMMARY 2 +#define TRADE_TEXT_TRADE 3 +#define TRADE_TEXT_CANCEL_TRADE 4 +#define TRADE_TEXT_JP_QUIT 5 + +// Checked to confirm DrawTradeMenuParty has reached final state +#define DRAW_PARTY_FINISH 5 + +// Message indexes for sTradeMessages +#define TRADE_MSG_STANDBY 0 +#define TRADE_MSG_CANCELED 1 +#define TRADE_MSG_ONLY_MON1 2 +#define TRADE_MSG_ONLY_MON2 3 +#define TRADE_MSG_WAITING_FOR_FRIEND 4 +#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5 +#define TRADE_MSG_MON_CANT_BE_TRADED 6 +#define TRADE_MSG_EGG_CANT_BE_TRADED 7 +#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8 + +// IDs for QueueAction +#define QUEUE_SEND_DATA 0 +#define QUEUE_STANDBY 1 +#define QUEUE_ONLY_MON1 2 +#define QUEUE_ONLY_MON2 3 +#define QUEUE_UNUSED1 4 +#define QUEUE_UNUSED2 5 +#define QUEUE_MON_CANT_BE_TRADED 6 +#define QUEUE_EGG_CANT_BE_TRADED 7 +#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8 + +#define QUEUE_DELAY_MSG 3 +#define QUEUE_DELAY_DATA 5 + +// IDs for CallTradeMenuFunc +#define TRADEMENUFUNC_MAIN_MENU 0 +#define TRADEMENUFUNC_SELECTED_MON 1 +#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2 +#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3 +#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4 +#define TRADEMENUFUNC_UNUSED_5 5 +#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6 +#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7 +#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8 +#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10 +#define TRADEMENUFUNC_CANCEL_TRADE_1 11 +#define TRADEMENUFUNC_CANCEL_TRADE_2 12 +#define TRADEMENUFUNC_START_LINK_TRADE 13 +#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14 +#define TRADEMENUFUNC_UNUSED_15 15 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16 +#define TRADEMENUFUNC_PARTNER_MON_INVALID 17 +#define TRADEMENUFUNC_STANDBY 100 + +// Message indexes for sUnionRoomTradeMessages +#define UR_TRADE_MSG_NONE 0 +#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1 +#define UR_TRADE_MSG_NOT_EGG 2 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4 +#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5 +#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6 +#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9 + +// Return values for CanRegisterMonForTradingBoard +#define CAN_REGISTER_MON 0 +#define CANT_REGISTER_MON 1 +#define CANT_REGISTER_EGG 2 + +#endif //GUARD_CONSTANTS_TRADE_H diff --git a/include/fldeff.h b/include/fldeff.h index 690d5f953..8dcb42500 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -16,8 +16,10 @@ u8 oei_task_add(void); // flash u8 sub_80C9DCC(u8 lightLevel, u8 mapType); u8 sub_80C9D7C(u8 mapType1, u8 mapType2); +bool8 SetUpFieldMove_Flash(void); // cut +bool8 SetUpFieldMove_Cut(void); // dig bool8 SetUpFieldMove_Dig(void); @@ -43,7 +45,7 @@ bool8 SetUpFieldMove_Teleport(void); bool8 FldEff_UseTeleport(void); // softboiled -bool8 hm_prepare_dive_probably(void); +bool8 SetUpFieldMove_SoftBoiled(void); void ChooseMonForSoftboiled(u8 taskId); void sub_80E5724(u8 taskId); diff --git a/include/graphics.h b/include/graphics.h index 354339235..930201403 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3740,6 +3740,13 @@ extern const u8 gWeatherFog1Tiles[]; extern const u32 gBattleAnimFogTilemap[]; extern const u16 gUnknown_83C2CE0[]; +// party_menu +extern const u32 gPartyMenuPokeball_Gfx[]; +extern const u32 gPartyMenuPokeball_Pal[]; +extern const u32 gPartyMenuPokeballSmall_Gfx[]; +extern const u32 gStatusGfx_Icons[]; +extern const u32 gStatusPal_Icons[]; + // credits extern const u32 gCreditsPokeballBgGfxTiles[]; extern const u32 gCreditsPokeballBgGfxMap[]; diff --git a/include/party_menu.h b/include/party_menu.h index 6e96c47ee..f5b4bd827 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -3,49 +3,28 @@ #include "main.h" #include "task.h" +#include "constants/party_menu.h" -enum { - AILMENT_NONE, - AILMENT_PSN, - AILMENT_PRZ, - AILMENT_SLP, - AILMENT_FRZ, - AILMENT_BRN, - AILMENT_PKRS, - AILMENT_FNT -}; - -enum -{ - PARTY_CHOOSE_MON, - PARTY_MUST_CHOOSE_MON, - PARTY_CANT_SWITCH, - PARTY_USE_ITEM_ON, - PARTY_ABILITY_PREVENTS, - PARTY_GIVE_ITEM, -}; - -struct Struct203B0A0 +struct PartyMenu { MainCallback exitCallback; - TaskFunc unk4; - u8 unk8_0:4; - u8 mode:2; - u8 unk8_2:2; - s8 unk9; - s8 unkA; - u8 unkB; - u16 unkC; - s16 unkE; - s16 unk10; + TaskFunc task; + u8 menuType:4; + u8 layout:2; + s8 slotId; + s8 slotId2; + 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 }; -extern struct Struct203B0A0 gPartyMenu; +extern struct PartyMenu gPartyMenu; extern u8 gPartyMenuUseExitCallback; -extern u8 gUnknown_203B0C1; -extern u8 gBattlePartyCurrentOrder[3]; +extern u8 gSelectedMonPartyId; +extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; extern void (*gItemUseCB)(u8 taskId, TaskFunc func); -extern u8 gSelectedOrderFromParty[3]; +extern u8 gSelectedOrderFromParty[4]; bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); diff --git a/include/strings.h b/include/strings.h index f5dc759e6..9242c7eaa 100644 --- a/include/strings.h +++ b/include/strings.h @@ -265,6 +265,77 @@ extern const u8 gUnknown_81C6787[]; extern const u8 gUnknown_81C684B[]; extern const u8 gUnknown_81C686C[]; +// party_menu +extern const u8 gText_ChoosePokemon[]; +extern const u8 gText_ChoosePokemonCancel[]; +extern const u8 gText_ChoosePokemonConfirm[]; +extern const u8 gText_MoveToWhere[]; +extern const u8 gText_TeachWhichPokemon[]; +extern const u8 gText_UseOnWhichPokemon[]; +extern const u8 gText_GiveToWhichPokemon[]; +extern const u8 gText_NothingToCut[]; +extern const u8 gText_CantSurfHere[]; +extern const u8 gText_AlreadySurfing[]; +extern const u8 gText_CurrentIsTooFast[]; +extern const u8 gText_EnjoyCycling[]; +extern const u8 gText_InUseAlready_PM[]; +extern const u8 gText_CantUseHere[]; +extern const u8 gText_NoPokemonForBattle[]; +extern const u8 gText_ChoosePokemon2[]; +extern const u8 gText_NotEnoughHp[]; +extern const u8 gText_ThreePkmnAreNeeded[]; +extern const u8 gText_TwoPokemonAreNeeded[]; +extern const u8 gText_PokemonCantBeSame[]; +extern const u8 gText_NoIdenticalHoldItems[]; +extern const u8 gString_Dummy[]; +extern const u8 gText_DoWhatWithPokemon[]; +extern const u8 gText_RestoreWhichMove[]; +extern const u8 gText_BoostPp[]; +extern const u8 gText_DoWhatWithItem[]; +extern const u8 gText_DoWhatWithMail[]; +extern const u8 gText_NoUse[]; +extern const u8 gText_Able[]; +extern const u8 gText_First_PM[]; +extern const u8 gText_Second_PM[]; +extern const u8 gText_Third_PM[]; +extern const u8 gText_NotAble[]; +extern const u8 gText_Able3[]; +extern const u8 gText_NotAble2[]; +extern const u8 gText_Learned[]; +extern const u8 gText_Able2[]; +extern const u8 gText_CutATreeOrGrass[]; +extern const u8 gText_FlyToAKnownTown[]; +extern const u8 gText_TravelOnWater[]; +extern const u8 gText_MoveHeavyBoulders[]; +extern const u8 gText_LightUpDarkness[]; +extern const u8 gText_ShatterACrackedRock[]; +extern const u8 gText_ClimbAWaterfall[]; +extern const u8 gText_EscapeFromHere[]; +extern const u8 gText_LureWildPokemon[]; +extern const u8 gText_ShareHp[]; +extern const u8 gText_ReturnToAHealingSpot[]; +extern const u8 gText_Summary5[]; +extern const u8 gText_Switch2[]; +extern const u8 gText_Item[]; +extern const u8 gText_Take[]; +extern const u8 gText_Mail[]; +extern const u8 gText_Take2[]; +extern const u8 gText_Read2[]; +extern const u8 gText_Shift[]; +extern const u8 gText_SendOut[]; +extern const u8 gText_Enter[]; +extern const u8 gText_NoEntry[]; +extern const u8 gText_Store[]; +extern const u8 gText_Register[]; +extern const u8 gText_Trade4[]; +extern const u8 gText_NotPkmnOtherTrainerWants[]; +extern const u8 gText_ThatIsntAnEgg[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OtherTrainerCantAcceptPkmn[]; +extern const u8 gText_CantTradeWithTrainer[]; + // credits extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR @@ -390,7 +461,7 @@ extern const u8 gText_Pokedex[]; extern const u8 gTextJPDummy_Hiki[]; extern const u8 gText_Badges[]; extern const u8 gTextJPDummy_Ko[]; -extern const u8 gUnknown_841B6F4[]; +extern const u8 gText_Register[]; // mystery_gift_menu extern const u8 gText_PickOKExit[]; @@ -703,9 +774,9 @@ extern const u8 gUnknown_841E16B[]; extern const u8 gUnknown_8417094[]; extern const u8 gUnknown_841E199[]; extern const u8 gUnknown_841E1C5[]; -extern const u8 gUnknown_84170BC[]; -extern const u8 gUnknown_84170E0[]; -extern const u8 gUnknown_84170FC[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; extern const u8 gUnknown_841E09F[]; extern const u8 gEasyChatGroupName_Pokemon[]; diff --git a/include/trade.h b/include/trade.h index 257357053..3c42be3ea 100644 --- a/include/trade.h +++ b/include/trade.h @@ -1,6 +1,9 @@ #ifndef GUARD_TRADE_H #define GUARD_TRADE_H +#include "global.h" +#include "constants/trade.h" + extern struct MailStruct gLinkPartnerMail[6]; extern u8 gSelectedTradeMonPositions[2]; diff --git a/include/union_room.h b/include/union_room.h index 2e97d87f4..00354ff31 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -1,6 +1,9 @@ #ifndef GUARD_UNION_ROOM_H #define GUARD_UNION_ROOM_H +#include "global.h" +#include "librfu.h" + struct UnkStruct_Shared { struct UnkLinkRfuStruct_02022B14 field_0; diff --git a/ld_script.txt b/ld_script.txt index c23a7f105..fcf214ccb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -239,6 +239,7 @@ SECTIONS { src/quest_log.o(.text); 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); @@ -516,7 +517,7 @@ SECTIONS { src/quest_log.o(.rodata); data/link_rfu_3.o(.rodata); data/pokemon_special_anim.o(.rodata); - data/party_menu.o(.rodata); + src/party_menu.o(.rodata); data/union_room_chat.o(.rodata); src/help_system_812B1E0.o(.rodata); src/fame_checker.o(.rodata); diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index da8530c72..08c89ec1e 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -364,7 +364,7 @@ static void WaitForMonSelection(void) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { if (gPartyMenuUseExitCallback == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); + BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); OakOldManBufferExecCompleted(); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 41d81052e..baa794f70 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1314,7 +1314,7 @@ static void WaitForMonSelection(void) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { if (gPartyMenuUseExitCallback == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); + BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 59fda163b..0b71a92e8 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -715,7 +715,7 @@ static void WaitForMonSelection(void) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { if (gPartyMenuUseExitCallback == 1) - BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gBattlePartyCurrentOrder); + BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); PokedudeBufferExecCompleted(); diff --git a/src/battle_main.c b/src/battle_main.c index da9bc1a49..a6d7e69c8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3137,7 +3137,7 @@ static void HandleTurnActionSelectionState(void) *(gBattleStruct->field_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 -- cgit v1.2.3 From 499c09a49f4e587c6f3135afe609a057f3dbd4d8 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 22 Nov 2019 06:46:04 +0800 Subject: 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 | 137 +- 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, 1911 insertions(+), 4955 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; - -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 EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL; + +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); } -- cgit v1.2.3 From 49eb3504620af68314628eb945c14be4afd441cf Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 22 Nov 2019 13:31:48 +0800 Subject: 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 -- cgit v1.2.3 From 5c1bdd0eb54b4159e4d66d9f733b0f66697a2436 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 23 Nov 2019 08:09:06 +0800 Subject: 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; -- cgit v1.2.3 From 4b26c0f80e9d39d47fa821acc45e0bad00d306c8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 Nov 2019 14:40:57 -0500 Subject: Dump data/field_player_avatar.s --- baserom.ips | Bin 242864 -> 242395 bytes data/field_player_avatar.s | 113 ++++++++++++++++++++------ graphics/pokemon_special_anim/unk_8459868.pal | 19 +++++ graphics/pokemon_special_anim/unk_84598A4.pal | 19 +++++ graphics/pokemon_special_anim/unk_8459940.pal | 19 +++++ 5 files changed, 146 insertions(+), 24 deletions(-) create mode 100644 graphics/pokemon_special_anim/unk_8459868.pal create mode 100644 graphics/pokemon_special_anim/unk_84598A4.pal create mode 100644 graphics/pokemon_special_anim/unk_8459940.pal diff --git a/baserom.ips b/baserom.ips index b8a3107e4..d7de0a120 100644 Binary files a/baserom.ips and b/baserom.ips differ diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s index c11bc74b3..d89daa03c 100644 --- a/data/field_player_avatar.s +++ b/data/field_player_avatar.s @@ -1,73 +1,138 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" .section .rodata .align 2 gUnknown_835B764:: @ 835B764 - .incbin "baserom.gba", 0x35B764, 0xB0 + .4byte MetatileBehavior_IsUnknownMovement48, ForcedMovement_Slip + .4byte MetatileBehavior_IsIce_2, ForcedMovement_Slip + .4byte MetatileBehavior_IsWalkSouth, sub_805B750 + .4byte MetatileBehavior_IsWalkNorth, sub_805B768 + .4byte MetatileBehavior_IsWalkWest, sub_805B780 + .4byte MetatileBehavior_IsWalkEast, sub_805B798 + .4byte MetatileBehavior_IsSouthwardCurrent, sub_805B82C + .4byte MetatileBehavior_IsNorthwardCurrent, sub_805B844 + .4byte MetatileBehavior_IsWestwardCurrent, sub_805B85C + .4byte MetatileBehavior_IsEastwardCurrent, sub_805B874 + .4byte MetatileBehavior_UnusedIsSpinRight, sub_805B7B0 + .4byte MetatileBehavior_UnusedIsSpinLeft, sub_805B7CC + .4byte MetatileBehavior_UnusedIsSpinUp, sub_805B7E8 + .4byte MetatileBehavior_UnusedIsSpinDown, sub_805B804 + .4byte MetatileBehavior_IsSlideSouth, ForcedMovement_SlideSouth + .4byte MetatileBehavior_IsSlideNorth, ForcedMovement_SlideNorth + .4byte MetatileBehavior_IsSlideWest, ForcedMovement_SlideWest + .4byte MetatileBehavior_IsSlideEast, ForcedMovement_SlideEast + .4byte MetatileBehavior_IsWaterfall, sub_805B82C + .4byte MetatileBehavior_UnusedReturnFalse_7, sub_805B924 + .4byte MetatileBehavior_UnusedReturnFalse_8, sub_805B930 + .4byte NULL, ForcedMovement_None gUnknown_835B814:: @ 835B814 - .incbin "baserom.gba", 0x35B814, 0xC + .4byte PlayerNotOnBikeNotMoving + .4byte sub_805B9C4 + .4byte sub_805B9D4 gUnknown_835B820:: @ 835B820 - .incbin "baserom.gba", 0x35B820, 0x8 + .byte 0x04, 0x04, 0x05, 0x06, 0x07 + .align 2 gUnknown_835B828:: @ 835B828 - .incbin "baserom.gba", 0x35B828, 0x14 + .4byte MetatileBehavior_ReturnFalse_14 + .4byte MetatileBehavior_ReturnFalse_15 + .4byte MetatileBehavior_ReturnFalse_16 + .4byte MetatileBehavior_ReturnFalse_17 + .4byte MetatileBehavior_ReturnFalse_18 gUnknown_835B83C:: @ 835B83C - .incbin "baserom.gba", 0x35B83C, 0x8 + .byte 0x09, 0x0a, 0x0b, 0x0c, 0x0d + .align 2 gUnknown_835B844:: @ 835B844 - .incbin "baserom.gba", 0x35B844, 0x20 + .4byte sub_805BE60 + .4byte sub_805BE74 + .4byte sub_805BE74 + .4byte sub_805BE90 + .4byte nullsub_23 + .4byte PlayerAvatarTransition_ReturnToField + .4byte nullsub_22 + .4byte nullsub_22 gUnknown_835B864:: @ 835B864 - .incbin "baserom.gba", 0x35B864, 0x10 + .4byte MetatileBehavior_IsSouthArrowWarp + .4byte MetatileBehavior_IsNorthArrowWarp + .4byte MetatileBehavior_IsWestArrowWarp + .4byte MetatileBehavior_IsEastArrowWarp gUnknown_835B874:: @ 835B874 - .incbin "baserom.gba", 0x35B874, 0xC + .byte 0x00, 0x07, 0x01, 0x08, 0x02, 0x09, 0x03, 0x0a, 0x04, 0x0b, 0x05, 0x0c gUnknown_835B880:: @ 835B880 - .incbin "baserom.gba", 0x35B880, 0x2 + .byte 0x0e, 0x0f gUnknown_835B882:: @ 835B882 - .incbin "baserom.gba", 0x35B882, 0xC + .byte 0x00, 0x01, 0x01, 0x02, 0x02, 0x08, 0x07, 0x01, 0x08, 0x02, 0x09, 0x08 gUnknown_835B88E:: @ 835B88E - .incbin "baserom.gba", 0x35B88E, 0x2 + .byte 0x06, 0x0d gUnknown_835B890:: @ 835B890 - .incbin "baserom.gba", 0x35B890, 0x10 + .4byte MetatileBehavior_IsSouthArrowWarp + .4byte MetatileBehavior_IsNorthArrowWarp + .4byte MetatileBehavior_IsWestArrowWarp + .4byte MetatileBehavior_IsEastArrowWarp gUnknown_835B8A0:: @ 835B8A0 - .incbin "baserom.gba", 0x35B8A0, 0xC + .4byte sub_805CD64 + .4byte sub_805CD84 + .4byte sub_805CE20 gUnknown_835B8AC:: @ 835B8AC - .incbin "baserom.gba", 0x35B8AC, 0x4 + .4byte PlayerAvatar_DoSecretBaseMatJump gUnknown_835B8B0:: @ 835B8B0 - .incbin "baserom.gba", 0x35B8B0, 0x10 + .4byte sub_805CFC4 + .4byte sub_805CFEC + .4byte sub_805D064 + .4byte sub_805D0A4 gUnknown_835B8C0:: @ 835B8C0 - .incbin "baserom.gba", 0x35B8C0, 0x4 + .byte 0x03, 0x04, 0x02, 0x01 gUnknown_835B8C4:: @ 835B8C4 - .incbin "baserom.gba", 0x35B8C4, 0x8 + .byte 0x18, 0x18, 0x19, 0x1a, 0x1b + .align 2 gUnknown_835B8CC:: @ 835B8CC - .incbin "baserom.gba", 0x35B8CC, 0x40 + .4byte sub_805D33C + .4byte fish1 + .4byte fish2 + .4byte sub_805D430 + .4byte sub_805D47C + .4byte sub_805D508 + .4byte sub_805D574 + .4byte sub_805D580 + .4byte sub_805D5EC + .4byte sub_805D66C + .4byte sub_805D6C8 + .4byte sub_805D7C0 + .4byte sub_805D838 + .4byte sub_805D8AC + .4byte sub_805D8D8 + .4byte sub_805D980 gUnknown_835B90C:: @ 835B90C - .incbin "baserom.gba", 0x35B90C, 0x6 + .2byte 0x0001, 0x0001, 0x0001 gUnknown_835B912:: @ 835B912 - .incbin "baserom.gba", 0x35B912, 0x6 + .2byte 0x0001, 0x0003, 0x0006 gUnknown_835B918:: @ 835B918 - .incbin "baserom.gba", 0x35B918, 0x2 + .string "·$" gUnknown_835B91A:: @ 835B91A - .incbin "baserom.gba", 0x35B91A, 0x6 + .2byte 0x0024, 0x0021, 0x001e gUnknown_835B920:: @ 835B920 - .incbin "baserom.gba", 0x35B920, 0xC + .2byte 0x0000, 0x0000, 0x0028, 0x000a, 0x0046, 0x001e gUnknown_835B92C:: @ 835B92C - .incbin "baserom.gba", 0x35B92C, 0x8 + .byte 0x01, 0x03, 0x04, 0x02, 0x01 diff --git a/graphics/pokemon_special_anim/unk_8459868.pal b/graphics/pokemon_special_anim/unk_8459868.pal new file mode 100644 index 000000000..9448351d8 --- /dev/null +++ b/graphics/pokemon_special_anim/unk_8459868.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +230 230 255 +213 213 255 +197 197 255 +180 180 255 +164 164 255 +148 148 255 +131 131 255 +115 115 255 +98 98 255 +82 82 255 +65 65 255 +49 49 255 +32 32 255 +16 16 255 diff --git a/graphics/pokemon_special_anim/unk_84598A4.pal b/graphics/pokemon_special_anim/unk_84598A4.pal new file mode 100644 index 000000000..a13a09ed3 --- /dev/null +++ b/graphics/pokemon_special_anim/unk_84598A4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +98 90 8 +197 189 24 +246 246 0 +148 139 16 +246 238 32 +222 213 0 +213 197 0 +180 164 0 +49 41 0 +172 148 32 +189 164 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon_special_anim/unk_8459940.pal b/graphics/pokemon_special_anim/unk_8459940.pal new file mode 100644 index 000000000..7354e267b --- /dev/null +++ b/graphics/pokemon_special_anim/unk_8459940.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +65 106 255 +255 255 255 +230 230 230 +213 213 213 +197 197 197 +180 180 180 +164 164 164 +148 148 148 +131 131 131 +115 115 115 +98 98 98 +82 82 82 +65 65 65 +49 49 49 +32 32 32 +16 16 16 -- cgit v1.2.3 From 557950783772c1a633fbe4ba682253f10bd2b57c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Nov 2019 10:55:30 -0500 Subject: fldeff_sweetscent ewram --- include/fldeff.h | 1 - src/fldeff_sweetscent.c | 2 ++ sym_ewram.txt | 7 +++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/fldeff.h b/include/fldeff.h index 25d5b8d43..e3f703947 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -7,7 +7,6 @@ gTasks[taskId].data[8] = (u32)func >> 16; \ gTasks[taskId].data[9] = (u32)func; -extern u8 *gUnknown_203AAB0; extern struct MapPosition gPlayerFacingPosition; bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 114bf0b57..b6ea1daed 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -13,6 +13,8 @@ #include "wild_encounter.h" #include "constants/songs.h" +static EWRAM_DATA u8 *gUnknown_203AAB0 = NULL; + static void FieldCallback_SweetScent(void); static void StartSweetScentFieldEffect(void); static void TrySweetScentEncounter(u8 taskId); diff --git a/sym_ewram.txt b/sym_ewram.txt index 7a25f1726..13b031179 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -427,6 +427,7 @@ gPlayerFacingPosition: @ 2039A04 .align 2 .include "src/battle_transition.o" + .align 2 gUnknown_2039A30: @ 2039A30 .space 0x4 @@ -437,10 +438,8 @@ gUnknown_2039A34: @ 2039A34 .include "src/save.o" .align 2 .include "src/mystery_event_script.o" - -gUnknown_203AAB0: @ 203AAB0 - .space 0x4 - + .align 2 + .include "src/fldeff_sweetscent.o" .align 2 .include "src/learn_move.o" .align 2 -- cgit v1.2.3 From 972c044d71a870128d2ac41b5b407a1db41d60de Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 03:03:29 +0800 Subject: 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); } -- cgit v1.2.3 From 13e1ed54b232f76026ca7e8b3c58f375c8827f2b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Nov 2019 16:51:05 -0500 Subject: battle_message 1 --- asm/battle_message.s | 2230 +------------------------------- data/battle_message.s | 2923 ------------------------------------------ include/battle.h | 3 +- include/battle_message.h | 10 +- include/battle_string_ids.h | 2 +- include/battle_tower.h | 5 + include/constants/trainers.h | 149 --- include/data.h | 2 + include/event_scripts.h | 6 + include/strings.h | 2 +- include/trainer_tower.h | 2 + ld_script.txt | 3 +- src/battle_message.c | 2184 +++++++++++++++++++++++++++++++ sym_ewram.txt | 8 +- 14 files changed, 2236 insertions(+), 5293 deletions(-) delete mode 100644 data/battle_message.s create mode 100644 src/battle_message.c diff --git a/asm/battle_message.s b/asm/battle_message.s index fc21f17ee..edea8e78b 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -5,2180 +5,6 @@ .text - thumb_func_start BufferStringBattle -BufferStringBattle: @ 80D7274 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r6, r0, 16 - movs r7, 0 - ldr r4, _080D7330 @ =gUnknown_2039A34 - ldr r0, _080D7334 @ =gActiveBattler - mov r8, r0 - ldrb r1, [r0] - lsls r1, 9 - ldr r0, _080D7338 @ =gBattleBufferA + 4 - adds r1, r0 - str r1, [r4] - ldr r2, _080D733C @ =gLastUsedItem - ldrh r0, [r1, 0x4] - strh r0, [r2] - ldr r2, _080D7340 @ =gLastUsedAbility - ldrb r0, [r1, 0x6] - strb r0, [r2] - ldr r5, _080D7344 @ =gBattleScripting - ldrb r0, [r1, 0x7] - strb r0, [r5, 0x17] - ldr r3, _080D7348 @ =gBattleStruct - ldr r0, [r3] - adds r0, 0x52 - ldrb r1, [r1, 0x8] - strb r1, [r0] - ldr r0, [r3] - adds r0, 0xAD - ldr r1, [r4] - ldrb r1, [r1, 0x9] - strb r1, [r0] - ldr r1, _080D734C @ =gPotentialItemEffectBattler - ldr r2, [r4] - ldrb r0, [r2, 0xA] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x8E - ldrb r1, [r2, 0xB] - strb r1, [r0] - movs r2, 0 - mov r12, r8 - mov r10, r5 - ldr r1, _080D7350 @ =gBattleTextBuff1 - mov r9, r1 - ldr r3, _080D7354 @ =gUnknown_2039A30 -_080D72D6: - adds r0, r2, r3 - ldr r1, [r4] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080D72D6 - movs r2, 0 - ldr r0, _080D7350 @ =gBattleTextBuff1 - mov r8, r0 - ldr r3, _080D7330 @ =gUnknown_2039A34 - ldr r5, _080D7358 @ =gBattleTextBuff2 - ldr r4, _080D735C @ =gBattleTextBuff3 -_080D72F4: - mov r0, r8 - adds r1, r2, r0 - ldr r0, [r3] - adds r0, 0x10 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r5 - ldr r0, [r3] - adds r0, 0x20 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r4 - ldr r0, [r3] - adds r0, 0x30 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0xF - ble _080D72F4 - cmp r6, 0x5 - bls _080D7326 - b _080D77B8 -_080D7326: - lsls r0, r6, 2 - ldr r1, _080D7360 @ =_080D7364 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D7330: .4byte gUnknown_2039A34 -_080D7334: .4byte gActiveBattler -_080D7338: .4byte gBattleBufferA + 4 -_080D733C: .4byte gLastUsedItem -_080D7340: .4byte gLastUsedAbility -_080D7344: .4byte gBattleScripting -_080D7348: .4byte gBattleStruct -_080D734C: .4byte gPotentialItemEffectBattler -_080D7350: .4byte gBattleTextBuff1 -_080D7354: .4byte gUnknown_2039A30 -_080D7358: .4byte gBattleTextBuff2 -_080D735C: .4byte gBattleTextBuff3 -_080D7360: .4byte _080D7364 - .align 2, 0 -_080D7364: - .4byte _080D737C - .4byte _080D7428 - .4byte _080D74C8 - .4byte _080D7558 - .4byte _080D75F0 - .4byte _080D7654 -_080D737C: - ldr r0, _080D739C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080D73C4 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D73B4 - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - beq _080D73A4 - ldr r7, _080D73A0 @ =gUnknown_83FD397 - b _080D77DC - .align 2, 0 -_080D739C: .4byte gBattleTypeFlags -_080D73A0: .4byte gUnknown_83FD397 -_080D73A4: - ldr r0, _080D73B8 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, _080D73BC @ =gUnknown_83FD383 - cmp r1, r0 - beq _080D73B4 - b _080D77DC -_080D73B4: - ldr r7, _080D73C0 @ =gUnknown_83FD366 - b _080D77DC - .align 2, 0 -_080D73B8: .4byte gTrainerBattleOpponent_A -_080D73BC: .4byte gUnknown_83FD383 -_080D73C0: .4byte gUnknown_83FD366 -_080D73C4: - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080D73E8 - movs r0, 0x80 - lsls r0, 6 - ands r1, r0 - ldr r7, _080D73E0 @ =gUnknown_83FD2D9 - cmp r1, 0 - bne _080D73DC - b _080D77DC -_080D73DC: - ldr r7, _080D73E4 @ =gUnknown_83FD30D - b _080D77DC - .align 2, 0 -_080D73E0: .4byte gUnknown_83FD2D9 -_080D73E4: .4byte gUnknown_83FD30D -_080D73E8: - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _080D73FC - ldr r7, _080D73F8 @ =gUnknown_83FD297 - b _080D77DC - .align 2, 0 -_080D73F8: .4byte gUnknown_83FD297 -_080D73FC: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D740C - ldr r7, _080D7408 @ =gUnknown_83FD2BF - b _080D77DC - .align 2, 0 -_080D7408: .4byte gUnknown_83FD2BF -_080D740C: - movs r0, 0x80 - lsls r0, 2 - ands r1, r0 - ldr r7, _080D7420 @ =gUnknown_83FD284 - cmp r1, 0 - bne _080D741A - b _080D77DC -_080D741A: - ldr r7, _080D7424 @ =gUnknown_83FD2AA - b _080D77DC - .align 2, 0 -_080D7420: .4byte gUnknown_83FD284 -_080D7424: .4byte gUnknown_83FD2AA -_080D7428: - mov r1, r12 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D7468 - ldr r0, _080D7454 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D7460 - movs r0, 0x40 - ands r1, r0 - ldr r7, _080D7458 @ =gUnknown_83FD466 - cmp r1, 0 - bne _080D744E - b _080D77DC -_080D744E: - ldr r7, _080D745C @ =gUnknown_83FD4B5 - b _080D77DC - .align 2, 0 -_080D7454: .4byte gBattleTypeFlags -_080D7458: .4byte gUnknown_83FD466 -_080D745C: .4byte gUnknown_83FD4B5 -_080D7460: - ldr r7, _080D7464 @ =gUnknown_83FD45E - b _080D77DC - .align 2, 0 -_080D7464: .4byte gUnknown_83FD45E -_080D7468: - ldr r0, _080D7480 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D74A0 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D7488 - ldr r7, _080D7484 @ =gUnknown_83FD41E - b _080D77DC - .align 2, 0 -_080D7480: .4byte gBattleTypeFlags -_080D7484: .4byte gUnknown_83FD41E -_080D7488: - movs r0, 0x2 - ands r1, r0 - ldr r7, _080D7498 @ =gUnknown_83FD3C7 - cmp r1, 0 - bne _080D7494 - b _080D77DC -_080D7494: - ldr r7, _080D749C @ =gUnknown_83FD407 - b _080D77DC - .align 2, 0 -_080D7498: .4byte gUnknown_83FD3C7 -_080D749C: .4byte gUnknown_83FD407 -_080D74A0: - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _080D74B8 - ldr r0, _080D74BC @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, _080D74C0 @ =gUnknown_83FD3F7 - cmp r1, r0 - beq _080D74B8 - b _080D77DC -_080D74B8: - ldr r7, _080D74C4 @ =gUnknown_83FD3B1 - b _080D77DC - .align 2, 0 -_080D74BC: .4byte gTrainerBattleOpponent_A -_080D74C0: .4byte gUnknown_83FD3F7 -_080D74C4: .4byte gUnknown_83FD3B1 -_080D74C8: - mov r1, r12 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D7520 - ldr r0, _080D74E8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - ldrb r2, [r0] - cmp r2, 0 - bne _080D74F0 - ldr r7, _080D74EC @ =gUnknown_83FD4CD - b _080D77DC - .align 2, 0 -_080D74E8: .4byte gBattleStruct -_080D74EC: .4byte gUnknown_83FD4CD -_080D74F0: - cmp r2, 0x1 - beq _080D7500 - ldr r0, _080D7504 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D750C -_080D7500: - ldr r7, _080D7508 @ =gUnknown_83FD4EB - b _080D77DC - .align 2, 0 -_080D7504: .4byte gBattleTypeFlags -_080D7508: .4byte gUnknown_83FD4EB -_080D750C: - ldr r7, _080D7518 @ =gUnknown_83FD50D - cmp r2, 0x2 - beq _080D7514 - b _080D77DC -_080D7514: - ldr r7, _080D751C @ =gUnknown_83FD4FA - b _080D77DC - .align 2, 0 -_080D7518: .4byte gUnknown_83FD50D -_080D751C: .4byte gUnknown_83FD4FA -_080D7520: - ldr r0, _080D7540 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 4 - cmp r1, r0 - bne _080D7550 - ldr r0, _080D7544 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - ldr r7, _080D7548 @ =gUnknown_83FD535 - cmp r0, 0 - bne _080D753C - b _080D77DC -_080D753C: - ldr r7, _080D754C @ =gUnknown_83FD545 - b _080D77DC - .align 2, 0 -_080D7540: .4byte gTrainerBattleOpponent_A -_080D7544: .4byte gBattleTypeFlags -_080D7548: .4byte gUnknown_83FD535 -_080D754C: .4byte gUnknown_83FD545 -_080D7550: - ldr r7, _080D7554 @ =gUnknown_83FD522 - b _080D77DC - .align 2, 0 -_080D7554: .4byte gUnknown_83FD522 -_080D7558: - mov r1, r10 - ldrb r0, [r1, 0x17] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D75B0 - ldr r0, _080D7584 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - ldrb r2, [r0] - cmp r2, 0 - beq _080D757E - ldr r0, _080D7588 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D7590 -_080D757E: - ldr r7, _080D758C @ =gUnknown_83FD475 - b _080D77DC - .align 2, 0 -_080D7584: .4byte gBattleStruct -_080D7588: .4byte gBattleTypeFlags -_080D758C: .4byte gUnknown_83FD475 -_080D7590: - cmp r2, 0x1 - bne _080D759C - ldr r7, _080D7598 @ =gUnknown_83FD47D - b _080D77DC - .align 2, 0 -_080D7598: .4byte gUnknown_83FD47D -_080D759C: - ldr r7, _080D75A8 @ =gUnknown_83FD497 - cmp r2, 0x2 - beq _080D75A4 - b _080D77DC -_080D75A4: - ldr r7, _080D75AC @ =gUnknown_83FD488 - b _080D77DC - .align 2, 0 -_080D75A8: .4byte gUnknown_83FD497 -_080D75AC: .4byte gUnknown_83FD488 -_080D75B0: - ldr r0, _080D75C8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D75E0 - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - beq _080D75D0 - ldr r7, _080D75CC @ =gUnknown_83FD44E - b _080D77DC - .align 2, 0 -_080D75C8: .4byte gBattleTypeFlags -_080D75CC: .4byte gUnknown_83FD44E -_080D75D0: - ldr r0, _080D75E4 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, _080D75E8 @ =gUnknown_83FD43E - cmp r1, r0 - beq _080D75E0 - b _080D77DC -_080D75E0: - ldr r7, _080D75EC @ =gUnknown_83FD3E4 - b _080D77DC - .align 2, 0 -_080D75E4: .4byte gTrainerBattleOpponent_A -_080D75E8: .4byte gUnknown_83FD43E -_080D75EC: .4byte gUnknown_83FD3E4 -_080D75F0: - mov r0, r9 - bl sub_80D86C8 - ldr r0, _080D761C @ =gUnknown_2039A34 - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _080D762C - ldr r0, _080D7620 @ =gBattleTextBuff2 - ldr r2, _080D7624 @ =gUnknown_83FEA28 - ldr r1, _080D7628 @ =gBattleStruct - ldr r1, [r1] - adds r1, 0x8E - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _080D763C - .align 2, 0 -_080D761C: .4byte gUnknown_2039A34 -_080D7620: .4byte gBattleTextBuff2 -_080D7624: .4byte gUnknown_83FEA28 -_080D7628: .4byte gBattleStruct -_080D762C: - ldr r0, _080D7648 @ =gBattleTextBuff2 - ldrh r2, [r2] - movs r1, 0xD - muls r1, r2 - ldr r2, _080D764C @ =gMoveNames - adds r1, r2 - bl StringCopy -_080D763C: - ldr r0, _080D7648 @ =gBattleTextBuff2 - bl sub_80D8720 - ldr r7, _080D7650 @ =gUnknown_83FD57B - b _080D77DC - .align 2, 0 -_080D7648: .4byte gBattleTextBuff2 -_080D764C: .4byte gMoveNames -_080D7650: .4byte gUnknown_83FD57B -_080D7654: - ldr r4, _080D7694 @ =gBattleTextBuff1 - ldrb r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080D76D4 - movs r0, 0x7F - ands r0, r1 - strb r0, [r4] - mov r1, r12 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D7682 - ldrb r1, [r4] - cmp r1, 0x3 - beq _080D7682 - movs r0, 0x3 - eors r0, r1 - strb r0, [r4] -_080D7682: - ldr r0, _080D7694 @ =gBattleTextBuff1 - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080D769C - ldr r7, _080D7698 @ =gUnknown_83FCC8A - b _080D77DC - .align 2, 0 -_080D7694: .4byte gBattleTextBuff1 -_080D7698: .4byte gUnknown_83FCC8A -_080D769C: - ldr r0, _080D76AC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D76B4 - ldr r7, _080D76B0 @ =gUnknown_83FCD9F - b _080D77DC - .align 2, 0 -_080D76AC: .4byte gBattleTypeFlags -_080D76B0: .4byte gUnknown_83FCD9F -_080D76B4: - ldr r0, _080D76C8 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - ldr r7, _080D76CC @ =gUnknown_83FCD92 - cmp r1, r0 - beq _080D76C4 - b _080D77DC -_080D76C4: - ldr r7, _080D76D0 @ =gUnknown_83FE9D4 - b _080D77DC - .align 2, 0 -_080D76C8: .4byte gTrainerBattleOpponent_A -_080D76CC: .4byte gUnknown_83FCD92 -_080D76D0: .4byte gUnknown_83FE9D4 -_080D76D4: - mov r1, r12 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D76F0 - ldrb r1, [r4] - cmp r1, 0x3 - beq _080D76F0 - movs r0, 0x3 - eors r0, r1 - strb r0, [r4] -_080D76F0: - ldr r0, _080D7710 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D7738 - ldr r0, _080D7714 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080D7728 - cmp r0, 0x2 - bgt _080D7718 - cmp r0, 0x1 - beq _080D771E - b _080D77DC - .align 2, 0 -_080D7710: .4byte gBattleTypeFlags -_080D7714: .4byte gBattleTextBuff1 -_080D7718: - cmp r0, 0x3 - beq _080D7730 - b _080D77DC -_080D771E: - ldr r7, _080D7724 @ =gUnknown_83FCCF8 - b _080D77DC - .align 2, 0 -_080D7724: .4byte gUnknown_83FCCF8 -_080D7728: - ldr r7, _080D772C @ =gUnknown_83FCD27 - b _080D77DC - .align 2, 0 -_080D772C: .4byte gUnknown_83FCD27 -_080D7730: - ldr r7, _080D7734 @ =gUnknown_83FCD66 - b _080D77DC - .align 2, 0 -_080D7734: .4byte gUnknown_83FCD66 -_080D7738: - ldr r0, _080D7758 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _080D7780 - ldr r0, _080D775C @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080D7770 - cmp r0, 0x2 - bgt _080D7760 - cmp r0, 0x1 - beq _080D7766 - b _080D77DC - .align 2, 0 -_080D7758: .4byte gTrainerBattleOpponent_A -_080D775C: .4byte gBattleTextBuff1 -_080D7760: - cmp r0, 0x3 - beq _080D7778 - b _080D77DC -_080D7766: - ldr r7, _080D776C @ =gUnknown_83FD1C7 - b _080D77DC - .align 2, 0 -_080D776C: .4byte gUnknown_83FD1C7 -_080D7770: - ldr r7, _080D7774 @ =gUnknown_83FE9E4 - b _080D77DC - .align 2, 0 -_080D7774: .4byte gUnknown_83FE9E4 -_080D7778: - ldr r7, _080D777C @ =gUnknown_83FE9FF - b _080D77DC - .align 2, 0 -_080D777C: .4byte gUnknown_83FE9FF -_080D7780: - ldr r0, _080D7794 @ =gBattleTextBuff1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080D77A8 - cmp r0, 0x2 - bgt _080D7798 - cmp r0, 0x1 - beq _080D779E - b _080D77DC - .align 2, 0 -_080D7794: .4byte gBattleTextBuff1 -_080D7798: - cmp r0, 0x3 - beq _080D77B0 - b _080D77DC -_080D779E: - ldr r7, _080D77A4 @ =gUnknown_83FCCE4 - b _080D77DC - .align 2, 0 -_080D77A4: .4byte gUnknown_83FCCE4 -_080D77A8: - ldr r7, _080D77AC @ =gUnknown_83FCD0F - b _080D77DC - .align 2, 0 -_080D77AC: .4byte gUnknown_83FCD0F -_080D77B0: - ldr r7, _080D77B4 @ =gUnknown_83FCD41 - b _080D77DC - .align 2, 0 -_080D77B4: .4byte gUnknown_83FCD41 -_080D77B8: - ldr r0, _080D77C8 @ =0x00000181 - cmp r6, r0 - bls _080D77D0 - ldr r1, _080D77CC @ =gDisplayedStringBattle - movs r0, 0xFF - strb r0, [r1] - b _080D77E2 - .align 2, 0 -_080D77C8: .4byte 0x00000181 -_080D77CC: .4byte gDisplayedStringBattle -_080D77D0: - ldr r1, _080D77F0 @ =gBattleStringsTable - adds r0, r6, 0 - subs r0, 0xC - lsls r0, 2 - adds r0, r1 - ldr r7, [r0] -_080D77DC: - adds r0, r7, 0 - bl BattleStringExpandPlaceholdersToDisplayedString -_080D77E2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D77F0: .4byte gBattleStringsTable - thumb_func_end BufferStringBattle - - thumb_func_start BattleStringExpandPlaceholdersToDisplayedString -BattleStringExpandPlaceholdersToDisplayedString: @ 80D77F4 - push {lr} - ldr r1, _080D7800 @ =gDisplayedStringBattle - bl BattleStringExpandPlaceholders - pop {r1} - bx r1 - .align 2, 0 -_080D7800: .4byte gDisplayedStringBattle - thumb_func_end BattleStringExpandPlaceholdersToDisplayedString - - thumb_func_start TryGetStatusString -TryGetStatusString: @ 80D7804 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _080D781C @ =gUnknown_83FEB5C - mov r0, sp - movs r2, 0x8 - bl memcpy - mov r2, sp - movs r3, 0 - b _080D782C - .align 2, 0 -_080D781C: .4byte gUnknown_83FEB5C -_080D7820: - strb r1, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x7 - bhi _080D7834 -_080D782C: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7820 -_080D7834: - ldr r5, [sp] - ldr r4, [sp, 0x4] - movs r3, 0 - ldr r2, _080D7850 @ =gStatusConditionStringsTable -_080D783C: - ldr r1, [r2] - ldr r0, [r1] - cmp r5, r0 - bne _080D7854 - ldr r0, [r1, 0x4] - cmp r4, r0 - bne _080D7854 - ldr r0, [r2, 0x4] - b _080D785E - .align 2, 0 -_080D7850: .4byte gStatusConditionStringsTable -_080D7854: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x6 - bls _080D783C - movs r0, 0 -_080D785E: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end TryGetStatusString - - thumb_func_start BattleStringExpandPlaceholders -BattleStringExpandPlaceholders: @ 80D7868 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - mov r9, r0 - mov r8, r1 - movs r6, 0 - movs r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - ldrb r1, [r0] - bl _080D83F0 -_080D788A: - cmp r1, 0xFD - beq _080D7892 - bl _080D83E0 -_080D7892: - movs r1, 0x1 - add r9, r1 - mov r2, r9 - ldrb r0, [r2] - cmp r0, 0x30 - bls _080D78A2 - bl _080D8382 -_080D78A2: - lsls r0, 2 - ldr r1, _080D78AC @ =_080D78B0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D78AC: .4byte _080D78B0 - .align 2, 0 -_080D78B0: - .4byte _080D7974 - .4byte _080D79A2 - .4byte _080D79DE - .4byte _080D79E8 - .4byte _080D79F4 - .4byte _080D7A00 - .4byte _080D7A24 - .4byte _080D7A48 - .4byte _080D7A6C - .4byte _080D7A90 - .4byte _080D7ABC - .4byte _080D7AEC - .4byte _080D7B1C - .4byte _080D7B4C - .4byte _080D7BE0 - .4byte _080D7C4C - .4byte _080D7CC0 - .4byte _080D7D34 - .4byte _080D7DA8 - .4byte _080D7E1C - .4byte _080D7E90 - .4byte _080D7EA8 - .4byte _080D7EE4 - .4byte _080D7FB0 - .4byte _080D7FB8 - .4byte _080D7FC8 - .4byte _080D7FD8 - .4byte _080D7FE8 - .4byte _080D8008 - .4byte _080D80A4 - .4byte _080D8162 - .4byte _080D8174 - .4byte _080D8188 - .4byte _080D819C - .4byte _080D81C0 - .4byte _080D81DC - .4byte _080D81E8 - .4byte _080D8214 - .4byte _080D8260 - .4byte _080D82F8 - .4byte _080D8340 - .4byte _080D8348 - .4byte _080D8318 - .4byte _080D8320 - .4byte _080D8368 - .4byte _080D8370 - .4byte _080D8240 - .4byte _080D8250 - .4byte _080D79B8 -_080D7974: - ldr r5, _080D7984 @ =gBattleTextBuff1 - ldrb r0, [r5] - cmp r0, 0xFD - bne _080D798C - ldr r4, _080D7988 @ =gStringVar1 - adds r0, r5, 0 - b _080D79C4 - .align 2, 0 -_080D7984: .4byte gBattleTextBuff1 -_080D7988: .4byte gStringVar1 -_080D798C: - adds r0, r5, 0 - bl TryGetStatusString - adds r4, r0, 0 - cmp r4, 0 - beq _080D799C - bl _080D8382 -_080D799C: - adds r4, r5, 0 - bl _080D8382 -_080D79A2: - ldr r1, _080D79B0 @ =gBattleTextBuff2 - ldrb r0, [r1] - cmp r0, 0xFD - bne _080D79D8 - ldr r4, _080D79B4 @ =gStringVar2 - b _080D79C2 - .align 2, 0 -_080D79B0: .4byte gBattleTextBuff2 -_080D79B4: .4byte gStringVar2 -_080D79B8: - ldr r1, _080D79D0 @ =gBattleTextBuff3 - ldrb r0, [r1] - cmp r0, 0xFD - bne _080D79D8 - ldr r4, _080D79D4 @ =gStringVar3 -_080D79C2: - adds r0, r1, 0 -_080D79C4: - adds r1, r4, 0 - bl ExpandBattleTextBuffPlaceholders - bl _080D8382 - .align 2, 0 -_080D79D0: .4byte gBattleTextBuff3 -_080D79D4: .4byte gStringVar3 -_080D79D8: - adds r4, r1, 0 - bl _080D8382 -_080D79DE: - ldr r4, _080D79E4 @ =gStringVar1 - bl _080D8382 - .align 2, 0 -_080D79E4: .4byte gStringVar1 -_080D79E8: - ldr r4, _080D79F0 @ =gStringVar2 - bl _080D8382 - .align 2, 0 -_080D79F0: .4byte gStringVar2 -_080D79F4: - ldr r4, _080D79FC @ =gStringVar3 - bl _080D8382 - .align 2, 0 -_080D79FC: .4byte gStringVar3 -_080D7A00: - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080D7A1C @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7A20 @ =gPlayerParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7A1C: .4byte gBattlerPartyIndexes -_080D7A20: .4byte gPlayerParty -_080D7A24: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _080D7A40 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7A44 @ =gEnemyParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7A40: .4byte gBattlerPartyIndexes -_080D7A44: .4byte gEnemyParty -_080D7A48: - movs r0, 0x2 - bl GetBattlerAtPosition - ldr r1, _080D7A64 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7A68 @ =gPlayerParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7A64: .4byte gBattlerPartyIndexes -_080D7A68: .4byte gPlayerParty -_080D7A6C: - movs r0, 0x3 - bl GetBattlerAtPosition - ldr r1, _080D7A88 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7A8C @ =gEnemyParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7A88: .4byte gBattlerPartyIndexes -_080D7A8C: .4byte gEnemyParty -_080D7A90: - ldr r2, _080D7AB0 @ =gBattlerPartyIndexes - ldr r1, _080D7AB4 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7AB8 @ =gPlayerParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7AB0: .4byte gBattlerPartyIndexes -_080D7AB4: .4byte gLinkPlayers -_080D7AB8: .4byte gPlayerParty -_080D7ABC: - ldr r2, _080D7AE0 @ =gBattlerPartyIndexes - ldr r1, _080D7AE4 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7AE8 @ =gEnemyParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7AE0: .4byte gBattlerPartyIndexes -_080D7AE4: .4byte gLinkPlayers -_080D7AE8: .4byte gEnemyParty -_080D7AEC: - ldr r2, _080D7B10 @ =gBattlerPartyIndexes - ldr r1, _080D7B14 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7B18 @ =gPlayerParty - adds r0, r1 - bl _080D82AA - .align 2, 0 -_080D7B10: .4byte gBattlerPartyIndexes -_080D7B14: .4byte gLinkPlayers -_080D7B18: .4byte gPlayerParty -_080D7B1C: - ldr r2, _080D7B40 @ =gBattlerPartyIndexes - ldr r1, _080D7B44 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x18] - movs r0, 0x3 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7B48 @ =gEnemyParty - adds r0, r1 - b _080D82AA - .align 2, 0 -_080D7B40: .4byte gBattlerPartyIndexes -_080D7B44: .4byte gLinkPlayers -_080D7B48: .4byte gEnemyParty -_080D7B4C: - ldr r4, _080D7B70 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - adds r2, r4, 0 - cmp r0, 0 - beq _080D7BC0 - ldr r0, _080D7B74 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7B78 @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7B8A - ldr r4, _080D7B7C @ =gUnknown_83FD55B - b _080D7B8A - .align 2, 0 -_080D7B70: .4byte gBattlerAttacker -_080D7B74: .4byte gBattleTypeFlags -_080D7B78: .4byte gUnknown_83FD555 -_080D7B7C: .4byte gUnknown_83FD55B -_080D7B80: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 -_080D7B8A: - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7B80 - ldrb r0, [r2] - bl GetBattlerPosition - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBattlerAtPosition - ldr r1, _080D7BB8 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7BBC @ =gEnemyParty - adds r0, r1 - b _080D82AA - .align 2, 0 -_080D7BB8: .4byte gBattlerPartyIndexes -_080D7BBC: .4byte gEnemyParty -_080D7BC0: - ldrb r0, [r2] - bl GetBattlerPosition - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBattlerAtPosition - ldr r1, _080D7BDC @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7BDC: .4byte gBattlerPartyIndexes -_080D7BE0: - ldr r4, _080D7C14 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D7C20 - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBattlerAtPosition - ldr r1, _080D7C18 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7C1C @ =gPlayerParty - adds r0, r1 - b _080D82AA - .align 2, 0 -_080D7C14: .4byte gBattlerAttacker -_080D7C18: .4byte gBattlerPartyIndexes -_080D7C1C: .4byte gPlayerParty -_080D7C20: - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - bl GetBattlerAtPosition - ldr r1, _080D7C44 @ =gBattlerPartyIndexes - lsls r0, 24 - lsrs r0, 23 - adds r0, 0x4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D7C48 @ =gEnemyParty - b _080D82DA - .align 2, 0 -_080D7C44: .4byte gBattlerPartyIndexes -_080D7C48: .4byte gEnemyParty -_080D7C4C: - ldr r5, _080D7C98 @ =gBattlerAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D7CB0 - ldr r0, _080D7C9C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7CA0 @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7C6A - ldr r4, _080D7CA4 @ =gUnknown_83FD55B -_080D7C6A: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _080D7CA8 @ =gBattlerPartyIndexes - ldr r2, _080D7CAC @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _080D7C8C -_080D7C7A: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7C7A -_080D7C8C: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _080D82A4 - .align 2, 0 -_080D7C98: .4byte gBattlerAttacker -_080D7C9C: .4byte gBattleTypeFlags -_080D7CA0: .4byte gUnknown_83FD555 -_080D7CA4: .4byte gUnknown_83FD55B -_080D7CA8: .4byte gBattlerPartyIndexes -_080D7CAC: .4byte gEnemyParty -_080D7CB0: - ldr r1, _080D7CBC @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7CBC: .4byte gBattlerPartyIndexes -_080D7CC0: - ldr r5, _080D7D0C @ =gBattlerTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D7D24 - ldr r0, _080D7D10 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7D14 @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7CDE - ldr r4, _080D7D18 @ =gUnknown_83FD55B -_080D7CDE: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _080D7D1C @ =gBattlerPartyIndexes - ldr r2, _080D7D20 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _080D7D00 -_080D7CEE: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7CEE -_080D7D00: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _080D82A4 - .align 2, 0 -_080D7D0C: .4byte gBattlerTarget -_080D7D10: .4byte gBattleTypeFlags -_080D7D14: .4byte gUnknown_83FD555 -_080D7D18: .4byte gUnknown_83FD55B -_080D7D1C: .4byte gBattlerPartyIndexes -_080D7D20: .4byte gEnemyParty -_080D7D24: - ldr r1, _080D7D30 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7D30: .4byte gBattlerPartyIndexes -_080D7D34: - ldr r5, _080D7D80 @ =gEffectBattler - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D7D98 - ldr r0, _080D7D84 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7D88 @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7D52 - ldr r4, _080D7D8C @ =gUnknown_83FD55B -_080D7D52: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _080D7D90 @ =gBattlerPartyIndexes - ldr r2, _080D7D94 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _080D7D74 -_080D7D62: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7D62 -_080D7D74: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _080D82A4 - .align 2, 0 -_080D7D80: .4byte gEffectBattler -_080D7D84: .4byte gBattleTypeFlags -_080D7D88: .4byte gUnknown_83FD555 -_080D7D8C: .4byte gUnknown_83FD55B -_080D7D90: .4byte gBattlerPartyIndexes -_080D7D94: .4byte gEnemyParty -_080D7D98: - ldr r1, _080D7DA4 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7DA4: .4byte gBattlerPartyIndexes -_080D7DA8: - ldr r5, _080D7DF4 @ =gActiveBattler - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D7E0C - ldr r0, _080D7DF8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7DFC @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7DC6 - ldr r4, _080D7E00 @ =gUnknown_83FD55B -_080D7DC6: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _080D7E04 @ =gBattlerPartyIndexes - ldr r2, _080D7E08 @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _080D7DE8 -_080D7DD6: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7DD6 -_080D7DE8: - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _080D82A4 - .align 2, 0 -_080D7DF4: .4byte gActiveBattler -_080D7DF8: .4byte gBattleTypeFlags -_080D7DFC: .4byte gUnknown_83FD555 -_080D7E00: .4byte gUnknown_83FD55B -_080D7E04: .4byte gBattlerPartyIndexes -_080D7E08: .4byte gEnemyParty -_080D7E0C: - ldr r1, _080D7E18 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7E18: .4byte gBattlerPartyIndexes -_080D7E1C: - ldr r5, _080D7E68 @ =gBattleScripting - ldrb r0, [r5, 0x17] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D7E80 - ldr r0, _080D7E6C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D7E70 @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D7E3A - ldr r4, _080D7E74 @ =gUnknown_83FD55B -_080D7E3A: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r3, _080D7E78 @ =gBattlerPartyIndexes - ldr r2, _080D7E7C @ =gEnemyParty - mov r12, r2 - adds r2, r5, 0 - cmp r0, 0xFF - beq _080D7E5C -_080D7E4A: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D7E4A -_080D7E5C: - ldrb r0, [r2, 0x17] - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - b _080D82A4 - .align 2, 0 -_080D7E68: .4byte gBattleScripting -_080D7E6C: .4byte gBattleTypeFlags -_080D7E70: .4byte gUnknown_83FD555 -_080D7E74: .4byte gUnknown_83FD55B -_080D7E78: .4byte gBattlerPartyIndexes -_080D7E7C: .4byte gEnemyParty -_080D7E80: - ldr r1, _080D7E8C @ =gBattlerPartyIndexes - ldrb r0, [r5, 0x17] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080D82D4 - .align 2, 0 -_080D7E8C: .4byte gBattlerPartyIndexes -_080D7E90: - ldr r0, _080D7EA4 @ =gUnknown_2039A34 - ldr r2, [r0] - ldrh r1, [r2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bhi _080D7EB6 - ldrh r1, [r2] - b _080D7ED6 - .align 2, 0 -_080D7EA4: .4byte gUnknown_2039A34 -_080D7EA8: - ldr r0, _080D7EC8 @ =gUnknown_2039A34 - ldr r2, [r0] - ldrh r1, [r2, 0x2] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _080D7ED4 -_080D7EB6: - ldr r0, _080D7ECC @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x8E - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _080D7ED0 @ =gUnknown_83FEA28 - adds r4, r0, r1 - b _080D8382 - .align 2, 0 -_080D7EC8: .4byte gUnknown_2039A34 -_080D7ECC: .4byte gBattleStruct -_080D7ED0: .4byte gUnknown_83FEA28 -_080D7ED4: - ldrh r1, [r2, 0x2] -_080D7ED6: - movs r0, 0xD - muls r1, r0 - ldr r0, _080D7EE0 @ =gMoveNames - adds r4, r1, r0 - b _080D8382 - .align 2, 0 -_080D7EE0: .4byte gMoveNames -_080D7EE4: - ldr r0, _080D7F1C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D7F9C - ldr r2, _080D7F20 @ =gLastUsedItem - ldrh r0, [r2] - cmp r0, 0xAF - bne _080D7F98 - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - bne _080D7F44 - ldr r0, _080D7F24 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - ldrb r0, [r0] - cmp r0, 0 - beq _080D7F2C - ldr r2, _080D7F28 @ =gPotentialItemEffectBattler - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080D7F38 - b _080D7F90 - .align 2, 0 -_080D7F1C: .4byte gBattleTypeFlags -_080D7F20: .4byte gLastUsedItem -_080D7F24: .4byte gBattleStruct -_080D7F28: .4byte gPotentialItemEffectBattler -_080D7F2C: - ldr r2, _080D7F40 @ =gPotentialItemEffectBattler - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080D7F90 -_080D7F38: - ldrb r0, [r2] - lsls r1, r0, 3 - subs r1, r0 - b _080D7F64 - .align 2, 0 -_080D7F40: .4byte gPotentialItemEffectBattler -_080D7F44: - ldr r2, _080D7F7C @ =gLinkPlayers - ldr r0, _080D7F80 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080D7F84 @ =gPotentialItemEffectBattler - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _080D7F90 - lsls r1, r2, 3 - subs r1, r2 -_080D7F64: - lsls r1, 2 - ldr r0, _080D7F88 @ =gEnigmaBerries - adds r1, r0 - mov r0, sp - bl StringCopy - ldr r1, _080D7F8C @ =gUnknown_83FD8AF - mov r0, sp - bl StringAppend - mov r4, sp - b _080D8382 - .align 2, 0 -_080D7F7C: .4byte gLinkPlayers -_080D7F80: .4byte gBattleStruct -_080D7F84: .4byte gPotentialItemEffectBattler -_080D7F88: .4byte gEnigmaBerries -_080D7F8C: .4byte gUnknown_83FD8AF -_080D7F90: - ldr r4, _080D7F94 @ =gUnknown_83FD8A2 - b _080D8382 - .align 2, 0 -_080D7F94: .4byte gUnknown_83FD8A2 -_080D7F98: - ldrh r0, [r2] - b _080D7FA0 -_080D7F9C: - ldr r0, _080D7FAC @ =gLastUsedItem - ldrh r0, [r0] -_080D7FA0: - mov r1, sp - bl CopyItemName - mov r4, sp - b _080D8382 - .align 2, 0 -_080D7FAC: .4byte gLastUsedItem -_080D7FB0: - ldr r0, _080D7FB4 @ =gLastUsedAbility - b _080D7FF0 - .align 2, 0 -_080D7FB4: .4byte gLastUsedAbility -_080D7FB8: - ldr r1, _080D7FC0 @ =gUnknown_2039A30 - ldr r0, _080D7FC4 @ =gBattlerAttacker - b _080D7FEC - .align 2, 0 -_080D7FC0: .4byte gUnknown_2039A30 -_080D7FC4: .4byte gBattlerAttacker -_080D7FC8: - ldr r1, _080D7FD0 @ =gUnknown_2039A30 - ldr r0, _080D7FD4 @ =gBattlerTarget - b _080D7FEC - .align 2, 0 -_080D7FD0: .4byte gUnknown_2039A30 -_080D7FD4: .4byte gBattlerTarget -_080D7FD8: - ldr r1, _080D7FE0 @ =gUnknown_2039A30 - ldr r0, _080D7FE4 @ =gBattleScripting - ldrb r0, [r0, 0x17] - b _080D7FEE - .align 2, 0 -_080D7FE0: .4byte gUnknown_2039A30 -_080D7FE4: .4byte gBattleScripting -_080D7FE8: - ldr r1, _080D7FFC @ =gUnknown_2039A30 - ldr r0, _080D8000 @ =gEffectBattler -_080D7FEC: - ldrb r0, [r0] -_080D7FEE: - adds r0, r1 -_080D7FF0: - ldrb r1, [r0] - movs r0, 0xD - muls r1, r0 - ldr r0, _080D8004 @ =gAbilityNames - adds r4, r1, r0 - b _080D8382 - .align 2, 0 -_080D7FFC: .4byte gUnknown_2039A30 -_080D8000: .4byte gEffectBattler -_080D8004: .4byte gAbilityNames -_080D8008: - ldr r3, _080D8020 @ =gTrainerBattleOpponent_A - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _080D8024 - bl GetSecretBaseTrainerNameIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _080D8094 - .align 2, 0 -_080D8020: .4byte gTrainerBattleOpponent_A -_080D8024: - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _080D8038 - bl sub_80447F0 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xD - b _080D8094 -_080D8038: - ldr r0, _080D8054 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080D8058 - bl GetBattleTowerTrainerClassNameId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _080D8094 - .align 2, 0 -_080D8054: .4byte gBattleTypeFlags -_080D8058: - movs r0, 0x80 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - beq _080D806E - bl sub_815DA10 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _080D8094 -_080D806E: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _080D8084 - bl GetEreaderTrainerClassId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xD - b _080D8094 -_080D8084: - ldr r2, _080D809C @ =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r0, 0xD -_080D8094: - muls r1, r0 - ldr r0, _080D80A0 @ =gTrainerClassNames - adds r4, r1, r0 - b _080D8382 - .align 2, 0 -_080D809C: .4byte gTrainers -_080D80A0: .4byte gTrainerClassNames -_080D80A4: - ldr r0, _080D80E8 @ =gTrainerBattleOpponent_A - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 3 - adds r5, r0, 0 - cmp r2, r1 - bne _080D80D6 - movs r2, 0 - ldr r0, _080D80EC @ =gBattleResources - ldr r3, [r0] -_080D80B8: - mov r1, sp - adds r0, r1, r2 - ldr r1, [r3] - adds r1, 0x2 - adds r1, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x6 - ble _080D80B8 - mov r3, sp - adds r1, r3, r2 - movs r0, 0xFF - strb r0, [r1] - mov r4, sp -_080D80D6: - ldrh r1, [r5] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _080D80F0 - movs r1, 0x1 - adds r0, r7, 0 - eors r0, r1 - b _080D81C8 - .align 2, 0 -_080D80E8: .4byte gTrainerBattleOpponent_A -_080D80EC: .4byte gBattleResources -_080D80F0: - ldr r0, _080D8108 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080D810C - mov r0, sp - bl GetBattleTowerTrainerName - b _080D8382 - .align 2, 0 -_080D8108: .4byte gBattleTypeFlags -_080D810C: - movs r0, 0x80 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - beq _080D8120 - mov r0, sp - bl sub_815DA28 - mov r4, sp - b _080D8382 -_080D8120: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _080D8134 - mov r0, sp - bl CopyEReaderTrainerName5 - mov r4, sp - b _080D8382 -_080D8134: - ldr r2, _080D8158 @ =gTrainers - ldrh r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r0, r1, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0x51 - beq _080D814E - cmp r0, 0x59 - beq _080D814E - cmp r0, 0x5A - bne _080D815C -_080D814E: - movs r0, 0x6 - bl GetExpandedPlaceholder - adds r4, r0, 0 - b _080D8382 - .align 2, 0 -_080D8158: .4byte gTrainers -_080D815C: - adds r0, r2, 0x4 - adds r4, r1, r0 - b _080D8382 -_080D8162: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080D8170 @ =gLinkPlayers + 8 - adds r4, r0, r1 - b _080D8382 - .align 2, 0 -_080D8170: .4byte gLinkPlayers + 8 -_080D8174: - ldr r4, _080D8184 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x2 - b _080D81AA - .align 2, 0 -_080D8184: .4byte gLinkPlayers -_080D8188: - ldr r4, _080D8198 @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x1 - b _080D81AA - .align 2, 0 -_080D8198: .4byte gLinkPlayers -_080D819C: - ldr r4, _080D81BC @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x18] - movs r0, 0x3 -_080D81AA: - eors r0, r1 - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x8 - adds r4, r1, r4 - b _080D8382 - .align 2, 0 -_080D81BC: .4byte gLinkPlayers -_080D81C0: - ldr r0, _080D81D4 @ =gBattleScripting - ldrb r0, [r0, 0x17] - bl GetBattlerMultiplayerId -_080D81C8: - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080D81D8 @ =gLinkPlayers + 8 - adds r4, r1, r0 - b _080D8382 - .align 2, 0 -_080D81D4: .4byte gBattleScripting -_080D81D8: .4byte gLinkPlayers + 8 -_080D81DC: - ldr r0, _080D81E4 @ =gSaveBlock2Ptr - ldr r4, [r0] - b _080D8382 - .align 2, 0 -_080D81E4: .4byte gSaveBlock2Ptr -_080D81E8: - ldr r0, _080D8204 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _080D820C - ldr r4, _080D8208 @ =gStringVar4 - adds r0, r4, 0 - movs r1, 0 - bl sub_815DC40 - b _080D8382 - .align 2, 0 -_080D8204: .4byte gBattleTypeFlags -_080D8208: .4byte gStringVar4 -_080D820C: - bl GetTrainerALoseText - adds r4, r0, 0 - b _080D8382 -_080D8214: - ldr r0, _080D8230 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _080D8238 - ldr r4, _080D8234 @ =gStringVar4 - adds r0, r4, 0 - movs r1, 0 - bl sub_815DBF4 - b _080D8382 - .align 2, 0 -_080D8230: .4byte gBattleTypeFlags -_080D8234: .4byte gStringVar4 -_080D8238: - bl GetTrainerWonSpeech - adds r4, r0, 0 - b _080D8382 -_080D8240: - ldr r4, _080D824C @ =gStringVar4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_815DC40 - b _080D8382 - .align 2, 0 -_080D824C: .4byte gStringVar4 -_080D8250: - ldr r4, _080D825C @ =gStringVar4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_815DBF4 - b _080D8382 - .align 2, 0 -_080D825C: .4byte gStringVar4 -_080D8260: - ldr r0, _080D82B4 @ =gBattleScripting - ldrb r0, [r0, 0x17] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080D82CC - ldr r0, _080D82B8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x8 - ands r1, r0 - ldr r4, _080D82BC @ =gUnknown_83FD555 - cmp r1, 0 - beq _080D827E - ldr r4, _080D82C0 @ =gUnknown_83FD55B -_080D827E: - ldrb r1, [r4] - adds r0, r1, 0 - ldr r5, _080D82C4 @ =gEnemyParty - mov r12, r5 - ldr r2, _080D82C8 @ =gBattleStruct - cmp r0, 0xFF - beq _080D829E -_080D828C: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D828C -_080D829E: - ldr r0, [r2] - adds r0, 0x52 - ldrb r1, [r0] -_080D82A4: - movs r0, 0x64 - muls r0, r1 - add r0, r12 -_080D82AA: - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _080D82E4 - .align 2, 0 -_080D82B4: .4byte gBattleScripting -_080D82B8: .4byte gBattleTypeFlags -_080D82BC: .4byte gUnknown_83FD555 -_080D82C0: .4byte gUnknown_83FD55B -_080D82C4: .4byte gEnemyParty -_080D82C8: .4byte gBattleStruct -_080D82CC: - ldr r0, _080D82F0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x52 - ldrb r1, [r0] -_080D82D4: - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D82F4 @ =gPlayerParty -_080D82DA: - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_080D82E4: - mov r0, sp - bl StringGetEnd10 - mov r4, sp - b _080D8382 - .align 2, 0 -_080D82F0: .4byte gBattleStruct -_080D82F4: .4byte gPlayerParty -_080D82F8: - ldr r0, _080D830C @ =0x00000834 - bl FlagGet - lsls r0, 24 - ldr r4, _080D8310 @ =gUnknown_83FD81A - cmp r0, 0 - beq _080D8382 - ldr r4, _080D8314 @ =gUnknown_83FD824 - b _080D8382 - .align 2, 0 -_080D830C: .4byte 0x00000834 -_080D8310: .4byte gUnknown_83FD81A -_080D8314: .4byte gUnknown_83FD824 -_080D8318: - ldr r0, _080D831C @ =gBattlerAttacker - b _080D8322 - .align 2, 0 -_080D831C: .4byte gBattlerAttacker -_080D8320: - ldr r0, _080D8334 @ =gBattlerTarget -_080D8322: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldr r4, _080D8338 @ =gUnknown_83FD569 - cmp r0, 0 - bne _080D8382 - ldr r4, _080D833C @ =gUnknown_83FD56D - b _080D8382 - .align 2, 0 -_080D8334: .4byte gBattlerTarget -_080D8338: .4byte gUnknown_83FD569 -_080D833C: .4byte gUnknown_83FD56D -_080D8340: - ldr r0, _080D8344 @ =gBattlerAttacker - b _080D834A - .align 2, 0 -_080D8344: .4byte gBattlerAttacker -_080D8348: - ldr r0, _080D835C @ =gBattlerTarget -_080D834A: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldr r4, _080D8360 @ =gUnknown_83FD560 - cmp r0, 0 - bne _080D8382 - ldr r4, _080D8364 @ =gUnknown_83FD564 - b _080D8382 - .align 2, 0 -_080D835C: .4byte gBattlerTarget -_080D8360: .4byte gUnknown_83FD560 -_080D8364: .4byte gUnknown_83FD564 -_080D8368: - ldr r0, _080D836C @ =gBattlerAttacker - b _080D8372 - .align 2, 0 -_080D836C: .4byte gBattlerAttacker -_080D8370: - ldr r0, _080D83D4 @ =gBattlerTarget -_080D8372: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldr r4, _080D83D8 @ =gUnknown_83FD572 - cmp r0, 0 - bne _080D8382 - ldr r4, _080D83DC @ =gUnknown_83FD576 -_080D8382: - ldrb r1, [r4] - adds r0, r1, 0 - mov r5, r9 - ldrb r2, [r5] - mov r3, r9 - adds r3, 0x1 - cmp r0, 0xFF - beq _080D83A4 -_080D8392: - mov r5, r8 - adds r0, r5, r6 - strb r1, [r0] - adds r6, 0x1 - adds r4, 0x1 - ldrb r1, [r4] - adds r0, r1, 0 - cmp r0, 0xFF - bne _080D8392 -_080D83A4: - adds r0, r2, 0 - subs r0, 0x24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080D83BC - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x2E - beq _080D83BC - cmp r0, 0x2F - bne _080D83EC -_080D83BC: - mov r0, r8 - adds r1, r0, r6 - movs r0, 0xFC - strb r0, [r1] - adds r6, 0x1 - mov r2, r8 - adds r1, r2, r6 - movs r0, 0x9 - strb r0, [r1] - adds r6, 0x1 - b _080D83EC - .align 2, 0 -_080D83D4: .4byte gBattlerTarget -_080D83D8: .4byte gUnknown_83FD572 -_080D83DC: .4byte gUnknown_83FD576 -_080D83E0: - mov r3, r8 - adds r0, r3, r6 - strb r1, [r0] - adds r6, 0x1 - mov r3, r9 - adds r3, 0x1 -_080D83EC: - mov r9, r3 - ldrb r1, [r3] -_080D83F0: - adds r0, r1, 0 - cmp r0, 0xFF - beq _080D83FA - bl _080D788A -_080D83FA: - mov r5, r8 - adds r1, r5, r6 - mov r2, r9 - ldrb r0, [r2] - strb r0, [r1] - adds r6, 0x1 - adds r0, r6, 0 - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end BattleStringExpandPlaceholders - thumb_func_start ExpandBattleTextBuffPlaceholders ExpandBattleTextBuffPlaceholders: @ 80D8418 push {r4-r7,lr} @@ -2332,15 +158,15 @@ _080D8538: ands r0, r1 cmp r0, 0 beq _080D8558 - ldr r1, _080D8554 @ =gUnknown_83FD55B + ldr r1, _080D8554 @ =sText_FoePkmnPrefix adds r0, r6, 0 bl StringAppend b _080D8560 .align 2, 0 _080D8550: .4byte gBattleTypeFlags -_080D8554: .4byte gUnknown_83FD55B +_080D8554: .4byte sText_FoePkmnPrefix _080D8558: - ldr r1, _080D8584 @ =gUnknown_83FD555 + ldr r1, _080D8584 @ =sText_WildPkmnPrefix adds r0, r6, 0 bl StringAppend _080D8560: @@ -2361,7 +187,7 @@ _080D8574: bl StringAppend b _080D86AE .align 2, 0 -_080D8584: .4byte gUnknown_83FD555 +_080D8584: .4byte sText_WildPkmnPrefix _080D8588: .4byte gEnemyParty _080D858C: ldr r1, _080D859C @ =gUnknown_83FD5D0 @@ -2475,7 +301,7 @@ _080D8628: adds r1, r0 adds r0, r6, 0 bl StringCopy - ldr r1, _080D8688 @ =gUnknown_83FD8AF + ldr r1, _080D8688 @ =sText_BerrySuffix b _080D868E .align 2, 0 _080D8674: .4byte gBattleTypeFlags @@ -2483,15 +309,15 @@ _080D8678: .4byte gLinkPlayers _080D867C: .4byte gBattleStruct _080D8680: .4byte gPotentialItemEffectBattler _080D8684: .4byte gEnigmaBerries -_080D8688: .4byte gUnknown_83FD8AF +_080D8688: .4byte sText_BerrySuffix _080D868C: - ldr r1, _080D8698 @ =gUnknown_83FD8A2 + ldr r1, _080D8698 @ =sText_EnigmaBerry _080D868E: adds r0, r6, 0 bl StringAppend b _080D86AE .align 2, 0 -_080D8698: .4byte gUnknown_83FD8A2 +_080D8698: .4byte sText_EnigmaBerry _080D869C: adds r0, r2, 0 adds r1, r6, 0 @@ -2518,12 +344,12 @@ _080D86BA: bx r0 thumb_func_end ExpandBattleTextBuffPlaceholders - thumb_func_start sub_80D86C8 -sub_80D86C8: @ 80D86C8 + thumb_func_start ChooseMoveUsedParticle +ChooseMoveUsedParticle: @ 80D86C8 push {r4,r5,lr} adds r4, r0, 0 movs r2, 0 - ldr r5, _080D86FC @ =gUnknown_2039A34 + ldr r5, _080D86FC @ =gBattleMsgDataPtr ldr r3, _080D8700 @ =gUnknown_83FEA70 _080D86D2: cmp r2, 0x4 @@ -2548,7 +374,7 @@ _080D86E8: bl StringCopy b _080D8714 .align 2, 0 -_080D86FC: .4byte gUnknown_2039A34 +_080D86FC: .4byte gBattleMsgDataPtr _080D8700: .4byte gUnknown_83FEA70 _080D8704: .4byte gUnknown_83FE88B _080D8708: @@ -2563,10 +389,10 @@ _080D8714: bx r0 .align 2, 0 _080D871C: .4byte gUnknown_83FE88F - thumb_func_end sub_80D86C8 + thumb_func_end ChooseMoveUsedParticle - thumb_func_start sub_80D8720 -sub_80D8720: @ 80D8720 + thumb_func_start ChooseTypeOfMoveUsedString +ChooseTypeOfMoveUsedString: @ 80D8720 push {r4,r5,lr} adds r3, r0, 0 movs r4, 0 @@ -2578,7 +404,7 @@ _080D872A: cmp r0, 0xFF bne _080D8728 ldr r1, _080D8760 @ =gUnknown_83FEA70 - ldr r5, _080D8764 @ =gUnknown_2039A34 + ldr r5, _080D8764 @ =gBattleMsgDataPtr movs r0, 0 lsls r0, 1 adds r2, r0, r1 @@ -2605,7 +431,7 @@ _080D8754: mov pc, r0 .align 2, 0 _080D8760: .4byte gUnknown_83FEA70 -_080D8764: .4byte gUnknown_2039A34 +_080D8764: .4byte gBattleMsgDataPtr _080D8768: .4byte _080D876C .align 2, 0 _080D876C: @@ -2615,30 +441,30 @@ _080D876C: .4byte _080D8798 .4byte _080D87A8 _080D8780: - ldr r1, _080D8784 @ =gUnknown_83FD586 + ldr r1, _080D8784 @ =sText_ExclamationMark b _080D879A .align 2, 0 -_080D8784: .4byte gUnknown_83FD586 +_080D8784: .4byte sText_ExclamationMark _080D8788: - ldr r1, _080D878C @ =gUnknown_83FD588 + ldr r1, _080D878C @ =sText_ExclamationMark2 b _080D879A .align 2, 0 -_080D878C: .4byte gUnknown_83FD588 +_080D878C: .4byte sText_ExclamationMark2 _080D8790: - ldr r1, _080D8794 @ =gUnknown_83FD58A + ldr r1, _080D8794 @ =sText_ExclamationMark3 b _080D879A .align 2, 0 -_080D8794: .4byte gUnknown_83FD58A +_080D8794: .4byte sText_ExclamationMark3 _080D8798: - ldr r1, _080D87A4 @ =gUnknown_83FD58C + ldr r1, _080D87A4 @ =sText_ExclamationMark4 _080D879A: adds r0, r3, 0 bl StringCopy b _080D87B0 .align 2, 0 -_080D87A4: .4byte gUnknown_83FD58C +_080D87A4: .4byte sText_ExclamationMark4 _080D87A8: - ldr r1, _080D87B8 @ =gUnknown_83FD58E + ldr r1, _080D87B8 @ =sText_ExclamationMark5 adds r0, r3, 0 bl StringCopy _080D87B0: @@ -2646,8 +472,8 @@ _080D87B0: pop {r0} bx r0 .align 2, 0 -_080D87B8: .4byte gUnknown_83FD58E - thumb_func_end sub_80D8720 +_080D87B8: .4byte sText_ExclamationMark5 + thumb_func_end ChooseTypeOfMoveUsedString thumb_func_start BattlePutTextOnWindow BattlePutTextOnWindow: @ 80D87BC diff --git a/data/battle_message.s b/data/battle_message.s deleted file mode 100644 index 4f7576103..000000000 --- a/data/battle_message.s +++ /dev/null @@ -1,2923 +0,0 @@ -#include "constants/moves.h" -#include "constants/battle.h" -#include "battle_string_ids.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2, 0 - -gUnknown_83FB218:: @ 83FB218 - .string "$" - -gUnknown_83FB219:: @ 83FB219 - .string "{B_TRAINER1_LOSE_TEXT}$" - -gUnknown_83FB21C:: @ 83FB21C - .string "{B_TRAINER2_CLASS}$" - -gUnknown_83FB21F:: @ 83FB21F - .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!$" - -gUnknown_83FB232:: @ 83FB232 - .string "{B_TRAINER1_WIN_TEXT}$" - -gUnknown_83FB235:: @ 83FB235 - .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!$" - -gUnknown_83FB248:: @ 83FB248 - .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n" - .string "{B_OPPONENT_MON2_NAME}, come back!$" - -gUnknown_83FB262:: @ 83FB262 - .string "{B_TRAINER2_NAME}$" - -gUnknown_83FB265:: @ 83FB265 - .string "{B_BUFF1} gained{B_BUFF2}\n" - .string "{B_TRAINER2_LOSE_TEXT} EXP. Points!\p" - .string "$" - -gUnknown_83FB282:: @ 83FB282 - .string "$" - -gUnknown_83FB283:: @ 83FB283 - .string " a boosted$" - -gUnknown_83FB28E:: @ 83FB28E - .string "{B_BUFF1} grew to\n" - .string "LV. {B_BUFF2}!{WAIT_SE}\p" - .string "$" - -gUnknown_83FB2A4:: @ 83FB2A4 - .string "{B_BUFF1} learned\n" - .string "{B_BUFF2}!{WAIT_SE}\p" - .string "$" - -gUnknown_83FB2B6:: @ 83FB2B6 - .string "{B_BUFF1} is trying to\n" - .string "learn {B_BUFF2}.\p" - .string "$" - -gUnknown_83FB2D1:: @ 83FB2D1 - .string "But, {B_BUFF1} can't learn\n" - .string "more than four moves.\p" - .string "$" - -gUnknown_83FB2FC:: @ 83FB2FC - .string "Delete a move to make\n" - .string "room for {B_BUFF2}?$" - -gUnknown_83FB31F:: @ 83FB31F - .string "{B_BUFF1} forgot\n" - .string "{B_BUFF2}.\p" - .string "$" - -gUnknown_83FB32E:: @ 83FB32E - .string "{PAUSE 32}Stop learning\n" - .string "{B_BUFF2}?$" - -gUnknown_83FB343:: @ 83FB343 - .string "{B_BUFF1} did not learn\n" - .string "{B_BUFF2}.\p" - .string "$" - -gUnknown_83FB359:: @ 83FB359 - .string "Use next POKéMON?$" - -gUnknown_83FB36B:: @ 83FB36B - .string "{B_ATK_NAME_WITH_PREFIX}'s\n" - .string "attack missed!$" - -gUnknown_83FB37F:: @ 83FB37F - .string "{B_DEF_NAME_WITH_PREFIX}\n" - .string "protected itself!$" - -gUnknown_83FB394:: @ 83FB394 - .string "{B_DEF_NAME_WITH_PREFIX} avoided\n" - .string "damage with {B_DEF_ABILITY}!$" - -gUnknown_83FB3AF:: @ 83FB3AF - .string "{B_DEF_NAME_WITH_PREFIX} makes GROUND\n" - .string "moves miss with {B_DEF_ABILITY}!$" - -gUnknown_83FB3D3:: @ 83FB3D3 - .string "{B_DEF_NAME_WITH_PREFIX} avoided\n" - .string "the attack!$" - -gUnknown_83FB3EA:: @ 83FB3EA - .string "It doesn't affect\n" - .string "{B_DEF_NAME_WITH_PREFIX}…$" - -gUnknown_83FB400:: @ 83FB400 - .string "{B_ATK_NAME_WITH_PREFIX}\n" - .string "fainted!\p" - .string "$" - -gUnknown_83FB40D:: @ 83FB40D - .string "{B_DEF_NAME_WITH_PREFIX}\n" - .string "fainted!\p" - .string "$" - -gUnknown_83FB41A:: @ 83FB41A - .string "{B_PLAYER_NAME} got ¥{B_BUFF1}\n" - .string "for winning!\p" - .string "$" - -gUnknown_83FB433:: @ 83FB433 - .string "{B_PLAYER_NAME} is out of\n" - .string "usable POKéMON!\p" - .string "$" - -gUnknown_83FB451:: @ 83FB451 - .string "{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p" - .string "… … … …\p" - .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$" - -gUnknown_83FB484:: @ 83FB484 - .string "{B_PLAYER_NAME} is out of\n" - .string "usable POKéMON!\p" - .string "Player lost against\n" - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}$" - -gUnknown_83FB4BE:: @ 83FB4BE - .string "{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\n" - .string "money…\p" - .string "… … … …\p" - .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$" - -gUnknown_83FB4F7:: @ 83FB4F7 - .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$" - -gUnknown_83FB508:: @ 83FB508 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\n" - .string "escape with {B_SCR_ACTIVE_ABILITY}!\p" - .string "$" - -gUnknown_83FB525:: @ 83FB525 - .string "Can't escape!\p" - .string "$" - -gUnknown_83FB534:: @ 83FB534 - .string "{B_ATK_NAME_WITH_PREFIX} can't escape!$" - -gUnknown_83FB545:: @ 83FB545 - .string "Hit {B_BUFF1} time(s)!$" - -gUnknown_83FB555:: @ 83FB555 - .string "{B_EFF_NAME_WITH_PREFIX}\n" - .string "fell asleep!$" - -gUnknown_83FB565:: @ 83FB565 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "made {B_EFF_NAME_WITH_PREFIX} sleep!$" - -gUnknown_83FB57C:: @ 83FB57C - .string "{B_DEF_NAME_WITH_PREFIX} is\n" - .string "already asleep!$" - -gUnknown_83FB592:: @ 83FB592 - .string "{B_ATK_NAME_WITH_PREFIX} is\n" - .string "already asleep!$" - -gUnknown_83FB5A8:: @ 83FB5A8 - .string "{B_DEF_NAME_WITH_PREFIX}\n" - .string "wasn't affected!$" - -gUnknown_83FB5BC:: @ 83FB5BC - .string "{B_EFF_NAME_WITH_PREFIX}\n" - .string "was poisoned!$" - -gUnknown_83FB5CD:: @ 83FB5CD - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "poisoned {B_EFF_NAME_WITH_PREFIX}!$" - -gUnknown_83FB5E2:: @ 83FB5E2 - .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n" - .string "by poison!$" - -gUnknown_83FB5F8:: @ 83FB5F8 - .string "{B_DEF_NAME_WITH_PREFIX} is already\n" - .string "poisoned.$" - -gUnknown_83FB610:: @ 83FB610 - .string "{B_EFF_NAME_WITH_PREFIX} is badly\n" - .string "poisoned!$" - -gUnknown_83FB626:: @ 83FB626 - .string "{B_DEF_NAME_WITH_PREFIX} had its\n" - .string "energy drained!$" - -gUnknown_83FB641:: @ 83FB641 - .string "{B_EFF_NAME_WITH_PREFIX} was burned!$" - -gUnknown_83FB650:: @ 83FB650 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "burned {B_EFF_NAME_WITH_PREFIX}!$" - -gUnknown_83FB663:: @ 83FB663 - .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n" - .string "by its burn!$" - -gUnknown_83FB67B:: @ 83FB67B - .string "{B_DEF_NAME_WITH_PREFIX} already\n" - .string "has a burn.$" - -gUnknown_83FB692:: @ 83FB692 - .string "{B_EFF_NAME_WITH_PREFIX} was\n" - .string "frozen solid!$" - -gUnknown_83FB6A7:: @ 83FB6A7 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "froze {B_EFF_NAME_WITH_PREFIX} solid!$" - -gUnknown_83FB6BF:: @ 83FB6BF - .string "{B_ATK_NAME_WITH_PREFIX} is\n" - .string "frozen solid!$" - -gUnknown_83FB6D3:: @ 83FB6D3 - .string "{B_DEF_NAME_WITH_PREFIX} was\n" - .string "defrosted!$" - -gUnknown_83FB6E5:: @ 83FB6E5 - .string "{B_ATK_NAME_WITH_PREFIX} was\n" - .string "defrosted!$" - -gUnknown_83FB6F7:: @ 83FB6F7 - .string "{B_ATK_NAME_WITH_PREFIX} was\n" - .string "defrosted by {B_CURRENT_MOVE}!$" - -gUnknown_83FB70F:: @ 83FB70F - .string "{B_EFF_NAME_WITH_PREFIX} is paralyzed!\n" - .string "It may be unable to move!$" - -gUnknown_83FB73A:: @ 83FB73A - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "paralyzed {B_EFF_NAME_WITH_PREFIX}!\l" - .string "It may be unable to move!$" - -gUnknown_83FB76A:: @ 83FB76A - .string "{B_ATK_NAME_WITH_PREFIX} is paralyzed!\n" - .string "It can't move!$" - -gUnknown_83FB78A:: @ 83FB78A - .string "{B_DEF_NAME_WITH_PREFIX} is\n" - .string "already paralyzed!$" - -gUnknown_83FB7A3:: @ 83FB7A3 - .string "{B_DEF_NAME_WITH_PREFIX} was\n" - .string "healed of paralysis!$" - -gUnknown_83FB7BF:: @ 83FB7BF - .string "{B_DEF_NAME_WITH_PREFIX}'s\n" - .string "dream was eaten!$" - -gUnknown_83FB7D5:: @ 83FB7D5 - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "won't go higher!$" - -gUnknown_83FB7EE:: @ 83FB7EE - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "won't go lower!$" - -gUnknown_83FB806:: @ 83FB806 - .string "Your team's {B_BUFF1}\n" - .string "stopped working!$" - -gUnknown_83FB826:: @ 83FB826 - .string "The foe's {B_BUFF1}\n" - .string "stopped working!$" - -gUnknown_83FB844:: @ 83FB844 - .string "{B_ATK_NAME_WITH_PREFIX} is\n" - .string "confused!$" - -gUnknown_83FB854:: @ 83FB854 - .string "{B_ATK_NAME_WITH_PREFIX} snapped\n" - .string "out of confusion!$" - -gUnknown_83FB871:: @ 83FB871 - .string "{B_EFF_NAME_WITH_PREFIX} became\n" - .string "confused!$" - -gUnknown_83FB885:: @ 83FB885 - .string "{B_DEF_NAME_WITH_PREFIX} is\n" - .string "already confused!$" - -gUnknown_83FB89D:: @ 83FB89D - .string "{B_DEF_NAME_WITH_PREFIX}\n" - .string "fell in love!$" - -gUnknown_83FB8AE:: @ 83FB8AE - .string "{B_ATK_NAME_WITH_PREFIX} is in love\n" - .string "with {B_SCR_ACTIVE_NAME_WITH_PREFIX}!$" - -gUnknown_83FB8C5:: @ 83FB8C5 - .string "{B_ATK_NAME_WITH_PREFIX} is\n" - .string "immobilized by love!$" - -gUnknown_83FB8E0:: @ 83FB8E0 - .string "{B_DEF_NAME_WITH_PREFIX} was\n" - .string "blown away!$" - -gUnknown_83FB8F3:: @ 83FB8F3 - .string "{B_ATK_NAME_WITH_PREFIX} transformed\n" - .string "into the {B_BUFF1} type!$" - -gUnknown_83FB914:: @ 83FB914 - .string "{B_ATK_NAME_WITH_PREFIX} flinched!$" - -gUnknown_83FB921:: @ 83FB921 - .string "{B_DEF_NAME_WITH_PREFIX} regained\n" - .string "health!$" - -gUnknown_83FB935:: @ 83FB935 - .string "{B_DEF_NAME_WITH_PREFIX}'s\n" - .string "HP is full!$" - -gUnknown_83FB946:: @ 83FB946 - .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n" - .string "raised SP. DEF!$" - -gUnknown_83FB95E:: @ 83FB95E - .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n" - .string "raised SP. DEF a little!$" - -gUnknown_83FB97F:: @ 83FB97F - .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n" - .string "raised DEFENSE!$" - -gUnknown_83FB997:: @ 83FB997 - .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n" - .string "raised DEFENSE a little!$" - -gUnknown_83FB9B8:: @ 83FB9B8 - .string "{B_ATK_PREFIX2}'s party is covered\n" - .string "by a veil!$" - -gUnknown_83FB9D9:: @ 83FB9D9 - .string "{B_DEF_NAME_WITH_PREFIX}'s party is protected\n" - .string "by SAFEGUARD!$" - -gUnknown_83FB9FF:: @ 83FB9FF - .string "{B_ATK_PREFIX3}'s party is no longer\n" - .string "protected by SAFEGUARD!$" - -gUnknown_83FBA2F:: @ 83FBA2F - .string "{B_ATK_NAME_WITH_PREFIX} went\n" - .string "to sleep!$" - -gUnknown_83FBA41:: @ 83FBA41 - .string "{B_ATK_NAME_WITH_PREFIX} slept and\n" - .string "became healthy!$" - -gUnknown_83FBA5E:: @ 83FBA5E - .string "{B_ATK_NAME_WITH_PREFIX} whipped\n" - .string "up a whirlwind!$" - -gUnknown_83FBA79:: @ 83FBA79 - .string "{B_ATK_NAME_WITH_PREFIX} took\n" - .string "in sunlight!$" - -gUnknown_83FBA8E:: @ 83FBA8E - .string "{B_ATK_NAME_WITH_PREFIX} lowered\n" - .string "its head!$" - -gUnknown_83FBAA3:: @ 83FBAA3 - .string "{B_ATK_NAME_WITH_PREFIX} is glowing!$" - -gUnknown_83FBAB2:: @ 83FBAB2 - .string "{B_ATK_NAME_WITH_PREFIX} flew\n" - .string "up high!$" - -gUnknown_83FBAC3:: @ 83FBAC3 - .string "{B_ATK_NAME_WITH_PREFIX} dug a hole!$" - -gUnknown_83FBAD2:: @ 83FBAD2 - .string "{B_ATK_NAME_WITH_PREFIX} hid\n" - .string "underwater!$" - -gUnknown_83FBAE5:: @ 83FBAE5 - .string "{B_ATK_NAME_WITH_PREFIX} sprang up!$" - -gUnknown_83FBAF3:: @ 83FBAF3 - .string "{B_DEF_NAME_WITH_PREFIX} was squeezed by\n" - .string "{B_ATK_NAME_WITH_PREFIX}'s BIND!$" - -gUnknown_83FBB11:: @ 83FBB11 - .string "{B_DEF_NAME_WITH_PREFIX} was trapped\n" - .string "in the vortex!$" - -gUnknown_83FBB2F:: @ 83FBB2F - .string "{B_DEF_NAME_WITH_PREFIX} was trapped\n" - .string "by SAND TOMB!$" - -gUnknown_83FBB4C:: @ 83FBB4C - .string "{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n" - .string "{B_ATK_NAME_WITH_PREFIX}!$" - -gUnknown_83FBB62:: @ 83FBB62 - .string "{B_ATK_NAME_WITH_PREFIX} CLAMPED\n" - .string "{B_DEF_NAME_WITH_PREFIX}!$" - -gUnknown_83FBB71:: @ 83FBB71 - .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n" - .string "by {B_BUFF1}!$" - -gUnknown_83FBB83:: @ 83FBB83 - .string "{B_ATK_NAME_WITH_PREFIX} was freed\n" - .string "from {B_BUFF1}!$" - -gUnknown_83FBB99:: @ 83FBB99 - .string "{B_ATK_NAME_WITH_PREFIX} kept going\n" - .string "and crashed!$" - -BattleText_MistShroud:: @ 83FBBB4 - .string "{B_ATK_PREFIX2} became\n" - .string "shrouded in MIST!$" - -gUnknown_83FBBD0:: @ 83FBBD0 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\n" - .string "by MIST!$" - -BattleText_GetPumped:: @ 83FBBE9 - .string "{B_ATK_NAME_WITH_PREFIX} is getting\n" - .string "pumped!$" - -gUnknown_83FBBFF:: @ 83FBBFF - .string "{B_ATK_NAME_WITH_PREFIX} is hit\n" - .string "with recoil!$" - -gUnknown_83FBC16:: @ 83FBC16 - .string "{B_ATK_NAME_WITH_PREFIX} protected\n" - .string "itself!$" - -gUnknown_83FBC2B:: @ 83FBC2B - .string "{B_ATK_NAME_WITH_PREFIX} is buffeted\n" - .string "by the sandstorm!$" - -gUnknown_83FBC4C:: @ 83FBC4C - .string "{B_ATK_NAME_WITH_PREFIX} is pelted\n" - .string "by HAIL!$" - -gUnknown_83FBC62:: @ 83FBC62 - .string "{B_ATK_PREFIX1}'s {B_BUFF1}\n" - .string "wore off!$" - -gUnknown_83FBC74:: @ 83FBC74 - .string "{B_DEF_NAME_WITH_PREFIX} was seeded!$" - -gUnknown_83FBC83:: @ 83FBC83 - .string "{B_DEF_NAME_WITH_PREFIX} evaded\n" - .string "the attack!$" - -gUnknown_83FBC99:: @ 83FBC99 - .string "{B_ATK_NAME_WITH_PREFIX}'s health is\n" - .string "sapped by LEECH SEED!$" - -gUnknown_83FBCBE:: @ 83FBCBE - .string "{B_ATK_NAME_WITH_PREFIX} is fast\n" - .string "asleep.$" - -gUnknown_83FBCD1:: @ 83FBCD1 - .string "{B_ATK_NAME_WITH_PREFIX} woke up!$" - -gUnknown_83FBCDD:: @ 83FBCDD - .string "But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR\n" - .string "kept it awake!$" - -gUnknown_83FBCFC:: @ 83FBCFC - .string "{B_ATK_NAME_WITH_PREFIX} woke up\n" - .string "in the UPROAR!$" - -gUnknown_83FBD16:: @ 83FBD16 - .string "{B_ATK_NAME_WITH_PREFIX} caused\n" - .string "an UPROAR!$" - -gUnknown_83FBD2B:: @ 83FBD2B - .string "{B_ATK_NAME_WITH_PREFIX} is making\n" - .string "an UPROAR!$" - -gUnknown_83FBD43:: @ 83FBD43 - .string "{B_ATK_NAME_WITH_PREFIX} calmed down.$" - -gUnknown_83FBD53:: @ 83FBD53 - .string "But {B_DEF_NAME_WITH_PREFIX} can't\n" - .string "sleep in an UPROAR!$" - -gUnknown_83FBD74:: @ 83FBD74 - .string "{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n" - .string "{B_BUFF1}!$" - -gUnknown_83FBD86:: @ 83FBD86 - .string "{B_ATK_NAME_WITH_PREFIX} can't\n" - .string "STOCKPILE any more!$" - -gUnknown_83FBDA3:: @ 83FBDA3 - .string "But {B_DEF_NAME_WITH_PREFIX} can't\n" - .string "sleep in an UPROAR!$" - -gUnknown_83FBDC4:: @ 83FBDC4 - .string "But the UPROAR kept\n" - .string "{B_DEF_NAME_WITH_PREFIX} awake!$" - -gUnknown_83FBDE2:: @ 83FBDE2 - .string "{B_DEF_NAME_WITH_PREFIX} stayed awake\n" - .string "using its {B_DEF_ABILITY}!$" - -gUnknown_83FBE00:: @ 83FBE00 - .string "{B_ATK_NAME_WITH_PREFIX} is storing\n" - .string "energy!$" - -gUnknown_83FBE16:: @ 83FBE16 - .string "{B_ATK_NAME_WITH_PREFIX} unleashed\n" - .string "energy!$" - -gUnknown_83FBE2B:: @ 83FBE2B - .string "{B_ATK_NAME_WITH_PREFIX} became\n" - .string "confused due to fatigue!$" - -gUnknown_83FBE4E:: @ 83FBE4E - .string "{B_PLAYER_NAME} picked up\n" - .string "¥{B_BUFF1}!\p" - .string "$" - -gUnknown_83FBE61:: @ 83FBE61 - .string "{B_DEF_NAME_WITH_PREFIX} is\n" - .string "unaffected!$" - -gUnknown_83FBE73:: @ 83FBE73 - .string "{B_ATK_NAME_WITH_PREFIX} transformed\n" - .string "into {B_BUFF1}!$" - -gUnknown_83FBE8B:: @ 83FBE8B - .string "{B_ATK_NAME_WITH_PREFIX} made\n" - .string "a SUBSTITUTE!$" - -gUnknown_83FBEA1:: @ 83FBEA1 - .string "{B_ATK_NAME_WITH_PREFIX} already\n" - .string "has a SUBSTITUTE!$" - -gUnknown_83FBEBE:: @ 83FBEBE - .string "The SUBSTITUTE took damage\n" - .string "for {B_DEF_NAME_WITH_PREFIX}!\p" - .string "$" - -gUnknown_83FBEE2:: @ 83FBEE2 - .string "{B_DEF_NAME_WITH_PREFIX}'s\n" - .string "SUBSTITUTE faded!\p" - .string "$" - -gUnknown_83FBEFA:: @ 83FBEFA - .string "{B_ATK_NAME_WITH_PREFIX} must\n" - .string "recharge!$" - -gUnknown_83FBF0C:: @ 83FBF0C - .string "{B_DEF_NAME_WITH_PREFIX}'s RAGE\n" - .string "is building!$" - -gUnknown_83FBF23:: @ 83FBF23 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "was disabled!$" - -gUnknown_83FBF39:: @ 83FBF39 - .string "{B_ATK_NAME_WITH_PREFIX} is disabled\n" - .string "no more!$" - -gUnknown_83FBF51:: @ 83FBF51 - .string "{B_DEF_NAME_WITH_PREFIX} got\n" - .string "an ENCORE!$" - -gUnknown_83FBF63:: @ 83FBF63 - .string "{B_ATK_NAME_WITH_PREFIX}'s ENCORE\n" - .string "ended!$" - -gUnknown_83FBF76:: @ 83FBF76 - .string "{B_ATK_NAME_WITH_PREFIX} took aim\n" - .string "at {B_DEF_NAME_WITH_PREFIX}!$" - -gUnknown_83FBF89:: @ 83FBF89 - .string "{B_ATK_NAME_WITH_PREFIX} SKETCHED\n" - .string "{B_BUFF1}!$" - -gUnknown_83FBF99:: @ 83FBF99 - .string "{B_ATK_NAME_WITH_PREFIX} is trying\n" - .string "to take its foe with it!$" - -gUnknown_83FBFBF:: @ 83FBFBF - .string "{B_DEF_NAME_WITH_PREFIX} took\n" - .string "{B_ATK_NAME_WITH_PREFIX} with it!$" - -gUnknown_83FBFD3:: @ 83FBFD3 - .string "Reduced {B_DEF_NAME_WITH_PREFIX}'s\n" - .string "{B_BUFF1} by {B_BUFF2}!$" - -gUnknown_83FBFEA:: @ 83FBFEA - .string "{B_ATK_NAME_WITH_PREFIX} stole\n" - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!$" - -gUnknown_83FBFFC:: @ 83FBFFC - .string "{B_DEF_NAME_WITH_PREFIX} can't\n" - .string "escape now!$" - -gUnknown_83FC011:: @ 83FC011 - .string "{B_DEF_NAME_WITH_PREFIX} fell into\n" - .string "a NIGHTMARE!$" - -gUnknown_83FC02B:: @ 83FC02B - .string "{B_ATK_NAME_WITH_PREFIX} is locked\n" - .string "in a NIGHTMARE!$" - -gUnknown_83FC048:: @ 83FC048 - .string "{B_ATK_NAME_WITH_PREFIX} cut its own HP and\n" - .string "laid a CURSE on {B_DEF_NAME_WITH_PREFIX}!$" - -gUnknown_83FC072:: @ 83FC072 - .string "{B_ATK_NAME_WITH_PREFIX} is afflicted\n" - .string "by the CURSE!$" - -gUnknown_83FC090:: @ 83FC090 - .string "SPIKES were scattered all around\n" - .string "the opponent's side!$" - -gUnknown_83FC0C6:: @ 83FC0C6 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\n" - .string "by SPIKES!$" - -gUnknown_83FC0DC:: @ 83FC0DC - .string "{B_ATK_NAME_WITH_PREFIX} identified\n" - .string "{B_DEF_NAME_WITH_PREFIX}!$" - -gUnknown_83FC0EE:: @ 83FC0EE - .string "{B_ATK_NAME_WITH_PREFIX}'s PERISH count\n" - .string "fell to {B_BUFF1}!$" - -gUnknown_83FC10C:: @ 83FC10C - .string "{B_ATK_NAME_WITH_PREFIX} braced\n" - .string "itself!$" - -gUnknown_83FC11E:: @ 83FC11E - .string "{B_DEF_NAME_WITH_PREFIX} ENDURED\n" - .string "the hit!$" - -gUnknown_83FC132:: @ 83FC132 - .string "MAGNITUDE {B_BUFF1}!$" - -gUnknown_83FC140:: @ 83FC140 - .string "{B_ATK_NAME_WITH_PREFIX} cut its own HP\n" - .string "and maximized ATTACK!$" - -gUnknown_83FC168:: @ 83FC168 - .string "{B_ATK_NAME_WITH_PREFIX} copied\n" - .string "{B_DEF_NAME_WITH_PREFIX}'s stat changes!$" - -gUnknown_83FC185:: @ 83FC185 - .string "{B_ATK_NAME_WITH_PREFIX} got free of\n" - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!$" - -gUnknown_83FC19D:: @ 83FC19D - .string "{B_ATK_NAME_WITH_PREFIX} shed\n" - .string "LEECH SEED!$" - -gUnknown_83FC1B1:: @ 83FC1B1 - .string "{B_ATK_NAME_WITH_PREFIX} blew away\n" - .string "SPIKES!$" - -gUnknown_83FC1C6:: @ 83FC1C6 - .string "{B_ATK_NAME_WITH_PREFIX} fled from\n" - .string "battle!$" - -gUnknown_83FC1DB:: @ 83FC1DB - .string "{B_ATK_NAME_WITH_PREFIX} foresaw\n" - .string "an attack!$" - -gUnknown_83FC1F1:: @ 83FC1F1 - .string "{B_DEF_NAME_WITH_PREFIX} took the\n" - .string "{B_BUFF1} attack!$" - -gUnknown_83FC208:: @ 83FC208 - .string "{B_ATK_NAME_WITH_PREFIX} chose\n" - .string "{B_CURRENT_MOVE} as its destiny!$" - -gUnknown_83FC224:: @ 83FC224 - .string "{B_BUFF1}'s attack!$" - -gUnknown_83FC231:: @ 83FC231 - .string "{B_ATK_NAME_WITH_PREFIX} became the\n" - .string "center of attention!$" - -gUnknown_83FC254:: @ 83FC254 - .string "{B_ATK_NAME_WITH_PREFIX} began\n" - .string "charging power!$" - -gUnknown_83FC26D:: @ 83FC26D - .string "NATURE POWER turned into\n" - .string "{B_CURRENT_MOVE}!$" - -gUnknown_83FC28A:: @ 83FC28A - .string "{B_ATK_NAME_WITH_PREFIX}'s status\n" - .string "returned to normal!$" - -gUnknown_83FC2AA:: @ 83FC2AA - .string "{B_DEF_NAME_WITH_PREFIX} was subjected\n" - .string "to TORMENT!$" - -gUnknown_83FC2C7:: @ 83FC2C7 - .string "{B_ATK_NAME_WITH_PREFIX} is tightening\n" - .string "its focus!$" - -gUnknown_83FC2E3:: @ 83FC2E3 - .string "{B_DEF_NAME_WITH_PREFIX} fell for\n" - .string "the TAUNT!$" - -gUnknown_83FC2FA:: @ 83FC2FA - .string "{B_ATK_NAME_WITH_PREFIX} is ready to\n" - .string "help {B_DEF_NAME_WITH_PREFIX}!$" - -gUnknown_83FC312:: @ 83FC312 - .string "{B_ATK_NAME_WITH_PREFIX} switched\n" - .string "items with its opponent!$" - -gUnknown_83FC337:: @ 83FC337 - .string "{B_ATK_NAME_WITH_PREFIX} obtained\n" - .string "{B_BUFF1}.$" - -gUnknown_83FC347:: @ 83FC347 - .string "{B_DEF_NAME_WITH_PREFIX} obtained\n" - .string "{B_BUFF2}.$" - -gUnknown_83FC357:: @ 83FC357 - .string "{B_ATK_NAME_WITH_PREFIX} obtained\n" - .string "{B_BUFF1}.\p" - .string "{B_DEF_NAME_WITH_PREFIX} obtained\n" - .string "{B_BUFF2}.$" - -gUnknown_83FC377:: @ 83FC377 - .string "{B_ATK_NAME_WITH_PREFIX} copied\n" - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!$" - -gUnknown_83FC38A:: @ 83FC38A - .string "{B_ATK_NAME_WITH_PREFIX} made a WISH!$" - -gUnknown_83FC39A:: @ 83FC39A - .string "{B_BUFF1}'s WISH\n" - .string "came true!$" - -gUnknown_83FC3AF:: @ 83FC3AF - .string "{B_ATK_NAME_WITH_PREFIX} planted its roots!$" - -gUnknown_83FC3C5:: @ 83FC3C5 - .string "{B_ATK_NAME_WITH_PREFIX} absorbed\n" - .string "nutrients with its roots!$" - -gUnknown_83FC3EB:: @ 83FC3EB - .string "{B_DEF_NAME_WITH_PREFIX} anchored\n" - .string "itself with its roots!$" - -gUnknown_83FC40E:: @ 83FC40E - .string "{B_ATK_NAME_WITH_PREFIX} made\n" - .string "{B_DEF_NAME_WITH_PREFIX} drowsy!$" - -gUnknown_83FC421:: @ 83FC421 - .string "{B_ATK_NAME_WITH_PREFIX} knocked off\n" - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!$" - -gUnknown_83FC439:: @ 83FC439 - .string "{B_ATK_NAME_WITH_PREFIX} swapped abilities\n" - .string "with its opponent!$" - -gUnknown_83FC461:: @ 83FC461 - .string "{B_ATK_NAME_WITH_PREFIX} sealed the\n" - .string "opponent's moveシsス!$" - -gUnknown_83FC483:: @ 83FC483 - .string "{B_ATK_NAME_WITH_PREFIX} wants the\n" - .string "opponent to bear a GRUDGE!$" - -gUnknown_83FC4AB:: @ 83FC4AB - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\n" - .string "all its PP due to the GRUDGE!$" - -gUnknown_83FC4D6:: @ 83FC4D6 - .string "{B_ATK_NAME_WITH_PREFIX} shrouded\n" - .string "itself in {B_CURRENT_MOVE}!$" - -gUnknown_83FC4F0:: @ 83FC4F0 - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\n" - .string "was bounced back by MAGIC COAT!$" - -gUnknown_83FC518:: @ 83FC518 - .string "{B_ATK_NAME_WITH_PREFIX} waits for its foe\n" - .string "to make a move!$" - -gUnknown_83FC53D:: @ 83FC53D - .string "{B_DEF_NAME_WITH_PREFIX} SNATCHED\n" - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!$" - -gUnknown_83FC554:: @ 83FC554 - .string "Electricity's power was\n" - .string "weakened!$" - -gUnknown_83FC576:: @ 83FC576 - .string "Fire's power was\n" - .string "weakened!$" - -gUnknown_83FC591:: @ 83FC591 - .string "{B_ATK_NAME_WITH_PREFIX} found\n" - .string "one {B_LAST_ITEM}!$" - -gUnknown_83FC5A2:: @ 83FC5A2 - .string "A soothing aroma wafted\n" - .string "through the area!$" - -gUnknown_83FC5CC:: @ 83FC5CC - .string "Items can't be used now.{PAUSE 64}$" - -gUnknown_83FC5E8:: @ 83FC5E8 - .string "For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n" - .string "{B_LAST_ITEM} {B_BUFF1}$" - -gUnknown_83FC5F6:: @ 83FC5F6 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n" - .string "{B_LAST_ITEM} to hustle!$" - -gUnknown_83FC60C:: @ 83FC60C - .string "{B_ATK_NAME_WITH_PREFIX} lost its\n" - .string "focus and couldn't move!$" - -gUnknown_83FC631:: @ 83FC631 - .string "{B_DEF_NAME_WITH_PREFIX} was\n" - .string "dragged out!\p" - .string "$" - -gUnknown_83FC646:: @ 83FC646 - .string "The wall shattered!$" - -gUnknown_83FC65A:: @ 83FC65A - .string "But it had no effect!$" - -gUnknown_83FC670:: @ 83FC670 - .string "{B_ACTIVE_NAME_WITH_PREFIX} has no\n" - .string "moves left!\p" - .string "$" - -gUnknown_83FC687:: @ 83FC687 - .string "{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\n" - .string "is disabled!\p" - .string "$" - -gUnknown_83FC69D:: @ 83FC69D - .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\n" - .string "move in a row due to the TORMENT!\p" - .string "$" - -gUnknown_83FC6D6:: @ 83FC6D6 - .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use\n" - .string "{B_CURRENT_MOVE} after the TAUNT!\p" - .string "$" - -gUnknown_83FC6F8:: @ 83FC6F8 - .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use the\n" - .string "sealed {B_CURRENT_MOVE}!\p" - .string "$" - -gUnknown_83FC715:: @ 83FC715 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "made it rain!$" - -gUnknown_83FC72B:: @ 83FC72B - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "raised its SPEED!$" - -gUnknown_83FC745:: @ 83FC745 - .string "{B_DEF_NAME_WITH_PREFIX} was protected\n" - .string "by {B_DEF_ABILITY}!$" - -gUnknown_83FC75D:: @ 83FC75D - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevents {B_ATK_NAME_WITH_PREFIX}\l" - .string "from using {B_CURRENT_MOVE}!$" - -gUnknown_83FC780:: @ 83FC780 - .string "{B_DEF_NAME_WITH_PREFIX} restored HP\n" - .string "using its {B_DEF_ABILITY}!$" - -gUnknown_83FC79D:: @ 83FC79D - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "made {B_CURRENT_MOVE} useless!$" - -gUnknown_83FC7B6:: @ 83FC7B6 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "made it the {B_BUFF1} type!$" - -gUnknown_83FC7D3:: @ 83FC7D3 - .string "{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevents paralysis!$" - -gUnknown_83FC7EF:: @ 83FC7EF - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevents romance!$" - -gUnknown_83FC809:: @ 83FC809 - .string "{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevents poisoning!$" - -gUnknown_83FC825:: @ 83FC825 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevents confusion!$" - -gUnknown_83FC841:: @ 83FC841 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "raised its FIRE power!$" - -gUnknown_83FC860:: @ 83FC860 - .string "{B_DEF_NAME_WITH_PREFIX} anchors\n" - .string "itself with {B_DEF_ABILITY}!$" - -gUnknown_83FC87B:: @ 83FC87B - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "cuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!$" - -gUnknown_83FC895:: @ 83FC895 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "prevents stat loss!$" - -gUnknown_83FC8B1:: @ 83FC8B1 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "hurt {B_ATK_NAME_WITH_PREFIX}!$" - -gUnknown_83FC8C2:: @ 83FC8C2 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n" - .string "{B_BUFF1}'s {B_BUFF2}!$" - -gUnknown_83FC8D5:: @ 83FC8D5 - .string "{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\n" - .string "prevents burns!$" - -gUnknown_83FC8ED:: @ 83FC8ED - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "blocks {B_CURRENT_MOVE}!$" - -gUnknown_83FC900:: @ 83FC900 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "blocks {B_CURRENT_MOVE}!$" - -gUnknown_83FC913:: @ 83FC913 - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\n" - .string "restored its HP a little!$" - -gUnknown_83FC935:: @ 83FC935 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "whipped up a sandstorm!$" - -gUnknown_83FC955:: @ 83FC955 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "intensified the sun's rays!$" - -gUnknown_83FC979:: @ 83FC979 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "prevents {B_BUFF1} loss!$" - -gUnknown_83FC993:: @ 83FC993 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "infatuated {B_ATK_NAME_WITH_PREFIX}!$" - -gUnknown_83FC9AA:: @ 83FC9AA - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "made {B_CURRENT_MOVE} ineffective!$" - -gUnknown_83FC9C7:: @ 83FC9C7 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "cured its {B_BUFF1} problem!$" - -gUnknown_83FC9E5:: @ 83FC9E5 - .string "It sucked up the\n" - .string "LIQUID OOZE!$" - -gUnknown_83FCA03:: @ 83FCA03 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!$" - -gUnknown_83FCA13:: @ 83FCA13 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "took the attack!$" - -gText_PkmnsXPreventsSwitching:: @ 83FCA2C - .string "{B_BUFF1}'s {B_LAST_ABILITY}\n" - .string "prevents switching!\p" - .string "$" - -gUnknown_83FCA49:: @ 83FCA49 - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n" - .string "prevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s\l" - .string "{B_BUFF1} from working!$" - -gUnknown_83FCA71:: @ 83FCA71 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "made it ineffective!$" - -gUnknown_83FCA8E:: @ 83FCA8E - .string "{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\n" - .string "prevents flinching!$" - -gUnknown_83FCAAA:: @ 83FCAAA - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\n" - .string "prevents {B_DEF_NAME_WITH_PREFIX}'s\l" - .string "{B_DEF_ABILITY} from working!$" - -gUnknown_83FCAD1:: @ 83FCAD1 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "cured its {B_BUFF1} problem!$" - -gUnknown_83FCAEF:: @ 83FCAEF - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n" - .string "had no effect on {B_EFF_NAME_WITH_PREFIX}!$" - -gUnknown_83FCB0C:: @ 83FCB0C - .string "{B_ATK_NAME_WITH_PREFIX} is too scared to move!$" - -gUnknown_83FCB26:: @ 83FCB26 - .string "GHOST: Get out…… Get out……$" - -gUnknown_83FCB41:: @ 83FCB41 - .string "sharply $" - -BattleText_Rose:: @ 83FCB4A - .string "rose!$" - -gUnknown_83FCB50:: @ 83FCB50 - .string "harshly $" - -gUnknown_83FCB59:: @ 83FCB59 - .string "fell!$" - -gUnknown_83FCB5F:: @ 83FCB5F - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "{B_BUFF2}$" - -BattleText_UnknownString3:: @ 83FCB6A - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "{B_BUFF2}$" - -gUnknown_83FCB75:: @ 83FCB75 - .string "Using {B_LAST_ITEM}, the {B_BUFF1}\n" - .string "of {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}$" - -gUnknown_83FCB8F:: @ 83FCB8F - .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "{B_BUFF2}$" - -gUnknown_83FCB9A:: @ 83FCB9A - .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n" - .string "{B_BUFF2}$" - -gUnknown_83FCBA5:: @ 83FCBA5 - .string "{B_ATK_NAME_WITH_PREFIX}'s stats won't\n" - .string "go any higher!$" - -gUnknown_83FCBC5:: @ 83FCBC5 - .string "{B_DEF_NAME_WITH_PREFIX}'s stats won't\n" - .string "go any lower!$" - -gUnknown_83FCBE4:: @ 83FCBE4 - .string "A critical hit!$" - -gUnknown_83FCBF4:: @ 83FCBF4 - .string "It's a one-hit KO!$" - -gUnknown_83FCC07:: @ 83FCC07 - .string "{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p" - .string "$" - -gUnknown_83FCC33:: @ 83FCC33 - .string "And…\p" - .string "$" - -gUnknown_83FCC39:: @ 83FCC39 - .string "HM moves can't be\n" - .string "forgotten now.\p" - .string "$" - -gUnknown_83FCC5B:: @ 83FCC5B - .string "It's not very effective…$" - -gUnknown_83FCC74:: @ 83FCC74 - .string "It's super effective!$" - -gUnknown_83FCC8A:: @ 83FCC8A - .string "{PLAY_SE SE_NIGERU}Got away safely!\p" - .string "$" - -gUnknown_83FCCA0:: @ 83FCCA0 - .string "{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\n" - .string "using its {B_LAST_ITEM}!\p" - .string "$" - -gUnknown_83FCCBB:: @ 83FCCBB - .string "{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\n" - .string "using {B_ATK_ABILITY}!\p" - .string "$" - -gUnknown_83FCCD2:: @ 83FCCD2 - .string "{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!$" - -gUnknown_83FCCE4:: @ 83FCCE4 - .string "Player defeated\n" - .string "{B_LINK_OPPONENT1_NAME}!$" - -gUnknown_83FCCF8:: @ 83FCCF8 - .string "Player beat {B_LINK_OPPONENT1_NAME}\n" - .string "and {B_LINK_OPPONENT2_NAME}!$" - -gUnknown_83FCD0F:: @ 83FCD0F - .string "Player lost against\n" - .string "{B_LINK_OPPONENT1_NAME}!$" - -gUnknown_83FCD27:: @ 83FCD27 - .string "Player lost to {B_LINK_OPPONENT1_NAME}\n" - .string "and {B_LINK_OPPONENT2_NAME}!$" - -gUnknown_83FCD41:: @ 83FCD41 - .string "Player battled to a draw against\n" - .string "{B_LINK_OPPONENT1_NAME}!$" - -gUnknown_83FCD66:: @ 83FCD66 - .string "Player battled to a draw against\n" - .string "{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!$" - -gUnknown_83FCD92:: @ 83FCD92 - .string "{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!$" - -gUnknown_83FCD9F:: @ 83FCD9F - .string "{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n" - .string "{B_LINK_OPPONENT2_NAME} fled!$" - -gUnknown_83FCDB3:: @ 83FCDB3 - .string "No! There's no running\n" - .string "from a TRAINER battle!\p" - .string "$" - -gUnknown_83FCDE2:: @ 83FCDE2 - .string "Can't escape!\p" - .string "$" - -gUnknown_83FCDF1:: @ 83FCDF1 - .string "$" - -gUnknown_83FCDF2:: @ 83FCDF2 - .string "But nothing happened!$" - -gUnknown_83FCE08:: @ 83FCE08 - .string "But it failed!$" - -gUnknown_83FCE17:: @ 83FCE17 - .string "It hurt itself in its\n" - .string "confusion!$" - -gUnknown_83FCE38:: @ 83FCE38 - .string "The MIRROR MOVE failed!$" - -gUnknown_83FCE50:: @ 83FCE50 - .string "It started to rain!$" - -gUnknown_83FCE64:: @ 83FCE64 - .string "A downpour started!$" - -gUnknown_83FCE78:: @ 83FCE78 - .string "Rain continues to fall.$" - -gUnknown_83FCE90:: @ 83FCE90 - .string "The downpour continues.$" - -gUnknown_83FCEA8:: @ 83FCEA8 - .string "The rain stopped.$" - -gUnknown_83FCEBA:: @ 83FCEBA - .string "A sandstorm brewed!$" - -gUnknown_83FCECE:: @ 83FCECE - .string "The sandstorm rages.$" - -gUnknown_83FCEE3:: @ 83FCEE3 - .string "The sandstorm subsided.$" - -gUnknown_83FCEFB:: @ 83FCEFB - .string "The sunlight got bright!$" - -gUnknown_83FCF14:: @ 83FCF14 - .string "The sunlight is strong.$" - -gUnknown_83FCF2C:: @ 83FCF2C - .string "The sunlight faded.$" - -gUnknown_83FCF40:: @ 83FCF40 - .string "It started to hail!$" - -gUnknown_83FCF54:: @ 83FCF54 - .string "Hail continues to fall.$" - -gUnknown_83FCF6C:: @ 83FCF6C - .string "The hail stopped.$" - -gUnknown_83FCF7E:: @ 83FCF7E - .string "But it failed to SPIT UP\n" - .string "a thing!$" - -gUnknown_83FCFA0:: @ 83FCFA0 - .string "But it failed to SWALLOW\n" - .string "a thing!$" - -gUnknown_83FCFC2:: @ 83FCFC2 - .string "The wind turned into a\n" - .string "HEAT WAVE!$" - -gUnknown_83FCFE4:: @ 83FCFE4 - .string "All stat changes were\n" - .string "eliminated!$" - -gUnknown_83FD006:: @ 83FD006 - .string "Coins scattered everywhere!$" - -gUnknown_83FD022:: @ 83FD022 - .string "It was too weak to make\n" - .string "a SUBSTITUTE!$" - -gUnknown_83FD048:: @ 83FD048 - .string "The battlers shared\n" - .string "their pain!$" - -gUnknown_83FD068:: @ 83FD068 - .string "A bell chimed!$" - -gUnknown_83FD077:: @ 83FD077 - .string "All affected POKéMON will\n" - .string "faint in three turns!$" - -gUnknown_83FD0A7:: @ 83FD0A7 - .string "There's no PP left for\n" - .string "this move!\p" - .string "$" - -gUnknown_83FD0CA:: @ 83FD0CA - .string "But there was no PP left\n" - .string "for the move!$" - -gUnknown_83FD0F1:: @ 83FD0F1 - .string "{B_ATK_NAME_WITH_PREFIX} ignored\n" - .string "orders while asleep!$" - -gUnknown_83FD111:: @ 83FD111 - .string "{B_ATK_NAME_WITH_PREFIX} ignored\n" - .string "orders!$" - -gUnknown_83FD124:: @ 83FD124 - .string "{B_ATK_NAME_WITH_PREFIX} began to nap!$" - -gUnknown_83FD135:: @ 83FD135 - .string "{B_ATK_NAME_WITH_PREFIX} is\n" - .string "loafing around!$" - -gUnknown_83FD14B:: @ 83FD14B - .string "{B_ATK_NAME_WITH_PREFIX} won't\n" - .string "obey!$" - -gUnknown_83FD15A:: @ 83FD15A - .string "{B_ATK_NAME_WITH_PREFIX} turned away!$" - -gUnknown_83FD16A:: @ 83FD16A - .string "{B_ATK_NAME_WITH_PREFIX} pretended\n" - .string "not to notice!$" - -gUnknown_83FD186:: @ 83FD186 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\n" - .string "about to use {B_BUFF2}.\p" - .string "Will {B_PLAYER_NAME} change\n" - .string "POKéMON?$" - -gUnknown_83FD1B8:: @ 83FD1B8 - .string "{B_ATK_NAME_WITH_PREFIX} learned\n" - .string "{B_BUFF1}!$" - -gUnknown_83FD1C7:: @ 83FD1C7 - .string "Player defeated\n" - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p" - .string "$" - -gUnknown_83FD1DF:: @ 83FD1DF - .string "{B_PLAYER_NAME} threw a ROCK\n" - .string "at the {B_OPPONENT_MON1_NAME}!$" - -gUnknown_83FD1FA:: @ 83FD1FA - .string "{B_PLAYER_NAME} threw some BAIT\n" - .string "at the {B_OPPONENT_MON1_NAME}!$" - -gUnknown_83FD218:: @ 83FD218 - .string "{B_OPPONENT_MON1_NAME} is watching\n" - .string "carefully!$" - -gUnknown_83FD232:: @ 83FD232 - .string "{B_OPPONENT_MON1_NAME} is angry!$" - -gUnknown_83FD23F:: @ 83FD23F - .string "{B_OPPONENT_MON1_NAME} is eating!$" - -gUnknown_83FD24D:: @ 83FD24D - .string "{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\n" - .string "SAFARI BALLS! Game over!\p" - .string "$" - -gUnknown_83FD284:: @ 83FD284 - .string "Wild {B_OPPONENT_MON1_NAME} appeared!\p" - .string "$" - -gUnknown_83FD297:: @ 83FD297 - .string "Wild {B_OPPONENT_MON1_NAME} appeared!\p" - .string "$" - -gUnknown_83FD2AA:: @ 83FD2AA - .string "Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}$" - -gUnknown_83FD2BF:: @ 83FD2BF - .string "Wild {B_OPPONENT_MON1_NAME} and\n" - .string "{B_OPPONENT_MON2_NAME} appeared!\p" - .string "$" - -gUnknown_83FD2D9:: @ 83FD2D9 - .string "The GHOST appeared!\p" - .string "Darn!\n" - .string "The GHOST can't be ID'd!\p" - .string "$" - -gUnknown_83FD30D:: @ 83FD30D - .string "The GHOST appeared!\p" - .string "$" - -gUnknown_83FD322:: @ 83FD322 - .string "SILPH SCOPE unveiled the GHOST's\n" - .string "identity!$" - -gUnknown_83FD34D:: @ 83FD34D - .string "The GHOST was MAROWAK!\p" - .string "\n" - .string "$" - -gUnknown_83FD366:: @ 83FD366 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n" - .string "would like to battle!\p" - .string "$" - -gUnknown_83FD383:: @ 83FD383 - .string "{B_LINK_OPPONENT1_NAME}\n" - .string "wants to battle!$" - -gUnknown_83FD397:: @ 83FD397 - .string "{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\n" - .string "want to battle!$" - -gUnknown_83FD3B1:: @ 83FD3B1 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n" - .string "out {B_OPPONENT_MON1_NAME}!{PAUSE 60}$" - -gUnknown_83FD3C7:: @ 83FD3C7 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n" - .string "out {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}$" - -gUnknown_83FD3E4:: @ 83FD3E4 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n" - .string "out {B_BUFF1}!$" - -gUnknown_83FD3F7:: @ 83FD3F7 - .string "{B_LINK_OPPONENT1_NAME} sent out\n" - .string "{B_OPPONENT_MON1_NAME}!$" - -gUnknown_83FD407:: @ 83FD407 - .string "{B_LINK_OPPONENT1_NAME} sent out\n" - .string "{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!$" - -gUnknown_83FD41E:: @ 83FD41E - .string "{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n" - .string "{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!$" - -gUnknown_83FD43E:: @ 83FD43E - .string "{B_LINK_OPPONENT1_NAME} sent out\n" - .string "{B_BUFF1}!$" - -gUnknown_83FD44E:: @ 83FD44E - .string "{B_LINK_SCR_TRAINER_NAME} sent out\n" - .string "{B_BUFF1}!$" - -gUnknown_83FD45E:: @ 83FD45E - .string "Go! {B_PLAYER_MON1_NAME}!$" - -gUnknown_83FD466:: @ 83FD466 - .string "Go! {B_PLAYER_MON1_NAME} and\n" - .string "{B_PLAYER_MON2_NAME}!$" - -gUnknown_83FD475:: @ 83FD475 - .string "Go! {B_BUFF1}!$" - -gUnknown_83FD47D:: @ 83FD47D - .string "Do it! {B_BUFF1}!$" - -gUnknown_83FD488:: @ 83FD488 - .string "Go for it, {B_BUFF1}!$" - -gUnknown_83FD497:: @ 83FD497 - .string "Your foe's weak!\n" - .string "Get 'em, {B_BUFF1}!$" - -gUnknown_83FD4B5:: @ 83FD4B5 - .string "{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\n" - .string "Go! {GOOD_TEAM}!$" - -gUnknown_83FD4CD:: @ 83FD4CD - .string "{B_BUFF1}, that's enough!\n" - .string "Come back!$" - -gUnknown_83FD4EB:: @ 83FD4EB - .string "{B_BUFF1}, come back!$" - -gUnknown_83FD4FA:: @ 83FD4FA - .string "{B_BUFF1}, OK!\n" - .string "Come back!$" - -gUnknown_83FD50D:: @ 83FD50D - .string "{B_BUFF1}, good!\n" - .string "Come back!$" - -gUnknown_83FD522:: @ 83FD522 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n" - .string "withdrew {B_BUFF1}!$" - -gUnknown_83FD535:: @ 83FD535 - .string "{B_LINK_OPPONENT1_NAME} withdrew\n" - .string "{B_BUFF1}!$" - -gUnknown_83FD545:: @ 83FD545 - .string "{B_LINK_SCR_TRAINER_NAME} withdrew\n" - .string "{B_BUFF1}!$" - -gUnknown_83FD555:: @ 83FD555 - .string "Wild $" - -gUnknown_83FD55B:: @ 83FD55B - .string "Foe $" - -gUnknown_83FD560:: @ 83FD560 - .string "Foe$" - -gUnknown_83FD564:: @ 83FD564 - .string "Ally$" - -gUnknown_83FD569:: @ 83FD569 - .string "Foe$" - -gUnknown_83FD56D:: @ 83FD56D - .string "Ally$" - -gUnknown_83FD572:: @ 83FD572 - .string "Foe$" - -gUnknown_83FD576:: @ 83FD576 - .string "Ally$" - -gUnknown_83FD57B:: @ 83FD57B - .string "{B_ATK_NAME_WITH_PREFIX} used\n" - .string "{B_BUFF2}$" - -gUnknown_83FD586:: @ 83FD586 - .string "!$" - -gUnknown_83FD588:: @ 83FD588 - .string "!$" - -gUnknown_83FD58A:: @ 83FD58A - .string "!$" - -gUnknown_83FD58C:: @ 83FD58C - .string "!$" - -gUnknown_83FD58E:: @ 83FD58E - .string "!$" - -gUnknown_83FD590:: @ 83FD590 - .string "HP$" - -gUnknown_83FD593:: @ 83FD593 - .string "ATTACK$" - -gUnknown_83FD59A:: @ 83FD59A - .string "DEFENSE$" - -gUnknown_83FD5A2:: @ 83FD5A2 - .string "SPEED$" - -gUnknown_83FD5A8:: @ 83FD5A8 - .string "SP. ATK$" - -gUnknown_83FD5B0:: @ 83FD5B0 - .string "SP. DEF$" - -gUnknown_83FD5B8:: @ 83FD5B8 - .string "accuracy$" - -gUnknown_83FD5C1:: @ 83FD5C1 - .string "evasiveness$" - - .align 2 -gUnknown_83FD5D0:: @ 83FD5D0 - .4byte gUnknown_83FD590 - .4byte gUnknown_83FD593 - .4byte gUnknown_83FD59A - .4byte gUnknown_83FD5A2 - .4byte gUnknown_83FD5A8 - .4byte gUnknown_83FD5B0 - .4byte gUnknown_83FD5B8 - .4byte gUnknown_83FD5C1 - -gUnknown_83FD5F0:: - .string "was too spicy!$" - -gUnknown_83FD5FF:: @ 83FD5FF - .string "was too dry!$" - -gUnknown_83FD60C:: @ 83FD60C - .string "was too sweet!$" - -gUnknown_83FD61B:: @ 83FD61B - .string "was too bitter!$" - -gUnknown_83FD62B:: @ 83FD62B - .string "was too sour!$" - - .align 2 -gUnknown_83FD63C:: @ 83FD63C - .4byte gUnknown_83FD5F0 - .4byte gUnknown_83FD5FF - .4byte gUnknown_83FD60C - .4byte gUnknown_83FD61B - .4byte gUnknown_83FD62B - -gUnknown_83FD650:: @ 83FD650 - .string "{B_PLAYER_NAME} used\n" - .string "{B_LAST_ITEM}!$" - -gUnknown_83FD65C:: @ 83FD65C - .string "The old man used\n" - .string "{B_LAST_ITEM}!$" - -gUnknown_83FD671:: @ 83FD671 - .string "The POKé DUDE used\n" - .string "{B_LAST_ITEM}!$" - -gUnknown_83FD688:: @ 83FD688 - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n" - .string "used {B_LAST_ITEM}!$" - -gUnknown_83FD697:: @ 83FD697 - .string "The TRAINER blocked the BALL!$" - -gUnknown_83FD6B5:: @ 83FD6B5 - .string "Don't be a thief!$" - -gUnknown_83FD6C7:: @ 83FD6C7 - .string "It dodged the thrown BALL!\n" - .string "This POKéMON can't be caught!$" - -gUnknown_83FD700:: @ 83FD700 - .string "You missed the POKéMON!$" - -gUnknown_83FD718:: @ 83FD718 - .string "Oh, no!\n" - .string "The POKéMON broke free!$" - -gUnknown_83FD738:: @ 83FD738 - .string "Aww!\n" - .string "It appeared to be caught!$" - -gUnknown_83FD757:: @ 83FD757 - .string "Aargh!\n" - .string "Almost had it!$" - -gUnknown_83FD76D:: @ 83FD76D - .string "Shoot!\n" - .string "It was so close, too!$" - -gUnknown_83FD78A:: @ 83FD78A - .string "よけられた!\n" - .string "こいつは つかまりそうにないぞ!$" - -gUnknown_83FD7A2:: @ 83FD7A2 - .string "Gotcha!\n" - .string "{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p" - .string "$" - -gUnknown_83FD7C0:: @ 83FD7C0 - .string "Gotcha!\n" - .string "{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}$" - -gUnknown_83FD7E0:: @ 83FD7E0 - .string "Give a nickname to the\n" - .string "captured {B_OPPONENT_MON1_NAME}?$" - -gUnknown_83FD804:: @ 83FD804 - .string "{B_OPPONENT_MON1_NAME} was sent to\n" - .string "{B_PC_CREATOR_NAME} PC.$" - -gUnknown_83FD81A:: @ 83FD81A - .string "someone's$" - -gUnknown_83FD824:: @ 83FD824 - .string "BILL's$" - -gUnknown_83FD82B:: @ 83FD82B - .string "{B_OPPONENT_MON1_NAME}'s data was\n" - .string "added to the POKéDEX.\p" - .string "$" - -gUnknown_83FD850:: @ 83FD850 - .string "It is raining.$" - -gUnknown_83FD85F:: @ 83FD85F - .string "A sandstorm is raging.$" - -gUnknown_83FD876:: @ 83FD876 - .string "The BOX is full!\n" - .string "You can't catch any more!\p" - .string "$" - -gUnknown_83FD8A2:: @ 83FD8A2 - .string "ENIGMA BERRY$" - -gUnknown_83FD8AF:: @ 83FD8AF - .string " BERRY$" - -gUnknown_83FD8B6:: @ 83FD8B6 - .string "ナゾ$" - -gUnknown_83FD8B9:: @ 83FD8B9 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "cured paralysis!$" - -gUnknown_83FD8D2:: @ 83FD8D2 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "cured poison!$" - -gUnknown_83FD8E8:: @ 83FD8E8 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "healed its burn!$" - -gUnknown_83FD901:: @ 83FD901 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "defrosted it!$" - -gUnknown_83FD917:: @ 83FD917 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "woke it from its sleep!$" - -gUnknown_83FD937:: @ 83FD937 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "snapped it out of confusion!$" - -gUnknown_83FD95C:: @ 83FD95C - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "cured its {B_BUFF1} problem!$" - -gUnknown_83FD97A:: @ 83FD97A - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "normalized its status!$" - -gUnknown_83FD999:: @ 83FD999 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "restored health!$" - -gUnknown_83FD9B2:: @ 83FD9B2 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "restored {B_BUFF1}'s PP!$" - -gUnknown_83FD9CC:: @ 83FD9CC - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "restored its status!$" - -gUnknown_83FD9E9:: @ 83FD9E9 - .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n" - .string "restored its HP a little!$" - -gUnknown_83FDA0B:: @ 83FDA0B - .string "{B_LAST_ITEM}'s effect allows only\n" - .string "{B_CURRENT_MOVE} to be used!\p" - .string "$" - -gUnknown_83FDA33:: @ 83FDA33 - .string "{B_DEF_NAME_WITH_PREFIX} hung on\n" - .string "using its {B_LAST_ITEM}!$" - -gUnknown_83FDA4C:: @ 83FDA4C - .string "$" - -gUnknown_83FDA4D:: @ 83FDA4D - .string "{B_PLAYER_NAME} played the {B_LAST_ITEM}.\p" - .string "Now, that's a catchy tune!$" - -gUnknown_83FDA7A:: @ 83FDA7A - .string "{B_PLAYER_NAME} played the\n" - .string "{B_LAST_ITEM}.$" - -gUnknown_83FDA8C:: @ 83FDA8C - .string "The POKéMON hearing the FLUTE\n" - .string "awoke!$" - -gUnknown_83FDAB1:: @ 83FDAB1 - .string "You throw a BALL now, right?\n" - .string "I… I'll do my best!$" - -gUnknown_83FDAE2:: @ 83FDAE2 - .string "OAK: Oh, for Pete's sake…\n" - .string "So pushy, as always.\p" - .string "{B_PLAYER_NAME}.\p" - .string "You've never had a POKéMON battle\n" - .string "before, have you?\p" - .string "A POKéMON battle is when TRAINERS\n" - .string "pit their POKéMON against each\l" - .string "other.\p" - .string "$" - -gUnknown_83FDB92:: @ 83FDB92 - .string "The TRAINER that makes the other\n" - .string "TRAINER's POKéMON faint by lowering\l" - .string "their HP to “0,” wins.\p" - .string "$" - -gUnknown_83FDBEF:: @ 83FDBEF - .string "But rather than talking about it,\n" - .string "you'll learn more from experience.\p" - .string "Try battling and see for yourself.\p" - .string "$" - -gUnknown_83FDC58:: @ 83FDC58 - .string "OAK: Inflicting damage on the foe\n" - .string "is the key to any battle.\p" - .string "$" - -gUnknown_83FDC95:: @ 83FDC95 - .string "OAK: Lowering the foe's stats\n" - .string "will put you at an advantage.\p" - .string "$" - -gUnknown_83FDCD2:: @ 83FDCD2 - .string "OAK: Keep your eyes on your\n" - .string "POKéMON's HP.\p" - .string "It will faint if the HP drops to\n" - .string "“0.”\p" - .string "$" - -gUnknown_83FDD23:: @ 83FDD23 - .string "OAK: No! There's no running away\n" - .string "from a TRAINER POKéMON battle!\p" - .string "$" - -gUnknown_83FDD64:: @ 83FDD64 - .string "OAK: Hm! Excellent!\p" - .string "If you win, you earn prize money,\n" - .string "and your POKéMON will grow!\p" - .string "Battle other TRAINERS and make\n" - .string "your POKéMON strong!\p" - .string "$" - -gUnknown_83FDDEB:: @ 83FDDEB - .string "OAK: Hm…\n" - .string "How disappointing…\p" - .string "If you win, you earn prize money,\n" - .string "and your POKéMON grow.\p" - .string "But if you lose, {B_PLAYER_NAME}, you end\n" - .string "up paying prize money…\p" - .string "However, since you had no warning\n" - .string "this time, I'll pay for you.\p" - .string "But things won't be this way once\n" - .string "you step outside these doors.\p" - .string "That's why you must strengthen your\n" - .string "POKéMON by battling wild POKéMON.\p" - .string "$" - - .align 2 -gBattleStringsTable:: @ 83FDF3C - .4byte gUnknown_83FB219 - .4byte gUnknown_83FB265 - .4byte gUnknown_83FB28E - .4byte gUnknown_83FB2A4 - .4byte gUnknown_83FB2B6 - .4byte gUnknown_83FB2D1 - .4byte gUnknown_83FB2FC - .4byte gUnknown_83FB31F - .4byte gUnknown_83FB32E - .4byte gUnknown_83FB343 - .4byte gUnknown_83FD1B8 - .4byte gUnknown_83FB36B - .4byte gUnknown_83FB37F - .4byte gUnknown_83FCBA5 - .4byte gUnknown_83FB394 - .4byte gUnknown_83FB3EA - .4byte gUnknown_83FB400 - .4byte gUnknown_83FB40D - .4byte gUnknown_83FB41A - .4byte gUnknown_83FB433 - .4byte gUnknown_83FB451 - .4byte gUnknown_83FB508 - .4byte gUnknown_83FB545 - .4byte gUnknown_83FB555 - .4byte gUnknown_83FB565 - .4byte gUnknown_83FB57C - .4byte gUnknown_83FB592 - .4byte gUnknown_83FB5A8 - .4byte gUnknown_83FB5BC - .4byte gUnknown_83FB5CD - .4byte gUnknown_83FB5E2 - .4byte gUnknown_83FB5F8 - .4byte gUnknown_83FB610 - .4byte gUnknown_83FB626 - .4byte gUnknown_83FB641 - .4byte gUnknown_83FB650 - .4byte gUnknown_83FB663 - .4byte gUnknown_83FB692 - .4byte gUnknown_83FB6A7 - .4byte gUnknown_83FB6BF - .4byte gUnknown_83FB6D3 - .4byte gUnknown_83FB6E5 - .4byte gUnknown_83FB6F7 - .4byte gUnknown_83FB70F - .4byte gUnknown_83FB73A - .4byte gUnknown_83FB76A - .4byte gUnknown_83FB78A - .4byte gUnknown_83FB7A3 - .4byte gUnknown_83FB7BF - .4byte gUnknown_83FB7D5 - .4byte gUnknown_83FB7EE - .4byte gUnknown_83FB806 - .4byte gUnknown_83FB826 - .4byte gUnknown_83FB844 - .4byte gUnknown_83FB854 - .4byte gUnknown_83FB871 - .4byte gUnknown_83FB885 - .4byte gUnknown_83FB89D - .4byte gUnknown_83FB8AE - .4byte gUnknown_83FB8C5 - .4byte gUnknown_83FB8E0 - .4byte gUnknown_83FB8F3 - .4byte gUnknown_83FB914 - .4byte gUnknown_83FB921 - .4byte gUnknown_83FB935 - .4byte gUnknown_83FB946 - .4byte gUnknown_83FB97F - .4byte gUnknown_83FB9B8 - .4byte gUnknown_83FB9D9 - .4byte gUnknown_83FB9FF - .4byte gUnknown_83FBA2F - .4byte gUnknown_83FBA41 - .4byte gUnknown_83FBA5E - .4byte gUnknown_83FBA79 - .4byte gUnknown_83FBA8E - .4byte gUnknown_83FBAA3 - .4byte gUnknown_83FBAB2 - .4byte gUnknown_83FBAC3 - .4byte gUnknown_83FBAF3 - .4byte gUnknown_83FBB11 - .4byte gUnknown_83FBB4C - .4byte gUnknown_83FBB62 - .4byte gUnknown_83FBB71 - .4byte gUnknown_83FBB83 - .4byte gUnknown_83FBB99 - .4byte BattleText_MistShroud - .4byte gUnknown_83FBBD0 - .4byte BattleText_GetPumped - .4byte gUnknown_83FBBFF - .4byte gUnknown_83FBC16 - .4byte gUnknown_83FBC2B - .4byte gUnknown_83FBC4C - .4byte gUnknown_83FBC74 - .4byte gUnknown_83FBC83 - .4byte gUnknown_83FBC99 - .4byte gUnknown_83FBCBE - .4byte gUnknown_83FBCD1 - .4byte gUnknown_83FBCDD - .4byte gUnknown_83FBCFC - .4byte gUnknown_83FBD16 - .4byte gUnknown_83FBD2B - .4byte gUnknown_83FBD43 - .4byte gUnknown_83FBD53 - .4byte gUnknown_83FBD74 - .4byte gUnknown_83FBD86 - .4byte gUnknown_83FBDA3 - .4byte gUnknown_83FBDC4 - .4byte gUnknown_83FBDE2 - .4byte gUnknown_83FBE00 - .4byte gUnknown_83FBE16 - .4byte gUnknown_83FBE2B - .4byte gUnknown_83FBE4E - .4byte gUnknown_83FBE61 - .4byte gUnknown_83FBE73 - .4byte gUnknown_83FBE8B - .4byte gUnknown_83FBEA1 - .4byte gUnknown_83FBEBE - .4byte gUnknown_83FBEE2 - .4byte gUnknown_83FBEFA - .4byte gUnknown_83FBF0C - .4byte gUnknown_83FBF23 - .4byte gUnknown_83FC687 - .4byte gUnknown_83FBF39 - .4byte gUnknown_83FBF51 - .4byte gUnknown_83FBF63 - .4byte gUnknown_83FBF76 - .4byte gUnknown_83FBF89 - .4byte gUnknown_83FBF99 - .4byte gUnknown_83FBFBF - .4byte gUnknown_83FBFD3 - .4byte gUnknown_83FBFEA - .4byte gUnknown_83FBFFC - .4byte gUnknown_83FC011 - .4byte gUnknown_83FC02B - .4byte gUnknown_83FC048 - .4byte gUnknown_83FC072 - .4byte gUnknown_83FC090 - .4byte gUnknown_83FC0C6 - .4byte gUnknown_83FC0DC - .4byte gUnknown_83FC0EE - .4byte gUnknown_83FC10C - .4byte gUnknown_83FC11E - .4byte gUnknown_83FC132 - .4byte gUnknown_83FC140 - .4byte gUnknown_83FC168 - .4byte gUnknown_83FC185 - .4byte gUnknown_83FC19D - .4byte gUnknown_83FC1B1 - .4byte gUnknown_83FC1C6 - .4byte gUnknown_83FC1DB - .4byte gUnknown_83FC1F1 - .4byte gUnknown_83FC224 - .4byte gUnknown_83FC231 - .4byte gUnknown_83FC254 - .4byte gUnknown_83FC26D - .4byte gUnknown_83FC28A - .4byte gUnknown_83FC670 - .4byte gUnknown_83FC2AA - .4byte gUnknown_83FC69D - .4byte gUnknown_83FC2C7 - .4byte gUnknown_83FC2E3 - .4byte gUnknown_83FC6D6 - .4byte gUnknown_83FC2FA - .4byte gUnknown_83FC312 - .4byte gUnknown_83FC377 - .4byte gUnknown_83FC38A - .4byte gUnknown_83FC39A - .4byte gUnknown_83FC3AF - .4byte gUnknown_83FC3C5 - .4byte gUnknown_83FC3EB - .4byte gUnknown_83FC40E - .4byte gUnknown_83FC421 - .4byte gUnknown_83FC439 - .4byte gUnknown_83FC461 - .4byte gUnknown_83FC6F8 - .4byte gUnknown_83FC483 - .4byte gUnknown_83FC4AB - .4byte gUnknown_83FC4D6 - .4byte gUnknown_83FC4F0 - .4byte gUnknown_83FC518 - .4byte gUnknown_83FC53D - .4byte gUnknown_83FC715 - .4byte gUnknown_83FC72B - .4byte gUnknown_83FC745 - .4byte gUnknown_83FC75D - .4byte gUnknown_83FC780 - .4byte gUnknown_83FC7B6 - .4byte gUnknown_83FC7D3 - .4byte gUnknown_83FC7EF - .4byte gUnknown_83FC809 - .4byte gUnknown_83FC825 - .4byte gUnknown_83FC841 - .4byte gUnknown_83FC860 - .4byte gUnknown_83FC87B - .4byte gUnknown_83FC895 - .4byte gUnknown_83FC8B1 - .4byte gUnknown_83FC8C2 - .4byte gUnknown_83FCB41 - .4byte BattleText_Rose - .4byte gUnknown_83FCB50 - .4byte gUnknown_83FCB59 - .4byte gUnknown_83FCB5F - .4byte BattleText_UnknownString3 - .4byte gUnknown_83FCB8F - .4byte gUnknown_83FCB9A - .4byte gUnknown_83FCBE4 - .4byte gUnknown_83FCBF4 - .4byte gUnknown_83FCC07 - .4byte gUnknown_83FCC33 - .4byte gUnknown_83FCC5B - .4byte gUnknown_83FCC74 - .4byte gUnknown_83FCC8A - .4byte gUnknown_83FCCD2 - .4byte gUnknown_83FCDB3 - .4byte gUnknown_83FCDE2 - .4byte gUnknown_83FCDF1 - .4byte gUnknown_83FCDF2 - .4byte gUnknown_83FCE08 - .4byte gUnknown_83FCE17 - .4byte gUnknown_83FCE38 - .4byte gUnknown_83FCE50 - .4byte gUnknown_83FCE64 - .4byte gUnknown_83FCE78 - .4byte gUnknown_83FCE90 - .4byte gUnknown_83FCEA8 - .4byte gUnknown_83FCEBA - .4byte gUnknown_83FCECE - .4byte gUnknown_83FCEE3 - .4byte gUnknown_83FCEFB - .4byte gUnknown_83FCF14 - .4byte gUnknown_83FCF2C - .4byte gUnknown_83FCF40 - .4byte gUnknown_83FCF54 - .4byte gUnknown_83FCF6C - .4byte gUnknown_83FCF7E - .4byte gUnknown_83FCFA0 - .4byte gUnknown_83FCFC2 - .4byte gUnknown_83FCFE4 - .4byte gUnknown_83FD006 - .4byte gUnknown_83FD022 - .4byte gUnknown_83FD048 - .4byte gUnknown_83FD068 - .4byte gUnknown_83FD077 - .4byte gUnknown_83FD0A7 - .4byte gUnknown_83FD0CA - .4byte gUnknown_83FD650 - .4byte gUnknown_83FD65C - .4byte gUnknown_83FD697 - .4byte gUnknown_83FD6B5 - .4byte gUnknown_83FD6C7 - .4byte gUnknown_83FD700 - .4byte gUnknown_83FD718 - .4byte gUnknown_83FD738 - .4byte gUnknown_83FD757 - .4byte gUnknown_83FD76D - .4byte gUnknown_83FD7A2 - .4byte gUnknown_83FD7C0 - .4byte gUnknown_83FD7E0 - .4byte gUnknown_83FD804 - .4byte gUnknown_83FD82B - .4byte gUnknown_83FD850 - .4byte gUnknown_83FD85F - .4byte gUnknown_83FB525 - .4byte gUnknown_83FD0F1 - .4byte gUnknown_83FD111 - .4byte gUnknown_83FD124 - .4byte gUnknown_83FD135 - .4byte gUnknown_83FD14B - .4byte gUnknown_83FD15A - .4byte gUnknown_83FD16A - .4byte gUnknown_83FD186 - .4byte gUnknown_83FD1DF - .4byte gUnknown_83FD1FA - .4byte gUnknown_83FD218 - .4byte gUnknown_83FD232 - .4byte gUnknown_83FD23F - .4byte gUnknown_83FB218 - .4byte gUnknown_83FB218 - .4byte gUnknown_83FD24D - .4byte gUnknown_83FD8B9 - .4byte gUnknown_83FD8D2 - .4byte gUnknown_83FD8E8 - .4byte gUnknown_83FD901 - .4byte gUnknown_83FD917 - .4byte gUnknown_83FD937 - .4byte gUnknown_83FD95C - .4byte gUnknown_83FD999 - .4byte gUnknown_83FD9B2 - .4byte gUnknown_83FD9CC - .4byte gUnknown_83FD9E9 - .4byte gUnknown_83FDA0B - .4byte gUnknown_83FDA33 - .4byte gUnknown_83FDA4C - .4byte gUnknown_83FC8D5 - .4byte gUnknown_83FC8ED - .4byte gUnknown_83FC913 - .4byte gUnknown_83FC935 - .4byte gUnknown_83FC979 - .4byte gUnknown_83FC993 - .4byte gUnknown_83FC9AA - .4byte gUnknown_83FC9C7 - .4byte gUnknown_83FC9E5 - .4byte gUnknown_83FCA03 - .4byte gUnknown_83FC554 - .4byte gUnknown_83FC576 - .4byte gUnknown_83FBAD2 - .4byte gUnknown_83FBAE5 - .4byte gUnknown_83FCC39 - .4byte gUnknown_83FC591 - .4byte gUnknown_83FD1C7 - .4byte gUnknown_83FC5A2 - .4byte gUnknown_83FC5CC - .4byte gUnknown_83FC5E8 - .4byte gUnknown_83FCB75 - .4byte gUnknown_83FC5F6 - .4byte gUnknown_83FC79D - .4byte gUnknown_83FBB2F - .4byte gUnknown_83FB282 - .4byte gUnknown_83FB283 - .4byte gUnknown_83FC955 - .4byte gUnknown_83FB3AF - .4byte gUnknown_83FDAB1 - .4byte gUnknown_83FCA13 - .4byte gUnknown_83FC208 - .4byte gUnknown_83FC60C - .4byte gUnknown_83FB359 - .4byte gUnknown_83FCCA0 - .4byte gUnknown_83FCCBB - .4byte gUnknown_83FC631 - .4byte gUnknown_83FCA49 - .4byte gUnknown_83FD97A - .4byte gUnknown_83FD688 - .4byte gUnknown_83FD876 - .4byte gUnknown_83FB3D3 - .4byte gUnknown_83FCA71 - .4byte gUnknown_83FCA8E - .4byte gUnknown_83FB67B - .4byte gUnknown_83FCBC5 - .4byte gUnknown_83FC900 - .4byte gUnknown_83FBC62 - .4byte gUnknown_83FB997 - .4byte gUnknown_83FB95E - .4byte gUnknown_83FC646 - .4byte gUnknown_83FCAAA - .4byte gUnknown_83FCAD1 - .4byte gUnknown_83FB534 - .4byte gUnknown_83FC337 - .4byte gUnknown_83FC347 - .4byte gUnknown_83FC357 - .4byte gUnknown_83FC65A - .4byte gUnknown_83FCAEF - .4byte gUnknown_83FDD64 - .4byte gUnknown_83FDDEB - .4byte gUnknown_83FB484 - .4byte gUnknown_83FB4BE - .4byte Text_1A5CF1 - .4byte Text_1A5D31 - .4byte Text_1A5D6E - .4byte Text_1A5DB1 - .4byte gUnknown_83FD671 - .4byte gUnknown_83FDA4D - .4byte gUnknown_83FDA7A - .4byte gUnknown_83FDA8C - .4byte gUnknown_83FB21C - .4byte gUnknown_83FB262 - .4byte gUnknown_83FB4F7 - .4byte gUnknown_83FCB0C - .4byte gUnknown_83FCB26 - .4byte gUnknown_83FD322 - .4byte gUnknown_83FD34D - .4byte gUnknown_83FB21F - .4byte gUnknown_83FB232 - .4byte gUnknown_83FB235 - .4byte gUnknown_83FB248 - -gMissStringIds:: @ 83FE514 - .2byte STRINGID_ATTACKMISSED - .2byte STRINGID_PKMNPROTECTEDITSELF - .2byte STRINGID_PKMNAVOIDEDATTACK - .2byte STRINGID_AVOIDEDDAMAGE - .2byte STRINGID_PKMNMAKESGROUNDMISS - -gNoEscapeStringIds:: - .2byte STRINGID_CANTESCAPE - .2byte STRINGID_DONTLEAVEBIRCH - .2byte STRINGID_PREVENTSESCAPE - .2byte STRINGID_CANTESCAPE2 - .2byte STRINGID_ATTACKERCANTESCAPE - -gMoveWeatherChangeStringIds:: - .2byte STRINGID_STARTEDTORAIN - .2byte STRINGID_DOWNPOURSTARTED - .2byte STRINGID_BUTITFAILED - .2byte STRINGID_SANDSTORMBREWED - .2byte STRINGID_SUNLIGHTGOTBRIGHT - .2byte STRINGID_STARTEDHAIL - -gSandStormHailContinuesStringIds:: - .2byte STRINGID_SANDSTORMRAGES - .2byte STRINGID_HAILCONTINUES - -gSandStormHailDmgStringIds:: - .2byte STRINGID_PKMNBUFFETEDBYSANDSTORM - .2byte STRINGID_PKMNPELTEDBYHAIL - -gSandStormHailEndStringIds:: - .2byte STRINGID_SANDSTORMSUBSIDED - .2byte STRINGID_HAILSTOPPED - -gRainContinuesStringIds:: - .2byte STRINGID_RAINCONTINUES - .2byte STRINGID_DOWNPOURCONTINUES - .2byte STRINGID_RAINSTOPPED - -gProtectLikeUsedStringIds:: - .2byte STRINGID_PKMNPROTECTEDITSELF2 - .2byte STRINGID_PKMNBRACEDITSELF - .2byte STRINGID_BUTITFAILED - -gReflectLightScreenSafeguardStringIds:: - .2byte STRINGID_BUTITFAILED - .2byte STRINGID_PKMNRAISEDDEF - .2byte STRINGID_PKMNRAISEDDEFALITTLE - .2byte STRINGID_PKMNRAISEDSPDEF - .2byte STRINGID_PKMNRAISEDSPDEFALITTLE - .2byte STRINGID_PKMNCOVEREDBYVEIL - -gLeechSeedStringIds:: - .2byte STRINGID_PKMNSEEDED - .2byte STRINGID_PKMNEVADEDATTACK - .2byte STRINGID_ITDOESNTAFFECT - .2byte STRINGID_PKMNSAPPEDBYLEECHSEED - .2byte STRINGID_ITSUCKEDLIQUIDOOZE - -gRestUsedStringIds:: - .2byte STRINGID_PKMNWENTTOSLEEP - .2byte STRINGID_PKMNSLEPTHEALTHY - -gUproarOverTurnStringIds:: - .2byte STRINGID_PKMNMAKINGUPROAR - .2byte STRINGID_PKMNCALMEDDOWN - -gStockpileUsedStringIds:: - .2byte STRINGID_PKMNSTOCKPILED - .2byte STRINGID_PKMNCANTSTOCKPILE - -gWokeUpStringIds:: - .2byte STRINGID_PKMNWOKEUP - .2byte STRINGID_PKMNWOKEUPINUPROAR - -gSwallowFailStringIds:: - .2byte STRINGID_FAILEDTOSWALLOW - .2byte STRINGID_PKMNHPFULL - -gUproarAwakeStringIds:: - .2byte STRINGID_PKMNCANTSLEEPINUPROAR2 - .2byte STRINGID_UPROARKEPTPKMNAWAKE - .2byte STRINGID_PKMNSTAYEDAWAKEUSING - -gStatUpStringIds:: - .2byte STRINGID_PKMNSSTATCHANGED - .2byte STRINGID_PKMNSSTATCHANGED2 - .2byte STRINGID_STATSWONTINCREASE - .2byte STRINGID_EMPTYSTRING3 - .2byte STRINGID_USINGXTHEYOFZN - .2byte STRINGID_PKMNUSEDXTOGETPUMPED - -gStatDownStringIds:: - .2byte STRINGID_PKMNSSTATCHANGED3 - .2byte STRINGID_PKMNSSTATCHANGED4 - .2byte STRINGID_STATSWONTDECREASE - .2byte STRINGID_EMPTYSTRING3 - -gFirstTurnOfTwoStringIds:: - .2byte STRINGID_PKMNWHIPPEDWHIRLWIND - .2byte STRINGID_PKMNTOOKSUNLIGHT - .2byte STRINGID_PKMNLOWEREDHEAD - .2byte STRINGID_PKMNISGLOWING - .2byte STRINGID_PKMNFLEWHIGH - .2byte STRINGID_PKMNDUGHOLE - .2byte STRINGID_PKMNHIDUNDERWATER - .2byte STRINGID_PKMNSPRANGUP - -gWrappedStringIds:: - .2byte STRINGID_PKMNSQUEEZEDBYBIND - .2byte STRINGID_PKMNWRAPPEDBY - .2byte STRINGID_PKMNTRAPPEDINVORTEX - .2byte STRINGID_PKMNCLAMPED - .2byte STRINGID_PKMNTRAPPEDINVORTEX - .2byte STRINGID_PKMNTRAPPEDBYSANDTOMB - -gMistUsedStringIds:: - .2byte STRINGID_PKMNSHROUDEDINMIST - .2byte STRINGID_BUTITFAILED - -gFocusEnergyUsedStringIds:: - .2byte STRINGID_PKMNGETTINGPUMPED - .2byte STRINGID_BUTITFAILED - -gTransformUsedStringIds:: - .2byte STRINGID_PKMNTRANSFORMEDINTO - .2byte STRINGID_BUTITFAILED - -gSubsituteUsedStringIds:: - .2byte STRINGID_PKMNMADESUBSTITUTE - .2byte STRINGID_TOOWEAKFORSUBSTITUTE - -gGotPoisonedStringIds:: - .2byte STRINGID_PKMNWASPOISONED - .2byte STRINGID_PKMNPOISONEDBY - -gGotParalyzedStringIds:: - .2byte STRINGID_PKMNWASPARALYZED - .2byte STRINGID_PKMNWASPARALYZEDBY - -gFellAsleepStringIds:: - .2byte STRINGID_PKMNFELLASLEEP - .2byte STRINGID_PKMNMADESLEEP - -gGotBurnedStringIds:: - .2byte STRINGID_PKMNWASBURNED - .2byte STRINGID_PKMNBURNEDBY - -gGotFrozenStringIds:: - .2byte STRINGID_PKMNWASFROZEN - .2byte STRINGID_PKMNFROZENBY - -gGotDefrostedStringIds:: - .2byte STRINGID_PKMNWASDEFROSTED2 - .2byte STRINGID_PKMNWASDEFROSTEDBY - -gKOFailedStringIds:: - .2byte STRINGID_ATTACKMISSED - .2byte STRINGID_PKMNUNAFFECTED - -gAttractUsedStringIds:: - .2byte STRINGID_PKMNFELLINLOVE - .2byte STRINGID_PKMNSXINFATUATEDY - -gLeechSeedDrainStringIds:: - .2byte STRINGID_PKMNENERGYDRAINED - .2byte STRINGID_ITSUCKEDLIQUIDOOZE - -gSportsUsedStringIds:: - .2byte STRINGID_ELECTRICITYWEAKENED - .2byte STRINGID_FIREWEAKENED - -gPartyStatusHealStringIds:: - .2byte STRINGID_BELLCHIMED - .2byte STRINGID_BELLCHIMED - .2byte STRINGID_BELLCHIMED - .2byte STRINGID_BELLCHIMED - .2byte STRINGID_SOOTHINGAROMA - -gFutureMoveUsedStringIds:: - .2byte STRINGID_PKMNFORESAWATTACK - .2byte STRINGID_PKMNCHOSEXASDESTINY - -gBallEscapeStringIds:: - .2byte STRINGID_PKMNBROKEFREE - .2byte STRINGID_ITAPPEAREDCAUGHT - .2byte STRINGID_AARGHALMOSTHADIT - .2byte STRINGID_SHOOTSOCLOSE - -gWeatherContinuesStringIds:: - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_SANDSTORMISRAGING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_SUNLIGHTSTRONG - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - .2byte STRINGID_ITISRAINING - -gInobedientStringIds:: - .2byte STRINGID_PKMNLOAFING - .2byte STRINGID_PKMNWONTOBEY - .2byte STRINGID_PKMNTURNEDAWAY - .2byte STRINGID_PKMNPRETENDNOTNOTICE - -gSafariPokeblockResultStringIds:: - .2byte STRINGID_PKMNWATCHINGCAREFULLY - .2byte STRINGID_PKMNANGRY - .2byte STRINGID_PKMNEATING - -gTrainerItemCuredStatusStringIds:: - .2byte STRINGID_PKMNSITEMSNAPPEDOUT - .2byte STRINGID_PKMNSITEMCUREDPARALYSIS - .2byte STRINGID_PKMNSITEMDEFROSTEDIT - .2byte STRINGID_PKMNSITEMHEALEDBURN - .2byte STRINGID_PKMNSITEMCUREDPOISON - .2byte STRINGID_PKMNSITEMWOKEIT - -gBerryEffectStringIds:: - .2byte STRINGID_PKMNSITEMCUREDPROBLEM - .2byte STRINGID_PKMNSITEMNORMALIZEDSTATUS - -gBRNPreventionStringIds:: - .2byte STRINGID_PKMNSXPREVENTSBURNS - .2byte STRINGID_PKMNSXPREVENTSYSZ - .2byte STRINGID_PKMNSXHADNOEFFECTONY - -gPRLZPreventionStringIds:: - .2byte STRINGID_PKMNPREVENTSPARALYSISWITH - .2byte STRINGID_PKMNSXPREVENTSYSZ - .2byte STRINGID_PKMNSXHADNOEFFECTONY - -gPSNPreventionStringIds:: - .2byte STRINGID_PKMNPREVENTSPOISONINGWITH - .2byte STRINGID_PKMNSXPREVENTSYSZ - .2byte STRINGID_PKMNSXHADNOEFFECTONY - -gItemSwapStringIds:: - .2byte STRINGID_PKMNOBTAINEDX - .2byte STRINGID_PKMNOBTAINEDX2 - .2byte STRINGID_PKMNOBTAINEDXYOBTAINEDZ - -gFlashFireStringIds:: - .2byte STRINGID_PKMNRAISEDFIREPOWERWITH - .2byte STRINGID_PKMNSXMADEYINEFFECTIVE - -gCaughtMonStringIds:: - .2byte STRINGID_PKMNTRANSFERREDSOMEONESPC - .2byte STRINGID_PKMNTRANSFERREDBILLSPC - .2byte STRINGID_PKMNBOXSOMEONESPCFULL - .2byte STRINGID_PKMNBOXBILLSPCFULL - -gDoubleBattleRecallStrings:: - .2byte STRINGID_TRAINER1MON1COMEBACK - .2byte STRINGID_TRAINER1MON1COMEBACK - .2byte STRINGID_TRAINER1MON2COMEBACK - .2byte STRINGID_TRAINER1MON1AND2COMEBACK - -gTrappingMoves:: @ 83FE664 - .2byte MOVE_BIND - .2byte MOVE_WRAP - .2byte MOVE_FIRE_SPIN - .2byte MOVE_CLAMP - .2byte MOVE_WHIRLPOOL - .2byte MOVE_SAND_TOMB - .2byte 0xFFFF - -gText_PkmnIsEvolving:: @ 83FE672 - .string "What?\n" - .string "{STR_VAR_1} is evolving!$" - -gText_CongratsPkmnEvolved:: @ 83FE688 - .string "Congratulations! Your {STR_VAR_1}\n" - .string "evolved into {STR_VAR_2}!{WAIT_SE}\p" - .string "$" - -gText_PkmnStoppedEvolving:: @ 83FE6B5 - .string "Huh? {STR_VAR_1}\n" - .string "stopped evolving!\p" - .string "$" - -gText_EllipsisQuestionMark:: @ 83FE6D0 - .string "……?\p" - .string "$" - -gText_WhatWillPkmnDo:: @ 83FE6D5 - .string "What will\n" - .string "{B_ACTIVE_NAME_WITH_PREFIX} do?$" - -gUnknown_83FE6E6:: @ 83FE6E6 - .string "What will {B_PLAYER_NAME}\n" - .string "throw?$" - -gUnknown_83FE6FA:: @ 83FE6FA - .string "What will the\n" - .string "old man do?$" - -gText_LinkStandby:: @ 83FE714 - .string "{PAUSE 16}Link standby…$" - -gUnknown_83FE725:: @ 83FE725 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\n" - .string "POKéMON{CLEAR_TO 56}RUN$" - -gUnknown_83FE747:: @ 83FE747 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\n" - .string "ROCK{CLEAR_TO 56}RUN$" - -gText_MoveInterfacePP:: @ 83FE766 - .string "PP $" - -gText_MoveInterfaceType:: @ 83FE76A - .string "TYPE/$" - -gUnknown_83FE770:: @ 83FE770 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}$" - -gUnknown_83FE779:: @ 83FE779 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\n" - .string "わすれさせたい?$" - -gText_BattleYesNoChoice:: @ 83FE791 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\n" - .string "No$" - -gText_BattleSwitchWhich:: @ 83FE7A0 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\n" - .string "which?$" - -gUnknown_83FE7B6:: @ 83FE7B6 - .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}$" - -gUnknown_83FE7BF:: @ 83FE7BF - .string "{RIGHT_ARROW_2}$" - -gUnknown_83FE7C2:: @ 83FE7C2 - .string "{PLUS}$" - -gUnknown_83FE7C5:: @ 83FE7C5 - .string "-$" - -gUnknown_83FE7C7:: @ 83FE7C7 - .string "{SIZE 0}Max{SIZE 2} HP$" - -gUnknown_83FE7D4:: @ 83FE7D4 - .string "ATTACK $" - -gUnknown_83FE7DC:: @ 83FE7DC - .string "DEFENSE$" - -gUnknown_83FE7E4:: @ 83FE7E4 - .string "SP. ATK$" - -gUnknown_83FE7EC:: @ 83FE7EC - .string "SP. DEF$" - -gUnknown_83FE7F4:: @ 83FE7F4 - .4byte gUnknown_83FE7C7 - .4byte gUnknown_83FE7E4 - .4byte gUnknown_83FE7D4 - .4byte gUnknown_83FE7EC - .4byte gUnknown_83FE7DC - .4byte gUnknown_83FD5A2 - -gUnknown_83FE80C:: - .string "{HIGHLIGHT 2}SAFARI BALLS$" - -gText_HighlightRed_Left:: @ 83FE81C - .string "{HIGHLIGHT 2}Left: $" - -gText_HighlightRed:: @ 83FE826 - .string "{HIGHLIGHT 2}$" - -gText_Sleep:: @ 83FE82A - .string "sleep$" - -gText_Poison:: @ 83FE830 - .string "poison$" - -gText_Burn:: @ 83FE837 - .string "burn$" - -gText_Paralysis:: @ 83FE83C - .string "paralysis$" - -gText_Ice:: @ 83FE846 - .string "ice$" - -gText_Confusion:: @ 83FE84A - .string "confusion$" - -gText_Love:: @ 83FE854 - .string "love$" - -gUnknown_83FE859:: @ 83FE859 - .string " $" - -gUnknown_83FE85C:: @ 83FE85C - .string "\n" - .string "$" - -gUnknown_83FE85E:: @ 83FE85E - .string "\n" - .string "$" - -gUnknown_83FE860:: @ 83FE860 - .string " is$" - -gUnknown_83FE864:: @ 83FE864 - .string " is$" - -gText_BadEgg:: @ 83FE868 - .string "Bad EGG$" - -gUnknown_83FE870:: @ 83FE870 - .string "ミツル$" - -gUnknown_83FE874:: @ 83FE874 - .string "{HIGHLIGHT 0}Win$" - -gUnknown_83FE87B:: @ 83FE87B - .string "{HIGHLIGHT 0}Loss$" - -gUnknown_83FE883:: @ 83FE883 - .string "{HIGHLIGHT 0}Draw$" - -gUnknown_83FE88B:: @ 83FE88B - .string " is$" - -gUnknown_83FE88F:: @ 83FE88F - .string "'s$" - -gUnknown_83FE892:: @ 83FE892 - .string "a NORMAL move$" - -gUnknown_83FE8A0:: @ 83FE8A0 - .string "a FIGHTING move$" - -gUnknown_83FE8B0:: @ 83FE8B0 - .string "a FLYING move$" - -gUnknown_83FE8BE:: @ 83FE8BE - .string "a POISON move$" - -gUnknown_83FE8CC:: @ 83FE8CC - .string "a GROUND move$" - -gUnknown_83FE8DA:: @ 83FE8DA - .string "a ROCK move$" - -gUnknown_83FE8E6:: @ 83FE8E6 - .string "a BUG move$" - -gUnknown_83FE8F1:: @ 83FE8F1 - .string "a GHOST move$" - -gUnknown_83FE8FE:: @ 83FE8FE - .string "a STEEL move$" - -gUnknown_83FE90B:: @ 83FE90B - .string "a ??? move$" - -gUnknown_83FE916:: @ 83FE916 - .string "a FIRE move$" - -gUnknown_83FE922:: @ 83FE922 - .string "a WATER move$" - -gUnknown_83FE92F:: @ 83FE92F - .string "a GRASS move$" - -gUnknown_83FE93C:: @ 83FE93C - .string "an ELECTRIC move$" - -gUnknown_83FE94D:: @ 83FE94D - .string "a PSYCHIC move$" - -gUnknown_83FE95C:: @ 83FE95C - .string "an ICE move$" - -gUnknown_83FE968:: @ 83FE968 - .string "a DRAGON move$" - -gUnknown_83FE976:: @ 83FE976 - .string "a DARK move$" - -gUnknown_83FE982:: @ 83FE982 - .string "TIME BOARD$" - -gUnknown_83FE98D:: @ 83FE98D - .string "CLEAR TIME$" - -gUnknown_83FE998:: @ 83FE998 - .string "{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC.$" - -gUnknown_83FE9A9:: @ 83FE9A9 - .string "1F$" - -gUnknown_83FE9AC:: @ 83FE9AC - .string "2F$" - -gUnknown_83FE9AF:: @ 83FE9AF - .string "3F$" - -gUnknown_83FE9B2:: @ 83FE9B2 - .string "4F$" - -gUnknown_83FE9B5:: @ 83FE9B5 - .string "5F$" - -gUnknown_83FE9B8:: @ 83FE9B8 - .string "6F$" - -gUnknown_83FE9BB:: @ 83FE9BB - .string "7F$" - -gUnknown_83FE9BE:: @ 83FE9BE - .string "8F$" - - .align 2 -gUnknown_83FE9C4:: @ 83FE9C4 - .4byte gOtherText_Single - .4byte gOtherText_Double - .4byte gOtherText_Knockout - .4byte gOtherText_Mixed - -gUnknown_83FE9D4:: - .string "{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!$" - -gUnknown_83FE9E4:: @ 83FE9E4 - .string "Player lost against\n" - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!$" - -gUnknown_83FE9FF:: @ 83FE9FF - .string "Player battled to a draw against\n" - .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!$" - - .align 2 -gUnknown_83FEA28:: @ 83FEA28 - .4byte gUnknown_83FE892 - .4byte gUnknown_83FE8A0 - .4byte gUnknown_83FE8B0 - .4byte gUnknown_83FE8BE - .4byte gUnknown_83FE8CC - .4byte gUnknown_83FE8DA - .4byte gUnknown_83FE8E6 - .4byte gUnknown_83FE8F1 - .4byte gUnknown_83FE8FE - .4byte gUnknown_83FE90B - .4byte gUnknown_83FE916 - .4byte gUnknown_83FE922 - .4byte gUnknown_83FE92F - .4byte gUnknown_83FE93C - .4byte gUnknown_83FE94D - .4byte gUnknown_83FE95C - .4byte gUnknown_83FE968 - .4byte gUnknown_83FE976 - - .align 1 -gUnknown_83FEA70:: @ 83FEA70 - .2byte MOVE_SWORDS_DANCE - .2byte MOVE_STRENGTH - .2byte MOVE_GROWTH - .2byte MOVE_HARDEN - .2byte MOVE_MINIMIZE - .2byte MOVE_SMOKESCREEN - .2byte MOVE_WITHDRAW - .2byte MOVE_DEFENSE_CURL - .2byte MOVE_EGG_BOMB - .2byte MOVE_SMOG - .2byte MOVE_BONE_CLUB - .2byte MOVE_FLASH - .2byte MOVE_SPLASH - .2byte MOVE_ACID_ARMOR - .2byte MOVE_BONEMERANG - .2byte MOVE_REST - .2byte MOVE_SHARPEN - .2byte MOVE_SUBSTITUTE - .2byte MOVE_MIND_READER - .2byte MOVE_SNORE - .2byte MOVE_PROTECT - .2byte MOVE_SPIKES - .2byte MOVE_ENDURE - .2byte MOVE_ROLLOUT - .2byte MOVE_SWAGGER - .2byte MOVE_SLEEP_TALK - .2byte MOVE_HIDDEN_POWER - .2byte MOVE_PSYCH_UP - .2byte MOVE_EXTREME_SPEED - .2byte MOVE_FOLLOW_ME - .2byte MOVE_TRICK - .2byte MOVE_ASSIST - .2byte MOVE_INGRAIN - .2byte MOVE_KNOCK_OFF - .2byte MOVE_CAMOUFLAGE - .2byte MOVE_ASTONISH - .2byte MOVE_ODOR_SLEUTH - .2byte MOVE_GRASS_WHISTLE - .2byte MOVE_SHEER_COLD - .2byte MOVE_MUDDY_WATER - .2byte MOVE_IRON_DEFENSE - .2byte MOVE_BOUNCE - .2byte MOVE_NONE - - .2byte MOVE_TELEPORT - .2byte MOVE_RECOVER - .2byte MOVE_BIDE - .2byte MOVE_AMNESIA - .2byte MOVE_FLAIL - .2byte MOVE_TAUNT - .2byte MOVE_BULK_UP - .2byte MOVE_NONE - - .2byte MOVE_MEDITATE - .2byte MOVE_AGILITY - .2byte MOVE_MIMIC - .2byte MOVE_DOUBLE_TEAM - .2byte MOVE_BARRAGE - .2byte MOVE_TRANSFORM - .2byte MOVE_STRUGGLE - .2byte MOVE_SCARY_FACE - .2byte MOVE_CHARGE - .2byte MOVE_WISH - .2byte MOVE_BRICK_BREAK - .2byte MOVE_YAWN - .2byte MOVE_FEATHER_DANCE - .2byte MOVE_TEETER_DANCE - .2byte MOVE_MUD_SPORT - .2byte MOVE_FAKE_TEARS - .2byte MOVE_WATER_SPORT - .2byte MOVE_CALM_MIND - .2byte MOVE_NONE - - .2byte MOVE_POUND - .2byte MOVE_SCRATCH - .2byte MOVE_VICE_GRIP - .2byte MOVE_WING_ATTACK - .2byte MOVE_FLY - .2byte MOVE_BIND - .2byte MOVE_SLAM - .2byte MOVE_HORN_ATTACK - .2byte MOVE_WRAP - .2byte MOVE_THRASH - .2byte MOVE_TAIL_WHIP - .2byte MOVE_LEER - .2byte MOVE_BITE - .2byte MOVE_GROWL - .2byte MOVE_ROAR - .2byte MOVE_SING - .2byte MOVE_PECK - .2byte MOVE_ABSORB - .2byte MOVE_STRING_SHOT - .2byte MOVE_EARTHQUAKE - .2byte MOVE_FISSURE - .2byte MOVE_DIG - .2byte MOVE_TOXIC - .2byte MOVE_SCREECH - .2byte MOVE_METRONOME - .2byte MOVE_LICK - .2byte MOVE_CLAMP - .2byte MOVE_CONSTRICT - .2byte MOVE_POISON_GAS - .2byte MOVE_BUBBLE - .2byte MOVE_SLASH - .2byte MOVE_SPIDER_WEB - .2byte MOVE_NIGHTMARE - .2byte MOVE_CURSE - .2byte MOVE_FORESIGHT - .2byte MOVE_CHARM - .2byte MOVE_ATTRACT - .2byte MOVE_ROCK_SMASH - .2byte MOVE_UPROAR - .2byte MOVE_SPIT_UP - .2byte MOVE_SWALLOW - .2byte MOVE_TORMENT - .2byte MOVE_FLATTER - .2byte MOVE_ROLE_PLAY - .2byte MOVE_ENDEAVOR - .2byte MOVE_TICKLE - .2byte MOVE_COVET - .2byte MOVE_NONE - -gUnknown_83FEB5C:: @ 83FEB5C - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - - .align 2 -gUnknown_83FEB64:: @ 83FEB64 - .byte 0xff, 0x02, 0x02, 0x02, 0x00, 0x02, 0x01, 0x01, 0x0f, 0x06 - .align 2 - .byte 0xff, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00, 0x01, 0x0f, 0x06 - .align 2 - .byte 0xee, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x0b - .align 2 - .byte 0xee, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x01, 0x0a, 0x02, 0x00, 0x02, 0x00, 0x0c, 0x0e, 0x0b - .align 2 - .byte 0xee, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02 - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x01, 0x02, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0xee, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f - .align 2 - .byte 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06 - .align 2 - .byte 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06 - .align 2 - .byte 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06 - .align 2 - .byte 0x11, 0x04, 0x00, 0x01, 0x00, 0x01, 0x01, 0x02, 0x01, 0x03 - .align 2 - -gUnknown_83FEC90:: @ 83FEC90 - .byte 0x04, 0x05, 0x02, 0x02 diff --git a/include/battle.h b/include/battle.h index 00f7dcea9..fed98dd81 100644 --- a/include/battle.h +++ b/include/battle.h @@ -24,8 +24,7 @@ #define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 -#define TRAINER_OPPONENT_800 0x800 -#define STEVEN_PARTNER_ID 0xC03 +#define TRAINER_LINK_OPPONENT 0x800 #define SECRET_BASE_OPPONENT 0x400 #define B_ACTION_USE_MOVE 0 diff --git a/include/battle_message.h b/include/battle_message.h index 2bbfffa43..612b253cf 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -51,13 +51,9 @@ #define B_TXT_DEF_PREFIX2 0x2B #define B_TXT_ATK_PREFIX3 0x2C #define B_TXT_DEF_PREFIX3 0x2D -#define B_TXT_TRAINER2_CLASS 0x2E -#define B_TXT_TRAINER2_NAME 0x2F -#define B_TXT_TRAINER2_LOSE_TEXT 0x30 -#define B_TXT_TRAINER2_WIN_TEXT 0x31 -#define B_TXT_PARTNER_CLASS 0x32 -#define B_TXT_PARTNER_NAME 0x33 -#define B_TXT_BUFF3 0x34 +#define B_TXT_TRAINER2_LOSE_TEXT 0x2E +#define B_TXT_TRAINER2_WIN_TEXT 0x2F +#define B_TXT_BUFF3 0x30 // for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 155e9f7bf..0eb6b63f4 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -387,6 +387,6 @@ #define STRINGID_TRAINER1MON2COMEBACK 384 #define STRINGID_TRAINER1MON1AND2COMEBACK 385 -#define BATTLESTRINGS_COUNT 386 +#define BATTLESTRINGS_COUNT 374 #endif // GUARD_BATTLE_STRING_IDS_H diff --git a/include/battle_tower.h b/include/battle_tower.h index 9bb93f1c2..d7585c401 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -31,5 +31,10 @@ void ValidateEReaderTrainer(void); u8 GetBattleTowerTrainerFrontSpriteId(void); u8 GetEreaderTrainerFrontSpriteId(void); void CopyEReaderTrainerName5(u8 *dest); +void sub_815DC40(u8 *dest, u8 opponentIdx); +void sub_815DBF4(u8 *dest, u8 opponentIdx); +void GetBattleTowerTrainerName(u8 *text); +u8 GetEreaderTrainerClassId(void); +u8 GetBattleTowerTrainerClassNameId(void); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 30e11c14f..f75c4bab8 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -170,155 +170,6 @@ #define F_TRAINER_FEMALE (1 << 7) -#define TRAINER_PIC_AQUA_LEADER_ARCHIE 0 -#define TRAINER_PIC_AQUA_GRUNT_M 1 -#define TRAINER_PIC_AQUA_GRUNT_F 2 -#define TRAINER_PIC_RS_AROMA_LADY 3 -#define TRAINER_PIC_RS_RUIN_MANIAC 4 -#define TRAINER_PIC_INTERVIEWER 5 -#define TRAINER_PIC_RS_TUBER_F 6 -#define TRAINER_PIC_TUBER_M 7 -#define TRAINER_PIC_RS_COOLTRAINER_M 8 -#define TRAINER_PIC_RS_COOLTRAINER_F 9 -#define TRAINER_PIC_HEX_MANIAC 10 -#define TRAINER_PIC_RS_LADY 11 -#define TRAINER_PIC_RS_BEAUTY 12 -#define TRAINER_PIC_RICH_BOY 13 -#define TRAINER_PIC_RS_POKEMANIAC 14 -#define TRAINER_PIC_RS_SWIMMER_M 15 -#define TRAINER_PIC_RS_BLACK_BELT 16 -#define TRAINER_PIC_GUITARIST 17 -#define TRAINER_PIC_KINDLER 18 -#define TRAINER_PIC_RS_CAMPER 19 -#define TRAINER_PIC_BUG_MANIAC 20 -#define TRAINER_PIC_RS_PSYCHIC_M 21 -#define TRAINER_PIC_RS_PSYCHIC_F 22 -#define TRAINER_PIC_RS_GENTLEMAN 23 -#define TRAINER_PIC_ELITE_FOUR_SIDNEY 24 -#define TRAINER_PIC_ELITE_FOUR_PHOEBE 25 -#define TRAINER_PIC_LEADER_ROXANNE 26 -#define TRAINER_PIC_LEADER_BRAWLY 27 -#define TRAINER_PIC_LEADER_TATE_AND_LIZA 28 -#define TRAINER_PIC_SCHOOL_KID_M 29 -#define TRAINER_PIC_SCHOOL_KID_F 30 -#define TRAINER_PIC_SR_AND_JR 31 -#define TRAINER_PIC_POKEFAN_M 32 -#define TRAINER_PIC_POKEFAN_F 33 -#define TRAINER_PIC_EXPERT_M 34 -#define TRAINER_PIC_EXPERT_F 35 -#define TRAINER_PIC_RS_YOUNGSTER 36 -#define TRAINER_PIC_CHAMPION_STEVEN 37 -#define TRAINER_PIC_RS_FISHERMAN 38 -#define TRAINER_PIC_CYCLING_TRIATHLETE_M 39 -#define TRAINER_PIC_CYCLING_TRIATHLETE_F 40 -#define TRAINER_PIC_RUNNING_TRIATHLETE_M 41 -#define TRAINER_PIC_RUNNING_TRIATHLETE_F 42 -#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 43 -#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 44 -#define TRAINER_PIC_DRAGON_TAMER 45 -#define TRAINER_PIC_RS_BIRD_KEEPER 46 -#define TRAINER_PIC_NINJA_BOY 47 -#define TRAINER_PIC_BATTLE_GIRL 48 -#define TRAINER_PIC_PARASOL_LADY 49 -#define TRAINER_PIC_RS_SWIMMER_F 50 -#define TRAINER_PIC_RS_PICNICKER 51 -#define TRAINER_PIC_RS_TWINS 52 -#define TRAINER_PIC_RS_SAILOR 53 -#define TRAINER_PIC_COLLECTOR 54 -#define TRAINER_PIC_WALLY 55 -#define TRAINER_PIC_RS_BRENDAN_1 56 -#define TRAINER_PIC_RS_MAY_1 57 -#define TRAINER_PIC_POKEMON_BREEDER_M 58 -#define TRAINER_PIC_RS_POKEMON_BREEDER_F 59 -#define TRAINER_PIC_RS_POKEMON_RANGER_M 60 -#define TRAINER_PIC_RS_POKEMON_RANGER_F 61 -#define TRAINER_PIC_MAGMA_LEADER_MAXIE 62 -#define TRAINER_PIC_MAGMA_GRUNT_M 63 -#define TRAINER_PIC_MAGMA_GRUNT_F 64 -#define TRAINER_PIC_RS_LASS 65 -#define TRAINER_PIC_RS_BUG_CATCHER 66 -#define TRAINER_PIC_RS_HIKER 67 -#define TRAINER_PIC_RS_YOUNG_COUPLE 68 -#define TRAINER_PIC_OLD_COUPLE 69 -#define TRAINER_PIC_RS_SIS_AND_BRO 70 -#define TRAINER_PIC_AQUA_ADMIN_M 71 -#define TRAINER_PIC_AQUA_ADMIN_F 72 -#define TRAINER_PIC_MAGMA_ADMIN_M 73 -#define TRAINER_PIC_MAGMA_ADMIN_F 74 -#define TRAINER_PIC_LEADER_WATTSON 75 -#define TRAINER_PIC_LEADER_FLANNERY 76 -#define TRAINER_PIC_LEADER_NORMAN 77 -#define TRAINER_PIC_LEADER_WINONA 78 -#define TRAINER_PIC_LEADER_WALLACE 79 -#define TRAINER_PIC_ELITE_FOUR_GLACIA 80 -#define TRAINER_PIC_ELITE_FOUR_DRAKE 81 -#define TRAINER_PIC_YOUNGSTER 82 -#define TRAINER_PIC_BUG_CATCHER 83 -#define TRAINER_PIC_LASS 84 -#define TRAINER_PIC_SAILOR 85 -#define TRAINER_PIC_CAMPER 86 -#define TRAINER_PIC_PICNICKER 87 -#define TRAINER_PIC_POKEMANIAC 88 -#define TRAINER_PIC_SUPER_NERD 89 -#define TRAINER_PIC_HIKER 90 -#define TRAINER_PIC_BIKER 91 -#define TRAINER_PIC_BURGLAR 92 -#define TRAINER_PIC_ENGINEER 93 -#define TRAINER_PIC_FISHERMAN 94 -#define TRAINER_PIC_SWIMMER_M 95 -#define TRAINER_PIC_CUE_BALL 96 -#define TRAINER_PIC_GAMER 97 -#define TRAINER_PIC_BEAUTY 98 -#define TRAINER_PIC_SWIMMER_F 99 -#define TRAINER_PIC_PSYCHIC_M 100 -#define TRAINER_PIC_ROCKER 101 -#define TRAINER_PIC_JUGGLER 102 -#define TRAINER_PIC_TAMER 103 -#define TRAINER_PIC_BIRD_KEEPER 104 -#define TRAINER_PIC_BLACK_BELT 105 -#define TRAINER_PIC_RIVAL_1 106 -#define TRAINER_PIC_SCIENTIST 107 -#define TRAINER_PIC_LEADER_GIOVANNI 108 -#define TRAINER_PIC_ROCKET_GRUNT_M 109 -#define TRAINER_PIC_COOLTRAINER_M 110 -#define TRAINER_PIC_COOLTRAINER_F 111 -#define TRAINER_PIC_ELITE_FOUR_LORELEI 112 -#define TRAINER_PIC_ELITE_FOUR_BRUNO 113 -#define TRAINER_PIC_ELITE_FOUR_AGATHA 114 -#define TRAINER_PIC_ELITE_FOUR_LANCE 115 -#define TRAINER_PIC_LEADER_BROCK 116 -#define TRAINER_PIC_LEADER_MISTY 117 -#define TRAINER_PIC_LEADER_LT_SURGE 118 -#define TRAINER_PIC_LEADER_ERIKA 119 -#define TRAINER_PIC_LEADER_KOGA 120 -#define TRAINER_PIC_LEADER_BLAINE 121 -#define TRAINER_PIC_LEADER_SABRINA 122 -#define TRAINER_PIC_GENTLEMAN 123 -#define TRAINER_PIC_RIVAL_2 124 -#define TRAINER_PIC_CHAMPION_RIVAL 125 -#define TRAINER_PIC_CHANNELER 126 -#define TRAINER_PIC_TWINS 127 -#define TRAINER_PIC_COOL_COUPLE 128 -#define TRAINER_PIC_YOUNG_COUPLE 129 -#define TRAINER_PIC_CRUSH_KIN 130 -#define TRAINER_PIC_SIS_AND_BRO 131 -#define TRAINER_PIC_PROFESSOR_OAK 132 -#define TRAINER_PIC_RS_BRENDAN_2 133 -#define TRAINER_PIC_RS_MAY_2 134 -#define TRAINER_PIC_RED 135 -#define TRAINER_PIC_LEAF 136 -#define TRAINER_PIC_ROCKET_GRUNT_F 137 -#define TRAINER_PIC_PSYCHIC_F 138 -#define TRAINER_PIC_CRUSH_GIRL 139 -#define TRAINER_PIC_TUBER_F 140 -#define TRAINER_PIC_POKEMON_BREEDER_F 141 -#define TRAINER_PIC_POKEMON_RANGER_M 142 -#define TRAINER_PIC_POKEMON_RANGER_F 143 -#define TRAINER_PIC_AROMA_LADY 144 -#define TRAINER_PIC_RUIN_MANIAC 145 -#define TRAINER_PIC_LADY 146 -#define TRAINER_PIC_PAINTER 147 - #define TRAINER_NONE 0 #define TRAINER_AQUA_LEADER_1 1 #define TRAINER_TEAM_AQUA_1 2 diff --git a/include/data.h b/include/data.h index 9ea1f7c96..72e6b66fc 100644 --- a/include/data.h +++ b/include/data.h @@ -22,6 +22,8 @@ extern const u16 gUnknown_8251FEE[]; extern const u16 gUnknown_8252324[]; extern const u16 gUnknown_82539D4[]; +extern const u8 gTrainerClassNames[][13]; + extern const struct MonCoords gMonFrontPicCoords[]; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; extern const struct MonCoords gMonBackPicCoords[]; diff --git a/include/event_scripts.h b/include/event_scripts.h index e8fc40fa4..2ad1485c2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1188,4 +1188,10 @@ extern const u8 Text_1BCAF2[]; extern const u8 EventScript_RepelWoreOff[]; +// battle_message +extern const u8 Text_1A5CF1[]; +extern const u8 Text_1A5D31[]; +extern const u8 Text_1A5D6E[]; +extern const u8 Text_1A5DB1[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/strings.h b/include/strings.h index 7750b271c..d6a271f7b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -193,7 +193,7 @@ extern const u8 BattleText_GetPumped[]; extern const u8 BattleText_MistShroud[]; extern const u8 gText_BadEgg[]; extern const u8 gText_PkmnsXPreventsSwitching[]; -extern u8 *gUnknown_83FD5D0[]; +extern const u8 *const gUnknown_83FD5D0[]; // diploma extern const u8 gUnknown_841B60E[]; diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 810642a69..9c1ac0631 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -6,5 +6,7 @@ void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); void ResetTrainerTowerResults(void); +void sub_815DA28(u8 *text); +u8 sub_815DA10(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/ld_script.txt b/ld_script.txt index c23a7f105..ff56bec64 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -195,6 +195,7 @@ SECTIONS { src/fldeff_strength.o(.text); src/battle_transition.o(.text); src/battle_controller_link_partner.o(.text); + src/battle_message.o(.text); asm/battle_message.o(.text); src/math_util.o(.text); src/roulette_util.o(.text); @@ -477,7 +478,7 @@ SECTIONS { src/evolution_scene.o(.rodata); src/battle_transition.o(.rodata); src/battle_controller_link_partner.o(.rodata); - data/battle_message.o(.rodata); + src/battle_message.o(.rodata); src/save.o(.rodata); data/field_effect_helpers.o(.rodata); src/battle_controller_safari.o(.rodata); diff --git a/src/battle_message.c b/src/battle_message.c new file mode 100644 index 000000000..2924dc520 --- /dev/null +++ b/src/battle_message.c @@ -0,0 +1,2184 @@ +#include "global.h" +#include "battle_string_ids.h" +#include "battle.h" +#include "battle_anim.h" +#include "string_util.h" +#include "text.h" +#include "window.h" +#include "strings.h" +#include "battle_message.h" +#include "link.h" +#include "event_scripts.h" +#include "event_data.h" +#include "item.h" +#include "battle_tower.h" +#include "trainer_tower.h" +#include "battle_setup.h" +#include "constants/moves.h" +#include "constants/items.h" +#include "constants/trainer_classes.h" + +struct BattleWindowText +{ + u8 fillValue; + u8 fontId; + u8 x; + u8 y; + u8 letterSpacing; + u8 lineSpacing; + u8 speed; + u8 fgColor; + u8 bgColor; + u8 shadowColor; +}; + +EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {}; +EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL; + +void ChooseMoveUsedParticle(u8 *textPtr); +void ChooseTypeOfMoveUsedString(u8 *textPtr); +void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); + +const u8 gUnknown_83FB218[] = _(""); // @ 83FB218 +const u8 gUnknown_83FB219[] = _("{B_TRAINER1_LOSE_TEXT}"); // @ 83FB219 +const u8 gUnknown_83FB21C[] = _("{B_TRAINER2_CLASS}"); // @ 83FB21C +const u8 gUnknown_83FB21F[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); // @ 83FB21F +const u8 gUnknown_83FB232[] = _("{B_TRAINER1_WIN_TEXT}"); // @ 83FB232 +const u8 gUnknown_83FB235[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); // @ 83FB235 +const u8 gUnknown_83FB248[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); // @ 83FB248 +const u8 gUnknown_83FB262[] = _("{B_TRAINER2_NAME}"); // @ 83FB262 +const u8 gUnknown_83FB265[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"); // @ 83FB265 +const u8 gUnknown_83FB282[] = _(""); // @ 83FB282 +const u8 gUnknown_83FB283[] = _(" a boosted"); // @ 83FB283 +const u8 gUnknown_83FB28E[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{WAIT_SE}\p"); // @ 83FB28E +const u8 gUnknown_83FB2A4[] = _("{B_BUFF1} learned\n{B_BUFF2}!{WAIT_SE}\p"); // @ 83FB2A4 +const u8 gUnknown_83FB2B6[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p"); // @ 83FB2B6 +const u8 gUnknown_83FB2D1[] = _("But, {B_BUFF1} can't learn\nmore than four moves.\p"); // @ 83FB2D1 +const u8 gUnknown_83FB2FC[] = _("Delete a move to make\nroom for {B_BUFF2}?"); // @ 83FB2FC +const u8 gUnknown_83FB31F[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p"); // @ 83FB31F +const u8 gUnknown_83FB32E[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?"); // @ 83FB32E +const u8 gUnknown_83FB343[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p"); // @ 83FB343 +const u8 gUnknown_83FB359[] = _("Use next POKéMON?"); // @ 83FB359 +const u8 gUnknown_83FB36B[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nattack missed!"); // @ 83FB36B +const u8 gUnknown_83FB37F[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!"); // @ 83FB37F +const u8 gUnknown_83FB394[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!"); // @ 83FB394 +const u8 gUnknown_83FB3AF[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!"); // @ 83FB3AF +const u8 gUnknown_83FB3D3[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!"); // @ 83FB3D3 +const u8 gUnknown_83FB3EA[] = _("It doesn't affect\n{B_DEF_NAME_WITH_PREFIX}…"); // @ 83FB3EA +const u8 gUnknown_83FB400[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); // @ 83FB400 +const u8 gUnknown_83FB40D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); // @ 83FB40D +const u8 gUnknown_83FB41A[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); // @ 83FB41A +const u8 gUnknown_83FB433[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); // @ 83FB433 +const u8 gUnknown_83FB451[] = _("{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB451 +const u8 gUnknown_83FB484[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); // @ 83FB484 +const u8 gUnknown_83FB4BE[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB4BE +const u8 gUnknown_83FB4F7[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB4F7 +const u8 gUnknown_83FB508[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); // @ 83FB508 +const u8 gUnknown_83FB525[] = _("Can't escape!\p"); // @ 83FB525 +const u8 gUnknown_83FB534[] = _("{B_ATK_NAME_WITH_PREFIX} can't escape!"); // @ 83FB534 +const u8 gUnknown_83FB545[] = _("Hit {B_BUFF1} time(s)!"); // @ 83FB545 +const u8 gUnknown_83FB555[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); // @ 83FB555 +const u8 gUnknown_83FB565[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); // @ 83FB565 +const u8 gUnknown_83FB57C[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!"); // @ 83FB57C +const u8 gUnknown_83FB592[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); // @ 83FB592 +const u8 gUnknown_83FB5A8[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!"); // @ 83FB5A8 +const u8 gUnknown_83FB5BC[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); // @ 83FB5BC +const u8 gUnknown_83FB5CD[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FB5CD +const u8 gUnknown_83FB5E2[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); // @ 83FB5E2 +const u8 gUnknown_83FB5F8[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); // @ 83FB5F8 +const u8 gUnknown_83FB610[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); // @ 83FB610 +const u8 gUnknown_83FB626[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); // @ 83FB626 +const u8 gUnknown_83FB641[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); // @ 83FB641 +const u8 gUnknown_83FB650[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FB650 +const u8 gUnknown_83FB663[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); // @ 83FB663 +const u8 gUnknown_83FB67B[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); // @ 83FB67B +const u8 gUnknown_83FB692[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); // @ 83FB692 +const u8 gUnknown_83FB6A7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); // @ 83FB6A7 +const u8 gUnknown_83FB6BF[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!"); // @ 83FB6BF +const u8 gUnknown_83FB6D3[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); // @ 83FB6D3 +const u8 gUnknown_83FB6E5[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); // @ 83FB6E5 +const u8 gUnknown_83FB6F7[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); // @ 83FB6F7 +const u8 gUnknown_83FB70F[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); // @ 83FB70F +const u8 gUnknown_83FB73A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); // @ 83FB73A +const u8 gUnknown_83FB76A[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can't move!"); // @ 83FB76A +const u8 gUnknown_83FB78A[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!"); // @ 83FB78A +const u8 gUnknown_83FB7A3[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!"); // @ 83FB7A3 +const u8 gUnknown_83FB7BF[] = _("{B_DEF_NAME_WITH_PREFIX}'s\ndream was eaten!"); // @ 83FB7BF +const u8 gUnknown_83FB7D5[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!"); // @ 83FB7D5 +const u8 gUnknown_83FB7EE[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go lower!"); // @ 83FB7EE +const u8 gUnknown_83FB806[] = _("Your team's {B_BUFF1}\nstopped working!"); // @ 83FB806 +const u8 gUnknown_83FB826[] = _("The foe's {B_BUFF1}\nstopped working!"); // @ 83FB826 +const u8 gUnknown_83FB844[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!"); // @ 83FB844 +const u8 gUnknown_83FB854[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!"); // @ 83FB854 +const u8 gUnknown_83FB871[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!"); // @ 83FB871 +const u8 gUnknown_83FB885[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!"); // @ 83FB885 +const u8 gUnknown_83FB89D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!"); // @ 83FB89D +const u8 gUnknown_83FB8AE[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); // @ 83FB8AE +const u8 gUnknown_83FB8C5[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!"); // @ 83FB8C5 +const u8 gUnknown_83FB8E0[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!"); // @ 83FB8E0 +const u8 gUnknown_83FB8F3[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); // @ 83FB8F3 +const u8 gUnknown_83FB914[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!"); // @ 83FB914 +const u8 gUnknown_83FB921[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!"); // @ 83FB921 +const u8 gUnknown_83FB935[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nHP is full!"); // @ 83FB935 +const u8 gUnknown_83FB946[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF!"); // @ 83FB946 +const u8 gUnknown_83FB95E[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF a little!"); // @ 83FB95E +const u8 gUnknown_83FB97F[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE!"); // @ 83FB97F +const u8 gUnknown_83FB997[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE a little!"); // @ 83FB997 +const u8 gUnknown_83FB9B8[] = _("{B_ATK_PREFIX2}'s party is covered\nby a veil!"); // @ 83FB9B8 +const u8 gUnknown_83FB9D9[] = _("{B_DEF_NAME_WITH_PREFIX}'s party is protected\nby SAFEGUARD!"); // @ 83FB9D9 +const u8 gUnknown_83FB9FF[] = _("{B_ATK_PREFIX3}'s party is no longer\nprotected by SAFEGUARD!"); // @ 83FB9FF +const u8 gUnknown_83FBA2F[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!"); // @ 83FBA2F +const u8 gUnknown_83FBA41[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!"); // @ 83FBA41 +const u8 gUnknown_83FBA5E[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!"); // @ 83FBA5E +const u8 gUnknown_83FBA79[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!"); // @ 83FBA79 +const u8 gUnknown_83FBA8E[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!"); // @ 83FBA8E +const u8 gUnknown_83FBAA3[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!"); // @ 83FBAA3 +const u8 gUnknown_83FBAB2[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!"); // @ 83FBAB2 +const u8 gUnknown_83FBAC3[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!"); // @ 83FBAC3 +const u8 gUnknown_83FBAD2[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!"); // @ 83FBAD2 +const u8 gUnknown_83FBAE5[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!"); // @ 83FBAE5 +const u8 gUnknown_83FBAF3[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}'s BIND!"); // @ 83FBAF3 +const u8 gUnknown_83FBB11[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!"); // @ 83FBB11 +const u8 gUnknown_83FBB2F[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!"); // @ 83FBB2F +const u8 gUnknown_83FBB4C[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!"); // @ 83FBB4C +const u8 gUnknown_83FBB62[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!"); // @ 83FBB62 +const u8 gUnknown_83FBB71[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!"); // @ 83FBB71 +const u8 gUnknown_83FBB83[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); // @ 83FBB83 +const u8 gUnknown_83FBB99[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); // @ 83FBB99 +const u8 BattleText_MistShroud[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); // @ 83FBBB4 +const u8 gUnknown_83FBBD0[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); // @ 83FBBD0 +const u8 BattleText_GetPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); // @ 83FBBE9 +const u8 gUnknown_83FBBFF[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); // @ 83FBBFF +const u8 gUnknown_83FBC16[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); // @ 83FBC16 +const u8 gUnknown_83FBC2B[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!"); // @ 83FBC2B +const u8 gUnknown_83FBC4C[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!"); // @ 83FBC4C +const u8 gUnknown_83FBC62[] = _("{B_ATK_PREFIX1}'s {B_BUFF1}\nwore off!"); // @ 83FBC62 +const u8 gUnknown_83FBC74[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!"); // @ 83FBC74 +const u8 gUnknown_83FBC83[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!"); // @ 83FBC83 +const u8 gUnknown_83FBC99[] = _("{B_ATK_NAME_WITH_PREFIX}'s health is\nsapped by LEECH SEED!"); // @ 83FBC99 +const u8 gUnknown_83FBCBE[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep."); // @ 83FBCBE +const u8 gUnknown_83FBCD1[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!"); // @ 83FBCD1 +const u8 gUnknown_83FBCDD[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR\nkept it awake!"); // @ 83FBCDD +const u8 gUnknown_83FBCFC[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!"); // @ 83FBCFC +const u8 gUnknown_83FBD16[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!"); // @ 83FBD16 +const u8 gUnknown_83FBD2B[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); // @ 83FBD2B +const u8 gUnknown_83FBD43[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); // @ 83FBD43 +const u8 gUnknown_83FBD53[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); // @ 83FBD53 +const u8 gUnknown_83FBD74[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); // @ 83FBD74 +const u8 gUnknown_83FBD86[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nSTOCKPILE any more!"); // @ 83FBD86 +const u8 gUnknown_83FBDA3[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); // @ 83FBDA3 +const u8 gUnknown_83FBDC4[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); // @ 83FBDC4 +const u8 gUnknown_83FBDE2[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); // @ 83FBDE2 +const u8 gUnknown_83FBE00[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!"); // @ 83FBE00 +const u8 gUnknown_83FBE16[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!"); // @ 83FBE16 +const u8 gUnknown_83FBE2B[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!"); // @ 83FBE2B +const u8 gUnknown_83FBE4E[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); // @ 83FBE4E +const u8 gUnknown_83FBE61[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!"); // @ 83FBE61 +const u8 gUnknown_83FBE73[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!"); // @ 83FBE73 +const u8 gUnknown_83FBE8B[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!"); // @ 83FBE8B +const u8 gUnknown_83FBEA1[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!"); // @ 83FBEA1 +const u8 gUnknown_83FBEBE[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p"); // @ 83FBEBE +const u8 gUnknown_83FBEE2[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nSUBSTITUTE faded!\p"); // @ 83FBEE2 +const u8 gUnknown_83FBEFA[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!"); // @ 83FBEFA +const u8 gUnknown_83FBF0C[] = _("{B_DEF_NAME_WITH_PREFIX}'s RAGE\nis building!"); // @ 83FBF0C +const u8 gUnknown_83FBF23[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas disabled!"); // @ 83FBF23 +const u8 gUnknown_83FBF39[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!"); // @ 83FBF39 +const u8 gUnknown_83FBF51[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!"); // @ 83FBF51 +const u8 gUnknown_83FBF63[] = _("{B_ATK_NAME_WITH_PREFIX}'s ENCORE\nended!"); // @ 83FBF63 +const u8 gUnknown_83FBF76[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FBF76 +const u8 gUnknown_83FBF89[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!"); // @ 83FBF89 +const u8 gUnknown_83FBF99[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!"); // @ 83FBF99 +const u8 gUnknown_83FBFBF[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!"); // @ 83FBFBF +const u8 gUnknown_83FBFD3[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} by {B_BUFF2}!"); // @ 83FBFD3 +const u8 gUnknown_83FBFEA[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); // @ 83FBFEA +const u8 gUnknown_83FBFFC[] = _("{B_DEF_NAME_WITH_PREFIX} can't\nescape now!"); // @ 83FBFFC +const u8 gUnknown_83FC011[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!"); // @ 83FC011 +const u8 gUnknown_83FC02B[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); // @ 83FC02B +const u8 gUnknown_83FC048[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC048 +const u8 gUnknown_83FC072[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); // @ 83FC072 +const u8 gUnknown_83FC090[] = _("SPIKES were scattered all around\nthe opponent's side!"); // @ 83FC090 +const u8 gUnknown_83FC0C6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); // @ 83FC0C6 +const u8 gUnknown_83FC0DC[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC0DC +const u8 gUnknown_83FC0EE[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); // @ 83FC0EE +const u8 gUnknown_83FC10C[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); // @ 83FC10C +const u8 gUnknown_83FC11E[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!"); // @ 83FC11E +const u8 gUnknown_83FC132[] = _("MAGNITUDE {B_BUFF1}!"); // @ 83FC132 +const u8 gUnknown_83FC140[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!"); // @ 83FC140 +const u8 gUnknown_83FC168[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s stat changes!"); // @ 83FC168 +const u8 gUnknown_83FC185[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); // @ 83FC185 +const u8 gUnknown_83FC19D[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); // @ 83FC19D +const u8 gUnknown_83FC1B1[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); // @ 83FC1B1 +const u8 gUnknown_83FC1C6[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); // @ 83FC1C6 +const u8 gUnknown_83FC1DB[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); // @ 83FC1DB +const u8 gUnknown_83FC1F1[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); // @ 83FC1F1 +const u8 gUnknown_83FC208[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!"); // @ 83FC208 +const u8 gUnknown_83FC224[] = _("{B_BUFF1}'s attack!"); // @ 83FC224 +const u8 gUnknown_83FC231[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!"); // @ 83FC231 +const u8 gUnknown_83FC254[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); // @ 83FC254 +const u8 gUnknown_83FC26D[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); // @ 83FC26D +const u8 gUnknown_83FC28A[] = _("{B_ATK_NAME_WITH_PREFIX}'s status\nreturned to normal!"); // @ 83FC28A +const u8 gUnknown_83FC2AA[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); // @ 83FC2AA +const u8 gUnknown_83FC2C7[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); // @ 83FC2C7 +const u8 gUnknown_83FC2E3[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!"); // @ 83FC2E3 +const u8 gUnknown_83FC2FA[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC2FA +const u8 gUnknown_83FC312[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!"); // @ 83FC312 +const u8 gUnknown_83FC337[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}."); // @ 83FC337 +const u8 gUnknown_83FC347[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); // @ 83FC347 +const u8 gUnknown_83FC357[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); // @ 83FC357 +const u8 gUnknown_83FC377[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!"); // @ 83FC377 +const u8 gUnknown_83FC38A[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!"); // @ 83FC38A +const u8 gUnknown_83FC39A[] = _("{B_BUFF1}'s WISH\ncame true!"); // @ 83FC39A +const u8 gUnknown_83FC3AF[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!"); // @ 83FC3AF +const u8 gUnknown_83FC3C5[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!"); // @ 83FC3C5 +const u8 gUnknown_83FC3EB[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!"); // @ 83FC3EB +const u8 gUnknown_83FC40E[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!"); // @ 83FC40E +const u8 gUnknown_83FC421[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); // @ 83FC421 +const u8 gUnknown_83FC439[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!"); // @ 83FC439 +const u8 gUnknown_83FC461[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's moveシsス!"); // @ 83FC461 +const u8 gUnknown_83FC483[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!"); // @ 83FC483 +const u8 gUnknown_83FC4AB[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\nall its PP due to the GRUDGE!"); // @ 83FC4AB +const u8 gUnknown_83FC4D6[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); // @ 83FC4D6 +const u8 gUnknown_83FC4F0[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); // @ 83FC4F0 +const u8 gUnknown_83FC518[] = _("{B_ATK_NAME_WITH_PREFIX} waits for its foe\nto make a move!"); // @ 83FC518 +const u8 gUnknown_83FC53D[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!"); // @ 83FC53D +const u8 gUnknown_83FC554[] = _("Electricity's power was\nweakened!"); // @ 83FC554 +const u8 gUnknown_83FC576[] = _("Fire's power was\nweakened!"); // @ 83FC576 +const u8 gUnknown_83FC591[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!"); // @ 83FC591 +const u8 gUnknown_83FC5A2[] = _("A soothing aroma wafted\nthrough the area!"); // @ 83FC5A2 +const u8 gUnknown_83FC5CC[] = _("Items can't be used now.{PAUSE 64}"); // @ 83FC5CC +const u8 gUnknown_83FC5E8[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); // @ 83FC5E8 +const u8 gUnknown_83FC5F6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to hustle!"); // @ 83FC5F6 +const u8 gUnknown_83FC60C[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn't move!"); // @ 83FC60C +const u8 gUnknown_83FC631[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); // @ 83FC631 +const u8 gUnknown_83FC646[] = _("The wall shattered!"); // @ 83FC646 +const u8 gUnknown_83FC65A[] = _("But it had no effect!"); // @ 83FC65A +const u8 gUnknown_83FC670[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); // @ 83FC670 +const u8 gUnknown_83FC687[] = _("{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nis disabled!\p"); // @ 83FC687 +const u8 gUnknown_83FC69D[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\nmove in a row due to the TORMENT!\p"); // @ 83FC69D +const u8 gUnknown_83FC6D6[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} after the TAUNT!\p"); // @ 83FC6D6 +const u8 gUnknown_83FC6F8[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the\nsealed {B_CURRENT_MOVE}!\p"); // @ 83FC6F8 +const u8 gUnknown_83FC715[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); // @ 83FC715 +const u8 gUnknown_83FC72B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); // @ 83FC72B +const u8 gUnknown_83FC745[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); // @ 83FC745 +const u8 gUnknown_83FC75D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!"); // @ 83FC75D +const u8 gUnknown_83FC780[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!"); // @ 83FC780 +const u8 gUnknown_83FC79D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!"); // @ 83FC79D +const u8 gUnknown_83FC7B6[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!"); // @ 83FC7B6 +const u8 gUnknown_83FC7D3[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents paralysis!"); // @ 83FC7D3 +const u8 gUnknown_83FC7EF[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents romance!"); // @ 83FC7EF +const u8 gUnknown_83FC809[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents poisoning!"); // @ 83FC809 +const u8 gUnknown_83FC825[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents confusion!"); // @ 83FC825 +const u8 gUnknown_83FC841[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its FIRE power!"); // @ 83FC841 +const u8 gUnknown_83FC860[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); // @ 83FC860 +const u8 gUnknown_83FC87B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!"); // @ 83FC87B +const u8 gUnknown_83FC895[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); // @ 83FC895 +const u8 gUnknown_83FC8B1[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); // @ 83FC8B1 +const u8 gUnknown_83FC8C2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}'s {B_BUFF2}!"); // @ 83FC8C2 +const u8 gUnknown_83FC8D5[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents burns!"); // @ 83FC8D5 +const u8 gUnknown_83FC8ED[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); // @ 83FC8ED +const u8 gUnknown_83FC900[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); // @ 83FC900 +const u8 gUnknown_83FC913[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nrestored its HP a little!"); // @ 83FC913 +const u8 gUnknown_83FC935[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); // @ 83FC935 +const u8 gUnknown_83FC955[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nintensified the sun's rays!"); // @ 83FC955 +const u8 gUnknown_83FC979[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); // @ 83FC979 +const u8 gUnknown_83FC993[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); // @ 83FC993 +const u8 gUnknown_83FC9AA[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); // @ 83FC9AA +const u8 gUnknown_83FC9C7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); // @ 83FC9C7 +const u8 gUnknown_83FC9E5[] = _("It sucked up the\nLIQUID OOZE!"); // @ 83FC9E5 +const u8 gUnknown_83FCA03[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); // @ 83FCA03 +const u8 gUnknown_83FCA13[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ntook the attack!"); // @ 83FCA13 +const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}'s {B_LAST_ABILITY}\nprevents switching!\p"); // @ 83FCA2C +const u8 gUnknown_83FCA49[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s\l{B_BUFF1} from working!"); // @ 83FCA49 +const u8 gUnknown_83FCA71[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); // @ 83FCA71 +const u8 gUnknown_83FCA8E[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents flinching!"); // @ 83FCA8E +const u8 gUnknown_83FCAAA[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); // @ 83FCAAA +const u8 gUnknown_83FCAD1[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); // @ 83FCAD1 +const u8 gUnknown_83FCAEF[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FCAEF +const u8 gUnknown_83FCB0C[] = _("{B_ATK_NAME_WITH_PREFIX} is too scared to move!"); // @ 83FCB0C +const u8 gUnknown_83FCB26[] = _("GHOST: Get out…… Get out……"); // @ 83FCB26 +const u8 gUnknown_83FCB41[] = _("sharply "); // @ 83FCB41 +const u8 BattleText_Rose[] = _("rose!"); // @ 83FCB4A +const u8 gUnknown_83FCB50[] = _("harshly "); // @ 83FCB50 +const u8 gUnknown_83FCB59[] = _("fell!"); // @ 83FCB59 +const u8 gUnknown_83FCB5F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB5F +const u8 BattleText_UnknownString3[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB6A +const u8 gUnknown_83FCB75[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); // @ 83FCB75 +const u8 gUnknown_83FCB8F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB8F +const u8 gUnknown_83FCB9A[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB9A +const u8 gUnknown_83FCBA5[] = _("{B_ATK_NAME_WITH_PREFIX}'s stats won't\ngo any higher!"); // @ 83FCBA5 +const u8 gUnknown_83FCBC5[] = _("{B_DEF_NAME_WITH_PREFIX}'s stats won't\ngo any lower!"); // @ 83FCBC5 +const u8 gUnknown_83FCBE4[] = _("A critical hit!"); // @ 83FCBE4 +const u8 gUnknown_83FCBF4[] = _("It's a one-hit KO!"); // @ 83FCBF4 +const u8 gUnknown_83FCC07[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p"); // @ 83FCC07 +const u8 gUnknown_83FCC33[] = _("And…\p"); // @ 83FCC33 +const u8 gUnknown_83FCC39[] = _("HM moves can't be\nforgotten now.\p"); // @ 83FCC39 +const u8 gUnknown_83FCC5B[] = _("It's not very effective…"); // @ 83FCC5B +const u8 gUnknown_83FCC74[] = _("It's super effective!"); // @ 83FCC74 +const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); // @ 83FCC8A +const u8 gUnknown_83FCCA0[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); // @ 83FCCA0 +const u8 gUnknown_83FCCBB[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); // @ 83FCCBB +const u8 gUnknown_83FCCD2[] = _("{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!"); // @ 83FCCD2 +const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCCE4 +const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCCF8 +const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD0F +const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD27 +const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD41 +const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD66 +const u8 gUnknown_83FCD92[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!"); // @ 83FCD92 +const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); // @ 83FCD9F +const u8 gUnknown_83FCDB3[] = _("No! There's no running\nfrom a TRAINER battle!\p"); // @ 83FCDB3 +const u8 gUnknown_83FCDE2[] = _("Can't escape!\p"); // @ 83FCDE2 +const u8 gUnknown_83FCDF1[] = _(""); // @ 83FCDF1 +const u8 gUnknown_83FCDF2[] = _("But nothing happened!"); // @ 83FCDF2 +const u8 gUnknown_83FCE08[] = _("But it failed!"); // @ 83FCE08 +const u8 gUnknown_83FCE17[] = _("It hurt itself in its\nconfusion!"); // @ 83FCE17 +const u8 gUnknown_83FCE38[] = _("The MIRROR MOVE failed!"); // @ 83FCE38 +const u8 gUnknown_83FCE50[] = _("It started to rain!"); // @ 83FCE50 +const u8 gUnknown_83FCE64[] = _("A downpour started!"); // @ 83FCE64 +const u8 gUnknown_83FCE78[] = _("Rain continues to fall."); // @ 83FCE78 +const u8 gUnknown_83FCE90[] = _("The downpour continues."); // @ 83FCE90 +const u8 gUnknown_83FCEA8[] = _("The rain stopped."); // @ 83FCEA8 +const u8 gUnknown_83FCEBA[] = _("A sandstorm brewed!"); // @ 83FCEBA +const u8 gUnknown_83FCECE[] = _("The sandstorm rages."); // @ 83FCECE +const u8 gUnknown_83FCEE3[] = _("The sandstorm subsided."); // @ 83FCEE3 +const u8 gUnknown_83FCEFB[] = _("The sunlight got bright!"); // @ 83FCEFB +const u8 gUnknown_83FCF14[] = _("The sunlight is strong."); // @ 83FCF14 +const u8 gUnknown_83FCF2C[] = _("The sunlight faded."); // @ 83FCF2C +const u8 gUnknown_83FCF40[] = _("It started to hail!"); // @ 83FCF40 +const u8 gUnknown_83FCF54[] = _("Hail continues to fall."); // @ 83FCF54 +const u8 gUnknown_83FCF6C[] = _("The hail stopped."); // @ 83FCF6C +const u8 gUnknown_83FCF7E[] = _("But it failed to SPIT UP\na thing!"); // @ 83FCF7E +const u8 gUnknown_83FCFA0[] = _("But it failed to SWALLOW\na thing!"); // @ 83FCFA0 +const u8 gUnknown_83FCFC2[] = _("The wind turned into a\nHEAT WAVE!"); // @ 83FCFC2 +const u8 gUnknown_83FCFE4[] = _("All stat changes were\neliminated!"); // @ 83FCFE4 +const u8 gUnknown_83FD006[] = _("Coins scattered everywhere!"); // @ 83FD006 +const u8 gUnknown_83FD022[] = _("It was too weak to make\na SUBSTITUTE!"); // @ 83FD022 +const u8 gUnknown_83FD048[] = _("The battlers shared\ntheir pain!"); // @ 83FD048 +const u8 gUnknown_83FD068[] = _("A bell chimed!"); // @ 83FD068 +const u8 gUnknown_83FD077[] = _("All affected POKéMON will\nfaint in three turns!"); // @ 83FD077 +const u8 gUnknown_83FD0A7[] = _("There's no PP left for\nthis move!\p"); // @ 83FD0A7 +const u8 gUnknown_83FD0CA[] = _("But there was no PP left\nfor the move!"); // @ 83FD0CA +const u8 gUnknown_83FD0F1[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!"); // @ 83FD0F1 +const u8 gUnknown_83FD111[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!"); // @ 83FD111 +const u8 gUnknown_83FD124[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!"); // @ 83FD124 +const u8 gUnknown_83FD135[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!"); // @ 83FD135 +const u8 gUnknown_83FD14B[] = _("{B_ATK_NAME_WITH_PREFIX} won't\nobey!"); // @ 83FD14B +const u8 gUnknown_83FD15A[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!"); // @ 83FD15A +const u8 gUnknown_83FD16A[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!"); // @ 83FD16A +const u8 gUnknown_83FD186[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); // @ 83FD186 +const u8 gUnknown_83FD1B8[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); // @ 83FD1B8 +const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); // @ 83FD1C7 +const u8 gUnknown_83FD1DF[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1DF +const u8 gUnknown_83FD1FA[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1FA +const u8 gUnknown_83FD218[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); // @ 83FD218 +const u8 gUnknown_83FD232[] = _("{B_OPPONENT_MON1_NAME} is angry!"); // @ 83FD232 +const u8 gUnknown_83FD23F[] = _("{B_OPPONENT_MON1_NAME} is eating!"); // @ 83FD23F +const u8 gUnknown_83FD24D[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); // @ 83FD24D +const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD284 +const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD297 +const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); // @ 83FD2AA +const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); // @ 83FD2BF +const u8 gUnknown_83FD2D9[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); // @ 83FD2D9 +const u8 gUnknown_83FD30D[] = _("The GHOST appeared!\p"); // @ 83FD30D +const u8 gUnknown_83FD322[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); // @ 83FD322 +const u8 gUnknown_83FD34D[] = _("The GHOST was MAROWAK!\p\n"); // @ 83FD34D +const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); // @ 83FD366 +const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); // @ 83FD383 +const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); // @ 83FD397 +const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); // @ 83FD3B1 +const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); // @ 83FD3C7 +const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); // @ 83FD3E4 +const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); // @ 83FD3F7 +const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); // @ 83FD407 +const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!"); // @ 83FD41E +const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!"); // @ 83FD43E +const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!"); // @ 83FD44E +const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); // @ 83FD45E +const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); // @ 83FD466 +const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!"); // @ 83FD475 +const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); // @ 83FD47D +const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); // @ 83FD488 +const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe's weak!\nGet 'em, {B_BUFF1}!"); // @ 83FD497 +const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); // @ 83FD4B5 +const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); // @ 83FD4CD +const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); // @ 83FD4EB +const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); // @ 83FD4FA +const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); // @ 83FD50D +const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); // @ 83FD522 +const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD535 +const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD545 +const u8 sText_WildPkmnPrefix[] = _("Wild "); // @ 83FD555 +const u8 sText_FoePkmnPrefix[] = _("Foe "); // @ 83FD55B +const u8 sText_FoePkmnPrefix2[] = _("Foe"); // @ 83FD560 +const u8 sText_AllyPkmnPrefix[] = _("Ally"); // @ 83FD564 +const u8 sText_FoePkmnPrefix3[] = _("Foe"); // @ 83FD569 +const u8 sText_AllyPkmnPrefix2[] = _("Ally"); // @ 83FD56D +const u8 sText_FoePkmnPrefix4[] = _("Foe"); // @ 83FD572 +const u8 sText_AllyPkmnPrefix3[] = _("Ally"); // @ 83FD576 +const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); // @ 83FD57B +const u8 sText_ExclamationMark[] = _("!"); // @ 83FD586 +const u8 sText_ExclamationMark2[] = _("!"); // @ 83FD588 +const u8 sText_ExclamationMark3[] = _("!"); // @ 83FD58A +const u8 sText_ExclamationMark4[] = _("!"); // @ 83FD58C +const u8 sText_ExclamationMark5[] = _("!"); // @ 83FD58E + +const u8 sText_HP2[] = _("HP"); // @ 83FD590 +const u8 sText_Attack2[] = _("ATTACK"); // @ 83FD593 +const u8 sText_Defense2[] = _("DEFENSE"); // @ 83FD59A +const u8 sText_Speed[] = _("SPEED"); // @ 83FD5A2 +const u8 sText_SpAtk2[] = _("SP. ATK"); // @ 83FD5A8 +const u8 sText_SpDef2[] = _("SP. DEF"); // @ 83FD5B0 +const u8 sText_Accuracy[] = _("accuracy"); // @ 83FD5B8 +const u8 sText_Evasiveness[] = _("evasiveness"); // @ 83FD5C1 + +const u8 *const gUnknown_83FD5D0[] = { + sText_HP2, + sText_Attack2, + sText_Defense2, + sText_Speed, + sText_SpAtk2, + sText_SpDef2, + sText_Accuracy, + sText_Evasiveness +}; + +const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); // +const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); // @ 83FD5FF +const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); // @ 83FD60C +const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); // @ 83FD61B +const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); // @ 83FD62B + +const u8 *const gUnknown_83FD63C[] = { + sText_PokeblockWasTooSpicy, + sText_PokeblockWasTooDry, + sText_PokeblockWasTooSweet, + sText_PokeblockWasTooBitter, + sText_PokeblockWasTooSour +}; + +const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); // @ 83FD650 +const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); // @ 83FD65C +const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); // @ 83FD671 +const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); // @ 83FD688 +const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); // @ 83FD697 +const u8 sText_DontBeAThief[] = _("Don't be a thief!"); // @ 83FD6B5 +const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); // @ 83FD6C7 +const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); // @ 83FD700 +const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); // @ 83FD718 +const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); // @ 83FD738 +const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); // @ 83FD757 +const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); // @ 83FD76D +const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // @ 83FD78A +const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"); // @ 83FD7A2 +const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}"); // @ 83FD7C0 +const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); // @ 83FD7E0 +const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); // @ 83FD804 +const u8 sText_Someones[] = _("someone's"); // @ 83FD81A +const u8 sText_Bills[] = _("BILL's"); // @ 83FD824 +const u8 gUnknown_83FD82B[] = _("{B_OPPONENT_MON1_NAME}'s data was\nadded to the POKéDEX.\p"); // @ 83FD82B +const u8 gUnknown_83FD850[] = _("It is raining."); // @ 83FD850 +const u8 gUnknown_83FD85F[] = _("A sandstorm is raging."); // @ 83FD85F +const u8 gUnknown_83FD876[] = _("The BOX is full!\nYou can't catch any more!\p"); // @ 83FD876 +const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); // @ 83FD8A2 +const u8 sText_BerrySuffix[] = _(" BERRY"); // @ 83FD8AF +const u8 gUnknown_83FD8B6[] = _("ナゾ"); // @ 83FD8B6 +const u8 gUnknown_83FD8B9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); // @ 83FD8B9 +const u8 gUnknown_83FD8D2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); // @ 83FD8D2 +const u8 gUnknown_83FD8E8[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); // @ 83FD8E8 +const u8 gUnknown_83FD901[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); // @ 83FD901 +const u8 gUnknown_83FD917[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); // @ 83FD917 +const u8 gUnknown_83FD937[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); // @ 83FD937 +const u8 gUnknown_83FD95C[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); // @ 83FD95C +const u8 gUnknown_83FD97A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nnormalized its status!"); // @ 83FD97A +const u8 gUnknown_83FD999[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored health!"); // @ 83FD999 +const u8 gUnknown_83FD9B2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored {B_BUFF1}'s PP!"); // @ 83FD9B2 +const u8 gUnknown_83FD9CC[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its status!"); // @ 83FD9CC +const u8 gUnknown_83FD9E9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); // @ 83FD9E9 +const u8 gUnknown_83FDA0B[] = _("{B_LAST_ITEM}'s effect allows only\n{B_CURRENT_MOVE} to be used!\p"); // @ 83FDA0B +const u8 gUnknown_83FDA33[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); // @ 83FDA33 +const u8 gUnknown_83FDA4C[] = _(""); // @ 83FDA4C +const u8 gUnknown_83FDA4D[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); // @ 83FDA4D +const u8 gUnknown_83FDA7A[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); // @ 83FDA7A +const u8 gUnknown_83FDA8C[] = _("The POKéMON hearing the FLUTE\nawoke!"); // @ 83FDA8C +const u8 gUnknown_83FDAB1[] = _("You throw a BALL now, right?\nI… I'll do my best!"); // @ 83FDAB1 +const u8 gUnknown_83FDAE2[] = _("OAK: Oh, for Pete's sake…\nSo pushy, as always.\p{B_PLAYER_NAME}.\pYou've never had a POKéMON battle\nbefore, have you?\pA POKéMON battle is when TRAINERS\npit their POKéMON against each\lother.\p"); // @ 83FDAE2 +const u8 gUnknown_83FDB92[] = _("The TRAINER that makes the other\nTRAINER's POKéMON faint by lowering\ltheir HP to “0,” wins.\p"); // @ 83FDB92 +const u8 gUnknown_83FDBEF[] = _("But rather than talking about it,\nyou'll learn more from experience.\pTry battling and see for yourself.\p"); // @ 83FDBEF +const u8 gUnknown_83FDC58[] = _("OAK: Inflicting damage on the foe\nis the key to any battle.\p"); // @ 83FDC58 +const u8 gUnknown_83FDC95[] = _("OAK: Lowering the foe's stats\nwill put you at an advantage.\p"); // @ 83FDC95 +const u8 gUnknown_83FDCD2[] = _("OAK: Keep your eyes on your\nPOKéMON's HP.\pIt will faint if the HP drops to\n“0.”\p"); // @ 83FDCD2 +const u8 gUnknown_83FDD23[] = _("OAK: No! There's no running away\nfrom a TRAINER POKéMON battle!\p"); // @ 83FDD23 +const u8 gUnknown_83FDD64[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); // @ 83FDD64 +const u8 gUnknown_83FDDEB[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); // @ 83FDDEB + +const u8 *const gBattleStringsTable[] = { + gUnknown_83FB219, + gUnknown_83FB265, + gUnknown_83FB28E, + gUnknown_83FB2A4, + gUnknown_83FB2B6, + gUnknown_83FB2D1, + gUnknown_83FB2FC, + gUnknown_83FB31F, + gUnknown_83FB32E, + gUnknown_83FB343, + gUnknown_83FD1B8, + gUnknown_83FB36B, + gUnknown_83FB37F, + gUnknown_83FCBA5, + gUnknown_83FB394, + gUnknown_83FB3EA, + gUnknown_83FB400, + gUnknown_83FB40D, + gUnknown_83FB41A, + gUnknown_83FB433, + gUnknown_83FB451, + gUnknown_83FB508, + gUnknown_83FB545, + gUnknown_83FB555, + gUnknown_83FB565, + gUnknown_83FB57C, + gUnknown_83FB592, + gUnknown_83FB5A8, + gUnknown_83FB5BC, + gUnknown_83FB5CD, + gUnknown_83FB5E2, + gUnknown_83FB5F8, + gUnknown_83FB610, + gUnknown_83FB626, + gUnknown_83FB641, + gUnknown_83FB650, + gUnknown_83FB663, + gUnknown_83FB692, + gUnknown_83FB6A7, + gUnknown_83FB6BF, + gUnknown_83FB6D3, + gUnknown_83FB6E5, + gUnknown_83FB6F7, + gUnknown_83FB70F, + gUnknown_83FB73A, + gUnknown_83FB76A, + gUnknown_83FB78A, + gUnknown_83FB7A3, + gUnknown_83FB7BF, + gUnknown_83FB7D5, + gUnknown_83FB7EE, + gUnknown_83FB806, + gUnknown_83FB826, + gUnknown_83FB844, + gUnknown_83FB854, + gUnknown_83FB871, + gUnknown_83FB885, + gUnknown_83FB89D, + gUnknown_83FB8AE, + gUnknown_83FB8C5, + gUnknown_83FB8E0, + gUnknown_83FB8F3, + gUnknown_83FB914, + gUnknown_83FB921, + gUnknown_83FB935, + gUnknown_83FB946, + gUnknown_83FB97F, + gUnknown_83FB9B8, + gUnknown_83FB9D9, + gUnknown_83FB9FF, + gUnknown_83FBA2F, + gUnknown_83FBA41, + gUnknown_83FBA5E, + gUnknown_83FBA79, + gUnknown_83FBA8E, + gUnknown_83FBAA3, + gUnknown_83FBAB2, + gUnknown_83FBAC3, + gUnknown_83FBAF3, + gUnknown_83FBB11, + gUnknown_83FBB4C, + gUnknown_83FBB62, + gUnknown_83FBB71, + gUnknown_83FBB83, + gUnknown_83FBB99, + BattleText_MistShroud, + gUnknown_83FBBD0, + BattleText_GetPumped, + gUnknown_83FBBFF, + gUnknown_83FBC16, + gUnknown_83FBC2B, + gUnknown_83FBC4C, + gUnknown_83FBC74, + gUnknown_83FBC83, + gUnknown_83FBC99, + gUnknown_83FBCBE, + gUnknown_83FBCD1, + gUnknown_83FBCDD, + gUnknown_83FBCFC, + gUnknown_83FBD16, + gUnknown_83FBD2B, + gUnknown_83FBD43, + gUnknown_83FBD53, + gUnknown_83FBD74, + gUnknown_83FBD86, + gUnknown_83FBDA3, + gUnknown_83FBDC4, + gUnknown_83FBDE2, + gUnknown_83FBE00, + gUnknown_83FBE16, + gUnknown_83FBE2B, + gUnknown_83FBE4E, + gUnknown_83FBE61, + gUnknown_83FBE73, + gUnknown_83FBE8B, + gUnknown_83FBEA1, + gUnknown_83FBEBE, + gUnknown_83FBEE2, + gUnknown_83FBEFA, + gUnknown_83FBF0C, + gUnknown_83FBF23, + gUnknown_83FC687, + gUnknown_83FBF39, + gUnknown_83FBF51, + gUnknown_83FBF63, + gUnknown_83FBF76, + gUnknown_83FBF89, + gUnknown_83FBF99, + gUnknown_83FBFBF, + gUnknown_83FBFD3, + gUnknown_83FBFEA, + gUnknown_83FBFFC, + gUnknown_83FC011, + gUnknown_83FC02B, + gUnknown_83FC048, + gUnknown_83FC072, + gUnknown_83FC090, + gUnknown_83FC0C6, + gUnknown_83FC0DC, + gUnknown_83FC0EE, + gUnknown_83FC10C, + gUnknown_83FC11E, + gUnknown_83FC132, + gUnknown_83FC140, + gUnknown_83FC168, + gUnknown_83FC185, + gUnknown_83FC19D, + gUnknown_83FC1B1, + gUnknown_83FC1C6, + gUnknown_83FC1DB, + gUnknown_83FC1F1, + gUnknown_83FC224, + gUnknown_83FC231, + gUnknown_83FC254, + gUnknown_83FC26D, + gUnknown_83FC28A, + gUnknown_83FC670, + gUnknown_83FC2AA, + gUnknown_83FC69D, + gUnknown_83FC2C7, + gUnknown_83FC2E3, + gUnknown_83FC6D6, + gUnknown_83FC2FA, + gUnknown_83FC312, + gUnknown_83FC377, + gUnknown_83FC38A, + gUnknown_83FC39A, + gUnknown_83FC3AF, + gUnknown_83FC3C5, + gUnknown_83FC3EB, + gUnknown_83FC40E, + gUnknown_83FC421, + gUnknown_83FC439, + gUnknown_83FC461, + gUnknown_83FC6F8, + gUnknown_83FC483, + gUnknown_83FC4AB, + gUnknown_83FC4D6, + gUnknown_83FC4F0, + gUnknown_83FC518, + gUnknown_83FC53D, + gUnknown_83FC715, + gUnknown_83FC72B, + gUnknown_83FC745, + gUnknown_83FC75D, + gUnknown_83FC780, + gUnknown_83FC7B6, + gUnknown_83FC7D3, + gUnknown_83FC7EF, + gUnknown_83FC809, + gUnknown_83FC825, + gUnknown_83FC841, + gUnknown_83FC860, + gUnknown_83FC87B, + gUnknown_83FC895, + gUnknown_83FC8B1, + gUnknown_83FC8C2, + gUnknown_83FCB41, + BattleText_Rose, + gUnknown_83FCB50, + gUnknown_83FCB59, + gUnknown_83FCB5F, + BattleText_UnknownString3, + gUnknown_83FCB8F, + gUnknown_83FCB9A, + gUnknown_83FCBE4, + gUnknown_83FCBF4, + gUnknown_83FCC07, + gUnknown_83FCC33, + gUnknown_83FCC5B, + gUnknown_83FCC74, + sText_GotAwaySafely, + gUnknown_83FCCD2, + gUnknown_83FCDB3, + gUnknown_83FCDE2, + gUnknown_83FCDF1, + gUnknown_83FCDF2, + gUnknown_83FCE08, + gUnknown_83FCE17, + gUnknown_83FCE38, + gUnknown_83FCE50, + gUnknown_83FCE64, + gUnknown_83FCE78, + gUnknown_83FCE90, + gUnknown_83FCEA8, + gUnknown_83FCEBA, + gUnknown_83FCECE, + gUnknown_83FCEE3, + gUnknown_83FCEFB, + gUnknown_83FCF14, + gUnknown_83FCF2C, + gUnknown_83FCF40, + gUnknown_83FCF54, + gUnknown_83FCF6C, + gUnknown_83FCF7E, + gUnknown_83FCFA0, + gUnknown_83FCFC2, + gUnknown_83FCFE4, + gUnknown_83FD006, + gUnknown_83FD022, + gUnknown_83FD048, + gUnknown_83FD068, + gUnknown_83FD077, + gUnknown_83FD0A7, + gUnknown_83FD0CA, + sText_PlayerUsedItem, + sText_OldManUsedItem, + sText_TrainerBlockedBall, + sText_DontBeAThief, + sText_ItDodgedBall, + sText_YouMissedPkmn, + sText_PkmnBrokeFree, + sText_ItAppearedCaught, + sText_AarghAlmostHadIt, + sText_ShootSoClose, + sText_GotchaPkmnCaught, + sText_GotchaPkmnCaught2, + sText_GiveNicknameCaptured, + sText_PkmnSentToPC, + gUnknown_83FD82B, + gUnknown_83FD850, + gUnknown_83FD85F, + gUnknown_83FB525, + gUnknown_83FD0F1, + gUnknown_83FD111, + gUnknown_83FD124, + gUnknown_83FD135, + gUnknown_83FD14B, + gUnknown_83FD15A, + gUnknown_83FD16A, + gUnknown_83FD186, + gUnknown_83FD1DF, + gUnknown_83FD1FA, + gUnknown_83FD218, + gUnknown_83FD232, + gUnknown_83FD23F, + gUnknown_83FB218, + gUnknown_83FB218, + gUnknown_83FD24D, + gUnknown_83FD8B9, + gUnknown_83FD8D2, + gUnknown_83FD8E8, + gUnknown_83FD901, + gUnknown_83FD917, + gUnknown_83FD937, + gUnknown_83FD95C, + gUnknown_83FD999, + gUnknown_83FD9B2, + gUnknown_83FD9CC, + gUnknown_83FD9E9, + gUnknown_83FDA0B, + gUnknown_83FDA33, + gUnknown_83FDA4C, + gUnknown_83FC8D5, + gUnknown_83FC8ED, + gUnknown_83FC913, + gUnknown_83FC935, + gUnknown_83FC979, + gUnknown_83FC993, + gUnknown_83FC9AA, + gUnknown_83FC9C7, + gUnknown_83FC9E5, + gUnknown_83FCA03, + gUnknown_83FC554, + gUnknown_83FC576, + gUnknown_83FBAD2, + gUnknown_83FBAE5, + gUnknown_83FCC39, + gUnknown_83FC591, + sText_PlayerDefeatedLinkTrainerTrainer1, + gUnknown_83FC5A2, + gUnknown_83FC5CC, + gUnknown_83FC5E8, + gUnknown_83FCB75, + gUnknown_83FC5F6, + gUnknown_83FC79D, + gUnknown_83FBB2F, + gUnknown_83FB282, + gUnknown_83FB283, + gUnknown_83FC955, + gUnknown_83FB3AF, + gUnknown_83FDAB1, + gUnknown_83FCA13, + gUnknown_83FC208, + gUnknown_83FC60C, + gUnknown_83FB359, + gUnknown_83FCCA0, + gUnknown_83FCCBB, + gUnknown_83FC631, + gUnknown_83FCA49, + gUnknown_83FD97A, + sText_Trainer1UsedItem, + gUnknown_83FD876, + gUnknown_83FB3D3, + gUnknown_83FCA71, + gUnknown_83FCA8E, + gUnknown_83FB67B, + gUnknown_83FCBC5, + gUnknown_83FC900, + gUnknown_83FBC62, + gUnknown_83FB997, + gUnknown_83FB95E, + gUnknown_83FC646, + gUnknown_83FCAAA, + gUnknown_83FCAD1, + gUnknown_83FB534, + gUnknown_83FC337, + gUnknown_83FC347, + gUnknown_83FC357, + gUnknown_83FC65A, + gUnknown_83FCAEF, + gUnknown_83FDD64, + gUnknown_83FDDEB, + gUnknown_83FB484, + gUnknown_83FB4BE, + Text_1A5CF1, + Text_1A5D31, + Text_1A5D6E, + Text_1A5DB1, + sText_PokeDudeUsedItem, + gUnknown_83FDA4D, + gUnknown_83FDA7A, + gUnknown_83FDA8C, + gUnknown_83FB21C, + gUnknown_83FB262, + gUnknown_83FB4F7, + gUnknown_83FCB0C, + gUnknown_83FCB26, + gUnknown_83FD322, + gUnknown_83FD34D, + gUnknown_83FB21F, + gUnknown_83FB232, + gUnknown_83FB235, + gUnknown_83FB248 +}; + +const u16 gMissStringIds[] = { + STRINGID_ATTACKMISSED, + STRINGID_PKMNPROTECTEDITSELF, + STRINGID_PKMNAVOIDEDATTACK, + STRINGID_AVOIDEDDAMAGE, + STRINGID_PKMNMAKESGROUNDMISS +}; + +const u16 gNoEscapeStringIds[] = { + STRINGID_CANTESCAPE, + STRINGID_DONTLEAVEBIRCH, + STRINGID_PREVENTSESCAPE, + STRINGID_CANTESCAPE2, + STRINGID_ATTACKERCANTESCAPE +}; + +const u16 gMoveWeatherChangeStringIds[] = { + STRINGID_STARTEDTORAIN, + STRINGID_DOWNPOURSTARTED, + STRINGID_BUTITFAILED, + STRINGID_SANDSTORMBREWED, + STRINGID_SUNLIGHTGOTBRIGHT, + STRINGID_STARTEDHAIL +}; + +const u16 gSandStormHailContinuesStringIds[] = { + STRINGID_SANDSTORMRAGES, + STRINGID_HAILCONTINUES +}; + +const u16 gSandStormHailDmgStringIds[] = { + STRINGID_PKMNBUFFETEDBYSANDSTORM, + STRINGID_PKMNPELTEDBYHAIL +}; + +const u16 gSandStormHailEndStringIds[] = { + STRINGID_SANDSTORMSUBSIDED, + STRINGID_HAILSTOPPED +}; + +const u16 gRainContinuesStringIds[] = { + STRINGID_RAINCONTINUES, + STRINGID_DOWNPOURCONTINUES, + STRINGID_RAINSTOPPED +}; + +const u16 gProtectLikeUsedStringIds[] = { + STRINGID_PKMNPROTECTEDITSELF2, + STRINGID_PKMNBRACEDITSELF, + STRINGID_BUTITFAILED +}; + +const u16 gReflectLightScreenSafeguardStringIds[] = { + STRINGID_BUTITFAILED, + STRINGID_PKMNRAISEDDEF, + STRINGID_PKMNRAISEDDEFALITTLE, + STRINGID_PKMNRAISEDSPDEF, + STRINGID_PKMNRAISEDSPDEFALITTLE, + STRINGID_PKMNCOVEREDBYVEIL +}; + +const u16 gLeechSeedStringIds[] = { + STRINGID_PKMNSEEDED, + STRINGID_PKMNEVADEDATTACK, + STRINGID_ITDOESNTAFFECT, + STRINGID_PKMNSAPPEDBYLEECHSEED, + STRINGID_ITSUCKEDLIQUIDOOZE +}; + +const u16 gRestUsedStringIds[] = { + STRINGID_PKMNWENTTOSLEEP, + STRINGID_PKMNSLEPTHEALTHY +}; + +const u16 gUproarOverTurnStringIds[] = { + STRINGID_PKMNMAKINGUPROAR, + STRINGID_PKMNCALMEDDOWN +}; + +const u16 gStockpileUsedStringIds[] = { + STRINGID_PKMNSTOCKPILED, + STRINGID_PKMNCANTSTOCKPILE +}; + +const u16 gWokeUpStringIds[] = { + STRINGID_PKMNWOKEUP, + STRINGID_PKMNWOKEUPINUPROAR +}; + +const u16 gSwallowFailStringIds[] = { + STRINGID_FAILEDTOSWALLOW, + STRINGID_PKMNHPFULL +}; + +const u16 gUproarAwakeStringIds[] = { + STRINGID_PKMNCANTSLEEPINUPROAR2, + STRINGID_UPROARKEPTPKMNAWAKE, + STRINGID_PKMNSTAYEDAWAKEUSING +}; + +const u16 gStatUpStringIds[] = { + STRINGID_PKMNSSTATCHANGED, + STRINGID_PKMNSSTATCHANGED2, + STRINGID_STATSWONTINCREASE, + STRINGID_EMPTYSTRING3, + STRINGID_USINGXTHEYOFZN, + STRINGID_PKMNUSEDXTOGETPUMPED +}; + +const u16 gStatDownStringIds[] = { + STRINGID_PKMNSSTATCHANGED3, + STRINGID_PKMNSSTATCHANGED4, + STRINGID_STATSWONTDECREASE, + STRINGID_EMPTYSTRING3 +}; + +const u16 gFirstTurnOfTwoStringIds[] = { + STRINGID_PKMNWHIPPEDWHIRLWIND, + STRINGID_PKMNTOOKSUNLIGHT, + STRINGID_PKMNLOWEREDHEAD, + STRINGID_PKMNISGLOWING, + STRINGID_PKMNFLEWHIGH, + STRINGID_PKMNDUGHOLE, + STRINGID_PKMNHIDUNDERWATER, + STRINGID_PKMNSPRANGUP +}; + +const u16 gWrappedStringIds[] = { + STRINGID_PKMNSQUEEZEDBYBIND, + STRINGID_PKMNWRAPPEDBY, + STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNCLAMPED, + STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNTRAPPEDBYSANDTOMB +}; + +const u16 gMistUsedStringIds[] = { + STRINGID_PKMNSHROUDEDINMIST, + STRINGID_BUTITFAILED +}; + +const u16 gFocusEnergyUsedStringIds[] = { + STRINGID_PKMNGETTINGPUMPED, + STRINGID_BUTITFAILED +}; + +const u16 gTransformUsedStringIds[] = { + STRINGID_PKMNTRANSFORMEDINTO, + STRINGID_BUTITFAILED +}; + +const u16 gSubsituteUsedStringIds[] = { + STRINGID_PKMNMADESUBSTITUTE, + STRINGID_TOOWEAKFORSUBSTITUTE +}; + +const u16 gGotPoisonedStringIds[] = { + STRINGID_PKMNWASPOISONED, + STRINGID_PKMNPOISONEDBY +}; + +const u16 gGotParalyzedStringIds[] = { + STRINGID_PKMNWASPARALYZED, + STRINGID_PKMNWASPARALYZEDBY +}; + +const u16 gFellAsleepStringIds[] = { + STRINGID_PKMNFELLASLEEP, + STRINGID_PKMNMADESLEEP +}; + +const u16 gGotBurnedStringIds[] = { + STRINGID_PKMNWASBURNED, + STRINGID_PKMNBURNEDBY +}; + +const u16 gGotFrozenStringIds[] = { + STRINGID_PKMNWASFROZEN, + STRINGID_PKMNFROZENBY +}; + +const u16 gGotDefrostedStringIds[] = { + STRINGID_PKMNWASDEFROSTED2, + STRINGID_PKMNWASDEFROSTEDBY +}; + +const u16 gKOFailedStringIds[] = { + STRINGID_ATTACKMISSED, + STRINGID_PKMNUNAFFECTED +}; + +const u16 gAttractUsedStringIds[] = { + STRINGID_PKMNFELLINLOVE, + STRINGID_PKMNSXINFATUATEDY +}; + +const u16 gLeechSeedDrainStringIds[] = { + STRINGID_PKMNENERGYDRAINED, + STRINGID_ITSUCKEDLIQUIDOOZE +}; + +const u16 gSportsUsedStringIds[] = { + STRINGID_ELECTRICITYWEAKENED, + STRINGID_FIREWEAKENED +}; + +const u16 gPartyStatusHealStringIds[] = { + STRINGID_BELLCHIMED, + STRINGID_BELLCHIMED, + STRINGID_BELLCHIMED, + STRINGID_BELLCHIMED, + STRINGID_SOOTHINGAROMA +}; + +const u16 gFutureMoveUsedStringIds[] = { + STRINGID_PKMNFORESAWATTACK, + STRINGID_PKMNCHOSEXASDESTINY +}; + +const u16 gBallEscapeStringIds[] = { + STRINGID_PKMNBROKEFREE, + STRINGID_ITAPPEAREDCAUGHT, + STRINGID_AARGHALMOSTHADIT, + STRINGID_SHOOTSOCLOSE +}; + +const u16 gWeatherContinuesStringIds[] = { + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_SANDSTORMISRAGING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_SUNLIGHTSTRONG, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING, + STRINGID_ITISRAINING +}; + +const u16 gInobedientStringIds[] = { + STRINGID_PKMNLOAFING, + STRINGID_PKMNWONTOBEY, + STRINGID_PKMNTURNEDAWAY, + STRINGID_PKMNPRETENDNOTNOTICE +}; + +const u16 gSafariPokeblockResultStringIds[] = { + STRINGID_PKMNWATCHINGCAREFULLY, + STRINGID_PKMNANGRY, + STRINGID_PKMNEATING +}; + +const u16 gTrainerItemCuredStatusStringIds[] = { + STRINGID_PKMNSITEMSNAPPEDOUT, + STRINGID_PKMNSITEMCUREDPARALYSIS, + STRINGID_PKMNSITEMDEFROSTEDIT, + STRINGID_PKMNSITEMHEALEDBURN, + STRINGID_PKMNSITEMCUREDPOISON, + STRINGID_PKMNSITEMWOKEIT +}; + +const u16 gBerryEffectStringIds[] = { + STRINGID_PKMNSITEMCUREDPROBLEM, + STRINGID_PKMNSITEMNORMALIZEDSTATUS +}; + +const u16 gBRNPreventionStringIds[] = { + STRINGID_PKMNSXPREVENTSBURNS, + STRINGID_PKMNSXPREVENTSYSZ, + STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPRLZPreventionStringIds[] = { + STRINGID_PKMNPREVENTSPARALYSISWITH, + STRINGID_PKMNSXPREVENTSYSZ, + STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPSNPreventionStringIds[] = { + STRINGID_PKMNPREVENTSPOISONINGWITH, + STRINGID_PKMNSXPREVENTSYSZ, + STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gItemSwapStringIds[] = { + STRINGID_PKMNOBTAINEDX, + STRINGID_PKMNOBTAINEDX2, + STRINGID_PKMNOBTAINEDXYOBTAINEDZ +}; + +const u16 gFlashFireStringIds[] = { + STRINGID_PKMNRAISEDFIREPOWERWITH, + STRINGID_PKMNSXMADEYINEFFECTIVE +}; + +const u16 gCaughtMonStringIds[] = { + STRINGID_PKMNTRANSFERREDSOMEONESPC, + STRINGID_PKMNTRANSFERREDBILLSPC, + STRINGID_PKMNBOXSOMEONESPCFULL, + STRINGID_PKMNBOXBILLSPCFULL +}; + +const u16 gDoubleBattleRecallStrings[] = { + STRINGID_TRAINER1MON1COMEBACK, + STRINGID_TRAINER1MON1COMEBACK, + STRINGID_TRAINER1MON2COMEBACK, + STRINGID_TRAINER1MON1AND2COMEBACK +}; + +const u16 gTrappingMoves[] = { + MOVE_BIND, + MOVE_WRAP, + MOVE_FIRE_SPIN, + MOVE_CLAMP, + MOVE_WHIRLPOOL, + MOVE_SAND_TOMB, + 0xFFFF +}; + +const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); // @ 83FE672 +const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); // @ 83FE688 +const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); // @ 83FE6B5 +const u8 gText_EllipsisQuestionMark[] = _("……?\p"); // @ 83FE6D0 +const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?"); // @ 83FE6D5 +const u8 gUnknown_83FE6E6[] = _("What will {B_PLAYER_NAME}\nthrow?"); // @ 83FE6E6 +const u8 gUnknown_83FE6FA[] = _("What will the\nold man do?"); // @ 83FE6FA +const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); // @ 83FE714 +const u8 gUnknown_83FE725[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); // @ 83FE725 +const u8 gUnknown_83FE747[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); // @ 83FE747 +const u8 gText_MoveInterfacePP[] = _("PP "); // @ 83FE766 +const u8 gText_MoveInterfaceType[] = _("TYPE/"); // @ 83FE76A +const u8 gUnknown_83FE770[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); // @ 83FE770 +const u8 gUnknown_83FE779[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); // @ 83FE779 +const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); // @ 83FE791 +const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); // @ 83FE7A0 +const u8 gUnknown_83FE7B6[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); // @ 83FE7B6 +const u8 gUnknown_83FE7BF[] = _("{RIGHT_ARROW_2}"); // @ 83FE7BF +const u8 gUnknown_83FE7C2[] = _("{PLUS}"); // @ 83FE7C2 +const u8 gUnknown_83FE7C5[] = _("-"); // @ 83FE7C5 + +const u8 gUnknown_83FE7C7[] = _("{SIZE 0}Max{SIZE 2} HP"); // @ 83FE7C7 +const u8 gUnknown_83FE7D4[] = _("ATTACK "); // @ 83FE7D4 +const u8 gUnknown_83FE7DC[] = _("DEFENSE"); // @ 83FE7DC +const u8 gUnknown_83FE7E4[] = _("SP. ATK"); // @ 83FE7E4 +const u8 gUnknown_83FE7EC[] = _("SP. DEF"); // @ 83FE7EC + +const u8 *const gUnknown_83FE7F4[] = { + gUnknown_83FE7C7, + gUnknown_83FE7E4, + gUnknown_83FE7D4, + gUnknown_83FE7EC, + gUnknown_83FE7DC, + sText_Speed +}; + +const u8 gUnknown_83FE80C[] = _("{HIGHLIGHT 2}SAFARI BALLS"); // +const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: "); // @ 83FE81C +const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}"); // @ 83FE826 +const u8 gText_Sleep[] = _("sleep"); // @ 83FE82A +const u8 gText_Poison[] = _("poison"); // @ 83FE830 +const u8 gText_Burn[] = _("burn"); // @ 83FE837 +const u8 gText_Paralysis[] = _("paralysis"); // @ 83FE83C +const u8 gText_Ice[] = _("ice"); // @ 83FE846 +const u8 gText_Confusion[] = _("confusion"); // @ 83FE84A +const u8 gText_Love[] = _("love"); // @ 83FE854 +const u8 gUnknown_83FE859[] = _(" "); // @ 83FE859 +const u8 gUnknown_83FE85C[] = _("\n"); // @ 83FE85C +const u8 gUnknown_83FE85E[] = _("\n"); // @ 83FE85E +const u8 gUnknown_83FE860[] = _(" is"); // @ 83FE860 +const u8 gUnknown_83FE864[] = _(" is"); // @ 83FE864 +const u8 gText_BadEgg[] = _("Bad EGG"); // @ 83FE868 +const u8 gUnknown_83FE870[] = _("ミツル"); // @ 83FE870 +const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win"); // @ 83FE874 +const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss"); // @ 83FE87B +const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw"); // @ 83FE883 +const u8 gUnknown_83FE88B[] = _(" is"); // @ 83FE88B +const u8 gUnknown_83FE88F[] = _("'s"); // @ 83FE88F +const u8 gUnknown_83FE892[] = _("a NORMAL move"); // @ 83FE892 +const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); // @ 83FE8A0 +const u8 gUnknown_83FE8B0[] = _("a FLYING move"); // @ 83FE8B0 +const u8 gUnknown_83FE8BE[] = _("a POISON move"); // @ 83FE8BE +const u8 gUnknown_83FE8CC[] = _("a GROUND move"); // @ 83FE8CC +const u8 gUnknown_83FE8DA[] = _("a ROCK move"); // @ 83FE8DA +const u8 gUnknown_83FE8E6[] = _("a BUG move"); // @ 83FE8E6 +const u8 gUnknown_83FE8F1[] = _("a GHOST move"); // @ 83FE8F1 +const u8 gUnknown_83FE8FE[] = _("a STEEL move"); // @ 83FE8FE +const u8 gUnknown_83FE90B[] = _("a ??? move"); // @ 83FE90B +const u8 gUnknown_83FE916[] = _("a FIRE move"); // @ 83FE916 +const u8 gUnknown_83FE922[] = _("a WATER move"); // @ 83FE922 +const u8 gUnknown_83FE92F[] = _("a GRASS move"); // @ 83FE92F +const u8 gUnknown_83FE93C[] = _("an ELECTRIC move"); // @ 83FE93C +const u8 gUnknown_83FE94D[] = _("a PSYCHIC move"); // @ 83FE94D +const u8 gUnknown_83FE95C[] = _("an ICE move"); // @ 83FE95C +const u8 gUnknown_83FE968[] = _("a DRAGON move"); // @ 83FE968 +const u8 gUnknown_83FE976[] = _("a DARK move"); // @ 83FE976 +const u8 gUnknown_83FE982[] = _("TIME BOARD"); // @ 83FE982 +const u8 gUnknown_83FE98D[] = _("CLEAR TIME"); // @ 83FE98D +const u8 gUnknown_83FE998[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); // @ 83FE998 +const u8 gUnknown_83FE9A9[] = _("1F"); // @ 83FE9A9 +const u8 gUnknown_83FE9AC[] = _("2F"); // @ 83FE9AC +const u8 gUnknown_83FE9AF[] = _("3F"); // @ 83FE9AF +const u8 gUnknown_83FE9B2[] = _("4F"); // @ 83FE9B2 +const u8 gUnknown_83FE9B5[] = _("5F"); // @ 83FE9B5 +const u8 gUnknown_83FE9B8[] = _("6F"); // @ 83FE9B8 +const u8 gUnknown_83FE9BB[] = _("7F"); // @ 83FE9BB +const u8 gUnknown_83FE9BE[] = _("8F"); // @ 83FE9BE + +const u8 *const gUnknown_83FE9C4[] = { + gOtherText_Single, + gOtherText_Double, + gOtherText_Knockout, + gOtherText_Mixed +}; + +const u8 gUnknown_83FE9D4[] = _("{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); // +const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9E4 +const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9FF + +const u8 *const sATypeMove_Table[] = { + gUnknown_83FE892, + gUnknown_83FE8A0, + gUnknown_83FE8B0, + gUnknown_83FE8BE, + gUnknown_83FE8CC, + gUnknown_83FE8DA, + gUnknown_83FE8E6, + gUnknown_83FE8F1, + gUnknown_83FE8FE, + gUnknown_83FE90B, + gUnknown_83FE916, + gUnknown_83FE922, + gUnknown_83FE92F, + gUnknown_83FE93C, + gUnknown_83FE94D, + gUnknown_83FE95C, + gUnknown_83FE968, + gUnknown_83FE976 +}; + +const u16 gUnknown_83FEA70[] = { + MOVE_SWORDS_DANCE, + MOVE_STRENGTH, + MOVE_GROWTH, + MOVE_HARDEN, + MOVE_MINIMIZE, + MOVE_SMOKESCREEN, + MOVE_WITHDRAW, + MOVE_DEFENSE_CURL, + MOVE_EGG_BOMB, + MOVE_SMOG, + MOVE_BONE_CLUB, + MOVE_FLASH, + MOVE_SPLASH, + MOVE_ACID_ARMOR, + MOVE_BONEMERANG, + MOVE_REST, + MOVE_SHARPEN, + MOVE_SUBSTITUTE, + MOVE_MIND_READER, + MOVE_SNORE, + MOVE_PROTECT, + MOVE_SPIKES, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SWAGGER, + MOVE_SLEEP_TALK, + MOVE_HIDDEN_POWER, + MOVE_PSYCH_UP, + MOVE_EXTREME_SPEED, + MOVE_FOLLOW_ME, + MOVE_TRICK, + MOVE_ASSIST, + MOVE_INGRAIN, + MOVE_KNOCK_OFF, + MOVE_CAMOUFLAGE, + MOVE_ASTONISH, + MOVE_ODOR_SLEUTH, + MOVE_GRASS_WHISTLE, + MOVE_SHEER_COLD, + MOVE_MUDDY_WATER, + MOVE_IRON_DEFENSE, + MOVE_BOUNCE, + MOVE_NONE, + + MOVE_TELEPORT, + MOVE_RECOVER, + MOVE_BIDE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_TAUNT, + MOVE_BULK_UP, + MOVE_NONE, + + MOVE_MEDITATE, + MOVE_AGILITY, + MOVE_MIMIC, + MOVE_DOUBLE_TEAM, + MOVE_BARRAGE, + MOVE_TRANSFORM, + MOVE_STRUGGLE, + MOVE_SCARY_FACE, + MOVE_CHARGE, + MOVE_WISH, + MOVE_BRICK_BREAK, + MOVE_YAWN, + MOVE_FEATHER_DANCE, + MOVE_TEETER_DANCE, + MOVE_MUD_SPORT, + MOVE_FAKE_TEARS, + MOVE_WATER_SPORT, + MOVE_CALM_MIND, + MOVE_NONE, + + MOVE_POUND, + MOVE_SCRATCH, + MOVE_VICE_GRIP, + MOVE_WING_ATTACK, + MOVE_FLY, + MOVE_BIND, + MOVE_SLAM, + MOVE_HORN_ATTACK, + MOVE_WRAP, + MOVE_THRASH, + MOVE_TAIL_WHIP, + MOVE_LEER, + MOVE_BITE, + MOVE_GROWL, + MOVE_ROAR, + MOVE_SING, + MOVE_PECK, + MOVE_ABSORB, + MOVE_STRING_SHOT, + MOVE_EARTHQUAKE, + MOVE_FISSURE, + MOVE_DIG, + MOVE_TOXIC, + MOVE_SCREECH, + MOVE_METRONOME, + MOVE_LICK, + MOVE_CLAMP, + MOVE_CONSTRICT, + MOVE_POISON_GAS, + MOVE_BUBBLE, + MOVE_SLASH, + MOVE_SPIDER_WEB, + MOVE_NIGHTMARE, + MOVE_CURSE, + MOVE_FORESIGHT, + MOVE_CHARM, + MOVE_ATTRACT, + MOVE_ROCK_SMASH, + MOVE_UPROAR, + MOVE_SPIT_UP, + MOVE_SWALLOW, + MOVE_TORMENT, + MOVE_FLATTER, + MOVE_ROLE_PLAY, + MOVE_ENDEAVOR, + MOVE_TICKLE, + MOVE_COVET, + MOVE_NONE +}; + +// code +void BufferStringBattle(u16 stringID) +{ + s32 i; + const u8 *stringPtr = NULL; + + gBattleMsgDataPtr = (struct BattleMsgData*)(&gBattleBufferA[gActiveBattler][4]); + gLastUsedItem = gBattleMsgDataPtr->lastItem; + gLastUsedAbility = gBattleMsgDataPtr->lastAbility; + gBattleScripting.battler = gBattleMsgDataPtr->scrActive; + *(&gBattleStruct->field_52) = gBattleMsgDataPtr->unk1605E; + *(&gBattleStruct->hpScale) = gBattleMsgDataPtr->hpScale; + gPotentialItemEffectBattler = gBattleMsgDataPtr->itemEffectBattler; + *(&gBattleStruct->stringMoveType) = gBattleMsgDataPtr->moveType; + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + sBattlerAbilities[i] = gBattleMsgDataPtr->abilities[i]; + } + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) + { + gBattleTextBuff1[i] = gBattleMsgDataPtr->textBuffs[0][i]; + gBattleTextBuff2[i] = gBattleMsgDataPtr->textBuffs[1][i]; + gBattleTextBuff3[i] = gBattleMsgDataPtr->textBuffs[2][i]; + } + + switch (stringID) + { + case STRINGID_INTROMSG: // first battle msg + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + stringPtr = sText_TwoLinkTrainersWantToBattle; + } + else + { + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = sText_Trainer1WantsToBattle; + else + stringPtr = sText_LinkTrainerWantsToBattle; + } + } + else + { + stringPtr = sText_Trainer1WantsToBattle; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_GHOST) + { + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = gUnknown_83FD30D; + else + stringPtr = gUnknown_83FD2D9; + } + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + stringPtr = sText_WildPkmnAppeared2; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles + stringPtr = sText_TwoWildPkmnAppeared; + else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL) + stringPtr = sText_WildPkmnAppearedPause; + else + stringPtr = sText_WildPkmnAppeared; + } + break; + case STRINGID_INTROSENDOUT: // poke first send-out + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = sText_LinkPartnerSentOutPkmnGoPkmn; + else + stringPtr = sText_GoTwoPkmn; + } + else + { + stringPtr = sText_GoPkmn; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = sText_TwoLinkTrainersSentOutPkmn; + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + stringPtr = sText_LinkTrainerSentOutTwoPkmn; + else + stringPtr = sText_Trainer1SentOutTwoPkmn; + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + stringPtr = sText_Trainer1SentOutPkmn; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = sText_Trainer1SentOutPkmn; + else + stringPtr = sText_LinkTrainerSentOutPkmn; + } + } + break; + case STRINGID_RETURNMON: // sending poke to ball msg + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + if (*(&gBattleStruct->hpScale) == 0) + stringPtr = sText_PkmnThatsEnough; + else if (*(&gBattleStruct->hpScale) == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = sText_PkmnComeBack; + else if (*(&gBattleStruct->hpScale) == 2) + stringPtr = sText_PkmnOkComeBack; + else + stringPtr = sText_PkmnGoodComeBack; + } + else + { + if (gTrainerBattleOpponent_A == TRAINER_LINK_OPPONENT) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = sText_LinkTrainer2WithdrewPkmn; + else + stringPtr = sText_LinkTrainer1WithdrewPkmn; + } + else + { + stringPtr = sText_Trainer1WithdrewPkmn; + } + } + break; + case STRINGID_SWITCHINMON: // switch-in msg + if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER) + { + if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + stringPtr = sText_GoPkmn2; + else if (*(&gBattleStruct->hpScale) == 1) + stringPtr = sText_DoItPkmn; + else if (*(&gBattleStruct->hpScale) == 2) + stringPtr = sText_GoForItPkmn; + else + stringPtr = sText_YourFoesWeakGetEmPkmn; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = sText_LinkTrainerMultiSentOutPkmn; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = sText_Trainer1SentOutPkmn2; + else + stringPtr = sText_LinkTrainerSentOutPkmn2; + } + else + { + stringPtr = sText_Trainer1SentOutPkmn2; + } + } + break; + case STRINGID_USEDMOVE: // pokemon used a move msg + ChooseMoveUsedParticle(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names + + if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) + StringCopy(gBattleTextBuff2, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); + else + StringCopy(gBattleTextBuff2, gMoveNames[gBattleMsgDataPtr->currentMove]); + + ChooseTypeOfMoveUsedString(gBattleTextBuff2); + stringPtr = sText_AttackerUsedX; + break; + case STRINGID_BATTLEEND: // battle end + if (gBattleTextBuff1[0] & B_OUTCOME_LINK_BATTLE_RAN) + { + gBattleTextBuff1[0] &= ~(B_OUTCOME_LINK_BATTLE_RAN); + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW) + gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON); + + if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW) + stringPtr = sText_GotAwaySafely; + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + stringPtr = sText_TwoWildFled; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + stringPtr = gUnknown_83FE9D4; + else + stringPtr = gUnknown_83FCD92; + } + else + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW) + gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON); + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + switch (gBattleTextBuff1[0]) + { + case B_OUTCOME_WON: + stringPtr = sText_TwoLinkTrainersDefeated; + break; + case B_OUTCOME_LOST: + stringPtr = sText_PlayerLostToTwo; + break; + case B_OUTCOME_DREW: + stringPtr = sText_PlayerBattledToDrawVsTwo; + break; + } + } + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + switch (gBattleTextBuff1[0]) + { + case B_OUTCOME_WON: + stringPtr = sText_PlayerDefeatedLinkTrainerTrainer1; + break; + case B_OUTCOME_LOST: + stringPtr = sText_PlayerLostAgainstTrainer1; + break; + case B_OUTCOME_DREW: + stringPtr = sText_PlayerBattledToDrawTrainer1; + break; + } + } + else + { + switch (gBattleTextBuff1[0]) + { + case B_OUTCOME_WON: + stringPtr = sText_PlayerDefeatedLinkTrainer; + break; + case B_OUTCOME_LOST: + stringPtr = sText_PlayerLostAgainstLinkTrainer; + break; + case B_OUTCOME_DREW: + stringPtr = sText_PlayerBattledToDrawLinkTrainer; + break; + } + } + } + break; + default: // load a string from the table + if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER) + { + gDisplayedStringBattle[0] = EOS; + return; + } + else + { + stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER]; + } + break; + } + + BattleStringExpandPlaceholdersToDisplayedString(stringPtr); +} + +u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src) +{ + BattleStringExpandPlaceholders(src, gDisplayedStringBattle); +} + +const u8* TryGetStatusString(u8 *src) +{ + u32 i; + u8 status[] = _("$$$$$$$"); + u32 chars1, chars2; + u8* statusPtr; + + statusPtr = status; + for (i = 0; i < 8; i++) + { + if (*src == EOS) + break; + *statusPtr = *src; + src++; + statusPtr++; + } + + chars1 = *(u32*)(&status[0]); + chars2 = *(u32*)(&status[4]); + + for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++) + { + if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0]) + && chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4])) + return gStatusConditionStringsTable[i][1]; + } + return NULL; +} + +#define HANDLE_NICKNAME_STRING_CASE(battlerId, monIndex) \ + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) \ + { \ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + toCpy = sText_FoePkmnPrefix; \ + else \ + toCpy = sText_WildPkmnPrefix; \ + while (*toCpy != EOS) \ + { \ + dst[dstID] = *toCpy; \ + dstID++; \ + toCpy++; \ + } \ + GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + else \ + { \ + GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ + } \ + StringGetEnd10(text); \ + toCpy = text; + +u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) +{ + u32 dstID = 0; // if they used dstID, why not use srcID as well? + const u8 *toCpy = NULL; + u8 text[30]; + u8 multiplayerId; + s32 i; + + multiplayerId = GetMultiplayerId(); + + while (*src != EOS) + { + if (*src == PLACEHOLDER_BEGIN) + { + src++; + switch (*src) + { + case B_TXT_BUFF1: + if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1); + toCpy = gStringVar1; + } + else + { + toCpy = TryGetStatusString(gBattleTextBuff1); + if (toCpy == NULL) + toCpy = gBattleTextBuff1; + } + break; + case B_TXT_BUFF2: + if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2); + toCpy = gStringVar2; + } + else + toCpy = gBattleTextBuff2; + break; + case B_TXT_BUFF3: + if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN) + { + ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3); + toCpy = gStringVar3; + } + else + toCpy = gBattleTextBuff3; + break; + case B_TXT_COPY_VAR_1: + toCpy = gStringVar1; + break; + case B_TXT_COPY_VAR_2: + toCpy = gStringVar2; + break; + case B_TXT_COPY_VAR_3: + toCpy = gStringVar3; + break; + case B_TXT_PLAYER_MON1_NAME: // first player poke name + GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name + GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_PLAYER_MON2_NAME: // second player poke name + GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name + GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name + GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 1]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name + GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 2]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 3]], + MON_DATA_NICKNAME, text); + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only battlerId 0/1 + HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, + gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker))]) + break; + case B_TXT_ATK_PARTNER_NAME: // attacker partner name + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + GetMonData( + &gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + + 2]], MON_DATA_NICKNAME, text); + else + GetMonData( + &gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + + 2]], MON_DATA_NICKNAME, text); + + StringGetEnd10(text); + toCpy = text; + break; + case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix + HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]) + break; + case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix + HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget]) + break; + case B_TXT_EFF_NAME_WITH_PREFIX: // effect battlerId name with prefix + HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler]) + break; + case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active battlerId name with prefix + HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler]) + break; + case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active battlerId name with prefix + HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler]) + break; + case B_TXT_CURRENT_MOVE: // current move name + if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) + toCpy = (const u8 *)&sATypeMove_Table[gBattleStruct->stringMoveType]; + else + toCpy = gMoveNames[gBattleMsgDataPtr->currentMove]; + break; + case B_TXT_LAST_MOVE: // originally used move name + if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT) + toCpy = (const u8 *)&sATypeMove_Table[gBattleStruct->stringMoveType]; + else + toCpy = gMoveNames[gBattleMsgDataPtr->originallyUsedMove]; + break; + case B_TXT_LAST_ITEM: // last used item + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if ((gBattleStruct->multiplayerId != 0 && (gPotentialItemEffectBattler & BIT_SIDE)) + || (gBattleStruct->multiplayerId == 0 && !(gPotentialItemEffectBattler & BIT_SIDE))) + { + StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name); + StringAppend(text, sText_BerrySuffix); + toCpy = text; + } + else + { + toCpy = sText_EnigmaBerry; + } + } + else + { + if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler) + { + StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name); + StringAppend(text, sText_BerrySuffix); + toCpy = text; + } + else + toCpy = sText_EnigmaBerry; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + } + else + { + CopyItemName(gLastUsedItem, text); + toCpy = text; + } + break; + case B_TXT_LAST_ABILITY: // last used ability + toCpy = gAbilityNames[gLastUsedAbility]; + break; + case B_TXT_ATK_ABILITY: // attacker ability + toCpy = gAbilityNames[sBattlerAbilities[gBattlerAttacker]]; + break; + case B_TXT_DEF_ABILITY: // target ability + toCpy = gAbilityNames[sBattlerAbilities[gBattlerTarget]]; + break; + case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability + toCpy = gAbilityNames[sBattlerAbilities[gBattleScripting.battler]]; + break; + case B_TXT_EFF_ABILITY: // effect battlerId ability + toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]]; + break; + case B_TXT_TRAINER1_CLASS: // trainer class name + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; + else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + toCpy = gTrainerClassNames[sub_80447F0()]; + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()]; + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + toCpy = gTrainerClassNames[sub_815DA10()]; + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + toCpy = gTrainerClassNames[GetEreaderTrainerClassId()]; + else + toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass]; + break; + case B_TXT_TRAINER1_NAME: // trainer1 name + if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) + { + for (i = 0; i < (s32) ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++) + text[i] = gBattleResources->secretBase->trainerName[i]; + text[i] = EOS; + toCpy = text; + } + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + toCpy = gLinkPlayers[multiplayerId ^ BIT_SIDE].name; + } + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + { + GetBattleTowerTrainerName(text); + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + { + sub_815DA28(text); + toCpy = text; + } + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + { + CopyEReaderTrainerName5(text); + toCpy = text; + } + else + { + if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_RIVAL + || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_RIVAL_2 + || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2) + toCpy = GetExpandedPlaceholder(6); + else + toCpy = gTrainers[gTrainerBattleOpponent_A].trainerName; + } + break; + case B_TXT_LINK_PLAYER_NAME: // link player name + toCpy = gLinkPlayers[multiplayerId].name; + break; + case B_TXT_LINK_PARTNER_NAME: // link partner name + toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_PARTNER(gLinkPlayers[multiplayerId].id))].name; + break; + case B_TXT_LINK_OPPONENT1_NAME: // link opponent 1 name + toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id))].name; + break; + case B_TXT_LINK_OPPONENT2_NAME: // link opponent 2 name + toCpy = gLinkPlayers[GetBattlerMultiplayerId( + BATTLE_PARTNER(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id)))].name; + break; + case B_TXT_LINK_SCR_TRAINER_NAME: // link scripting active name + toCpy = gLinkPlayers[GetBattlerMultiplayerId(gBattleScripting.battler)].name; + break; + case B_TXT_PLAYER_NAME: // player name + toCpy = gSaveBlock2Ptr->playerName; + break; + case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + { + sub_815DC40(gStringVar4, 0); + toCpy = gStringVar4; + } + else + { + toCpy = GetTrainerALoseText(); + } + break; + case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + { + sub_815DBF4(gStringVar4, 0); + toCpy = gStringVar4; + } + else + { + toCpy = GetTrainerWonSpeech(); + } + break; + case B_TXT_TRAINER2_LOSE_TEXT: + sub_815DC40(gStringVar4, 1); + toCpy = gStringVar4; + break; + case B_TXT_TRAINER2_WIN_TEXT: + sub_815DBF4(gStringVar4, 1); + toCpy = gStringVar4; + break; + case B_TXT_26: // ? + HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->field_52)) + break; + case B_TXT_PC_CREATOR_NAME: // lanette pc + if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC)) + toCpy = sText_Bills; + else + toCpy = sText_Someones; + break; + case B_TXT_ATK_PREFIX2: + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix2; + else + toCpy = sText_FoePkmnPrefix3; + break; + case B_TXT_DEF_PREFIX2: + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix2; + else + toCpy = sText_FoePkmnPrefix3; + break; + case B_TXT_ATK_PREFIX1: + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix; + else + toCpy = sText_FoePkmnPrefix2; + break; + case B_TXT_DEF_PREFIX1: + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix; + else + toCpy = sText_FoePkmnPrefix2; + break; + case B_TXT_ATK_PREFIX3: + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix3; + else + toCpy = sText_FoePkmnPrefix4; + break; + case B_TXT_DEF_PREFIX3: + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + toCpy = sText_AllyPkmnPrefix3; + else + toCpy = sText_FoePkmnPrefix4; + break; + } + + // missing if (toCpy != NULL) check + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER1_WIN_TEXT + || *src == B_TXT_TRAINER2_LOSE_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT) + { + dst[dstID] = EXT_CTRL_CODE_BEGIN; + dstID++; + dst[dstID] = 9; + dstID++; + } + } + else + { + dst[dstID] = *src; + dstID++; + } + src++; + } + + dst[dstID] = *src; + dstID++; + + return dstID; +} + +const struct BattleWindowText gUnknown_83FEB64[] = { + {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 1, 0x1, 0xf, 0x6}, + {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 0, 0x1, 0xf, 0x6}, + {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xc, 0xe, 0xb}, + {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 1, 0x0a, 2, 0, 2, 0, 0xc, 0xe, 0xb}, + {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 0, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0x0), 0, 0x20, 0, 0, 0, 0, 0x1, 0x0, 0x2}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 1, 2, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, + {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, + {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, + {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, + {PIXEL_FILL(0x1), 4, 0x00, 1, 0, 1, 1, 0x2, 0x1, 0x3} +}; + +const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02}; diff --git a/sym_ewram.txt b/sym_ewram.txt index 13b031179..68488d842 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -426,14 +426,8 @@ gPlayerFacingPosition: @ 2039A04 .include "src/coins.o" .align 2 .include "src/battle_transition.o" - .align 2 -gUnknown_2039A30: @ 2039A30 - .space 0x4 - -gUnknown_2039A34: @ 2039A34 - .space 0x4 - + .include "src/battle_message.o" .align 2 .include "src/save.o" .align 2 -- cgit v1.2.3 From e3bc9c44cdde8833505baae76f26b7a5f424f3ad Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Nov 2019 18:12:33 -0500 Subject: battle_message 2 --- asm/battle_message.s | 869 --------------------------------------------------- include/graphics.h | 3 + include/strings.h | 2 +- ld_script.txt | 1 - src/battle_message.c | 533 +++++++++++++++++++++++++------ src/pokemon.c | 2 +- 6 files changed, 437 insertions(+), 973 deletions(-) delete mode 100644 asm/battle_message.s diff --git a/asm/battle_message.s b/asm/battle_message.s deleted file mode 100644 index edea8e78b..000000000 --- a/asm/battle_message.s +++ /dev/null @@ -1,869 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ExpandBattleTextBuffPlaceholders -ExpandBattleTextBuffPlaceholders: @ 80D8418 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r7, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - movs r0, 0 - mov r8, r0 - movs r0, 0xFF - strb r0, [r6] - ldrb r0, [r7, 0x1] - cmp r0, 0xFF - bne _080D8436 - b _080D86BA -_080D8436: - adds r0, r7, r5 - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0xA - bls _080D8442 - b _080D86B0 -_080D8442: - lsls r0, r1, 2 - ldr r1, _080D844C @ =_080D8450 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D844C: .4byte _080D8450 - .align 2, 0 -_080D8450: - .4byte _080D847C - .4byte _080D8498 - .4byte _080D84EC - .4byte _080D8504 - .4byte _080D8514 - .4byte _080D858C - .4byte _080D85A0 - .4byte _080D85B2 - .4byte _080D85F8 - .4byte _080D860C - .4byte _080D8628 -_080D847C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r0, _080D8494 @ =gBattleStringsTable - subs r1, 0xC - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _080D868E - .align 2, 0 -_080D8494: .4byte gBattleStringsTable -_080D8498: - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _080D84B4 - cmp r0, 0x2 - bgt _080D84A8 - cmp r0, 0x1 - beq _080D84AE - b _080D84D6 -_080D84A8: - cmp r0, 0x4 - beq _080D84BC - b _080D84D6 -_080D84AE: - ldrb r4, [r4, 0x3] - mov r8, r4 - b _080D84D6 -_080D84B4: - ldrb r1, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - b _080D84D2 -_080D84BC: - ldrb r0, [r4, 0x3] - mov r8, r0 - ldrb r0, [r4, 0x4] - lsls r0, 8 - mov r1, r8 - orrs r1, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 -_080D84D2: - orrs r1, r0 - mov r8, r1 -_080D84D6: - adds r4, r5, r7 - ldrb r3, [r4, 0x2] - adds r0, r6, 0 - mov r1, r8 - movs r2, 0 - bl ConvertIntToDecimalStringN - adds r0, r5, 0x3 - ldrb r4, [r4, 0x1] - adds r5, r0, r4 - b _080D86B0 -_080D84EC: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0xD - muls r1, r0 - ldr r0, _080D8500 @ =gMoveNames - adds r1, r0 - b _080D868E - .align 2, 0 -_080D8500: .4byte gMoveNames -_080D8504: - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _080D8510 @ =gTypeNames - b _080D8616 - .align 2, 0 -_080D8510: .4byte gTypeNames -_080D8514: - ldrb r0, [r4, 0x1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D8538 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D8534 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _080D8574 - .align 2, 0 -_080D8534: .4byte gPlayerParty -_080D8538: - ldr r0, _080D8550 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080D8558 - ldr r1, _080D8554 @ =sText_FoePkmnPrefix - adds r0, r6, 0 - bl StringAppend - b _080D8560 - .align 2, 0 -_080D8550: .4byte gBattleTypeFlags -_080D8554: .4byte sText_FoePkmnPrefix -_080D8558: - ldr r1, _080D8584 @ =sText_WildPkmnPrefix - adds r0, r6, 0 - bl StringAppend -_080D8560: - adds r0, r5, r7 - ldrb r1, [r0, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D8588 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_080D8574: - mov r0, sp - bl StringGetEnd10 - adds r0, r6, 0 - mov r1, sp - bl StringAppend - b _080D86AE - .align 2, 0 -_080D8584: .4byte sText_WildPkmnPrefix -_080D8588: .4byte gEnemyParty -_080D858C: - ldr r1, _080D859C @ =gUnknown_83FD5D0 - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _080D8618 - .align 2, 0 -_080D859C: .4byte gUnknown_83FD5D0 -_080D85A0: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - adds r0, r6, 0 - bl GetSpeciesName - b _080D86AE -_080D85B2: - adds r4, r5, r7 - ldrb r0, [r4, 0x1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D85D8 - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D85D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData - b _080D85EA - .align 2, 0 -_080D85D4: .4byte gPlayerParty -_080D85D8: - ldrb r1, [r4, 0x2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D85F4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - adds r2, r6, 0 - bl GetMonData -_080D85EA: - adds r0, r6, 0 - bl StringGetEnd10 - b _080D86AE - .align 2, 0 -_080D85F4: .4byte gEnemyParty -_080D85F8: - ldr r1, _080D8608 @ =gUnknown_83FD63C - adds r0, r5, r7 - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - b _080D8618 - .align 2, 0 -_080D8608: .4byte gUnknown_83FD63C -_080D860C: - adds r0, r5, r7 - ldrb r1, [r0, 0x1] - movs r0, 0xD - muls r1, r0 - ldr r0, _080D8624 @ =gAbilityNames -_080D8616: - adds r1, r0 -_080D8618: - adds r0, r6, 0 - bl StringAppend - adds r5, 0x2 - b _080D86B0 - .align 2, 0 -_080D8624: .4byte gAbilityNames -_080D8628: - adds r0, r5, r7 - ldrb r2, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r2, r0 - ldr r0, _080D8674 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D86A6 - cmp r2, 0xAF - bne _080D869C - ldr r2, _080D8678 @ =gLinkPlayers - ldr r0, _080D867C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB5 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080D8680 @ =gPotentialItemEffectBattler - ldrb r2, [r1] - ldrh r0, [r0, 0x18] - cmp r0, r2 - bne _080D868C - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _080D8684 @ =gEnigmaBerries - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - ldr r1, _080D8688 @ =sText_BerrySuffix - b _080D868E - .align 2, 0 -_080D8674: .4byte gBattleTypeFlags -_080D8678: .4byte gLinkPlayers -_080D867C: .4byte gBattleStruct -_080D8680: .4byte gPotentialItemEffectBattler -_080D8684: .4byte gEnigmaBerries -_080D8688: .4byte sText_BerrySuffix -_080D868C: - ldr r1, _080D8698 @ =sText_EnigmaBerry -_080D868E: - adds r0, r6, 0 - bl StringAppend - b _080D86AE - .align 2, 0 -_080D8698: .4byte sText_EnigmaBerry -_080D869C: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName - b _080D86AE -_080D86A6: - adds r0, r2, 0 - adds r1, r6, 0 - bl CopyItemName -_080D86AE: - adds r5, 0x3 -_080D86B0: - adds r0, r7, r5 - ldrb r0, [r0] - cmp r0, 0xFF - beq _080D86BA - b _080D8436 -_080D86BA: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ExpandBattleTextBuffPlaceholders - - thumb_func_start ChooseMoveUsedParticle -ChooseMoveUsedParticle: @ 80D86C8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _080D86FC @ =gBattleMsgDataPtr - ldr r3, _080D8700 @ =gUnknown_83FEA70 -_080D86D2: - cmp r2, 0x4 - beq _080D86E8 - ldrh r1, [r3] - cmp r1, 0 - bne _080D86DE - adds r2, 0x1 -_080D86DE: - ldr r0, [r5] - adds r3, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _080D86D2 -_080D86E8: - cmp r2, 0 - blt _080D8714 - cmp r2, 0x2 - bgt _080D8708 - ldr r1, _080D8704 @ =gUnknown_83FE88B - adds r0, r4, 0 - bl StringCopy - b _080D8714 - .align 2, 0 -_080D86FC: .4byte gBattleMsgDataPtr -_080D8700: .4byte gUnknown_83FEA70 -_080D8704: .4byte gUnknown_83FE88B -_080D8708: - cmp r2, 0x4 - bgt _080D8714 - ldr r1, _080D871C @ =gUnknown_83FE88F - adds r0, r4, 0 - bl StringCopy -_080D8714: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D871C: .4byte gUnknown_83FE88F - thumb_func_end ChooseMoveUsedParticle - - thumb_func_start ChooseTypeOfMoveUsedString -ChooseTypeOfMoveUsedString: @ 80D8720 - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - b _080D872A -_080D8728: - adds r3, 0x1 -_080D872A: - ldrb r0, [r3] - cmp r0, 0xFF - bne _080D8728 - ldr r1, _080D8760 @ =gUnknown_83FEA70 - ldr r5, _080D8764 @ =gBattleMsgDataPtr - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 -_080D873A: - cmp r4, 0x4 - beq _080D8754 - ldrh r1, [r2] - cmp r1, 0 - bne _080D8746 - adds r4, 0x1 -_080D8746: - ldr r0, [r5] - adds r2, 0x2 - ldrh r0, [r0] - cmp r1, r0 - bne _080D873A - cmp r4, 0x4 - bhi _080D87B0 -_080D8754: - lsls r0, r4, 2 - ldr r1, _080D8768 @ =_080D876C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D8760: .4byte gUnknown_83FEA70 -_080D8764: .4byte gBattleMsgDataPtr -_080D8768: .4byte _080D876C - .align 2, 0 -_080D876C: - .4byte _080D8780 - .4byte _080D8788 - .4byte _080D8790 - .4byte _080D8798 - .4byte _080D87A8 -_080D8780: - ldr r1, _080D8784 @ =sText_ExclamationMark - b _080D879A - .align 2, 0 -_080D8784: .4byte sText_ExclamationMark -_080D8788: - ldr r1, _080D878C @ =sText_ExclamationMark2 - b _080D879A - .align 2, 0 -_080D878C: .4byte sText_ExclamationMark2 -_080D8790: - ldr r1, _080D8794 @ =sText_ExclamationMark3 - b _080D879A - .align 2, 0 -_080D8794: .4byte sText_ExclamationMark3 -_080D8798: - ldr r1, _080D87A4 @ =sText_ExclamationMark4 -_080D879A: - adds r0, r3, 0 - bl StringCopy - b _080D87B0 - .align 2, 0 -_080D87A4: .4byte sText_ExclamationMark4 -_080D87A8: - ldr r1, _080D87B8 @ =sText_ExclamationMark5 - adds r0, r3, 0 - bl StringCopy -_080D87B0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D87B8: .4byte sText_ExclamationMark5 - thumb_func_end ChooseTypeOfMoveUsedString - - thumb_func_start BattlePutTextOnWindow -BattlePutTextOnWindow: @ 80D87BC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r4, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - movs r0, 0xC0 - mov r8, r0 - mov r1, r8 - ands r1, r7 - mov r8, r1 - movs r0, 0x3F - ands r7, r0 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080D87F2 - ldr r0, _080D8814 @ =gUnknown_83FEB64 - lsls r1, r7, 1 - adds r1, r7 - lsls r1, 2 - adds r1, r0 - ldrb r1, [r1] - adds r0, r7, 0 - bl FillWindowPixelBuffer -_080D87F2: - movs r0, 0x40 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _080D881C - bl ContextNpcGetTextColor - lsls r0, 24 - lsrs r0, 24 - mov r2, sp - ldr r1, _080D8818 @ =gUnknown_83FEC90 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2, 0x5] - lsls r6, r7, 1 - b _080D882E - .align 2, 0 -_080D8814: .4byte gUnknown_83FEB64 -_080D8818: .4byte gUnknown_83FEC90 -_080D881C: - mov r3, sp - ldr r1, _080D884C @ =gUnknown_83FEB64 - lsls r2, r7, 1 - adds r0, r2, r7 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strb r0, [r3, 0x5] - adds r6, r2, 0 -_080D882E: - cmp r7, 0xF - blt _080D8878 - cmp r7, 0x14 - bgt _080D8850 - ldr r0, _080D884C @ =gUnknown_83FEB64 - adds r1, r6, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - ldrb r2, [r1, 0x4] - adds r1, r4, 0 - bl GetStringWidth - movs r1, 0x30 - b _080D8868 - .align 2, 0 -_080D884C: .4byte gUnknown_83FEB64 -_080D8850: - cmp r7, 0x17 - bgt _080D8878 - ldr r0, _080D8874 @ =gUnknown_83FEB64 - adds r1, r6, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - ldrb r2, [r1, 0x4] - adds r1, r4, 0 - bl GetStringWidth - movs r1, 0x40 -_080D8868: - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - b _080D8882 - .align 2, 0 -_080D8874: .4byte gUnknown_83FEB64 -_080D8878: - ldr r1, _080D88F8 @ =gUnknown_83FEB64 - adds r0, r6, r7 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x2] -_080D8882: - cmp r1, 0 - bge _080D8888 - movs r1, 0 -_080D8888: - str r4, [sp] - mov r0, sp - strb r7, [r0, 0x4] - strb r1, [r0, 0x6] - mov r1, sp - ldr r0, _080D88F8 @ =gUnknown_83FEB64 - mov r12, r0 - adds r3, r6, r7 - lsls r3, 2 - add r3, r12 - ldrb r0, [r3, 0x3] - strb r0, [r1, 0x7] - mov r0, sp - ldrb r0, [r0, 0x6] - strb r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x7] - strb r0, [r1, 0x9] - ldrb r0, [r3, 0x4] - strb r0, [r1, 0xA] - ldrb r0, [r3, 0x5] - strb r0, [r1, 0xB] - mov r4, sp - ldrb r2, [r4, 0xC] - movs r1, 0x10 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r4, 0xC] - mov r2, sp - ldrb r0, [r3, 0x7] - lsls r0, 4 - movs r5, 0xF - strb r0, [r2, 0xC] - ldrb r2, [r3, 0x8] - adds r0, r5, 0 - ands r0, r2 - ldrb r2, [r4, 0xD] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0xD] - mov r2, sp - ldrb r0, [r3, 0x9] - lsls r0, 4 - ands r1, r5 - orrs r1, r0 - strb r1, [r2, 0xD] - mov r3, r12 - cmp r7, 0x18 - bne _080D8900 - ldr r0, _080D88FC @ =gTextFlags - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - b _080D8908 - .align 2, 0 -_080D88F8: .4byte gUnknown_83FEB64 -_080D88FC: .4byte gTextFlags -_080D8900: - ldr r0, _080D8930 @ =gTextFlags - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 -_080D8908: - strb r1, [r0] - adds r4, r0, 0 - ldr r1, _080D8934 @ =gBattleTypeFlags - ldr r2, [r1] - movs r0, 0x2 - ands r0, r2 - adds r5, r1, 0 - cmp r0, 0 - bne _080D8928 - movs r0, 0x80 - lsls r0, 9 - ands r2, r0 - cmp r2, 0 - beq _080D8938 - cmp r7, 0x18 - beq _080D8938 -_080D8928: - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - b _080D8940 - .align 2, 0 -_080D8930: .4byte gTextFlags -_080D8934: .4byte gBattleTypeFlags -_080D8938: - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_080D8940: - strb r0, [r4] - cmp r7, 0 - beq _080D894A - cmp r7, 0x18 - bne _080D8970 -_080D894A: - ldr r0, [r5] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D8958 - movs r3, 0x1 - b _080D8960 -_080D8958: - bl GetTextSpeedSetting - lsls r0, 24 - lsrs r3, r0, 24 -_080D8960: - ldr r0, _080D896C @ =gTextFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _080D8982 - .align 2, 0 -_080D896C: .4byte gTextFlags -_080D8970: - adds r0, r6, r7 - lsls r0, 2 - adds r0, r3 - ldrb r3, [r0, 0x6] - ldrb r1, [r4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r4] -_080D8982: - mov r0, sp - adds r1, r3, 0 - movs r2, 0 - bl AddTextPrinter - movs r0, 0x80 - mov r1, r8 - ands r1, r0 - cmp r1, 0 - bne _080D89A4 - adds r0, r7, 0 - bl PutWindowTilemap - adds r0, r7, 0 - movs r1, 0x3 - bl CopyWindowToVram -_080D89A4: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BattlePutTextOnWindow - - thumb_func_start sub_80D89B0 -sub_80D89B0: @ 80D89B0 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xC - beq _080D89CC - ldr r0, _080D89D0 @ =0x00000177 - cmp r1, r0 - beq _080D89CC - adds r0, 0x8 - cmp r1, r0 - beq _080D89CC - subs r0, 0x7 - cmp r1, r0 - bne _080D89D4 -_080D89CC: - movs r0, 0x1 - b _080D89D6 - .align 2, 0 -_080D89D0: .4byte 0x00000177 -_080D89D4: - movs r0, 0 -_080D89D6: - pop {r1} - bx r1 - thumb_func_end sub_80D89B0 - - thumb_func_start SetPpNumbersPaletteInMoveSelection -SetPpNumbersPaletteInMoveSelection: @ 80D89DC - push {r4,r5,lr} - ldr r0, _080D8A38 @ =gActiveBattler - ldrb r2, [r0] - lsls r1, r2, 9 - ldr r0, _080D8A3C @ =gBattleBufferA + 4 - adds r1, r0 - ldr r4, _080D8A40 @ =gUnknown_8D2FBB4 - ldr r0, _080D8A44 @ =gMoveSelectionCursor - adds r2, r0 - ldrb r2, [r2] - adds r0, r1, 0 - adds r0, 0x8 - adds r0, r2 - ldrb r0, [r0] - adds r1, 0xC - adds r1, r2 - ldrb r1, [r1] - bl GetCurrentPpToMaxPpState - lsls r0, 24 - ldr r5, _080D8A48 @ =gPlttBufferUnfaded - lsrs r0, 22 - adds r0, r4 - ldrh r1, [r0] - adds r2, r5, 0 - adds r2, 0xB8 - strh r1, [r2] - ldrh r0, [r0, 0x2] - adds r5, 0xB6 - strh r0, [r5] - ldr r4, _080D8A4C @ =gPlttBufferFaded + 0xB8 - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl CpuSet - subs r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl CpuSet - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D8A38: .4byte gActiveBattler -_080D8A3C: .4byte gBattleBufferA + 4 -_080D8A40: .4byte gUnknown_8D2FBB4 -_080D8A44: .4byte gMoveSelectionCursor -_080D8A48: .4byte gPlttBufferUnfaded -_080D8A4C: .4byte gPlttBufferFaded + 0xB8 - thumb_func_end SetPpNumbersPaletteInMoveSelection - - thumb_func_start GetCurrentPpToMaxPpState -GetCurrentPpToMaxPpState: @ 80D8A50 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, r2 - beq _080D8A98 - cmp r0, 0x2 - bhi _080D8A6A - cmp r2, 0x1 - bhi _080D8A98 - b _080D8A72 -_080D8A6A: - cmp r0, 0x7 - bhi _080D8A7C - cmp r2, 0x2 - bhi _080D8A98 -_080D8A72: - movs r0, 0x2 - subs r0, r2 - lsls r0, 24 - lsrs r0, 24 - b _080D8A9A -_080D8A7C: - cmp r2, 0 - bne _080D8A84 - movs r0, 0x2 - b _080D8A9A -_080D8A84: - lsrs r0, r1, 26 - cmp r2, r0 - bhi _080D8A8E - movs r0, 0x1 - b _080D8A9A -_080D8A8E: - lsrs r0, r1, 25 - cmp r3, r0 - bhi _080D8A98 - movs r0, 0 - b _080D8A9A -_080D8A98: - movs r0, 0x3 -_080D8A9A: - pop {r1} - bx r1 - thumb_func_end GetCurrentPpToMaxPpState - - .align 2, 0 @ Don't pad with nop. diff --git a/include/graphics.h b/include/graphics.h index 354339235..dbba28ea3 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4239,4 +4239,7 @@ extern const u16 gUnknown_8E97DDC[]; extern const u32 gUnknown_8E97DFC[]; extern const u32 gUnknown_8E97EC4[]; +// battle_message +extern const u16 gUnknown_8D2FBB4[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/strings.h b/include/strings.h index d6a271f7b..ed69d3bc3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -193,7 +193,7 @@ extern const u8 BattleText_GetPumped[]; extern const u8 BattleText_MistShroud[]; extern const u8 gText_BadEgg[]; extern const u8 gText_PkmnsXPreventsSwitching[]; -extern const u8 *const gUnknown_83FD5D0[]; +extern const u8 *const gStatNamesTable[]; // diploma extern const u8 gUnknown_841B60E[]; diff --git a/ld_script.txt b/ld_script.txt index ff56bec64..74111a5b5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -196,7 +196,6 @@ SECTIONS { src/battle_transition.o(.text); src/battle_controller_link_partner.o(.text); src/battle_message.o(.text); - asm/battle_message.o(.text); src/math_util.o(.text); src/roulette_util.o(.text); src/cable_car_util.o(.text); diff --git a/src/battle_message.c b/src/battle_message.c index 2924dc520..e9a0c74b3 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_string_ids.h" #include "battle.h" +#include "palette.h" #include "battle_anim.h" #include "string_util.h" #include "text.h" @@ -14,6 +15,10 @@ #include "battle_tower.h" #include "trainer_tower.h" #include "battle_setup.h" +#include "field_specials.h" +#include "new_menu_helpers.h" +#include "battle_controllers.h" +#include "graphics.h" #include "constants/moves.h" #include "constants/items.h" #include "constants/trainer_classes.h" @@ -32,12 +37,12 @@ struct BattleWindowText u8 shadowColor; }; -EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {}; -EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL; +static EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {}; +static EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL; -void ChooseMoveUsedParticle(u8 *textPtr); -void ChooseTypeOfMoveUsedString(u8 *textPtr); -void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); +static void ChooseMoveUsedParticle(u8 *textPtr); +static void ChooseTypeOfMoveUsedString(u8 *textPtr); +static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); const u8 gUnknown_83FB218[] = _(""); // @ 83FB218 const u8 gUnknown_83FB219[] = _("{B_TRAINER1_LOSE_TEXT}"); // @ 83FB219 @@ -314,18 +319,18 @@ const u8 gUnknown_83FCC33[] = _("And…\p"); // @ 83FCC33 const u8 gUnknown_83FCC39[] = _("HM moves can't be\nforgotten now.\p"); // @ 83FCC39 const u8 gUnknown_83FCC5B[] = _("It's not very effective…"); // @ 83FCC5B const u8 gUnknown_83FCC74[] = _("It's super effective!"); // @ 83FCC74 -const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); // @ 83FCC8A +static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); // @ 83FCC8A const u8 gUnknown_83FCCA0[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); // @ 83FCCA0 const u8 gUnknown_83FCCBB[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); // @ 83FCCBB const u8 gUnknown_83FCCD2[] = _("{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!"); // @ 83FCCD2 -const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCCE4 -const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCCF8 -const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD0F -const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD27 -const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD41 -const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD66 +static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCCE4 +static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCCF8 +static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD0F +static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD27 +static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD41 +static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD66 const u8 gUnknown_83FCD92[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!"); // @ 83FCD92 -const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); // @ 83FCD9F +static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); // @ 83FCD9F const u8 gUnknown_83FCDB3[] = _("No! There's no running\nfrom a TRAINER battle!\p"); // @ 83FCDB3 const u8 gUnknown_83FCDE2[] = _("Can't escape!\p"); // @ 83FCDE2 const u8 gUnknown_83FCDF1[] = _(""); // @ 83FCDF1 @@ -367,71 +372,71 @@ const u8 gUnknown_83FD15A[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!"); // @ const u8 gUnknown_83FD16A[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!"); // @ 83FD16A const u8 gUnknown_83FD186[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); // @ 83FD186 const u8 gUnknown_83FD1B8[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); // @ 83FD1B8 -const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); // @ 83FD1C7 +static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); // @ 83FD1C7 const u8 gUnknown_83FD1DF[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1DF const u8 gUnknown_83FD1FA[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1FA const u8 gUnknown_83FD218[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); // @ 83FD218 const u8 gUnknown_83FD232[] = _("{B_OPPONENT_MON1_NAME} is angry!"); // @ 83FD232 const u8 gUnknown_83FD23F[] = _("{B_OPPONENT_MON1_NAME} is eating!"); // @ 83FD23F const u8 gUnknown_83FD24D[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); // @ 83FD24D -const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD284 -const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD297 -const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); // @ 83FD2AA -const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); // @ 83FD2BF +static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD284 +static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD297 +static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); // @ 83FD2AA +static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); // @ 83FD2BF const u8 gUnknown_83FD2D9[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); // @ 83FD2D9 const u8 gUnknown_83FD30D[] = _("The GHOST appeared!\p"); // @ 83FD30D const u8 gUnknown_83FD322[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); // @ 83FD322 const u8 gUnknown_83FD34D[] = _("The GHOST was MAROWAK!\p\n"); // @ 83FD34D -const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); // @ 83FD366 -const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); // @ 83FD383 -const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); // @ 83FD397 -const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); // @ 83FD3B1 -const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); // @ 83FD3C7 -const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); // @ 83FD3E4 -const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); // @ 83FD3F7 -const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); // @ 83FD407 -const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!"); // @ 83FD41E -const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!"); // @ 83FD43E -const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!"); // @ 83FD44E -const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); // @ 83FD45E -const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); // @ 83FD466 -const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!"); // @ 83FD475 -const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); // @ 83FD47D -const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); // @ 83FD488 -const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe's weak!\nGet 'em, {B_BUFF1}!"); // @ 83FD497 -const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); // @ 83FD4B5 -const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); // @ 83FD4CD -const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); // @ 83FD4EB -const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); // @ 83FD4FA +static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); // @ 83FD366 +static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); // @ 83FD383 +static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); // @ 83FD397 +static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); // @ 83FD3B1 +static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); // @ 83FD3C7 +static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); // @ 83FD3E4 +static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); // @ 83FD3F7 +static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); // @ 83FD407 +static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!"); // @ 83FD41E +static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!"); // @ 83FD43E +static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!"); // @ 83FD44E +static const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); // @ 83FD45E +static const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); // @ 83FD466 +static const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!"); // @ 83FD475 +static const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); // @ 83FD47D +static const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); // @ 83FD488 +static const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe's weak!\nGet 'em, {B_BUFF1}!"); // @ 83FD497 +static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); // @ 83FD4B5 +static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); // @ 83FD4CD +static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); // @ 83FD4EB +static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); // @ 83FD4FA const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); // @ 83FD50D -const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); // @ 83FD522 -const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD535 -const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD545 -const u8 sText_WildPkmnPrefix[] = _("Wild "); // @ 83FD555 -const u8 sText_FoePkmnPrefix[] = _("Foe "); // @ 83FD55B -const u8 sText_FoePkmnPrefix2[] = _("Foe"); // @ 83FD560 -const u8 sText_AllyPkmnPrefix[] = _("Ally"); // @ 83FD564 -const u8 sText_FoePkmnPrefix3[] = _("Foe"); // @ 83FD569 -const u8 sText_AllyPkmnPrefix2[] = _("Ally"); // @ 83FD56D -const u8 sText_FoePkmnPrefix4[] = _("Foe"); // @ 83FD572 -const u8 sText_AllyPkmnPrefix3[] = _("Ally"); // @ 83FD576 -const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); // @ 83FD57B -const u8 sText_ExclamationMark[] = _("!"); // @ 83FD586 -const u8 sText_ExclamationMark2[] = _("!"); // @ 83FD588 -const u8 sText_ExclamationMark3[] = _("!"); // @ 83FD58A -const u8 sText_ExclamationMark4[] = _("!"); // @ 83FD58C -const u8 sText_ExclamationMark5[] = _("!"); // @ 83FD58E - -const u8 sText_HP2[] = _("HP"); // @ 83FD590 -const u8 sText_Attack2[] = _("ATTACK"); // @ 83FD593 -const u8 sText_Defense2[] = _("DEFENSE"); // @ 83FD59A -const u8 sText_Speed[] = _("SPEED"); // @ 83FD5A2 -const u8 sText_SpAtk2[] = _("SP. ATK"); // @ 83FD5A8 -const u8 sText_SpDef2[] = _("SP. DEF"); // @ 83FD5B0 -const u8 sText_Accuracy[] = _("accuracy"); // @ 83FD5B8 -const u8 sText_Evasiveness[] = _("evasiveness"); // @ 83FD5C1 - -const u8 *const gUnknown_83FD5D0[] = { +static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); // @ 83FD522 +static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD535 +static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD545 +static const u8 sText_WildPkmnPrefix[] = _("Wild "); // @ 83FD555 +static const u8 sText_FoePkmnPrefix[] = _("Foe "); // @ 83FD55B +static const u8 sText_FoePkmnPrefix2[] = _("Foe"); // @ 83FD560 +static const u8 sText_AllyPkmnPrefix[] = _("Ally"); // @ 83FD564 +static const u8 sText_FoePkmnPrefix3[] = _("Foe"); // @ 83FD569 +static const u8 sText_AllyPkmnPrefix2[] = _("Ally"); // @ 83FD56D +static const u8 sText_FoePkmnPrefix4[] = _("Foe"); // @ 83FD572 +static const u8 sText_AllyPkmnPrefix3[] = _("Ally"); // @ 83FD576 +static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); // @ 83FD57B +static const u8 sText_ExclamationMark[] = _("!"); // @ 83FD586 +static const u8 sText_ExclamationMark2[] = _("!"); // @ 83FD588 +static const u8 sText_ExclamationMark3[] = _("!"); // @ 83FD58A +static const u8 sText_ExclamationMark4[] = _("!"); // @ 83FD58C +static const u8 sText_ExclamationMark5[] = _("!"); // @ 83FD58E + +static const u8 sText_HP2[] = _("HP"); // @ 83FD590 +static const u8 sText_Attack2[] = _("ATTACK"); // @ 83FD593 +static const u8 sText_Defense2[] = _("DEFENSE"); // @ 83FD59A +static const u8 sText_Speed[] = _("SPEED"); // @ 83FD5A2 +static const u8 sText_SpAtk2[] = _("SP. ATK"); // @ 83FD5A8 +static const u8 sText_SpDef2[] = _("SP. DEF"); // @ 83FD5B0 +static const u8 sText_Accuracy[] = _("accuracy"); // @ 83FD5B8 +static const u8 sText_Evasiveness[] = _("evasiveness"); // @ 83FD5C1 + +const u8 *const gStatNamesTable[] = { sText_HP2, sText_Attack2, sText_Defense2, @@ -442,13 +447,13 @@ const u8 *const gUnknown_83FD5D0[] = { sText_Evasiveness }; -const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); // -const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); // @ 83FD5FF -const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); // @ 83FD60C -const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); // @ 83FD61B -const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); // @ 83FD62B +static const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); // +static const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); // @ 83FD5FF +static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); // @ 83FD60C +static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); // @ 83FD61B +static const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); // @ 83FD62B -const u8 *const gUnknown_83FD63C[] = { +const u8 *const gPokeblockWasTooXStringTable[] = { sText_PokeblockWasTooSpicy, sText_PokeblockWasTooDry, sText_PokeblockWasTooSweet, @@ -456,31 +461,31 @@ const u8 *const gUnknown_83FD63C[] = { sText_PokeblockWasTooSour }; -const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); // @ 83FD650 -const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); // @ 83FD65C -const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); // @ 83FD671 -const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); // @ 83FD688 -const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); // @ 83FD697 -const u8 sText_DontBeAThief[] = _("Don't be a thief!"); // @ 83FD6B5 -const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); // @ 83FD6C7 -const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); // @ 83FD700 -const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); // @ 83FD718 -const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); // @ 83FD738 -const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); // @ 83FD757 -const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); // @ 83FD76D +static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); // @ 83FD650 +static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); // @ 83FD65C +static const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); // @ 83FD671 +static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); // @ 83FD688 +static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); // @ 83FD697 +static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); // @ 83FD6B5 +static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); // @ 83FD6C7 +static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); // @ 83FD700 +static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); // @ 83FD718 +static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); // @ 83FD738 +static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); // @ 83FD757 +static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); // @ 83FD76D const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // @ 83FD78A -const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"); // @ 83FD7A2 -const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}"); // @ 83FD7C0 -const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); // @ 83FD7E0 -const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); // @ 83FD804 -const u8 sText_Someones[] = _("someone's"); // @ 83FD81A -const u8 sText_Bills[] = _("BILL's"); // @ 83FD824 +static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"); // @ 83FD7A2 +static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}"); // @ 83FD7C0 +static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); // @ 83FD7E0 +static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); // @ 83FD804 +static const u8 sText_Someones[] = _("someone's"); // @ 83FD81A +static const u8 sText_Bills[] = _("BILL's"); // @ 83FD824 const u8 gUnknown_83FD82B[] = _("{B_OPPONENT_MON1_NAME}'s data was\nadded to the POKéDEX.\p"); // @ 83FD82B const u8 gUnknown_83FD850[] = _("It is raining."); // @ 83FD850 const u8 gUnknown_83FD85F[] = _("A sandstorm is raging."); // @ 83FD85F const u8 gUnknown_83FD876[] = _("The BOX is full!\nYou can't catch any more!\p"); // @ 83FD876 -const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); // @ 83FD8A2 -const u8 sText_BerrySuffix[] = _(" BERRY"); // @ 83FD8AF +static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); // @ 83FD8A2 +static const u8 sText_BerrySuffix[] = _(" BERRY"); // @ 83FD8AF const u8 gUnknown_83FD8B6[] = _("ナゾ"); // @ 83FD8B6 const u8 gUnknown_83FD8B9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); // @ 83FD8B9 const u8 gUnknown_83FD8D2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); // @ 83FD8D2 @@ -1269,8 +1274,8 @@ const u8 gUnknown_83FE870[] = _("ミツル"); // @ 83FE870 const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win"); // @ 83FE874 const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss"); // @ 83FE87B const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw"); // @ 83FE883 -const u8 gUnknown_83FE88B[] = _(" is"); // @ 83FE88B -const u8 gUnknown_83FE88F[] = _("'s"); // @ 83FE88F +static const u8 sText_SpaceIs[] = _(" is"); // @ 83FE88B +static const u8 sText_ApostropheS[] = _("'s"); // @ 83FE88F const u8 gUnknown_83FE892[] = _("a NORMAL move"); // @ 83FE892 const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); // @ 83FE8A0 const u8 gUnknown_83FE8B0[] = _("a FLYING move"); // @ 83FE8B0 @@ -1309,10 +1314,10 @@ const u8 *const gUnknown_83FE9C4[] = { }; const u8 gUnknown_83FE9D4[] = _("{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); // -const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9E4 -const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9FF +static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9E4 +static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9FF -const u8 *const sATypeMove_Table[] = { +static const u8 *const sATypeMove_Table[] = { gUnknown_83FE892, gUnknown_83FE8A0, gUnknown_83FE8B0, @@ -1333,7 +1338,7 @@ const u8 *const sATypeMove_Table[] = { gUnknown_83FE976 }; -const u16 gUnknown_83FEA70[] = { +static const u16 sGrammarMoveUsedTable[] = { MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH, @@ -1719,7 +1724,7 @@ u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src) BattleStringExpandPlaceholders(src, gDisplayedStringBattle); } -const u8* TryGetStatusString(u8 *src) +static const u8* TryGetStatusString(u8 *src) { u32 i; u8 status[] = _("$$$$$$$"); @@ -2153,7 +2158,201 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) return dstID; } -const struct BattleWindowText gUnknown_83FEB64[] = { +static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) +{ + u32 srcID = 1; + u32 value = 0; + u8 text[12]; + u16 hword; + + *dst = EOS; + while (src[srcID] != B_BUFF_EOS) + { + switch (src[srcID]) + { + case B_BUFF_STRING: // battle string + hword = T1_READ_16(&src[srcID + 1]); + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]); + srcID += 3; + break; + case B_BUFF_NUMBER: // int to string + switch (src[srcID + 1]) + { + case 1: + value = src[srcID + 3]; + break; + case 2: + value = T1_READ_16(&src[srcID + 3]); + break; + case 4: + value = T1_READ_32(&src[srcID + 3]); + break; + } + ConvertIntToDecimalStringN(dst, value, STR_CONV_MODE_LEFT_ALIGN, src[srcID + 2]); + srcID += src[srcID + 1] + 3; + break; + case B_BUFF_MOVE: // move name + StringAppend(dst, gMoveNames[T1_READ_16(&src[srcID + 1])]); + srcID += 3; + break; + case B_BUFF_TYPE: // type name + StringAppend(dst, gTypeNames[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix + if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) + { + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + StringAppend(dst, sText_FoePkmnPrefix); + else + StringAppend(dst, sText_WildPkmnPrefix); + + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + } + StringGetEnd10(text); + StringAppend(dst, text); + srcID += 3; + break; + case B_BUFF_STAT: // stats + StringAppend(dst, gStatNamesTable[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_SPECIES: // species name + GetSpeciesName(dst, T1_READ_16(&src[srcID + 1])); + srcID += 3; + break; + case B_BUFF_MON_NICK: // poke nick without prefix + if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) + GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + else + GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + srcID += 3; + break; + case B_BUFF_NEGATIVE_FLAVOR: // flavor table + StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_ABILITY: // ability names + StringAppend(dst, gAbilityNames[src[srcID + 1]]); + srcID += 2; + break; + case B_BUFF_ITEM: // item name + hword = T1_READ_16(&src[srcID + 1]); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (hword == ITEM_ENIGMA_BERRY) + { + if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler) + { + StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name); + StringAppend(dst, sText_BerrySuffix); + } + else + { + StringAppend(dst, sText_EnigmaBerry); + } + } + else + { + CopyItemName(hword, dst); + } + } + else + { + CopyItemName(hword, dst); + } + srcID += 3; + break; + } + } +} + +// Loads one of two text strings into the provided buffer. This is functionally +// unused, since the value loaded into the buffer is not read; it loaded one of +// two particles (either "は" or "の") which works in tandem with ChooseTypeOfMoveUsedString +// below to effect changes in the meaning of the line. +static void ChooseMoveUsedParticle(u8* textBuff) +{ + s32 counter = 0; + u32 i = 0; + + while (counter != MAX_MON_MOVES) + { + if (sGrammarMoveUsedTable[i] == 0) + counter++; + if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove) + break; + } + + if (counter >= 0) + { + if (counter <= 2) + StringCopy(textBuff, sText_SpaceIs); // is + else if (counter <= MAX_MON_MOVES) + StringCopy(textBuff, sText_ApostropheS); // 's + } +} + +// Appends "!" to the text buffer `dst`. In the original Japanese this looked +// into the table of moves at sGrammarMoveUsedTable and varied the line accordingly. +// +// sText_ExclamationMark was a plain "!", used for any attack not on the list. +// It resulted in the translation "'s !". +// +// sText_ExclamationMark2 was "を つかった!". This resulted in the translation +// " used !", which was used for all attacks in English. +// +// sText_ExclamationMark3 was "した!". This was used for those moves whose +// names were verbs, such as Recover, and resulted in translations like " +// recovered itself!". +// +// sText_ExclamationMark4 was "を した!" This resulted in a translation of +// " did an !". +// +// sText_ExclamationMark5 was " こうげき!" This resulted in a translation of +// "'s attack!". +static void ChooseTypeOfMoveUsedString(u8* dst) +{ + s32 counter = 0; + s32 i = 0; + + while (*dst != EOS) + dst++; + + while (counter != MAX_MON_MOVES) + { + if (sGrammarMoveUsedTable[i] == MOVE_NONE) + counter++; + if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove) + break; + } + + switch (counter) + { + case 0: + StringCopy(dst, sText_ExclamationMark); + break; + case 1: + StringCopy(dst, sText_ExclamationMark2); + break; + case 2: + StringCopy(dst, sText_ExclamationMark3); + break; + case 3: + StringCopy(dst, sText_ExclamationMark4); + break; + case 4: + StringCopy(dst, sText_ExclamationMark5); + break; + } +} + +static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 1, 0x1, 0xf, 0x6}, {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 0, 0x1, 0xf, 0x6}, {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, @@ -2182,3 +2381,135 @@ const struct BattleWindowText gUnknown_83FEB64[] = { }; const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02}; + +void BattlePutTextOnWindow(const u8 *text, u8 windowId) { + bool32 copyToVram; + struct TextPrinterTemplate printerTemplate; + u8 speed; + int x; + u8 context; + + u8 textFlags = windowId & 0xC0; + windowId &= 0x3F; + if (!(textFlags & 0x80)) + FillWindowPixelBuffer(windowId, sTextOnWindowsInfo_Normal[windowId].fillValue); + if (textFlags & 0x40) { + context = ContextNpcGetTextColor(); + printerTemplate.fontId = gUnknown_83FEC90[context]; + } + else { + printerTemplate.fontId = sTextOnWindowsInfo_Normal[windowId].fontId; + } + switch (windowId) + { + case 15 ... 20: + x = (48 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, + sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; + break; + case 21 ... 23: + x = (64 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, + sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; + break; + default: + x = sTextOnWindowsInfo_Normal[windowId].x; + break; + } + if (x < 0) + x = 0; + printerTemplate.currentChar = text; + printerTemplate.windowId = windowId; + printerTemplate.x = x; + printerTemplate.y = sTextOnWindowsInfo_Normal[windowId].y; + printerTemplate.currentX = printerTemplate.x; + printerTemplate.currentY = printerTemplate.y; + printerTemplate.letterSpacing = sTextOnWindowsInfo_Normal[windowId].letterSpacing; + printerTemplate.lineSpacing = sTextOnWindowsInfo_Normal[windowId].lineSpacing; + printerTemplate.unk = 0; + printerTemplate.fgColor = sTextOnWindowsInfo_Normal[windowId].fgColor; + printerTemplate.bgColor = sTextOnWindowsInfo_Normal[windowId].bgColor; + printerTemplate.shadowColor = sTextOnWindowsInfo_Normal[windowId].shadowColor; + if (windowId == 24) + gTextFlags.useAlternateDownArrow = FALSE; + else + gTextFlags.useAlternateDownArrow = TRUE; + + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) || ((gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) && windowId != 24)) + gTextFlags.autoScroll = TRUE; + else + gTextFlags.autoScroll = FALSE; + + if (windowId == 0 || windowId == 24) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + speed = 1; + else + speed = GetTextSpeedSetting(); + gTextFlags.canABSpeedUpPrint = TRUE; + } + else + { + speed = sTextOnWindowsInfo_Normal[windowId].speed; + gTextFlags.canABSpeedUpPrint = FALSE; + } + + AddTextPrinter(&printerTemplate, speed, NULL); + if (!(textFlags & 0x80)) + { + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); + } +} + +bool8 sub_80D89B0(u16 stringId) +{ + if (stringId == STRINGID_TRAINER1LOSETEXT || stringId == STRINGID_TRAINER2CLASS || stringId == STRINGID_TRAINER1WINTEXT || stringId == STRINGID_TRAINER2NAME) + return TRUE; + return FALSE; +} + +void SetPpNumbersPaletteInMoveSelection(void) +{ + struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]); + const u16 *palPtr = gUnknown_8D2FBB4; + u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]], + chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]); + + gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0]; + gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1]; + + CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16)); + CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16)); +} + +u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp) +{ + if (maxPp == currentPp) + { + return 3; + } + else if (maxPp <= 2) + { + if (currentPp > 1) + return 3; + else + return 2 - currentPp; + } + else if (maxPp <= 7) + { + if (currentPp > 2) + return 3; + else + return 2 - currentPp; + } + else + { + if (currentPp == 0) + return 2; + if (currentPp <= maxPp / 4) + return 1; + if (currentPp > maxPp / 2) + return 3; + } + + return 0; +} diff --git a/src/pokemon.c b/src/pokemon.c index 9aaddc142..72d259446 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4796,7 +4796,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) static void sub_8042D50(int stat) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gUnknown_83FD5D0[gUnknown_825DFF0[stat]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_825DFF0[stat]]); StringCopy(gBattleTextBuff2, BattleText_Rose); BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3); } -- cgit v1.2.3 From 14725e1592b3d7035cf1ee8720254ea2d312639c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Nov 2019 19:21:31 -0500 Subject: Address review comments --- data/battle_scripts_1.s | 6 +- include/strings.h | 8 +- src/battle_message.c | 1216 +++++++++++++++++++++++------------------------ src/pokemon.c | 8 +- 4 files changed, 619 insertions(+), 619 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b802723b7..2ac9f7f6d 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -3167,7 +3167,7 @@ BattleScript_RainContinuesOrEndsEnd:: end2 BattleScript_DamagingWeatherContinues:: - printfromtable gSandStormHailContinuesStringIds + printfromtable gSandstormHailContinuesStringIds waitmessage 0x40 playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL setbyte gBattleCommunication, 0 @@ -3175,7 +3175,7 @@ BattleScript_DamagingWeatherLoop:: copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 weatherdamage jumpifword CMP_EQUAL, gBattleMoveDamage, NULL, BattleScript_DamagingWeatherContinuesEnd - printfromtable gSandStormHailDmgStringIds + printfromtable gSandstormHailDmgStringIds waitmessage 0x40 orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE effectivenesssound @@ -3193,7 +3193,7 @@ BattleScript_WeatherDamageEndedBattle:: end2 BattleScript_SandStormHailEnds:: - printfromtable gSandStormHailEndStringIds + printfromtable gSandstormHailEndStringIds waitmessage 0x40 end2 diff --git a/include/strings.h b/include/strings.h index ed69d3bc3..08dcdb9da 100644 --- a/include/strings.h +++ b/include/strings.h @@ -187,10 +187,10 @@ extern const u8 gUnknown_84162BD[]; extern const u8 gUnknown_841D148[]; // pokemon -extern const u8 BattleText_Rose[]; -extern const u8 BattleText_UnknownString3[]; -extern const u8 BattleText_GetPumped[]; -extern const u8 BattleText_MistShroud[]; +extern const u8 gBattleText_Rose[]; +extern const u8 gBattleText_UnknownString3[]; +extern const u8 gBattleText_GetPumped[]; +extern const u8 gBattleText_MistShroud[]; extern const u8 gText_BadEgg[]; extern const u8 gText_PkmnsXPreventsSwitching[]; extern const u8 *const gStatNamesTable[]; diff --git a/src/battle_message.c b/src/battle_message.c index e9a0c74b3..396c4c7f0 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -38,403 +38,403 @@ struct BattleWindowText }; static EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {}; -static EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL; +static EWRAM_DATA struct BattleMsgData *sBattleMsgDataPtr = NULL; static void ChooseMoveUsedParticle(u8 *textPtr); static void ChooseTypeOfMoveUsedString(u8 *textPtr); static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); -const u8 gUnknown_83FB218[] = _(""); // @ 83FB218 -const u8 gUnknown_83FB219[] = _("{B_TRAINER1_LOSE_TEXT}"); // @ 83FB219 -const u8 gUnknown_83FB21C[] = _("{B_TRAINER2_CLASS}"); // @ 83FB21C -const u8 gUnknown_83FB21F[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); // @ 83FB21F -const u8 gUnknown_83FB232[] = _("{B_TRAINER1_WIN_TEXT}"); // @ 83FB232 -const u8 gUnknown_83FB235[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); // @ 83FB235 -const u8 gUnknown_83FB248[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); // @ 83FB248 -const u8 gUnknown_83FB262[] = _("{B_TRAINER2_NAME}"); // @ 83FB262 -const u8 gUnknown_83FB265[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"); // @ 83FB265 -const u8 gUnknown_83FB282[] = _(""); // @ 83FB282 -const u8 gUnknown_83FB283[] = _(" a boosted"); // @ 83FB283 -const u8 gUnknown_83FB28E[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{WAIT_SE}\p"); // @ 83FB28E -const u8 gUnknown_83FB2A4[] = _("{B_BUFF1} learned\n{B_BUFF2}!{WAIT_SE}\p"); // @ 83FB2A4 -const u8 gUnknown_83FB2B6[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p"); // @ 83FB2B6 -const u8 gUnknown_83FB2D1[] = _("But, {B_BUFF1} can't learn\nmore than four moves.\p"); // @ 83FB2D1 -const u8 gUnknown_83FB2FC[] = _("Delete a move to make\nroom for {B_BUFF2}?"); // @ 83FB2FC -const u8 gUnknown_83FB31F[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p"); // @ 83FB31F -const u8 gUnknown_83FB32E[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?"); // @ 83FB32E -const u8 gUnknown_83FB343[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p"); // @ 83FB343 -const u8 gUnknown_83FB359[] = _("Use next POKéMON?"); // @ 83FB359 -const u8 gUnknown_83FB36B[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nattack missed!"); // @ 83FB36B -const u8 gUnknown_83FB37F[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!"); // @ 83FB37F -const u8 gUnknown_83FB394[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!"); // @ 83FB394 -const u8 gUnknown_83FB3AF[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!"); // @ 83FB3AF -const u8 gUnknown_83FB3D3[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!"); // @ 83FB3D3 -const u8 gUnknown_83FB3EA[] = _("It doesn't affect\n{B_DEF_NAME_WITH_PREFIX}…"); // @ 83FB3EA -const u8 gUnknown_83FB400[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); // @ 83FB400 -const u8 gUnknown_83FB40D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); // @ 83FB40D -const u8 gUnknown_83FB41A[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); // @ 83FB41A -const u8 gUnknown_83FB433[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); // @ 83FB433 -const u8 gUnknown_83FB451[] = _("{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB451 -const u8 gUnknown_83FB484[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); // @ 83FB484 -const u8 gUnknown_83FB4BE[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB4BE -const u8 gUnknown_83FB4F7[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); // @ 83FB4F7 -const u8 gUnknown_83FB508[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); // @ 83FB508 -const u8 gUnknown_83FB525[] = _("Can't escape!\p"); // @ 83FB525 -const u8 gUnknown_83FB534[] = _("{B_ATK_NAME_WITH_PREFIX} can't escape!"); // @ 83FB534 -const u8 gUnknown_83FB545[] = _("Hit {B_BUFF1} time(s)!"); // @ 83FB545 -const u8 gUnknown_83FB555[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); // @ 83FB555 -const u8 gUnknown_83FB565[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); // @ 83FB565 -const u8 gUnknown_83FB57C[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!"); // @ 83FB57C -const u8 gUnknown_83FB592[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); // @ 83FB592 -const u8 gUnknown_83FB5A8[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!"); // @ 83FB5A8 -const u8 gUnknown_83FB5BC[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); // @ 83FB5BC -const u8 gUnknown_83FB5CD[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FB5CD -const u8 gUnknown_83FB5E2[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); // @ 83FB5E2 -const u8 gUnknown_83FB5F8[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); // @ 83FB5F8 -const u8 gUnknown_83FB610[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); // @ 83FB610 -const u8 gUnknown_83FB626[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); // @ 83FB626 -const u8 gUnknown_83FB641[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); // @ 83FB641 -const u8 gUnknown_83FB650[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FB650 -const u8 gUnknown_83FB663[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); // @ 83FB663 -const u8 gUnknown_83FB67B[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); // @ 83FB67B -const u8 gUnknown_83FB692[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); // @ 83FB692 -const u8 gUnknown_83FB6A7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); // @ 83FB6A7 -const u8 gUnknown_83FB6BF[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!"); // @ 83FB6BF -const u8 gUnknown_83FB6D3[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); // @ 83FB6D3 -const u8 gUnknown_83FB6E5[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); // @ 83FB6E5 -const u8 gUnknown_83FB6F7[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); // @ 83FB6F7 -const u8 gUnknown_83FB70F[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); // @ 83FB70F -const u8 gUnknown_83FB73A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); // @ 83FB73A -const u8 gUnknown_83FB76A[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can't move!"); // @ 83FB76A -const u8 gUnknown_83FB78A[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!"); // @ 83FB78A -const u8 gUnknown_83FB7A3[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!"); // @ 83FB7A3 -const u8 gUnknown_83FB7BF[] = _("{B_DEF_NAME_WITH_PREFIX}'s\ndream was eaten!"); // @ 83FB7BF -const u8 gUnknown_83FB7D5[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!"); // @ 83FB7D5 -const u8 gUnknown_83FB7EE[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go lower!"); // @ 83FB7EE -const u8 gUnknown_83FB806[] = _("Your team's {B_BUFF1}\nstopped working!"); // @ 83FB806 -const u8 gUnknown_83FB826[] = _("The foe's {B_BUFF1}\nstopped working!"); // @ 83FB826 -const u8 gUnknown_83FB844[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!"); // @ 83FB844 -const u8 gUnknown_83FB854[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!"); // @ 83FB854 -const u8 gUnknown_83FB871[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!"); // @ 83FB871 -const u8 gUnknown_83FB885[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!"); // @ 83FB885 -const u8 gUnknown_83FB89D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!"); // @ 83FB89D -const u8 gUnknown_83FB8AE[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); // @ 83FB8AE -const u8 gUnknown_83FB8C5[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!"); // @ 83FB8C5 -const u8 gUnknown_83FB8E0[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!"); // @ 83FB8E0 -const u8 gUnknown_83FB8F3[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); // @ 83FB8F3 -const u8 gUnknown_83FB914[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!"); // @ 83FB914 -const u8 gUnknown_83FB921[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!"); // @ 83FB921 -const u8 gUnknown_83FB935[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nHP is full!"); // @ 83FB935 -const u8 gUnknown_83FB946[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF!"); // @ 83FB946 -const u8 gUnknown_83FB95E[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF a little!"); // @ 83FB95E -const u8 gUnknown_83FB97F[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE!"); // @ 83FB97F -const u8 gUnknown_83FB997[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE a little!"); // @ 83FB997 -const u8 gUnknown_83FB9B8[] = _("{B_ATK_PREFIX2}'s party is covered\nby a veil!"); // @ 83FB9B8 -const u8 gUnknown_83FB9D9[] = _("{B_DEF_NAME_WITH_PREFIX}'s party is protected\nby SAFEGUARD!"); // @ 83FB9D9 -const u8 gUnknown_83FB9FF[] = _("{B_ATK_PREFIX3}'s party is no longer\nprotected by SAFEGUARD!"); // @ 83FB9FF -const u8 gUnknown_83FBA2F[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!"); // @ 83FBA2F -const u8 gUnknown_83FBA41[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!"); // @ 83FBA41 -const u8 gUnknown_83FBA5E[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!"); // @ 83FBA5E -const u8 gUnknown_83FBA79[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!"); // @ 83FBA79 -const u8 gUnknown_83FBA8E[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!"); // @ 83FBA8E -const u8 gUnknown_83FBAA3[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!"); // @ 83FBAA3 -const u8 gUnknown_83FBAB2[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!"); // @ 83FBAB2 -const u8 gUnknown_83FBAC3[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!"); // @ 83FBAC3 -const u8 gUnknown_83FBAD2[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!"); // @ 83FBAD2 -const u8 gUnknown_83FBAE5[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!"); // @ 83FBAE5 -const u8 gUnknown_83FBAF3[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}'s BIND!"); // @ 83FBAF3 -const u8 gUnknown_83FBB11[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!"); // @ 83FBB11 -const u8 gUnknown_83FBB2F[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!"); // @ 83FBB2F -const u8 gUnknown_83FBB4C[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!"); // @ 83FBB4C -const u8 gUnknown_83FBB62[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!"); // @ 83FBB62 -const u8 gUnknown_83FBB71[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!"); // @ 83FBB71 -const u8 gUnknown_83FBB83[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); // @ 83FBB83 -const u8 gUnknown_83FBB99[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); // @ 83FBB99 -const u8 BattleText_MistShroud[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); // @ 83FBBB4 -const u8 gUnknown_83FBBD0[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); // @ 83FBBD0 -const u8 BattleText_GetPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); // @ 83FBBE9 -const u8 gUnknown_83FBBFF[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); // @ 83FBBFF -const u8 gUnknown_83FBC16[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); // @ 83FBC16 -const u8 gUnknown_83FBC2B[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!"); // @ 83FBC2B -const u8 gUnknown_83FBC4C[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!"); // @ 83FBC4C -const u8 gUnknown_83FBC62[] = _("{B_ATK_PREFIX1}'s {B_BUFF1}\nwore off!"); // @ 83FBC62 -const u8 gUnknown_83FBC74[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!"); // @ 83FBC74 -const u8 gUnknown_83FBC83[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!"); // @ 83FBC83 -const u8 gUnknown_83FBC99[] = _("{B_ATK_NAME_WITH_PREFIX}'s health is\nsapped by LEECH SEED!"); // @ 83FBC99 -const u8 gUnknown_83FBCBE[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep."); // @ 83FBCBE -const u8 gUnknown_83FBCD1[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!"); // @ 83FBCD1 -const u8 gUnknown_83FBCDD[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR\nkept it awake!"); // @ 83FBCDD -const u8 gUnknown_83FBCFC[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!"); // @ 83FBCFC -const u8 gUnknown_83FBD16[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!"); // @ 83FBD16 -const u8 gUnknown_83FBD2B[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); // @ 83FBD2B -const u8 gUnknown_83FBD43[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); // @ 83FBD43 -const u8 gUnknown_83FBD53[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); // @ 83FBD53 -const u8 gUnknown_83FBD74[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); // @ 83FBD74 -const u8 gUnknown_83FBD86[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nSTOCKPILE any more!"); // @ 83FBD86 -const u8 gUnknown_83FBDA3[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); // @ 83FBDA3 -const u8 gUnknown_83FBDC4[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); // @ 83FBDC4 -const u8 gUnknown_83FBDE2[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); // @ 83FBDE2 -const u8 gUnknown_83FBE00[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!"); // @ 83FBE00 -const u8 gUnknown_83FBE16[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!"); // @ 83FBE16 -const u8 gUnknown_83FBE2B[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!"); // @ 83FBE2B -const u8 gUnknown_83FBE4E[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); // @ 83FBE4E -const u8 gUnknown_83FBE61[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!"); // @ 83FBE61 -const u8 gUnknown_83FBE73[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!"); // @ 83FBE73 -const u8 gUnknown_83FBE8B[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!"); // @ 83FBE8B -const u8 gUnknown_83FBEA1[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!"); // @ 83FBEA1 -const u8 gUnknown_83FBEBE[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p"); // @ 83FBEBE -const u8 gUnknown_83FBEE2[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nSUBSTITUTE faded!\p"); // @ 83FBEE2 -const u8 gUnknown_83FBEFA[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!"); // @ 83FBEFA -const u8 gUnknown_83FBF0C[] = _("{B_DEF_NAME_WITH_PREFIX}'s RAGE\nis building!"); // @ 83FBF0C -const u8 gUnknown_83FBF23[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas disabled!"); // @ 83FBF23 -const u8 gUnknown_83FBF39[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!"); // @ 83FBF39 -const u8 gUnknown_83FBF51[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!"); // @ 83FBF51 -const u8 gUnknown_83FBF63[] = _("{B_ATK_NAME_WITH_PREFIX}'s ENCORE\nended!"); // @ 83FBF63 -const u8 gUnknown_83FBF76[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FBF76 -const u8 gUnknown_83FBF89[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!"); // @ 83FBF89 -const u8 gUnknown_83FBF99[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!"); // @ 83FBF99 -const u8 gUnknown_83FBFBF[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!"); // @ 83FBFBF -const u8 gUnknown_83FBFD3[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} by {B_BUFF2}!"); // @ 83FBFD3 -const u8 gUnknown_83FBFEA[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); // @ 83FBFEA -const u8 gUnknown_83FBFFC[] = _("{B_DEF_NAME_WITH_PREFIX} can't\nescape now!"); // @ 83FBFFC -const u8 gUnknown_83FC011[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!"); // @ 83FC011 -const u8 gUnknown_83FC02B[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); // @ 83FC02B -const u8 gUnknown_83FC048[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC048 -const u8 gUnknown_83FC072[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); // @ 83FC072 -const u8 gUnknown_83FC090[] = _("SPIKES were scattered all around\nthe opponent's side!"); // @ 83FC090 -const u8 gUnknown_83FC0C6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); // @ 83FC0C6 -const u8 gUnknown_83FC0DC[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC0DC -const u8 gUnknown_83FC0EE[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); // @ 83FC0EE -const u8 gUnknown_83FC10C[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); // @ 83FC10C -const u8 gUnknown_83FC11E[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!"); // @ 83FC11E -const u8 gUnknown_83FC132[] = _("MAGNITUDE {B_BUFF1}!"); // @ 83FC132 -const u8 gUnknown_83FC140[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!"); // @ 83FC140 -const u8 gUnknown_83FC168[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s stat changes!"); // @ 83FC168 -const u8 gUnknown_83FC185[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); // @ 83FC185 -const u8 gUnknown_83FC19D[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); // @ 83FC19D -const u8 gUnknown_83FC1B1[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); // @ 83FC1B1 -const u8 gUnknown_83FC1C6[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); // @ 83FC1C6 -const u8 gUnknown_83FC1DB[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); // @ 83FC1DB -const u8 gUnknown_83FC1F1[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); // @ 83FC1F1 -const u8 gUnknown_83FC208[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!"); // @ 83FC208 -const u8 gUnknown_83FC224[] = _("{B_BUFF1}'s attack!"); // @ 83FC224 -const u8 gUnknown_83FC231[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!"); // @ 83FC231 -const u8 gUnknown_83FC254[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); // @ 83FC254 -const u8 gUnknown_83FC26D[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); // @ 83FC26D -const u8 gUnknown_83FC28A[] = _("{B_ATK_NAME_WITH_PREFIX}'s status\nreturned to normal!"); // @ 83FC28A -const u8 gUnknown_83FC2AA[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); // @ 83FC2AA -const u8 gUnknown_83FC2C7[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); // @ 83FC2C7 -const u8 gUnknown_83FC2E3[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!"); // @ 83FC2E3 -const u8 gUnknown_83FC2FA[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); // @ 83FC2FA -const u8 gUnknown_83FC312[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!"); // @ 83FC312 -const u8 gUnknown_83FC337[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}."); // @ 83FC337 -const u8 gUnknown_83FC347[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); // @ 83FC347 -const u8 gUnknown_83FC357[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); // @ 83FC357 -const u8 gUnknown_83FC377[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!"); // @ 83FC377 -const u8 gUnknown_83FC38A[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!"); // @ 83FC38A -const u8 gUnknown_83FC39A[] = _("{B_BUFF1}'s WISH\ncame true!"); // @ 83FC39A -const u8 gUnknown_83FC3AF[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!"); // @ 83FC3AF -const u8 gUnknown_83FC3C5[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!"); // @ 83FC3C5 -const u8 gUnknown_83FC3EB[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!"); // @ 83FC3EB -const u8 gUnknown_83FC40E[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!"); // @ 83FC40E -const u8 gUnknown_83FC421[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); // @ 83FC421 -const u8 gUnknown_83FC439[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!"); // @ 83FC439 -const u8 gUnknown_83FC461[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's moveシsス!"); // @ 83FC461 -const u8 gUnknown_83FC483[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!"); // @ 83FC483 -const u8 gUnknown_83FC4AB[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\nall its PP due to the GRUDGE!"); // @ 83FC4AB -const u8 gUnknown_83FC4D6[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); // @ 83FC4D6 -const u8 gUnknown_83FC4F0[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); // @ 83FC4F0 -const u8 gUnknown_83FC518[] = _("{B_ATK_NAME_WITH_PREFIX} waits for its foe\nto make a move!"); // @ 83FC518 -const u8 gUnknown_83FC53D[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!"); // @ 83FC53D -const u8 gUnknown_83FC554[] = _("Electricity's power was\nweakened!"); // @ 83FC554 -const u8 gUnknown_83FC576[] = _("Fire's power was\nweakened!"); // @ 83FC576 -const u8 gUnknown_83FC591[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!"); // @ 83FC591 -const u8 gUnknown_83FC5A2[] = _("A soothing aroma wafted\nthrough the area!"); // @ 83FC5A2 -const u8 gUnknown_83FC5CC[] = _("Items can't be used now.{PAUSE 64}"); // @ 83FC5CC -const u8 gUnknown_83FC5E8[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); // @ 83FC5E8 -const u8 gUnknown_83FC5F6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to hustle!"); // @ 83FC5F6 -const u8 gUnknown_83FC60C[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn't move!"); // @ 83FC60C -const u8 gUnknown_83FC631[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); // @ 83FC631 -const u8 gUnknown_83FC646[] = _("The wall shattered!"); // @ 83FC646 -const u8 gUnknown_83FC65A[] = _("But it had no effect!"); // @ 83FC65A -const u8 gUnknown_83FC670[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); // @ 83FC670 -const u8 gUnknown_83FC687[] = _("{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nis disabled!\p"); // @ 83FC687 -const u8 gUnknown_83FC69D[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\nmove in a row due to the TORMENT!\p"); // @ 83FC69D -const u8 gUnknown_83FC6D6[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} after the TAUNT!\p"); // @ 83FC6D6 -const u8 gUnknown_83FC6F8[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the\nsealed {B_CURRENT_MOVE}!\p"); // @ 83FC6F8 -const u8 gUnknown_83FC715[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); // @ 83FC715 -const u8 gUnknown_83FC72B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); // @ 83FC72B -const u8 gUnknown_83FC745[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); // @ 83FC745 -const u8 gUnknown_83FC75D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!"); // @ 83FC75D -const u8 gUnknown_83FC780[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!"); // @ 83FC780 -const u8 gUnknown_83FC79D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!"); // @ 83FC79D -const u8 gUnknown_83FC7B6[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!"); // @ 83FC7B6 -const u8 gUnknown_83FC7D3[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents paralysis!"); // @ 83FC7D3 -const u8 gUnknown_83FC7EF[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents romance!"); // @ 83FC7EF -const u8 gUnknown_83FC809[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents poisoning!"); // @ 83FC809 -const u8 gUnknown_83FC825[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents confusion!"); // @ 83FC825 -const u8 gUnknown_83FC841[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its FIRE power!"); // @ 83FC841 -const u8 gUnknown_83FC860[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); // @ 83FC860 -const u8 gUnknown_83FC87B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!"); // @ 83FC87B -const u8 gUnknown_83FC895[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); // @ 83FC895 -const u8 gUnknown_83FC8B1[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); // @ 83FC8B1 -const u8 gUnknown_83FC8C2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}'s {B_BUFF2}!"); // @ 83FC8C2 -const u8 gUnknown_83FC8D5[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents burns!"); // @ 83FC8D5 -const u8 gUnknown_83FC8ED[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); // @ 83FC8ED -const u8 gUnknown_83FC900[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); // @ 83FC900 -const u8 gUnknown_83FC913[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nrestored its HP a little!"); // @ 83FC913 -const u8 gUnknown_83FC935[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); // @ 83FC935 -const u8 gUnknown_83FC955[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nintensified the sun's rays!"); // @ 83FC955 -const u8 gUnknown_83FC979[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); // @ 83FC979 -const u8 gUnknown_83FC993[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); // @ 83FC993 -const u8 gUnknown_83FC9AA[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); // @ 83FC9AA -const u8 gUnknown_83FC9C7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); // @ 83FC9C7 -const u8 gUnknown_83FC9E5[] = _("It sucked up the\nLIQUID OOZE!"); // @ 83FC9E5 -const u8 gUnknown_83FCA03[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); // @ 83FCA03 -const u8 gUnknown_83FCA13[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ntook the attack!"); // @ 83FCA13 -const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}'s {B_LAST_ABILITY}\nprevents switching!\p"); // @ 83FCA2C -const u8 gUnknown_83FCA49[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s\l{B_BUFF1} from working!"); // @ 83FCA49 -const u8 gUnknown_83FCA71[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); // @ 83FCA71 -const u8 gUnknown_83FCA8E[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents flinching!"); // @ 83FCA8E -const u8 gUnknown_83FCAAA[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); // @ 83FCAAA -const u8 gUnknown_83FCAD1[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); // @ 83FCAD1 -const u8 gUnknown_83FCAEF[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); // @ 83FCAEF -const u8 gUnknown_83FCB0C[] = _("{B_ATK_NAME_WITH_PREFIX} is too scared to move!"); // @ 83FCB0C -const u8 gUnknown_83FCB26[] = _("GHOST: Get out…… Get out……"); // @ 83FCB26 -const u8 gUnknown_83FCB41[] = _("sharply "); // @ 83FCB41 -const u8 BattleText_Rose[] = _("rose!"); // @ 83FCB4A -const u8 gUnknown_83FCB50[] = _("harshly "); // @ 83FCB50 -const u8 gUnknown_83FCB59[] = _("fell!"); // @ 83FCB59 -const u8 gUnknown_83FCB5F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB5F -const u8 BattleText_UnknownString3[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB6A -const u8 gUnknown_83FCB75[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); // @ 83FCB75 -const u8 gUnknown_83FCB8F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB8F -const u8 gUnknown_83FCB9A[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); // @ 83FCB9A -const u8 gUnknown_83FCBA5[] = _("{B_ATK_NAME_WITH_PREFIX}'s stats won't\ngo any higher!"); // @ 83FCBA5 -const u8 gUnknown_83FCBC5[] = _("{B_DEF_NAME_WITH_PREFIX}'s stats won't\ngo any lower!"); // @ 83FCBC5 -const u8 gUnknown_83FCBE4[] = _("A critical hit!"); // @ 83FCBE4 -const u8 gUnknown_83FCBF4[] = _("It's a one-hit KO!"); // @ 83FCBF4 -const u8 gUnknown_83FCC07[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p"); // @ 83FCC07 -const u8 gUnknown_83FCC33[] = _("And…\p"); // @ 83FCC33 -const u8 gUnknown_83FCC39[] = _("HM moves can't be\nforgotten now.\p"); // @ 83FCC39 -const u8 gUnknown_83FCC5B[] = _("It's not very effective…"); // @ 83FCC5B -const u8 gUnknown_83FCC74[] = _("It's super effective!"); // @ 83FCC74 -static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); // @ 83FCC8A -const u8 gUnknown_83FCCA0[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); // @ 83FCCA0 -const u8 gUnknown_83FCCBB[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); // @ 83FCCBB -const u8 gUnknown_83FCCD2[] = _("{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!"); // @ 83FCCD2 -static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCCE4 -static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCCF8 -static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD0F -static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD27 -static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); // @ 83FCD41 -static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); // @ 83FCD66 -const u8 gUnknown_83FCD92[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!"); // @ 83FCD92 -static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); // @ 83FCD9F -const u8 gUnknown_83FCDB3[] = _("No! There's no running\nfrom a TRAINER battle!\p"); // @ 83FCDB3 -const u8 gUnknown_83FCDE2[] = _("Can't escape!\p"); // @ 83FCDE2 -const u8 gUnknown_83FCDF1[] = _(""); // @ 83FCDF1 -const u8 gUnknown_83FCDF2[] = _("But nothing happened!"); // @ 83FCDF2 -const u8 gUnknown_83FCE08[] = _("But it failed!"); // @ 83FCE08 -const u8 gUnknown_83FCE17[] = _("It hurt itself in its\nconfusion!"); // @ 83FCE17 -const u8 gUnknown_83FCE38[] = _("The MIRROR MOVE failed!"); // @ 83FCE38 -const u8 gUnknown_83FCE50[] = _("It started to rain!"); // @ 83FCE50 -const u8 gUnknown_83FCE64[] = _("A downpour started!"); // @ 83FCE64 -const u8 gUnknown_83FCE78[] = _("Rain continues to fall."); // @ 83FCE78 -const u8 gUnknown_83FCE90[] = _("The downpour continues."); // @ 83FCE90 -const u8 gUnknown_83FCEA8[] = _("The rain stopped."); // @ 83FCEA8 -const u8 gUnknown_83FCEBA[] = _("A sandstorm brewed!"); // @ 83FCEBA -const u8 gUnknown_83FCECE[] = _("The sandstorm rages."); // @ 83FCECE -const u8 gUnknown_83FCEE3[] = _("The sandstorm subsided."); // @ 83FCEE3 -const u8 gUnknown_83FCEFB[] = _("The sunlight got bright!"); // @ 83FCEFB -const u8 gUnknown_83FCF14[] = _("The sunlight is strong."); // @ 83FCF14 -const u8 gUnknown_83FCF2C[] = _("The sunlight faded."); // @ 83FCF2C -const u8 gUnknown_83FCF40[] = _("It started to hail!"); // @ 83FCF40 -const u8 gUnknown_83FCF54[] = _("Hail continues to fall."); // @ 83FCF54 -const u8 gUnknown_83FCF6C[] = _("The hail stopped."); // @ 83FCF6C -const u8 gUnknown_83FCF7E[] = _("But it failed to SPIT UP\na thing!"); // @ 83FCF7E -const u8 gUnknown_83FCFA0[] = _("But it failed to SWALLOW\na thing!"); // @ 83FCFA0 -const u8 gUnknown_83FCFC2[] = _("The wind turned into a\nHEAT WAVE!"); // @ 83FCFC2 -const u8 gUnknown_83FCFE4[] = _("All stat changes were\neliminated!"); // @ 83FCFE4 -const u8 gUnknown_83FD006[] = _("Coins scattered everywhere!"); // @ 83FD006 -const u8 gUnknown_83FD022[] = _("It was too weak to make\na SUBSTITUTE!"); // @ 83FD022 -const u8 gUnknown_83FD048[] = _("The battlers shared\ntheir pain!"); // @ 83FD048 -const u8 gUnknown_83FD068[] = _("A bell chimed!"); // @ 83FD068 -const u8 gUnknown_83FD077[] = _("All affected POKéMON will\nfaint in three turns!"); // @ 83FD077 -const u8 gUnknown_83FD0A7[] = _("There's no PP left for\nthis move!\p"); // @ 83FD0A7 -const u8 gUnknown_83FD0CA[] = _("But there was no PP left\nfor the move!"); // @ 83FD0CA -const u8 gUnknown_83FD0F1[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!"); // @ 83FD0F1 -const u8 gUnknown_83FD111[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!"); // @ 83FD111 -const u8 gUnknown_83FD124[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!"); // @ 83FD124 -const u8 gUnknown_83FD135[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!"); // @ 83FD135 -const u8 gUnknown_83FD14B[] = _("{B_ATK_NAME_WITH_PREFIX} won't\nobey!"); // @ 83FD14B -const u8 gUnknown_83FD15A[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!"); // @ 83FD15A -const u8 gUnknown_83FD16A[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!"); // @ 83FD16A -const u8 gUnknown_83FD186[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); // @ 83FD186 -const u8 gUnknown_83FD1B8[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); // @ 83FD1B8 -static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); // @ 83FD1C7 -const u8 gUnknown_83FD1DF[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1DF -const u8 gUnknown_83FD1FA[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); // @ 83FD1FA -const u8 gUnknown_83FD218[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); // @ 83FD218 -const u8 gUnknown_83FD232[] = _("{B_OPPONENT_MON1_NAME} is angry!"); // @ 83FD232 -const u8 gUnknown_83FD23F[] = _("{B_OPPONENT_MON1_NAME} is eating!"); // @ 83FD23F -const u8 gUnknown_83FD24D[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); // @ 83FD24D -static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD284 -static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); // @ 83FD297 -static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); // @ 83FD2AA -static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); // @ 83FD2BF -const u8 gUnknown_83FD2D9[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); // @ 83FD2D9 -const u8 gUnknown_83FD30D[] = _("The GHOST appeared!\p"); // @ 83FD30D -const u8 gUnknown_83FD322[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); // @ 83FD322 -const u8 gUnknown_83FD34D[] = _("The GHOST was MAROWAK!\p\n"); // @ 83FD34D -static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); // @ 83FD366 -static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); // @ 83FD383 -static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); // @ 83FD397 -static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); // @ 83FD3B1 -static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); // @ 83FD3C7 -static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); // @ 83FD3E4 -static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); // @ 83FD3F7 -static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); // @ 83FD407 -static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!"); // @ 83FD41E -static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!"); // @ 83FD43E -static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!"); // @ 83FD44E -static const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); // @ 83FD45E -static const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); // @ 83FD466 -static const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!"); // @ 83FD475 -static const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); // @ 83FD47D -static const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); // @ 83FD488 -static const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe's weak!\nGet 'em, {B_BUFF1}!"); // @ 83FD497 -static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); // @ 83FD4B5 -static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); // @ 83FD4CD -static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); // @ 83FD4EB -static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); // @ 83FD4FA -const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); // @ 83FD50D -static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); // @ 83FD522 -static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD535 -static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); // @ 83FD545 -static const u8 sText_WildPkmnPrefix[] = _("Wild "); // @ 83FD555 -static const u8 sText_FoePkmnPrefix[] = _("Foe "); // @ 83FD55B -static const u8 sText_FoePkmnPrefix2[] = _("Foe"); // @ 83FD560 -static const u8 sText_AllyPkmnPrefix[] = _("Ally"); // @ 83FD564 -static const u8 sText_FoePkmnPrefix3[] = _("Foe"); // @ 83FD569 -static const u8 sText_AllyPkmnPrefix2[] = _("Ally"); // @ 83FD56D -static const u8 sText_FoePkmnPrefix4[] = _("Foe"); // @ 83FD572 -static const u8 sText_AllyPkmnPrefix3[] = _("Ally"); // @ 83FD576 -static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); // @ 83FD57B -static const u8 sText_ExclamationMark[] = _("!"); // @ 83FD586 -static const u8 sText_ExclamationMark2[] = _("!"); // @ 83FD588 -static const u8 sText_ExclamationMark3[] = _("!"); // @ 83FD58A -static const u8 sText_ExclamationMark4[] = _("!"); // @ 83FD58C -static const u8 sText_ExclamationMark5[] = _("!"); // @ 83FD58E - -static const u8 sText_HP2[] = _("HP"); // @ 83FD590 -static const u8 sText_Attack2[] = _("ATTACK"); // @ 83FD593 -static const u8 sText_Defense2[] = _("DEFENSE"); // @ 83FD59A -static const u8 sText_Speed[] = _("SPEED"); // @ 83FD5A2 -static const u8 sText_SpAtk2[] = _("SP. ATK"); // @ 83FD5A8 -static const u8 sText_SpDef2[] = _("SP. DEF"); // @ 83FD5B0 -static const u8 sText_Accuracy[] = _("accuracy"); // @ 83FD5B8 -static const u8 sText_Evasiveness[] = _("evasiveness"); // @ 83FD5C1 +const u8 gUnknown_83FB218[] = _(""); +const u8 gUnknown_83FB219[] = _("{B_TRAINER1_LOSE_TEXT}"); +const u8 gUnknown_83FB21C[] = _("{B_TRAINER2_CLASS}"); +const u8 gUnknown_83FB21F[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); +const u8 gUnknown_83FB232[] = _("{B_TRAINER1_WIN_TEXT}"); +const u8 gUnknown_83FB235[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); +const u8 gUnknown_83FB248[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); +const u8 gUnknown_83FB262[] = _("{B_TRAINER2_NAME}"); +const u8 gUnknown_83FB265[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"); +const u8 gUnknown_83FB282[] = _(""); +const u8 gUnknown_83FB283[] = _(" a boosted"); +const u8 gUnknown_83FB28E[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{WAIT_SE}\p"); +const u8 gUnknown_83FB2A4[] = _("{B_BUFF1} learned\n{B_BUFF2}!{WAIT_SE}\p"); +const u8 gUnknown_83FB2B6[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p"); +const u8 gUnknown_83FB2D1[] = _("But, {B_BUFF1} can't learn\nmore than four moves.\p"); +const u8 gUnknown_83FB2FC[] = _("Delete a move to make\nroom for {B_BUFF2}?"); +const u8 gUnknown_83FB31F[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p"); +const u8 gUnknown_83FB32E[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?"); +const u8 gUnknown_83FB343[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p"); +const u8 gUnknown_83FB359[] = _("Use next POKéMON?"); +const u8 gUnknown_83FB36B[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nattack missed!"); +const u8 gUnknown_83FB37F[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!"); +const u8 gUnknown_83FB394[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!"); +const u8 gUnknown_83FB3AF[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!"); +const u8 gUnknown_83FB3D3[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!"); +const u8 gUnknown_83FB3EA[] = _("It doesn't affect\n{B_DEF_NAME_WITH_PREFIX}…"); +const u8 gUnknown_83FB400[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gUnknown_83FB40D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); +const u8 gUnknown_83FB41A[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); +const u8 gUnknown_83FB433[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); +const u8 gUnknown_83FB451[] = _("{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +const u8 gUnknown_83FB484[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); +const u8 gUnknown_83FB4BE[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +const u8 gUnknown_83FB4F7[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +const u8 gUnknown_83FB508[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); +const u8 gUnknown_83FB525[] = _("Can't escape!\p"); +const u8 gUnknown_83FB534[] = _("{B_ATK_NAME_WITH_PREFIX} can't escape!"); +const u8 gUnknown_83FB545[] = _("Hit {B_BUFF1} time(s)!"); +const u8 gUnknown_83FB555[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!"); +const u8 gUnknown_83FB565[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!"); +const u8 gUnknown_83FB57C[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!"); +const u8 gUnknown_83FB592[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); +const u8 gUnknown_83FB5A8[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!"); +const u8 gUnknown_83FB5BC[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); +const u8 gUnknown_83FB5CD[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FB5E2[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); +const u8 gUnknown_83FB5F8[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); +const u8 gUnknown_83FB610[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); +const u8 gUnknown_83FB626[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); +const u8 gUnknown_83FB641[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); +const u8 gUnknown_83FB650[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FB663[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); +const u8 gUnknown_83FB67B[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); +const u8 gUnknown_83FB692[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); +const u8 gUnknown_83FB6A7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); +const u8 gUnknown_83FB6BF[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!"); +const u8 gUnknown_83FB6D3[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); +const u8 gUnknown_83FB6E5[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); +const u8 gUnknown_83FB6F7[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); +const u8 gUnknown_83FB70F[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); +const u8 gUnknown_83FB73A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); +const u8 gUnknown_83FB76A[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can't move!"); +const u8 gUnknown_83FB78A[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!"); +const u8 gUnknown_83FB7A3[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!"); +const u8 gUnknown_83FB7BF[] = _("{B_DEF_NAME_WITH_PREFIX}'s\ndream was eaten!"); +const u8 gUnknown_83FB7D5[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!"); +const u8 gUnknown_83FB7EE[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go lower!"); +const u8 gUnknown_83FB806[] = _("Your team's {B_BUFF1}\nstopped working!"); +const u8 gUnknown_83FB826[] = _("The foe's {B_BUFF1}\nstopped working!"); +const u8 gUnknown_83FB844[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!"); +const u8 gUnknown_83FB854[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!"); +const u8 gUnknown_83FB871[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!"); +const u8 gUnknown_83FB885[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!"); +const u8 gUnknown_83FB89D[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!"); +const u8 gUnknown_83FB8AE[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FB8C5[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!"); +const u8 gUnknown_83FB8E0[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!"); +const u8 gUnknown_83FB8F3[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); +const u8 gUnknown_83FB914[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!"); +const u8 gUnknown_83FB921[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!"); +const u8 gUnknown_83FB935[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nHP is full!"); +const u8 gUnknown_83FB946[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF!"); +const u8 gUnknown_83FB95E[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised SP. DEF a little!"); +const u8 gUnknown_83FB97F[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE!"); +const u8 gUnknown_83FB997[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE a little!"); +const u8 gUnknown_83FB9B8[] = _("{B_ATK_PREFIX2}'s party is covered\nby a veil!"); +const u8 gUnknown_83FB9D9[] = _("{B_DEF_NAME_WITH_PREFIX}'s party is protected\nby SAFEGUARD!"); +const u8 gUnknown_83FB9FF[] = _("{B_ATK_PREFIX3}'s party is no longer\nprotected by SAFEGUARD!"); +const u8 gUnknown_83FBA2F[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!"); +const u8 gUnknown_83FBA41[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!"); +const u8 gUnknown_83FBA5E[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!"); +const u8 gUnknown_83FBA79[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!"); +const u8 gUnknown_83FBA8E[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!"); +const u8 gUnknown_83FBAA3[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!"); +const u8 gUnknown_83FBAB2[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!"); +const u8 gUnknown_83FBAC3[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!"); +const u8 gUnknown_83FBAD2[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!"); +const u8 gUnknown_83FBAE5[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!"); +const u8 gUnknown_83FBAF3[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}'s BIND!"); +const u8 gUnknown_83FBB11[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!"); +const u8 gUnknown_83FBB2F[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!"); +const u8 gUnknown_83FBB4C[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FBB62[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FBB71[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!"); +const u8 gUnknown_83FBB83[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); +const u8 gUnknown_83FBB99[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); +const u8 gBattleText_MistShroud[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); +const u8 gUnknown_83FBBD0[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); +const u8 gBattleText_GetPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); +const u8 gUnknown_83FBBFF[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); +const u8 gUnknown_83FBC16[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); +const u8 gUnknown_83FBC2B[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!"); +const u8 gUnknown_83FBC4C[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!"); +const u8 gUnknown_83FBC62[] = _("{B_ATK_PREFIX1}'s {B_BUFF1}\nwore off!"); +const u8 gUnknown_83FBC74[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!"); +const u8 gUnknown_83FBC83[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!"); +const u8 gUnknown_83FBC99[] = _("{B_ATK_NAME_WITH_PREFIX}'s health is\nsapped by LEECH SEED!"); +const u8 gUnknown_83FBCBE[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep."); +const u8 gUnknown_83FBCD1[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!"); +const u8 gUnknown_83FBCDD[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR\nkept it awake!"); +const u8 gUnknown_83FBCFC[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!"); +const u8 gUnknown_83FBD16[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!"); +const u8 gUnknown_83FBD2B[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); +const u8 gUnknown_83FBD43[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); +const u8 gUnknown_83FBD53[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); +const u8 gUnknown_83FBD74[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); +const u8 gUnknown_83FBD86[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nSTOCKPILE any more!"); +const u8 gUnknown_83FBDA3[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); +const u8 gUnknown_83FBDC4[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); +const u8 gUnknown_83FBDE2[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); +const u8 gUnknown_83FBE00[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!"); +const u8 gUnknown_83FBE16[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!"); +const u8 gUnknown_83FBE2B[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!"); +const u8 gUnknown_83FBE4E[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); +const u8 gUnknown_83FBE61[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!"); +const u8 gUnknown_83FBE73[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!"); +const u8 gUnknown_83FBE8B[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!"); +const u8 gUnknown_83FBEA1[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!"); +const u8 gUnknown_83FBEBE[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p"); +const u8 gUnknown_83FBEE2[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nSUBSTITUTE faded!\p"); +const u8 gUnknown_83FBEFA[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!"); +const u8 gUnknown_83FBF0C[] = _("{B_DEF_NAME_WITH_PREFIX}'s RAGE\nis building!"); +const u8 gUnknown_83FBF23[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas disabled!"); +const u8 gUnknown_83FBF39[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!"); +const u8 gUnknown_83FBF51[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!"); +const u8 gUnknown_83FBF63[] = _("{B_ATK_NAME_WITH_PREFIX}'s ENCORE\nended!"); +const u8 gUnknown_83FBF76[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FBF89[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!"); +const u8 gUnknown_83FBF99[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!"); +const u8 gUnknown_83FBFBF[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!"); +const u8 gUnknown_83FBFD3[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} by {B_BUFF2}!"); +const u8 gUnknown_83FBFEA[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); +const u8 gUnknown_83FBFFC[] = _("{B_DEF_NAME_WITH_PREFIX} can't\nescape now!"); +const u8 gUnknown_83FC011[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!"); +const u8 gUnknown_83FC02B[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); +const u8 gUnknown_83FC048[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FC072[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); +const u8 gUnknown_83FC090[] = _("SPIKES were scattered all around\nthe opponent's side!"); +const u8 gUnknown_83FC0C6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); +const u8 gUnknown_83FC0DC[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FC0EE[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); +const u8 gUnknown_83FC10C[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); +const u8 gUnknown_83FC11E[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!"); +const u8 gUnknown_83FC132[] = _("MAGNITUDE {B_BUFF1}!"); +const u8 gUnknown_83FC140[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!"); +const u8 gUnknown_83FC168[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s stat changes!"); +const u8 gUnknown_83FC185[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); +const u8 gUnknown_83FC19D[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); +const u8 gUnknown_83FC1B1[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); +const u8 gUnknown_83FC1C6[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); +const u8 gUnknown_83FC1DB[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); +const u8 gUnknown_83FC1F1[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); +const u8 gUnknown_83FC208[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!"); +const u8 gUnknown_83FC224[] = _("{B_BUFF1}'s attack!"); +const u8 gUnknown_83FC231[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!"); +const u8 gUnknown_83FC254[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); +const u8 gUnknown_83FC26D[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); +const u8 gUnknown_83FC28A[] = _("{B_ATK_NAME_WITH_PREFIX}'s status\nreturned to normal!"); +const u8 gUnknown_83FC2AA[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); +const u8 gUnknown_83FC2C7[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); +const u8 gUnknown_83FC2E3[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!"); +const u8 gUnknown_83FC2FA[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FC312[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!"); +const u8 gUnknown_83FC337[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}."); +const u8 gUnknown_83FC347[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); +const u8 gUnknown_83FC357[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}."); +const u8 gUnknown_83FC377[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!"); +const u8 gUnknown_83FC38A[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!"); +const u8 gUnknown_83FC39A[] = _("{B_BUFF1}'s WISH\ncame true!"); +const u8 gUnknown_83FC3AF[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!"); +const u8 gUnknown_83FC3C5[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!"); +const u8 gUnknown_83FC3EB[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!"); +const u8 gUnknown_83FC40E[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!"); +const u8 gUnknown_83FC421[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); +const u8 gUnknown_83FC439[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!"); +const u8 gUnknown_83FC461[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's moveシsス!"); +const u8 gUnknown_83FC483[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!"); +const u8 gUnknown_83FC4AB[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\nall its PP due to the GRUDGE!"); +const u8 gUnknown_83FC4D6[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); +const u8 gUnknown_83FC4F0[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); +const u8 gUnknown_83FC518[] = _("{B_ATK_NAME_WITH_PREFIX} waits for its foe\nto make a move!"); +const u8 gUnknown_83FC53D[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!"); +const u8 gUnknown_83FC554[] = _("Electricity's power was\nweakened!"); +const u8 gUnknown_83FC576[] = _("Fire's power was\nweakened!"); +const u8 gUnknown_83FC591[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!"); +const u8 gUnknown_83FC5A2[] = _("A soothing aroma wafted\nthrough the area!"); +const u8 gUnknown_83FC5CC[] = _("Items can't be used now.{PAUSE 64}"); +const u8 gUnknown_83FC5E8[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); +const u8 gUnknown_83FC5F6[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to hustle!"); +const u8 gUnknown_83FC60C[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn't move!"); +const u8 gUnknown_83FC631[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); +const u8 gUnknown_83FC646[] = _("The wall shattered!"); +const u8 gUnknown_83FC65A[] = _("But it had no effect!"); +const u8 gUnknown_83FC670[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); +const u8 gUnknown_83FC687[] = _("{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nis disabled!\p"); +const u8 gUnknown_83FC69D[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\nmove in a row due to the TORMENT!\p"); +const u8 gUnknown_83FC6D6[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} after the TAUNT!\p"); +const u8 gUnknown_83FC6F8[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the\nsealed {B_CURRENT_MOVE}!\p"); +const u8 gUnknown_83FC715[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); +const u8 gUnknown_83FC72B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); +const u8 gUnknown_83FC745[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); +const u8 gUnknown_83FC75D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!"); +const u8 gUnknown_83FC780[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!"); +const u8 gUnknown_83FC79D[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!"); +const u8 gUnknown_83FC7B6[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!"); +const u8 gUnknown_83FC7D3[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents paralysis!"); +const u8 gUnknown_83FC7EF[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents romance!"); +const u8 gUnknown_83FC809[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents poisoning!"); +const u8 gUnknown_83FC825[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents confusion!"); +const u8 gUnknown_83FC841[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its FIRE power!"); +const u8 gUnknown_83FC860[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); +const u8 gUnknown_83FC87B[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!"); +const u8 gUnknown_83FC895[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); +const u8 gUnknown_83FC8B1[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FC8C2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}'s {B_BUFF2}!"); +const u8 gUnknown_83FC8D5[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents burns!"); +const u8 gUnknown_83FC8ED[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); +const u8 gUnknown_83FC900[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!"); +const u8 gUnknown_83FC913[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nrestored its HP a little!"); +const u8 gUnknown_83FC935[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!"); +const u8 gUnknown_83FC955[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nintensified the sun's rays!"); +const u8 gUnknown_83FC979[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!"); +const u8 gUnknown_83FC993[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FC9AA[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); +const u8 gUnknown_83FC9C7[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gUnknown_83FC9E5[] = _("It sucked up the\nLIQUID OOZE!"); +const u8 gUnknown_83FCA03[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); +const u8 gUnknown_83FCA13[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ntook the attack!"); +const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}'s {B_LAST_ABILITY}\nprevents switching!\p"); +const u8 gUnknown_83FCA49[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s\l{B_BUFF1} from working!"); +const u8 gUnknown_83FCA71[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); +const u8 gUnknown_83FCA8E[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents flinching!"); +const u8 gUnknown_83FCAAA[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); +const u8 gUnknown_83FCAD1[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); +const u8 gUnknown_83FCAEF[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); +const u8 gUnknown_83FCB0C[] = _("{B_ATK_NAME_WITH_PREFIX} is too scared to move!"); +const u8 gUnknown_83FCB26[] = _("GHOST: Get out…… Get out……"); +const u8 gUnknown_83FCB41[] = _("sharply "); +const u8 gBattleText_Rose[] = _("rose!"); +const u8 gUnknown_83FCB50[] = _("harshly "); +const u8 gUnknown_83FCB59[] = _("fell!"); +const u8 gUnknown_83FCB5F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); +const u8 gBattleText_UnknownString3[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); +const u8 gUnknown_83FCB75[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}"); +const u8 gUnknown_83FCB8F[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); +const u8 gUnknown_83FCB9A[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}"); +const u8 gUnknown_83FCBA5[] = _("{B_ATK_NAME_WITH_PREFIX}'s stats won't\ngo any higher!"); +const u8 gUnknown_83FCBC5[] = _("{B_DEF_NAME_WITH_PREFIX}'s stats won't\ngo any lower!"); +const u8 gUnknown_83FCBE4[] = _("A critical hit!"); +const u8 gUnknown_83FCBF4[] = _("It's a one-hit KO!"); +const u8 gUnknown_83FCC07[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p"); +const u8 gUnknown_83FCC33[] = _("And…\p"); +const u8 gUnknown_83FCC39[] = _("HM moves can't be\nforgotten now.\p"); +const u8 gUnknown_83FCC5B[] = _("It's not very effective…"); +const u8 gUnknown_83FCC74[] = _("It's super effective!"); +static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); +const u8 gUnknown_83FCCA0[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); +const u8 gUnknown_83FCCBB[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); +const u8 gUnknown_83FCCD2[] = _("{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!"); +static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); +static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); +static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); +static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); +static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); +static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); +const u8 gUnknown_83FCD92[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!"); +static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); +const u8 gUnknown_83FCDB3[] = _("No! There's no running\nfrom a TRAINER battle!\p"); +const u8 gUnknown_83FCDE2[] = _("Can't escape!\p"); +const u8 gUnknown_83FCDF1[] = _(""); +const u8 gUnknown_83FCDF2[] = _("But nothing happened!"); +const u8 gUnknown_83FCE08[] = _("But it failed!"); +const u8 gUnknown_83FCE17[] = _("It hurt itself in its\nconfusion!"); +const u8 gUnknown_83FCE38[] = _("The MIRROR MOVE failed!"); +const u8 gUnknown_83FCE50[] = _("It started to rain!"); +const u8 gUnknown_83FCE64[] = _("A downpour started!"); +const u8 gUnknown_83FCE78[] = _("Rain continues to fall."); +const u8 gUnknown_83FCE90[] = _("The downpour continues."); +const u8 gUnknown_83FCEA8[] = _("The rain stopped."); +const u8 gUnknown_83FCEBA[] = _("A sandstorm brewed!"); +const u8 gUnknown_83FCECE[] = _("The sandstorm rages."); +const u8 gUnknown_83FCEE3[] = _("The sandstorm subsided."); +const u8 gUnknown_83FCEFB[] = _("The sunlight got bright!"); +const u8 gUnknown_83FCF14[] = _("The sunlight is strong."); +const u8 gUnknown_83FCF2C[] = _("The sunlight faded."); +const u8 gUnknown_83FCF40[] = _("It started to hail!"); +const u8 gUnknown_83FCF54[] = _("Hail continues to fall."); +const u8 gUnknown_83FCF6C[] = _("The hail stopped."); +const u8 gUnknown_83FCF7E[] = _("But it failed to SPIT UP\na thing!"); +const u8 gUnknown_83FCFA0[] = _("But it failed to SWALLOW\na thing!"); +const u8 gUnknown_83FCFC2[] = _("The wind turned into a\nHEAT WAVE!"); +const u8 gUnknown_83FCFE4[] = _("All stat changes were\neliminated!"); +const u8 gUnknown_83FD006[] = _("Coins scattered everywhere!"); +const u8 gUnknown_83FD022[] = _("It was too weak to make\na SUBSTITUTE!"); +const u8 gUnknown_83FD048[] = _("The battlers shared\ntheir pain!"); +const u8 gUnknown_83FD068[] = _("A bell chimed!"); +const u8 gUnknown_83FD077[] = _("All affected POKéMON will\nfaint in three turns!"); +const u8 gUnknown_83FD0A7[] = _("There's no PP left for\nthis move!\p"); +const u8 gUnknown_83FD0CA[] = _("But there was no PP left\nfor the move!"); +const u8 gUnknown_83FD0F1[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!"); +const u8 gUnknown_83FD111[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!"); +const u8 gUnknown_83FD124[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!"); +const u8 gUnknown_83FD135[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!"); +const u8 gUnknown_83FD14B[] = _("{B_ATK_NAME_WITH_PREFIX} won't\nobey!"); +const u8 gUnknown_83FD15A[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!"); +const u8 gUnknown_83FD16A[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!"); +const u8 gUnknown_83FD186[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); +const u8 gUnknown_83FD1B8[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); +static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); +const u8 gUnknown_83FD1DF[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); +const u8 gUnknown_83FD1FA[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); +const u8 gUnknown_83FD218[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); +const u8 gUnknown_83FD232[] = _("{B_OPPONENT_MON1_NAME} is angry!"); +const u8 gUnknown_83FD23F[] = _("{B_OPPONENT_MON1_NAME} is eating!"); +const u8 gUnknown_83FD24D[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); +static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); +static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); +const u8 gUnknown_83FD2D9[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); +const u8 gUnknown_83FD30D[] = _("The GHOST appeared!\p"); +const u8 gUnknown_83FD322[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); +const u8 gUnknown_83FD34D[] = _("The GHOST was MAROWAK!\p\n"); +static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); +static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); +static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); +static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); +static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); +static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); +static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); +static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); +static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!"); +static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!"); +static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!"); +static const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!"); +static const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!"); +static const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!"); +static const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!"); +static const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!"); +static const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe's weak!\nGet 'em, {B_BUFF1}!"); +static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!"); +static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); +static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); +static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); +const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); +static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); +static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); +static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); +static const u8 sText_WildPkmnPrefix[] = _("Wild "); +static const u8 sText_FoePkmnPrefix[] = _("Foe "); +static const u8 sText_FoePkmnPrefix2[] = _("Foe"); +static const u8 sText_AllyPkmnPrefix[] = _("Ally"); +static const u8 sText_FoePkmnPrefix3[] = _("Foe"); +static const u8 sText_AllyPkmnPrefix2[] = _("Ally"); +static const u8 sText_FoePkmnPrefix4[] = _("Foe"); +static const u8 sText_AllyPkmnPrefix3[] = _("Ally"); +static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); +static const u8 sText_ExclamationMark[] = _("!"); +static const u8 sText_ExclamationMark2[] = _("!"); +static const u8 sText_ExclamationMark3[] = _("!"); +static const u8 sText_ExclamationMark4[] = _("!"); +static const u8 sText_ExclamationMark5[] = _("!"); + +static const u8 sText_HP2[] = _("HP"); +static const u8 sText_Attack2[] = _("ATTACK"); +static const u8 sText_Defense2[] = _("DEFENSE"); +static const u8 sText_Speed[] = _("SPEED"); +static const u8 sText_SpAtk2[] = _("SP. ATK"); +static const u8 sText_SpDef2[] = _("SP. DEF"); +static const u8 sText_Accuracy[] = _("accuracy"); +static const u8 sText_Evasiveness[] = _("evasiveness"); const u8 *const gStatNamesTable[] = { sText_HP2, @@ -448,10 +448,10 @@ const u8 *const gStatNamesTable[] = { }; static const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); // -static const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); // @ 83FD5FF -static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); // @ 83FD60C -static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); // @ 83FD61B -static const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); // @ 83FD62B +static const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); +static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); +static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); +static const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); const u8 *const gPokeblockWasTooXStringTable[] = { sText_PokeblockWasTooSpicy, @@ -461,60 +461,60 @@ const u8 *const gPokeblockWasTooXStringTable[] = { sText_PokeblockWasTooSour }; -static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); // @ 83FD650 -static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); // @ 83FD65C -static const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); // @ 83FD671 -static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); // @ 83FD688 -static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); // @ 83FD697 -static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); // @ 83FD6B5 -static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); // @ 83FD6C7 -static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); // @ 83FD700 -static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); // @ 83FD718 -static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); // @ 83FD738 -static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); // @ 83FD757 -static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); // @ 83FD76D -const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // @ 83FD78A -static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"); // @ 83FD7A2 -static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}"); // @ 83FD7C0 -static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); // @ 83FD7E0 -static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); // @ 83FD804 -static const u8 sText_Someones[] = _("someone's"); // @ 83FD81A -static const u8 sText_Bills[] = _("BILL's"); // @ 83FD824 -const u8 gUnknown_83FD82B[] = _("{B_OPPONENT_MON1_NAME}'s data was\nadded to the POKéDEX.\p"); // @ 83FD82B -const u8 gUnknown_83FD850[] = _("It is raining."); // @ 83FD850 -const u8 gUnknown_83FD85F[] = _("A sandstorm is raging."); // @ 83FD85F -const u8 gUnknown_83FD876[] = _("The BOX is full!\nYou can't catch any more!\p"); // @ 83FD876 -static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); // @ 83FD8A2 -static const u8 sText_BerrySuffix[] = _(" BERRY"); // @ 83FD8AF -const u8 gUnknown_83FD8B6[] = _("ナゾ"); // @ 83FD8B6 -const u8 gUnknown_83FD8B9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); // @ 83FD8B9 -const u8 gUnknown_83FD8D2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); // @ 83FD8D2 -const u8 gUnknown_83FD8E8[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); // @ 83FD8E8 -const u8 gUnknown_83FD901[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); // @ 83FD901 -const u8 gUnknown_83FD917[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); // @ 83FD917 -const u8 gUnknown_83FD937[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); // @ 83FD937 -const u8 gUnknown_83FD95C[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); // @ 83FD95C -const u8 gUnknown_83FD97A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nnormalized its status!"); // @ 83FD97A -const u8 gUnknown_83FD999[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored health!"); // @ 83FD999 -const u8 gUnknown_83FD9B2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored {B_BUFF1}'s PP!"); // @ 83FD9B2 -const u8 gUnknown_83FD9CC[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its status!"); // @ 83FD9CC -const u8 gUnknown_83FD9E9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); // @ 83FD9E9 -const u8 gUnknown_83FDA0B[] = _("{B_LAST_ITEM}'s effect allows only\n{B_CURRENT_MOVE} to be used!\p"); // @ 83FDA0B -const u8 gUnknown_83FDA33[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); // @ 83FDA33 -const u8 gUnknown_83FDA4C[] = _(""); // @ 83FDA4C -const u8 gUnknown_83FDA4D[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); // @ 83FDA4D -const u8 gUnknown_83FDA7A[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); // @ 83FDA7A -const u8 gUnknown_83FDA8C[] = _("The POKéMON hearing the FLUTE\nawoke!"); // @ 83FDA8C -const u8 gUnknown_83FDAB1[] = _("You throw a BALL now, right?\nI… I'll do my best!"); // @ 83FDAB1 -const u8 gUnknown_83FDAE2[] = _("OAK: Oh, for Pete's sake…\nSo pushy, as always.\p{B_PLAYER_NAME}.\pYou've never had a POKéMON battle\nbefore, have you?\pA POKéMON battle is when TRAINERS\npit their POKéMON against each\lother.\p"); // @ 83FDAE2 -const u8 gUnknown_83FDB92[] = _("The TRAINER that makes the other\nTRAINER's POKéMON faint by lowering\ltheir HP to “0,” wins.\p"); // @ 83FDB92 -const u8 gUnknown_83FDBEF[] = _("But rather than talking about it,\nyou'll learn more from experience.\pTry battling and see for yourself.\p"); // @ 83FDBEF -const u8 gUnknown_83FDC58[] = _("OAK: Inflicting damage on the foe\nis the key to any battle.\p"); // @ 83FDC58 -const u8 gUnknown_83FDC95[] = _("OAK: Lowering the foe's stats\nwill put you at an advantage.\p"); // @ 83FDC95 -const u8 gUnknown_83FDCD2[] = _("OAK: Keep your eyes on your\nPOKéMON's HP.\pIt will faint if the HP drops to\n“0.”\p"); // @ 83FDCD2 -const u8 gUnknown_83FDD23[] = _("OAK: No! There's no running away\nfrom a TRAINER POKéMON battle!\p"); // @ 83FDD23 -const u8 gUnknown_83FDD64[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); // @ 83FDD64 -const u8 gUnknown_83FDDEB[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); // @ 83FDDEB +static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); +static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); +static const u8 sText_PokeDudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); +static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); +static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); +static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); +static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); +static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); +static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); +static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); +static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); +static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); +const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); +static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"); +static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}"); +static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); +static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); +static const u8 sText_Someones[] = _("someone's"); +static const u8 sText_Bills[] = _("BILL's"); +const u8 gUnknown_83FD82B[] = _("{B_OPPONENT_MON1_NAME}'s data was\nadded to the POKéDEX.\p"); +const u8 gUnknown_83FD850[] = _("It is raining."); +const u8 gUnknown_83FD85F[] = _("A sandstorm is raging."); +const u8 gUnknown_83FD876[] = _("The BOX is full!\nYou can't catch any more!\p"); +static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); +static const u8 sText_BerrySuffix[] = _(" BERRY"); +const u8 gUnknown_83FD8B6[] = _("ナゾ"); +const u8 gUnknown_83FD8B9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); +const u8 gUnknown_83FD8D2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); +const u8 gUnknown_83FD8E8[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); +const u8 gUnknown_83FD901[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); +const u8 gUnknown_83FD917[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); +const u8 gUnknown_83FD937[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); +const u8 gUnknown_83FD95C[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); +const u8 gUnknown_83FD97A[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nnormalized its status!"); +const u8 gUnknown_83FD999[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored health!"); +const u8 gUnknown_83FD9B2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored {B_BUFF1}'s PP!"); +const u8 gUnknown_83FD9CC[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its status!"); +const u8 gUnknown_83FD9E9[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); +const u8 gUnknown_83FDA0B[] = _("{B_LAST_ITEM}'s effect allows only\n{B_CURRENT_MOVE} to be used!\p"); +const u8 gUnknown_83FDA33[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); +const u8 gUnknown_83FDA4C[] = _(""); +const u8 gUnknown_83FDA4D[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); +const u8 gUnknown_83FDA7A[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); +const u8 gUnknown_83FDA8C[] = _("The POKéMON hearing the FLUTE\nawoke!"); +const u8 gUnknown_83FDAB1[] = _("You throw a BALL now, right?\nI… I'll do my best!"); +const u8 gUnknown_83FDAE2[] = _("OAK: Oh, for Pete's sake…\nSo pushy, as always.\p{B_PLAYER_NAME}.\pYou've never had a POKéMON battle\nbefore, have you?\pA POKéMON battle is when TRAINERS\npit their POKéMON against each\lother.\p"); +const u8 gUnknown_83FDB92[] = _("The TRAINER that makes the other\nTRAINER's POKéMON faint by lowering\ltheir HP to “0,” wins.\p"); +const u8 gUnknown_83FDBEF[] = _("But rather than talking about it,\nyou'll learn more from experience.\pTry battling and see for yourself.\p"); +const u8 gUnknown_83FDC58[] = _("OAK: Inflicting damage on the foe\nis the key to any battle.\p"); +const u8 gUnknown_83FDC95[] = _("OAK: Lowering the foe's stats\nwill put you at an advantage.\p"); +const u8 gUnknown_83FDCD2[] = _("OAK: Keep your eyes on your\nPOKéMON's HP.\pIt will faint if the HP drops to\n“0.”\p"); +const u8 gUnknown_83FDD23[] = _("OAK: No! There's no running away\nfrom a TRAINER POKéMON battle!\p"); +const u8 gUnknown_83FDD64[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); +const u8 gUnknown_83FDDEB[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); const u8 *const gBattleStringsTable[] = { gUnknown_83FB219, @@ -602,9 +602,9 @@ const u8 *const gBattleStringsTable[] = { gUnknown_83FBB71, gUnknown_83FBB83, gUnknown_83FBB99, - BattleText_MistShroud, + gBattleText_MistShroud, gUnknown_83FBBD0, - BattleText_GetPumped, + gBattleText_GetPumped, gUnknown_83FBBFF, gUnknown_83FBC16, gUnknown_83FBC2B, @@ -715,11 +715,11 @@ const u8 *const gBattleStringsTable[] = { gUnknown_83FC8B1, gUnknown_83FC8C2, gUnknown_83FCB41, - BattleText_Rose, + gBattleText_Rose, gUnknown_83FCB50, gUnknown_83FCB59, gUnknown_83FCB5F, - BattleText_UnknownString3, + gBattleText_UnknownString3, gUnknown_83FCB8F, gUnknown_83FCB9A, gUnknown_83FCBE4, @@ -918,17 +918,17 @@ const u16 gMoveWeatherChangeStringIds[] = { STRINGID_STARTEDHAIL }; -const u16 gSandStormHailContinuesStringIds[] = { +const u16 gSandstormHailContinuesStringIds[] = { STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES }; -const u16 gSandStormHailDmgStringIds[] = { +const u16 gSandstormHailDmgStringIds[] = { STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL }; -const u16 gSandStormHailEndStringIds[] = { +const u16 gSandstormHailEndStringIds[] = { STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED }; @@ -1218,32 +1218,32 @@ const u16 gTrappingMoves[] = { 0xFFFF }; -const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); // @ 83FE672 -const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); // @ 83FE688 -const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); // @ 83FE6B5 -const u8 gText_EllipsisQuestionMark[] = _("……?\p"); // @ 83FE6D0 -const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?"); // @ 83FE6D5 -const u8 gUnknown_83FE6E6[] = _("What will {B_PLAYER_NAME}\nthrow?"); // @ 83FE6E6 -const u8 gUnknown_83FE6FA[] = _("What will the\nold man do?"); // @ 83FE6FA -const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); // @ 83FE714 -const u8 gUnknown_83FE725[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); // @ 83FE725 -const u8 gUnknown_83FE747[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); // @ 83FE747 -const u8 gText_MoveInterfacePP[] = _("PP "); // @ 83FE766 -const u8 gText_MoveInterfaceType[] = _("TYPE/"); // @ 83FE76A -const u8 gUnknown_83FE770[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); // @ 83FE770 -const u8 gUnknown_83FE779[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); // @ 83FE779 -const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); // @ 83FE791 -const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); // @ 83FE7A0 -const u8 gUnknown_83FE7B6[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); // @ 83FE7B6 -const u8 gUnknown_83FE7BF[] = _("{RIGHT_ARROW_2}"); // @ 83FE7BF -const u8 gUnknown_83FE7C2[] = _("{PLUS}"); // @ 83FE7C2 -const u8 gUnknown_83FE7C5[] = _("-"); // @ 83FE7C5 - -const u8 gUnknown_83FE7C7[] = _("{SIZE 0}Max{SIZE 2} HP"); // @ 83FE7C7 -const u8 gUnknown_83FE7D4[] = _("ATTACK "); // @ 83FE7D4 -const u8 gUnknown_83FE7DC[] = _("DEFENSE"); // @ 83FE7DC -const u8 gUnknown_83FE7E4[] = _("SP. ATK"); // @ 83FE7E4 -const u8 gUnknown_83FE7EC[] = _("SP. DEF"); // @ 83FE7EC +const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); +const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); +const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); +const u8 gText_EllipsisQuestionMark[] = _("……?\p"); +const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?"); +const u8 gUnknown_83FE6E6[] = _("What will {B_PLAYER_NAME}\nthrow?"); +const u8 gUnknown_83FE6FA[] = _("What will the\nold man do?"); +const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); +const u8 gUnknown_83FE725[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); +const u8 gUnknown_83FE747[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); +const u8 gText_MoveInterfacePP[] = _("PP "); +const u8 gText_MoveInterfaceType[] = _("TYPE/"); +const u8 gUnknown_83FE770[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +const u8 gUnknown_83FE779[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); +const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); +const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); +const u8 gUnknown_83FE7B6[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +const u8 gUnknown_83FE7BF[] = _("{RIGHT_ARROW_2}"); +const u8 gUnknown_83FE7C2[] = _("{PLUS}"); +const u8 gUnknown_83FE7C5[] = _("-"); + +const u8 gUnknown_83FE7C7[] = _("{SIZE 0}Max{SIZE 2} HP"); +const u8 gUnknown_83FE7D4[] = _("ATTACK "); +const u8 gUnknown_83FE7DC[] = _("DEFENSE"); +const u8 gUnknown_83FE7E4[] = _("SP. ATK"); +const u8 gUnknown_83FE7EC[] = _("SP. DEF"); const u8 *const gUnknown_83FE7F4[] = { gUnknown_83FE7C7, @@ -1255,56 +1255,56 @@ const u8 *const gUnknown_83FE7F4[] = { }; const u8 gUnknown_83FE80C[] = _("{HIGHLIGHT 2}SAFARI BALLS"); // -const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: "); // @ 83FE81C -const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}"); // @ 83FE826 -const u8 gText_Sleep[] = _("sleep"); // @ 83FE82A -const u8 gText_Poison[] = _("poison"); // @ 83FE830 -const u8 gText_Burn[] = _("burn"); // @ 83FE837 -const u8 gText_Paralysis[] = _("paralysis"); // @ 83FE83C -const u8 gText_Ice[] = _("ice"); // @ 83FE846 -const u8 gText_Confusion[] = _("confusion"); // @ 83FE84A -const u8 gText_Love[] = _("love"); // @ 83FE854 -const u8 gUnknown_83FE859[] = _(" "); // @ 83FE859 -const u8 gUnknown_83FE85C[] = _("\n"); // @ 83FE85C -const u8 gUnknown_83FE85E[] = _("\n"); // @ 83FE85E -const u8 gUnknown_83FE860[] = _(" is"); // @ 83FE860 -const u8 gUnknown_83FE864[] = _(" is"); // @ 83FE864 -const u8 gText_BadEgg[] = _("Bad EGG"); // @ 83FE868 -const u8 gUnknown_83FE870[] = _("ミツル"); // @ 83FE870 -const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win"); // @ 83FE874 -const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss"); // @ 83FE87B -const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw"); // @ 83FE883 -static const u8 sText_SpaceIs[] = _(" is"); // @ 83FE88B -static const u8 sText_ApostropheS[] = _("'s"); // @ 83FE88F -const u8 gUnknown_83FE892[] = _("a NORMAL move"); // @ 83FE892 -const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); // @ 83FE8A0 -const u8 gUnknown_83FE8B0[] = _("a FLYING move"); // @ 83FE8B0 -const u8 gUnknown_83FE8BE[] = _("a POISON move"); // @ 83FE8BE -const u8 gUnknown_83FE8CC[] = _("a GROUND move"); // @ 83FE8CC -const u8 gUnknown_83FE8DA[] = _("a ROCK move"); // @ 83FE8DA -const u8 gUnknown_83FE8E6[] = _("a BUG move"); // @ 83FE8E6 -const u8 gUnknown_83FE8F1[] = _("a GHOST move"); // @ 83FE8F1 -const u8 gUnknown_83FE8FE[] = _("a STEEL move"); // @ 83FE8FE -const u8 gUnknown_83FE90B[] = _("a ??? move"); // @ 83FE90B -const u8 gUnknown_83FE916[] = _("a FIRE move"); // @ 83FE916 -const u8 gUnknown_83FE922[] = _("a WATER move"); // @ 83FE922 -const u8 gUnknown_83FE92F[] = _("a GRASS move"); // @ 83FE92F -const u8 gUnknown_83FE93C[] = _("an ELECTRIC move"); // @ 83FE93C -const u8 gUnknown_83FE94D[] = _("a PSYCHIC move"); // @ 83FE94D -const u8 gUnknown_83FE95C[] = _("an ICE move"); // @ 83FE95C -const u8 gUnknown_83FE968[] = _("a DRAGON move"); // @ 83FE968 -const u8 gUnknown_83FE976[] = _("a DARK move"); // @ 83FE976 -const u8 gUnknown_83FE982[] = _("TIME BOARD"); // @ 83FE982 -const u8 gUnknown_83FE98D[] = _("CLEAR TIME"); // @ 83FE98D -const u8 gUnknown_83FE998[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); // @ 83FE998 -const u8 gUnknown_83FE9A9[] = _("1F"); // @ 83FE9A9 -const u8 gUnknown_83FE9AC[] = _("2F"); // @ 83FE9AC -const u8 gUnknown_83FE9AF[] = _("3F"); // @ 83FE9AF -const u8 gUnknown_83FE9B2[] = _("4F"); // @ 83FE9B2 -const u8 gUnknown_83FE9B5[] = _("5F"); // @ 83FE9B5 -const u8 gUnknown_83FE9B8[] = _("6F"); // @ 83FE9B8 -const u8 gUnknown_83FE9BB[] = _("7F"); // @ 83FE9BB -const u8 gUnknown_83FE9BE[] = _("8F"); // @ 83FE9BE +const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: "); +const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}"); +const u8 gText_Sleep[] = _("sleep"); +const u8 gText_Poison[] = _("poison"); +const u8 gText_Burn[] = _("burn"); +const u8 gText_Paralysis[] = _("paralysis"); +const u8 gText_Ice[] = _("ice"); +const u8 gText_Confusion[] = _("confusion"); +const u8 gText_Love[] = _("love"); +const u8 gUnknown_83FE859[] = _(" "); +const u8 gUnknown_83FE85C[] = _("\n"); +const u8 gUnknown_83FE85E[] = _("\n"); +const u8 gUnknown_83FE860[] = _(" is"); +const u8 gUnknown_83FE864[] = _(" is"); +const u8 gText_BadEgg[] = _("Bad EGG"); +const u8 gUnknown_83FE870[] = _("ミツル"); +const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win"); +const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss"); +const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw"); +static const u8 sText_SpaceIs[] = _(" is"); +static const u8 sText_ApostropheS[] = _("'s"); +const u8 gUnknown_83FE892[] = _("a NORMAL move"); +const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); +const u8 gUnknown_83FE8B0[] = _("a FLYING move"); +const u8 gUnknown_83FE8BE[] = _("a POISON move"); +const u8 gUnknown_83FE8CC[] = _("a GROUND move"); +const u8 gUnknown_83FE8DA[] = _("a ROCK move"); +const u8 gUnknown_83FE8E6[] = _("a BUG move"); +const u8 gUnknown_83FE8F1[] = _("a GHOST move"); +const u8 gUnknown_83FE8FE[] = _("a STEEL move"); +const u8 gUnknown_83FE90B[] = _("a ??? move"); +const u8 gUnknown_83FE916[] = _("a FIRE move"); +const u8 gUnknown_83FE922[] = _("a WATER move"); +const u8 gUnknown_83FE92F[] = _("a GRASS move"); +const u8 gUnknown_83FE93C[] = _("an ELECTRIC move"); +const u8 gUnknown_83FE94D[] = _("a PSYCHIC move"); +const u8 gUnknown_83FE95C[] = _("an ICE move"); +const u8 gUnknown_83FE968[] = _("a DRAGON move"); +const u8 gUnknown_83FE976[] = _("a DARK move"); +const u8 gUnknown_83FE982[] = _("TIME BOARD"); +const u8 gUnknown_83FE98D[] = _("CLEAR TIME"); +const u8 gUnknown_83FE998[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); +const u8 gUnknown_83FE9A9[] = _("1F"); +const u8 gUnknown_83FE9AC[] = _("2F"); +const u8 gUnknown_83FE9AF[] = _("3F"); +const u8 gUnknown_83FE9B2[] = _("4F"); +const u8 gUnknown_83FE9B5[] = _("5F"); +const u8 gUnknown_83FE9B8[] = _("6F"); +const u8 gUnknown_83FE9BB[] = _("7F"); +const u8 gUnknown_83FE9BE[] = _("8F"); const u8 *const gUnknown_83FE9C4[] = { gOtherText_Single, @@ -1314,8 +1314,8 @@ const u8 *const gUnknown_83FE9C4[] = { }; const u8 gUnknown_83FE9D4[] = _("{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); // -static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9E4 -static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); // @ 83FE9FF +static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); +static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); static const u8 *const sATypeMove_Table[] = { gUnknown_83FE892, @@ -1463,32 +1463,32 @@ static const u16 sGrammarMoveUsedTable[] = { }; // code -void BufferStringBattle(u16 stringID) +void BufferStringBattle(u16 stringId) { s32 i; const u8 *stringPtr = NULL; - gBattleMsgDataPtr = (struct BattleMsgData*)(&gBattleBufferA[gActiveBattler][4]); - gLastUsedItem = gBattleMsgDataPtr->lastItem; - gLastUsedAbility = gBattleMsgDataPtr->lastAbility; - gBattleScripting.battler = gBattleMsgDataPtr->scrActive; - *(&gBattleStruct->field_52) = gBattleMsgDataPtr->unk1605E; - *(&gBattleStruct->hpScale) = gBattleMsgDataPtr->hpScale; - gPotentialItemEffectBattler = gBattleMsgDataPtr->itemEffectBattler; - *(&gBattleStruct->stringMoveType) = gBattleMsgDataPtr->moveType; + sBattleMsgDataPtr = (struct BattleMsgData*)(&gBattleBufferA[gActiveBattler][4]); + gLastUsedItem = sBattleMsgDataPtr->lastItem; + gLastUsedAbility = sBattleMsgDataPtr->lastAbility; + gBattleScripting.battler = sBattleMsgDataPtr->scrActive; + *(&gBattleStruct->field_52) = sBattleMsgDataPtr->unk1605E; + *(&gBattleStruct->hpScale) = sBattleMsgDataPtr->hpScale; + gPotentialItemEffectBattler = sBattleMsgDataPtr->itemEffectBattler; + *(&gBattleStruct->stringMoveType) = sBattleMsgDataPtr->moveType; for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - sBattlerAbilities[i] = gBattleMsgDataPtr->abilities[i]; + sBattlerAbilities[i] = sBattleMsgDataPtr->abilities[i]; } for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) { - gBattleTextBuff1[i] = gBattleMsgDataPtr->textBuffs[0][i]; - gBattleTextBuff2[i] = gBattleMsgDataPtr->textBuffs[1][i]; - gBattleTextBuff3[i] = gBattleMsgDataPtr->textBuffs[2][i]; + gBattleTextBuff1[i] = sBattleMsgDataPtr->textBuffs[0][i]; + gBattleTextBuff2[i] = sBattleMsgDataPtr->textBuffs[1][i]; + gBattleTextBuff3[i] = sBattleMsgDataPtr->textBuffs[2][i]; } - switch (stringID) + switch (stringId) { case STRINGID_INTROMSG: // first battle msg if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) @@ -1627,10 +1627,10 @@ void BufferStringBattle(u16 stringID) case STRINGID_USEDMOVE: // pokemon used a move msg ChooseMoveUsedParticle(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names - if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) + if (sBattleMsgDataPtr->currentMove >= MOVES_COUNT) StringCopy(gBattleTextBuff2, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else - StringCopy(gBattleTextBuff2, gMoveNames[gBattleMsgDataPtr->currentMove]); + StringCopy(gBattleTextBuff2, gMoveNames[sBattleMsgDataPtr->currentMove]); ChooseTypeOfMoveUsedString(gBattleTextBuff2); stringPtr = sText_AttackerUsedX; @@ -1704,14 +1704,14 @@ void BufferStringBattle(u16 stringID) } break; default: // load a string from the table - if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER) + if (stringId >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER) { gDisplayedStringBattle[0] = EOS; return; } else { - stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER]; + stringPtr = gBattleStringsTable[stringId - BATTLESTRINGS_ID_ADDER]; } break; } @@ -1744,7 +1744,7 @@ static const u8* TryGetStatusString(u8 *src) chars1 = *(u32*)(&status[0]); chars2 = *(u32*)(&status[4]); - for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++) + for (i = 0; i < NELEMS(gStatusConditionStringsTable); i++) { if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0]) && chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4])) @@ -1762,8 +1762,8 @@ static const u8* TryGetStatusString(u8 *src) toCpy = sText_WildPkmnPrefix; \ while (*toCpy != EOS) \ { \ - dst[dstID] = *toCpy; \ - dstID++; \ + dst[dstId] = *toCpy; \ + dstId++; \ toCpy++; \ } \ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \ @@ -1777,7 +1777,7 @@ static const u8* TryGetStatusString(u8 *src) u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) { - u32 dstID = 0; // if they used dstID, why not use srcID as well? + u32 dstId = 0; // if they used dstId, why not use srcId as well? const u8 *toCpy = NULL; u8 text[30]; u8 multiplayerId; @@ -1913,16 +1913,16 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler]) break; case B_TXT_CURRENT_MOVE: // current move name - if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) + if (sBattleMsgDataPtr->currentMove >= MOVES_COUNT) toCpy = (const u8 *)&sATypeMove_Table[gBattleStruct->stringMoveType]; else - toCpy = gMoveNames[gBattleMsgDataPtr->currentMove]; + toCpy = gMoveNames[sBattleMsgDataPtr->currentMove]; break; case B_TXT_LAST_MOVE: // originally used move name - if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT) + if (sBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT) toCpy = (const u8 *)&sATypeMove_Table[gBattleStruct->stringMoveType]; else - toCpy = gMoveNames[gBattleMsgDataPtr->originallyUsedMove]; + toCpy = gMoveNames[sBattleMsgDataPtr->originallyUsedMove]; break; case B_TXT_LAST_ITEM: // last used item if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -1999,7 +1999,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER1_NAME: // trainer1 name if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) { - for (i = 0; i < (s32) ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++) + for (i = 0; i < (s32)NELEMS(gBattleResources->secretBase->trainerName); i++) text[i] = gBattleResources->secretBase->trainerName[i]; text[i] = EOS; toCpy = text; @@ -2131,78 +2131,78 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) // missing if (toCpy != NULL) check while (*toCpy != EOS) { - dst[dstID] = *toCpy; - dstID++; + dst[dstId] = *toCpy; + dstId++; toCpy++; } if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT) { - dst[dstID] = EXT_CTRL_CODE_BEGIN; - dstID++; - dst[dstID] = 9; - dstID++; + dst[dstId] = EXT_CTRL_CODE_BEGIN; + dstId++; + dst[dstId] = 9; + dstId++; } } else { - dst[dstID] = *src; - dstID++; + dst[dstId] = *src; + dstId++; } src++; } - dst[dstID] = *src; - dstID++; + dst[dstId] = *src; + dstId++; - return dstID; + return dstId; } static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) { - u32 srcID = 1; + u32 srcId = 1; u32 value = 0; u8 text[12]; u16 hword; *dst = EOS; - while (src[srcID] != B_BUFF_EOS) + while (src[srcId] != B_BUFF_EOS) { - switch (src[srcID]) + switch (src[srcId]) { case B_BUFF_STRING: // battle string - hword = T1_READ_16(&src[srcID + 1]); + hword = T1_READ_16(&src[srcId + 1]); StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]); - srcID += 3; + srcId += 3; break; case B_BUFF_NUMBER: // int to string - switch (src[srcID + 1]) + switch (src[srcId + 1]) { case 1: - value = src[srcID + 3]; + value = src[srcId + 3]; break; case 2: - value = T1_READ_16(&src[srcID + 3]); + value = T1_READ_16(&src[srcId + 3]); break; case 4: - value = T1_READ_32(&src[srcID + 3]); + value = T1_READ_32(&src[srcId + 3]); break; } - ConvertIntToDecimalStringN(dst, value, STR_CONV_MODE_LEFT_ALIGN, src[srcID + 2]); - srcID += src[srcID + 1] + 3; + ConvertIntToDecimalStringN(dst, value, STR_CONV_MODE_LEFT_ALIGN, src[srcId + 2]); + srcId += src[srcId + 1] + 3; break; case B_BUFF_MOVE: // move name - StringAppend(dst, gMoveNames[T1_READ_16(&src[srcID + 1])]); - srcID += 3; + StringAppend(dst, gMoveNames[T1_READ_16(&src[srcId + 1])]); + srcId += 3; break; case B_BUFF_TYPE: // type name - StringAppend(dst, gTypeNames[src[srcID + 1]]); - srcID += 2; + StringAppend(dst, gTypeNames[src[srcId + 1]]); + srcId += 2; break; case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix - if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) + if (GetBattlerSide(src[srcId + 1]) == B_SIDE_PLAYER) { - GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + GetMonData(&gPlayerParty[src[srcId + 2]], MON_DATA_NICKNAME, text); } else { @@ -2211,38 +2211,38 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) else StringAppend(dst, sText_WildPkmnPrefix); - GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text); + GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, text); } StringGetEnd10(text); StringAppend(dst, text); - srcID += 3; + srcId += 3; break; case B_BUFF_STAT: // stats - StringAppend(dst, gStatNamesTable[src[srcID + 1]]); - srcID += 2; + StringAppend(dst, gStatNamesTable[src[srcId + 1]]); + srcId += 2; break; case B_BUFF_SPECIES: // species name - GetSpeciesName(dst, T1_READ_16(&src[srcID + 1])); - srcID += 3; + GetSpeciesName(dst, T1_READ_16(&src[srcId + 1])); + srcId += 3; break; case B_BUFF_MON_NICK: // poke nick without prefix - if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) - GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + if (GetBattlerSide(src[srcId + 1]) == B_SIDE_PLAYER) + GetMonData(&gPlayerParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); else - GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); + GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); StringGetEnd10(dst); - srcID += 3; + srcId += 3; break; case B_BUFF_NEGATIVE_FLAVOR: // flavor table - StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]); - srcID += 2; + StringAppend(dst, gPokeblockWasTooXStringTable[src[srcId + 1]]); + srcId += 2; break; case B_BUFF_ABILITY: // ability names - StringAppend(dst, gAbilityNames[src[srcID + 1]]); - srcID += 2; + StringAppend(dst, gAbilityNames[src[srcId + 1]]); + srcId += 2; break; case B_BUFF_ITEM: // item name - hword = T1_READ_16(&src[srcID + 1]); + hword = T1_READ_16(&src[srcId + 1]); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { if (hword == ITEM_ENIGMA_BERRY) @@ -2266,7 +2266,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) { CopyItemName(hword, dst); } - srcID += 3; + srcId += 3; break; } } @@ -2285,7 +2285,7 @@ static void ChooseMoveUsedParticle(u8* textBuff) { if (sGrammarMoveUsedTable[i] == 0) counter++; - if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove) + if (sGrammarMoveUsedTable[i++] == sBattleMsgDataPtr->currentMove) break; } @@ -2328,7 +2328,7 @@ static void ChooseTypeOfMoveUsedString(u8* dst) { if (sGrammarMoveUsedTable[i] == MOVE_NONE) counter++; - if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove) + if (sGrammarMoveUsedTable[i++] == sBattleMsgDataPtr->currentMove) break; } diff --git a/src/pokemon.c b/src/pokemon.c index 72d259446..8f9fe192c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4797,8 +4797,8 @@ static void sub_8042D50(int stat) { gBattlerTarget = gBattlerInMenuId; StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_825DFF0[stat]]); - StringCopy(gBattleTextBuff2, BattleText_Rose); - BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3); + StringCopy(gBattleTextBuff2, gBattleText_Rose); + BattleStringExpandPlaceholdersToDisplayedString(gBattleText_UnknownString3); } const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId) @@ -4837,7 +4837,7 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId) else { gBattlerAttacker = gBattlerInMenuId; - BattleStringExpandPlaceholdersToDisplayedString(BattleText_GetPumped); + BattleStringExpandPlaceholdersToDisplayedString(gBattleText_GetPumped); } } } @@ -4845,7 +4845,7 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId) if (itemEffect[3] & 0x80) { gBattlerAttacker = gBattlerInMenuId; - BattleStringExpandPlaceholdersToDisplayedString(BattleText_MistShroud); + BattleStringExpandPlaceholdersToDisplayedString(gBattleText_MistShroud); } return gDisplayedStringBattle; -- cgit v1.2.3 From 7817546781884daeaf46ebdede62d02ad0a7ab29 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 03:50:28 +0800 Subject: clean up --- include/party_menu.h | 95 +-- src/data/party_menu.h | 240 ++++---- src/data/pokemon/tutor_learnsets.h | 6 +- src/party_menu.c | 1142 ++++++++++++++++++------------------ 4 files changed, 748 insertions(+), 735 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); +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); u8 GetCursorSelectionMonId(void); -void ChooseMonForDaycare(void); -void AnimatePartySlot(u8 monId, u8 a1); -void DisplayPartyMenuStdMessage(u32); +u8 GetPartyMenuType(void); 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); +u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen); 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); -bool8 IsMultiBattle(void); -void CB2_ChooseMonToGiveItem(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 DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); -void ChooseMonToGiveMailFromMailbox(void); +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 ShowPartyMenuToShowcaseMultiBattleParty(void); -void SwitchPartyMonSlots(u8 slot, u8 slot2); -void LoadHeldItemIcons(void); -void OpenPartyMenuInTutorialBattle(u8 partyAction); +void CB2_ChooseMonToGiveItem(void); +void ChooseMonToGiveMailFromMailbox(void); +void InitChooseHalfPartyForBattle(u8 a1); void ClearSelectedPartyOrder(void); -void CB2_SelectBagItemToGive(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); - -EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; +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); + +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()) { -- cgit v1.2.3 From 0ca414959b799af53da0926901a0ebe64347a152 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 09:28:43 +0800 Subject: 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" -- cgit v1.2.3 From 2b2dfa7e49a0d28983a4e516ca44aee8cb7c66bb Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 24 Nov 2019 14:36:15 +0800 Subject: 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) { -- cgit v1.2.3 From 46773995020da0bc7984933f7f407ff30394596d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 24 Nov 2019 17:18:00 -0500 Subject: Most of data/link_rfu.s --- baserom.ips | Bin 242395 -> 239212 bytes data/link_rfu.s | 261 +++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 219 insertions(+), 42 deletions(-) diff --git a/baserom.ips b/baserom.ips index d7de0a120..fe18b52d1 100644 Binary files a/baserom.ips and b/baserom.ips differ diff --git a/data/link_rfu.s b/data/link_rfu.s index d16c35a22..877242271 100644 --- a/data/link_rfu.s +++ b/data/link_rfu.s @@ -7,82 +7,259 @@ .align 2 gUnknown_843F29C:: @ 843F29C - .incbin "baserom.gba", 0x43F29C, 0x8 + .2byte 0x143a, 0x1817, 0x100b, 0x200f gUnknown_843F2A4:: @ 843F2A4 - .incbin "baserom.gba", 0x43F2A4, 0x8 + .2byte 0x0209, 0x140b, 0x1030, 0x102a gUnknown_843F2AC:: @ 843F2AC - .incbin "baserom.gba", 0x43F2AC, 0xF0 + .byte 0, 2, 2, 0 + .4byte gUnknown_8418A2B + .4byte gUnknown_84186D1 + .4byte gUnknown_84186EF + .4byte gUnknown_841880E + .4byte gUnknown_8418902 + .byte 1, 2, 3, 1 + .4byte gUnknown_8418A33 + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841881B + .4byte gUnknown_8418902 + .byte 2, 2, 3, 1 + .4byte gUnknown_8418A4A + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841883E + .4byte gUnknown_8418902 + .byte 3, 2, 3, 1 + .4byte gUnknown_8418A61 + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841885F + .4byte gUnknown_8418902 + .byte 4, 2, 5, 2 + .4byte NULL + .4byte gUnknown_8418780 + .4byte gUnknown_841879E + .4byte gUnknown_841888C + .4byte gUnknown_8418902 + .byte 5, 2, 2, 0 + .4byte NULL + .4byte gUnknown_8418780 + .4byte gUnknown_841879E + .4byte NULL + .4byte NULL + .byte 6, 2, 3, 1 + .4byte gUnknown_8418A77 + .4byte gUnknown_84187B2 + .4byte gUnknown_84187D1 + .4byte gUnknown_84188AC + .4byte gUnknown_8418902 + .byte 7, 2, 3, 1 + .4byte gUnknown_8418AA1 + .4byte gUnknown_8418745 + .4byte gUnknown_8418763 + .4byte gUnknown_8418881 + .4byte gUnknown_8418902 + .byte 9, 2, 1, 3 + .4byte gUnknown_8418A87 + .4byte gUnknown_84188B9 + .4byte gUnknown_84188D6 + .4byte gUnknown_84188F0 + .4byte gUnknown_8418902 + .byte 14, 2, 2, 0 + .4byte gUnknown_8418AB2 + .4byte gUnknown_84186D1 + .4byte gUnknown_84187EE + .4byte gUnknown_8418881 + .4byte gUnknown_8418902 -gUnknown_843F39C:: @ 843F39C - .incbin "baserom.gba", 0x43F39C, 0x3D0 +gUnknown_843F39C:: @ 843F39C data8 4x7 + .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a -gUnknown_843F76C:: @ 843F76C +gUnknown_843F3B8:: @ 843F3B8 + .incbin "baserom.gba", 0x43F3B8, 0x20 + +gUnknown_843F3D8:: @ 843F3D8 + .incbin "baserom.gba", 0x43F3D8, 0x20 + +gUnknown_843F3F8:: @ 843F3F8 + .incbin "baserom.gba", 0x43F3F8, 0x20 + +gUnknown_843F418:: @ 843F418 + .incbin "baserom.gba", 0x43F418, 0x100 + +gUnknown_843F518:: @ 843F518 + .incbin "baserom.gba", 0x43F518, 0x100 + +gUnknown_843F618:: @ 843F618 + .incbin "baserom.gba", 0x43F618, 0x20 + +gUnknown_843F638:: @ 843F638 + .incbin "baserom.gba", 0x43F638, 0x134 + +gUnknown_843F76C:: @ 843F76C gbapal .incbin "baserom.gba", 0x43F76C, 0x20 -gUnknown_843F78C:: @ 843F78C +gUnknown_843F78C:: @ 843F78C gbapal .incbin "baserom.gba", 0x43F78C, 0x20 -gUnknown_843F7AC:: @ 843F7AC +gUnknown_843F7AC:: @ 843F7AC 4bpp.lz .incbin "baserom.gba", 0x43F7AC, 0xC8 -gUnknown_843F874:: @ 843F874 +gUnknown_843F874:: @ 843F874 gbapal .incbin "baserom.gba", 0x43F874, 0x8 -gUnknown_843F87C:: @ 843F87C +gUnknown_843F87C:: @ 843F87C gbapal .incbin "baserom.gba", 0x43F87C, 0xC -gUnknown_843F888:: @ 843F888 - .incbin "baserom.gba", 0x43F888, 0x18 +gUnknown_843F888:: @ 843F888 data8 6x4 + .byte 0x03, 0x04, 0x18, 0x04, 0x01, 0x04, 0x1b, 0x04, 0x03, 0x00, 0x18, 0x0a, 0x06, 0x06, 0x12, 0x04, 0x10, 0x04, 0x09, 0x02, 0x0e, 0x04, 0x12, 0x04 -gUnknown_843F8A0:: @ 843F8A0 - .incbin "baserom.gba", 0x43F8A0, 0x10 +gUnknown_843F8A0:: @ 843F8A0 bg_template + .4byte 0x000001c0, 0x000011dd, 0x002021e2, 0x000031fb -gUnknown_843F8B0:: @ 843F8B0 - .incbin "baserom.gba", 0x43F8B0, 0x20 +gUnknown_843F8B0:: @ 843F8B0 window_template + .align 2 + .byte 0x01, 0x07, 0x00, 0x10, 0x02, 0x0a + .2byte 0x0010 + @ {0x01, 0x07, 0x00, 0x10, 0x02, 0x0a, 0x0010} + .align 2 + .byte 0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f + .2byte 0x000a + @ {0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f, 0x000a} + .align 2 + .byte 0x02, 0x01, 0x00, 0x1c, 0x20, 0x03 + .2byte 0x0000 + @ {0x02, 0x01, 0x00, 0x1c, 0x20, 0x03, 0x0000} + .align 2 + .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 + .2byte 0x0000 + @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000} -gUnknown_843F8D0:: @ 843F8D0 - .incbin "baserom.gba", 0x43F8D0, 0x8 +gUnknown_843F8D0:: @ 843F8D0 window_template + .align 2 + .byte 0x00, 0x16, 0x09, 0x05, 0x04, 0x0f + .2byte 0x0062 + @ {0x00, 0x16, 0x09, 0x05, 0x04, 0x0f, 0x0062} -gUnknown_843F8D8:: @ 843F8D8 - .incbin "baserom.gba", 0x43F8D8, 0x3 +gUnknown_843F8D8:: @ 843F8D8 text + .string "{UNDERSCORE}$" -gUnknown_843F8DB:: @ 843F8DB - .incbin "baserom.gba", 0x43F8DB, 0x5 +gUnknown_843F8DB:: @ 843F8DB text + .string "{CLEAR 17}$" + .align 2 gUnknown_843F8E0:: @ 843F8E0 .4byte gUnknown_847A8D8 .4byte gUnknown_847A8FA .4byte gUnknown_847A913 .4byte gUnknown_847A934 -gUnknown_843F8F0:: @ 843F8F0 - .incbin "baserom.gba", 0x43F8F0, 0x20 +gUnknown_843F8F0:: @ 843F8F0 sprite_sheet + obj_tiles gUnknown_843F3F8, 0x0020, 0 + obj_tiles gUnknown_843F418, 0x0100, 2 + obj_tiles gUnknown_843F518, 0x0100, 3 + obj_tiles NULL, 0x0000, 0 + +gUnknown_843F910:: @ 843F910 sprite_palette + obj_pal gUnknown_843F3B8, 0 + obj_pal gUnknown_843F3D8, 1 + obj_pal gUnknown_8E99F24, 2 + obj_pal gUnknown_843F618, 3 + null_obj_pal + +gUnknown_843F938:: @ 843F938 sprite_sheet + obj_tiles gUnknown_843F638, 0x0800, 5 + obj_tiles gUnknown_8E9BD28, 0x1000, 1 + obj_tiles gUnknown_8E99F44, 0x0800, 6 + obj_tiles gUnknown_8E9A168, 0x1000, 4 + +gUnknown_843F958:: @ 843F958 data8 + .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x00 + +gUnknown_843F960:: + .4byte 0x00000000, 0x00000c00 + +gUnknown_843F968:: @ 843F968 sprite_template + spr_template 0, 0, gUnknown_843F960, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B20 + +gUnknown_843F980:: + .4byte 0xc0004000, 0x00000400 + +gUnknown_843F988:: + .incbin "baserom.gba", 0x43F988, 0x8 + +gUnknown_843F990:: + .incbin "baserom.gba", 0x43F990, 0x8 + +gUnknown_843F998:: + .incbin "baserom.gba", 0x43F998, 0x8 + +gUnknown_843F9A0:: + .incbin "baserom.gba", 0x43F9A0, 0x8 + +gUnknown_843F9A8:: + .4byte 0x843f988 + .4byte 0x843f990 + .4byte 0x843f998 + .4byte 0x843f9a0 + +gUnknown_843F9B8:: @ 843F9B8 sprite_template + spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20 + +gUnknown_843F9D0:: + .4byte 0xc0004000, 0x00000400 + +gUnknown_843F9D8:: + .incbin "baserom.gba", 0x43F9D8, 0x8 + +gUnknown_843F9E0:: + .incbin "baserom.gba", 0x43F9E0, 0xC + +gUnknown_843F9EC:: + .incbin "baserom.gba", 0x43F9EC, 0xC + +gUnknown_843F9F8:: + .incbin "baserom.gba", 0x43F9F8, 0xC + +gUnknown_843FA04:: + .incbin "baserom.gba", 0x43FA04, 0x8 + +gUnknown_843FA0C:: + .4byte gUnknown_843F9D8 + .4byte gUnknown_843F9E0 + .4byte gUnknown_843F9EC + .4byte gUnknown_843F9F8 + .4byte gUnknown_843FA04 + +gUnknown_843FA20:: @ 843FA20 sprite_template + spr_template 4, 2, gUnknown_843F9D0, gUnknown_843FA0C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -gUnknown_843F910:: @ 843F910 - .incbin "baserom.gba", 0x43F910, 0x28 +gUnknown_843FA38:: + .4byte 0xc0000000, 0x00000c00 -gUnknown_843F938:: @ 843F938 - .incbin "baserom.gba", 0x43F938, 0x20 +gUnknown_843FA40:: @ 843FA40 sprite_template + spr_template 6, 2, gUnknown_843FA38, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -gUnknown_843F958:: @ 843F958 - .incbin "baserom.gba", 0x43F958, 0x10 +gUnknown_843FA58:: + .4byte 0x40004000, 0x00000400 -gUnknown_843F968:: @ 843F968 - .incbin "baserom.gba", 0x43F968, 0x50 +gUnknown_843FA60:: + .4byte 0x40000000, 0x00000400 -gUnknown_843F9B8:: @ 843F9B8 - .incbin "baserom.gba", 0x43F9B8, 0x68 +gUnknown_843FA68:: + .incbin "baserom.gba", 0x43FA68, 0x8 -gUnknown_843FA20:: @ 843FA20 - .incbin "baserom.gba", 0x43FA20, 0x20 +gUnknown_843FA70:: + .incbin "baserom.gba", 0x43FA70, 0x8 -gUnknown_843FA40:: @ 843FA40 - .incbin "baserom.gba", 0x43FA40, 0x40 +gUnknown_843FA78:: + .4byte gUnknown_843FA68 + .4byte gUnknown_843FA70 -gUnknown_843FA80:: @ 843FA80 - .incbin "baserom.gba", 0x43FA80, 0x18 +gUnknown_843FA80:: @ 843FA80 sprite_template + spr_template 3, 2, gUnknown_843FA58, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -gUnknown_843FA98:: @ 843FA98 - .incbin "baserom.gba", 0x43FA98, 0x18 +gUnknown_843FA98:: @ 843FA98 sprite_template + spr_template 2, 2, gUnknown_843FA60, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -- cgit v1.2.3