From 37be39117ad0a02f67fbba2b5329dadbb87f2c6d Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 28 Jul 2019 01:50:50 +0800 Subject: [PATCH 001/100] port documentation of battle_anim_mon_movement from pokeem --- asm/battle_anim.s | 36 +-- asm/battle_anim_effects_1.s | 66 ++--- asm/battle_anim_effects_2.s | 62 ++--- asm/battle_anim_effects_3.s | 68 ++--- asm/battle_anim_mons.s | 76 +++--- asm/battle_anim_sound_tasks.s | 4 +- asm/battle_anim_special.s | 16 +- asm/battle_anim_status_effects.s | 2 +- asm/battle_anim_utility_funcs.s | 40 +-- asm/battle_controller_link_opponent.s | 8 +- asm/battle_controller_link_partner.s | 8 +- asm/battle_controller_oak.s | 8 +- asm/battle_controller_opponent.s | 8 +- asm/battle_controller_player.s | 10 +- asm/battle_controller_pokedude.s | 8 +- asm/bug.s | 10 +- asm/dark.s | 22 +- asm/electric.s | 8 +- asm/fighting.s | 6 +- asm/fire.s | 8 +- asm/flying.s | 14 +- asm/ghost.s | 14 +- asm/ground.s | 10 +- asm/ice.s | 22 +- asm/normal.s | 2 +- asm/poison.s | 2 +- asm/psychic.s | 38 +-- asm/rock.s | 12 +- asm/water.s | 14 +- include/battle_anim.h | 88 ++++--- src/battle_anim_mon_movement.c | 364 +++++++++++++++++--------- sym_ewram.txt | 4 +- 32 files changed, 607 insertions(+), 451 deletions(-) diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 9aa80db64..4a8c6d51c 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -23,9 +23,9 @@ ClearBattleAnimationVars: @ 80724C0 ldr r0, _08072564 @ =gAnimDisableStructPtr movs r1, 0 str r1, [r0] - ldr r0, _08072568 @ =gUnknown_2037EE8 + ldr r0, _08072568 @ =gAnimMoveDmg str r1, [r0] - ldr r0, _0807256C @ =gUnknown_2037EEC + ldr r0, _0807256C @ =gAnimMovePower movs r2, 0 strh r1, [r0] ldr r0, _08072570 @ =gUnknown_2037EFE @@ -89,8 +89,8 @@ _08072558: .4byte gUnknown_2037EE1 _0807255C: .4byte gUnknown_2037EE2 _08072560: .4byte gUnknown_2037EE3 _08072564: .4byte gAnimDisableStructPtr -_08072568: .4byte gUnknown_2037EE8 -_0807256C: .4byte gUnknown_2037EEC +_08072568: .4byte gAnimMoveDmg +_0807256C: .4byte gAnimMovePower _08072570: .4byte gUnknown_2037EFE _08072574: .4byte gUnknown_2037F14 _08072578: .4byte gAnimMoveTurn @@ -989,7 +989,7 @@ _08072C60: _08072C62: ldrb r5, [r0] adds r0, r5, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08072D12 @@ -1073,7 +1073,7 @@ _08072D12: cmp r6, 0x1 bls _08072DCE adds r0, r5, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08072DCE @@ -1169,8 +1169,8 @@ _08072DE8: .4byte gUnknown_2037F14 _08072DEC: .4byte gUnknown_2037ED4 thumb_func_end sub_8072C30 - thumb_func_start sub_8072DF0 -sub_8072DF0: @ 8072DF0 + thumb_func_start IsBattlerSpriteVisible +IsBattlerSpriteVisible: @ 8072DF0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -1215,7 +1215,7 @@ _08072E42: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8072DF0 + thumb_func_end IsBattlerSpriteVisible thumb_func_start sub_8072E48 sub_8072E48: @ 8072E48 @@ -1897,7 +1897,7 @@ _080733CC: _080733CE: ldrb r4, [r0] adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08073416 @@ -1935,7 +1935,7 @@ _08073416: cmp r5, 0x1 bls _08073464 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08073464 @@ -2016,7 +2016,7 @@ _080734B4: _080734B6: ldrb r6, [r0] adds r0, r6, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080734E0 @@ -2041,7 +2041,7 @@ _080734E0: adds r4, r6, 0 eors r4, r0 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08073520 @@ -2127,7 +2127,7 @@ sub_8073558: @ 8073558 movs r7, 0 _08073598: adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080735AA @@ -2141,7 +2141,7 @@ _080735AA: movs r0, 0x2 eors r6, r0 adds r0, r6, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080735CC @@ -2397,11 +2397,11 @@ ScriptCmd_jump: @ 8073764 _08073784: .4byte gUnknown_2037ED4 thumb_func_end ScriptCmd_jump - thumb_func_start sub_8073788 -sub_8073788: @ 8073788 + thumb_func_start IsContest +IsContest: @ 8073788 movs r0, 0 bx lr - thumb_func_end sub_8073788 + thumb_func_end IsContest thumb_func_start sub_807378C sub_807378C: @ 807378C diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index 18289e193..0d12c15d0 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -756,7 +756,7 @@ sub_80A28C4: @ 80A28C4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A28DE @@ -1320,7 +1320,7 @@ _080A2D08: sub_80A2D10: @ 80A2D10 push {r4,lr} adds r4, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A2D3C @@ -1608,7 +1608,7 @@ _080A2F38: .4byte gSprites _080A2F3C: adds r0, r2, 0 movs r1, 0x1 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r1, _080A2F68 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -1680,7 +1680,7 @@ _080A2FBE: adds r0, r6, 0 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r6, 0 bl sub_8076440 ldrh r0, [r4, 0xA] @@ -1730,7 +1730,7 @@ sub_80A3004: @ 80A3004 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080A305C @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -2512,7 +2512,7 @@ _080A3638: adds r0, r6, 0 adds r0, 0xA strh r0, [r5, 0x3C] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A3650 @@ -2712,7 +2712,7 @@ sub_80A37BC: @ 80A37BC ldrsh r0, [r4, r1] cmp r0, 0 bne _080A3850 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A37E4 @@ -2908,7 +2908,7 @@ _080A3910: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A395E @@ -4224,7 +4224,7 @@ _080A4318: bl sub_8075B30 lsls r0, 16 lsrs r4, r0, 16 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A437A @@ -4557,7 +4557,7 @@ _080A45C8: mov r8, r2 mov r1, r8 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A463E @@ -4959,7 +4959,7 @@ _080A48E8: sub_80A48F0: @ 80A48F0 push {r4-r6,lr} adds r5, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A4906 @@ -4991,7 +4991,7 @@ _080A4906: lsls r0, 24 cmp r0, 0 beq _080A4944 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A496C @@ -5558,7 +5558,7 @@ _080A4D7A: movs r1, 0x2 adds r0, r6, 0 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A4DC4 @@ -6388,7 +6388,7 @@ _080A53B6: ldr r1, _080A53E0 @ =sub_80A53E8 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A53E4 @ =sub_8074DC4 + ldr r0, _080A53E4 @ =TranslateMonSpriteLinear str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -6397,7 +6397,7 @@ _080A53B6: _080A53D8: .4byte gBattleAnimAttacker _080A53DC: .4byte gBattlerSpriteIds _080A53E0: .4byte sub_80A53E8 -_080A53E4: .4byte sub_8074DC4 +_080A53E4: .4byte TranslateMonSpriteLinear thumb_func_end sub_80A5398 thumb_func_start sub_80A53E8 @@ -6415,7 +6415,7 @@ sub_80A53E8: @ 80A53E8 ldrb r0, [r0] strh r0, [r5, 0x34] movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -6443,7 +6443,7 @@ _080A5424: lsls r2, 1 ldrh r3, [r5, 0x38] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] lsls r0, 24 lsrs r0, 24 @@ -6498,7 +6498,7 @@ _080A5492: ldr r1, _080A54BC @ =sub_80A5584 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A54C0 @ =sub_8074DC4 + ldr r0, _080A54C0 @ =TranslateMonSpriteLinear str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -6507,7 +6507,7 @@ _080A5492: _080A54B4: .4byte gBattleAnimAttacker _080A54B8: .4byte gBattlerSpriteIds _080A54BC: .4byte sub_80A5584 -_080A54C0: .4byte sub_8074DC4 +_080A54C0: .4byte TranslateMonSpriteLinear thumb_func_end sub_80A5474 thumb_func_start sub_80A54C4 @@ -6585,7 +6585,7 @@ _080A5538: lsls r2, 1 ldrh r3, [r5, 0x38] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] lsls r0, 24 lsrs r0, 24 @@ -6600,7 +6600,7 @@ _080A5538: ldrh r0, [r5, 0x34] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale ldr r0, _080A5580 @ =sub_80A5584 str r0, [r5, 0x1C] _080A5578: @@ -6674,7 +6674,7 @@ _080A55E4: lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] @@ -6690,7 +6690,7 @@ _080A55FA: lsls r2, 1 ldrh r3, [r4, 0x38] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 @@ -6728,7 +6728,7 @@ _080A564C: lsls r2, 1 ldrh r3, [r4, 0x38] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 @@ -6743,7 +6743,7 @@ _080A564C: ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r4, 0 bl DestroyAnimSprite _080A568E: @@ -6888,7 +6888,7 @@ _080A5792: strh r1, [r4, 0x12] ldrb r0, [r4, 0x8] movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale b _080A58A8 _080A579E: movs r3, 0xE @@ -6904,7 +6904,7 @@ _080A579E: lsls r2, 1 ldrh r3, [r4, 0x10] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl sub_80759DC b _080A58D4 @@ -7095,7 +7095,7 @@ sub_80A58EC: @ 80A58EC lsls r2, 1 ldrh r3, [r4, 0x10] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl sub_80759DC ldrh r0, [r4, 0xE] @@ -7106,7 +7106,7 @@ sub_80A58EC: @ 80A58EC _080A5928: .4byte gTasks _080A592C: ldrb r0, [r4, 0x8] - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _080A5938: @@ -7559,7 +7559,7 @@ sub_80A5C68: @ 80A5C68 ldrh r5, [r5, 0x2] adds r0, r5 strh r0, [r6, 0x22] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A5CAC @@ -7863,7 +7863,7 @@ _080A5EDC: .4byte gBattlersCount sub_80A5EE0: @ 80A5EE0 push {r4,lr} adds r4, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A5EF6 @@ -8350,7 +8350,7 @@ _080A6262: ldrh r1, [r5, 0x20] strh r1, [r5, 0x3A] strh r0, [r5, 0x3C] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A62D4 @@ -8934,7 +8934,7 @@ _080A6710: strh r1, [r5, 0x32] ldrh r0, [r4, 0x4] strh r0, [r5, 0x34] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A6734 diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index 34bb0db27..a2a1a6731 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -329,7 +329,7 @@ sub_80A70A0: @ 80A70A0 adds r0, r1 ldrb r0, [r0] movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r1, _080A70D4 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -389,7 +389,7 @@ _080A7126: lsls r2, 1 adds r0, r4, 0 adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldr r1, _080A7158 @ =gTasks adds r0, r6, r5 lsls r0, 3 @@ -458,7 +458,7 @@ _080A71AA: cmp r0, 0x2 bne _080A71CC adds r0, r4, 0 - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask b _080A71D0 @@ -604,7 +604,7 @@ sub_80A72C8: @ 80A72C8 push {r7} sub sp, 0x4 adds r5, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A72EC @@ -677,7 +677,7 @@ _080A730E: lsls r1, 24 adds r0, r1 lsrs r4, r0, 16 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A7380 @@ -1158,7 +1158,7 @@ sub_80A76F0: @ 80A76F0 mov r4, sp adds r4, 0x2 strh r1, [r4] - bl sub_8073788 + bl IsContest lsls r0, 24 mov r10, r4 cmp r0, 0 @@ -1268,7 +1268,7 @@ _080A77B6: ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A7820 @@ -2258,12 +2258,12 @@ sub_80A7FB0: @ 80A7FB0 lsrs r4, 24 adds r0, r4, 0 movs r1, 0x1 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale adds r0, r4, 0 movs r1, 0xD0 movs r2, 0xD0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldr r1, _080A8008 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -2317,7 +2317,7 @@ sub_80A8014: @ 80A8014 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080A8070 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -2356,7 +2356,7 @@ sub_80A8074: @ 80A8074 movs r5, 0 strh r0, [r4, 0x8] movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale strh r5, [r4, 0xA] strh r5, [r4, 0xC] strh r5, [r4, 0xE] @@ -2439,7 +2439,7 @@ _080A8128: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl sub_8076440 movs r2, 0xC @@ -2471,7 +2471,7 @@ _080A816E: ldrb r0, [r4, 0x8] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl sub_8076440 movs r0, 0x2 @@ -2502,7 +2502,7 @@ _080A81A4: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x8] bl sub_8076440 movs r2, 0xC @@ -2519,7 +2519,7 @@ _080A81D0: b _080A81F6 _080A81D8: ldrb r0, [r4, 0x8] - bl sub_8075980 + bl ResetSpriteRotScale ldr r2, _080A81FC @ =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] @@ -2631,7 +2631,7 @@ _080A8244: ldrsh r2, [r7, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r0, [r4, 0x1] movs r3, 0x4 negs r3, r3 @@ -3856,7 +3856,7 @@ _080A8BF2: movs r1, 0x2 adds r0, r5, 0 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8C6A @@ -4008,7 +4008,7 @@ _080A8D10: mov r4, r8 eors r4, r0 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8D5C @@ -4040,7 +4040,7 @@ _080A8D6C: lsls r0, 16 lsrs r0, 16 mov r9, r0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A8DE4 @@ -4048,7 +4048,7 @@ _080A8D6C: adds r4, r7, 0 eors r4, r0 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8DE4 @@ -4112,14 +4112,14 @@ _080A8DFA: adds r0, r1 lsls r0, 16 lsrs r6, r0, 16 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A8E4C movs r1, 0x2 mov r0, r8 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080A8E4C @@ -5509,7 +5509,7 @@ sub_80A98B0: @ 80A98B0 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 movs r6, 0xF0 cmp r0, 0 @@ -6057,7 +6057,7 @@ sub_80A9CE8: @ 80A9CE8 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9D2A @@ -6095,7 +6095,7 @@ _080A9D2A: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9D88 @@ -6265,7 +6265,7 @@ _080A9EAE: .align 2, 0 _080A9ED0: .4byte gTasks _080A9ED4: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9EE8 @@ -6314,7 +6314,7 @@ sub_80A9F10: @ 80A9F10 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080A9F52 @@ -6336,7 +6336,7 @@ _080A9F52: bl SetGpuReg mov r0, sp bl sub_80752A0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9F98 @@ -6383,7 +6383,7 @@ _080A9FC6: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080A9FFA @@ -6548,7 +6548,7 @@ _080AA112: adds r0, 0x1 strh r0, [r1, 0x20] _080AA134: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AA148 @@ -7847,7 +7847,7 @@ sub_80AAAE4: @ 80AAAE4 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080AAB30 diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index 74f6ef9fc..de012070d 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -243,7 +243,7 @@ sub_80DE440: @ 80DE440 lsls r1, 23 adds r0, r1 lsrs r4, r0, 16 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080DE49E @@ -957,7 +957,7 @@ sub_80DE9D8: @ 80DE9D8 ldrsh r1, [r5, r2] adds r0, r4, 0 bl sub_8074FF8 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080DEA2C @@ -1093,7 +1093,7 @@ sub_80DEAF0: @ 80DEAF0 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080DEB04 @ =gUnknown_2037EE8 + ldr r0, _080DEB04 @ =gAnimMoveDmg ldr r0, [r0] cmp r0, 0 ble _080DEB0C @@ -1101,7 +1101,7 @@ sub_80DEAF0: @ 80DEAF0 movs r0, 0 b _080DEB10 .align 2, 0 -_080DEB04: .4byte gUnknown_2037EE8 +_080DEB04: .4byte gAnimMoveDmg _080DEB08: .4byte gBattleAnimArgs _080DEB0C: ldr r1, _080DEB1C @ =gBattleAnimArgs @@ -1474,7 +1474,7 @@ sub_80DEDD8: @ 80DEDD8 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080DEE2C @@ -1551,7 +1551,7 @@ sub_80DEE78: @ 80DEE78 strh r1, [r0] ldr r0, _080DEEB8 @ =gUnknown_202298A strh r1, [r0] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080DEEA4 @@ -2503,7 +2503,7 @@ _080DF5AA: strh r0, [r5, 0x22] adds r0, r6, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0x30] @@ -2524,7 +2524,7 @@ _080DF5E0: ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] @@ -2548,7 +2548,7 @@ _080DF610: ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] @@ -2569,7 +2569,7 @@ _080DF610: orrs r1, r2 strb r1, [r0] adds r0, r6, 0 - bl sub_8075980 + bl ResetSpriteRotScale _080DF658: ldrh r0, [r5, 0x2E] adds r0, 0x1 @@ -3144,7 +3144,7 @@ _080DFA86: ldrb r1, [r6] mov r0, sp bl sub_8075300 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080DFABC @@ -3252,7 +3252,7 @@ _080DFB80: movs r2, 0 bl SetAnimBgAttribute _080DFB8A: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080DFBC8 @@ -3397,7 +3397,7 @@ _080DFC94: movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080DFCCE @@ -3424,7 +3424,7 @@ _080DFCCE: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080DFD30 @@ -3616,7 +3616,7 @@ _080DFE7E: mov r0, sp ldrb r0, [r0, 0x9] bl sub_8075358 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080DFEA0 @@ -4039,7 +4039,7 @@ _080E01C4: movs r1, 0x4 movs r2, 0x1 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080E01FC @@ -4066,7 +4066,7 @@ _080E01FC: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080E0264 @@ -4319,7 +4319,7 @@ _080E042A: mov r0, sp ldrb r0, [r0, 0x9] bl sub_8075358 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080E044C @@ -4557,7 +4557,7 @@ _080E0608: lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r0, _080E0624 @ =sub_80E0628 str r0, [r4] _080E0618: @@ -4621,7 +4621,7 @@ _080E065C: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -4662,7 +4662,7 @@ _080E06B0: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -4706,7 +4706,7 @@ _080E0708: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -4741,7 +4741,7 @@ _080E0778: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _080E0788: @@ -4879,7 +4879,7 @@ sub_80E0850: @ 80E0850 lsrs r0, 24 strh r0, [r4, 0x26] movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r0, _080E08A0 @ =sub_80E08A4 str r0, [r4] pop {r4} @@ -5028,7 +5028,7 @@ _080E09A8: ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r4, 0 bl DestroyAnimVisualTask b _080E0A30 @@ -5040,7 +5040,7 @@ _080E09BA: lsls r2, 1 ldrh r3, [r7, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 @@ -5248,7 +5248,7 @@ _080E0B3E: strh r5, [r6, 0x1C] adds r0, r5, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale mov r2, r8 movs r3, 0x2 ldrsh r0, [r2, r3] @@ -5274,7 +5274,7 @@ _080E0B88: adds r0, r5, 0 movs r1, 0xE0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r5, 0 bl sub_8076440 lsls r2, r5, 4 @@ -5293,10 +5293,10 @@ _080E0BAA: _080E0BB2: adds r0, r5, 0 movs r1, 0xD0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r5, 0 bl sub_8076440 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080E0BD8 @@ -5361,7 +5361,7 @@ _080E0C30: cmp r0, 0xD bne _080E0C58 adds r0, r5, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080E0C64 @ =gSprites lsls r0, r5, 4 adds r0, r5 @@ -10378,7 +10378,7 @@ sub_80E3294: @ 80E3294 bne _080E32DC adds r0, r5, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0xA] @@ -10401,7 +10401,7 @@ _080E32DC: ldrsh r2, [r4, r0] adds r0, r5, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] @@ -10412,7 +10412,7 @@ _080E32DC: movs r0, 0 strh r0, [r4, 0xE] adds r0, r5, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080E3330 @ =gSprites lsls r0, r5, 4 adds r0, r5 diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s index aded063d4..b971694e3 100644 --- a/asm/battle_anim_mons.s +++ b/asm/battle_anim_mons.s @@ -745,7 +745,7 @@ _08074A1C: ldrb r0, [r5] movs r4, 0x2 eors r0, r4 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08074A4A @@ -757,7 +757,7 @@ _08074A38: ldrb r0, [r5] movs r4, 0x2 eors r0, r4 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _08074A54 @@ -1265,8 +1265,8 @@ _08074DBC: .4byte gBattleAnimTarget _08074DC0: .4byte sub_8074C64 thumb_func_end sub_8074D80 - thumb_func_start sub_8074DC4 -sub_8074DC4: @ 8074DC4 + thumb_func_start TranslateMonSpriteLinear +TranslateMonSpriteLinear: @ 8074DC4 push {r4,lr} adds r3, r0, 0 ldrh r1, [r3, 0x2E] @@ -1307,10 +1307,10 @@ _08074E0E: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8074DC4 + thumb_func_end TranslateMonSpriteLinear - thumb_func_start sub_8074E14 -sub_8074E14: @ 8074E14 + thumb_func_start TranslateMonSpriteLinearFixedPoint +TranslateMonSpriteLinearFixedPoint: @ 8074E14 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] @@ -1358,7 +1358,7 @@ _08074E6A: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8074E14 + thumb_func_end TranslateMonSpriteLinearFixedPoint thumb_func_start sub_8074E70 sub_8074E70: @ 8074E70 @@ -2219,7 +2219,7 @@ sub_8075490: @ 8075490 ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 - bl sub_80754B8 + bl InitSpriteDataForLinearTranslation ldr r1, _080754B4 @ =sub_8074D3C str r1, [r4, 0x1C] adds r0, r4, 0 @@ -2231,8 +2231,8 @@ sub_8075490: @ 8075490 _080754B4: .4byte sub_8074D3C thumb_func_end sub_8075490 - thumb_func_start sub_80754B8 -sub_80754B8: @ 80754B8 + thumb_func_start InitSpriteDataForLinearTranslation +InitSpriteDataForLinearTranslation: @ 80754B8 push {r4-r6,lr} adds r5, r0, 0 ldrh r0, [r5, 0x32] @@ -2262,7 +2262,7 @@ sub_80754B8: @ 80754B8 pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_80754B8 + thumb_func_end InitSpriteDataForLinearTranslation thumb_func_start obj_translate_based_on_private_1_2_3_4 obj_translate_based_on_private_1_2_3_4: @ 80754F8 @@ -2745,8 +2745,8 @@ sub_8075830: @ 8075830 _08075854: .4byte sub_80757E8 thumb_func_end sub_8075830 - thumb_func_start obj_id_set_rotscale -obj_id_set_rotscale: @ 8075858 + thumb_func_start SetSpriteRotScale +SetSpriteRotScale: @ 8075858 push {r4,r5,lr} sub sp, 0x10 lsls r0, 24 @@ -2810,7 +2810,7 @@ _08075894: _080758D0: .4byte 0xffff0000 _080758D4: .4byte gSprites _080758D8: .4byte gOamMatrices - thumb_func_end obj_id_set_rotscale + thumb_func_end SetSpriteRotScale thumb_func_start sub_80758DC sub_80758DC: @ 80758DC @@ -2818,8 +2818,8 @@ sub_80758DC: @ 80758DC bx lr thumb_func_end sub_80758DC - thumb_func_start sub_80758E0 -sub_80758E0: @ 80758E0 + thumb_func_start PrepareBattlerSpriteForRotScale +PrepareBattlerSpriteForRotScale: @ 80758E0 push {r4-r7,lr} lsls r0, 24 lsrs r0, 24 @@ -2834,7 +2834,7 @@ sub_80758E0: @ 80758E0 lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075914 @@ -2899,10 +2899,10 @@ _0807595C: .align 2, 0 _08075978: .4byte gSprites _0807597C: .4byte gUnknown_2024018 - thumb_func_end sub_80758E0 + thumb_func_end PrepareBattlerSpriteForRotScale - thumb_func_start sub_8075980 -sub_8075980: @ 8075980 + thumb_func_start ResetSpriteRotScale +ResetSpriteRotScale: @ 8075980 push {r4,lr} adds r4, r0, 0 lsls r4, 24 @@ -2912,7 +2912,7 @@ sub_8075980: @ 8075980 adds r0, r4, 0 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldr r1, _080759D8 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -2946,7 +2946,7 @@ sub_8075980: @ 8075980 bx r0 .align 2, 0 _080759D8: .4byte gSprites - thumb_func_end sub_8075980 + thumb_func_end ResetSpriteRotScale thumb_func_start sub_80759DC sub_80759DC: @ 80759DC @@ -3276,7 +3276,7 @@ _08075C40: ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075C64 @@ -3294,7 +3294,7 @@ _08075C64: ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075C88 @@ -3349,7 +3349,7 @@ sub_8075CB8: @ 8075CB8 bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075CF2 @@ -3367,7 +3367,7 @@ _08075CF2: bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075D1E @@ -3387,7 +3387,7 @@ _08075D1E: bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075D4A @@ -3407,7 +3407,7 @@ _08075D4A: bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08075D76 @@ -4155,7 +4155,7 @@ sub_80762D0: @ 80762D0 bl sub_80765C0 adds r0, r4, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale pop {r4} pop {r0} bx r0 @@ -4223,7 +4223,7 @@ _08076356: movs r3, 0x1E ldrsh r2, [r4, r3] ldrh r3, [r4, 0x20] - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -4309,7 +4309,7 @@ _08076410: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale movs r0, 0 b _08076438 .align 2, 0 @@ -4633,7 +4633,7 @@ _08076672: movs r3, 0x1C ldrsh r2, [r4, r3] movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale movs r0, 0x18 ldrsh r3, [r4, r0] cmp r3, 0 @@ -4701,7 +4701,7 @@ sub_80766EC: @ 80766EC adds r7, r4, 0 ldr r6, _080767E0 @ =gBattleAnimTarget ldrb r0, [r6] - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _0807672C @@ -4728,7 +4728,7 @@ _0807672C: ldr r0, _080767EC @ =gBattleAnimAttacker mov r8, r0 ldrb r0, [r0] - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08076764 @@ -4756,7 +4756,7 @@ _08076764: ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _0807679C @@ -4784,7 +4784,7 @@ _0807679C: mov r1, r8 ldrb r0, [r1] eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080767D4 @@ -4834,7 +4834,7 @@ _080767FE: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _08076840 diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s index 954878daa..dc5517ca0 100644 --- a/asm/battle_anim_sound_tasks.s +++ b/asm/battle_anim_sound_tasks.s @@ -363,7 +363,7 @@ _080DD0BE: bne _080DD0E8 _080DD0CC: adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _080DD0E8 @@ -475,7 +475,7 @@ _080DD19A: bne _080DD1C4 _080DD1A8: adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _080DD1C4 diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index 02a1216c6..8d5d5a6b4 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -347,7 +347,7 @@ _080EEE9C: movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080EEF00 @@ -839,7 +839,7 @@ _080EF2D0: _080EF2D6: adds r0, r5, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x1C] @@ -853,7 +853,7 @@ _080EF2E6: adds r0, r5, 0 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r5, 0 bl sub_8076440 movs r0, 0x1C @@ -870,7 +870,7 @@ _080EF30A: _080EF314: .4byte 0x000002cf _080EF318: adds r0, r5, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080EF340 @ =gSprites lsls r0, r5, 4 adds r0, r5 @@ -1781,7 +1781,7 @@ _080EFA5C: _080EFA62: adds r0, r4, 0 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0x1C] @@ -1824,7 +1824,7 @@ _080EFAB4: adds r0, r4, 0 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0xC] ldrh r1, [r5, 0xE] adds r0, r1 @@ -1850,7 +1850,7 @@ _080EFAF0: .4byte gSprites _080EFAF4: .4byte 0x0000047f _080EFAF8: adds r0, r4, 0 - bl sub_8075980 + bl ResetSpriteRotScale ldr r1, _080EFB1C @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -5487,7 +5487,7 @@ sub_80F1720: @ 80F1720 bl GetMonData adds r4, r0, 0 adds r0, r6, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080F17F8 diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s index b1da74298..783b39a2e 100644 --- a/asm/battle_anim_status_effects.s +++ b/asm/battle_anim_status_effects.s @@ -358,7 +358,7 @@ sub_80783FC: @ 80783FC ldr r1, _080784B4 @ =0xffdc0000 adds r0, r1 lsrs r4, r0, 16 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _0807843A diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s index d33f51842..48cde2fa8 100644 --- a/asm/battle_anim_utility_funcs.s +++ b/asm/battle_anim_utility_funcs.s @@ -137,7 +137,7 @@ _080BA8EA: cmp r4, r0 beq _080BA914 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080BA914 @@ -707,7 +707,7 @@ sub_80BACEC: @ 80BACEC ldrh r1, [r4] movs r0, 0xA bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BAD7A @@ -726,7 +726,7 @@ _080BAD7A: lsls r0, 24 cmp r0, 0 beq _080BADFE - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BADFE @@ -746,7 +746,7 @@ _080BADAA: ldrb r0, [r5] movs r6, 0x2 eors r0, r6 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -844,7 +844,7 @@ _080BAE5C: ldrb r0, [r0, 0x9] ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap bl sub_807543C - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080BAEAC @@ -967,7 +967,7 @@ sub_80BAF38: @ 80BAF38 movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BAFCA @@ -1134,7 +1134,7 @@ _080BB0FA: movs r1, 0x2 eors r0, r1 strb r0, [r2, 0x1] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BB12A @@ -1144,7 +1144,7 @@ _080BB0FA: cmp r0, 0 beq _080BB130 ldrb r0, [r1, 0x1] - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _080BB130 @@ -1183,7 +1183,7 @@ _080BB130: movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BB18E @@ -1217,7 +1217,7 @@ _080BB18E: _080BB1C0: ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x1 @@ -1369,7 +1369,7 @@ _080BB30C: ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap bl sub_807543C _080BB316: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080BB32E @@ -1692,7 +1692,7 @@ _080BB582: movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BB5B2 @@ -2234,7 +2234,7 @@ _080BB9BA: beq _080BB9F8 lsls r0, r4, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080BB9F8 @@ -2313,7 +2313,7 @@ sub_80BBA20: @ 80BBA20 movs r0, 0x2 adds r6, r7, 0 eors r6, r0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BBA82 @@ -2321,7 +2321,7 @@ sub_80BBA20: @ 80BBA20 cmp r1, 0 beq _080BBA86 adds r0, r6, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _080BBA86 @@ -2370,7 +2370,7 @@ _080BBA86: movs r1, 0x20 orrs r0, r1 strb r0, [r2] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BBAFC @@ -2446,7 +2446,7 @@ _080BBB80: ldrb r0, [r0, 0x9] ldr r1, [sp, 0x58] bl sub_807543C - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080BBBA8 @@ -2669,7 +2669,7 @@ _080BBD00: movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BBD7E @@ -3044,7 +3044,7 @@ sub_80BC02C: @ 80BC02C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -3173,7 +3173,7 @@ sub_80BC12C: @ 80BC12C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080BC144 diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index 873fa088c..50d0b4caf 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -4639,7 +4639,7 @@ _0803CCA6: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _0803CD84 @ =gUnknown_2037EEC + ldr r4, _0803CD84 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4653,7 +4653,7 @@ _0803CCA6: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _0803CD88 @ =gUnknown_2037EE8 + ldr r4, _0803CD88 @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4726,8 +4726,8 @@ _0803CCA6: _0803CD78: .4byte gActiveBattler _0803CD7C: .4byte gUnknown_2022BC4 _0803CD80: .4byte gAnimMoveTurn -_0803CD84: .4byte gUnknown_2037EEC -_0803CD88: .4byte gUnknown_2037EE8 +_0803CD84: .4byte gAnimMovePower +_0803CD88: .4byte gAnimMoveDmg _0803CD8C: .4byte gUnknown_2037EFE _0803CD90: .4byte gUnknown_2037F00 _0803CD94: .4byte gAnimDisableStructPtr diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 8da94bdce..c0409ce57 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -4260,7 +4260,7 @@ _080D6522: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _080D6600 @ =gUnknown_2037EEC + ldr r4, _080D6600 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4274,7 +4274,7 @@ _080D6522: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _080D6604 @ =gUnknown_2037EE8 + ldr r4, _080D6604 @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4347,8 +4347,8 @@ _080D6522: _080D65F4: .4byte gActiveBattler _080D65F8: .4byte gUnknown_2022BC4 _080D65FC: .4byte gAnimMoveTurn -_080D6600: .4byte gUnknown_2037EEC -_080D6604: .4byte gUnknown_2037EE8 +_080D6600: .4byte gAnimMovePower +_080D6604: .4byte gAnimMoveDmg _080D6608: .4byte gUnknown_2037EFE _080D660C: .4byte gUnknown_2037F00 _080D6610: .4byte gAnimDisableStructPtr diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 9f878733e..df31ccd92 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -5489,7 +5489,7 @@ sub_80EA2B8: @ 80EA2B8 adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _080EA398 @ =gUnknown_2037EEC + ldr r4, _080EA398 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -5503,7 +5503,7 @@ sub_80EA2B8: @ 80EA2B8 lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _080EA39C @ =gUnknown_2037EE8 + ldr r4, _080EA39C @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -5576,8 +5576,8 @@ sub_80EA2B8: @ 80EA2B8 _080EA38C: .4byte gUnknown_2022BC4 _080EA390: .4byte gActiveBattler _080EA394: .4byte gAnimMoveTurn -_080EA398: .4byte gUnknown_2037EEC -_080EA39C: .4byte gUnknown_2037EE8 +_080EA398: .4byte gAnimMovePower +_080EA39C: .4byte gAnimMoveDmg _080EA3A0: .4byte gUnknown_2037EFE _080EA3A4: .4byte gUnknown_2037F00 _080EA3A8: .4byte gAnimDisableStructPtr diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 0c94035ee..0618be95f 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -4800,7 +4800,7 @@ _08038212: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _080382F0 @ =gUnknown_2037EEC + ldr r4, _080382F0 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4814,7 +4814,7 @@ _08038212: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _080382F4 @ =gUnknown_2037EE8 + ldr r4, _080382F4 @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4887,8 +4887,8 @@ _08038212: _080382E4: .4byte gActiveBattler _080382E8: .4byte gUnknown_2022BC4 _080382EC: .4byte gAnimMoveTurn -_080382F0: .4byte gUnknown_2037EEC -_080382F4: .4byte gUnknown_2037EE8 +_080382F0: .4byte gAnimMovePower +_080382F4: .4byte gAnimMoveDmg _080382F8: .4byte gUnknown_2037EFE _080382FC: .4byte gUnknown_2037F00 _08038300: .4byte gAnimDisableStructPtr diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index e3db6d88e..197816465 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -3956,7 +3956,7 @@ sub_8030350: @ 8030350 ldrsh r6, [r4, r0] lsls r0, r6, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8434,7 +8434,7 @@ _08032852: adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _08032930 @ =gUnknown_2037EEC + ldr r4, _08032930 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -8448,7 +8448,7 @@ _08032852: lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _08032934 @ =gUnknown_2037EE8 + ldr r4, _08032934 @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -8521,8 +8521,8 @@ _08032852: _08032924: .4byte gActiveBattler _08032928: .4byte gUnknown_2022BC4 _0803292C: .4byte gAnimMoveTurn -_08032930: .4byte gUnknown_2037EEC -_08032934: .4byte gUnknown_2037EE8 +_08032930: .4byte gAnimMovePower +_08032934: .4byte gAnimMoveDmg _08032938: .4byte gUnknown_2037EFE _0803293C: .4byte gUnknown_2037F00 _08032940: .4byte gAnimDisableStructPtr diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 23b4a23e8..8f42aa9eb 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -4768,7 +4768,7 @@ sub_8158814: @ 8158814 adds r2, r1 ldrb r1, [r2] strb r1, [r5] - ldr r4, _081588F4 @ =gUnknown_2037EEC + ldr r4, _081588F4 @ =gAnimMovePower ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4782,7 +4782,7 @@ sub_8158814: @ 8158814 lsls r1, 8 orrs r3, r1 strh r3, [r4] - ldr r4, _081588F8 @ =gUnknown_2037EE8 + ldr r4, _081588F8 @ =gAnimMoveDmg ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4855,8 +4855,8 @@ sub_8158814: @ 8158814 _081588E8: .4byte gUnknown_2022BC4 _081588EC: .4byte gActiveBattler _081588F0: .4byte gAnimMoveTurn -_081588F4: .4byte gUnknown_2037EEC -_081588F8: .4byte gUnknown_2037EE8 +_081588F4: .4byte gAnimMovePower +_081588F8: .4byte gAnimMoveDmg _081588FC: .4byte gUnknown_2037EFE _08158900: .4byte gUnknown_2037F00 _08158904: .4byte gAnimDisableStructPtr diff --git a/asm/bug.s b/asm/bug.s index 6970411d1..1bdc4095c 100644 --- a/asm/bug.s +++ b/asm/bug.s @@ -9,7 +9,7 @@ sub_80B3FAC: @ 80B3FAC push {r4-r6,lr} adds r6, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B3FD8 @@ -105,7 +105,7 @@ _080B4078: .4byte DestroyAnimSprite sub_80B407C: @ 80B407C push {r4-r6,lr} adds r6, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B40A0 @@ -185,7 +185,7 @@ _080B4124: .4byte DestroyAnimSprite sub_80B4128: @ 80B4128 push {r4,r5,lr} adds r5, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B4144 @@ -484,7 +484,7 @@ sub_80B4364: @ 80B4364 push {r4-r7,lr} sub sp, 0x4 adds r7, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B4384 @@ -513,7 +513,7 @@ _080B4384: negs r0, r0 strh r0, [r1, 0x6] _080B43A6: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B43F6 diff --git a/asm/dark.s b/asm/dark.s index a232c19ad..ad0ff597a 100644 --- a/asm/dark.s +++ b/asm/dark.s @@ -282,7 +282,7 @@ sub_80B7ACC: @ 80B7ACC movs r0, 0x7E strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80754B8 + bl InitSpriteDataForLinearTranslation ldrh r0, [r4, 0x30] negs r0, r0 strh r0, [r4, 0x34] @@ -701,7 +701,7 @@ _080B7E16: ldr r0, _080B7E70 @ =0x04000016 str r0, [sp] movs r7, 0x2 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B7EA8 @@ -728,7 +728,7 @@ _080B7E78: ldr r0, _080B7F38 @ =0x0400001a str r0, [sp] movs r7, 0x4 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B7EA8 @@ -995,7 +995,7 @@ _080B80A0: .4byte _080B81E8 .4byte _080B8250 _080B80B4: - bl sub_8073788 + bl IsContest lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1685,7 +1685,7 @@ sub_80B85B8: @ 80B85B8 ldrb r0, [r6] movs r5, 0x2 eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B8642 @@ -1744,7 +1744,7 @@ sub_80B8664: @ 80B8664 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B86A0 @@ -1827,7 +1827,7 @@ sub_80B86EC: @ 80B86EC movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B8750 @@ -1840,7 +1840,7 @@ _080B8750: lsls r0, 24 cmp r0, 0 beq _080B87CA - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B87CA @@ -1860,7 +1860,7 @@ _080B8780: ldrb r0, [r4] movs r5, 0x2 eors r0, r5 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2155,7 +2155,7 @@ _080B89FC: movs r0, 0x4A adds r1, r4, 0 bl SetGpuReg - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B8A2E @@ -2254,7 +2254,7 @@ _080B8AE0: lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B8B04 diff --git a/asm/electric.s b/asm/electric.s index 187e30b6d..ed9e1da1f 100644 --- a/asm/electric.s +++ b/asm/electric.s @@ -219,7 +219,7 @@ _080ADD7C: ldrb r0, [r4] movs r6, 0x2 eors r0, r6 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 bne _080ADD98 @@ -237,7 +237,7 @@ _080ADDA0: ldrb r0, [r0] movs r4, 0x2 eors r0, r4 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080ADDC4 @@ -536,7 +536,7 @@ _080ADFFA: sub_80AE000: @ 80AE000 push {r4-r6,lr} adds r6, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AE01C @@ -609,7 +609,7 @@ _080AE090: ldr r0, _080AE118 @ =gBattleAnimAttacker _080AE092: ldrb r6, [r0] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AE0AA diff --git a/asm/fighting.s b/asm/fighting.s index 518927a3c..78b60aac5 100644 --- a/asm/fighting.s +++ b/asm/fighting.s @@ -76,7 +76,7 @@ _080B0924: .4byte gBattleAnimAttacker sub_80B0928: @ 80B0928 push {r4,lr} adds r4, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B0944 @@ -1379,7 +1379,7 @@ _080B1332: ands r0, r2 orrs r0, r1 strb r0, [r5, 0x5] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B136C @@ -1555,7 +1555,7 @@ _080B14A0: movs r1, 0 bl sub_8075114 _080B14A8: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B14BC diff --git a/asm/fire.s b/asm/fire.s index f4b89300a..ecc1ce493 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -782,7 +782,7 @@ sub_80ACEA4: @ 80ACEA4 lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r0, _080ACF10 @ =sub_80ACF14 str r0, [r4] pop {r4,r5} @@ -1147,7 +1147,7 @@ _080AD1A8: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale strh r5, [r4, 0xC] _080AD1D4: ldrh r0, [r4, 0x8] @@ -1877,7 +1877,7 @@ _080AD70C: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AD7A8 @@ -1999,7 +1999,7 @@ _080AD826: ldrb r1, [r0] movs r0, 0x2 eors r0, r1 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 lsrs r0, 24 adds r0, 0x1 diff --git a/asm/flying.s b/asm/flying.s index ada0296c8..697138bd8 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -302,7 +302,7 @@ sub_80B1AB8: @ 80B1AB8 negs r0, r0 strh r0, [r1, 0x6] _080B1AE4: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B1AFC @@ -720,7 +720,7 @@ _080B1DC8: lsrs r1, 16 cmp r1, 0x7F bhi _080B1EBE - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B1E64 @@ -1017,7 +1017,7 @@ _080B2028: ands r0, r1 cmp r0, 0 beq _080B20E6 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B20B6 @@ -1149,7 +1149,7 @@ _080B211C: ands r0, r1 cmp r0, 0 beq _080B21DA - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B21AA @@ -1281,7 +1281,7 @@ _080B2210: ands r0, r1 cmp r0, 0 beq _080B22CE - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B229E @@ -1422,7 +1422,7 @@ _080B2318: ands r0, r1 cmp r0, 0 beq _080B23D6 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B23A6 @@ -1659,7 +1659,7 @@ sub_80B2514: @ 80B2514 strh r0, [r4, 0x32] ldrh r0, [r5, 0x4] strh r0, [r4, 0x34] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B25C4 diff --git a/asm/ghost.s b/asm/ghost.s index 2d550e6f7..7ff96f41a 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -358,12 +358,12 @@ sub_80B54E8: @ 80B54E8 lsrs r4, 24 adds r0, r4, 0 movs r1, 0x1 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale adds r0, r4, 0 movs r1, 0x80 movs r2, 0x80 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldr r1, _080B5560 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -485,11 +485,11 @@ _080B55F0: adds r0, r1, 0 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale b _080B5634 _080B5618: adds r0, r1, 0 - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask movs r0, 0x50 @@ -1818,7 +1818,7 @@ sub_80B6020: @ 80B6020 lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x8] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B6090 @@ -1840,7 +1840,7 @@ _080B6092: lsls r0, r4, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B615E @@ -2253,7 +2253,7 @@ sub_80B63B4: @ 80B63B4 lsls r0, 24 cmp r0, 0 bne _080B63FC - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B6414 diff --git a/asm/ground.s b/asm/ground.s index 4009c7056..8bfa9d914 100644 --- a/asm/ground.s +++ b/asm/ground.s @@ -1224,7 +1224,7 @@ sub_80B94B4: @ 80B94B4 _080B94D8: .4byte gTasks _080B94DC: .4byte gBattleAnimArgs _080B94E0: - ldr r0, _080B950C @ =gUnknown_2037EEC + ldr r0, _080B950C @ =gAnimMovePower ldrh r0, [r0] movs r1, 0xA bl __udivsi3 @@ -1247,7 +1247,7 @@ _080B94EC: ldr r0, _080B9514 @ =sub_80B9584 b _080B9576 .align 2, 0 -_080B950C: .4byte gUnknown_2037EEC +_080B950C: .4byte gAnimMovePower _080B9510: .4byte gBattle_BG3_X _080B9514: .4byte sub_80B9584 _080B9518: @@ -1257,7 +1257,7 @@ _080B9518: _080B951E: lsls r0, r5, 24 lsrs r0, 24 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B9548 @@ -1641,7 +1641,7 @@ sub_80B97D8: @ 80B97D8 lsrs r1, r0, 24 ldr r3, _080B97F8 @ =gBattleAnimArgs movs r2, 0 - ldr r0, _080B97FC @ =gUnknown_2037EEC + ldr r0, _080B97FC @ =gAnimMovePower ldrh r0, [r0] cmp r0, 0x63 bls _080B97EC @@ -1654,7 +1654,7 @@ _080B97EC: bx r0 .align 2, 0 _080B97F8: .4byte gBattleAnimArgs -_080B97FC: .4byte gUnknown_2037EEC +_080B97FC: .4byte gAnimMovePower thumb_func_end sub_80B97D8 thumb_func_start sub_80B9800 diff --git a/asm/ice.s b/asm/ice.s index c04715b95..4cf6c714b 100644 --- a/asm/ice.s +++ b/asm/ice.s @@ -1393,7 +1393,7 @@ sub_80AFAE4: @ 80AFAE4 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AFB26 @@ -1433,7 +1433,7 @@ _080AFB26: lsls r1, 4 movs r2, 0x20 bl LoadPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080AFB88 @@ -1619,7 +1619,7 @@ _080AFCD6: adds r0, 0x1 strh r0, [r1, 0x20] _080AFCF8: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AFD0C @@ -1704,7 +1704,7 @@ sub_80AFD80: @ 80AFD80 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AFDC2 @@ -1744,7 +1744,7 @@ _080AFDC2: lsls r1, 4 movs r2, 0x20 bl LoadPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080AFE24 @@ -1920,7 +1920,7 @@ _080AFF5E: adds r0, 0x1 strh r0, [r1, 0x20] _080AFF80: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AFF94 @@ -2111,7 +2111,7 @@ _080B00F8: ldrh r1, [r5, 0x3C] orrs r0, r1 strh r0, [r5, 0x3C] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B012C @@ -2213,7 +2213,7 @@ _080B01AA: ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B0200 @@ -2283,7 +2283,7 @@ _080B0230: ldrh r1, [r4, 0x26] adds r0, r1 strh r0, [r4, 0x26] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B02AE @@ -2361,7 +2361,7 @@ _080B02CE: strh r0, [r4, 0x34] adds r0, 0x4 strh r0, [r4, 0x36] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B0328 @@ -2583,7 +2583,7 @@ sub_80B0458: @ 80B0458 lsls r0, 24 lsrs r5, r0, 24 adds r0, r5, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B0544 diff --git a/asm/normal.s b/asm/normal.s index 165fa150f..4a1e86a4e 100644 --- a/asm/normal.s +++ b/asm/normal.s @@ -1733,7 +1733,7 @@ sub_80BA5F8: @ 80BA5F8 lsls r0, 24 cmp r0, 0 beq _080BA61C - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080BA61C diff --git a/asm/poison.s b/asm/poison.s index adaa51dbd..1a244e136 100644 --- a/asm/poison.s +++ b/asm/poison.s @@ -166,7 +166,7 @@ sub_80B1744: @ 80B1744 adds r0, r1 strh r0, [r4, 0x36] adds r0, r4, 0 - bl sub_80754B8 + bl InitSpriteDataForLinearTranslation movs r1, 0x30 ldrsh r0, [r4, r1] movs r2, 0x4 diff --git a/asm/psychic.s b/asm/psychic.s index ef0fc1385..874a35948 100644 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -15,7 +15,7 @@ sub_80B2ECC: @ 80B2ECC lsls r0, 24 cmp r0, 0 beq _080B2EE8 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B2EFE @@ -32,7 +32,7 @@ _080B2EE8: movs r0, 0xC8 strb r0, [r1] _080B2EFE: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B2F5A @@ -51,7 +51,7 @@ _080B2EFE: orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B2F3C @@ -63,7 +63,7 @@ _080B2F3C: adds r4, r0, 0 eors r4, r7 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B2F5A @@ -73,7 +73,7 @@ _080B2F3C: adds r1, r5, 0 bl sub_8072E48 _080B2F5A: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B2F90 @@ -128,7 +128,7 @@ _080B2FA6: adds r0, r4 _080B2FCA: strh r0, [r6, 0x22] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B2FDC @@ -271,7 +271,7 @@ sub_80B30B0: @ 80B30B0 negs r1, r1 cmp r0, r1 bne _080B3156 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B3146 @@ -281,7 +281,7 @@ sub_80B30B0: @ 80B30B0 lsrs r4, r0, 24 adds r6, r4, 0 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B3118 @@ -304,7 +304,7 @@ _080B3118: adds r4, r0, 0 eors r4, r6 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B3146 @@ -345,7 +345,7 @@ _080B3164: .4byte sub_80B3168 sub_80B3168: @ 80B3168 push {r4-r6,lr} adds r6, r0, 0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B31C0 @@ -363,7 +363,7 @@ sub_80B3168: @ 80B3168 orrs r1, r0 lsrs r5, r1, 31 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B31A6 @@ -373,7 +373,7 @@ _080B31A6: movs r0, 0x2 eors r4, r0 adds r0, r4, 0 - bl sub_8072DF0 + bl IsBattlerSpriteVisible lsls r0, 24 cmp r0, 0 beq _080B31C0 @@ -407,7 +407,7 @@ sub_80B31D0: @ 80B31D0 bne _080B31EA movs r6, 0x1 _080B31EA: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B3232 @@ -860,7 +860,7 @@ _080B3544: lsls r1, 1 strh r1, [r0, 0x20] ldrb r0, [r4, 0x8] - bl sub_8075980 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _080B357A: @@ -1240,7 +1240,7 @@ sub_80B3834: @ 80B3834 lsls r1, 3 ldr r0, _080B3890 @ =gTasks adds r5, r1, r0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B38D8 @@ -1860,7 +1860,7 @@ _080B3CD8: lsls r2, 1 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r3, [r4, 0x1] lsrs r1, r3, 6 ldrb r2, [r4, 0x3] @@ -1947,7 +1947,7 @@ _080B3DAA: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -1986,7 +1986,7 @@ _080B3DFC: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 @@ -2063,7 +2063,7 @@ _080B3EA4: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B3ED2 diff --git a/asm/rock.s b/asm/rock.s index 50687a86e..39f3c7780 100644 --- a/asm/rock.s +++ b/asm/rock.s @@ -143,7 +143,7 @@ _080B472E: adds r2, r0 strh r2, [r5, 0x36] adds r0, r5, 0 - bl sub_80754B8 + bl InitSpriteDataForLinearTranslation strh r4, [r5, 0x34] strh r4, [r5, 0x36] ldr r0, _080B4774 @ =sub_8074D00 @@ -262,7 +262,7 @@ do_boulder_dust: @ 80B4810 movs r1, 0 movs r2, 0 bl SetAnimBgAttribute - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B4854 @@ -299,7 +299,7 @@ _080B4854: lsls r1, 4 movs r2, 0x20 bl LoadCompressedPalette - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080B48B0 @@ -512,7 +512,7 @@ _080B4A4C: .align 2, 0 _080B4A54: .4byte gTasks _080B4A58: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080B4A6C @@ -1413,7 +1413,7 @@ sub_80B5148: @ 80B5148 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, _080B5180 @ =gUnknown_2037EE8 + ldr r2, _080B5180 @ =gAnimMoveDmg ldr r0, [r2] cmp r0, 0x20 bgt _080B515C @@ -1441,7 +1441,7 @@ _080B5176: pop {r0} bx r0 .align 2, 0 -_080B5180: .4byte gUnknown_2037EE8 +_080B5180: .4byte gAnimMoveDmg _080B5184: .4byte gBattleAnimArgs thumb_func_end sub_80B5148 diff --git a/asm/water.s b/asm/water.s index 5518dd33e..eac5fc3c1 100644 --- a/asm/water.s +++ b/asm/water.s @@ -753,7 +753,7 @@ sub_80AB168: @ 80AB168 bl sub_807685C lsls r0, 24 lsrs r5, r0, 24 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AB1C2 @@ -1036,7 +1036,7 @@ sub_80AB38C: @ 80AB38C bl SetAnimBgAttribute mov r0, sp bl sub_80752A0 - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AB418 @@ -1140,7 +1140,7 @@ _080AB476: lsls r0, 5 strh r0, [r7, 0xA] strh r0, [r7, 0xC] - bl sub_8073788 + bl IsContest lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 @@ -1461,7 +1461,7 @@ _080AB740: .4byte gBattle_BG1_X _080AB744: .4byte gBattle_BG1_Y _080AB748: .4byte gTasks _080AB74C: - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 bne _080AB760 @@ -2012,7 +2012,7 @@ sub_80ABB28: @ 80ABB28 lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80758E0 + bl PrepareBattlerSpriteForRotScale ldr r0, _080ABB80 @ =sub_80ABB84 str r0, [r4] pop {r4} @@ -2282,7 +2282,7 @@ _080ABD64: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8075980 + bl ResetSpriteRotScale movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 @@ -3047,7 +3047,7 @@ sub_80AC328: @ 80AC328 movs r1, 0x1 _080AC36C: strh r1, [r5, 0x16] - bl sub_8073788 + bl IsContest lsls r0, 24 cmp r0, 0 beq _080AC380 diff --git a/include/battle_anim.h b/include/battle_anim.h index 5929a318e..0406c78a0 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -19,28 +19,28 @@ enum { BG_ANIM_SCREEN_SIZE, BG_ANIM_AREA_OVERFLOW_MODE, - BG_ANIM2, - BG_ANIM3, + BG_ANIM_MOSAIC, + BG_ANIM_CHAR_BASE_BLOCK, BG_ANIM_PRIORITY, - BG_ANIM_5, - BG_ANIM_6 + BG_ANIM_PALETTES_MODE, + BG_ANIM_SCREEN_BASE_BLOCK }; -struct UnknownAnimStruct2 +struct BattleAnimBgData { - void *unk0; - u16 *unk4; - u8 unk8; - u8 unk9; - u16 unkA; - u16 unkC; + u8 *bgTiles; + u16 *bgTilemap; + u8 paletteId; + u8 bgId; + u16 tilesOffset; + u16 unused; }; struct BattleAnimBackground { - void *image; - void *palette; - void *tilemap; + const u32 *image; + const u32 *palette; + const u32 *tilemap; }; #define ANIM_ARGS_COUNT 8 @@ -53,7 +53,6 @@ extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; extern u8 gAnimSoundTaskCount; extern struct DisableStruct *gAnimDisableStructPtr; -extern u32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; @@ -64,8 +63,8 @@ extern u8 gBattleAnimTarget; extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02038440; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; -extern u16 gUnknown_2037EEC; -extern s32 gUnknown_2037EE8; +extern u16 gAnimMovePower; +extern s32 gAnimMoveDmg; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); @@ -80,7 +79,7 @@ s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); -bool8 sub_8072DF0(u8 battlerId); +bool8 IsBattlerSpriteVisible(u8 battlerId); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); @@ -92,18 +91,32 @@ void sub_80A6EEC(struct Sprite *sprite); void sub_80A68D4(struct Sprite *sprite); void sub_80A6F3C(struct Sprite *sprite); void sub_80A8278(void); -void sub_80A6B30(struct UnknownAnimStruct2*); -void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); +void sub_80A6B30(struct BattleAnimBgData *); +void sub_80A6B90(struct BattleAnimBgData *, u32 arg1); u8 sub_80A82E4(u8 bank); bool8 AnimateBallThrow(struct Sprite *sprite); enum { - BANK_X_POS, - BANK_Y_POS, + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, }; -u8 GetBankPosition(u8 bank, u8 attributeId); +enum +{ + BATTLER_COORD_ATTR_HEIGHT, + BATTLER_COORD_ATTR_WIDTH, + BATTLER_COORD_ATTR_TOP, + BATTLER_COORD_ATTR_BOTTOM, + BATTLER_COORD_ATTR_LEFT, + BATTLER_COORD_ATTR_RIGHT, + BATTLER_COORD_ATTR_RAW_BOTTOM, +}; + +u8 GetBattlerSpriteCoord(u8 bank, u8 attributeId); bool8 IsBankSpritePresent(u8 bank); void sub_80A6C68(u8 arg0); @@ -126,13 +139,28 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId); // battle_anim_mons.s -void sub_8074DC4(struct Sprite * sprite); -void sub_8074E14(struct Sprite * sprite); -void sub_80754B8(struct Sprite * sprite); -void sub_80758E0(u8 spriteId, u8 b); -void sub_8075980(u8 spriteId); -void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); -bool8 sub_8073788(void); +void TranslateMonSpriteLinear(struct Sprite * sprite); +void TranslateMonSpriteLinearFixedPoint(struct Sprite * sprite); +void InitSpriteDataForLinearTranslation(struct Sprite * sprite); +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 b); +void ResetSpriteRotScale(u8 spriteId); +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +bool8 IsContest(void); void sub_80759DC(u8 spriteId); +// battle_anim_mon_movement.c +void AnimTask_ShakeMon(u8 taskId); +void AnimTask_ShakeMon2(u8 taskId); +void AnimTask_ShakeMonInPlace(u8 taskId); +void AnimTask_ShakeAndSinkMon(u8 taskId); +void AnimTask_TranslateMonElliptical(u8 taskId); +void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId); +void AnimTask_WindUpLunge(u8 taskId); +void sub_80995FC(u8 taskId); +void AnimTask_SwayMon(u8 taskId); +void AnimTask_ScaleMonAndRestore(u8 taskId); +void sub_8099980(u8 taskId); +void sub_8099A78(u8 taskId); +void sub_8099BD4(u8 taskId); + #endif // GUARD_BATTLE_ANIM_H diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 27e6ef28c..88fbce6da 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -6,43 +6,91 @@ #define abs(x) ((x) < 0 ? -(x) : (x)) -void sub_8098A6C(u8 taskId); -void sub_8098C08(u8 taskId); -void sub_8098D54(u8 taskId); -void sub_8098EF0(u8 taskId); -void sub_8099004(u8 taskId); -void sub_80990AC(struct Sprite * sprite); -void sub_8099120(struct Sprite * sprite); -void sub_8099144(struct Sprite * sprite); -void sub_8099190(struct Sprite * sprite); -void sub_80991B4(struct Sprite * sprite); -void sub_8099270(struct Sprite * sprite); -void sub_80992E0(struct Sprite * sprite); -void sub_8099394(struct Sprite * sprite); -void sub_809946C(struct Sprite * sprite); -void sub_8099530(u8 taskId); -void sub_8099594(u8 taskId); -void sub_80996B8(u8 taskId); -void sub_8099788(u8 taskId); -void sub_8099908(u8 taskId); -void sub_8099B54(u8 taskId); -void sub_8099CB8(u8 taskId); +static void AnimTask_ShakeMonStep(u8 taskId); +static void AnimTask_ShakeMon2Step(u8 taskId); +static void AnimTask_ShakeMonInPlaceStep(u8 taskId); +static void AnimTask_ShakeAndSinkMonStep(u8 taskId); +static void AnimTask_TranslateMonEllipticalStep(u8 taskId); +static void DoHorizontalLunge(struct Sprite * sprite); +static void ReverseHorizontalLungeDirection(struct Sprite * sprite); +static void DoVerticalDip(struct Sprite * sprite); +static void ReverseVerticalDipDirection(struct Sprite * sprite); +static void SlideMonToOriginalPos(struct Sprite * sprite); +static void SlideMonToOriginalPosStep(struct Sprite * sprite); +static void SlideMonToOffset(struct Sprite * sprite); +static void sub_8099394(struct Sprite * sprite); +static void sub_809946C(struct Sprite * sprite); +static void AnimTask_WindUpLungePart1(u8 taskId); +static void AnimTask_WindUpLungePart2(u8 taskId); +static void sub_80996B8(u8 taskId); +static void AnimTask_SwayMonStep(u8 taskId); +static void AnimTask_ScaleMonAndRestoreStep(u8 taskId); +static void sub_8099B54(u8 taskId); +static void sub_8099CB8(u8 taskId); -const struct SpriteTemplate gUnknown_83D4E4C[] = { - { - 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80990AC - }, { - 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099144 - }, { - 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80991B4 - }, { - 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80992E0 - }, { - 0, 0, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8099394 - } +const struct SpriteTemplate gHorizontalLungeSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = DoHorizontalLunge, }; -void sub_80989F8(u8 taskId) +const struct SpriteTemplate gVerticalDipSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = DoVerticalDip, +}; + +const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SlideMonToOriginalPos, +}; + +const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SlideMonToOffset, +}; + +const struct SpriteTemplate gUnknown_83D4EB4 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8099394, +}; + +// Task to facilitate simple shaking of a pokemon's picture in battle. +// The shaking alternates between the original position and the target position. +// arg 0: anim battler +// arg 1: x pixel offset +// arg 2: y pixel offset +// arg 3: num times to shake +// arg 4: frame delay +void AnimTask_ShakeMon(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); @@ -58,12 +106,12 @@ void sub_80989F8(u8 taskId) gTasks[taskId].data[3] = gBattleAnimArgs[4]; gTasks[taskId].data[4] = gBattleAnimArgs[1]; gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_8098A6C; + gTasks[taskId].func = AnimTask_ShakeMonStep; gTasks[taskId].func(taskId); } } -void sub_8098A6C(u8 taskId) +static void AnimTask_ShakeMonStep(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -87,7 +135,14 @@ void sub_8098A6C(u8 taskId) gTasks[taskId].data[3]--; } -void sub_8098B1C(u8 taskId) +// Task to facilitate simple shaking of a pokemon's picture in battle. +// The shaking alternates between the positive and negative versions of the specified pixel offsets. +// arg 0: anim battler +// arg 1: x pixel offset +// arg 2: y pixel offset +// arg 3: num times to shake +// arg 4: frame delay +void AnimTask_ShakeMon2(u8 taskId) { bool8 abort = FALSE; u8 spriteId; @@ -116,7 +171,7 @@ void sub_8098B1C(u8 taskId) battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); break; } - if (!sub_8072DF0(battlerId)) + if (!IsBattlerSpriteVisible(battlerId)) abort = TRUE; spriteId = gBattlerSpriteIds[battlerId]; } @@ -134,12 +189,12 @@ void sub_8098B1C(u8 taskId) gTasks[taskId].data[3] = gBattleAnimArgs[4]; gTasks[taskId].data[4] = gBattleAnimArgs[1]; gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_8098C08; + gTasks[taskId].func = AnimTask_ShakeMon2Step; gTasks[taskId].func(taskId); } } -void sub_8098C08(u8 taskId) +static void AnimTask_ShakeMon2Step(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -163,7 +218,15 @@ void sub_8098C08(u8 taskId) gTasks[taskId].data[3]--; } -void sub_8098CD0(u8 taskId) +// Task to facilitate simple shaking of a pokemon's picture in battle. +// The shaking alternates between the positive and negative versions of the specified pixel offsets +// with respect to the current location of the mon's picture. +// arg 0: battler +// arg 1: x offset +// arg 2: y offset +// arg 3: num shakes +// arg 4: delay +void AnimTask_ShakeMonInPlace(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); @@ -180,12 +243,12 @@ void sub_8098CD0(u8 taskId) gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2; gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2; - gTasks[taskId].func = sub_8098D54; + gTasks[taskId].func = AnimTask_ShakeMonInPlaceStep; gTasks[taskId].func(taskId); } } -void sub_8098D54(u8 taskId) +static void AnimTask_ShakeMonInPlaceStep(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -219,7 +282,13 @@ void sub_8098D54(u8 taskId) gTasks[taskId].data[3]--; } -void sub_8098E90(u8 taskId) +// Shakes a mon bg horizontally and moves it downward linearly. +// arg 0: battler +// arg 1: x offset +// arg 2: frame delay between each movement +// arg 3: downward speed (subpixel) +// arg 4: duration +void AnimTask_ShakeAndSinkMon(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); @@ -229,11 +298,11 @@ void sub_8098E90(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].func = sub_8098EF0; + gTasks[taskId].func = AnimTask_ShakeAndSinkMonStep; gTasks[taskId].func(taskId); } -void sub_8098EF0(u8 taskId) +static void AnimTask_ShakeAndSinkMonStep(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; s16 data1 = gTasks[taskId].data[1]; @@ -251,25 +320,32 @@ void sub_8098EF0(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_8098F84(u8 taskId) +// Moves a mon bg picture along an elliptical path that begins +// and ends at the mon's origin location. +// arg 0: battler +// arg 1: ellipse width +// arg 2: ellipse height +// arg 3: num loops +// arg 4: speed (valid values are 0-5) +void AnimTask_TranslateMonElliptical(u8 taskId) { - u8 r6 = 1; + u8 wavePeriod = 1; u8 i; u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) gBattleAnimArgs[4] = 5; for (i = 0; i < gBattleAnimArgs[4]; i++) - r6 *= 2; + wavePeriod *= 2; gTasks[taskId].data[0] = spriteId; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = r6; - gTasks[taskId].func = sub_8099004; + gTasks[taskId].data[4] = wavePeriod; + gTasks[taskId].func = AnimTask_TranslateMonEllipticalStep; gTasks[taskId].func(taskId); } -void sub_8099004(u8 taskId) +static void AnimTask_TranslateMonEllipticalStep(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].pos2.x = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]); @@ -287,14 +363,26 @@ void sub_8099004(u8 taskId) } } -void sub_809907C(u8 taskId) +// Moves a mon bg picture along an elliptical path that begins +// and ends at the mon's origin location. Reverses the direction +// of the path if it's not on the player's side of the battle. +// arg 0: battler +// arg 1: ellipse width +// arg 2: ellipse height +// arg 3: num loops +// arg 4: speed (valid values are 0-5) +void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - sub_8098F84(taskId); + AnimTask_TranslateMonElliptical(taskId); } -void sub_80990AC(struct Sprite * sprite) +// Performs a simple horizontal lunge, where the mon moves +// horizontally, and then moves back in the opposite direction. +// arg 0: duration of single lunge direction +// arg 1: x pixel delta that is applied each frame +static void DoHorizontalLunge(struct Sprite * sprite) { sprite->invisible = TRUE; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -305,19 +393,24 @@ void sub_80990AC(struct Sprite * sprite) sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[4] = gBattleAnimArgs[0]; - StoreSpriteCallbackInData6(sprite, sub_8099120); - sprite->callback = sub_8074DC4; + StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection); + sprite->callback = TranslateMonSpriteLinear; } -void sub_8099120(struct Sprite * sprite) +static void ReverseHorizontalLungeDirection(struct Sprite * sprite) { sprite->data[0] = sprite->data[4]; sprite->data[1] = -sprite->data[1]; - sprite->callback = sub_8074DC4; + sprite->callback = TranslateMonSpriteLinear; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void sub_8099144(struct Sprite * sprite) +// Performs a simple vertical dipping motion, where moves vertically, and then +// moves back in the opposite direction. +// arg 0: duration of single dip direction +// arg 1: y pixel delta that is applied each frame +// arg 2: battler +static void DoVerticalDip(struct Sprite * sprite) { u8 spriteId; sprite->invisible = TRUE; @@ -327,19 +420,24 @@ void sub_8099144(struct Sprite * sprite) sprite->data[2] = gBattleAnimArgs[1]; sprite->data[3] = spriteId; sprite->data[4] = gBattleAnimArgs[0]; - StoreSpriteCallbackInData6(sprite, sub_8099190); - sprite->callback = sub_8074DC4; + StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection); + sprite->callback = TranslateMonSpriteLinear; } -void sub_8099190(struct Sprite * sprite) +static void ReverseVerticalDipDirection(struct Sprite * sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; - sprite->callback = sub_8074DC4; + sprite->callback = TranslateMonSpriteLinear; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void sub_80991B4(struct Sprite * sprite) +// Linearly slides a mon's bg picture back to its original sprite position. +// The sprite parameter is a dummy sprite used for facilitating the movement with its callback. +// arg 0: 1 = target or 0 = attacker +// arg 1: direction (0 = horizontal and vertical, 1 = horizontal only, 2 = vertical only) +// arg 2: duration +static void SlideMonToOriginalPos(struct Sprite * sprite) { u8 spriteId; if (gBattleAnimArgs[0] == 0) @@ -351,7 +449,7 @@ void sub_80991B4(struct Sprite * sprite) sprite->data[2] = gSprites[spriteId].pos1.x; sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; sprite->data[4] = gSprites[spriteId].pos1.y; - sub_80754B8(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = gSprites[spriteId].pos2.x; @@ -363,10 +461,10 @@ void sub_80991B4(struct Sprite * sprite) sprite->data[1] = 0; sprite->data[7] = gBattleAnimArgs[1]; sprite->data[7] |= spriteId << 8; - sprite->callback = sub_8099270; + sprite->callback = SlideMonToOriginalPosStep; } -void sub_8099270(struct Sprite * sprite) +static void SlideMonToOriginalPosStep(struct Sprite * sprite) { u8 data7 = sprite->data[7]; struct Sprite *otherSprite = &gSprites[sprite->data[7] >> 8]; @@ -388,7 +486,15 @@ void sub_8099270(struct Sprite * sprite) } } -void sub_80992E0(struct Sprite * sprite) +// Linearly translates a mon to a target offset. The horizontal offset +// is mirrored for the opponent's pokemon, and the vertical offset +// is only mirrored if arg 3 is set to 1. +// arg 0: 0 = attacker, 1 = target +// arg 1: target x pixel offset +// arg 2: target y pixel offset +// arg 3: mirror vertical translation for opposite battle side +// arg 4: duration +static void SlideMonToOffset(struct Sprite * sprite) { u8 battlerId; u8 spriteId; @@ -408,16 +514,16 @@ void sub_80992E0(struct Sprite * sprite) sprite->data[2] = gSprites[spriteId].pos1.x + gBattleAnimArgs[1]; sprite->data[3] = gSprites[spriteId].pos1.y; sprite->data[4] = gSprites[spriteId].pos1.y + gBattleAnimArgs[2]; - sub_80754B8(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = spriteId; sprite->invisible = TRUE; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = sub_8074E14; + sprite->callback = TranslateMonSpriteLinearFixedPoint; } -void sub_8099394(struct Sprite * sprite) +static void sub_8099394(struct Sprite * sprite) { u8 battlerId; u8 spriteId; @@ -438,7 +544,7 @@ void sub_8099394(struct Sprite * sprite) sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1]; sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2]; - sub_80754B8(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = gSprites[spriteId].pos2.x << 8; sprite->data[4] = gSprites[spriteId].pos2.y << 8; sprite->data[5] = spriteId; @@ -447,19 +553,29 @@ void sub_8099394(struct Sprite * sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); else StoreSpriteCallbackInData6(sprite, sub_809946C); - sprite->callback = sub_8074E14; + sprite->callback = TranslateMonSpriteLinearFixedPoint; } -void sub_809946C(struct Sprite * sprite) +static void sub_809946C(struct Sprite * sprite) { gSprites[sprite->data[5]].pos2.x = 0; gSprites[sprite->data[5]].pos2.y = 0; DestroyAnimSprite(sprite); } -void sub_809949C(u8 taskId) +// Task to facilitate a two-part translation animation, in which the sprite +// is first translated in an arc to one position. Then, it "lunges" to a target +// x offset. Used in TAKE_DOWN, for example. +// arg 0: anim bank +// arg 1: horizontal speed (subpixel) +// arg 2: wave amplitude +// arg 3: first duration +// arg 4: delay before starting lunge +// arg 5: target x offset for lunge +// arg 6: lunge duration +void AnimTask_WindUpLunge(u8 taskId) { - u16 r7 = 0x8000 / gBattleAnimArgs[3]; + u16 wavePeriod = 0x8000 / gBattleAnimArgs[3]; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -472,11 +588,11 @@ void sub_809949C(u8 taskId) gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6]; gTasks[taskId].data[6] = gBattleAnimArgs[6]; - gTasks[taskId].data[7] = r7; - gTasks[taskId].func = sub_8099530; + gTasks[taskId].data[7] = wavePeriod; + gTasks[taskId].func = AnimTask_WindUpLungePart1; } -void sub_8099530(u8 taskId) +static void AnimTask_WindUpLungePart1(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gTasks[taskId].data[11] += gTasks[taskId].data[1]; @@ -484,10 +600,10 @@ void sub_8099530(u8 taskId) gSprites[spriteId].pos2.y = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]); gTasks[taskId].data[10] += gTasks[taskId].data[7]; if (--gTasks[taskId].data[3] == 0) - gTasks[taskId].func = sub_8099594; + gTasks[taskId].func = AnimTask_WindUpLungePart2; } -void sub_8099594(u8 taskId) +static void AnimTask_WindUpLungePart2(u8 taskId) { u8 spriteId; @@ -514,7 +630,7 @@ void sub_80995FC(u8 taskId) spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); break; case 2: - if (!sub_8072DF0(gBattleAnimAttacker ^ BIT_FLANK)) + if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); return; @@ -522,7 +638,7 @@ void sub_80995FC(u8 taskId) spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK]; break; case 3: - if (!sub_8072DF0(gBattleAnimTarget ^ BIT_FLANK)) + if (!IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); return; @@ -541,7 +657,7 @@ void sub_80995FC(u8 taskId) gTasks[taskId].func = sub_80996B8; } -void sub_80996B8(u8 taskId) +static void sub_80996B8(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].pos2.x += gTasks[taskId].data[1]; @@ -549,7 +665,15 @@ void sub_80996B8(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_8099704(u8 taskId) +// Task that facilitates translating the mon bg picture back and forth +// in a swaying motion (uses Sine wave). It can sway either horizontally +// or vertically, but not both. +// arg 0: direction (0 = horizontal, 1 = vertical) +// arg 1: wave amplitude +// arg 2: wave period +// arg 3: num sways +// arg 4: which mon (0 = attacker, 1 = target) +void AnimTask_SwayMon(u8 taskId) { u8 spriteId; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -565,32 +689,32 @@ void sub_8099704(u8 taskId) else gTasks[taskId].data[5] = gBattleAnimTarget; gTasks[taskId].data[12] = 1; - gTasks[taskId].func = sub_8099788; + gTasks[taskId].func = AnimTask_SwayMonStep; } -void sub_8099788(u8 taskId) +static void AnimTask_SwayMonStep(u8 taskId) { u8 spriteId; - u32 r8; - s16 r5; - u16 tmp; + u32 waveIndex; + s16 sineValue; + u16 sineIndex; spriteId = gTasks[taskId].data[4]; - tmp = gTasks[taskId].data[10] + gTasks[taskId].data[2]; - gTasks[taskId].data[10] = tmp; - r8 = tmp >> 8; - r5 = Sin(r8, gTasks[taskId].data[1]); + sineIndex = gTasks[taskId].data[10] + gTasks[taskId].data[2]; + gTasks[taskId].data[10] = sineIndex; + waveIndex = sineIndex >> 8; + sineValue = Sin(waveIndex, gTasks[taskId].data[1]); if (gTasks[taskId].data[0] == 0) { - gSprites[spriteId].pos2.x = r5; + gSprites[spriteId].pos2.x = sineValue; } else if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER) { - gSprites[spriteId].pos2.y = abs(r5); + gSprites[spriteId].pos2.y = abs(sineValue); } else - gSprites[spriteId].pos2.y = -abs(r5); - if ((r8 > 0x7F && gTasks[taskId].data[11] == 0 && gTasks[taskId].data[12] == 1) || (r8 < 0x7F && gTasks[taskId].data[11] == 1 && gTasks[taskId].data[12] == 0)) + gSprites[spriteId].pos2.y = -abs(sineValue); + if ((waveIndex > 0x7F && gTasks[taskId].data[11] == 0 && gTasks[taskId].data[12] == 1) || (waveIndex < 0x7F && gTasks[taskId].data[11] == 1 && gTasks[taskId].data[12] == 0)) { gTasks[taskId].data[11] ^= 1; gTasks[taskId].data[12] ^= 1; @@ -603,10 +727,16 @@ void sub_8099788(u8 taskId) } } -void sub_80998B0(u8 taskId) +// Scales a mon's sprite, and then scales back to its original dimensions. +// arg 0: x scale delta +// arg 1: y scale delta +// arg 2: duration +// arg 3: anim bank +// arg 4: sprite object mode +void AnimTask_ScaleMonAndRestore(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]); - sub_80758E0(spriteId, gBattleAnimArgs[4]); + PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]); gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; @@ -614,16 +744,16 @@ void sub_80998B0(u8 taskId) gTasks[taskId].data[4] = spriteId; gTasks[taskId].data[10] = 0x100; gTasks[taskId].data[11] = 0x100; - gTasks[taskId].func = sub_8099908; + gTasks[taskId].func = AnimTask_ScaleMonAndRestoreStep; } -void sub_8099908(u8 taskId) +static void AnimTask_ScaleMonAndRestoreStep(u8 taskId) { u8 spriteId; gTasks[taskId].data[10] += gTasks[taskId].data[0]; gTasks[taskId].data[11] += gTasks[taskId].data[1]; spriteId = gTasks[taskId].data[4]; - obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); if (--gTasks[taskId].data[2] == 0) { if (gTasks[taskId].data[3] > 0) @@ -635,7 +765,7 @@ void sub_8099908(u8 taskId) } else { - sub_8075980(spriteId); + ResetSpriteRotScale(spriteId); DestroyAnimVisualTask(taskId); } } @@ -644,7 +774,7 @@ void sub_8099908(u8 taskId) void sub_8099980(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); - sub_80758E0(spriteId, 0); + PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[3] != 1) @@ -654,7 +784,7 @@ void sub_8099980(u8 taskId) gTasks[taskId].data[4] = gBattleAnimArgs[1]; gTasks[taskId].data[5] = spriteId; gTasks[taskId].data[6] = gBattleAnimArgs[3]; - if (sub_8073788()) + if (IsContest()) gTasks[taskId].data[7] = 1; else { @@ -663,7 +793,7 @@ void sub_8099980(u8 taskId) else gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0; } - if (gTasks[taskId].data[7] && !sub_8073788()) + if (gTasks[taskId].data[7] && !IsContest()) { s16 tmp; tmp = gTasks[taskId].data[3]; @@ -677,7 +807,7 @@ void sub_8099980(u8 taskId) void sub_8099A78(u8 taskId) { u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); - sub_80758E0(spriteId, 0); + PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) @@ -709,11 +839,10 @@ void sub_8099A78(u8 taskId) gTasks[taskId].func = sub_8099B54; } -void sub_8099B54(u8 taskId) +static void sub_8099B54(u8 taskId) { - s16 tmp; gTasks[taskId].data[3] += gTasks[taskId].data[4]; - obj_id_set_rotscale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); + SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); if (gTasks[taskId].data[7]) sub_80759DC(gTasks[taskId].data[5]); if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2]) @@ -721,7 +850,7 @@ void sub_8099B54(u8 taskId) switch (gTasks[taskId].data[6]) { case 1: - sub_8075980(gTasks[taskId].data[5]); + ResetSpriteRotScale(gTasks[taskId].data[5]); // fallthrough case 0: default: @@ -729,8 +858,7 @@ void sub_8099B54(u8 taskId) break; case 2: gTasks[taskId].data[1] = 0; - tmp = gTasks[taskId].data[4]; - gTasks[taskId].data[4] = -tmp; + gTasks[taskId].data[4] *= -1; gTasks[taskId].data[6] = 1; break; } @@ -741,7 +869,7 @@ void sub_8099BD4(u8 taskId) { if (gBattleAnimArgs[0] == 0) { - gTasks[taskId].data[15] = gUnknown_2037EEC / 12; + gTasks[taskId].data[15] = gAnimMovePower / 12; if (gTasks[taskId].data[15] < 1) gTasks[taskId].data[15] = 1; if (gTasks[taskId].data[15] > 16) @@ -749,7 +877,7 @@ void sub_8099BD4(u8 taskId) } else { - gTasks[taskId].data[15] = gUnknown_2037EE8 / 12; + gTasks[taskId].data[15] = gAnimMoveDmg / 12; if (gTasks[taskId].data[15] < 1) gTasks[taskId].data[15] = 1; if (gTasks[taskId].data[15] > 16) @@ -769,7 +897,7 @@ void sub_8099BD4(u8 taskId) gTasks[taskId].func = sub_8099CB8; } -void sub_8099CB8(u8 taskId) +static void sub_8099CB8(u8 taskId) { struct Task *task = &gTasks[taskId]; if (++task->data[0] > task->data[1]) diff --git a/sym_ewram.txt b/sym_ewram.txt index 3797720d5..a32ae4268 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -721,10 +721,10 @@ gUnknown_2037EE3: @ 2037EE3 gAnimDisableStructPtr: @ 2037EE4 .space 0x4 -gUnknown_2037EE8: @ 2037EE8 +gAnimMoveDmg: @ 2037EE8 .space 0x4 -gUnknown_2037EEC: @ 2037EEC +gAnimMovePower: @ 2037EEC .space 0x2 gUnknown_2037EEE: @ 2037EEE From 935f93a0752604f1375c79e6225baa6774b60280 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 02:39:41 +0800 Subject: [PATCH 002/100] ported battle_gfx_sfx_util from pokeem --- asm/battle_2.s | 50 +- asm/battle_anim.s | 62 +- asm/battle_anim_effects_1.s | 182 +- asm/battle_anim_effects_2.s | 98 +- asm/battle_anim_effects_3.s | 154 +- asm/battle_anim_mons.s | 192 +- asm/battle_anim_special.s | 112 +- asm/battle_anim_status_effects.s | 22 +- asm/battle_anim_utility_funcs.s | 28 +- asm/battle_controller_link_opponent.s | 200 +- asm/battle_controller_link_partner.s | 176 +- asm/battle_controller_oak.s | 142 +- asm/battle_controller_opponent.s | 208 +- asm/battle_controller_player.s | 216 +- asm/battle_controller_pokedude.s | 192 +- asm/battle_controller_safari.s | 36 +- asm/battle_controllers.s | 44 +- asm/battle_gfx_sfx_util.s | 3606 ------------------------- asm/battle_interface.s | 112 +- asm/bug.s | 24 +- asm/dark.s | 18 +- asm/dragon.s | 20 +- asm/electric.s | 66 +- asm/fighting.s | 50 +- asm/fire.s | 12 +- asm/flying.s | 52 +- asm/ghost.s | 38 +- asm/ground.s | 28 +- asm/ice.s | 62 +- asm/normal.s | 4 +- asm/party_menu.s | 8 +- asm/poison.s | 4 +- asm/pokeball.s | 56 +- asm/pokemon_jump_2.s | 2 +- asm/pokemon_storage_system.s | 2 +- asm/psychic.s | 28 +- asm/reshow_battle_screen.s | 56 +- asm/rock.s | 12 +- asm/water.s | 38 +- data/battle_anim_scripts.s | 4 +- data/data.s | 37 +- data/graphics.s | 29 +- include/battle.h | 20 +- include/battle_2.h | 1 + include/battle_anim.h | 3 +- include/battle_controllers.h | 1 - include/battle_gfx_sfx_util.h | 63 +- include/battle_interface.h | 12 +- include/data2.h | 15 + include/graphics.h | 16 + include/party_menu.h | 1 + include/pokemon.h | 3 +- ld_script.txt | 5 +- src/battle_gfx_sfx_util.c | 1059 ++++++++ src/pokemon.c | 4 +- src/trainer_pokemon_sprites.c | 4 +- sym_common.txt | 2 +- sym_ewram.txt | 12 +- 58 files changed, 2588 insertions(+), 5115 deletions(-) delete mode 100644 asm/battle_gfx_sfx_util.s create mode 100644 src/battle_gfx_sfx_util.c diff --git a/asm/battle_2.s b/asm/battle_2.s index 3fdaeca33..6bd86b091 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -3920,7 +3920,7 @@ _08011D90: .4byte 0x00002108 sub_8011D94: @ 8011D94 push {lr} adds r2, r0, 0 - ldr r0, _08011DC0 @ =gUnknown_2023F4C + ldr r0, _08011DC0 @ =gIntroSlideFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 @@ -3941,7 +3941,7 @@ _08011DBC: pop {r0} bx r0 .align 2, 0 -_08011DC0: .4byte gUnknown_2023F4C +_08011DC0: .4byte gIntroSlideFlags _08011DC4: .4byte sub_8011DC8 thumb_func_end sub_8011D94 @@ -3960,7 +3960,7 @@ sub_8011DC8: @ 8011DC8 lsls r0, 24 lsrs r0, 24 bl sub_804BD94 - ldr r1, _08011E18 @ =gUnknown_3004FF0 + ldr r1, _08011E18 @ =gHealthboxSpriteIds movs r2, 0x2E ldrsh r0, [r4, r2] adds r0, r1 @@ -3985,7 +3985,7 @@ _08011E10: pop {r0} bx r0 .align 2, 0 -_08011E18: .4byte gUnknown_3004FF0 +_08011E18: .4byte gHealthboxSpriteIds _08011E1C: .4byte nullsub_10 _08011E20: .4byte 0x00002108 thumb_func_end sub_8011DC8 @@ -4071,7 +4071,7 @@ sub_8011EA0: @ 8011EA0 ldrh r0, [r0, 0x2E] lsls r0, 24 lsrs r6, r0, 24 - ldr r0, _08011EC4 @ =gUnknown_2024018 + ldr r0, _08011EC4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r6, 2 @@ -4082,7 +4082,7 @@ sub_8011EA0: @ 8011EA0 adds r4, r0, 0 b _08011ECC .align 2, 0 -_08011EC4: .4byte gUnknown_2024018 +_08011EC4: .4byte gBattleSpritesDataPtr _08011EC8: mov r0, r9 ldrh r4, [r0, 0x32] @@ -4364,7 +4364,7 @@ _080120CC: .4byte oac_poke_ally_ oac_poke_ally_: @ 80120D0 push {lr} adds r2, r0, 0 - ldr r0, _080120F8 @ =gUnknown_2023F4C + ldr r0, _080120F8 @ =gIntroSlideFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 @@ -4384,7 +4384,7 @@ _080120F4: pop {r0} bx r0 .align 2, 0 -_080120F8: .4byte gUnknown_2023F4C +_080120F8: .4byte gIntroSlideFlags _080120FC: .4byte nullsub_11 thumb_func_end oac_poke_ally_ @@ -4406,7 +4406,7 @@ nullsub_11: @ 801210C sub_8012110: @ 8012110 push {lr} adds r2, r0, 0 - ldr r0, _08012134 @ =gUnknown_2023F4C + ldr r0, _08012134 @ =gIntroSlideFlags ldrh r1, [r0] movs r0, 0x1 ands r0, r1 @@ -4424,7 +4424,7 @@ _08012130: pop {r0} bx r0 .align 2, 0 -_08012134: .4byte gUnknown_2023F4C +_08012134: .4byte gIntroSlideFlags thumb_func_end sub_8012110 thumb_func_start dp11b_obj_instanciate @@ -4447,7 +4447,7 @@ dp11b_obj_instanciate: @ 8012138 mov r10, r3 cmp r1, 0 beq _08012174 - ldr r0, _08012170 @ =gUnknown_2024018 + ldr r0, _08012170 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r2, r4, 1 @@ -4458,9 +4458,9 @@ dp11b_obj_instanciate: @ 8012138 movs r0, 0x2 b _08012186 .align 2, 0 -_08012170: .4byte gUnknown_2024018 +_08012170: .4byte gBattleSpritesDataPtr _08012174: - ldr r0, _080121D0 @ =gUnknown_2024018 + ldr r0, _080121D0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r2, r4, 1 @@ -4481,10 +4481,10 @@ _08012186: mov r0, r8 cmp r0, 0x1 bne _080121E0 - ldr r0, _080121D8 @ =gUnknown_3004FF0 + ldr r0, _080121D8 @ =gHealthboxSpriteIds adds r0, r4, r0 ldrb r7, [r0] - ldr r2, _080121D0 @ =gUnknown_2024018 + ldr r2, _080121D0 @ =gBattleSpritesDataPtr ldr r0, [r2] ldr r0, [r0, 0x4] adds r1, r6, r4 @@ -4506,15 +4506,15 @@ _08012186: movs r1, 0x80 b _0801220E .align 2, 0 -_080121D0: .4byte gUnknown_2024018 +_080121D0: .4byte gBattleSpritesDataPtr _080121D4: .4byte SpriteCB_HealthBoxBounce -_080121D8: .4byte gUnknown_3004FF0 +_080121D8: .4byte gHealthboxSpriteIds _080121DC: .4byte gSprites _080121E0: ldr r0, _0801224C @ =gBattlerSpriteIds adds r0, r4, r0 ldrb r7, [r0] - ldr r2, _08012250 @ =gUnknown_2024018 + ldr r2, _08012250 @ =gBattleSpritesDataPtr ldr r0, [r2] ldr r0, [r0, 0x4] adds r1, r6, r4 @@ -4568,7 +4568,7 @@ _0801223C: bx r0 .align 2, 0 _0801224C: .4byte gBattlerSpriteIds -_08012250: .4byte gUnknown_2024018 +_08012250: .4byte gBattleSpritesDataPtr _08012254: .4byte gSprites thumb_func_end dp11b_obj_instanciate @@ -4581,7 +4581,7 @@ dp11b_obj_free: @ 8012258 lsrs r1, 24 cmp r1, 0x1 bne _080122AC - ldr r6, _080122A4 @ =gUnknown_2024018 + ldr r6, _080122A4 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -4611,10 +4611,10 @@ dp11b_obj_free: @ 8012258 negs r0, r0 b _080122E6 .align 2, 0 -_080122A4: .4byte gUnknown_2024018 +_080122A4: .4byte gBattleSpritesDataPtr _080122A8: .4byte gSprites _080122AC: - ldr r6, _08012300 @ =gUnknown_2024018 + ldr r6, _08012300 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -4658,7 +4658,7 @@ _080122FA: pop {r0} bx r0 .align 2, 0 -_08012300: .4byte gUnknown_2024018 +_08012300: .4byte gBattleSpritesDataPtr _08012304: .4byte gSprites thumb_func_end dp11b_obj_free @@ -4997,7 +4997,7 @@ _0801255C: movs r0, 0 ldr r1, _0801273C @ =gBattleMoveDamage str r0, [r1] - ldr r2, _08012740 @ =gUnknown_2023F4C + ldr r2, _08012740 @ =gIntroSlideFlags strh r0, [r2] mov r1, r9 ldr r0, _08012720 @ =gBattleScripting @@ -5200,7 +5200,7 @@ _08012730: .4byte gUnknown_2023E7E _08012734: .4byte gUnknown_2023E82 _08012738: .4byte gUnknown_2023E7C _0801273C: .4byte gBattleMoveDamage -_08012740: .4byte gUnknown_2023F4C +_08012740: .4byte gIntroSlideFlags _08012744: .4byte gUnknown_3004FD4 _08012748: .4byte gAbsentBattlerFlags _0801274C: .4byte gBattleStruct diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 4a8c6d51c..8925effc6 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -14,7 +14,7 @@ ClearBattleAnimationVars: @ 80724C0 ldr r0, _08072554 @ =gUnknown_2037EE0 movs r1, 0 strb r1, [r0] - ldr r0, _08072558 @ =gUnknown_2037EE1 + ldr r0, _08072558 @ =gAnimScriptActive strb r1, [r0] ldr r0, _0807255C @ =gUnknown_2037EE2 strb r1, [r0] @@ -85,7 +85,7 @@ _08072520: bx r0 .align 2, 0 _08072554: .4byte gUnknown_2037EE0 -_08072558: .4byte gUnknown_2037EE1 +_08072558: .4byte gAnimScriptActive _0807255C: .4byte gUnknown_2037EE2 _08072560: .4byte gUnknown_2037EE3 _08072564: .4byte gAnimDisableStructPtr @@ -120,7 +120,7 @@ DoMoveAnim: @ 807259C strb r0, [r2] ldr r0, _080725D0 @ =gUnknown_81C68F4 movs r2, 0x1 - bl sub_80725D4 + bl LaunchBattleAnimation pop {r0} bx r0 .align 2, 0 @@ -131,8 +131,8 @@ _080725CC: .4byte gBattlerTarget _080725D0: .4byte gUnknown_81C68F4 thumb_func_end DoMoveAnim - thumb_func_start sub_80725D4 -sub_80725D4: @ 80725D4 + thumb_func_start LaunchBattleAnimation +LaunchBattleAnimation: @ 80725D4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -200,10 +200,10 @@ _08072658: ldr r5, _080726C8 @ =gUnknown_2037ED4 mov r0, r8 lsls r3, r0, 2 - ldr r6, _080726CC @ =gUnknown_2037EE1 + ldr r6, _080726CC @ =gAnimScriptActive ldr r1, _080726D0 @ =gUnknown_2037EE0 mov r12, r1 - ldr r0, _080726D4 @ =gUnknown_2037EDC + ldr r0, _080726D4 @ =gAnimScriptCallback mov r10, r0 ldr r7, _080726D8 @ =RunAnimScriptCommand ldr r1, _080726DC @ =gBattleAnimArgs @@ -253,9 +253,9 @@ _080726A6: _080726C0: .4byte gUnknown_2037F18 _080726C4: .4byte gUnknown_2037F14 _080726C8: .4byte gUnknown_2037ED4 -_080726CC: .4byte gUnknown_2037EE1 +_080726CC: .4byte gAnimScriptActive _080726D0: .4byte gUnknown_2037EE0 -_080726D4: .4byte gUnknown_2037EDC +_080726D4: .4byte gAnimScriptCallback _080726D8: .4byte RunAnimScriptCommand _080726DC: .4byte gBattleAnimArgs _080726E0: .4byte 0x0000ffff @@ -300,7 +300,7 @@ _08072730: .4byte gUnknown_2022984 _08072734: .4byte gUnknown_2022986 _08072738: .4byte gUnknown_2022988 _0807273C: .4byte gUnknown_202298A - thumb_func_end sub_80725D4 + thumb_func_end LaunchBattleAnimation thumb_func_start DestroyAnimSprite DestroyAnimSprite: @ 8072740 @@ -419,14 +419,14 @@ WaitAnimFrameCount: @ 80727FC ldrsb r0, [r2, r0] cmp r0, 0 bgt _08072820 - ldr r0, _08072818 @ =gUnknown_2037EDC + ldr r0, _08072818 @ =gAnimScriptCallback ldr r1, _0807281C @ =RunAnimScriptCommand str r1, [r0] movs r0, 0 b _08072822 .align 2, 0 _08072814: .4byte gUnknown_2037EE0 -_08072818: .4byte gUnknown_2037EDC +_08072818: .4byte gAnimScriptCallback _0807281C: .4byte RunAnimScriptCommand _08072820: subs r0, r1, 0x1 @@ -454,7 +454,7 @@ _0807282C: asrs r0, 24 cmp r0, 0 bne _08072850 - ldr r0, _08072864 @ =gUnknown_2037EE1 + ldr r0, _08072864 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _0807282C @@ -466,7 +466,7 @@ _08072850: _08072858: .4byte gUnknown_83ADF5C _0807285C: .4byte gUnknown_2037ED4 _08072860: .4byte gUnknown_2037EE0 -_08072864: .4byte gUnknown_2037EE1 +_08072864: .4byte gAnimScriptActive thumb_func_end RunAnimScriptCommand thumb_func_start ScriptCmd_loadspritegfx @@ -500,7 +500,7 @@ ScriptCmd_loadspritegfx: @ 8072868 ldr r1, _080728C4 @ =gUnknown_2037EE0 movs r0, 0x1 strb r0, [r1] - ldr r1, _080728C8 @ =gUnknown_2037EDC + ldr r1, _080728C8 @ =gAnimScriptCallback ldr r0, _080728CC @ =WaitAnimFrameCount str r0, [r1] pop {r4-r6} @@ -512,7 +512,7 @@ _080728B8: .4byte gUnknown_8399388 _080728BC: .4byte gUnknown_8399C90 _080728C0: .4byte 0xffffd8f0 _080728C4: .4byte gUnknown_2037EE0 -_080728C8: .4byte gUnknown_2037EDC +_080728C8: .4byte gAnimScriptCallback _080728CC: .4byte WaitAnimFrameCount thumb_func_end ScriptCmd_loadspritegfx @@ -651,13 +651,13 @@ _080729CC: ldr r5, _08072A08 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -762,7 +762,7 @@ ScriptCmd_delay: @ 8072A8C _08072AAA: adds r0, r2, 0x1 str r0, [r1] - ldr r1, _08072AC4 @ =gUnknown_2037EDC + ldr r1, _08072AC4 @ =gAnimScriptCallback ldr r0, _08072AC8 @ =WaitAnimFrameCount str r0, [r1] pop {r4} @@ -771,7 +771,7 @@ _08072AAA: .align 2, 0 _08072ABC: .4byte gUnknown_2037ED4 _08072AC0: .4byte gUnknown_2037EE0 -_08072AC4: .4byte gUnknown_2037EDC +_08072AC4: .4byte gAnimScriptCallback _08072AC8: .4byte WaitAnimFrameCount thumb_func_end ScriptCmd_delay @@ -913,7 +913,7 @@ _08072BB2: bl sub_80767F0 movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes - ldr r0, _08072C04 @ =gUnknown_2037EE1 + ldr r0, _08072C04 @ =gAnimScriptActive mov r1, r8 strb r1, [r0] _08072BDC: @@ -930,7 +930,7 @@ _08072BF4: .4byte 0x0000ffff _08072BF8: .4byte gUnknown_83ACC08 _08072BFC: .4byte gUnknown_2037EEE _08072C00: .4byte gMPlayInfo_BGM -_08072C04: .4byte gUnknown_2037EE1 +_08072C04: .4byte gAnimScriptActive thumb_func_end sub_8072B08 thumb_func_start sub_8072C08 @@ -1175,11 +1175,11 @@ IsBattlerSpriteVisible: @ 8072DF0 lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _08072E40 - ldr r0, _08072E34 @ =gUnknown_2024018 + ldr r0, _08072E34 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -1206,7 +1206,7 @@ _08072E30: movs r0, 0x1 b _08072E42 .align 2, 0 -_08072E34: .4byte gUnknown_2024018 +_08072E34: .4byte gBattleSpritesDataPtr _08072E38: .4byte gSprites _08072E3C: .4byte gBattlerSpriteIds _08072E40: @@ -2772,7 +2772,7 @@ sub_8073A44: @ 8073A44 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _08073A78 @ =gUnknown_2024018 + ldr r0, _08073A78 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _08073A7C @ =gBattleAnimAttacker ldrb r2, [r0] @@ -2795,7 +2795,7 @@ sub_8073A44: @ 8073A44 movs r4, 0x3F b _08073AE6 .align 2, 0 -_08073A78: .4byte gUnknown_2024018 +_08073A78: .4byte gBattleSpritesDataPtr _08073A7C: .4byte gBattleAnimAttacker _08073A80: adds r0, r2, 0 @@ -2874,7 +2874,7 @@ sub_8073B08: @ 8073B08 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _08073B3C @ =gUnknown_2024018 + ldr r0, _08073B3C @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _08073B40 @ =gBattleAnimAttacker ldrb r2, [r0] @@ -2897,7 +2897,7 @@ sub_8073B08: @ 8073B08 movs r4, 0x3F b _08073B56 .align 2, 0 -_08073B3C: .4byte gUnknown_2024018 +_08073B3C: .4byte gBattleSpritesDataPtr _08073B40: .4byte gBattleAnimAttacker _08073B44: adds r0, r2, 0 @@ -3942,7 +3942,7 @@ sub_8074320: @ 8074320 ldrb r7, [r0, 0x1] adds r0, 0x2 str r0, [r1] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080743C2 @@ -4024,7 +4024,7 @@ sub_80743C8: @ 80743C8 ldrb r7, [r0, 0x1] adds r0, 0x2 str r0, [r1] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0807444C diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index 0d12c15d0..c9cbfea7e 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -103,13 +103,13 @@ sub_80A2388: @ 80A2388 ldr r5, _080A23CC @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -143,13 +143,13 @@ sub_80A23D8: @ 80A23D8 ldr r5, _080A2424 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -182,7 +182,7 @@ sub_80A2430: @ 80A2430 ldr r5, _080A2484 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -190,7 +190,7 @@ sub_80A2430: @ 80A2430 strh r0, [r4, 0x34] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -345,13 +345,13 @@ sub_80A2580: @ 80A2580 ldr r5, _080A25C8 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -401,13 +401,13 @@ sub_80A25EC: @ 80A25EC ldr r4, _080A2634 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -438,7 +438,7 @@ _080A263C: ldr r4, _080A269C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -446,7 +446,7 @@ _080A263C: strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -538,7 +538,7 @@ _080A2710: ldr r5, _080A2758 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -546,7 +546,7 @@ _080A2710: strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] @@ -760,7 +760,7 @@ sub_80A28C4: @ 80A28C4 lsls r0, 24 cmp r0, 0 bne _080A28DE - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080A28E6 @@ -814,7 +814,7 @@ sub_80A2920: @ 80A2920 ldr r0, _080A296C @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x4] @@ -916,7 +916,7 @@ sub_80A29EC: @ 80A29EC ldr r0, _080A2A38 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x4] @@ -1001,13 +1001,13 @@ sub_80A2AA4: @ 80A2AA4 ldr r5, _080A2AE0 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -1154,7 +1154,7 @@ _080A2BBC: ldr r4, _080A2BF8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] @@ -1162,7 +1162,7 @@ _080A2BBC: strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] @@ -1324,7 +1324,7 @@ sub_80A2D10: @ 80A2D10 lsls r0, 24 cmp r0, 0 bne _080A2D3C - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1805,7 +1805,7 @@ _080A30AA: _080A30C2: ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A3100 @ =gBattleAnimArgs lsrs r0, 24 @@ -1814,7 +1814,7 @@ _080A30C2: strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -1856,13 +1856,13 @@ _080A3104: ldr r4, _080A315C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -1892,13 +1892,13 @@ sub_80A3168: @ 80A3168 ldr r4, _080A31E0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1958,13 +1958,13 @@ sub_80A31EC: @ 80A31EC ldr r4, _080A32C8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord mov r8, r0 mov r0, r8 lsls r0, 24 @@ -1973,13 +1973,13 @@ sub_80A31EC: @ 80A31EC ldr r6, _080A32CC @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r2, r0, 0 lsls r2, 24 subs r4, r5 @@ -2117,7 +2117,7 @@ sub_80A3334: @ 80A3334 ldr r5, _080A33B0 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A33B4 @ =gBattleAnimArgs lsrs r0, 24 @@ -2126,7 +2126,7 @@ sub_80A3334: @ 80A3334 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -2374,12 +2374,12 @@ sub_80A3518: @ 80A3518 ldr r4, _080A3560 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080A3564 @ =gBattleAnimAttacker @@ -2481,7 +2481,7 @@ sub_80A35F4: @ 80A35F4 ldr r4, _080A3630 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] @@ -2583,12 +2583,12 @@ sub_80A36B4: @ 80A36B4 ldr r4, _080A36FC @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080A3700 @ =gBattleAnimTarget @@ -3002,13 +3002,13 @@ sub_80A39C0: @ 80A39C0 strh r0, [r5, 0x10] ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x16] @@ -3894,7 +3894,7 @@ _080A40CE: _080A40D4: adds r0, r6, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5] @@ -3917,7 +3917,7 @@ _080A4100: ldr r0, _080A4144 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r7, [r7] @@ -4149,12 +4149,12 @@ _080A42C4: _080A42C6: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080A4304 @ =gBattleAnimArgs @@ -4428,13 +4428,13 @@ sub_80A44E0: @ 80A44E0 ldr r4, _080A4530 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -4531,7 +4531,7 @@ _080A45A8: movs r4, 0x2 eors r0, r4 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r7, r0, 24 ldrb r0, [r5] @@ -4544,12 +4544,12 @@ _080A45C8: ldr r5, _080A4620 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r7, r0, 24 ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r5] @@ -4565,7 +4565,7 @@ _080A45C8: mov r2, r8 eors r0, r2 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r7 @@ -4574,7 +4574,7 @@ _080A45C8: mov r1, r8 eors r0, r1 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r4 @@ -4586,13 +4586,13 @@ _080A4624: ldr r4, _080A4670 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r7, r0, 24 ldrb r0, [r4] _080A4634: movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r4, r0, 24 _080A463E: @@ -5202,14 +5202,14 @@ sub_80A4ACC: @ 80A4ACC ldr r6, _080A4B2C @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0x20] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r1, _080A4B30 @ =0x0000ffe8 @@ -5551,7 +5551,7 @@ _080A4D78: ldr r0, _080A4DBC @ =gBattleAnimTarget _080A4D7A: ldrb r6, [r0] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A4DC4 @@ -5590,7 +5590,7 @@ _080A4DC4: bne _080A4DE8 adds r0, r6, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] @@ -5602,14 +5602,14 @@ _080A4DE4: .4byte gBattleAnimArgs _080A4DE8: adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] adds r0, r6, 0 movs r1, 0x3 _080A4DFA: - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -6036,14 +6036,14 @@ _080A5118: ldr r4, _080A5168 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r7 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 @@ -7134,7 +7134,7 @@ _080A595C: _080A595E: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x2] @@ -7142,7 +7142,7 @@ _080A595E: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x4] @@ -7172,7 +7172,7 @@ sub_80A59A8: @ 80A59A8 ldr r5, _080A59E0 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r1, _080A59E4 @ =0x0000ffd0 @@ -7180,7 +7180,7 @@ sub_80A59A8: @ 80A59A8 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -7206,7 +7206,7 @@ sub_80A59F0: @ 80A59F0 ldr r5, _080A5A34 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r1, _080A5A38 @ =gBattleAnimArgs @@ -7218,7 +7218,7 @@ sub_80A59F0: @ 80A59F0 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -7343,7 +7343,7 @@ _080A5AF4: _080A5AF6: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x2] @@ -7351,7 +7351,7 @@ _080A5AF6: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x4] @@ -7417,14 +7417,14 @@ sub_80A5B7C: @ 80A5B7C ldr r6, _080A5BC4 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r4, 0x20] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0xC @@ -7544,7 +7544,7 @@ sub_80A5C68: @ 80A5C68 ldr r4, _080A5CC8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r5, _080A5CCC @ =gBattleAnimArgs lsrs r0, 24 @@ -7553,7 +7553,7 @@ sub_80A5C68: @ 80A5C68 strh r0, [r6, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x2] @@ -7701,13 +7701,13 @@ _080A5D90: ldr r4, _080A5DD4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -7781,7 +7781,7 @@ sub_80A5E34: @ 80A5E34 cmp r4, r0 bcs _080A5E90 ldr r6, _080A5EA0 @ =gBattleAnimArgs - ldr r5, _080A5EA4 @ =gUnknown_3004FF0 + ldr r5, _080A5EA4 @ =gHealthboxSpriteIds _080A5E48: movs r1, 0 ldrsh r0, [r6, r1] @@ -7826,7 +7826,7 @@ _080A5E90: .align 2, 0 _080A5E9C: .4byte gBattlersCount _080A5EA0: .4byte gBattleAnimArgs -_080A5EA4: .4byte gUnknown_3004FF0 +_080A5EA4: .4byte gHealthboxSpriteIds thumb_func_end sub_80A5E34 thumb_func_start sub_80A5EA8 @@ -7837,7 +7837,7 @@ sub_80A5EA8: @ 80A5EA8 movs r4, 0 b _080A5EC2 _080A5EB2: - ldr r0, _080A5ED8 @ =gUnknown_3004FF0 + ldr r0, _080A5ED8 @ =gHealthboxSpriteIds adds r0, r4, r0 ldrb r0, [r0] bl SetHealthboxSpriteVisible @@ -7855,7 +7855,7 @@ _080A5EC2: pop {r0} bx r0 .align 2, 0 -_080A5ED8: .4byte gUnknown_3004FF0 +_080A5ED8: .4byte gHealthboxSpriteIds _080A5EDC: .4byte gBattlersCount thumb_func_end sub_80A5EA8 @@ -7920,7 +7920,7 @@ sub_80A5F40: @ 80A5F40 ldr r0, _080A5F78 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r2, _080A5F7C @ =gBattleAnimArgs lsrs r0, 24 @@ -8333,7 +8333,7 @@ _080A6262: ldr r4, _080A62CC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6] @@ -8341,7 +8341,7 @@ _080A6262: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x2] @@ -8948,12 +8948,12 @@ _080A6734: ldr r4, _080A6784 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r3, r0, 24 _080A674E: @@ -9161,7 +9161,7 @@ sub_80A68B0: @ 80A68B0 _080A68CE: ldrb r0, [r7] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A6938 @ =gBattleAnimArgs lsrs r0, 24 @@ -9171,7 +9171,7 @@ _080A68CE: strh r0, [r6, 0x20] ldrb r0, [r7] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r4, 0x4] @@ -9300,14 +9300,14 @@ _080A69DE: ldr r4, _080A6A1C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x8 @@ -9470,7 +9470,7 @@ _080A6B36: strh r0, [r6, 0x20] adds r0, r5, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 adds r0, r5, 0 movs r1, 0 @@ -9654,7 +9654,7 @@ _080A6CA2: ldrb r5, [r0] adds r0, r5, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r6, 0 diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index a2a1a6731..339ffcba9 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -185,13 +185,13 @@ sub_80A6F8C: @ 80A6F8C ldr r4, _080A6FD4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -639,7 +639,7 @@ _080A730E: ldr r4, _080A73BC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r6, _080A73B8 @ =gBattleAnimArgs lsrs r0, 24 @@ -650,7 +650,7 @@ _080A730E: mov r8, r0 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r6, 0x6] @@ -1194,7 +1194,7 @@ _080A7754: strh r0, [r3, 0x4] b _080A77B6 _080A775C: - ldr r1, _080A77A0 @ =gUnknown_2023BD6 + ldr r1, _080A77A0 @ =gBattlerPositions ldr r0, _080A77A4 @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 @@ -1228,7 +1228,7 @@ _080A775C: ands r0, r1 b _080A77B4 .align 2, 0 -_080A77A0: .4byte gUnknown_2023BD6 +_080A77A0: .4byte gBattlerPositions _080A77A4: .4byte gBattleAnimTarget _080A77A8: .4byte gTasks _080A77AC: .4byte gBattleAnimArgs @@ -1241,7 +1241,7 @@ _080A77B6: ldr r5, _080A7810 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord ldr r1, _080A7814 @ =gTasks mov r3, r8 adds r4, r3, r7 @@ -1253,7 +1253,7 @@ _080A77B6: adds r6, r0, 0 ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] @@ -1288,13 +1288,13 @@ _080A7820: ldr r4, _080A787C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r1, r10 @@ -1596,12 +1596,12 @@ sub_80A7A88: @ 80A7A88 ldr r4, _080A7B28 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A7B2C @ =gBattleAnimArgs lsrs r0, 24 @@ -1754,13 +1754,13 @@ sub_80A7BC4: @ 80A7BC4 ldr r5, _080A7C10 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -1986,14 +1986,14 @@ _080A7D90: ldr r4, _080A7DEC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 add r0, r8 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 @@ -2079,7 +2079,7 @@ _080A7E48: ldr r4, _080A7EB4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 add r0, r9 @@ -2088,7 +2088,7 @@ _080A7E48: strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 @@ -2959,7 +2959,7 @@ sub_80A851C: @ 80A851C bl StartSpriteAnim ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -2974,7 +2974,7 @@ _080A8550: bl StartSpriteAnim ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x20 @@ -2985,7 +2985,7 @@ _080A856A: ldr r0, _080A85A0 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r1, 0 @@ -3042,7 +3042,7 @@ _080A85CA: _080A85E4: adds r0, r5, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A862C @ =gBattleAnimArgs lsrs r0, 24 @@ -3051,7 +3051,7 @@ _080A85E4: strh r0, [r6, 0x20] adds r0, r5, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x4] @@ -3602,7 +3602,7 @@ sub_80A8A1C: @ 80A8A1C ldr r6, _080A8A70 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 @@ -3849,7 +3849,7 @@ _080A8BF2: movs r0, 0x1 adds r4, r0, 0 eors r4, r1 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080A8C6A @@ -3876,7 +3876,7 @@ _080A8C30: adds r0, r5, 0 movs r1, 0x2 _080A8C34: - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r4, r0, 24 adds r0, r5, 0 @@ -3995,7 +3995,7 @@ _080A8D10: beq _080A8D6C adds r0, r7, 0 mov r1, r10 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r1, _080A8D50 @ =gBattleAnimArgs lsrs r0, 24 @@ -4031,7 +4031,7 @@ _080A8D68: .4byte gBattlerSpriteIds _080A8D6C: adds r0, r7, 0 mov r1, r10 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r1, _080A8DD4 @ =gBattleAnimArgs @@ -4104,7 +4104,7 @@ _080A8DFA: strb r0, [r1] adds r0, r7, 0 ldr r1, [sp, 0x4] - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080A8E48 @ =gBattleAnimArgs lsrs r0, 24 @@ -4138,13 +4138,13 @@ _080A8E4C: mov r4, sp mov r0, r8 mov r1, r10 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4] mov r0, r8 ldr r1, [sp, 0x4] - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r2, sp @@ -5007,13 +5007,13 @@ sub_80A94AC: @ 80A94AC ldr r5, _080A9500 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -5428,7 +5428,7 @@ _080A9808: strh r0, [r5, 0x2E] ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -5436,7 +5436,7 @@ _080A9808: strh r0, [r5, 0x32] ldrb r0, [r6] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] @@ -5830,7 +5830,7 @@ sub_80A9B40: @ 80A9B40 ldr r5, _080A9B84 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -5838,7 +5838,7 @@ sub_80A9B40: @ 80A9B40 strh r0, [r4, 0x34] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -6585,13 +6585,13 @@ sub_80AA174: @ 80AA174 ldr r5, _080AA1C8 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -6743,13 +6743,13 @@ sub_80AA2B0: @ 80AA2B0 ldr r4, _080AA2F8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -6851,13 +6851,13 @@ sub_80AA37C: @ 80AA37C ldr r4, _080AA3C8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -7345,13 +7345,13 @@ _080AA734: _080AA736: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -7508,7 +7508,7 @@ _080AA856: _080AA870: adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r7, _080AA8F0 @ =gBattleAnimArgs lsrs r0, 24 @@ -7518,7 +7518,7 @@ _080AA870: strh r0, [r5, 0x20] adds r0, r6, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r7, 0x4] @@ -7872,13 +7872,13 @@ _080AAB30: ldr r4, _080AAB70 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x28 diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index de012070d..cc002606a 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -92,7 +92,7 @@ sub_80DE34C: @ 80DE34C ldr r6, _080DE398 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 8 @@ -102,7 +102,7 @@ sub_80DE34C: @ 80DE34C asrs r4, 16 ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 lsrs r1, 8 @@ -216,13 +216,13 @@ sub_80DE440: @ 80DE440 ldr r4, _080DE4CC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 @@ -1311,13 +1311,13 @@ sub_80DEC90: @ 80DEC90 ldr r4, _080DED08 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1590,7 +1590,7 @@ _080DEED8: _080DEEDA: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x2] @@ -1598,7 +1598,7 @@ _080DEEDA: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2005,13 +2005,13 @@ sub_80DF1DC: @ 80DF1DC ldr r6, _080DF234 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xC] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xE] @@ -2394,13 +2394,13 @@ _080DF4C4: ldr r4, _080DF51C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -2491,13 +2491,13 @@ _080DF5AA: ldr r4, _080DF5DC @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2950,7 +2950,7 @@ _080DF90A: ldr r0, _080DF930 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -3140,7 +3140,7 @@ _080DFA86: lsls r2, 3 adds r2, r3 ldrb r2, [r2, 0x1C] - bl sub_8034BF4 + bl HandleSpeciesGfxDataChange ldrb r1, [r6] mov r0, sp bl sub_8075300 @@ -3273,13 +3273,13 @@ _080DFB8A: cmp r0, 0 bne _080DFBC8 ldrb r0, [r4] - ldr r1, _080DFBE0 @ =gUnknown_2024018 + ldr r1, _080DFBE0 @ =gBattleSpritesDataPtr ldr r1, [r1] ldr r2, [r1] lsls r1, r0, 2 adds r1, r2 ldrh r1, [r1, 0x2] - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback _080DFBC8: adds r0, r5, 0 bl DestroyAnimVisualTask @@ -3291,7 +3291,7 @@ _080DFBCE: .align 2, 0 _080DFBD8: .4byte gBattleAnimAttacker _080DFBDC: .4byte gTasks -_080DFBE0: .4byte gUnknown_2024018 +_080DFBE0: .4byte gBattleSpritesDataPtr thumb_func_end sub_80DF9BC thumb_func_start c3_80DFBE4 @@ -3337,7 +3337,7 @@ sub_80DFC24: @ 80DFC24 ldr r1, _080DFC4C @ =gBattleAnimTarget ldrb r1, [r1] movs r2, 0x1 - bl sub_8034BF4 + bl HandleSpeciesGfxDataChange adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4} @@ -3678,14 +3678,14 @@ _080DFF06: ldr r4, _080E0000 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r5 strh r0, [r7, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -4094,7 +4094,7 @@ _080E0264: bl GetBattlerPosition lsls r0, 24 lsrs r4, r0, 24 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -5116,13 +5116,13 @@ sub_80E0A3C: @ 80E0A3C ldr r4, _080E0A98 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -5675,13 +5675,13 @@ sub_80E0E94: @ 80E0E94 ldr r5, _080E0ED0 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -5856,7 +5856,7 @@ sub_80E0FB8: @ 80E0FB8 movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, _080E1050 @ =gUnknown_2024018 + ldr r0, _080E1050 @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -5882,7 +5882,7 @@ _080E1040: .4byte gBattleAnimAttacker _080E1044: .4byte gBattlerPartyIndexes _080E1048: .4byte gBattleAnimTarget _080E104C: .4byte gPlayerParty -_080E1050: .4byte gUnknown_2024018 +_080E1050: .4byte gBattleSpritesDataPtr _080E1054: ldrb r0, [r4] lsls r0, 1 @@ -5930,7 +5930,7 @@ _080E107C: movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, _080E10EC @ =gUnknown_2024018 + ldr r0, _080E10EC @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -5956,7 +5956,7 @@ _080E107C: _080E10E0: .4byte gBattlerPartyIndexes _080E10E4: .4byte gBattleAnimTarget _080E10E8: .4byte gEnemyParty -_080E10EC: .4byte gUnknown_2024018 +_080E10EC: .4byte gBattleSpritesDataPtr _080E10F0: .4byte gPlayerParty _080E10F4: ldrb r0, [r4] @@ -5985,13 +5985,13 @@ _080E1112: ldr r5, _080E1200 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 mov r2, r8 lsls r1, r2, 16 @@ -7031,7 +7031,7 @@ _080E194E: ldr r4, _080E1988 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x2] @@ -7039,7 +7039,7 @@ _080E194E: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x4] @@ -7602,13 +7602,13 @@ _080E1DA2: ldrb r4, [r0] adds r0, r4, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x10] adds r0, r4, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] @@ -8031,7 +8031,7 @@ sub_80E20D4: @ 80E20D4 _080E20F0: ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080E2130 @ =gBattleAnimArgs lsrs r0, 24 @@ -8040,7 +8040,7 @@ _080E20F0: strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -8164,7 +8164,7 @@ sub_80E21CC: @ 80E21CC bne _080E2224 ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 @@ -8186,7 +8186,7 @@ _080E2220: .4byte gBattleAnimAttacker _080E2224: ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 @@ -8206,7 +8206,7 @@ _080E2248: ldr r5, _080E229C @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 @@ -8225,13 +8225,13 @@ _080E226C: ldr r4, _080E22A0 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x22] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x24] @@ -8595,14 +8595,14 @@ sub_80E2518: @ 80E2518 mov r10, r0 ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x1E] mov r1, r10 ldrb r0, [r1] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x20] @@ -8610,14 +8610,14 @@ sub_80E2518: @ 80E2518 mov r8, r0 ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x22] mov r1, r8 ldrb r0, [r1] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 mov r1, r8 ldrb r0, [r1] @@ -8918,7 +8918,7 @@ _080E27C0: strh r1, [r4, 0x3C] adds r0, r5, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -9225,7 +9225,7 @@ _080E2A0C: _080E2A0E: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] @@ -9617,7 +9617,7 @@ sub_80E2CE4: @ 80E2CE4 lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0x1 @@ -9625,7 +9625,7 @@ sub_80E2CE4: @ 80E2CE4 ldr r5, _080E2D38 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -9633,7 +9633,7 @@ sub_80E2CE4: @ 80E2CE4 movs r0, 0x2 eors r0, r1 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -10074,14 +10074,14 @@ _080E307C: lsls r0, 24 lsrs r0, 24 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r1, r0, 24 _080E309C: @@ -10298,10 +10298,10 @@ sub_80E321C: @ 80E321C ldr r4, _080E3250 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -10676,7 +10676,7 @@ _080E350C: ldr r0, _080E352C @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -10927,7 +10927,7 @@ _080E36B4: adds r0, r2 movs r1, 0x2 strh r1, [r0, 0x8] - ldr r0, _080E3750 @ =gUnknown_2024018 + ldr r0, _080E3750 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080E3754 @ =gBattleAnimTarget ldrb r0, [r0] @@ -10960,7 +10960,7 @@ _080E36B4: _080E3744: .4byte gSprites _080E3748: .4byte 0x0000fff0 _080E374C: .4byte gTasks -_080E3750: .4byte gUnknown_2024018 +_080E3750: .4byte gBattleSpritesDataPtr _080E3754: .4byte gBattleAnimTarget _080E3758: adds r1, r5, 0 @@ -11063,7 +11063,7 @@ sub_80E37FC: @ 80E37FC ble _080E3846 movs r0, 0 strh r0, [r4, 0x30] - ldr r0, _080E3870 @ =gUnknown_2024018 + ldr r0, _080E3870 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080E3874 @ =gBattleAnimTarget ldrb r0, [r0] @@ -11111,7 +11111,7 @@ _080E3846: beq _080E3890 b _080E38CE .align 2, 0 -_080E3870: .4byte gUnknown_2024018 +_080E3870: .4byte gBattleSpritesDataPtr _080E3874: .4byte gBattleAnimTarget _080E3878: ldrh r0, [r4, 0x32] @@ -11364,7 +11364,7 @@ _080E3A2C: movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, _080E3A9C @ =gUnknown_2024018 + ldr r0, _080E3A9C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -11387,7 +11387,7 @@ _080E3A2C: _080E3A90: .4byte gBattleAnimAttacker _080E3A94: .4byte gBattlerPartyIndexes _080E3A98: .4byte gPlayerParty -_080E3A9C: .4byte gUnknown_2024018 +_080E3A9C: .4byte gBattleSpritesDataPtr _080E3AA0: ldrh r5, [r1, 0x2] _080E3AA2: @@ -11433,7 +11433,7 @@ _080E3ACC: movs r1, 0x1 bl GetMonData mov r9, r0 - ldr r0, _080E3B2C @ =gUnknown_2024018 + ldr r0, _080E3B2C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r2, [r4] ldr r1, [r0] @@ -11455,7 +11455,7 @@ _080E3ACC: .align 2, 0 _080E3B24: .4byte gBattlerPartyIndexes _080E3B28: .4byte gEnemyParty -_080E3B2C: .4byte gUnknown_2024018 +_080E3B2C: .4byte gBattleSpritesDataPtr _080E3B30: ldrh r5, [r1, 0x2] _080E3B32: @@ -11479,7 +11479,7 @@ _080E3B54: ldr r0, _080E3BD8 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 lsls r3, r6, 16 @@ -11501,7 +11501,7 @@ _080E3B54: bl sub_80768D0 lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080E3BE0 @ =gUnknown_2024018 + ldr r0, _080E3BE0 @ =gBattleSpritesDataPtr ldr r1, [r0] ldrb r0, [r4] ldr r1, [r1] @@ -11540,7 +11540,7 @@ _080E3BD0: .4byte gSprites _080E3BD4: .4byte 0x0000ffe0 _080E3BD8: .4byte gBattleAnimTarget _080E3BDC: .4byte gBattleAnimAttacker -_080E3BE0: .4byte gUnknown_2024018 +_080E3BE0: .4byte gBattleSpritesDataPtr _080E3BE4: .4byte 0x00007fff _080E3BE8: .4byte gTasks _080E3BEC: @@ -11627,7 +11627,7 @@ _080E3C5A: ldr r0, _080E3CB4 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -11644,7 +11644,7 @@ _080E3CB8: ldr r0, _080E3CFC @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r4, r0 @@ -11790,7 +11790,7 @@ _080E3D90: mov r1, r10 ldrb r0, [r1] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r3, r5, 0 @@ -11823,7 +11823,7 @@ _080E3E10: mov r2, r10 ldrb r0, [r2] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r3, r5, 0 @@ -11892,7 +11892,7 @@ _080E3E96: ldr r0, _080E3F18 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x10 @@ -12054,14 +12054,14 @@ _080E4004: ldr r0, _080E4048 @ =gBattleAnimAttacker ldrb r0, [r0] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 ldr r0, _080E404C @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r2, r0, 0 @@ -12526,7 +12526,7 @@ sub_80E43A4: @ 80E43A4 ldr r4, _080E43E8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s index b971694e3..060a2af23 100644 --- a/asm/battle_anim_mons.s +++ b/asm/battle_anim_mons.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8074480 -sub_8074480: @ 8074480 + thumb_func_start GetBattlerSpriteCoord +GetBattlerSpriteCoord: @ 8074480 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -70,7 +70,7 @@ _08074500: lsls r0, 24 cmp r0, 0 beq _08074538 - ldr r0, _0807452C @ =gUnknown_2024018 + ldr r0, _0807452C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -87,11 +87,11 @@ _08074500: ldr r1, _08074534 @ =gEnemyParty b _08074556 .align 2, 0 -_0807452C: .4byte gUnknown_2024018 +_0807452C: .4byte gBattleSpritesDataPtr _08074530: .4byte gBattlerPartyIndexes _08074534: .4byte gEnemyParty _08074538: - ldr r0, _08074564 @ =gUnknown_2024018 + ldr r0, _08074564 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -114,7 +114,7 @@ _08074556: lsrs r1, r0, 16 b _08074572 .align 2, 0 -_08074564: .4byte gUnknown_2024018 +_08074564: .4byte gBattleSpritesDataPtr _08074568: .4byte gBattlerPartyIndexes _0807456C: .4byte gPlayerParty _08074570: @@ -136,7 +136,7 @@ _08074588: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_8074480 + thumb_func_end GetBattlerSpriteCoord thumb_func_start sub_8074590 sub_8074590: @ 8074590 @@ -154,7 +154,7 @@ sub_8074590: @ 8074590 bne _08074674 cmp r4, 0xC9 bne _08074638 - ldr r0, _080745D8 @ =gUnknown_2024018 + ldr r0, _080745D8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r5, 2 @@ -175,11 +175,11 @@ sub_8074590: @ 8074590 adds r2, r0, 0 b _080745EA .align 2, 0 -_080745D8: .4byte gUnknown_2024018 +_080745D8: .4byte gBattleSpritesDataPtr _080745DC: .4byte gBattlerPartyIndexes _080745E0: .4byte gPlayerParty _080745E4: - ldr r0, _08074620 @ =gUnknown_2024008 + ldr r0, _08074620 @ =gTransformedPersonalities adds r0, r1, r0 ldr r2, [r0] _080745EA: @@ -209,7 +209,7 @@ _080745EA: adds r0, r7, 0 b _0807462E .align 2, 0 -_08074620: .4byte gUnknown_2024008 +_08074620: .4byte gTransformedPersonalities _08074624: movs r1, 0xCE lsls r1, 1 @@ -255,7 +255,7 @@ _08074670: .4byte gUnknown_8235E6C _08074674: cmp r4, 0xC9 bne _08074704 - ldr r0, _080746A4 @ =gUnknown_2024018 + ldr r0, _080746A4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] lsls r1, r5, 2 @@ -276,11 +276,11 @@ _08074674: adds r2, r0, 0 b _080746B6 .align 2, 0 -_080746A4: .4byte gUnknown_2024018 +_080746A4: .4byte gBattleSpritesDataPtr _080746A8: .4byte gBattlerPartyIndexes _080746AC: .4byte gEnemyParty _080746B0: - ldr r0, _080746EC @ =gUnknown_2024008 + ldr r0, _080746EC @ =gTransformedPersonalities adds r0, r1, r0 ldr r2, [r0] _080746B6: @@ -310,7 +310,7 @@ _080746B6: adds r0, r7, 0 b _080746FA .align 2, 0 -_080746EC: .4byte gUnknown_2024008 +_080746EC: .4byte gTransformedPersonalities _080746F0: movs r1, 0xCE lsls r1, 1 @@ -397,12 +397,12 @@ _08074788: lsls r0, 1 cmp r4, r0 bls _08074798 - ldr r0, _08074794 @ =gUnknown_823A004 + ldr r0, _08074794 @ =gEnemyMonElevation b _0807479C .align 2, 0 -_08074794: .4byte gUnknown_823A004 +_08074794: .4byte gEnemyMonElevation _08074798: - ldr r0, _080747A8 @ =gUnknown_823A004 + ldr r0, _080747A8 @ =gEnemyMonElevation adds r0, r7, r0 _0807479C: ldrb r5, [r0] @@ -412,7 +412,7 @@ _0807479E: pop {r1} bx r1 .align 2, 0 -_080747A8: .4byte gUnknown_823A004 +_080747A8: .4byte gEnemyMonElevation thumb_func_end sub_807474C thumb_func_start sub_80747AC @@ -504,7 +504,7 @@ sub_8074844: @ 8074844 lsrs r1, 24 cmp r1, 0x1 bhi _08074896 - ldr r0, _08074874 @ =gUnknown_2024018 + ldr r0, _08074874 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r2, 2 @@ -518,7 +518,7 @@ sub_8074844: @ 8074844 ldrh r1, [r0] b _0807487E .align 2, 0 -_08074874: .4byte gUnknown_2024018 +_08074874: .4byte gBattleSpritesDataPtr _08074878: .4byte gUnknown_2037F1C _0807487C: ldrh r1, [r1, 0x2] @@ -537,7 +537,7 @@ _0807488C: _08074896: adds r0, r2, 0 adds r1, r3, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord _0807489E: lsls r0, 24 lsrs r0, 24 @@ -545,18 +545,18 @@ _0807489E: bx r1 thumb_func_end sub_8074844 - thumb_func_start GetBankSpriteDefault_Y -GetBankSpriteDefault_Y: @ 80748A8 + thumb_func_start GetBattlerSpriteDefault_Y +GetBattlerSpriteDefault_Y: @ 80748A8 push {lr} lsls r0, 24 lsrs r0, 24 movs r1, 0x4 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 - thumb_func_end GetBankSpriteDefault_Y + thumb_func_end GetBattlerSpriteDefault_Y thumb_func_start GetSubstituteSpriteDefault_Y GetSubstituteSpriteDefault_Y: @ 80748BC @@ -570,7 +570,7 @@ GetSubstituteSpriteDefault_Y: @ 80748BC beq _080748E0 adds r0, r4, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r1, 0x80 @@ -579,7 +579,7 @@ GetSubstituteSpriteDefault_Y: @ 80748BC _080748E0: adds r0, r4, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r1, 0x88 @@ -612,7 +612,7 @@ _0807491A: adds r0, r4, 0 movs r1, 0x4 _0807491E: - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 pop {r4} @@ -627,7 +627,7 @@ sub_807492C: @ 807492C lsrs r5, r0, 24 adds r0, r5, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 adds r0, r5, 0 @@ -635,7 +635,7 @@ sub_807492C: @ 807492C lsls r0, 24 cmp r0, 0 beq _08074978 - ldr r0, _0807496C @ =gUnknown_2024018 + ldr r0, _0807496C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -652,11 +652,11 @@ sub_807492C: @ 807492C ldr r1, _08074974 @ =gEnemyParty b _08074996 .align 2, 0 -_0807496C: .4byte gUnknown_2024018 +_0807496C: .4byte gBattleSpritesDataPtr _08074970: .4byte gBattlerPartyIndexes _08074974: .4byte gEnemyParty _08074978: - ldr r0, _080749A4 @ =gUnknown_2024018 + ldr r0, _080749A4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -679,7 +679,7 @@ _08074996: lsrs r4, r0, 16 b _080749B2 .align 2, 0 -_080749A4: .4byte gUnknown_2024018 +_080749A4: .4byte gBattleSpritesDataPtr _080749A8: .4byte gBattlerPartyIndexes _080749AC: .4byte gPlayerParty _080749B0: @@ -713,7 +713,7 @@ GetAnimBankSpriteId: @ 80749D4 bne _080749FC ldr r4, _080749F4 @ =gBattleAnimAttacker ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _08074A4A @@ -728,7 +728,7 @@ _080749FC: bne _08074A1C ldr r4, _08074A14 @ =gBattleAnimTarget ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _08074A4A @@ -1245,13 +1245,13 @@ sub_8074D80: @ 8074D80 ldr r5, _08074DBC @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -1446,13 +1446,13 @@ sub_8074EF4: @ 8074EF4 ldr r5, _08074F30 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -1556,13 +1556,13 @@ sub_8074FCC: @ 8074FCC ldr r4, _08074FF4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1585,13 +1585,13 @@ sub_8074FF8: @ 8074FF8 ldr r7, _08075030 @ =gBattleAnimAttacker ldrb r0, [r7] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08075034 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 cmp r6, r0 @@ -1824,26 +1824,26 @@ _080751C0: .4byte gBattleAnimArgs GetBattlerSide: @ 80751C4 lsls r0, 24 lsrs r0, 24 - ldr r1, _080751D4 @ =gUnknown_2023BD6 + ldr r1, _080751D4 @ =gBattlerPositions adds r0, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 bx lr .align 2, 0 -_080751D4: .4byte gUnknown_2023BD6 +_080751D4: .4byte gBattlerPositions thumb_func_end GetBattlerSide thumb_func_start GetBattlerPosition GetBattlerPosition: @ 80751D8 lsls r0, 24 lsrs r0, 24 - ldr r1, _080751E4 @ =gUnknown_2023BD6 + ldr r1, _080751E4 @ =gBattlerPositions adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 -_080751E4: .4byte gUnknown_2023BD6 +_080751E4: .4byte gBattlerPositions thumb_func_end GetBattlerPosition thumb_func_start GetBattlerAtPosition @@ -1856,7 +1856,7 @@ GetBattlerAtPosition: @ 80751E8 ldrb r2, [r0] cmp r1, r2 bcs _08075212 - ldr r4, _08075220 @ =gUnknown_2023BD6 + ldr r4, _08075220 @ =gBattlerPositions ldrb r0, [r4] cmp r0, r3 beq _08075212 @@ -1877,16 +1877,16 @@ _08075212: bx r1 .align 2, 0 _0807521C: .4byte gBattlersCount -_08075220: .4byte gUnknown_2023BD6 +_08075220: .4byte gBattlerPositions thumb_func_end GetBattlerAtPosition - thumb_func_start sub_8075224 -sub_8075224: @ 8075224 + thumb_func_start IsBattlerSpritePresent +IsBattlerSpritePresent: @ 8075224 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 adds r5, r4, 0 - ldr r0, _08075254 @ =gUnknown_2023BD6 + ldr r0, _08075254 @ =gBattlerPositions adds r0, r4, r0 ldrb r0, [r0] cmp r0, 0xFF @@ -1905,7 +1905,7 @@ sub_8075224: @ 8075224 ldr r1, _0807525C @ =gEnemyParty b _0807526E .align 2, 0 -_08075254: .4byte gUnknown_2023BD6 +_08075254: .4byte gBattlerPositions _08075258: .4byte gBattlerPartyIndexes _0807525C: .4byte gEnemyParty _08075260: @@ -1933,10 +1933,10 @@ _0807528A: pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_8075224 + thumb_func_end IsBattlerSpritePresent - thumb_func_start sub_8075290 -sub_8075290: @ 8075290 + thumb_func_start IsDoubleBattle +IsDoubleBattle: @ 8075290 ldr r0, _0807529C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 @@ -1944,7 +1944,7 @@ sub_8075290: @ 8075290 bx lr .align 2, 0 _0807529C: .4byte gBattleTypeFlags - thumb_func_end sub_8075290 + thumb_func_end IsDoubleBattle thumb_func_start sub_80752A0 sub_80752A0: @ 80752A0 @@ -2865,7 +2865,7 @@ _08075914: lsls r0, 30 cmp r0, 0 bne _0807595C - ldr r0, _0807597C @ =gUnknown_2024018 + ldr r0, _0807597C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 @@ -2898,7 +2898,7 @@ _0807595C: bx r0 .align 2, 0 _08075978: .4byte gSprites -_0807597C: .4byte gUnknown_2024018 +_0807597C: .4byte gBattleSpritesDataPtr thumb_func_end PrepareBattlerSpriteForRotScale thumb_func_start ResetSpriteRotScale @@ -3533,7 +3533,7 @@ _08075E30: ldr r4, _08075E74 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] @@ -3541,7 +3541,7 @@ _08075E30: strh r0, [r5, 0x32] ldrb r0, [r4] adds r1, r7, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] @@ -3586,7 +3586,7 @@ _08075EA0: ldr r5, _08075EE8 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -3594,7 +3594,7 @@ _08075EA0: strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] @@ -3687,7 +3687,7 @@ _08075F62: strh r0, [r5, 0x2E] adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r4, 0x4] @@ -3695,7 +3695,7 @@ _08075F62: strh r0, [r5, 0x32] adds r0, r6, 0 adds r1, r7, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] @@ -4441,7 +4441,7 @@ _08076508: lsls r0, 24 cmp r0, 0 bne _08076568 - ldr r0, _08076554 @ =gUnknown_2024018 + ldr r0, _08076554 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -4465,7 +4465,7 @@ _08076508: _08076548: .4byte gSprites _0807654C: .4byte gBattlerSpriteIds _08076550: .4byte gBattlerPartyIndexes -_08076554: .4byte gUnknown_2024018 +_08076554: .4byte gBattleSpritesDataPtr _08076558: .4byte gPlayerParty _0807655C: ldrh r1, [r1, 0x2] @@ -4475,7 +4475,7 @@ _0807655E: .align 2, 0 _08076564: .4byte gUnknown_8235E6C _08076568: - ldr r0, _08076594 @ =gUnknown_2024018 + ldr r0, _08076594 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r5, 2 @@ -4496,7 +4496,7 @@ _08076568: lsrs r1, r0, 16 b _0807659E .align 2, 0 -_08076594: .4byte gUnknown_2024018 +_08076594: .4byte gBattleSpritesDataPtr _08076598: .4byte gEnemyParty _0807659C: ldrh r1, [r1, 0x2] @@ -5019,7 +5019,7 @@ _0807694E: adds r0, r6, 0 ldr r1, [sp, 0x3C] mov r2, r8 - bl GetFrontSpritePalFromSpeciesAndPersonality + bl GetMonSpritePalFromSpeciesAndPersonality lsls r1, r5, 20 movs r2, 0x80 lsls r2, 17 @@ -5039,7 +5039,7 @@ _0807694E: lsrs r0, 24 cmp r0, 0x1 beq _0807699A - ldr r0, _080769BC @ =gUnknown_2024018 + ldr r0, _080769BC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r2, [sp, 0x40] @@ -5064,7 +5064,7 @@ _0807699A: _080769B0: .4byte gUnknown_83AE084 _080769B4: .4byte gUnknown_83AE054 _080769B8: .4byte gMonSpritesGfxPtr -_080769BC: .4byte gUnknown_2024018 +_080769BC: .4byte gBattleSpritesDataPtr _080769C0: .4byte gMonFrontPicTable _080769C4: lsls r0, r6, 3 @@ -5089,7 +5089,7 @@ _080769EC: adds r0, r6, 0 ldr r1, [sp, 0x3C] mov r2, r8 - bl GetFrontSpritePalFromSpeciesAndPersonality + bl GetMonSpritePalFromSpeciesAndPersonality lsls r1, r5, 20 movs r3, 0x80 lsls r3, 17 @@ -5109,7 +5109,7 @@ _080769EC: lsrs r0, 24 cmp r0, 0x1 beq _08076A32 - ldr r0, _08076A54 @ =gUnknown_2024018 + ldr r0, _08076A54 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] ldr r3, [sp, 0x40] @@ -5136,7 +5136,7 @@ _08076A46: bl LoadSpecialPokePic_DontHandleDeoxys b _08076A7C .align 2, 0 -_08076A54: .4byte gUnknown_2024018 +_08076A54: .4byte gBattleSpritesDataPtr _08076A58: .4byte gMonBackPicTable _08076A5C: .4byte gMonSpritesGfxPtr _08076A60: @@ -5254,7 +5254,7 @@ sub_8076B2C: @ 8076B2C lsls r0, 24 cmp r0, 0 bne _08076C08 - ldr r0, _08076B88 @ =gUnknown_2024018 + ldr r0, _08076B88 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 @@ -5284,12 +5284,12 @@ sub_8076B2C: @ 8076B2C adds r2, r0, 0 b _08076B9C .align 2, 0 -_08076B88: .4byte gUnknown_2024018 +_08076B88: .4byte gBattleSpritesDataPtr _08076B8C: .4byte gBattlerPartyIndexes _08076B90: .4byte gPlayerParty _08076B94: ldrh r7, [r1, 0x2] - ldr r0, _08076BD4 @ =gUnknown_2024008 + ldr r0, _08076BD4 @ =gTransformedPersonalities adds r0, r2, r0 ldr r2, [r0] _08076B9C: @@ -5321,7 +5321,7 @@ _08076B9C: movs r0, 0xC9 b _08076BE2 .align 2, 0 -_08076BD4: .4byte gUnknown_2024008 +_08076BD4: .4byte gTransformedPersonalities _08076BD8: movs r1, 0xCE lsls r1, 1 @@ -5350,7 +5350,7 @@ _08076BFC: .align 2, 0 _08076C04: .4byte gUnknown_8235E6C _08076C08: - ldr r0, _08076C48 @ =gUnknown_2024018 + ldr r0, _08076C48 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] mov r1, r8 @@ -5380,12 +5380,12 @@ _08076C08: adds r2, r0, 0 b _08076C5C .align 2, 0 -_08076C48: .4byte gUnknown_2024018 +_08076C48: .4byte gBattleSpritesDataPtr _08076C4C: .4byte gBattlerPartyIndexes _08076C50: .4byte gEnemyParty _08076C54: ldrh r7, [r1, 0x2] - ldr r0, _08076C94 @ =gUnknown_2024008 + ldr r0, _08076C94 @ =gTransformedPersonalities adds r0, r2, r0 ldr r2, [r0] _08076C5C: @@ -5417,7 +5417,7 @@ _08076C5C: movs r0, 0xC9 b _08076CA2 .align 2, 0 -_08076C94: .4byte gUnknown_2024008 +_08076C94: .4byte gTransformedPersonalities _08076C98: movs r1, 0xCE lsls r1, 1 @@ -5492,7 +5492,7 @@ _08076D1E: _08076D26: mov r0, r8 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrb r1, [r4] @@ -5501,7 +5501,7 @@ _08076D26: _08076D38: mov r0, r8 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrb r1, [r4] @@ -5510,7 +5510,7 @@ _08076D38: _08076D4A: mov r0, r8 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrb r2, [r4] @@ -5523,7 +5523,7 @@ _08076D5C: _08076D62: mov r0, r8 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrb r2, [r4] @@ -5536,7 +5536,7 @@ _08076D74: _08076D7A: mov r0, r8 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x1F @@ -5577,16 +5577,16 @@ _08076DBA: _08076DBE: adds r0, r4, 0 adds r1, r5, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r8, r0 adds r0, r4, 0 adds r1, r6, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r7, r0, 24 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08076E06 @@ -5594,12 +5594,12 @@ _08076DBE: eors r4, r0 adds r0, r4, 0 adds r1, r5, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 adds r0, r4, 0 adds r1, r6, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r3, r0, 24 mov r0, r8 @@ -6201,13 +6201,13 @@ sub_807729C: @ 807729C ldr r4, _080772D0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index 8d5d5a6b4..f047db552 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -56,7 +56,7 @@ sub_80EEC0C: @ 80EEC0C movs r1, 0x3 movs r2, 0x1 bl SetAnimBgAttribute - ldr r0, _080EEDCC @ =gUnknown_3004FF0 + ldr r0, _080EEDCC @ =gHealthboxSpriteIds adds r4, r0 ldrb r0, [r4] ldr r1, _080EEDD0 @ =gSprites @@ -209,7 +209,7 @@ _080EEDBC: .4byte gUnknown_2022986 _080EEDC0: .4byte 0x00003f3f _080EEDC4: .4byte 0x00003f3d _080EEDC8: .4byte 0x00003f42 -_080EEDCC: .4byte gUnknown_3004FF0 +_080EEDCC: .4byte gHealthboxSpriteIds _080EEDD0: .4byte gSprites _080EEDD4: .4byte SpriteCallbackDummy _080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap @@ -392,7 +392,7 @@ _080EEF00: movs r1, 0x1 movs r2, 0 bl SetAnimBgAttribute - ldr r0, _080EEFC4 @ =gUnknown_3004FF0 + ldr r0, _080EEFC4 @ =gHealthboxSpriteIds add r0, r8 ldrb r0, [r0] lsls r1, r0, 4 @@ -443,7 +443,7 @@ _080EEFB4: .4byte gUnknown_2022984 _080EEFB8: .4byte gUnknown_2022986 _080EEFBC: .4byte 0x00003f3f _080EEFC0: .4byte gSprites -_080EEFC4: .4byte gUnknown_3004FF0 +_080EEFC4: .4byte gHealthboxSpriteIds thumb_func_end sub_80EEDF4 thumb_func_start sub_80EEFC8 @@ -458,7 +458,7 @@ sub_80EEFC8: @ 80EEFC8 adds r7, r1, 0 lsls r2, 24 lsrs r2, 24 - ldr r0, _080EF0A0 @ =gUnknown_3004FF0 + ldr r0, _080EF0A0 @ =gHealthboxSpriteIds adds r2, r0 ldrb r0, [r2] lsls r5, r0, 4 @@ -553,7 +553,7 @@ sub_80EEFC8: @ 80EEFC8 pop {r0} bx r0 .align 2, 0 -_080EF0A0: .4byte gUnknown_3004FF0 +_080EF0A0: .4byte gHealthboxSpriteIds _080EF0A4: .4byte gSprites _080EF0A8: .4byte 0x0000d709 _080EF0AC: .4byte 0x0000d70a @@ -591,7 +591,7 @@ sub_80EF0E0: @ 80EF0E0 push {r5,r6} lsls r0, 24 lsrs r0, 24 - ldr r1, _080EF168 @ =gUnknown_3004FF0 + ldr r1, _080EF168 @ =gHealthboxSpriteIds adds r0, r1 ldrb r0, [r0] ldr r1, _080EF16C @ =gSprites @@ -650,7 +650,7 @@ sub_80EF0E0: @ 80EF0E0 pop {r0} bx r0 .align 2, 0 -_080EF168: .4byte gUnknown_3004FF0 +_080EF168: .4byte gHealthboxSpriteIds _080EF16C: .4byte gSprites _080EF170: .4byte 0x0000d709 _080EF174: .4byte 0x0000d70a @@ -963,13 +963,13 @@ _080EF3D8: ldr r5, _080EF450 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 ldr r2, _080EF454 @ =gSprites @@ -1095,7 +1095,7 @@ sub_80EF4E0: @ 80EF4E0 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080EF4FC @ =gUnknown_2024018 + ldr r0, _080EF4FC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -1107,7 +1107,7 @@ sub_80EF4E0: @ 80EF4E0 movs r0, 0 b _080EF518 .align 2, 0 -_080EF4FC: .4byte gUnknown_2024018 +_080EF4FC: .4byte gBattleSpritesDataPtr _080EF500: .4byte gBattleAnimArgs _080EF504: ldr r1, _080EF50C @ =gBattleAnimArgs @@ -1240,14 +1240,14 @@ sub_80EF5AC: @ 80EF5AC mov r8, r2 ldrb r0, [r2] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x30] mov r1, r8 ldrb r0, [r1] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 @@ -1257,7 +1257,7 @@ sub_80EF5AC: @ 80EF5AC adds r4, r0 ldr r0, _080EF684 @ =sub_80EF8C0 str r0, [r4] - ldr r0, _080EF688 @ =gUnknown_2024018 + ldr r0, _080EF688 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, [r0, 0x8] ldr r1, _080EF68C @ =gBattlerSpriteIds @@ -1302,7 +1302,7 @@ _080EF678: .4byte gUnknown_82606F4 _080EF67C: .4byte gSprites _080EF680: .4byte gBattleAnimTarget _080EF684: .4byte sub_80EF8C0 -_080EF688: .4byte gUnknown_2024018 +_080EF688: .4byte gBattleSpritesDataPtr _080EF68C: .4byte gBattlerSpriteIds _080EF690: .4byte gTasks _080EF694: .4byte sub_80EF698 @@ -1411,14 +1411,14 @@ _080EF708: mov r8, r1 ldrb r0, [r1] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x30] mov r1, r8 ldrb r0, [r1] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 @@ -1605,7 +1605,7 @@ sub_80EF8F0: @ 80EF8F0 lsls r0, 24 cmp r0, 0 beq _080EF99E - ldr r0, _080EF914 @ =gUnknown_2024018 + ldr r0, _080EF914 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -1615,7 +1615,7 @@ sub_80EF8F0: @ 80EF8F0 str r0, [r4, 0x1C] b _080EF99E .align 2, 0 -_080EF914: .4byte gUnknown_2024018 +_080EF914: .4byte gBattleSpritesDataPtr _080EF918: .4byte sub_80F0478 _080EF91C: cmp r0, 0x6 @@ -2040,7 +2040,7 @@ _080EFC52: adds r0, r1 strh r0, [r4, 0x22] strh r5, [r4, 0x26] - ldr r0, _080EFC84 @ =gUnknown_2024018 + ldr r0, _080EFC84 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -2052,7 +2052,7 @@ _080EFC52: b _080EFC96 .align 2, 0 _080EFC80: .4byte 0xffffff00 -_080EFC84: .4byte gUnknown_2024018 +_080EFC84: .4byte gBattleSpritesDataPtr _080EFC88: .4byte sub_80EFF80 _080EFC8C: ldr r0, _080EFC9C @ =sub_80EFCA0 @@ -2090,7 +2090,7 @@ sub_80EFCA0: @ 80EFCA0 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r0, _080EFCE4 @ =gUnknown_2024018 + ldr r0, _080EFCE4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strh r5, [r0, 0xC] @@ -2103,7 +2103,7 @@ _080EFCDC: pop {r0} bx r0 .align 2, 0 -_080EFCE4: .4byte gUnknown_2024018 +_080EFCE4: .4byte gBattleSpritesDataPtr _080EFCE8: .4byte sub_80EFCEC thumb_func_end sub_80EFCA0 @@ -2135,7 +2135,7 @@ _080EFD0C: .4byte _080EFED4 .4byte _080EFF34 _080EFD28: - ldr r1, _080EFD4C @ =gUnknown_2024018 + ldr r1, _080EFD4C @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2153,7 +2153,7 @@ _080EFD28: strh r0, [r1, 0xC] b _080EFD56 .align 2, 0 -_080EFD4C: .4byte gUnknown_2024018 +_080EFD4C: .4byte gBattleSpritesDataPtr _080EFD50: adds r0, r3, 0 adds r0, 0xB0 @@ -2214,7 +2214,7 @@ _080EFDB6: bl ChangeSpriteAffineAnim b _080EFF7A _080EFDC0: - ldr r1, _080EFDE4 @ =gUnknown_2024018 + ldr r1, _080EFDE4 @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2232,7 +2232,7 @@ _080EFDC0: strh r0, [r1, 0xC] b _080EFDEE .align 2, 0 -_080EFDE4: .4byte gUnknown_2024018 +_080EFDE4: .4byte gBattleSpritesDataPtr _080EFDE8: adds r0, r3, 0 adds r0, 0xB0 @@ -2307,7 +2307,7 @@ _080EFE68: movs r1, 0x1 bl ChangeSpriteAffineAnim _080EFE70: - ldr r1, _080EFE94 @ =gUnknown_2024018 + ldr r1, _080EFE94 @ =gBattleSpritesDataPtr ldr r5, [r1] ldr r2, [r5, 0x8] ldrh r3, [r2, 0xC] @@ -2325,7 +2325,7 @@ _080EFE70: strh r0, [r1, 0xC] b _080EFE9E .align 2, 0 -_080EFE94: .4byte gUnknown_2024018 +_080EFE94: .4byte gBattleSpritesDataPtr _080EFE98: adds r0, r3, 0 adds r0, 0xB0 @@ -2367,7 +2367,7 @@ _080EFED4: strh r0, [r4, 0x34] lsls r0, 16 asrs r1, r0, 24 - ldr r0, _080EFF04 @ =gUnknown_2024018 + ldr r0, _080EFF04 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0x8] @@ -2383,7 +2383,7 @@ _080EFED4: str r0, [r4, 0x1C] b _080EFF7A .align 2, 0 -_080EFF04: .4byte gUnknown_2024018 +_080EFF04: .4byte gBattleSpritesDataPtr _080EFF08: .4byte sub_80EFF80 _080EFF0C: cmp r0, 0x4 @@ -3045,7 +3045,7 @@ _080F03F0: adds r2, r0 lsls r2, 2 adds r2, r4 - ldr r0, _080F046C @ =gUnknown_2024018 + ldr r0, _080F046C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -3075,7 +3075,7 @@ _080F045C: .4byte 0xfffffee0 _080F0460: .4byte gSprites _080F0464: .4byte gBattlerSpriteIds _080F0468: .4byte gBattleAnimTarget -_080F046C: .4byte gUnknown_2024018 +_080F046C: .4byte gBattleSpritesDataPtr _080F0470: .4byte sub_80F018C _080F0474: .4byte gUnknown_2024005 thumb_func_end sub_80F0378 @@ -3356,7 +3356,7 @@ sub_80F0674: @ 80F0674 ands r0, r1 cmp r0, 0 beq _080F0692 - ldr r0, _080F06A0 @ =gUnknown_2024018 + ldr r0, _080F06A0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] @@ -3368,7 +3368,7 @@ _080F0692: .align 2, 0 _080F0698: .4byte gMain _080F069C: .4byte 0x00000439 -_080F06A0: .4byte gUnknown_2024018 +_080F06A0: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F0674 thumb_func_start sub_80F06A4 @@ -4771,7 +4771,7 @@ sub_80F1198: @ 80F1198 _080F11BC: .4byte gMain _080F11C0: .4byte 0x00000439 _080F11C4: - ldr r2, _080F1200 @ =gUnknown_2024018 + ldr r2, _080F1200 @ =gBattleSpritesDataPtr ldr r0, [r2] ldr r1, [r0, 0x8] ldrb r0, [r1, 0xA] @@ -4800,7 +4800,7 @@ _080F11F6: bl DestroySprite b _080F1212 .align 2, 0 -_080F1200: .4byte gUnknown_2024018 +_080F1200: .4byte gBattleSpritesDataPtr _080F1204: .4byte gUnknown_840BF48 _080F1208: .4byte gUnknown_840BFA8 _080F120C: @@ -5420,7 +5420,7 @@ sub_80F16CC: @ 80F16CC lsls r0, 24 lsrs r0, 24 ldr r3, _080F16F4 @ =gBattleAnimArgs - ldr r1, _080F16F8 @ =gUnknown_2024018 + ldr r1, _080F16F8 @ =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, _080F16FC @ =gBattleAnimAttacker ldrb r1, [r1] @@ -5436,7 +5436,7 @@ sub_80F16CC: @ 80F16CC bx r0 .align 2, 0 _080F16F4: .4byte gBattleAnimArgs -_080F16F8: .4byte gUnknown_2024018 +_080F16F8: .4byte gBattleSpritesDataPtr _080F16FC: .4byte gBattleAnimAttacker thumb_func_end sub_80F16CC @@ -5467,7 +5467,7 @@ sub_80F1720: @ 80F1720 lsrs r6, r0, 24 movs r0, 0 mov r8, r0 - ldr r0, _080F17DC @ =gUnknown_2024018 + ldr r0, _080F17DC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 @@ -5547,7 +5547,7 @@ _080F179E: strh r0, [r1, 0xA] b _080F180E .align 2, 0 -_080F17DC: .4byte gUnknown_2024018 +_080F17DC: .4byte gBattleSpritesDataPtr _080F17E0: .4byte 0x0000ffff _080F17E4: .4byte 0x000027f9 _080F17E8: .4byte gUnknown_83AD350 @@ -5555,7 +5555,7 @@ _080F17EC: .4byte gUnknown_83ADC58 _080F17F0: .4byte sub_80F181C _080F17F4: .4byte gTasks _080F17F8: - ldr r0, _080F1818 @ =gUnknown_2024018 + ldr r0, _080F1818 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r6, 1 @@ -5573,7 +5573,7 @@ _080F180E: pop {r0} bx r0 .align 2, 0 -_080F1818: .4byte gUnknown_2024018 +_080F1818: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F1720 thumb_func_start sub_80F181C @@ -5600,7 +5600,7 @@ sub_80F181C: @ 80F181C .align 2, 0 _080F1844: .4byte gTasks _080F1848: - ldr r0, _080F189C @ =gUnknown_2024018 + ldr r0, _080F189C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r0, [r0, 0xA] @@ -5622,12 +5622,12 @@ _080F186A: ldrb r0, [r4, 0x8] mov r8, r0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r5, r0, 24 mov r0, r8 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r2, r0, 24 movs r1, 0x1E @@ -5642,7 +5642,7 @@ _080F186A: lsrs r5, r0, 24 b _080F1906 .align 2, 0 -_080F189C: .4byte gUnknown_2024018 +_080F189C: .4byte gBattleSpritesDataPtr _080F18A0: .4byte gUnknown_83FF168 _080F18A4: cmp r0, 0 @@ -5817,7 +5817,7 @@ sub_80F19E0: @ 80F19E0 cmp r0, 0x1 bne _080F1A1A ldrb r1, [r1, 0x8] - ldr r0, _080F1A28 @ =gUnknown_2024018 + ldr r0, _080F1A28 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x4] lsls r0, r1, 1 @@ -5836,7 +5836,7 @@ _080F1A20: bx r0 .align 2, 0 _080F1A24: .4byte gTasks -_080F1A28: .4byte gUnknown_2024018 +_080F1A28: .4byte gBattleSpritesDataPtr thumb_func_end sub_80F19E0 thumb_func_start sub_80F1A2C @@ -5990,7 +5990,7 @@ sub_80F1B3C: @ 80F1B3C lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r5, _080F1BB0 @ =gBattleAnimArgs lsrs r0, 24 @@ -6002,7 +6002,7 @@ sub_80F1B3C: @ 80F1B3C lsls r0, 24 lsrs r0, 24 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x6] @@ -6220,7 +6220,7 @@ sub_80F1D14: @ 80F1D14 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080F1D2C @ =gUnknown_2024018 + ldr r0, _080F1D2C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrh r1, [r0] @@ -6230,7 +6230,7 @@ sub_80F1D14: @ 80F1D14 movs r0, 0x1 b _080F1D6C .align 2, 0 -_080F1D2C: .4byte gUnknown_2024018 +_080F1D2C: .4byte gBattleSpritesDataPtr _080F1D30: .4byte gBattleAnimArgs _080F1D34: cmp r1, 0xFA @@ -6277,7 +6277,7 @@ sub_80F1D7C: @ 80F1D7C lsls r0, 24 lsrs r0, 24 ldr r3, _080F1DA0 @ =gBattleAnimAttacker - ldr r1, _080F1DA4 @ =gUnknown_2024018 + ldr r1, _080F1DA4 @ =gBattleSpritesDataPtr ldr r2, [r1] ldr r1, [r2, 0x8] ldrh r1, [r1] @@ -6292,7 +6292,7 @@ sub_80F1D7C: @ 80F1D7C bx r0 .align 2, 0 _080F1DA0: .4byte gBattleAnimAttacker -_080F1DA4: .4byte gUnknown_2024018 +_080F1DA4: .4byte gBattleSpritesDataPtr _080F1DA8: .4byte gBattleAnimTarget thumb_func_end sub_80F1D7C diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s index 783b39a2e..c70d88cef 100644 --- a/asm/battle_anim_status_effects.s +++ b/asm/battle_anim_status_effects.s @@ -344,7 +344,7 @@ sub_80783FC: @ 80783FC ldr r4, _080784AC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 ldr r1, _080784B0 @ =0xffe00000 @@ -352,7 +352,7 @@ sub_80783FC: @ 80783FC lsrs r5, r0, 16 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 ldr r1, _080784B4 @ =0xffdc0000 @@ -662,7 +662,7 @@ sub_8078694: @ 8078694 lsls r0, 24 lsrs r4, r0, 24 movs r3, 0 - ldr r0, _080786B8 @ =gUnknown_2024018 + ldr r0, _080786B8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrh r0, [r0] @@ -677,7 +677,7 @@ _080786AC: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080786B8: .4byte gUnknown_2024018 +_080786B8: .4byte gBattleSpritesDataPtr _080786BC: .4byte _080786C0 .align 2, 0 _080786C0: @@ -907,7 +907,7 @@ LaunchStatusAnimation: @ 807886C strb r4, [r0] ldr r0, _080788B0 @ =gUnknown_81C6E84 movs r2, 0 - bl sub_80725D4 + bl LaunchBattleAnimation ldr r0, _080788B4 @ =task0A_80788BC movs r1, 0xA bl CreateTask @@ -935,14 +935,14 @@ task0A_80788BC: @ 80788BC push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _08078904 @ =gUnknown_2037EDC + ldr r0, _08078904 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _08078908 @ =gUnknown_2037EE1 + ldr r0, _08078908 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _080788FE - ldr r0, _0807890C @ =gUnknown_2024018 + ldr r0, _0807890C @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r1, _08078910 @ =gTasks lsls r0, r4, 2 @@ -968,9 +968,9 @@ _080788FE: pop {r0} bx r0 .align 2, 0 -_08078904: .4byte gUnknown_2037EDC -_08078908: .4byte gUnknown_2037EE1 -_0807890C: .4byte gUnknown_2024018 +_08078904: .4byte gAnimScriptCallback +_08078908: .4byte gAnimScriptActive +_0807890C: .4byte gBattleSpritesDataPtr _08078910: .4byte gTasks thumb_func_end task0A_80788BC diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s index 48cde2fa8..a52931868 100644 --- a/asm/battle_anim_utility_funcs.s +++ b/asm/battle_anim_utility_funcs.s @@ -722,7 +722,7 @@ sub_80BACEC: @ 80BACEC movs r0, 0xA bl SetGpuReg _080BAD7A: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080BADFE @@ -1192,7 +1192,7 @@ _080BB130: movs r2, 0x1 bl SetAnimBgAttribute _080BB18E: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080BB20A @@ -3186,7 +3186,7 @@ _080BC144: adds r3, r4 lsls r3, 3 adds r3, r0 - ldr r0, _080BC18C @ =gUnknown_2024018 + ldr r0, _080BC18C @ =gBattleSpritesDataPtr ldr r4, [r0] ldr r2, _080BC190 @ =gBattleAnimAttacker ldrb r0, [r2] @@ -3217,7 +3217,7 @@ _080BC180: bx r0 .align 2, 0 _080BC188: .4byte gTasks -_080BC18C: .4byte gUnknown_2024018 +_080BC18C: .4byte gBattleSpritesDataPtr _080BC190: .4byte gBattleAnimAttacker _080BC194: .4byte sub_80BC19C _080BC198: .4byte gUnknown_2037EE2 @@ -3235,7 +3235,7 @@ sub_80BC19C: @ 80BC19C lsls r0, 5 cmp r1, r0 bne _080BC1E0 - ldr r0, _080BC1EC @ =gUnknown_2024018 + ldr r0, _080BC1EC @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080BC1F0 @ =gBattleAnimAttacker ldrb r3, [r0] @@ -3264,7 +3264,7 @@ _080BC1E0: bx r0 .align 2, 0 _080BC1E8: .4byte gBattleAnimArgs -_080BC1EC: .4byte gUnknown_2024018 +_080BC1EC: .4byte gBattleSpritesDataPtr _080BC1F0: .4byte gBattleAnimAttacker _080BC1F4: .4byte gTasks thumb_func_end sub_80BC19C @@ -3707,7 +3707,7 @@ _080BC544: strh r0, [r1, 0xC] movs r0, 0x20 strh r0, [r1, 0xE] - ldr r2, _080BC56C @ =gUnknown_2023F4C + ldr r2, _080BC56C @ =gIntroSlideFlags ldrh r1, [r2] ldr r0, _080BC570 @ =0x0000fffe ands r0, r1 @@ -3715,7 +3715,7 @@ _080BC544: b _080BC6BA .align 2, 0 _080BC568: .4byte gUnknown_2022986 -_080BC56C: .4byte gUnknown_2023F4C +_080BC56C: .4byte gIntroSlideFlags _080BC570: .4byte 0x0000fffe _080BC574: lsls r0, r4, 2 @@ -4075,7 +4075,7 @@ _080BC820: strh r0, [r1, 0xE] movs r0, 0x1 strh r0, [r1, 0x12] - ldr r2, _080BC850 @ =gUnknown_2023F4C + ldr r2, _080BC850 @ =gIntroSlideFlags ldrh r1, [r2] ldr r0, _080BC854 @ =0x0000fffe ands r0, r1 @@ -4084,7 +4084,7 @@ _080BC820: .align 2, 0 _080BC848: .4byte gUnknown_2022986 _080BC84C: .4byte gTasks -_080BC850: .4byte gUnknown_2023F4C +_080BC850: .4byte gIntroSlideFlags _080BC854: .4byte 0x0000fffe _080BC858: ldr r0, _080BC890 @ =gTasks @@ -4398,7 +4398,7 @@ _080BCAC0: strh r0, [r1, 0xE] movs r0, 0x1 strh r0, [r1, 0x12] - ldr r2, _080BCAF0 @ =gUnknown_2023F4C + ldr r2, _080BCAF0 @ =gIntroSlideFlags ldrh r1, [r2] ldr r0, _080BCAF4 @ =0x0000fffe ands r0, r1 @@ -4407,7 +4407,7 @@ _080BCAC0: .align 2, 0 _080BCAE8: .4byte gUnknown_2022986 _080BCAEC: .4byte gTasks -_080BCAF0: .4byte gUnknown_2023F4C +_080BCAF0: .4byte gIntroSlideFlags _080BCAF4: .4byte 0x0000fffe _080BCAF8: lsls r0, r5, 2 @@ -4782,7 +4782,7 @@ _080BCDDC: strh r0, [r1, 0xC] movs r0, 0x20 strh r0, [r1, 0xE] - ldr r2, _080BCE00 @ =gUnknown_2023F4C + ldr r2, _080BCE00 @ =gIntroSlideFlags ldrh r1, [r2] ldr r0, _080BCE04 @ =0x0000fffe ands r0, r1 @@ -4790,7 +4790,7 @@ _080BCDDC: b _080BCEE6 .align 2, 0 _080BCDFC: .4byte gUnknown_2022986 -_080BCE00: .4byte gUnknown_2023F4C +_080BCE00: .4byte gIntroSlideFlags _080BCE04: .4byte 0x0000fffe _080BCE08: ldr r2, _080BCECC @ =gUnknown_2022986 diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index 50d0b4caf..86712cef4 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -116,7 +116,7 @@ sub_803A70C: @ 803A70C bne _0803A77C adds r0, r2, r4 ldrh r0, [r0, 0x6] - bl sub_803477C + bl FreeTrainerFrontPicPaletteAndTile ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] @@ -165,7 +165,7 @@ _0803A798: .4byte 0xfffffc00 thumb_func_start sub_803A79C sub_803A79C: @ 803A79C push {r4,lr} - ldr r4, _0803A7DC @ =gUnknown_2024018 + ldr r4, _0803A7DC @ =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, _0803A7E0 @ =gActiveBattler ldrb r0, [r3] @@ -196,7 +196,7 @@ _0803A7D4: pop {r0} bx r0 .align 2, 0 -_0803A7DC: .4byte gUnknown_2024018 +_0803A7DC: .4byte gBattleSpritesDataPtr _0803A7E0: .4byte gActiveBattler thumb_func_end sub_803A79C @@ -206,11 +206,11 @@ sub_803A7E4: @ 803A7E4 mov r7, r8 push {r7} movs r6, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0803A80C - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0803A840 @@ -222,7 +222,7 @@ sub_803A7E4: @ 803A7E4 beq _0803A840 _0803A80C: ldr r2, _0803A830 @ =gSprites - ldr r1, _0803A834 @ =gUnknown_3004FF0 + ldr r1, _0803A834 @ =gHealthboxSpriteIds ldr r0, _0803A838 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -240,12 +240,12 @@ _0803A80C: .align 2, 0 _0803A82C: .4byte gBattleTypeFlags _0803A830: .4byte gSprites -_0803A834: .4byte gUnknown_3004FF0 +_0803A834: .4byte gHealthboxSpriteIds _0803A838: .4byte gActiveBattler _0803A83C: .4byte SpriteCallbackDummy _0803A840: ldr r2, _0803A95C @ =gSprites - ldr r5, _0803A960 @ =gUnknown_3004FF0 + ldr r5, _0803A960 @ =gHealthboxSpriteIds ldr r0, _0803A964 @ =gActiveBattler ldrb r3, [r0] adds r0, r3, r5 @@ -291,7 +291,7 @@ _0803A888: lsrs r3, r0, 24 cmp r3, 0x1 bne _0803A936 - ldr r7, _0803A96C @ =gUnknown_2024018 + ldr r7, _0803A96C @ =gBattleSpritesDataPtr ldr r0, [r7] mov r1, r8 ldrb r2, [r1] @@ -386,10 +386,10 @@ _0803A936: b _0803A988 .align 2, 0 _0803A95C: .4byte gSprites -_0803A960: .4byte gUnknown_3004FF0 +_0803A960: .4byte gHealthboxSpriteIds _0803A964: .4byte gActiveBattler _0803A968: .4byte SpriteCallbackDummy -_0803A96C: .4byte gUnknown_2024018 +_0803A96C: .4byte gBattleSpritesDataPtr _0803A970: .4byte 0x000027f9 _0803A974: .4byte gBattleTypeFlags _0803A978: .4byte gMPlayInfo_BGM @@ -400,7 +400,7 @@ _0803A97C: lsls r2, 1 bl m4aMPlayVolumeControl _0803A988: - ldr r0, _0803A9BC @ =gUnknown_2024018 + ldr r0, _0803A9BC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, _0803A9C0 @ =gActiveBattler ldrb r1, [r3] @@ -426,7 +426,7 @@ _0803A9AA: .align 2, 0 _0803A9B4: .4byte gMPlayInfo_BGM _0803A9B8: .4byte 0x0000ffff -_0803A9BC: .4byte gUnknown_2024018 +_0803A9BC: .4byte gBattleSpritesDataPtr _0803A9C0: .4byte gActiveBattler _0803A9C4: .4byte gUnknown_3004FE0 _0803A9C8: .4byte sub_803A79C @@ -439,7 +439,7 @@ sub_803A9CC: @ 803A9CC mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _0803ABEC @ =gUnknown_2024018 + ldr r0, _0803ABEC @ =gBattleSpritesDataPtr mov r8, r0 ldr r0, [r0] ldr r7, _0803ABF0 @ =gActiveBattler @@ -556,7 +556,7 @@ _0803AAA6: mov r1, r10 strb r1, [r0, 0x9] _0803AABA: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0803AB50 @@ -579,7 +579,7 @@ _0803AABA: ldr r1, _0803AC04 @ =gSprites adds r0, r1 bl DestroySprite - ldr r2, _0803AC08 @ =gUnknown_3004FF0 + ldr r2, _0803AC08 @ =gHealthboxSpriteIds mov r8, r2 ldrb r0, [r5] adds r1, r4, 0 @@ -623,7 +623,7 @@ _0803AABA: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback _0803AB50: ldr r1, _0803AC00 @ =gUnknown_3004FFC ldr r5, _0803ABF0 @ =gActiveBattler @@ -636,7 +636,7 @@ _0803AB50: ldr r1, _0803AC04 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _0803AC08 @ =gUnknown_3004FF0 + ldr r4, _0803AC08 @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -674,8 +674,8 @@ _0803AB50: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback - ldr r0, _0803ABEC @ =gUnknown_2024018 + bl SetBattlerShadowSpriteCallback + ldr r0, _0803ABEC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -698,14 +698,14 @@ _0803ABDC: pop {r0} bx r0 .align 2, 0 -_0803ABEC: .4byte gUnknown_2024018 +_0803ABEC: .4byte gBattleSpritesDataPtr _0803ABF0: .4byte gActiveBattler _0803ABF4: .4byte gBattlerPartyIndexes _0803ABF8: .4byte gEnemyParty _0803ABFC: .4byte gBattleTypeFlags _0803AC00: .4byte gUnknown_3004FFC _0803AC04: .4byte gSprites -_0803AC08: .4byte gUnknown_3004FF0 +_0803AC08: .4byte gHealthboxSpriteIds _0803AC0C: .4byte gUnknown_3004FE0 _0803AC10: .4byte sub_803A7E4 thumb_func_end sub_803A9CC @@ -734,7 +734,7 @@ sub_803AC14: @ 803AC14 ldrsh r0, [r1, r4] cmp r0, 0 bne _0803ACC0 - ldr r6, _0803AC7C @ =gUnknown_2024018 + ldr r6, _0803AC7C @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 @@ -760,7 +760,7 @@ sub_803AC14: @ 803AC14 _0803AC70: .4byte gSprites _0803AC74: .4byte gBattlerSpriteIds _0803AC78: .4byte gActiveBattler -_0803AC7C: .4byte gUnknown_2024018 +_0803AC7C: .4byte gBattleSpritesDataPtr _0803AC80: .4byte gBattlerPartyIndexes _0803AC84: .4byte gEnemyParty _0803AC88: @@ -802,7 +802,7 @@ CompleteOnHealthbarDone_4: @ 803ACCC push {r4-r6,lr} ldr r6, _0803AD0C @ =gActiveBattler ldrb r0, [r6] - ldr r5, _0803AD10 @ =gUnknown_3004FF0 + ldr r5, _0803AD10 @ =gHealthboxSpriteIds adds r1, r0, r5 ldrb r1, [r1] movs r2, 0 @@ -829,7 +829,7 @@ CompleteOnHealthbarDone_4: @ 803ACCC b _0803AD18 .align 2, 0 _0803AD0C: .4byte gActiveBattler -_0803AD10: .4byte gUnknown_3004FF0 +_0803AD10: .4byte gHealthboxSpriteIds _0803AD14: bl RecordedOpponentBufferExecCompleted _0803AD18: @@ -856,7 +856,7 @@ sub_803AD20: @ 803AD20 lsls r0, 31 cmp r0, 0 bne _0803AD4E - ldr r0, _0803AD60 @ =gUnknown_3004FF0 + ldr r0, _0803AD60 @ =gHealthboxSpriteIds adds r0, r3, r0 ldrb r0, [r0] bl SetHealthboxSpriteInvisible @@ -868,13 +868,13 @@ _0803AD4E: _0803AD54: .4byte gSprites _0803AD58: .4byte gBattlerSpriteIds _0803AD5C: .4byte gActiveBattler -_0803AD60: .4byte gUnknown_3004FF0 +_0803AD60: .4byte gHealthboxSpriteIds thumb_func_end sub_803AD20 thumb_func_start sub_803AD64 sub_803AD64: @ 803AD64 push {r4-r6,lr} - ldr r0, _0803ADC4 @ =gUnknown_2024018 + ldr r0, _0803ADC4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _0803ADC8 @ =gActiveBattler ldrb r2, [r6] @@ -906,8 +906,8 @@ sub_803AD64: @ 803AD64 adds r0, r4 bl DestroySprite ldrb r0, [r6] - bl EnemyShadowCallbackToSetInvisible - ldr r1, _0803ADD4 @ =gUnknown_3004FF0 + bl HideBattlerShadowSprite + ldr r1, _0803ADD4 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -918,11 +918,11 @@ _0803ADBE: pop {r0} bx r0 .align 2, 0 -_0803ADC4: .4byte gUnknown_2024018 +_0803ADC4: .4byte gBattleSpritesDataPtr _0803ADC8: .4byte gActiveBattler _0803ADCC: .4byte gBattlerSpriteIds _0803ADD0: .4byte gSprites -_0803ADD4: .4byte gUnknown_3004FF0 +_0803ADD4: .4byte gHealthboxSpriteIds thumb_func_end sub_803AD64 thumb_func_start CompleteOnInactiveTextPrinter_5 @@ -1007,7 +1007,7 @@ _0803AE66: sub_803AE6C: @ 803AE6C push {r4,lr} ldr r2, _0803AEC0 @ =gSprites - ldr r0, _0803AEC4 @ =gUnknown_3004FF0 + ldr r0, _0803AEC4 @ =gHealthboxSpriteIds ldr r4, _0803AEC8 @ =gActiveBattler ldrb r3, [r4] adds r0, r3, r0 @@ -1021,7 +1021,7 @@ sub_803AE6C: @ 803AE6C ldr r0, _0803AECC @ =SpriteCallbackDummy cmp r1, r0 bne _0803AEB8 - ldr r0, _0803AED0 @ =gUnknown_2024018 + ldr r0, _0803AED0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -1049,10 +1049,10 @@ _0803AEB8: bx r0 .align 2, 0 _0803AEC0: .4byte gSprites -_0803AEC4: .4byte gUnknown_3004FF0 +_0803AEC4: .4byte gHealthboxSpriteIds _0803AEC8: .4byte gActiveBattler _0803AECC: .4byte SpriteCallbackDummy -_0803AED0: .4byte gUnknown_2024018 +_0803AED0: .4byte gBattleSpritesDataPtr _0803AED4: .4byte gUnknown_3004FE0 _0803AED8: .4byte sub_803AEDC thumb_func_end sub_803AE6C @@ -1060,7 +1060,7 @@ _0803AED8: .4byte sub_803AEDC thumb_func_start sub_803AEDC sub_803AEDC: @ 803AEDC push {lr} - ldr r0, _0803AF18 @ =gUnknown_2024018 + ldr r0, _0803AF18 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803AF1C @ =gActiveBattler ldrb r1, [r0] @@ -1088,7 +1088,7 @@ _0803AF14: pop {r0} bx r0 .align 2, 0 -_0803AF18: .4byte gUnknown_2024018 +_0803AF18: .4byte gBattleSpritesDataPtr _0803AF1C: .4byte gActiveBattler _0803AF20: .4byte gMPlayInfo_BGM _0803AF24: .4byte 0x0000ffff @@ -1097,7 +1097,7 @@ _0803AF24: .4byte 0x0000ffff thumb_func_start sub_803AF28 sub_803AF28: @ 803AF28 push {r4,r5,lr} - ldr r3, _0803AFD4 @ =gUnknown_2024018 + ldr r3, _0803AFD4 @ =gBattleSpritesDataPtr ldr r0, [r3] ldr r5, _0803AFD8 @ =gActiveBattler ldrb r1, [r5] @@ -1143,7 +1143,7 @@ sub_803AF28: @ 803AF28 adds r0, r1 movs r1, 0 bl StartSpriteAnim - ldr r4, _0803AFE8 @ =gUnknown_3004FF0 + ldr r4, _0803AFE8 @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -1176,12 +1176,12 @@ _0803AFCC: pop {r0} bx r0 .align 2, 0 -_0803AFD4: .4byte gUnknown_2024018 +_0803AFD4: .4byte gBattleSpritesDataPtr _0803AFD8: .4byte gActiveBattler _0803AFDC: .4byte 0x000027f9 _0803AFE0: .4byte gBattlerSpriteIds _0803AFE4: .4byte gSprites -_0803AFE8: .4byte gUnknown_3004FF0 +_0803AFE8: .4byte gHealthboxSpriteIds _0803AFEC: .4byte gBattlerPartyIndexes _0803AFF0: .4byte gEnemyParty _0803AFF4: .4byte gUnknown_3004FE0 @@ -1191,7 +1191,7 @@ _0803AFF8: .4byte sub_803AE6C thumb_func_start sub_803AFFC sub_803AFFC: @ 803AFFC push {r4-r6,lr} - ldr r6, _0803B0A0 @ =gUnknown_2024018 + ldr r6, _0803B0A0 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _0803B0A4 @ =gActiveBattler ldrb r2, [r5] @@ -1258,7 +1258,7 @@ _0803B02E: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback ldr r1, _0803B0BC @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 @@ -1270,7 +1270,7 @@ _0803B098: pop {r0} bx r0 .align 2, 0 -_0803B0A0: .4byte gUnknown_2024018 +_0803B0A0: .4byte gBattleSpritesDataPtr _0803B0A4: .4byte gActiveBattler _0803B0A8: .4byte gBattlerPartyIndexes _0803B0AC: .4byte gEnemyParty @@ -1284,7 +1284,7 @@ _0803B0C0: .4byte sub_803AF28 thumb_func_start CompleteOnFinishedStatusAnimation_5 CompleteOnFinishedStatusAnimation_5: @ 803B0C4 push {lr} - ldr r0, _0803B0EC @ =gUnknown_2024018 + ldr r0, _0803B0EC @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803B0F0 @ =gActiveBattler ldrb r1, [r0] @@ -1303,14 +1303,14 @@ _0803B0E6: pop {r0} bx r0 .align 2, 0 -_0803B0EC: .4byte gUnknown_2024018 +_0803B0EC: .4byte gBattleSpritesDataPtr _0803B0F0: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation_5 thumb_func_start CompleteOnFinishedBattleAnimation_5 CompleteOnFinishedBattleAnimation_5: @ 803B0F4 push {lr} - ldr r0, _0803B11C @ =gUnknown_2024018 + ldr r0, _0803B11C @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803B120 @ =gActiveBattler ldrb r1, [r0] @@ -1329,7 +1329,7 @@ _0803B116: pop {r0} bx r0 .align 2, 0 -_0803B11C: .4byte gUnknown_2024018 +_0803B11C: .4byte gBattleSpritesDataPtr _0803B120: .4byte gActiveBattler thumb_func_end CompleteOnFinishedBattleAnimation_5 @@ -3581,12 +3581,12 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4 mov r8, r0 ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldrb r0, [r6] - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3659,7 +3659,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback ldr r1, _0803C4FC @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 @@ -3785,12 +3785,12 @@ sub_803C550: @ 803C550 mov r9, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3911,7 +3911,7 @@ LinkOpponentHandleReturnPokeToBall: @ 803C6D4 ldrb r3, [r0] cmp r3, 0 bne _0803C71C - ldr r0, _0803C710 @ =gUnknown_2024018 + ldr r0, _0803C710 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3929,7 +3929,7 @@ LinkOpponentHandleReturnPokeToBall: @ 803C6D4 .align 2, 0 _0803C708: .4byte gUnknown_2022BC4 _0803C70C: .4byte gActiveBattler -_0803C710: .4byte gUnknown_2024018 +_0803C710: .4byte gBattleSpritesDataPtr _0803C714: .4byte gUnknown_3004FE0 _0803C718: .4byte sub_803C76C _0803C71C: @@ -3951,8 +3951,8 @@ _0803C71C: adds r0, r4 bl DestroySprite ldrb r0, [r6] - bl EnemyShadowCallbackToSetInvisible - ldr r1, _0803C768 @ =gUnknown_3004FF0 + bl HideBattlerShadowSprite + ldr r1, _0803C768 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -3965,13 +3965,13 @@ _0803C758: .align 2, 0 _0803C760: .4byte gBattlerSpriteIds _0803C764: .4byte gSprites -_0803C768: .4byte gUnknown_3004FF0 +_0803C768: .4byte gHealthboxSpriteIds thumb_func_end LinkOpponentHandleReturnPokeToBall thumb_func_start sub_803C76C sub_803C76C: @ 803C76C push {r4-r6,lr} - ldr r6, _0803C78C @ =gUnknown_2024018 + ldr r6, _0803C78C @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _0803C790 @ =gActiveBattler ldrb r2, [r5] @@ -3987,7 +3987,7 @@ sub_803C76C: @ 803C76C beq _0803C7C2 b _0803C7EA .align 2, 0 -_0803C78C: .4byte gUnknown_2024018 +_0803C78C: .4byte gBattleSpritesDataPtr _0803C790: .4byte gActiveBattler _0803C794: ldr r1, [r4] @@ -4245,7 +4245,7 @@ _0803C992: mov r8, r0 ldrb r1, [r0] mov r0, r9 - bl sub_80346C4 + bl DecompressTrainerFrontPic mov r1, r8 ldrb r0, [r1] bl GetBattlerPosition @@ -4496,7 +4496,7 @@ _0803CBB4: .4byte sub_803A70C thumb_func_start sub_803CBB8 sub_803CBB8: @ 803CBB8 push {r4-r6,lr} - ldr r6, _0803CC04 @ =gUnknown_2024018 + ldr r6, _0803CC04 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _0803CC08 @ =gActiveBattler ldrb r2, [r5] @@ -4533,7 +4533,7 @@ _0803CBEC: strb r1, [r0, 0x4] b _0803CC48 .align 2, 0 -_0803CC04: .4byte gUnknown_2024018 +_0803CC04: .4byte gBattleSpritesDataPtr _0803CC08: .4byte gActiveBattler _0803CC0C: ldrb r1, [r3] @@ -4708,7 +4708,7 @@ _0803CCA6: adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _0803CD98 @ =gUnknown_2024008 + ldr r3, _0803CD98 @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -4731,9 +4731,9 @@ _0803CD88: .4byte gAnimMoveDmg _0803CD8C: .4byte gUnknown_2037EFE _0803CD90: .4byte gUnknown_2037F00 _0803CD94: .4byte gAnimDisableStructPtr -_0803CD98: .4byte gUnknown_2024008 +_0803CD98: .4byte gTransformedPersonalities _0803CD9C: - ldr r0, _0803CDC0 @ =gUnknown_2024018 + ldr r0, _0803CDC0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4753,7 +4753,7 @@ _0803CDBA: pop {r0} bx r0 .align 2, 0 -_0803CDC0: .4byte gUnknown_2024018 +_0803CDC0: .4byte gBattleSpritesDataPtr _0803CDC4: .4byte gUnknown_3004FE0 _0803CDC8: .4byte RecordedOpponentDoMoveAnimation thumb_func_end RecordedOpponentHandleMoveAnimation @@ -4783,7 +4783,7 @@ RecordedOpponentDoMoveAnimation: @ 803CDCC adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, _0803CE20 @ =gUnknown_2024018 + ldr r7, _0803CE20 @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4801,7 +4801,7 @@ RecordedOpponentDoMoveAnimation: @ 803CDCC .align 2, 0 _0803CE18: .4byte gUnknown_2022BC4 _0803CE1C: .4byte gActiveBattler -_0803CE20: .4byte gUnknown_2024018 +_0803CE20: .4byte gBattleSpritesDataPtr _0803CE24: cmp r2, 0x2 beq _0803CE8E @@ -4857,10 +4857,10 @@ _0803CE64: strb r1, [r0, 0x4] b _0803CF40 _0803CE8E: - ldr r0, _0803CEF4 @ =gUnknown_2037EDC + ldr r0, _0803CEF4 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _0803CEF8 @ =gUnknown_2037EE1 + ldr r0, _0803CEF8 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _0803CF40 @@ -4894,7 +4894,7 @@ _0803CE8E: ands r0, r2 strb r0, [r1] _0803CEDC: - ldr r0, _0803CEFC @ =gUnknown_2024018 + ldr r0, _0803CEFC @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803CF00 @ =gActiveBattler ldrb r1, [r0] @@ -4907,9 +4907,9 @@ _0803CEDC: strb r1, [r0, 0x4] b _0803CF40 .align 2, 0 -_0803CEF4: .4byte gUnknown_2037EDC -_0803CEF8: .4byte gUnknown_2037EE1 -_0803CEFC: .4byte gUnknown_2024018 +_0803CEF4: .4byte gAnimScriptCallback +_0803CEF8: .4byte gAnimScriptActive +_0803CEFC: .4byte gBattleSpritesDataPtr _0803CF00: .4byte gActiveBattler _0803CF04: ldrb r1, [r0] @@ -5107,7 +5107,7 @@ sub_803D018: @ 803D018 adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _0803D0A4 @ =gUnknown_3004FF0 + ldr r1, _0803D0A4 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -5120,7 +5120,7 @@ _0803D094: .4byte gActiveBattler _0803D098: .4byte 0x00007fff _0803D09C: .4byte gBattlerPartyIndexes _0803D0A0: .4byte gEnemyParty -_0803D0A4: .4byte gUnknown_3004FF0 +_0803D0A4: .4byte gHealthboxSpriteIds _0803D0A8: ldr r1, _0803D0F0 @ =gBattlerPartyIndexes lsls r0, r4, 1 @@ -5135,7 +5135,7 @@ _0803D0A8: adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _0803D0F8 @ =gUnknown_3004FF0 + ldr r1, _0803D0F8 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -5159,7 +5159,7 @@ _0803D0D2: .align 2, 0 _0803D0F0: .4byte gBattlerPartyIndexes _0803D0F4: .4byte gEnemyParty -_0803D0F8: .4byte gUnknown_3004FF0 +_0803D0F8: .4byte gHealthboxSpriteIds _0803D0FC: .4byte gUnknown_3004FE0 _0803D100: .4byte gActiveBattler _0803D104: .4byte CompleteOnHealthbarDone_4 @@ -5182,7 +5182,7 @@ sub_803D114: @ 803D114 lsls r0, 24 cmp r0, 0 bne _0803D168 - ldr r0, _0803D174 @ =gUnknown_3004FF0 + ldr r0, _0803D174 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] @@ -5197,7 +5197,7 @@ sub_803D114: @ 803D114 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] - ldr r0, _0803D180 @ =gUnknown_2024018 + ldr r0, _0803D180 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5221,10 +5221,10 @@ _0803D168: bx r0 .align 2, 0 _0803D170: .4byte gActiveBattler -_0803D174: .4byte gUnknown_3004FF0 +_0803D174: .4byte gHealthboxSpriteIds _0803D178: .4byte gBattlerPartyIndexes _0803D17C: .4byte gEnemyParty -_0803D180: .4byte gUnknown_2024018 +_0803D180: .4byte gBattleSpritesDataPtr _0803D184: .4byte gUnknown_3004FE0 _0803D188: .4byte CompleteOnFinishedStatusAnimation_5 thumb_func_end sub_803D114 @@ -5595,7 +5595,7 @@ RecordedOpponentHandleIntroSlide: @ 803D420 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _0803D450 @ =gUnknown_2023F4C + ldr r2, _0803D450 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -5606,7 +5606,7 @@ RecordedOpponentHandleIntroSlide: @ 803D420 .align 2, 0 _0803D448: .4byte gUnknown_2022BC4 _0803D44C: .4byte gActiveBattler -_0803D450: .4byte gUnknown_2023F4C +_0803D450: .4byte gIntroSlideFlags thumb_func_end RecordedOpponentHandleIntroSlide thumb_func_start sub_803D454 @@ -5683,7 +5683,7 @@ sub_803D454: @ 803D454 adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] - ldr r3, _0803D550 @ =gUnknown_2024018 + ldr r3, _0803D550 @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] @@ -5729,7 +5729,7 @@ _0803D540: .4byte sub_8075590 _0803D544: .4byte sub_803D648 _0803D548: .4byte sub_803D564 _0803D54C: .4byte gTasks -_0803D550: .4byte gUnknown_2024018 +_0803D550: .4byte gBattleSpritesDataPtr _0803D554: .4byte gUnknown_2024000 _0803D558: .4byte sub_80491B0 _0803D55C: .4byte gUnknown_3004FE0 @@ -5756,7 +5756,7 @@ sub_803D564: @ 803D564 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0803D59E @@ -5849,7 +5849,7 @@ sub_803D648: @ 803D648 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x6] - bl sub_803477C + bl FreeTrainerFrontPicPaletteAndTile ldrh r0, [r4, 0x38] ldr r1, _0803D674 @ =0x000003ff ands r1, r0 @@ -5893,7 +5893,7 @@ RecordedOpponentHandleDrawPartyStatusSummary: @ 803D67C _0803D6A4: .4byte gUnknown_2022BC4 _0803D6A8: .4byte gActiveBattler _0803D6AC: - ldr r4, _0803D704 @ =gUnknown_2024018 + ldr r4, _0803D704 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _0803D708 @ =gActiveBattler ldrb r1, [r3] @@ -5937,7 +5937,7 @@ _0803D6AC: strb r1, [r3, 0x1] b _0803D776 .align 2, 0 -_0803D704: .4byte gUnknown_2024018 +_0803D704: .4byte gBattleSpritesDataPtr _0803D708: .4byte gActiveBattler _0803D70C: .4byte gUnknown_2022BC4 _0803D710: @@ -5963,7 +5963,7 @@ _0803D718: adds r1, r2 movs r3, 0 strb r0, [r1] - ldr r6, _0803D784 @ =gUnknown_2024018 + ldr r6, _0803D784 @ =gBattleSpritesDataPtr ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -6000,7 +6000,7 @@ _0803D776: .align 2, 0 _0803D77C: .4byte gUnknown_2022BC8 _0803D780: .4byte gUnknown_2024000 -_0803D784: .4byte gUnknown_2024018 +_0803D784: .4byte gBattleSpritesDataPtr _0803D788: .4byte gUnknown_3004FE0 _0803D78C: .4byte sub_803D790 thumb_func_end RecordedOpponentHandleDrawPartyStatusSummary @@ -6008,7 +6008,7 @@ _0803D78C: .4byte sub_803D790 thumb_func_start sub_803D790 sub_803D790: @ 803D790 push {r4,lr} - ldr r4, _0803D7D0 @ =gUnknown_2024018 + ldr r4, _0803D7D0 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _0803D7D4 @ =gActiveBattler ldrb r1, [r3] @@ -6039,14 +6039,14 @@ _0803D7C8: pop {r0} bx r0 .align 2, 0 -_0803D7D0: .4byte gUnknown_2024018 +_0803D7D0: .4byte gBattleSpritesDataPtr _0803D7D4: .4byte gActiveBattler thumb_func_end sub_803D790 thumb_func_start RecordedOpponentHandleCmd49 RecordedOpponentHandleCmd49: @ 803D7D8 push {lr} - ldr r0, _0803D814 @ =gUnknown_2024018 + ldr r0, _0803D814 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _0803D818 @ =gActiveBattler ldrb r3, [r0] @@ -6075,7 +6075,7 @@ _0803D80A: pop {r0} bx r0 .align 2, 0 -_0803D814: .4byte gUnknown_2024018 +_0803D814: .4byte gBattleSpritesDataPtr _0803D818: .4byte gActiveBattler _0803D81C: .4byte gTasks _0803D820: .4byte gUnknown_2024000 @@ -6095,7 +6095,7 @@ RecordedOpponentHandleSpriteInvisibility: @ 803D834 push {r4,lr} ldr r4, _0803D884 @ =gActiveBattler ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _0803D87A diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index c0409ce57..f8a83d85e 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -147,7 +147,7 @@ _080D430C: .4byte SpriteCallbackDummy thumb_func_start sub_80D4310 sub_80D4310: @ 80D4310 push {r4,lr} - ldr r4, _080D4350 @ =gUnknown_2024018 + ldr r4, _080D4350 @ =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, _080D4354 @ =gActiveBattler ldrb r0, [r3] @@ -178,7 +178,7 @@ _080D4348: pop {r0} bx r0 .align 2, 0 -_080D4350: .4byte gUnknown_2024018 +_080D4350: .4byte gBattleSpritesDataPtr _080D4354: .4byte gActiveBattler thumb_func_end sub_80D4310 @@ -186,11 +186,11 @@ _080D4354: .4byte gActiveBattler sub_80D4358: @ 80D4358 push {r4-r6,lr} movs r6, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080D437C - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080D43B0 @@ -202,7 +202,7 @@ sub_80D4358: @ 80D4358 beq _080D43B0 _080D437C: ldr r2, _080D43A0 @ =gSprites - ldr r1, _080D43A4 @ =gUnknown_3004FF0 + ldr r1, _080D43A4 @ =gHealthboxSpriteIds ldr r0, _080D43A8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -220,12 +220,12 @@ _080D437C: .align 2, 0 _080D439C: .4byte gBattleTypeFlags _080D43A0: .4byte gSprites -_080D43A4: .4byte gUnknown_3004FF0 +_080D43A4: .4byte gHealthboxSpriteIds _080D43A8: .4byte gActiveBattler _080D43AC: .4byte SpriteCallbackDummy _080D43B0: ldr r2, _080D4420 @ =gSprites - ldr r5, _080D4424 @ =gUnknown_3004FF0 + ldr r5, _080D4424 @ =gHealthboxSpriteIds ldr r0, _080D4428 @ =gActiveBattler ldrb r3, [r0] adds r0, r3, r5 @@ -262,7 +262,7 @@ _080D43E8: _080D43F4: cmp r6, 0 beq _080D441A - ldr r0, _080D4430 @ =gUnknown_2024018 + ldr r0, _080D4430 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, _080D4428 @ =gActiveBattler ldrb r1, [r3] @@ -285,10 +285,10 @@ _080D441A: bx r0 .align 2, 0 _080D4420: .4byte gSprites -_080D4424: .4byte gUnknown_3004FF0 +_080D4424: .4byte gHealthboxSpriteIds _080D4428: .4byte gActiveBattler _080D442C: .4byte SpriteCallbackDummy -_080D4430: .4byte gUnknown_2024018 +_080D4430: .4byte gBattleSpritesDataPtr _080D4434: .4byte gUnknown_3004FE0 _080D4438: .4byte sub_80D4310 thumb_func_end sub_80D4358 @@ -296,7 +296,7 @@ _080D4438: .4byte sub_80D4310 thumb_func_start sub_80D443C sub_80D443C: @ 80D443C push {r4-r7,lr} - ldr r0, _080D4568 @ =gUnknown_2024018 + ldr r0, _080D4568 @ =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldr r6, _080D456C @ =gActiveBattler @@ -344,7 +344,7 @@ _080D4460: lsls r0, 2 adds r0, r2 strb r4, [r0, 0x9] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080D4500 @@ -365,7 +365,7 @@ _080D4460: ldr r1, _080D4578 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _080D457C @ =gUnknown_3004FF0 + ldr r4, _080D457C @ =gHealthboxSpriteIds ldrb r0, [r6] adds r1, r7, 0 eors r1, r0 @@ -401,7 +401,7 @@ _080D4500: ldr r1, _080D4578 @ =gSprites adds r0, r1 bl DestroySprite - ldr r5, _080D457C @ =gUnknown_3004FF0 + ldr r5, _080D457C @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] @@ -421,7 +421,7 @@ _080D4500: adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible - ldr r0, _080D4568 @ =gUnknown_2024018 + ldr r0, _080D4568 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -440,12 +440,12 @@ _080D4562: pop {r0} bx r0 .align 2, 0 -_080D4568: .4byte gUnknown_2024018 +_080D4568: .4byte gBattleSpritesDataPtr _080D456C: .4byte gActiveBattler _080D4570: .4byte gBattleTypeFlags _080D4574: .4byte gUnknown_3004FFC _080D4578: .4byte gSprites -_080D457C: .4byte gUnknown_3004FF0 +_080D457C: .4byte gHealthboxSpriteIds _080D4580: .4byte gBattlerPartyIndexes _080D4584: .4byte gPlayerParty _080D4588: .4byte gUnknown_3004FE0 @@ -490,7 +490,7 @@ sub_80D45D0: @ 80D45D0 push {r4-r6,lr} ldr r5, _080D4610 @ =gActiveBattler ldrb r0, [r5] - ldr r6, _080D4614 @ =gUnknown_3004FF0 + ldr r6, _080D4614 @ =gHealthboxSpriteIds adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 @@ -517,7 +517,7 @@ sub_80D45D0: @ 80D45D0 b _080D4632 .align 2, 0 _080D4610: .4byte gActiveBattler -_080D4614: .4byte gUnknown_3004FF0 +_080D4614: .4byte gHealthboxSpriteIds _080D4618: ldr r2, _080D4638 @ =gBattlerPartyIndexes ldrb r1, [r5] @@ -571,7 +571,7 @@ sub_80D4640: @ 80D4640 lsls r0, 2 adds r0, r6 bl DestroySprite - ldr r1, _080D46A4 @ =gUnknown_3004FF0 + ldr r1, _080D46A4 @ =gHealthboxSpriteIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -585,13 +585,13 @@ _080D4690: _080D4698: .4byte gSprites _080D469C: .4byte gBattlerSpriteIds _080D46A0: .4byte gActiveBattler -_080D46A4: .4byte gUnknown_3004FF0 +_080D46A4: .4byte gHealthboxSpriteIds thumb_func_end sub_80D4640 thumb_func_start sub_80D46A8 sub_80D46A8: @ 80D46A8 push {r4-r6,lr} - ldr r0, _080D4704 @ =gUnknown_2024018 + ldr r0, _080D4704 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _080D4708 @ =gActiveBattler ldrb r2, [r6] @@ -622,7 +622,7 @@ sub_80D46A8: @ 80D46A8 lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _080D4714 @ =gUnknown_3004FF0 + ldr r1, _080D4714 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -633,11 +633,11 @@ _080D46FC: pop {r0} bx r0 .align 2, 0 -_080D4704: .4byte gUnknown_2024018 +_080D4704: .4byte gBattleSpritesDataPtr _080D4708: .4byte gActiveBattler _080D470C: .4byte gBattlerSpriteIds _080D4710: .4byte gSprites -_080D4714: .4byte gUnknown_3004FF0 +_080D4714: .4byte gHealthboxSpriteIds thumb_func_end sub_80D46A8 thumb_func_start sub_80D4718 @@ -722,7 +722,7 @@ _080D47A6: sub_80D47AC: @ 80D47AC push {r4,lr} ldr r2, _080D4800 @ =gSprites - ldr r0, _080D4804 @ =gUnknown_3004FF0 + ldr r0, _080D4804 @ =gHealthboxSpriteIds ldr r4, _080D4808 @ =gActiveBattler ldrb r3, [r4] adds r0, r3, r0 @@ -736,7 +736,7 @@ sub_80D47AC: @ 80D47AC ldr r0, _080D480C @ =SpriteCallbackDummy cmp r1, r0 bne _080D47F8 - ldr r0, _080D4810 @ =gUnknown_2024018 + ldr r0, _080D4810 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -764,10 +764,10 @@ _080D47F8: bx r0 .align 2, 0 _080D4800: .4byte gSprites -_080D4804: .4byte gUnknown_3004FF0 +_080D4804: .4byte gHealthboxSpriteIds _080D4808: .4byte gActiveBattler _080D480C: .4byte SpriteCallbackDummy -_080D4810: .4byte gUnknown_2024018 +_080D4810: .4byte gBattleSpritesDataPtr _080D4814: .4byte gUnknown_3004FE0 _080D4818: .4byte sub_80D481C thumb_func_end sub_80D47AC @@ -775,7 +775,7 @@ _080D4818: .4byte sub_80D481C thumb_func_start sub_80D481C sub_80D481C: @ 80D481C push {lr} - ldr r0, _080D4844 @ =gUnknown_2024018 + ldr r0, _080D4844 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080D4848 @ =gActiveBattler ldrb r1, [r0] @@ -794,7 +794,7 @@ _080D483E: pop {r0} bx r0 .align 2, 0 -_080D4844: .4byte gUnknown_2024018 +_080D4844: .4byte gBattleSpritesDataPtr _080D4848: .4byte gActiveBattler thumb_func_end sub_80D481C @@ -803,7 +803,7 @@ sub_80D484C: @ 80D484C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r3, _080D4918 @ =gUnknown_2024018 + ldr r3, _080D4918 @ =gBattleSpritesDataPtr ldr r0, [r3] ldr r7, _080D491C @ =gActiveBattler ldrb r1, [r7] @@ -863,7 +863,7 @@ sub_80D484C: @ 80D484C adds r0, r1 movs r1, 0 bl StartSpriteAnim - ldr r4, _080D4938 @ =gUnknown_3004FF0 + ldr r4, _080D4938 @ =gHealthboxSpriteIds ldrb r1, [r7] adds r0, r1, r4 ldrb r0, [r0] @@ -895,7 +895,7 @@ _080D490E: pop {r0} bx r0 .align 2, 0 -_080D4918: .4byte gUnknown_2024018 +_080D4918: .4byte gBattleSpritesDataPtr _080D491C: .4byte gActiveBattler _080D4920: .4byte 0x000027f9 _080D4924: .4byte c3_0802FDF4 @@ -903,7 +903,7 @@ _080D4928: .4byte gBattlerPartyIndexes _080D492C: .4byte gPlayerParty _080D4930: .4byte gBattlerSpriteIds _080D4934: .4byte gSprites -_080D4938: .4byte gUnknown_3004FF0 +_080D4938: .4byte gHealthboxSpriteIds _080D493C: .4byte gUnknown_3004FE0 _080D4940: .4byte sub_80D47AC thumb_func_end sub_80D484C @@ -911,7 +911,7 @@ _080D4940: .4byte sub_80D47AC thumb_func_start sub_80D4944 sub_80D4944: @ 80D4944 push {r4-r6,lr} - ldr r6, _080D49C4 @ =gUnknown_2024018 + ldr r6, _080D49C4 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r4, _080D49C8 @ =gActiveBattler ldrb r2, [r4] @@ -974,7 +974,7 @@ _080D49BC: pop {r0} bx r0 .align 2, 0 -_080D49C4: .4byte gUnknown_2024018 +_080D49C4: .4byte gBattleSpritesDataPtr _080D49C8: .4byte gActiveBattler _080D49CC: .4byte gBattlerPartyIndexes _080D49D0: .4byte gPlayerParty @@ -1045,7 +1045,7 @@ _080D4A5C: .4byte gBitTable thumb_func_start sub_80D4A60 sub_80D4A60: @ 80D4A60 push {lr} - ldr r0, _080D4A88 @ =gUnknown_2024018 + ldr r0, _080D4A88 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080D4A8C @ =gActiveBattler ldrb r1, [r0] @@ -1064,14 +1064,14 @@ _080D4A82: pop {r0} bx r0 .align 2, 0 -_080D4A88: .4byte gUnknown_2024018 +_080D4A88: .4byte gBattleSpritesDataPtr _080D4A8C: .4byte gActiveBattler thumb_func_end sub_80D4A60 thumb_func_start sub_80D4A90 sub_80D4A90: @ 80D4A90 push {lr} - ldr r0, _080D4AB8 @ =gUnknown_2024018 + ldr r0, _080D4AB8 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080D4ABC @ =gActiveBattler ldrb r1, [r0] @@ -1090,7 +1090,7 @@ _080D4AB2: pop {r0} bx r0 .align 2, 0 -_080D4AB8: .4byte gUnknown_2024018 +_080D4AB8: .4byte gBattleSpritesDataPtr _080D4ABC: .4byte gActiveBattler thumb_func_end sub_80D4A90 @@ -3352,7 +3352,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 muls r0, r5 ldr r4, _080D5EB0 @ =gPlayerParty adds r0, r4 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r6] lsls r0, 1 add r0, r8 @@ -3375,12 +3375,12 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 mov r8, r0 ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldrb r0, [r6] - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3491,7 +3491,7 @@ LinkPartnerHandleSendOutPoke: @ 80D5ED0 muls r0, r2 ldr r2, _080D5F34 @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r5] lsls r1, r0, 9 adds r1, r6 @@ -3567,12 +3567,12 @@ sub_80D5F40: @ 80D5F40 mov r10, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3693,7 +3693,7 @@ LinkPartnerHandleReturnPokeToBall: @ 80D60AC ldrb r3, [r0] cmp r3, 0 bne _080D60F4 - ldr r0, _080D60E8 @ =gUnknown_2024018 + ldr r0, _080D60E8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -3711,7 +3711,7 @@ LinkPartnerHandleReturnPokeToBall: @ 80D60AC .align 2, 0 _080D60E0: .4byte gUnknown_2022BC4 _080D60E4: .4byte gActiveBattler -_080D60E8: .4byte gUnknown_2024018 +_080D60E8: .4byte gBattleSpritesDataPtr _080D60EC: .4byte gUnknown_3004FE0 _080D60F0: .4byte sub_80D613C _080D60F4: @@ -3732,7 +3732,7 @@ _080D60F4: lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _080D6138 @ =gUnknown_3004FF0 + ldr r1, _080D6138 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -3745,13 +3745,13 @@ _080D612A: .align 2, 0 _080D6130: .4byte gBattlerSpriteIds _080D6134: .4byte gSprites -_080D6138: .4byte gUnknown_3004FF0 +_080D6138: .4byte gHealthboxSpriteIds thumb_func_end LinkPartnerHandleReturnPokeToBall thumb_func_start sub_80D613C sub_80D613C: @ 80D613C push {r4-r6,lr} - ldr r6, _080D615C @ =gUnknown_2024018 + ldr r6, _080D615C @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _080D6160 @ =gActiveBattler ldrb r2, [r5] @@ -3767,7 +3767,7 @@ sub_80D613C: @ 80D613C beq _080D6192 b _080D61BA .align 2, 0 -_080D615C: .4byte gUnknown_2024018 +_080D615C: .4byte gBattleSpritesDataPtr _080D6160: .4byte gActiveBattler _080D6164: ldr r1, [r4] @@ -4087,7 +4087,7 @@ _080D63F0: .4byte sub_80D42A8 thumb_func_start sub_80D63F4 sub_80D63F4: @ 80D63F4 push {r4-r6,lr} - ldr r6, _080D6440 @ =gUnknown_2024018 + ldr r6, _080D6440 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _080D6444 @ =gActiveBattler ldrb r2, [r5] @@ -4124,7 +4124,7 @@ _080D6428: strb r1, [r0, 0x4] b _080D64BE .align 2, 0 -_080D6440: .4byte gUnknown_2024018 +_080D6440: .4byte gBattleSpritesDataPtr _080D6444: .4byte gActiveBattler _080D6448: ldrb r1, [r3] @@ -4329,7 +4329,7 @@ _080D6522: adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _080D6614 @ =gUnknown_2024008 + ldr r3, _080D6614 @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -4352,9 +4352,9 @@ _080D6604: .4byte gAnimMoveDmg _080D6608: .4byte gUnknown_2037EFE _080D660C: .4byte gUnknown_2037F00 _080D6610: .4byte gAnimDisableStructPtr -_080D6614: .4byte gUnknown_2024008 +_080D6614: .4byte gTransformedPersonalities _080D6618: - ldr r0, _080D663C @ =gUnknown_2024018 + ldr r0, _080D663C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4374,7 +4374,7 @@ _080D6636: pop {r0} bx r0 .align 2, 0 -_080D663C: .4byte gUnknown_2024018 +_080D663C: .4byte gBattleSpritesDataPtr _080D6640: .4byte gUnknown_3004FE0 _080D6644: .4byte sub_80D6648 thumb_func_end sub_80D6510 @@ -4404,7 +4404,7 @@ sub_80D6648: @ 80D6648 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, _080D669C @ =gUnknown_2024018 + ldr r7, _080D669C @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4422,7 +4422,7 @@ sub_80D6648: @ 80D6648 .align 2, 0 _080D6694: .4byte gUnknown_2022BC4 _080D6698: .4byte gActiveBattler -_080D669C: .4byte gUnknown_2024018 +_080D669C: .4byte gBattleSpritesDataPtr _080D66A0: cmp r2, 0x2 beq _080D670A @@ -4478,10 +4478,10 @@ _080D66E0: strb r1, [r0, 0x4] b _080D67BC _080D670A: - ldr r0, _080D6770 @ =gUnknown_2037EDC + ldr r0, _080D6770 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _080D6774 @ =gUnknown_2037EE1 + ldr r0, _080D6774 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _080D67BC @@ -4515,7 +4515,7 @@ _080D670A: ands r0, r2 strb r0, [r1] _080D6758: - ldr r0, _080D6778 @ =gUnknown_2024018 + ldr r0, _080D6778 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080D677C @ =gActiveBattler ldrb r1, [r0] @@ -4528,9 +4528,9 @@ _080D6758: strb r1, [r0, 0x4] b _080D67BC .align 2, 0 -_080D6770: .4byte gUnknown_2037EDC -_080D6774: .4byte gUnknown_2037EE1 -_080D6778: .4byte gUnknown_2024018 +_080D6770: .4byte gAnimScriptCallback +_080D6774: .4byte gAnimScriptActive +_080D6778: .4byte gBattleSpritesDataPtr _080D677C: .4byte gActiveBattler _080D6780: ldrb r1, [r0] @@ -4728,7 +4728,7 @@ sub_80D6894: @ 80D6894 adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _080D6920 @ =gUnknown_3004FF0 + ldr r1, _080D6920 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -4741,7 +4741,7 @@ _080D6910: .4byte gActiveBattler _080D6914: .4byte 0x00007fff _080D6918: .4byte gBattlerPartyIndexes _080D691C: .4byte gPlayerParty -_080D6920: .4byte gUnknown_3004FF0 +_080D6920: .4byte gHealthboxSpriteIds _080D6924: ldr r1, _080D696C @ =gBattlerPartyIndexes lsls r0, r4, 1 @@ -4756,7 +4756,7 @@ _080D6924: adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _080D6974 @ =gUnknown_3004FF0 + ldr r1, _080D6974 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -4780,7 +4780,7 @@ _080D694E: .align 2, 0 _080D696C: .4byte gBattlerPartyIndexes _080D6970: .4byte gPlayerParty -_080D6974: .4byte gUnknown_3004FF0 +_080D6974: .4byte gHealthboxSpriteIds _080D6978: .4byte gUnknown_3004FE0 _080D697C: .4byte gActiveBattler _080D6980: .4byte sub_80D45D0 @@ -4803,7 +4803,7 @@ sub_80D6990: @ 80D6990 lsls r0, 24 cmp r0, 0 bne _080D69E4 - ldr r0, _080D69F0 @ =gUnknown_3004FF0 + ldr r0, _080D69F0 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] @@ -4818,7 +4818,7 @@ sub_80D6990: @ 80D6990 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] - ldr r0, _080D69FC @ =gUnknown_2024018 + ldr r0, _080D69FC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -4842,10 +4842,10 @@ _080D69E4: bx r0 .align 2, 0 _080D69EC: .4byte gActiveBattler -_080D69F0: .4byte gUnknown_3004FF0 +_080D69F0: .4byte gHealthboxSpriteIds _080D69F4: .4byte gBattlerPartyIndexes _080D69F8: .4byte gPlayerParty -_080D69FC: .4byte gUnknown_2024018 +_080D69FC: .4byte gBattleSpritesDataPtr _080D6A00: .4byte gUnknown_3004FE0 _080D6A04: .4byte sub_80D4A60 thumb_func_end sub_80D6990 @@ -5217,7 +5217,7 @@ LinkPartnerHandleIntroSlide: @ 80D6CA0 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _080D6CD0 @ =gUnknown_2023F4C + ldr r2, _080D6CD0 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -5228,7 +5228,7 @@ LinkPartnerHandleIntroSlide: @ 80D6CA0 .align 2, 0 _080D6CC8: .4byte gUnknown_2022BC4 _080D6CCC: .4byte gActiveBattler -_080D6CD0: .4byte gUnknown_2023F4C +_080D6CD0: .4byte gIntroSlideFlags thumb_func_end LinkPartnerHandleIntroSlide thumb_func_start sub_80D6CD4 @@ -5412,7 +5412,7 @@ _080D6E0C: adds r1, r4 ldrb r0, [r5] strh r0, [r1, 0x8] - ldr r3, _080D6EBC @ =gUnknown_2024018 + ldr r3, _080D6EBC @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r5] ldr r1, [r0, 0x4] @@ -5457,7 +5457,7 @@ _080D6EAC: .4byte gBattlerSpriteIds _080D6EB0: .4byte gActiveBattler _080D6EB4: .4byte sub_80D6ED0 _080D6EB8: .4byte gTasks -_080D6EBC: .4byte gUnknown_2024018 +_080D6EBC: .4byte gBattleSpritesDataPtr _080D6EC0: .4byte gUnknown_2024000 _080D6EC4: .4byte sub_80491B0 _080D6EC8: .4byte gUnknown_3004FE0 @@ -5494,7 +5494,7 @@ _080D6EFC: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080D6F1C @@ -5557,7 +5557,7 @@ _080D6F4C: muls r0, r2 ldr r2, _080D6FCC @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_80D5F40 @@ -5615,7 +5615,7 @@ sub_80D6FDC: @ 80D6FDC _080D7004: .4byte gUnknown_2022BC4 _080D7008: .4byte gActiveBattler _080D700C: - ldr r6, _080D7088 @ =gUnknown_2024018 + ldr r6, _080D7088 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _080D708C @ =gActiveBattler ldrb r1, [r5] @@ -5678,7 +5678,7 @@ _080D7080: pop {r0} bx r0 .align 2, 0 -_080D7088: .4byte gUnknown_2024018 +_080D7088: .4byte gBattleSpritesDataPtr _080D708C: .4byte gActiveBattler _080D7090: .4byte gUnknown_2022BC8 _080D7094: .4byte gUnknown_2024000 @@ -5689,7 +5689,7 @@ _080D709C: .4byte sub_80D70A0 thumb_func_start sub_80D70A0 sub_80D70A0: @ 80D70A0 push {r4,lr} - ldr r4, _080D70E0 @ =gUnknown_2024018 + ldr r4, _080D70E0 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _080D70E4 @ =gActiveBattler ldrb r1, [r3] @@ -5720,14 +5720,14 @@ _080D70D8: pop {r0} bx r0 .align 2, 0 -_080D70E0: .4byte gUnknown_2024018 +_080D70E0: .4byte gBattleSpritesDataPtr _080D70E4: .4byte gActiveBattler thumb_func_end sub_80D70A0 thumb_func_start sub_80D70E8 sub_80D70E8: @ 80D70E8 push {lr} - ldr r0, _080D7124 @ =gUnknown_2024018 + ldr r0, _080D7124 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080D7128 @ =gActiveBattler ldrb r3, [r0] @@ -5756,7 +5756,7 @@ _080D711A: pop {r0} bx r0 .align 2, 0 -_080D7124: .4byte gUnknown_2024018 +_080D7124: .4byte gBattleSpritesDataPtr _080D7128: .4byte gActiveBattler _080D712C: .4byte gTasks _080D7130: .4byte gUnknown_2024000 @@ -5776,7 +5776,7 @@ LinkPartnerHandleSpriteInvisibility: @ 80D7144 push {r4,lr} ldr r4, _080D7194 @ =gActiveBattler ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _080D718A diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index df31ccd92..92efcecbc 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -722,7 +722,7 @@ _080E7B48: .4byte gSpecialVar_ItemId thumb_func_start sub_80E7B4C sub_80E7B4C: @ 80E7B4C push {r4-r7,lr} - ldr r4, _080E7CB0 @ =gUnknown_2024018 + ldr r4, _080E7CB0 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, _080E7CB4 @ =gActiveBattler ldrb r2, [r5] @@ -796,7 +796,7 @@ _080E7BB2: ands r0, r1 cmp r0, 0 bne _080E7CA8 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080E7C46 @@ -817,7 +817,7 @@ _080E7BB2: ldr r1, _080E7CC8 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _080E7CCC @ =gUnknown_3004FF0 + ldr r4, _080E7CCC @ =gHealthboxSpriteIds ldrb r0, [r5] adds r1, r6, 0 eors r1, r0 @@ -853,7 +853,7 @@ _080E7C46: ldr r1, _080E7CC8 @ =gSprites adds r0, r1 bl DestroySprite - ldr r5, _080E7CCC @ =gUnknown_3004FF0 + ldr r5, _080E7CCC @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] @@ -873,7 +873,7 @@ _080E7C46: adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible - ldr r0, _080E7CB0 @ =gUnknown_2024018 + ldr r0, _080E7CB0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -892,14 +892,14 @@ _080E7CA8: pop {r0} bx r0 .align 2, 0 -_080E7CB0: .4byte gUnknown_2024018 +_080E7CB0: .4byte gBattleSpritesDataPtr _080E7CB4: .4byte gActiveBattler _080E7CB8: .4byte gBattlerPartyIndexes _080E7CBC: .4byte gPlayerParty _080E7CC0: .4byte gBattleTypeFlags _080E7CC4: .4byte gUnknown_3004FFC _080E7CC8: .4byte gSprites -_080E7CCC: .4byte gUnknown_3004FF0 +_080E7CCC: .4byte gHealthboxSpriteIds _080E7CD0: .4byte gUnknown_3004FE0 _080E7CD4: .4byte sub_80E7CD8 thumb_func_end sub_80E7B4C @@ -911,7 +911,7 @@ sub_80E7CD8: @ 80E7CD8 push {r7} movs r4, 0 ldr r2, _080E7DD8 @ =gSprites - ldr r0, _080E7DDC @ =gUnknown_3004FF0 + ldr r0, _080E7DDC @ =gHealthboxSpriteIds ldr r1, _080E7DE0 @ =gActiveBattler mov r8, r1 ldrb r3, [r1] @@ -930,7 +930,7 @@ sub_80E7CD8: @ 80E7CD8 _080E7D02: cmp r4, 0 beq _080E7DCE - ldr r7, _080E7DE8 @ =gUnknown_2024018 + ldr r7, _080E7DE8 @ =gBattleSpritesDataPtr ldr r0, [r7] ldr r4, [r0, 0x4] lsls r0, r3, 1 @@ -1034,10 +1034,10 @@ _080E7DCE: bx r0 .align 2, 0 _080E7DD8: .4byte gSprites -_080E7DDC: .4byte gUnknown_3004FF0 +_080E7DDC: .4byte gHealthboxSpriteIds _080E7DE0: .4byte gActiveBattler _080E7DE4: .4byte SpriteCallbackDummy -_080E7DE8: .4byte gUnknown_2024018 +_080E7DE8: .4byte gBattleSpritesDataPtr _080E7DEC: .4byte 0x000027f9 _080E7DF0: .4byte c3_0802FDF4 _080E7DF4: .4byte gBattlerPartyIndexes @@ -1070,7 +1070,7 @@ sub_80E7E04: @ 80E7E04 str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1147,7 +1147,7 @@ _080E7E4A: movs r1, 0xB bl EmitTwoReturnValues strb r5, [r4] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1294,7 +1294,7 @@ sub_80E7F7C: @ 80E7F7C adds r4, r6 ldr r2, [r4] subs r2, r1 - ldr r0, _080E8044 @ =gUnknown_3004FF0 + ldr r0, _080E8044 @ =gHealthboxSpriteIds add r0, r10 ldrb r1, [r0] mov r0, r9 @@ -1320,7 +1320,7 @@ _080E8034: .4byte gTasks _080E8038: .4byte gPlayerParty _080E803C: .4byte gExperienceTables _080E8040: .4byte gBaseStats -_080E8044: .4byte gUnknown_3004FF0 +_080E8044: .4byte gHealthboxSpriteIds _080E8048: .4byte sub_80E804C thumb_func_end sub_80E7F7C @@ -1356,7 +1356,7 @@ _080E807C: ldrh r2, [r6, 0xA] mov r10, r2 ldrb r7, [r6, 0xC] - ldr r5, _080E8144 @ =gUnknown_3004FF0 + ldr r5, _080E8144 @ =gHealthboxSpriteIds adds r5, r7, r5 ldrb r1, [r5] adds r0, r7, 0 @@ -1443,7 +1443,7 @@ _080E807C: str r0, [r6] b _080E8178 .align 2, 0 -_080E8144: .4byte gUnknown_3004FF0 +_080E8144: .4byte gHealthboxSpriteIds _080E8148: .4byte gPlayerParty _080E814C: .4byte gExperienceTables _080E8150: .4byte gBaseStats @@ -1488,7 +1488,7 @@ sub_80E8190: @ 80E8190 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1536,7 +1536,7 @@ sub_80E81F0: @ 80E81F0 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] - ldr r0, _080E8260 @ =gUnknown_2024018 + ldr r0, _080E8260 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 @@ -1557,7 +1557,7 @@ sub_80E81F0: @ 80E81F0 adds r0, r7, 0 movs r1, 0x38 bl GetMonData - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1571,7 +1571,7 @@ sub_80E81F0: @ 80E81F0 ldrh r0, [r0] cmp r4, r0 bne _080E8270 - ldr r0, _080E826C @ =gUnknown_3004FF0 + ldr r0, _080E826C @ =gHealthboxSpriteIds adds r0, r2, r0 ldrb r0, [r0] adds r1, r7, 0 @@ -1580,12 +1580,12 @@ sub_80E81F0: @ 80E81F0 b _080E8284 .align 2, 0 _080E825C: .4byte gTasks -_080E8260: .4byte gUnknown_2024018 +_080E8260: .4byte gBattleSpritesDataPtr _080E8264: .4byte gPlayerParty _080E8268: .4byte gBattlerPartyIndexes -_080E826C: .4byte gUnknown_3004FF0 +_080E826C: .4byte gHealthboxSpriteIds _080E8270: - ldr r0, _080E8298 @ =gUnknown_3004FF0 + ldr r0, _080E8298 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r0, [r0] movs r1, 0x64 @@ -1607,7 +1607,7 @@ _080E8292: pop {r0} bx r0 .align 2, 0 -_080E8298: .4byte gUnknown_3004FF0 +_080E8298: .4byte gHealthboxSpriteIds _080E829C: .4byte gPlayerParty _080E82A0: .4byte gTasks _080E82A4: .4byte sub_80E82A8 @@ -1681,7 +1681,7 @@ sub_80E82F4: @ 80E82F4 lsls r0, 2 adds r0, r6 bl DestroySprite - ldr r1, _080E8358 @ =gUnknown_3004FF0 + ldr r1, _080E8358 @ =gHealthboxSpriteIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -1695,7 +1695,7 @@ _080E8344: _080E834C: .4byte gSprites _080E8350: .4byte gBattlerSpriteIds _080E8354: .4byte gActiveBattler -_080E8358: .4byte gUnknown_3004FF0 +_080E8358: .4byte gHealthboxSpriteIds thumb_func_end sub_80E82F4 thumb_func_start sub_80E835C @@ -2366,7 +2366,7 @@ sub_80E88C0: @ 80E88C0 push {r4-r6,lr} ldr r5, _080E8900 @ =gActiveBattler ldrb r0, [r5] - ldr r6, _080E8904 @ =gUnknown_3004FF0 + ldr r6, _080E8904 @ =gHealthboxSpriteIds adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 @@ -2393,7 +2393,7 @@ sub_80E88C0: @ 80E88C0 b _080E8922 .align 2, 0 _080E8900: .4byte gActiveBattler -_080E8904: .4byte gUnknown_3004FF0 +_080E8904: .4byte gHealthboxSpriteIds _080E8908: ldr r2, _080E8928 @ =gBattlerPartyIndexes ldrb r1, [r5] @@ -2496,7 +2496,7 @@ _080E89BE: thumb_func_start sub_80E89C4 sub_80E89C4: @ 80E89C4 push {r4-r6,lr} - ldr r0, _080E8A20 @ =gUnknown_2024018 + ldr r0, _080E8A20 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _080E8A24 @ =gActiveBattler ldrb r2, [r6] @@ -2527,7 +2527,7 @@ sub_80E89C4: @ 80E89C4 lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _080E8A30 @ =gUnknown_3004FF0 + ldr r1, _080E8A30 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -2538,11 +2538,11 @@ _080E8A18: pop {r0} bx r0 .align 2, 0 -_080E8A20: .4byte gUnknown_2024018 +_080E8A20: .4byte gBattleSpritesDataPtr _080E8A24: .4byte gActiveBattler _080E8A28: .4byte gBattlerSpriteIds _080E8A2C: .4byte gSprites -_080E8A30: .4byte gUnknown_3004FF0 +_080E8A30: .4byte gHealthboxSpriteIds thumb_func_end sub_80E89C4 thumb_func_start sub_80E8A34 @@ -2577,7 +2577,7 @@ _080E8A68: .4byte SpriteCallbackDummy thumb_func_start CompleteOnFinishedBattleAnimation_4 CompleteOnFinishedBattleAnimation_4: @ 80E8A6C push {lr} - ldr r0, _080E8A94 @ =gUnknown_2024018 + ldr r0, _080E8A94 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080E8A98 @ =gActiveBattler ldrb r1, [r0] @@ -2596,7 +2596,7 @@ _080E8A8E: pop {r0} bx r0 .align 2, 0 -_080E8A94: .4byte gUnknown_2024018 +_080E8A94: .4byte gBattleSpritesDataPtr _080E8A98: .4byte gActiveBattler thumb_func_end CompleteOnFinishedBattleAnimation_4 @@ -2660,7 +2660,7 @@ _080E8B10: .4byte gBitTable thumb_func_start CompleteOnFinishedStatusAnimation_4 CompleteOnFinishedStatusAnimation_4: @ 80E8B14 push {lr} - ldr r0, _080E8B3C @ =gUnknown_2024018 + ldr r0, _080E8B3C @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080E8B40 @ =gActiveBattler ldrb r1, [r0] @@ -2679,7 +2679,7 @@ _080E8B36: pop {r0} bx r0 .align 2, 0 -_080E8B3C: .4byte gUnknown_2024018 +_080E8B3C: .4byte gBattleSpritesDataPtr _080E8B40: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation_4 @@ -4936,7 +4936,7 @@ _080E9E24: lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _080E9E68 @ =gUnknown_3004FF0 + ldr r1, _080E9E68 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -4949,7 +4949,7 @@ _080E9E5A: .align 2, 0 _080E9E60: .4byte gBattlerSpriteIds _080E9E64: .4byte gSprites -_080E9E68: .4byte gUnknown_3004FF0 +_080E9E68: .4byte gHealthboxSpriteIds thumb_func_end WallyHandleReturnMonToBall thumb_func_start sub_80E9E6C @@ -5255,7 +5255,7 @@ sub_80EA0F4: @ 80EA0F4 thumb_func_start sub_80EA100 sub_80EA100: @ 80EA100 push {r4-r6,lr} - ldr r6, _080EA14C @ =gUnknown_2024018 + ldr r6, _080EA14C @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _080EA150 @ =gActiveBattler ldrb r2, [r5] @@ -5292,7 +5292,7 @@ _080EA134: strb r1, [r0, 0x4] b _080EA1CA .align 2, 0 -_080EA14C: .4byte gUnknown_2024018 +_080EA14C: .4byte gBattleSpritesDataPtr _080EA150: .4byte gActiveBattler _080EA154: ldrb r1, [r3] @@ -5377,7 +5377,7 @@ sub_80EA1EC: @ 80EA1EC thumb_func_start sub_80EA1F8 sub_80EA1F8: @ 80EA1F8 push {r4,r5,lr} - ldr r0, _080EA238 @ =gUnknown_2024018 + ldr r0, _080EA238 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -5406,7 +5406,7 @@ sub_80EA1F8: @ 80EA1F8 pop {r0} bx r0 .align 2, 0 -_080EA238: .4byte gUnknown_2024018 +_080EA238: .4byte gBattleSpritesDataPtr _080EA23C: .4byte gUnknown_2024005 _080EA240: .4byte gActiveBattler _080EA244: .4byte gUnknown_3004FE0 @@ -5423,7 +5423,7 @@ sub_80EA24C: @ 80EA24C adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, _080EA29C @ =gUnknown_2024018 + ldr r0, _080EA29C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -5452,7 +5452,7 @@ sub_80EA24C: @ 80EA24C .align 2, 0 _080EA294: .4byte gUnknown_2022BC4 _080EA298: .4byte gActiveBattler -_080EA29C: .4byte gUnknown_2024018 +_080EA29C: .4byte gBattleSpritesDataPtr _080EA2A0: .4byte gUnknown_2024005 _080EA2A4: .4byte gUnknown_3004FE0 _080EA2A8: .4byte sub_80E7970 @@ -5558,7 +5558,7 @@ sub_80EA2B8: @ 80EA2B8 adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _080EA3AC @ =gUnknown_2024008 + ldr r3, _080EA3AC @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -5581,9 +5581,9 @@ _080EA39C: .4byte gAnimMoveDmg _080EA3A0: .4byte gUnknown_2037EFE _080EA3A4: .4byte gUnknown_2037F00 _080EA3A8: .4byte gAnimDisableStructPtr -_080EA3AC: .4byte gUnknown_2024008 +_080EA3AC: .4byte gTransformedPersonalities _080EA3B0: - ldr r0, _080EA3D4 @ =gUnknown_2024018 + ldr r0, _080EA3D4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -5603,7 +5603,7 @@ _080EA3CE: pop {r0} bx r0 .align 2, 0 -_080EA3D4: .4byte gUnknown_2024018 +_080EA3D4: .4byte gBattleSpritesDataPtr _080EA3D8: .4byte gUnknown_3004FE0 _080EA3DC: .4byte sub_80EA3E0 thumb_func_end sub_80EA2B8 @@ -5628,7 +5628,7 @@ sub_80EA3E0: @ 80EA3E0 ldrb r0, [r1] lsls r0, 8 orrs r4, r0 - ldr r7, _080EA42C @ =gUnknown_2024018 + ldr r7, _080EA42C @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -5646,7 +5646,7 @@ sub_80EA3E0: @ 80EA3E0 .align 2, 0 _080EA424: .4byte gUnknown_2022BC4 _080EA428: .4byte gActiveBattler -_080EA42C: .4byte gUnknown_2024018 +_080EA42C: .4byte gBattleSpritesDataPtr _080EA430: cmp r2, 0x2 beq _080EA494 @@ -5699,10 +5699,10 @@ _080EA46A: strb r1, [r0, 0x4] b _080EA520 _080EA494: - ldr r0, _080EA4DC @ =gUnknown_2037EDC + ldr r0, _080EA4DC @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _080EA4E0 @ =gUnknown_2037EE1 + ldr r0, _080EA4E0 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _080EA520 @@ -5734,8 +5734,8 @@ _080EA4C8: strb r1, [r0, 0x4] b _080EA520 .align 2, 0 -_080EA4DC: .4byte gUnknown_2037EDC -_080EA4E0: .4byte gUnknown_2037EE1 +_080EA4DC: .4byte gAnimScriptCallback +_080EA4E0: .4byte gAnimScriptActive _080EA4E4: ldrb r1, [r0] movs r0, 0x40 @@ -6379,7 +6379,7 @@ sub_80EA9B8: @ 80EA9B8 adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _080EAA44 @ =gUnknown_3004FF0 + ldr r1, _080EAA44 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -6392,7 +6392,7 @@ _080EAA34: .4byte gActiveBattler _080EAA38: .4byte 0x00007fff _080EAA3C: .4byte gBattlerPartyIndexes _080EAA40: .4byte gPlayerParty -_080EAA44: .4byte gUnknown_3004FF0 +_080EAA44: .4byte gHealthboxSpriteIds _080EAA48: ldr r1, _080EAAA0 @ =gBattlerPartyIndexes lsls r0, r4, 1 @@ -6407,7 +6407,7 @@ _080EAA48: adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r4, _080EAAA8 @ =gUnknown_3004FF0 + ldr r4, _080EAAA8 @ =gHealthboxSpriteIds adds r1, r0, r4 ldrb r1, [r1] str r7, [sp] @@ -6438,7 +6438,7 @@ _080EAA82: .align 2, 0 _080EAAA0: .4byte gBattlerPartyIndexes _080EAAA4: .4byte gPlayerParty -_080EAAA8: .4byte gUnknown_3004FF0 +_080EAAA8: .4byte gHealthboxSpriteIds _080EAAAC: .4byte gUnknown_3004FE0 _080EAAB0: .4byte gActiveBattler _080EAAB4: .4byte sub_80E88C0 @@ -6787,7 +6787,7 @@ sub_80EAD20: @ 80EAD20 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _080EAD50 @ =gUnknown_2023F4C + ldr r2, _080EAD50 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -6798,7 +6798,7 @@ sub_80EAD20: @ 80EAD20 .align 2, 0 _080EAD48: .4byte gUnknown_2022BC4 _080EAD4C: .4byte gActiveBattler -_080EAD50: .4byte gUnknown_2023F4C +_080EAD50: .4byte gIntroSlideFlags thumb_func_end sub_80EAD20 thumb_func_start sub_80EAD54 @@ -6928,7 +6928,7 @@ _080EAD64: adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] - ldr r3, _080EAED0 @ =gUnknown_2024018 + ldr r3, _080EAED0 @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] @@ -6977,13 +6977,13 @@ _080EAEC0: .4byte gUnknown_8239FD4 _080EAEC4: .4byte gSaveBlock2Ptr _080EAEC8: .4byte sub_80EB0A8 _080EAECC: .4byte gTasks -_080EAED0: .4byte gUnknown_2024018 +_080EAED0: .4byte gBattleSpritesDataPtr _080EAED4: .4byte gUnknown_2024000 _080EAED8: .4byte sub_80491B0 _080EAEDC: .4byte gUnknown_3004FE0 _080EAEE0: .4byte nullsub_13 _080EAEE4: - ldr r0, _080EAF20 @ =gUnknown_2024018 + ldr r0, _080EAF20 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080EAF24 @ =gActiveBattler ldrb r3, [r0] @@ -7014,7 +7014,7 @@ _080EAF18: pop {r0} bx r0 .align 2, 0 -_080EAF20: .4byte gUnknown_2024018 +_080EAF20: .4byte gBattleSpritesDataPtr _080EAF24: .4byte gActiveBattler _080EAF28: .4byte gTasks _080EAF2C: .4byte gUnknown_2024000 @@ -7031,7 +7031,7 @@ sub_80EAF34: @ 80EAF34 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 - ldr r0, _080EB07C @ =gUnknown_2024018 + ldr r0, _080EB07C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r6, 2 @@ -7076,12 +7076,12 @@ sub_80EAF34: @ 80EAF34 mov r10, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -7178,7 +7178,7 @@ sub_80EAF34: @ 80EAF34 pop {r0} bx r0 .align 2, 0 -_080EB07C: .4byte gUnknown_2024018 +_080EB07C: .4byte gBattleSpritesDataPtr _080EB080: .4byte gBattlerPartyIndexes _080EB084: .4byte gUnknown_2022BC4 _080EB088: .4byte gPlayerParty @@ -7272,7 +7272,7 @@ sub_80EB11C: @ 80EB11C _080EB144: .4byte gUnknown_2022BC4 _080EB148: .4byte gActiveBattler _080EB14C: - ldr r0, _080EB190 @ =gUnknown_2024018 + ldr r0, _080EB190 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r5, _080EB194 @ =gActiveBattler ldrb r1, [r5] @@ -7306,7 +7306,7 @@ _080EB18A: pop {r0} bx r0 .align 2, 0 -_080EB190: .4byte gUnknown_2024018 +_080EB190: .4byte gBattleSpritesDataPtr _080EB194: .4byte gActiveBattler _080EB198: .4byte gUnknown_2022BC8 _080EB19C: .4byte gUnknown_2024000 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 0618be95f..3bc790216 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -145,7 +145,7 @@ sub_8035B58: @ 8035B58 bne _08035BC8 adds r0, r2, r4 ldrh r0, [r0, 0x6] - bl sub_803477C + bl FreeTrainerFrontPicPaletteAndTile ldrb r0, [r5] adds r0, r6 ldrb r0, [r0] @@ -194,7 +194,7 @@ _08035BE4: .4byte 0xfffffc00 thumb_func_start sub_8035BE8 sub_8035BE8: @ 8035BE8 push {r4,lr} - ldr r4, _08035C28 @ =gUnknown_2024018 + ldr r4, _08035C28 @ =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, _08035C2C @ =gActiveBattler ldrb r0, [r3] @@ -225,7 +225,7 @@ _08035C20: pop {r0} bx r0 .align 2, 0 -_08035C28: .4byte gUnknown_2024018 +_08035C28: .4byte gBattleSpritesDataPtr _08035C2C: .4byte gActiveBattler thumb_func_end sub_8035BE8 @@ -233,11 +233,11 @@ _08035C2C: .4byte gActiveBattler sub_8035C30: @ 8035C30 push {r4-r7,lr} movs r6, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08035C54 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08035C88 @@ -249,7 +249,7 @@ sub_8035C30: @ 8035C30 beq _08035C88 _08035C54: ldr r2, _08035C78 @ =gSprites - ldr r1, _08035C7C @ =gUnknown_3004FF0 + ldr r1, _08035C7C @ =gHealthboxSpriteIds ldr r0, _08035C80 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -267,12 +267,12 @@ _08035C54: .align 2, 0 _08035C74: .4byte gBattleTypeFlags _08035C78: .4byte gSprites -_08035C7C: .4byte gUnknown_3004FF0 +_08035C7C: .4byte gHealthboxSpriteIds _08035C80: .4byte gActiveBattler _08035C84: .4byte SpriteCallbackDummy _08035C88: ldr r2, _08035D84 @ =gSprites - ldr r5, _08035D88 @ =gUnknown_3004FF0 + ldr r5, _08035D88 @ =gHealthboxSpriteIds ldr r0, _08035D8C @ =gActiveBattler ldrb r3, [r0] adds r0, r3, r5 @@ -310,7 +310,7 @@ _08035CCA: bne _08035CD0 b _08035DD2 _08035CD0: - ldr r0, _08035D94 @ =gUnknown_2024018 + ldr r0, _08035D94 @ =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldr r7, _08035D8C @ =gActiveBattler @@ -399,10 +399,10 @@ _08035CD0: b _08035DB0 .align 2, 0 _08035D84: .4byte gSprites -_08035D88: .4byte gUnknown_3004FF0 +_08035D88: .4byte gHealthboxSpriteIds _08035D8C: .4byte gActiveBattler _08035D90: .4byte SpriteCallbackDummy -_08035D94: .4byte gUnknown_2024018 +_08035D94: .4byte gBattleSpritesDataPtr _08035D98: .4byte 0x000027f9 _08035D9C: .4byte gBattleTypeFlags _08035DA0: .4byte gMPlayInfo_BGM @@ -413,7 +413,7 @@ _08035DA4: lsls r2, 1 bl m4aMPlayVolumeControl _08035DB0: - ldr r0, _08035DE0 @ =gUnknown_2024018 + ldr r0, _08035DE0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r3, _08035DE4 @ =gActiveBattler ldrb r1, [r3] @@ -437,7 +437,7 @@ _08035DD2: .align 2, 0 _08035DD8: .4byte gMPlayInfo_BGM _08035DDC: .4byte 0x0000ffff -_08035DE0: .4byte gUnknown_2024018 +_08035DE0: .4byte gBattleSpritesDataPtr _08035DE4: .4byte gActiveBattler _08035DE8: .4byte gUnknown_3004FE0 _08035DEC: .4byte sub_8035BE8 @@ -449,7 +449,7 @@ sub_8035DF0: @ 8035DF0 mov r7, r9 mov r6, r8 push {r6,r7} - ldr r4, _08035FC0 @ =gUnknown_2024018 + ldr r4, _08035FC0 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r1, _08035FC4 @ =gActiveBattler mov r9, r1 @@ -530,7 +530,7 @@ _08035E7E: beq _08035E96 b _08035FB4 _08035E96: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08035F28 @@ -552,7 +552,7 @@ _08035E96: ldr r1, _08035FD8 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _08035FDC @ =gUnknown_3004FF0 + ldr r4, _08035FDC @ =gHealthboxSpriteIds mov r1, r9 ldrb r0, [r1] adds r1, r7, 0 @@ -595,7 +595,7 @@ _08035E96: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback _08035F28: ldr r1, _08035FD4 @ =gUnknown_3004FFC ldr r5, _08035FC4 @ =gActiveBattler @@ -608,7 +608,7 @@ _08035F28: ldr r1, _08035FD8 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _08035FDC @ =gUnknown_3004FF0 + ldr r4, _08035FDC @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -646,8 +646,8 @@ _08035F28: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback - ldr r0, _08035FC0 @ =gUnknown_2024018 + bl SetBattlerShadowSpriteCallback + ldr r0, _08035FC0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -669,14 +669,14 @@ _08035FB4: pop {r0} bx r0 .align 2, 0 -_08035FC0: .4byte gUnknown_2024018 +_08035FC0: .4byte gBattleSpritesDataPtr _08035FC4: .4byte gActiveBattler _08035FC8: .4byte gBattlerPartyIndexes _08035FCC: .4byte gEnemyParty _08035FD0: .4byte gBattleTypeFlags _08035FD4: .4byte gUnknown_3004FFC _08035FD8: .4byte gSprites -_08035FDC: .4byte gUnknown_3004FF0 +_08035FDC: .4byte gHealthboxSpriteIds _08035FE0: .4byte gUnknown_3004FE0 _08035FE4: .4byte sub_8035C30 thumb_func_end sub_8035DF0 @@ -705,7 +705,7 @@ sub_8035FE8: @ 8035FE8 ldrsh r0, [r1, r4] cmp r0, 0 bne _08036094 - ldr r6, _08036050 @ =gUnknown_2024018 + ldr r6, _08036050 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 @@ -731,7 +731,7 @@ sub_8035FE8: @ 8035FE8 _08036044: .4byte gSprites _08036048: .4byte gBattlerSpriteIds _0803604C: .4byte gActiveBattler -_08036050: .4byte gUnknown_2024018 +_08036050: .4byte gBattleSpritesDataPtr _08036054: .4byte gBattlerPartyIndexes _08036058: .4byte gEnemyParty _0803605C: @@ -773,7 +773,7 @@ sub_80360A0: @ 80360A0 push {r4-r6,lr} ldr r6, _080360E0 @ =gActiveBattler ldrb r0, [r6] - ldr r5, _080360E4 @ =gUnknown_3004FF0 + ldr r5, _080360E4 @ =gHealthboxSpriteIds adds r1, r0, r5 ldrb r1, [r1] movs r2, 0 @@ -800,7 +800,7 @@ sub_80360A0: @ 80360A0 b _08036124 .align 2, 0 _080360E0: .4byte gActiveBattler -_080360E4: .4byte gUnknown_3004FF0 +_080360E4: .4byte gHealthboxSpriteIds _080360E8: movs r0, 0x1 bl sub_80EB2E0 @@ -852,7 +852,7 @@ sub_803612C: @ 803612C lsls r0, 31 cmp r0, 0 bne _0803615A - ldr r0, _0803616C @ =gUnknown_3004FF0 + ldr r0, _0803616C @ =gHealthboxSpriteIds adds r0, r3, r0 ldrb r0, [r0] bl SetHealthboxSpriteInvisible @@ -864,13 +864,13 @@ _0803615A: _08036160: .4byte gSprites _08036164: .4byte gBattlerSpriteIds _08036168: .4byte gActiveBattler -_0803616C: .4byte gUnknown_3004FF0 +_0803616C: .4byte gHealthboxSpriteIds thumb_func_end sub_803612C thumb_func_start sub_8036170 sub_8036170: @ 8036170 push {r4-r6,lr} - ldr r0, _080361D0 @ =gUnknown_2024018 + ldr r0, _080361D0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _080361D4 @ =gActiveBattler ldrb r2, [r6] @@ -902,8 +902,8 @@ sub_8036170: @ 8036170 adds r0, r4 bl DestroySprite ldrb r0, [r6] - bl EnemyShadowCallbackToSetInvisible - ldr r1, _080361E0 @ =gUnknown_3004FF0 + bl HideBattlerShadowSprite + ldr r1, _080361E0 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -914,11 +914,11 @@ _080361CA: pop {r0} bx r0 .align 2, 0 -_080361D0: .4byte gUnknown_2024018 +_080361D0: .4byte gBattleSpritesDataPtr _080361D4: .4byte gActiveBattler _080361D8: .4byte gBattlerSpriteIds _080361DC: .4byte gSprites -_080361E0: .4byte gUnknown_3004FF0 +_080361E0: .4byte gHealthboxSpriteIds thumb_func_end sub_8036170 thumb_func_start sub_80361E4 @@ -1003,7 +1003,7 @@ _08036272: sub_8036278: @ 8036278 push {r4,lr} ldr r2, _080362CC @ =gSprites - ldr r0, _080362D0 @ =gUnknown_3004FF0 + ldr r0, _080362D0 @ =gHealthboxSpriteIds ldr r4, _080362D4 @ =gActiveBattler ldrb r3, [r4] adds r0, r3, r0 @@ -1017,7 +1017,7 @@ sub_8036278: @ 8036278 ldr r0, _080362D8 @ =SpriteCallbackDummy cmp r1, r0 bne _080362C4 - ldr r0, _080362DC @ =gUnknown_2024018 + ldr r0, _080362DC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r3, 2 @@ -1045,10 +1045,10 @@ _080362C4: bx r0 .align 2, 0 _080362CC: .4byte gSprites -_080362D0: .4byte gUnknown_3004FF0 +_080362D0: .4byte gHealthboxSpriteIds _080362D4: .4byte gActiveBattler _080362D8: .4byte SpriteCallbackDummy -_080362DC: .4byte gUnknown_2024018 +_080362DC: .4byte gBattleSpritesDataPtr _080362E0: .4byte gUnknown_3004FE0 _080362E4: .4byte sub_80362E8 thumb_func_end sub_8036278 @@ -1056,7 +1056,7 @@ _080362E4: .4byte sub_80362E8 thumb_func_start sub_80362E8 sub_80362E8: @ 80362E8 push {lr} - ldr r0, _08036324 @ =gUnknown_2024018 + ldr r0, _08036324 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08036328 @ =gActiveBattler ldrb r1, [r0] @@ -1084,7 +1084,7 @@ _08036320: pop {r0} bx r0 .align 2, 0 -_08036324: .4byte gUnknown_2024018 +_08036324: .4byte gBattleSpritesDataPtr _08036328: .4byte gActiveBattler _0803632C: .4byte gMPlayInfo_BGM _08036330: .4byte 0x0000ffff @@ -1093,7 +1093,7 @@ _08036330: .4byte 0x0000ffff thumb_func_start sub_8036334 sub_8036334: @ 8036334 push {r4,r5,lr} - ldr r3, _080363E0 @ =gUnknown_2024018 + ldr r3, _080363E0 @ =gBattleSpritesDataPtr ldr r0, [r3] ldr r5, _080363E4 @ =gActiveBattler ldrb r1, [r5] @@ -1139,7 +1139,7 @@ sub_8036334: @ 8036334 adds r0, r1 movs r1, 0 bl StartSpriteAnim - ldr r4, _080363F4 @ =gUnknown_3004FF0 + ldr r4, _080363F4 @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -1172,12 +1172,12 @@ _080363D8: pop {r0} bx r0 .align 2, 0 -_080363E0: .4byte gUnknown_2024018 +_080363E0: .4byte gBattleSpritesDataPtr _080363E4: .4byte gActiveBattler _080363E8: .4byte 0x000027f9 _080363EC: .4byte gBattlerSpriteIds _080363F0: .4byte gSprites -_080363F4: .4byte gUnknown_3004FF0 +_080363F4: .4byte gHealthboxSpriteIds _080363F8: .4byte gBattlerPartyIndexes _080363FC: .4byte gEnemyParty _08036400: .4byte gUnknown_3004FE0 @@ -1187,7 +1187,7 @@ _08036404: .4byte sub_8036278 thumb_func_start sub_8036408 sub_8036408: @ 8036408 push {r4-r6,lr} - ldr r6, _080364AC @ =gUnknown_2024018 + ldr r6, _080364AC @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _080364B0 @ =gActiveBattler ldrb r2, [r5] @@ -1254,7 +1254,7 @@ _0803643A: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback ldr r1, _080364C8 @ =gUnknown_3004FE0 ldrb r0, [r5] lsls r0, 2 @@ -1266,7 +1266,7 @@ _080364A4: pop {r0} bx r0 .align 2, 0 -_080364AC: .4byte gUnknown_2024018 +_080364AC: .4byte gBattleSpritesDataPtr _080364B0: .4byte gActiveBattler _080364B4: .4byte gBattlerPartyIndexes _080364B8: .4byte gEnemyParty @@ -1280,7 +1280,7 @@ _080364CC: .4byte sub_8036334 thumb_func_start sub_80364D0 sub_80364D0: @ 80364D0 push {lr} - ldr r0, _080364F8 @ =gUnknown_2024018 + ldr r0, _080364F8 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080364FC @ =gActiveBattler ldrb r1, [r0] @@ -1299,14 +1299,14 @@ _080364F2: pop {r0} bx r0 .align 2, 0 -_080364F8: .4byte gUnknown_2024018 +_080364F8: .4byte gBattleSpritesDataPtr _080364FC: .4byte gActiveBattler thumb_func_end sub_80364D0 thumb_func_start sub_8036500 sub_8036500: @ 8036500 push {lr} - ldr r0, _08036528 @ =gUnknown_2024018 + ldr r0, _08036528 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803652C @ =gActiveBattler ldrb r1, [r0] @@ -1325,7 +1325,7 @@ _08036522: pop {r0} bx r0 .align 2, 0 -_08036528: .4byte gUnknown_2024018 +_08036528: .4byte gBattleSpritesDataPtr _0803652C: .4byte gActiveBattler thumb_func_end sub_8036500 @@ -3594,12 +3594,12 @@ sub_80377FC: @ 80377FC ldrh r0, [r0] muls r0, r5 adds r0, r6 - bl sub_8034658 + bl DecompressGhostFrontPic ldrb r0, [r4] bl sub_8074900 lsls r0, 24 lsrs r5, r0, 24 - ldr r3, _0803788C @ =gUnknown_2024018 + ldr r3, _0803788C @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r1, [r4] ldr r2, [r0, 0x4] @@ -3628,7 +3628,7 @@ _0803787C: .4byte gBattlerPartyIndexes _08037880: .4byte gActiveBattler _08037884: .4byte gEnemyParty _08037888: .4byte gBattleTypeFlags -_0803788C: .4byte gUnknown_2024018 +_0803788C: .4byte gBattleSpritesDataPtr _08037890: ldrb r1, [r4] lsls r0, r1, 1 @@ -3638,7 +3638,7 @@ _08037890: adds r0, r6 bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r4] - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y lsls r0, 24 lsrs r5, r0, 24 _080378AA: @@ -3653,7 +3653,7 @@ _080378AA: ldr r6, _080379A0 @ =gMultiuseSpriteTemplate ldrb r0, [r7] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3743,7 +3743,7 @@ _080378AA: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback _08037986: ldr r0, _080379C0 @ =gUnknown_3004FE0 ldrb r1, [r7] @@ -3877,12 +3877,12 @@ sub_8037A28: @ 8037A28 mov r9, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -4003,7 +4003,7 @@ sub_8037BAC: @ 8037BAC ldrb r3, [r0] cmp r3, 0 bne _08037BF4 - ldr r0, _08037BE8 @ =gUnknown_2024018 + ldr r0, _08037BE8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -4021,7 +4021,7 @@ sub_8037BAC: @ 8037BAC .align 2, 0 _08037BE0: .4byte gUnknown_2022BC4 _08037BE4: .4byte gActiveBattler -_08037BE8: .4byte gUnknown_2024018 +_08037BE8: .4byte gBattleSpritesDataPtr _08037BEC: .4byte gUnknown_3004FE0 _08037BF0: .4byte sub_8037C44 _08037BF4: @@ -4043,8 +4043,8 @@ _08037BF4: adds r0, r4 bl DestroySprite ldrb r0, [r6] - bl EnemyShadowCallbackToSetInvisible - ldr r1, _08037C40 @ =gUnknown_3004FF0 + bl HideBattlerShadowSprite + ldr r1, _08037C40 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -4057,13 +4057,13 @@ _08037C30: .align 2, 0 _08037C38: .4byte gBattlerSpriteIds _08037C3C: .4byte gSprites -_08037C40: .4byte gUnknown_3004FF0 +_08037C40: .4byte gHealthboxSpriteIds thumb_func_end sub_8037BAC thumb_func_start sub_8037C44 sub_8037C44: @ 8037C44 push {r4-r6,lr} - ldr r6, _08037C64 @ =gUnknown_2024018 + ldr r6, _08037C64 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _08037C68 @ =gActiveBattler ldrb r2, [r5] @@ -4079,7 +4079,7 @@ sub_8037C44: @ 8037C44 beq _08037C9A b _08037CC2 .align 2, 0 -_08037C64: .4byte gUnknown_2024018 +_08037C64: .4byte gBattleSpritesDataPtr _08037C68: .4byte gActiveBattler _08037C6C: ldr r1, [r4] @@ -4195,7 +4195,7 @@ _08037D3A: mov r8, r0 ldrb r1, [r0] mov r0, r9 - bl sub_80346C4 + bl DecompressTrainerFrontPic mov r1, r8 ldrb r0, [r1] bl GetBattlerPosition @@ -4414,7 +4414,7 @@ _08037F0E: mov r8, r0 ldrb r1, [r0] mov r0, r9 - bl sub_80346C4 + bl DecompressTrainerFrontPic mov r1, r8 ldrb r0, [r1] bl GetBattlerPosition @@ -4657,7 +4657,7 @@ _08038120: .4byte sub_8035B58 thumb_func_start sub_8038124 sub_8038124: @ 8038124 push {r4-r6,lr} - ldr r6, _08038170 @ =gUnknown_2024018 + ldr r6, _08038170 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _08038174 @ =gActiveBattler ldrb r2, [r5] @@ -4694,7 +4694,7 @@ _08038158: strb r1, [r0, 0x4] b _080381B4 .align 2, 0 -_08038170: .4byte gUnknown_2024018 +_08038170: .4byte gBattleSpritesDataPtr _08038174: .4byte gActiveBattler _08038178: ldrb r1, [r3] @@ -4869,7 +4869,7 @@ _08038212: adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _08038304 @ =gUnknown_2024008 + ldr r3, _08038304 @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -4892,9 +4892,9 @@ _080382F4: .4byte gAnimMoveDmg _080382F8: .4byte gUnknown_2037EFE _080382FC: .4byte gUnknown_2037F00 _08038300: .4byte gAnimDisableStructPtr -_08038304: .4byte gUnknown_2024008 +_08038304: .4byte gTransformedPersonalities _08038308: - ldr r0, _0803832C @ =gUnknown_2024018 + ldr r0, _0803832C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4914,7 +4914,7 @@ _08038326: pop {r0} bx r0 .align 2, 0 -_0803832C: .4byte gUnknown_2024018 +_0803832C: .4byte gBattleSpritesDataPtr _08038330: .4byte gUnknown_3004FE0 _08038334: .4byte sub_8038338 thumb_func_end sub_8038200 @@ -4944,7 +4944,7 @@ sub_8038338: @ 8038338 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, _0803838C @ =gUnknown_2024018 + ldr r7, _0803838C @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4962,7 +4962,7 @@ sub_8038338: @ 8038338 .align 2, 0 _08038384: .4byte gUnknown_2022BC4 _08038388: .4byte gActiveBattler -_0803838C: .4byte gUnknown_2024018 +_0803838C: .4byte gBattleSpritesDataPtr _08038390: cmp r2, 0x2 beq _080383FA @@ -5018,10 +5018,10 @@ _080383D0: strb r1, [r0, 0x4] b _080384AC _080383FA: - ldr r0, _08038460 @ =gUnknown_2037EDC + ldr r0, _08038460 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _08038464 @ =gUnknown_2037EE1 + ldr r0, _08038464 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _080384AC @@ -5055,7 +5055,7 @@ _080383FA: ands r0, r2 strb r0, [r1] _08038448: - ldr r0, _08038468 @ =gUnknown_2024018 + ldr r0, _08038468 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _0803846C @ =gActiveBattler ldrb r1, [r0] @@ -5068,9 +5068,9 @@ _08038448: strb r1, [r0, 0x4] b _080384AC .align 2, 0 -_08038460: .4byte gUnknown_2037EDC -_08038464: .4byte gUnknown_2037EE1 -_08038468: .4byte gUnknown_2024018 +_08038460: .4byte gAnimScriptCallback +_08038464: .4byte gAnimScriptActive +_08038468: .4byte gBattleSpritesDataPtr _0803846C: .4byte gActiveBattler _08038470: ldrb r1, [r0] @@ -5596,7 +5596,7 @@ sub_8038844: @ 8038844 adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _080388D0 @ =gUnknown_3004FF0 + ldr r1, _080388D0 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -5609,7 +5609,7 @@ _080388C0: .4byte gActiveBattler _080388C4: .4byte 0x00007fff _080388C8: .4byte gBattlerPartyIndexes _080388CC: .4byte gEnemyParty -_080388D0: .4byte gUnknown_3004FF0 +_080388D0: .4byte gHealthboxSpriteIds _080388D4: ldr r1, _0803891C @ =gBattlerPartyIndexes lsls r0, r4, 1 @@ -5624,7 +5624,7 @@ _080388D4: adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _08038924 @ =gUnknown_3004FF0 + ldr r1, _08038924 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -5648,7 +5648,7 @@ _080388FE: .align 2, 0 _0803891C: .4byte gBattlerPartyIndexes _08038920: .4byte gEnemyParty -_08038924: .4byte gUnknown_3004FF0 +_08038924: .4byte gHealthboxSpriteIds _08038928: .4byte gUnknown_3004FE0 _0803892C: .4byte gActiveBattler _08038930: .4byte sub_80360A0 @@ -5671,7 +5671,7 @@ sub_8038940: @ 8038940 lsls r0, 24 cmp r0, 0 bne _08038994 - ldr r0, _080389A0 @ =gUnknown_3004FF0 + ldr r0, _080389A0 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] @@ -5686,7 +5686,7 @@ sub_8038940: @ 8038940 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] - ldr r0, _080389AC @ =gUnknown_2024018 + ldr r0, _080389AC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5710,10 +5710,10 @@ _08038994: bx r0 .align 2, 0 _0803899C: .4byte gActiveBattler -_080389A0: .4byte gUnknown_3004FF0 +_080389A0: .4byte gHealthboxSpriteIds _080389A4: .4byte gBattlerPartyIndexes _080389A8: .4byte gEnemyParty -_080389AC: .4byte gUnknown_2024018 +_080389AC: .4byte gBattleSpritesDataPtr _080389B0: .4byte gUnknown_3004FE0 _080389B4: .4byte sub_80364D0 thumb_func_end sub_8038940 @@ -6084,7 +6084,7 @@ OpponentHandleIntroSlide: @ 8038C4C adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _08038C7C @ =gUnknown_2023F4C + ldr r2, _08038C7C @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -6095,7 +6095,7 @@ OpponentHandleIntroSlide: @ 8038C4C .align 2, 0 _08038C74: .4byte gUnknown_2022BC4 _08038C78: .4byte gActiveBattler -_08038C7C: .4byte gUnknown_2023F4C +_08038C7C: .4byte gIntroSlideFlags thumb_func_end OpponentHandleIntroSlide thumb_func_start sub_8038C80 @@ -6172,7 +6172,7 @@ sub_8038C80: @ 8038C80 adds r1, r4 ldrb r0, [r6] strh r0, [r1, 0x8] - ldr r3, _08038D7C @ =gUnknown_2024018 + ldr r3, _08038D7C @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r6] ldr r1, [r0, 0x4] @@ -6218,7 +6218,7 @@ _08038D6C: .4byte sub_8075590 _08038D70: .4byte sub_8038D90 _08038D74: .4byte sub_8038DC4 _08038D78: .4byte gTasks -_08038D7C: .4byte gUnknown_2024018 +_08038D7C: .4byte gBattleSpritesDataPtr _08038D80: .4byte gUnknown_2024000 _08038D84: .4byte sub_80491B0 _08038D88: .4byte gUnknown_3004FE0 @@ -6230,7 +6230,7 @@ sub_8038D90: @ 8038D90 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x6] - bl sub_803477C + bl FreeTrainerFrontPicPaletteAndTile ldrh r0, [r4, 0x38] ldr r1, _08038DBC @ =0x000003ff ands r1, r0 @@ -6271,7 +6271,7 @@ sub_8038DC4: @ 8038DC4 adds r0, r1 ldrh r0, [r0, 0x8] strb r0, [r7] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08038DFE @@ -6382,7 +6382,7 @@ sub_8038EA8: @ 8038EA8 _08038ED0: .4byte gUnknown_2022BC4 _08038ED4: .4byte gActiveBattler _08038ED8: - ldr r4, _08038F30 @ =gUnknown_2024018 + ldr r4, _08038F30 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _08038F34 @ =gActiveBattler ldrb r1, [r3] @@ -6426,7 +6426,7 @@ _08038ED8: strb r1, [r3, 0x1] b _08038FA2 .align 2, 0 -_08038F30: .4byte gUnknown_2024018 +_08038F30: .4byte gBattleSpritesDataPtr _08038F34: .4byte gActiveBattler _08038F38: .4byte gUnknown_2022BC4 _08038F3C: @@ -6452,7 +6452,7 @@ _08038F44: adds r1, r2 movs r3, 0 strb r0, [r1] - ldr r6, _08038FB0 @ =gUnknown_2024018 + ldr r6, _08038FB0 @ =gBattleSpritesDataPtr ldr r0, [r6] ldrb r1, [r5] ldr r2, [r0, 0x4] @@ -6489,7 +6489,7 @@ _08038FA2: .align 2, 0 _08038FA8: .4byte gUnknown_2022BC8 _08038FAC: .4byte gUnknown_2024000 -_08038FB0: .4byte gUnknown_2024018 +_08038FB0: .4byte gBattleSpritesDataPtr _08038FB4: .4byte gUnknown_3004FE0 _08038FB8: .4byte sub_8038FBC thumb_func_end sub_8038EA8 @@ -6497,7 +6497,7 @@ _08038FB8: .4byte sub_8038FBC thumb_func_start sub_8038FBC sub_8038FBC: @ 8038FBC push {r4,lr} - ldr r4, _08038FFC @ =gUnknown_2024018 + ldr r4, _08038FFC @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _08039000 @ =gActiveBattler ldrb r1, [r3] @@ -6528,14 +6528,14 @@ _08038FF4: pop {r0} bx r0 .align 2, 0 -_08038FFC: .4byte gUnknown_2024018 +_08038FFC: .4byte gBattleSpritesDataPtr _08039000: .4byte gActiveBattler thumb_func_end sub_8038FBC thumb_func_start sub_8039004 sub_8039004: @ 8039004 push {lr} - ldr r0, _08039040 @ =gUnknown_2024018 + ldr r0, _08039040 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _08039044 @ =gActiveBattler ldrb r3, [r0] @@ -6564,7 +6564,7 @@ _08039036: pop {r0} bx r0 .align 2, 0 -_08039040: .4byte gUnknown_2024018 +_08039040: .4byte gBattleSpritesDataPtr _08039044: .4byte gActiveBattler _08039048: .4byte gTasks _0803904C: .4byte gUnknown_2024000 @@ -6584,7 +6584,7 @@ sub_8039060: @ 8039060 push {r4,lr} ldr r4, _080390B0 @ =gActiveBattler ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _080390A6 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 197816465..913e020cb 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -2571,7 +2571,7 @@ _0802F80C: .4byte gSaveBlock2Ptr thumb_func_start sub_802F810 sub_802F810: @ 802F810 push {r4,lr} - ldr r4, _0802F850 @ =gUnknown_2024018 + ldr r4, _0802F850 @ =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, _0802F854 @ =gActiveBattler ldrb r0, [r3] @@ -2602,7 +2602,7 @@ _0802F848: pop {r0} bx r0 .align 2, 0 -_0802F850: .4byte gUnknown_2024018 +_0802F850: .4byte gBattleSpritesDataPtr _0802F854: .4byte gActiveBattler thumb_func_end sub_802F810 @@ -2610,11 +2610,11 @@ _0802F854: .4byte gActiveBattler sub_802F858: @ 802F858 push {r4-r7,lr} movs r6, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0802F87C - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0802F8B0 @@ -2626,7 +2626,7 @@ sub_802F858: @ 802F858 beq _0802F8B0 _0802F87C: ldr r2, _0802F8A0 @ =gSprites - ldr r1, _0802F8A4 @ =gUnknown_3004FF0 + ldr r1, _0802F8A4 @ =gHealthboxSpriteIds ldr r0, _0802F8A8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -2644,12 +2644,12 @@ _0802F87C: .align 2, 0 _0802F89C: .4byte gBattleTypeFlags _0802F8A0: .4byte gSprites -_0802F8A4: .4byte gUnknown_3004FF0 +_0802F8A4: .4byte gHealthboxSpriteIds _0802F8A8: .4byte gActiveBattler _0802F8AC: .4byte SpriteCallbackDummy _0802F8B0: ldr r2, _0802F9B0 @ =gSprites - ldr r5, _0802F9B4 @ =gUnknown_3004FF0 + ldr r5, _0802F9B4 @ =gHealthboxSpriteIds ldr r0, _0802F9B8 @ =gActiveBattler ldrb r3, [r0] adds r0, r3, r5 @@ -2687,7 +2687,7 @@ _0802F8F2: bne _0802F8F8 b _0802FA32 _0802F8F8: - ldr r0, _0802F9C0 @ =gUnknown_2024018 + ldr r0, _0802F9C0 @ =gBattleSpritesDataPtr mov r12, r0 ldr r0, [r0] ldr r7, _0802F9B8 @ =gActiveBattler @@ -2780,10 +2780,10 @@ _0802F934: b _0802F9DC .align 2, 0 _0802F9B0: .4byte gSprites -_0802F9B4: .4byte gUnknown_3004FF0 +_0802F9B4: .4byte gHealthboxSpriteIds _0802F9B8: .4byte gActiveBattler _0802F9BC: .4byte SpriteCallbackDummy -_0802F9C0: .4byte gUnknown_2024018 +_0802F9C0: .4byte gBattleSpritesDataPtr _0802F9C4: .4byte 0x000027f9 _0802F9C8: .4byte gBattleTypeFlags _0802F9CC: .4byte gMPlayInfo_BGM @@ -2805,7 +2805,7 @@ _0802F9DC: ldr r5, _0802FA48 @ =gPlayerParty adds r0, r5 bl HandleLowHpMusicChange - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0802FA12 @@ -2819,7 +2819,7 @@ _0802F9DC: adds r0, r5 bl HandleLowHpMusicChange _0802FA12: - ldr r0, _0802FA4C @ =gUnknown_2024018 + ldr r0, _0802FA4C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r4] ldr r2, [r0, 0x4] @@ -2845,7 +2845,7 @@ _0802FA3C: .4byte 0x0000ffff _0802FA40: .4byte gBattlerPartyIndexes _0802FA44: .4byte gActiveBattler _0802FA48: .4byte gPlayerParty -_0802FA4C: .4byte gUnknown_2024018 +_0802FA4C: .4byte gBattleSpritesDataPtr _0802FA50: .4byte gUnknown_3004FE0 _0802FA54: .4byte sub_802F810 thumb_func_end sub_802F858 @@ -2856,7 +2856,7 @@ sub_802FA58: @ 802FA58 mov r7, r9 mov r6, r8 push {r6,r7} - ldr r0, _0802FBCC @ =gUnknown_2024018 + ldr r0, _0802FBCC @ =gBattleSpritesDataPtr mov r9, r0 ldr r0, [r0] ldr r1, _0802FBD0 @ =gActiveBattler @@ -2930,7 +2930,7 @@ _0802FABC: adds r0, r2, 0 bl sub_80F1720 _0802FAF0: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0802FB5C @@ -2952,7 +2952,7 @@ _0802FAF0: ldr r1, _0802FBE4 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _0802FBE8 @ =gUnknown_3004FF0 + ldr r4, _0802FBE8 @ =gHealthboxSpriteIds mov r1, r8 ldrb r0, [r1] adds r1, r7, 0 @@ -2991,7 +2991,7 @@ _0802FB5C: ldr r1, _0802FBE4 @ =gSprites adds r0, r1 bl DestroySprite - ldr r5, _0802FBE8 @ =gUnknown_3004FF0 + ldr r5, _0802FBE8 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] @@ -3011,7 +3011,7 @@ _0802FB5C: adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible - ldr r0, _0802FBCC @ =gUnknown_2024018 + ldr r0, _0802FBCC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -3033,14 +3033,14 @@ _0802FBBE: pop {r0} bx r0 .align 2, 0 -_0802FBCC: .4byte gUnknown_2024018 +_0802FBCC: .4byte gBattleSpritesDataPtr _0802FBD0: .4byte gActiveBattler _0802FBD4: .4byte gBattlerPartyIndexes _0802FBD8: .4byte gPlayerParty _0802FBDC: .4byte gBattleTypeFlags _0802FBE0: .4byte gUnknown_3004FFC _0802FBE4: .4byte gSprites -_0802FBE8: .4byte gUnknown_3004FF0 +_0802FBE8: .4byte gHealthboxSpriteIds _0802FBEC: .4byte gUnknown_3004FE0 _0802FBF0: .4byte sub_802F858 thumb_func_end sub_802FA58 @@ -3049,7 +3049,7 @@ _0802FBF0: .4byte sub_802F858 sub_802FBF4: @ 802FBF4 push {r4-r6,lr} ldr r2, _0802FC8C @ =gSprites - ldr r0, _0802FC90 @ =gUnknown_3004FF0 + ldr r0, _0802FC90 @ =gHealthboxSpriteIds ldr r6, _0802FC94 @ =gActiveBattler ldrb r3, [r6] adds r0, r3, r0 @@ -3063,7 +3063,7 @@ sub_802FBF4: @ 802FBF4 ldr r0, _0802FC98 @ =SpriteCallbackDummy cmp r1, r0 bne _0802FC84 - ldr r5, _0802FC9C @ =gUnknown_2024018 + ldr r5, _0802FC9C @ =gBattleSpritesDataPtr ldr r0, [r5] ldr r1, [r0, 0x4] lsls r0, r3, 1 @@ -3123,10 +3123,10 @@ _0802FC84: bx r0 .align 2, 0 _0802FC8C: .4byte gSprites -_0802FC90: .4byte gUnknown_3004FF0 +_0802FC90: .4byte gHealthboxSpriteIds _0802FC94: .4byte gActiveBattler _0802FC98: .4byte SpriteCallbackDummy -_0802FC9C: .4byte gUnknown_2024018 +_0802FC9C: .4byte gBattleSpritesDataPtr _0802FCA0: .4byte 0x000027f9 _0802FCA4: .4byte gUnknown_3004FE0 _0802FCA8: .4byte sub_802FCAC @@ -3135,7 +3135,7 @@ _0802FCA8: .4byte sub_802FCAC thumb_func_start sub_802FCAC sub_802FCAC: @ 802FCAC push {r4,lr} - ldr r0, _0802FD00 @ =gUnknown_2024018 + ldr r0, _0802FD00 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, _0802FD04 @ =gActiveBattler ldrb r1, [r4] @@ -3174,7 +3174,7 @@ _0802FCFA: pop {r0} bx r0 .align 2, 0 -_0802FD00: .4byte gUnknown_2024018 +_0802FD00: .4byte gBattleSpritesDataPtr _0802FD04: .4byte gActiveBattler _0802FD08: .4byte gMPlayInfo_BGM _0802FD0C: .4byte 0x0000ffff @@ -3185,7 +3185,7 @@ _0802FD14: .4byte gPlayerParty thumb_func_start sub_802FD18 sub_802FD18: @ 802FD18 push {r4-r6,lr} - ldr r6, _0802FDCC @ =gUnknown_2024018 + ldr r6, _0802FDCC @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _0802FDD0 @ =gActiveBattler ldrb r2, [r5] @@ -3237,7 +3237,7 @@ _0802FD4A: bne _0802FDC4 adds r0, r3, r4 bl DestroySprite - ldr r4, _0802FDE8 @ =gUnknown_3004FF0 + ldr r4, _0802FDE8 @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -3270,14 +3270,14 @@ _0802FDC4: pop {r0} bx r0 .align 2, 0 -_0802FDCC: .4byte gUnknown_2024018 +_0802FDCC: .4byte gBattleSpritesDataPtr _0802FDD0: .4byte gActiveBattler _0802FDD4: .4byte gBattlerPartyIndexes _0802FDD8: .4byte gPlayerParty _0802FDDC: .4byte gSprites _0802FDE0: .4byte gUnknown_3004FFC _0802FDE4: .4byte SpriteCallbackDummy -_0802FDE8: .4byte gUnknown_3004FF0 +_0802FDE8: .4byte gHealthboxSpriteIds _0802FDEC: .4byte gUnknown_3004FE0 _0802FDF0: .4byte sub_802FBF4 thumb_func_end sub_802FD18 @@ -3312,7 +3312,7 @@ CompleteOnHealthbarDone: @ 802FE24 push {r4-r6,lr} ldr r5, _0802FE64 @ =gActiveBattler ldrb r0, [r5] - ldr r6, _0802FE68 @ =gUnknown_3004FF0 + ldr r6, _0802FE68 @ =gHealthboxSpriteIds adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 @@ -3339,7 +3339,7 @@ CompleteOnHealthbarDone: @ 802FE24 b _0802FE86 .align 2, 0 _0802FE64: .4byte gActiveBattler -_0802FE68: .4byte gUnknown_3004FF0 +_0802FE68: .4byte gHealthboxSpriteIds _0802FE6C: ldr r2, _0802FE8C @ =gBattlerPartyIndexes ldrb r1, [r5] @@ -3399,7 +3399,7 @@ sub_802FEAC: @ 802FEAC str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3476,7 +3476,7 @@ _0802FEF2: movs r1, 0xB bl EmitTwoReturnValues strb r5, [r4] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3623,7 +3623,7 @@ sub_8030024: @ 8030024 adds r4, r6 ldr r2, [r4] subs r2, r1 - ldr r0, _080300EC @ =gUnknown_3004FF0 + ldr r0, _080300EC @ =gHealthboxSpriteIds add r0, r10 ldrb r1, [r0] mov r0, r9 @@ -3649,7 +3649,7 @@ _080300DC: .4byte gTasks _080300E0: .4byte gPlayerParty _080300E4: .4byte gExperienceTables _080300E8: .4byte gBaseStats -_080300EC: .4byte gUnknown_3004FF0 +_080300EC: .4byte gHealthboxSpriteIds _080300F0: .4byte sub_80300F4 thumb_func_end sub_8030024 @@ -3685,7 +3685,7 @@ _08030124: ldrh r2, [r6, 0xA] mov r10, r2 ldrb r7, [r6, 0xC] - ldr r5, _080301EC @ =gUnknown_3004FF0 + ldr r5, _080301EC @ =gHealthboxSpriteIds adds r5, r7, r5 ldrb r1, [r5] adds r0, r7, 0 @@ -3772,7 +3772,7 @@ _08030124: str r0, [r6] b _08030220 .align 2, 0 -_080301EC: .4byte gUnknown_3004FF0 +_080301EC: .4byte gHealthboxSpriteIds _080301F0: .4byte gPlayerParty _080301F4: .4byte gExperienceTables _080301F8: .4byte gBaseStats @@ -3817,7 +3817,7 @@ sub_8030238: @ 8030238 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3865,7 +3865,7 @@ sub_8030298: @ 8030298 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] - ldr r0, _08030308 @ =gUnknown_2024018 + ldr r0, _08030308 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 @@ -3886,7 +3886,7 @@ sub_8030298: @ 8030298 adds r0, r7, 0 movs r1, 0x38 bl GetMonData - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3900,7 +3900,7 @@ sub_8030298: @ 8030298 ldrh r0, [r0] cmp r4, r0 bne _08030318 - ldr r0, _08030314 @ =gUnknown_3004FF0 + ldr r0, _08030314 @ =gHealthboxSpriteIds adds r0, r2, r0 ldrb r0, [r0] adds r1, r7, 0 @@ -3909,12 +3909,12 @@ sub_8030298: @ 8030298 b _0803032C .align 2, 0 _08030304: .4byte gTasks -_08030308: .4byte gUnknown_2024018 +_08030308: .4byte gBattleSpritesDataPtr _0803030C: .4byte gPlayerParty _08030310: .4byte gBattlerPartyIndexes -_08030314: .4byte gUnknown_3004FF0 +_08030314: .4byte gHealthboxSpriteIds _08030318: - ldr r0, _08030340 @ =gUnknown_3004FF0 + ldr r0, _08030340 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r0, [r0] movs r1, 0x64 @@ -3936,7 +3936,7 @@ _0803033A: pop {r0} bx r0 .align 2, 0 -_08030340: .4byte gUnknown_3004FF0 +_08030340: .4byte gHealthboxSpriteIds _08030344: .4byte gPlayerParty _08030348: .4byte gTasks _0803034C: .4byte sub_8030350 @@ -4207,7 +4207,7 @@ sub_8030538: @ 8030538 lsls r0, 2 adds r0, r6 bl DestroySprite - ldr r1, _0803059C @ =gUnknown_3004FF0 + ldr r1, _0803059C @ =gHealthboxSpriteIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -4221,13 +4221,13 @@ _08030588: _08030590: .4byte gSprites _08030594: .4byte gBattlerSpriteIds _08030598: .4byte gActiveBattler -_0803059C: .4byte gUnknown_3004FF0 +_0803059C: .4byte gHealthboxSpriteIds thumb_func_end sub_8030538 thumb_func_start sub_80305A0 sub_80305A0: @ 80305A0 push {r4-r6,lr} - ldr r0, _080305FC @ =gUnknown_2024018 + ldr r0, _080305FC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _08030600 @ =gActiveBattler ldrb r2, [r6] @@ -4258,7 +4258,7 @@ sub_80305A0: @ 80305A0 lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _0803060C @ =gUnknown_3004FF0 + ldr r1, _0803060C @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -4269,11 +4269,11 @@ _080305F4: pop {r0} bx r0 .align 2, 0 -_080305FC: .4byte gUnknown_2024018 +_080305FC: .4byte gBattleSpritesDataPtr _08030600: .4byte gActiveBattler _08030604: .4byte gBattlerSpriteIds _08030608: .4byte gSprites -_0803060C: .4byte gUnknown_3004FF0 +_0803060C: .4byte gHealthboxSpriteIds thumb_func_end sub_80305A0 thumb_func_start sub_8030610 @@ -4457,7 +4457,7 @@ CompleteOnSpecialAnimDone: @ 8030778 ldrb r0, [r0] cmp r0, 0 beq _0803079E - ldr r0, _080307AC @ =gUnknown_2024018 + ldr r0, _080307AC @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080307B0 @ =gActiveBattler ldrb r1, [r0] @@ -4478,7 +4478,7 @@ _080307A2: bx r0 .align 2, 0 _080307A8: .4byte gUnknown_2024005 -_080307AC: .4byte gUnknown_2024018 +_080307AC: .4byte gBattleSpritesDataPtr _080307B0: .4byte gActiveBattler thumb_func_end CompleteOnSpecialAnimDone @@ -4906,7 +4906,7 @@ _08030AF8: .4byte sub_8077764 thumb_func_start CompleteOnFinishedStatusAnimation CompleteOnFinishedStatusAnimation: @ 8030AFC push {lr} - ldr r0, _08030B24 @ =gUnknown_2024018 + ldr r0, _08030B24 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08030B28 @ =gActiveBattler ldrb r1, [r0] @@ -4925,14 +4925,14 @@ _08030B1E: pop {r0} bx r0 .align 2, 0 -_08030B24: .4byte gUnknown_2024018 +_08030B24: .4byte gBattleSpritesDataPtr _08030B28: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation thumb_func_start CompleteOnFinishedBattleAnimation CompleteOnFinishedBattleAnimation: @ 8030B2C push {lr} - ldr r0, _08030B54 @ =gUnknown_2024018 + ldr r0, _08030B54 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08030B58 @ =gActiveBattler ldrb r1, [r0] @@ -4951,7 +4951,7 @@ _08030B4E: pop {r0} bx r0 .align 2, 0 -_08030B54: .4byte gUnknown_2024018 +_08030B54: .4byte gBattleSpritesDataPtr _08030B58: .4byte gActiveBattler thumb_func_end CompleteOnFinishedBattleAnimation @@ -7297,7 +7297,7 @@ PlayerHandleLoadMonSprite: @ 8031F00 muls r0, r2 ldr r2, _08031F54 @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldr r2, _08031F58 @ =gSprites ldr r0, _08031F5C @ =gBattlerSpriteIds ldrb r3, [r4] @@ -7361,7 +7361,7 @@ PlayerHandleSwitchInAnim: @ 8031F68 muls r0, r2 ldr r2, _08031FE0 @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldr r1, _08031FE4 @ =gUnknown_2023FF8 ldrb r0, [r5] adds r0, r1 @@ -7447,12 +7447,12 @@ sub_8031FF4: @ 8031FF4 mov r10, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -7573,7 +7573,7 @@ PlayerHandleReturnPokeToBall: @ 8032160 ldrb r3, [r0] cmp r3, 0 bne _080321A8 - ldr r0, _0803219C @ =gUnknown_2024018 + ldr r0, _0803219C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r2, 1 @@ -7591,7 +7591,7 @@ PlayerHandleReturnPokeToBall: @ 8032160 .align 2, 0 _08032194: .4byte gUnknown_2022BC4 _08032198: .4byte gActiveBattler -_0803219C: .4byte gUnknown_2024018 +_0803219C: .4byte gBattleSpritesDataPtr _080321A0: .4byte gUnknown_3004FE0 _080321A4: .4byte sub_80321F0 _080321A8: @@ -7612,7 +7612,7 @@ _080321A8: lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _080321EC @ =gUnknown_3004FF0 + ldr r1, _080321EC @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -7625,13 +7625,13 @@ _080321DE: .align 2, 0 _080321E4: .4byte gBattlerSpriteIds _080321E8: .4byte gSprites -_080321EC: .4byte gUnknown_3004FF0 +_080321EC: .4byte gHealthboxSpriteIds thumb_func_end PlayerHandleReturnPokeToBall thumb_func_start sub_80321F0 sub_80321F0: @ 80321F0 push {r4-r6,lr} - ldr r6, _08032210 @ =gUnknown_2024018 + ldr r6, _08032210 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _08032214 @ =gActiveBattler ldrb r2, [r5] @@ -7647,7 +7647,7 @@ sub_80321F0: @ 80321F0 beq _08032246 b _0803226E .align 2, 0 -_08032210: .4byte gUnknown_2024018 +_08032210: .4byte gBattleSpritesDataPtr _08032214: .4byte gActiveBattler _08032218: ldr r1, [r4] @@ -8164,7 +8164,7 @@ _0803264C: .4byte sub_802F7A0 thumb_func_start sub_8032650 sub_8032650: @ 8032650 push {r4-r6,lr} - ldr r6, _0803269C @ =gUnknown_2024018 + ldr r6, _0803269C @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _080326A0 @ =gActiveBattler ldrb r2, [r5] @@ -8201,7 +8201,7 @@ _08032684: strb r1, [r0, 0x4] b _0803271A .align 2, 0 -_0803269C: .4byte gUnknown_2024018 +_0803269C: .4byte gBattleSpritesDataPtr _080326A0: .4byte gActiveBattler _080326A4: ldrb r1, [r3] @@ -8296,7 +8296,7 @@ PlayerHandlePaletteFade: @ 803273C thumb_func_start sub_803275C sub_803275C: @ 803275C push {r4,r5,lr} - ldr r0, _0803279C @ =gUnknown_2024018 + ldr r0, _0803279C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -8325,7 +8325,7 @@ sub_803275C: @ 803275C pop {r0} bx r0 .align 2, 0 -_0803279C: .4byte gUnknown_2024018 +_0803279C: .4byte gBattleSpritesDataPtr _080327A0: .4byte gUnknown_2024005 _080327A4: .4byte gActiveBattler _080327A8: .4byte gUnknown_3004FE0 @@ -8342,7 +8342,7 @@ PlayerHandleBallThrowAnim: @ 80327B0 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, _08032800 @ =gUnknown_2024018 + ldr r0, _08032800 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -8371,7 +8371,7 @@ PlayerHandleBallThrowAnim: @ 80327B0 .align 2, 0 _080327F8: .4byte gUnknown_2022BC4 _080327FC: .4byte gActiveBattler -_08032800: .4byte gUnknown_2024018 +_08032800: .4byte gBattleSpritesDataPtr _08032804: .4byte gUnknown_2024005 _08032808: .4byte gUnknown_3004FE0 _0803280C: .4byte CompleteOnSpecialAnimDone @@ -8503,7 +8503,7 @@ _08032852: adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _08032944 @ =gUnknown_2024008 + ldr r3, _08032944 @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -8526,9 +8526,9 @@ _08032934: .4byte gAnimMoveDmg _08032938: .4byte gUnknown_2037EFE _0803293C: .4byte gUnknown_2037F00 _08032940: .4byte gAnimDisableStructPtr -_08032944: .4byte gUnknown_2024008 +_08032944: .4byte gTransformedPersonalities _08032948: - ldr r0, _0803296C @ =gUnknown_2024018 + ldr r0, _0803296C @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -8548,7 +8548,7 @@ _08032966: pop {r0} bx r0 .align 2, 0 -_0803296C: .4byte gUnknown_2024018 +_0803296C: .4byte gBattleSpritesDataPtr _08032970: .4byte gUnknown_3004FE0 _08032974: .4byte sub_8032978 thumb_func_end PlayerHandleMoveAnimation @@ -8578,7 +8578,7 @@ sub_8032978: @ 8032978 adds r1, r2 ldrb r1, [r1] mov r8, r1 - ldr r7, _080329CC @ =gUnknown_2024018 + ldr r7, _080329CC @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -8596,7 +8596,7 @@ sub_8032978: @ 8032978 .align 2, 0 _080329C4: .4byte gUnknown_2022BC4 _080329C8: .4byte gActiveBattler -_080329CC: .4byte gUnknown_2024018 +_080329CC: .4byte gBattleSpritesDataPtr _080329D0: cmp r2, 0x2 beq _08032A3A @@ -8652,10 +8652,10 @@ _08032A10: strb r1, [r0, 0x4] b _08032AEC _08032A3A: - ldr r0, _08032AA0 @ =gUnknown_2037EDC + ldr r0, _08032AA0 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _08032AA4 @ =gUnknown_2037EE1 + ldr r0, _08032AA4 @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _08032AEC @@ -8689,7 +8689,7 @@ _08032A3A: ands r0, r2 strb r0, [r1] _08032A88: - ldr r0, _08032AA8 @ =gUnknown_2024018 + ldr r0, _08032AA8 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08032AAC @ =gActiveBattler ldrb r1, [r0] @@ -8702,9 +8702,9 @@ _08032A88: strb r1, [r0, 0x4] b _08032AEC .align 2, 0 -_08032AA0: .4byte gUnknown_2037EDC -_08032AA4: .4byte gUnknown_2037EE1 -_08032AA8: .4byte gUnknown_2024018 +_08032AA0: .4byte gAnimScriptCallback +_08032AA4: .4byte gAnimScriptActive +_08032AA8: .4byte gBattleSpritesDataPtr _08032AAC: .4byte gActiveBattler _08032AB0: ldrb r1, [r0] @@ -9198,7 +9198,7 @@ sub_8032E4C: @ 8032E4C adds r3, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r1, _08032ED8 @ =gUnknown_3004FF0 + ldr r1, _08032ED8 @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r7, [sp] @@ -9211,7 +9211,7 @@ _08032EC8: .4byte gActiveBattler _08032ECC: .4byte 0x00007fff _08032ED0: .4byte gBattlerPartyIndexes _08032ED4: .4byte gPlayerParty -_08032ED8: .4byte gUnknown_3004FF0 +_08032ED8: .4byte gHealthboxSpriteIds _08032EDC: ldr r1, _08032F34 @ =gBattlerPartyIndexes lsls r0, r4, 1 @@ -9226,7 +9226,7 @@ _08032EDC: adds r2, r0, 0 mov r1, r9 ldrb r0, [r1] - ldr r4, _08032F3C @ =gUnknown_3004FF0 + ldr r4, _08032F3C @ =gHealthboxSpriteIds adds r1, r0, r4 ldrb r1, [r1] str r7, [sp] @@ -9257,7 +9257,7 @@ _08032F16: .align 2, 0 _08032F34: .4byte gBattlerPartyIndexes _08032F38: .4byte gPlayerParty -_08032F3C: .4byte gUnknown_3004FF0 +_08032F3C: .4byte gHealthboxSpriteIds _08032F40: .4byte gUnknown_3004FE0 _08032F44: .4byte gActiveBattler _08032F48: .4byte CompleteOnHealthbarDone @@ -9345,7 +9345,7 @@ sub_8032FE8: @ 8032FE8 lsls r0, 24 cmp r0, 0 bne _0803303C - ldr r0, _08033048 @ =gUnknown_3004FF0 + ldr r0, _08033048 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r0 ldrb r0, [r0] @@ -9360,7 +9360,7 @@ sub_8032FE8: @ 8032FE8 movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] - ldr r0, _08033054 @ =gUnknown_2024018 + ldr r0, _08033054 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -9384,10 +9384,10 @@ _0803303C: bx r0 .align 2, 0 _08033044: .4byte gActiveBattler -_08033048: .4byte gUnknown_3004FF0 +_08033048: .4byte gHealthboxSpriteIds _0803304C: .4byte gBattlerPartyIndexes _08033050: .4byte gPlayerParty -_08033054: .4byte gUnknown_2024018 +_08033054: .4byte gBattleSpritesDataPtr _08033058: .4byte gUnknown_3004FE0 _0803305C: .4byte CompleteOnFinishedStatusAnimation thumb_func_end sub_8032FE8 @@ -9913,7 +9913,7 @@ PlayerHandleIntroSlide: @ 8033444 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _08033474 @ =gUnknown_2023F4C + ldr r2, _08033474 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -9924,7 +9924,7 @@ PlayerHandleIntroSlide: @ 8033444 .align 2, 0 _0803346C: .4byte gUnknown_2022BC4 _08033470: .4byte gActiveBattler -_08033474: .4byte gUnknown_2023F4C +_08033474: .4byte gIntroSlideFlags thumb_func_end PlayerHandleIntroSlide thumb_func_start PlayerHandleIntroTrainerBallThrow @@ -10046,7 +10046,7 @@ PlayerHandleIntroTrainerBallThrow: @ 8033478 adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] - ldr r3, _080335E4 @ =gUnknown_2024018 + ldr r3, _080335E4 @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] @@ -10096,7 +10096,7 @@ _080335D4: .4byte gUnknown_8239FD4 _080335D8: .4byte gSaveBlock2Ptr _080335DC: .4byte task05_08033660 _080335E0: .4byte gTasks -_080335E4: .4byte gUnknown_2024018 +_080335E4: .4byte gBattleSpritesDataPtr _080335E8: .4byte gUnknown_2024000 _080335EC: .4byte sub_80491B0 _080335F0: .4byte gUnknown_3004FE0 @@ -10128,7 +10128,7 @@ sub_80335F8: @ 80335F8 ldr r1, _08033654 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldr r0, _08033658 @ =gBattlerSpriteIds adds r4, r0 ldrb r1, [r4] @@ -10179,7 +10179,7 @@ _0803368C: mov r9, r0 ldrh r0, [r1, 0x8] strb r0, [r7] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080336AC @@ -10242,7 +10242,7 @@ _080336DC: muls r0, r2 ldr r2, _0803375C @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldrb r0, [r7] movs r1, 0 bl sub_8031FF4 @@ -10300,7 +10300,7 @@ PlayerHandleDrawPartyStatusSummary: @ 803376C _08033794: .4byte gUnknown_2022BC4 _08033798: .4byte gActiveBattler _0803379C: - ldr r6, _08033818 @ =gUnknown_2024018 + ldr r6, _08033818 @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _0803381C @ =gActiveBattler ldrb r1, [r5] @@ -10363,7 +10363,7 @@ _08033810: pop {r0} bx r0 .align 2, 0 -_08033818: .4byte gUnknown_2024018 +_08033818: .4byte gBattleSpritesDataPtr _0803381C: .4byte gActiveBattler _08033820: .4byte gUnknown_2022BC8 _08033824: .4byte gUnknown_2024000 @@ -10374,7 +10374,7 @@ _0803382C: .4byte sub_8033830 thumb_func_start sub_8033830 sub_8033830: @ 8033830 push {r4,lr} - ldr r4, _08033870 @ =gUnknown_2024018 + ldr r4, _08033870 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r3, _08033874 @ =gActiveBattler ldrb r1, [r3] @@ -10405,14 +10405,14 @@ _08033868: pop {r0} bx r0 .align 2, 0 -_08033870: .4byte gUnknown_2024018 +_08033870: .4byte gBattleSpritesDataPtr _08033874: .4byte gActiveBattler thumb_func_end sub_8033830 thumb_func_start PlayerHandleCmd49 PlayerHandleCmd49: @ 8033878 push {lr} - ldr r0, _080338B4 @ =gUnknown_2024018 + ldr r0, _080338B4 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080338B8 @ =gActiveBattler ldrb r3, [r0] @@ -10441,7 +10441,7 @@ _080338AA: pop {r0} bx r0 .align 2, 0 -_080338B4: .4byte gUnknown_2024018 +_080338B4: .4byte gBattleSpritesDataPtr _080338B8: .4byte gActiveBattler _080338BC: .4byte gTasks _080338C0: .4byte gUnknown_2024000 @@ -10471,7 +10471,7 @@ PlayerHandleSpriteInvisibility: @ 80338EC push {r4,lr} ldr r4, _0803393C @ =gActiveBattler ldrb r0, [r4] - bl sub_8075224 + bl IsBattlerSpritePresent lsls r0, 24 cmp r0, 0 beq _08033932 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 8f42aa9eb..72e71cf23 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -147,7 +147,7 @@ sub_8156184: @ 8156184 ldrsh r0, [r1, r4] cmp r0, 0 bne _08156230 - ldr r6, _081561EC @ =gUnknown_2024018 + ldr r6, _081561EC @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r1, [r0, 0x4] lsls r4, r3, 1 @@ -173,7 +173,7 @@ sub_8156184: @ 8156184 _081561E0: .4byte gSprites _081561E4: .4byte gBattlerSpriteIds _081561E8: .4byte gActiveBattler -_081561EC: .4byte gUnknown_2024018 +_081561EC: .4byte gBattleSpritesDataPtr _081561F0: .4byte gBattlerPartyIndexes _081561F4: .4byte gEnemyParty _081561F8: @@ -259,7 +259,7 @@ _08156290: .4byte gUnknown_3004F80 thumb_func_start sub_8156294 sub_8156294: @ 8156294 push {r4,lr} - ldr r0, _081562DC @ =gUnknown_2024018 + ldr r0, _081562DC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r4, _081562E0 @ =gActiveBattler ldrb r1, [r4] @@ -292,7 +292,7 @@ _081562D4: pop {r0} bx r0 .align 2, 0 -_081562DC: .4byte gUnknown_2024018 +_081562DC: .4byte gBattleSpritesDataPtr _081562E0: .4byte gActiveBattler _081562E4: .4byte c3_0802FDF4 _081562E8: .4byte gBattlerPartyIndexes @@ -303,7 +303,7 @@ _081562EC: .4byte gPlayerParty sub_81562F0: @ 81562F0 push {r4-r6,lr} ldr r2, _08156388 @ =gSprites - ldr r0, _0815638C @ =gUnknown_3004FF0 + ldr r0, _0815638C @ =gHealthboxSpriteIds ldr r6, _08156390 @ =gActiveBattler ldrb r3, [r6] adds r0, r3, r0 @@ -317,7 +317,7 @@ sub_81562F0: @ 81562F0 ldr r0, _08156394 @ =SpriteCallbackDummy cmp r1, r0 bne _08156380 - ldr r5, _08156398 @ =gUnknown_2024018 + ldr r5, _08156398 @ =gBattleSpritesDataPtr ldr r0, [r5] ldr r1, [r0, 0x4] lsls r0, r3, 1 @@ -377,10 +377,10 @@ _08156380: bx r0 .align 2, 0 _08156388: .4byte gSprites -_0815638C: .4byte gUnknown_3004FF0 +_0815638C: .4byte gHealthboxSpriteIds _08156390: .4byte gActiveBattler _08156394: .4byte SpriteCallbackDummy -_08156398: .4byte gUnknown_2024018 +_08156398: .4byte gBattleSpritesDataPtr _0815639C: .4byte 0x000027f9 _081563A0: .4byte gUnknown_3004FE0 _081563A4: .4byte sub_8156294 @@ -389,7 +389,7 @@ _081563A4: .4byte sub_8156294 thumb_func_start sub_81563A8 sub_81563A8: @ 81563A8 push {r4-r6,lr} - ldr r6, _0815645C @ =gUnknown_2024018 + ldr r6, _0815645C @ =gBattleSpritesDataPtr ldr r0, [r6] ldr r5, _08156460 @ =gActiveBattler ldrb r2, [r5] @@ -441,7 +441,7 @@ _081563DA: bne _08156454 adds r0, r3, r4 bl DestroySprite - ldr r4, _08156478 @ =gUnknown_3004FF0 + ldr r4, _08156478 @ =gHealthboxSpriteIds ldrb r1, [r5] adds r0, r1, r4 ldrb r0, [r0] @@ -474,14 +474,14 @@ _08156454: pop {r0} bx r0 .align 2, 0 -_0815645C: .4byte gUnknown_2024018 +_0815645C: .4byte gBattleSpritesDataPtr _08156460: .4byte gActiveBattler _08156464: .4byte gBattlerPartyIndexes _08156468: .4byte gPlayerParty _0815646C: .4byte gSprites _08156470: .4byte gUnknown_3004FFC _08156474: .4byte SpriteCallbackDummy -_08156478: .4byte gUnknown_3004FF0 +_08156478: .4byte gHealthboxSpriteIds _0815647C: .4byte gUnknown_3004FE0 _08156480: .4byte sub_81562F0 thumb_func_end sub_81563A8 @@ -504,7 +504,7 @@ _08156498: .4byte gUnknown_2024005 thumb_func_start sub_815649C sub_815649C: @ 815649C push {r4,lr} - ldr r4, _081564DC @ =gUnknown_2024018 + ldr r4, _081564DC @ =gBattleSpritesDataPtr ldr r1, [r4] ldr r3, _081564E0 @ =gActiveBattler ldrb r0, [r3] @@ -535,7 +535,7 @@ _081564D4: pop {r0} bx r0 .align 2, 0 -_081564DC: .4byte gUnknown_2024018 +_081564DC: .4byte gBattleSpritesDataPtr _081564E0: .4byte gActiveBattler thumb_func_end sub_815649C @@ -698,7 +698,7 @@ _08156620: .4byte gSpecialVar_ItemId thumb_func_start sub_8156624 sub_8156624: @ 8156624 push {r4-r7,lr} - ldr r4, _08156788 @ =gUnknown_2024018 + ldr r4, _08156788 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r5, _0815678C @ =gActiveBattler ldrb r2, [r5] @@ -772,7 +772,7 @@ _0815668A: ands r0, r1 cmp r0, 0 bne _08156780 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0815671E @@ -793,7 +793,7 @@ _0815668A: ldr r1, _081567A0 @ =gSprites adds r0, r1 bl DestroySprite - ldr r4, _081567A4 @ =gUnknown_3004FF0 + ldr r4, _081567A4 @ =gHealthboxSpriteIds ldrb r0, [r5] adds r1, r6, 0 eors r1, r0 @@ -829,7 +829,7 @@ _0815671E: ldr r1, _081567A0 @ =gSprites adds r0, r1 bl DestroySprite - ldr r5, _081567A4 @ =gUnknown_3004FF0 + ldr r5, _081567A4 @ =gHealthboxSpriteIds ldrb r1, [r4] adds r0, r1, r5 ldrb r0, [r0] @@ -849,7 +849,7 @@ _0815671E: adds r0, r5 ldrb r0, [r0] bl SetHealthboxSpriteVisible - ldr r0, _08156788 @ =gUnknown_2024018 + ldr r0, _08156788 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r2, [r0, 0x8] ldrb r1, [r2, 0x9] @@ -868,14 +868,14 @@ _08156780: pop {r0} bx r0 .align 2, 0 -_08156788: .4byte gUnknown_2024018 +_08156788: .4byte gBattleSpritesDataPtr _0815678C: .4byte gActiveBattler _08156790: .4byte gBattlerPartyIndexes _08156794: .4byte gPlayerParty _08156798: .4byte gBattleTypeFlags _0815679C: .4byte gUnknown_3004FFC _081567A0: .4byte gSprites -_081567A4: .4byte gUnknown_3004FF0 +_081567A4: .4byte gHealthboxSpriteIds _081567A8: .4byte gUnknown_3004FE0 _081567AC: .4byte sub_81567B0 thumb_func_end sub_8156624 @@ -887,7 +887,7 @@ sub_81567B0: @ 81567B0 push {r7} movs r4, 0 ldr r2, _081568B0 @ =gSprites - ldr r0, _081568B4 @ =gUnknown_3004FF0 + ldr r0, _081568B4 @ =gHealthboxSpriteIds ldr r1, _081568B8 @ =gActiveBattler mov r8, r1 ldrb r3, [r1] @@ -906,7 +906,7 @@ sub_81567B0: @ 81567B0 _081567DA: cmp r4, 0 beq _081568A6 - ldr r7, _081568C0 @ =gUnknown_2024018 + ldr r7, _081568C0 @ =gBattleSpritesDataPtr ldr r0, [r7] ldr r4, [r0, 0x4] lsls r0, r3, 1 @@ -1010,10 +1010,10 @@ _081568A6: bx r0 .align 2, 0 _081568B0: .4byte gSprites -_081568B4: .4byte gUnknown_3004FF0 +_081568B4: .4byte gHealthboxSpriteIds _081568B8: .4byte gActiveBattler _081568BC: .4byte SpriteCallbackDummy -_081568C0: .4byte gUnknown_2024018 +_081568C0: .4byte gBattleSpritesDataPtr _081568C4: .4byte 0x000027f9 _081568C8: .4byte c3_0802FDF4 _081568CC: .4byte gBattlerPartyIndexes @@ -1046,7 +1046,7 @@ sub_81568DC: @ 81568DC str r7, [sp, 0x8] ldrh r2, [r1, 0xA] str r2, [sp, 0xC] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1123,7 +1123,7 @@ _08156922: movs r1, 0xB bl EmitTwoReturnValues strb r5, [r4] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1270,7 +1270,7 @@ sub_8156A54: @ 8156A54 adds r4, r6 ldr r2, [r4] subs r2, r1 - ldr r0, _08156B1C @ =gUnknown_3004FF0 + ldr r0, _08156B1C @ =gHealthboxSpriteIds add r0, r10 ldrb r1, [r0] mov r0, r9 @@ -1296,7 +1296,7 @@ _08156B0C: .4byte gTasks _08156B10: .4byte gPlayerParty _08156B14: .4byte gExperienceTables _08156B18: .4byte gBaseStats -_08156B1C: .4byte gUnknown_3004FF0 +_08156B1C: .4byte gHealthboxSpriteIds _08156B20: .4byte sub_8156B24 thumb_func_end sub_8156A54 @@ -1332,7 +1332,7 @@ _08156B54: ldrh r2, [r6, 0xA] mov r10, r2 ldrb r7, [r6, 0xC] - ldr r5, _08156C1C @ =gUnknown_3004FF0 + ldr r5, _08156C1C @ =gHealthboxSpriteIds adds r5, r7, r5 ldrb r1, [r5] adds r0, r7, 0 @@ -1419,7 +1419,7 @@ _08156B54: str r0, [r6] b _08156C50 .align 2, 0 -_08156C1C: .4byte gUnknown_3004FF0 +_08156C1C: .4byte gHealthboxSpriteIds _08156C20: .4byte gPlayerParty _08156C24: .4byte gExperienceTables _08156C28: .4byte gBaseStats @@ -1464,7 +1464,7 @@ sub_8156C68: @ 8156C68 adds r0, r1 ldrb r4, [r0, 0xC] ldrb r6, [r0, 0x8] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1512,7 +1512,7 @@ sub_8156CC8: @ 8156CC8 lsls r0, 3 adds r2, r0, r1 ldrb r5, [r2, 0xC] - ldr r0, _08156D38 @ =gUnknown_2024018 + ldr r0, _08156D38 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x4] lsls r0, r5, 1 @@ -1533,7 +1533,7 @@ sub_8156CC8: @ 8156CC8 adds r0, r7, 0 movs r1, 0x38 bl GetMonData - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1547,7 +1547,7 @@ sub_8156CC8: @ 8156CC8 ldrh r0, [r0] cmp r4, r0 bne _08156D48 - ldr r0, _08156D44 @ =gUnknown_3004FF0 + ldr r0, _08156D44 @ =gHealthboxSpriteIds adds r0, r2, r0 ldrb r0, [r0] adds r1, r7, 0 @@ -1556,12 +1556,12 @@ sub_8156CC8: @ 8156CC8 b _08156D5C .align 2, 0 _08156D34: .4byte gTasks -_08156D38: .4byte gUnknown_2024018 +_08156D38: .4byte gBattleSpritesDataPtr _08156D3C: .4byte gPlayerParty _08156D40: .4byte gBattlerPartyIndexes -_08156D44: .4byte gUnknown_3004FF0 +_08156D44: .4byte gHealthboxSpriteIds _08156D48: - ldr r0, _08156D70 @ =gUnknown_3004FF0 + ldr r0, _08156D70 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r0, [r0] movs r1, 0x64 @@ -1583,7 +1583,7 @@ _08156D6A: pop {r0} bx r0 .align 2, 0 -_08156D70: .4byte gUnknown_3004FF0 +_08156D70: .4byte gHealthboxSpriteIds _08156D74: .4byte gPlayerParty _08156D78: .4byte gTasks _08156D7C: .4byte sub_8156D80 @@ -1662,7 +1662,7 @@ sub_8156DCC: @ 8156DCC lsls r0, 2 adds r0, r6 bl DestroySprite - ldr r1, _08156E38 @ =gUnknown_3004FF0 + ldr r1, _08156E38 @ =gHealthboxSpriteIds ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -1673,7 +1673,7 @@ sub_8156DCC: @ 8156DCC _08156E2C: .4byte gActiveBattler _08156E30: .4byte gSprites _08156E34: .4byte gBattlerSpriteIds -_08156E38: .4byte gUnknown_3004FF0 +_08156E38: .4byte gHealthboxSpriteIds _08156E3C: ldr r2, _08156E6C @ =gSprites ldr r0, _08156E70 @ =gBattlerSpriteIds @@ -1689,7 +1689,7 @@ _08156E3C: lsls r0, 31 cmp r0, 0 bne _08156E66 - ldr r0, _08156E74 @ =gUnknown_3004FF0 + ldr r0, _08156E74 @ =gHealthboxSpriteIds adds r0, r3, r0 ldrb r0, [r0] bl SetHealthboxSpriteInvisible @@ -1701,7 +1701,7 @@ _08156E66: .align 2, 0 _08156E6C: .4byte gSprites _08156E70: .4byte gBattlerSpriteIds -_08156E74: .4byte gUnknown_3004FF0 +_08156E74: .4byte gHealthboxSpriteIds thumb_func_end sub_8156DCC thumb_func_start sub_8156E78 @@ -1709,7 +1709,7 @@ sub_8156E78: @ 8156E78 push {r4-r6,lr} ldr r5, _08156EB8 @ =gActiveBattler ldrb r0, [r5] - ldr r6, _08156EBC @ =gUnknown_3004FF0 + ldr r6, _08156EBC @ =gHealthboxSpriteIds adds r1, r0, r6 ldrb r1, [r1] movs r2, 0 @@ -1736,7 +1736,7 @@ sub_8156E78: @ 8156E78 b _08156EDA .align 2, 0 _08156EB8: .4byte gActiveBattler -_08156EBC: .4byte gUnknown_3004FF0 +_08156EBC: .4byte gHealthboxSpriteIds _08156EC0: ldr r2, _08156EE0 @ =gBattlerPartyIndexes ldrb r1, [r5] @@ -1839,7 +1839,7 @@ _08156F76: thumb_func_start sub_8156F7C sub_8156F7C: @ 8156F7C push {r4-r6,lr} - ldr r0, _08156FD8 @ =gUnknown_2024018 + ldr r0, _08156FD8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _08156FDC @ =gActiveBattler ldrb r2, [r6] @@ -1870,7 +1870,7 @@ sub_8156F7C: @ 8156F7C lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _08156FE8 @ =gUnknown_3004FF0 + ldr r1, _08156FE8 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -1881,11 +1881,11 @@ _08156FD0: pop {r0} bx r0 .align 2, 0 -_08156FD8: .4byte gUnknown_2024018 +_08156FD8: .4byte gBattleSpritesDataPtr _08156FDC: .4byte gActiveBattler _08156FE0: .4byte gBattlerSpriteIds _08156FE4: .4byte gSprites -_08156FE8: .4byte gUnknown_3004FF0 +_08156FE8: .4byte gHealthboxSpriteIds thumb_func_end sub_8156F7C thumb_func_start sub_8156FEC @@ -1920,7 +1920,7 @@ _08157020: .4byte SpriteCallbackDummy thumb_func_start sub_8157024 sub_8157024: @ 8157024 push {lr} - ldr r0, _0815704C @ =gUnknown_2024018 + ldr r0, _0815704C @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08157050 @ =gActiveBattler ldrb r1, [r0] @@ -1939,14 +1939,14 @@ _08157046: pop {r0} bx r0 .align 2, 0 -_0815704C: .4byte gUnknown_2024018 +_0815704C: .4byte gBattleSpritesDataPtr _08157050: .4byte gActiveBattler thumb_func_end sub_8157024 thumb_func_start sub_8157054 sub_8157054: @ 8157054 push {lr} - ldr r0, _0815707C @ =gUnknown_2024018 + ldr r0, _0815707C @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08157080 @ =gActiveBattler ldrb r1, [r0] @@ -1965,7 +1965,7 @@ _08157076: pop {r0} bx r0 .align 2, 0 -_0815707C: .4byte gUnknown_2024018 +_0815707C: .4byte gBattleSpritesDataPtr _08157080: .4byte gActiveBattler thumb_func_end sub_8157054 @@ -2029,7 +2029,7 @@ _081570F8: .4byte gBitTable thumb_func_start CompleteOnFinishedStatusAnimation_7 CompleteOnFinishedStatusAnimation_7: @ 81570FC push {lr} - ldr r0, _08157124 @ =gUnknown_2024018 + ldr r0, _08157124 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _08157128 @ =gActiveBattler ldrb r1, [r0] @@ -2048,7 +2048,7 @@ _0815711E: pop {r0} bx r0 .align 2, 0 -_08157124: .4byte gUnknown_2024018 +_08157124: .4byte gBattleSpritesDataPtr _08157128: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation_7 @@ -3922,7 +3922,7 @@ sub_81580E0: @ 81580E0 add r0, r10 bl BattleLoadOpponentMonSpriteGfx ldrb r0, [r6] - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -3937,7 +3937,7 @@ sub_81580E0: @ 81580E0 mov r9, r0 ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -4018,7 +4018,7 @@ sub_81580E0: @ 81580E0 lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback ldr r1, _08158234 @ =gUnknown_3004FE0 ldrb r0, [r6] lsls r0, 2 @@ -4075,7 +4075,7 @@ sub_815823C: @ 815823C muls r0, r2 ldr r2, _081582AC @ =gPlayerParty adds r0, r2 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx ldr r1, _081582B0 @ =gUnknown_2023FF8 ldrb r0, [r5] adds r0, r1 @@ -4152,7 +4152,7 @@ _081582FC: lsls r0, 2 adds r0, r4 bl DestroySprite - ldr r1, _08158340 @ =gUnknown_3004FF0 + ldr r1, _08158340 @ =gHealthboxSpriteIds ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -4165,7 +4165,7 @@ _08158332: .align 2, 0 _08158338: .4byte gBattlerSpriteIds _0815833C: .4byte gSprites -_08158340: .4byte gUnknown_3004FF0 +_08158340: .4byte gHealthboxSpriteIds thumb_func_end sub_81582C0 thumb_func_start sub_8158344 @@ -4249,7 +4249,7 @@ _081583EC: .4byte 0x0000fffe _081583F0: ldrb r1, [r7] movs r0, 0x84 - bl sub_80346C4 + bl DecompressTrainerFrontPic ldrb r0, [r7] bl GetBattlerPosition adds r1, r0, 0 @@ -4505,7 +4505,7 @@ sub_8158610: @ 8158610 thumb_func_start sub_815861C sub_815861C: @ 815861C push {r4-r6,lr} - ldr r6, _08158668 @ =gUnknown_2024018 + ldr r6, _08158668 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, _0815866C @ =gActiveBattler ldrb r2, [r5] @@ -4542,7 +4542,7 @@ _08158650: strb r1, [r0, 0x4] b _0815872A .align 2, 0 -_08158668: .4byte gUnknown_2024018 +_08158668: .4byte gBattleSpritesDataPtr _0815866C: .4byte gActiveBattler _08158670: ldrb r1, [r3] @@ -4656,7 +4656,7 @@ sub_8158748: @ 8158748 thumb_func_start sub_8158754 sub_8158754: @ 8158754 push {r4,r5,lr} - ldr r0, _08158794 @ =gUnknown_2024018 + ldr r0, _08158794 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -4685,7 +4685,7 @@ sub_8158754: @ 8158754 pop {r0} bx r0 .align 2, 0 -_08158794: .4byte gUnknown_2024018 +_08158794: .4byte gBattleSpritesDataPtr _08158798: .4byte gUnknown_2024005 _0815879C: .4byte gActiveBattler _081587A0: .4byte gUnknown_3004FE0 @@ -4702,7 +4702,7 @@ sub_81587A8: @ 81587A8 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, _081587F8 @ =gUnknown_2024018 + ldr r0, _081587F8 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -4731,7 +4731,7 @@ sub_81587A8: @ 81587A8 .align 2, 0 _081587F0: .4byte gUnknown_2022BC4 _081587F4: .4byte gActiveBattler -_081587F8: .4byte gUnknown_2024018 +_081587F8: .4byte gBattleSpritesDataPtr _081587FC: .4byte gUnknown_2024005 _08158800: .4byte gUnknown_3004FE0 _08158804: .4byte sub_8156484 @@ -4837,7 +4837,7 @@ sub_8158814: @ 8158814 adds r1, 0x10 adds r2, r1 str r2, [r3] - ldr r3, _08158908 @ =gUnknown_2024008 + ldr r3, _08158908 @ =gTransformedPersonalities ldrb r1, [r6] lsls r1, 2 adds r1, r3 @@ -4860,9 +4860,9 @@ _081588F8: .4byte gAnimMoveDmg _081588FC: .4byte gUnknown_2037EFE _08158900: .4byte gUnknown_2037F00 _08158904: .4byte gAnimDisableStructPtr -_08158908: .4byte gUnknown_2024008 +_08158908: .4byte gTransformedPersonalities _0815890C: - ldr r0, _08158930 @ =gUnknown_2024018 + ldr r0, _08158930 @ =gBattleSpritesDataPtr ldr r0, [r0] ldrb r1, [r6] ldr r2, [r0, 0x4] @@ -4882,7 +4882,7 @@ _0815892A: pop {r0} bx r0 .align 2, 0 -_08158930: .4byte gUnknown_2024018 +_08158930: .4byte gBattleSpritesDataPtr _08158934: .4byte gUnknown_3004FE0 _08158938: .4byte sub_815893C thumb_func_end sub_8158814 @@ -4907,7 +4907,7 @@ sub_815893C: @ 815893C ldrb r0, [r1] lsls r0, 8 orrs r4, r0 - ldr r7, _08158988 @ =gUnknown_2024018 + ldr r7, _08158988 @ =gBattleSpritesDataPtr ldr r5, [r7] ldr r1, [r5, 0x4] lsls r0, r3, 1 @@ -4925,7 +4925,7 @@ sub_815893C: @ 815893C .align 2, 0 _08158980: .4byte gUnknown_2022BC4 _08158984: .4byte gActiveBattler -_08158988: .4byte gUnknown_2024018 +_08158988: .4byte gBattleSpritesDataPtr _0815898C: cmp r2, 0x2 beq _081589F0 @@ -4978,10 +4978,10 @@ _081589C6: strb r1, [r0, 0x4] b _08158A7C _081589F0: - ldr r0, _08158A38 @ =gUnknown_2037EDC + ldr r0, _08158A38 @ =gAnimScriptCallback ldr r0, [r0] bl _call_via_r0 - ldr r0, _08158A3C @ =gUnknown_2037EE1 + ldr r0, _08158A3C @ =gAnimScriptActive ldrb r0, [r0] cmp r0, 0 bne _08158A7C @@ -5013,8 +5013,8 @@ _08158A24: strb r1, [r0, 0x4] b _08158A7C .align 2, 0 -_08158A38: .4byte gUnknown_2037EDC -_08158A3C: .4byte gUnknown_2037EE1 +_08158A38: .4byte gAnimScriptCallback +_08158A3C: .4byte gAnimScriptActive _08158A40: ldrb r1, [r0] movs r0, 0x40 @@ -5519,7 +5519,7 @@ _08158E18: bl GetMonData adds r3, r0, 0 ldrb r0, [r7] - ldr r1, _08158E7C @ =gUnknown_3004FF0 + ldr r1, _08158E7C @ =gHealthboxSpriteIds adds r1, r0, r1 ldrb r1, [r1] str r6, [sp] @@ -5532,14 +5532,14 @@ _08158E6C: .4byte gEnemyParty _08158E70: .4byte gUnknown_2022BC4 _08158E74: .4byte gActiveBattler _08158E78: .4byte 0x00007fff -_08158E7C: .4byte gUnknown_3004FF0 +_08158E7C: .4byte gHealthboxSpriteIds _08158E80: adds r0, r5, 0 movs r1, 0x3A bl GetMonData adds r2, r0, 0 ldrb r0, [r7] - ldr r4, _08158EC0 @ =gUnknown_3004FF0 + ldr r4, _08158EC0 @ =gHealthboxSpriteIds adds r1, r0, r4 ldrb r1, [r1] str r6, [sp] @@ -5564,7 +5564,7 @@ _08158EA8: pop {r0} bx r0 .align 2, 0 -_08158EC0: .4byte gUnknown_3004FF0 +_08158EC0: .4byte gHealthboxSpriteIds _08158EC4: .4byte gUnknown_3004FE0 _08158EC8: .4byte gActiveBattler _08158ECC: .4byte sub_8156E78 @@ -5681,7 +5681,7 @@ _08158FA8: ldr r0, _08158FFC @ =gEnemyParty _08158FB8: adds r2, r1, r0 - ldr r1, _08159000 @ =gUnknown_3004FF0 + ldr r1, _08159000 @ =gHealthboxSpriteIds ldr r4, _08159004 @ =gActiveBattler ldrb r0, [r4] adds r0, r1 @@ -5690,7 +5690,7 @@ _08158FB8: movs r2, 0x9 bl UpdateHealthboxAttribute ldrb r2, [r4] - ldr r0, _08159008 @ =gUnknown_2024018 + ldr r0, _08159008 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r2, 1 @@ -5715,9 +5715,9 @@ _08158FF2: .align 2, 0 _08158FF8: .4byte gBattlerPartyIndexes _08158FFC: .4byte gEnemyParty -_08159000: .4byte gUnknown_3004FF0 +_08159000: .4byte gHealthboxSpriteIds _08159004: .4byte gActiveBattler -_08159008: .4byte gUnknown_2024018 +_08159008: .4byte gBattleSpritesDataPtr _0815900C: .4byte gUnknown_3004FE0 _08159010: .4byte sub_8157054 thumb_func_end sub_8158F6C @@ -6102,7 +6102,7 @@ sub_81592D0: @ 81592D0 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _08159300 @ =gUnknown_2023F4C + ldr r2, _08159300 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -6113,7 +6113,7 @@ sub_81592D0: @ 81592D0 .align 2, 0 _081592F8: .4byte gUnknown_2022BC4 _081592FC: .4byte gActiveBattler -_08159300: .4byte gUnknown_2023F4C +_08159300: .4byte gIntroSlideFlags thumb_func_end sub_81592D0 thumb_func_start sub_8159304 @@ -6230,7 +6230,7 @@ sub_8159304: @ 8159304 adds r1, r4 ldrb r0, [r7] strh r0, [r1, 0x8] - ldr r3, _08159464 @ =gUnknown_2024018 + ldr r3, _08159464 @ =gBattleSpritesDataPtr ldr r0, [r3] ldrb r2, [r7] ldr r1, [r0, 0x4] @@ -6279,7 +6279,7 @@ _08159454: .4byte 0x0000d6f8 _08159458: .4byte gUnknown_8239FD4 _0815945C: .4byte sub_81595EC _08159460: .4byte gTasks -_08159464: .4byte gUnknown_2024018 +_08159464: .4byte gBattleSpritesDataPtr _08159468: .4byte gUnknown_2024000 _0815946C: .4byte sub_80491B0 _08159470: .4byte gUnknown_3004FE0 @@ -6296,7 +6296,7 @@ sub_8159478: @ 8159478 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 - ldr r0, _081595C0 @ =gUnknown_2024018 + ldr r0, _081595C0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r6, 2 @@ -6341,12 +6341,12 @@ sub_8159478: @ 8159478 mov r10, r0 adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 adds r0, r6, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -6443,7 +6443,7 @@ sub_8159478: @ 8159478 pop {r0} bx r0 .align 2, 0 -_081595C0: .4byte gUnknown_2024018 +_081595C0: .4byte gBattleSpritesDataPtr _081595C4: .4byte gBattlerPartyIndexes _081595C8: .4byte gUnknown_2022BC4 _081595CC: .4byte gPlayerParty @@ -6537,7 +6537,7 @@ sub_8159660: @ 8159660 _08159688: .4byte gUnknown_2022BC4 _0815968C: .4byte gActiveBattler _08159690: - ldr r0, _081596D4 @ =gUnknown_2024018 + ldr r0, _081596D4 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r5, _081596D8 @ =gActiveBattler ldrb r1, [r5] @@ -6571,7 +6571,7 @@ _081596CE: pop {r0} bx r0 .align 2, 0 -_081596D4: .4byte gUnknown_2024018 +_081596D4: .4byte gBattleSpritesDataPtr _081596D8: .4byte gActiveBattler _081596DC: .4byte gUnknown_2022BC8 _081596E0: .4byte gUnknown_2024000 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 9e01ad2fd..634ca455d 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -302,7 +302,7 @@ _080DD772: sub_80DD778: @ 80DD778 push {lr} ldr r2, _080DD7A0 @ =gSprites - ldr r1, _080DD7A4 @ =gUnknown_3004FF0 + ldr r1, _080DD7A4 @ =gHealthboxSpriteIds ldr r0, _080DD7A8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -322,7 +322,7 @@ _080DD79C: bx r0 .align 2, 0 _080DD7A0: .4byte gSprites -_080DD7A4: .4byte gUnknown_3004FF0 +_080DD7A4: .4byte gHealthboxSpriteIds _080DD7A8: .4byte gActiveBattler _080DD7AC: .4byte SpriteCallbackDummy thumb_func_end sub_80DD778 @@ -366,7 +366,7 @@ CompleteOnSpecialAnimDone_0: @ 80DD7F0 ldrb r0, [r0] cmp r0, 0 beq _080DD816 - ldr r0, _080DD824 @ =gUnknown_2024018 + ldr r0, _080DD824 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080DD828 @ =gActiveBattler ldrb r1, [r0] @@ -387,7 +387,7 @@ _080DD81A: bx r0 .align 2, 0 _080DD820: .4byte gUnknown_2024005 -_080DD824: .4byte gUnknown_2024018 +_080DD824: .4byte gBattleSpritesDataPtr _080DD828: .4byte gActiveBattler thumb_func_end CompleteOnSpecialAnimDone_0 @@ -449,7 +449,7 @@ _080DD894: .4byte gSpecialVar_ItemId thumb_func_start CompleteOnFinishedBattleAnimation_3 CompleteOnFinishedBattleAnimation_3: @ 80DD898 push {lr} - ldr r0, _080DD8C0 @ =gUnknown_2024018 + ldr r0, _080DD8C0 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080DD8C4 @ =gActiveBattler ldrb r1, [r0] @@ -468,7 +468,7 @@ _080DD8BA: pop {r0} bx r0 .align 2, 0 -_080DD8C0: .4byte gUnknown_2024018 +_080DD8C0: .4byte gBattleSpritesDataPtr _080DD8C4: .4byte gActiveBattler thumb_func_end CompleteOnFinishedBattleAnimation_3 @@ -532,7 +532,7 @@ _080DD93C: .4byte gBitTable thumb_func_start CompleteOnFinishedStatusAnimation_3 CompleteOnFinishedStatusAnimation_3: @ 80DD940 push {lr} - ldr r0, _080DD968 @ =gUnknown_2024018 + ldr r0, _080DD968 @ =gBattleSpritesDataPtr ldr r2, [r0] ldr r0, _080DD96C @ =gActiveBattler ldrb r1, [r0] @@ -551,7 +551,7 @@ _080DD962: pop {r0} bx r0 .align 2, 0 -_080DD968: .4byte gUnknown_2024018 +_080DD968: .4byte gBattleSpritesDataPtr _080DD96C: .4byte gActiveBattler thumb_func_end CompleteOnFinishedStatusAnimation_3 @@ -749,7 +749,7 @@ sub_80DDAC8: @ 80DDAC8 thumb_func_start sub_80DDAD4 sub_80DDAD4: @ 80DDAD4 push {r4,r5,lr} - ldr r0, _080DDB14 @ =gUnknown_2024018 + ldr r0, _080DDB14 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0x8] movs r0, 0x4 @@ -778,7 +778,7 @@ sub_80DDAD4: @ 80DDAD4 pop {r0} bx r0 .align 2, 0 -_080DDB14: .4byte gUnknown_2024018 +_080DDB14: .4byte gBattleSpritesDataPtr _080DDB18: .4byte gUnknown_2024005 _080DDB1C: .4byte gActiveBattler _080DDB20: .4byte gUnknown_3004FE0 @@ -795,7 +795,7 @@ sub_80DDB28: @ 80DDB28 adds r1, 0x1 adds r0, r1 ldrb r1, [r0] - ldr r0, _080DDB78 @ =gUnknown_2024018 + ldr r0, _080DDB78 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] @@ -824,7 +824,7 @@ sub_80DDB28: @ 80DDB28 .align 2, 0 _080DDB70: .4byte gUnknown_2022BC4 _080DDB74: .4byte gActiveBattler -_080DDB78: .4byte gUnknown_2024018 +_080DDB78: .4byte gBattleSpritesDataPtr _080DDB7C: .4byte gUnknown_2024005 _080DDB80: .4byte gUnknown_3004FE0 _080DDB84: .4byte CompleteOnSpecialAnimDone_0 @@ -1081,7 +1081,7 @@ sub_80DDD68: @ 80DDD68 thumb_func_start SafariHandleStatusIconUpdate SafariHandleStatusIconUpdate: @ 80DDD74 push {lr} - ldr r0, _080DDDA0 @ =gUnknown_3004FF0 + ldr r0, _080DDDA0 @ =gHealthboxSpriteIds ldr r1, _080DDDA4 @ =gActiveBattler ldrb r1, [r1] adds r0, r1, r0 @@ -1100,7 +1100,7 @@ SafariHandleStatusIconUpdate: @ 80DDD74 pop {r0} bx r0 .align 2, 0 -_080DDDA0: .4byte gUnknown_3004FF0 +_080DDDA0: .4byte gHealthboxSpriteIds _080DDDA4: .4byte gActiveBattler _080DDDA8: .4byte gBattlerPartyIndexes _080DDDAC: .4byte gPlayerParty @@ -1332,7 +1332,7 @@ SafariHandleIntroSlide: @ 80DDF20 adds r0, r1 ldrb r0, [r0] bl sub_80BC3A0 - ldr r2, _080DDF50 @ =gUnknown_2023F4C + ldr r2, _080DDF50 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 orrs r0, r1 @@ -1343,13 +1343,13 @@ SafariHandleIntroSlide: @ 80DDF20 .align 2, 0 _080DDF48: .4byte gUnknown_2022BC4 _080DDF4C: .4byte gActiveBattler -_080DDF50: .4byte gUnknown_2023F4C +_080DDF50: .4byte gIntroSlideFlags thumb_func_end SafariHandleIntroSlide thumb_func_start SafariHandleIntroTrainerBallThrow SafariHandleIntroTrainerBallThrow: @ 80DDF54 push {r4,r5,lr} - ldr r5, _080DDF98 @ =gUnknown_3004FF0 + ldr r5, _080DDF98 @ =gHealthboxSpriteIds ldr r4, _080DDF9C @ =gActiveBattler ldrb r1, [r4] adds r0, r1, r5 @@ -1380,7 +1380,7 @@ SafariHandleIntroTrainerBallThrow: @ 80DDF54 pop {r0} bx r0 .align 2, 0 -_080DDF98: .4byte gUnknown_3004FF0 +_080DDF98: .4byte gHealthboxSpriteIds _080DDF9C: .4byte gActiveBattler _080DDFA0: .4byte gBattlerPartyIndexes _080DDFA4: .4byte gPlayerParty diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s index 5337929a1..cf53430ad 100644 --- a/asm/battle_controllers.s +++ b/asm/battle_controllers.s @@ -54,7 +54,7 @@ sub_800D278: @ 800D278 movs r3, 0 ldr r1, _0800D2F0 @ =gUnknown_3004FE0 mov r12, r1 - ldr r7, _0800D2F4 @ =gUnknown_2023BD6 + ldr r7, _0800D2F4 @ =gBattlerPositions movs r6, 0xFF ldr r5, _0800D2F8 @ =gUnknown_2023FF8 ldr r4, _0800D2FC @ =gUnknown_2023FFC @@ -97,7 +97,7 @@ _0800D2E4: .4byte gUnknown_3004F84 _0800D2E8: .4byte nullsub_12 _0800D2EC: .4byte nullsub_13 _0800D2F0: .4byte gUnknown_3004FE0 -_0800D2F4: .4byte gUnknown_2023BD6 +_0800D2F4: .4byte gBattlerPositions _0800D2F8: .4byte gUnknown_2023FF8 _0800D2FC: .4byte gUnknown_2023FFC _0800D300: .4byte gUnknown_2023BC8 @@ -173,7 +173,7 @@ sub_800D364: @ 800D364 ldr r2, _0800D3A4 @ =gUnknown_3004FE0 ldr r1, _0800D3A8 @ =sub_81560A4 str r1, [r2] - ldr r0, _0800D3AC @ =gUnknown_2023BD6 + ldr r0, _0800D3AC @ =gBattlerPositions strb r3, [r0] str r1, [r2, 0x4] strb r4, [r0, 0x1] @@ -186,7 +186,7 @@ _0800D39C: .4byte gUnknown_3004F84 _0800D3A0: .4byte sub_80123C0 _0800D3A4: .4byte gUnknown_3004FE0 _0800D3A8: .4byte sub_81560A4 -_0800D3AC: .4byte gUnknown_2023BD6 +_0800D3AC: .4byte gBattlerPositions _0800D3B0: .4byte gBattlersCount _0800D3B4: movs r0, 0x80 @@ -217,7 +217,7 @@ _0800D3E4: _0800D3E8: str r0, [r1] adds r2, r1, 0 - ldr r1, _0800D408 @ =gUnknown_2023BD6 + ldr r1, _0800D408 @ =gBattlerPositions movs r0, 0 strb r0, [r1] ldr r0, _0800D40C @ =sub_8035A7C @@ -230,7 +230,7 @@ _0800D3E8: .align 2, 0 _0800D400: .4byte gUnknown_3004FE0 _0800D404: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D408: .4byte gUnknown_2023BD6 +_0800D408: .4byte gBattlerPositions _0800D40C: .4byte sub_8035A7C _0800D410: .4byte gBattlersCount _0800D414: @@ -245,7 +245,7 @@ _0800D414: ldr r3, _0800D44C @ =gUnknown_3004FE0 ldr r1, _0800D450 @ =sub_81560A4 str r1, [r3] - ldr r2, _0800D454 @ =gUnknown_2023BD6 + ldr r2, _0800D454 @ =gBattlerPositions movs r0, 0 strb r0, [r2] str r1, [r3, 0x4] @@ -262,12 +262,12 @@ _0800D444: .4byte gUnknown_3004F84 _0800D448: .4byte sub_80123C0 _0800D44C: .4byte gUnknown_3004FE0 _0800D450: .4byte sub_81560A4 -_0800D454: .4byte gUnknown_2023BD6 +_0800D454: .4byte gBattlerPositions _0800D458: ldr r2, _0800D480 @ =gUnknown_3004FE0 ldr r0, _0800D484 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r1, _0800D488 @ =gUnknown_2023BD6 + ldr r1, _0800D488 @ =gBattlerPositions strb r3, [r1] ldr r3, _0800D48C @ =sub_8035A7C str r3, [r2, 0x4] @@ -289,7 +289,7 @@ _0800D478: .align 2, 0 _0800D480: .4byte gUnknown_3004FE0 _0800D484: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D488: .4byte gUnknown_2023BD6 +_0800D488: .4byte gBattlerPositions _0800D48C: .4byte sub_8035A7C _0800D490: .4byte gBattlersCount thumb_func_end sub_800D364 @@ -318,7 +318,7 @@ sub_800D494: @ 800D494 ldr r2, _0800D4DC @ =gUnknown_3004FE0 ldr r0, _0800D4E0 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] - ldr r1, _0800D4E4 @ =gUnknown_2023BD6 + ldr r1, _0800D4E4 @ =gBattlerPositions strb r3, [r1] ldr r0, _0800D4E8 @ =sub_803A668 str r0, [r2, 0x4] @@ -332,14 +332,14 @@ _0800D4D4: .4byte gUnknown_3004F84 _0800D4D8: .4byte sub_80123C0 _0800D4DC: .4byte gUnknown_3004FE0 _0800D4E0: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D4E4: .4byte gUnknown_2023BD6 +_0800D4E4: .4byte gBattlerPositions _0800D4E8: .4byte sub_803A668 _0800D4EC: .4byte gBattlersCount _0800D4F0: ldr r2, _0800D508 @ =gUnknown_3004FE0 ldr r0, _0800D50C @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] - ldr r1, _0800D510 @ =gUnknown_2023BD6 + ldr r1, _0800D510 @ =gBattlerPositions strb r4, [r1, 0x1] ldr r0, _0800D514 @ =sub_803A668 str r0, [r2] @@ -350,7 +350,7 @@ _0800D4F0: .align 2, 0 _0800D508: .4byte gUnknown_3004FE0 _0800D50C: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D510: .4byte gUnknown_2023BD6 +_0800D510: .4byte gBattlerPositions _0800D514: .4byte sub_803A668 _0800D518: .4byte gBattlersCount _0800D51C: @@ -369,7 +369,7 @@ _0800D51C: ldr r2, _0800D55C @ =gUnknown_3004FE0 ldr r4, _0800D560 @ =SetBankFuncToPlayerBufferRunCommand str r4, [r2] - ldr r1, _0800D564 @ =gUnknown_2023BD6 + ldr r1, _0800D564 @ =gBattlerPositions movs r0, 0 strb r0, [r1] ldr r3, _0800D568 @ =sub_803A668 @@ -387,13 +387,13 @@ _0800D554: .4byte gUnknown_3004F84 _0800D558: .4byte sub_80123C0 _0800D55C: .4byte gUnknown_3004FE0 _0800D560: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D564: .4byte gUnknown_2023BD6 +_0800D564: .4byte gBattlerPositions _0800D568: .4byte sub_803A668 _0800D56C: ldr r2, _0800D590 @ =gUnknown_3004FE0 ldr r0, _0800D594 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] - ldr r1, _0800D598 @ =gUnknown_2023BD6 + ldr r1, _0800D598 @ =gBattlerPositions strb r3, [r1, 0x1] ldr r3, _0800D59C @ =sub_803A668 str r3, [r2] @@ -411,7 +411,7 @@ _0800D588: .align 2, 0 _0800D590: .4byte gUnknown_3004FE0 _0800D594: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D598: .4byte gUnknown_2023BD6 +_0800D598: .4byte gBattlerPositions _0800D59C: .4byte sub_803A668 _0800D5A0: .4byte gBattlersCount _0800D5A4: @@ -431,7 +431,7 @@ _0800D5BC: mov r10, r0 ldr r1, _0800D5EC @ =gLinkPlayers mov r12, r1 - ldr r7, _0800D5F0 @ =gUnknown_2023BD6 + ldr r7, _0800D5F0 @ =gBattlerPositions mov r8, r0 ldr r6, _0800D5F4 @ =gBattlerPartyIndexes movs r4, 0 @@ -452,7 +452,7 @@ _0800D5D0: _0800D5E4: .4byte gUnknown_3004F84 _0800D5E8: .4byte sub_80123C0 _0800D5EC: .4byte gLinkPlayers -_0800D5F0: .4byte gUnknown_2023BD6 +_0800D5F0: .4byte gBattlerPositions _0800D5F4: .4byte gBattlerPartyIndexes _0800D5F8: cmp r0, 0x3 @@ -680,7 +680,7 @@ _0800D78C: movs r0, 0x1 add r0, r8 mov r10, r0 - ldr r0, _0800D7B8 @ =gUnknown_2023BD6 + ldr r0, _0800D7B8 @ =gBattlerPositions add r0, r8 mov r9, r0 mov r0, r8 @@ -699,7 +699,7 @@ _0800D7A0: ldr r0, _0800D7BC @ =gPlayerParty b _0800D7C2 .align 2, 0 -_0800D7B8: .4byte gUnknown_2023BD6 +_0800D7B8: .4byte gBattlerPositions _0800D7BC: .4byte gPlayerParty _0800D7C0: ldr r0, _0800D800 @ =gEnemyParty diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s deleted file mode 100644 index ba54bafbb..000000000 --- a/asm/battle_gfx_sfx_util.s +++ /dev/null @@ -1,3606 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start AllocateBattleSpritesData -AllocateBattleSpritesData: @ 8033DB8 - push {r4,lr} - ldr r4, _08033DF4 @ =gUnknown_2024018 - movs r0, 0x10 - bl AllocZeroed - str r0, [r4] - movs r0, 0x10 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1] - movs r0, 0x30 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x4] - movs r0, 0x10 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x8] - movs r0, 0x50 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0xC] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033DF4: .4byte gUnknown_2024018 - thumb_func_end AllocateBattleSpritesData - - thumb_func_start FreeBattleSpritesData -FreeBattleSpritesData: @ 8033DF8 - push {r4,r5,lr} - ldr r5, _08033E38 @ =gUnknown_2024018 - ldr r0, [r5] - cmp r0, 0 - beq _08033E32 - ldr r0, [r0, 0xC] - bl Free - ldr r0, [r5] - movs r4, 0 - str r4, [r0, 0xC] - ldr r0, [r0, 0x8] - bl Free - ldr r0, [r5] - str r4, [r0, 0x8] - ldr r0, [r0, 0x4] - bl Free - ldr r0, [r5] - str r4, [r0, 0x4] - ldr r0, [r0] - bl Free - ldr r0, [r5] - str r4, [r0] - bl Free - str r4, [r5] -_08033E32: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08033E38: .4byte gUnknown_2024018 - thumb_func_end FreeBattleSpritesData - - thumb_func_start sub_8033E3C -sub_8033E3C: @ 8033E3C - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldr r7, _08033E80 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r5, r1, 2 - adds r3, r5, r7 - adds r0, r3, 0 - adds r0, 0x3F - ldrb r4, [r0] - lsls r0, r4, 26 - cmp r0, 0 - bge _08033EA0 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _08033EA0 - adds r1, r3, 0 - adds r1, 0x2C - ldrb r2, [r1] - lsls r0, r2, 25 - cmp r0, 0 - bge _08033E84 - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _08033EA0 - .align 2, 0 -_08033E80: .4byte gSprites -_08033E84: - lsls r0, r4, 27 - cmp r0, 0 - bge _08033EA0 - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _08033EA8 @ =sub_8012100 - str r1, [r0] - adds r0, r3, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _08033EAC @ =SpriteCallbackDummy - str r0, [r6, 0x1C] -_08033EA0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08033EA8: .4byte sub_8012100 -_08033EAC: .4byte SpriteCallbackDummy - thumb_func_end sub_8033E3C - - thumb_func_start sub_8033EB0 -sub_8033EB0: @ 8033EB0 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - adds r3, r4, 0 - adds r3, 0x2C - ldrb r0, [r3] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r3] - ldr r0, _08033ED4 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] - cmp r1, 0 - bne _08033ED8 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _08033EE0 - .align 2, 0 -_08033ED4: .4byte SpriteCallbackDummy -_08033ED8: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08033EE0: - adds r0, r4, 0 - bl AnimateSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8033EB0 - - thumb_func_start sub_8033EEC -sub_8033EEC: @ 8033EEC - push {lr} - adds r2, r0, 0 - ldr r0, _08033F14 @ =gUnknown_2023F4C - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08033F0E - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _08033F0E - ldr r0, _08033F18 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_08033F0E: - pop {r0} - bx r0 - .align 2, 0 -_08033F14: .4byte gUnknown_2023F4C -_08033F18: .4byte SpriteCallbackDummy - thumb_func_end sub_8033EEC - - thumb_func_start InitAndLaunchChosenStatusAnimation -InitAndLaunchChosenStatusAnimation: @ 8033F1C - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - ldr r6, _08033F50 @ =gUnknown_2024018 - ldr r1, [r6] - ldr r5, _08033F54 @ =gActiveBattler - ldrb r2, [r5] - ldr r3, [r1, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1] - movs r3, 0x10 - orrs r2, r3 - strb r2, [r1] - cmp r0, 0 - bne _08033F9C - cmp r4, 0x20 - bne _08033F58 - ldrb r0, [r5] - movs r1, 0x6 - bl LaunchStatusAnimation - b _08034016 - .align 2, 0 -_08033F50: .4byte gUnknown_2024018 -_08033F54: .4byte gActiveBattler -_08033F58: - cmp r4, 0x8 - beq _08033F64 - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _08033F6E -_08033F64: - ldrb r0, [r5] - movs r1, 0 - bl LaunchStatusAnimation - b _08034016 -_08033F6E: - cmp r4, 0x10 - bne _08033F7C - ldrb r0, [r5] - movs r1, 0x2 - bl LaunchStatusAnimation - b _08034016 -_08033F7C: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08033F8E - ldrb r0, [r5] - movs r1, 0x4 - bl LaunchStatusAnimation - b _08034016 -_08033F8E: - cmp r4, 0x40 - bne _08033FFE - ldrb r0, [r5] - movs r1, 0x5 - bl LaunchStatusAnimation - b _08034016 -_08033F9C: - movs r0, 0xF0 - lsls r0, 12 - ands r0, r4 - cmp r0, 0 - beq _08033FB0 - ldrb r0, [r5] - movs r1, 0x3 - bl LaunchStatusAnimation - b _08034016 -_08033FB0: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08033FC2 - ldrb r0, [r5] - movs r1, 0x1 - bl LaunchStatusAnimation - b _08034016 -_08033FC2: - movs r0, 0x80 - lsls r0, 21 - ands r0, r4 - cmp r0, 0 - beq _08033FD6 - ldrb r0, [r5] - movs r1, 0x7 - bl LaunchStatusAnimation - b _08034016 -_08033FD6: - movs r0, 0x80 - lsls r0, 20 - ands r0, r4 - cmp r0, 0 - beq _08033FEA - ldrb r0, [r5] - movs r1, 0x8 - bl LaunchStatusAnimation - b _08034016 -_08033FEA: - movs r0, 0xE0 - lsls r0, 8 - ands r0, r4 - cmp r0, 0 - beq _08033FFE - ldrb r0, [r5] - movs r1, 0x9 - bl LaunchStatusAnimation - b _08034016 -_08033FFE: - ldr r0, [r6] - ldrb r2, [r5] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_08034016: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end InitAndLaunchChosenStatusAnimation - - thumb_func_start TryHandleLaunchBattleTableAnimation -TryHandleLaunchBattleTableAnimation: @ 803401C - 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 r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r5, r3, 24 - lsls r4, 16 - lsrs r7, r4, 16 - cmp r5, 0 - bne _08034064 - movs r0, 0x80 - ands r0, r7 - cmp r0, 0 - beq _08034064 - ldr r0, _08034060 @ =gBattleMonForms - adds r0, r6, r0 - movs r2, 0x7F - adds r1, r7, 0 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _08034132 - .align 2, 0 -_08034060: .4byte gBattleMonForms -_08034064: - ldr r0, _08034090 @ =gUnknown_2024018 - mov r9, r0 - ldr r0, [r0] - ldr r0, [r0] - lsls r4, r6, 2 - adds r0, r4, r0 - ldrb r1, [r0] - movs r2, 0x4 - mov r8, r2 - mov r0, r8 - ands r0, r1 - cmp r0, 0 - beq _080340E0 - adds r0, r5, 0 - bl ShouldAnimBeDoneRegardlessOfSubsitute - lsls r0, 24 - cmp r0, 0 - bne _08034094 - movs r0, 0x1 - b _08034132 - .align 2, 0 -_08034090: .4byte gUnknown_2024018 -_08034094: - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0] - adds r0, r4, r0 - ldrb r1, [r0] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - beq _080340E0 - cmp r5, 0x2 - bne _080340E0 - ldr r1, _080340D8 @ =gSprites - ldr r0, _080340DC @ =gBattlerSpriteIds - adds r0, r6, r0 - ldrb r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080340E0 - adds r0, r6, 0 - movs r1, 0x1 - bl LoadBattleMonGfxAndAnimate - adds r0, r6, 0 - bl ClearBehindSubstituteBit - movs r0, 0x1 - b _08034132 - .align 2, 0 -_080340D8: .4byte gSprites -_080340DC: .4byte gBattlerSpriteIds -_080340E0: - ldr r0, _08034144 @ =gBattleAnimAttacker - mov r2, r10 - strb r2, [r0] - ldr r0, _08034148 @ =gBattleAnimTarget - mov r1, sp - ldrb r1, [r1] - strb r1, [r0] - ldr r4, _0803414C @ =gUnknown_2024018 - ldr r0, [r4] - ldr r0, [r0, 0x8] - strh r7, [r0] - ldr r0, _08034150 @ =gUnknown_81C6EA8 - adds r1, r5, 0 - movs r2, 0 - bl sub_80725D4 - ldr r0, _08034154 @ =Task_ClearBitWhenBattleTableAnimDone - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08034158 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r6, [r1, 0x8] - ldr r0, [r4] - movs r2, 0x8 - ldrsh r1, [r1, r2] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - movs r0, 0 -_08034132: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08034144: .4byte gBattleAnimAttacker -_08034148: .4byte gBattleAnimTarget -_0803414C: .4byte gUnknown_2024018 -_08034150: .4byte gUnknown_81C6EA8 -_08034154: .4byte Task_ClearBitWhenBattleTableAnimDone -_08034158: .4byte gTasks - thumb_func_end TryHandleLaunchBattleTableAnimation - - thumb_func_start Task_ClearBitWhenBattleTableAnimDone -Task_ClearBitWhenBattleTableAnimDone: @ 803415C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080341A4 @ =gUnknown_2037EDC - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080341A8 @ =gUnknown_2037EE1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803419E - ldr r0, _080341AC @ =gUnknown_2024018 - ldr r2, [r0] - ldr r1, _080341B0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - ldr r2, [r2, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0803419E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080341A4: .4byte gUnknown_2037EDC -_080341A8: .4byte gUnknown_2037EE1 -_080341AC: .4byte gUnknown_2024018 -_080341B0: .4byte gTasks - thumb_func_end Task_ClearBitWhenBattleTableAnimDone - - thumb_func_start ShouldAnimBeDoneRegardlessOfSubsitute -ShouldAnimBeDoneRegardlessOfSubsitute: @ 80341B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bgt _080341C8 - cmp r0, 0xA - bge _080341CC - cmp r0, 0x2 - beq _080341CC - b _080341D0 -_080341C8: - cmp r0, 0x11 - bne _080341D0 -_080341CC: - movs r0, 0x1 - b _080341D2 -_080341D0: - movs r0, 0 -_080341D2: - pop {r1} - bx r1 - thumb_func_end ShouldAnimBeDoneRegardlessOfSubsitute - - thumb_func_start InitAndLaunchSpecialAnimation -InitAndLaunchSpecialAnimation: @ 80341D8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _08034230 @ =gBattleAnimAttacker - strb r1, [r0] - ldr r0, _08034234 @ =gBattleAnimTarget - strb r2, [r0] - ldr r0, _08034238 @ =gUnknown_81C6F18 - adds r1, r3, 0 - movs r2, 0 - bl sub_80725D4 - ldr r0, _0803423C @ =Task_ClearBitWhenSpecialAnimDone - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08034240 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - ldr r0, _08034244 @ =gUnknown_2024018 - ldr r0, [r0] - movs r2, 0x8 - ldrsh r1, [r1, r2] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08034230: .4byte gBattleAnimAttacker -_08034234: .4byte gBattleAnimTarget -_08034238: .4byte gUnknown_81C6F18 -_0803423C: .4byte Task_ClearBitWhenSpecialAnimDone -_08034240: .4byte gTasks -_08034244: .4byte gUnknown_2024018 - thumb_func_end InitAndLaunchSpecialAnimation - - thumb_func_start Task_ClearBitWhenSpecialAnimDone -Task_ClearBitWhenSpecialAnimDone: @ 8034248 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08034290 @ =gUnknown_2037EDC - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08034294 @ =gUnknown_2037EE1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803428A - ldr r0, _08034298 @ =gUnknown_2024018 - ldr r2, [r0] - ldr r1, _0803429C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - ldr r2, [r2, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0803428A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08034290: .4byte gUnknown_2037EDC -_08034294: .4byte gUnknown_2037EE1 -_08034298: .4byte gUnknown_2024018 -_0803429C: .4byte gTasks - thumb_func_end Task_ClearBitWhenSpecialAnimDone - - thumb_func_start IsMoveWithoutAnimation -IsMoveWithoutAnimation: @ 80342A0 - movs r0, 0 - bx lr - thumb_func_end IsMoveWithoutAnimation - - thumb_func_start mplay_80342A4 -mplay_80342A4: @ 80342A4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _080342EC - ldr r2, _080342F4 @ =gUnknown_2024018 - ldr r0, [r2] - ldr r1, [r0, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - adds r1, 0x1 - strb r1, [r0, 0x8] - ldr r2, [r2] - ldr r0, _080342F8 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x8] - cmp r0, 0x1D - bls _080342F0 - ldr r0, _080342FC @ =gMPlayInfo_SE1 - bl m4aMPlayStop - ldr r0, _08034300 @ =gMPlayInfo_SE2 - bl m4aMPlayStop -_080342EC: - cmp r5, 0 - beq _08034304 -_080342F0: - movs r0, 0x1 - b _08034316 - .align 2, 0 -_080342F4: .4byte gUnknown_2024018 -_080342F8: .4byte gActiveBattler -_080342FC: .4byte gMPlayInfo_SE1 -_08034300: .4byte gMPlayInfo_SE2 -_08034304: - ldr r0, _0803431C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - strb r5, [r0, 0x8] - movs r0, 0 -_08034316: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0803431C: .4byte gUnknown_2024018 - thumb_func_end mplay_80342A4 - - thumb_func_start BattleLoadOpponentMonSpriteGfx -BattleLoadOpponentMonSpriteGfx: @ 8034320 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r1, 0 - bl GetMonData - str r0, [sp] - ldr r0, _08034360 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - mov r2, r8 - lsls r1, r2, 2 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _08034364 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldr r6, [sp] - b _0803436C - .align 2, 0 -_08034360: .4byte gUnknown_2024018 -_08034364: - ldrh r5, [r2, 0x2] - ldr r0, _080343C0 @ =gUnknown_2024008 - adds r0, r1, r0 - ldr r6, [r0] -_0803436C: - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - mov r0, r8 - bl GetBattlerPosition - lsls r0, 24 - lsls r2, r5, 3 - ldr r1, _080343C4 @ =gMonFrontPicTable - adds r2, r1 - ldr r1, _080343C8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsrs r0, 22 - adds r1, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys - mov r3, r8 - lsls r2, r3, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r2, r0 - ldr r0, _080343CC @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r3, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - str r1, [sp, 0x4] - mov r9, r2 - cmp r0, 0 - bne _080343D0 - adds r0, r4, 0 - bl GetMonFrontSpritePal - b _080343DA - .align 2, 0 -_080343C0: .4byte gUnknown_2024008 -_080343C4: .4byte gMonFrontPicTable -_080343C8: .4byte gMonSpritesGfxPtr -_080343CC: .4byte gUnknown_2024018 -_080343D0: - adds r0, r5, 0 - mov r1, r10 - ldr r2, [sp] - bl GetFrontSpritePalFromSpeciesAndPersonality -_080343DA: - adds r6, r0, 0 - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - adds r4, r0, 0 - adds r0, r6, 0 - adds r1, r4, 0 - bl LZDecompressWram - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - mov r1, r9 - adds r1, 0x80 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - bl Free - ldr r0, _08034478 @ =0x00000181 - cmp r5, r0 - bne _0803443C - movs r7, 0x80 - lsls r7, 1 - add r7, r9 - ldr r5, _0803447C @ =gBattleStruct - ldr r1, [r5] - movs r4, 0x80 - lsls r4, 1 - adds r1, r4 - adds r0, r6, 0 - bl LZDecompressWram - ldr r0, _08034480 @ =gBattleMonForms - add r0, r8 - ldrb r1, [r0] - lsls r1, 5 - adds r1, r4 - ldr r0, [r5] - adds r0, r1 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_0803443C: - ldr r0, _08034484 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - ldr r1, [sp, 0x4] - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08034468 - ldr r3, _08034488 @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _0803448C @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08034490 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08034494 @ =0x04000008 - bl CpuSet -_08034468: - 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 -_08034478: .4byte 0x00000181 -_0803447C: .4byte gBattleStruct -_08034480: .4byte gBattleMonForms -_08034484: .4byte gUnknown_2024018 -_08034488: .4byte 0x00007fff -_0803448C: .4byte gPlttBufferFaded -_08034490: .4byte gPlttBufferUnfaded -_08034494: .4byte 0x04000008 - thumb_func_end BattleLoadOpponentMonSpriteGfx - - thumb_func_start sub_8034498 -sub_8034498: @ 8034498 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r1, 0 - bl GetMonData - str r0, [sp] - ldr r0, _080344D8 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - mov r2, r8 - lsls r1, r2, 2 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _080344DC - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldr r4, [sp] - b _080344E4 - .align 2, 0 -_080344D8: .4byte gUnknown_2024018 -_080344DC: - ldrh r5, [r2, 0x2] - ldr r0, _08034538 @ =gUnknown_2024008 - adds r0, r1, r0 - ldr r4, [r0] -_080344E4: - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x4] - mov r0, r8 - bl GetBattlerPosition - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x1 - mov r1, r8 - bl sub_804455C - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - lsls r1, 2 - mov r10, r1 - cmp r0, 0x1 - beq _0803451C - ldr r0, _0803453C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - add r0, r10 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08034548 -_0803451C: - lsls r0, r5, 3 - ldr r1, _08034540 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08034544 @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r2, r7, 2 - adds r1, 0x4 - adds r1, r2 - ldr r1, [r1] - adds r2, r5, 0 - adds r3, r4, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys - b _08034562 - .align 2, 0 -_08034538: .4byte gUnknown_2024008 -_0803453C: .4byte gUnknown_2024018 -_08034540: .4byte gMonBackPicTable -_08034544: .4byte gMonSpritesGfxPtr -_08034548: - lsls r0, r5, 3 - ldr r1, _08034584 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08034588 @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r2, r7, 2 - adds r1, 0x4 - adds r1, r2 - ldr r1, [r1] - adds r2, r5, 0 - adds r3, r4, 0 - bl HandleLoadSpecialPokePic -_08034562: - mov r2, r8 - lsls r1, r2, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r1, r0 - ldr r0, _0803458C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - add r0, r10 - ldrh r0, [r0, 0x2] - mov r9, r1 - cmp r0, 0 - bne _08034590 - adds r0, r6, 0 - bl GetMonFrontSpritePal - b _0803459A - .align 2, 0 -_08034584: .4byte gMonBackPicTable -_08034588: .4byte gMonSpritesGfxPtr -_0803458C: .4byte gUnknown_2024018 -_08034590: - adds r0, r5, 0 - ldr r1, [sp, 0x4] - ldr r2, [sp] - bl GetFrontSpritePalFromSpeciesAndPersonality -_0803459A: - adds r6, r0, 0 - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - adds r4, r0, 0 - adds r0, r6, 0 - adds r1, r4, 0 - bl LZDecompressWram - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - mov r1, r9 - adds r1, 0x80 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - bl Free - ldr r0, _08034638 @ =0x00000181 - cmp r5, r0 - bne _080345FC - movs r7, 0x80 - lsls r7, 1 - add r7, r9 - ldr r5, _0803463C @ =gBattleStruct - ldr r1, [r5] - movs r4, 0x80 - lsls r4, 1 - adds r1, r4 - adds r0, r6, 0 - bl LZDecompressWram - ldr r0, _08034640 @ =gBattleMonForms - add r0, r8 - ldrb r1, [r0] - lsls r1, 5 - adds r1, r4 - ldr r0, [r5] - adds r0, r1 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_080345FC: - ldr r0, _08034644 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - add r0, r10 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08034626 - ldr r3, _08034648 @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _0803464C @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08034650 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08034654 @ =0x04000008 - bl CpuSet -_08034626: - 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 -_08034638: .4byte 0x00000181 -_0803463C: .4byte gBattleStruct -_08034640: .4byte gBattleMonForms -_08034644: .4byte gUnknown_2024018 -_08034648: .4byte 0x00007fff -_0803464C: .4byte gPlttBufferFaded -_08034650: .4byte gPlttBufferUnfaded -_08034654: .4byte 0x04000008 - thumb_func_end sub_8034498 - - thumb_func_start sub_8034658 -sub_8034658: @ 8034658 - push {r4-r6,lr} - lsls r4, r1, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBattlerPosition - lsls r0, 24 - ldr r2, _080346B8 @ =gUnknown_8E93B38 - ldr r1, _080346BC @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsrs r0, 22 - adds r1, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r2, 0 - bl LZ77UnCompWram - lsls r4, 4 - movs r0, 0x80 - lsls r0, 1 - adds r6, r4, r0 - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - adds r5, r0, 0 - ldr r0, _080346C0 @ =gUnknown_8E93B14 - adds r1, r5, 0 - bl LZDecompressWram - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x80 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x20 - bl LoadPalette - adds r0, r5, 0 - bl Free - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080346B8: .4byte gUnknown_8E93B38 -_080346BC: .4byte gMonSpritesGfxPtr -_080346C0: .4byte gUnknown_8E93B14 - thumb_func_end sub_8034658 - - thumb_func_start sub_80346C4 -sub_80346C4: @ 80346C4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r5, r0, 0 - adds r0, r1, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - adds r4, r0, 0 - lsls r4, 24 - lsls r5, 3 - ldr r6, _0803473C @ =gTrainerFrontPicTable - adds r6, r5, r6 - ldr r0, _08034740 @ =gMonSpritesGfxPtr - mov r8, r0 - ldr r0, [r0] - lsrs r4, 22 - adds r0, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0 - bl DecompressPicFromTable - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - ldrh r2, [r6, 0x4] - ldr r0, _08034744 @ =0xffff0000 - ldr r1, [sp, 0x4] - ands r1, r0 - orrs r1, r2 - str r1, [sp, 0x4] - ldrh r2, [r6, 0x6] - lsls r2, 16 - ldr r0, _08034748 @ =0x0000ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - ldr r0, _0803474C @ =gTrainerFrontPicPaletteTable - adds r5, r0 - adds r0, r5, 0 - bl LoadCompressedSpritePaletteUsingHeap - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803473C: .4byte gTrainerFrontPicTable -_08034740: .4byte gMonSpritesGfxPtr -_08034744: .4byte 0xffff0000 -_08034748: .4byte 0x0000ffff -_0803474C: .4byte gTrainerFrontPicPaletteTable - thumb_func_end sub_80346C4 - - thumb_func_start sub_8034750 -sub_8034750: @ 8034750 - push {lr} - lsls r0, 16 - lsls r1, 24 - ldr r2, _08034774 @ =gUnknown_8239FD4 - lsrs r0, 13 - adds r0, r2 - ldr r0, [r0] - lsrs r1, 4 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - pop {r0} - bx r0 - .align 2, 0 -_08034774: .4byte gUnknown_8239FD4 - thumb_func_end sub_8034750 - - thumb_func_start nullsub_16 -nullsub_16: @ 8034778 - bx lr - thumb_func_end nullsub_16 - - thumb_func_start sub_803477C -sub_803477C: @ 803477C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - ldr r0, _080347A0 @ =gTrainerFrontPicPaletteTable - lsrs r4, 13 - adds r0, r4, r0 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - ldr r0, _080347A4 @ =gTrainerFrontPicTable - adds r4, r0 - ldrh r0, [r4, 0x6] - bl FreeSpriteTilesByTag - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080347A0: .4byte gTrainerFrontPicPaletteTable -_080347A4: .4byte gTrainerFrontPicTable - thumb_func_end sub_803477C - - thumb_func_start sub_80347A8 -sub_80347A8: @ 80347A8 - push {r4-r7,lr} - ldr r4, _080347D4 @ =gUnknown_8260260 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - bne _080347E0 - ldr r0, _080347D8 @ =gUnknown_8260208 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080347DC @ =gUnknown_8260210 - bl LoadCompressedSpriteSheetUsingHeap - movs r5, 0x2 - b _08034802 - .align 2, 0 -_080347D4: .4byte gUnknown_8260260 -_080347D8: .4byte gUnknown_8260208 -_080347DC: .4byte gUnknown_8260210 -_080347E0: - ldr r4, _08034828 @ =gUnknown_8260218 - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - ldr r4, _0803482C @ =gUnknown_8260228 - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - movs r5, 0x4 -_08034802: - movs r4, 0 - cmp r4, r5 - bcs _08034822 - ldr r7, _08034830 @ =gUnknown_2023BD6 - ldr r6, _08034834 @ =gUnknown_8260240 -_0803480C: - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r6 - bl LoadCompressedSpriteSheetUsingHeap - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _0803480C -_08034822: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08034828: .4byte gUnknown_8260218 -_0803482C: .4byte gUnknown_8260228 -_08034830: .4byte gUnknown_2023BD6 -_08034834: .4byte gUnknown_8260240 - thumb_func_end sub_80347A8 - - thumb_func_start BattleLoadAllHealthBoxesGfx -BattleLoadAllHealthBoxesGfx: @ 8034838 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r6, 0 - cmp r4, 0 - bne _08034848 - b _0803495A -_08034848: - cmp r4, 0x1 - bne _08034864 - ldr r4, _08034860 @ =gUnknown_8260260 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - b _0803495A - .align 2, 0 -_08034860: .4byte gUnknown_8260260 -_08034864: - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - bne _080348CC - cmp r4, 0x2 - bne _0803489C - ldr r0, _08034888 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08034890 - ldr r0, _0803488C @ =gUnknown_8260238 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_08034888: .4byte gBattleTypeFlags -_0803488C: .4byte gUnknown_8260238 -_08034890: - ldr r0, _08034898 @ =gUnknown_8260208 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_08034898: .4byte gUnknown_8260208 -_0803489C: - cmp r4, 0x3 - bne _080348AC - ldr r0, _080348A8 @ =gUnknown_8260210 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_080348A8: .4byte gUnknown_8260210 -_080348AC: - cmp r4, 0x4 - bne _080348BC - ldr r0, _080348B8 @ =gUnknown_2023BD6 - ldrb r0, [r0] - b _08034944 - .align 2, 0 -_080348B8: .4byte gUnknown_2023BD6 -_080348BC: - cmp r4, 0x5 - bne _08034958 - ldr r0, _080348C8 @ =gUnknown_2023BD6 - ldrb r0, [r0, 0x1] - b _08034944 - .align 2, 0 -_080348C8: .4byte gUnknown_2023BD6 -_080348CC: - cmp r4, 0x2 - bne _080348DC - ldr r0, _080348D8 @ =gUnknown_8260218 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_080348D8: .4byte gUnknown_8260218 -_080348DC: - cmp r4, 0x3 - bne _080348EC - ldr r0, _080348E8 @ =gUnknown_8260220 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_080348E8: .4byte gUnknown_8260220 -_080348EC: - cmp r4, 0x4 - bne _080348FC - ldr r0, _080348F8 @ =gUnknown_8260228 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_080348F8: .4byte gUnknown_8260228 -_080348FC: - cmp r4, 0x5 - bne _0803490C - ldr r0, _08034908 @ =gUnknown_8260230 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_08034908: .4byte gUnknown_8260230 -_0803490C: - cmp r4, 0x6 - bne _0803491C - ldr r0, _08034918 @ =gUnknown_2023BD6 - ldrb r0, [r0] - b _08034944 - .align 2, 0 -_08034918: .4byte gUnknown_2023BD6 -_0803491C: - cmp r4, 0x7 - bne _0803492C - ldr r0, _08034928 @ =gUnknown_2023BD6 - ldrb r0, [r0, 0x1] - b _08034944 - .align 2, 0 -_08034928: .4byte gUnknown_2023BD6 -_0803492C: - cmp r4, 0x8 - bne _0803493C - ldr r0, _08034938 @ =gUnknown_2023BD6 - ldrb r0, [r0, 0x2] - b _08034944 - .align 2, 0 -_08034938: .4byte gUnknown_2023BD6 -_0803493C: - cmp r5, 0x9 - bne _08034958 - ldr r0, _08034950 @ =gUnknown_2023BD6 - ldrb r0, [r0, 0x3] -_08034944: - lsls r0, 3 - ldr r1, _08034954 @ =gUnknown_8260240 - adds r0, r1 - bl LoadCompressedSpriteSheetUsingHeap - b _0803495A - .align 2, 0 -_08034950: .4byte gUnknown_2023BD6 -_08034954: .4byte gUnknown_8260240 -_08034958: - movs r6, 0x1 -_0803495A: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end BattleLoadAllHealthBoxesGfx - - thumb_func_start LoadBattleBarGfx -LoadBattleBarGfx: @ 8034964 - push {lr} - ldr r0, _0803497C @ =gFile_graphics_interface_hp_numbers - ldr r1, _08034980 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBA - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - bl LZDecompressWram - pop {r0} - bx r0 - .align 2, 0 -_0803497C: .4byte gFile_graphics_interface_hp_numbers -_08034980: .4byte gMonSpritesGfxPtr - thumb_func_end LoadBattleBarGfx - - thumb_func_start BattleInitAllSprites -BattleInitAllSprites: @ 8034984 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r6, 0 - ldrb r0, [r5] - cmp r0, 0x6 - bls _08034994 - b _08034AF2 -_08034994: - lsls r0, 2 - ldr r1, _080349A0 @ =_080349A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080349A0: .4byte _080349A4 - .align 2, 0 -_080349A4: - .4byte _080349C0 - .4byte _080349C6 - .4byte _08034AD0 - .4byte _080349DC - .4byte _08034A0C - .4byte _08034A48 - .4byte _08034AE8 -_080349C0: - bl ClearSpritesBankHealthboxAnimData - b _08034AD0 -_080349C6: - ldrb r0, [r4] - bl BattleLoadAllHealthBoxesGfx - lsls r0, 24 - cmp r0, 0 - beq _080349D4 - b _08034ACC -_080349D4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08034AF2 -_080349DC: - ldr r0, _080349F4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080349F8 - ldrb r0, [r4] - cmp r0, 0 - bne _080349F8 - bl CreateSafariPlayerHealthboxSprites - b _080349FE - .align 2, 0 -_080349F4: .4byte gBattleTypeFlags -_080349F8: - ldrb r0, [r4] - bl CreateBankHealthboxSprites -_080349FE: - ldr r2, _08034A08 @ =gUnknown_3004FF0 - ldrb r1, [r4] - adds r1, r2 - strb r0, [r1] - b _08034ABA - .align 2, 0 -_08034A08: .4byte gUnknown_3004FF0 -_08034A0C: - ldrb r0, [r4] - bl SetBankHealthboxSpritePos - ldr r0, _08034A2C @ =gUnknown_2023BD6 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08034A34 - ldr r0, _08034A30 @ =gUnknown_3004FF0 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_21 - b _08034ABA - .align 2, 0 -_08034A2C: .4byte gUnknown_2023BD6 -_08034A30: .4byte gUnknown_3004FF0 -_08034A34: - ldr r0, _08034A44 @ =gUnknown_3004FF0 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_21 - b _08034ABA - .align 2, 0 -_08034A44: .4byte gUnknown_3004FF0 -_08034A48: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08034A90 - ldr r0, _08034A80 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08034AAE - ldr r0, _08034A84 @ =gUnknown_3004FF0 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08034A88 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08034A8C @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - b _08034AAE - .align 2, 0 -_08034A80: .4byte gBattleTypeFlags -_08034A84: .4byte gUnknown_3004FF0 -_08034A88: .4byte gBattlerPartyIndexes -_08034A8C: .4byte gPlayerParty -_08034A90: - ldr r0, _08034AD8 @ =gUnknown_3004FF0 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08034ADC @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08034AE0 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_08034AAE: - ldr r1, _08034AD8 @ =gUnknown_3004FF0 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_08034ABA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08034AE4 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08034AF2 -_08034ACC: - movs r0, 0 - strb r0, [r4] -_08034AD0: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08034AF2 - .align 2, 0 -_08034AD8: .4byte gUnknown_3004FF0 -_08034ADC: .4byte gBattlerPartyIndexes -_08034AE0: .4byte gEnemyParty -_08034AE4: .4byte gBattlersCount -_08034AE8: - bl LoadAndCreateEnemyShadowSprites - bl sub_8127CAC - movs r6, 0x1 -_08034AF2: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end BattleInitAllSprites - - thumb_func_start ClearSpritesHealthboxAnimData -ClearSpritesHealthboxAnimData: @ 8034AFC - push {r4,lr} - ldr r4, _08034B20 @ =gUnknown_2024018 - ldr r0, [r4] - ldr r0, [r0, 0x4] - movs r1, 0 - movs r2, 0x30 - bl memset - ldr r0, [r4] - ldr r0, [r0, 0x8] - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08034B20: .4byte gUnknown_2024018 - thumb_func_end ClearSpritesHealthboxAnimData - - thumb_func_start ClearSpritesBankHealthboxAnimData -ClearSpritesBankHealthboxAnimData: @ 8034B24 - push {lr} - bl ClearSpritesHealthboxAnimData - ldr r0, _08034B3C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_08034B3C: .4byte gUnknown_2024018 - thumb_func_end ClearSpritesBankHealthboxAnimData - - thumb_func_start CopyAllBattleSpritesInvisibilities -CopyAllBattleSpritesInvisibilities: @ 8034B40 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0 - ldr r5, _08034BA4 @ =gBattlersCount - ldrb r0, [r5] - cmp r4, r0 - bge _08034B96 - ldr r0, _08034BA8 @ =gSprites - mov r9, r0 - movs r0, 0x1 - mov r12, r0 - movs r0, 0x2 - negs r0, r0 - mov r8, r0 - ldr r7, _08034BAC @ =gUnknown_2024018 - ldr r6, _08034BB0 @ =gBattlerSpriteIds -_08034B64: - ldr r0, [r7] - ldr r0, [r0] - lsls r3, r4, 2 - adds r3, r0 - adds r0, r4, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - mov r0, r12 - ands r1, r0 - ldrb r2, [r3] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _08034B64 -_08034B96: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08034BA4: .4byte gBattlersCount -_08034BA8: .4byte gSprites -_08034BAC: .4byte gUnknown_2024018 -_08034BB0: .4byte gBattlerSpriteIds - thumb_func_end CopyAllBattleSpritesInvisibilities - - thumb_func_start CopyBattleSpriteInvisibility -CopyBattleSpriteInvisibility: @ 8034BB4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08034BE8 @ =gUnknown_2024018 - ldr r1, [r1] - ldr r1, [r1] - lsls r3, r0, 2 - adds r3, r1 - ldr r2, _08034BEC @ =gSprites - ldr r1, _08034BF0 @ =gBattlerSpriteIds - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bx lr - .align 2, 0 -_08034BE8: .4byte gUnknown_2024018 -_08034BEC: .4byte gSprites -_08034BF0: .4byte gBattlerSpriteIds - thumb_func_end CopyBattleSpriteInvisibility - - thumb_func_start sub_8034BF4 -sub_8034BF4: @ 8034BF4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0xFF - beq _08034C16 - b _08034D88 -_08034C16: - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08034D58 @ =gBattlerPartyIndexes - mov r1, r9 - lsls r1, 1 - adds r0, r1, r0 - str r0, [sp, 0xC] - ldrh r0, [r0] - movs r2, 0x64 - muls r0, r2 - ldr r3, _08034D5C @ =gEnemyParty - adds r0, r3 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, [sp, 0xC] - ldrh r0, [r1] - movs r2, 0x64 - muls r0, r2 - ldr r3, _08034D5C @ =gEnemyParty - adds r0, r3 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x4] - ldr r1, [sp, 0xC] - ldrh r0, [r1] - movs r2, 0x64 - muls r0, r2 - ldr r3, _08034D5C @ =gEnemyParty - adds r0, r3 - movs r1, 0x1 - bl GetMonData - adds r7, r0, 0 - mov r1, r8 - lsls r0, r1, 3 - ldr r1, _08034D60 @ =gMonFrontPicTable - adds r0, r1 - ldr r4, _08034D64 @ =gMonSpritesGfxPtr - ldr r1, [r4] - mov r2, r10 - lsls r5, r2, 2 - adds r1, 0x4 - adds r1, r5 - ldr r1, [r1] - mov r2, r8 - ldr r3, [sp, 0x4] - bl HandleLoadSpecialPokePic_DontHandleDeoxys - ldr r0, [r4] - adds r0, 0x4 - adds r0, r5 - ldr r2, [r0] - ldr r5, _08034D68 @ =gSprites - ldr r4, _08034D6C @ =gBattlerSpriteIds - add r4, r9 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x4] - lsls r0, 22 - lsrs r0, 17 - ldr r1, _08034D70 @ =0x06010000 - adds r0, r1 - ldr r1, _08034D74 @ =0x040000d4 - str r2, [r1] - str r0, [r1, 0x4] - ldr r0, _08034D78 @ =0x84000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r3, r9 - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - mov r10, r0 - mov r0, r8 - adds r1, r7, 0 - ldr r2, [sp, 0x4] - bl GetFrontSpritePalFromSpeciesAndPersonality - adds r6, r0, 0 - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - adds r7, r0, 0 - adds r0, r6, 0 - adds r1, r7, 0 - bl LZDecompressWram - adds r0, r7, 0 - mov r1, r10 - movs r2, 0x20 - bl LoadPalette - adds r0, r7, 0 - bl Free - mov r0, r9 - bl GetBankSpriteDefault_Y - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x22] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08034D7C @ =gBattleMonForms - add r1, r9 - ldrb r1, [r1] - bl StartSpriteAnim - ldr r2, [sp, 0xC] - ldrh r0, [r2] - movs r3, 0x64 - muls r0, r3 - ldr r1, _08034D5C @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - mov r2, r8 - muls r2, r1 - ldr r1, _08034D80 @ =gSpeciesNames - adds r2, r1 - movs r1, 0x2 - bl SetMonData - ldr r4, _08034D84 @ =gUnknown_3004FF0 - add r4, r9 - ldrb r0, [r4] - ldr r2, [sp, 0xC] - ldrh r1, [r2] - movs r3, 0x64 - muls r1, r3 - ldr r2, _08034D5C @ =gEnemyParty - adds r1, r2 - bl sub_80496C0 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_804981C - b _08035062 - .align 2, 0 -_08034D58: .4byte gBattlerPartyIndexes -_08034D5C: .4byte gEnemyParty -_08034D60: .4byte gMonFrontPicTable -_08034D64: .4byte gMonSpritesGfxPtr -_08034D68: .4byte gSprites -_08034D6C: .4byte gBattlerSpriteIds -_08034D70: .4byte 0x06010000 -_08034D74: .4byte 0x040000d4 -_08034D78: .4byte 0x84000200 -_08034D7C: .4byte gBattleMonForms -_08034D80: .4byte gSpeciesNames -_08034D84: .4byte gUnknown_3004FF0 -_08034D88: - cmp r2, 0 - beq _08034E4C - ldr r0, _08034E28 @ =gBattlerSpriteIds - mov r3, r9 - adds r5, r3, r0 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r6, _08034E2C @ =gSprites - adds r0, r6 - ldr r4, _08034E30 @ =gUnknown_2024018 - ldr r1, [r4] - ldr r1, [r1, 0x8] - ldrb r1, [r1] - bl StartSpriteAnim - mov r1, r9 - lsls r0, r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - mov r10, r0 - ldr r2, _08034E34 @ =gBattleStruct - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrh r1, [r0] - lsls r1, 5 - movs r3, 0x80 - lsls r3, 1 - adds r1, r3 - ldr r0, [r2] - adds r0, r1 - mov r1, r10 - movs r2, 0x20 - bl LoadPalette - ldr r1, _08034E38 @ =gBattleMonForms - add r1, r9 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldrh r0, [r0] - strb r0, [r1] - ldr r0, [r4] - ldr r1, [r0] - mov r2, r9 - lsls r0, r2, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08034E0E - ldr r3, _08034E3C @ =0x00007fff - mov r0, r10 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - mov r3, r10 - lsls r1, r3, 1 - ldr r0, _08034E40 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08034E44 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08034E48 @ =0x04000008 - bl CpuSet -_08034E0E: - mov r0, r9 - bl GetBankSpriteDefault_Y - ldrb r2, [r5] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r6 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x22] - b _08035062 - .align 2, 0 -_08034E28: .4byte gBattlerSpriteIds -_08034E2C: .4byte gSprites -_08034E30: .4byte gUnknown_2024018 -_08034E34: .4byte gBattleStruct -_08034E38: .4byte gBattleMonForms -_08034E3C: .4byte 0x00007fff -_08034E40: .4byte gPlttBufferFaded -_08034E44: .4byte gPlttBufferUnfaded -_08034E48: .4byte 0x04000008 -_08034E4C: - mov r0, r9 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, [sp] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08034E80 - ldr r1, _08034E78 @ =gBattlerPartyIndexes - ldr r2, [sp] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08034E7C @ =gEnemyParty - b _08034E90 - .align 2, 0 -_08034E78: .4byte gBattlerPartyIndexes -_08034E7C: .4byte gEnemyParty -_08034E80: - ldr r1, _08034EFC @ =gBattlerPartyIndexes - ldr r3, [sp] - lsls r0, r3, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08034F00 @ =gPlayerParty -_08034E90: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r0, r9 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08034F10 - ldr r0, _08034EFC @ =gBattlerPartyIndexes - mov r1, r9 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r7, 0x64 - muls r0, r7 - ldr r5, _08034F00 @ =gPlayerParty - adds r0, r5 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x4] - ldrh r0, [r4] - muls r0, r7 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - adds r7, r0, 0 - mov r2, r8 - lsls r0, r2, 3 - ldr r1, _08034F04 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08034F08 @ =gMonSpritesGfxPtr - ldr r1, [r1] - mov r3, r10 - lsls r5, r3, 2 - adds r1, 0x4 - adds r1, r5 - ldr r1, [r1] - ldr r2, _08034F0C @ =gUnknown_2024008 - mov r3, r9 - lsls r4, r3, 2 - adds r2, r4, r2 - ldr r3, [r2] - mov r2, r8 - bl HandleLoadSpecialPokePic_DontHandleDeoxys - b _08034F5E - .align 2, 0 -_08034EFC: .4byte gBattlerPartyIndexes -_08034F00: .4byte gPlayerParty -_08034F04: .4byte gMonBackPicTable -_08034F08: .4byte gMonSpritesGfxPtr -_08034F0C: .4byte gUnknown_2024008 -_08034F10: - ldr r0, _08035074 @ =gBattlerPartyIndexes - mov r1, r9 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r7, 0x64 - muls r0, r7 - ldr r5, _08035078 @ =gEnemyParty - adds r0, r5 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x4] - ldrh r0, [r4] - muls r0, r7 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - adds r7, r0, 0 - mov r2, r8 - lsls r0, r2, 3 - ldr r1, _0803507C @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08035080 @ =gMonSpritesGfxPtr - ldr r1, [r1] - mov r3, r10 - lsls r5, r3, 2 - adds r1, 0x4 - adds r1, r5 - ldr r1, [r1] - ldr r2, _08035084 @ =gUnknown_2024008 - mov r3, r9 - lsls r4, r3, 2 - adds r2, r4, r2 - ldr r3, [r2] - mov r2, r8 - bl HandleLoadSpecialPokePic_DontHandleDeoxys -_08034F5E: - str r4, [sp, 0x14] - ldr r0, _08035080 @ =gMonSpritesGfxPtr - ldr r0, [r0] - adds r0, 0x4 - adds r0, r5 - ldr r2, [r0] - ldr r0, _08035088 @ =gBattlerSpriteIds - add r0, r9 - str r0, [sp, 0x10] - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803508C @ =gSprites - adds r0, r1 - ldrh r0, [r0, 0x4] - lsls r0, 22 - lsrs r0, 17 - ldr r1, _08035090 @ =0x06010000 - adds r0, r1 - ldr r1, _08035094 @ =0x040000d4 - str r2, [r1] - str r0, [r1, 0x4] - ldr r0, _08035098 @ =0x84000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r2, r9 - lsls r0, r2, 20 - movs r3, 0x80 - lsls r3, 17 - adds r0, r3 - lsrs r0, 16 - mov r10, r0 - mov r0, r8 - adds r1, r7, 0 - ldr r2, [sp, 0x4] - bl GetFrontSpritePalFromSpeciesAndPersonality - adds r6, r0, 0 - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - adds r7, r0, 0 - adds r0, r6, 0 - adds r1, r7, 0 - bl LZDecompressWram - adds r0, r7, 0 - mov r1, r10 - movs r2, 0x20 - bl LoadPalette - adds r0, r7, 0 - bl Free - ldr r0, _0803509C @ =0x00000181 - cmp r8, r0 - bne _08034FFC - ldr r5, _080350A0 @ =gBattleStruct - ldr r1, [r5] - movs r4, 0x80 - lsls r4, 1 - adds r1, r4 - adds r0, r6, 0 - bl LZDecompressWram - ldr r0, _080350A4 @ =gBattleMonForms - ldr r1, [sp] - adds r0, r1, r0 - ldrb r1, [r0] - lsls r1, 5 - adds r1, r4 - ldr r0, [r5] - adds r0, r1 - mov r1, r10 - movs r2, 0x20 - bl LoadPalette -_08034FFC: - ldr r3, _080350A8 @ =0x00007fff - mov r0, r10 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - mov r2, r10 - lsls r1, r2, 1 - ldr r0, _080350AC @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _080350B0 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _080350B4 @ =0x04000008 - bl CpuSet - ldr r0, _080350B8 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - ldr r3, [sp, 0x14] - adds r0, r3, r0 - mov r1, r8 - strh r1, [r0, 0x2] - ldr r0, _080350A4 @ =gBattleMonForms - mov r2, r9 - adds r4, r2, r0 - ldr r3, [sp] - adds r0, r3, r0 - ldrb r0, [r0] - strb r0, [r4] - mov r0, r9 - bl GetBankSpriteDefault_Y - ldr r1, [sp, 0x10] - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _0803508C @ =gSprites - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x22] - ldr r3, [sp, 0x10] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r4] - bl StartSpriteAnim -_08035062: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035074: .4byte gBattlerPartyIndexes -_08035078: .4byte gEnemyParty -_0803507C: .4byte gMonFrontPicTable -_08035080: .4byte gMonSpritesGfxPtr -_08035084: .4byte gUnknown_2024008 -_08035088: .4byte gBattlerSpriteIds -_0803508C: .4byte gSprites -_08035090: .4byte 0x06010000 -_08035094: .4byte 0x040000d4 -_08035098: .4byte 0x84000200 -_0803509C: .4byte 0x00000181 -_080350A0: .4byte gBattleStruct -_080350A4: .4byte gBattleMonForms -_080350A8: .4byte 0x00007fff -_080350AC: .4byte gPlttBufferFaded -_080350B0: .4byte gPlttBufferUnfaded -_080350B4: .4byte 0x04000008 -_080350B8: .4byte gUnknown_2024018 - thumb_func_end sub_8034BF4 - - thumb_func_start sub_80350BC -sub_80350BC: @ 80350BC - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r1, 24 - cmp r1, 0 - bne _08035158 - adds r0, r4, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080350FC - ldr r0, _080350F4 @ =gFile_graphics_battle_anims_sprites_substitute_sheet - ldr r1, _080350F8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r4, r5, 2 - adds r1, 0x4 - adds r1, r4 - ldr r1, [r1] - bl LZDecompressVram - b _0803510E - .align 2, 0 -_080350F4: .4byte gFile_graphics_battle_anims_sprites_substitute_sheet -_080350F8: .4byte gMonSpritesGfxPtr -_080350FC: - ldr r0, _08035144 @ =gFile_graphics_battle_anims_sprites_substitute_tilemap - ldr r1, _08035148 @ =gMonSpritesGfxPtr - ldr r1, [r1] - lsls r4, r5, 2 - adds r1, 0x4 - adds r1, r4 - ldr r1, [r1] - bl LZDecompressVram -_0803510E: - movs r3, 0x1 - lsls r6, 4 - ldr r7, _0803514C @ =gFile_graphics_battle_anims_sprites_substitute_palette - ldr r0, _08035148 @ =gMonSpritesGfxPtr - ldr r0, [r0] - adds r0, 0x4 - adds r4, r0, r4 - ldr r2, _08035150 @ =0x040000d4 - ldr r5, _08035154 @ =0x84000200 -_08035120: - ldr r0, [r4] - lsls r1, r3, 11 - adds r1, r0, r1 - str r0, [r2] - str r1, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r3, 0x1 - cmp r3, 0x3 - ble _08035120 - movs r0, 0x80 - lsls r0, 1 - adds r1, r6, r0 - adds r0, r7, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _0803519A - .align 2, 0 -_08035144: .4byte gFile_graphics_battle_anims_sprites_substitute_tilemap -_08035148: .4byte gMonSpritesGfxPtr -_0803514C: .4byte gFile_graphics_battle_anims_sprites_substitute_palette -_08035150: .4byte 0x040000d4 -_08035154: .4byte 0x84000200 -_08035158: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08035184 - ldr r1, _0803517C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08035180 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl BattleLoadOpponentMonSpriteGfx - b _0803519A - .align 2, 0 -_0803517C: .4byte gBattlerPartyIndexes -_08035180: .4byte gEnemyParty -_08035184: - ldr r1, _080351A0 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080351A4 @ =gPlayerParty - adds r0, r1 - adds r1, r6, 0 - bl sub_8034498 -_0803519A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080351A0: .4byte gBattlerPartyIndexes -_080351A4: .4byte gPlayerParty - thumb_func_end sub_80350BC - - thumb_func_start LoadBattleMonGfxAndAnimate -LoadBattleMonGfxAndAnimate: @ 80351A8 - push {r4-r6,lr} - adds r5, r1, 0 - adds r4, r2, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80350BC - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080351E4 @ =gSprites - adds r4, r0, r1 - ldr r0, _080351E8 @ =gBattleMonForms - adds r0, r6, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - bne _080351EC - adds r0, r6, 0 - bl GetSubstituteSpriteDefault_Y - b _080351F2 - .align 2, 0 -_080351E4: .4byte gSprites -_080351E8: .4byte gBattleMonForms -_080351EC: - adds r0, r6, 0 - bl GetBankSpriteDefault_Y -_080351F2: - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LoadBattleMonGfxAndAnimate - - thumb_func_start TrySetBehindSubstituteSpriteBit -TrySetBehindSubstituteSpriteBit: @ 8035200 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0xA4 - bne _08035220 - ldr r0, _08035224 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] -_08035220: - pop {r0} - bx r0 - .align 2, 0 -_08035224: .4byte gUnknown_2024018 - thumb_func_end TrySetBehindSubstituteSpriteBit - - thumb_func_start ClearBehindSubstituteBit -ClearBehindSubstituteBit: @ 8035228 - lsls r0, 24 - ldr r1, _08035240 @ =gUnknown_2024018 - ldr r1, [r1] - ldr r1, [r1] - lsrs r0, 22 - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_08035240: .4byte gUnknown_2024018 - thumb_func_end ClearBehindSubstituteBit - - thumb_func_start HandleLowHpMusicChange -HandleLowHpMusicChange: @ 8035244 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - adds r7, r6, 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 r4, 16 - asrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080352BC - ldr r7, _080352B8 @ =gUnknown_2024018 - ldr r0, [r7] - ldr r2, [r0] - lsls r4, r6, 2 - adds r0, r4, r2 - ldrb r1, [r0] - movs r5, 0x2 - movs r3, 0x2 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0803530E - adds r0, r6, 0 - eors r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080352AA - movs r0, 0x53 - bl PlaySE -_080352AA: - ldr r0, [r7] - ldr r1, [r0] - adds r1, r4, r1 - ldrb r0, [r1] - orrs r0, r5 - strb r0, [r1] - b _0803530E - .align 2, 0 -_080352B8: .4byte gUnknown_2024018 -_080352BC: - ldr r4, _080352E4 @ =gUnknown_2024018 - ldr r0, [r4] - ldr r0, [r0] - lsls r1, r6, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - bne _080352E8 - movs r0, 0x53 - bl m4aSongNumStop - b _0803530E - .align 2, 0 -_080352E4: .4byte gUnknown_2024018 -_080352E8: - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _0803530E - ldr r1, [r4] - movs r0, 0x2 - eors r7, r0 - ldr r1, [r1] - lsls r0, r7, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0803530E - movs r0, 0x53 - bl m4aSongNumStop -_0803530E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end HandleLowHpMusicChange - - thumb_func_start BattleStopLowHpSound -BattleStopLowHpSound: @ 8035314 - push {r4-r6,lr} - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _08035364 @ =gUnknown_2024018 - ldr r0, [r5] - ldr r0, [r0] - lsls r1, r4, 2 - adds r1, r0 - ldrb r2, [r1] - movs r6, 0x3 - negs r6, r6 - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _08035356 - ldr r2, [r5] - movs r0, 0x2 - adds r1, r4, 0 - eors r1, r0 - ldr r0, [r2] - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] -_08035356: - movs r0, 0x53 - bl m4aSongNumStop - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08035364: .4byte gUnknown_2024018 - thumb_func_end BattleStopLowHpSound - - thumb_func_start GetMonHPBarLevel -GetMonHPBarLevel: @ 8035368 - push {r4,r5,lr} - adds r5, r0, 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 r4, 16 - asrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetMonHPBarLevel - - thumb_func_start sub_803539C -sub_803539C: @ 803539C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08035440 @ =gMain - ldr r1, _08035444 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08035432 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r5, _08035448 @ =gBattlerPartyIndexes - mov r1, r8 - lsls r0, r1, 1 - adds r0, r5 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - lsls r0, r1, 1 - adds r0, r5 - ldrb r0, [r0] - bl pokemon_order_func - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0x64 - adds r0, r4, 0 - muls r0, r7 - ldr r6, _0803544C @ =gPlayerParty - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0803540E - adds r0, r4, 0 - mov r1, r8 - bl HandleLowHpMusicChange -_0803540E: - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _08035432 - adds r0, r5, 0 - muls r0, r7 - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08035432 - adds r0, r4, 0 - mov r1, r9 - bl HandleLowHpMusicChange -_08035432: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035440: .4byte gMain -_08035444: .4byte 0x00000439 -_08035448: .4byte gBattlerPartyIndexes -_0803544C: .4byte gPlayerParty - thumb_func_end sub_803539C - - thumb_func_start sub_8035450 -sub_8035450: @ 8035450 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r0, _080354E0 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _08035520 - movs r0, 0x3 - mov r10, r8 - mov r1, r10 - ands r1, r0 - mov r10, r1 - movs r6, 0 - movs r2, 0x3F - negs r2, r2 - mov r9, r2 -_0803547C: - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_8075224 - lsls r0, 24 - cmp r0, 0 - beq _08035514 - ldr r4, _080354E4 @ =gSprites - ldr r0, _080354E8 @ =gBattlerSpriteIds - adds r3, r5, r0 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r7, 0x4 - negs r7, r7 - adds r2, r7, 0 - ands r1, r2 - mov r2, r10 - orrs r1, r2 - strb r1, [r0, 0x1] - mov r7, r8 - cmp r7, 0 - bne _080354F0 - ldr r0, _080354EC @ =gUnknown_2024018 - ldr r0, [r0] - ldr r2, [r0, 0x4] - adds r2, r6, r2 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r2, 0x6] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x3] - mov r2, r9 - ands r1, r2 - strb r1, [r0, 0x3] - b _08035514 - .align 2, 0 -_080354E0: .4byte gBattlersCount -_080354E4: .4byte gSprites -_080354E8: .4byte gBattlerSpriteIds -_080354EC: .4byte gUnknown_2024018 -_080354F0: - ldrb r0, [r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldr r0, _08035530 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0, 0x4] - adds r0, r6, r0 - ldrb r1, [r0, 0x6] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r0, [r2, 0x3] - mov r3, r9 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x3] -_08035514: - adds r6, 0xC - adds r5, 0x1 - ldr r0, _08035534 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0803547C -_08035520: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035530: .4byte gUnknown_2024018 -_08035534: .4byte gBattlersCount - thumb_func_end sub_8035450 - - thumb_func_start LoadAndCreateEnemyShadowSprites -LoadAndCreateEnemyShadowSprites: @ 8035538 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08035614 @ =gUnknown_8250A0C - bl LoadCompressedSpriteSheetUsingHeap - movs r0, 0x1 - bl GetBattlerAtPosition - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08035618 @ =gUnknown_8250A1C - mov r8, r0 - adds r0, r5, 0 - movs r1, 0 - bl sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8074480 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0xE8 - lsls r0, 13 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - ldr r6, _0803561C @ =gUnknown_2024018 - ldr r1, [r6] - ldr r2, [r1, 0x4] - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r2, r1, r2 - strb r0, [r2, 0x7] - ldr r7, _08035620 @ =gSprites - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _0803560A - movs r0, 0x3 - bl GetBattlerAtPosition - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - movs r1, 0 - bl sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8074480 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0xE8 - lsls r0, 13 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - ldr r1, [r6] - ldr r2, [r1, 0x4] - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r2, r1, r2 - strb r0, [r2, 0x7] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r1, r0 - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] -_0803560A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035614: .4byte gUnknown_8250A0C -_08035618: .4byte gUnknown_8250A1C -_0803561C: .4byte gUnknown_2024018 -_08035620: .4byte gSprites - thumb_func_end LoadAndCreateEnemyShadowSprites - - thumb_func_start SpriteCB_EnemyShadow -SpriteCB_EnemyShadow: @ 8035624 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r0, 0 - mov r8, r0 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08035668 @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803566C @ =gSprites - adds r7, r0, r1 - adds r6, r7, 0 - adds r6, 0x3E - ldrb r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08035660 - adds r0, r4, 0 - bl sub_8075224 - lsls r0, 24 - cmp r0, 0 - bne _08035674 -_08035660: - ldr r0, _08035670 @ =SpriteCB_SetInvisible - str r0, [r5, 0x1C] - b _080356EA - .align 2, 0 -_08035668: .4byte gBattlerSpriteIds -_0803566C: .4byte gSprites -_08035670: .4byte SpriteCB_SetInvisible -_08035674: - ldr r0, _08035690 @ =gUnknown_2037EE1 - ldrb r0, [r0] - cmp r0, 0 - bne _08035686 - ldrb r1, [r6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08035698 -_08035686: - movs r0, 0x1 - mov r8, r0 - ldr r2, _08035694 @ =gUnknown_2024018 - lsls r4, 2 - b _080356BA - .align 2, 0 -_08035690: .4byte gUnknown_2037EE1 -_08035694: .4byte gUnknown_2024018 -_08035698: - ldr r2, _080356F4 @ =gUnknown_2024018 - ldr r0, [r2] - ldr r0, [r0] - lsls r1, r4, 2 - adds r3, r1, r0 - ldrh r0, [r3, 0x2] - adds r4, r1, 0 - cmp r0, 0 - beq _080356BA - ldr r0, _080356F8 @ =gUnknown_823A004 - ldrh r1, [r3, 0x2] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _080356BA - movs r0, 0x1 - mov r8, r0 -_080356BA: - ldr r0, [r2] - ldr r0, [r0] - adds r0, r4, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080356CE - movs r0, 0x1 - mov r8, r0 -_080356CE: - ldrh r0, [r7, 0x20] - strh r0, [r5, 0x20] - ldrh r0, [r7, 0x24] - strh r0, [r5, 0x24] - adds r2, r5, 0 - adds r2, 0x3E - mov r0, r8 - lsls r3, r0, 2 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_080356EA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080356F4: .4byte gUnknown_2024018 -_080356F8: .4byte gUnknown_823A004 - thumb_func_end SpriteCB_EnemyShadow - - thumb_func_start SpriteCB_SetInvisible -SpriteCB_SetInvisible: @ 80356FC - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - bx lr - thumb_func_end SpriteCB_SetInvisible - - thumb_func_start SetBankEnemyShadowSpriteCallback -SetBankEnemyShadowSpriteCallback: @ 8035708 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08035784 - ldr r0, _08035758 @ =gUnknown_2024018 - ldr r3, [r0] - ldr r1, [r3] - lsls r0, r4, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _08035732 - adds r5, r0, 0 -_08035732: - ldr r0, _0803575C @ =gUnknown_823A004 - adds r0, r5, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _08035768 - ldr r2, _08035760 @ =gSprites - ldr r1, [r3, 0x4] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08035764 @ =SpriteCB_EnemyShadow - b _08035782 - .align 2, 0 -_08035758: .4byte gUnknown_2024018 -_0803575C: .4byte gUnknown_823A004 -_08035760: .4byte gSprites -_08035764: .4byte SpriteCB_EnemyShadow -_08035768: - ldr r2, _0803578C @ =gSprites - ldr r1, [r3, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08035790 @ =SpriteCB_SetInvisible -_08035782: - str r1, [r0] -_08035784: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803578C: .4byte gSprites -_08035790: .4byte SpriteCB_SetInvisible - thumb_func_end SetBankEnemyShadowSpriteCallback - - thumb_func_start EnemyShadowCallbackToSetInvisible -EnemyShadowCallbackToSetInvisible: @ 8035794 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080357BC @ =gSprites - ldr r1, _080357C0 @ =gUnknown_2024018 - ldr r1, [r1] - ldr r3, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080357C4 @ =SpriteCB_SetInvisible - str r1, [r0] - bx lr - .align 2, 0 -_080357BC: .4byte gSprites -_080357C0: .4byte gUnknown_2024018 -_080357C4: .4byte SpriteCB_SetInvisible - thumb_func_end EnemyShadowCallbackToSetInvisible - - thumb_func_start sub_80357C8 -sub_80357C8: @ 80357C8 - push {r4-r7,lr} - ldr r2, _08035894 @ =0x06000240 - movs r7, 0xF0 - lsls r7, 8 - movs r5, 0x8 -_080357D2: - movs r4, 0xF -_080357D4: - ldrh r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080357E4 - adds r0, r7, 0 - orrs r0, r1 - strh r0, [r2] -_080357E4: - ldrh r1, [r2] - movs r6, 0xF0 - lsls r6, 4 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _080357F8 - adds r0, r6, 0 - orrs r0, r1 - strh r0, [r2] -_080357F8: - ldrh r1, [r2] - movs r3, 0xF0 - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _0803580A - adds r0, r1, 0 - orrs r0, r3 - strh r0, [r2] -_0803580A: - ldrh r1, [r2] - movs r3, 0xF - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _0803581C - adds r0, r1, 0 - orrs r0, r3 - strh r0, [r2] -_0803581C: - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080357D4 - subs r5, 0x1 - cmp r5, 0 - bge _080357D2 - ldr r2, _08035898 @ =0x06000600 - movs r5, 0 - movs r7, 0xF0 - lsls r7, 8 -_08035832: - adds r3, r5, 0x1 - movs r4, 0xF -_08035836: - ldrh r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0803584A - movs r5, 0xC0 - lsls r5, 7 - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r2] -_0803584A: - ldrh r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0803585E - movs r5, 0xC0 - lsls r5, 3 - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r2] -_0803585E: - ldrh r1, [r2] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _0803586E - movs r0, 0x60 - orrs r0, r1 - strh r0, [r2] -_0803586E: - ldrh r1, [r2] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _0803587E - movs r0, 0x6 - orrs r0, r1 - strh r0, [r2] -_0803587E: - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08035836 - adds r5, r3, 0 - cmp r5, 0x11 - ble _08035832 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035894: .4byte 0x06000240 -_08035898: .4byte 0x06000600 - thumb_func_end sub_80357C8 - - thumb_func_start ClearTemporarySpeciesSpriteData -ClearTemporarySpeciesSpriteData: @ 803589C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - ldr r0, _080358CC @ =gUnknown_2024018 - ldr r0, [r0] - ldr r2, [r0] - lsls r0, r4, 2 - adds r0, r2 - movs r3, 0 - movs r2, 0 - strh r2, [r0, 0x2] - ldr r0, _080358D0 @ =gBattleMonForms - adds r0, r4, r0 - strb r3, [r0] - cmp r1, 0 - bne _080358C4 - adds r0, r4, 0 - bl ClearBehindSubstituteBit -_080358C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080358CC: .4byte gUnknown_2024018 -_080358D0: .4byte gBattleMonForms - thumb_func_end ClearTemporarySpeciesSpriteData - - thumb_func_start AllocateMonSpritesGfx -AllocateMonSpritesGfx: @ 80358D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - ldr r4, _080359A4 @ =gMonSpritesGfxPtr - str r6, [r4] - movs r0, 0xC0 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - movs r0, 0x80 - lsls r0, 8 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1] -_080358FA: - ldr r0, _080359A4 @ =gMonSpritesGfxPtr - ldr r1, [r0] - lsls r4, r6, 2 - adds r2, r1, 0x4 - adds r2, r4 - lsls r3, r6, 13 - ldr r0, [r1] - adds r0, r3 - str r0, [r2] - lsls r3, r6, 1 - adds r0, r3, r6 - lsls r0, 3 - adds r1, r0, r1 - ldr r2, _080359A8 @ =gUnknown_825DEF0 - adds r1, 0x14 - adds r0, r2 - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - movs r5, 0 - mov r9, r3 - lsls r0, r6, 5 - mov r8, r0 - adds r1, r6, 0x1 - mov r10, r1 - mov r12, r8 - adds r7, r4, 0 -_08035932: - ldr r2, _080359A4 @ =gMonSpritesGfxPtr - ldr r1, [r2] - lsls r4, r5, 3 - add r4, r12 - adds r3, r1, 0 - adds r3, 0x74 - adds r3, r4 - adds r0, r1, 0x4 - adds r0, r7 - lsls r2, r5, 11 - ldr r0, [r0] - adds r0, r2 - str r0, [r3] - adds r1, r4 - adds r1, 0x78 - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08035932 - ldr r1, _080359A4 @ =gMonSpritesGfxPtr - ldr r2, [r1] - mov r5, r9 - adds r0, r5, r6 - lsls r0, 3 - adds r1, r2, 0 - adds r1, 0x20 - adds r1, r0 - mov r0, r8 - adds r0, 0x74 - adds r2, r0 - str r2, [r1] - mov r7, r10 - lsls r0, r7, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080358FA - movs r0, 0x80 - lsls r0, 5 - bl AllocZeroed - ldr r1, _080359A4 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBA - lsls r2, 1 - adds r1, r2 - str r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080359A4: .4byte gMonSpritesGfxPtr -_080359A8: .4byte gUnknown_825DEF0 - thumb_func_end AllocateMonSpritesGfx - - thumb_func_start FreeMonSpritesGfx -FreeMonSpritesGfx: @ 80359AC - push {r4-r6,lr} - ldr r6, _08035A24 @ =gMonSpritesGfxPtr - ldr r0, [r6] - cmp r0, 0 - beq _08035A1E - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080359D2 - bl Free - ldr r0, [r6] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_080359D2: - ldr r0, [r6] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080359F0 - bl Free - ldr r0, [r6] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_080359F0: - ldr r0, [r6] - movs r5, 0xBA - lsls r5, 1 - adds r0, r5 - ldr r0, [r0] - bl Free - ldr r0, [r6] - adds r5, r0, r5 - movs r4, 0 - str r4, [r5] - ldr r0, [r0] - bl Free - ldr r0, [r6] - str r4, [r0] - str r4, [r0, 0x4] - str r4, [r0, 0x8] - str r4, [r0, 0xC] - str r4, [r0, 0x10] - bl Free - str r4, [r6] -_08035A1E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08035A24: .4byte gMonSpritesGfxPtr - thumb_func_end FreeMonSpritesGfx - - thumb_func_start ShouldPlayNormalPokeCry -ShouldPlayNormalPokeCry: @ 8035A28 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x37 - bl GetMonData - ldr r1, _08035A6C @ =0x00000fff - ands r1, r0 - cmp r1, 0 - bne _08035A70 - 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 r4, 16 - asrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - ble _08035A70 - movs r0, 0x1 - b _08035A72 - .align 2, 0 -_08035A6C: .4byte 0x00000fff -_08035A70: - movs r0, 0 -_08035A72: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ShouldPlayNormalPokeCry - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 959e4e19d..8f6361bb4 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -255,8 +255,8 @@ sub_8047CAC: @ 8047CAC bx r0 thumb_func_end sub_8047CAC - thumb_func_start CreateBankHealthboxSprites -CreateBankHealthboxSprites: @ 8047CE0 + thumb_func_start CreateBattlerHealthboxSprites +CreateBattlerHealthboxSprites: @ 8047CE0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -268,7 +268,7 @@ CreateBankHealthboxSprites: @ 8047CE0 mov r10, r0 movs r0, 0 str r0, [sp] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08047DF4 @@ -522,7 +522,7 @@ _08047E98: _08047F1A: str r0, [sp] _08047F1C: - ldr r0, _08047FF4 @ =gUnknown_2023BD6 + ldr r0, _08047FF4 @ =gBattlerPositions add r0, r10 ldrb r1, [r0] lsls r0, r1, 1 @@ -621,12 +621,12 @@ _08047FE4: .4byte gSprites _08047FE8: .4byte 0x000003ff _08047FEC: .4byte 0xfffffc00 _08047FF0: .4byte sub_8048128 -_08047FF4: .4byte gUnknown_2023BD6 +_08047FF4: .4byte gBattlerPositions _08047FF8: .4byte gUnknown_82602F8 _08047FFC: .4byte gUnknown_82603C4 _08048000: .4byte 0x06010000 _08048004: .4byte 0x04000010 - thumb_func_end CreateBankHealthboxSprites + thumb_func_end CreateBattlerHealthboxSprites thumb_func_start CreateSafariPlayerHealthboxSprites CreateSafariPlayerHealthboxSprites: @ 8048008 @@ -808,7 +808,7 @@ SetBattleBarStruct: @ 8048150 ldr r7, [sp, 0x14] lsls r0, 24 lsrs r0, 24 - ldr r6, _08048180 @ =gUnknown_2024018 + ldr r6, _08048180 @ =gBattleSpritesDataPtr ldr r4, [r6] ldr r5, [r4, 0xC] lsls r4, r0, 2 @@ -828,7 +828,7 @@ SetBattleBarStruct: @ 8048150 pop {r0} bx r0 .align 2, 0 -_08048180: .4byte gUnknown_2024018 +_08048180: .4byte gBattleSpritesDataPtr _08048184: .4byte 0xffff8000 thumb_func_end SetBattleBarStruct @@ -970,10 +970,10 @@ DestoryHealthboxSprite: @ 8048248 _08048284: .4byte gSprites thumb_func_end DestoryHealthboxSprite - thumb_func_start nullsub_21 -nullsub_21: @ 8048288 + thumb_func_start DummyBattleInterfaceFunc +DummyBattleInterfaceFunc: @ 8048288 bx lr - thumb_func_end nullsub_21 + thumb_func_end DummyBattleInterfaceFunc thumb_func_start UpdateOamPriorityInAllHealthboxes UpdateOamPriorityInAllHealthboxes: @ 804828C @@ -996,7 +996,7 @@ UpdateOamPriorityInAllHealthboxes: @ 804828C lsls r5, r0, 2 movs r7, 0xD negs r7, r7 - ldr r2, _08048318 @ =gUnknown_3004FF0 + ldr r2, _08048318 @ =gHealthboxSpriteIds mov r9, r2 _080482B6: mov r1, r9 @@ -1048,17 +1048,17 @@ _08048304: .align 2, 0 _08048310: .4byte gBattlersCount _08048314: .4byte gSprites -_08048318: .4byte gUnknown_3004FF0 +_08048318: .4byte gHealthboxSpriteIds thumb_func_end UpdateOamPriorityInAllHealthboxes - thumb_func_start SetBankHealthboxSpritePos -SetBankHealthboxSpritePos: @ 804831C + thumb_func_start InitBattlerHealthboxCoords +InitBattlerHealthboxCoords: @ 804831C push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 movs r5, 0 movs r4, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08048348 @@ -1108,7 +1108,7 @@ _0804837C: movs r5, 0x20 movs r4, 0x2C _08048380: - ldr r0, _08048394 @ =gUnknown_3004FF0 + ldr r0, _08048394 @ =gHealthboxSpriteIds adds r0, r6, r0 ldrb r0, [r0] adds r1, r5, 0 @@ -1118,8 +1118,8 @@ _08048380: pop {r0} bx r0 .align 2, 0 -_08048394: .4byte gUnknown_3004FF0 - thumb_func_end SetBankHealthboxSpritePos +_08048394: .4byte gHealthboxSpriteIds + thumb_func_end InitBattlerHealthboxCoords thumb_func_start UpdateLvlInHealthbox UpdateLvlInHealthbox: @ 8048398 @@ -1169,7 +1169,7 @@ UpdateLvlInHealthbox: @ 8048398 lsls r0, 24 cmp r0, 0 bne _08048420 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 ldr r2, _08048418 @ =0x06010420 adds r1, r4, r2 @@ -1230,7 +1230,7 @@ sub_8048440: @ 8048440 lsls r0, 24 cmp r0, 0 bne _08048514 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08048514 @@ -1315,7 +1315,7 @@ _08048514: ldrh r0, [r7, 0x3A] lsls r0, 24 lsrs r6, r0, 24 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1457,7 +1457,7 @@ sub_8048618: @ 8048618 lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r0, _08048700 @ =gUnknown_2024018 + ldr r0, _08048700 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] mov r3, r10 @@ -1541,7 +1541,7 @@ _080486C6: .align 2, 0 _080486F8: .4byte gUnknown_8260542 _080486FC: .4byte gSprites -_08048700: .4byte gUnknown_2024018 +_08048700: .4byte gBattleSpritesDataPtr _08048704: .4byte gUnknown_8260540 _08048708: .4byte gMonSpritesGfxPtr _0804870C: .4byte 0x06010000 @@ -1966,7 +1966,7 @@ _08048A66: ldr r2, _08048B80 @ =gBattlerPartyIndexes mov r8, r2 _08048A6E: - ldr r0, _08048B84 @ =gUnknown_3004FF0 + ldr r0, _08048B84 @ =gHealthboxSpriteIds mov r1, r9 adds r6, r1, r0 ldrb r1, [r6] @@ -1993,7 +1993,7 @@ _08048A8C: bne _08048AA2 b _08048CE0 _08048AA2: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08048ABA @@ -2004,7 +2004,7 @@ _08048AA2: bne _08048ABA b _08048CE0 _08048ABA: - ldr r5, _08048B8C @ =gUnknown_2024018 + ldr r5, _08048B8C @ =gBattleSpritesDataPtr ldr r0, [r5] ldr r3, [r0] mov r0, r9 @@ -2036,7 +2036,7 @@ _08048ABA: lsls r0, 24 cmp r0, 0 bne _08048BE8 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08048B08 @@ -2099,9 +2099,9 @@ _08048B16: _08048B78: .4byte gBattlersCount _08048B7C: .4byte gSprites _08048B80: .4byte gBattlerPartyIndexes -_08048B84: .4byte gUnknown_3004FF0 +_08048B84: .4byte gHealthboxSpriteIds _08048B88: .4byte SpriteCallbackDummy -_08048B8C: .4byte gUnknown_2024018 +_08048B8C: .4byte gBattleSpritesDataPtr _08048B90: .4byte gBattleTypeFlags _08048B94: .4byte 0x06010000 _08048B98: .4byte 0x05000040 @@ -2242,7 +2242,7 @@ _08048C94: movs r2, 0x4 bl UpdateHealthboxAttribute _08048CCA: - ldr r0, _08048D0C @ =gUnknown_3004FF0 + ldr r0, _08048D0C @ =gHealthboxSpriteIds add r0, r9 ldrb r1, [r0] lsls r0, r1, 4 @@ -2275,7 +2275,7 @@ _08048CF2: .align 2, 0 _08048D04: .4byte gEnemyParty _08048D08: .4byte gBattleTypeFlags -_08048D0C: .4byte gUnknown_3004FF0 +_08048D0C: .4byte gHealthboxSpriteIds _08048D10: .4byte gBattlersCount thumb_func_end sub_8048A4C @@ -2323,7 +2323,7 @@ _08048D64: movs r7, 0x1 cmp r4, 0 beq _08048D74 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08048D7A @@ -3668,7 +3668,7 @@ _08049782: adds r1, r6, 0 movs r2, 0x6 bl sub_804A6E8 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 ldr r2, _080497F0 @ =0x06010400 adds r5, r4, r2 @@ -3877,7 +3877,7 @@ UpdateStatusIconInHealthbox: @ 8049934 movs r1, 0x37 bl GetMonData adds r4, r0, 0 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 movs r3, 0x12 mov r8, r3 @@ -4009,7 +4009,7 @@ _08049A7E: adds r4, 0x1 cmp r4, 0x2 ble _08049A7E - ldr r0, _08049AEC @ =gUnknown_2024018 + ldr r0, _08049AEC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] adds r0, r7, r0 @@ -4042,7 +4042,7 @@ _08049AD4: _08049AE0: .4byte gSprites _08049AE4: .4byte 0x06010000 _08049AE8: .4byte 0x04000008 -_08049AEC: .4byte gUnknown_2024018 +_08049AEC: .4byte gBattleSpritesDataPtr _08049AF0: .4byte 0x04000010 _08049AF4: mov r1, r9 @@ -4084,7 +4084,7 @@ _08049AF4: ldr r2, _08049BD8 @ =0x04000018 adds r0, r6, 0 bl CpuSet - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4096,7 +4096,7 @@ _08049AF4: cmp r0, 0x1 bne _08049BAE _08049B62: - ldr r0, _08049BDC @ =gUnknown_2024018 + ldr r0, _08049BDC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r7, 2 @@ -4149,7 +4149,7 @@ _08049BCC: .4byte gPlttBufferUnfaded + 0x200 _08049BD0: .4byte 0x05000200 _08049BD4: .4byte 0x06010000 _08049BD8: .4byte 0x04000018 -_08049BDC: .4byte gUnknown_2024018 +_08049BDC: .4byte gBattleSpritesDataPtr _08049BE0: .4byte 0x04000008 thumb_func_end UpdateStatusIconInHealthbox @@ -4381,7 +4381,7 @@ UpdateHealthboxAttribute: @ 8049D98 mov r9, r0 cmp r7, 0 bne _08049DD4 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08049DD4 @@ -4470,7 +4470,7 @@ _08049E4C: movs r3, 0 bl sub_8049FD8 _08049E80: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -4652,7 +4652,7 @@ sub_8049FD8: @ 8049FD8 mov r9, r2 cmp r2, 0 bne _0804A024 - ldr r0, _0804A020 @ =gUnknown_2024018 + ldr r0, _0804A020 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] mov r1, r8 @@ -4673,9 +4673,9 @@ sub_8049FD8: @ 8049FD8 adds r7, r5, 0 b _0804A080 .align 2, 0 -_0804A020: .4byte gUnknown_2024018 +_0804A020: .4byte gBattleSpritesDataPtr _0804A024: - ldr r2, _0804A0D0 @ =gUnknown_2024018 + ldr r2, _0804A0D0 @ =gBattleSpritesDataPtr mov r10, r2 ldr r0, [r2] ldr r2, [r0, 0xC] @@ -4726,7 +4726,7 @@ _0804A080: beq _0804A09C cmp r2, 0 bne _0804A0A4 - ldr r0, _0804A0D0 @ =gUnknown_2024018 + ldr r0, _0804A0D0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0] adds r0, r7, r0 @@ -4744,7 +4744,7 @@ _0804A0A4: negs r0, r0 cmp r4, r0 bne _0804A0BE - ldr r0, _0804A0D0 @ =gUnknown_2024018 + ldr r0, _0804A0D0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0xC] mov r2, r8 @@ -4764,7 +4764,7 @@ _0804A0BE: pop {r1} bx r1 .align 2, 0 -_0804A0D0: .4byte gUnknown_2024018 +_0804A0D0: .4byte gBattleSpritesDataPtr thumb_func_end sub_8049FD8 thumb_func_start sub_804A0D4 @@ -4784,7 +4784,7 @@ sub_804A0D4: @ 804A0D4 beq _0804A1D8 b _0804A2D6 _0804A0F0: - ldr r0, _0804A184 @ =gUnknown_2024018 + ldr r0, _0804A184 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] lsls r5, r6, 2 @@ -4818,7 +4818,7 @@ _0804A12C: ldr r0, _0804A188 @ =gSprites mov r8, r0 _0804A132: - ldr r0, _0804A184 @ =gUnknown_2024018 + ldr r0, _0804A184 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0, 0xC] adds r0, r7, r6 @@ -4858,7 +4858,7 @@ _0804A132: bl CpuSet b _0804A1C2 .align 2, 0 -_0804A184: .4byte gUnknown_2024018 +_0804A184: .4byte gBattleSpritesDataPtr _0804A188: .4byte gSprites _0804A18C: .4byte 0x06010000 _0804A190: .4byte 0x04000008 @@ -4895,7 +4895,7 @@ _0804A1C2: _0804A1D0: .4byte 0x06010040 _0804A1D4: .4byte 0x04000008 _0804A1D8: - ldr r0, _0804A27C @ =gUnknown_2024018 + ldr r0, _0804A27C @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0xC] lsls r5, r6, 2 @@ -4955,7 +4955,7 @@ _0804A23A: ldrb r1, [r1] lsls r1, 5 adds r0, r1 - ldr r1, _0804A27C @ =gUnknown_2024018 + ldr r1, _0804A27C @ =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1, 0xC] adds r1, r4, r1 @@ -4977,7 +4977,7 @@ _0804A23A: bl CpuSet b _0804A2CC .align 2, 0 -_0804A27C: .4byte gUnknown_2024018 +_0804A27C: .4byte gBattleSpritesDataPtr _0804A280: .4byte gBattlerPartyIndexes _0804A284: .4byte gPlayerParty _0804A288: .4byte gSprites @@ -4992,7 +4992,7 @@ _0804A294: ldrb r1, [r1] lsls r1, 5 adds r0, r1 - ldr r1, _0804A2E4 @ =gUnknown_2024018 + ldr r1, _0804A2E4 @ =gBattleSpritesDataPtr ldr r1, [r1] ldr r1, [r1, 0xC] adds r1, r4, r1 @@ -5025,7 +5025,7 @@ _0804A2D6: pop {r0} bx r0 .align 2, 0 -_0804A2E4: .4byte gUnknown_2024018 +_0804A2E4: .4byte gBattleSpritesDataPtr _0804A2E8: .4byte 0x06010b80 _0804A2EC: .4byte 0x04000008 thumb_func_end sub_804A0D4 diff --git a/asm/bug.s b/asm/bug.s index 1bdc4095c..27c66e10f 100644 --- a/asm/bug.s +++ b/asm/bug.s @@ -72,7 +72,7 @@ _080B4008: strh r0, [r6, 0x2E] ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -80,7 +80,7 @@ _080B4008: strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] @@ -156,13 +156,13 @@ _080B40BC: strh r0, [r6, 0x2E] ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x36] @@ -214,13 +214,13 @@ _080B4144: ldr r4, _080B4188 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -556,7 +556,7 @@ _080B43F6: ldr r5, _080B4488 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 ldr r6, _080B4484 @ =gBattleAnimArgs @@ -567,7 +567,7 @@ _080B43F6: lsrs r4, 16 ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -643,7 +643,7 @@ _080B44B4: ldr r5, _080B4508 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -651,7 +651,7 @@ _080B44B4: strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x6] @@ -801,13 +801,13 @@ _080B45F4: _080B45F6: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x12 diff --git a/asm/dark.s b/asm/dark.s index ad0ff597a..cbc4060c3 100644 --- a/asm/dark.s +++ b/asm/dark.s @@ -256,26 +256,26 @@ sub_80B7ACC: @ 80B7ACC ldr r6, _080B7B38 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x30] ldr r5, _080B7B3C @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x34] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -634,7 +634,7 @@ sub_80B7DA4: @ 80B7DA4 ldr r4, _080B7E0C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x1F @@ -653,7 +653,7 @@ sub_80B7DA4: @ 80B7DA4 strh r1, [r5, 0x22] ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -1087,7 +1087,7 @@ _080B817C: ldr r4, _080B81C8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x1F @@ -1104,7 +1104,7 @@ _080B817C: strh r1, [r5, 0x22] ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r1, r0, 0x4 @@ -1836,7 +1836,7 @@ sub_80B86EC: @ 80B86EC movs r2, 0x1 bl SetAnimBgAttribute _080B8750: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080B87CA diff --git a/asm/dragon.s b/asm/dragon.s index 66e76017a..956e8b1e0 100644 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -12,13 +12,13 @@ sub_80B725C: @ 80B725C ldr r4, _080B72A4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -90,13 +90,13 @@ sub_80B72F8: @ 80B72F8 ldr r4, _080B7350 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -185,13 +185,13 @@ _080B73C8: _080B73CA: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -249,14 +249,14 @@ sub_80B7448: @ 80B7448 ldr r4, _080B749C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r5, 0 strh r0, [r6, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x22] @@ -726,14 +726,14 @@ sub_80B77E4: @ 80B77E4 mov r8, r1 ldrb r0, [r1] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] mov r2, r8 ldrb r0, [r2] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r3, [r5, 0x8] diff --git a/asm/electric.s b/asm/electric.s index ed9e1da1f..7b100e73e 100644 --- a/asm/electric.s +++ b/asm/electric.s @@ -123,13 +123,13 @@ sub_80ADCB8: @ 80ADCB8 ldr r4, _080ADCFC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -260,7 +260,7 @@ _080ADDC8: bne _080ADDF0 adds r0, r4, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] @@ -273,14 +273,14 @@ _080ADDEC: .4byte gBattleAnimArgs _080ADDF0: adds r0, r4, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] adds r0, r4, 0 movs r1, 0x3 _080ADE02: - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -379,7 +379,7 @@ sub_80ADEB0: @ 80ADEB0 ldr r6, _080ADF28 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -387,7 +387,7 @@ sub_80ADEB0: @ 80ADEB0 strh r0, [r4, 0x34] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -555,7 +555,7 @@ _080AE024: ldr r5, _080AE060 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080AE064 @ =gBattleAnimArgs lsrs r0, 24 @@ -564,7 +564,7 @@ _080AE024: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -626,7 +626,7 @@ _080AE0AA: _080AE0B2: adds r0, r6, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080AE11C @ =gBattleAnimArgs lsrs r0, 24 @@ -635,7 +635,7 @@ _080AE0B2: strh r0, [r5, 0x20] adds r0, r6, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -811,7 +811,7 @@ sub_80AE220: @ 80AE220 ldr r6, _080AE268 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord ldr r1, _080AE26C @ =gTasks lsls r4, r5, 2 adds r4, r5 @@ -825,7 +825,7 @@ sub_80AE220: @ 80AE220 strh r0, [r4, 0x8] ldrb r0, [r6] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r5, 0x2] @@ -1233,13 +1233,13 @@ _080AE56C: _080AE56E: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x26] @@ -1466,13 +1466,13 @@ _080AE738: _080AE73A: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1509,13 +1509,13 @@ _080AE790: _080AE792: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1548,13 +1548,13 @@ sub_80AE7DC: @ 80AE7DC ldr r4, _080AE834 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1680,7 +1680,7 @@ _080AE8D4: ldr r4, _080AE908 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] @@ -1897,13 +1897,13 @@ _080AEA88: .4byte 0x0000fff0 _080AEA8C: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0xE] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] @@ -1923,13 +1923,13 @@ _080AEAB4: ldr r4, _080AEAE8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x12] ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r2, 0xA @@ -2175,13 +2175,13 @@ _080AEC92: ldr r4, _080AECC0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2245,13 +2245,13 @@ _080AED20: ldr r4, _080AEDA4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x16] @@ -2260,7 +2260,7 @@ _080AED20: ldr r0, _080AEDA8 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] @@ -2603,7 +2603,7 @@ _080AEFCE: ldr r0, _080AF018 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -2625,7 +2625,7 @@ _080AEFF8: ldr r4, _080AF018 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] diff --git a/asm/fighting.s b/asm/fighting.s index 78b60aac5..240e2bbb0 100644 --- a/asm/fighting.s +++ b/asm/fighting.s @@ -176,13 +176,13 @@ _080B09E8: bl StartSpriteAnim mov r0, r8 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] mov r0, r8 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -242,7 +242,7 @@ _080B0A74: negs r0, r0 lsrs r4, r0, 16 _080B0A86: - ldr r0, _080B0B14 @ =gUnknown_2023BD6 + ldr r0, _080B0B14 @ =gBattlerPositions add r0, r8 ldrb r1, [r0] adds r0, r7, 0 @@ -313,7 +313,7 @@ _080B0B00: bx r0 .align 2, 0 _080B0B10: .4byte gBattleAnimTarget -_080B0B14: .4byte gUnknown_2023BD6 +_080B0B14: .4byte gBattlerPositions _080B0B18: .4byte 0xfff00000 _080B0B1C: .4byte gUnknown_83E7C08 _080B0B20: .4byte gSprites @@ -644,13 +644,13 @@ sub_80B0D7C: @ 80B0D7C ldr r4, _080B0DC8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -778,13 +778,13 @@ _080B0E9C: _080B0E9E: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -896,7 +896,7 @@ sub_80B0F68: @ 80B0F68 ldr r4, _080B0F90 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r6, 0x4] @@ -909,7 +909,7 @@ _080B0F94: ldr r4, _080B0FF0 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] @@ -918,7 +918,7 @@ _080B0FA6: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] @@ -1040,13 +1040,13 @@ sub_80B107C: @ 80B107C ldr r4, _080B10CC @ =sBattler_AI ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1125,7 +1125,7 @@ sub_80B111C: @ 80B111C lsls r0, 24 lsrs r0, 24 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -1135,7 +1135,7 @@ sub_80B111C: @ 80B111C lsls r0, 24 lsrs r0, 24 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -1245,13 +1245,13 @@ _080B1236: ldr r4, _080B1298 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -1259,14 +1259,14 @@ _080B1236: mov r8, r2 ldrb r0, [r2] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 mov r1, r8 ldrb r0, [r1] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 subs r4, r6 strh r4, [r7, 0x2E] @@ -1344,13 +1344,13 @@ sub_80B12E8: @ 80B12E8 ldr r4, _080B1320 @ =sBattler_AI ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1418,7 +1418,7 @@ _080B138C: strh r0, [r5, 0x30] adds r0, r4, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -1426,7 +1426,7 @@ _080B138C: strh r0, [r5, 0x34] adds r0, r4, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -1473,13 +1473,13 @@ sub_80B13F8: @ 80B13F8 ldr r4, _080B1474 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] diff --git a/asm/fire.s b/asm/fire.s index ecc1ce493..0e014a48d 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -484,7 +484,7 @@ sub_80ACC88: @ 80ACC88 ldr r4, _080ACCD8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -492,7 +492,7 @@ sub_80ACC88: @ 80ACC88 strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -522,13 +522,13 @@ sub_80ACCE0: @ 80ACCE0 ldr r5, _080ACD20 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x22] @@ -1758,7 +1758,7 @@ _080AD612: ldr r4, _080AD688 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -1766,7 +1766,7 @@ _080AD612: strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] diff --git a/asm/flying.s b/asm/flying.s index 697138bd8..23fe4371d 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -228,7 +228,7 @@ _080B1A3C: ldr r5, _080B1A90 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -238,7 +238,7 @@ _080B1A3C: strh r0, [r6, 0x34] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] @@ -316,13 +316,13 @@ _080B1AE4: _080B1AFC: ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r2, _080B1B58 @ =gBattleAnimArgs ldrh r1, [r2] @@ -342,13 +342,13 @@ _080B1AFC: ldr r4, _080B1B5C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -504,7 +504,7 @@ _080B1C72: ldr r4, _080B1CB8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -512,7 +512,7 @@ _080B1C72: strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -672,7 +672,7 @@ _080B1DB2: _080B1DC8: adds r0, r6, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080B1E60 @ =gBattleAnimArgs lsrs r0, 24 @@ -681,7 +681,7 @@ _080B1DC8: strh r0, [r7, 0x20] adds r0, r6, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldrh r1, [r4, 0x2] lsrs r0, 24 @@ -1627,13 +1627,13 @@ sub_80B24C0: @ 80B24C0 ldr r5, _080B250C @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -1663,7 +1663,7 @@ sub_80B2514: @ 80B2514 lsls r0, 24 cmp r0, 0 bne _080B25C4 - ldr r0, _080B2558 @ =gUnknown_2023BD6 + ldr r0, _080B2558 @ =gBattlerPositions ldr r1, _080B255C @ =gBattleAnimTarget ldrb r2, [r1] adds r0, r2, r0 @@ -1674,7 +1674,7 @@ sub_80B2514: @ 80B2514 beq _080B2560 adds r0, r2, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x6] @@ -1682,12 +1682,12 @@ sub_80B2514: @ 80B2514 b _080B256E .align 2, 0 _080B2554: .4byte gBattleAnimArgs -_080B2558: .4byte gUnknown_2023BD6 +_080B2558: .4byte gBattlerPositions _080B255C: .4byte gBattleAnimTarget _080B2560: adds r0, r2, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x28 @@ -1737,7 +1737,7 @@ _080B25C4: ldr r0, _080B267C @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x6] @@ -2127,13 +2127,13 @@ sub_80B2868: @ 80B2868 ldr r5, _080B2910 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 @@ -2237,7 +2237,7 @@ _080B2990: ldr r0, _080B29A8 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -2454,13 +2454,13 @@ _080B2B20: _080B2B22: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2614,13 +2614,13 @@ _080B2C54: _080B2C56: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -2773,14 +2773,14 @@ sub_80B2D64: @ 80B2D64 ldr r6, _080B2E18 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r1, r8 strh r0, [r1, 0x20] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 diff --git a/asm/ghost.s b/asm/ghost.s index 7ff96f41a..b0933f132 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -19,7 +19,7 @@ sub_80B5268: @ 80B5268 ldr r5, _080B52C8 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -27,7 +27,7 @@ sub_80B5268: @ 80B5268 strh r0, [r4, 0x34] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -518,7 +518,7 @@ sub_80B563C: @ 80B563C mov r8, r0 ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r1, 0 @@ -527,7 +527,7 @@ sub_80B563C: @ 80B563C mov r1, r8 ldrb r0, [r1] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -637,13 +637,13 @@ _080B572E: ldr r4, _080B5794 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x30] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -700,13 +700,13 @@ _080B5798: ldr r4, _080B57E8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1214,7 +1214,7 @@ _080B5B68: adds r2, r0 lsls r2, 2 adds r2, r4 - ldr r0, _080B5C18 @ =gUnknown_2024018 + ldr r0, _080B5C18 @ =gBattleSpritesDataPtr ldr r1, [r0] ldr r0, _080B5C1C @ =gBattleAnimTarget ldrb r0, [r0] @@ -1260,7 +1260,7 @@ _080B5B68: b _080B5C24 .align 2, 0 _080B5C14: .4byte gSprites -_080B5C18: .4byte gUnknown_2024018 +_080B5C18: .4byte gBattleSpritesDataPtr _080B5C1C: .4byte gBattleAnimTarget _080B5C20: movs r1, 0x80 @@ -1614,12 +1614,12 @@ sub_80B5EC0: @ 80B5EC0 ldr r4, _080B5F00 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r2, 0xE0 @@ -1636,12 +1636,12 @@ _080B5F08: ldr r4, _080B5FD0 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r2, 0xE0 @@ -1652,13 +1652,13 @@ _080B5F08: _080B5F2C: ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r10, r0 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r1, 0xE0 @@ -1808,7 +1808,7 @@ sub_80B6020: @ 80B6020 ldr r4, _080B6178 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] @@ -1860,7 +1860,7 @@ _080B6092: beq _080B615E adds r0, r4, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r10, r0 @@ -2872,7 +2872,7 @@ sub_80B68C8: @ 80B68C8 ldr r5, _080B6964 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1A] diff --git a/asm/ground.s b/asm/ground.s index 8bfa9d914..d9cc47ed2 100644 --- a/asm/ground.s +++ b/asm/ground.s @@ -12,13 +12,13 @@ sub_80B8B6C: @ 80B8B6C ldr r5, _080B8BC4 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -27,13 +27,13 @@ sub_80B8B6C: @ 80B8B6C ldr r5, _080B8BC8 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] @@ -77,13 +77,13 @@ sub_80B8BD4: @ 80B8BD4 ldr r4, _080B8C30 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -141,7 +141,7 @@ _080B8C74: ldr r5, _080B8CBC @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x4] @@ -149,7 +149,7 @@ _080B8C74: strh r0, [r6, 0x32] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x6] @@ -262,7 +262,7 @@ sub_80B8D58: @ 80B8D58 ldr r4, _080B8DC4 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r2, [r6, 0x2] @@ -270,7 +270,7 @@ sub_80B8D58: @ 80B8D58 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r3, [r6, 0x4] @@ -1080,7 +1080,7 @@ _080B9396: _080B93B2: adds r0, r4, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 @@ -1150,7 +1150,7 @@ _080B943A: ldrb r5, [r0] adds r0, r5, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r2, _080B949C @ =0x0000fff0 @@ -1698,7 +1698,7 @@ _080B9832: adds r4, r0 adds r0, r5, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r1, 0x20 @@ -1709,7 +1709,7 @@ _080B9832: strh r1, [r4, 0xA] adds r0, r5, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r1, 0x40 diff --git a/asm/ice.s b/asm/ice.s index 4cf6c714b..ddc0370f7 100644 --- a/asm/ice.s +++ b/asm/ice.s @@ -123,26 +123,26 @@ sub_80AF108: @ 80AF108 ldr r4, _080AF218 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r9, r0 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r8, r0 ldr r4, _080AF21C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r3, r0, 24 ldrb r0, [r4] movs r1, 0x3 str r3, [sp] - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080AF220 @ =gBattleAnimArgs @@ -387,7 +387,7 @@ sub_80AF330: @ 80AF330 ldr r0, _080AF364 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -417,7 +417,7 @@ _080AF37A: ldr r0, _080AF3AC @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r1, _080AF3A8 @ =gBattleAnimArgs lsrs r0, 24 @@ -553,13 +553,13 @@ sub_80AF468: @ 80AF468 ldr r4, _080AF4B4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x6] @@ -868,13 +868,13 @@ sub_80AF6D8: @ 80AF6D8 ldr r4, _080AF720 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -1243,7 +1243,7 @@ _080AF9D4: ldrsh r0, [r0, r1] cmp r0, 0 beq _080AF9EC - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _080AF9F8 @@ -1663,13 +1663,13 @@ sub_80AFD4C: @ 80AFD4C ldr r5, _080AFD78 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -1970,12 +1970,12 @@ sub_80AFFD4: @ 80AFFD4 mov r8, r0 ldrb r0, [r0] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 ldr r7, _080B00C4 @ =gBattleAnimTarget ldrb r0, [r7] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r4, 24 lsls r0, 24 cmp r4, r0 @@ -1984,7 +1984,7 @@ sub_80AFFD4: @ 80AFFD4 lsls r0, 8 strh r0, [r5, 0x3C] _080B0008: - ldr r3, _080B00C8 @ =gUnknown_2023BD6 + ldr r3, _080B00C8 @ =gBattlerPositions ldrb r0, [r7] adds r0, r3 ldrb r1, [r0] @@ -2036,13 +2036,13 @@ _080B0068: ldr r4, _080B00C0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2058,7 +2058,7 @@ _080B0068: ldr r4, _080B00C4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] @@ -2075,7 +2075,7 @@ _080B0068: _080B00BC: .4byte gBattleAnimArgs _080B00C0: .4byte gBattleAnimAttacker _080B00C4: .4byte gBattleAnimTarget -_080B00C8: .4byte gUnknown_2023BD6 +_080B00C8: .4byte gBattlerPositions _080B00CC: .4byte gSprites _080B00D0: ldrh r0, [r6, 0x2] @@ -2085,7 +2085,7 @@ _080B00D0: ldr r4, _080B0140 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] @@ -2098,7 +2098,7 @@ _080B00D0: ldrb r0, [r4] movs r1, 0x1 _080B00F8: - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r6, [r6, 0x8] @@ -2197,7 +2197,7 @@ _080B01AA: ldr r6, _080B01F8 @ =gBattleAnimTarget ldrb r0, [r6] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] @@ -2217,7 +2217,7 @@ _080B01AA: lsls r0, 24 cmp r0, 0 bne _080B0200 - ldr r1, _080B01FC @ =gUnknown_2023BD6 + ldr r1, _080B01FC @ =gBattlerPositions ldrb r0, [r6] adds r0, r1 ldrb r1, [r0] @@ -2230,7 +2230,7 @@ _080B01AA: b _080B0202 .align 2, 0 _080B01F8: .4byte gBattleAnimTarget -_080B01FC: .4byte gUnknown_2023BD6 +_080B01FC: .4byte gBattlerPositions _080B0200: strh r5, [r4, 0x38] _080B0202: @@ -2365,7 +2365,7 @@ _080B02CE: lsls r0, 24 cmp r0, 0 bne _080B0328 - ldr r1, _080B0320 @ =gUnknown_2023BD6 + ldr r1, _080B0320 @ =gBattlerPositions ldr r0, _080B0324 @ =gBattleAnimTarget ldrb r0, [r0] adds r0, r1 @@ -2378,7 +2378,7 @@ _080B02CE: lsls r0, 1 b _080B032A .align 2, 0 -_080B0320: .4byte gUnknown_2023BD6 +_080B0320: .4byte gBattlerPositions _080B0324: .4byte gBattleAnimTarget _080B0328: ldr r0, _080B0340 @ =0x0000fff0 @@ -2591,12 +2591,12 @@ sub_80B0458: @ 80B0458 str r0, [sp, 0x4] adds r0, r5, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r7, r0, 24 adds r0, r5, 0 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 mov r1, r8 @@ -2921,7 +2921,7 @@ _080B0742: ldr r4, _080B0788 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x4] @@ -2929,7 +2929,7 @@ _080B0742: strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r6, 0x6] diff --git a/asm/normal.s b/asm/normal.s index 4a1e86a4e..75c4dcf6e 100644 --- a/asm/normal.s +++ b/asm/normal.s @@ -1185,7 +1185,7 @@ _080BA1D0: cmp r0, 0 beq _080BA200 ldr r2, _080BA274 @ =gSprites - ldr r0, _080BA278 @ =gUnknown_3004FF0 + ldr r0, _080BA278 @ =gHealthboxSpriteIds add r0, r9 ldrb r1, [r0] lsls r0, r1, 4 @@ -1258,7 +1258,7 @@ _080BA268: .4byte gBattleAnimAttacker _080BA26C: .4byte gBattleAnimTarget _080BA270: .4byte 0x0000ffff _080BA274: .4byte gSprites -_080BA278: .4byte gUnknown_3004FF0 +_080BA278: .4byte gHealthboxSpriteIds thumb_func_end sub_80BA16C thumb_func_start sub_80BA27C diff --git a/asm/party_menu.s b/asm/party_menu.s index ace2e3554..4fac6a6c5 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -13549,7 +13549,7 @@ sub_8125554: @ 8125554 bl sub_81202F8 movs r0, 0x2 bl ScheduleBgCopyTilemapToVram - bl sub_803539C + bl HandleBattleLowHpMusicChange ldr r1, _081255B4 @ =gTasks lsls r0, r5, 2 adds r0, r5 @@ -17909,7 +17909,7 @@ _081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_start sub_81278B4 sub_81278B4: @ 81278B4 push {lr} - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _081278C4 @@ -18425,7 +18425,7 @@ _08127CF4: strb r0, [r6, 0x2] b _08127D9C _08127D02: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08127D40 @@ -18588,7 +18588,7 @@ _08127E26: strb r0, [r5, 0x2] b _08127EB6 _08127E34: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 bne _08127E6C diff --git a/asm/poison.s b/asm/poison.s index 1a244e136..111ad544a 100644 --- a/asm/poison.s +++ b/asm/poison.s @@ -26,13 +26,13 @@ _080B1636: ldr r4, _080B1678 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] diff --git a/asm/pokeball.s b/asm/pokeball.s index 85bfcb620..ed9586d1d 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -17,7 +17,7 @@ DoPokeballSendOutAnimation: @ 804A938 ldr r1, _0804A98C @ =gUnknown_2024005 movs r0, 0x1 strb r0, [r1] - ldr r0, _0804A990 @ =gUnknown_2024018 + ldr r0, _0804A990 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r6, _0804A994 @ =gActiveBattler ldrb r1, [r6] @@ -50,7 +50,7 @@ DoPokeballSendOutAnimation: @ 804A938 bx r1 .align 2, 0 _0804A98C: .4byte gUnknown_2024005 -_0804A990: .4byte gUnknown_2024018 +_0804A990: .4byte gBattleSpritesDataPtr _0804A994: .4byte gActiveBattler _0804A998: .4byte sub_804A9A0 _0804A99C: .4byte gTasks @@ -220,13 +220,13 @@ _0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1 _0804AAF8: adds r0, r6, 0 movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] adds r0, r6, 0 movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x18 @@ -276,13 +276,13 @@ _0804AB6C: strh r0, [r4, 0x2E] ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 subs r0, 0x10 @@ -1265,11 +1265,11 @@ _0804B324: cmp r5, r0 bne _0804B3A6 _0804B34E: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0804B3A6 - ldr r0, _0804B390 @ =gUnknown_2024018 + ldr r0, _0804B390 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1293,7 +1293,7 @@ _0804B34E: .align 2, 0 _0804B388: .4byte gBattlerPartyIndexes _0804B38C: .4byte gPlayerParty -_0804B390: .4byte gUnknown_2024018 +_0804B390: .4byte gBattleSpritesDataPtr _0804B394: .4byte gBattleTypeFlags _0804B398: .4byte gMPlayInfo_BGM _0804B39C: @@ -1302,11 +1302,11 @@ _0804B39C: movs r2, 0x80 bl m4aMPlayVolumeControl _0804B3A6: - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0804B3C0 - ldr r0, _0804B3CC @ =gUnknown_2024018 + ldr r0, _0804B3CC @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1320,7 +1320,7 @@ _0804B3C0: .align 2, 0 _0804B3C4: .4byte gMPlayInfo_BGM _0804B3C8: .4byte 0x0000ffff -_0804B3CC: .4byte gUnknown_2024018 +_0804B3CC: .4byte gBattleSpritesDataPtr _0804B3D0: movs r0, 0 bl GetBattlerAtPosition @@ -1521,7 +1521,7 @@ _0804B52C: strh r1, [r0, 0x26] ldr r0, _0804B5C0 @ =gUnknown_2024005 strb r2, [r0] - ldr r4, _0804B5C4 @ =gUnknown_2024018 + ldr r4, _0804B5C4 @ =gBattleSpritesDataPtr ldr r0, [r4] ldr r0, [r0, 0x4] lsls r1, r6, 1 @@ -1573,7 +1573,7 @@ _0804B5B4: .4byte 0xfffffee0 _0804B5B8: .4byte gSprites _0804B5BC: .4byte gBattlerSpriteIds _0804B5C0: .4byte gUnknown_2024005 -_0804B5C4: .4byte gUnknown_2024018 +_0804B5C4: .4byte gBattleSpritesDataPtr thumb_func_end HandleBallAnimEnd thumb_func_start sub_804B5C8 @@ -1639,7 +1639,7 @@ _0804B600: ands r0, r1 cmp r0, 0 beq _0804B666 - ldr r0, _0804B680 @ =gUnknown_2024018 + ldr r0, _0804B680 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x4] lsls r1, r7, 1 @@ -1661,7 +1661,7 @@ _0804B670: .4byte gSprites _0804B674: .4byte gBattlerSpriteIds _0804B678: .4byte gMain _0804B67C: .4byte 0x00000439 -_0804B680: .4byte gUnknown_2024018 +_0804B680: .4byte gBattleSpritesDataPtr thumb_func_end sub_804B5C8 thumb_func_start SpriteCB_PlayerMonSendOut_1 @@ -1674,7 +1674,7 @@ SpriteCB_PlayerMonSendOut_1: @ 804B684 lsls r0, 24 lsrs r0, 24 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] @@ -1682,7 +1682,7 @@ SpriteCB_PlayerMonSendOut_1: @ 804B684 lsls r0, 24 lsrs r0, 24 movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, 0x18 @@ -1843,11 +1843,11 @@ _0804B7C8: ldrb r0, [r5, 0x6] strh r0, [r5, 0x3A] strh r1, [r5, 0x2E] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0804B828 - ldr r0, _0804B820 @ =gUnknown_2024018 + ldr r0, _0804B820 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1866,7 +1866,7 @@ _0804B7C8: ldr r0, _0804B824 @ =SpriteCB_ReleaseMon2FromBall b _0804B82A .align 2, 0 -_0804B820: .4byte gUnknown_2024018 +_0804B820: .4byte gBattleSpritesDataPtr _0804B824: .4byte SpriteCB_ReleaseMon2FromBall _0804B828: ldr r0, _0804B840 @ =sub_804B268 @@ -1920,11 +1920,11 @@ SpriteCB_OpponentMonSendOut: @ 804B868 ble _0804B8BC movs r0, 0 strh r0, [r5, 0x2E] - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _0804B8B8 - ldr r0, _0804B8B0 @ =gUnknown_2024018 + ldr r0, _0804B8B0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r0, [r0, 0x8] ldrb r1, [r0, 0x9] @@ -1943,7 +1943,7 @@ SpriteCB_OpponentMonSendOut: @ 804B868 ldr r0, _0804B8B4 @ =SpriteCB_ReleaseMon2FromBall b _0804B8BA .align 2, 0 -_0804B8B0: .4byte gUnknown_2024018 +_0804B8B0: .4byte gBattleSpritesDataPtr _0804B8B4: .4byte SpriteCB_ReleaseMon2FromBall _0804B8B8: ldr r0, _0804B8C4 @ =sub_804B268 @@ -2594,7 +2594,7 @@ sub_804BD94: @ 804BD94 lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 - ldr r0, _0804BE14 @ =gUnknown_3004FF0 + ldr r0, _0804BE14 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r1, [r0] lsls r0, r1, 4 @@ -2653,7 +2653,7 @@ _0804BE0C: pop {r0} bx r0 .align 2, 0 -_0804BE14: .4byte gUnknown_3004FF0 +_0804BE14: .4byte gHealthboxSpriteIds _0804BE18: .4byte gSprites _0804BE1C: .4byte sub_804BE48 _0804BE20: .4byte sub_804BE24 @@ -2723,7 +2723,7 @@ DoHitAnimHealthboxEffect: @ 804BE70 adds r3, r1, r2 movs r0, 0x1 strh r0, [r3, 0x2E] - ldr r0, _0804BEB0 @ =gUnknown_3004FF0 + ldr r0, _0804BEB0 @ =gHealthboxSpriteIds adds r4, r0 ldrb r0, [r4] strh r0, [r3, 0x30] @@ -2736,7 +2736,7 @@ DoHitAnimHealthboxEffect: @ 804BE70 .align 2, 0 _0804BEA8: .4byte SpriteCB_HitAnimHealthoxEffect _0804BEAC: .4byte gSprites -_0804BEB0: .4byte gUnknown_3004FF0 +_0804BEB0: .4byte gHealthboxSpriteIds thumb_func_end DoHitAnimHealthboxEffect thumb_func_start SpriteCB_HitAnimHealthoxEffect diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index 8fc385744..de3071fd6 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -6896,7 +6896,7 @@ _0814AE2A: ldrh r0, [r7] ldr r1, [r7, 0x4] ldr r2, [r7, 0x8] - bl GetFrontSpritePalFromSpeciesAndPersonality + bl GetMonSpritePalFromSpeciesAndPersonality str r0, [sp, 0x20] add r0, sp, 0x20 ldr r1, [r0, 0x4] diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index a7777c2ca..47097a060 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -16568,7 +16568,7 @@ _08093C4E: adds r1, r4 ldrh r0, [r1] mov r1, r9 - bl GetFrontSpritePalFromSpeciesAndPersonality + bl GetMonSpritePalFromSpeciesAndPersonality ldr r1, [r5] ldr r3, _08093CE8 @ =0x00000cd8 adds r2, r1, r3 diff --git a/asm/psychic.s b/asm/psychic.s index 874a35948..cff45fc8c 100644 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -77,7 +77,7 @@ _080B2F5A: lsls r0, 24 cmp r0, 0 bne _080B2F90 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080B2F90 @@ -112,7 +112,7 @@ _080B2F90: _080B2FA6: ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080B3004 @ =gBattleAnimArgs lsrs r0, 24 @@ -121,7 +121,7 @@ _080B2FA6: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -411,7 +411,7 @@ _080B31EA: lsls r0, 24 cmp r0, 0 bne _080B3232 - bl sub_8075290 + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _080B3232 @@ -484,13 +484,13 @@ sub_80B3278: @ 80B3278 ldr r4, _080B32C0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -573,14 +573,14 @@ sub_80B32F4: @ 80B32F4 _080B333A: ldrb r0, [r6] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r4 strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r7 @@ -888,13 +888,13 @@ sub_80B3584: @ 80B3584 ldr r4, _080B3610 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x24] @@ -1206,13 +1206,13 @@ sub_80B37EC: @ 80B37EC ldr r4, _080B382C @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2053,13 +2053,13 @@ _080B3EA4: ldr r4, _080B3EF8 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 9ec3e3580..483314c54 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -294,8 +294,8 @@ _080779B0: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback - bl sub_8075290 + bl SetBattlerShadowSpriteCallback + bl IsDoubleBattle lsls r0, 24 cmp r0, 0 beq _08077A14 @@ -315,7 +315,7 @@ _080779B0: lsls r1, 16 lsrs r1, 16 adds r0, r4, 0 - bl SetBankEnemyShadowSpriteCallback + bl SetBattlerShadowSpriteCallback _08077A14: ldr r1, _08077A4C @ =gUnknown_2023FF8 ldr r0, _08077A50 @ =gBattlerInMenuId @@ -455,7 +455,7 @@ _08077B1C: ldr r1, _08077B60 @ =gEnemyParty adds r0, r1 adds r1, r4, 0 - bl sub_8034658 + bl DecompressGhostFrontPic b _08077C24 .align 2, 0 _08077B54: .4byte gBattlersCount @@ -463,7 +463,7 @@ _08077B58: .4byte gBattleTypeFlags _08077B5C: .4byte gBattlerPartyIndexes _08077B60: .4byte gEnemyParty _08077B64: - ldr r0, _08077B90 @ =gUnknown_2024018 + ldr r0, _08077B90 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -485,13 +485,13 @@ _08077B64: bl BattleLoadOpponentMonSpriteGfx b _08077C24 .align 2, 0 -_08077B90: .4byte gUnknown_2024018 +_08077B90: .4byte gBattleSpritesDataPtr _08077B94: .4byte gBattlerPartyIndexes _08077B98: .4byte gEnemyParty _08077B9C: adds r0, r4, 0 movs r1, 0 - bl sub_80350BC + bl BattleLoadSubstituteOrMonSpriteGfx b _08077C24 _08077BA6: ldr r0, _08077BC0 @ =gBattleTypeFlags @@ -524,7 +524,7 @@ _08077BDA: bl sub_8034750 b _08077C24 _08077BE2: - ldr r0, _08077C10 @ =gUnknown_2024018 + ldr r0, _08077C10 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r4, 2 @@ -543,16 +543,16 @@ _08077BE2: ldr r1, _08077C18 @ =gPlayerParty adds r0, r1 adds r1, r4, 0 - bl sub_8034498 + bl BattleLoadPlayerMonSpriteGfx b _08077C24 .align 2, 0 -_08077C10: .4byte gUnknown_2024018 +_08077C10: .4byte gBattleSpritesDataPtr _08077C14: .4byte gBattlerPartyIndexes _08077C18: .4byte gPlayerParty _08077C1C: adds r0, r4, 0 movs r1, 0 - bl sub_80350BC + bl BattleLoadSubstituteOrMonSpriteGfx _08077C24: ldr r0, _08077C34 @ =gBattleScripting adds r0, 0x22 @@ -598,7 +598,7 @@ _08077C50: _08077C6C: .4byte gBattlersCount _08077C70: .4byte gBattleTypeFlags _08077C74: - ldr r0, _08077C90 @ =gUnknown_2024018 + ldr r0, _08077C90 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r7, 2 @@ -612,10 +612,10 @@ _08077C74: bl GetSubstituteSpriteDefault_Y b _08077C9A .align 2, 0 -_08077C90: .4byte gUnknown_2024018 +_08077C90: .4byte gBattleSpritesDataPtr _08077C94: adds r0, r7, 0 - bl GetBankSpriteDefault_Y + bl GetBattlerSpriteDefault_Y _08077C9A: lsls r0, 24 lsrs r0, 24 @@ -665,7 +665,7 @@ _08077CD2: ldr r5, _08077D98 @ =gMultiuseSpriteTemplate adds r0, r7, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -891,7 +891,7 @@ _08077EA8: ldr r5, _08077FCC @ =gMultiuseSpriteTemplate adds r0, r7, 0 movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -965,7 +965,7 @@ _08077F84: adds r2, r0 lsls r2, 2 adds r2, r1 - ldr r0, _08077FE0 @ =gUnknown_2024018 + ldr r0, _08077FE0 @ =gBattleSpritesDataPtr ldr r0, [r0] ldr r1, [r0] lsls r0, r7, 2 @@ -997,7 +997,7 @@ _08077FD0: .4byte gBattlerSpriteIds _08077FD4: .4byte gSprites _08077FD8: .4byte SpriteCallbackDummy _08077FDC: .4byte gBattleMonForms -_08077FE0: .4byte gUnknown_2024018 +_08077FE0: .4byte gBattleSpritesDataPtr thumb_func_end sub_8077C38 thumb_func_start CreateHealthboxSprite @@ -1036,15 +1036,15 @@ _08078014: b _08078166 _08078026: adds r0, r5, 0 - bl CreateBankHealthboxSprites + bl CreateBattlerHealthboxSprites _0807802C: lsls r0, 24 lsrs r6, r0, 24 - ldr r0, _08078068 @ =gUnknown_3004FF0 + ldr r0, _08078068 @ =gHealthboxSpriteIds adds r4, r5, r0 strb r6, [r4] adds r0, r5, 0 - bl SetBankHealthboxSpritePos + bl InitBattlerHealthboxCoords adds r0, r6, 0 bl SetHealthboxSpriteVisible adds r0, r5, 0 @@ -1065,7 +1065,7 @@ _0807802C: bl UpdateHealthboxAttribute b _080780C0 .align 2, 0 -_08078068: .4byte gUnknown_3004FF0 +_08078068: .4byte gHealthboxSpriteIds _0807806C: .4byte gBattlerPartyIndexes _08078070: .4byte gEnemyParty _08078074: @@ -1117,22 +1117,22 @@ _080780C0: cmp r0, 0x2 bne _080780F8 _080780DC: - ldr r0, _080780F4 @ =gUnknown_3004FF0 + ldr r0, _080780F4 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r0, [r0] movs r1, 0x1 - bl nullsub_21 + bl DummyBattleInterfaceFunc b _08078104 .align 2, 0 _080780EC: .4byte gBattlerPartyIndexes _080780F0: .4byte gPlayerParty -_080780F4: .4byte gUnknown_3004FF0 +_080780F4: .4byte gHealthboxSpriteIds _080780F8: - ldr r0, _08078130 @ =gUnknown_3004FF0 + ldr r0, _08078130 @ =gHealthboxSpriteIds adds r0, r5, r0 ldrb r0, [r0] movs r1, 0 - bl nullsub_21 + bl DummyBattleInterfaceFunc _08078104: adds r0, r5, 0 bl GetBattlerSide @@ -1154,7 +1154,7 @@ _08078104: bl SetHealthboxSpriteInvisible b _08078166 .align 2, 0 -_08078130: .4byte gUnknown_3004FF0 +_08078130: .4byte gHealthboxSpriteIds _08078134: .4byte gBattlerPartyIndexes _08078138: .4byte gEnemyParty _0807813C: diff --git a/asm/rock.s b/asm/rock.s index 39f3c7780..cef182f32 100644 --- a/asm/rock.s +++ b/asm/rock.s @@ -713,13 +713,13 @@ sub_80B4BD0: @ 80B4BD0 ldr r5, _080B4C54 @ =gBattleAnimAttacker ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r9, r0 ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r1, 0xC0 @@ -729,13 +729,13 @@ sub_80B4BD0: @ 80B4BD0 ldr r4, _080B4C58 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r10, r0 ldrb r0, [r4] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 8 movs r2, 0xC0 @@ -1331,13 +1331,13 @@ sub_80B50A0: @ 80B50A0 ldr r5, _080B50EC @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r5] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r2, _080B50F0 @ =gBattleAnimArgs diff --git a/asm/water.s b/asm/water.s index eac5fc3c1..e7465befa 100644 --- a/asm/water.s +++ b/asm/water.s @@ -130,7 +130,7 @@ sub_80AAC98: @ 80AAC98 beq _080AACC8 ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldr r4, _080AACC4 @ =gBattleAnimArgs @@ -143,7 +143,7 @@ _080AACC4: .4byte gBattleAnimArgs _080AACC8: ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 ldr r4, _080AADA0 @ =gBattleAnimArgs lsrs r0, 24 @@ -153,7 +153,7 @@ _080AACDA: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -184,7 +184,7 @@ _080AAD10: ldr r4, _080AADA8 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x32] @@ -192,7 +192,7 @@ _080AAD10: strh r0, [r6, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x36] @@ -390,7 +390,7 @@ _080AAEBA: ldr r4, _080AAF14 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 adds r0, r6 @@ -399,7 +399,7 @@ _080AAEBA: strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r7, [r7, 0x6] @@ -577,7 +577,7 @@ sub_80AB024: @ 80AB024 ldr r4, _080AB08C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x32] @@ -585,7 +585,7 @@ sub_80AB024: @ 80AB024 strh r0, [r5, 0x34] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] @@ -737,13 +737,13 @@ sub_80AB168: @ 80AB168 ldr r7, _080AB1B4 @ =gBattleAnimAttacker ldrb r0, [r7] movs r1, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x20] ldrb r0, [r7] movs r1, 0x1 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] @@ -877,7 +877,7 @@ _080AB27A: ldr r4, _080AB2BC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r1, [r5, 0x4] @@ -885,7 +885,7 @@ _080AB27A: strh r0, [r6, 0x32] ldrb r0, [r4] adds r1, r7, 0 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 ldrh r5, [r5, 0x6] @@ -2397,13 +2397,13 @@ sub_80ABE4C: @ 80ABE4C ldr r4, _080ABF54 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r6, r0, 24 movs r5, 0xAC @@ -3025,14 +3025,14 @@ sub_80AC328: @ 80AC328 ldr r4, _080AC3B0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 movs r6, 0 strh r0, [r5, 0xE] ldrb r0, [r4] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x10] @@ -3502,13 +3502,13 @@ sub_80AC6D8: @ 80AC6D8 ldr r5, _080AC714 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x30] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074480 + bl GetBattlerSpriteCoord lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 3d1de8ac5..4b45f3669 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -10,8 +10,8 @@ gUnknown_81C68F4:: @ 81C68F4 gUnknown_81C6E84:: @ 81C6E84 .incbin "baserom.gba", 0x1C6E84, 0x24 -gUnknown_81C6EA8:: @ 81C6EA8 +gBattleAnims_General:: @ 81C6EA8 .incbin "baserom.gba", 0x1C6EA8, 0x70 -gUnknown_81C6F18:: @ 81C6F18 +gBattleAnims_Special:: @ 81C6F18 .incbin "baserom.gba", 0x1C6F18, 0xF690 diff --git a/data/data.s b/data/data.s index 0322670c0..943c71678 100644 --- a/data/data.s +++ b/data/data.s @@ -166,7 +166,7 @@ gTrainerBackPicTable:: @ 8239FA4 gUnknown_8239FD4:: @ 8239FD4 .incbin "baserom.gba", 0x239FD4, 0x30 -gUnknown_823A004:: @ 823A004 +gEnemyMonElevation:: @ 823A004 .incbin "baserom.gba", 0x23A004, 0x4554 gTrainerClassNames:: @ 823E558 @@ -344,10 +344,10 @@ gUnknown_8250994:: @ 8250994 gUnknown_82509F4:: @ 82509F4 .incbin "baserom.gba", 0x2509F4, 0x18 -gUnknown_8250A0C:: @ 8250A0C +gSpriteSheet_EnemyShadow:: @ 8250A0C .incbin "baserom.gba", 0x250A0C, 0x10 -gUnknown_8250A1C:: @ 8250A1C +gSpriteTemplate_EnemyShadow:: @ 8250A1C .incbin "baserom.gba", 0x250A1C, 0x18 gUnknown_8250A34:: @ 8250A34 @@ -356,35 +356,10 @@ gUnknown_8250A34:: @ 8250A34 gUnknown_8250B20:: @ 8250B20 .incbin "baserom.gba", 0x250B20, 0xE4 - .section .rodata.825EF0C + .section .rodata.8260270 - .align 2 -gUnknown_8260208:: @ 8260208 - .incbin "baserom.gba", 0x260208, 0x8 - -gUnknown_8260210:: @ 8260210 - .incbin "baserom.gba", 0x260210, 0x8 - -gUnknown_8260218:: @ 8260218 - .incbin "baserom.gba", 0x260218, 0x8 - -gUnknown_8260220:: @ 8260220 - .incbin "baserom.gba", 0x260220, 0x8 - -gUnknown_8260228:: @ 8260228 - .incbin "baserom.gba", 0x260228, 0x8 - -gUnknown_8260230:: @ 8260230 - .incbin "baserom.gba", 0x260230, 0x8 - -gUnknown_8260238:: @ 8260238 - .incbin "baserom.gba", 0x260238, 0x8 - -gUnknown_8260240:: @ 8260240 - .incbin "baserom.gba", 0x260240, 0x20 - -gUnknown_8260260:: @ 8260260 - .incbin "baserom.gba", 0x260260, 0x18 +gUnknown_8260270:: @ 8260270 + .incbin "baserom.gba", 0x260270, 0x8 gUnknown_8260278:: @ 8260278 .incbin "baserom.gba", 0x260278, 0x30 diff --git a/data/graphics.s b/data/graphics.s index 83d14001d..034db89da 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -146,7 +146,7 @@ gFile_graphics_interface_ball_Open_sheet:: @ 8D022E8 .incbin "graphics/interface/ball_open.4bpp.lz" .align 2 -gFile_graphics_interface_blank_sheet:: @ 8D02364 +gBlankGfxCompressed:: @ 8D02364 .incbin "graphics/interface/blank.4bpp.lz" .align 2 @@ -1062,8 +1062,11 @@ gFile_graphics_unused_basic_frame_tilemap:: @ 8D11A78 .incbin "graphics/unused/basic_frame.bin.lz" .align 2 -gUnknown_8D11B84:: @ 8D11B84 - .incbin "baserom.gba", 0xD11B84, 0x40 +gBattleInterface_BallStatusBarPal:: @ 8D11B84 + .incbin "baserom.gba", 0xD11B84, 0x20 + +gBattleInterface_BallDisplayPal:: @ 8D11BA4 + .incbin "baserom.gba", 0xD11BA4, 0x20 gUnknown_8D11BC4:: @ 8D11BC4 .incbin "baserom.gba", 0xD11BC4, 0xF00 @@ -1761,23 +1764,23 @@ gFile_graphics_battle_anims_sprites_186_palette:: @ 8D1F31C .incbin "graphics/battle_anims/sprites/186.gbapal.lz" .align 2 -gUnknown_8D1F340:: @ 8D1F340 +gHealthboxSinglesPlayerGfx:: @ 8D1F340 .incbin "baserom.gba", 0xD1F340, 0x2C4 .align 2 -gUnknown_8D1F604:: @ 8D1F604 +gHealthboxSinglesOpponentGfx:: @ 8D1F604 .incbin "baserom.gba", 0xD1F604, 0x190 .align 2 -gUnknown_8D1F794:: @ 8D1F794 +gHealthboxDoublesPlayerGfx:: @ 8D1F794 .incbin "baserom.gba", 0xD1F794, 0x194 .align 2 -gUnknown_8D1F928:: @ 8D1F928 +gHealthboxDoublesOpponentGfx:: @ 8D1F928 .incbin "baserom.gba", 0xD1F928, 0x194 .align 2 -gFile_graphics_battle_interface_healthbox_safari_sheet:: @ 8D1FABC +gHealthboxSafariGfx:: @ 8D1FABC .incbin "graphics/battle_interface/healthbox_safari.4bpp.lz" .align 2 @@ -2365,15 +2368,15 @@ gFile_graphics_battle_anims_sprites_240_palette:: @ 8D2D068 .incbin "graphics/battle_anims/sprites/240.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_substitute_palette:: @ 8D2D090 +gSubstituteDollPal:: @ 8D2D090 .incbin "graphics/battle_anims/sprites/substitute.gbapal.lz" .align 2 -gFile_graphics_battle_anims_sprites_substitute_sheet:: @ 8D2D0B4 +gSubstituteDollGfx:: @ 8D2D0B4 .incbin "graphics/battle_anims/sprites/substitute.4bpp.lz" .align 2 -gFile_graphics_battle_anims_sprites_substitute_tilemap:: @ 8D2D2F4 +gSubstituteDollTilemap:: @ 8D2D2F4 .incbin "graphics/battle_anims/sprites/substitute.bin.lz" .align 2 @@ -15923,10 +15926,10 @@ gFile_graphics_battle_anims_sprites_271_sheet:: @ 8E93AB4 .incbin "graphics/battle_anims/sprites/271.4bpp.lz" .align 2 -gUnknown_8E93B14:: @ 8E93B14 +gGhostPalette:: @ 8E93B14 .incbin "baserom.gba", 0xE93B14, 0x24 -gUnknown_8E93B38:: @ 8E93B38 +gGhostFrontPic:: @ 8E93B38 .incbin "baserom.gba", 0xE93B38, 0x368 gUnknown_8E93EA0:: @ 8E93EA0 diff --git a/include/battle.h b/include/battle.h index b1284fd6c..1a8fa0201 100644 --- a/include/battle.h +++ b/include/battle.h @@ -863,9 +863,9 @@ struct BattleAnimationInfo struct BattleHealthboxInfo { - u8 flag_x1 : 1; - u8 flag_x2 : 1; - u8 flag_x4 : 1; + u8 partyStatusSummaryShown : 1; + u8 healthboxIsBouncing : 1; + u8 battlerIsBouncing : 1; u8 ballAnimActive : 1; // 0x8 u8 statusAnimActive : 1; // x10 u8 animFromTableActive : 1; // x20 @@ -876,11 +876,11 @@ struct BattleHealthboxInfo u8 field_1_x20 : 1; u8 field_1_x40 : 1; u8 field_1_x80 : 1; - u8 field_2; - u8 field_3; + u8 healthboxBounceSpriteId; + u8 battlerBounceSpriteId; u8 animationState; u8 field_5; - u8 field_6; + u8 matrixNum; u8 shadowSpriteId; u8 field_8; u8 field_9; @@ -894,12 +894,12 @@ struct BattleBarInfo s32 maxValue; s32 currentValue; s32 receivedValue; - s32 field_10; + s32 currValue; }; struct BattleSpriteData { - struct BattleSpriteInfo *bankData; + struct BattleSpriteInfo *battlerData; struct BattleHealthboxInfo *healthBoxesData; struct BattleAnimationInfo *animationData; struct BattleBarInfo *battleBars; @@ -949,6 +949,10 @@ extern u8 gPotentialItemEffectBattler; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; extern s32 gBattleMoveDamage; +extern u16 gIntroSlideFlags; +extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; +extern u8 gBattlerPositions[MAX_BATTLERS_COUNT]; +extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; extern u8 gBattleOutcome; extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; diff --git a/include/battle_2.h b/include/battle_2.h index 02050afd9..72fcb0e11 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -46,6 +46,7 @@ void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); void sub_80120C4(struct Sprite *); +void sub_8012100(struct Sprite *); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_anim.h b/include/battle_anim.h index 0406c78a0..fb744c316 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -126,7 +126,7 @@ u8 sub_80A6D94(void); u8 sub_80A8364(u8); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); -u8 GetBankSpriteDefault_Y(u8 bank); +u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); @@ -147,6 +147,7 @@ void ResetSpriteRotScale(u8 spriteId); void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); bool8 IsContest(void); void sub_80759DC(u8 spriteId); +bool8 IsBattlerSpritePresent(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index df00c3526..577bce485 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -242,7 +242,6 @@ void EmitCmd55(u8 bufferId, u8 arg1); // player controller void SetControllerToPlayer(void); -void nullsub_21(void); void PlayerHandleGetRawMonData(void); void sub_80587B0(void); void sub_805CC00(struct Sprite *sprite); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 313a29811..39cea7ad1 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -1,50 +1,45 @@ -#ifndef GUARD_BATTLE_GFX_SFX_UTIL -#define GUARD_BATTLE_GFX_SFX_UTIL +#ifndef GUARD_BATTLE_GFX_SFX_UTIL_H +#define GUARD_BATTLE_GFX_SFX_UTIL_H void AllocateBattleSpritesData(void); void FreeBattleSpritesData(void); -u16 ChooseMoveAndTargetInBattlePalace(void); -void sub_805D714(struct Sprite *sprite); -void sub_805D770(struct Sprite *sprite, bool8 arg1); -void sub_805D7AC(struct Sprite *sprite); +void sub_8033E3C(struct Sprite *sprite); +void sub_8033EEC(struct Sprite *sprite); void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status); -bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument); -void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId); +bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument); +void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId); bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn); -bool8 mplay_80342A4(u8 bank); -void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank); -void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank); -void nullsub_23(void); -void nullsub_24(u16 species); -void DecompressTrainerFrontPic(u16 frontPicId, u8 bank); -void DecompressTrainerBackPic(u16 backPicId, u8 bank); -void nullsub_25(u8 arg0); -void FreeTrainerFrontPicPalette(u16 frontPicId); -void sub_805DFFC(void); +bool8 mplay_80342A4(u8 battlerId); +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId); +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId); +void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId); +void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId); +void sub_8034750(u16 a1, u8 a2); +void nullsub_16(u8 a1); +void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId); bool8 BattleLoadAllHealthBoxesGfx(u8 state); void LoadBattleBarGfx(u8 arg0); -bool8 BattleInitAllSprites(u8 *state1, u8 *bank); +bool8 BattleInitAllSprites(u8 *state, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); -void CopyBattleSpriteInvisibility(u8 bank); -void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform); -void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite); -void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId); -void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move); -void ClearBehindSubstituteBit(u8 bank); -void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank); +void CopyBattleSpriteInvisibility(u8 battlerId); +void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform); +void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite); +void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId); +void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move); +void ClearBehindSubstituteBit(u8 battlerId); +void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId); void BattleStopLowHpSound(void); -u8 GetMonHPBarLevel(struct Pokemon *mon); -void sub_805EAE8(void); -void sub_805EB9C(u8 affineMode); +void HandleBattleLowHpMusicChange(void); +void sub_8035450(u8 affineMode); void LoadAndCreateEnemyShadowSprites(void); void SpriteCB_SetInvisible(struct Sprite *sprite); -void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species); -void EnemyShadowCallbackToSetInvisible(u8 bank); -void sub_805EF14(void); -void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute); +void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species); +void HideBattlerShadowSprite(u8 battlerId); +void sub_80357C8(void); +void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon); -#endif // GUARD_BATTLE_GFX_SFX_UTIL +#endif // GUARD_BATTLE_GFX_SFX_UTIL_H diff --git a/include/battle_interface.h b/include/battle_interface.h index 27f93a3c2..bdcb4d80e 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -30,12 +30,18 @@ enum #define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701 #define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702 +#define TAG_HEALTHBAR_PLAYER1_TILE 0xD704 +#define TAG_HEALTHBAR_OPPONENT1_TILE 0xD705 +#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706 +#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707 + #define TAG_HEALTHBOX_SAFARI_TILE 0xD70B #define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C #define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 #define TAG_HEALTHBOX_PAL 0xD6FF +#define TAG_HEALTHBAR_PAL 0xD704 #define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 #define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 @@ -55,7 +61,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; -u8 CreateBankHealthboxSprites(u8 bank); +u8 CreateBattlerHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); @@ -63,7 +69,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority); -void SetBankHealthboxSpritePos(u8 bank); +void InitBattlerHealthboxCoords(u8 bank); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); @@ -72,5 +78,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); +void sub_80496C0(u8 spriteId, struct Pokemon *mon); +void sub_804981C(u8 spriteId, u8); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/data2.h b/include/data2.h index 3ce3c33c8..421695f18 100644 --- a/include/data2.h +++ b/include/data2.h @@ -2,6 +2,7 @@ #define GUARD_DATA2_H #include "global.h" +#include "constants/species.h" struct MonCoords { @@ -23,8 +24,22 @@ extern const u16 gUnknown_8251FEE[]; extern const u16 gUnknown_8252324[]; extern const u16 gUnknown_82539D4[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[]; extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct CompressedSpritePalette gUnknown_8239FD4[]; + +extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; +extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; + +extern const u8 gEnemyMonElevation[NUM_SPECIES]; + +extern const u8 *const gBattleAnims_General[]; +extern const u8 *const gBattleAnims_Special[]; + extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; diff --git a/include/graphics.h b/include/graphics.h index e8503609e..6f9d8b762 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -961,4 +961,20 @@ extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[]; extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[]; +extern const u32 gHealthboxSinglesPlayerGfx[]; +extern const u32 gHealthboxSinglesOpponentGfx[]; +extern const u32 gHealthboxDoublesPlayerGfx[]; +extern const u32 gHealthboxDoublesOpponentGfx[]; +extern const u32 gHealthboxSafariGfx[]; +extern const u32 gBlankGfxCompressed[]; +extern const u16 gBattleInterface_BallStatusBarPal[]; +extern const u16 gBattleInterface_BallDisplayPal[]; +extern const u32 gFile_graphics_interface_hp_numbers[]; + +extern const u32 gGhostFrontPic[]; +extern const u32 gGhostPalette[]; +extern const u32 gSubstituteDollGfx[]; +extern const u32 gSubstituteDollTilemap[]; +extern const u16 gSubstituteDollPal[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/party_menu.h b/include/party_menu.h index e4fc182e9..2ae33175c 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -62,5 +62,6 @@ void sub_81279E0(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); +void sub_8127CAC(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 9dd5850b4..d2eefd390 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -539,6 +539,7 @@ extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1]; extern const u16 *const gLevelUpLearnsets[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; +extern const struct SpriteTemplate gUnknown_825DEF0[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -640,7 +641,7 @@ void ClearBattleMonForms(void); void PlayBattleBGM(void); void PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); -const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); +const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); bool32 IsHMMove2(u16 move); diff --git a/ld_script.txt b/ld_script.txt index d9506d33f..f268484e5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -71,7 +71,7 @@ SECTIONS { asm/battle_script_commands.o(.text); asm/battle_util2.o(.text); asm/battle_controller_player.o(.text); - asm/battle_gfx_sfx_util.o(.text); + src/battle_gfx_sfx_util.o(.text); asm/battle_controller_opponent.o(.text); asm/battle_ai_switch_items.o(.text); asm/battle_controller_link_opponent.o(.text); @@ -384,7 +384,8 @@ SECTIONS { src/trig.o(.rodata); src/util.o(.rodata); src/daycare.o(.rodata); - data/data.o(.rodata.825EF0C); + src/battle_gfx_sfx_util.o(.rodata); + data/data.o(.rodata.8260270); data/tilesets.o(.rodata); data/maps.o(.rodata); src/fieldmap.o(.rodata); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c new file mode 100644 index 000000000..bea4406bc --- /dev/null +++ b/src/battle_gfx_sfx_util.c @@ -0,0 +1,1059 @@ +#include "global.h" +#include "main.h" +#include "m4a.h" +#include "task.h" +#include "malloc.h" +#include "graphics.h" +#include "sound.h" +#include "decompress.h" +#include "palette.h" +#include "sprite.h" +#include "data2.h" +#include "util.h" +#include "party_menu.h" +#include "battle.h" +#include "battle_2.h" +#include "battle_controllers.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "constants/species.h" +#include "constants/moves.h" +#include "constants/songs.h" + +static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId); +static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId); +static void Task_ClearBitWhenSpecialAnimDone(u8 taskId); +static void ClearSpritesBattlerHealthboxAnimData(void); + +static const struct CompressedSpriteSheet sSpriteSheet_SinglesPlayerHealthbox = +{ + .data = gHealthboxSinglesPlayerGfx, + .size = 0x1000, + .tag = TAG_HEALTHBOX_PLAYER1_TILE, +}; + +static const struct CompressedSpriteSheet sSpriteSheet_SinglesOpponentHealthbox = +{ + .data = gHealthboxSinglesOpponentGfx, + .size = 0x1000, + .tag = TAG_HEALTHBOX_OPPONENT1_TILE, +}; + +static const struct CompressedSpriteSheet sSpriteSheets_DoublesPlayerHealthbox[2] = +{ + { + .data = gHealthboxDoublesPlayerGfx, + .size = 0x800, + .tag = TAG_HEALTHBOX_PLAYER1_TILE, + }, + { + .data = gHealthboxDoublesPlayerGfx, + .size = 0x800, + .tag = TAG_HEALTHBOX_PLAYER2_TILE, + }, +}; + +static const struct CompressedSpriteSheet sSpriteSheets_DoublesOpponentHealthbox[2] = +{ + { + .data = gHealthboxDoublesOpponentGfx, + .size = 0x800, + .tag = TAG_HEALTHBOX_OPPONENT1_TILE, + }, + { + .data = gHealthboxDoublesOpponentGfx, + .size = 0x800, + .tag = TAG_HEALTHBOX_OPPONENT2_TILE, + }, +}; + +static const struct CompressedSpriteSheet sSpriteSheet_SafariHealthbox = +{ + .data = gHealthboxSafariGfx, + .size = 0x1000, + .tag = TAG_HEALTHBOX_SAFARI_TILE, +}; + +static const struct CompressedSpriteSheet sSpriteSheets_HealthBar[MAX_BATTLERS_COUNT] = +{ + { + .data = gBlankGfxCompressed, + .size = 0x100, + .tag = TAG_HEALTHBAR_PLAYER1_TILE, + }, + { + .data = gBlankGfxCompressed, + .size = 0x120, + .tag = TAG_HEALTHBAR_OPPONENT1_TILE, + }, + { + .data = gBlankGfxCompressed, + .size = 0x100, + .tag = TAG_HEALTHBAR_PLAYER2_TILE, + }, + { + .data = gBlankGfxCompressed, + .size = 0x120, + .tag = TAG_HEALTHBAR_OPPONENT2_TILE, + }, +}; + +static const struct SpritePalette sSpritePalettes_HealthBoxHealthBar[2] = +{ + { + .data = gBattleInterface_BallStatusBarPal, + .tag = TAG_HEALTHBOX_PAL, + }, + { + .data = gBattleInterface_BallDisplayPal, + .tag = TAG_HEALTHBAR_PAL, + }, +}; + +void AllocateBattleSpritesData(void) +{ + gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData)); + gBattleSpritesDataPtr->battlerData = AllocZeroed(sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT); + gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT); + gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo)); + gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * MAX_BATTLERS_COUNT); +} + +void FreeBattleSpritesData(void) +{ + if (gBattleSpritesDataPtr) + { + FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->battlerData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr); + } +} + +void sub_8033E3C(struct Sprite *sprite) +{ + u8 spriteId = sprite->data[1]; + + if (!gSprites[spriteId].affineAnimEnded) + return; + if (gSprites[spriteId].invisible) + return; + if (gSprites[spriteId].animPaused) + gSprites[spriteId].animPaused = 0; + else if (gSprites[spriteId].animEnded) + { + gSprites[spriteId].callback = sub_8012100; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + sprite->callback = SpriteCallbackDummy; + } +} + +// not used +static void sub_8033EB0(struct Sprite *sprite, bool8 arg1) +{ + sprite->animPaused = 1; + sprite->callback = SpriteCallbackDummy; + if (!arg1) + StartSpriteAffineAnim(sprite, 1); + else + StartSpriteAffineAnim(sprite, 1); + AnimateSprite(sprite); +} + +void sub_8033EEC(struct Sprite *sprite) +{ + if (!(gIntroSlideFlags & 1)) + { + sprite->pos2.x += sprite->data[0]; + if (sprite->pos2.x == 0) + sprite->callback = SpriteCallbackDummy; + } +} + +void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status) +{ + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 1; + if (!isStatus2) + { + if (status == STATUS1_FREEZE) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_FRZ); + else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PSN); + else if (status == STATUS1_BURN) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_BRN); + else if (status & STATUS1_SLEEP) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_SLP); + else if (status == STATUS1_PARALYSIS) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PRZ); + else // no animation + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0; + } + else + { + if (status & STATUS2_INFATUATION) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_INFATUATION); + else if (status & STATUS2_CONFUSION) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CONFUSION); + else if (status & STATUS2_CURSED) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CURSED); + else if (status & STATUS2_NIGHTMARE) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_NIGHTMARE); + else if (status & STATUS2_WRAPPED) + LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_WRAPPED); // this animation doesn't actually exist + else // no animation + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0; + } +} + +#define tBattlerId data[0] + +bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument) +{ + u8 taskId; + + if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80)) + { + gBattleMonForms[activeBattler] = (argument & ~(0x80)); + return TRUE; + } + else if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute + && !ShouldAnimBeDoneRegardlessOfSubsitute(tableId)) + { + return TRUE; + } + else if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute + && tableId == B_ANIM_SUBSTITUTE_FADE + && gSprites[gBattlerSpriteIds[activeBattler]].invisible) + { + LoadBattleMonGfxAndAnimate(activeBattler, TRUE, gBattlerSpriteIds[activeBattler]); + ClearBehindSubstituteBit(activeBattler); + return TRUE; + } + gBattleAnimAttacker = atkBattler; + gBattleAnimTarget = defBattler; + gBattleSpritesDataPtr->animationData->animArg = argument; + LaunchBattleAnimation(gBattleAnims_General, tableId, FALSE); + taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10); + gTasks[taskId].tBattlerId = activeBattler; + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1; + return FALSE; +} + +static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 0; + DestroyTask(taskId); + } +} + +static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId) +{ + switch (animId) + { + case B_ANIM_SUBSTITUTE_FADE: + case B_ANIM_RAIN_CONTINUES: + case B_ANIM_SUN_CONTINUES: + case B_ANIM_SANDSTORM_CONTINUES: + case B_ANIM_HAIL_CONTINUES: + case B_ANIM_SNATCH_MOVE: + return TRUE; + default: + return FALSE; + } +} + +void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId) +{ + u8 taskId; + + gBattleAnimAttacker = atkBattler; + gBattleAnimTarget = defBattler; + LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE); + taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10); + gTasks[taskId].tBattlerId = activeBattler; + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1; +} + +static void Task_ClearBitWhenSpecialAnimDone(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 0; + DestroyTask(taskId); + } +} + +bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn) +{ + return FALSE; +} + +bool8 mplay_80342A4(u8 battlerId) +{ + u8 zero = 0; + + if (IsSEPlaying()) + { + ++gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_8 < 30) + return TRUE; + m4aMPlayStop(&gMPlayInfo_SE1); + m4aMPlayStop(&gMPlayInfo_SE2); + } + if (zero == 0) + { + gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8 = 0; + return FALSE; + } + else + { + return TRUE; + } +} + +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) +{ + u32 monsPersonality, currentPersonality, otId; + u16 species; + u8 position; + u16 paletteOffset; + const void *lzPaletteData; + void *buffer; + + monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) + { + species = GetMonData(mon, MON_DATA_SPECIES); + currentPersonality = monsPersonality; + } + else + { + species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies; + currentPersonality = gTransformedPersonalities[battlerId]; + } + otId = GetMonData(mon, MON_DATA_OT_ID); + position = GetBattlerPosition(battlerId); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], + gMonSpritesGfxPtr->sprites[position], + species, currentPersonality); + paletteOffset = 0x100 + battlerId * 16; + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) + lzPaletteData = GetMonFrontSpritePal(mon); + else + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); + buffer = AllocZeroed(0x400); + LZDecompressWram(lzPaletteData, buffer); + LoadPalette(buffer, paletteOffset, 0x20); + LoadPalette(buffer, 0x80 + battlerId * 16, 0x20); + Free(buffer); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + battlerId * 16; + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); + } + // transform's pink color + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, RGB_WHITE); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) +{ + u32 monsPersonality, currentPersonality, otId; + u16 species; + u8 position; + u16 paletteOffset; + const void *lzPaletteData; + void *buffer; + + monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) + { + species = GetMonData(mon, MON_DATA_SPECIES); + currentPersonality = monsPersonality; + } + else + { + species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies; + currentPersonality = gTransformedPersonalities[battlerId]; + } + otId = GetMonData(mon, MON_DATA_OT_ID); + position = GetBattlerPosition(battlerId); + if (sub_804455C(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], + gMonSpritesGfxPtr->sprites[position], + species, currentPersonality); + else + HandleLoadSpecialPokePic(&gMonBackPicTable[species], + gMonSpritesGfxPtr->sprites[position], + species, currentPersonality); + paletteOffset = 0x100 + battlerId * 16; + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) + lzPaletteData = GetMonFrontSpritePal(mon); + else + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); + buffer = AllocZeroed(0x400); + LZDecompressWram(lzPaletteData, buffer); + LoadPalette(buffer, paletteOffset, 0x20); + LoadPalette(buffer, 0x80 + battlerId * 16, 0x20); + Free(buffer); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + battlerId * 16; + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); + } + // transform's pink color + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, RGB_WHITE); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId) +{ + u16 palOffset; + void *buffer; + u8 position = GetBattlerPosition(battlerId); + + LZ77UnCompWram(gGhostFrontPic, gMonSpritesGfxPtr->sprites[position]); + palOffset = 0x100 + 16 * battlerId; + buffer = AllocZeroed(0x400); + LZDecompressWram(gGhostPalette, buffer); + LoadPalette(buffer, palOffset, 0x20); + LoadPalette(buffer, 0x80 + 16 * battlerId, 0x20); + Free(buffer); +} + +void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId) +{ + struct SpriteSheet sheet; + u8 position = GetBattlerPosition(battlerId); + + DecompressPicFromTable(&gTrainerFrontPicTable[frontPicId], gMonSpritesGfxPtr->sprites[position], SPECIES_NONE); + sheet.data = gMonSpritesGfxPtr->sprites[position]; + sheet.size = gTrainerFrontPicTable[frontPicId].size; + sheet.tag = gTrainerFrontPicTable[frontPicId].tag; + LoadSpriteSheet(&sheet); + LoadCompressedSpritePaletteUsingHeap(&gTrainerFrontPicPaletteTable[frontPicId]); +} + +void sub_8034750(u16 a1, u8 a2) +{ + LoadCompressedPalette(gUnknown_8239FD4[a1].data, (a2 + 16) * 16, 0x20); +} + +void nullsub_16(u8 a1) +{ +} + +void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId) +{ + FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag); + FreeSpriteTilesByTag(gTrainerFrontPicTable[frontPicId].tag); +} + +// not used +static void BattleLoadAllHealthBoxesGfxAtOnce(void) +{ + u8 numberOfBattlers = 0; + u8 i; + + LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); + LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); + if (!IsDoubleBattle()) + { + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_SinglesPlayerHealthbox); + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_SinglesOpponentHealthbox); + numberOfBattlers = 2; + } + else + { + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesPlayerHealthbox[0]); + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesPlayerHealthbox[1]); + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesOpponentHealthbox[0]); + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesOpponentHealthbox[1]); + numberOfBattlers = MAX_BATTLERS_COUNT; + } + for (i = 0; i < numberOfBattlers; ++i) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[i]]); +} + +bool8 BattleLoadAllHealthBoxesGfx(u8 state) +{ + bool8 retVal = FALSE; + + if (state) + { + if (state == 1) + { + LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); + LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); + } + else if (!IsDoubleBattle()) + { + if (state == 2) + { + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_SafariHealthbox); + else + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_SinglesPlayerHealthbox); + } + else if (state == 3) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_SinglesOpponentHealthbox); + else if (state == 4) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[0]]); + else if (state == 5) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[1]]); + else + retVal = TRUE; + } + else + { + if (state == 2) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesPlayerHealthbox[0]); + else if (state == 3) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesPlayerHealthbox[1]); + else if (state == 4) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesOpponentHealthbox[0]); + else if (state == 5) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesOpponentHealthbox[1]); + else if (state == 6) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[0]]); + else if (state == 7) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[1]]); + else if (state == 8) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[2]]); + else if (state == 9) + LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[3]]); + else + retVal = TRUE; + } + } + return retVal; +} + +void LoadBattleBarGfx(u8 arg0) +{ + LZDecompressWram(gFile_graphics_interface_hp_numbers, gMonSpritesGfxPtr->barFontGfx); +} + +bool8 BattleInitAllSprites(u8 *state, u8 *battlerId) +{ + bool8 retVal = FALSE; + + switch (*state) + { + case 0: + ClearSpritesBattlerHealthboxAnimData(); + ++*state; + break; + case 1: + if (!BattleLoadAllHealthBoxesGfx(*battlerId)) + { + ++*battlerId; + } + else + { + *battlerId = 0; + ++*state; + } + break; + case 2: + ++*state; + break; + case 3: + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *battlerId == 0) + gHealthboxSpriteIds[*battlerId] = CreateSafariPlayerHealthboxSprites(); + else + gHealthboxSpriteIds[*battlerId] = CreateBattlerHealthboxSprites(*battlerId); + + ++*battlerId; + if (*battlerId == gBattlersCount) + { + *battlerId = 0; + ++*state; + } + break; + case 4: + InitBattlerHealthboxCoords(*battlerId); + if (gBattlerPositions[*battlerId] <= 1) + DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE); + else + DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE); + + ++*battlerId; + if (*battlerId == gBattlersCount) + { + *battlerId = 0; + ++*state; + } + break; + case 5: + if (GetBattlerSide(*battlerId) == B_SIDE_PLAYER) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gPlayerParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL); + } + else + { + UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gEnemyParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL); + } + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battlerId]); + ++*battlerId; + if (*battlerId == gBattlersCount) + { + *battlerId = 0; + ++*state; + } + break; + case 6: + LoadAndCreateEnemyShadowSprites(); + sub_8127CAC(); + retVal = TRUE; + break; + } + return retVal; +} + +void ClearSpritesHealthboxAnimData(void) +{ + memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT); + memset(gBattleSpritesDataPtr->animationData, 0, sizeof(struct BattleAnimationInfo)); +} + +static void ClearSpritesBattlerHealthboxAnimData(void) +{ + ClearSpritesHealthboxAnimData(); + memset(gBattleSpritesDataPtr->battlerData, 0, sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT); +} + +void CopyAllBattleSpritesInvisibilities(void) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + gBattleSpritesDataPtr->battlerData[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible; +} + +void CopyBattleSpriteInvisibility(u8 battlerId) +{ + gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible; +} + +void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform) +{ + u16 paletteOffset, targetSpecies; + u32 personalityValue; + u32 otId; + u8 position; + const u32 *lzPaletteData; + void *buffer; + + //TODO: notTransform is bool8 in pokeem. Document it with a more reasonable name here. + if (notTransform == 255) + { + const void *src; + void *dst; + + position = GetBattlerPosition(battlerAtk); + targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_SPECIES); + personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[position], + targetSpecies, + personalityValue); + src = gMonSpritesGfxPtr->sprites[position]; + dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); + DmaCopy32(3, src, dst, 0x800); + paletteOffset = 0x100 + battlerAtk * 16; + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); + buffer = AllocZeroed(0x400); + LZDecompressWram(lzPaletteData, buffer); + LoadPalette(buffer, paletteOffset, 32); + Free(buffer); + gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]); + SetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_NICKNAME, gSpeciesNames[targetSpecies]); + sub_80496C0(gHealthboxSpriteIds[battlerAtk], &gEnemyParty[gBattlerPartyIndexes[battlerAtk]]); + sub_804981C(gHealthboxSpriteIds[battlerAtk], 1); + } + else if (notTransform) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg); + paletteOffset = 0x100 + battlerAtk * 16; + LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32); + gBattleMonForms[battlerAtk] = gBattleSpritesDataPtr->animationData->animArg; + if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, RGB_WHITE); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } + gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk); + } + else + { + const void *src; + void *dst; + + position = GetBattlerPosition(battlerAtk); + if (GetBattlerSide(battlerDef) == B_SIDE_OPPONENT) + targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES); + else + targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES); + if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) + { + personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[position], + targetSpecies, + gTransformedPersonalities[battlerAtk]); + } + else + { + personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[position], + targetSpecies, + gTransformedPersonalities[battlerAtk]); + } + src = gMonSpritesGfxPtr->sprites[position]; + dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); + DmaCopy32(3, src, dst, 0x800); + paletteOffset = 0x100 + battlerAtk * 16; + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); + buffer = AllocZeroed(0x400); + LZDecompressWram(lzPaletteData, buffer); + LoadPalette(buffer, paletteOffset, 32); + Free(buffer); + if (targetSpecies == SPECIES_CASTFORM) + { + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32); + } + BlendPalette(paletteOffset, 16, 6, RGB_WHITE); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies = targetSpecies; + gBattleMonForms[battlerAtk] = gBattleMonForms[battlerDef]; + gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]); + } +} + +void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) +{ + u8 position; + s32 i; + u32 palOffset; + const void *substitutePal; + + if (!loadMonSprite) + { + position = GetBattlerPosition(battlerId); + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]); + else + LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]); + i = 1; + palOffset = battlerId * 16; + substitutePal = gSubstituteDollPal; + for (; i < 4; ++i) + { + #ifndef NONMATCHING + register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position]; + #endif + void *dmaDst = (i * 0x800) + dmaSrc; + + DmaCopy32(3, dmaSrc, dmaDst, 0x800); + } + LoadCompressedPalette(substitutePal, palOffset + 0x100, 0x20); + } + else + { + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId); + else + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId); + } +} + +void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId) +{ + BattleLoadSubstituteOrMonSpriteGfx(battlerId, loadMonSprite); + StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]); + if (!loadMonSprite) + gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId); + else + gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId); +} + +void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move) +{ + if (move == MOVE_SUBSTITUTE) + gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 1; +} + +void ClearBehindSubstituteBit(u8 battlerId) +{ + gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 0; +} + +void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId) +{ + u16 hp = GetMonData(mon, MON_DATA_HP); + u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + if (GetHPBarLevel(hp, maxHP) == HP_BAR_RED) + { + if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong) + { + if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) + PlaySE(SE_T_OOAME); + gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1; + } + } + else + { + gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 0; + if (!IsDoubleBattle()) + m4aSongNumStop(SE_T_OOAME); + else if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) + m4aSongNumStop(SE_T_OOAME); + } +} + +void BattleStopLowHpSound(void) +{ + u8 playerBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + + gBattleSpritesDataPtr->battlerData[playerBattler].lowHpSong = 0; + if (IsDoubleBattle()) + gBattleSpritesDataPtr->battlerData[playerBattler ^ BIT_FLANK].lowHpSong = 0; + m4aSongNumStop(SE_T_OOAME); +} + +// not used +static u8 GetMonHPBarLevel(struct Pokemon *mon) +{ + u16 hp = GetMonData(mon, MON_DATA_HP); + u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + return GetHPBarLevel(hp, maxHP); +} + +void HandleBattleLowHpMusicChange(void) +{ + if (gMain.inBattle) + { + 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]); + + if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0) + HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1); + if (IsDoubleBattle() && GetMonData(&gPlayerParty[battler2PartyId], MON_DATA_HP) != 0) + HandleLowHpMusicChange(&gPlayerParty[battler2PartyId], playerBattler2); + } +} + +void sub_8035450(u8 affineMode) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + { + if (IsBattlerSpritePresent(i)) + { + gSprites[gBattlerSpriteIds[i]].oam.affineMode = affineMode; + if (affineMode == ST_OAM_AFFINE_OFF) + { + gBattleSpritesDataPtr->healthBoxesData[i].matrixNum = gSprites[gBattlerSpriteIds[i]].oam.matrixNum; + gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0; + } + else + { + gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].matrixNum; + } + } + } +} + +void LoadAndCreateEnemyShadowSprites(void) +{ + u8 battlerId; + + LoadCompressedSpriteSheetUsingHeap(&gSpriteSheet_EnemyShadow); + battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8); + gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId; + if (IsDoubleBattle()) + { + battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8); + gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId; + } +} + +static void SpriteCB_EnemyShadow(struct Sprite *shadowSprite) +{ + bool8 invisible = FALSE; + u8 battlerId = shadowSprite->tBattlerId; + struct Sprite *battlerSprite = &gSprites[gBattlerSpriteIds[battlerId]]; + + if (!battlerSprite->inUse || !IsBattlerSpritePresent(battlerId)) + { + shadowSprite->callback = SpriteCB_SetInvisible; + return; + } + if (gAnimScriptActive || battlerSprite->invisible) + invisible = TRUE; + else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE + && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0) + invisible = TRUE; + if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute) + invisible = TRUE; + shadowSprite->pos1.x = battlerSprite->pos1.x; + shadowSprite->pos2.x = battlerSprite->pos2.x; + shadowSprite->invisible = invisible; +} + +void SpriteCB_SetInvisible(struct Sprite *sprite) +{ + sprite->invisible = TRUE; +} + +void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species) +{ + // The player's shadow is never seen. + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + return; + + if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) + species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies; + + if (gEnemyMonElevation[species] != 0) + gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow; + else + gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible; +} + +void HideBattlerShadowSprite(u8 battlerId) +{ + gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible; +} + +void sub_80357C8(void) +{ + u16 *vramPtr = (u16 *)(VRAM + 0x240); + s32 i; + s32 j; + + for (i = 0; i < 9; ++i) + { + for (j = 0; j < 16; ++vramPtr, ++j) + { + if (!(*vramPtr & 0xF000)) + *vramPtr |= 0xF000; + if (!(*vramPtr & 0x0F00)) + *vramPtr |= 0x0F00; + if (!(*vramPtr & 0x00F0)) + *vramPtr |= 0x00F0; + if (!(*vramPtr & 0x000F)) + *vramPtr |= 0x000F; + } + } + vramPtr = (u16 *)(VRAM + 0x600); + for (i = 0; i < 18; ++i) + { + for (j = 0; j < 16; ++vramPtr, ++j) + { + if (!(*vramPtr & 0xF000)) + *vramPtr |= 0x6000; + if (!(*vramPtr & 0x0F00)) + *vramPtr |= 0x0600; + if (!(*vramPtr & 0x00F0)) + *vramPtr |= 0x0060; + if (!(*vramPtr & 0x000F)) + *vramPtr |= 0x0006; + } + } +} + +void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute) +{ + gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE; + gBattleMonForms[battlerId] = 0; + if (!dontClearSubstitute) + ClearBehindSubstituteBit(battlerId); +} + +void AllocateMonSpritesGfx(void) +{ + u8 i = 0, j; + + gMonSpritesGfxPtr = NULL; + gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr)); + gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000); + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000); + *(gMonSpritesGfxPtr->templates + i) = gUnknown_825DEF0[i]; + + for (j = 0; j < 4; ++j) + { + gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800); + gMonSpritesGfxPtr->field_74[i][j].size = 0x800; + } + + gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i]; + } + gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000); +} + +void FreeMonSpritesGfx(void) +{ + if (gMonSpritesGfxPtr == NULL) + return; + if (gMonSpritesGfxPtr->field_17C != NULL) + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + if (gMonSpritesGfxPtr->field_178 != NULL) + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178); + FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx); + FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed); + gMonSpritesGfxPtr->sprites[0] = NULL; + gMonSpritesGfxPtr->sprites[1] = NULL; + gMonSpritesGfxPtr->sprites[2] = NULL; + gMonSpritesGfxPtr->sprites[3] = NULL; + FREE_AND_SET_NULL(gMonSpritesGfxPtr); +} + +bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon) +{ + s16 hp, maxHP; + s32 barLevel; + + if (GetMonData(mon, MON_DATA_STATUS) & (STATUS1_ANY | STATUS1_TOXIC_COUNTER)) + return FALSE; + hp = GetMonData(mon, MON_DATA_HP); + maxHP = GetMonData(mon, MON_DATA_MAX_HP); + barLevel = GetHPBarLevel(hp, maxHP); + if (barLevel <= HP_BAR_YELLOW) + return FALSE; + return TRUE; +} diff --git a/src/pokemon.c b/src/pokemon.c index 6f1df249f..848f258be 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6962,10 +6962,10 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon) u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality); + return GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); } -const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality) +const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 25a8d4515..5f49173dc 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -104,7 +104,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett if (paletteTag == 0xFFFF) { sCreatingSpriteTemplate.paletteTag = 0xFFFF; - LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); } else { @@ -130,7 +130,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) - LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20); else LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20); } diff --git a/sym_common.txt b/sym_common.txt index e875d439b..6e35fb92e 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -120,7 +120,7 @@ gUnknown_3004FD4: @ 3004FD4 gUnknown_3004FE0: @ 3004FE0 .space 0x10 -gUnknown_3004FF0: @ 3004FF0 +gHealthboxSpriteIds: @ 3004FF0 .space 0x4 gUnknown_3004FF4: @ 3004FF4 diff --git a/sym_ewram.txt b/sym_ewram.txt index a32ae4268..72572fbdf 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -196,7 +196,7 @@ gBattlersCount: @ 2023BCC gBattlerPartyIndexes: @ 2023BCE .space 0x8 -gUnknown_2023BD6: @ 2023BD6 +gBattlerPositions: @ 2023BD6 .space 0x4 gUnknown_2023BDA: @ 2023BDA @@ -379,7 +379,7 @@ gBattleWeather: @ 2023F1C gUnknown_2023F20: @ 2023F20 .space 0x2C -gUnknown_2023F4C: @ 2023F4C +gIntroSlideFlags: @ 2023F4C .space 0x2 gUnknown_2023F4E: @ 2023F4E @@ -427,10 +427,10 @@ gBattlerInMenuId: @ 2024004 gUnknown_2024005: @ 2024005 .space 0x3 -gUnknown_2024008: @ 2024008 +gTransformedPersonalities: @ 2024008 .space 0x10 -gUnknown_2024018: @ 2024018 +gBattleSpritesDataPtr: @ 2024018 .space 0x4 gMonSpritesGfxPtr: @ 202401C @@ -703,13 +703,13 @@ gUnknown_2037ED4: @ 2037ED4 gUnknown_2037ED8: @ 2037ED8 .space 0x4 -gUnknown_2037EDC: @ 2037EDC +gAnimScriptCallback: @ 2037EDC .space 0x4 gUnknown_2037EE0: @ 2037EE0 .space 0x1 -gUnknown_2037EE1: @ 2037EE1 +gAnimScriptActive: @ 2037EE1 .space 0x1 gUnknown_2037EE2: @ 2037EE2 From a4263a6bd8fa3a31d2b1de1279414b403a58e28b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 06:47:34 +0800 Subject: [PATCH 003/100] ported battle_controller_safari from pokeem --- asm/battle_1.s | 26 +- asm/battle_2.s | 154 +-- asm/battle_anim_special.s | 16 +- asm/battle_anim_utility_funcs.s | 6 +- asm/battle_controller_link_opponent.s | 228 ++-- asm/battle_controller_link_partner.s | 228 ++-- asm/battle_controller_oak.s | 352 +++--- asm/battle_controller_opponent.s | 240 ++-- asm/battle_controller_player.s | 476 ++++---- asm/battle_controller_pokedude.s | 342 +++--- asm/battle_controller_safari.s | 1534 ------------------------- asm/battle_controllers.s | 84 +- asm/battle_message.s | 12 +- asm/battle_script_commands.s | 168 +-- asm/battle_util.s | 28 +- asm/evolution_scene.s | 28 +- asm/pokeball.s | 12 +- asm/reshow_battle_screen.s | 16 +- data/data.s | 2 +- data/data_83FECCC.s | 6 +- include/battle.h | 51 +- include/battle_message.h | 2 + include/constants/battle_anim.h | 442 +++++++ include/data2.h | 2 +- include/pokeball.h | 1 + include/strings.h | 7 +- ld_script.txt | 4 +- src/battle_controller_safari.c | 677 +++++++++++ sym_common.txt | 4 +- sym_ewram.txt | 8 +- 30 files changed, 2386 insertions(+), 2770 deletions(-) delete mode 100644 asm/battle_controller_safari.s create mode 100644 include/constants/battle_anim.h create mode 100644 src/battle_controller_safari.c diff --git a/asm/battle_1.s b/asm/battle_1.s index 310d1a791..57205b0ab 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -523,7 +523,7 @@ sub_800F5CC: @ 800F5CC bne _0800F5E8 ldr r0, _0800F5E4 @ =gUnknown_83FE883 movs r1, 0x15 - bl sub_80D87BC + bl BattlePutTextOnWindow b _0800F6F0 .align 2, 0 _0800F5E0: .4byte gBattleOutcome @@ -609,10 +609,10 @@ _0800F666: _0800F682: ldr r0, _0800F69C @ =gUnknown_83FE874 movs r1, 0x17 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _0800F6A0 @ =gUnknown_83FE87B movs r1, 0x16 - bl sub_80D87BC + bl BattlePutTextOnWindow b _0800F6F0 .align 2, 0 _0800F694: .4byte gLinkPlayers @@ -635,10 +635,10 @@ _0800F6A4: _0800F6BC: ldr r0, _0800F6D8 @ =gUnknown_83FE874 movs r1, 0x16 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _0800F6DC @ =gUnknown_83FE87B movs r1, 0x17 - bl sub_80D87BC + bl BattlePutTextOnWindow b _0800F6F0 .align 2, 0 _0800F6D0: .4byte gLinkPlayers @@ -648,10 +648,10 @@ _0800F6DC: .4byte gUnknown_83FE87B _0800F6E0: ldr r0, _0800F6F4 @ =gUnknown_83FE874 movs r1, 0x17 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _0800F6F8 @ =gUnknown_83FE87B movs r1, 0x16 - bl sub_80D87BC + bl BattlePutTextOnWindow _0800F6F0: pop {r0} bx r0 @@ -727,14 +727,14 @@ _0800F764: _0800F76E: adds r0, r1, 0 movs r1, 0x11 - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r1, [r4, 0x18] movs r0, 0x4 b _0800F79C _0800F77C: adds r0, r1, 0 movs r1, 0x12 - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r1, [r4, 0x18] movs r0, 0x4 str r0, [sp] @@ -744,7 +744,7 @@ _0800F77C: _0800F790: adds r0, r1, 0 movs r1, 0x13 - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r1, [r4, 0x18] movs r0, 0x8 _0800F79C: @@ -758,7 +758,7 @@ _0800F7A2: _0800F7AA: adds r0, r1, 0 movs r1, 0x14 - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r1, [r4, 0x18] movs r0, 0x8 str r0, [sp] @@ -799,14 +799,14 @@ _0800F7F0: adds r1, r0, r4 adds r0, r1, 0 movs r1, 0xF - bl sub_80D87BC + bl BattlePutTextOnWindow lsls r0, r6, 3 subs r0, r6 lsls r0, 2 adds r1, r0, r4 adds r0, r1, 0 movs r1, 0x10 - bl sub_80D87BC + bl BattlePutTextOnWindow movs r4, 0x7 str r4, [sp] adds r0, r7, 0 diff --git a/asm/battle_2.s b/asm/battle_2.s index 6bd86b091..27dd08f04 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -1295,13 +1295,13 @@ _0801084C: lsls r0, 24 cmp r0, 0 beq _080108B8 - ldr r2, _08010884 @ =gUnknown_3004F80 + ldr r2, _08010884 @ =gPreBattleCallback1 ldr r1, _08010888 @ =gMain ldr r0, [r1] str r0, [r2] ldr r0, _0801088C @ =sub_80123E4 str r0, [r1] - ldr r0, _08010890 @ =sub_8011100 + ldr r0, _08010890 @ =BattleMainCB2 bl SetMainCallback2 ldr r2, _08010894 @ =gBattleTypeFlags ldr r1, [r2] @@ -1315,10 +1315,10 @@ _0801084C: b _080108B8 .align 2, 0 _08010880: .4byte gUnknown_2023E83 -_08010884: .4byte gUnknown_3004F80 +_08010884: .4byte gPreBattleCallback1 _08010888: .4byte gMain _0801088C: .4byte sub_80123E4 -_08010890: .4byte sub_8011100 +_08010890: .4byte BattleMainCB2 _08010894: .4byte gBattleTypeFlags _08010898: ldr r0, _080108C0 @ =gUnknown_2023E82 @@ -2299,13 +2299,13 @@ _08011084: lsls r0, 24 cmp r0, 0 beq _080110F0 - ldr r2, _080110BC @ =gUnknown_3004F80 + ldr r2, _080110BC @ =gPreBattleCallback1 ldr r1, _080110C0 @ =gMain ldr r0, [r1] str r0, [r2] ldr r0, _080110C4 @ =sub_80123E4 str r0, [r1] - ldr r0, _080110C8 @ =sub_8011100 + ldr r0, _080110C8 @ =BattleMainCB2 bl SetMainCallback2 ldr r2, _080110CC @ =gBattleTypeFlags ldr r1, [r2] @@ -2319,10 +2319,10 @@ _08011084: b _080110F0 .align 2, 0 _080110B8: .4byte gUnknown_2023E83 -_080110BC: .4byte gUnknown_3004F80 +_080110BC: .4byte gPreBattleCallback1 _080110C0: .4byte gMain _080110C4: .4byte sub_80123E4 -_080110C8: .4byte sub_8011100 +_080110C8: .4byte BattleMainCB2 _080110CC: .4byte gBattleTypeFlags _080110D0: ldr r0, _080110FC @ =gUnknown_2023E82 @@ -2353,8 +2353,8 @@ _080110F0: _080110FC: .4byte gUnknown_2023E82 thumb_func_end sub_8010BA0 - thumb_func_start sub_8011100 -sub_8011100: @ 8011100 + thumb_func_start BattleMainCB2 +BattleMainCB2: @ 8011100 push {lr} sub sp, 0x4 bl AnimateSprites @@ -2401,13 +2401,13 @@ _08011164: .4byte gBattleTypeFlags _08011168: .4byte gSpecialVar_Result _0801116C: .4byte gBattleOutcome _08011170: .4byte CB2_QuitRecordedBattle - thumb_func_end sub_8011100 + thumb_func_end BattleMainCB2 thumb_func_start FreeRestoreBattleData FreeRestoreBattleData: @ 8011174 push {lr} ldr r1, _080111AC @ =gMain - ldr r0, _080111B0 @ =gUnknown_3004F80 + ldr r0, _080111B0 @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r1] ldr r2, _080111B4 @ =gScanlineEffect @@ -2430,7 +2430,7 @@ FreeRestoreBattleData: @ 8011174 bx r0 .align 2, 0 _080111AC: .4byte gMain -_080111B0: .4byte gUnknown_3004F80 +_080111B0: .4byte gPreBattleCallback1 _080111B4: .4byte gScanlineEffect _080111B8: .4byte 0x00000439 thumb_func_end FreeRestoreBattleData @@ -4803,7 +4803,7 @@ sub_80123E4: @ 80123E4 ldrb r0, [r0] cmp r0, 0 beq _0801241E - ldr r5, _08012430 @ =gUnknown_3004FE0 + ldr r5, _08012430 @ =gBattlerControllerFuncs adds r4, r1, 0 _08012400: ldrb r0, [r4] @@ -4828,7 +4828,7 @@ _0801241E: _08012424: .4byte gUnknown_3004F84 _08012428: .4byte gActiveBattler _0801242C: .4byte gBattlersCount -_08012430: .4byte gUnknown_3004FE0 +_08012430: .4byte gBattlerControllerFuncs thumb_func_end sub_80123E4 thumb_func_start sub_8012434 @@ -4968,7 +4968,7 @@ _08012522: strb r1, [r0] ldr r2, _08012728 @ =gBattleOutcome strb r1, [r2] - ldr r0, _0801272C @ =gUnknown_2023BC8 + ldr r0, _0801272C @ =gBattleControllerExecFlags str r1, [r0] movs r2, 0 ldr r0, _08012730 @ =gUnknown_2023E7E @@ -5195,7 +5195,7 @@ _0801271C: .4byte gSaveBlock2Ptr _08012720: .4byte gBattleScripting _08012724: .4byte gUnknown_2023D72 _08012728: .4byte gBattleOutcome -_0801272C: .4byte gUnknown_2023BC8 +_0801272C: .4byte gBattleControllerExecFlags _08012730: .4byte gUnknown_2023E7E _08012734: .4byte gUnknown_2023E82 _08012738: .4byte gUnknown_2023E7C @@ -5425,7 +5425,7 @@ _080128F0: _0801290C: movs r5, 0 ldr r7, _08012B80 @ =gBattleStruct - ldr r3, _08012B84 @ =gUnknown_2023FF8 + ldr r3, _08012B84 @ =gActionSelectionCursor mov r10, r3 ldr r6, _08012B88 @ =gBattlersCount ldrb r6, [r6] @@ -5747,7 +5747,7 @@ _08012B3C: .align 2, 0 _08012B7C: .4byte gBattleMons _08012B80: .4byte gBattleStruct -_08012B84: .4byte gUnknown_2023FF8 +_08012B84: .4byte gActionSelectionCursor _08012B88: .4byte gBattlersCount _08012B8C: .4byte gUnknown_2023C34 _08012B90: .4byte gBitTable @@ -5776,7 +5776,7 @@ sub_8012BC8: @ 8012BC8 movs r3, 0 ldr r7, _08012F5C @ =gActiveBattler ldr r6, _08012F60 @ =gStatuses3 - ldr r0, _08012F64 @ =gUnknown_2023FF8 + ldr r0, _08012F64 @ =gActionSelectionCursor mov r8, r0 ldr r1, _08012F68 @ =gUnknown_2023FFC mov r9, r1 @@ -6239,7 +6239,7 @@ _08012F04: .align 2, 0 _08012F5C: .4byte gActiveBattler _08012F60: .4byte gStatuses3 -_08012F64: .4byte gUnknown_2023FF8 +_08012F64: .4byte gActionSelectionCursor _08012F68: .4byte gUnknown_2023FFC _08012F6C: .4byte gUnknown_2023E8C _08012F70: .4byte gBattleMons @@ -6288,7 +6288,7 @@ _08012FC0: .align 2, 0 _08012FE0: .4byte gActiveBattler _08012FE4: - ldr r0, _08013008 @ =gUnknown_2023BC8 + ldr r0, _08013008 @ =gBattleControllerExecFlags ldr r2, [r0] cmp r2, 0 bne _0801301A @@ -6306,7 +6306,7 @@ _08012FE4: str r0, [r1] b _0801301A .align 2, 0 -_08013008: .4byte gUnknown_2023BC8 +_08013008: .4byte gBattleControllerExecFlags _0801300C: .4byte gBattlersCount _08013010: .4byte gUnknown_3004F84 _08013014: .4byte BattleIntroPrepareBackgroundSlide @@ -6321,7 +6321,7 @@ _0801301A: thumb_func_start BattleIntroPrepareBackgroundSlide BattleIntroPrepareBackgroundSlide: @ 8013020 push {r4,r5,lr} - ldr r0, _08013058 @ =gUnknown_2023BC8 + ldr r0, _08013058 @ =gBattleControllerExecFlags ldr r5, [r0] cmp r5, 0 bne _08013050 @@ -6346,7 +6346,7 @@ _08013050: pop {r0} bx r0 .align 2, 0 -_08013058: .4byte gUnknown_2023BC8 +_08013058: .4byte gBattleControllerExecFlags _0801305C: .4byte gActiveBattler _08013060: .4byte gUnknown_2022B50 _08013064: .4byte gUnknown_3004F84 @@ -6361,7 +6361,7 @@ sub_8013070: @ 8013070 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _080130D4 @ =gUnknown_2023BC8 + ldr r0, _080130D4 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 beq _08013084 @@ -6409,7 +6409,7 @@ _080130C6: bls _080130C6 b _080131B6 .align 2, 0 -_080130D4: .4byte gUnknown_2023BC8 +_080130D4: .4byte gBattleControllerExecFlags _080130D8: .4byte gActiveBattler _080130DC: .4byte gBattlersCount _080130E0: .4byte gBattleMons @@ -6699,7 +6699,7 @@ BattleIntroDrawPartySummaryScreens: @ 801333C mov r7, r8 push {r7} sub sp, 0x30 - ldr r0, _08013394 @ =gUnknown_2023BC8 + ldr r0, _08013394 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0801334E @@ -6742,7 +6742,7 @@ _0801338C: movs r0, 0 b _080133B6 .align 2, 0 -_08013394: .4byte gUnknown_2023BC8 +_08013394: .4byte gBattleControllerExecFlags _08013398: .4byte gBattleTypeFlags _0801339C: .4byte gEnemyParty _080133A0: .4byte 0x0000ffff @@ -6897,7 +6897,7 @@ _080134D8: .4byte sub_8013514 thumb_func_start BattleIntroPrintTrainerWantsToBattle BattleIntroPrintTrainerWantsToBattle: @ 80134DC push {lr} - ldr r0, _08013504 @ =gUnknown_2023BC8 + ldr r0, _08013504 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _080134FE @@ -6915,7 +6915,7 @@ _080134FE: pop {r0} bx r0 .align 2, 0 -_08013504: .4byte gUnknown_2023BC8 +_08013504: .4byte gBattleControllerExecFlags _08013508: .4byte gActiveBattler _0801350C: .4byte gUnknown_3004F84 _08013510: .4byte sub_8013568 @@ -6924,7 +6924,7 @@ _08013510: .4byte sub_8013568 thumb_func_start sub_8013514 sub_8013514: @ 8013514 push {lr} - ldr r0, _08013550 @ =gUnknown_2023BC8 + ldr r0, _08013550 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801354A @@ -6951,7 +6951,7 @@ _0801354A: pop {r0} bx r0 .align 2, 0 -_08013550: .4byte gUnknown_2023BC8 +_08013550: .4byte gBattleControllerExecFlags _08013554: .4byte gUnknown_3004F84 _08013558: .4byte sub_80136E4 _0801355C: .4byte gBattleTypeFlags @@ -6962,7 +6962,7 @@ _08013564: .4byte gUnknown_81D91A1 thumb_func_start sub_8013568 sub_8013568: @ 8013568 push {lr} - ldr r0, _08013590 @ =gUnknown_2023BC8 + ldr r0, _08013590 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801358A @@ -6980,7 +6980,7 @@ _0801358A: pop {r0} bx r0 .align 2, 0 -_08013590: .4byte gUnknown_2023BC8 +_08013590: .4byte gBattleControllerExecFlags _08013594: .4byte gUnknown_3004F84 _08013598: .4byte sub_801359C thumb_func_end sub_8013568 @@ -6988,7 +6988,7 @@ _08013598: .4byte sub_801359C thumb_func_start sub_801359C sub_801359C: @ 801359C push {r4,lr} - ldr r0, _08013614 @ =gUnknown_2023BC8 + ldr r0, _08013614 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 bne _0801360C @@ -7046,7 +7046,7 @@ _0801360C: pop {r0} bx r0 .align 2, 0 -_08013614: .4byte gUnknown_2023BC8 +_08013614: .4byte gBattleControllerExecFlags _08013618: .4byte gActiveBattler _0801361C: .4byte gBattlersCount _08013620: .4byte gBattleTypeFlags @@ -7057,7 +7057,7 @@ _08013628: .4byte sub_801362C thumb_func_start sub_801362C sub_801362C: @ 801362C push {r4-r7,lr} - ldr r0, _080136A4 @ =gUnknown_2023BC8 + ldr r0, _080136A4 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 bne _0801369C @@ -7117,7 +7117,7 @@ _0801369C: pop {r0} bx r0 .align 2, 0 -_080136A4: .4byte gUnknown_2023BC8 +_080136A4: .4byte gBattleControllerExecFlags _080136A8: .4byte gActiveBattler _080136AC: .4byte gBattlersCount _080136B0: .4byte gBattleMons @@ -7130,7 +7130,7 @@ _080136C0: .4byte sub_80136E4 thumb_func_start sub_80136C4 sub_80136C4: @ 80136C4 push {lr} - ldr r0, _080136D8 @ =gUnknown_2023BC8 + ldr r0, _080136D8 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _080136D4 @@ -7141,7 +7141,7 @@ _080136D4: pop {r0} bx r0 .align 2, 0 -_080136D8: .4byte gUnknown_2023BC8 +_080136D8: .4byte gBattleControllerExecFlags _080136DC: .4byte gUnknown_3004F84 _080136E0: .4byte sub_80136E4 thumb_func_end sub_80136C4 @@ -7149,7 +7149,7 @@ _080136E0: .4byte sub_80136E4 thumb_func_start sub_80136E4 sub_80136E4: @ 80136E4 push {lr} - ldr r0, _08013718 @ =gUnknown_2023BC8 + ldr r0, _08013718 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08013712 @@ -7174,7 +7174,7 @@ _08013712: pop {r0} bx r0 .align 2, 0 -_08013718: .4byte gUnknown_2023BC8 +_08013718: .4byte gBattleControllerExecFlags _0801371C: .4byte gBattleTypeFlags _08013720: .4byte gUnknown_3004F84 _08013724: .4byte sub_8013728 @@ -7183,7 +7183,7 @@ _08013724: .4byte sub_8013728 thumb_func_start sub_8013728 sub_8013728: @ 8013728 push {r4,lr} - ldr r0, _080137B4 @ =gUnknown_2023BC8 + ldr r0, _080137B4 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 bne _080137AC @@ -7251,7 +7251,7 @@ _080137AC: pop {r0} bx r0 .align 2, 0 -_080137B4: .4byte gUnknown_2023BC8 +_080137B4: .4byte gBattleControllerExecFlags _080137B8: .4byte gActiveBattler _080137BC: .4byte gBattlersCount _080137C0: .4byte gBattleTypeFlags @@ -7263,7 +7263,7 @@ _080137CC: .4byte sub_801385C thumb_func_start sub_80137D0 sub_80137D0: @ 80137D0 push {r4,r5,lr} - ldr r0, _08013840 @ =gUnknown_2023BC8 + ldr r0, _08013840 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 bne _0801383A @@ -7320,7 +7320,7 @@ _0801383A: pop {r0} bx r0 .align 2, 0 -_08013840: .4byte gUnknown_2023BC8 +_08013840: .4byte gBattleControllerExecFlags _08013844: .4byte gActiveBattler _08013848: .4byte gBattlersCount _0801384C: .4byte gBattlerPartyIndexes @@ -7338,7 +7338,7 @@ sub_801385C: @ 801385C sub sp, 0x8 movs r0, 0 mov r9, r0 - ldr r0, _080138A0 @ =gUnknown_2023BC8 + ldr r0, _080138A0 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _08013874 @@ -7368,7 +7368,7 @@ _0801389A: movs r5, 0 b _080138F0 .align 2, 0 -_080138A0: .4byte gUnknown_2023BC8 +_080138A0: .4byte gBattleControllerExecFlags _080138A4: .4byte gBattleStruct _080138A8: .4byte gBattlersCount _080138AC: .4byte gUnknown_2023BDE @@ -7685,7 +7685,7 @@ _08013B18: .4byte gUnknown_2023E80 thumb_func_start sub_8013B1C sub_8013B1C: @ 8013B1C push {r4-r6,lr} - ldr r0, _08013BB4 @ =gUnknown_2023BC8 + ldr r0, _08013BB4 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08013BAC @@ -7764,7 +7764,7 @@ _08013BAC: pop {r0} bx r0 .align 2, 0 -_08013BB4: .4byte gUnknown_2023BC8 +_08013BB4: .4byte gBattleControllerExecFlags _08013BB8: .4byte gUnknown_3004F84 _08013BBC: .4byte sub_8013BD4 _08013BC0: .4byte gBattlersCount @@ -8515,7 +8515,7 @@ _080141BC: _080141D4: .4byte gUnknown_2023D7C _080141D8: .4byte gUnknown_20233C4 _080141DC: - ldr r4, _08014234 @ =gUnknown_2023BC8 + ldr r4, _08014234 @ =gBattleControllerExecFlags ldr r1, _08014238 @ =gBitTable ldr r3, _0801423C @ =gActiveBattler ldrb r5, [r3] @@ -8560,7 +8560,7 @@ _08014228: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08014234: .4byte gUnknown_2023BC8 +_08014234: .4byte gBattleControllerExecFlags _08014238: .4byte gBitTable _0801423C: .4byte gActiveBattler _08014240: .4byte gUnknown_2023D7C @@ -9162,7 +9162,7 @@ _08014750: _0801475C: .4byte gUnknown_2023E82 _08014760: .4byte gActiveBattler _08014764: - ldr r4, _080147A8 @ =gUnknown_2023BC8 + ldr r4, _080147A8 @ =gBattleControllerExecFlags ldr r1, _080147AC @ =gBitTable ldr r3, _080147B0 @ =gActiveBattler ldrb r5, [r3] @@ -9199,7 +9199,7 @@ _0801479E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080147A8: .4byte gUnknown_2023BC8 +_080147A8: .4byte gBattleControllerExecFlags _080147AC: .4byte gBitTable _080147B0: .4byte gActiveBattler _080147B4: .4byte gUnknown_2023D7C @@ -9552,7 +9552,7 @@ _08014A8C: _08014A98: .4byte gUnknown_2023E82 _08014A9C: .4byte gActiveBattler _08014AA0: - ldr r3, _08014B08 @ =gUnknown_2023BC8 + ldr r3, _08014B08 @ =gBattleControllerExecFlags ldr r4, _08014B0C @ =gBitTable ldr r0, _08014B10 @ =gActiveBattler ldrb r0, [r0] @@ -9605,7 +9605,7 @@ _08014AFE: bl EmitLinkStandbyMsg b _08014B24 .align 2, 0 -_08014B08: .4byte gUnknown_2023BC8 +_08014B08: .4byte gBattleControllerExecFlags _08014B0C: .4byte gBitTable _08014B10: .4byte gActiveBattler _08014B14: .4byte gBattleTypeFlags @@ -9632,7 +9632,7 @@ _08014B32: _08014B3C: .4byte gActiveBattler _08014B40: .4byte gUnknown_2023E82 _08014B44: - ldr r3, _08014B78 @ =gUnknown_2023BC8 + ldr r3, _08014B78 @ =gBattleControllerExecFlags ldr r1, _08014B7C @ =gBitTable ldr r0, _08014B80 @ =gActiveBattler ldrb r0, [r0] @@ -9658,7 +9658,7 @@ _08014B44: strb r0, [r1, 0x4] b _08014C4E .align 2, 0 -_08014B78: .4byte gUnknown_2023BC8 +_08014B78: .4byte gBattleControllerExecFlags _08014B7C: .4byte gBitTable _08014B80: .4byte gActiveBattler _08014B84: .4byte gUnknown_2023E82 @@ -9693,7 +9693,7 @@ _08014BB4: adds r0, r6 ldr r4, [r0] str r4, [r7] - ldr r3, _08014C14 @ =gUnknown_2023BC8 + ldr r3, _08014C14 @ =gBattleControllerExecFlags ldr r1, _08014C18 @ =gBitTable ldrb r0, [r5] lsls r0, 2 @@ -9729,11 +9729,11 @@ _08014BFA: _08014C08: .4byte sBattler_AI _08014C0C: .4byte gUnknown_2023D74 _08014C10: .4byte gUnknown_2023D80 -_08014C14: .4byte gUnknown_2023BC8 +_08014C14: .4byte gBattleControllerExecFlags _08014C18: .4byte gBitTable _08014C1C: .4byte gUnknown_825011C _08014C20: - ldr r3, _08014C88 @ =gUnknown_2023BC8 + ldr r3, _08014C88 @ =gBattleControllerExecFlags ldr r1, _08014C8C @ =gBitTable ldr r0, _08014C90 @ =gActiveBattler ldrb r4, [r0] @@ -9789,7 +9789,7 @@ _08014C78: pop {r0} bx r0 .align 2, 0 -_08014C88: .4byte gUnknown_2023BC8 +_08014C88: .4byte gBattleControllerExecFlags _08014C8C: .4byte gBitTable _08014C90: .4byte gActiveBattler _08014C94: .4byte gUnknown_2023E82 @@ -11449,7 +11449,7 @@ _080159D0: ldr r0, _080159F8 @ =sub_8015A30 str r0, [r1] ldr r1, _080159FC @ =gUnknown_300537C - ldr r0, _08015A00 @ =sub_8011100 + ldr r0, _08015A00 @ =BattleMainCB2 str r0, [r1] b _08015A1E .align 2, 0 @@ -11458,9 +11458,9 @@ _080159F0: .4byte gBattleTypeFlags _080159F4: .4byte gUnknown_3004F84 _080159F8: .4byte sub_8015A30 _080159FC: .4byte gUnknown_300537C -_08015A00: .4byte sub_8011100 +_08015A00: .4byte BattleMainCB2 _08015A04: - ldr r0, _08015A24 @ =gUnknown_2023BC8 + ldr r0, _08015A24 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08015A1E @@ -11477,7 +11477,7 @@ _08015A1E: pop {r0} bx r0 .align 2, 0 -_08015A24: .4byte gUnknown_2023BC8 +_08015A24: .4byte gBattleControllerExecFlags _08015A28: .4byte gUnknown_825011C _08015A2C: .4byte gUnknown_2023D74 thumb_func_end sub_8015910 @@ -11611,7 +11611,7 @@ sub_8015B30: @ 8015B30 push {lr} ldr r0, _08015B48 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _08015B4C @ =sub_8011100 + ldr r0, _08015B4C @ =BattleMainCB2 cmp r1, r0 bne _08015B42 ldr r1, _08015B50 @ =gUnknown_3004F84 @@ -11622,7 +11622,7 @@ _08015B42: bx r0 .align 2, 0 _08015B48: .4byte gMain -_08015B4C: .4byte sub_8011100 +_08015B4C: .4byte BattleMainCB2 _08015B50: .4byte gUnknown_3004F84 _08015B54: .4byte sub_8015AA0 thumb_func_end sub_8015B30 @@ -11664,7 +11664,7 @@ _08015B86: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, _08015BF8 @ =gUnknown_3004F80 + ldr r0, _08015BF8 @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] movs r0, 0x80 @@ -11701,7 +11701,7 @@ _08015BE8: .4byte gSpecialVar_Result _08015BEC: .4byte gBattleOutcome _08015BF0: .4byte gMain _08015BF4: .4byte 0x00000439 -_08015BF8: .4byte gUnknown_3004F80 +_08015BF8: .4byte gPreBattleCallback1 _08015BFC: .4byte gEnemyParty thumb_func_end ReturnFromBattleToOverworld @@ -11742,7 +11742,7 @@ _08015C3C: .4byte gUnknown_2023BE3 _08015C40: .4byte gBattleResources _08015C44: .4byte gUnknown_3004F84 _08015C48: - ldr r0, _08015C68 @ =gUnknown_2023BC8 + ldr r0, _08015C68 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08015C62 @@ -11758,7 +11758,7 @@ _08015C62: pop {r0} bx r0 .align 2, 0 -_08015C68: .4byte gUnknown_2023BC8 +_08015C68: .4byte gBattleControllerExecFlags _08015C6C: .4byte gUnknown_825011C _08015C70: .4byte gUnknown_2023D74 thumb_func_end RunBattleScriptCommands_PopCallbacksStack @@ -11766,7 +11766,7 @@ _08015C70: .4byte gUnknown_2023D74 thumb_func_start sub_8015C74 sub_8015C74: @ 8015C74 push {lr} - ldr r0, _08015C94 @ =gUnknown_2023BC8 + ldr r0, _08015C94 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08015C90 @@ -11782,7 +11782,7 @@ _08015C90: pop {r0} bx r0 .align 2, 0 -_08015C94: .4byte gUnknown_2023BC8 +_08015C94: .4byte gBattleControllerExecFlags _08015C98: .4byte gUnknown_825011C _08015C9C: .4byte gUnknown_2023D74 thumb_func_end sub_8015C74 @@ -12615,7 +12615,7 @@ sub_8016374: @ 8016374 strh r2, [r0] ldr r0, _080163F0 @ =gBattle_BG0_Y strh r2, [r0] - ldr r1, _080163F4 @ =gUnknown_2023FF8 + ldr r1, _080163F4 @ =gActionSelectionCursor ldrb r0, [r3] adds r0, r1 strb r2, [r0] @@ -12663,7 +12663,7 @@ _080163E4: .4byte gUnknown_2023BDE _080163E8: .4byte gUnknown_2023BE2 _080163EC: .4byte gBattle_BG0_X _080163F0: .4byte gBattle_BG0_Y -_080163F4: .4byte gUnknown_2023FF8 +_080163F4: .4byte gActionSelectionCursor _080163F8: .4byte gUnknown_2023FFC _080163FC: .4byte gBattleTextBuff1 _08016400: .4byte gBattleStruct diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index f047db552..cf27334ca 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -2538,7 +2538,7 @@ _080F0008: _080F0026: cmp r1, 0x5F bne _080F004C - ldr r0, _080F0044 @ =gUnknown_2024005 + ldr r0, _080F0044 @ =gDoingBattleAnim movs r1, 0 strb r1, [r0] movs r0, 0x1 @@ -2548,7 +2548,7 @@ _080F0026: bl PlaySE b _080F0088 .align 2, 0 -_080F0044: .4byte gUnknown_2024005 +_080F0044: .4byte gDoingBattleAnim _080F0048: .4byte 0x0000013f _080F004C: ldr r0, _080F0094 @ =0x0000013b @@ -3062,7 +3062,7 @@ _080F03F0: strh r5, [r7, 0x2E] ldr r0, _080F0470 @ =sub_80F018C str r0, [r7, 0x1C] - ldr r0, _080F0474 @ =gUnknown_2024005 + ldr r0, _080F0474 @ =gDoingBattleAnim strb r6, [r0] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes @@ -3077,7 +3077,7 @@ _080F0464: .4byte gBattlerSpriteIds _080F0468: .4byte gBattleAnimTarget _080F046C: .4byte gBattleSpritesDataPtr _080F0470: .4byte sub_80F018C -_080F0474: .4byte gUnknown_2024005 +_080F0474: .4byte gDoingBattleAnim thumb_func_end sub_80F0378 thumb_func_start sub_80F0478 @@ -3164,7 +3164,7 @@ _080F050A: strh r0, [r4, 0x2E] ldr r0, _080F0524 @ =sub_80F018C str r0, [r4, 0x1C] - ldr r1, _080F0528 @ =gUnknown_2024005 + ldr r1, _080F0528 @ =gDoingBattleAnim movs r0, 0 strb r0, [r1] movs r0, 0x1 @@ -3175,7 +3175,7 @@ _080F051E: bx r0 .align 2, 0 _080F0524: .4byte sub_80F018C -_080F0528: .4byte gUnknown_2024005 +_080F0528: .4byte gDoingBattleAnim thumb_func_end sub_80F04B4 thumb_func_start sub_80F052C @@ -3237,7 +3237,7 @@ _080F0590: strh r0, [r4, 0x2E] ldr r0, _080F05AC @ =sub_80F018C str r0, [r4, 0x1C] - ldr r0, _080F05B0 @ =gUnknown_2024005 + ldr r0, _080F05B0 @ =gDoingBattleAnim strb r1, [r0] movs r0, 0x1 bl UpdateOamPriorityInAllHealthboxes @@ -3247,7 +3247,7 @@ _080F05A4: bx r0 .align 2, 0 _080F05AC: .4byte sub_80F018C -_080F05B0: .4byte gUnknown_2024005 +_080F05B0: .4byte gDoingBattleAnim thumb_func_end sub_80F0574 thumb_func_start sub_80F05B4 diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s index a52931868..82b94cf6a 100644 --- a/asm/battle_anim_utility_funcs.s +++ b/asm/battle_anim_utility_funcs.s @@ -3488,8 +3488,8 @@ _080BC396: bx r1 thumb_func_end sub_80BC30C - thumb_func_start sub_80BC3A0 -sub_80BC3A0: @ 80BC3A0 + thumb_func_start HandleIntroSlide +HandleIntroSlide: @ 80BC3A0 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -3549,7 +3549,7 @@ _080BC3E8: .align 2, 0 _080BC414: .4byte gUnknown_83E7CD4 _080BC418: .4byte gTasks - thumb_func_end sub_80BC3A0 + thumb_func_end HandleIntroSlide thumb_func_start sub_80BC41C sub_80BC41C: @ 80BC41C diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index 86712cef4..6ac812e58 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -12,7 +12,7 @@ nullsub_19: @ 803A664 thumb_func_start sub_803A668 sub_803A668: @ 803A668 - ldr r1, _0803A678 @ =gUnknown_3004FE0 + ldr r1, _0803A678 @ =gBattlerControllerFuncs ldr r0, _0803A67C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -21,7 +21,7 @@ sub_803A668: @ 803A668 str r1, [r0] bx lr .align 2, 0 -_0803A678: .4byte gUnknown_3004FE0 +_0803A678: .4byte gBattlerControllerFuncs _0803A67C: .4byte gActiveBattler _0803A680: .4byte sub_803A684 thumb_func_end sub_803A668 @@ -29,7 +29,7 @@ _0803A680: .4byte sub_803A684 thumb_func_start sub_803A684 sub_803A684: @ 803A684 push {lr} - ldr r2, _0803A6B8 @ =gUnknown_2023BC8 + ldr r2, _0803A6B8 @ =gBattleControllerExecFlags ldr r1, _0803A6BC @ =gBitTable ldr r0, _0803A6C0 @ =gActiveBattler ldrb r3, [r0] @@ -40,7 +40,7 @@ sub_803A684: @ 803A684 ands r1, r0 cmp r1, 0 beq _0803A6D0 - ldr r0, _0803A6C4 @ =gUnknown_2022BC4 + ldr r0, _0803A6C4 @ =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] @@ -54,10 +54,10 @@ sub_803A684: @ 803A684 bl _call_via_r0 b _0803A6D0 .align 2, 0 -_0803A6B8: .4byte gUnknown_2023BC8 +_0803A6B8: .4byte gBattleControllerExecFlags _0803A6BC: .4byte gBitTable _0803A6C0: .4byte gActiveBattler -_0803A6C4: .4byte gUnknown_2022BC4 +_0803A6C4: .4byte gBattleBufferA _0803A6C8: .4byte gUnknown_8250B20 _0803A6CC: bl RecordedOpponentBufferExecCompleted @@ -411,7 +411,7 @@ _0803A988: adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] - ldr r1, _0803A9C4 @ =gUnknown_3004FE0 + ldr r1, _0803A9C4 @ =gBattlerControllerFuncs ldrb r0, [r3] lsls r0, 2 adds r0, r1 @@ -428,7 +428,7 @@ _0803A9B4: .4byte gMPlayInfo_BGM _0803A9B8: .4byte 0x0000ffff _0803A9BC: .4byte gBattleSpritesDataPtr _0803A9C0: .4byte gActiveBattler -_0803A9C4: .4byte gUnknown_3004FE0 +_0803A9C4: .4byte gBattlerControllerFuncs _0803A9C8: .4byte sub_803A79C thumb_func_end sub_803A7E4 @@ -683,7 +683,7 @@ _0803AB50: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _0803AC0C @ =gUnknown_3004FE0 + ldr r1, _0803AC0C @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -706,7 +706,7 @@ _0803ABFC: .4byte gBattleTypeFlags _0803AC00: .4byte gUnknown_3004FFC _0803AC04: .4byte gSprites _0803AC08: .4byte gHealthboxSpriteIds -_0803AC0C: .4byte gUnknown_3004FE0 +_0803AC0C: .4byte gBattlerControllerFuncs _0803AC10: .4byte sub_803A7E4 thumb_func_end sub_803A9CC @@ -965,7 +965,7 @@ DoHitAnimBlinkSpriteEffect_4: @ 803ADF0 subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _0803AE38 @ =gUnknown_2024005 + ldr r0, _0803AE38 @ =gDoingBattleAnim strb r3, [r0] bl RecordedOpponentBufferExecCompleted b _0803AE66 @@ -973,7 +973,7 @@ DoHitAnimBlinkSpriteEffect_4: @ 803ADF0 _0803AE2C: .4byte gBattlerSpriteIds _0803AE30: .4byte gActiveBattler _0803AE34: .4byte gSprites -_0803AE38: .4byte gUnknown_2024005 +_0803AE38: .4byte gDoingBattleAnim _0803AE3C: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -1037,7 +1037,7 @@ sub_803AE6C: @ 803AE6C movs r3, 0x6 bl InitAndLaunchSpecialAnimation _0803AEAC: - ldr r0, _0803AED4 @ =gUnknown_3004FE0 + ldr r0, _0803AED4 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -1053,7 +1053,7 @@ _0803AEC4: .4byte gHealthboxSpriteIds _0803AEC8: .4byte gActiveBattler _0803AECC: .4byte SpriteCallbackDummy _0803AED0: .4byte gBattleSpritesDataPtr -_0803AED4: .4byte gUnknown_3004FE0 +_0803AED4: .4byte gBattlerControllerFuncs _0803AED8: .4byte sub_803AEDC thumb_func_end sub_803AE6C @@ -1165,7 +1165,7 @@ sub_803AF28: @ 803AF28 bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility - ldr r1, _0803AFF4 @ =gUnknown_3004FE0 + ldr r1, _0803AFF4 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -1184,7 +1184,7 @@ _0803AFE4: .4byte gSprites _0803AFE8: .4byte gHealthboxSpriteIds _0803AFEC: .4byte gBattlerPartyIndexes _0803AFF0: .4byte gEnemyParty -_0803AFF4: .4byte gUnknown_3004FE0 +_0803AFF4: .4byte gBattlerControllerFuncs _0803AFF8: .4byte sub_803AE6C thumb_func_end sub_803AF28 @@ -1259,7 +1259,7 @@ _0803B02E: lsrs r1, 16 adds r0, r4, 0 bl SetBattlerShadowSpriteCallback - ldr r1, _0803B0BC @ =gUnknown_3004FE0 + ldr r1, _0803B0BC @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -1277,7 +1277,7 @@ _0803B0AC: .4byte gEnemyParty _0803B0B0: .4byte gSprites _0803B0B4: .4byte gUnknown_3004FFC _0803B0B8: .4byte SpriteCallbackDummy -_0803B0BC: .4byte gUnknown_3004FE0 +_0803B0BC: .4byte gBattlerControllerFuncs _0803B0C0: .4byte sub_803AF28 thumb_func_end sub_803AFFC @@ -1337,7 +1337,7 @@ _0803B120: .4byte gActiveBattler RecordedOpponentBufferExecCompleted: @ 803B124 push {r4,lr} sub sp, 0x4 - ldr r1, _0803B164 @ =gUnknown_3004FE0 + ldr r1, _0803B164 @ =gBattlerControllerFuncs ldr r4, _0803B168 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -1357,7 +1357,7 @@ RecordedOpponentBufferExecCompleted: @ 803B124 movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink - ldr r1, _0803B174 @ =gUnknown_2022BC4 + ldr r1, _0803B174 @ =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 @@ -1365,13 +1365,13 @@ RecordedOpponentBufferExecCompleted: @ 803B124 strb r1, [r0] b _0803B18A .align 2, 0 -_0803B164: .4byte gUnknown_3004FE0 +_0803B164: .4byte gBattlerControllerFuncs _0803B168: .4byte gActiveBattler _0803B16C: .4byte sub_803A684 _0803B170: .4byte gBattleTypeFlags -_0803B174: .4byte gUnknown_2022BC4 +_0803B174: .4byte gBattleBufferA _0803B178: - ldr r2, _0803B194 @ =gUnknown_2023BC8 + ldr r2, _0803B194 @ =gBattleControllerExecFlags ldr r1, _0803B198 @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -1386,7 +1386,7 @@ _0803B18A: pop {r0} bx r0 .align 2, 0 -_0803B194: .4byte gUnknown_2023BC8 +_0803B194: .4byte gBattleControllerExecFlags _0803B198: .4byte gBitTable thumb_func_end RecordedOpponentBufferExecCompleted @@ -1395,7 +1395,7 @@ RecordedOpponentHandleGetMonData: @ 803B19C push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _0803B1C8 @ =gUnknown_2022BC4 + ldr r1, _0803B1C8 @ =gBattleBufferA ldr r0, _0803B1CC @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -1413,7 +1413,7 @@ RecordedOpponentHandleGetMonData: @ 803B19C adds r6, r0, 0 b _0803B1F6 .align 2, 0 -_0803B1C8: .4byte gUnknown_2022BC4 +_0803B1C8: .4byte gBattleBufferA _0803B1CC: .4byte gActiveBattler _0803B1D0: .4byte gBattlerPartyIndexes _0803B1D4: @@ -1460,7 +1460,7 @@ CopyRecordedOpponentMonData: @ 803B210 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 - ldr r2, _0803B244 @ =gUnknown_2022BC4 + ldr r2, _0803B244 @ =gBattleBufferA ldr r3, _0803B248 @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 @@ -1477,7 +1477,7 @@ _0803B23A: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0803B244: .4byte gUnknown_2022BC4 +_0803B244: .4byte gBattleBufferA _0803B248: .4byte gActiveBattler _0803B24C: .4byte _0803B250 .align 2, 0 @@ -2393,7 +2393,7 @@ sub_803B9BC: @ 803B9BC thumb_func_start RecordedOpponentHandleSetMonData RecordedOpponentHandleSetMonData: @ 803B9C8 push {r4,r5,lr} - ldr r1, _0803B9EC @ =gUnknown_2022BC4 + ldr r1, _0803B9EC @ =gBattleBufferA ldr r0, _0803B9F0 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2409,7 +2409,7 @@ RecordedOpponentHandleSetMonData: @ 803B9C8 bl SetRecordedOpponentMonData b _0803BA16 .align 2, 0 -_0803B9EC: .4byte gUnknown_2022BC4 +_0803B9EC: .4byte gBattleBufferA _0803B9F0: .4byte gActiveBattler _0803B9F4: .4byte gBattlerPartyIndexes _0803B9F8: @@ -2786,7 +2786,7 @@ _0803BD78: muls r0, r5 ldr r1, _0803BD90 @ =gEnemyParty adds r0, r1 - ldr r3, _0803BD94 @ =gUnknown_2022BC4 + ldr r3, _0803BD94 @ =gBattleBufferA ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 @@ -2796,7 +2796,7 @@ _0803BD78: b _0803BE16 .align 2, 0 _0803BD90: .4byte gEnemyParty -_0803BD94: .4byte gUnknown_2022BC4 +_0803BD94: .4byte gBattleBufferA _0803BD98: movs r0, 0x64 adds r4, r5, 0 @@ -2850,7 +2850,7 @@ _0803BE00: muls r0, r5 ldr r1, _0803BE20 @ =gEnemyParty adds r0, r1 - ldr r3, _0803BE24 @ =gUnknown_2022BC4 + ldr r3, _0803BE24 @ =gBattleBufferA ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 @@ -2864,7 +2864,7 @@ _0803BE16: b _0803C32C .align 2, 0 _0803BE20: .4byte gEnemyParty -_0803BE24: .4byte gUnknown_2022BC4 +_0803BE24: .4byte gBattleBufferA _0803BE28: movs r0, 0x64 muls r0, r5 @@ -3488,7 +3488,7 @@ RecordedOpponentHandleSetRawMonData: @ 803C340 movs r0, 0x64 adds r3, r1, 0 muls r3, r0 - ldr r4, _0803C3AC @ =gUnknown_2022BC4 + ldr r4, _0803C3AC @ =gBattleBufferA lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 @@ -3531,7 +3531,7 @@ _0803C398: .align 2, 0 _0803C3A4: .4byte gBattlerPartyIndexes _0803C3A8: .4byte gActiveBattler -_0803C3AC: .4byte gUnknown_2022BC4 +_0803C3AC: .4byte gBattleBufferA _0803C3B0: .4byte gEnemyParty thumb_func_end RecordedOpponentHandleSetRawMonData @@ -3660,7 +3660,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4 lsrs r1, 16 adds r0, r4, 0 bl SetBattlerShadowSpriteCallback - ldr r1, _0803C4FC @ =gUnknown_3004FE0 + ldr r1, _0803C4FC @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -3682,7 +3682,7 @@ _0803C4EC: .4byte gBattlerSpriteIds _0803C4F0: .4byte gSprites _0803C4F4: .4byte 0x0000ff10 _0803C4F8: .4byte gBattleMonForms -_0803C4FC: .4byte gUnknown_3004FE0 +_0803C4FC: .4byte gBattlerControllerFuncs _0803C500: .4byte sub_803AC14 thumb_func_end LinkOpponentHandleLoadPokeSprite @@ -3694,7 +3694,7 @@ LinkOpponentHandleSendOutPoke: @ 803C504 ldrb r0, [r4] lsls r2, r0, 1 adds r2, r1 - ldr r3, _0803C544 @ =gUnknown_2022BC4 + ldr r3, _0803C544 @ =gBattleBufferA lsls r0, 9 adds r1, r3, 0x1 adds r0, r1 @@ -3706,7 +3706,7 @@ LinkOpponentHandleSendOutPoke: @ 803C504 adds r1, r3 ldrb r1, [r1] bl sub_803C550 - ldr r1, _0803C548 @ =gUnknown_3004FE0 + ldr r1, _0803C548 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -3718,8 +3718,8 @@ LinkOpponentHandleSendOutPoke: @ 803C504 .align 2, 0 _0803C53C: .4byte gBattlerPartyIndexes _0803C540: .4byte gActiveBattler -_0803C544: .4byte gUnknown_2022BC4 -_0803C548: .4byte gUnknown_3004FE0 +_0803C544: .4byte gBattleBufferA +_0803C548: .4byte gBattlerControllerFuncs _0803C54C: .4byte sub_803AFFC thumb_func_end LinkOpponentHandleSendOutPoke @@ -3740,7 +3740,7 @@ sub_803C550: @ 803C550 ldr r0, _0803C6AC @ =gBattlerPartyIndexes lsls r4, r6, 1 adds r4, r0 - ldr r0, _0803C6B0 @ =gUnknown_2022BC4 + ldr r0, _0803C6B0 @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -3888,7 +3888,7 @@ sub_803C550: @ 803C550 bx r0 .align 2, 0 _0803C6AC: .4byte gBattlerPartyIndexes -_0803C6B0: .4byte gUnknown_2022BC4 +_0803C6B0: .4byte gBattleBufferA _0803C6B4: .4byte gEnemyParty _0803C6B8: .4byte sub_8033E3C _0803C6BC: .4byte gUnknown_3004FFC @@ -3902,7 +3902,7 @@ _0803C6D0: .4byte SpriteCallbackDummy thumb_func_start LinkOpponentHandleReturnPokeToBall LinkOpponentHandleReturnPokeToBall: @ 803C6D4 push {r4-r6,lr} - ldr r1, _0803C708 @ =gUnknown_2022BC4 + ldr r1, _0803C708 @ =gBattleBufferA ldr r6, _0803C70C @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 @@ -3919,7 +3919,7 @@ LinkOpponentHandleReturnPokeToBall: @ 803C6D4 lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] - ldr r1, _0803C714 @ =gUnknown_3004FE0 + ldr r1, _0803C714 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -3927,10 +3927,10 @@ LinkOpponentHandleReturnPokeToBall: @ 803C6D4 str r1, [r0] b _0803C758 .align 2, 0 -_0803C708: .4byte gUnknown_2022BC4 +_0803C708: .4byte gBattleBufferA _0803C70C: .4byte gActiveBattler _0803C710: .4byte gBattleSpritesDataPtr -_0803C714: .4byte gUnknown_3004FE0 +_0803C714: .4byte gBattlerControllerFuncs _0803C718: .4byte sub_803C76C _0803C71C: ldr r5, _0803C760 @ =gBattlerSpriteIds @@ -4027,7 +4027,7 @@ _0803C7C2: adds r1, r2, 0 movs r3, 0x2 bl InitAndLaunchSpecialAnimation - ldr r1, _0803C7F0 @ =gUnknown_3004FE0 + ldr r1, _0803C7F0 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4038,7 +4038,7 @@ _0803C7EA: pop {r0} bx r0 .align 2, 0 -_0803C7F0: .4byte gUnknown_3004FE0 +_0803C7F0: .4byte gBattlerControllerFuncs _0803C7F4: .4byte sub_803AD64 thumb_func_end sub_803C76C @@ -4374,7 +4374,7 @@ _0803C992: adds r0, r4 ldr r1, _0803CAF4 @ =sub_8033EEC str r1, [r0] - ldr r1, _0803CAF8 @ =gUnknown_3004FE0 + ldr r1, _0803CAF8 @ =gBattlerControllerFuncs mov r2, r8 ldrb r0, [r2] lsls r0, 2 @@ -4400,7 +4400,7 @@ _0803CAE8: .4byte gTrainerFrontPicTable _0803CAEC: .4byte 0x000003ff _0803CAF0: .4byte 0xfffffc00 _0803CAF4: .4byte sub_8033EEC -_0803CAF8: .4byte gUnknown_3004FE0 +_0803CAF8: .4byte gBattlerControllerFuncs _0803CAFC: .4byte sub_803A6D4 thumb_func_end sub_803C7F8 @@ -4474,7 +4474,7 @@ sub_803CB0C: @ 803CB0C adds r0, r5 ldr r1, _0803CBAC @ =SpriteCallbackDummy bl StoreSpriteCallbackInData6 - ldr r1, _0803CBB0 @ =gUnknown_3004FE0 + ldr r1, _0803CBB0 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -4489,7 +4489,7 @@ _0803CBA0: .4byte gActiveBattler _0803CBA4: .4byte gSprites _0803CBA8: .4byte sub_8075590 _0803CBAC: .4byte SpriteCallbackDummy -_0803CBB0: .4byte gUnknown_3004FE0 +_0803CBB0: .4byte gBattlerControllerFuncs _0803CBB4: .4byte sub_803A70C thumb_func_end sub_803CB0C @@ -4559,7 +4559,7 @@ _0803CC0C: adds r0, r2 ldr r1, _0803CC58 @ =sub_8011EA0 str r1, [r0] - ldr r1, _0803CC5C @ =gUnknown_3004FE0 + ldr r1, _0803CC5C @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4573,7 +4573,7 @@ _0803CC48: _0803CC50: .4byte gSprites _0803CC54: .4byte gBattlerSpriteIds _0803CC58: .4byte sub_8011EA0 -_0803CC5C: .4byte gUnknown_3004FE0 +_0803CC5C: .4byte gBattlerControllerFuncs _0803CC60: .4byte sub_803AD20 thumb_func_end sub_803CBB8 @@ -4620,7 +4620,7 @@ RecordedOpponentHandleMoveAnimation: @ 803CC94 beq _0803CCA6 b _0803CDBA _0803CCA6: - ldr r0, _0803CD7C @ =gUnknown_2022BC4 + ldr r0, _0803CD7C @ =gBattleBufferA mov r12, r0 ldrb r2, [r6] lsls r2, 9 @@ -4724,7 +4724,7 @@ _0803CCA6: b _0803CDBA .align 2, 0 _0803CD78: .4byte gActiveBattler -_0803CD7C: .4byte gUnknown_2022BC4 +_0803CD7C: .4byte gBattleBufferA _0803CD80: .4byte gAnimMoveTurn _0803CD84: .4byte gAnimMovePower _0803CD88: .4byte gAnimMoveDmg @@ -4742,7 +4742,7 @@ _0803CD9C: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _0803CDC4 @ =gUnknown_3004FE0 + ldr r1, _0803CDC4 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4754,7 +4754,7 @@ _0803CDBA: bx r0 .align 2, 0 _0803CDC0: .4byte gBattleSpritesDataPtr -_0803CDC4: .4byte gUnknown_3004FE0 +_0803CDC4: .4byte gBattlerControllerFuncs _0803CDC8: .4byte RecordedOpponentDoMoveAnimation thumb_func_end RecordedOpponentHandleMoveAnimation @@ -4765,7 +4765,7 @@ RecordedOpponentDoMoveAnimation: @ 803CDCC mov r6, r9 mov r5, r8 push {r5-r7} - ldr r2, _0803CE18 @ =gUnknown_2022BC4 + ldr r2, _0803CE18 @ =gBattleBufferA ldr r6, _0803CE1C @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -4799,7 +4799,7 @@ RecordedOpponentDoMoveAnimation: @ 803CDCC beq _0803CE2E b _0803CF40 .align 2, 0 -_0803CE18: .4byte gUnknown_2022BC4 +_0803CE18: .4byte gBattleBufferA _0803CE1C: .4byte gActiveBattler _0803CE20: .4byte gBattleSpritesDataPtr _0803CE24: @@ -4963,7 +4963,7 @@ sub_803CF50: @ 803CF50 ldr r0, _0803CF90 @ =gUnknown_2022BC6 adds r4, r0 ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -4971,7 +4971,7 @@ sub_803CF50: @ 803CF50 beq _0803CF98 ldr r0, _0803CF94 @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _0803CFA0 .align 2, 0 _0803CF84: .4byte gBattle_BG0_X @@ -4982,9 +4982,9 @@ _0803CF94: .4byte gDisplayedStringBattle _0803CF98: ldr r0, _0803CFB4 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _0803CFA0: - ldr r1, _0803CFB8 @ =gUnknown_3004FE0 + ldr r1, _0803CFB8 @ =gBattlerControllerFuncs ldr r0, _0803CFBC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4996,7 +4996,7 @@ _0803CFA0: bx r0 .align 2, 0 _0803CFB4: .4byte gDisplayedStringBattle -_0803CFB8: .4byte gUnknown_3004FE0 +_0803CFB8: .4byte gBattlerControllerFuncs _0803CFBC: .4byte gActiveBattler _0803CFC0: .4byte CompleteOnInactiveTextPrinter_5 thumb_func_end sub_803CF50 @@ -5066,7 +5066,7 @@ sub_803D018: @ 803D018 sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _0803D090 @ =gUnknown_2022BC4 + ldr r3, _0803D090 @ =gBattleBufferA ldr r0, _0803D094 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] @@ -5115,7 +5115,7 @@ sub_803D018: @ 803D018 bl SetBattleBarStruct b _0803D0D2 .align 2, 0 -_0803D090: .4byte gUnknown_2022BC4 +_0803D090: .4byte gBattleBufferA _0803D094: .4byte gActiveBattler _0803D098: .4byte 0x00007fff _0803D09C: .4byte gBattlerPartyIndexes @@ -5142,7 +5142,7 @@ _0803D0A8: movs r3, 0 bl SetBattleBarStruct _0803D0D2: - ldr r1, _0803D0FC @ =gUnknown_3004FE0 + ldr r1, _0803D0FC @ =gBattlerControllerFuncs ldr r0, _0803D100 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5160,7 +5160,7 @@ _0803D0D2: _0803D0F0: .4byte gBattlerPartyIndexes _0803D0F4: .4byte gEnemyParty _0803D0F8: .4byte gHealthboxSpriteIds -_0803D0FC: .4byte gUnknown_3004FE0 +_0803D0FC: .4byte gBattlerControllerFuncs _0803D100: .4byte gActiveBattler _0803D104: .4byte CompleteOnHealthbarDone_4 thumb_func_end sub_803D018 @@ -5209,7 +5209,7 @@ sub_803D114: @ 803D114 negs r0, r0 ands r0, r2 strb r0, [r1] - ldr r1, _0803D184 @ =gUnknown_3004FE0 + ldr r1, _0803D184 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5225,7 +5225,7 @@ _0803D174: .4byte gHealthboxSpriteIds _0803D178: .4byte gBattlerPartyIndexes _0803D17C: .4byte gEnemyParty _0803D180: .4byte gBattleSpritesDataPtr -_0803D184: .4byte gUnknown_3004FE0 +_0803D184: .4byte gBattlerControllerFuncs _0803D188: .4byte CompleteOnFinishedStatusAnimation_5 thumb_func_end sub_803D114 @@ -5238,7 +5238,7 @@ sub_803D18C: @ 803D18C lsls r0, 24 cmp r0, 0 bne _0803D1DC - ldr r4, _0803D1E8 @ =gUnknown_2022BC4 + ldr r4, _0803D1E8 @ =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 @@ -5263,7 +5263,7 @@ sub_803D18C: @ 803D18C lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation - ldr r1, _0803D1EC @ =gUnknown_3004FE0 + ldr r1, _0803D1EC @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5275,8 +5275,8 @@ _0803D1DC: bx r0 .align 2, 0 _0803D1E4: .4byte gActiveBattler -_0803D1E8: .4byte gUnknown_2022BC4 -_0803D1EC: .4byte gUnknown_3004FE0 +_0803D1E8: .4byte gBattleBufferA +_0803D1EC: .4byte gBattlerControllerFuncs _0803D1F0: .4byte CompleteOnFinishedStatusAnimation_5 thumb_func_end sub_803D18C @@ -5372,7 +5372,7 @@ _0803D278: .4byte gUnknown_2022870 RecordedOpponentHandleCmd38: @ 803D27C push {lr} ldr r3, _0803D2A8 @ =gUnknown_2022870 - ldr r1, _0803D2AC @ =gUnknown_2022BC4 + ldr r1, _0803D2AC @ =gBattleBufferA ldr r0, _0803D2B0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -5392,7 +5392,7 @@ RecordedOpponentHandleCmd38: @ 803D27C bx r0 .align 2, 0 _0803D2A8: .4byte gUnknown_2022870 -_0803D2AC: .4byte gUnknown_2022BC4 +_0803D2AC: .4byte gBattleBufferA _0803D2B0: .4byte gActiveBattler thumb_func_end RecordedOpponentHandleCmd38 @@ -5458,7 +5458,7 @@ _0803D31C: .4byte gSprites _0803D320: .4byte gBattlerSpriteIds _0803D324: .4byte gActiveBattler _0803D328: - ldr r1, _0803D358 @ =gUnknown_2024005 + ldr r1, _0803D358 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -5472,7 +5472,7 @@ _0803D328: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _0803D35C @ =gUnknown_3004FE0 + ldr r1, _0803D35C @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5483,8 +5483,8 @@ _0803D352: pop {r0} bx r0 .align 2, 0 -_0803D358: .4byte gUnknown_2024005 -_0803D35C: .4byte gUnknown_3004FE0 +_0803D358: .4byte gDoingBattleAnim +_0803D35C: .4byte gBattlerControllerFuncs _0803D360: .4byte DoHitAnimBlinkSpriteEffect_4 thumb_func_end RecordedOpponentHandleHitAnimation @@ -5508,7 +5508,7 @@ RecordedOpponentHandlePlaySE: @ 803D370 bne _0803D384 movs r3, 0xC0 _0803D384: - ldr r2, _0803D3B0 @ =gUnknown_2022BC4 + ldr r2, _0803D3B0 @ =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 @@ -5528,13 +5528,13 @@ _0803D384: bx r0 .align 2, 0 _0803D3AC: .4byte gActiveBattler -_0803D3B0: .4byte gUnknown_2022BC4 +_0803D3B0: .4byte gBattleBufferA thumb_func_end RecordedOpponentHandlePlaySE thumb_func_start LinkOpponentHandlecmd44 LinkOpponentHandlecmd44: @ 803D3B4 push {lr} - ldr r2, _0803D3DC @ =gUnknown_2022BC4 + ldr r2, _0803D3DC @ =gBattleBufferA ldr r0, _0803D3E0 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -5551,7 +5551,7 @@ LinkOpponentHandlecmd44: @ 803D3B4 pop {r0} bx r0 .align 2, 0 -_0803D3DC: .4byte gUnknown_2022BC4 +_0803D3DC: .4byte gBattleBufferA _0803D3E0: .4byte gActiveBattler thumb_func_end LinkOpponentHandlecmd44 @@ -5587,14 +5587,14 @@ _0803D41C: .4byte gEnemyParty thumb_func_start RecordedOpponentHandleIntroSlide RecordedOpponentHandleIntroSlide: @ 803D420 push {lr} - ldr r1, _0803D448 @ =gUnknown_2022BC4 + ldr r1, _0803D448 @ =gBattleBufferA ldr r0, _0803D44C @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _0803D450 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -5604,7 +5604,7 @@ RecordedOpponentHandleIntroSlide: @ 803D420 pop {r0} bx r0 .align 2, 0 -_0803D448: .4byte gUnknown_2022BC4 +_0803D448: .4byte gBattleBufferA _0803D44C: .4byte gActiveBattler _0803D450: .4byte gIntroSlideFlags thumb_func_end RecordedOpponentHandleIntroSlide @@ -5712,7 +5712,7 @@ _0803D516: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _0803D55C @ =gUnknown_3004FE0 + ldr r1, _0803D55C @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -5732,7 +5732,7 @@ _0803D54C: .4byte gTasks _0803D550: .4byte gBattleSpritesDataPtr _0803D554: .4byte gUnknown_2024000 _0803D558: .4byte sub_80491B0 -_0803D55C: .4byte gUnknown_3004FE0 +_0803D55C: .4byte gBattlerControllerFuncs _0803D560: .4byte nullsub_19 thumb_func_end sub_803D454 @@ -5767,7 +5767,7 @@ sub_803D564: @ 803D564 cmp r0, 0 beq _0803D5D0 _0803D59E: - ldr r0, _0803D5C8 @ =gUnknown_2022BC4 + ldr r0, _0803D5C8 @ =gBattleBufferA ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 @@ -5785,10 +5785,10 @@ _0803D59E: _0803D5BC: .4byte gActiveBattler _0803D5C0: .4byte gTasks _0803D5C4: .4byte gBattleTypeFlags -_0803D5C8: .4byte gUnknown_2022BC4 +_0803D5C8: .4byte gBattleBufferA _0803D5CC: .4byte gBattlerPartyIndexes _0803D5D0: - ldr r4, _0803D634 @ =gUnknown_2022BC4 + ldr r4, _0803D634 @ =gBattleBufferA ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 @@ -5819,7 +5819,7 @@ _0803D5D0: eors r0, r5 strb r0, [r7] _0803D610: - ldr r1, _0803D63C @ =gUnknown_3004FE0 + ldr r1, _0803D63C @ =gBattlerControllerFuncs ldr r2, _0803D640 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -5837,9 +5837,9 @@ _0803D610: pop {r0} bx r0 .align 2, 0 -_0803D634: .4byte gUnknown_2022BC4 +_0803D634: .4byte gBattleBufferA _0803D638: .4byte gBattlerPartyIndexes -_0803D63C: .4byte gUnknown_3004FE0 +_0803D63C: .4byte gBattlerControllerFuncs _0803D640: .4byte gActiveBattler _0803D644: .4byte sub_803A9CC thumb_func_end sub_803D564 @@ -5873,7 +5873,7 @@ _0803D678: .4byte 0xfffffc00 thumb_func_start RecordedOpponentHandleDrawPartyStatusSummary RecordedOpponentHandleDrawPartyStatusSummary: @ 803D67C push {r4-r7,lr} - ldr r1, _0803D6A4 @ =gUnknown_2022BC4 + ldr r1, _0803D6A4 @ =gBattleBufferA ldr r0, _0803D6A8 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -5890,7 +5890,7 @@ RecordedOpponentHandleDrawPartyStatusSummary: @ 803D67C bl RecordedOpponentBufferExecCompleted b _0803D776 .align 2, 0 -_0803D6A4: .4byte gUnknown_2022BC4 +_0803D6A4: .4byte gBattleBufferA _0803D6A8: .4byte gActiveBattler _0803D6AC: ldr r4, _0803D704 @ =gBattleSpritesDataPtr @@ -5906,7 +5906,7 @@ _0803D6AC: movs r2, 0x1 orrs r1, r2 strb r1, [r0] - ldr r1, _0803D70C @ =gUnknown_2022BC4 + ldr r1, _0803D70C @ =gBattleBufferA ldrb r2, [r3] lsls r0, r2, 9 adds r1, 0x2 @@ -5939,7 +5939,7 @@ _0803D6AC: .align 2, 0 _0803D704: .4byte gBattleSpritesDataPtr _0803D708: .4byte gActiveBattler -_0803D70C: .4byte gUnknown_2022BC4 +_0803D70C: .4byte gBattleBufferA _0803D710: movs r0, 0x3F negs r0, r0 @@ -5987,7 +5987,7 @@ _0803D718: movs r1, 0x5D strb r1, [r0, 0x5] _0803D76A: - ldr r0, _0803D788 @ =gUnknown_3004FE0 + ldr r0, _0803D788 @ =gBattlerControllerFuncs ldrb r1, [r7] lsls r1, 2 adds r1, r0 @@ -6001,7 +6001,7 @@ _0803D776: _0803D77C: .4byte gUnknown_2022BC8 _0803D780: .4byte gUnknown_2024000 _0803D784: .4byte gBattleSpritesDataPtr -_0803D788: .4byte gUnknown_3004FE0 +_0803D788: .4byte gBattlerControllerFuncs _0803D78C: .4byte sub_803D790 thumb_func_end RecordedOpponentHandleDrawPartyStatusSummary @@ -6108,7 +6108,7 @@ RecordedOpponentHandleSpriteInvisibility: @ 803D834 adds r2, r0 lsls r2, 2 adds r2, r3 - ldr r0, _0803D890 @ =gUnknown_2022BC4 + ldr r0, _0803D890 @ =gBattleBufferA lsls r1, 9 adds r0, 0x1 adds r1, r0 @@ -6134,7 +6134,7 @@ _0803D87A: _0803D884: .4byte gActiveBattler _0803D888: .4byte gSprites _0803D88C: .4byte gBattlerSpriteIds -_0803D890: .4byte gUnknown_2022BC4 +_0803D890: .4byte gBattleBufferA thumb_func_end RecordedOpponentHandleSpriteInvisibility thumb_func_start RecordedOpponentHandleBattleAnimation @@ -6147,7 +6147,7 @@ RecordedOpponentHandleBattleAnimation: @ 803D894 lsls r0, 24 cmp r0, 0 bne _0803D8EC - ldr r5, _0803D8DC @ =gUnknown_2022BC4 + ldr r5, _0803D8DC @ =gBattleBufferA ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 @@ -6172,9 +6172,9 @@ RecordedOpponentHandleBattleAnimation: @ 803D894 b _0803D8EC .align 2, 0 _0803D8D8: .4byte gActiveBattler -_0803D8DC: .4byte gUnknown_2022BC4 +_0803D8DC: .4byte gBattleBufferA _0803D8E0: - ldr r0, _0803D8F4 @ =gUnknown_3004FE0 + ldr r0, _0803D8F4 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -6186,7 +6186,7 @@ _0803D8EC: pop {r0} bx r0 .align 2, 0 -_0803D8F4: .4byte gUnknown_3004FE0 +_0803D8F4: .4byte gBattlerControllerFuncs _0803D8F8: .4byte CompleteOnFinishedBattleAnimation_5 thumb_func_end RecordedOpponentHandleBattleAnimation @@ -6209,7 +6209,7 @@ sub_803D908: @ 803D908 thumb_func_start RecordedOpponentHandleCmd55 RecordedOpponentHandleCmd55: @ 803D914 push {lr} - ldr r1, _0803D930 @ =gUnknown_2022BC4 + ldr r1, _0803D930 @ =gBattleBufferA ldr r0, _0803D934 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -6222,7 +6222,7 @@ RecordedOpponentHandleCmd55: @ 803D914 strb r2, [r0] b _0803D944 .align 2, 0 -_0803D930: .4byte gUnknown_2022BC4 +_0803D930: .4byte gBattleBufferA _0803D934: .4byte gActiveBattler _0803D938: .4byte gBattleOutcome _0803D93C: @@ -6236,7 +6236,7 @@ _0803D944: movs r0, 0x3 bl BeginFastPaletteFade bl RecordedOpponentBufferExecCompleted - ldr r1, _0803D96C @ =gUnknown_3004FE0 + ldr r1, _0803D96C @ =gBattlerControllerFuncs ldr r0, _0803D970 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -6247,7 +6247,7 @@ _0803D944: bx r0 .align 2, 0 _0803D968: .4byte gBattleOutcome -_0803D96C: .4byte gUnknown_3004FE0 +_0803D96C: .4byte gBattlerControllerFuncs _0803D970: .4byte gActiveBattler _0803D974: .4byte sub_802F6A8 thumb_func_end RecordedOpponentHandleCmd55 diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index f8a83d85e..c2dc58efd 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -12,7 +12,7 @@ nullsub_77: @ 80D4200 thumb_func_start sub_80D4204 sub_80D4204: @ 80D4204 - ldr r1, _080D4214 @ =gUnknown_3004FE0 + ldr r1, _080D4214 @ =gBattlerControllerFuncs ldr r0, _080D4218 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -21,7 +21,7 @@ sub_80D4204: @ 80D4204 str r1, [r0] bx lr .align 2, 0 -_080D4214: .4byte gUnknown_3004FE0 +_080D4214: .4byte gBattlerControllerFuncs _080D4218: .4byte gActiveBattler _080D421C: .4byte LinkPartnerBufferRunCommand thumb_func_end sub_80D4204 @@ -29,7 +29,7 @@ _080D421C: .4byte LinkPartnerBufferRunCommand thumb_func_start LinkPartnerBufferRunCommand LinkPartnerBufferRunCommand: @ 80D4220 push {lr} - ldr r2, _080D4254 @ =gUnknown_2023BC8 + ldr r2, _080D4254 @ =gBattleControllerExecFlags ldr r1, _080D4258 @ =gBitTable ldr r0, _080D425C @ =gActiveBattler ldrb r3, [r0] @@ -40,7 +40,7 @@ LinkPartnerBufferRunCommand: @ 80D4220 ands r1, r0 cmp r1, 0 beq _080D426C - ldr r0, _080D4260 @ =gUnknown_2022BC4 + ldr r0, _080D4260 @ =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] @@ -54,10 +54,10 @@ LinkPartnerBufferRunCommand: @ 80D4220 bl _call_via_r0 b _080D426C .align 2, 0 -_080D4254: .4byte gUnknown_2023BC8 +_080D4254: .4byte gBattleControllerExecFlags _080D4258: .4byte gBitTable _080D425C: .4byte gActiveBattler -_080D4260: .4byte gUnknown_2022BC4 +_080D4260: .4byte gBattleBufferA _080D4264: .4byte gUnknown_83FB134 _080D4268: bl sub_80D49E8 @@ -273,7 +273,7 @@ _080D43F4: adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] - ldr r1, _080D4434 @ =gUnknown_3004FE0 + ldr r1, _080D4434 @ =gBattlerControllerFuncs ldrb r0, [r3] lsls r0, 2 adds r0, r1 @@ -289,7 +289,7 @@ _080D4424: .4byte gHealthboxSpriteIds _080D4428: .4byte gActiveBattler _080D442C: .4byte SpriteCallbackDummy _080D4430: .4byte gBattleSpritesDataPtr -_080D4434: .4byte gUnknown_3004FE0 +_080D4434: .4byte gBattlerControllerFuncs _080D4438: .4byte sub_80D4310 thumb_func_end sub_80D4358 @@ -429,7 +429,7 @@ _080D4500: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _080D4588 @ =gUnknown_3004FE0 + ldr r1, _080D4588 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -448,7 +448,7 @@ _080D4578: .4byte gSprites _080D457C: .4byte gHealthboxSpriteIds _080D4580: .4byte gBattlerPartyIndexes _080D4584: .4byte gPlayerParty -_080D4588: .4byte gUnknown_3004FE0 +_080D4588: .4byte gBattlerControllerFuncs _080D458C: .4byte sub_80D4358 thumb_func_end sub_80D443C @@ -680,7 +680,7 @@ sub_80D4730: @ 80D4730 subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _080D4778 @ =gUnknown_2024005 + ldr r0, _080D4778 @ =gDoingBattleAnim strb r3, [r0] bl sub_80D49E8 b _080D47A6 @@ -688,7 +688,7 @@ sub_80D4730: @ 80D4730 _080D476C: .4byte gBattlerSpriteIds _080D4770: .4byte gActiveBattler _080D4774: .4byte gSprites -_080D4778: .4byte gUnknown_2024005 +_080D4778: .4byte gDoingBattleAnim _080D477C: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -752,7 +752,7 @@ sub_80D47AC: @ 80D47AC movs r3, 0x6 bl InitAndLaunchSpecialAnimation _080D47EC: - ldr r0, _080D4814 @ =gUnknown_3004FE0 + ldr r0, _080D4814 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -768,7 +768,7 @@ _080D4804: .4byte gHealthboxSpriteIds _080D4808: .4byte gActiveBattler _080D480C: .4byte SpriteCallbackDummy _080D4810: .4byte gBattleSpritesDataPtr -_080D4814: .4byte gUnknown_3004FE0 +_080D4814: .4byte gBattlerControllerFuncs _080D4818: .4byte sub_80D481C thumb_func_end sub_80D47AC @@ -882,7 +882,7 @@ sub_80D484C: @ 80D484C bl SetHealthboxSpriteVisible ldrb r0, [r7] bl CopyBattleSpriteInvisibility - ldr r1, _080D493C @ =gUnknown_3004FE0 + ldr r1, _080D493C @ =gBattlerControllerFuncs ldrb r0, [r7] lsls r0, 2 adds r0, r1 @@ -904,7 +904,7 @@ _080D492C: .4byte gPlayerParty _080D4930: .4byte gBattlerSpriteIds _080D4934: .4byte gSprites _080D4938: .4byte gHealthboxSpriteIds -_080D493C: .4byte gUnknown_3004FE0 +_080D493C: .4byte gBattlerControllerFuncs _080D4940: .4byte sub_80D47AC thumb_func_end sub_80D484C @@ -963,7 +963,7 @@ _080D4976: bne _080D49BC adds r0, r3, r5 bl DestroySprite - ldr r1, _080D49E0 @ =gUnknown_3004FE0 + ldr r1, _080D49E0 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -981,7 +981,7 @@ _080D49D0: .4byte gPlayerParty _080D49D4: .4byte gSprites _080D49D8: .4byte gUnknown_3004FFC _080D49DC: .4byte SpriteCallbackDummy -_080D49E0: .4byte gUnknown_3004FE0 +_080D49E0: .4byte gBattlerControllerFuncs _080D49E4: .4byte sub_80D484C thumb_func_end sub_80D4944 @@ -989,7 +989,7 @@ _080D49E4: .4byte sub_80D484C sub_80D49E8: @ 80D49E8 push {r4,lr} sub sp, 0x4 - ldr r1, _080D4A28 @ =gUnknown_3004FE0 + ldr r1, _080D4A28 @ =gBattlerControllerFuncs ldr r4, _080D4A2C @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -1009,7 +1009,7 @@ sub_80D49E8: @ 80D49E8 movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink - ldr r1, _080D4A38 @ =gUnknown_2022BC4 + ldr r1, _080D4A38 @ =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 @@ -1017,13 +1017,13 @@ sub_80D49E8: @ 80D49E8 strb r1, [r0] b _080D4A4E .align 2, 0 -_080D4A28: .4byte gUnknown_3004FE0 +_080D4A28: .4byte gBattlerControllerFuncs _080D4A2C: .4byte gActiveBattler _080D4A30: .4byte LinkPartnerBufferRunCommand _080D4A34: .4byte gBattleTypeFlags -_080D4A38: .4byte gUnknown_2022BC4 +_080D4A38: .4byte gBattleBufferA _080D4A3C: - ldr r2, _080D4A58 @ =gUnknown_2023BC8 + ldr r2, _080D4A58 @ =gBattleControllerExecFlags ldr r1, _080D4A5C @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -1038,7 +1038,7 @@ _080D4A4E: pop {r0} bx r0 .align 2, 0 -_080D4A58: .4byte gUnknown_2023BC8 +_080D4A58: .4byte gBattleControllerExecFlags _080D4A5C: .4byte gBitTable thumb_func_end sub_80D49E8 @@ -1099,7 +1099,7 @@ LinkPartnerHandleGetAttributes: @ 80D4AC0 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _080D4AEC @ =gUnknown_2022BC4 + ldr r1, _080D4AEC @ =gBattleBufferA ldr r0, _080D4AF0 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -1117,7 +1117,7 @@ LinkPartnerHandleGetAttributes: @ 80D4AC0 adds r6, r0, 0 b _080D4B1A .align 2, 0 -_080D4AEC: .4byte gUnknown_2022BC4 +_080D4AEC: .4byte gBattleBufferA _080D4AF0: .4byte gActiveBattler _080D4AF4: .4byte gBattlerPartyIndexes _080D4AF8: @@ -1164,7 +1164,7 @@ dp01_getattr_by_ch1_for_player_pokemon: @ 80D4B34 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 - ldr r2, _080D4B68 @ =gUnknown_2022BC4 + ldr r2, _080D4B68 @ =gBattleBufferA ldr r3, _080D4B6C @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 @@ -1181,7 +1181,7 @@ _080D4B5E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080D4B68: .4byte gUnknown_2022BC4 +_080D4B68: .4byte gBattleBufferA _080D4B6C: .4byte gActiveBattler _080D4B70: .4byte _080D4B74 .align 2, 0 @@ -2097,7 +2097,7 @@ sub_80D52E0: @ 80D52E0 thumb_func_start LinkPartnerHandleSetAttributes LinkPartnerHandleSetAttributes: @ 80D52EC push {r4,r5,lr} - ldr r1, _080D5310 @ =gUnknown_2022BC4 + ldr r1, _080D5310 @ =gBattleBufferA ldr r0, _080D5314 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2113,7 +2113,7 @@ LinkPartnerHandleSetAttributes: @ 80D52EC bl sub_80D5344 b _080D533A .align 2, 0 -_080D5310: .4byte gUnknown_2022BC4 +_080D5310: .4byte gBattleBufferA _080D5314: .4byte gActiveBattler _080D5318: .4byte gBattlerPartyIndexes _080D531C: @@ -2494,7 +2494,7 @@ _080D56A8: muls r0, r5 ldr r1, _080D56C4 @ =gPlayerParty adds r0, r1 - ldr r3, _080D56C8 @ =gUnknown_2022BC4 + ldr r3, _080D56C8 @ =gBattleBufferA ldr r1, _080D56CC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -2505,7 +2505,7 @@ _080D56A8: b _080D574C .align 2, 0 _080D56C4: .4byte gPlayerParty -_080D56C8: .4byte gUnknown_2022BC4 +_080D56C8: .4byte gBattleBufferA _080D56CC: .4byte gActiveBattler _080D56D0: movs r0, 0x64 @@ -2557,7 +2557,7 @@ _080D5734: muls r0, r5 ldr r1, _080D5758 @ =gPlayerParty adds r0, r1 - ldr r3, _080D575C @ =gUnknown_2022BC4 + ldr r3, _080D575C @ =gBattleBufferA ldr r1, _080D5760 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -2572,7 +2572,7 @@ _080D574C: b _080D5D0A .align 2, 0 _080D5758: .4byte gPlayerParty -_080D575C: .4byte gUnknown_2022BC4 +_080D575C: .4byte gBattleBufferA _080D5760: .4byte gActiveBattler _080D5764: movs r0, 0x64 @@ -3289,7 +3289,7 @@ LinkPartnerHandlecmd3: @ 80D5D40 movs r0, 0x64 adds r3, r1, 0 muls r3, r0 - ldr r4, _080D5DAC @ =gUnknown_2022BC4 + ldr r4, _080D5DAC @ =gBattleBufferA lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 @@ -3332,7 +3332,7 @@ _080D5D98: .align 2, 0 _080D5DA4: .4byte gBattlerPartyIndexes _080D5DA8: .4byte gActiveBattler -_080D5DAC: .4byte gUnknown_2022BC4 +_080D5DAC: .4byte gBattleBufferA _080D5DB0: .4byte gPlayerParty thumb_func_end LinkPartnerHandlecmd3 @@ -3439,7 +3439,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 adds r2, r1 ldrb r1, [r2] bl StartSpriteAnim - ldr r1, _080D5EC8 @ =gUnknown_3004FE0 + ldr r1, _080D5EC8 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -3459,7 +3459,7 @@ _080D5EB8: .4byte gBattlerSpriteIds _080D5EBC: .4byte gSprites _080D5EC0: .4byte 0x0000ff10 _080D5EC4: .4byte gBattleMonForms -_080D5EC8: .4byte gUnknown_3004FE0 +_080D5EC8: .4byte gBattlerControllerFuncs _080D5ECC: .4byte sub_80D4590 thumb_func_end LinkPartnerHandleLoadPokeSprite @@ -3468,7 +3468,7 @@ LinkPartnerHandleSendOutPoke: @ 80D5ED0 push {r4-r6,lr} ldr r5, _080D5F28 @ =gActiveBattler ldrb r0, [r5] - ldr r4, _080D5F2C @ =gUnknown_2022BC4 + ldr r4, _080D5F2C @ =gBattleBufferA lsls r1, r0, 9 adds r6, r4, 0x2 adds r1, r6 @@ -3497,7 +3497,7 @@ LinkPartnerHandleSendOutPoke: @ 80D5ED0 adds r1, r6 ldrb r1, [r1] bl sub_80D5F40 - ldr r1, _080D5F38 @ =gUnknown_3004FE0 + ldr r1, _080D5F38 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -3508,10 +3508,10 @@ LinkPartnerHandleSendOutPoke: @ 80D5ED0 bx r0 .align 2, 0 _080D5F28: .4byte gActiveBattler -_080D5F2C: .4byte gUnknown_2022BC4 +_080D5F2C: .4byte gBattleBufferA _080D5F30: .4byte gBattlerPartyIndexes _080D5F34: .4byte gPlayerParty -_080D5F38: .4byte gUnknown_3004FE0 +_080D5F38: .4byte gBattlerControllerFuncs _080D5F3C: .4byte sub_80D4944 thumb_func_end LinkPartnerHandleSendOutPoke @@ -3532,7 +3532,7 @@ sub_80D5F40: @ 80D5F40 ldr r0, _080D6084 @ =gBattlerPartyIndexes lsls r2, r6, 1 adds r2, r0 - ldr r0, _080D6088 @ =gUnknown_2022BC4 + ldr r0, _080D6088 @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -3670,7 +3670,7 @@ sub_80D5F40: @ 80D5F40 bx r0 .align 2, 0 _080D6084: .4byte gBattlerPartyIndexes -_080D6088: .4byte gUnknown_2022BC4 +_080D6088: .4byte gBattleBufferA _080D608C: .4byte gPlayerParty _080D6090: .4byte sub_8033E3C _080D6094: .4byte gUnknown_3004FFC @@ -3684,7 +3684,7 @@ _080D60A8: .4byte SpriteCallbackDummy thumb_func_start LinkPartnerHandleReturnPokeToBall LinkPartnerHandleReturnPokeToBall: @ 80D60AC push {r4-r6,lr} - ldr r1, _080D60E0 @ =gUnknown_2022BC4 + ldr r1, _080D60E0 @ =gBattleBufferA ldr r6, _080D60E4 @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 @@ -3701,7 +3701,7 @@ LinkPartnerHandleReturnPokeToBall: @ 80D60AC lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] - ldr r1, _080D60EC @ =gUnknown_3004FE0 + ldr r1, _080D60EC @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -3709,10 +3709,10 @@ LinkPartnerHandleReturnPokeToBall: @ 80D60AC str r1, [r0] b _080D612A .align 2, 0 -_080D60E0: .4byte gUnknown_2022BC4 +_080D60E0: .4byte gBattleBufferA _080D60E4: .4byte gActiveBattler _080D60E8: .4byte gBattleSpritesDataPtr -_080D60EC: .4byte gUnknown_3004FE0 +_080D60EC: .4byte gBattlerControllerFuncs _080D60F0: .4byte sub_80D613C _080D60F4: ldr r5, _080D6130 @ =gBattlerSpriteIds @@ -3807,7 +3807,7 @@ _080D6192: adds r1, r2, 0 movs r3, 0x1 bl InitAndLaunchSpecialAnimation - ldr r1, _080D61C0 @ =gUnknown_3004FE0 + ldr r1, _080D61C0 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -3818,7 +3818,7 @@ _080D61BA: pop {r0} bx r0 .align 2, 0 -_080D61C0: .4byte gUnknown_3004FE0 +_080D61C0: .4byte gBattlerControllerFuncs _080D61C4: .4byte sub_80D46A8 thumb_func_end sub_80D613C @@ -3906,7 +3906,7 @@ _080D6258: bl SetMultiuseSpriteTemplateToTrainerBack ldr r6, _080D631C @ =gMultiuseSpriteTemplate mov r8, r7 - ldr r0, _080D6320 @ =gUnknown_8239F8C + ldr r0, _080D6320 @ =gTrainerBackPicCoords lsls r4, 2 adds r4, r0 ldrb r0, [r4] @@ -3972,7 +3972,7 @@ _080D6258: adds r0, r4 ldr r1, _080D6330 @ =sub_8033EEC str r1, [r0] - ldr r1, _080D6334 @ =gUnknown_3004FE0 + ldr r1, _080D6334 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -3986,12 +3986,12 @@ _080D6258: .align 2, 0 _080D6318: .4byte gActiveBattler _080D631C: .4byte gMultiuseSpriteTemplate -_080D6320: .4byte gUnknown_8239F8C +_080D6320: .4byte gTrainerBackPicCoords _080D6324: .4byte gBattlerSpriteIds _080D6328: .4byte gSprites _080D632C: .4byte 0x0000fffe _080D6330: .4byte sub_8033EEC -_080D6334: .4byte gUnknown_3004FE0 +_080D6334: .4byte gBattlerControllerFuncs _080D6338: .4byte sub_80D4270 thumb_func_end sub_80D61C8 @@ -4064,7 +4064,7 @@ sub_80D6348: @ 80D6348 adds r0, r5 ldr r1, _080D63E8 @ =SpriteCallbackDummy bl StoreSpriteCallbackInData6 - ldr r1, _080D63EC @ =gUnknown_3004FE0 + ldr r1, _080D63EC @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -4080,7 +4080,7 @@ _080D63DC: .4byte gSprites _080D63E0: .4byte 0x0000ffd8 _080D63E4: .4byte sub_8075590 _080D63E8: .4byte SpriteCallbackDummy -_080D63EC: .4byte gUnknown_3004FE0 +_080D63EC: .4byte gBattlerControllerFuncs _080D63F0: .4byte sub_80D42A8 thumb_func_end sub_80D6348 @@ -4178,7 +4178,7 @@ _080D6448: adds r0, r2 ldr r1, _080D64D4 @ =sub_8012110 str r1, [r0] - ldr r1, _080D64D8 @ =gUnknown_3004FE0 + ldr r1, _080D64D8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4194,7 +4194,7 @@ _080D64C8: .4byte gPlayerParty _080D64CC: .4byte gSprites _080D64D0: .4byte gBattlerSpriteIds _080D64D4: .4byte sub_8012110 -_080D64D8: .4byte gUnknown_3004FE0 +_080D64D8: .4byte gBattlerControllerFuncs _080D64DC: .4byte sub_80D4640 thumb_func_end sub_80D63F4 @@ -4241,7 +4241,7 @@ sub_80D6510: @ 80D6510 beq _080D6522 b _080D6636 _080D6522: - ldr r0, _080D65F8 @ =gUnknown_2022BC4 + ldr r0, _080D65F8 @ =gBattleBufferA mov r12, r0 ldrb r2, [r6] lsls r2, 9 @@ -4345,7 +4345,7 @@ _080D6522: b _080D6636 .align 2, 0 _080D65F4: .4byte gActiveBattler -_080D65F8: .4byte gUnknown_2022BC4 +_080D65F8: .4byte gBattleBufferA _080D65FC: .4byte gAnimMoveTurn _080D6600: .4byte gAnimMovePower _080D6604: .4byte gAnimMoveDmg @@ -4363,7 +4363,7 @@ _080D6618: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _080D6640 @ =gUnknown_3004FE0 + ldr r1, _080D6640 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4375,7 +4375,7 @@ _080D6636: bx r0 .align 2, 0 _080D663C: .4byte gBattleSpritesDataPtr -_080D6640: .4byte gUnknown_3004FE0 +_080D6640: .4byte gBattlerControllerFuncs _080D6644: .4byte sub_80D6648 thumb_func_end sub_80D6510 @@ -4386,7 +4386,7 @@ sub_80D6648: @ 80D6648 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r2, _080D6694 @ =gUnknown_2022BC4 + ldr r2, _080D6694 @ =gBattleBufferA ldr r6, _080D6698 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -4420,7 +4420,7 @@ sub_80D6648: @ 80D6648 beq _080D66AA b _080D67BC .align 2, 0 -_080D6694: .4byte gUnknown_2022BC4 +_080D6694: .4byte gBattleBufferA _080D6698: .4byte gActiveBattler _080D669C: .4byte gBattleSpritesDataPtr _080D66A0: @@ -4584,7 +4584,7 @@ sub_80D67CC: @ 80D67CC ldr r0, _080D680C @ =gUnknown_2022BC6 adds r4, r0 ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -4592,7 +4592,7 @@ sub_80D67CC: @ 80D67CC beq _080D6814 ldr r0, _080D6810 @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080D681C .align 2, 0 _080D6800: .4byte gBattle_BG0_X @@ -4603,9 +4603,9 @@ _080D6810: .4byte gDisplayedStringBattle _080D6814: ldr r0, _080D6830 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _080D681C: - ldr r1, _080D6834 @ =gUnknown_3004FE0 + ldr r1, _080D6834 @ =gBattlerControllerFuncs ldr r0, _080D6838 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4617,7 +4617,7 @@ _080D681C: bx r0 .align 2, 0 _080D6830: .4byte gDisplayedStringBattle -_080D6834: .4byte gUnknown_3004FE0 +_080D6834: .4byte gBattlerControllerFuncs _080D6838: .4byte gActiveBattler _080D683C: .4byte sub_80D4718 thumb_func_end sub_80D67CC @@ -4687,7 +4687,7 @@ sub_80D6894: @ 80D6894 sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _080D690C @ =gUnknown_2022BC4 + ldr r3, _080D690C @ =gBattleBufferA ldr r0, _080D6910 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] @@ -4736,7 +4736,7 @@ sub_80D6894: @ 80D6894 bl SetBattleBarStruct b _080D694E .align 2, 0 -_080D690C: .4byte gUnknown_2022BC4 +_080D690C: .4byte gBattleBufferA _080D6910: .4byte gActiveBattler _080D6914: .4byte 0x00007fff _080D6918: .4byte gBattlerPartyIndexes @@ -4763,7 +4763,7 @@ _080D6924: movs r3, 0 bl SetBattleBarStruct _080D694E: - ldr r1, _080D6978 @ =gUnknown_3004FE0 + ldr r1, _080D6978 @ =gBattlerControllerFuncs ldr r0, _080D697C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4781,7 +4781,7 @@ _080D694E: _080D696C: .4byte gBattlerPartyIndexes _080D6970: .4byte gPlayerParty _080D6974: .4byte gHealthboxSpriteIds -_080D6978: .4byte gUnknown_3004FE0 +_080D6978: .4byte gBattlerControllerFuncs _080D697C: .4byte gActiveBattler _080D6980: .4byte sub_80D45D0 thumb_func_end sub_80D6894 @@ -4830,7 +4830,7 @@ sub_80D6990: @ 80D6990 negs r0, r0 ands r0, r2 strb r0, [r1] - ldr r1, _080D6A00 @ =gUnknown_3004FE0 + ldr r1, _080D6A00 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -4846,7 +4846,7 @@ _080D69F0: .4byte gHealthboxSpriteIds _080D69F4: .4byte gBattlerPartyIndexes _080D69F8: .4byte gPlayerParty _080D69FC: .4byte gBattleSpritesDataPtr -_080D6A00: .4byte gUnknown_3004FE0 +_080D6A00: .4byte gBattlerControllerFuncs _080D6A04: .4byte sub_80D4A60 thumb_func_end sub_80D6990 @@ -4859,7 +4859,7 @@ sub_80D6A08: @ 80D6A08 lsls r0, 24 cmp r0, 0 bne _080D6A58 - ldr r4, _080D6A64 @ =gUnknown_2022BC4 + ldr r4, _080D6A64 @ =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 @@ -4884,7 +4884,7 @@ sub_80D6A08: @ 80D6A08 lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation - ldr r1, _080D6A68 @ =gUnknown_3004FE0 + ldr r1, _080D6A68 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4896,8 +4896,8 @@ _080D6A58: bx r0 .align 2, 0 _080D6A60: .4byte gActiveBattler -_080D6A64: .4byte gUnknown_2022BC4 -_080D6A68: .4byte gUnknown_3004FE0 +_080D6A64: .4byte gBattleBufferA +_080D6A68: .4byte gBattlerControllerFuncs _080D6A6C: .4byte sub_80D4A60 thumb_func_end sub_80D6A08 @@ -4993,7 +4993,7 @@ _080D6AF4: .4byte gUnknown_2022870 LinkPartnerHandlecmd38: @ 80D6AF8 push {lr} ldr r3, _080D6B24 @ =gUnknown_2022870 - ldr r1, _080D6B28 @ =gUnknown_2022BC4 + ldr r1, _080D6B28 @ =gBattleBufferA ldr r0, _080D6B2C @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -5013,7 +5013,7 @@ LinkPartnerHandlecmd38: @ 80D6AF8 bx r0 .align 2, 0 _080D6B24: .4byte gUnknown_2022870 -_080D6B28: .4byte gUnknown_2022BC4 +_080D6B28: .4byte gBattleBufferA _080D6B2C: .4byte gActiveBattler thumb_func_end LinkPartnerHandlecmd38 @@ -5079,7 +5079,7 @@ _080D6B98: .4byte gSprites _080D6B9C: .4byte gBattlerSpriteIds _080D6BA0: .4byte gActiveBattler _080D6BA4: - ldr r1, _080D6BD4 @ =gUnknown_2024005 + ldr r1, _080D6BD4 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -5093,7 +5093,7 @@ _080D6BA4: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _080D6BD8 @ =gUnknown_3004FE0 + ldr r1, _080D6BD8 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5104,8 +5104,8 @@ _080D6BCE: pop {r0} bx r0 .align 2, 0 -_080D6BD4: .4byte gUnknown_2024005 -_080D6BD8: .4byte gUnknown_3004FE0 +_080D6BD4: .4byte gDoingBattleAnim +_080D6BD8: .4byte gBattlerControllerFuncs _080D6BDC: .4byte sub_80D4730 thumb_func_end LinkPartnerHandleHitAnimation @@ -5129,7 +5129,7 @@ LinkPartnerHandleEffectivenessSound: @ 80D6BEC bne _080D6C00 movs r3, 0xC0 _080D6C00: - ldr r2, _080D6C2C @ =gUnknown_2022BC4 + ldr r2, _080D6C2C @ =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 @@ -5149,13 +5149,13 @@ _080D6C00: bx r0 .align 2, 0 _080D6C28: .4byte gActiveBattler -_080D6C2C: .4byte gUnknown_2022BC4 +_080D6C2C: .4byte gBattleBufferA thumb_func_end LinkPartnerHandleEffectivenessSound thumb_func_start LinkPartnerHandlecmd44 LinkPartnerHandlecmd44: @ 80D6C30 push {lr} - ldr r2, _080D6C58 @ =gUnknown_2022BC4 + ldr r2, _080D6C58 @ =gBattleBufferA ldr r0, _080D6C5C @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -5172,7 +5172,7 @@ LinkPartnerHandlecmd44: @ 80D6C30 pop {r0} bx r0 .align 2, 0 -_080D6C58: .4byte gUnknown_2022BC4 +_080D6C58: .4byte gBattleBufferA _080D6C5C: .4byte gActiveBattler thumb_func_end LinkPartnerHandlecmd44 @@ -5209,14 +5209,14 @@ _080D6C9C: .4byte gPlayerParty thumb_func_start LinkPartnerHandleIntroSlide LinkPartnerHandleIntroSlide: @ 80D6CA0 push {lr} - ldr r1, _080D6CC8 @ =gUnknown_2022BC4 + ldr r1, _080D6CC8 @ =gBattleBufferA ldr r0, _080D6CCC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _080D6CD0 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -5226,7 +5226,7 @@ LinkPartnerHandleIntroSlide: @ 80D6CA0 pop {r0} bx r0 .align 2, 0 -_080D6CC8: .4byte gUnknown_2022BC4 +_080D6CC8: .4byte gBattleBufferA _080D6CCC: .4byte gActiveBattler _080D6CD0: .4byte gIntroSlideFlags thumb_func_end LinkPartnerHandleIntroSlide @@ -5441,7 +5441,7 @@ _080D6E86: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _080D6EC8 @ =gUnknown_3004FE0 + ldr r1, _080D6EC8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5460,7 +5460,7 @@ _080D6EB8: .4byte gTasks _080D6EBC: .4byte gBattleSpritesDataPtr _080D6EC0: .4byte gUnknown_2024000 _080D6EC4: .4byte sub_80491B0 -_080D6EC8: .4byte gUnknown_3004FE0 +_080D6EC8: .4byte gBattlerControllerFuncs _080D6ECC: .4byte nullsub_77 thumb_func_end sub_80D6CD4 @@ -5505,7 +5505,7 @@ _080D6EFC: cmp r0, 0 beq _080D6F4C _080D6F1C: - ldr r0, _080D6F44 @ =gUnknown_2022BC4 + ldr r0, _080D6F44 @ =gBattleBufferA ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 @@ -5522,10 +5522,10 @@ _080D6F1C: .align 2, 0 _080D6F3C: .4byte gActiveBattler _080D6F40: .4byte gBattleTypeFlags -_080D6F44: .4byte gUnknown_2022BC4 +_080D6F44: .4byte gBattleBufferA _080D6F48: .4byte gBattlerPartyIndexes _080D6F4C: - ldr r4, _080D6FC4 @ =gUnknown_2022BC4 + ldr r4, _080D6FC4 @ =gBattleBufferA ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 @@ -5565,7 +5565,7 @@ _080D6F4C: eors r0, r6 strb r0, [r7] _080D6FA0: - ldr r1, _080D6FD0 @ =gUnknown_3004FE0 + ldr r1, _080D6FD0 @ =gBattlerControllerFuncs ldr r2, _080D6FD4 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -5584,10 +5584,10 @@ _080D6FB8: pop {r0} bx r0 .align 2, 0 -_080D6FC4: .4byte gUnknown_2022BC4 +_080D6FC4: .4byte gBattleBufferA _080D6FC8: .4byte gBattlerPartyIndexes _080D6FCC: .4byte gPlayerParty -_080D6FD0: .4byte gUnknown_3004FE0 +_080D6FD0: .4byte gBattlerControllerFuncs _080D6FD4: .4byte gActiveBattler _080D6FD8: .4byte sub_80D443C thumb_func_end sub_80D6ED0 @@ -5595,7 +5595,7 @@ _080D6FD8: .4byte sub_80D443C thumb_func_start sub_80D6FDC sub_80D6FDC: @ 80D6FDC push {r4-r6,lr} - ldr r1, _080D7004 @ =gUnknown_2022BC4 + ldr r1, _080D7004 @ =gBattleBufferA ldr r0, _080D7008 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -5612,7 +5612,7 @@ sub_80D6FDC: @ 80D6FDC bl sub_80D49E8 b _080D7080 .align 2, 0 -_080D7004: .4byte gUnknown_2022BC4 +_080D7004: .4byte gBattleBufferA _080D7008: .4byte gActiveBattler _080D700C: ldr r6, _080D7088 @ =gBattleSpritesDataPtr @@ -5667,7 +5667,7 @@ _080D700C: movs r1, 0x5D strb r1, [r0, 0x5] _080D7074: - ldr r0, _080D7098 @ =gUnknown_3004FE0 + ldr r0, _080D7098 @ =gBattlerControllerFuncs ldrb r1, [r5] lsls r1, 2 adds r1, r0 @@ -5682,7 +5682,7 @@ _080D7088: .4byte gBattleSpritesDataPtr _080D708C: .4byte gActiveBattler _080D7090: .4byte gUnknown_2022BC8 _080D7094: .4byte gUnknown_2024000 -_080D7098: .4byte gUnknown_3004FE0 +_080D7098: .4byte gBattlerControllerFuncs _080D709C: .4byte sub_80D70A0 thumb_func_end sub_80D6FDC @@ -5789,7 +5789,7 @@ LinkPartnerHandleSpriteInvisibility: @ 80D7144 adds r2, r0 lsls r2, 2 adds r2, r3 - ldr r0, _080D71A0 @ =gUnknown_2022BC4 + ldr r0, _080D71A0 @ =gBattleBufferA lsls r1, 9 adds r0, 0x1 adds r1, r0 @@ -5815,7 +5815,7 @@ _080D718A: _080D7194: .4byte gActiveBattler _080D7198: .4byte gSprites _080D719C: .4byte gBattlerSpriteIds -_080D71A0: .4byte gUnknown_2022BC4 +_080D71A0: .4byte gBattleBufferA thumb_func_end LinkPartnerHandleSpriteInvisibility thumb_func_start LinkPartnerHandleBattleAnimation @@ -5828,7 +5828,7 @@ LinkPartnerHandleBattleAnimation: @ 80D71A4 lsls r0, 24 cmp r0, 0 bne _080D71FC - ldr r5, _080D71EC @ =gUnknown_2022BC4 + ldr r5, _080D71EC @ =gBattleBufferA ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 @@ -5853,9 +5853,9 @@ LinkPartnerHandleBattleAnimation: @ 80D71A4 b _080D71FC .align 2, 0 _080D71E8: .4byte gActiveBattler -_080D71EC: .4byte gUnknown_2022BC4 +_080D71EC: .4byte gBattleBufferA _080D71F0: - ldr r0, _080D7204 @ =gUnknown_3004FE0 + ldr r0, _080D7204 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -5867,7 +5867,7 @@ _080D71FC: pop {r0} bx r0 .align 2, 0 -_080D7204: .4byte gUnknown_3004FE0 +_080D7204: .4byte gBattlerControllerFuncs _080D7208: .4byte sub_80D4A90 thumb_func_end LinkPartnerHandleBattleAnimation @@ -5891,7 +5891,7 @@ sub_80D7218: @ 80D7218 LinkPartnerHandlecmd55: @ 80D7224 push {r4,lr} ldr r2, _080D725C @ =gBattleOutcome - ldr r1, _080D7260 @ =gUnknown_2022BC4 + ldr r1, _080D7260 @ =gBattleBufferA ldr r4, _080D7264 @ =gActiveBattler ldrb r0, [r4] lsls r0, 9 @@ -5904,7 +5904,7 @@ LinkPartnerHandlecmd55: @ 80D7224 movs r0, 0x3 bl BeginFastPaletteFade bl sub_80D49E8 - ldr r1, _080D7268 @ =gUnknown_3004FE0 + ldr r1, _080D7268 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5915,9 +5915,9 @@ LinkPartnerHandlecmd55: @ 80D7224 bx r0 .align 2, 0 _080D725C: .4byte gBattleOutcome -_080D7260: .4byte gUnknown_2022BC4 +_080D7260: .4byte gBattleBufferA _080D7264: .4byte gActiveBattler -_080D7268: .4byte gUnknown_3004FE0 +_080D7268: .4byte gBattlerControllerFuncs _080D726C: .4byte sub_802F6A8 thumb_func_end LinkPartnerHandlecmd55 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 92efcecbc..031525518 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -12,7 +12,7 @@ nullsub_81: @ 80E75AC thumb_func_start sub_80E75B0 sub_80E75B0: @ 80E75B0 - ldr r1, _080E75DC @ =gUnknown_3004FE0 + ldr r1, _080E75DC @ =gBattlerControllerFuncs ldr r0, _080E75E0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -35,7 +35,7 @@ sub_80E75B0: @ 80E75B0 strb r1, [r0] bx lr .align 2, 0 -_080E75DC: .4byte gUnknown_3004FE0 +_080E75DC: .4byte gBattlerControllerFuncs _080E75E0: .4byte gActiveBattler _080E75E4: .4byte sub_80E75EC _080E75E8: .4byte gBattleStruct @@ -44,7 +44,7 @@ _080E75E8: .4byte gBattleStruct thumb_func_start sub_80E75EC sub_80E75EC: @ 80E75EC push {lr} - ldr r2, _080E7620 @ =gUnknown_2023BC8 + ldr r2, _080E7620 @ =gBattleControllerExecFlags ldr r1, _080E7624 @ =gBitTable ldr r0, _080E7628 @ =gActiveBattler ldrb r3, [r0] @@ -55,7 +55,7 @@ sub_80E75EC: @ 80E75EC ands r1, r0 cmp r1, 0 beq _080E7638 - ldr r0, _080E762C @ =gUnknown_2022BC4 + ldr r0, _080E762C @ =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] @@ -69,10 +69,10 @@ sub_80E75EC: @ 80E75EC bl _call_via_r0 b _080E7638 .align 2, 0 -_080E7620: .4byte gUnknown_2023BC8 +_080E7620: .4byte gBattleControllerExecFlags _080E7624: .4byte gBitTable _080E7628: .4byte gActiveBattler -_080E762C: .4byte gUnknown_2022BC4 +_080E762C: .4byte gBattleBufferA _080E7630: .4byte gUnknown_84020F8 _080E7634: bl WallyBufferExecCompleted @@ -86,7 +86,7 @@ sub_80E763C: @ 80E763C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r7, _080E769C @ =gUnknown_2022BC4 + ldr r7, _080E769C @ =gBattleBufferA ldr r4, _080E76A0 @ =gActiveBattler ldrb r0, [r4] lsls r2, r0, 9 @@ -116,7 +116,7 @@ sub_80E763C: @ 80E763C beq _080E76D4 movs r0, 0x5 bl PlaySE - ldr r1, _080E76A8 @ =gUnknown_2023FF8 + ldr r1, _080E76A8 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -128,10 +128,10 @@ sub_80E763C: @ 80E763C beq _080E76B6 b _080E781A .align 2, 0 -_080E769C: .4byte gUnknown_2022BC4 +_080E769C: .4byte gBattleBufferA _080E76A0: .4byte gActiveBattler _080E76A4: .4byte gMain -_080E76A8: .4byte gUnknown_2023FF8 +_080E76A8: .4byte gActionSelectionCursor _080E76AC: cmp r0, 0x2 beq _080E76C2 @@ -161,7 +161,7 @@ _080E76D4: ands r0, r1 cmp r0, 0 beq _080E770C - ldr r5, _080E7708 @ =gUnknown_2023FF8 + ldr r5, _080E7708 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -183,13 +183,13 @@ _080E76EE: movs r2, 0x1 b _080E7794 .align 2, 0 -_080E7708: .4byte gUnknown_2023FF8 +_080E7708: .4byte gActionSelectionCursor _080E770C: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080E7744 - ldr r5, _080E7740 @ =gUnknown_2023FF8 + ldr r5, _080E7740 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -211,14 +211,14 @@ _080E7726: movs r2, 0x1 b _080E7794 .align 2, 0 -_080E7740: .4byte gUnknown_2023FF8 +_080E7740: .4byte gActionSelectionCursor _080E7744: movs r0, 0x40 mov r8, r0 ands r0, r1 cmp r0, 0 beq _080E7764 - ldr r5, _080E7760 @ =gUnknown_2023FF8 + ldr r5, _080E7760 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -228,13 +228,13 @@ _080E7744: beq _080E7838 b _080E777C .align 2, 0 -_080E7760: .4byte gUnknown_2023FF8 +_080E7760: .4byte gActionSelectionCursor _080E7764: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080E77AC - ldr r5, _080E77A8 @ =gUnknown_2023FF8 + ldr r5, _080E77A8 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -263,7 +263,7 @@ _080E7794: bl ActionSelectionCreateCursorAt b _080E7838 .align 2, 0 -_080E77A8: .4byte gUnknown_2023FF8 +_080E77A8: .4byte gActionSelectionCursor _080E77AC: movs r0, 0x2 ands r0, r1 @@ -478,7 +478,7 @@ sub_80E7930: @ 80E7930 negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, _080E796C @ =gUnknown_3004F80 + ldr r0, _080E796C @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -490,13 +490,13 @@ _080E795A: _080E7960: .4byte gPaletteFade _080E7964: .4byte gMain _080E7968: .4byte 0x00000439 -_080E796C: .4byte gUnknown_3004F80 +_080E796C: .4byte gPreBattleCallback1 thumb_func_end sub_80E7930 thumb_func_start sub_80E7970 sub_80E7970: @ 80E7970 push {lr} - ldr r0, _080E7984 @ =gUnknown_2024005 + ldr r0, _080E7984 @ =gDoingBattleAnim ldrb r0, [r0] cmp r0, 0 bne _080E797E @@ -505,14 +505,14 @@ _080E797E: pop {r0} bx r0 .align 2, 0 -_080E7984: .4byte gUnknown_2024005 +_080E7984: .4byte gDoingBattleAnim thumb_func_end sub_80E7970 thumb_func_start sub_80E7988 sub_80E7988: @ 80E7988 push {lr} bl sub_802EA10 - ldr r2, _080E79AC @ =gUnknown_2023BC8 + ldr r2, _080E79AC @ =gBattleControllerExecFlags ldr r1, _080E79B0 @ =gBitTable ldr r0, _080E79B4 @ =gActiveBattler ldrb r0, [r0] @@ -528,7 +528,7 @@ _080E79A8: pop {r0} bx r0 .align 2, 0 -_080E79AC: .4byte gUnknown_2023BC8 +_080E79AC: .4byte gBattleControllerExecFlags _080E79B0: .4byte gBitTable _080E79B4: .4byte gActiveBattler thumb_func_end sub_80E7988 @@ -542,7 +542,7 @@ sub_80E79B8: @ 80E79B8 ands r0, r1 cmp r0, 0 bne _080E79F6 - ldr r1, _080E7A00 @ =gUnknown_3004FE0 + ldr r1, _080E7A00 @ =gBattlerControllerFuncs ldr r2, _080E7A04 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -569,7 +569,7 @@ _080E79F6: bx r0 .align 2, 0 _080E79FC: .4byte gPaletteFade -_080E7A00: .4byte gUnknown_3004FE0 +_080E7A00: .4byte gBattlerControllerFuncs _080E7A04: .4byte gActiveBattler _080E7A08: .4byte sub_80E7A14 _080E7A0C: .4byte gTasks @@ -581,7 +581,7 @@ sub_80E7A14: @ 80E7A14 push {lr} ldr r0, _080E7A44 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _080E7A48 @ =sub_8011100 + ldr r0, _080E7A48 @ =BattleMainCB2 cmp r1, r0 bne _080E7A6A ldr r0, _080E7A4C @ =gPaletteFade @@ -602,7 +602,7 @@ sub_80E7A14: @ 80E7A14 b _080E7A66 .align 2, 0 _080E7A44: .4byte gMain -_080E7A48: .4byte sub_8011100 +_080E7A48: .4byte BattleMainCB2 _080E7A4C: .4byte gPaletteFade _080E7A50: .4byte gUnknown_203B0C0 _080E7A54: .4byte gUnknown_203B0C1 @@ -628,7 +628,7 @@ sub_80E7A70: @ 80E7A70 ands r0, r1 cmp r0, 0 bne _080E7AC0 - ldr r1, _080E7AAC @ =gUnknown_3004FE0 + ldr r1, _080E7AAC @ =gBattlerControllerFuncs ldr r0, _080E7AB0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -647,7 +647,7 @@ sub_80E7A70: @ 80E7A70 b _080E7AC0 .align 2, 0 _080E7AA8: .4byte gPaletteFade -_080E7AAC: .4byte gUnknown_3004FE0 +_080E7AAC: .4byte gBattlerControllerFuncs _080E7AB0: .4byte gActiveBattler _080E7AB4: .4byte sub_80E7AC4 _080E7AB8: .4byte gBattleTypeFlags @@ -663,7 +663,7 @@ sub_80E7AC4: @ 80E7AC4 push {lr} ldr r0, _080E7B14 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _080E7B18 @ =sub_8011100 + ldr r0, _080E7B18 @ =BattleMainCB2 cmp r1, r0 bne _080E7B42 ldr r0, _080E7B1C @ =gPaletteFade @@ -689,7 +689,7 @@ sub_80E7AC4: @ 80E7AC4 beq _080E7B34 movs r0, 0x4 bl sub_80EB2F4 - ldr r1, _080E7B28 @ =gUnknown_3004FE0 + ldr r1, _080E7B28 @ =gBattlerControllerFuncs ldr r0, _080E7B2C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -699,11 +699,11 @@ sub_80E7AC4: @ 80E7AC4 b _080E7B42 .align 2, 0 _080E7B14: .4byte gMain -_080E7B18: .4byte sub_8011100 +_080E7B18: .4byte BattleMainCB2 _080E7B1C: .4byte gPaletteFade _080E7B20: .4byte gSpecialVar_ItemId _080E7B24: .4byte gBattleTypeFlags -_080E7B28: .4byte gUnknown_3004FE0 +_080E7B28: .4byte gBattlerControllerFuncs _080E7B2C: .4byte gActiveBattler _080E7B30: .4byte sub_80E8704 _080E7B34: @@ -881,7 +881,7 @@ _080E7C46: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _080E7CD0 @ =gUnknown_3004FE0 + ldr r1, _080E7CD0 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -900,7 +900,7 @@ _080E7CC0: .4byte gBattleTypeFlags _080E7CC4: .4byte gUnknown_3004FFC _080E7CC8: .4byte gSprites _080E7CCC: .4byte gHealthboxSpriteIds -_080E7CD0: .4byte gUnknown_3004FE0 +_080E7CD0: .4byte gBattlerControllerFuncs _080E7CD4: .4byte sub_80E7CD8 thumb_func_end sub_80E7B4C @@ -1019,7 +1019,7 @@ _080E7D02: ldr r2, _080E7DF8 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange - ldr r1, _080E7DFC @ =gUnknown_3004FE0 + ldr r1, _080E7DFC @ =gBattlerControllerFuncs mov r2, r8 ldrb r0, [r2] lsls r0, 2 @@ -1042,7 +1042,7 @@ _080E7DEC: .4byte 0x000027f9 _080E7DF0: .4byte c3_0802FDF4 _080E7DF4: .4byte gBattlerPartyIndexes _080E7DF8: .4byte gPlayerParty -_080E7DFC: .4byte gUnknown_3004FE0 +_080E7DFC: .4byte gBattlerControllerFuncs _080E7E00: .4byte sub_80E835C thumb_func_end sub_80E7CD8 @@ -1195,7 +1195,7 @@ _080E7F38: adds r0, r6, 0 movs r1, 0x19 bl SetMonData - ldr r1, _080E7F58 @ =gUnknown_3004FE0 + ldr r1, _080E7F58 @ =gBattlerControllerFuncs ldr r3, [sp, 0x8] lsls r0, r3, 2 adds r0, r1 @@ -1205,7 +1205,7 @@ _080E7F38: bl DestroyTask b _080E7F66 .align 2, 0 -_080E7F58: .4byte gUnknown_3004FE0 +_080E7F58: .4byte gBattlerControllerFuncs _080E7F5C: .4byte sub_80E8930 _080E7F60: ldr r0, _080E7F78 @ =sub_80E7F7C @@ -1455,7 +1455,7 @@ _080E815C: adds r0, r5, 0 movs r1, 0x19 bl SetMonData - ldr r1, _080E8188 @ =gUnknown_3004FE0 + ldr r1, _080E8188 @ =gBattlerControllerFuncs lsls r0, r7, 2 adds r0, r1 ldr r1, _080E818C @ =sub_80E8930 @@ -1472,7 +1472,7 @@ _080E8178: pop {r0} bx r0 .align 2, 0 -_080E8188: .4byte gUnknown_3004FE0 +_080E8188: .4byte gBattlerControllerFuncs _080E818C: .4byte sub_80E8930 thumb_func_end sub_80E804C @@ -1632,7 +1632,7 @@ sub_80E82A8: @ 80E82A8 movs r1, 0x38 bl GetMonData ldrb r0, [r4, 0xC] - ldr r1, _080E82EC @ =gUnknown_3004FE0 + ldr r1, _080E82EC @ =gBattlerControllerFuncs lsls r0, 2 adds r0, r1 ldr r1, _080E82F0 @ =sub_80E8930 @@ -1645,7 +1645,7 @@ sub_80E82A8: @ 80E82A8 .align 2, 0 _080E82E4: .4byte gTasks _080E82E8: .4byte gPlayerParty -_080E82EC: .4byte gUnknown_3004FE0 +_080E82EC: .4byte gBattlerControllerFuncs _080E82F0: .4byte sub_80E8930 thumb_func_end sub_80E82A8 @@ -1782,7 +1782,7 @@ _080E8408: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080E841C @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080E851E .align 2, 0 _080E8418: .4byte gUnknown_83FDAE2 @@ -1833,7 +1833,7 @@ _080E8468: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080E848C @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080E851E .align 2, 0 _080E8484: .4byte gPaletteFade @@ -1883,7 +1883,7 @@ _080E84D8: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080E84FC @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080E851E .align 2, 0 _080E84F4: .4byte gPaletteFade @@ -2085,7 +2085,7 @@ _080E8670: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080E8680 @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080E86A2 .align 2, 0 _080E8680: .4byte gDisplayedStringBattle @@ -2265,7 +2265,7 @@ _080E87E8: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080E87FC @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080E8868 .align 2, 0 _080E87F8: .4byte gUnknown_83FDCD2 @@ -2455,7 +2455,7 @@ DoHitAnimBlinkSpriteEffect_3: @ 80E8948 subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _080E8990 @ =gUnknown_2024005 + ldr r0, _080E8990 @ =gDoingBattleAnim strb r3, [r0] bl WallyBufferExecCompleted b _080E89BE @@ -2463,7 +2463,7 @@ DoHitAnimBlinkSpriteEffect_3: @ 80E8948 _080E8984: .4byte gBattlerSpriteIds _080E8988: .4byte gActiveBattler _080E898C: .4byte gSprites -_080E8990: .4byte gUnknown_2024005 +_080E8990: .4byte gDoingBattleAnim _080E8994: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -2604,7 +2604,7 @@ _080E8A98: .4byte gActiveBattler WallyBufferExecCompleted: @ 80E8A9C push {r4,lr} sub sp, 0x4 - ldr r1, _080E8ADC @ =gUnknown_3004FE0 + ldr r1, _080E8ADC @ =gBattlerControllerFuncs ldr r4, _080E8AE0 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -2624,7 +2624,7 @@ WallyBufferExecCompleted: @ 80E8A9C movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink - ldr r1, _080E8AEC @ =gUnknown_2022BC4 + ldr r1, _080E8AEC @ =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 @@ -2632,13 +2632,13 @@ WallyBufferExecCompleted: @ 80E8A9C strb r1, [r0] b _080E8B02 .align 2, 0 -_080E8ADC: .4byte gUnknown_3004FE0 +_080E8ADC: .4byte gBattlerControllerFuncs _080E8AE0: .4byte gActiveBattler _080E8AE4: .4byte sub_80E75EC _080E8AE8: .4byte gBattleTypeFlags -_080E8AEC: .4byte gUnknown_2022BC4 +_080E8AEC: .4byte gBattleBufferA _080E8AF0: - ldr r2, _080E8B0C @ =gUnknown_2023BC8 + ldr r2, _080E8B0C @ =gBattleControllerExecFlags ldr r1, _080E8B10 @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -2653,7 +2653,7 @@ _080E8B02: pop {r0} bx r0 .align 2, 0 -_080E8B0C: .4byte gUnknown_2023BC8 +_080E8B0C: .4byte gBattleControllerExecFlags _080E8B10: .4byte gBitTable thumb_func_end WallyBufferExecCompleted @@ -2688,7 +2688,7 @@ WallyHandleGetMonData: @ 80E8B44 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _080E8B70 @ =gUnknown_2022BC4 + ldr r1, _080E8B70 @ =gBattleBufferA ldr r0, _080E8B74 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2706,7 +2706,7 @@ WallyHandleGetMonData: @ 80E8B44 adds r6, r0, 0 b _080E8B9E .align 2, 0 -_080E8B70: .4byte gUnknown_2022BC4 +_080E8B70: .4byte gBattleBufferA _080E8B74: .4byte gActiveBattler _080E8B78: .4byte gBattlerPartyIndexes _080E8B7C: @@ -2753,7 +2753,7 @@ CopyWallyMonData: @ 80E8BB8 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 - ldr r2, _080E8BEC @ =gUnknown_2022BC4 + ldr r2, _080E8BEC @ =gBattleBufferA ldr r3, _080E8BF0 @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 @@ -2770,7 +2770,7 @@ _080E8BE2: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080E8BEC: .4byte gUnknown_2022BC4 +_080E8BEC: .4byte gBattleBufferA _080E8BF0: .4byte gActiveBattler _080E8BF4: .4byte _080E8BF8 .align 2, 0 @@ -3686,7 +3686,7 @@ WallyHandleGetRawMonData: @ 80E9364 thumb_func_start WallyHandleSetMonData WallyHandleSetMonData: @ 80E9370 push {r4,r5,lr} - ldr r1, _080E9394 @ =gUnknown_2022BC4 + ldr r1, _080E9394 @ =gBattleBufferA ldr r0, _080E9398 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -3702,7 +3702,7 @@ WallyHandleSetMonData: @ 80E9370 bl SetWallyMonData b _080E93BE .align 2, 0 -_080E9394: .4byte gUnknown_2022BC4 +_080E9394: .4byte gBattleBufferA _080E9398: .4byte gActiveBattler _080E939C: .4byte gBattlerPartyIndexes _080E93A0: @@ -4083,7 +4083,7 @@ _080E972C: muls r0, r5 ldr r1, _080E9748 @ =gPlayerParty adds r0, r1 - ldr r3, _080E974C @ =gUnknown_2022BC4 + ldr r3, _080E974C @ =gBattleBufferA ldr r1, _080E9750 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -4094,7 +4094,7 @@ _080E972C: b _080E97D0 .align 2, 0 _080E9748: .4byte gPlayerParty -_080E974C: .4byte gUnknown_2022BC4 +_080E974C: .4byte gBattleBufferA _080E9750: .4byte gActiveBattler _080E9754: movs r0, 0x64 @@ -4146,7 +4146,7 @@ _080E97B8: muls r0, r5 ldr r1, _080E97DC @ =gPlayerParty adds r0, r1 - ldr r3, _080E97E0 @ =gUnknown_2022BC4 + ldr r3, _080E97E0 @ =gBattleBufferA ldr r1, _080E97E4 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -4161,7 +4161,7 @@ _080E97D0: b _080E9D8E .align 2, 0 _080E97DC: .4byte gPlayerParty -_080E97E0: .4byte gUnknown_2022BC4 +_080E97E0: .4byte gBattleBufferA _080E97E4: .4byte gActiveBattler _080E97E8: movs r0, 0x64 @@ -4893,7 +4893,7 @@ sub_80E9DDC: @ 80E9DDC thumb_func_start WallyHandleReturnMonToBall WallyHandleReturnMonToBall: @ 80E9DE8 push {r4-r6,lr} - ldr r0, _080E9E14 @ =gUnknown_2022BC4 + ldr r0, _080E9E14 @ =gBattleBufferA ldr r6, _080E9E18 @ =gActiveBattler ldrb r2, [r6] lsls r1, r2, 9 @@ -4906,7 +4906,7 @@ WallyHandleReturnMonToBall: @ 80E9DE8 adds r1, r2, 0 movs r3, 0x1 bl InitAndLaunchSpecialAnimation - ldr r0, _080E9E1C @ =gUnknown_3004FE0 + ldr r0, _080E9E1C @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -4914,9 +4914,9 @@ WallyHandleReturnMonToBall: @ 80E9DE8 str r0, [r1] b _080E9E5A .align 2, 0 -_080E9E14: .4byte gUnknown_2022BC4 +_080E9E14: .4byte gBattleBufferA _080E9E18: .4byte gActiveBattler -_080E9E1C: .4byte gUnknown_3004FE0 +_080E9E1C: .4byte gBattlerControllerFuncs _080E9E20: .4byte sub_80E89C4 _080E9E24: ldr r5, _080E9E60 @ =gBattlerSpriteIds @@ -4977,7 +4977,7 @@ sub_80E9E6C: @ 80E9E6C adds r0, r5, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _080E9ED4 @ =gMultiuseSpriteTemplate - ldr r2, _080E9ED8 @ =gUnknown_8239F8C + ldr r2, _080E9ED8 @ =gTrainerBackPicCoords ldr r1, [r4] ldrb r1, [r1, 0x8] lsls r1, 2 @@ -5001,7 +5001,7 @@ _080E9EC8: .4byte gBattleTypeFlags _080E9ECC: .4byte gSaveBlock2Ptr _080E9ED0: .4byte gActiveBattler _080E9ED4: .4byte gMultiuseSpriteTemplate -_080E9ED8: .4byte gUnknown_8239F8C +_080E9ED8: .4byte gTrainerBackPicCoords _080E9EDC: .4byte gBattlerSpriteIds _080E9EE0: ldr r4, _080E9F8C @ =gActiveBattler @@ -5016,7 +5016,7 @@ _080E9EE0: movs r0, 0x5 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _080E9F90 @ =gMultiuseSpriteTemplate - ldr r1, _080E9F94 @ =gUnknown_8239F8C + ldr r1, _080E9F94 @ =gTrainerBackPicCoords ldrb r1, [r1, 0x14] movs r2, 0x8 subs r2, r1 @@ -5077,7 +5077,7 @@ _080E9F1C: adds r0, r4 ldr r1, _080E9FA4 @ =sub_8033EEC str r1, [r0] - ldr r1, _080E9FA8 @ =gUnknown_3004FE0 + ldr r1, _080E9FA8 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -5089,12 +5089,12 @@ _080E9F1C: .align 2, 0 _080E9F8C: .4byte gActiveBattler _080E9F90: .4byte gMultiuseSpriteTemplate -_080E9F94: .4byte gUnknown_8239F8C +_080E9F94: .4byte gTrainerBackPicCoords _080E9F98: .4byte gBattlerSpriteIds _080E9F9C: .4byte gSprites _080E9FA0: .4byte 0x0000fffe _080E9FA4: .4byte sub_8033EEC -_080E9FA8: .4byte gUnknown_3004FE0 +_080E9FA8: .4byte gBattlerControllerFuncs _080E9FAC: .4byte sub_80E78E0 thumb_func_end sub_80E9E6C @@ -5123,7 +5123,7 @@ sub_80E9FB0: @ 80E9FB0 adds r0, r5, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _080EA018 @ =gMultiuseSpriteTemplate - ldr r2, _080EA01C @ =gUnknown_8239F8C + ldr r2, _080EA01C @ =gTrainerBackPicCoords ldr r1, [r4] ldrb r1, [r1, 0x8] lsls r1, 2 @@ -5147,7 +5147,7 @@ _080EA00C: .4byte gBattleTypeFlags _080EA010: .4byte gSaveBlock2Ptr _080EA014: .4byte gActiveBattler _080EA018: .4byte gMultiuseSpriteTemplate -_080EA01C: .4byte gUnknown_8239F8C +_080EA01C: .4byte gTrainerBackPicCoords _080EA020: .4byte gBattlerSpriteIds _080EA024: ldr r4, _080EA0D0 @ =gActiveBattler @@ -5162,7 +5162,7 @@ _080EA024: movs r0, 0x5 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _080EA0D4 @ =gMultiuseSpriteTemplate - ldr r1, _080EA0D8 @ =gUnknown_8239F8C + ldr r1, _080EA0D8 @ =gTrainerBackPicCoords ldrb r1, [r1, 0x14] movs r2, 0x8 subs r2, r1 @@ -5223,7 +5223,7 @@ _080EA060: adds r0, r4 ldr r1, _080EA0E8 @ =sub_8033EEC str r1, [r0] - ldr r1, _080EA0EC @ =gUnknown_3004FE0 + ldr r1, _080EA0EC @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -5235,12 +5235,12 @@ _080EA060: .align 2, 0 _080EA0D0: .4byte gActiveBattler _080EA0D4: .4byte gMultiuseSpriteTemplate -_080EA0D8: .4byte gUnknown_8239F8C +_080EA0D8: .4byte gTrainerBackPicCoords _080EA0DC: .4byte gBattlerSpriteIds _080EA0E0: .4byte gSprites _080EA0E4: .4byte 0x0000ffa0 _080EA0E8: .4byte sub_8033EEC -_080EA0EC: .4byte gUnknown_3004FE0 +_080EA0EC: .4byte gBattlerControllerFuncs _080EA0F0: .4byte sub_80E8A34 thumb_func_end sub_80E9FB0 @@ -5346,7 +5346,7 @@ _080EA154: adds r0, r2 ldr r1, _080EA1E0 @ =sub_8012110 str r1, [r0] - ldr r1, _080EA1E4 @ =gUnknown_3004FE0 + ldr r1, _080EA1E4 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5362,7 +5362,7 @@ _080EA1D4: .4byte gPlayerParty _080EA1D8: .4byte gSprites _080EA1DC: .4byte gBattlerSpriteIds _080EA1E0: .4byte sub_8012110 -_080EA1E4: .4byte gUnknown_3004FE0 +_080EA1E4: .4byte gBattlerControllerFuncs _080EA1E8: .4byte sub_80E82F4 thumb_func_end sub_80EA100 @@ -5382,7 +5382,7 @@ sub_80EA1F8: @ 80EA1F8 ldr r1, [r0, 0x8] movs r0, 0x4 strb r0, [r1, 0x8] - ldr r1, _080EA23C @ =gUnknown_2024005 + ldr r1, _080EA23C @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldr r5, _080EA240 @ =gActiveBattler @@ -5396,7 +5396,7 @@ sub_80EA1F8: @ 80EA1F8 adds r1, r4, 0 movs r3, 0x4 bl InitAndLaunchSpecialAnimation - ldr r1, _080EA244 @ =gUnknown_3004FE0 + ldr r1, _080EA244 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5407,16 +5407,16 @@ sub_80EA1F8: @ 80EA1F8 bx r0 .align 2, 0 _080EA238: .4byte gBattleSpritesDataPtr -_080EA23C: .4byte gUnknown_2024005 +_080EA23C: .4byte gDoingBattleAnim _080EA240: .4byte gActiveBattler -_080EA244: .4byte gUnknown_3004FE0 +_080EA244: .4byte gBattlerControllerFuncs _080EA248: .4byte sub_80E7970 thumb_func_end sub_80EA1F8 thumb_func_start sub_80EA24C sub_80EA24C: @ 80EA24C push {r4,r5,lr} - ldr r1, _080EA294 @ =gUnknown_2022BC4 + ldr r1, _080EA294 @ =gBattleBufferA ldr r5, _080EA298 @ =gActiveBattler ldrb r0, [r5] lsls r0, 9 @@ -5427,7 +5427,7 @@ sub_80EA24C: @ 80EA24C ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] - ldr r1, _080EA2A0 @ =gUnknown_2024005 + ldr r1, _080EA2A0 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r4, [r5] @@ -5440,7 +5440,7 @@ sub_80EA24C: @ 80EA24C adds r1, r4, 0 movs r3, 0x4 bl InitAndLaunchSpecialAnimation - ldr r1, _080EA2A4 @ =gUnknown_3004FE0 + ldr r1, _080EA2A4 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5450,11 +5450,11 @@ sub_80EA24C: @ 80EA24C pop {r0} bx r0 .align 2, 0 -_080EA294: .4byte gUnknown_2022BC4 +_080EA294: .4byte gBattleBufferA _080EA298: .4byte gActiveBattler _080EA29C: .4byte gBattleSpritesDataPtr -_080EA2A0: .4byte gUnknown_2024005 -_080EA2A4: .4byte gUnknown_3004FE0 +_080EA2A0: .4byte gDoingBattleAnim +_080EA2A4: .4byte gBattlerControllerFuncs _080EA2A8: .4byte sub_80E7970 thumb_func_end sub_80EA24C @@ -5469,7 +5469,7 @@ sub_80EA2AC: @ 80EA2AC thumb_func_start sub_80EA2B8 sub_80EA2B8: @ 80EA2B8 push {r4-r6,lr} - ldr r0, _080EA38C @ =gUnknown_2022BC4 + ldr r0, _080EA38C @ =gBattleBufferA mov r12, r0 ldr r6, _080EA390 @ =gActiveBattler ldrb r2, [r6] @@ -5573,7 +5573,7 @@ sub_80EA2B8: @ 80EA2B8 bl WallyBufferExecCompleted b _080EA3CE .align 2, 0 -_080EA38C: .4byte gUnknown_2022BC4 +_080EA38C: .4byte gBattleBufferA _080EA390: .4byte gActiveBattler _080EA394: .4byte gAnimMoveTurn _080EA398: .4byte gAnimMovePower @@ -5592,7 +5592,7 @@ _080EA3B0: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _080EA3D8 @ =gUnknown_3004FE0 + ldr r1, _080EA3D8 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -5604,7 +5604,7 @@ _080EA3CE: bx r0 .align 2, 0 _080EA3D4: .4byte gBattleSpritesDataPtr -_080EA3D8: .4byte gUnknown_3004FE0 +_080EA3D8: .4byte gBattlerControllerFuncs _080EA3DC: .4byte sub_80EA3E0 thumb_func_end sub_80EA2B8 @@ -5614,7 +5614,7 @@ sub_80EA3E0: @ 80EA3E0 mov r7, r9 mov r6, r8 push {r6,r7} - ldr r2, _080EA424 @ =gUnknown_2022BC4 + ldr r2, _080EA424 @ =gBattleBufferA ldr r6, _080EA428 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -5644,7 +5644,7 @@ sub_80EA3E0: @ 80EA3E0 beq _080EA43A b _080EA520 .align 2, 0 -_080EA424: .4byte gUnknown_2022BC4 +_080EA424: .4byte gBattleBufferA _080EA428: .4byte gActiveBattler _080EA42C: .4byte gBattleSpritesDataPtr _080EA430: @@ -5806,7 +5806,7 @@ _080EA568: .4byte gUnknown_2022BC6 _080EA56C: .4byte gBattleTypeFlags _080EA570: ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -5814,14 +5814,14 @@ _080EA570: beq _080EA590 ldr r0, _080EA58C @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _080EA598 .align 2, 0 _080EA58C: .4byte gDisplayedStringBattle _080EA590: ldr r0, _080EA5B4 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _080EA598: ldr r0, _080EA5B8 @ =gBattleTypeFlags ldr r0, [r0] @@ -5857,7 +5857,7 @@ _080EA5CC: bne _080EA64C movs r0, 0x2 bl sub_80EB2F4 - ldr r1, _080EA5EC @ =gUnknown_3004FE0 + ldr r1, _080EA5EC @ =gBattlerControllerFuncs ldr r0, _080EA5F0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5865,11 +5865,11 @@ _080EA5CC: ldr r1, _080EA5F4 @ =sub_80E8584 b _080EA658 .align 2, 0 -_080EA5EC: .4byte gUnknown_3004FE0 +_080EA5EC: .4byte gBattlerControllerFuncs _080EA5F0: .4byte gActiveBattler _080EA5F4: .4byte sub_80E8584 _080EA5F8: - ldr r1, _080EA608 @ =gUnknown_3004FE0 + ldr r1, _080EA608 @ =gBattlerControllerFuncs ldr r0, _080EA60C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5877,11 +5877,11 @@ _080EA5F8: ldr r1, _080EA610 @ =sub_80E85AC b _080EA658 .align 2, 0 -_080EA608: .4byte gUnknown_3004FE0 +_080EA608: .4byte gBattlerControllerFuncs _080EA60C: .4byte gActiveBattler _080EA610: .4byte sub_80E85AC _080EA614: - ldr r1, _080EA624 @ =gUnknown_3004FE0 + ldr r1, _080EA624 @ =gBattlerControllerFuncs ldr r0, _080EA628 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5889,11 +5889,11 @@ _080EA614: ldr r1, _080EA62C @ =sub_80E85C0 b _080EA658 .align 2, 0 -_080EA624: .4byte gUnknown_3004FE0 +_080EA624: .4byte gBattlerControllerFuncs _080EA628: .4byte gActiveBattler _080EA62C: .4byte sub_80E85C0 _080EA630: - ldr r1, _080EA640 @ =gUnknown_3004FE0 + ldr r1, _080EA640 @ =gBattlerControllerFuncs ldr r0, _080EA644 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5901,11 +5901,11 @@ _080EA630: ldr r1, _080EA648 @ =sub_80E8598 b _080EA658 .align 2, 0 -_080EA640: .4byte gUnknown_3004FE0 +_080EA640: .4byte gBattlerControllerFuncs _080EA644: .4byte gActiveBattler _080EA648: .4byte sub_80E8598 _080EA64C: - ldr r1, _080EA660 @ =gUnknown_3004FE0 + ldr r1, _080EA660 @ =gBattlerControllerFuncs ldr r0, _080EA664 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5918,7 +5918,7 @@ _080EA65A: pop {r0} bx r0 .align 2, 0 -_080EA660: .4byte gUnknown_3004FE0 +_080EA660: .4byte gBattlerControllerFuncs _080EA664: .4byte gActiveBattler _080EA668: .4byte sub_80E7918 thumb_func_end sub_80EA52C @@ -5962,7 +5962,7 @@ sub_80EA690: @ 80EA690 ands r0, r1 cmp r0, 0 beq _080EA6DC - ldr r1, _080EA6D0 @ =gUnknown_3004FE0 + ldr r1, _080EA6D0 @ =gBattlerControllerFuncs ldr r0, _080EA6D4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5973,11 +5973,11 @@ sub_80EA690: @ 80EA690 _080EA6C4: .4byte gBattle_BG0_X _080EA6C8: .4byte gBattle_BG0_Y _080EA6CC: .4byte gBattleTypeFlags -_080EA6D0: .4byte gUnknown_3004FE0 +_080EA6D0: .4byte gBattlerControllerFuncs _080EA6D4: .4byte gActiveBattler _080EA6D8: .4byte sub_80E763C _080EA6DC: - ldr r1, _080EA6F0 @ =gUnknown_3004FE0 + ldr r1, _080EA6F0 @ =gBattlerControllerFuncs ldr r0, _080EA6F4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5989,7 +5989,7 @@ _080EA6EA: pop {r0} bx r0 .align 2, 0 -_080EA6F0: .4byte gUnknown_3004FE0 +_080EA6F0: .4byte gBattlerControllerFuncs _080EA6F4: .4byte gActiveBattler _080EA6F8: .4byte sub_80E7844 thumb_func_end sub_80EA690 @@ -5997,7 +5997,7 @@ _080EA6F8: .4byte sub_80E7844 thumb_func_start sub_80EA6FC sub_80EA6FC: @ 80EA6FC push {r4,lr} - ldr r1, _080EA750 @ =gUnknown_3004FE0 + ldr r1, _080EA750 @ =gBattlerControllerFuncs ldr r0, _080EA754 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -6006,10 +6006,10 @@ sub_80EA6FC: @ 80EA6FC str r1, [r0] ldr r0, _080EA75C @ =gUnknown_83FDA4C movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080EA760 @ =gUnknown_83FE725 movs r1, 0x2 - bl sub_80D87BC + bl BattlePutTextOnWindow movs r4, 0 _080EA71E: lsls r0, r4, 24 @@ -6018,7 +6018,7 @@ _080EA71E: adds r4, 0x1 cmp r4, 0x3 ble _080EA71E - ldr r1, _080EA764 @ =gUnknown_2023FF8 + ldr r1, _080EA764 @ =gActionSelectionCursor ldr r0, _080EA754 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -6035,12 +6035,12 @@ _080EA71E: bl BattleStringExpandPlaceholdersToDisplayedString b _080EA776 .align 2, 0 -_080EA750: .4byte gUnknown_3004FE0 +_080EA750: .4byte gBattlerControllerFuncs _080EA754: .4byte gActiveBattler _080EA758: .4byte sub_80EA690 _080EA75C: .4byte gUnknown_83FDA4C _080EA760: .4byte gUnknown_83FE725 -_080EA764: .4byte gUnknown_2023FF8 +_080EA764: .4byte gActionSelectionCursor _080EA768: .4byte gBattleTypeFlags _080EA76C: .4byte gUnknown_83FE6D5 _080EA770: @@ -6049,7 +6049,7 @@ _080EA770: _080EA776: ldr r0, _080EA788 @ =gDisplayedStringBattle movs r1, 0x1 - bl sub_80D87BC + bl BattlePutTextOnWindow pop {r4} pop {r0} bx r0 @@ -6081,7 +6081,7 @@ sub_80EA798: @ 80EA798 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _080EA7D0 @ =gUnknown_3004FE0 + ldr r1, _080EA7D0 @ =gBattlerControllerFuncs ldr r0, _080EA7D4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -6094,7 +6094,7 @@ _080EA7C2: .align 2, 0 _080EA7C8: .4byte gBattle_BG0_X _080EA7CC: .4byte gBattle_BG0_Y -_080EA7D0: .4byte gUnknown_3004FE0 +_080EA7D0: .4byte gBattlerControllerFuncs _080EA7D4: .4byte gActiveBattler _080EA7D8: .4byte sub_80E7988 thumb_func_end sub_80EA798 @@ -6109,7 +6109,7 @@ sub_80EA7DC: @ 80EA7DC cmp r0, 0 beq _080EA810 bl sub_8032CB4 - ldr r1, _080EA804 @ =gUnknown_3004FE0 + ldr r1, _080EA804 @ =gBattlerControllerFuncs ldr r0, _080EA808 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -6119,7 +6119,7 @@ sub_80EA7DC: @ 80EA7DC b _080EA866 .align 2, 0 _080EA800: .4byte gBattleTypeFlags -_080EA804: .4byte gUnknown_3004FE0 +_080EA804: .4byte gBattlerControllerFuncs _080EA808: .4byte gActiveBattler _080EA80C: .4byte sub_80EA798 _080EA810: @@ -6182,7 +6182,7 @@ sub_80EA870: @ 80EA870 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _080EA8BC @ =gUnknown_3004FE0 + ldr r1, _080EA8BC @ =gBattlerControllerFuncs ldr r2, _080EA8C0 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -6194,7 +6194,7 @@ sub_80EA870: @ 80EA870 strb r0, [r1] movs r3, 0 ldr r5, _080EA8CC @ =gUnknown_203B0DC - ldr r4, _080EA8D0 @ =gUnknown_2022BC4 + ldr r4, _080EA8D0 @ =gBattleBufferA _080EA89E: adds r0, r3, r5 ldrb r1, [r2] @@ -6212,12 +6212,12 @@ _080EA89E: pop {r0} bx r0 .align 2, 0 -_080EA8BC: .4byte gUnknown_3004FE0 +_080EA8BC: .4byte gBattlerControllerFuncs _080EA8C0: .4byte gActiveBattler _080EA8C4: .4byte sub_80E7A70 _080EA8C8: .4byte gBattlerInMenuId _080EA8CC: .4byte gUnknown_203B0DC -_080EA8D0: .4byte gUnknown_2022BC4 +_080EA8D0: .4byte gBattleBufferA thumb_func_end sub_80EA870 thumb_func_start sub_80EA8D4 @@ -6240,7 +6240,7 @@ sub_80EA8D4: @ 80EA8D4 adds r1, r0 lsls r1, 3 adds r1, r5 - ldr r5, _080EA994 @ =gUnknown_2022BC4 + ldr r5, _080EA994 @ =gBattleBufferA lsls r2, 9 adds r6, r5, 0x1 adds r2, r6 @@ -6294,7 +6294,7 @@ _080EA940: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _080EA9A0 @ =gUnknown_3004FE0 + ldr r1, _080EA9A0 @ =gBattlerControllerFuncs ldr r2, _080EA98C @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -6313,10 +6313,10 @@ _080EA984: .4byte TaskDummy _080EA988: .4byte gUnknown_3004FFC _080EA98C: .4byte gActiveBattler _080EA990: .4byte gTasks -_080EA994: .4byte gUnknown_2022BC4 +_080EA994: .4byte gBattleBufferA _080EA998: .4byte gBattleStruct _080EA99C: .4byte gUnknown_203B0DC -_080EA9A0: .4byte gUnknown_3004FE0 +_080EA9A0: .4byte gBattlerControllerFuncs _080EA9A4: .4byte sub_80E79B8 _080EA9A8: .4byte gBattlerInMenuId thumb_func_end sub_80EA8D4 @@ -6338,7 +6338,7 @@ sub_80EA9B8: @ 80EA9B8 sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _080EAA30 @ =gUnknown_2022BC4 + ldr r3, _080EAA30 @ =gBattleBufferA ldr r0, _080EAA34 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] @@ -6387,7 +6387,7 @@ sub_80EA9B8: @ 80EA9B8 bl SetBattleBarStruct b _080EAA82 .align 2, 0 -_080EAA30: .4byte gUnknown_2022BC4 +_080EAA30: .4byte gBattleBufferA _080EAA34: .4byte gActiveBattler _080EAA38: .4byte 0x00007fff _080EAA3C: .4byte gBattlerPartyIndexes @@ -6421,7 +6421,7 @@ _080EAA48: movs r2, 0 bl sub_8048440 _080EAA82: - ldr r1, _080EAAAC @ =gUnknown_3004FE0 + ldr r1, _080EAAAC @ =gBattlerControllerFuncs ldr r0, _080EAAB0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -6439,7 +6439,7 @@ _080EAA82: _080EAAA0: .4byte gBattlerPartyIndexes _080EAAA4: .4byte gPlayerParty _080EAAA8: .4byte gHealthboxSpriteIds -_080EAAAC: .4byte gUnknown_3004FE0 +_080EAAAC: .4byte gBattlerControllerFuncs _080EAAB0: .4byte gActiveBattler _080EAAB4: .4byte sub_80E88C0 thumb_func_end sub_80EA9B8 @@ -6447,7 +6447,7 @@ _080EAAB4: .4byte sub_80E88C0 thumb_func_start sub_80EAAB8 sub_80EAAB8: @ 80EAAB8 push {r4-r7,lr} - ldr r5, _080EAAE4 @ =gUnknown_2022BC4 + ldr r5, _080EAAE4 @ =gBattleBufferA ldr r6, _080EAAE8 @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 @@ -6467,7 +6467,7 @@ sub_80EAAB8: @ 80EAAB8 bl WallyBufferExecCompleted b _080EAB3C .align 2, 0 -_080EAAE4: .4byte gUnknown_2022BC4 +_080EAAE4: .4byte gBattleBufferA _080EAAE8: .4byte gActiveBattler _080EAAEC: .4byte gPlayerParty _080EAAF0: @@ -6500,7 +6500,7 @@ _080EAAF0: strh r4, [r1, 0xA] ldrb r0, [r6] strh r0, [r1, 0xC] - ldr r1, _080EAB4C @ =gUnknown_3004FE0 + ldr r1, _080EAB4C @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -6513,7 +6513,7 @@ _080EAB3C: .align 2, 0 _080EAB44: .4byte sub_80E7E04 _080EAB48: .4byte gTasks -_080EAB4C: .4byte gUnknown_3004FE0 +_080EAB4C: .4byte gBattlerControllerFuncs _080EAB50: .4byte nullsub_81 thumb_func_end sub_80EAAB8 @@ -6662,7 +6662,7 @@ _080EAC30: .4byte gSprites _080EAC34: .4byte gBattlerSpriteIds _080EAC38: .4byte gActiveBattler _080EAC3C: - ldr r1, _080EAC6C @ =gUnknown_2024005 + ldr r1, _080EAC6C @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -6676,7 +6676,7 @@ _080EAC3C: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _080EAC70 @ =gUnknown_3004FE0 + ldr r1, _080EAC70 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -6687,8 +6687,8 @@ _080EAC66: pop {r0} bx r0 .align 2, 0 -_080EAC6C: .4byte gUnknown_2024005 -_080EAC70: .4byte gUnknown_3004FE0 +_080EAC6C: .4byte gDoingBattleAnim +_080EAC70: .4byte gBattlerControllerFuncs _080EAC74: .4byte DoHitAnimBlinkSpriteEffect_3 thumb_func_end sub_80EAC08 @@ -6703,7 +6703,7 @@ sub_80EAC78: @ 80EAC78 thumb_func_start sub_80EAC84 sub_80EAC84: @ 80EAC84 push {lr} - ldr r2, _080EACAC @ =gUnknown_2022BC4 + ldr r2, _080EACAC @ =gBattleBufferA ldr r0, _080EACB0 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -6720,14 +6720,14 @@ sub_80EAC84: @ 80EAC84 pop {r0} bx r0 .align 2, 0 -_080EACAC: .4byte gUnknown_2022BC4 +_080EACAC: .4byte gBattleBufferA _080EACB0: .4byte gActiveBattler thumb_func_end sub_80EAC84 thumb_func_start sub_80EACB4 sub_80EACB4: @ 80EACB4 push {lr} - ldr r2, _080EACDC @ =gUnknown_2022BC4 + ldr r2, _080EACDC @ =gBattleBufferA ldr r0, _080EACE0 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -6744,7 +6744,7 @@ sub_80EACB4: @ 80EACB4 pop {r0} bx r0 .align 2, 0 -_080EACDC: .4byte gUnknown_2022BC4 +_080EACDC: .4byte gBattleBufferA _080EACE0: .4byte gActiveBattler thumb_func_end sub_80EACB4 @@ -6779,14 +6779,14 @@ _080EAD1C: .4byte gPlayerParty thumb_func_start sub_80EAD20 sub_80EAD20: @ 80EAD20 push {lr} - ldr r1, _080EAD48 @ =gUnknown_2022BC4 + ldr r1, _080EAD48 @ =gBattleBufferA ldr r0, _080EAD4C @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _080EAD50 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -6796,7 +6796,7 @@ sub_80EAD20: @ 80EAD20 pop {r0} bx r0 .align 2, 0 -_080EAD48: .4byte gUnknown_2022BC4 +_080EAD48: .4byte gBattleBufferA _080EAD4C: .4byte gActiveBattler _080EAD50: .4byte gIntroSlideFlags thumb_func_end sub_80EAD20 @@ -6957,7 +6957,7 @@ _080EAE84: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _080EAEDC @ =gUnknown_3004FE0 + ldr r1, _080EAEDC @ =gBattlerControllerFuncs ldrb r0, [r7] lsls r0, 2 adds r0, r1 @@ -6980,7 +6980,7 @@ _080EAECC: .4byte gTasks _080EAED0: .4byte gBattleSpritesDataPtr _080EAED4: .4byte gUnknown_2024000 _080EAED8: .4byte sub_80491B0 -_080EAEDC: .4byte gUnknown_3004FE0 +_080EAEDC: .4byte gBattlerControllerFuncs _080EAEE0: .4byte nullsub_13 _080EAEE4: ldr r0, _080EAF20 @ =gBattleSpritesDataPtr @@ -7041,7 +7041,7 @@ sub_80EAF34: @ 80EAF34 ldr r0, _080EB080 @ =gBattlerPartyIndexes lsls r2, r6, 1 adds r2, r0 - ldr r0, _080EB084 @ =gUnknown_2022BC4 + ldr r0, _080EB084 @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -7180,7 +7180,7 @@ sub_80EAF34: @ 80EAF34 .align 2, 0 _080EB07C: .4byte gBattleSpritesDataPtr _080EB080: .4byte gBattlerPartyIndexes -_080EB084: .4byte gUnknown_2022BC4 +_080EB084: .4byte gBattleBufferA _080EB088: .4byte gPlayerParty _080EB08C: .4byte sub_8033E3C _080EB090: .4byte gUnknown_3004FFC @@ -7216,7 +7216,7 @@ _080EB0CC: ldrb r5, [r4] ldrh r0, [r1, 0x8] strb r0, [r4] - ldr r0, _080EB10C @ =gUnknown_2022BC4 + ldr r0, _080EB10C @ =gBattleBufferA ldrb r1, [r4] lsls r2, r1, 9 adds r0, 0x1 @@ -7228,7 +7228,7 @@ _080EB0CC: strb r0, [r2] ldrb r0, [r4] bl sub_80EAF34 - ldr r1, _080EB114 @ =gUnknown_3004FE0 + ldr r1, _080EB114 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -7243,16 +7243,16 @@ _080EB102: bx r0 .align 2, 0 _080EB108: .4byte gActiveBattler -_080EB10C: .4byte gUnknown_2022BC4 +_080EB10C: .4byte gBattleBufferA _080EB110: .4byte gBattlerPartyIndexes -_080EB114: .4byte gUnknown_3004FE0 +_080EB114: .4byte gBattlerControllerFuncs _080EB118: .4byte sub_80E7B4C thumb_func_end sub_80EB0A8 thumb_func_start sub_80EB11C sub_80EB11C: @ 80EB11C push {r4,r5,lr} - ldr r1, _080EB144 @ =gUnknown_2022BC4 + ldr r1, _080EB144 @ =gBattleBufferA ldr r0, _080EB148 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -7269,7 +7269,7 @@ sub_80EB11C: @ 80EB11C bl WallyBufferExecCompleted b _080EB18A .align 2, 0 -_080EB144: .4byte gUnknown_2022BC4 +_080EB144: .4byte gBattleBufferA _080EB148: .4byte gActiveBattler _080EB14C: ldr r0, _080EB190 @ =gBattleSpritesDataPtr @@ -7350,7 +7350,7 @@ sub_80EB1D0: @ 80EB1D0 sub_80EB1DC: @ 80EB1DC push {r4-r6,lr} sub sp, 0x4 - ldr r5, _080EB214 @ =gUnknown_2022BC4 + ldr r5, _080EB214 @ =gBattleBufferA ldr r6, _080EB218 @ =gActiveBattler ldrb r2, [r6] lsls r1, r2, 9 @@ -7375,10 +7375,10 @@ sub_80EB1DC: @ 80EB1DC bl WallyBufferExecCompleted b _080EB228 .align 2, 0 -_080EB214: .4byte gUnknown_2022BC4 +_080EB214: .4byte gBattleBufferA _080EB218: .4byte gActiveBattler _080EB21C: - ldr r0, _080EB230 @ =gUnknown_3004FE0 + ldr r0, _080EB230 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -7390,14 +7390,14 @@ _080EB228: pop {r0} bx r0 .align 2, 0 -_080EB230: .4byte gUnknown_3004FE0 +_080EB230: .4byte gBattlerControllerFuncs _080EB234: .4byte CompleteOnFinishedBattleAnimation_4 thumb_func_end sub_80EB1DC thumb_func_start sub_80EB238 sub_80EB238: @ 80EB238 push {r4,lr} - ldr r1, _080EB26C @ =gUnknown_2022BC4 + ldr r1, _080EB26C @ =gBattleBufferA ldr r4, _080EB270 @ =gActiveBattler ldrb r2, [r4] lsls r0, r2, 9 @@ -7420,7 +7420,7 @@ _080EB260: pop {r0} bx r0 .align 2, 0 -_080EB26C: .4byte gUnknown_2022BC4 +_080EB26C: .4byte gBattleBufferA _080EB270: .4byte gActiveBattler thumb_func_end sub_80EB238 @@ -7436,7 +7436,7 @@ sub_80EB274: @ 80EB274 sub_80EB280: @ 80EB280 push {r4,lr} ldr r2, _080EB2C4 @ =gBattleOutcome - ldr r1, _080EB2C8 @ =gUnknown_2022BC4 + ldr r1, _080EB2C8 @ =gBattleBufferA ldr r4, _080EB2CC @ =gActiveBattler ldrb r0, [r4] lsls r0, 9 @@ -7455,7 +7455,7 @@ sub_80EB280: @ 80EB280 ands r0, r1 cmp r0, 0x2 bne _080EB2BC - ldr r0, _080EB2D4 @ =gUnknown_3004FE0 + ldr r0, _080EB2D4 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -7467,10 +7467,10 @@ _080EB2BC: bx r0 .align 2, 0 _080EB2C4: .4byte gBattleOutcome -_080EB2C8: .4byte gUnknown_2022BC4 +_080EB2C8: .4byte gBattleBufferA _080EB2CC: .4byte gActiveBattler _080EB2D0: .4byte gBattleTypeFlags -_080EB2D4: .4byte gUnknown_3004FE0 +_080EB2D4: .4byte gBattlerControllerFuncs _080EB2D8: .4byte sub_80E7930 thumb_func_end sub_80EB280 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 3bc790216..6f9097ed6 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -12,7 +12,7 @@ nullsub_17: @ 8035A78 thumb_func_start sub_8035A7C sub_8035A7C: @ 8035A7C - ldr r1, _08035A8C @ =gUnknown_3004FE0 + ldr r1, _08035A8C @ =gBattlerControllerFuncs ldr r0, _08035A90 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -21,7 +21,7 @@ sub_8035A7C: @ 8035A7C str r1, [r0] bx lr .align 2, 0 -_08035A8C: .4byte gUnknown_3004FE0 +_08035A8C: .4byte gBattlerControllerFuncs _08035A90: .4byte gActiveBattler _08035A94: .4byte sub_8035A98 thumb_func_end sub_8035A7C @@ -29,7 +29,7 @@ _08035A94: .4byte sub_8035A98 thumb_func_start sub_8035A98 sub_8035A98: @ 8035A98 push {lr} - ldr r2, _08035ACC @ =gUnknown_2023BC8 + ldr r2, _08035ACC @ =gBattleControllerExecFlags ldr r1, _08035AD0 @ =gBitTable ldr r0, _08035AD4 @ =gActiveBattler ldrb r3, [r0] @@ -40,7 +40,7 @@ sub_8035A98: @ 8035A98 ands r1, r0 cmp r1, 0 beq _08035AE4 - ldr r0, _08035AD8 @ =gUnknown_2022BC4 + ldr r0, _08035AD8 @ =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] @@ -54,10 +54,10 @@ sub_8035A98: @ 8035A98 bl _call_via_r0 b _08035AE4 .align 2, 0 -_08035ACC: .4byte gUnknown_2023BC8 +_08035ACC: .4byte gBattleControllerExecFlags _08035AD0: .4byte gBitTable _08035AD4: .4byte gActiveBattler -_08035AD8: .4byte gUnknown_2022BC4 +_08035AD8: .4byte gBattleBufferA _08035ADC: .4byte gUnknown_8250A34 _08035AE0: bl OpponentBufferExecCompleted @@ -424,7 +424,7 @@ _08035DB0: adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] - ldr r1, _08035DE8 @ =gUnknown_3004FE0 + ldr r1, _08035DE8 @ =gBattlerControllerFuncs ldrb r0, [r3] lsls r0, 2 adds r0, r1 @@ -439,7 +439,7 @@ _08035DD8: .4byte gMPlayInfo_BGM _08035DDC: .4byte 0x0000ffff _08035DE0: .4byte gBattleSpritesDataPtr _08035DE4: .4byte gActiveBattler -_08035DE8: .4byte gUnknown_3004FE0 +_08035DE8: .4byte gBattlerControllerFuncs _08035DEC: .4byte sub_8035BE8 thumb_func_end sub_8035C30 @@ -655,7 +655,7 @@ _08035F28: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _08035FE0 @ =gUnknown_3004FE0 + ldr r1, _08035FE0 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -677,7 +677,7 @@ _08035FD0: .4byte gBattleTypeFlags _08035FD4: .4byte gUnknown_3004FFC _08035FD8: .4byte gSprites _08035FDC: .4byte gHealthboxSpriteIds -_08035FE0: .4byte gUnknown_3004FE0 +_08035FE0: .4byte gBattlerControllerFuncs _08035FE4: .4byte sub_8035C30 thumb_func_end sub_8035DF0 @@ -815,7 +815,7 @@ _080360E8: beq _08036120 movs r0, 0x1 bl sub_80EB2F4 - ldr r0, _08036118 @ =gUnknown_3004FE0 + ldr r0, _08036118 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -824,7 +824,7 @@ _080360E8: b _08036124 .align 2, 0 _08036114: .4byte gBattleTypeFlags -_08036118: .4byte gUnknown_3004FE0 +_08036118: .4byte gBattlerControllerFuncs _0803611C: .4byte sub_80E8570 _08036120: bl OpponentBufferExecCompleted @@ -961,7 +961,7 @@ sub_80361FC: @ 80361FC subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _08036244 @ =gUnknown_2024005 + ldr r0, _08036244 @ =gDoingBattleAnim strb r3, [r0] bl OpponentBufferExecCompleted b _08036272 @@ -969,7 +969,7 @@ sub_80361FC: @ 80361FC _08036238: .4byte gBattlerSpriteIds _0803623C: .4byte gActiveBattler _08036240: .4byte gSprites -_08036244: .4byte gUnknown_2024005 +_08036244: .4byte gDoingBattleAnim _08036248: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -1033,7 +1033,7 @@ sub_8036278: @ 8036278 movs r3, 0x6 bl InitAndLaunchSpecialAnimation _080362B8: - ldr r0, _080362E0 @ =gUnknown_3004FE0 + ldr r0, _080362E0 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -1049,7 +1049,7 @@ _080362D0: .4byte gHealthboxSpriteIds _080362D4: .4byte gActiveBattler _080362D8: .4byte SpriteCallbackDummy _080362DC: .4byte gBattleSpritesDataPtr -_080362E0: .4byte gUnknown_3004FE0 +_080362E0: .4byte gBattlerControllerFuncs _080362E4: .4byte sub_80362E8 thumb_func_end sub_8036278 @@ -1161,7 +1161,7 @@ sub_8036334: @ 8036334 bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility - ldr r1, _08036400 @ =gUnknown_3004FE0 + ldr r1, _08036400 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -1180,7 +1180,7 @@ _080363F0: .4byte gSprites _080363F4: .4byte gHealthboxSpriteIds _080363F8: .4byte gBattlerPartyIndexes _080363FC: .4byte gEnemyParty -_08036400: .4byte gUnknown_3004FE0 +_08036400: .4byte gBattlerControllerFuncs _08036404: .4byte sub_8036278 thumb_func_end sub_8036334 @@ -1255,7 +1255,7 @@ _0803643A: lsrs r1, 16 adds r0, r4, 0 bl SetBattlerShadowSpriteCallback - ldr r1, _080364C8 @ =gUnknown_3004FE0 + ldr r1, _080364C8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -1273,7 +1273,7 @@ _080364B8: .4byte gEnemyParty _080364BC: .4byte gSprites _080364C0: .4byte gUnknown_3004FFC _080364C4: .4byte SpriteCallbackDummy -_080364C8: .4byte gUnknown_3004FE0 +_080364C8: .4byte gBattlerControllerFuncs _080364CC: .4byte sub_8036334 thumb_func_end sub_8036408 @@ -1331,14 +1331,14 @@ _0803652C: .4byte gActiveBattler thumb_func_start OpponentBufferExecCompleted OpponentBufferExecCompleted: @ 8036530 - ldr r1, _08036554 @ =gUnknown_3004FE0 + ldr r1, _08036554 @ =gBattlerControllerFuncs ldr r2, _08036558 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r1, _0803655C @ =sub_8035A98 str r1, [r0] - ldr r3, _08036560 @ =gUnknown_2023BC8 + ldr r3, _08036560 @ =gBattleControllerExecFlags ldr r1, _08036564 @ =gBitTable ldrb r0, [r2] lsls r0, 2 @@ -1349,10 +1349,10 @@ OpponentBufferExecCompleted: @ 8036530 str r0, [r3] bx lr .align 2, 0 -_08036554: .4byte gUnknown_3004FE0 +_08036554: .4byte gBattlerControllerFuncs _08036558: .4byte gActiveBattler _0803655C: .4byte sub_8035A98 -_08036560: .4byte gUnknown_2023BC8 +_08036560: .4byte gBattleControllerExecFlags _08036564: .4byte gBitTable thumb_func_end OpponentBufferExecCompleted @@ -1361,7 +1361,7 @@ OpponentHandleGetAttributes: @ 8036568 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _08036594 @ =gUnknown_2022BC4 + ldr r1, _08036594 @ =gBattleBufferA ldr r0, _08036598 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -1379,7 +1379,7 @@ OpponentHandleGetAttributes: @ 8036568 adds r6, r0, 0 b _080365C2 .align 2, 0 -_08036594: .4byte gUnknown_2022BC4 +_08036594: .4byte gBattleBufferA _08036598: .4byte gActiveBattler _0803659C: .4byte gBattlerPartyIndexes _080365A0: @@ -1426,7 +1426,7 @@ sub_80365DC: @ 80365DC lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 - ldr r2, _08036610 @ =gUnknown_2022BC4 + ldr r2, _08036610 @ =gBattleBufferA ldr r3, _08036614 @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 @@ -1443,7 +1443,7 @@ _08036606: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08036610: .4byte gUnknown_2022BC4 +_08036610: .4byte gBattleBufferA _08036614: .4byte gActiveBattler _08036618: .4byte _0803661C .align 2, 0 @@ -2361,7 +2361,7 @@ OpponentHandlecmd1: @ 8036D88 movs r0, 0x64 adds r4, r2, 0 muls r4, r0 - ldr r3, _08036E08 @ =gUnknown_2022BC4 + ldr r3, _08036E08 @ =gBattleBufferA lsls r1, 9 adds r0, r3, 0x1 adds r0, r1, r0 @@ -2412,14 +2412,14 @@ _08036DDE: .align 2, 0 _08036E00: .4byte gBattlerPartyIndexes _08036E04: .4byte gActiveBattler -_08036E08: .4byte gUnknown_2022BC4 +_08036E08: .4byte gBattleBufferA _08036E0C: .4byte gEnemyParty thumb_func_end OpponentHandlecmd1 thumb_func_start OpponentHandleSetAttributes OpponentHandleSetAttributes: @ 8036E10 push {r4,r5,lr} - ldr r1, _08036E34 @ =gUnknown_2022BC4 + ldr r1, _08036E34 @ =gBattleBufferA ldr r0, _08036E38 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2435,7 +2435,7 @@ OpponentHandleSetAttributes: @ 8036E10 bl sub_8036E68 b _08036E5E .align 2, 0 -_08036E34: .4byte gUnknown_2022BC4 +_08036E34: .4byte gBattleBufferA _08036E38: .4byte gActiveBattler _08036E3C: .4byte gBattlerPartyIndexes _08036E40: @@ -2812,7 +2812,7 @@ _080371C0: muls r0, r5 ldr r1, _080371D8 @ =gEnemyParty adds r0, r1 - ldr r3, _080371DC @ =gUnknown_2022BC4 + ldr r3, _080371DC @ =gBattleBufferA ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 @@ -2822,7 +2822,7 @@ _080371C0: b _0803725E .align 2, 0 _080371D8: .4byte gEnemyParty -_080371DC: .4byte gUnknown_2022BC4 +_080371DC: .4byte gBattleBufferA _080371E0: movs r0, 0x64 adds r4, r5, 0 @@ -2876,7 +2876,7 @@ _08037248: muls r0, r5 ldr r1, _08037268 @ =gEnemyParty adds r0, r1 - ldr r3, _0803726C @ =gUnknown_2022BC4 + ldr r3, _0803726C @ =gBattleBufferA ldrb r2, [r6] lsls r2, 9 adds r1, r3, 0x1 @@ -2890,7 +2890,7 @@ _0803725E: b _08037774 .align 2, 0 _08037268: .4byte gEnemyParty -_0803726C: .4byte gUnknown_2022BC4 +_0803726C: .4byte gBattleBufferA _08037270: movs r0, 0x64 muls r0, r5 @@ -3514,7 +3514,7 @@ OpponentHandlecmd3: @ 8037788 movs r0, 0x64 adds r3, r1, 0 muls r3, r0 - ldr r4, _080377F4 @ =gUnknown_2022BC4 + ldr r4, _080377F4 @ =gBattleBufferA lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 @@ -3557,7 +3557,7 @@ _080377E0: .align 2, 0 _080377EC: .4byte gBattlerPartyIndexes _080377F0: .4byte gActiveBattler -_080377F4: .4byte gUnknown_2022BC4 +_080377F4: .4byte gBattleBufferA _080377F8: .4byte gEnemyParty thumb_func_end OpponentHandlecmd3 @@ -3745,7 +3745,7 @@ _080378AA: adds r0, r4, 0 bl SetBattlerShadowSpriteCallback _08037986: - ldr r0, _080379C0 @ =gUnknown_3004FE0 + ldr r0, _080379C0 @ =gBattlerControllerFuncs ldrb r1, [r7] lsls r1, 2 adds r1, r0 @@ -3766,7 +3766,7 @@ _080379B0: .4byte gBattleMonForms _080379B4: .4byte gBattleTypeFlags _080379B8: .4byte gBattlerPartyIndexes _080379BC: .4byte gEnemyParty -_080379C0: .4byte gUnknown_3004FE0 +_080379C0: .4byte gBattlerControllerFuncs _080379C4: .4byte sub_8035FE8 thumb_func_end sub_80377FC @@ -3785,7 +3785,7 @@ OpponentHandleSwitchInAnim: @ 80379C8 ldrb r0, [r4] lsls r2, r0, 1 adds r2, r1 - ldr r3, _08037A1C @ =gUnknown_2022BC4 + ldr r3, _08037A1C @ =gBattleBufferA lsls r0, 9 adds r1, r3, 0x1 adds r0, r1 @@ -3797,7 +3797,7 @@ OpponentHandleSwitchInAnim: @ 80379C8 adds r1, r3 ldrb r1, [r1] bl sub_8037A28 - ldr r1, _08037A20 @ =gUnknown_3004FE0 + ldr r1, _08037A20 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -3810,8 +3810,8 @@ OpponentHandleSwitchInAnim: @ 80379C8 _08037A10: .4byte gActiveBattler _08037A14: .4byte gBattleStruct _08037A18: .4byte gBattlerPartyIndexes -_08037A1C: .4byte gUnknown_2022BC4 -_08037A20: .4byte gUnknown_3004FE0 +_08037A1C: .4byte gBattleBufferA +_08037A20: .4byte gBattlerControllerFuncs _08037A24: .4byte sub_8036408 thumb_func_end OpponentHandleSwitchInAnim @@ -3832,7 +3832,7 @@ sub_8037A28: @ 8037A28 ldr r0, _08037B84 @ =gBattlerPartyIndexes lsls r4, r6, 1 adds r4, r0 - ldr r0, _08037B88 @ =gUnknown_2022BC4 + ldr r0, _08037B88 @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -3980,7 +3980,7 @@ sub_8037A28: @ 8037A28 bx r0 .align 2, 0 _08037B84: .4byte gBattlerPartyIndexes -_08037B88: .4byte gUnknown_2022BC4 +_08037B88: .4byte gBattleBufferA _08037B8C: .4byte gEnemyParty _08037B90: .4byte sub_8033E3C _08037B94: .4byte gUnknown_3004FFC @@ -3994,7 +3994,7 @@ _08037BA8: .4byte SpriteCallbackDummy thumb_func_start sub_8037BAC sub_8037BAC: @ 8037BAC push {r4-r6,lr} - ldr r1, _08037BE0 @ =gUnknown_2022BC4 + ldr r1, _08037BE0 @ =gBattleBufferA ldr r6, _08037BE4 @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 @@ -4011,7 +4011,7 @@ sub_8037BAC: @ 8037BAC lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] - ldr r1, _08037BEC @ =gUnknown_3004FE0 + ldr r1, _08037BEC @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4019,10 +4019,10 @@ sub_8037BAC: @ 8037BAC str r1, [r0] b _08037C30 .align 2, 0 -_08037BE0: .4byte gUnknown_2022BC4 +_08037BE0: .4byte gBattleBufferA _08037BE4: .4byte gActiveBattler _08037BE8: .4byte gBattleSpritesDataPtr -_08037BEC: .4byte gUnknown_3004FE0 +_08037BEC: .4byte gBattlerControllerFuncs _08037BF0: .4byte sub_8037C44 _08037BF4: ldr r5, _08037C38 @ =gBattlerSpriteIds @@ -4119,7 +4119,7 @@ _08037C9A: adds r1, r2, 0 movs r3, 0x2 bl InitAndLaunchSpecialAnimation - ldr r1, _08037CC8 @ =gUnknown_3004FE0 + ldr r1, _08037CC8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4130,7 +4130,7 @@ _08037CC2: pop {r0} bx r0 .align 2, 0 -_08037CC8: .4byte gUnknown_3004FE0 +_08037CC8: .4byte gBattlerControllerFuncs _08037CCC: .4byte sub_8036170 thumb_func_end sub_8037C44 @@ -4323,7 +4323,7 @@ _08037D3A: adds r0, r4 ldr r1, _08037E98 @ =sub_8033EEC str r1, [r0] - ldr r1, _08037E9C @ =gUnknown_3004FE0 + ldr r1, _08037E9C @ =gBattlerControllerFuncs mov r2, r8 ldrb r0, [r2] lsls r0, 2 @@ -4349,7 +4349,7 @@ _08037E8C: .4byte gTrainerFrontPicTable _08037E90: .4byte 0x000003ff _08037E94: .4byte 0xfffffc00 _08037E98: .4byte sub_8033EEC -_08037E9C: .4byte gUnknown_3004FE0 +_08037E9C: .4byte gBattlerControllerFuncs _08037EA0: .4byte sub_8035AE8 thumb_func_end sub_8037CD0 @@ -4544,7 +4544,7 @@ _08037F0E: adds r0, r4 ldr r1, _0803806C @ =sub_8033EEC str r1, [r0] - ldr r1, _08038070 @ =gUnknown_3004FE0 + ldr r1, _08038070 @ =gBattlerControllerFuncs ldrb r0, [r3] lsls r0, 2 adds r0, r1 @@ -4569,7 +4569,7 @@ _08038060: .4byte gTrainerFrontPicTable _08038064: .4byte 0x000003ff _08038068: .4byte 0xfffffc00 _0803806C: .4byte sub_8033EEC -_08038070: .4byte gUnknown_3004FE0 +_08038070: .4byte gBattlerControllerFuncs _08038074: .4byte sub_8035B20 thumb_func_end sub_8037EA4 @@ -4635,7 +4635,7 @@ sub_8038078: @ 8038078 adds r0, r5 ldr r1, _08038118 @ =SpriteCallbackDummy bl StoreSpriteCallbackInData6 - ldr r1, _0803811C @ =gUnknown_3004FE0 + ldr r1, _0803811C @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -4650,7 +4650,7 @@ _0803810C: .4byte gActiveBattler _08038110: .4byte gSprites _08038114: .4byte sub_8075590 _08038118: .4byte SpriteCallbackDummy -_0803811C: .4byte gUnknown_3004FE0 +_0803811C: .4byte gBattlerControllerFuncs _08038120: .4byte sub_8035B58 thumb_func_end sub_8038078 @@ -4720,7 +4720,7 @@ _08038178: adds r0, r2 ldr r1, _080381C4 @ =sub_8011EA0 str r1, [r0] - ldr r1, _080381C8 @ =gUnknown_3004FE0 + ldr r1, _080381C8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4734,7 +4734,7 @@ _080381B4: _080381BC: .4byte gSprites _080381C0: .4byte gBattlerSpriteIds _080381C4: .4byte sub_8011EA0 -_080381C8: .4byte gUnknown_3004FE0 +_080381C8: .4byte gBattlerControllerFuncs _080381CC: .4byte sub_803612C thumb_func_end sub_8038124 @@ -4781,7 +4781,7 @@ sub_8038200: @ 8038200 beq _08038212 b _08038326 _08038212: - ldr r0, _080382E8 @ =gUnknown_2022BC4 + ldr r0, _080382E8 @ =gBattleBufferA mov r12, r0 ldrb r2, [r6] lsls r2, 9 @@ -4885,7 +4885,7 @@ _08038212: b _08038326 .align 2, 0 _080382E4: .4byte gActiveBattler -_080382E8: .4byte gUnknown_2022BC4 +_080382E8: .4byte gBattleBufferA _080382EC: .4byte gAnimMoveTurn _080382F0: .4byte gAnimMovePower _080382F4: .4byte gAnimMoveDmg @@ -4903,7 +4903,7 @@ _08038308: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _08038330 @ =gUnknown_3004FE0 + ldr r1, _08038330 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4915,7 +4915,7 @@ _08038326: bx r0 .align 2, 0 _0803832C: .4byte gBattleSpritesDataPtr -_08038330: .4byte gUnknown_3004FE0 +_08038330: .4byte gBattlerControllerFuncs _08038334: .4byte sub_8038338 thumb_func_end sub_8038200 @@ -4926,7 +4926,7 @@ sub_8038338: @ 8038338 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r2, _08038384 @ =gUnknown_2022BC4 + ldr r2, _08038384 @ =gBattleBufferA ldr r6, _08038388 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -4960,7 +4960,7 @@ sub_8038338: @ 8038338 beq _0803839A b _080384AC .align 2, 0 -_08038384: .4byte gUnknown_2022BC4 +_08038384: .4byte gBattleBufferA _08038388: .4byte gActiveBattler _0803838C: .4byte gBattleSpritesDataPtr _08038390: @@ -5124,7 +5124,7 @@ sub_80384BC: @ 80384BC ldr r1, _080384FC @ =gUnknown_2022BC6 adds r4, r0, r1 ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -5132,7 +5132,7 @@ sub_80384BC: @ 80384BC beq _08038504 ldr r0, _08038500 @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _0803850C .align 2, 0 _080384F0: .4byte gBattle_BG0_X @@ -5143,7 +5143,7 @@ _08038500: .4byte gDisplayedStringBattle _08038504: ldr r0, _08038534 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _0803850C: ldr r0, _08038538 @ =gBattleTypeFlags ldr r0, [r0] @@ -5157,7 +5157,7 @@ _0803850C: ldr r0, _0803853C @ =0x0000017f cmp r1, r0 bne _08038568 - ldr r1, _08038540 @ =gUnknown_3004FE0 + ldr r1, _08038540 @ =gBattlerControllerFuncs ldr r0, _08038544 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5168,11 +5168,11 @@ _0803850C: _08038534: .4byte gDisplayedStringBattle _08038538: .4byte gBattleTypeFlags _0803853C: .4byte 0x0000017f -_08038540: .4byte gUnknown_3004FE0 +_08038540: .4byte gBattlerControllerFuncs _08038544: .4byte gActiveBattler _08038548: .4byte sub_80E85C0 _0803854C: - ldr r1, _0803855C @ =gUnknown_3004FE0 + ldr r1, _0803855C @ =gBattlerControllerFuncs ldr r0, _08038560 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5180,11 +5180,11 @@ _0803854C: ldr r1, _08038564 @ =sub_80E8598 b _08038574 .align 2, 0 -_0803855C: .4byte gUnknown_3004FE0 +_0803855C: .4byte gBattlerControllerFuncs _08038560: .4byte gActiveBattler _08038564: .4byte sub_80E8598 _08038568: - ldr r1, _0803857C @ =gUnknown_3004FE0 + ldr r1, _0803857C @ =gBattlerControllerFuncs ldr r0, _08038580 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5196,7 +5196,7 @@ _08038574: pop {r0} bx r0 .align 2, 0 -_0803857C: .4byte gUnknown_3004FE0 +_0803857C: .4byte gBattlerControllerFuncs _08038580: .4byte gActiveBattler _08038584: .4byte sub_80361E4 thumb_func_end sub_80384BC @@ -5555,7 +5555,7 @@ sub_8038844: @ 8038844 sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _080388BC @ =gUnknown_2022BC4 + ldr r3, _080388BC @ =gBattleBufferA ldr r0, _080388C0 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] @@ -5604,7 +5604,7 @@ sub_8038844: @ 8038844 bl SetBattleBarStruct b _080388FE .align 2, 0 -_080388BC: .4byte gUnknown_2022BC4 +_080388BC: .4byte gBattleBufferA _080388C0: .4byte gActiveBattler _080388C4: .4byte 0x00007fff _080388C8: .4byte gBattlerPartyIndexes @@ -5631,7 +5631,7 @@ _080388D4: movs r3, 0 bl SetBattleBarStruct _080388FE: - ldr r1, _08038928 @ =gUnknown_3004FE0 + ldr r1, _08038928 @ =gBattlerControllerFuncs ldr r0, _0803892C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5649,7 +5649,7 @@ _080388FE: _0803891C: .4byte gBattlerPartyIndexes _08038920: .4byte gEnemyParty _08038924: .4byte gHealthboxSpriteIds -_08038928: .4byte gUnknown_3004FE0 +_08038928: .4byte gBattlerControllerFuncs _0803892C: .4byte gActiveBattler _08038930: .4byte sub_80360A0 thumb_func_end sub_8038844 @@ -5698,7 +5698,7 @@ sub_8038940: @ 8038940 negs r0, r0 ands r0, r2 strb r0, [r1] - ldr r1, _080389B0 @ =gUnknown_3004FE0 + ldr r1, _080389B0 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5714,7 +5714,7 @@ _080389A0: .4byte gHealthboxSpriteIds _080389A4: .4byte gBattlerPartyIndexes _080389A8: .4byte gEnemyParty _080389AC: .4byte gBattleSpritesDataPtr -_080389B0: .4byte gUnknown_3004FE0 +_080389B0: .4byte gBattlerControllerFuncs _080389B4: .4byte sub_80364D0 thumb_func_end sub_8038940 @@ -5727,7 +5727,7 @@ sub_80389B8: @ 80389B8 lsls r0, 24 cmp r0, 0 bne _08038A08 - ldr r4, _08038A14 @ =gUnknown_2022BC4 + ldr r4, _08038A14 @ =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 @@ -5752,7 +5752,7 @@ sub_80389B8: @ 80389B8 lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation - ldr r1, _08038A18 @ =gUnknown_3004FE0 + ldr r1, _08038A18 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5764,8 +5764,8 @@ _08038A08: bx r0 .align 2, 0 _08038A10: .4byte gActiveBattler -_08038A14: .4byte gUnknown_2022BC4 -_08038A18: .4byte gUnknown_3004FE0 +_08038A14: .4byte gBattleBufferA +_08038A18: .4byte gBattlerControllerFuncs _08038A1C: .4byte sub_80364D0 thumb_func_end sub_80389B8 @@ -5861,7 +5861,7 @@ _08038AA4: .4byte gUnknown_2022870 OpponentHandlecmd38: @ 8038AA8 push {lr} ldr r3, _08038AD4 @ =gUnknown_2022870 - ldr r1, _08038AD8 @ =gUnknown_2022BC4 + ldr r1, _08038AD8 @ =gBattleBufferA ldr r0, _08038ADC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -5881,7 +5881,7 @@ OpponentHandlecmd38: @ 8038AA8 bx r0 .align 2, 0 _08038AD4: .4byte gUnknown_2022870 -_08038AD8: .4byte gUnknown_2022BC4 +_08038AD8: .4byte gBattleBufferA _08038ADC: .4byte gActiveBattler thumb_func_end OpponentHandlecmd38 @@ -5947,7 +5947,7 @@ _08038B48: .4byte gSprites _08038B4C: .4byte gBattlerSpriteIds _08038B50: .4byte gActiveBattler _08038B54: - ldr r1, _08038B84 @ =gUnknown_2024005 + ldr r1, _08038B84 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -5961,7 +5961,7 @@ _08038B54: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _08038B88 @ =gUnknown_3004FE0 + ldr r1, _08038B88 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5972,8 +5972,8 @@ _08038B7E: pop {r0} bx r0 .align 2, 0 -_08038B84: .4byte gUnknown_2024005 -_08038B88: .4byte gUnknown_3004FE0 +_08038B84: .4byte gDoingBattleAnim +_08038B88: .4byte gBattlerControllerFuncs _08038B8C: .4byte sub_80361FC thumb_func_end OpponentHandleHitAnimation @@ -5997,7 +5997,7 @@ OpponentHandleEffectivenessSound: @ 8038B9C bne _08038BB0 movs r3, 0xC0 _08038BB0: - ldr r2, _08038BDC @ =gUnknown_2022BC4 + ldr r2, _08038BDC @ =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 @@ -6017,13 +6017,13 @@ _08038BB0: bx r0 .align 2, 0 _08038BD8: .4byte gActiveBattler -_08038BDC: .4byte gUnknown_2022BC4 +_08038BDC: .4byte gBattleBufferA thumb_func_end OpponentHandleEffectivenessSound thumb_func_start OpponentHandlecmd44 OpponentHandlecmd44: @ 8038BE0 push {lr} - ldr r2, _08038C08 @ =gUnknown_2022BC4 + ldr r2, _08038C08 @ =gBattleBufferA ldr r0, _08038C0C @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -6040,7 +6040,7 @@ OpponentHandlecmd44: @ 8038BE0 pop {r0} bx r0 .align 2, 0 -_08038C08: .4byte gUnknown_2022BC4 +_08038C08: .4byte gBattleBufferA _08038C0C: .4byte gActiveBattler thumb_func_end OpponentHandlecmd44 @@ -6076,14 +6076,14 @@ _08038C48: .4byte gEnemyParty thumb_func_start OpponentHandleIntroSlide OpponentHandleIntroSlide: @ 8038C4C push {lr} - ldr r1, _08038C74 @ =gUnknown_2022BC4 + ldr r1, _08038C74 @ =gBattleBufferA ldr r0, _08038C78 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _08038C7C @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -6093,7 +6093,7 @@ OpponentHandleIntroSlide: @ 8038C4C pop {r0} bx r0 .align 2, 0 -_08038C74: .4byte gUnknown_2022BC4 +_08038C74: .4byte gBattleBufferA _08038C78: .4byte gActiveBattler _08038C7C: .4byte gIntroSlideFlags thumb_func_end OpponentHandleIntroSlide @@ -6201,7 +6201,7 @@ _08038D42: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _08038D88 @ =gUnknown_3004FE0 + ldr r1, _08038D88 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -6221,7 +6221,7 @@ _08038D78: .4byte gTasks _08038D7C: .4byte gBattleSpritesDataPtr _08038D80: .4byte gUnknown_2024000 _08038D84: .4byte sub_80491B0 -_08038D88: .4byte gUnknown_3004FE0 +_08038D88: .4byte gBattlerControllerFuncs _08038D8C: .4byte nullsub_17 thumb_func_end sub_8038C80 @@ -6282,7 +6282,7 @@ sub_8038DC4: @ 8038DC4 cmp r0, 0 beq _08038E30 _08038DFE: - ldr r0, _08038E28 @ =gUnknown_2022BC4 + ldr r0, _08038E28 @ =gBattleBufferA ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 @@ -6300,10 +6300,10 @@ _08038DFE: _08038E1C: .4byte gActiveBattler _08038E20: .4byte gTasks _08038E24: .4byte gBattleTypeFlags -_08038E28: .4byte gUnknown_2022BC4 +_08038E28: .4byte gBattleBufferA _08038E2C: .4byte gBattlerPartyIndexes _08038E30: - ldr r4, _08038E94 @ =gUnknown_2022BC4 + ldr r4, _08038E94 @ =gBattleBufferA ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 @@ -6334,7 +6334,7 @@ _08038E30: eors r0, r5 strb r0, [r7] _08038E70: - ldr r1, _08038E9C @ =gUnknown_3004FE0 + ldr r1, _08038E9C @ =gBattlerControllerFuncs ldr r2, _08038EA0 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -6352,9 +6352,9 @@ _08038E70: pop {r0} bx r0 .align 2, 0 -_08038E94: .4byte gUnknown_2022BC4 +_08038E94: .4byte gBattleBufferA _08038E98: .4byte gBattlerPartyIndexes -_08038E9C: .4byte gUnknown_3004FE0 +_08038E9C: .4byte gBattlerControllerFuncs _08038EA0: .4byte gActiveBattler _08038EA4: .4byte sub_8035DF0 thumb_func_end sub_8038DC4 @@ -6362,7 +6362,7 @@ _08038EA4: .4byte sub_8035DF0 thumb_func_start sub_8038EA8 sub_8038EA8: @ 8038EA8 push {r4-r7,lr} - ldr r1, _08038ED0 @ =gUnknown_2022BC4 + ldr r1, _08038ED0 @ =gBattleBufferA ldr r0, _08038ED4 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -6379,7 +6379,7 @@ sub_8038EA8: @ 8038EA8 bl OpponentBufferExecCompleted b _08038FA2 .align 2, 0 -_08038ED0: .4byte gUnknown_2022BC4 +_08038ED0: .4byte gBattleBufferA _08038ED4: .4byte gActiveBattler _08038ED8: ldr r4, _08038F30 @ =gBattleSpritesDataPtr @@ -6395,7 +6395,7 @@ _08038ED8: movs r2, 0x1 orrs r1, r2 strb r1, [r0] - ldr r1, _08038F38 @ =gUnknown_2022BC4 + ldr r1, _08038F38 @ =gBattleBufferA ldrb r2, [r3] lsls r0, r2, 9 adds r1, 0x2 @@ -6428,7 +6428,7 @@ _08038ED8: .align 2, 0 _08038F30: .4byte gBattleSpritesDataPtr _08038F34: .4byte gActiveBattler -_08038F38: .4byte gUnknown_2022BC4 +_08038F38: .4byte gBattleBufferA _08038F3C: movs r0, 0x3F negs r0, r0 @@ -6476,7 +6476,7 @@ _08038F44: movs r1, 0x5D strb r1, [r0, 0x5] _08038F96: - ldr r0, _08038FB4 @ =gUnknown_3004FE0 + ldr r0, _08038FB4 @ =gBattlerControllerFuncs ldrb r1, [r7] lsls r1, 2 adds r1, r0 @@ -6490,7 +6490,7 @@ _08038FA2: _08038FA8: .4byte gUnknown_2022BC8 _08038FAC: .4byte gUnknown_2024000 _08038FB0: .4byte gBattleSpritesDataPtr -_08038FB4: .4byte gUnknown_3004FE0 +_08038FB4: .4byte gBattlerControllerFuncs _08038FB8: .4byte sub_8038FBC thumb_func_end sub_8038EA8 @@ -6597,7 +6597,7 @@ sub_8039060: @ 8039060 adds r2, r0 lsls r2, 2 adds r2, r3 - ldr r0, _080390BC @ =gUnknown_2022BC4 + ldr r0, _080390BC @ =gBattleBufferA lsls r1, 9 adds r0, 0x1 adds r1, r0 @@ -6623,7 +6623,7 @@ _080390A6: _080390B0: .4byte gActiveBattler _080390B4: .4byte gSprites _080390B8: .4byte gBattlerSpriteIds -_080390BC: .4byte gUnknown_2022BC4 +_080390BC: .4byte gBattleBufferA thumb_func_end sub_8039060 thumb_func_start sub_80390C0 @@ -6636,7 +6636,7 @@ sub_80390C0: @ 80390C0 lsls r0, 24 cmp r0, 0 bne _08039118 - ldr r5, _08039108 @ =gUnknown_2022BC4 + ldr r5, _08039108 @ =gBattleBufferA ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 @@ -6661,9 +6661,9 @@ sub_80390C0: @ 80390C0 b _08039118 .align 2, 0 _08039104: .4byte gActiveBattler -_08039108: .4byte gUnknown_2022BC4 +_08039108: .4byte gBattleBufferA _0803910C: - ldr r0, _08039120 @ =gUnknown_3004FE0 + ldr r0, _08039120 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -6675,7 +6675,7 @@ _08039118: pop {r0} bx r0 .align 2, 0 -_08039120: .4byte gUnknown_3004FE0 +_08039120: .4byte gBattlerControllerFuncs _08039124: .4byte sub_8036500 thumb_func_end sub_80390C0 @@ -6712,7 +6712,7 @@ OpponentHandleCmd55: @ 8039140 negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, _08039180 @ =gUnknown_3004F80 + ldr r0, _08039180 @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -6725,7 +6725,7 @@ _0803916A: _08039174: .4byte gBattleTypeFlags _08039178: .4byte gMain _0803917C: .4byte 0x00000439 -_08039180: .4byte gUnknown_3004F80 +_08039180: .4byte gPreBattleCallback1 thumb_func_end OpponentHandleCmd55 thumb_func_start nullsub_18 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 913e020cb..029834bf8 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -12,29 +12,29 @@ nullsub_13: @ 802E310 thumb_func_start SetBankFuncToPlayerBufferRunCommand SetBankFuncToPlayerBufferRunCommand: @ 802E314 - ldr r1, _0802E32C @ =gUnknown_3004FE0 + ldr r1, _0802E32C @ =gBattlerControllerFuncs ldr r0, _0802E330 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, _0802E334 @ =PlayerBufferRunCommand str r1, [r0] - ldr r1, _0802E338 @ =gUnknown_2024005 + ldr r1, _0802E338 @ =gDoingBattleAnim movs r0, 0 strb r0, [r1] bx lr .align 2, 0 -_0802E32C: .4byte gUnknown_3004FE0 +_0802E32C: .4byte gBattlerControllerFuncs _0802E330: .4byte gActiveBattler _0802E334: .4byte PlayerBufferRunCommand -_0802E338: .4byte gUnknown_2024005 +_0802E338: .4byte gDoingBattleAnim thumb_func_end SetBankFuncToPlayerBufferRunCommand thumb_func_start PlayerBufferExecCompleted PlayerBufferExecCompleted: @ 802E33C push {r4,lr} sub sp, 0x4 - ldr r1, _0802E37C @ =gUnknown_3004FE0 + ldr r1, _0802E37C @ =gBattlerControllerFuncs ldr r4, _0802E380 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -54,7 +54,7 @@ PlayerBufferExecCompleted: @ 802E33C movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink - ldr r1, _0802E38C @ =gUnknown_2022BC4 + ldr r1, _0802E38C @ =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 @@ -62,13 +62,13 @@ PlayerBufferExecCompleted: @ 802E33C strb r1, [r0] b _0802E3A2 .align 2, 0 -_0802E37C: .4byte gUnknown_3004FE0 +_0802E37C: .4byte gBattlerControllerFuncs _0802E380: .4byte gActiveBattler _0802E384: .4byte PlayerBufferRunCommand _0802E388: .4byte gBattleTypeFlags -_0802E38C: .4byte gUnknown_2022BC4 +_0802E38C: .4byte gBattleBufferA _0802E390: - ldr r2, _0802E3AC @ =gUnknown_2023BC8 + ldr r2, _0802E3AC @ =gBattleControllerExecFlags ldr r1, _0802E3B0 @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -83,14 +83,14 @@ _0802E3A2: pop {r0} bx r0 .align 2, 0 -_0802E3AC: .4byte gUnknown_2023BC8 +_0802E3AC: .4byte gBattleControllerExecFlags _0802E3B0: .4byte gBitTable thumb_func_end PlayerBufferExecCompleted thumb_func_start PlayerBufferRunCommand PlayerBufferRunCommand: @ 802E3B4 push {lr} - ldr r2, _0802E3E8 @ =gUnknown_2023BC8 + ldr r2, _0802E3E8 @ =gBattleControllerExecFlags ldr r1, _0802E3EC @ =gBitTable ldr r0, _0802E3F0 @ =gActiveBattler ldrb r3, [r0] @@ -101,7 +101,7 @@ PlayerBufferRunCommand: @ 802E3B4 ands r1, r0 cmp r1, 0 beq _0802E400 - ldr r0, _0802E3F4 @ =gUnknown_2022BC4 + ldr r0, _0802E3F4 @ =gBattleBufferA lsls r1, r3, 9 adds r1, r0 ldrb r0, [r1] @@ -115,10 +115,10 @@ PlayerBufferRunCommand: @ 802E3B4 bl _call_via_r0 b _0802E400 .align 2, 0 -_0802E3E8: .4byte gUnknown_2023BC8 +_0802E3E8: .4byte gBattleControllerExecFlags _0802E3EC: .4byte gBitTable _0802E3F0: .4byte gActiveBattler -_0802E3F4: .4byte gUnknown_2022BC4 +_0802E3F4: .4byte gBattleBufferA _0802E3F8: .4byte gUnknown_825089C _0802E3FC: bl PlayerBufferExecCompleted @@ -159,7 +159,7 @@ sub_802E438: @ 802E438 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r7, _0802E498 @ =gUnknown_2022BC4 + ldr r7, _0802E498 @ =gBattleBufferA ldr r4, _0802E49C @ =gActiveBattler ldrb r0, [r4] lsls r2, r0, 9 @@ -189,7 +189,7 @@ sub_802E438: @ 802E438 beq _0802E4D0 movs r0, 0x5 bl PlaySE - ldr r1, _0802E4A4 @ =gUnknown_2023FF8 + ldr r1, _0802E4A4 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -201,10 +201,10 @@ sub_802E438: @ 802E438 beq _0802E4B2 b _0802E616 .align 2, 0 -_0802E498: .4byte gUnknown_2022BC4 +_0802E498: .4byte gBattleBufferA _0802E49C: .4byte gActiveBattler _0802E4A0: .4byte gMain -_0802E4A4: .4byte gUnknown_2023FF8 +_0802E4A4: .4byte gActionSelectionCursor _0802E4A8: cmp r0, 0x2 beq _0802E4BE @@ -234,7 +234,7 @@ _0802E4D0: ands r0, r1 cmp r0, 0 beq _0802E508 - ldr r5, _0802E504 @ =gUnknown_2023FF8 + ldr r5, _0802E504 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -256,13 +256,13 @@ _0802E4EA: movs r2, 0x1 b _0802E590 .align 2, 0 -_0802E504: .4byte gUnknown_2023FF8 +_0802E504: .4byte gActionSelectionCursor _0802E508: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802E540 - ldr r5, _0802E53C @ =gUnknown_2023FF8 + ldr r5, _0802E53C @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -284,14 +284,14 @@ _0802E522: movs r2, 0x1 b _0802E590 .align 2, 0 -_0802E53C: .4byte gUnknown_2023FF8 +_0802E53C: .4byte gActionSelectionCursor _0802E540: movs r0, 0x40 mov r8, r0 ands r0, r1 cmp r0, 0 beq _0802E560 - ldr r5, _0802E55C @ =gUnknown_2023FF8 + ldr r5, _0802E55C @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -301,13 +301,13 @@ _0802E540: beq _0802E634 b _0802E578 .align 2, 0 -_0802E55C: .4byte gUnknown_2023FF8 +_0802E55C: .4byte gActionSelectionCursor _0802E560: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802E5A8 - ldr r5, _0802E5A4 @ =gUnknown_2023FF8 + ldr r5, _0802E5A4 @ =gActionSelectionCursor ldrb r0, [r4] adds r0, r5 ldrb r1, [r0] @@ -336,7 +336,7 @@ _0802E590: bl ActionSelectionCreateCursorAt b _0802E634 .align 2, 0 -_0802E5A4: .4byte gUnknown_2023FF8 +_0802E5A4: .4byte gActionSelectionCursor _0802E5A8: movs r0, 0x2 ands r0, r1 @@ -421,7 +421,7 @@ sub_802E640: @ 802E640 ldrb r0, [r4] movs r1, 0 bl dp11b_obj_free - ldr r1, _0802E66C @ =gUnknown_3004FE0 + ldr r1, _0802E66C @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -432,7 +432,7 @@ sub_802E640: @ 802E640 bx r0 .align 2, 0 _0802E668: .4byte gActiveBattler -_0802E66C: .4byte gUnknown_3004FE0 +_0802E66C: .4byte gBattlerControllerFuncs _0802E670: .4byte sub_802E674 thumb_func_end sub_802E640 @@ -538,7 +538,7 @@ _0802E72C: adds r0, r2 ldr r1, _0802E790 @ =sub_8012098 str r1, [r0] - ldr r1, _0802E794 @ =gUnknown_3004FE0 + ldr r1, _0802E794 @ =gBattlerControllerFuncs ldr r4, _0802E798 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -564,7 +564,7 @@ _0802E784: .4byte gSprites _0802E788: .4byte gBattlerSpriteIds _0802E78C: .4byte gUnknown_3004FF4 _0802E790: .4byte sub_8012098 -_0802E794: .4byte gUnknown_3004FE0 +_0802E794: .4byte gBattlerControllerFuncs _0802E798: .4byte gActiveBattler _0802E79C: .4byte sub_802EA10 _0802E7A0: @@ -958,7 +958,7 @@ _0802EAA8: ldr r1, _0802EAF0 @ =gUnknown_3004FF4 strb r0, [r1] _0802EAC2: - ldr r3, _0802EAF4 @ =gUnknown_2022BC4 + ldr r3, _0802EAF4 @ =gBattleBufferA ldr r5, _0802EAEC @ =gActiveBattler ldrb r2, [r5] lsls r1, r2, 9 @@ -982,7 +982,7 @@ _0802EAC2: .align 2, 0 _0802EAEC: .4byte gActiveBattler _0802EAF0: .4byte gUnknown_3004FF4 -_0802EAF4: .4byte gUnknown_2022BC4 +_0802EAF4: .4byte gBattleBufferA _0802EAF8: movs r0, 0x7D ands r0, r4 @@ -1050,7 +1050,7 @@ _0802EB7C: .4byte gUnknown_3004FF4 _0802EB80: .4byte 0x00007fff _0802EB84: .4byte gActiveBattler _0802EB88: - ldr r1, _0802EBA4 @ =gUnknown_3004FE0 + ldr r1, _0802EBA4 @ =gBattlerControllerFuncs ldr r2, _0802EBA8 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -1065,7 +1065,7 @@ _0802EB88: ldrb r0, [r2] b _0802EBE4 .align 2, 0 -_0802EBA4: .4byte gUnknown_3004FE0 +_0802EBA4: .4byte gBattlerControllerFuncs _0802EBA8: .4byte gActiveBattler _0802EBAC: .4byte sub_802E674 _0802EBB0: .4byte gUnknown_3004FF4 @@ -1308,8 +1308,8 @@ _0802ED9C: bl MoveSelectionCreateCursorAt ldr r0, _0802EDCC @ =gUnknown_83FE7A0 movs r1, 0xB - bl sub_80D87BC - ldr r1, _0802EDD0 @ =gUnknown_3004FE0 + bl BattlePutTextOnWindow + ldr r1, _0802EDD0 @ =gBattlerControllerFuncs ldr r0, _0802EDD4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -1327,7 +1327,7 @@ _0802EDBA: .align 2, 0 _0802EDC8: .4byte gUnknown_3004FF4 _0802EDCC: .4byte gUnknown_83FE7A0 -_0802EDD0: .4byte gUnknown_3004FE0 +_0802EDD0: .4byte gBattlerControllerFuncs _0802EDD4: .4byte gActiveBattler _0802EDD8: .4byte sub_802EF58 thumb_func_end sub_802EA10 @@ -1964,7 +1964,7 @@ _0802F2C8: ands r0, r1 cmp r0, 0 beq _0802F318 - ldr r1, _0802F310 @ =gUnknown_3004FE0 + ldr r1, _0802F310 @ =gBattlerControllerFuncs ldr r2, _0802F2EC @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -1983,10 +1983,10 @@ _0802F300: .4byte gBattleMons _0802F304: .4byte gBattlerPartyIndexes _0802F308: .4byte gPlayerParty _0802F30C: .4byte gBattleTypeFlags -_0802F310: .4byte gUnknown_3004FE0 +_0802F310: .4byte gBattlerControllerFuncs _0802F314: .4byte sub_80E7988 _0802F318: - ldr r1, _0802F390 @ =gUnknown_3004FE0 + ldr r1, _0802F390 @ =gBattlerControllerFuncs ldr r2, _0802F394 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -2034,14 +2034,14 @@ _0802F34C: ands r0, r1 cmp r0, 0 beq _0802F3B0 - ldr r0, _0802F390 @ =gUnknown_3004FE0 + ldr r0, _0802F390 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 ldr r0, _0802F3AC @ =sub_80E7988 b _0802F3BA .align 2, 0 -_0802F390: .4byte gUnknown_3004FE0 +_0802F390: .4byte gBattlerControllerFuncs _0802F394: .4byte gActiveBattler _0802F398: .4byte sub_802EA10 _0802F39C: .4byte gUnknown_2023FFC @@ -2050,7 +2050,7 @@ _0802F3A4: .4byte gMain _0802F3A8: .4byte gBattleTypeFlags _0802F3AC: .4byte sub_80E7988 _0802F3B0: - ldr r0, _0802F3F8 @ =gUnknown_3004FE0 + ldr r0, _0802F3F8 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -2085,7 +2085,7 @@ _0802F3C8: bl MoveSelectionCreateCursorAt b _0802F416 .align 2, 0 -_0802F3F8: .4byte gUnknown_3004FE0 +_0802F3F8: .4byte gBattlerControllerFuncs _0802F3FC: .4byte sub_802EA10 _0802F400: .4byte gMain _0802F404: .4byte gUnknown_3004FF4 @@ -2348,7 +2348,7 @@ sub_802F610: @ 802F610 negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, _0802F65C @ =gUnknown_3004F80 + ldr r0, _0802F65C @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] ldr r0, _0802F660 @ =sub_8011A1C @@ -2360,7 +2360,7 @@ _0802F64C: .4byte gWirelessCommType _0802F650: .4byte gReceivedRemoteLinkPlayers _0802F654: .4byte gMain _0802F658: .4byte 0x00000439 -_0802F65C: .4byte gUnknown_3004F80 +_0802F65C: .4byte gPreBattleCallback1 _0802F660: .4byte sub_8011A1C _0802F664: bl sub_800A4BC @@ -2377,7 +2377,7 @@ _0802F664: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r0, _0802F6A0 @ =gUnknown_3004F80 + ldr r0, _0802F6A0 @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r3] ldr r0, _0802F6A4 @ =sub_8011A1C @@ -2389,7 +2389,7 @@ _0802F694: .align 2, 0 _0802F698: .4byte gMain _0802F69C: .4byte 0x00000439 -_0802F6A0: .4byte gUnknown_3004F80 +_0802F6A0: .4byte gPreBattleCallback1 _0802F6A4: .4byte sub_8011A1C thumb_func_end sub_802F610 @@ -2421,7 +2421,7 @@ _0802F6D8: .4byte gWirelessCommType _0802F6DC: bl sub_800AB9C _0802F6E0: - ldr r1, _0802F6F0 @ =gUnknown_3004FE0 + ldr r1, _0802F6F0 @ =gBattlerControllerFuncs ldr r0, _0802F6F4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -2430,7 +2430,7 @@ _0802F6E0: str r1, [r0] b _0802F71E .align 2, 0 -_0802F6F0: .4byte gUnknown_3004FE0 +_0802F6F0: .4byte gBattlerControllerFuncs _0802F6F4: .4byte gActiveBattler _0802F6F8: .4byte sub_802F610 _0802F6FC: @@ -2444,7 +2444,7 @@ _0802F6FC: negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, _0802F72C @ =gUnknown_3004F80 + ldr r0, _0802F72C @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -2455,7 +2455,7 @@ _0802F71E: .align 2, 0 _0802F724: .4byte gMain _0802F728: .4byte 0x00000439 -_0802F72C: .4byte gUnknown_3004F80 +_0802F72C: .4byte gPreBattleCallback1 thumb_func_end sub_802F6A8 thumb_func_start sub_802F730 @@ -2829,7 +2829,7 @@ _0802FA12: adds r0, r2 movs r1, 0x3 strb r1, [r0, 0x9] - ldr r1, _0802FA50 @ =gUnknown_3004FE0 + ldr r1, _0802FA50 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -2846,7 +2846,7 @@ _0802FA40: .4byte gBattlerPartyIndexes _0802FA44: .4byte gActiveBattler _0802FA48: .4byte gPlayerParty _0802FA4C: .4byte gBattleSpritesDataPtr -_0802FA50: .4byte gUnknown_3004FE0 +_0802FA50: .4byte gBattlerControllerFuncs _0802FA54: .4byte sub_802F810 thumb_func_end sub_802F858 @@ -3019,7 +3019,7 @@ _0802FB5C: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _0802FBEC @ =gUnknown_3004FE0 + ldr r1, _0802FBEC @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -3041,7 +3041,7 @@ _0802FBDC: .4byte gBattleTypeFlags _0802FBE0: .4byte gUnknown_3004FFC _0802FBE4: .4byte gSprites _0802FBE8: .4byte gHealthboxSpriteIds -_0802FBEC: .4byte gUnknown_3004FE0 +_0802FBEC: .4byte gBattlerControllerFuncs _0802FBF0: .4byte sub_802F858 thumb_func_end sub_802FA58 @@ -3111,7 +3111,7 @@ sub_802FBF4: @ 802FBF4 movs r3, 0x6 bl InitAndLaunchSpecialAnimation _0802FC78: - ldr r0, _0802FCA4 @ =gUnknown_3004FE0 + ldr r0, _0802FCA4 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -3128,7 +3128,7 @@ _0802FC94: .4byte gActiveBattler _0802FC98: .4byte SpriteCallbackDummy _0802FC9C: .4byte gBattleSpritesDataPtr _0802FCA0: .4byte 0x000027f9 -_0802FCA4: .4byte gUnknown_3004FE0 +_0802FCA4: .4byte gBattlerControllerFuncs _0802FCA8: .4byte sub_802FCAC thumb_func_end sub_802FBF4 @@ -3259,7 +3259,7 @@ _0802FD4A: bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility - ldr r1, _0802FDEC @ =gUnknown_3004FE0 + ldr r1, _0802FDEC @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -3278,7 +3278,7 @@ _0802FDDC: .4byte gSprites _0802FDE0: .4byte gUnknown_3004FFC _0802FDE4: .4byte SpriteCallbackDummy _0802FDE8: .4byte gHealthboxSpriteIds -_0802FDEC: .4byte gUnknown_3004FE0 +_0802FDEC: .4byte gBattlerControllerFuncs _0802FDF0: .4byte sub_802FBF4 thumb_func_end sub_802FD18 @@ -3524,7 +3524,7 @@ _0802FFE0: adds r0, r6, 0 movs r1, 0x19 bl SetMonData - ldr r1, _08030000 @ =gUnknown_3004FE0 + ldr r1, _08030000 @ =gBattlerControllerFuncs ldr r3, [sp, 0x8] lsls r0, r3, 2 adds r0, r1 @@ -3534,7 +3534,7 @@ _0802FFE0: bl DestroyTask b _0803000E .align 2, 0 -_08030000: .4byte gUnknown_3004FE0 +_08030000: .4byte gBattlerControllerFuncs _08030004: .4byte sub_802FE94 _08030008: ldr r0, _08030020 @ =sub_8030024 @@ -3784,7 +3784,7 @@ _08030204: adds r0, r5, 0 movs r1, 0x19 bl SetMonData - ldr r1, _08030230 @ =gUnknown_3004FE0 + ldr r1, _08030230 @ =gBattlerControllerFuncs lsls r0, r7, 2 adds r0, r1 ldr r1, _08030234 @ =sub_802FE94 @@ -3801,7 +3801,7 @@ _08030220: pop {r0} bx r0 .align 2, 0 -_08030230: .4byte gUnknown_3004FE0 +_08030230: .4byte gBattlerControllerFuncs _08030234: .4byte sub_802FE94 thumb_func_end sub_80300F4 @@ -3970,7 +3970,7 @@ sub_8030350: @ 8030350 _08030380: .4byte gTasks _08030384: .4byte sub_80303A8 _08030388: - ldr r0, _080303A0 @ =gUnknown_3004FE0 + ldr r0, _080303A0 @ =gBattlerControllerFuncs lsls r1, r6, 2 adds r1, r0 ldr r0, _080303A4 @ =sub_802FE94 @@ -3982,7 +3982,7 @@ _08030398: pop {r0} bx r0 .align 2, 0 -_080303A0: .4byte gUnknown_3004FE0 +_080303A0: .4byte gBattlerControllerFuncs _080303A4: .4byte sub_802FE94 thumb_func_end sub_8030350 @@ -4154,7 +4154,7 @@ _08030500: _08030508: ldrh r0, [r5, 0x1A] strh r0, [r1] - ldr r0, _08030530 @ =gUnknown_3004FE0 + ldr r0, _08030530 @ =gBattlerControllerFuncs lsls r1, r7, 2 adds r1, r0 ldr r0, _08030534 @ =sub_802FE94 @@ -4171,7 +4171,7 @@ _0803051C: .align 2, 0 _08030528: .4byte gBattle_BG2_X _0803052C: .4byte gBattle_BG2_Y -_08030530: .4byte gUnknown_3004FE0 +_08030530: .4byte gBattlerControllerFuncs _08030534: .4byte sub_802FE94 thumb_func_end sub_80303A8 @@ -4299,7 +4299,7 @@ sub_8030628: @ 8030628 ands r0, r1 cmp r0, 0 bne _08030666 - ldr r1, _08030670 @ =gUnknown_3004FE0 + ldr r1, _08030670 @ =gBattlerControllerFuncs ldr r2, _08030674 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -4326,7 +4326,7 @@ _08030666: bx r0 .align 2, 0 _0803066C: .4byte gPaletteFade -_08030670: .4byte gUnknown_3004FE0 +_08030670: .4byte gBattlerControllerFuncs _08030674: .4byte gActiveBattler _08030678: .4byte sub_8030684 _0803067C: .4byte gTasks @@ -4338,7 +4338,7 @@ sub_8030684: @ 8030684 push {lr} ldr r0, _080306B4 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _080306B8 @ =sub_8011100 + ldr r0, _080306B8 @ =BattleMainCB2 cmp r1, r0 bne _080306F4 ldr r0, _080306BC @ =gPaletteFade @@ -4359,7 +4359,7 @@ sub_8030684: @ 8030684 b _080306D6 .align 2, 0 _080306B4: .4byte gMain -_080306B8: .4byte sub_8011100 +_080306B8: .4byte BattleMainCB2 _080306BC: .4byte gPaletteFade _080306C0: .4byte gUnknown_203B0C0 _080306C4: .4byte gUnknown_203B0C1 @@ -4370,7 +4370,7 @@ _080306CC: movs r2, 0 bl EmitChosenMonReturnValue _080306D6: - ldr r1, _080306F8 @ =gUnknown_2022BC4 + ldr r1, _080306F8 @ =gBattleBufferA ldr r0, _080306FC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -4388,7 +4388,7 @@ _080306F4: pop {r0} bx r0 .align 2, 0 -_080306F8: .4byte gUnknown_2022BC4 +_080306F8: .4byte gBattleBufferA _080306FC: .4byte gActiveBattler thumb_func_end sub_8030684 @@ -4401,7 +4401,7 @@ sub_8030700: @ 8030700 ands r0, r1 cmp r0, 0 bne _08030728 - ldr r1, _08030730 @ =gUnknown_3004FE0 + ldr r1, _08030730 @ =gBattlerControllerFuncs ldr r0, _08030734 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4416,7 +4416,7 @@ _08030728: bx r0 .align 2, 0 _0803072C: .4byte gPaletteFade -_08030730: .4byte gUnknown_3004FE0 +_08030730: .4byte gBattlerControllerFuncs _08030734: .4byte gActiveBattler _08030738: .4byte CompleteWhenChoseItem thumb_func_end sub_8030700 @@ -4426,7 +4426,7 @@ CompleteWhenChoseItem: @ 803073C push {lr} ldr r0, _08030768 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _0803076C @ =sub_8011100 + ldr r0, _0803076C @ =BattleMainCB2 cmp r1, r0 bne _08030762 ldr r0, _08030770 @ =gPaletteFade @@ -4445,7 +4445,7 @@ _08030762: bx r0 .align 2, 0 _08030768: .4byte gMain -_0803076C: .4byte sub_8011100 +_0803076C: .4byte BattleMainCB2 _08030770: .4byte gPaletteFade _08030774: .4byte gSpecialVar_ItemId thumb_func_end CompleteWhenChoseItem @@ -4453,7 +4453,7 @@ _08030774: .4byte gSpecialVar_ItemId thumb_func_start CompleteOnSpecialAnimDone CompleteOnSpecialAnimDone: @ 8030778 push {lr} - ldr r0, _080307A8 @ =gUnknown_2024005 + ldr r0, _080307A8 @ =gDoingBattleAnim ldrb r0, [r0] cmp r0, 0 beq _0803079E @@ -4477,7 +4477,7 @@ _080307A2: pop {r0} bx r0 .align 2, 0 -_080307A8: .4byte gUnknown_2024005 +_080307A8: .4byte gDoingBattleAnim _080307AC: .4byte gBattleSpritesDataPtr _080307B0: .4byte gActiveBattler thumb_func_end CompleteOnSpecialAnimDone @@ -4508,7 +4508,7 @@ DoHitAnimBlinkSpriteEffect: @ 80307B4 subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _080307FC @ =gUnknown_2024005 + ldr r0, _080307FC @ =gDoingBattleAnim strb r3, [r0] bl PlayerBufferExecCompleted b _0803082A @@ -4516,7 +4516,7 @@ DoHitAnimBlinkSpriteEffect: @ 80307B4 _080307F0: .4byte gBattlerSpriteIds _080307F4: .4byte gActiveBattler _080307F8: .4byte gSprites -_080307FC: .4byte gUnknown_2024005 +_080307FC: .4byte gDoingBattleAnim _08030800: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -4578,7 +4578,7 @@ _08030848: lsls r1, 24 lsrs r1, 24 adds r0, r6, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldrh r0, [r4] cmp r0, 0 beq _08030880 @@ -4611,7 +4611,7 @@ MoveSelectionDisplayPpString: @ 80308A8 bl StringCopy adds r0, r4, 0 movs r1, 0x7 - bl sub_80D87BC + bl BattlePutTextOnWindow pop {r4} pop {r0} bx r0 @@ -4623,7 +4623,7 @@ _080308C8: .4byte gUnknown_83FE766 thumb_func_start MoveSelectionDisplayPpNumber MoveSelectionDisplayPpNumber: @ 80308CC push {r4-r7,lr} - ldr r5, _08030930 @ =gUnknown_2022BC4 + ldr r5, _08030930 @ =gBattleBufferA ldr r7, _08030934 @ =gActiveBattler ldrb r0, [r7] lsls r0, 9 @@ -4663,13 +4663,13 @@ MoveSelectionDisplayPpNumber: @ 80308CC bl ConvertIntToDecimalStringN adds r0, r6, 0 movs r1, 0x9 - bl sub_80D87BC + bl BattlePutTextOnWindow _08030928: pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_08030930: .4byte gUnknown_2022BC4 +_08030930: .4byte gBattleBufferA _08030934: .4byte gActiveBattler _08030938: .4byte gDisplayedStringBattle _0803093C: .4byte gUnknown_2023FFC @@ -4722,7 +4722,7 @@ MoveSelectionDisplayMoveType: @ 8030940 bl StringCopy adds r0, r6, 0 movs r1, 0x8 - bl sub_80D87BC + bl BattlePutTextOnWindow pop {r4-r6} pop {r0} bx r0 @@ -4971,7 +4971,7 @@ PrintLinkStandbyMsg: @ 8030B5C strh r1, [r0] ldr r0, _08030B8C @ =gUnknown_83FE714 movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _08030B7C: pop {r0} bx r0 @@ -4987,7 +4987,7 @@ PlayerHandleGetMonData: @ 8030B90 push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _08030BBC @ =gUnknown_2022BC4 + ldr r1, _08030BBC @ =gBattleBufferA ldr r0, _08030BC0 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -5005,7 +5005,7 @@ PlayerHandleGetMonData: @ 8030B90 adds r6, r0, 0 b _08030BEA .align 2, 0 -_08030BBC: .4byte gUnknown_2022BC4 +_08030BBC: .4byte gBattleBufferA _08030BC0: .4byte gActiveBattler _08030BC4: .4byte gBattlerPartyIndexes _08030BC8: @@ -5052,7 +5052,7 @@ CopyPlayerMonData: @ 8030C04 lsls r0, 24 lsrs r5, r0, 24 movs r6, 0 - ldr r2, _08030C38 @ =gUnknown_2022BC4 + ldr r2, _08030C38 @ =gBattleBufferA ldr r3, _08030C3C @ =gActiveBattler ldrb r0, [r3] lsls r0, 9 @@ -5069,7 +5069,7 @@ _08030C2E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08030C38: .4byte gUnknown_2022BC4 +_08030C38: .4byte gBattleBufferA _08030C3C: .4byte gActiveBattler _08030C40: .4byte _08030C44 .align 2, 0 @@ -5987,7 +5987,7 @@ PlayerHandleGetRawMonData: @ 80313B0 movs r0, 0x64 adds r4, r2, 0 muls r4, r0 - ldr r3, _08031430 @ =gUnknown_2022BC4 + ldr r3, _08031430 @ =gBattleBufferA lsls r1, 9 adds r0, r3, 0x1 adds r0, r1, r0 @@ -6038,14 +6038,14 @@ _08031406: .align 2, 0 _08031428: .4byte gBattlerPartyIndexes _0803142C: .4byte gActiveBattler -_08031430: .4byte gUnknown_2022BC4 +_08031430: .4byte gBattleBufferA _08031434: .4byte gPlayerParty thumb_func_end PlayerHandleGetRawMonData thumb_func_start PlayerHandleSetMonData PlayerHandleSetMonData: @ 8031438 push {r4,r5,lr} - ldr r1, _0803145C @ =gUnknown_2022BC4 + ldr r1, _0803145C @ =gBattleBufferA ldr r0, _08031460 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -6061,7 +6061,7 @@ PlayerHandleSetMonData: @ 8031438 bl SetPlayerMonData b _08031486 .align 2, 0 -_0803145C: .4byte gUnknown_2022BC4 +_0803145C: .4byte gBattleBufferA _08031460: .4byte gActiveBattler _08031464: .4byte gBattlerPartyIndexes _08031468: @@ -6442,7 +6442,7 @@ _080317F4: muls r0, r5 ldr r1, _08031810 @ =gPlayerParty adds r0, r1 - ldr r3, _08031814 @ =gUnknown_2022BC4 + ldr r3, _08031814 @ =gBattleBufferA ldr r1, _08031818 @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -6453,7 +6453,7 @@ _080317F4: b _08031898 .align 2, 0 _08031810: .4byte gPlayerParty -_08031814: .4byte gUnknown_2022BC4 +_08031814: .4byte gBattleBufferA _08031818: .4byte gActiveBattler _0803181C: movs r0, 0x64 @@ -6505,7 +6505,7 @@ _08031880: muls r0, r5 ldr r1, _080318A4 @ =gPlayerParty adds r0, r1 - ldr r3, _080318A8 @ =gUnknown_2022BC4 + ldr r3, _080318A8 @ =gBattleBufferA ldr r1, _080318AC @ =gActiveBattler ldrb r2, [r1] lsls r2, 9 @@ -6520,7 +6520,7 @@ _08031898: b _08031E56 .align 2, 0 _080318A4: .4byte gPlayerParty -_080318A8: .4byte gUnknown_2022BC4 +_080318A8: .4byte gBattleBufferA _080318AC: .4byte gActiveBattler _080318B0: movs r0, 0x64 @@ -7237,7 +7237,7 @@ PlayerHandleSetRawMonData: @ 8031E8C movs r0, 0x64 adds r3, r1, 0 muls r3, r0 - ldr r4, _08031EF8 @ =gUnknown_2022BC4 + ldr r4, _08031EF8 @ =gBattleBufferA lsls r2, 9 adds r0, r4, 0x1 adds r0, r2, r0 @@ -7280,7 +7280,7 @@ _08031EE4: .align 2, 0 _08031EF0: .4byte gBattlerPartyIndexes _08031EF4: .4byte gActiveBattler -_08031EF8: .4byte gUnknown_2022BC4 +_08031EF8: .4byte gBattleBufferA _08031EFC: .4byte gPlayerParty thumb_func_end PlayerHandleSetRawMonData @@ -7313,7 +7313,7 @@ PlayerHandleLoadMonSprite: @ 8031F00 ands r0, r2 orrs r0, r3 strb r0, [r1, 0x5] - ldr r1, _08031F60 @ =gUnknown_3004FE0 + ldr r1, _08031F60 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -7328,7 +7328,7 @@ _08031F50: .4byte gActiveBattler _08031F54: .4byte gPlayerParty _08031F58: .4byte gSprites _08031F5C: .4byte gBattlerSpriteIds -_08031F60: .4byte gUnknown_3004FE0 +_08031F60: .4byte gBattlerControllerFuncs _08031F64: .4byte CompleteOnBankSpritePosX_0 thumb_func_end PlayerHandleLoadMonSprite @@ -7337,7 +7337,7 @@ PlayerHandleSwitchInAnim: @ 8031F68 push {r4-r6,lr} ldr r5, _08031FD4 @ =gActiveBattler ldrb r0, [r5] - ldr r4, _08031FD8 @ =gUnknown_2022BC4 + ldr r4, _08031FD8 @ =gBattleBufferA lsls r1, r0, 9 adds r6, r4, 0x2 adds r1, r6 @@ -7362,7 +7362,7 @@ PlayerHandleSwitchInAnim: @ 8031F68 ldr r2, _08031FE0 @ =gPlayerParty adds r0, r2 bl BattleLoadPlayerMonSpriteGfx - ldr r1, _08031FE4 @ =gUnknown_2023FF8 + ldr r1, _08031FE4 @ =gActionSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] @@ -7375,7 +7375,7 @@ PlayerHandleSwitchInAnim: @ 8031F68 adds r1, r6 ldrb r1, [r1] bl sub_8031FF4 - ldr r1, _08031FEC @ =gUnknown_3004FE0 + ldr r1, _08031FEC @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -7386,12 +7386,12 @@ PlayerHandleSwitchInAnim: @ 8031F68 bx r0 .align 2, 0 _08031FD4: .4byte gActiveBattler -_08031FD8: .4byte gUnknown_2022BC4 +_08031FD8: .4byte gBattleBufferA _08031FDC: .4byte gBattlerPartyIndexes _08031FE0: .4byte gPlayerParty -_08031FE4: .4byte gUnknown_2023FF8 +_08031FE4: .4byte gActionSelectionCursor _08031FE8: .4byte gUnknown_2023FFC -_08031FEC: .4byte gUnknown_3004FE0 +_08031FEC: .4byte gBattlerControllerFuncs _08031FF0: .4byte sub_802FD18 thumb_func_end PlayerHandleSwitchInAnim @@ -7412,7 +7412,7 @@ sub_8031FF4: @ 8031FF4 ldr r0, _08032138 @ =gBattlerPartyIndexes lsls r2, r6, 1 adds r2, r0 - ldr r0, _0803213C @ =gUnknown_2022BC4 + ldr r0, _0803213C @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -7550,7 +7550,7 @@ sub_8031FF4: @ 8031FF4 bx r0 .align 2, 0 _08032138: .4byte gBattlerPartyIndexes -_0803213C: .4byte gUnknown_2022BC4 +_0803213C: .4byte gBattleBufferA _08032140: .4byte gPlayerParty _08032144: .4byte sub_8033E3C _08032148: .4byte gUnknown_3004FFC @@ -7564,7 +7564,7 @@ _0803215C: .4byte SpriteCallbackDummy thumb_func_start PlayerHandleReturnPokeToBall PlayerHandleReturnPokeToBall: @ 8032160 push {r4-r6,lr} - ldr r1, _08032194 @ =gUnknown_2022BC4 + ldr r1, _08032194 @ =gBattleBufferA ldr r6, _08032198 @ =gActiveBattler ldrb r2, [r6] lsls r0, r2, 9 @@ -7581,7 +7581,7 @@ PlayerHandleReturnPokeToBall: @ 8032160 lsls r0, 2 adds r0, r1 strb r3, [r0, 0x4] - ldr r1, _080321A0 @ =gUnknown_3004FE0 + ldr r1, _080321A0 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -7589,10 +7589,10 @@ PlayerHandleReturnPokeToBall: @ 8032160 str r1, [r0] b _080321DE .align 2, 0 -_08032194: .4byte gUnknown_2022BC4 +_08032194: .4byte gBattleBufferA _08032198: .4byte gActiveBattler _0803219C: .4byte gBattleSpritesDataPtr -_080321A0: .4byte gUnknown_3004FE0 +_080321A0: .4byte gBattlerControllerFuncs _080321A4: .4byte sub_80321F0 _080321A8: ldr r5, _080321E4 @ =gBattlerSpriteIds @@ -7687,7 +7687,7 @@ _08032246: adds r1, r2, 0 movs r3, 0x1 bl InitAndLaunchSpecialAnimation - ldr r1, _08032274 @ =gUnknown_3004FE0 + ldr r1, _08032274 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -7698,7 +7698,7 @@ _0803226E: pop {r0} bx r0 .align 2, 0 -_08032274: .4byte gUnknown_3004FE0 +_08032274: .4byte gBattlerControllerFuncs _08032278: .4byte sub_80305A0 thumb_func_end sub_80321F0 @@ -7813,7 +7813,7 @@ _08032342: bl SetMultiuseSpriteTemplateToTrainerBack ldr r6, _08032408 @ =gMultiuseSpriteTemplate mov r8, r7 - ldr r0, _0803240C @ =gUnknown_8239F8C + ldr r0, _0803240C @ =gTrainerBackPicCoords lsls r4, 2 adds r4, r0 ldrb r0, [r4] @@ -7879,7 +7879,7 @@ _08032342: adds r0, r4 ldr r1, _0803241C @ =sub_8033EEC str r1, [r0] - ldr r1, _08032420 @ =gUnknown_3004FE0 + ldr r1, _08032420 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -7894,12 +7894,12 @@ _08032342: _08032400: .4byte gSaveBlock2Ptr _08032404: .4byte gActiveBattler _08032408: .4byte gMultiuseSpriteTemplate -_0803240C: .4byte gUnknown_8239F8C +_0803240C: .4byte gTrainerBackPicCoords _08032410: .4byte gBattlerSpriteIds _08032414: .4byte gSprites _08032418: .4byte 0x0000fffe _0803241C: .4byte sub_8033EEC -_08032420: .4byte gUnknown_3004FE0 +_08032420: .4byte gBattlerControllerFuncs _08032424: .4byte sub_802F730 thumb_func_end sub_803227C @@ -7989,7 +7989,7 @@ _080324BE: adds r0, r4, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _08032570 @ =gMultiuseSpriteTemplate - ldr r1, _08032574 @ =gUnknown_8239F8C + ldr r1, _08032574 @ =gTrainerBackPicCoords lsls r4, 2 adds r4, r1 ldrb r1, [r4] @@ -8049,7 +8049,7 @@ _080324BE: adds r0, r4 ldr r1, _08032584 @ =sub_8033EEC str r1, [r0] - ldr r1, _08032588 @ =gUnknown_3004FE0 + ldr r1, _08032588 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -8062,12 +8062,12 @@ _080324BE: _08032568: .4byte gSaveBlock2Ptr _0803256C: .4byte gActiveBattler _08032570: .4byte gMultiuseSpriteTemplate -_08032574: .4byte gUnknown_8239F8C +_08032574: .4byte gTrainerBackPicCoords _08032578: .4byte gBattlerSpriteIds _0803257C: .4byte gSprites _08032580: .4byte 0x0000ffa0 _08032584: .4byte sub_8033EEC -_08032588: .4byte gUnknown_3004FE0 +_08032588: .4byte gBattlerControllerFuncs _0803258C: .4byte sub_802F768 thumb_func_end sub_8032428 @@ -8141,7 +8141,7 @@ PlayerHandleTrainerSlideBack: @ 8032590 adds r0, r4 movs r1, 0x1 bl StartSpriteAnim - ldr r1, _08032648 @ =gUnknown_3004FE0 + ldr r1, _08032648 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -8157,7 +8157,7 @@ _08032638: .4byte gSprites _0803263C: .4byte 0x0000ffd8 _08032640: .4byte sub_8075590 _08032644: .4byte SpriteCallbackDummy -_08032648: .4byte gUnknown_3004FE0 +_08032648: .4byte gBattlerControllerFuncs _0803264C: .4byte sub_802F7A0 thumb_func_end PlayerHandleTrainerSlideBack @@ -8255,7 +8255,7 @@ _080326A4: adds r0, r2 ldr r1, _08032730 @ =sub_8012110 str r1, [r0] - ldr r1, _08032734 @ =gUnknown_3004FE0 + ldr r1, _08032734 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -8271,7 +8271,7 @@ _08032724: .4byte gPlayerParty _08032728: .4byte gSprites _0803272C: .4byte gBattlerSpriteIds _08032730: .4byte sub_8012110 -_08032734: .4byte gUnknown_3004FE0 +_08032734: .4byte gBattlerControllerFuncs _08032738: .4byte sub_8030538 thumb_func_end sub_8032650 @@ -8301,7 +8301,7 @@ sub_803275C: @ 803275C ldr r1, [r0, 0x8] movs r0, 0x4 strb r0, [r1, 0x8] - ldr r1, _080327A0 @ =gUnknown_2024005 + ldr r1, _080327A0 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldr r5, _080327A4 @ =gActiveBattler @@ -8315,7 +8315,7 @@ sub_803275C: @ 803275C adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation - ldr r1, _080327A8 @ =gUnknown_3004FE0 + ldr r1, _080327A8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -8326,16 +8326,16 @@ sub_803275C: @ 803275C bx r0 .align 2, 0 _0803279C: .4byte gBattleSpritesDataPtr -_080327A0: .4byte gUnknown_2024005 +_080327A0: .4byte gDoingBattleAnim _080327A4: .4byte gActiveBattler -_080327A8: .4byte gUnknown_3004FE0 +_080327A8: .4byte gBattlerControllerFuncs _080327AC: .4byte CompleteOnSpecialAnimDone thumb_func_end sub_803275C thumb_func_start PlayerHandleBallThrowAnim PlayerHandleBallThrowAnim: @ 80327B0 push {r4,r5,lr} - ldr r1, _080327F8 @ =gUnknown_2022BC4 + ldr r1, _080327F8 @ =gBattleBufferA ldr r5, _080327FC @ =gActiveBattler ldrb r0, [r5] lsls r0, 9 @@ -8346,7 +8346,7 @@ PlayerHandleBallThrowAnim: @ 80327B0 ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] - ldr r1, _08032804 @ =gUnknown_2024005 + ldr r1, _08032804 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r4, [r5] @@ -8359,7 +8359,7 @@ PlayerHandleBallThrowAnim: @ 80327B0 adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation - ldr r1, _08032808 @ =gUnknown_3004FE0 + ldr r1, _08032808 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -8369,18 +8369,18 @@ PlayerHandleBallThrowAnim: @ 80327B0 pop {r0} bx r0 .align 2, 0 -_080327F8: .4byte gUnknown_2022BC4 +_080327F8: .4byte gBattleBufferA _080327FC: .4byte gActiveBattler _08032800: .4byte gBattleSpritesDataPtr -_08032804: .4byte gUnknown_2024005 -_08032808: .4byte gUnknown_3004FE0 +_08032804: .4byte gDoingBattleAnim +_08032808: .4byte gBattlerControllerFuncs _0803280C: .4byte CompleteOnSpecialAnimDone thumb_func_end PlayerHandleBallThrowAnim thumb_func_start PlayerHandlePause PlayerHandlePause: @ 8032810 push {lr} - ldr r1, _08032838 @ =gUnknown_2022BC4 + ldr r1, _08032838 @ =gBattleBufferA ldr r0, _0803283C @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -8400,7 +8400,7 @@ _0803282E: pop {r0} bx r0 .align 2, 0 -_08032838: .4byte gUnknown_2022BC4 +_08032838: .4byte gBattleBufferA _0803283C: .4byte gActiveBattler thumb_func_end PlayerHandlePause @@ -8415,7 +8415,7 @@ PlayerHandleMoveAnimation: @ 8032840 beq _08032852 b _08032966 _08032852: - ldr r0, _08032928 @ =gUnknown_2022BC4 + ldr r0, _08032928 @ =gBattleBufferA mov r12, r0 ldrb r2, [r6] lsls r2, 9 @@ -8519,7 +8519,7 @@ _08032852: b _08032966 .align 2, 0 _08032924: .4byte gActiveBattler -_08032928: .4byte gUnknown_2022BC4 +_08032928: .4byte gBattleBufferA _0803292C: .4byte gAnimMoveTurn _08032930: .4byte gAnimMovePower _08032934: .4byte gAnimMoveDmg @@ -8537,7 +8537,7 @@ _08032948: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _08032970 @ =gUnknown_3004FE0 + ldr r1, _08032970 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -8549,7 +8549,7 @@ _08032966: bx r0 .align 2, 0 _0803296C: .4byte gBattleSpritesDataPtr -_08032970: .4byte gUnknown_3004FE0 +_08032970: .4byte gBattlerControllerFuncs _08032974: .4byte sub_8032978 thumb_func_end PlayerHandleMoveAnimation @@ -8560,7 +8560,7 @@ sub_8032978: @ 8032978 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r2, _080329C4 @ =gUnknown_2022BC4 + ldr r2, _080329C4 @ =gBattleBufferA ldr r6, _080329C8 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -8594,7 +8594,7 @@ sub_8032978: @ 8032978 beq _080329DA b _08032AEC .align 2, 0 -_080329C4: .4byte gUnknown_2022BC4 +_080329C4: .4byte gBattleBufferA _080329C8: .4byte gActiveBattler _080329CC: .4byte gBattleSpritesDataPtr _080329D0: @@ -8758,7 +8758,7 @@ sub_8032AFC: @ 8032AFC ldr r0, _08032B3C @ =gUnknown_2022BC6 adds r4, r0 ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -8766,7 +8766,7 @@ sub_8032AFC: @ 8032AFC beq _08032B44 ldr r0, _08032B40 @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _08032B4C .align 2, 0 _08032B30: .4byte gBattle_BG0_X @@ -8777,9 +8777,9 @@ _08032B40: .4byte gDisplayedStringBattle _08032B44: ldr r0, _08032B60 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _08032B4C: - ldr r1, _08032B64 @ =gUnknown_3004FE0 + ldr r1, _08032B64 @ =gBattlerControllerFuncs ldr r0, _08032B68 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -8791,7 +8791,7 @@ _08032B4C: bx r0 .align 2, 0 _08032B60: .4byte gDisplayedStringBattle -_08032B64: .4byte gUnknown_3004FE0 +_08032B64: .4byte gBattlerControllerFuncs _08032B68: .4byte gActiveBattler _08032B6C: .4byte sub_8030610 thumb_func_end sub_8032AFC @@ -8829,7 +8829,7 @@ sub_8032B94: @ 8032B94 ldr r1, _08032BC4 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] - ldr r1, _08032BC8 @ =gUnknown_3004FE0 + ldr r1, _08032BC8 @ =gBattlerControllerFuncs ldr r0, _08032BCC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -8842,7 +8842,7 @@ _08032BBA: .align 2, 0 _08032BC0: .4byte gBattle_BG0_X _08032BC4: .4byte gBattle_BG0_Y -_08032BC8: .4byte gUnknown_3004FE0 +_08032BC8: .4byte gBattlerControllerFuncs _08032BCC: .4byte gActiveBattler _08032BD0: .4byte sub_802E438 thumb_func_end sub_8032B94 @@ -8850,7 +8850,7 @@ _08032BD0: .4byte sub_802E438 thumb_func_start sub_8032BD4 sub_8032BD4: @ 8032BD4 push {r4,lr} - ldr r1, _08032C28 @ =gUnknown_3004FE0 + ldr r1, _08032C28 @ =gBattlerControllerFuncs ldr r0, _08032C2C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -8859,10 +8859,10 @@ sub_8032BD4: @ 8032BD4 str r1, [r0] ldr r0, _08032C34 @ =gUnknown_83FDA4C movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _08032C38 @ =gUnknown_83FE725 movs r1, 0x2 - bl sub_80D87BC + bl BattlePutTextOnWindow movs r4, 0 _08032BF6: lsls r0, r4, 24 @@ -8871,7 +8871,7 @@ _08032BF6: adds r4, 0x1 cmp r4, 0x3 ble _08032BF6 - ldr r1, _08032C3C @ =gUnknown_2023FF8 + ldr r1, _08032C3C @ =gActionSelectionCursor ldr r0, _08032C2C @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -8882,17 +8882,17 @@ _08032BF6: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08032C44 @ =gDisplayedStringBattle movs r1, 0x1 - bl sub_80D87BC + bl BattlePutTextOnWindow pop {r4} pop {r0} bx r0 .align 2, 0 -_08032C28: .4byte gUnknown_3004FE0 +_08032C28: .4byte gBattlerControllerFuncs _08032C2C: .4byte gActiveBattler _08032C30: .4byte sub_8032B94 _08032C34: .4byte gUnknown_83FDA4C _08032C38: .4byte gUnknown_83FE725 -_08032C3C: .4byte gUnknown_2023FF8 +_08032C3C: .4byte gActionSelectionCursor _08032C40: .4byte gUnknown_83FE6D5 _08032C44: .4byte gDisplayedStringBattle thumb_func_end sub_8032BD4 @@ -8917,7 +8917,7 @@ sub_8032C4C: @ 8032C4C lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _08032C84 @ =gUnknown_3004FE0 + ldr r1, _08032C84 @ =gBattlerControllerFuncs ldr r0, _08032C88 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -8930,7 +8930,7 @@ _08032C76: .align 2, 0 _08032C7C: .4byte gBattle_BG0_X _08032C80: .4byte gBattle_BG0_Y -_08032C84: .4byte gUnknown_3004FE0 +_08032C84: .4byte gBattlerControllerFuncs _08032C88: .4byte gActiveBattler _08032C8C: .4byte sub_802EA10 thumb_func_end sub_8032C4C @@ -8939,7 +8939,7 @@ _08032C8C: .4byte sub_802EA10 sub_8032C90: @ 8032C90 push {lr} bl sub_8032CB4 - ldr r1, _08032CA8 @ =gUnknown_3004FE0 + ldr r1, _08032CA8 @ =gBattlerControllerFuncs ldr r0, _08032CAC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -8949,7 +8949,7 @@ sub_8032C90: @ 8032C90 pop {r0} bx r0 .align 2, 0 -_08032CA8: .4byte gUnknown_3004FE0 +_08032CA8: .4byte gBattlerControllerFuncs _08032CAC: .4byte gActiveBattler _08032CB0: .4byte sub_8032C4C thumb_func_end sub_8032C90 @@ -8990,7 +8990,7 @@ sub_8032CEC: @ 8032CEC movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _08032D38 @ =gUnknown_3004FE0 + ldr r1, _08032D38 @ =gBattlerControllerFuncs ldr r2, _08032D3C @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -9002,7 +9002,7 @@ sub_8032CEC: @ 8032CEC strb r0, [r1] movs r3, 0 ldr r5, _08032D48 @ =gUnknown_203B0DC - ldr r4, _08032D4C @ =gUnknown_2022BC4 + ldr r4, _08032D4C @ =gBattleBufferA _08032D1A: adds r0, r3, r5 ldrb r1, [r2] @@ -9020,12 +9020,12 @@ _08032D1A: pop {r0} bx r0 .align 2, 0 -_08032D38: .4byte gUnknown_3004FE0 +_08032D38: .4byte gBattlerControllerFuncs _08032D3C: .4byte gActiveBattler _08032D40: .4byte sub_8030700 _08032D44: .4byte gBattlerInMenuId _08032D48: .4byte gUnknown_203B0DC -_08032D4C: .4byte gUnknown_2022BC4 +_08032D4C: .4byte gBattleBufferA thumb_func_end sub_8032CEC thumb_func_start sub_8032D50 @@ -9048,7 +9048,7 @@ sub_8032D50: @ 8032D50 adds r1, r0 lsls r1, 3 adds r1, r5 - ldr r5, _08032E10 @ =gUnknown_2022BC4 + ldr r5, _08032E10 @ =gBattleBufferA lsls r2, 9 adds r6, r5, 0x1 adds r2, r6 @@ -9102,7 +9102,7 @@ _08032DBC: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _08032E1C @ =gUnknown_3004FE0 + ldr r1, _08032E1C @ =gBattlerControllerFuncs ldr r2, _08032E08 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -9121,10 +9121,10 @@ _08032E00: .4byte TaskDummy _08032E04: .4byte gUnknown_3004FFC _08032E08: .4byte gActiveBattler _08032E0C: .4byte gTasks -_08032E10: .4byte gUnknown_2022BC4 +_08032E10: .4byte gBattleBufferA _08032E14: .4byte gBattleStruct _08032E18: .4byte gUnknown_203B0DC -_08032E1C: .4byte gUnknown_3004FE0 +_08032E1C: .4byte gBattlerControllerFuncs _08032E20: .4byte sub_8030628 _08032E24: .4byte gBattlerInMenuId thumb_func_end sub_8032D50 @@ -9157,7 +9157,7 @@ sub_8032E4C: @ 8032E4C sub sp, 0x4 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _08032EC4 @ =gUnknown_2022BC4 + ldr r3, _08032EC4 @ =gBattleBufferA ldr r0, _08032EC8 @ =gActiveBattler mov r9, r0 ldrb r4, [r0] @@ -9206,7 +9206,7 @@ sub_8032E4C: @ 8032E4C bl SetBattleBarStruct b _08032F16 .align 2, 0 -_08032EC4: .4byte gUnknown_2022BC4 +_08032EC4: .4byte gBattleBufferA _08032EC8: .4byte gActiveBattler _08032ECC: .4byte 0x00007fff _08032ED0: .4byte gBattlerPartyIndexes @@ -9240,7 +9240,7 @@ _08032EDC: movs r2, 0 bl sub_8048440 _08032F16: - ldr r1, _08032F40 @ =gUnknown_3004FE0 + ldr r1, _08032F40 @ =gBattlerControllerFuncs ldr r0, _08032F44 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -9258,7 +9258,7 @@ _08032F16: _08032F34: .4byte gBattlerPartyIndexes _08032F38: .4byte gPlayerParty _08032F3C: .4byte gHealthboxSpriteIds -_08032F40: .4byte gUnknown_3004FE0 +_08032F40: .4byte gBattlerControllerFuncs _08032F44: .4byte gActiveBattler _08032F48: .4byte CompleteOnHealthbarDone thumb_func_end sub_8032E4C @@ -9266,7 +9266,7 @@ _08032F48: .4byte CompleteOnHealthbarDone thumb_func_start PlayerHandleExpUpdate PlayerHandleExpUpdate: @ 8032F4C push {r4-r7,lr} - ldr r5, _08032F78 @ =gUnknown_2022BC4 + ldr r5, _08032F78 @ =gBattleBufferA ldr r6, _08032F7C @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 @@ -9286,7 +9286,7 @@ PlayerHandleExpUpdate: @ 8032F4C bl PlayerBufferExecCompleted b _08032FD0 .align 2, 0 -_08032F78: .4byte gUnknown_2022BC4 +_08032F78: .4byte gBattleBufferA _08032F7C: .4byte gActiveBattler _08032F80: .4byte gPlayerParty _08032F84: @@ -9319,7 +9319,7 @@ _08032F84: strh r4, [r1, 0xA] ldrb r0, [r6] strh r0, [r1, 0xC] - ldr r1, _08032FE0 @ =gUnknown_3004FE0 + ldr r1, _08032FE0 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -9332,7 +9332,7 @@ _08032FD0: .align 2, 0 _08032FD8: .4byte sub_802FEAC _08032FDC: .4byte gTasks -_08032FE0: .4byte gUnknown_3004FE0 +_08032FE0: .4byte gBattlerControllerFuncs _08032FE4: .4byte nullsub_13 thumb_func_end PlayerHandleExpUpdate @@ -9372,7 +9372,7 @@ sub_8032FE8: @ 8032FE8 negs r0, r0 ands r0, r2 strb r0, [r1] - ldr r1, _08033058 @ =gUnknown_3004FE0 + ldr r1, _08033058 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -9388,7 +9388,7 @@ _08033048: .4byte gHealthboxSpriteIds _0803304C: .4byte gBattlerPartyIndexes _08033050: .4byte gPlayerParty _08033054: .4byte gBattleSpritesDataPtr -_08033058: .4byte gUnknown_3004FE0 +_08033058: .4byte gBattlerControllerFuncs _0803305C: .4byte CompleteOnFinishedStatusAnimation thumb_func_end sub_8032FE8 @@ -9401,7 +9401,7 @@ sub_8033060: @ 8033060 lsls r0, 24 cmp r0, 0 bne _080330B0 - ldr r4, _080330BC @ =gUnknown_2022BC4 + ldr r4, _080330BC @ =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 @@ -9426,7 +9426,7 @@ sub_8033060: @ 8033060 lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation - ldr r1, _080330C0 @ =gUnknown_3004FE0 + ldr r1, _080330C0 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -9438,8 +9438,8 @@ _080330B0: bx r0 .align 2, 0 _080330B8: .4byte gActiveBattler -_080330BC: .4byte gUnknown_2022BC4 -_080330C0: .4byte gUnknown_3004FE0 +_080330BC: .4byte gBattleBufferA +_080330C0: .4byte gBattlerControllerFuncs _080330C4: .4byte CompleteOnFinishedStatusAnimation thumb_func_end sub_8033060 @@ -9462,7 +9462,7 @@ PlayerHandleStatusXor: @ 80330C8 adds r0, r5 movs r1, 0x37 bl GetMonData - ldr r2, _08033130 @ =gUnknown_2022BC4 + ldr r2, _08033130 @ =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r2, 0x1 @@ -9491,7 +9491,7 @@ PlayerHandleStatusXor: @ 80330C8 _08033124: .4byte gBattlerPartyIndexes _08033128: .4byte gActiveBattler _0803312C: .4byte gPlayerParty -_08033130: .4byte gUnknown_2022BC4 +_08033130: .4byte gBattleBufferA thumb_func_end PlayerHandleStatusXor thumb_func_start sub_8033134 @@ -9505,7 +9505,7 @@ sub_8033134: @ 8033134 thumb_func_start PlayerHandleDMA3Transfer PlayerHandleDMA3Transfer: @ 8033140 push {r4,r5,lr} - ldr r3, _080331A4 @ =gUnknown_2022BC4 + ldr r3, _080331A4 @ =gBattleBufferA ldr r0, _080331A8 @ =gActiveBattler ldrb r2, [r0] lsls r2, 9 @@ -9554,7 +9554,7 @@ PlayerHandleDMA3Transfer: @ 8033140 ldr r0, [r0, 0x8] b _080331DC .align 2, 0 -_080331A4: .4byte gUnknown_2022BC4 +_080331A4: .4byte gBattleBufferA _080331A8: .4byte gActiveBattler _080331AC: .4byte 0x040000d4 _080331B0: @@ -9594,7 +9594,7 @@ _080331F0: .4byte 0xfffff000 thumb_func_start PlayerHandlePlayBGM PlayerHandlePlayBGM: @ 80331F4 push {lr} - ldr r2, _0803321C @ =gUnknown_2022BC4 + ldr r2, _0803321C @ =gBattleBufferA ldr r0, _08033220 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -9611,7 +9611,7 @@ PlayerHandlePlayBGM: @ 80331F4 pop {r0} bx r0 .align 2, 0 -_0803321C: .4byte gUnknown_2022BC4 +_0803321C: .4byte gBattleBufferA _08033220: .4byte gActiveBattler thumb_func_end PlayerHandlePlayBGM @@ -9689,7 +9689,7 @@ _08033298: .4byte gUnknown_2022870 PlayerHandleCmd38: @ 803329C push {lr} ldr r3, _080332C8 @ =gUnknown_2022870 - ldr r1, _080332CC @ =gUnknown_2022BC4 + ldr r1, _080332CC @ =gBattleBufferA ldr r0, _080332D0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -9709,7 +9709,7 @@ PlayerHandleCmd38: @ 803329C bx r0 .align 2, 0 _080332C8: .4byte gUnknown_2022870 -_080332CC: .4byte gUnknown_2022BC4 +_080332CC: .4byte gBattleBufferA _080332D0: .4byte gActiveBattler thumb_func_end PlayerHandleCmd38 @@ -9775,7 +9775,7 @@ _0803333C: .4byte gSprites _08033340: .4byte gBattlerSpriteIds _08033344: .4byte gActiveBattler _08033348: - ldr r1, _08033378 @ =gUnknown_2024005 + ldr r1, _08033378 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -9789,7 +9789,7 @@ _08033348: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _0803337C @ =gUnknown_3004FE0 + ldr r1, _0803337C @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -9800,8 +9800,8 @@ _08033372: pop {r0} bx r0 .align 2, 0 -_08033378: .4byte gUnknown_2024005 -_0803337C: .4byte gUnknown_3004FE0 +_08033378: .4byte gDoingBattleAnim +_0803337C: .4byte gBattlerControllerFuncs _08033380: .4byte DoHitAnimBlinkSpriteEffect thumb_func_end PlayerHandleHitAnimation @@ -9825,7 +9825,7 @@ PlayerHandlePlaySE: @ 8033390 bne _080333A4 movs r3, 0xC0 _080333A4: - ldr r2, _080333D0 @ =gUnknown_2022BC4 + ldr r2, _080333D0 @ =gBattleBufferA ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 @@ -9845,13 +9845,13 @@ _080333A4: bx r0 .align 2, 0 _080333CC: .4byte gActiveBattler -_080333D0: .4byte gUnknown_2022BC4 +_080333D0: .4byte gBattleBufferA thumb_func_end PlayerHandlePlaySE thumb_func_start PlayerHandlecmd44 PlayerHandlecmd44: @ 80333D4 push {lr} - ldr r2, _080333FC @ =gUnknown_2022BC4 + ldr r2, _080333FC @ =gBattleBufferA ldr r0, _08033400 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -9868,7 +9868,7 @@ PlayerHandlecmd44: @ 80333D4 pop {r0} bx r0 .align 2, 0 -_080333FC: .4byte gUnknown_2022BC4 +_080333FC: .4byte gBattleBufferA _08033400: .4byte gActiveBattler thumb_func_end PlayerHandlecmd44 @@ -9905,14 +9905,14 @@ _08033440: .4byte gPlayerParty thumb_func_start PlayerHandleIntroSlide PlayerHandleIntroSlide: @ 8033444 push {lr} - ldr r1, _0803346C @ =gUnknown_2022BC4 + ldr r1, _0803346C @ =gBattleBufferA ldr r0, _08033470 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _08033474 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -9922,7 +9922,7 @@ PlayerHandleIntroSlide: @ 8033444 pop {r0} bx r0 .align 2, 0 -_0803346C: .4byte gUnknown_2022BC4 +_0803346C: .4byte gBattleBufferA _08033470: .4byte gActiveBattler _08033474: .4byte gIntroSlideFlags thumb_func_end PlayerHandleIntroSlide @@ -10075,7 +10075,7 @@ _0803359A: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _080335F0 @ =gUnknown_3004FE0 + ldr r1, _080335F0 @ =gBattlerControllerFuncs ldrb r0, [r7] lsls r0, 2 adds r0, r1 @@ -10099,7 +10099,7 @@ _080335E0: .4byte gTasks _080335E4: .4byte gBattleSpritesDataPtr _080335E8: .4byte gUnknown_2024000 _080335EC: .4byte sub_80491B0 -_080335F0: .4byte gUnknown_3004FE0 +_080335F0: .4byte gBattlerControllerFuncs _080335F4: .4byte nullsub_13 thumb_func_end PlayerHandleIntroTrainerBallThrow @@ -10190,7 +10190,7 @@ _0803368C: cmp r0, 0 beq _080336DC _080336AC: - ldr r0, _080336D4 @ =gUnknown_2022BC4 + ldr r0, _080336D4 @ =gBattleBufferA ldrb r1, [r7] lsls r2, r1, 9 adds r0, 0x1 @@ -10207,10 +10207,10 @@ _080336AC: .align 2, 0 _080336CC: .4byte gActiveBattler _080336D0: .4byte gBattleTypeFlags -_080336D4: .4byte gUnknown_2022BC4 +_080336D4: .4byte gBattleBufferA _080336D8: .4byte gBattlerPartyIndexes _080336DC: - ldr r4, _08033754 @ =gUnknown_2022BC4 + ldr r4, _08033754 @ =gBattleBufferA ldrb r0, [r7] lsls r1, r0, 9 adds r4, 0x1 @@ -10250,7 +10250,7 @@ _080336DC: eors r0, r6 strb r0, [r7] _08033730: - ldr r1, _08033760 @ =gUnknown_3004FE0 + ldr r1, _08033760 @ =gBattlerControllerFuncs ldr r2, _08033764 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -10269,10 +10269,10 @@ _08033748: pop {r0} bx r0 .align 2, 0 -_08033754: .4byte gUnknown_2022BC4 +_08033754: .4byte gBattleBufferA _08033758: .4byte gBattlerPartyIndexes _0803375C: .4byte gPlayerParty -_08033760: .4byte gUnknown_3004FE0 +_08033760: .4byte gBattlerControllerFuncs _08033764: .4byte gActiveBattler _08033768: .4byte sub_802FA58 thumb_func_end task05_08033660 @@ -10280,7 +10280,7 @@ _08033768: .4byte sub_802FA58 thumb_func_start PlayerHandleDrawPartyStatusSummary PlayerHandleDrawPartyStatusSummary: @ 803376C push {r4-r6,lr} - ldr r1, _08033794 @ =gUnknown_2022BC4 + ldr r1, _08033794 @ =gBattleBufferA ldr r0, _08033798 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -10297,7 +10297,7 @@ PlayerHandleDrawPartyStatusSummary: @ 803376C bl PlayerBufferExecCompleted b _08033810 .align 2, 0 -_08033794: .4byte gUnknown_2022BC4 +_08033794: .4byte gBattleBufferA _08033798: .4byte gActiveBattler _0803379C: ldr r6, _08033818 @ =gBattleSpritesDataPtr @@ -10352,7 +10352,7 @@ _0803379C: movs r1, 0x5D strb r1, [r0, 0x5] _08033804: - ldr r0, _08033828 @ =gUnknown_3004FE0 + ldr r0, _08033828 @ =gBattlerControllerFuncs ldrb r1, [r5] lsls r1, 2 adds r1, r0 @@ -10367,7 +10367,7 @@ _08033818: .4byte gBattleSpritesDataPtr _0803381C: .4byte gActiveBattler _08033820: .4byte gUnknown_2022BC8 _08033824: .4byte gUnknown_2024000 -_08033828: .4byte gUnknown_3004FE0 +_08033828: .4byte gBattlerControllerFuncs _0803382C: .4byte sub_8033830 thumb_func_end PlayerHandleDrawPartyStatusSummary @@ -10484,7 +10484,7 @@ PlayerHandleSpriteInvisibility: @ 80338EC adds r2, r0 lsls r2, 2 adds r2, r3 - ldr r0, _08033948 @ =gUnknown_2022BC4 + ldr r0, _08033948 @ =gBattleBufferA lsls r1, 9 adds r0, 0x1 adds r1, r0 @@ -10510,7 +10510,7 @@ _08033932: _0803393C: .4byte gActiveBattler _08033940: .4byte gSprites _08033944: .4byte gBattlerSpriteIds -_08033948: .4byte gUnknown_2022BC4 +_08033948: .4byte gBattleBufferA thumb_func_end PlayerHandleSpriteInvisibility thumb_func_start PlayerHandleBattleAnimation @@ -10523,7 +10523,7 @@ PlayerHandleBattleAnimation: @ 803394C lsls r0, 24 cmp r0, 0 bne _080339A4 - ldr r5, _08033994 @ =gUnknown_2022BC4 + ldr r5, _08033994 @ =gBattleBufferA ldrb r2, [r6] lsls r1, r2, 9 adds r0, r5, 0x1 @@ -10548,9 +10548,9 @@ PlayerHandleBattleAnimation: @ 803394C b _080339A4 .align 2, 0 _08033990: .4byte gActiveBattler -_08033994: .4byte gUnknown_2022BC4 +_08033994: .4byte gBattleBufferA _08033998: - ldr r0, _080339AC @ =gUnknown_3004FE0 + ldr r0, _080339AC @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -10562,14 +10562,14 @@ _080339A4: pop {r0} bx r0 .align 2, 0 -_080339AC: .4byte gUnknown_3004FE0 +_080339AC: .4byte gBattlerControllerFuncs _080339B0: .4byte CompleteOnFinishedBattleAnimation thumb_func_end PlayerHandleBattleAnimation thumb_func_start PlayerHandleLinkStandbyMsg PlayerHandleLinkStandbyMsg: @ 80339B4 push {r4,lr} - ldr r1, _080339D4 @ =gUnknown_2022BC4 + ldr r1, _080339D4 @ =gBattleBufferA ldr r0, _080339D8 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -10584,7 +10584,7 @@ PlayerHandleLinkStandbyMsg: @ 80339B4 beq _080339E2 b _08033A04 .align 2, 0 -_080339D4: .4byte gUnknown_2022BC4 +_080339D4: .4byte gBattleBufferA _080339D8: .4byte gActiveBattler _080339DC: cmp r0, 0x2 @@ -10615,7 +10615,7 @@ _08033A04: thumb_func_start PlayerHandleResetActionMoveSelection PlayerHandleResetActionMoveSelection: @ 8033A10 push {r4,lr} - ldr r1, _08033A30 @ =gUnknown_2022BC4 + ldr r1, _08033A30 @ =gBattleBufferA ldr r4, _08033A34 @ =gActiveBattler ldrb r3, [r4] lsls r0, r3, 9 @@ -10630,14 +10630,14 @@ PlayerHandleResetActionMoveSelection: @ 8033A10 beq _08033A3E b _08033A68 .align 2, 0 -_08033A30: .4byte gUnknown_2022BC4 +_08033A30: .4byte gBattleBufferA _08033A34: .4byte gActiveBattler _08033A38: cmp r2, 0x2 beq _08033A60 b _08033A68 _08033A3E: - ldr r0, _08033A50 @ =gUnknown_2023FF8 + ldr r0, _08033A50 @ =gActionSelectionCursor adds r0, r3, r0 strb r2, [r0] ldr r1, _08033A54 @ =gUnknown_2023FFC @@ -10646,13 +10646,13 @@ _08033A3E: strb r2, [r0] b _08033A68 .align 2, 0 -_08033A50: .4byte gUnknown_2023FF8 +_08033A50: .4byte gActionSelectionCursor _08033A54: .4byte gUnknown_2023FFC _08033A58: - ldr r0, _08033A5C @ =gUnknown_2023FF8 + ldr r0, _08033A5C @ =gActionSelectionCursor b _08033A62 .align 2, 0 -_08033A5C: .4byte gUnknown_2023FF8 +_08033A5C: .4byte gActionSelectionCursor _08033A60: ldr r0, _08033A74 @ =gUnknown_2023FFC _08033A62: @@ -10672,7 +10672,7 @@ _08033A74: .4byte gUnknown_2023FFC PlayerHandlecmd55: @ 8033A78 push {r4,lr} ldr r2, _08033AB0 @ =gBattleOutcome - ldr r1, _08033AB4 @ =gUnknown_2022BC4 + ldr r1, _08033AB4 @ =gBattleBufferA ldr r4, _08033AB8 @ =gActiveBattler ldrb r0, [r4] lsls r0, 9 @@ -10685,7 +10685,7 @@ PlayerHandlecmd55: @ 8033A78 movs r0, 0x3 bl BeginFastPaletteFade bl PlayerBufferExecCompleted - ldr r1, _08033ABC @ =gUnknown_3004FE0 + ldr r1, _08033ABC @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -10696,9 +10696,9 @@ PlayerHandlecmd55: @ 8033A78 bx r0 .align 2, 0 _08033AB0: .4byte gBattleOutcome -_08033AB4: .4byte gUnknown_2022BC4 +_08033AB4: .4byte gBattleBufferA _08033AB8: .4byte gActiveBattler -_08033ABC: .4byte gUnknown_3004FE0 +_08033ABC: .4byte gBattlerControllerFuncs _08033AC0: .4byte sub_802F6A8 thumb_func_end PlayerHandlecmd55 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 72e71cf23..afc8ffef3 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -12,7 +12,7 @@ nullsub_99: @ 81560A0 thumb_func_start sub_81560A4 sub_81560A4: @ 81560A4 - ldr r1, _081560C8 @ =gUnknown_3004FE0 + ldr r1, _081560C8 @ =gBattlerControllerFuncs ldr r0, _081560CC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -31,7 +31,7 @@ sub_81560A4: @ 81560A4 strb r1, [r0] bx lr .align 2, 0 -_081560C8: .4byte gUnknown_3004FE0 +_081560C8: .4byte gBattlerControllerFuncs _081560CC: .4byte gActiveBattler _081560D0: .4byte sub_81560DC _081560D4: .4byte gBattleStruct @@ -41,7 +41,7 @@ _081560D8: .4byte gSpecialVar_0x8004 thumb_func_start sub_81560DC sub_81560DC: @ 81560DC push {r4,r5,lr} - ldr r2, _08156120 @ =gUnknown_2023BC8 + ldr r2, _08156120 @ =gBattleControllerExecFlags ldr r1, _08156124 @ =gBitTable ldr r5, _08156128 @ =gActiveBattler ldrb r3, [r5] @@ -52,7 +52,7 @@ sub_81560DC: @ 81560DC ands r1, r0 cmp r1, 0 beq _08156138 - ldr r4, _0815612C @ =gUnknown_2022BC4 + ldr r4, _0815612C @ =gBattleBufferA lsls r0, r3, 9 adds r0, r4 ldrb r0, [r0] @@ -73,10 +73,10 @@ sub_81560DC: @ 81560DC bl _call_via_r0 b _08156138 .align 2, 0 -_08156120: .4byte gUnknown_2023BC8 +_08156120: .4byte gBattleControllerExecFlags _08156124: .4byte gBitTable _08156128: .4byte gActiveBattler -_0815612C: .4byte gUnknown_2022BC4 +_0815612C: .4byte gBattleBufferA _08156130: .4byte gUnknown_8478F1C _08156134: bl PlayerPartnerBufferExecCompleted @@ -241,7 +241,7 @@ sub_8156254: @ 8156254 negs r0, r0 ands r0, r1 strb r0, [r3] - ldr r0, _08156290 @ =gUnknown_3004F80 + ldr r0, _08156290 @ =gPreBattleCallback1 ldr r0, [r0] str r0, [r2] ldr r0, [r2, 0x8] @@ -253,7 +253,7 @@ _0815627E: _08156284: .4byte gPaletteFade _08156288: .4byte gMain _0815628C: .4byte 0x00000439 -_08156290: .4byte gUnknown_3004F80 +_08156290: .4byte gPreBattleCallback1 thumb_func_end sub_8156254 thumb_func_start sub_8156294 @@ -365,7 +365,7 @@ sub_81562F0: @ 81562F0 movs r3, 0x6 bl InitAndLaunchSpecialAnimation _08156374: - ldr r0, _081563A0 @ =gUnknown_3004FE0 + ldr r0, _081563A0 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -382,7 +382,7 @@ _08156390: .4byte gActiveBattler _08156394: .4byte SpriteCallbackDummy _08156398: .4byte gBattleSpritesDataPtr _0815639C: .4byte 0x000027f9 -_081563A0: .4byte gUnknown_3004FE0 +_081563A0: .4byte gBattlerControllerFuncs _081563A4: .4byte sub_8156294 thumb_func_end sub_81562F0 @@ -463,7 +463,7 @@ _081563DA: bl SetHealthboxSpriteVisible ldrb r0, [r5] bl CopyBattleSpriteInvisibility - ldr r1, _0815647C @ =gUnknown_3004FE0 + ldr r1, _0815647C @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -482,14 +482,14 @@ _0815646C: .4byte gSprites _08156470: .4byte gUnknown_3004FFC _08156474: .4byte SpriteCallbackDummy _08156478: .4byte gHealthboxSpriteIds -_0815647C: .4byte gUnknown_3004FE0 +_0815647C: .4byte gBattlerControllerFuncs _08156480: .4byte sub_81562F0 thumb_func_end sub_81563A8 thumb_func_start sub_8156484 sub_8156484: @ 8156484 push {lr} - ldr r0, _08156498 @ =gUnknown_2024005 + ldr r0, _08156498 @ =gDoingBattleAnim ldrb r0, [r0] cmp r0, 0 bne _08156492 @@ -498,7 +498,7 @@ _08156492: pop {r0} bx r0 .align 2, 0 -_08156498: .4byte gUnknown_2024005 +_08156498: .4byte gDoingBattleAnim thumb_func_end sub_8156484 thumb_func_start sub_815649C @@ -556,7 +556,7 @@ sub_81564F0: @ 81564F0 ands r0, r1 cmp r0, 0 bne _08156520 - ldr r1, _08156528 @ =gUnknown_3004FE0 + ldr r1, _08156528 @ =gBattlerControllerFuncs ldr r2, _0815652C @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -575,7 +575,7 @@ _08156520: bx r0 .align 2, 0 _08156524: .4byte gPaletteFade -_08156528: .4byte gUnknown_3004FE0 +_08156528: .4byte gBattlerControllerFuncs _0815652C: .4byte gActiveBattler _08156530: .4byte sub_8156538 _08156534: .4byte gUnknown_3004FFC @@ -586,7 +586,7 @@ sub_8156538: @ 8156538 push {lr} ldr r0, _08156568 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _0815656C @ =sub_8011100 + ldr r0, _0815656C @ =BattleMainCB2 cmp r1, r0 bne _0815658E ldr r0, _08156570 @ =gPaletteFade @@ -607,7 +607,7 @@ sub_8156538: @ 8156538 b _0815658A .align 2, 0 _08156568: .4byte gMain -_0815656C: .4byte sub_8011100 +_0815656C: .4byte BattleMainCB2 _08156570: .4byte gPaletteFade _08156574: .4byte gUnknown_203B0C0 _08156578: .4byte gUnknown_203B0C1 @@ -633,7 +633,7 @@ sub_8156594: @ 8156594 ands r0, r1 cmp r0, 0 bne _081565E2 - ldr r1, _081565CC @ =gUnknown_3004FE0 + ldr r1, _081565CC @ =gBattlerControllerFuncs ldr r0, _081565D0 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -653,7 +653,7 @@ _081565C4: b _081565DE .align 2, 0 _081565C8: .4byte gPaletteFade -_081565CC: .4byte gUnknown_3004FE0 +_081565CC: .4byte gBattlerControllerFuncs _081565D0: .4byte gActiveBattler _081565D4: .4byte sub_81565E8 _081565D8: .4byte gSpecialVar_0x8004 @@ -671,7 +671,7 @@ sub_81565E8: @ 81565E8 push {lr} ldr r0, _08156614 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _08156618 @ =sub_8011100 + ldr r0, _08156618 @ =BattleMainCB2 cmp r1, r0 bne _0815660E ldr r0, _0815661C @ =gPaletteFade @@ -690,7 +690,7 @@ _0815660E: bx r0 .align 2, 0 _08156614: .4byte gMain -_08156618: .4byte sub_8011100 +_08156618: .4byte BattleMainCB2 _0815661C: .4byte gPaletteFade _08156620: .4byte gSpecialVar_ItemId thumb_func_end sub_81565E8 @@ -857,7 +857,7 @@ _0815671E: negs r0, r0 ands r0, r1 strb r0, [r2, 0x9] - ldr r1, _081567A8 @ =gUnknown_3004FE0 + ldr r1, _081567A8 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -876,7 +876,7 @@ _08156798: .4byte gBattleTypeFlags _0815679C: .4byte gUnknown_3004FFC _081567A0: .4byte gSprites _081567A4: .4byte gHealthboxSpriteIds -_081567A8: .4byte gUnknown_3004FE0 +_081567A8: .4byte gBattlerControllerFuncs _081567AC: .4byte sub_81567B0 thumb_func_end sub_8156624 @@ -995,7 +995,7 @@ _081567DA: ldr r2, _081568D0 @ =gPlayerParty adds r0, r2 bl HandleLowHpMusicChange - ldr r1, _081568D4 @ =gUnknown_3004FE0 + ldr r1, _081568D4 @ =gBattlerControllerFuncs mov r2, r8 ldrb r0, [r2] lsls r0, 2 @@ -1018,7 +1018,7 @@ _081568C4: .4byte 0x000027f9 _081568C8: .4byte c3_0802FDF4 _081568CC: .4byte gBattlerPartyIndexes _081568D0: .4byte gPlayerParty -_081568D4: .4byte gUnknown_3004FE0 +_081568D4: .4byte gBattlerControllerFuncs _081568D8: .4byte sub_815649C thumb_func_end sub_81567B0 @@ -1171,7 +1171,7 @@ _08156A10: adds r0, r6, 0 movs r1, 0x19 bl SetMonData - ldr r1, _08156A30 @ =gUnknown_3004FE0 + ldr r1, _08156A30 @ =gBattlerControllerFuncs ldr r3, [sp, 0x8] lsls r0, r3, 2 adds r0, r1 @@ -1181,7 +1181,7 @@ _08156A10: bl DestroyTask b _08156A3E .align 2, 0 -_08156A30: .4byte gUnknown_3004FE0 +_08156A30: .4byte gBattlerControllerFuncs _08156A34: .4byte sub_8156EE8 _08156A38: ldr r0, _08156A50 @ =sub_8156A54 @@ -1431,7 +1431,7 @@ _08156C34: adds r0, r5, 0 movs r1, 0x19 bl SetMonData - ldr r1, _08156C60 @ =gUnknown_3004FE0 + ldr r1, _08156C60 @ =gBattlerControllerFuncs lsls r0, r7, 2 adds r0, r1 ldr r1, _08156C64 @ =sub_8156EE8 @@ -1448,7 +1448,7 @@ _08156C50: pop {r0} bx r0 .align 2, 0 -_08156C60: .4byte gUnknown_3004FE0 +_08156C60: .4byte gBattlerControllerFuncs _08156C64: .4byte sub_8156EE8 thumb_func_end sub_8156B24 @@ -1608,7 +1608,7 @@ sub_8156D80: @ 8156D80 movs r1, 0x38 bl GetMonData ldrb r0, [r4, 0xC] - ldr r1, _08156DC4 @ =gUnknown_3004FE0 + ldr r1, _08156DC4 @ =gBattlerControllerFuncs lsls r0, 2 adds r0, r1 ldr r1, _08156DC8 @ =sub_8156EE8 @@ -1621,7 +1621,7 @@ sub_8156D80: @ 8156D80 .align 2, 0 _08156DBC: .4byte gTasks _08156DC0: .4byte gPlayerParty -_08156DC4: .4byte gUnknown_3004FE0 +_08156DC4: .4byte gBattlerControllerFuncs _08156DC8: .4byte sub_8156EE8 thumb_func_end sub_8156D80 @@ -1798,7 +1798,7 @@ sub_8156F00: @ 8156F00 subs r0, 0x5 ands r0, r1 strb r0, [r2] - ldr r0, _08156F48 @ =gUnknown_2024005 + ldr r0, _08156F48 @ =gDoingBattleAnim strb r3, [r0] bl PlayerPartnerBufferExecCompleted b _08156F76 @@ -1806,7 +1806,7 @@ sub_8156F00: @ 8156F00 _08156F3C: .4byte gBattlerSpriteIds _08156F40: .4byte gActiveBattler _08156F44: .4byte gSprites -_08156F48: .4byte gUnknown_2024005 +_08156F48: .4byte gDoingBattleAnim _08156F4C: ldrh r0, [r4, 0x30] movs r1, 0x3 @@ -1973,7 +1973,7 @@ _08157080: .4byte gActiveBattler PlayerPartnerBufferExecCompleted: @ 8157084 push {r4,lr} sub sp, 0x4 - ldr r1, _081570C4 @ =gUnknown_3004FE0 + ldr r1, _081570C4 @ =gBattlerControllerFuncs ldr r4, _081570C8 @ =gActiveBattler ldrb r0, [r4] lsls r0, 2 @@ -1993,7 +1993,7 @@ PlayerPartnerBufferExecCompleted: @ 8157084 movs r1, 0x4 mov r2, sp bl PrepareBufferDataTransferLink - ldr r1, _081570D4 @ =gUnknown_2022BC4 + ldr r1, _081570D4 @ =gBattleBufferA ldrb r0, [r4] lsls r0, 9 adds r0, r1 @@ -2001,13 +2001,13 @@ PlayerPartnerBufferExecCompleted: @ 8157084 strb r1, [r0] b _081570EA .align 2, 0 -_081570C4: .4byte gUnknown_3004FE0 +_081570C4: .4byte gBattlerControllerFuncs _081570C8: .4byte gActiveBattler _081570CC: .4byte sub_81560DC _081570D0: .4byte gBattleTypeFlags -_081570D4: .4byte gUnknown_2022BC4 +_081570D4: .4byte gBattleBufferA _081570D8: - ldr r2, _081570F4 @ =gUnknown_2023BC8 + ldr r2, _081570F4 @ =gBattleControllerExecFlags ldr r1, _081570F8 @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -2022,7 +2022,7 @@ _081570EA: pop {r0} bx r0 .align 2, 0 -_081570F4: .4byte gUnknown_2023BC8 +_081570F4: .4byte gBattleControllerExecFlags _081570F8: .4byte gBitTable thumb_func_end PlayerPartnerBufferExecCompleted @@ -2057,7 +2057,7 @@ sub_815712C: @ 815712C push {r4-r6,lr} sub sp, 0x100 movs r6, 0 - ldr r1, _08157158 @ =gUnknown_2022BC4 + ldr r1, _08157158 @ =gBattleBufferA ldr r0, _0815715C @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2075,7 +2075,7 @@ sub_815712C: @ 815712C adds r6, r0, 0 b _08157186 .align 2, 0 -_08157158: .4byte gUnknown_2022BC4 +_08157158: .4byte gBattleBufferA _0815715C: .4byte gActiveBattler _08157160: .4byte gBattlerPartyIndexes _08157164: @@ -2143,7 +2143,7 @@ _081571D4: ldr r0, _081571FC @ =gEnemyParty _081571DC: adds r6, r1, r0 - ldr r3, _08157200 @ =gUnknown_2022BC4 + ldr r3, _08157200 @ =gBattleBufferA ldr r2, _08157204 @ =gActiveBattler ldrb r0, [r2] lsls r0, 9 @@ -2161,7 +2161,7 @@ _081571F2: mov pc, r0 .align 2, 0 _081571FC: .4byte gEnemyParty -_08157200: .4byte gUnknown_2022BC4 +_08157200: .4byte gBattleBufferA _08157204: .4byte gActiveBattler _08157208: .4byte _0815720C .align 2, 0 @@ -2806,7 +2806,7 @@ sub_8157750: @ 8157750 thumb_func_start sub_815775C sub_815775C: @ 815775C push {r4,r5,lr} - ldr r1, _08157780 @ =gUnknown_2022BC4 + ldr r1, _08157780 @ =gBattleBufferA ldr r0, _08157784 @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -2822,7 +2822,7 @@ sub_815775C: @ 815775C bl sub_81577B4 b _081577AA .align 2, 0 -_08157780: .4byte gUnknown_2022BC4 +_08157780: .4byte gBattleBufferA _08157784: .4byte gActiveBattler _08157788: .4byte gBattlerPartyIndexes _0815778C: @@ -2885,7 +2885,7 @@ _081577F0: ldr r0, _0815781C @ =gEnemyParty _081577F8: adds r6, r1, r0 - ldr r2, _08157820 @ =gUnknown_2022BC4 + ldr r2, _08157820 @ =gBattleBufferA ldr r0, _08157824 @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 @@ -2904,7 +2904,7 @@ _08157812: mov pc, r0 .align 2, 0 _0815781C: .4byte gEnemyParty -_08157820: .4byte gUnknown_2022BC4 +_08157820: .4byte gBattleBufferA _08157824: .4byte gActiveBattler _08157828: .4byte _0815782C .align 2, 0 @@ -4019,7 +4019,7 @@ sub_81580E0: @ 81580E0 lsrs r1, 16 adds r0, r4, 0 bl SetBattlerShadowSpriteCallback - ldr r1, _08158234 @ =gUnknown_3004FE0 + ldr r1, _08158234 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4042,7 +4042,7 @@ _08158224: .4byte gBattlerSpriteIds _08158228: .4byte gSprites _0815822C: .4byte 0x0000ff10 _08158230: .4byte gBattleMonForms -_08158234: .4byte gUnknown_3004FE0 +_08158234: .4byte gBattlerControllerFuncs _08158238: .4byte sub_8156184 thumb_func_end sub_81580E0 @@ -4051,7 +4051,7 @@ sub_815823C: @ 815823C push {r4,r5,lr} ldr r5, _081582A0 @ =gActiveBattler ldrb r0, [r5] - ldr r4, _081582A4 @ =gUnknown_2022BC4 + ldr r4, _081582A4 @ =gBattleBufferA lsls r1, r0, 9 adds r2, r4, 0x2 adds r1, r2 @@ -4076,7 +4076,7 @@ sub_815823C: @ 815823C ldr r2, _081582AC @ =gPlayerParty adds r0, r2 bl BattleLoadPlayerMonSpriteGfx - ldr r1, _081582B0 @ =gUnknown_2023FF8 + ldr r1, _081582B0 @ =gActionSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] @@ -4086,7 +4086,7 @@ sub_815823C: @ 815823C strb r4, [r0] ldrb r0, [r5] bl sub_8159478 - ldr r1, _081582B8 @ =gUnknown_3004FE0 + ldr r1, _081582B8 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4097,19 +4097,19 @@ sub_815823C: @ 815823C bx r0 .align 2, 0 _081582A0: .4byte gActiveBattler -_081582A4: .4byte gUnknown_2022BC4 +_081582A4: .4byte gBattleBufferA _081582A8: .4byte gBattlerPartyIndexes _081582AC: .4byte gPlayerParty -_081582B0: .4byte gUnknown_2023FF8 +_081582B0: .4byte gActionSelectionCursor _081582B4: .4byte gUnknown_2023FFC -_081582B8: .4byte gUnknown_3004FE0 +_081582B8: .4byte gBattlerControllerFuncs _081582BC: .4byte sub_81563A8 thumb_func_end sub_815823C thumb_func_start sub_81582C0 sub_81582C0: @ 81582C0 push {r4-r6,lr} - ldr r0, _081582EC @ =gUnknown_2022BC4 + ldr r0, _081582EC @ =gBattleBufferA ldr r6, _081582F0 @ =gActiveBattler ldrb r2, [r6] lsls r1, r2, 9 @@ -4122,7 +4122,7 @@ sub_81582C0: @ 81582C0 adds r1, r2, 0 movs r3, 0x1 bl InitAndLaunchSpecialAnimation - ldr r0, _081582F4 @ =gUnknown_3004FE0 + ldr r0, _081582F4 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -4130,9 +4130,9 @@ sub_81582C0: @ 81582C0 str r0, [r1] b _08158332 .align 2, 0 -_081582EC: .4byte gUnknown_2022BC4 +_081582EC: .4byte gBattleBufferA _081582F0: .4byte gActiveBattler -_081582F4: .4byte gUnknown_3004FE0 +_081582F4: .4byte gBattlerControllerFuncs _081582F8: .4byte sub_8156F7C _081582FC: ldr r5, _08158338 @ =gBattlerSpriteIds @@ -4190,7 +4190,7 @@ sub_8158344: @ 8158344 movs r0, 0x4 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _081583DC @ =gMultiuseSpriteTemplate - ldr r1, _081583E0 @ =gUnknown_8239F8C + ldr r1, _081583E0 @ =gTrainerBackPicCoords ldrb r1, [r1, 0x10] movs r2, 0x8 subs r2, r1 @@ -4242,7 +4242,7 @@ sub_8158344: @ 8158344 .align 2, 0 _081583D8: .4byte gActiveBattler _081583DC: .4byte gMultiuseSpriteTemplate -_081583E0: .4byte gUnknown_8239F8C +_081583E0: .4byte gTrainerBackPicCoords _081583E4: .4byte gBattlerSpriteIds _081583E8: .4byte gSprites _081583EC: .4byte 0x0000fffe @@ -4372,7 +4372,7 @@ _081584E2: adds r0, r4 ldr r1, _08158534 @ =sub_8033EEC str r1, [r0] - ldr r1, _08158538 @ =gUnknown_3004FE0 + ldr r1, _08158538 @ =gBattlerControllerFuncs ldr r0, _0815853C @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4395,7 +4395,7 @@ _08158528: .4byte gTrainerFrontPicTable _0815852C: .4byte 0x000003ff _08158530: .4byte 0xfffffc00 _08158534: .4byte sub_8033EEC -_08158538: .4byte gUnknown_3004FE0 +_08158538: .4byte gBattlerControllerFuncs _0815853C: .4byte gActiveBattler _08158540: .4byte sub_815614C thumb_func_end sub_8158344 @@ -4415,7 +4415,7 @@ sub_8158544: @ 8158544 movs r0, 0x4 bl SetMultiuseSpriteTemplateToTrainerBack ldr r0, _081585F0 @ =gMultiuseSpriteTemplate - ldr r1, _081585F4 @ =gUnknown_8239F8C + ldr r1, _081585F4 @ =gTrainerBackPicCoords ldrb r1, [r1, 0x10] movs r2, 0x8 subs r2, r1 @@ -4473,7 +4473,7 @@ sub_8158544: @ 8158544 adds r0, r5 ldr r1, _08158604 @ =sub_8033EEC str r1, [r0] - ldr r1, _08158608 @ =gUnknown_3004FE0 + ldr r1, _08158608 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -4485,12 +4485,12 @@ sub_8158544: @ 8158544 .align 2, 0 _081585EC: .4byte gActiveBattler _081585F0: .4byte gMultiuseSpriteTemplate -_081585F4: .4byte gUnknown_8239F8C +_081585F4: .4byte gTrainerBackPicCoords _081585F8: .4byte gBattlerSpriteIds _081585FC: .4byte gSprites _08158600: .4byte 0x0000ffa0 _08158604: .4byte sub_8033EEC -_08158608: .4byte gUnknown_3004FE0 +_08158608: .4byte gBattlerControllerFuncs _0815860C: .4byte sub_8156FEC thumb_func_end sub_8158544 @@ -4625,7 +4625,7 @@ _081586FC: ldr r1, _08158738 @ =sub_8011EA0 _0815871A: str r1, [r0] - ldr r1, _0815873C @ =gUnknown_3004FE0 + ldr r1, _0815873C @ =gBattlerControllerFuncs ldr r0, _08158740 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -4640,7 +4640,7 @@ _0815872A: _08158730: .4byte gSprites _08158734: .4byte gBattlerSpriteIds _08158738: .4byte sub_8011EA0 -_0815873C: .4byte gUnknown_3004FE0 +_0815873C: .4byte gBattlerControllerFuncs _08158740: .4byte gActiveBattler _08158744: .4byte sub_8156DCC thumb_func_end sub_815861C @@ -4661,7 +4661,7 @@ sub_8158754: @ 8158754 ldr r1, [r0, 0x8] movs r0, 0x4 strb r0, [r1, 0x8] - ldr r1, _08158798 @ =gUnknown_2024005 + ldr r1, _08158798 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldr r5, _0815879C @ =gActiveBattler @@ -4675,7 +4675,7 @@ sub_8158754: @ 8158754 adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation - ldr r1, _081587A0 @ =gUnknown_3004FE0 + ldr r1, _081587A0 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4686,16 +4686,16 @@ sub_8158754: @ 8158754 bx r0 .align 2, 0 _08158794: .4byte gBattleSpritesDataPtr -_08158798: .4byte gUnknown_2024005 +_08158798: .4byte gDoingBattleAnim _0815879C: .4byte gActiveBattler -_081587A0: .4byte gUnknown_3004FE0 +_081587A0: .4byte gBattlerControllerFuncs _081587A4: .4byte sub_8156484 thumb_func_end sub_8158754 thumb_func_start sub_81587A8 sub_81587A8: @ 81587A8 push {r4,r5,lr} - ldr r1, _081587F0 @ =gUnknown_2022BC4 + ldr r1, _081587F0 @ =gBattleBufferA ldr r5, _081587F4 @ =gActiveBattler ldrb r0, [r5] lsls r0, 9 @@ -4706,7 +4706,7 @@ sub_81587A8: @ 81587A8 ldr r0, [r0] ldr r0, [r0, 0x8] strb r1, [r0, 0x8] - ldr r1, _081587FC @ =gUnknown_2024005 + ldr r1, _081587FC @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r4, [r5] @@ -4719,7 +4719,7 @@ sub_81587A8: @ 81587A8 adds r1, r4, 0 movs r3, 0x3 bl InitAndLaunchSpecialAnimation - ldr r1, _08158800 @ =gUnknown_3004FE0 + ldr r1, _08158800 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -4729,11 +4729,11 @@ sub_81587A8: @ 81587A8 pop {r0} bx r0 .align 2, 0 -_081587F0: .4byte gUnknown_2022BC4 +_081587F0: .4byte gBattleBufferA _081587F4: .4byte gActiveBattler _081587F8: .4byte gBattleSpritesDataPtr -_081587FC: .4byte gUnknown_2024005 -_08158800: .4byte gUnknown_3004FE0 +_081587FC: .4byte gDoingBattleAnim +_08158800: .4byte gBattlerControllerFuncs _08158804: .4byte sub_8156484 thumb_func_end sub_81587A8 @@ -4748,7 +4748,7 @@ sub_8158808: @ 8158808 thumb_func_start sub_8158814 sub_8158814: @ 8158814 push {r4-r6,lr} - ldr r0, _081588E8 @ =gUnknown_2022BC4 + ldr r0, _081588E8 @ =gBattleBufferA mov r12, r0 ldr r6, _081588EC @ =gActiveBattler ldrb r2, [r6] @@ -4852,7 +4852,7 @@ sub_8158814: @ 8158814 bl PlayerPartnerBufferExecCompleted b _0815892A .align 2, 0 -_081588E8: .4byte gUnknown_2022BC4 +_081588E8: .4byte gBattleBufferA _081588EC: .4byte gActiveBattler _081588F0: .4byte gAnimMoveTurn _081588F4: .4byte gAnimMovePower @@ -4871,7 +4871,7 @@ _0815890C: lsls r0, 2 adds r0, r2 strb r3, [r0, 0x4] - ldr r1, _08158934 @ =gUnknown_3004FE0 + ldr r1, _08158934 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -4883,7 +4883,7 @@ _0815892A: bx r0 .align 2, 0 _08158930: .4byte gBattleSpritesDataPtr -_08158934: .4byte gUnknown_3004FE0 +_08158934: .4byte gBattlerControllerFuncs _08158938: .4byte sub_815893C thumb_func_end sub_8158814 @@ -4893,7 +4893,7 @@ sub_815893C: @ 815893C mov r7, r9 mov r6, r8 push {r6,r7} - ldr r2, _08158980 @ =gUnknown_2022BC4 + ldr r2, _08158980 @ =gBattleBufferA ldr r6, _08158984 @ =gActiveBattler ldrb r3, [r6] lsls r1, r3, 9 @@ -4923,7 +4923,7 @@ sub_815893C: @ 815893C beq _08158996 b _08158A7C .align 2, 0 -_08158980: .4byte gUnknown_2022BC4 +_08158980: .4byte gBattleBufferA _08158984: .4byte gActiveBattler _08158988: .4byte gBattleSpritesDataPtr _0815898C: @@ -5066,7 +5066,7 @@ sub_8158A88: @ 8158A88 ldr r0, _08158AC8 @ =gUnknown_2022BC6 adds r4, r0 ldrh r0, [r4] - bl sub_80D7274 + bl BufferStringBattle ldrh r0, [r4] bl sub_80D89B0 lsls r0, 24 @@ -5074,7 +5074,7 @@ sub_8158A88: @ 8158A88 beq _08158AD0 ldr r0, _08158ACC @ =gDisplayedStringBattle movs r1, 0x40 - bl sub_80D87BC + bl BattlePutTextOnWindow b _08158AD8 .align 2, 0 _08158ABC: .4byte gBattle_BG0_X @@ -5085,9 +5085,9 @@ _08158ACC: .4byte gDisplayedStringBattle _08158AD0: ldr r0, _08158AEC @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow _08158AD8: - ldr r1, _08158AF0 @ =gUnknown_3004FE0 + ldr r1, _08158AF0 @ =gBattlerControllerFuncs ldr r0, _08158AF4 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5099,7 +5099,7 @@ _08158AD8: bx r0 .align 2, 0 _08158AEC: .4byte gDisplayedStringBattle -_08158AF0: .4byte gUnknown_3004FE0 +_08158AF0: .4byte gBattlerControllerFuncs _08158AF4: .4byte gActiveBattler _08158AF8: .4byte sub_815623C thumb_func_end sub_8158A88 @@ -5137,7 +5137,7 @@ sub_8158B20: @ 8158B20 ldr r1, _08158B50 @ =gBattle_BG0_Y movs r0, 0xA0 strh r0, [r1] - ldr r1, _08158B54 @ =gUnknown_3004FE0 + ldr r1, _08158B54 @ =gBattlerControllerFuncs ldr r0, _08158B58 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5150,7 +5150,7 @@ _08158B46: .align 2, 0 _08158B4C: .4byte gBattle_BG0_X _08158B50: .4byte gBattle_BG0_Y -_08158B54: .4byte gUnknown_3004FE0 +_08158B54: .4byte gBattlerControllerFuncs _08158B58: .4byte gActiveBattler _08158B5C: .4byte sub_8156140 thumb_func_end sub_8158B20 @@ -5164,7 +5164,7 @@ sub_8158B60: @ 8158B60 lsls r0, 24 cmp r0, 0 bne _08158BDC - ldr r1, _08158BC0 @ =gUnknown_3004FE0 + ldr r1, _08158BC0 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5172,10 +5172,10 @@ sub_8158B60: @ 8158B60 str r1, [r0] ldr r0, _08158BC8 @ =gUnknown_83FDA4C movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _08158BCC @ =gUnknown_83FE725 movs r1, 0x2 - bl sub_80D87BC + bl BattlePutTextOnWindow movs r4, 0 _08158B8E: lsls r0, r4, 24 @@ -5184,7 +5184,7 @@ _08158B8E: adds r4, 0x1 cmp r4, 0x3 ble _08158B8E - ldr r1, _08158BD0 @ =gUnknown_2023FF8 + ldr r1, _08158BD0 @ =gActionSelectionCursor ldr r0, _08158BBC @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -5195,19 +5195,19 @@ _08158B8E: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08158BD8 @ =gDisplayedStringBattle movs r1, 0x1 - bl sub_80D87BC + bl BattlePutTextOnWindow b _08158BE8 .align 2, 0 _08158BBC: .4byte gActiveBattler -_08158BC0: .4byte gUnknown_3004FE0 +_08158BC0: .4byte gBattlerControllerFuncs _08158BC4: .4byte sub_8158B20 _08158BC8: .4byte gUnknown_83FDA4C _08158BCC: .4byte gUnknown_83FE725 -_08158BD0: .4byte gUnknown_2023FF8 +_08158BD0: .4byte gActionSelectionCursor _08158BD4: .4byte gUnknown_83FE6D5 _08158BD8: .4byte gDisplayedStringBattle _08158BDC: - ldr r0, _08158BF0 @ =gUnknown_3004FE0 + ldr r0, _08158BF0 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -5218,7 +5218,7 @@ _08158BE8: pop {r0} bx r0 .align 2, 0 -_08158BF0: .4byte gUnknown_3004FE0 +_08158BF0: .4byte gBattlerControllerFuncs _08158BF4: .4byte sub_8156140 thumb_func_end sub_8158B60 @@ -5245,7 +5245,7 @@ sub_8158C04: @ 8158C04 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] - ldr r1, _08158C3C @ =gUnknown_3004FE0 + ldr r1, _08158C3C @ =gBattlerControllerFuncs ldr r0, _08158C40 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5258,7 +5258,7 @@ _08158C2E: .align 2, 0 _08158C34: .4byte gBattle_BG0_X _08158C38: .4byte gBattle_BG0_Y -_08158C3C: .4byte gUnknown_3004FE0 +_08158C3C: .4byte gBattlerControllerFuncs _08158C40: .4byte gActiveBattler _08158C44: .4byte sub_81564E4 thumb_func_end sub_8158C04 @@ -5273,7 +5273,7 @@ sub_8158C48: @ 8158C48 cmp r0, 0 bne _08158C74 bl sub_8032CB4 - ldr r0, _08158C6C @ =gUnknown_3004FE0 + ldr r0, _08158C6C @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -5281,10 +5281,10 @@ sub_8158C48: @ 8158C48 b _08158C7E .align 2, 0 _08158C68: .4byte gActiveBattler -_08158C6C: .4byte gUnknown_3004FE0 +_08158C6C: .4byte gBattlerControllerFuncs _08158C70: .4byte sub_8158C04 _08158C74: - ldr r0, _08158C88 @ =gUnknown_3004FE0 + ldr r0, _08158C88 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -5295,7 +5295,7 @@ _08158C7E: pop {r0} bx r0 .align 2, 0 -_08158C88: .4byte gUnknown_3004FE0 +_08158C88: .4byte gBattlerControllerFuncs _08158C8C: .4byte sub_81564E4 thumb_func_end sub_8158C48 @@ -5310,7 +5310,7 @@ sub_8158C90: @ 8158C90 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _08158CDC @ =gUnknown_3004FE0 + ldr r1, _08158CDC @ =gBattlerControllerFuncs ldr r2, _08158CE0 @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -5322,7 +5322,7 @@ sub_8158C90: @ 8158C90 strb r0, [r1] movs r3, 0 ldr r5, _08158CEC @ =gUnknown_203B0DC - ldr r4, _08158CF0 @ =gUnknown_2022BC4 + ldr r4, _08158CF0 @ =gBattleBufferA _08158CBE: adds r0, r3, r5 ldrb r1, [r2] @@ -5340,12 +5340,12 @@ _08158CBE: pop {r0} bx r0 .align 2, 0 -_08158CDC: .4byte gUnknown_3004FE0 +_08158CDC: .4byte gBattlerControllerFuncs _08158CE0: .4byte gActiveBattler _08158CE4: .4byte sub_8156594 _08158CE8: .4byte gBattlerInMenuId _08158CEC: .4byte gUnknown_203B0DC -_08158CF0: .4byte gUnknown_2022BC4 +_08158CF0: .4byte gBattleBufferA thumb_func_end sub_8158C90 thumb_func_start sub_8158CF4 @@ -5368,7 +5368,7 @@ sub_8158CF4: @ 8158CF4 adds r1, r0 lsls r1, 3 adds r1, r5 - ldr r5, _08158DB4 @ =gUnknown_2022BC4 + ldr r5, _08158DB4 @ =gBattleBufferA lsls r2, 9 adds r6, r5, 0x1 adds r2, r6 @@ -5422,7 +5422,7 @@ _08158D60: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r1, _08158DC0 @ =gUnknown_3004FE0 + ldr r1, _08158DC0 @ =gBattlerControllerFuncs ldr r2, _08158DAC @ =gActiveBattler ldrb r0, [r2] lsls r0, 2 @@ -5441,10 +5441,10 @@ _08158DA4: .4byte TaskDummy _08158DA8: .4byte gUnknown_3004FFC _08158DAC: .4byte gActiveBattler _08158DB0: .4byte gTasks -_08158DB4: .4byte gUnknown_2022BC4 +_08158DB4: .4byte gBattleBufferA _08158DB8: .4byte gBattleStruct _08158DBC: .4byte gUnknown_203B0DC -_08158DC0: .4byte gUnknown_3004FE0 +_08158DC0: .4byte gBattlerControllerFuncs _08158DC4: .4byte sub_81564F0 _08158DC8: .4byte gBattlerInMenuId thumb_func_end sub_8158CF4 @@ -5493,7 +5493,7 @@ _08158E18: adds r5, r1, r0 movs r0, 0 bl LoadBattleBarGfx - ldr r3, _08158E70 @ =gUnknown_2022BC4 + ldr r3, _08158E70 @ =gBattleBufferA ldr r7, _08158E74 @ =gActiveBattler ldrb r1, [r7] lsls r1, 9 @@ -5529,7 +5529,7 @@ _08158E18: .align 2, 0 _08158E68: .4byte gBattlerPartyIndexes _08158E6C: .4byte gEnemyParty -_08158E70: .4byte gUnknown_2022BC4 +_08158E70: .4byte gBattleBufferA _08158E74: .4byte gActiveBattler _08158E78: .4byte 0x00007fff _08158E7C: .4byte gHealthboxSpriteIds @@ -5552,7 +5552,7 @@ _08158E80: movs r2, 0 bl sub_8048440 _08158EA8: - ldr r1, _08158EC4 @ =gUnknown_3004FE0 + ldr r1, _08158EC4 @ =gBattlerControllerFuncs ldr r0, _08158EC8 @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 @@ -5565,7 +5565,7 @@ _08158EA8: bx r0 .align 2, 0 _08158EC0: .4byte gHealthboxSpriteIds -_08158EC4: .4byte gUnknown_3004FE0 +_08158EC4: .4byte gBattlerControllerFuncs _08158EC8: .4byte gActiveBattler _08158ECC: .4byte sub_8156E78 thumb_func_end sub_8158DD8 @@ -5573,7 +5573,7 @@ _08158ECC: .4byte sub_8156E78 thumb_func_start sub_8158ED0 sub_8158ED0: @ 8158ED0 push {r4-r7,lr} - ldr r5, _08158EFC @ =gUnknown_2022BC4 + ldr r5, _08158EFC @ =gBattleBufferA ldr r6, _08158F00 @ =gActiveBattler ldrb r0, [r6] lsls r0, 9 @@ -5593,7 +5593,7 @@ sub_8158ED0: @ 8158ED0 bl PlayerPartnerBufferExecCompleted b _08158F54 .align 2, 0 -_08158EFC: .4byte gUnknown_2022BC4 +_08158EFC: .4byte gBattleBufferA _08158F00: .4byte gActiveBattler _08158F04: .4byte gPlayerParty _08158F08: @@ -5626,7 +5626,7 @@ _08158F08: strh r4, [r1, 0xA] ldrb r0, [r6] strh r0, [r1, 0xC] - ldr r1, _08158F64 @ =gUnknown_3004FE0 + ldr r1, _08158F64 @ =gBattlerControllerFuncs ldrb r0, [r6] lsls r0, 2 adds r0, r1 @@ -5639,7 +5639,7 @@ _08158F54: .align 2, 0 _08158F5C: .4byte sub_81568DC _08158F60: .4byte gTasks -_08158F64: .4byte gUnknown_3004FE0 +_08158F64: .4byte gBattlerControllerFuncs _08158F68: .4byte nullsub_99 thumb_func_end sub_8158ED0 @@ -5702,7 +5702,7 @@ _08158FB8: negs r0, r0 ands r0, r2 strb r0, [r1] - ldr r1, _0815900C @ =gUnknown_3004FE0 + ldr r1, _0815900C @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5718,7 +5718,7 @@ _08158FFC: .4byte gEnemyParty _08159000: .4byte gHealthboxSpriteIds _08159004: .4byte gActiveBattler _08159008: .4byte gBattleSpritesDataPtr -_0815900C: .4byte gUnknown_3004FE0 +_0815900C: .4byte gBattlerControllerFuncs _08159010: .4byte sub_8157054 thumb_func_end sub_8158F6C @@ -5731,7 +5731,7 @@ sub_8159014: @ 8159014 lsls r0, 24 cmp r0, 0 bne _08159064 - ldr r4, _08159070 @ =gUnknown_2022BC4 + ldr r4, _08159070 @ =gBattleBufferA ldrb r3, [r5] lsls r3, 9 adds r0, r4, 0x1 @@ -5756,7 +5756,7 @@ sub_8159014: @ 8159014 lsls r2, 24 orrs r1, r2 bl InitAndLaunchChosenStatusAnimation - ldr r1, _08159074 @ =gUnknown_3004FE0 + ldr r1, _08159074 @ =gBattlerControllerFuncs ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -5768,8 +5768,8 @@ _08159064: bx r0 .align 2, 0 _0815906C: .4byte gActiveBattler -_08159070: .4byte gUnknown_2022BC4 -_08159074: .4byte gUnknown_3004FE0 +_08159070: .4byte gBattleBufferA +_08159074: .4byte gBattlerControllerFuncs _08159078: .4byte sub_8157054 thumb_func_end sub_8159014 @@ -5810,7 +5810,7 @@ _081590BC: adds r0, r4, 0 movs r1, 0x37 bl GetMonData - ldr r2, _081590F8 @ =gUnknown_2022BC4 + ldr r2, _081590F8 @ =gBattleBufferA ldr r1, _081590FC @ =gActiveBattler ldrb r1, [r1] lsls r1, 9 @@ -5832,7 +5832,7 @@ _081590BC: .align 2, 0 _081590F0: .4byte gBattlerPartyIndexes _081590F4: .4byte gEnemyParty -_081590F8: .4byte gUnknown_2022BC4 +_081590F8: .4byte gBattleBufferA _081590FC: .4byte gActiveBattler thumb_func_end sub_815907C @@ -5957,7 +5957,7 @@ _081591B8: .4byte gSprites _081591BC: .4byte gBattlerSpriteIds _081591C0: .4byte gActiveBattler _081591C4: - ldr r1, _081591F4 @ =gUnknown_2024005 + ldr r1, _081591F4 @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldrb r0, [r4] @@ -5971,7 +5971,7 @@ _081591C4: strh r1, [r0, 0x30] ldrb r0, [r4] bl DoHitAnimHealthboxEffect - ldr r1, _081591F8 @ =gUnknown_3004FE0 + ldr r1, _081591F8 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -5982,8 +5982,8 @@ _081591EE: pop {r0} bx r0 .align 2, 0 -_081591F4: .4byte gUnknown_2024005 -_081591F8: .4byte gUnknown_3004FE0 +_081591F4: .4byte gDoingBattleAnim +_081591F8: .4byte gBattlerControllerFuncs _081591FC: .4byte sub_8156F00 thumb_func_end sub_8159190 @@ -5998,7 +5998,7 @@ sub_8159200: @ 8159200 thumb_func_start sub_815920C sub_815920C: @ 815920C push {lr} - ldr r2, _08159234 @ =gUnknown_2022BC4 + ldr r2, _08159234 @ =gBattleBufferA ldr r0, _08159238 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -6015,14 +6015,14 @@ sub_815920C: @ 815920C pop {r0} bx r0 .align 2, 0 -_08159234: .4byte gUnknown_2022BC4 +_08159234: .4byte gBattleBufferA _08159238: .4byte gActiveBattler thumb_func_end sub_815920C thumb_func_start sub_815923C sub_815923C: @ 815923C push {lr} - ldr r2, _08159264 @ =gUnknown_2022BC4 + ldr r2, _08159264 @ =gBattleBufferA ldr r0, _08159268 @ =gActiveBattler ldrb r1, [r0] lsls r1, 9 @@ -6039,7 +6039,7 @@ sub_815923C: @ 815923C pop {r0} bx r0 .align 2, 0 -_08159264: .4byte gUnknown_2022BC4 +_08159264: .4byte gBattleBufferA _08159268: .4byte gActiveBattler thumb_func_end sub_815923C @@ -6094,14 +6094,14 @@ _081592CC: .4byte gEnemyParty thumb_func_start sub_81592D0 sub_81592D0: @ 81592D0 push {lr} - ldr r1, _081592F8 @ =gUnknown_2022BC4 + ldr r1, _081592F8 @ =gBattleBufferA ldr r0, _081592FC @ =gActiveBattler ldrb r0, [r0] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] - bl sub_80BC3A0 + bl HandleIntroSlide ldr r2, _08159300 @ =gIntroSlideFlags ldrh r0, [r2] movs r1, 0x1 @@ -6111,7 +6111,7 @@ sub_81592D0: @ 81592D0 pop {r0} bx r0 .align 2, 0 -_081592F8: .4byte gUnknown_2022BC4 +_081592F8: .4byte gBattleBufferA _081592FC: .4byte gActiveBattler _08159300: .4byte gIntroSlideFlags thumb_func_end sub_81592D0 @@ -6259,7 +6259,7 @@ _0815941C: movs r1, 0x1 orrs r0, r1 strb r0, [r2, 0x9] - ldr r1, _08159470 @ =gUnknown_3004FE0 + ldr r1, _08159470 @ =gBattlerControllerFuncs ldrb r0, [r7] lsls r0, 2 adds r0, r1 @@ -6282,7 +6282,7 @@ _08159460: .4byte gTasks _08159464: .4byte gBattleSpritesDataPtr _08159468: .4byte gUnknown_2024000 _0815946C: .4byte sub_80491B0 -_08159470: .4byte gUnknown_3004FE0 +_08159470: .4byte gBattlerControllerFuncs _08159474: .4byte nullsub_99 thumb_func_end sub_8159304 @@ -6306,7 +6306,7 @@ sub_8159478: @ 8159478 ldr r0, _081595C4 @ =gBattlerPartyIndexes lsls r2, r6, 1 adds r2, r0 - ldr r0, _081595C8 @ =gUnknown_2022BC4 + ldr r0, _081595C8 @ =gBattleBufferA lsls r1, r6, 9 adds r0, 0x1 adds r1, r0 @@ -6445,7 +6445,7 @@ sub_8159478: @ 8159478 .align 2, 0 _081595C0: .4byte gBattleSpritesDataPtr _081595C4: .4byte gBattlerPartyIndexes -_081595C8: .4byte gUnknown_2022BC4 +_081595C8: .4byte gBattleBufferA _081595CC: .4byte gPlayerParty _081595D0: .4byte sub_8033E3C _081595D4: .4byte gUnknown_3004FFC @@ -6481,7 +6481,7 @@ _08159610: ldrb r5, [r4] ldrh r0, [r1, 0x8] strb r0, [r4] - ldr r0, _08159650 @ =gUnknown_2022BC4 + ldr r0, _08159650 @ =gBattleBufferA ldrb r1, [r4] lsls r2, r1, 9 adds r0, 0x1 @@ -6493,7 +6493,7 @@ _08159610: strb r0, [r2] ldrb r0, [r4] bl sub_8159478 - ldr r1, _08159658 @ =gUnknown_3004FE0 + ldr r1, _08159658 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -6508,16 +6508,16 @@ _08159646: bx r0 .align 2, 0 _0815964C: .4byte gActiveBattler -_08159650: .4byte gUnknown_2022BC4 +_08159650: .4byte gBattleBufferA _08159654: .4byte gBattlerPartyIndexes -_08159658: .4byte gUnknown_3004FE0 +_08159658: .4byte gBattlerControllerFuncs _0815965C: .4byte sub_8156624 thumb_func_end sub_81595EC thumb_func_start sub_8159660 sub_8159660: @ 8159660 push {r4,r5,lr} - ldr r1, _08159688 @ =gUnknown_2022BC4 + ldr r1, _08159688 @ =gBattleBufferA ldr r0, _0815968C @ =gActiveBattler ldrb r2, [r0] lsls r0, r2, 9 @@ -6534,7 +6534,7 @@ sub_8159660: @ 8159660 bl PlayerPartnerBufferExecCompleted b _081596CE .align 2, 0 -_08159688: .4byte gUnknown_2022BC4 +_08159688: .4byte gBattleBufferA _0815968C: .4byte gActiveBattler _08159690: ldr r0, _081596D4 @ =gBattleSpritesDataPtr @@ -6615,7 +6615,7 @@ sub_8159714: @ 8159714 sub_8159720: @ 8159720 push {r4-r6,lr} sub sp, 0x4 - ldr r5, _08159758 @ =gUnknown_2022BC4 + ldr r5, _08159758 @ =gBattleBufferA ldr r6, _0815975C @ =gActiveBattler ldrb r2, [r6] lsls r1, r2, 9 @@ -6640,10 +6640,10 @@ sub_8159720: @ 8159720 bl PlayerPartnerBufferExecCompleted b _0815976C .align 2, 0 -_08159758: .4byte gUnknown_2022BC4 +_08159758: .4byte gBattleBufferA _0815975C: .4byte gActiveBattler _08159760: - ldr r0, _08159774 @ =gUnknown_3004FE0 + ldr r0, _08159774 @ =gBattlerControllerFuncs ldrb r1, [r6] lsls r1, 2 adds r1, r0 @@ -6655,14 +6655,14 @@ _0815976C: pop {r0} bx r0 .align 2, 0 -_08159774: .4byte gUnknown_3004FE0 +_08159774: .4byte gBattlerControllerFuncs _08159778: .4byte sub_8157024 thumb_func_end sub_8159720 thumb_func_start sub_815977C sub_815977C: @ 815977C push {r4,lr} - ldr r1, _081597B0 @ =gUnknown_2022BC4 + ldr r1, _081597B0 @ =gBattleBufferA ldr r4, _081597B4 @ =gActiveBattler ldrb r2, [r4] lsls r0, r2, 9 @@ -6685,7 +6685,7 @@ _081597A4: pop {r0} bx r0 .align 2, 0 -_081597B0: .4byte gUnknown_2022BC4 +_081597B0: .4byte gBattleBufferA _081597B4: .4byte gActiveBattler thumb_func_end sub_815977C @@ -6701,7 +6701,7 @@ sub_81597B8: @ 81597B8 sub_81597C4: @ 81597C4 push {r4,lr} ldr r2, _08159808 @ =gBattleOutcome - ldr r1, _0815980C @ =gUnknown_2022BC4 + ldr r1, _0815980C @ =gBattleBufferA ldr r4, _08159810 @ =gActiveBattler ldrb r0, [r4] lsls r0, 9 @@ -6720,7 +6720,7 @@ sub_81597C4: @ 81597C4 ands r0, r1 cmp r0, 0x2 bne _08159800 - ldr r0, _08159818 @ =gUnknown_3004FE0 + ldr r0, _08159818 @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -6732,10 +6732,10 @@ _08159800: bx r0 .align 2, 0 _08159808: .4byte gBattleOutcome -_0815980C: .4byte gUnknown_2022BC4 +_0815980C: .4byte gBattleBufferA _08159810: .4byte gActiveBattler _08159814: .4byte gBattleTypeFlags -_08159818: .4byte gUnknown_3004FE0 +_08159818: .4byte gBattlerControllerFuncs _0815981C: .4byte sub_8156254 thumb_func_end sub_81597C4 @@ -6875,7 +6875,7 @@ _081598F0: _08159924: .4byte gUnknown_3005EE0 _08159928: .4byte gActiveBattler _0815992C: - ldr r5, _0815998C @ =gUnknown_2023FF8 + ldr r5, _0815998C @ =gActionSelectionCursor adds r0, r2, r5 ldrb r0, [r0] ldrb r2, [r3] @@ -6922,7 +6922,7 @@ _08159984: pop {r0} bx r0 .align 2, 0 -_0815998C: .4byte gUnknown_2023FF8 +_0815998C: .4byte gActionSelectionCursor _08159990: .4byte gUnknown_3005EE0 _08159994: .4byte gActiveBattler thumb_func_end sub_8159824 @@ -7116,7 +7116,7 @@ _08159B04: ldr r2, [r0, 0x4] cmp r2, 0 beq _08159B6C - ldr r1, _08159B64 @ =gUnknown_3004FE0 + ldr r1, _08159B64 @ =gBattlerControllerFuncs ldrb r0, [r4] lsls r0, 2 adds r0, r1 @@ -7151,7 +7151,7 @@ _08159B54: .4byte gUnknown_8479198 _08159B58: .4byte gBattleStruct _08159B5C: .4byte gActiveBattler _08159B60: .4byte gUnknown_2022BC6 -_08159B64: .4byte gUnknown_3004FE0 +_08159B64: .4byte gBattlerControllerFuncs _08159B68: .4byte gUnknown_3005EE0 _08159B6C: adds r0, r1, 0x1 @@ -7174,7 +7174,7 @@ sub_8159B78: @ 8159B78 ldr r1, [r0] movs r0, 0 strb r0, [r1, 0x2] - ldr r1, _08159BA0 @ =gUnknown_3004FE0 + ldr r1, _08159BA0 @ =gBattlerControllerFuncs ldrb r0, [r2] lsls r0, 2 adds r0, r1 @@ -7184,7 +7184,7 @@ sub_8159B78: @ 8159B78 .align 2, 0 _08159B98: .4byte gUnknown_3005EE0 _08159B9C: .4byte gActiveBattler -_08159BA0: .4byte gUnknown_3004FE0 +_08159BA0: .4byte gBattlerControllerFuncs _08159BA4: .4byte sub_81560DC thumb_func_end sub_8159B78 @@ -7269,7 +7269,7 @@ _08159C44: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08159C60 @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _08159C94 .align 2, 0 _08159C5C: .4byte gBattle_BG0_Y @@ -7470,7 +7470,7 @@ _08159DF4: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08159E08 @ =gDisplayedStringBattle movs r1, 0x18 - bl sub_80D87BC + bl BattlePutTextOnWindow b _08159E84 .align 2, 0 _08159E08: .4byte gDisplayedStringBattle diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s deleted file mode 100644 index 634ca455d..000000000 --- a/asm/battle_controller_safari.s +++ /dev/null @@ -1,1534 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_79 -nullsub_79: @ 80DD534 - bx lr - thumb_func_end nullsub_79 - - thumb_func_start sub_80DD538 -sub_80DD538: @ 80DD538 - ldr r1, _080DD548 @ =gUnknown_3004FE0 - ldr r0, _080DD54C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DD550 @ =SafariBufferRunCommand - str r1, [r0] - bx lr - .align 2, 0 -_080DD548: .4byte gUnknown_3004FE0 -_080DD54C: .4byte gActiveBattler -_080DD550: .4byte SafariBufferRunCommand - thumb_func_end sub_80DD538 - - thumb_func_start SafariBufferRunCommand -SafariBufferRunCommand: @ 80DD554 - push {lr} - ldr r2, _080DD588 @ =gUnknown_2023BC8 - ldr r1, _080DD58C @ =gBitTable - ldr r0, _080DD590 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080DD5A0 - ldr r0, _080DD594 @ =gUnknown_2022BC4 - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _080DD59C - ldr r0, _080DD598 @ =gUnknown_83FED00 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _080DD5A0 - .align 2, 0 -_080DD588: .4byte gUnknown_2023BC8 -_080DD58C: .4byte gBitTable -_080DD590: .4byte gActiveBattler -_080DD594: .4byte gUnknown_2022BC4 -_080DD598: .4byte gUnknown_83FED00 -_080DD59C: - bl SafariBufferExecCompleted -_080DD5A0: - pop {r0} - bx r0 - thumb_func_end SafariBufferRunCommand - - thumb_func_start HandleInputChooseAction_0 -HandleInputChooseAction_0: @ 80DD5A4 - push {r4,r5,lr} - ldr r0, _080DD5D4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080DD612 - movs r0, 0x5 - bl PlaySE - ldr r1, _080DD5D8 @ =gUnknown_2023FF8 - ldr r0, _080DD5DC @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080DD5F0 - cmp r0, 0x1 - bgt _080DD5E0 - cmp r0, 0 - beq _080DD5EA - b _080DD60C - .align 2, 0 -_080DD5D4: .4byte gMain -_080DD5D8: .4byte gUnknown_2023FF8 -_080DD5DC: .4byte gActiveBattler -_080DD5E0: - cmp r0, 0x2 - beq _080DD5F6 - cmp r0, 0x3 - beq _080DD602 - b _080DD60C -_080DD5EA: - movs r0, 0x1 - movs r1, 0x5 - b _080DD5FA -_080DD5F0: - movs r0, 0x1 - movs r1, 0x6 - b _080DD5FA -_080DD5F6: - movs r0, 0x1 - movs r1, 0x7 -_080DD5FA: - movs r2, 0 - bl EmitTwoReturnValues - b _080DD60C -_080DD602: - movs r0, 0x1 - movs r1, 0x8 - movs r2, 0 - bl EmitTwoReturnValues -_080DD60C: - bl SafariBufferExecCompleted - b _080DD71A -_080DD612: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DD650 - ldr r5, _080DD648 @ =gUnknown_2023FF8 - ldr r4, _080DD64C @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080DD71A - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080DD6BE - .align 2, 0 -_080DD648: .4byte gUnknown_2023FF8 -_080DD64C: .4byte gActiveBattler -_080DD650: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DD68C - ldr r5, _080DD684 @ =gUnknown_2023FF8 - ldr r4, _080DD688 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080DD71A - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080DD6BE - .align 2, 0 -_080DD684: .4byte gUnknown_2023FF8 -_080DD688: .4byte gActiveBattler -_080DD68C: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080DD6D8 - ldr r5, _080DD6D0 @ =gUnknown_2023FF8 - ldr r4, _080DD6D4 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DD71A - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_080DD6BE: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - b _080DD71A - .align 2, 0 -_080DD6D0: .4byte gUnknown_2023FF8 -_080DD6D4: .4byte gActiveBattler -_080DD6D8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080DD71A - ldr r5, _080DD720 @ =gUnknown_2023FF8 - ldr r4, _080DD724 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080DD71A - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt -_080DD71A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD720: .4byte gUnknown_2023FF8 -_080DD724: .4byte gActiveBattler - thumb_func_end HandleInputChooseAction_0 - - thumb_func_start sub_80DD728 -sub_80DD728: @ 80DD728 - push {lr} - ldr r2, _080DD750 @ =gSprites - ldr r1, _080DD754 @ =gBattlerSpriteIds - ldr r0, _080DD758 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080DD75C @ =SpriteCallbackDummy - cmp r1, r0 - bne _080DD74C - bl SafariBufferExecCompleted -_080DD74C: - pop {r0} - bx r0 - .align 2, 0 -_080DD750: .4byte gSprites -_080DD754: .4byte gBattlerSpriteIds -_080DD758: .4byte gActiveBattler -_080DD75C: .4byte SpriteCallbackDummy - thumb_func_end sub_80DD728 - - thumb_func_start CompleteOnInactiveTextPrinter_3 -CompleteOnInactiveTextPrinter_3: @ 80DD760 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080DD772 - bl SafariBufferExecCompleted -_080DD772: - pop {r0} - bx r0 - thumb_func_end CompleteOnInactiveTextPrinter_3 - - thumb_func_start sub_80DD778 -sub_80DD778: @ 80DD778 - push {lr} - ldr r2, _080DD7A0 @ =gSprites - ldr r1, _080DD7A4 @ =gHealthboxSpriteIds - ldr r0, _080DD7A8 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080DD7AC @ =SpriteCallbackDummy - cmp r1, r0 - bne _080DD79C - bl SafariBufferExecCompleted -_080DD79C: - pop {r0} - bx r0 - .align 2, 0 -_080DD7A0: .4byte gSprites -_080DD7A4: .4byte gHealthboxSpriteIds -_080DD7A8: .4byte gActiveBattler -_080DD7AC: .4byte SpriteCallbackDummy - thumb_func_end sub_80DD778 - - thumb_func_start sub_80DD7B0 -sub_80DD7B0: @ 80DD7B0 - push {lr} - ldr r0, _080DD7E0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080DD7DA - ldr r2, _080DD7E4 @ =gMain - ldr r0, _080DD7E8 @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _080DD7EC @ =gUnknown_3004F80 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_080DD7DA: - pop {r0} - bx r0 - .align 2, 0 -_080DD7E0: .4byte gPaletteFade -_080DD7E4: .4byte gMain -_080DD7E8: .4byte 0x00000439 -_080DD7EC: .4byte gUnknown_3004F80 - thumb_func_end sub_80DD7B0 - - thumb_func_start CompleteOnSpecialAnimDone_0 -CompleteOnSpecialAnimDone_0: @ 80DD7F0 - push {lr} - ldr r0, _080DD820 @ =gUnknown_2024005 - ldrb r0, [r0] - cmp r0, 0 - beq _080DD816 - ldr r0, _080DD824 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080DD828 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080DD81A -_080DD816: - bl SafariBufferExecCompleted -_080DD81A: - pop {r0} - bx r0 - .align 2, 0 -_080DD820: .4byte gUnknown_2024005 -_080DD824: .4byte gBattleSpritesDataPtr -_080DD828: .4byte gActiveBattler - thumb_func_end CompleteOnSpecialAnimDone_0 - - thumb_func_start sub_80DD82C -sub_80DD82C: @ 80DD82C - push {lr} - ldr r0, _080DD84C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080DD848 - ldr r1, _080DD850 @ =gUnknown_3004FE0 - ldr r0, _080DD854 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DD858 @ =CompleteWhenChosePokeblock - str r1, [r0] -_080DD848: - pop {r0} - bx r0 - .align 2, 0 -_080DD84C: .4byte gPaletteFade -_080DD850: .4byte gUnknown_3004FE0 -_080DD854: .4byte gActiveBattler -_080DD858: .4byte CompleteWhenChosePokeblock - thumb_func_end sub_80DD82C - - thumb_func_start CompleteWhenChosePokeblock -CompleteWhenChosePokeblock: @ 80DD85C - push {lr} - ldr r0, _080DD888 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080DD88C @ =sub_8011100 - cmp r1, r0 - bne _080DD882 - ldr r0, _080DD890 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080DD882 - ldr r0, _080DD894 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl EmitOneReturnValue - bl SafariBufferExecCompleted -_080DD882: - pop {r0} - bx r0 - .align 2, 0 -_080DD888: .4byte gMain -_080DD88C: .4byte sub_8011100 -_080DD890: .4byte gPaletteFade -_080DD894: .4byte gSpecialVar_ItemId - thumb_func_end CompleteWhenChosePokeblock - - thumb_func_start CompleteOnFinishedBattleAnimation_3 -CompleteOnFinishedBattleAnimation_3: @ 80DD898 - push {lr} - ldr r0, _080DD8C0 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080DD8C4 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080DD8BA - bl SafariBufferExecCompleted -_080DD8BA: - pop {r0} - bx r0 - .align 2, 0 -_080DD8C0: .4byte gBattleSpritesDataPtr -_080DD8C4: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation_3 - - thumb_func_start SafariBufferExecCompleted -SafariBufferExecCompleted: @ 80DD8C8 - push {r4,lr} - sub sp, 0x4 - ldr r1, _080DD908 @ =gUnknown_3004FE0 - ldr r4, _080DD90C @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DD910 @ =SafariBufferRunCommand - str r1, [r0] - ldr r0, _080DD914 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080DD91C - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _080DD918 @ =gUnknown_2022BC4 - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _080DD92E - .align 2, 0 -_080DD908: .4byte gUnknown_3004FE0 -_080DD90C: .4byte gActiveBattler -_080DD910: .4byte SafariBufferRunCommand -_080DD914: .4byte gBattleTypeFlags -_080DD918: .4byte gUnknown_2022BC4 -_080DD91C: - ldr r2, _080DD938 @ =gUnknown_2023BC8 - ldr r1, _080DD93C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_080DD92E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DD938: .4byte gUnknown_2023BC8 -_080DD93C: .4byte gBitTable - thumb_func_end SafariBufferExecCompleted - - thumb_func_start CompleteOnFinishedStatusAnimation_3 -CompleteOnFinishedStatusAnimation_3: @ 80DD940 - push {lr} - ldr r0, _080DD968 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080DD96C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080DD962 - bl SafariBufferExecCompleted -_080DD962: - pop {r0} - bx r0 - .align 2, 0 -_080DD968: .4byte gBattleSpritesDataPtr -_080DD96C: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation_3 - - thumb_func_start sub_80DD970 -sub_80DD970: @ 80DD970 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD970 - - thumb_func_start sub_80DD97C -sub_80DD97C: @ 80DD97C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD97C - - thumb_func_start sub_80DD988 -sub_80DD988: @ 80DD988 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD988 - - thumb_func_start sub_80DD994 -sub_80DD994: @ 80DD994 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD994 - - thumb_func_start sub_80DD9A0 -sub_80DD9A0: @ 80DD9A0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD9A0 - - thumb_func_start sub_80DD9AC -sub_80DD9AC: @ 80DD9AC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD9AC - - thumb_func_start sub_80DD9B8 -sub_80DD9B8: @ 80DD9B8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DD9B8 - - thumb_func_start SafariHandleDrawTrainerPic -SafariHandleDrawTrainerPic: @ 80DD9C4 - push {r4-r6,lr} - ldr r4, _080DDA7C @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrb r0, [r0, 0x8] - ldr r5, _080DDA80 @ =gActiveBattler - ldrb r1, [r5] - bl sub_8034750 - ldr r0, [r4] - ldrb r6, [r0, 0x8] - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080DDA84 @ =gMultiuseSpriteTemplate - ldr r2, _080DDA88 @ =gUnknown_8239F8C - ldr r1, [r4] - ldrb r1, [r1, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r6, _080DDA8C @ =gBattlerSpriteIds - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _080DDA90 @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080DDA94 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080DDA98 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080DDA9C @ =gUnknown_3004FE0 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDAA0 @ =sub_80DD728 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DDA7C: .4byte gSaveBlock2Ptr -_080DDA80: .4byte gActiveBattler -_080DDA84: .4byte gMultiuseSpriteTemplate -_080DDA88: .4byte gUnknown_8239F8C -_080DDA8C: .4byte gBattlerSpriteIds -_080DDA90: .4byte gSprites -_080DDA94: .4byte 0x0000fffe -_080DDA98: .4byte sub_8033EEC -_080DDA9C: .4byte gUnknown_3004FE0 -_080DDAA0: .4byte sub_80DD728 - thumb_func_end SafariHandleDrawTrainerPic - - thumb_func_start sub_80DDAA4 -sub_80DDAA4: @ 80DDAA4 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDAA4 - - thumb_func_start sub_80DDAB0 -sub_80DDAB0: @ 80DDAB0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDAB0 - - thumb_func_start sub_80DDABC -sub_80DDABC: @ 80DDABC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDABC - - thumb_func_start sub_80DDAC8 -sub_80DDAC8: @ 80DDAC8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDAC8 - - thumb_func_start sub_80DDAD4 -sub_80DDAD4: @ 80DDAD4 - push {r4,r5,lr} - ldr r0, _080DDB14 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _080DDB18 @ =gUnknown_2024005 - movs r0, 0x1 - strb r0, [r1] - ldr r5, _080DDB1C @ =gActiveBattler - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080DDB20 @ =gUnknown_3004FE0 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDB24 @ =CompleteOnSpecialAnimDone_0 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DDB14: .4byte gBattleSpritesDataPtr -_080DDB18: .4byte gUnknown_2024005 -_080DDB1C: .4byte gActiveBattler -_080DDB20: .4byte gUnknown_3004FE0 -_080DDB24: .4byte CompleteOnSpecialAnimDone_0 - thumb_func_end sub_80DDAD4 - - thumb_func_start sub_80DDB28 -sub_80DDB28: @ 80DDB28 - push {r4,r5,lr} - ldr r1, _080DDB70 @ =gUnknown_2022BC4 - ldr r5, _080DDB74 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _080DDB78 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strb r1, [r0, 0x8] - ldr r1, _080DDB7C @ =gUnknown_2024005 - movs r0, 0x1 - strb r0, [r1] - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080DDB80 @ =gUnknown_3004FE0 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDB84 @ =CompleteOnSpecialAnimDone_0 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DDB70: .4byte gUnknown_2022BC4 -_080DDB74: .4byte gActiveBattler -_080DDB78: .4byte gBattleSpritesDataPtr -_080DDB7C: .4byte gUnknown_2024005 -_080DDB80: .4byte gUnknown_3004FE0 -_080DDB84: .4byte CompleteOnSpecialAnimDone_0 - thumb_func_end sub_80DDB28 - - thumb_func_start sub_80DDB88 -sub_80DDB88: @ 80DDB88 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDB88 - - thumb_func_start sub_80DDB94 -sub_80DDB94: @ 80DDB94 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDB94 - - thumb_func_start sub_80DDBA0 -sub_80DDBA0: @ 80DDBA0 - push {r4,lr} - ldr r0, _080DDBD4 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080DDBD8 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080DDBDC @ =gActiveBattler - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _080DDBE0 @ =gUnknown_2022BC6 - adds r4, r0 - ldrh r0, [r4] - bl sub_80D7274 - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _080DDBE8 - ldr r0, _080DDBE4 @ =gDisplayedStringBattle - movs r1, 0x40 - bl sub_80D87BC - b _080DDBF0 - .align 2, 0 -_080DDBD4: .4byte gBattle_BG0_X -_080DDBD8: .4byte gBattle_BG0_Y -_080DDBDC: .4byte gActiveBattler -_080DDBE0: .4byte gUnknown_2022BC6 -_080DDBE4: .4byte gDisplayedStringBattle -_080DDBE8: - ldr r0, _080DDC04 @ =gDisplayedStringBattle - movs r1, 0 - bl sub_80D87BC -_080DDBF0: - ldr r1, _080DDC08 @ =gUnknown_3004FE0 - ldr r0, _080DDC0C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDC10 @ =CompleteOnInactiveTextPrinter_3 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDC04: .4byte gDisplayedStringBattle -_080DDC08: .4byte gUnknown_3004FE0 -_080DDC0C: .4byte gActiveBattler -_080DDC10: .4byte CompleteOnInactiveTextPrinter_3 - thumb_func_end sub_80DDBA0 - - thumb_func_start sub_80DDC14 -sub_80DDC14: @ 80DDC14 - push {lr} - ldr r0, _080DDC2C @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080DDC30 - bl sub_80DDBA0 - b _080DDC34 - .align 2, 0 -_080DDC2C: .4byte gActiveBattler -_080DDC30: - bl SafariBufferExecCompleted -_080DDC34: - pop {r0} - bx r0 - thumb_func_end sub_80DDC14 - - thumb_func_start sub_80DDC38 -sub_80DDC38: @ 80DDC38 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080DDC5E - ldr r0, _080DDC64 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _080DDC68 @ =gBattle_BG0_Y - movs r0, 0xA0 - strh r0, [r1] - ldr r1, _080DDC6C @ =gUnknown_3004FE0 - ldr r0, _080DDC70 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDC74 @ =HandleInputChooseAction_0 - str r1, [r0] -_080DDC5E: - pop {r0} - bx r0 - .align 2, 0 -_080DDC64: .4byte gBattle_BG0_X -_080DDC68: .4byte gBattle_BG0_Y -_080DDC6C: .4byte gUnknown_3004FE0 -_080DDC70: .4byte gActiveBattler -_080DDC74: .4byte HandleInputChooseAction_0 - thumb_func_end sub_80DDC38 - - thumb_func_start sub_80DDC78 -sub_80DDC78: @ 80DDC78 - push {r4,lr} - ldr r1, _080DDCCC @ =gUnknown_3004FE0 - ldr r0, _080DDCD0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDCD4 @ =sub_80DDC38 - str r1, [r0] - ldr r0, _080DDCD8 @ =gUnknown_83FDA4C - movs r1, 0 - bl sub_80D87BC - ldr r0, _080DDCDC @ =gUnknown_83FE747 - movs r1, 0x2 - bl sub_80D87BC - movs r4, 0 -_080DDC9A: - lsls r0, r4, 24 - lsrs r0, 24 - bl ActionSelectionDestroyCursorAt - adds r4, 0x1 - cmp r4, 0x3 - ble _080DDC9A - ldr r1, _080DDCE0 @ =gUnknown_2023FF8 - ldr r0, _080DDCD0 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _080DDCE4 @ =gUnknown_83FE6E6 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080DDCE8 @ =gDisplayedStringBattle - movs r1, 0x1 - bl sub_80D87BC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDCCC: .4byte gUnknown_3004FE0 -_080DDCD0: .4byte gActiveBattler -_080DDCD4: .4byte sub_80DDC38 -_080DDCD8: .4byte gUnknown_83FDA4C -_080DDCDC: .4byte gUnknown_83FE747 -_080DDCE0: .4byte gUnknown_2023FF8 -_080DDCE4: .4byte gUnknown_83FE6E6 -_080DDCE8: .4byte gDisplayedStringBattle - thumb_func_end sub_80DDC78 - - thumb_func_start sub_80DDCEC -sub_80DDCEC: @ 80DDCEC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDCEC - - thumb_func_start sub_80DDCF8 -sub_80DDCF8: @ 80DDCF8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDCF8 - - thumb_func_start sub_80DDD04 -sub_80DDD04: @ 80DDD04 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080DDD34 @ =gUnknown_3004FE0 - ldr r2, _080DDD38 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDD3C @ =sub_80DD82C - str r1, [r0] - ldr r1, _080DDD40 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080DDD34: .4byte gUnknown_3004FE0 -_080DDD38: .4byte gActiveBattler -_080DDD3C: .4byte sub_80DD82C -_080DDD40: .4byte gBattlerInMenuId - thumb_func_end sub_80DDD04 - - thumb_func_start sub_80DDD44 -sub_80DDD44: @ 80DDD44 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDD44 - - thumb_func_start sub_80DDD50 -sub_80DDD50: @ 80DDD50 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDD50 - - thumb_func_start sub_80DDD5C -sub_80DDD5C: @ 80DDD5C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDD5C - - thumb_func_start sub_80DDD68 -sub_80DDD68: @ 80DDD68 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDD68 - - thumb_func_start SafariHandleStatusIconUpdate -SafariHandleStatusIconUpdate: @ 80DDD74 - push {lr} - ldr r0, _080DDDA0 @ =gHealthboxSpriteIds - ldr r1, _080DDDA4 @ =gActiveBattler - ldrb r1, [r1] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _080DDDA8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080DDDAC @ =gPlayerParty - adds r1, r2 - movs r2, 0xB - bl UpdateHealthboxAttribute - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080DDDA0: .4byte gHealthboxSpriteIds -_080DDDA4: .4byte gActiveBattler -_080DDDA8: .4byte gBattlerPartyIndexes -_080DDDAC: .4byte gPlayerParty - thumb_func_end SafariHandleStatusIconUpdate - - thumb_func_start sub_80DDDB0 -sub_80DDDB0: @ 80DDDB0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDB0 - - thumb_func_start sub_80DDDBC -sub_80DDDBC: @ 80DDDBC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDBC - - thumb_func_start sub_80DDDC8 -sub_80DDDC8: @ 80DDDC8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDC8 - - thumb_func_start sub_80DDDD4 -sub_80DDDD4: @ 80DDDD4 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDD4 - - thumb_func_start sub_80DDDE0 -sub_80DDDE0: @ 80DDDE0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDE0 - - thumb_func_start sub_80DDDEC -sub_80DDDEC: @ 80DDDEC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDEC - - thumb_func_start sub_80DDDF8 -sub_80DDDF8: @ 80DDDF8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDDF8 - - thumb_func_start sub_80DDE04 -sub_80DDE04: @ 80DDE04 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE04 - - thumb_func_start sub_80DDE10 -sub_80DDE10: @ 80DDE10 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE10 - - thumb_func_start sub_80DDE1C -sub_80DDE1C: @ 80DDE1C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE1C - - thumb_func_start sub_80DDE28 -sub_80DDE28: @ 80DDE28 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE28 - - thumb_func_start sub_80DDE34 -sub_80DDE34: @ 80DDE34 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE34 - - thumb_func_start sub_80DDE40 -sub_80DDE40: @ 80DDE40 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE40 - - thumb_func_start sub_80DDE4C -sub_80DDE4C: @ 80DDE4C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE4C - - thumb_func_start sub_80DDE58 -sub_80DDE58: @ 80DDE58 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE58 - - thumb_func_start sub_80DDE64 -sub_80DDE64: @ 80DDE64 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDE64 - - thumb_func_start SafariHandlePlaySE -SafariHandlePlaySE: @ 80DDE70 - push {r4,lr} - ldr r4, _080DDEAC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _080DDE84 - movs r3, 0xC0 -_080DDE84: - ldr r2, _080DDEB0 @ =gUnknown_2022BC4 - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl SafariBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DDEAC: .4byte gActiveBattler -_080DDEB0: .4byte gUnknown_2022BC4 - thumb_func_end SafariHandlePlaySE - - thumb_func_start SafariHandlecmd44 -SafariHandlecmd44: @ 80DDEB4 - push {lr} - ldr r2, _080DDEDC @ =gUnknown_2022BC4 - ldr r0, _080DDEE0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080DDEDC: .4byte gUnknown_2022BC4 -_080DDEE0: .4byte gActiveBattler - thumb_func_end SafariHandlecmd44 - - thumb_func_start SafariHandleFaintingCry -SafariHandleFaintingCry: @ 80DDEE4 - push {lr} - ldr r1, _080DDF14 @ =gBattlerPartyIndexes - ldr r0, _080DDF18 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080DDF1C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl PlayCry1 - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080DDF14: .4byte gBattlerPartyIndexes -_080DDF18: .4byte gActiveBattler -_080DDF1C: .4byte gPlayerParty - thumb_func_end SafariHandleFaintingCry - - thumb_func_start SafariHandleIntroSlide -SafariHandleIntroSlide: @ 80DDF20 - push {lr} - ldr r1, _080DDF48 @ =gUnknown_2022BC4 - ldr r0, _080DDF4C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl sub_80BC3A0 - ldr r2, _080DDF50 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl SafariBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080DDF48: .4byte gUnknown_2022BC4 -_080DDF4C: .4byte gActiveBattler -_080DDF50: .4byte gIntroSlideFlags - thumb_func_end SafariHandleIntroSlide - - thumb_func_start SafariHandleIntroTrainerBallThrow -SafariHandleIntroTrainerBallThrow: @ 80DDF54 - push {r4,r5,lr} - ldr r5, _080DDF98 @ =gHealthboxSpriteIds - ldr r4, _080DDF9C @ =gActiveBattler - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _080DDFA0 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080DDFA4 @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r1, _080DDFA8 @ =gUnknown_3004FE0 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080DDFAC @ =sub_80DD778 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DDF98: .4byte gHealthboxSpriteIds -_080DDF9C: .4byte gActiveBattler -_080DDFA0: .4byte gBattlerPartyIndexes -_080DDFA4: .4byte gPlayerParty -_080DDFA8: .4byte gUnknown_3004FE0 -_080DDFAC: .4byte sub_80DD778 - thumb_func_end SafariHandleIntroTrainerBallThrow - - thumb_func_start sub_80DDFB0 -sub_80DDFB0: @ 80DDFB0 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDFB0 - - thumb_func_start sub_80DDFBC -sub_80DDFBC: @ 80DDFBC - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDFBC - - thumb_func_start sub_80DDFC8 -sub_80DDFC8: @ 80DDFC8 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDFC8 - - thumb_func_start sub_80DDFD4 -sub_80DDFD4: @ 80DDFD4 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DDFD4 - - thumb_func_start SafariHandleBattleAnimation -SafariHandleBattleAnimation: @ 80DDFE0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _080DE018 @ =gUnknown_2022BC4 - ldr r6, _080DE01C @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _080DE020 - bl SafariBufferExecCompleted - b _080DE02C - .align 2, 0 -_080DE018: .4byte gUnknown_2022BC4 -_080DE01C: .4byte gActiveBattler -_080DE020: - ldr r0, _080DE034 @ =gUnknown_3004FE0 - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080DE038 @ =CompleteOnFinishedBattleAnimation_3 - str r0, [r1] -_080DE02C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DE034: .4byte gUnknown_3004FE0 -_080DE038: .4byte CompleteOnFinishedBattleAnimation_3 - thumb_func_end SafariHandleBattleAnimation - - thumb_func_start sub_80DE03C -sub_80DE03C: @ 80DE03C - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DE03C - - thumb_func_start sub_80DE048 -sub_80DE048: @ 80DE048 - push {lr} - bl SafariBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80DE048 - - thumb_func_start SafariHandleCmd55 -SafariHandleCmd55: @ 80DE054 - push {r4,lr} - ldr r2, _080DE098 @ =gBattleOutcome - ldr r1, _080DE09C @ =gUnknown_2022BC4 - ldr r4, _080DE0A0 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl SafariBufferExecCompleted - ldr r0, _080DE0A4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _080DE090 - ldr r0, _080DE0A8 @ =gUnknown_3004FE0 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080DE0AC @ =sub_80DD7B0 - str r0, [r1] -_080DE090: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE098: .4byte gBattleOutcome -_080DE09C: .4byte gUnknown_2022BC4 -_080DE0A0: .4byte gActiveBattler -_080DE0A4: .4byte gBattleTypeFlags -_080DE0A8: .4byte gUnknown_3004FE0 -_080DE0AC: .4byte sub_80DD7B0 - thumb_func_end SafariHandleCmd55 - - thumb_func_start nullsub_80 -nullsub_80: @ 80DE0B0 - bx lr - thumb_func_end nullsub_80 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s index cf53430ad..d1de3bb17 100644 --- a/asm/battle_controllers.s +++ b/asm/battle_controllers.s @@ -52,11 +52,11 @@ sub_800D278: @ 800D278 ldr r0, _0800D2EC @ =nullsub_13 mov r8, r0 movs r3, 0 - ldr r1, _0800D2F0 @ =gUnknown_3004FE0 + ldr r1, _0800D2F0 @ =gBattlerControllerFuncs mov r12, r1 ldr r7, _0800D2F4 @ =gBattlerPositions movs r6, 0xFF - ldr r5, _0800D2F8 @ =gUnknown_2023FF8 + ldr r5, _0800D2F8 @ =gActionSelectionCursor ldr r4, _0800D2FC @ =gUnknown_2023FFC _0800D298: mov r0, r8 @@ -77,7 +77,7 @@ _0800D298: cmp r2, 0x3 ble _0800D298 bl sub_800D230 - ldr r0, _0800D300 @ =gUnknown_2023BC8 + ldr r0, _0800D300 @ =gBattleControllerExecFlags movs r4, 0 str r4, [r0] bl ClearBattleAnimationVars @@ -96,11 +96,11 @@ _0800D298: _0800D2E4: .4byte gUnknown_3004F84 _0800D2E8: .4byte nullsub_12 _0800D2EC: .4byte nullsub_13 -_0800D2F0: .4byte gUnknown_3004FE0 +_0800D2F0: .4byte gBattlerControllerFuncs _0800D2F4: .4byte gBattlerPositions -_0800D2F8: .4byte gUnknown_2023FF8 +_0800D2F8: .4byte gActionSelectionCursor _0800D2FC: .4byte gUnknown_2023FFC -_0800D300: .4byte gUnknown_2023BC8 +_0800D300: .4byte gBattleControllerExecFlags _0800D304: .4byte gUnknown_2022B54 _0800D308: .4byte gUnknown_2023DDC thumb_func_end sub_800D278 @@ -170,7 +170,7 @@ sub_800D364: @ 800D364 ands r0, r2 cmp r0, 0 beq _0800D3B4 - ldr r2, _0800D3A4 @ =gUnknown_3004FE0 + ldr r2, _0800D3A4 @ =gBattlerControllerFuncs ldr r1, _0800D3A8 @ =sub_81560A4 str r1, [r2] ldr r0, _0800D3AC @ =gBattlerPositions @@ -184,7 +184,7 @@ sub_800D364: @ 800D364 _0800D398: .4byte gBattleTypeFlags _0800D39C: .4byte gUnknown_3004F84 _0800D3A0: .4byte sub_80123C0 -_0800D3A4: .4byte gUnknown_3004FE0 +_0800D3A4: .4byte gBattlerControllerFuncs _0800D3A8: .4byte sub_81560A4 _0800D3AC: .4byte gBattlerPositions _0800D3B0: .4byte gBattlersCount @@ -193,26 +193,26 @@ _0800D3B4: ands r0, r2 cmp r0, 0 beq _0800D3CC - ldr r1, _0800D3C4 @ =gUnknown_3004FE0 - ldr r0, _0800D3C8 @ =sub_80DD538 + ldr r1, _0800D3C4 @ =gBattlerControllerFuncs + ldr r0, _0800D3C8 @ =SetControllerToSafari b _0800D3E8 .align 2, 0 -_0800D3C4: .4byte gUnknown_3004FE0 -_0800D3C8: .4byte sub_80DD538 +_0800D3C4: .4byte gBattlerControllerFuncs +_0800D3C8: .4byte SetControllerToSafari _0800D3CC: movs r0, 0x84 lsls r0, 2 ands r2, r0 cmp r2, 0 beq _0800D3E4 - ldr r1, _0800D3DC @ =gUnknown_3004FE0 + ldr r1, _0800D3DC @ =gBattlerControllerFuncs ldr r0, _0800D3E0 @ =sub_80E75B0 b _0800D3E8 .align 2, 0 -_0800D3DC: .4byte gUnknown_3004FE0 +_0800D3DC: .4byte gBattlerControllerFuncs _0800D3E0: .4byte sub_80E75B0 _0800D3E4: - ldr r1, _0800D400 @ =gUnknown_3004FE0 + ldr r1, _0800D400 @ =gBattlerControllerFuncs ldr r0, _0800D404 @ =SetBankFuncToPlayerBufferRunCommand _0800D3E8: str r0, [r1] @@ -228,7 +228,7 @@ _0800D3E8: movs r0, 0x2 b _0800D478 .align 2, 0 -_0800D400: .4byte gUnknown_3004FE0 +_0800D400: .4byte gBattlerControllerFuncs _0800D404: .4byte SetBankFuncToPlayerBufferRunCommand _0800D408: .4byte gBattlerPositions _0800D40C: .4byte sub_8035A7C @@ -242,7 +242,7 @@ _0800D414: ands r3, r2 cmp r3, 0 beq _0800D458 - ldr r3, _0800D44C @ =gUnknown_3004FE0 + ldr r3, _0800D44C @ =gBattlerControllerFuncs ldr r1, _0800D450 @ =sub_81560A4 str r1, [r3] ldr r2, _0800D454 @ =gBattlerPositions @@ -260,11 +260,11 @@ _0800D414: .align 2, 0 _0800D444: .4byte gUnknown_3004F84 _0800D448: .4byte sub_80123C0 -_0800D44C: .4byte gUnknown_3004FE0 +_0800D44C: .4byte gBattlerControllerFuncs _0800D450: .4byte sub_81560A4 _0800D454: .4byte gBattlerPositions _0800D458: - ldr r2, _0800D480 @ =gUnknown_3004FE0 + ldr r2, _0800D480 @ =gBattlerControllerFuncs ldr r0, _0800D484 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] ldr r1, _0800D488 @ =gBattlerPositions @@ -287,7 +287,7 @@ _0800D478: pop {r0} bx r0 .align 2, 0 -_0800D480: .4byte gUnknown_3004FE0 +_0800D480: .4byte gBattlerControllerFuncs _0800D484: .4byte SetBankFuncToPlayerBufferRunCommand _0800D488: .4byte gBattlerPositions _0800D48C: .4byte sub_8035A7C @@ -315,7 +315,7 @@ sub_800D494: @ 800D494 ldr r1, _0800D4D4 @ =gUnknown_3004F84 ldr r0, _0800D4D8 @ =sub_80123C0 str r0, [r1] - ldr r2, _0800D4DC @ =gUnknown_3004FE0 + ldr r2, _0800D4DC @ =gBattlerControllerFuncs ldr r0, _0800D4E0 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2] ldr r1, _0800D4E4 @ =gBattlerPositions @@ -330,13 +330,13 @@ sub_800D494: @ 800D494 _0800D4D0: .4byte gBattleTypeFlags _0800D4D4: .4byte gUnknown_3004F84 _0800D4D8: .4byte sub_80123C0 -_0800D4DC: .4byte gUnknown_3004FE0 +_0800D4DC: .4byte gBattlerControllerFuncs _0800D4E0: .4byte SetBankFuncToPlayerBufferRunCommand _0800D4E4: .4byte gBattlerPositions _0800D4E8: .4byte sub_803A668 _0800D4EC: .4byte gBattlersCount _0800D4F0: - ldr r2, _0800D508 @ =gUnknown_3004FE0 + ldr r2, _0800D508 @ =gBattlerControllerFuncs ldr r0, _0800D50C @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] ldr r1, _0800D510 @ =gBattlerPositions @@ -348,7 +348,7 @@ _0800D4F0: movs r0, 0x2 b _0800D752 .align 2, 0 -_0800D508: .4byte gUnknown_3004FE0 +_0800D508: .4byte gBattlerControllerFuncs _0800D50C: .4byte SetBankFuncToPlayerBufferRunCommand _0800D510: .4byte gBattlerPositions _0800D514: .4byte sub_803A668 @@ -366,7 +366,7 @@ _0800D51C: ldr r1, _0800D554 @ =gUnknown_3004F84 ldr r0, _0800D558 @ =sub_80123C0 str r0, [r1] - ldr r2, _0800D55C @ =gUnknown_3004FE0 + ldr r2, _0800D55C @ =gBattlerControllerFuncs ldr r4, _0800D560 @ =SetBankFuncToPlayerBufferRunCommand str r4, [r2] ldr r1, _0800D564 @ =gBattlerPositions @@ -385,12 +385,12 @@ _0800D51C: .align 2, 0 _0800D554: .4byte gUnknown_3004F84 _0800D558: .4byte sub_80123C0 -_0800D55C: .4byte gUnknown_3004FE0 +_0800D55C: .4byte gBattlerControllerFuncs _0800D560: .4byte SetBankFuncToPlayerBufferRunCommand _0800D564: .4byte gBattlerPositions _0800D568: .4byte sub_803A668 _0800D56C: - ldr r2, _0800D590 @ =gUnknown_3004FE0 + ldr r2, _0800D590 @ =gBattlerControllerFuncs ldr r0, _0800D594 @ =SetBankFuncToPlayerBufferRunCommand str r0, [r2, 0x4] ldr r1, _0800D598 @ =gBattlerPositions @@ -409,7 +409,7 @@ _0800D588: strb r6, [r0] b _0800D754 .align 2, 0 -_0800D590: .4byte gUnknown_3004FE0 +_0800D590: .4byte gBattlerControllerFuncs _0800D594: .4byte SetBankFuncToPlayerBufferRunCommand _0800D598: .4byte gBattlerPositions _0800D59C: .4byte sub_803A668 @@ -478,7 +478,7 @@ _0800D61A: adds r3, r4, r0 ldrh r1, [r3, 0x18] lsls r1, 2 - ldr r2, _0800D644 @ =gUnknown_3004FE0 + ldr r2, _0800D644 @ =gBattlerControllerFuncs adds r1, r2 ldr r2, _0800D648 @ =SetBankFuncToPlayerBufferRunCommand str r2, [r1] @@ -493,7 +493,7 @@ _0800D61A: b _0800D740 .align 2, 0 _0800D640: .4byte gLinkPlayers -_0800D644: .4byte gUnknown_3004FE0 +_0800D644: .4byte gBattlerControllerFuncs _0800D648: .4byte SetBankFuncToPlayerBufferRunCommand _0800D64C: cmp r1, 0x3 @@ -550,7 +550,7 @@ _0800D6A6: adds r2, r4, r0 ldrh r0, [r2, 0x18] lsls r0, 2 - ldr r1, _0800D6C8 @ =gUnknown_3004FE0 + ldr r1, _0800D6C8 @ =gBattlerControllerFuncs adds r0, r1 ldr r1, _0800D6CC @ =sub_80D4204 str r1, [r0] @@ -563,7 +563,7 @@ _0800D6A6: beq _0800D6D4 b _0800D740 .align 2, 0 -_0800D6C8: .4byte gUnknown_3004FE0 +_0800D6C8: .4byte gBattlerControllerFuncs _0800D6CC: .4byte sub_80D4204 _0800D6D0: cmp r1, 0x3 @@ -587,7 +587,7 @@ _0800D6EC: adds r2, r4, r0 ldrh r0, [r2, 0x18] lsls r0, 2 - ldr r1, _0800D70C @ =gUnknown_3004FE0 + ldr r1, _0800D70C @ =gBattlerControllerFuncs adds r0, r1 ldr r1, _0800D710 @ =sub_803A668 str r1, [r0] @@ -600,7 +600,7 @@ _0800D6EC: beq _0800D718 b _0800D740 .align 2, 0 -_0800D70C: .4byte gUnknown_3004FE0 +_0800D70C: .4byte gBattlerControllerFuncs _0800D710: .4byte sub_803A668 _0800D714: cmp r0, 0x3 @@ -850,7 +850,7 @@ _0800D8E6: movs r3, 0 cmp r3, r2 bge _0800D92E - ldr r6, _0800D908 @ =gUnknown_2022BC4 + ldr r6, _0800D908 @ =gBattleBufferA ldr r5, _0800D90C @ =gActiveBattler _0800D8F0: ldrb r0, [r5] @@ -865,7 +865,7 @@ _0800D8F0: blt _0800D8F0 b _0800D92E .align 2, 0 -_0800D908: .4byte gUnknown_2022BC4 +_0800D908: .4byte gBattleBufferA _0800D90C: .4byte gActiveBattler _0800D910: movs r3, 0 @@ -1603,7 +1603,7 @@ _0800DEBC: beq _0800DF64 b _0800DF7A _0800DEC2: - ldr r2, _0800DF2C @ =gUnknown_2023BC8 + ldr r2, _0800DF2C @ =gBattleControllerExecFlags ldr r1, _0800DF30 @ =gBitTable lsls r0, r4, 2 adds r0, r1 @@ -1613,7 +1613,7 @@ _0800DEC2: cmp r1, 0 bne _0800DF8C lsls r0, r4, 9 - ldr r1, _0800DF34 @ =gUnknown_2022BC4 + ldr r1, _0800DF34 @ =gBattleBufferA adds r0, r1 adds r1, r3, 0 adds r1, 0x8 @@ -1655,9 +1655,9 @@ _0800DEC2: strb r0, [r2] b _0800DF7A .align 2, 0 -_0800DF2C: .4byte gUnknown_2023BC8 +_0800DF2C: .4byte gBattleControllerExecFlags _0800DF30: .4byte gBitTable -_0800DF34: .4byte gUnknown_2022BC4 +_0800DF34: .4byte gBattleBufferA _0800DF38: .4byte gBattleTypeFlags _0800DF3C: .4byte sBattler_AI _0800DF40: .4byte gBattlerTarget @@ -1676,7 +1676,7 @@ _0800DF4C: _0800DF60: .4byte gUnknown_20233C4 _0800DF64: ldrb r2, [r3, 0x8] - ldr r3, _0800DF98 @ =gUnknown_2023BC8 + ldr r3, _0800DF98 @ =gBattleControllerExecFlags ldr r1, _0800DF9C @ =gBitTable lsls r0, r4, 2 adds r0, r1 @@ -1704,7 +1704,7 @@ _0800DF8C: pop {r0} bx r0 .align 2, 0 -_0800DF98: .4byte gUnknown_2023BC8 +_0800DF98: .4byte gBattleControllerExecFlags _0800DF9C: .4byte gBitTable _0800DFA0: .4byte gTasks thumb_func_end Task_HandleCopyReceivedLinkBuffersData diff --git a/asm/battle_message.s b/asm/battle_message.s index efd7e1385..04dc59d1b 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80D7274 -sub_80D7274: @ 80D7274 + thumb_func_start BufferStringBattle +BufferStringBattle: @ 80D7274 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -701,7 +701,7 @@ _080D77E2: bx r0 .align 2, 0 _080D77F0: .4byte gUnknown_83FDF3C - thumb_func_end sub_80D7274 + thumb_func_end BufferStringBattle thumb_func_start BattleStringExpandPlaceholdersToDisplayedString BattleStringExpandPlaceholdersToDisplayedString: @ 80D77F4 @@ -2649,8 +2649,8 @@ _080D87B0: _080D87B8: .4byte gUnknown_83FD58E thumb_func_end sub_80D8720 - thumb_func_start sub_80D87BC -sub_80D87BC: @ 80D87BC + thumb_func_start BattlePutTextOnWindow +BattlePutTextOnWindow: @ 80D87BC push {r4-r7,lr} mov r7, r8 push {r7} @@ -2907,7 +2907,7 @@ _080D89A4: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_80D87BC + thumb_func_end BattlePutTextOnWindow thumb_func_start sub_80D89B0 sub_80D89B0: @ 80D89B0 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 42d1f653d..5af41017e 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -1291,7 +1291,7 @@ _0801E1D4: .4byte gUnknown_2023E82 thumb_func_start atk02_attackstring atk02_attackstring: @ 801E1D8 push {r4,r5,lr} - ldr r0, _0801E218 @ =gUnknown_2023BC8 + ldr r0, _0801E218 @ =gBattleControllerExecFlags ldr r5, [r0] cmp r5, 0 bne _0801E210 @@ -1323,7 +1323,7 @@ _0801E210: pop {r0} bx r0 .align 2, 0 -_0801E218: .4byte gUnknown_2023BC8 +_0801E218: .4byte gBattleControllerExecFlags _0801E21C: .4byte gUnknown_2023DD0 _0801E220: .4byte sBattler_AI _0801E224: .4byte gUnknown_2023D74 @@ -1339,7 +1339,7 @@ atk03_ppreduce: @ 801E22C push {r5-r7} sub sp, 0x4 movs r6, 0x1 - ldr r0, _0801E27C @ =gUnknown_2023BC8 + ldr r0, _0801E27C @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0801E244 @@ -1374,7 +1374,7 @@ _0801E244: beq _0801E2AC b _0801E2C6 .align 2, 0 -_0801E27C: .4byte gUnknown_2023BC8 +_0801E27C: .4byte gBattleControllerExecFlags _0801E280: .4byte gUnknown_2023ECC _0801E284: .4byte sBattler_AI _0801E288: .4byte gBattleMoves @@ -3640,7 +3640,7 @@ atk09_attackanimation: @ 801F440 mov r6, r8 push {r6} sub sp, 0xC - ldr r0, _0801F488 @ =gUnknown_2023BC8 + ldr r0, _0801F488 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0801F452 @@ -3673,7 +3673,7 @@ _0801F452: strb r0, [r1, 0x19] b _0801F572 .align 2, 0 -_0801F488: .4byte gUnknown_2023BC8 +_0801F488: .4byte gBattleControllerExecFlags _0801F48C: .4byte gUnknown_2023DD0 _0801F490: .4byte gCurrentMove _0801F494: .4byte gUnknown_2023D74 @@ -3791,7 +3791,7 @@ _0801F584: .4byte gUnknown_81D89F1 thumb_func_start sub_801F588 sub_801F588: @ 801F588 push {lr} - ldr r0, _0801F5A0 @ =gUnknown_2023BC8 + ldr r0, _0801F5A0 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801F59A @@ -3803,14 +3803,14 @@ _0801F59A: pop {r0} bx r0 .align 2, 0 -_0801F5A0: .4byte gUnknown_2023BC8 +_0801F5A0: .4byte gBattleControllerExecFlags _0801F5A4: .4byte gUnknown_2023D74 thumb_func_end sub_801F588 thumb_func_start atk0B_healthbarupdate atk0B_healthbarupdate: @ 801F5A8 push {r4,lr} - ldr r0, _0801F60C @ =gUnknown_2023BC8 + ldr r0, _0801F60C @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801F66A @@ -3858,7 +3858,7 @@ atk0B_healthbarupdate: @ 801F5A8 bl PrepareStringBattle b _0801F662 .align 2, 0 -_0801F60C: .4byte gUnknown_2023BC8 +_0801F60C: .4byte gBattleControllerExecFlags _0801F610: .4byte gMoveResultFlags _0801F614: .4byte gUnknown_2023D74 _0801F618: .4byte gActiveBattler @@ -3914,7 +3914,7 @@ _0801F680: .4byte gUnknown_2023D74 atk0C_datahpupdate: @ 801F684 push {r4-r7,lr} sub sp, 0x4 - ldr r0, _0801F6AC @ =gUnknown_2023BC8 + ldr r0, _0801F6AC @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0801F692 @@ -3933,7 +3933,7 @@ _0801F692: ands r6, r1 b _0801F6C4 .align 2, 0 -_0801F6AC: .4byte gUnknown_2023BC8 +_0801F6AC: .4byte gBattleControllerExecFlags _0801F6B0: .4byte gBattleStruct _0801F6B4: ldr r2, _0801F750 @ =gBattleMoves @@ -4403,7 +4403,7 @@ _0801FA78: .4byte 0x0000ffff thumb_func_start atk0D_critmessage atk0D_critmessage: @ 801FA7C push {lr} - ldr r0, _0801FAB8 @ =gUnknown_2023BC8 + ldr r0, _0801FAB8 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801FAB2 @@ -4433,7 +4433,7 @@ _0801FAB2: pop {r0} bx r0 .align 2, 0 -_0801FAB8: .4byte gUnknown_2023BC8 +_0801FAB8: .4byte gBattleControllerExecFlags _0801FABC: .4byte gCritMultiplier _0801FAC0: .4byte gMoveResultFlags _0801FAC4: .4byte sBattler_AI @@ -4444,7 +4444,7 @@ _0801FACC: .4byte gUnknown_2023D74 thumb_func_start atk0E_effectivenesssound atk0E_effectivenesssound: @ 801FAD0 push {r4,lr} - ldr r0, _0801FB08 @ =gUnknown_2023BC8 + ldr r0, _0801FB08 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801FB90 @@ -4472,7 +4472,7 @@ atk0E_effectivenesssound: @ 801FAD0 beq _0801FB2C b _0801FB42 .align 2, 0 -_0801FB08: .4byte gUnknown_2023BC8 +_0801FB08: .4byte gBattleControllerExecFlags _0801FB0C: .4byte gActiveBattler _0801FB10: .4byte gBattlerTarget _0801FB14: .4byte gMoveResultFlags @@ -4553,7 +4553,7 @@ _0801FB9C: .4byte gUnknown_2023D74 atk0F_resultmessage: @ 801FBA0 push {r4-r7,lr} movs r3, 0 - ldr r0, _0801FBDC @ =gUnknown_2023BC8 + ldr r0, _0801FBDC @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0801FBAE @@ -4584,7 +4584,7 @@ _0801FBCE: strb r4, [r7, 0x7] b _0801FD2A .align 2, 0 -_0801FBDC: .4byte gUnknown_2023BC8 +_0801FBDC: .4byte gBattleControllerExecFlags _0801FBE0: .4byte gMoveResultFlags _0801FBE4: .4byte gUnknown_2023E82 _0801FBE8: .4byte gUnknown_83FE514 @@ -4775,7 +4775,7 @@ _0801FD4C: .4byte gUnknown_2023D74 thumb_func_start atk10_printstring atk10_printstring: @ 801FD50 push {r4,lr} - ldr r0, _0801FD80 @ =gUnknown_2023BC8 + ldr r0, _0801FD80 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801FD7A @@ -4799,7 +4799,7 @@ _0801FD7A: pop {r0} bx r0 .align 2, 0 -_0801FD80: .4byte gUnknown_2023BC8 +_0801FD80: .4byte gBattleControllerExecFlags _0801FD84: .4byte gUnknown_2023D74 _0801FD88: .4byte sBattler_AI _0801FD8C: .4byte gUnknown_2023E82 @@ -4841,7 +4841,7 @@ _0801FDD0: .4byte gUnknown_2023E82 thumb_func_start atk12_waitmessage atk12_waitmessage: @ 801FDD4 push {r4-r6,lr} - ldr r0, _0801FDF0 @ =gUnknown_2023BC8 + ldr r0, _0801FDF0 @ =gBattleControllerExecFlags ldr r4, [r0] cmp r4, 0 bne _0801FE22 @@ -4855,7 +4855,7 @@ atk12_waitmessage: @ 801FDD4 str r0, [r1] b _0801FE22 .align 2, 0 -_0801FDF0: .4byte gUnknown_2023BC8 +_0801FDF0: .4byte gBattleControllerExecFlags _0801FDF4: .4byte gUnknown_2023E82 _0801FDF8: .4byte gUnknown_2023D74 _0801FDFC: @@ -4890,7 +4890,7 @@ _0801FE2C: .4byte gUnknown_2023E7C thumb_func_start atk13_printfromtable atk13_printfromtable: @ 801FE30 push {r4,r5,lr} - ldr r0, _0801FE74 @ =gUnknown_2023BC8 + ldr r0, _0801FE74 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801FE6E @@ -4924,7 +4924,7 @@ _0801FE6E: pop {r0} bx r0 .align 2, 0 -_0801FE74: .4byte gUnknown_2023BC8 +_0801FE74: .4byte gBattleControllerExecFlags _0801FE78: .4byte gUnknown_2023D74 _0801FE7C: .4byte gUnknown_2023E82 _0801FE80: .4byte sBattler_AI @@ -4933,7 +4933,7 @@ _0801FE80: .4byte sBattler_AI thumb_func_start atk14_printselectionstringfromtable atk14_printselectionstringfromtable: @ 801FE84 push {r4-r6,lr} - ldr r0, _0801FED4 @ =gUnknown_2023BC8 + ldr r0, _0801FED4 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801FECE @@ -4972,7 +4972,7 @@ _0801FECE: pop {r0} bx r0 .align 2, 0 -_0801FED4: .4byte gUnknown_2023BC8 +_0801FED4: .4byte gBattleControllerExecFlags _0801FED8: .4byte gUnknown_2023D74 _0801FEDC: .4byte gUnknown_2023E82 _0801FEE0: .4byte gActiveBattler @@ -7726,7 +7726,7 @@ _08021592: thumb_func_start atk1A_faint_animation atk1A_faint_animation: @ 80215A0 push {r4,r5,lr} - ldr r0, _080215D0 @ =gUnknown_2023BC8 + ldr r0, _080215D0 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _080215CA @@ -7748,7 +7748,7 @@ _080215CA: pop {r0} bx r0 .align 2, 0 -_080215D0: .4byte gUnknown_2023BC8 +_080215D0: .4byte gBattleControllerExecFlags _080215D4: .4byte gUnknown_2023D74 _080215D8: .4byte gActiveBattler thumb_func_end atk1A_faint_animation @@ -7757,7 +7757,7 @@ _080215D8: .4byte gActiveBattler atk1B_faint_effects_clear: @ 80215DC push {r4-r6,lr} sub sp, 0x4 - ldr r0, _08021630 @ =gUnknown_2023BC8 + ldr r0, _08021630 @ =gBattleControllerExecFlags ldr r6, [r0] cmp r6, 0 bne _08021628 @@ -7795,7 +7795,7 @@ _08021628: pop {r0} bx r0 .align 2, 0 -_08021630: .4byte gUnknown_2023BC8 +_08021630: .4byte gBattleControllerExecFlags _08021634: .4byte gUnknown_2023D74 _08021638: .4byte gActiveBattler _0802163C: .4byte gBattleMons @@ -8582,7 +8582,7 @@ _08021C52: mov r4, r8 strb r4, [r0] _08021C6A: - ldr r0, _08021CA8 @ =gUnknown_2023BC8 + ldr r0, _08021CA8 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _08021C74 @@ -8611,7 +8611,7 @@ _08021C74: _08021C9C: .4byte gUnknown_2023F52 _08021CA0: .4byte gBattleScripting _08021CA4: .4byte gBattleStruct -_08021CA8: .4byte gUnknown_2023BC8 +_08021CA8: .4byte gBattleControllerExecFlags _08021CAC: .4byte gPlayerParty _08021CB0: .4byte gSaveBlock1Ptr _08021CB4: .4byte 0x0000311a @@ -8946,7 +8946,7 @@ _08021F6C: .4byte gPlayerParty _08021F70: .4byte gBattleMons _08021F74: .4byte gUnknown_2023D6D _08021F78: - ldr r0, _0802205C @ =gUnknown_2023BC8 + ldr r0, _0802205C @ =gBattleControllerExecFlags ldr r2, [r0] cmp r2, 0 beq _08021F82 @@ -9053,7 +9053,7 @@ _08022052: strb r0, [r1, 0x1C] b _080223DA .align 2, 0 -_0802205C: .4byte gUnknown_2023BC8 +_0802205C: .4byte gBattleControllerExecFlags _08022060: .4byte gUnknown_20233C4 _08022064: .4byte gBattleStruct _08022068: .4byte gPlayerParty @@ -9062,7 +9062,7 @@ _08022070: .4byte gActiveBattler _08022074: .4byte gBattleMoveDamage _08022078: .4byte gBattleScripting _0802207C: - ldr r0, _08022314 @ =gUnknown_2023BC8 + ldr r0, _08022314 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _08022086 @@ -9379,7 +9379,7 @@ _08022256: strh r0, [r1] b _08022356 .align 2, 0 -_08022314: .4byte gUnknown_2023BC8 +_08022314: .4byte gBattleControllerExecFlags _08022318: .4byte gActiveBattler _0802231C: .4byte gBattleStruct _08022320: .4byte gUnknown_20233C4 @@ -9443,7 +9443,7 @@ _080223A4: .align 2, 0 _080223AC: .4byte gBattleScripting _080223B0: - ldr r0, _080223E8 @ =gUnknown_2023BC8 + ldr r0, _080223E8 @ =gBattleControllerExecFlags ldr r5, [r0] cmp r5, 0 bne _080223DA @@ -9472,7 +9472,7 @@ _080223DA: pop {r0} bx r0 .align 2, 0 -_080223E8: .4byte gUnknown_2023BC8 +_080223E8: .4byte gBattleControllerExecFlags _080223EC: .4byte gBattleMons _080223F0: .4byte gUnknown_2023D6D _080223F4: .4byte gUnknown_2023D74 @@ -9484,7 +9484,7 @@ sub_80223F8: @ 80223F8 mov r7, r8 push {r7} movs r6, 0 - ldr r0, _08022534 @ =gUnknown_2023BC8 + ldr r0, _08022534 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0802240A @@ -9645,7 +9645,7 @@ _0802251E: bgt _08022560 b _0802257A .align 2, 0 -_08022534: .4byte gUnknown_2023BC8 +_08022534: .4byte gBattleControllerExecFlags _08022538: .4byte gPlayerParty _0802253C: .4byte gBattleOutcome _08022540: .4byte gEnemyParty @@ -10610,7 +10610,7 @@ _08022C04: .4byte gUnknown_2023D74 thumb_func_start atk39_pause atk39_pause: @ 8022C08 push {r4,r5,lr} - ldr r0, _08022C3C @ =gUnknown_2023BC8 + ldr r0, _08022C3C @ =gBattleControllerExecFlags ldr r4, [r0] cmp r4, 0 bne _08022C34 @@ -10636,7 +10636,7 @@ _08022C34: pop {r0} bx r0 .align 2, 0 -_08022C3C: .4byte gUnknown_2023BC8 +_08022C3C: .4byte gBattleControllerExecFlags _08022C40: .4byte gUnknown_2023D74 _08022C44: .4byte gUnknown_2023E7C thumb_func_end atk39_pause @@ -10644,7 +10644,7 @@ _08022C44: .4byte gUnknown_2023E7C thumb_func_start sub_8022C48 sub_8022C48: @ 8022C48 push {lr} - ldr r0, _08022C60 @ =gUnknown_2023BC8 + ldr r0, _08022C60 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08022C5A @@ -10656,7 +10656,7 @@ _08022C5A: pop {r0} bx r0 .align 2, 0 -_08022C60: .4byte gUnknown_2023BC8 +_08022C60: .4byte gBattleControllerExecFlags _08022C64: .4byte gUnknown_2023D74 thumb_func_end sub_8022C48 @@ -12993,7 +12993,7 @@ _08023ED4: .4byte gUnknown_2023D74 thumb_func_start atk4C_getswitchedmondata atk4C_getswitchedmondata: @ 8023ED8 push {r4,r5,lr} - ldr r0, _08023F30 @ =gUnknown_2023BC8 + ldr r0, _08023F30 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08023F28 @@ -13034,7 +13034,7 @@ _08023F28: pop {r0} bx r0 .align 2, 0 -_08023F30: .4byte gUnknown_2023BC8 +_08023F30: .4byte gBattleControllerExecFlags _08023F34: .4byte gUnknown_2023D74 _08023F38: .4byte gActiveBattler _08023F3C: .4byte gBattlerPartyIndexes @@ -13046,7 +13046,7 @@ _08023F44: .4byte gBitTable sub_8023F48: @ 8023F48 push {r4-r7,lr} sub sp, 0x58 - ldr r0, _080240A0 @ =gUnknown_2023BC8 + ldr r0, _080240A0 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _08023F56 @@ -13218,7 +13218,7 @@ _08024098: pop {r0} bx r0 .align 2, 0 -_080240A0: .4byte gUnknown_2023BC8 +_080240A0: .4byte gBattleControllerExecFlags _080240A4: .4byte gUnknown_2023D74 _080240A8: .4byte gActiveBattler _080240AC: .4byte gBattleMons @@ -13236,7 +13236,7 @@ _080240D0: .4byte gBattleTextBuff1 thumb_func_start sub_80240D4 sub_80240D4: @ 80240D4 push {r4-r6,lr} - ldr r0, _08024168 @ =gUnknown_2023BC8 + ldr r0, _08024168 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08024160 @@ -13305,7 +13305,7 @@ _08024160: pop {r0} bx r0 .align 2, 0 -_08024168: .4byte gUnknown_2023BC8 +_08024168: .4byte gBattleControllerExecFlags _0802416C: .4byte gUnknown_2023D74 _08024170: .4byte gActiveBattler _08024174: .4byte gBattleTypeFlags @@ -14623,7 +14623,7 @@ _08024C44: .4byte gBitTable thumb_func_start sub_8024C48 sub_8024C48: @ 8024C48 push {r4-r7,lr} - ldr r0, _08024C74 @ =gUnknown_2023BC8 + ldr r0, _08024C74 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _08024C54 @@ -14645,7 +14645,7 @@ _08024C54: beq _08024C86 b _08024E0E .align 2, 0 -_08024C74: .4byte gUnknown_2023BC8 +_08024C74: .4byte gBattleControllerExecFlags _08024C78: .4byte gUnknown_2023D74 _08024C7C: .4byte gActiveBattler _08024C80: @@ -15559,7 +15559,7 @@ _080253C4: bl sub_802DB7C ldr r0, _080253F0 @ =gUnknown_83FE791 movs r1, 0xE - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080253F4 @ =gBattleScripting ldrb r0, [r1, 0x1F] adds r0, 0x1 @@ -15702,7 +15702,7 @@ _08025500: _0802550E: ldr r0, _08025530 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _08025534 @ =sub_8011100 + ldr r0, _08025534 @ =BattleMainCB2 cmp r1, r0 beq _0802551A b _080256D0 @@ -15718,7 +15718,7 @@ _0802551A: .align 2, 0 _0802552C: .4byte gPaletteFade _08025530: .4byte gMain -_08025534: .4byte sub_8011100 +_08025534: .4byte BattleMainCB2 _08025538: .4byte gBattleScripting _0802553C: ldr r6, _08025578 @ =gBattleStruct @@ -15897,7 +15897,7 @@ _080256A4: .align 2, 0 _080256C0: .4byte gUnknown_2023D74 _080256C4: - ldr r0, _080256DC @ =gUnknown_2023BC8 + ldr r0, _080256DC @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _080256D0 @@ -15911,7 +15911,7 @@ _080256D0: pop {r0} bx r0 .align 2, 0 -_080256DC: .4byte gUnknown_2023BC8 +_080256DC: .4byte gBattleControllerExecFlags thumb_func_end sub_802537C thumb_func_start sub_80256E0 @@ -15936,7 +15936,7 @@ _080256F8: bl sub_802DB7C ldr r0, _08025720 @ =gUnknown_83FE791 movs r1, 0xE - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r0, [r5, 0x1F] adds r0, 0x1 strb r0, [r5, 0x1F] @@ -16401,7 +16401,7 @@ _08025AA0: strb r0, [r5] b _08025B0C _08025AB8: - ldr r0, _08025B18 @ =gUnknown_2023BC8 + ldr r0, _08025B18 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08025B0C @@ -16451,7 +16451,7 @@ _08025B0C: pop {r0} bx r0 .align 2, 0 -_08025B18: .4byte gUnknown_2023BC8 +_08025B18: .4byte gBattleControllerExecFlags _08025B1C: .4byte gUnknown_20233C8 _08025B20: .4byte gUnknown_2023C08 thumb_func_end atk5E @@ -16529,7 +16529,7 @@ atk61_drawpartystatussummary: @ 8025BA4 mov r7, r8 push {r7} sub sp, 0x30 - ldr r0, _08025C08 @ =gUnknown_2023BC8 + ldr r0, _08025C08 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08025C58 @@ -16575,7 +16575,7 @@ _08025C00: movs r0, 0 b _08025C32 .align 2, 0 -_08025C08: .4byte gUnknown_2023BC8 +_08025C08: .4byte gBattleControllerExecFlags _08025C0C: .4byte gUnknown_2023D74 _08025C10: .4byte gActiveBattler _08025C14: .4byte gEnemyParty @@ -16696,7 +16696,7 @@ _08025CFC: .4byte gBattleMoves thumb_func_start atk64_statusanimation atk64_statusanimation: @ 8025D00 push {r4,lr} - ldr r0, _08025D70 @ =gUnknown_2023BC8 + ldr r0, _08025D70 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08025D68 @@ -16750,7 +16750,7 @@ _08025D68: pop {r0} bx r0 .align 2, 0 -_08025D70: .4byte gUnknown_2023BC8 +_08025D70: .4byte gBattleControllerExecFlags _08025D74: .4byte gUnknown_2023D74 _08025D78: .4byte gActiveBattler _08025D7C: .4byte gStatuses3 @@ -16763,7 +16763,7 @@ _08025D8C: .4byte gBattleMons thumb_func_start atk65_status2animation atk65_status2animation: @ 8025D90 push {r4,r5,lr} - ldr r0, _08025E18 @ =gUnknown_2023BC8 + ldr r0, _08025E18 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08025E10 @@ -16829,7 +16829,7 @@ _08025E10: pop {r0} bx r0 .align 2, 0 -_08025E18: .4byte gUnknown_2023BC8 +_08025E18: .4byte gBattleControllerExecFlags _08025E1C: .4byte gUnknown_2023D74 _08025E20: .4byte gActiveBattler _08025E24: .4byte gStatuses3 @@ -16842,7 +16842,7 @@ _08025E34: .4byte gBattleMons thumb_func_start atk66_chosenstatusanimation atk66_chosenstatusanimation: @ 8025E38 push {r4,r5,lr} - ldr r0, _08025EB0 @ =gUnknown_2023BC8 + ldr r0, _08025EB0 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08025EAA @@ -16901,7 +16901,7 @@ _08025EAA: pop {r0} bx r0 .align 2, 0 -_08025EB0: .4byte gUnknown_2023BC8 +_08025EB0: .4byte gBattleControllerExecFlags _08025EB4: .4byte gUnknown_2023D74 _08025EB8: .4byte gActiveBattler _08025EBC: .4byte gStatuses3 @@ -16932,7 +16932,7 @@ _08025EE4: bl sub_802DB7C ldr r0, _08025F08 @ =gUnknown_83FE791 movs r1, 0xE - bl sub_80D87BC + bl BattlePutTextOnWindow ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] @@ -19133,7 +19133,7 @@ atk78_faintifabilitynotdamp: @ 80270A4 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r0, _08027160 @ =gUnknown_2023BC8 + ldr r0, _08027160 @ =gBattleControllerExecFlags ldr r2, [r0] cmp r2, 0 bne _080271A8 @@ -19227,7 +19227,7 @@ _08027152: bcc _0802713C b _080271A8 .align 2, 0 -_08027160: .4byte gUnknown_2023BC8 +_08027160: .4byte gBattleControllerExecFlags _08027164: .4byte gBattlerTarget _08027168: .4byte gBattlersCount _0802716C: .4byte gBattleMons @@ -19268,7 +19268,7 @@ _080271BC: .4byte gUnknown_81D93AF atk79_setatkhptozero: @ 80271C0 push {r4,lr} sub sp, 0x4 - ldr r0, _0802720C @ =gUnknown_2023BC8 + ldr r0, _0802720C @ =gBattleControllerExecFlags ldr r3, [r0] cmp r3, 0 bne _08027204 @@ -19304,7 +19304,7 @@ _08027204: pop {r0} bx r0 .align 2, 0 -_0802720C: .4byte gUnknown_2023BC8 +_0802720C: .4byte gBattleControllerExecFlags _08027210: .4byte gActiveBattler _08027214: .4byte sBattler_AI _08027218: .4byte gBattleMons @@ -23131,7 +23131,7 @@ _08029044: .4byte gUnknown_2023D74 thumb_func_start sub_8029048 sub_8029048: @ 8029048 push {r4-r7,lr} - ldr r0, _080290B8 @ =gUnknown_2023BC8 + ldr r0, _080290B8 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 beq _08029054 @@ -23187,7 +23187,7 @@ _080290A2: bcc _08029074 b _08029164 .align 2, 0 -_080290B8: .4byte gUnknown_2023BC8 +_080290B8: .4byte gBattleControllerExecFlags _080290BC: .4byte gUnknown_2023D74 _080290C0: .4byte gActiveBattler _080290C4: .4byte gBattlersCount @@ -31742,7 +31742,7 @@ _0802D430: .4byte gUnknown_2023D74 sub_802D434: @ 802D434 push {r4-r6,lr} movs r4, 0 - ldr r0, _0802D474 @ =gUnknown_2023BC8 + ldr r0, _0802D474 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0802D442 @@ -31772,7 +31772,7 @@ _0802D442: ldr r0, _0802D48C @ =gUnknown_81D9AD1 b _0802D7EC .align 2, 0 -_0802D474: .4byte gUnknown_2023BC8 +_0802D474: .4byte gBattleControllerExecFlags _0802D478: .4byte gActiveBattler _0802D47C: .4byte sBattler_AI _0802D480: .4byte gBattlerTarget @@ -32471,7 +32471,7 @@ _0802DA64: _0802DA72: ldr r0, _0802DAB0 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _0802DAB4 @ =sub_8011100 + ldr r0, _0802DAB4 @ =BattleMainCB2 cmp r1, r0 bne _0802DB6C ldr r2, _0802DAB8 @ =gTasks @@ -32499,7 +32499,7 @@ _0802DA72: .align 2, 0 _0802DAAC: .4byte gPaletteFade _0802DAB0: .4byte gMain -_0802DAB4: .4byte sub_8011100 +_0802DAB4: .4byte BattleMainCB2 _0802DAB8: .4byte gTasks _0802DABC: .4byte gUnknown_2023E82 _0802DAC0: .4byte 0x05006000 @@ -32863,7 +32863,7 @@ _0802DD78: bl sub_802DB7C ldr r0, _0802DDA0 @ =gUnknown_83FE791 movs r1, 0xE - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _0802DDA4 @ =gUnknown_2023E82 ldrb r0, [r1] adds r0, 0x1 @@ -33023,7 +33023,7 @@ _0802DE4E: ldr r1, [r2] adds r1, 0x6D str r0, [sp] - ldr r0, _0802DF10 @ =sub_8011100 + ldr r0, _0802DF10 @ =BattleMainCB2 str r0, [sp, 0x4] movs r0, 0x2 adds r2, r6, 0 @@ -33040,12 +33040,12 @@ _0802DF00: .4byte gBattlerPartyIndexes _0802DF04: .4byte sBattler_AI _0802DF08: .4byte gEnemyParty _0802DF0C: .4byte gBattleStruct -_0802DF10: .4byte sub_8011100 +_0802DF10: .4byte BattleMainCB2 _0802DF14: .4byte gUnknown_2023E82 _0802DF18: ldr r0, _0802DF54 @ =gMain ldr r1, [r0, 0x4] - ldr r0, _0802DF58 @ =sub_8011100 + ldr r0, _0802DF58 @ =BattleMainCB2 cmp r1, r0 bne _0802DFA6 ldr r0, _0802DF5C @ =gPaletteFade @@ -33074,7 +33074,7 @@ _0802DF18: b _0802DF8C .align 2, 0 _0802DF54: .4byte gMain -_0802DF58: .4byte sub_8011100 +_0802DF58: .4byte BattleMainCB2 _0802DF5C: .4byte gPaletteFade _0802DF60: .4byte gBattlerPartyIndexes _0802DF64: .4byte sBattler_AI diff --git a/asm/battle_util.s b/asm/battle_util.s index 50f5210aa..739f10609 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -495,7 +495,7 @@ MarkAllBufferBanksForExecution: @ 80171D8 ldrb r0, [r4] cmp r2, r0 bge _08017236 - ldr r3, _08017210 @ =gUnknown_2023BC8 + ldr r3, _08017210 @ =gBattleControllerExecFlags ldr r5, _08017214 @ =gBitTable _080171F4: ldm r5!, {r1} @@ -511,7 +511,7 @@ _080171F4: .align 2, 0 _08017208: .4byte gBattleTypeFlags _0801720C: .4byte gBattlersCount -_08017210: .4byte gUnknown_2023BC8 +_08017210: .4byte gBattleControllerExecFlags _08017214: .4byte gBitTable _08017218: movs r2, 0 @@ -519,7 +519,7 @@ _08017218: ldrb r0, [r4] cmp r2, r0 bge _08017236 - ldr r3, _08017240 @ =gUnknown_2023BC8 + ldr r3, _08017240 @ =gBattleControllerExecFlags ldr r5, _08017244 @ =gBitTable _08017226: ldr r0, [r3] @@ -536,7 +536,7 @@ _08017236: bx r0 .align 2, 0 _0801723C: .4byte gBattlersCount -_08017240: .4byte gUnknown_2023BC8 +_08017240: .4byte gBattleControllerExecFlags _08017244: .4byte gBitTable thumb_func_end MarkAllBufferBanksForExecution @@ -551,7 +551,7 @@ MarkBufferBankForExecution: @ 8017248 ands r0, r1 cmp r0, 0 beq _0801727C - ldr r2, _08017274 @ =gUnknown_2023BC8 + ldr r2, _08017274 @ =gBattleControllerExecFlags ldr r1, _08017278 @ =gBitTable lsls r0, r3, 2 adds r0, r1 @@ -563,10 +563,10 @@ MarkBufferBankForExecution: @ 8017248 b _0801728C .align 2, 0 _08017270: .4byte gBattleTypeFlags -_08017274: .4byte gUnknown_2023BC8 +_08017274: .4byte gBattleControllerExecFlags _08017278: .4byte gBitTable _0801727C: - ldr r2, _08017290 @ =gUnknown_2023BC8 + ldr r2, _08017290 @ =gBattleControllerExecFlags ldr r1, _08017294 @ =gBitTable lsls r0, r3, 2 adds r0, r1 @@ -578,7 +578,7 @@ _0801728C: pop {r0} bx r0 .align 2, 0 -_08017290: .4byte gUnknown_2023BC8 +_08017290: .4byte gBattleControllerExecFlags _08017294: .4byte gBitTable thumb_func_end MarkBufferBankForExecution @@ -588,13 +588,13 @@ sub_8017298: @ 8017298 lsls r0, 24 lsrs r7, r0, 24 movs r4, 0 - ldr r5, _080172AC @ =gUnknown_2023BC8 + ldr r5, _080172AC @ =gBattleControllerExecFlags ldr r1, _080172B0 @ =gBitTable lsls r0, r7, 2 adds r6, r0, r1 b _080172C2 .align 2, 0 -_080172AC: .4byte gUnknown_2023BC8 +_080172AC: .4byte gBattleControllerExecFlags _080172B0: .4byte gBitTable _080172B4: lsls r0, r4, 2 @@ -610,7 +610,7 @@ _080172C2: lsrs r0, 24 cmp r4, r0 blt _080172B4 - ldr r2, _080172E4 @ =gUnknown_2023BC8 + ldr r2, _080172E4 @ =gBattleControllerExecFlags movs r1, 0x80 lsls r1, 21 lsls r1, r7 @@ -621,7 +621,7 @@ _080172C2: pop {r0} bx r0 .align 2, 0 -_080172E4: .4byte gUnknown_2023BC8 +_080172E4: .4byte gBattleControllerExecFlags thumb_func_end sub_8017298 thumb_func_start CancelMultiTurnMoves @@ -11970,7 +11970,7 @@ _0801D02C: .4byte 0xffffbfff thumb_func_start sub_801D030 sub_801D030: @ 801D030 push {lr} - ldr r0, _0801D050 @ =gUnknown_2023BC8 + ldr r0, _0801D050 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801D04C @@ -11986,7 +11986,7 @@ _0801D04C: pop {r0} bx r0 .align 2, 0 -_0801D050: .4byte gUnknown_2023BC8 +_0801D050: .4byte gBattleControllerExecFlags _0801D054: .4byte gUnknown_825011C _0801D058: .4byte gUnknown_2023D74 thumb_func_end sub_801D030 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index e151e6d7d..8830ae009 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1497,7 +1497,7 @@ _080CEAA0: bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CEACC @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -1802,7 +1802,7 @@ _080CED3A: bl StringExpandPlaceholders adds r0, r4, 0 movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CEDB0 @ =0x00000103 bl PlayBGM ldr r2, _080CEDB4 @ =gTasks @@ -2055,7 +2055,7 @@ _080CEF70: _080CEF78: ldr r0, _080CEF90 @ =gStringVar4 movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080CEF98 @ =gTasks mov r2, r8 adds r0, r2, r7 @@ -2090,7 +2090,7 @@ _080CEFB6: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CEFF0 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CEFF4 @ =gTasks mov r3, r8 adds r1, r3, r7 @@ -2193,7 +2193,7 @@ _080CF0A2: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF0CC @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF0D0 @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -2225,7 +2225,7 @@ _080CF0EE: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF114 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF118 @ =gTasks mov r3, r8 adds r1, r3, r7 @@ -2253,7 +2253,7 @@ _080CF11C: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF1AC @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF1B0 @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -2289,7 +2289,7 @@ _080CF176: bl sub_802DB7C ldr r0, _080CF1B4 @ =gUnknown_83FE791 movs r1, 0xE - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF1B0 @ =gTasks mov r3, r8 adds r1, r3, r7 @@ -2510,7 +2510,7 @@ _080CF34C: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF390 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080CF394 @ =gTasks mov r2, r8 adds r0, r2, r7 @@ -2566,7 +2566,7 @@ _080CF3E0: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF40C @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF410 @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -2598,7 +2598,7 @@ _080CF42E: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF454 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r0, _080CF458 @ =gTasks mov r3, r8 adds r1, r3, r7 @@ -2629,7 +2629,7 @@ _080CF45C: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF49C @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080CF4A0 @ =gTasks mov r2, r8 adds r0, r2, r7 @@ -2648,7 +2648,7 @@ _080CF4A4: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF4D0 @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080CF4D4 @ =gTasks mov r3, r8 adds r0, r3, r7 @@ -2671,7 +2671,7 @@ _080CF4D8: bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _080CF4FC @ =gDisplayedStringBattle movs r1, 0 - bl sub_80D87BC + bl BattlePutTextOnWindow ldr r1, _080CF500 @ =gTasks mov r2, r8 adds r0, r2, r7 diff --git a/asm/pokeball.s b/asm/pokeball.s index ed9586d1d..3bbf3568b 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -14,7 +14,7 @@ DoPokeballSendOutAnimation: @ 804A938 lsrs r4, 16 lsls r5, 24 lsrs r5, 24 - ldr r1, _0804A98C @ =gUnknown_2024005 + ldr r1, _0804A98C @ =gDoingBattleAnim movs r0, 0x1 strb r0, [r1] ldr r0, _0804A990 @ =gBattleSpritesDataPtr @@ -49,7 +49,7 @@ DoPokeballSendOutAnimation: @ 804A938 pop {r1} bx r1 .align 2, 0 -_0804A98C: .4byte gUnknown_2024005 +_0804A98C: .4byte gDoingBattleAnim _0804A990: .4byte gBattleSpritesDataPtr _0804A994: .4byte gActiveBattler _0804A998: .4byte sub_804A9A0 @@ -1519,7 +1519,7 @@ _0804B52C: movs r2, 0 movs r1, 0 strh r1, [r0, 0x26] - ldr r0, _0804B5C0 @ =gUnknown_2024005 + ldr r0, _0804B5C0 @ =gDoingBattleAnim strb r2, [r0] ldr r4, _0804B5C4 @ =gBattleSpritesDataPtr ldr r0, [r4] @@ -1572,7 +1572,7 @@ _0804B5AE: _0804B5B4: .4byte 0xfffffee0 _0804B5B8: .4byte gSprites _0804B5BC: .4byte gBattlerSpriteIds -_0804B5C0: .4byte gUnknown_2024005 +_0804B5C0: .4byte gDoingBattleAnim _0804B5C4: .4byte gBattleSpritesDataPtr thumb_func_end HandleBallAnimEnd @@ -1592,7 +1592,7 @@ sub_804B5C8: @ 804B5C8 beq _0804B666 cmp r1, 0x5F bne _0804B600 - ldr r0, _0804B5F8 @ =gUnknown_2024005 + ldr r0, _0804B5F8 @ =gDoingBattleAnim movs r1, 0 strb r1, [r0] bl m4aMPlayAllStop @@ -1600,7 +1600,7 @@ sub_804B5C8: @ 804B5C8 bl PlaySE b _0804B666 .align 2, 0 -_0804B5F8: .4byte gUnknown_2024005 +_0804B5F8: .4byte gDoingBattleAnim _0804B5FC: .4byte 0x0000013f _0804B600: ldr r0, _0804B66C @ =0x0000013b diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s index 483314c54..c9faf0be7 100644 --- a/asm/reshow_battle_screen.s +++ b/asm/reshow_battle_screen.s @@ -317,7 +317,7 @@ _080779B0: adds r0, r4, 0 bl SetBattlerShadowSpriteCallback _08077A14: - ldr r1, _08077A4C @ =gUnknown_2023FF8 + ldr r1, _08077A4C @ =gActionSelectionCursor ldr r0, _08077A50 @ =gBattlerInMenuId ldrb r0, [r0] adds r0, r1 @@ -340,7 +340,7 @@ _08077A14: .align 2, 0 _08077A44: .4byte gBattlerPartyIndexes _08077A48: .4byte gEnemyParty -_08077A4C: .4byte gUnknown_2023FF8 +_08077A4C: .4byte gActionSelectionCursor _08077A50: .4byte gBattlerInMenuId _08077A54: .4byte gWirelessCommType _08077A58: .4byte gReceivedRemoteLinkPlayers @@ -360,7 +360,7 @@ _08077A5C: movs r0, 0x7F ands r0, r1 strb r0, [r2, 0x8] - ldr r0, _08077AA4 @ =sub_8011100 + ldr r0, _08077AA4 @ =BattleMainCB2 bl SetMainCallback2 bl sub_80357C8 _08077A8A: @@ -376,7 +376,7 @@ _08077A8A: .align 2, 0 _08077A9C: .4byte sub_80116F4 _08077AA0: .4byte gPaletteFade -_08077AA4: .4byte sub_8011100 +_08077AA4: .4byte BattleMainCB2 _08077AA8: .4byte gBattleScripting thumb_func_end sub_80777E8 @@ -759,7 +759,7 @@ _08077DAC: adds r0, r4, 0 bl SetMultiuseSpriteTemplateToTrainerBack ldr r6, _08077E08 @ =gMultiuseSpriteTemplate - ldr r1, _08077E0C @ =gUnknown_8239F8C + ldr r1, _08077E0C @ =gTrainerBackPicCoords ldr r0, [r5] ldrb r0, [r0, 0x8] lsls r0, 2 @@ -783,7 +783,7 @@ _08077DAC: _08077E00: .4byte gBattleTypeFlags _08077E04: .4byte gSaveBlock2Ptr _08077E08: .4byte gMultiuseSpriteTemplate -_08077E0C: .4byte gUnknown_8239F8C +_08077E0C: .4byte gTrainerBackPicCoords _08077E10: ldr r0, [r0] movs r1, 0x80 @@ -801,7 +801,7 @@ _08077E10: movs r0, 0x5 bl SetMultiuseSpriteTemplateToTrainerBack ldr r5, _08077E94 @ =gMultiuseSpriteTemplate - ldr r0, _08077E98 @ =gUnknown_8239F8C + ldr r0, _08077E98 @ =gTrainerBackPicCoords ldrb r0, [r0, 0x14] movs r4, 0x8 subs r4, r0 @@ -850,7 +850,7 @@ _08077E54: b _08077F84 .align 2, 0 _08077E94: .4byte gMultiuseSpriteTemplate -_08077E98: .4byte gUnknown_8239F8C +_08077E98: .4byte gTrainerBackPicCoords _08077E9C: .4byte gBattlerSpriteIds _08077EA0: .4byte gSprites _08077EA4: .4byte SpriteCallbackDummy diff --git a/data/data.s b/data/data.s index 943c71678..41bbdfade 100644 --- a/data/data.s +++ b/data/data.s @@ -157,7 +157,7 @@ gTrainerFrontPicPaletteTable:: @ 8239A1C gTrainerBackAnimsPtrTable:: @ 8239F74 .incbin "baserom.gba", 0x239F74, 0x18 -gUnknown_8239F8C:: @ 8239F8C +gTrainerBackPicCoords:: @ 8239F8C .incbin "baserom.gba", 0x239F8C, 0x18 gTrainerBackPicTable:: @ 8239FA4 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 6aade55b6..196468ace 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -24,8 +24,10 @@ gUnknown_83FECF4:: @ 83FECF4 gUnknown_83FECFA:: @ 83FECFA .incbin "baserom.gba", 0x3FECFA, 0x6 -gUnknown_83FED00:: @ 83FED00 - .incbin "baserom.gba", 0x3FED00, 0x380 + .section .rodata.83FEDE4 + +gUnknown_83FEDE4:: @ 83FEDE4 + .incbin "baserom.gba", 0x3FEDE4, 0x29C gUnknown_83FF080:: @ 83FF080 .incbin "baserom.gba", 0x3FF080, 0xB0 diff --git a/include/battle.h b/include/battle.h index 1a8fa0201..22ecce83b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -73,21 +73,22 @@ #define SIDE_STATUS_MIST (1 << 8) #define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) -#define ACTION_USE_MOVE 0 -#define ACTION_USE_ITEM 1 -#define ACTION_SWITCH 2 -#define ACTION_RUN 3 -#define ACTION_WATCHES_CAREFULLY 4 -#define ACTION_SAFARI_ZONE_BALL 5 -#define ACTION_POKEBLOCK_CASE 6 -#define ACTION_GO_NEAR 7 -#define ACTION_SAFARI_ZONE_RUN 8 -#define ACTION_9 9 -#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action -#define ACTION_CANCEL_PARTNER 12 // when choosing an action -#define ACTION_FINISHED 12 // when executing an action -#define ACTION_NOTHING_FAINTED 13 // when choosing an action -#define ACTION_INIT_VALUE 0xFF +#define B_ACTION_USE_MOVE 0 +#define B_ACTION_USE_ITEM 1 +#define B_ACTION_SWITCH 2 +#define B_ACTION_RUN 3 +#define B_ACTION_SAFARI_WATCH_CAREFULLY 4 +#define B_ACTION_SAFARI_BALL 5 +#define B_ACTION_SAFARI_POKEBLOCK 6 +#define B_ACTION_SAFARI_GO_NEAR 7 +#define B_ACTION_SAFARI_RUN 8 +#define B_ACTION_9 9 +#define B_ACTION_EXEC_SCRIPT 10 +#define B_ACTION_TRY_FINISH 11 +#define B_ACTION_FINISHED 12 +#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action +#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action +#define B_ACTION_NONE 0xFF #define MOVESTATUS_MISSED (1 << 0) #define MOVESTATUS_SUPEREFFECTIVE (1 << 1) @@ -931,6 +932,18 @@ struct MonSpritesGfx void *field_17C; }; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; extern struct BattleSpritesGfx* gMonSpritesGfx; extern u8 gBattleOutcome; extern u16 gLastUsedItem; @@ -953,8 +966,14 @@ extern u16 gIntroSlideFlags; extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; extern u8 gBattlerPositions[MAX_BATTLERS_COUNT]; extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; - extern u8 gBattleOutcome; extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; +extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void); +extern u32 gBattleControllerExecFlags; +extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200]; +extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; +extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; +extern void (*gPreBattleCallback1)(void); +extern bool8 gDoingBattleAnim; #endif // GUARD_BATTLE_H diff --git a/include/battle_message.h b/include/battle_message.h index 27ae88b01..df2653756 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -217,6 +217,8 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); void BattleHandleAddTextPrinter(const u8* text, u8 arg1); void SetPpNumbersPaletteInMoveSelection(void); u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); +void BattlePutTextOnWindow(const u8* text, u8 arg1); +bool8 sub_80D89B0(u16); #define TEXT_BUFF_ARRAY_COUNT 16 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h new file mode 100644 index 000000000..0a023f0c2 --- /dev/null +++ b/include/constants/battle_anim.h @@ -0,0 +1,442 @@ +#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H +#define GUARD_CONSTANTS_BATTLE_ANIM_H + +// Sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. +#define GET_TRUE_SPRITE_INDEX(i) ((i - ANIM_SPRITES_START)) + +// Particle ids. +#define ANIM_SPRITES_START 10000 + +#define ANIM_TAG_BONE (ANIM_SPRITES_START + 0) +#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1) +#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2) +#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3) +#define ANIM_TAG_ORB (ANIM_SPRITES_START + 4) +#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5) +#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6) +#define ANIM_TAG_EXPLOSION_6 (ANIM_SPRITES_START + 7) +#define ANIM_TAG_PINK_ORB (ANIM_SPRITES_START + 8) // unused +#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9) +#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10) +#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11) +#define ANIM_TAG_ORANGE (ANIM_SPRITES_START + 12) // unused +#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13) +#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14) +#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15) +#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16) +#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17) +#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18) +#define ANIM_TAG_GLASS (ANIM_SPRITES_START + 19) // unused +#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20) +#define ANIM_TAG_HIT (ANIM_SPRITES_START + 21) +#define ANIM_TAG_HIT_2 (ANIM_SPRITES_START + 22) +#define ANIM_TAG_BLUE_SHARDS (ANIM_SPRITES_START + 23) // unused +#define ANIM_TAG_CLOSING_EYE (ANIM_SPRITES_START + 24) // unused +#define ANIM_TAG_WAVING_HAND (ANIM_SPRITES_START + 25) // unused +#define ANIM_TAG_HIT_DUPLICATE (ANIM_SPRITES_START + 26) // unused +#define ANIM_TAG_LEER (ANIM_SPRITES_START + 27) +#define ANIM_TAG_BLUE_BURST (ANIM_SPRITES_START + 28) // unused +#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29) +#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30) +#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31) +#define ANIM_TAG_BUBBLE_BURST (ANIM_SPRITES_START + 32) +#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33) +#define ANIM_TAG_SPINNING_FIRE (ANIM_SPRITES_START + 34) // unused +#define ANIM_TAG_FIRE_PLUME (ANIM_SPRITES_START + 35) +#define ANIM_TAG_LIGHTNING_2 (ANIM_SPRITES_START + 36) // unused +#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37) +#define ANIM_TAG_CLAW_SLASH_2 (ANIM_SPRITES_START + 38) // unused +#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39) +#define ANIM_TAG_SCRATCH_3 (ANIM_SPRITES_START + 40) // unused +#define ANIM_TAG_SCRATCH_2 (ANIM_SPRITES_START + 41) // unused +#define ANIM_TAG_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42) // unused +#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43) +#define ANIM_TAG_GLASS_2 (ANIM_SPRITES_START + 44) // unused +#define ANIM_TAG_PINK_HEART_2 (ANIM_SPRITES_START + 45) // unused +#define ANIM_TAG_SAP_DRIP (ANIM_SPRITES_START + 46) // unused +#define ANIM_TAG_SAP_DRIP_2 (ANIM_SPRITES_START + 47) // unused +#define ANIM_TAG_SPARKLE_1 (ANIM_SPRITES_START + 48) +#define ANIM_TAG_SPARKLE_2 (ANIM_SPRITES_START + 49) +#define ANIM_TAG_HUMANOID_FOOT (ANIM_SPRITES_START + 50) +#define ANIM_TAG_MONSTER_FOOT (ANIM_SPRITES_START + 51) +#define ANIM_TAG_HUMANOID_HAND (ANIM_SPRITES_START + 52) // unused +#define ANIM_TAG_NOISE_LINE (ANIM_SPRITES_START + 53) +#define ANIM_TAG_YELLOW_UNK (ANIM_SPRITES_START + 54) // unused +#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55) // unused +#define ANIM_TAG_SLAM_HIT (ANIM_SPRITES_START + 56) +#define ANIM_TAG_RING (ANIM_SPRITES_START + 57) // unused +#define ANIM_TAG_ROCKS (ANIM_SPRITES_START + 58) +#define ANIM_TAG_Z (ANIM_SPRITES_START + 59) // unused +#define ANIM_TAG_YELLOW_UNK_2 (ANIM_SPRITES_START + 60) // unused +#define ANIM_TAG_AIR_SLASH (ANIM_SPRITES_START + 61) // unused +#define ANIM_TAG_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62) // unused +#define ANIM_TAG_LEAF (ANIM_SPRITES_START + 63) +#define ANIM_TAG_FINGER (ANIM_SPRITES_START + 64) +#define ANIM_TAG_POISON_POWDER (ANIM_SPRITES_START + 65) +#define ANIM_TAG_BROWN_TRIANGLE (ANIM_SPRITES_START + 66) // unused +#define ANIM_TAG_SLEEP_POWDER (ANIM_SPRITES_START + 67) +#define ANIM_TAG_STUN_SPORE (ANIM_SPRITES_START + 68) +#define ANIM_TAG_POWDER (ANIM_SPRITES_START + 69) // unused +#define ANIM_TAG_SPARKLE_3 (ANIM_SPRITES_START + 70) +#define ANIM_TAG_SPARKLE_4 (ANIM_SPRITES_START + 71) +#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 72) +#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73) +#define ANIM_TAG_MUD_SAND (ANIM_SPRITES_START + 74) +#define ANIM_TAG_ALERT (ANIM_SPRITES_START + 75) +#define ANIM_TAG_BLUE_FLAMES (ANIM_SPRITES_START + 76) // unused +#define ANIM_TAG_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77) // unused +#define ANIM_TAG_SHOCK_4 (ANIM_SPRITES_START + 78) // unused +#define ANIM_TAG_SHOCK (ANIM_SPRITES_START + 79) +#define ANIM_TAG_BELL_2 (ANIM_SPRITES_START + 80) // unused +#define ANIM_TAG_PINK_GLOVE (ANIM_SPRITES_START + 81) // unused +#define ANIM_TAG_BLUE_LINES (ANIM_SPRITES_START + 82) // unused +#define ANIM_TAG_IMPACT_3 (ANIM_SPRITES_START + 83) // unused +#define ANIM_TAG_IMPACT_2 (ANIM_SPRITES_START + 84) // unused +#define ANIM_TAG_RETICLE (ANIM_SPRITES_START + 85) // unused +#define ANIM_TAG_BREATH (ANIM_SPRITES_START + 86) +#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87) +#define ANIM_TAG_SNOWBALL (ANIM_SPRITES_START + 88) // unused +#define ANIM_TAG_VINE (ANIM_SPRITES_START + 89) // unused +#define ANIM_TAG_SWORD_2 (ANIM_SPRITES_START + 90) // unused +#define ANIM_TAG_CLAPPING (ANIM_SPRITES_START + 91) // unused +#define ANIM_TAG_RED_TUBE (ANIM_SPRITES_START + 92) // unused +#define ANIM_TAG_AMNESIA (ANIM_SPRITES_START + 93) +#define ANIM_TAG_STRING_2 (ANIM_SPRITES_START + 94) // unused +#define ANIM_TAG_PENCIL_2 (ANIM_SPRITES_START + 95) // unused +#define ANIM_TAG_PETAL (ANIM_SPRITES_START + 96) // unused +#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97) +#define ANIM_TAG_WEB (ANIM_SPRITES_START + 98) // unused +#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99) +#define ANIM_TAG_COIN (ANIM_SPRITES_START + 100) +#define ANIM_TAG_CRACKED_EGG (ANIM_SPRITES_START + 101) // unused +#define ANIM_TAG_HATCHED_EGG (ANIM_SPRITES_START + 102) // unused +#define ANIM_TAG_FRESH_EGG (ANIM_SPRITES_START + 103) // unused +#define ANIM_TAG_FANGS (ANIM_SPRITES_START + 104) // unused +#define ANIM_TAG_EXPLOSION_2 (ANIM_SPRITES_START + 105) // unused +#define ANIM_TAG_EXPLOSION_3 (ANIM_SPRITES_START + 106) // unused +#define ANIM_TAG_WATER_DROPLET (ANIM_SPRITES_START + 107) // unused +#define ANIM_TAG_WATER_DROPLET_2 (ANIM_SPRITES_START + 108) // unused +#define ANIM_TAG_SEED_2 (ANIM_SPRITES_START + 109) // unused +#define ANIM_TAG_SPROUT (ANIM_SPRITES_START + 110) // unused +#define ANIM_TAG_RED_WAND (ANIM_SPRITES_START + 111) // unused +#define ANIM_TAG_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112) // unused +#define ANIM_TAG_WATER_COLUMN (ANIM_SPRITES_START + 113) // unused +#define ANIM_TAG_MUD_UNK (ANIM_SPRITES_START + 114) // unused +#define ANIM_TAG_RAIN_DROPS (ANIM_SPRITES_START + 115) +#define ANIM_TAG_FURY_SWIPES (ANIM_SPRITES_START + 116) // unused +#define ANIM_TAG_VINE_2 (ANIM_SPRITES_START + 117) // unused +#define ANIM_TAG_TEETH (ANIM_SPRITES_START + 118) // unused +#define ANIM_TAG_BONE_2 (ANIM_SPRITES_START + 119) // unused +#define ANIM_TAG_WHITE_BAG (ANIM_SPRITES_START + 120) // unused +#define ANIM_TAG_UNKNOWN (ANIM_SPRITES_START + 121) // unused +#define ANIM_TAG_PURPLE_CORAL (ANIM_SPRITES_START + 122) // unused +#define ANIM_TAG_PURPLE_DROPLET (ANIM_SPRITES_START + 123) // unused +#define ANIM_TAG_SHOCK_2 (ANIM_SPRITES_START + 124) // unused +#define ANIM_TAG_CLOSING_EYE_2 (ANIM_SPRITES_START + 125) // unused +#define ANIM_TAG_METAL_BALL (ANIM_SPRITES_START + 126) // unused +#define ANIM_TAG_MONSTER_DOLL (ANIM_SPRITES_START + 127) // unused +#define ANIM_TAG_WHIRLWIND (ANIM_SPRITES_START + 128) // unused +#define ANIM_TAG_WHIRLWIND_2 (ANIM_SPRITES_START + 129) // unused +#define ANIM_TAG_EXPLOSION_4 (ANIM_SPRITES_START + 130) // unused +#define ANIM_TAG_EXPLOSION_5 (ANIM_SPRITES_START + 131) // unused +#define ANIM_TAG_TONGUE (ANIM_SPRITES_START + 132) // unused +#define ANIM_TAG_SMOKE (ANIM_SPRITES_START + 133) // unused +#define ANIM_TAG_SMOKE_2 (ANIM_SPRITES_START + 134) // unused +#define ANIM_TAG_IMPACT (ANIM_SPRITES_START + 135) +#define ANIM_TAG_CIRCLE_IMPACT (ANIM_SPRITES_START + 136) +#define ANIM_TAG_SCRATCH (ANIM_SPRITES_START + 137) +#define ANIM_TAG_CUT (ANIM_SPRITES_START + 138) +#define ANIM_TAG_SHARP_TEETH (ANIM_SPRITES_START + 139) +#define ANIM_TAG_RAINBOW_RINGS (ANIM_SPRITES_START + 140) +#define ANIM_TAG_ICE_CRYSTALS (ANIM_SPRITES_START + 141) +#define ANIM_TAG_ICE_SPIKES (ANIM_SPRITES_START + 142) +#define ANIM_TAG_HANDS_AND_FEET (ANIM_SPRITES_START + 143) +#define ANIM_TAG_MIST_CLOUD (ANIM_SPRITES_START + 144) +#define ANIM_TAG_CLAMP (ANIM_SPRITES_START + 145) +#define ANIM_TAG_BUBBLE (ANIM_SPRITES_START + 146) +#define ANIM_TAG_ORBS (ANIM_SPRITES_START + 147) +#define ANIM_TAG_WATER_IMPACT (ANIM_SPRITES_START + 148) +#define ANIM_TAG_WATER_ORB (ANIM_SPRITES_START + 149) +#define ANIM_TAG_POISON_BUBBLE (ANIM_SPRITES_START + 150) +#define ANIM_TAG_TOXIC_BUBBLE (ANIM_SPRITES_START + 151) +#define ANIM_TAG_SPIKES (ANIM_SPRITES_START + 152) +#define ANIM_TAG_HORN_HIT_2 (ANIM_SPRITES_START + 153) +#define ANIM_TAG_AIR_WAVE_2 (ANIM_SPRITES_START + 154) +#define ANIM_TAG_SMALL_BUBBLES (ANIM_SPRITES_START + 155) +#define ANIM_TAG_ROUND_SHADOW (ANIM_SPRITES_START + 156) +#define ANIM_TAG_SUNLIGHT (ANIM_SPRITES_START + 157) +#define ANIM_TAG_SPORE (ANIM_SPRITES_START + 158) +#define ANIM_TAG_FLOWER (ANIM_SPRITES_START + 159) +#define ANIM_TAG_RAZOR_LEAF (ANIM_SPRITES_START + 160) +#define ANIM_TAG_NEEDLE (ANIM_SPRITES_START + 161) +#define ANIM_TAG_WHIRLWIND_LINES (ANIM_SPRITES_START + 162) +#define ANIM_TAG_GOLD_RING (ANIM_SPRITES_START + 163) +#define ANIM_TAG_PURPLE_RING (ANIM_SPRITES_START + 164) +#define ANIM_TAG_BLUE_RING (ANIM_SPRITES_START + 165) +#define ANIM_TAG_GREEN_LIGHT_WALL (ANIM_SPRITES_START + 166) +#define ANIM_TAG_BLUE_LIGHT_WALL (ANIM_SPRITES_START + 167) +#define ANIM_TAG_RED_LIGHT_WALL (ANIM_SPRITES_START + 168) +#define ANIM_TAG_GRAY_LIGHT_WALL (ANIM_SPRITES_START + 169) +#define ANIM_TAG_ORANGE_LIGHT_WALL (ANIM_SPRITES_START + 170) +#define ANIM_TAG_BLACK_BALL_2 (ANIM_SPRITES_START + 171) +#define ANIM_TAG_PURPLE_GAS_CLOUD (ANIM_SPRITES_START + 172) +#define ANIM_TAG_SPARK_H (ANIM_SPRITES_START + 173) +#define ANIM_TAG_YELLOW_STAR (ANIM_SPRITES_START + 174) +#define ANIM_TAG_LARGE_FRESH_EGG (ANIM_SPRITES_START + 175) +#define ANIM_TAG_SHADOW_BALL (ANIM_SPRITES_START + 176) +#define ANIM_TAG_LICK (ANIM_SPRITES_START + 177) +#define ANIM_TAG_VOID_LINES (ANIM_SPRITES_START + 178) +#define ANIM_TAG_STRING (ANIM_SPRITES_START + 179) +#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180) +#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181) +#define ANIM_TAG_LIGHTBULB (ANIM_SPRITES_START + 182) // unused +#define ANIM_TAG_SLASH (ANIM_SPRITES_START + 183) +#define ANIM_TAG_FOCUS_ENERGY (ANIM_SPRITES_START + 184) +#define ANIM_TAG_SPHERE_TO_CUBE (ANIM_SPRITES_START + 185) +#define ANIM_TAG_TENDRILS (ANIM_SPRITES_START + 186) +#define ANIM_TAG_EYE (ANIM_SPRITES_START + 187) +#define ANIM_TAG_WHITE_SHADOW (ANIM_SPRITES_START + 188) +#define ANIM_TAG_TEAL_ALERT (ANIM_SPRITES_START + 189) +#define ANIM_TAG_OPENING_EYE (ANIM_SPRITES_START + 190) +#define ANIM_TAG_ROUND_WHITE_HALO (ANIM_SPRITES_START + 191) +#define ANIM_TAG_FANG_ATTACK (ANIM_SPRITES_START + 192) +#define ANIM_TAG_PURPLE_HAND_OUTLINE (ANIM_SPRITES_START + 193) +#define ANIM_TAG_MOON (ANIM_SPRITES_START + 194) +#define ANIM_TAG_GREEN_SPARKLE (ANIM_SPRITES_START + 195) +#define ANIM_TAG_SPIRAL (ANIM_SPRITES_START + 196) +#define ANIM_TAG_SNORE_Z (ANIM_SPRITES_START + 197) +#define ANIM_TAG_EXPLOSION (ANIM_SPRITES_START + 198) +#define ANIM_TAG_NAIL (ANIM_SPRITES_START + 199) +#define ANIM_TAG_GHOSTLY_SPIRIT (ANIM_SPRITES_START + 200) +#define ANIM_TAG_WARM_ROCK (ANIM_SPRITES_START + 201) +#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202) +#define ANIM_TAG_THIN_RING (ANIM_SPRITES_START + 203) +#define ANIM_TAG_PUNCH_IMPACT (ANIM_SPRITES_START + 204) // unused +#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205) +#define ANIM_TAG_MUSIC_NOTES_2 (ANIM_SPRITES_START + 206) +#define ANIM_TAG_SPEED_DUST (ANIM_SPRITES_START + 207) +#define ANIM_TAG_TORN_METAL (ANIM_SPRITES_START + 208) +#define ANIM_TAG_THOUGHT_BUBBLE (ANIM_SPRITES_START + 209) +#define ANIM_TAG_MAGENTA_HEART (ANIM_SPRITES_START + 210) +#define ANIM_TAG_ELECTRIC_ORBS (ANIM_SPRITES_START + 211) +#define ANIM_TAG_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 212) +#define ANIM_TAG_ELECTRICITY (ANIM_SPRITES_START + 213) +#define ANIM_TAG_FINGER_2 (ANIM_SPRITES_START + 214) +#define ANIM_TAG_MOVEMENT_WAVES (ANIM_SPRITES_START + 215) +#define ANIM_TAG_RED_HEART (ANIM_SPRITES_START + 216) +#define ANIM_TAG_RED_ORB (ANIM_SPRITES_START + 217) +#define ANIM_TAG_EYE_SPARKLE (ANIM_SPRITES_START + 218) +#define ANIM_TAG_PINK_HEART (ANIM_SPRITES_START + 219) +#define ANIM_TAG_ANGEL (ANIM_SPRITES_START + 220) +#define ANIM_TAG_DEVIL (ANIM_SPRITES_START + 221) +#define ANIM_TAG_SWIPE (ANIM_SPRITES_START + 222) +#define ANIM_TAG_ROOTS (ANIM_SPRITES_START + 223) +#define ANIM_TAG_ITEM_BAG (ANIM_SPRITES_START + 224) +#define ANIM_TAG_JAGGED_MUSIC_NOTE (ANIM_SPRITES_START + 225) +#define ANIM_TAG_POKEBALL (ANIM_SPRITES_START + 226) +#define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) +#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) +#define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) +#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) +#define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) +#define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) +#define ANIM_TAG_ECLIPSING_ORB (ANIM_SPRITES_START + 234) +#define ANIM_TAG_GRAY_ORB (ANIM_SPRITES_START + 235) +#define ANIM_TAG_BLUE_ORB (ANIM_SPRITES_START + 236) +#define ANIM_TAG_RED_ORB_2 (ANIM_SPRITES_START + 237) +#define ANIM_TAG_PINK_PETAL (ANIM_SPRITES_START + 238) +#define ANIM_TAG_PAIN_SPLIT (ANIM_SPRITES_START + 239) +#define ANIM_TAG_CONFETTI (ANIM_SPRITES_START + 240) +#define ANIM_TAG_GREEN_STAR (ANIM_SPRITES_START + 241) +#define ANIM_TAG_PINK_CLOUD (ANIM_SPRITES_START + 242) +#define ANIM_TAG_SWEAT_DROP (ANIM_SPRITES_START + 243) +#define ANIM_TAG_GUARD_RING (ANIM_SPRITES_START + 244) +#define ANIM_TAG_PURPLE_SCRATCH (ANIM_SPRITES_START + 245) +#define ANIM_TAG_PURPLE_SWIPE (ANIM_SPRITES_START + 246) +#define ANIM_TAG_TAG_HAND (ANIM_SPRITES_START + 247) +#define ANIM_TAG_SMALL_RED_EYE (ANIM_SPRITES_START + 248) +#define ANIM_TAG_HOLLOW_ORB (ANIM_SPRITES_START + 249) +#define ANIM_TAG_X_SIGN (ANIM_SPRITES_START + 250) +#define ANIM_TAG_BLUEGREEN_ORB (ANIM_SPRITES_START + 251) +#define ANIM_TAG_PAW_PRINT (ANIM_SPRITES_START + 252) +#define ANIM_TAG_PURPLE_FLAME (ANIM_SPRITES_START + 253) +#define ANIM_TAG_RED_BALL (ANIM_SPRITES_START + 254) +#define ANIM_TAG_SMELLINGSALT_EFFECT (ANIM_SPRITES_START + 255) +#define ANIM_TAG_METEOR (ANIM_SPRITES_START + 256) +#define ANIM_TAG_FLAT_ROCK (ANIM_SPRITES_START + 257) +#define ANIM_TAG_MAGNIFYING_GLASS (ANIM_SPRITES_START + 258) +#define ANIM_TAG_BROWN_ORB (ANIM_SPRITES_START + 259) +#define ANIM_TAG_METAL_SOUND_WAVES (ANIM_SPRITES_START + 260) +#define ANIM_TAG_FLYING_DIRT (ANIM_SPRITES_START + 261) +#define ANIM_TAG_ICICLE_SPEAR (ANIM_SPRITES_START + 262) +#define ANIM_TAG_HAIL (ANIM_SPRITES_START + 263) +#define ANIM_TAG_GLOWY_RED_ORB (ANIM_SPRITES_START + 264) +#define ANIM_TAG_GLOWY_GREEN_ORB (ANIM_SPRITES_START + 265) +#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266) +#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267) +#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268) +#define ANIM_TAG_POKEBLOCK (ANIM_SPRITES_START + 269) +#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270) +#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271) +#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272) +#define ANIM_TAG_SWEAT_BEAD (ANIM_SPRITES_START + 273) +#define ANIM_TAG_GEM_1 (ANIM_SPRITES_START + 274) // unused +#define ANIM_TAG_GEM_2 (ANIM_SPRITES_START + 275) // unused +#define ANIM_TAG_GEM_3 (ANIM_SPRITES_START + 276) // unused +#define ANIM_TAG_SLAM_HIT_2 (ANIM_SPRITES_START + 277) +#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278) +#define ANIM_TAG_RED_PARTICLES (ANIM_SPRITES_START + 279) // unused +#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280) +#define ANIM_TAG_DIRT_MOUND (ANIM_SPRITES_START + 281) +#define ANIM_TAG_SHOCK_3 (ANIM_SPRITES_START + 282) +#define ANIM_TAG_WEATHER_BALL (ANIM_SPRITES_START + 283) +#define ANIM_TAG_BIRD (ANIM_SPRITES_START + 284) +#define ANIM_TAG_CROSS_IMPACT (ANIM_SPRITES_START + 285) +#define ANIM_TAG_SLASH_2 (ANIM_SPRITES_START + 286) +#define ANIM_TAG_WHIP_HIT (ANIM_SPRITES_START + 287) +#define ANIM_TAG_BLUE_RING_2 (ANIM_SPRITES_START + 288) + +// battlers +#define ANIM_ATTACKER 0 +#define ANIM_TARGET 1 +#define ANIM_ATK_PARTNER 2 +#define ANIM_DEF_PARTNER 3 + +// stereo panning constants [0-255] +// +// 0 +// . . +// . . +// 192 . . 63 +// . . +// . . +// . . +// 127 +// +#define SOUND_PAN_ATTACKER -64 +#define SOUND_PAN_TARGET 63 + +// move background ids +#define BG_DARK_ 0 // the same as BG_DARK but is unused +#define BG_DARK 1 +#define BG_GHOST 2 +#define BG_PSYCHIC 3 +#define BG_IMPACT_OPPONENT 4 +#define BG_IMPACT_PLAYER 5 +#define BG_IMPACT_CONTESTS 6 +#define BG_DRILL 7 +#define BG_DRILL_CONTESTS 8 +#define BG_HIGHSPEED_OPPONENT 9 +#define BG_HIGHSPEED_PLAYER 10 +#define BG_THUNDER 11 +#define BG_GUILLOTINE_OPPONENT 12 +#define BG_GUILLOTINE_PLAYER 13 +#define BG_GUILLOTINE_CONTESTS 14 +#define BG_ICE 15 +#define BG_COSMIC 16 +#define BG_IN_AIR 17 +#define BG_SKY 18 +#define BG_SKY_CONTESTS 19 +#define BG_AURORA 20 +#define BG_FISSURE 21 +#define BG_BUG_OPPONENT 22 +#define BG_BUG_PLAYER 23 +#define BG_SOLARBEAM_OPPONENT 24 +#define BG_SOLARBEAM_PLAYER 25 +#define BG_SOLARBEAM_CONTESTS 26 + +// table ids for general animations +#define B_ANIM_CASTFORM_CHANGE 0x0 +#define B_ANIM_STATS_CHANGE 0x1 +#define B_ANIM_SUBSTITUTE_FADE 0x2 +#define B_ANIM_SUBSTITUTE_APPEAR 0x3 +#define B_ANIM_POKEBLOCK_THROW 0x4 +#define B_ANIM_ITEM_KNOCKOFF 0x5 +#define B_ANIM_TURN_TRAP 0x6 +#define B_ANIM_ITEM_EFFECT 0x7 +#define B_ANIM_SMOKEBALL_ESCAPE 0x8 +#define B_ANIM_HANGED_ON 0x9 +#define B_ANIM_RAIN_CONTINUES 0xA +#define B_ANIM_SUN_CONTINUES 0xB +#define B_ANIM_SANDSTORM_CONTINUES 0xC +#define B_ANIM_HAIL_CONTINUES 0xD +#define B_ANIM_LEECH_SEED_DRAIN 0xE +#define B_ANIM_MON_HIT 0xF +#define B_ANIM_ITEM_STEAL 0x10 +#define B_ANIM_SNATCH_MOVE 0x11 +#define B_ANIM_FUTURE_SIGHT_HIT 0x12 +#define B_ANIM_DOOM_DESIRE_HIT 0x13 +#define B_ANIM_FOCUS_PUNCH_SETUP 0x14 +#define B_ANIM_INGRAIN_HEAL 0x15 +#define B_ANIM_WISH_HEAL 0x16 + +// special animations table +#define B_ANIM_LVL_UP 0x0 +#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 +#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 +#define B_ANIM_BALL_THROW 0x3 +#define B_ANIM_SAFARI_BALL_THROW 0x4 +#define B_ANIM_SUBSTITUTE_TO_MON 0x5 +#define B_ANIM_MON_TO_SUBSTITUTE 0x6 + +// status animation table +#define B_ANIM_STATUS_PSN 0x0 +#define B_ANIM_STATUS_CONFUSION 0x1 +#define B_ANIM_STATUS_BRN 0x2 +#define B_ANIM_STATUS_INFATUATION 0x3 +#define B_ANIM_STATUS_SLP 0x4 +#define B_ANIM_STATUS_PRZ 0x5 +#define B_ANIM_STATUS_FRZ 0x6 +#define B_ANIM_STATUS_CURSED 0x7 +#define B_ANIM_STATUS_NIGHTMARE 0x8 +#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist + +// Most tasks return a value to gBattleAnimArgs[7]. +#define ARG_RET_ID 0x7 + +// Trapping Wrap-like moves end turn animation. +#define TRAP_ANIM_BIND 0 +#define TRAP_ANIM_WRAP 0 +#define TRAP_ANIM_FIRE_SPIN 1 +#define TRAP_ANIM_WHIRLPOOL 2 +#define TRAP_ANIM_CLAMP 3 +#define TRAP_ANIM_SAND_TOMB 4 + +// Weather defines for battle animation scripts. +#define ANIM_WEATHER_NONE 0 +#define ANIM_WEATHER_SUN 1 +#define ANIM_WEATHER_RAIN 2 +#define ANIM_WEATHER_SANDSTORM 3 +#define ANIM_WEATHER_HAIL 4 + +// Battle mon back animations. +#define BACK_ANIM_NONE 0x00 +#define BACK_ANIM_H_SLIDE_QUICK 0x01 +#define BACK_ANIM_H_SLIDE 0x02 +#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03 +#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04 +#define BACK_ANIM_SHRINK_GROW_1 0x05 +#define BACK_ANIM_GROW_1 0x06 +#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07 +#define BACK_ANIM_HORIZONTAL_SHAKE 0x08 +#define BACK_ANIM_VERTICAL_SHAKE 0x09 +#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a +#define BACK_ANIM_VERTICAL_STRETCH 0x0b +#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c +#define BACK_ANIM_GROW_2 0x0d +#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e +#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f +#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10 +#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11 +#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12 +#define BACK_ANIM_DIP_RIGHT_SIDE 0x13 +#define BACK_ANIM_SHRINK_GROW_2 0x14 +#define BACK_ANIM_JOLT_RIGHT 0x15 +#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16 +#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17 +#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18 +#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19 + + +#endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/data2.h b/include/data2.h index 421695f18..4378e8226 100644 --- a/include/data2.h +++ b/include/data2.h @@ -8,7 +8,7 @@ struct MonCoords { // This would use a bitfield, but some function // uses it as a u8 and casting won't match. - u8 coords; // u8 x:4, y:4; + u8 size; // u8 width:4, height:4; u8 y_offset; }; diff --git a/include/pokeball.h b/include/pokeball.h index 5545f8870..ee0478eab 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -31,5 +31,6 @@ void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); +void sub_804BD94(u8 battler); #endif // GUARD_POKEBALL_H diff --git a/include/strings.h b/include/strings.h index 85b67ed57..8c97cef13 100644 --- a/include/strings.h +++ b/include/strings.h @@ -179,7 +179,7 @@ extern const u8 gUnknown_841623D[]; extern const u8 gUnknown_84162BD[]; extern const u8 gUnknown_841D148[]; -// pokemon.c +// pokemon extern const u8 BattleText_Rose[]; extern const u8 BattleText_UnknownString3[]; extern const u8 BattleText_GetPumped[]; @@ -203,4 +203,9 @@ extern const u8 gString_BattleRecords_ColumnHeaders[]; extern const u8 gString_BattleRecords_7Dashes[]; extern const u8 gString_BattleRecords_4Dashes[]; +// battle_controller_safari +extern const u8 gUnknown_83FDA4C[]; +extern const u8 gUnknown_83FE747[]; +extern const u8 gUnknown_83FE6E6[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index f268484e5..10c8d6245 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -201,7 +201,7 @@ SECTIONS { src/mystery_event_script.o(.text); asm/field_effect_helpers.o(.text); asm/battle_anim_sound_tasks.o(.text); - asm/battle_controller_safari.o(.text); + src/battle_controller_safari.o(.text); src/fldeff_sweetscent.o(.text); asm/battle_anim_effects_3.o(.text); asm/learn_move.o(.text); @@ -423,6 +423,8 @@ SECTIONS { data/data_83F5738.o(.rodata.83FB134); src/save.o(.rodata); data/data_83FECCC.o(.rodata); + src/battle_controller_safari.o(.rodata); + data/data_83FECCC.o(.rodata.83FEDE4); src/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); src/diploma.o(.rodata); diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c new file mode 100644 index 000000000..5a2f20ef4 --- /dev/null +++ b/src/battle_controller_safari.c @@ -0,0 +1,677 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "bg.h" +#include "data2.h" +#include "item_menu.h" +#include "link.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "pokeball.h" +#include "pokemon.h" +#include "reshow_battle_screen.h" +#include "sound.h" +#include "task.h" +#include "text.h" +#include "util.h" +#include "window.h" +#include "strings.h" +#include "constants/songs.h" +#include "constants/battle_anim.h" + +static void SafariHandleGetMonData(void); +static void SafariHandleGetRawMonData(void); +static void SafariHandleSetMonData(void); +static void SafariHandleSetRawMonData(void); +static void SafariHandleLoadMonSprite(void); +static void SafariHandleSwitchInAnim(void); +static void SafariHandleReturnMonToBall(void); +static void SafariHandleDrawTrainerPic(void); +static void SafariHandleTrainerSlide(void); +static void SafariHandleTrainerSlideBack(void); +static void SafariHandleFaintAnimation(void); +static void SafariHandlePaletteFade(void); +static void SafariHandleSuccessBallThrowAnim(void); +static void SafariHandleBallThrowAnim(void); +static void SafariHandlePause(void); +static void SafariHandleMoveAnimation(void); +static void SafariHandlePrintString(void); +static void SafariHandlePrintSelectionString(void); +static void SafariHandleChooseAction(void); +static void SafariHandleUnknownYesNoBox(void); +static void SafariHandleChooseMove(void); +static void SafariHandleChooseItem(void); +static void SafariHandleChoosePokemon(void); +static void SafariHandleCmd23(void); +static void SafariHandleHealthBarUpdate(void); +static void SafariHandleExpUpdate(void); +static void SafariHandleStatusIconUpdate(void); +static void SafariHandleStatusAnimation(void); +static void SafariHandleStatusXor(void); +static void SafariHandleDataTransfer(void); +static void SafariHandleDMA3Transfer(void); +static void SafariHandlePlayBGM(void); +static void SafariHandleCmd32(void); +static void SafariHandleTwoReturnValues(void); +static void SafariHandleChosenMonReturnValue(void); +static void SafariHandleOneReturnValue(void); +static void SafariHandleOneReturnValue_Duplicate(void); +static void SafariHandleCmd37(void); +static void SafariHandleCmd38(void); +static void SafariHandleCmd39(void); +static void SafariHandleCmd40(void); +static void SafariHandleHitAnimation(void); +static void SafariHandleCmd42(void); +static void SafariHandlePlaySE(void); +static void SafariHandlePlayFanfareOrBGM(void); +static void SafariHandleFaintingCry(void); +static void SafariHandleIntroSlide(void); +static void SafariHandleIntroTrainerBallThrow(void); +static void SafariHandleDrawPartyStatusSummary(void); +static void SafariHandleHidePartyStatusSummary(void); +static void SafariHandleEndBounceEffect(void); +static void SafariHandleSpriteInvisibility(void); +static void SafariHandleBattleAnimation(void); +static void SafariHandleLinkStandbyMsg(void); +static void SafariHandleResetActionMoveSelection(void); +static void SafariHandleCmd55(void); +static void SafariCmdEnd(void); + +static void SafariBufferRunCommand(void); +static void SafariBufferExecCompleted(void); +static void CompleteWhenChosePokeblock(void); + +static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + SafariHandleGetMonData, + SafariHandleGetRawMonData, + SafariHandleSetMonData, + SafariHandleSetRawMonData, + SafariHandleLoadMonSprite, + SafariHandleSwitchInAnim, + SafariHandleReturnMonToBall, + SafariHandleDrawTrainerPic, + SafariHandleTrainerSlide, + SafariHandleTrainerSlideBack, + SafariHandleFaintAnimation, + SafariHandlePaletteFade, + SafariHandleSuccessBallThrowAnim, + SafariHandleBallThrowAnim, + SafariHandlePause, + SafariHandleMoveAnimation, + SafariHandlePrintString, + SafariHandlePrintSelectionString, + SafariHandleChooseAction, + SafariHandleUnknownYesNoBox, + SafariHandleChooseMove, + SafariHandleChooseItem, + SafariHandleChoosePokemon, + SafariHandleCmd23, + SafariHandleHealthBarUpdate, + SafariHandleExpUpdate, + SafariHandleStatusIconUpdate, + SafariHandleStatusAnimation, + SafariHandleStatusXor, + SafariHandleDataTransfer, + SafariHandleDMA3Transfer, + SafariHandlePlayBGM, + SafariHandleCmd32, + SafariHandleTwoReturnValues, + SafariHandleChosenMonReturnValue, + SafariHandleOneReturnValue, + SafariHandleOneReturnValue_Duplicate, + SafariHandleCmd37, + SafariHandleCmd38, + SafariHandleCmd39, + SafariHandleCmd40, + SafariHandleHitAnimation, + SafariHandleCmd42, + SafariHandlePlaySE, + SafariHandlePlayFanfareOrBGM, + SafariHandleFaintingCry, + SafariHandleIntroSlide, + SafariHandleIntroTrainerBallThrow, + SafariHandleDrawPartyStatusSummary, + SafariHandleHidePartyStatusSummary, + SafariHandleEndBounceEffect, + SafariHandleSpriteInvisibility, + SafariHandleBattleAnimation, + SafariHandleLinkStandbyMsg, + SafariHandleResetActionMoveSelection, + SafariHandleCmd55, + SafariCmdEnd, +}; + +// not used +static void SpriteCB_Null4(struct Sprite *sprite) +{ +} + +void SetControllerToSafari(void) +{ + gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand; +} + +static void SafariBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sSafariBufferCommands)) + sSafariBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + SafariBufferExecCompleted(); + } +} + +static void HandleInputChooseAction(void) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + switch (gActionSelectionCursor[gActiveBattler]) + { + case 0: + EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0); + break; + case 1: + EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0); + break; + case 2: + EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0); + break; + case 3: + EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0); + break; + } + SafariBufferExecCompleted(); + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gActionSelectionCursor[gActiveBattler] & 1) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 1)) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_UP)) + { + if (gActionSelectionCursor[gActiveBattler] & 2) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 2)) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + SafariBufferExecCompleted(); +} + +static void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + SafariBufferExecCompleted(); +} + +static void CompleteOnHealthboxSpriteCallbackDummy(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + SafariBufferExecCompleted(); +} + +static void sub_80DD7B0(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +static void CompleteOnSpecialAnimDone_0(void) +{ + if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + SafariBufferExecCompleted(); +} + +static void SafariOpenPokeblockCase(void) +{ + if (!gPaletteFade.active) + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChosePokeblock; +} + +static void CompleteWhenChosePokeblock(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + EmitOneReturnValue(1, gSpecialVar_ItemId); + SafariBufferExecCompleted(); + } +} + +static void CompleteOnFinishedBattleAnimation_3(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + SafariBufferExecCompleted(); +} + +static void SafariBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +// not used +static void CompleteOnFinishedStatusAnimation_3(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + SafariBufferExecCompleted(); +} + +static void SafariHandleGetMonData(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleGetRawMonData(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleSetMonData(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleSetRawMonData(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleLoadMonSprite(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleSwitchInAnim(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleReturnMonToBall(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleDrawTrainerPic(void) +{ + sub_8034750(gSaveBlock2Ptr->playerGender, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + 30); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void SafariHandleTrainerSlide(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleTrainerSlideBack(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleFaintAnimation(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandlePaletteFade(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleSuccessBallThrowAnim(void) +{ + gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_0; +} + +static void SafariHandleBallThrowAnim(void) +{ + u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1]; + + gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_0; +} + +static void SafariHandlePause(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleMoveAnimation(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; +} + +static void SafariHandlePrintSelectionString(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + SafariHandlePrintString(); + else + SafariBufferExecCompleted(); +} + +static void HandleChooseActionAfterDma3(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction; + } +} + +static void SafariHandleChooseAction(void) +{ + s32 i; + + gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; + BattlePutTextOnWindow(gUnknown_83FDA4C, 0); + BattlePutTextOnWindow(gUnknown_83FE747, 2); + for (i = 0; i < 4; ++i) + ActionSelectionDestroyCursorAt(i); + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FE6E6); + BattlePutTextOnWindow(gDisplayedStringBattle, 1); +} + +static void SafariHandleUnknownYesNoBox(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleChooseMove(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleChooseItem(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = SafariOpenPokeblockCase; + gBattlerInMenuId = gActiveBattler; +} + +static void SafariHandleChoosePokemon(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd23(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleHealthBarUpdate(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleExpUpdate(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleStatusIconUpdate(void) +{ + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_BALLS_TEXT); + SafariBufferExecCompleted(); +} + +static void SafariHandleStatusAnimation(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleStatusXor(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleDataTransfer(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleDMA3Transfer(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandlePlayBGM(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd32(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleTwoReturnValues(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleChosenMonReturnValue(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleOneReturnValue(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleOneReturnValue_Duplicate(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd37(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd38(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd39(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd40(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleHitAnimation(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd42(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandlePlaySE(void) +{ + s8 pan; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan); + SafariBufferExecCompleted(); +} + +static void SafariHandlePlayFanfareOrBGM(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + SafariBufferExecCompleted(); +} + +static void SafariHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry1(species, 25); + SafariBufferExecCompleted(); +} + +static void SafariHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + SafariBufferExecCompleted(); +} + +static void SafariHandleIntroTrainerBallThrow(void) +{ + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_ALL_TEXT); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthboxSpriteCallbackDummy; +} + +static void SafariHandleDrawPartyStatusSummary(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleHidePartyStatusSummary(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleEndBounceEffect(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleSpriteInvisibility(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleBattleAnimation(void) +{ + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + SafariBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation_3; +} + +static void SafariHandleLinkStandbyMsg(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleResetActionMoveSelection(void) +{ + SafariBufferExecCompleted(); +} + +static void SafariHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + SafariBufferExecCompleted(); + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)) + gBattlerControllerFuncs[gActiveBattler] = sub_80DD7B0; +} + +static void SafariCmdEnd(void) +{ +} diff --git a/sym_common.txt b/sym_common.txt index 6e35fb92e..3ed97758a 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -105,7 +105,7 @@ gUnknown_3004F70: @ 3004F70 gUnknown_3004F74: @ 3004F74 .space 0xC -gUnknown_3004F80: @ 3004F80 +gPreBattleCallback1: @ 3004F80 .space 0x4 gUnknown_3004F84: @ 3004F84 @@ -117,7 +117,7 @@ gBattleResults: @ 3004F90 gUnknown_3004FD4: @ 3004FD4 .space 0xC -gUnknown_3004FE0: @ 3004FE0 +gBattlerControllerFuncs: @ 3004FE0 .space 0x10 gHealthboxSpriteIds: @ 3004FF0 diff --git a/sym_ewram.txt b/sym_ewram.txt index 72572fbdf..7efc7a4bd 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -166,7 +166,7 @@ gUnknown_2022BBC: @ 2022BBC gUnknown_2022BC0: @ 2022BC0 .space 0x4 -gUnknown_2022BC4: @ 2022BC4 +gBattleBufferA: @ 2022BC4 .space 0x2 gUnknown_2022BC6: @ 2022BC6 @@ -187,7 +187,7 @@ gUnknown_20233C8: @ 20233C8 gActiveBattler: @ 2023BC4 .space 0x4 -gUnknown_2023BC8: @ 2023BC8 +gBattleControllerExecFlags: @ 2023BC8 .space 0x4 gBattlersCount: @ 2023BCC @@ -412,7 +412,7 @@ gUnknown_2023FF0: @ 2023FF0 gBattleResources: @ 2023FF4 .space 0x4 -gUnknown_2023FF8: @ 2023FF8 +gActionSelectionCursor: @ 2023FF8 .space 0x4 gUnknown_2023FFC: @ 2023FFC @@ -424,7 +424,7 @@ gUnknown_2024000: @ 2024000 gBattlerInMenuId: @ 2024004 .space 0x1 -gUnknown_2024005: @ 2024005 +gDoingBattleAnim: @ 2024005 .space 0x3 gTransformedPersonalities: @ 2024008 From 604347808138a0514933b3b994ac0f4eb62237a8 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 08:34:15 +0800 Subject: [PATCH 004/100] ported battle_util2 from pokeem --- asm/battle_2.s | 8 +- asm/battle_controllers.s | 20 +-- asm/battle_script_commands.s | 2 +- asm/battle_util2.s | 333 ----------------------------------- include/battle.h | 17 +- include/battle_util2.h | 2 - include/constants/battle.h | 2 +- include/trainer_tower.h | 2 + ld_script.txt | 2 +- src/battle_util2.c | 105 +++++++++++ src/trainer_tower.c | 6 +- sym_ewram.txt | 4 +- 12 files changed, 139 insertions(+), 364 deletions(-) delete mode 100644 asm/battle_util2.s create mode 100644 src/battle_util2.c diff --git a/asm/battle_2.s b/asm/battle_2.s index 27dd08f04..d17cd21ee 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -9,7 +9,7 @@ sub_800FD9C: @ 800FD9C push {r4,lr} bl MoveSaveBlocks_ResetHeap - bl sub_802E03C + bl AllocateBattleResources bl AllocateBattleSpritesData bl AllocateMonSpritesGfx ldr r4, _0800FDCC @ =gBattleTypeFlags @@ -2425,7 +2425,7 @@ FreeRestoreBattleData: @ 8011174 bl m4aSongNumStop bl FreeMonSpritesGfx bl FreeBattleSpritesData - bl sub_802E138 + bl FreeBattleResources pop {r0} bx r0 .align 2, 0 @@ -3738,7 +3738,7 @@ _08011C10: bl sub_812C224 bl FreeMonSpritesGfx bl FreeBattleSpritesData - bl sub_802E138 + bl FreeBattleResources _08011C34: add sp, 0x4 pop {r4} @@ -11524,7 +11524,7 @@ _08015A70: bne _08015A8E bl FreeMonSpritesGfx bl FreeBattleSpritesData - bl sub_802E138 + bl FreeBattleResources _08015A8E: pop {r0} bx r0 diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s index d1de3bb17..98a38a8d3 100644 --- a/asm/battle_controllers.s +++ b/asm/battle_controllers.s @@ -1028,7 +1028,7 @@ _0800DA3E: adds r0, r5 movs r2, 0x24 ldrsh r1, [r0, r2] - ldr r4, _0800DB54 @ =gUnknown_2023FEC + ldr r4, _0800DB54 @ =gLinkBattleSendBuffer ldr r0, [r4] adds r0, r1 strb r6, [r0] @@ -1161,7 +1161,7 @@ _0800DB2C: .align 2, 0 _0800DB4C: .4byte gTasks _0800DB50: .4byte gUnknown_202286C -_0800DB54: .4byte gUnknown_2023FEC +_0800DB54: .4byte gLinkBattleSendBuffer _0800DB58: .4byte gActiveBattler _0800DB5C: .4byte sBattler_AI _0800DB60: .4byte gBattlerTarget @@ -1315,7 +1315,7 @@ _0800DC80: adds r4, r7 movs r0, 0x26 ldrsh r1, [r4, r0] - ldr r5, _0800DCBC @ =gUnknown_2023FEC + ldr r5, _0800DCBC @ =gLinkBattleSendBuffer ldr r0, [r5] adds r1, r0 ldrb r0, [r1, 0x4] @@ -1339,7 +1339,7 @@ _0800DC80: strh r0, [r4, 0x1E] b _0800DD20 .align 2, 0 -_0800DCBC: .4byte gUnknown_2023FEC +_0800DCBC: .4byte gLinkBattleSendBuffer _0800DCC0: subs r0, 0x1 strh r0, [r2, 0x22] @@ -1356,7 +1356,7 @@ _0800DCC6: adds r1, r0 movs r3, 0x26 ldrsh r2, [r1, r3] - ldr r0, _0800DD00 @ =gUnknown_2023FEC + ldr r0, _0800DD00 @ =gLinkBattleSendBuffer ldr r0, [r0] adds r2, r0 ldrb r0, [r2, 0x4] @@ -1372,7 +1372,7 @@ _0800DCC6: b _0800DD1C .align 2, 0 _0800DCFC: .4byte gTasks -_0800DD00: .4byte gUnknown_2023FEC +_0800DD00: .4byte gLinkBattleSendBuffer _0800DD04: lsls r0, r4, 2 adds r0, r4 @@ -1477,7 +1477,7 @@ _0800DD70: movs r1, 0 strh r1, [r0, 0x24] _0800DDD0: - ldr r2, _0800DE48 @ =gUnknown_2023FF0 + ldr r2, _0800DE48 @ =gLinkBattleRecvBuffer mov r4, r12 ldrb r1, [r4] lsls r0, r1, 2 @@ -1537,7 +1537,7 @@ _0800DE38: .4byte gBitTable _0800DE3C: .4byte gBlockRecvBuffer + 4 _0800DE40: .4byte gTasks _0800DE44: .4byte gUnknown_202286D -_0800DE48: .4byte gUnknown_2023FF0 +_0800DE48: .4byte gLinkBattleRecvBuffer thumb_func_end sub_800DD28 thumb_func_start Task_HandleCopyReceivedLinkBuffersData @@ -1577,7 +1577,7 @@ _0800DE82: adds r5, r0, r1 movs r0, 0x26 ldrsh r1, [r5, r0] - ldr r3, _0800DEB8 @ =gUnknown_2023FF0 + ldr r3, _0800DEB8 @ =gLinkBattleRecvBuffer mov r8, r3 ldr r0, [r3] adds r3, r1, r0 @@ -1597,7 +1597,7 @@ _0800DE82: b _0800DF7A .align 2, 0 _0800DEB4: .4byte gTasks -_0800DEB8: .4byte gUnknown_2023FF0 +_0800DEB8: .4byte gLinkBattleRecvBuffer _0800DEBC: cmp r0, 0x2 beq _0800DF64 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 5af41017e..11c522a5e 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -7510,7 +7510,7 @@ _08021392: strb r0, [r1] _080213C8: ldrb r0, [r7] - bl sub_802E228 + bl AdjustFriendshipOnBattleFaint b _0802142C .align 2, 0 _080213D0: .4byte gActiveBattler diff --git a/asm/battle_util2.s b/asm/battle_util2.s deleted file mode 100644 index 8cfbe3120..000000000 --- a/asm/battle_util2.s +++ /dev/null @@ -1,333 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_802E03C -sub_802E03C: @ 802E03C - push {r4,r5,lr} - ldr r4, _0802E118 @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _0802E050 - bl sub_815DA54 -_0802E050: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _0802E06E - ldr r5, _0802E11C @ =gUnknown_3005EE0 - movs r4, 0x3 -_0802E060: - movs r0, 0x8 - bl AllocZeroed - stm r5!, {r0} - subs r4, 0x1 - cmp r4, 0 - bge _0802E060 -_0802E06E: - ldr r4, _0802E120 @ =gBattleStruct - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - ldr r4, _0802E124 @ =gBattleResources - movs r0, 0x20 - bl AllocZeroed - str r0, [r4] - movs r0, 0xA0 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1] - movs r0, 0x10 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x4] - movs r0, 0x24 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x8] - movs r0, 0x24 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0xC] - movs r0, 0xC - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x10] - movs r0, 0x1C - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x14] - movs r0, 0x30 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x18] - movs r0, 0x24 - bl AllocZeroed - ldr r1, [r4] - str r0, [r1, 0x1C] - ldr r4, _0802E128 @ =gUnknown_2023FEC - movs r5, 0x80 - lsls r5, 5 - adds r0, r5, 0 - bl AllocZeroed - str r0, [r4] - ldr r4, _0802E12C @ =gUnknown_2023FF0 - adds r0, r5, 0 - bl AllocZeroed - str r0, [r4] - ldr r4, _0802E130 @ =gUnknown_2022BB8 - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - str r0, [r4] - ldr r4, _0802E134 @ =gUnknown_2022BBC - adds r0, r5, 0 - bl AllocZeroed - adds r1, r0, 0 - str r1, [r4] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0x2 - bl SetBgTilemapBuffer - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802E118: .4byte gBattleTypeFlags -_0802E11C: .4byte gUnknown_3005EE0 -_0802E120: .4byte gBattleStruct -_0802E124: .4byte gBattleResources -_0802E128: .4byte gUnknown_2023FEC -_0802E12C: .4byte gUnknown_2023FF0 -_0802E130: .4byte gUnknown_2022BB8 -_0802E134: .4byte gUnknown_2022BBC - thumb_func_end sub_802E03C - - thumb_func_start sub_802E138 -sub_802E138: @ 802E138 - push {r4-r6,lr} - ldr r4, _0802E208 @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _0802E14C - bl sub_815DBDC -_0802E14C: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _0802E16C - ldr r5, _0802E20C @ =gUnknown_3005EE0 - movs r6, 0 - movs r4, 0x3 -_0802E15E: - ldr r0, [r5] - bl Free - stm r5!, {r6} - subs r4, 0x1 - cmp r4, 0 - bge _0802E15E -_0802E16C: - ldr r6, _0802E210 @ =gBattleResources - ldr r0, [r6] - cmp r0, 0 - beq _0802E200 - ldr r4, _0802E214 @ =gBattleStruct - ldr r0, [r4] - bl Free - movs r5, 0 - str r5, [r4] - ldr r0, [r6] - ldr r0, [r0] - bl Free - ldr r0, [r6] - str r5, [r0] - ldr r0, [r0, 0x4] - bl Free - ldr r0, [r6] - str r5, [r0, 0x4] - ldr r0, [r0, 0x8] - bl Free - ldr r0, [r6] - str r5, [r0, 0x8] - ldr r0, [r0, 0xC] - bl Free - ldr r0, [r6] - str r5, [r0, 0xC] - ldr r0, [r0, 0x10] - bl Free - ldr r0, [r6] - str r5, [r0, 0x10] - ldr r0, [r0, 0x14] - bl Free - ldr r0, [r6] - str r5, [r0, 0x14] - ldr r0, [r0, 0x18] - bl Free - ldr r0, [r6] - str r5, [r0, 0x18] - ldr r0, [r0, 0x1C] - bl Free - ldr r0, [r6] - str r5, [r0, 0x1C] - bl Free - str r5, [r6] - ldr r4, _0802E218 @ =gUnknown_2023FEC - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r4, _0802E21C @ =gUnknown_2023FF0 - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r4, _0802E220 @ =gUnknown_2022BB8 - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r4, _0802E224 @ =gUnknown_2022BBC - ldr r0, [r4] - bl Free - str r5, [r4] -_0802E200: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802E208: .4byte gBattleTypeFlags -_0802E20C: .4byte gUnknown_3005EE0 -_0802E210: .4byte gBattleResources -_0802E214: .4byte gBattleStruct -_0802E218: .4byte gUnknown_2023FEC -_0802E21C: .4byte gUnknown_2023FF0 -_0802E220: .4byte gUnknown_2022BB8 -_0802E224: .4byte gUnknown_2022BBC - thumb_func_end sub_802E138 - - thumb_func_start sub_802E228 -sub_802E228: @ 802E228 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0802E26C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802E274 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _0802E270 @ =gBattleMons - movs r0, 0x58 - adds r1, r3, 0 - muls r1, r0 - adds r1, r2 - adds r1, 0x2A - muls r0, r4 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bls _0802E27E - adds r4, r3, 0 - b _0802E27E - .align 2, 0 -_0802E26C: .4byte gBattleTypeFlags -_0802E270: .4byte gBattleMons -_0802E274: - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 -_0802E27E: - ldr r2, _0802E2C0 @ =gBattleMons - movs r1, 0x58 - adds r0, r4, 0 - muls r0, r1 - adds r0, r2 - adds r3, r0, 0 - adds r3, 0x2A - adds r0, r5, 0 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x2A - ldrb r0, [r3] - ldrb r2, [r1] - cmp r0, r2 - bls _0802E2EC - ldrb r1, [r1] - subs r0, r1 - cmp r0, 0x1D - ble _0802E2CC - ldr r1, _0802E2C4 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802E2C8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - bl AdjustFriendship - b _0802E302 - .align 2, 0 -_0802E2C0: .4byte gBattleMons -_0802E2C4: .4byte gBattlerPartyIndexes -_0802E2C8: .4byte gPlayerParty -_0802E2CC: - ldr r1, _0802E2E4 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802E2E8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x7 - bl AdjustFriendship - b _0802E302 - .align 2, 0 -_0802E2E4: .4byte gBattlerPartyIndexes -_0802E2E8: .4byte gPlayerParty -_0802E2EC: - ldr r1, _0802E308 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802E30C @ =gPlayerParty - adds r0, r1 - movs r1, 0x7 - bl AdjustFriendship -_0802E302: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802E308: .4byte gBattlerPartyIndexes -_0802E30C: .4byte gPlayerParty - thumb_func_end sub_802E228 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle.h b/include/battle.h index 22ecce83b..ae17cdca0 100644 --- a/include/battle.h +++ b/include/battle.h @@ -236,7 +236,7 @@ extern const struct Trainer gTrainers[]; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) -struct UnknownFlags +struct ResourceFlags { u32 flags[4]; }; @@ -447,11 +447,11 @@ struct StatsArray struct BattleResources { - struct SecretBaseRecord* secretBase; - struct UnknownFlags *flags; - struct BattleScriptsStack* battleScriptsStack; - struct BattleCallbacksStack* battleCallbackStack; - struct StatsArray* statsBeforeLvlUp; + struct SecretBaseRecord *secretBase; + struct ResourceFlags *flags; + struct BattleScriptsStack *battleScriptsStack; + struct BattleCallbacksStack *battleCallbackStack; + struct StatsArray *beforeLvlUp; struct AI_ThinkingStruct *ai; struct BattleHistory *battleHistory; struct BattleScriptsStack *AI_ScriptsStack; @@ -610,7 +610,7 @@ struct BattleStruct u8 field_2A2; }; -extern struct BattleStruct* gBattleStruct; +extern struct BattleStruct *gBattleStruct; #define GET_MOVE_TYPE(move, typeArg) \ { \ @@ -975,5 +975,8 @@ extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern bool8 gDoingBattleAnim; +extern void *gUnknown_3005EE0[]; +extern u8 *gUnknown_2022BB8; +extern u8 *gUnknown_2022BBC; #endif // GUARD_BATTLE_H diff --git a/include/battle_util2.h b/include/battle_util2.h index 3b8a6f817..8ca726856 100644 --- a/include/battle_util2.h +++ b/include/battle_util2.h @@ -6,7 +6,5 @@ void AllocateBattleResources(void); void FreeBattleResources(void); void AdjustFriendshipOnBattleFaint(u8 bank); -void sub_80571DC(u8 bank, u8 arg1); -u32 sub_805725C(u8 bank); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index f886f560b..36fb4d447 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -63,7 +63,7 @@ #define BATTLE_TYPE_POKEDUDE 0x10000 #define BATTLE_TYPE_PALACE 0x20000 #define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_FACTORY 0x80000 +#define BATTLE_TYPE_TRAINER_TOWER 0x80000 #define BATTLE_TYPE_PIKE 0x100000 #define BATTLE_TYPE_PYRAMID 0x200000 #define BATTLE_TYPE_INGAME_PARTNER 0x400000 diff --git a/include/trainer_tower.h b/include/trainer_tower.h index b9c16d958..5e7a90208 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -2,5 +2,7 @@ #define GUARD_TRAINER_TOWER_H void PrintTrainerTowerRecords(void); +void InitTrainerTowerBattleStruct(void); +void FreeTrainerTowerBattleStruct(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/ld_script.txt b/ld_script.txt index 10c8d6245..2f0a7e186 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -69,7 +69,7 @@ SECTIONS { asm/battle_2.o(.text); asm/battle_util.o(.text); asm/battle_script_commands.o(.text); - asm/battle_util2.o(.text); + src/battle_util2.o(.text); asm/battle_controller_player.o(.text); src/battle_gfx_sfx_util.o(.text); asm/battle_controller_opponent.o(.text); diff --git a/src/battle_util2.c b/src/battle_util2.c new file mode 100644 index 000000000..5254ab25b --- /dev/null +++ b/src/battle_util2.c @@ -0,0 +1,105 @@ +#include "global.h" +#include "bg.h" +#include "battle.h" +#include "pokemon.h" +#include "malloc.h" +#include "trainer_tower.h" +#include "battle_util2.h" + +void AllocateBattleResources(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + InitTrainerTowerBattleStruct(); + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + void **ptr = gUnknown_3005EE0; + s32 i = 3; + + do + *ptr++ = AllocZeroed(8); + while (--i >= 0); + } + // TODO: Figure out whether 0x200 is really the size of *gBattleResources. + // The following works in pokeem: + // gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); + gBattleStruct = AllocZeroed(0x200); + gBattleResources = AllocZeroed(sizeof(*gBattleResources)); + gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase)); + gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags)); + gBattleResources->battleScriptsStack = AllocZeroed(sizeof(*gBattleResources->battleScriptsStack)); + gBattleResources->battleCallbackStack = AllocZeroed(sizeof(*gBattleResources->battleCallbackStack)); + gBattleResources->beforeLvlUp = AllocZeroed(sizeof(*gBattleResources->beforeLvlUp)); + gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai)); + gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory)); + gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack)); + gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); + gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); + gUnknown_2022BB8 = AllocZeroed(0x2000); + gUnknown_2022BBC = AllocZeroed(0x1000); + SetBgTilemapBuffer(1, gUnknown_2022BBC); + SetBgTilemapBuffer(2, gUnknown_2022BBC); +} + +void FreeBattleResources(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + FreeTrainerTowerBattleStruct(); + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + void **ptr = gUnknown_3005EE0; + void *nullPtr = NULL; + s32 i = 3; + + do + { + Free(*ptr); + *ptr++ = nullPtr; + } + while (--i >= 0); + } + if (gBattleResources != NULL) + { + FREE_AND_SET_NULL(gBattleStruct); + FREE_AND_SET_NULL(gBattleResources->secretBase); + FREE_AND_SET_NULL(gBattleResources->flags); + FREE_AND_SET_NULL(gBattleResources->battleScriptsStack); + FREE_AND_SET_NULL(gBattleResources->battleCallbackStack); + FREE_AND_SET_NULL(gBattleResources->beforeLvlUp); + FREE_AND_SET_NULL(gBattleResources->ai); + FREE_AND_SET_NULL(gBattleResources->battleHistory); + FREE_AND_SET_NULL(gBattleResources->AI_ScriptsStack); + FREE_AND_SET_NULL(gBattleResources); + FREE_AND_SET_NULL(gLinkBattleSendBuffer); + FREE_AND_SET_NULL(gLinkBattleRecvBuffer); + FREE_AND_SET_NULL(gUnknown_2022BB8); + FREE_AND_SET_NULL(gUnknown_2022BBC); + } +} + +void AdjustFriendshipOnBattleFaint(u8 battlerId) +{ + u8 opposingBattlerId, opposingBattlerId2; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + opposingBattlerId2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + if (gBattleMons[opposingBattlerId2].level > gBattleMons[opposingBattlerId].level) + opposingBattlerId = opposingBattlerId2; + } + else + { + opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + } + if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level) + { + if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29) + AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 9); + else + AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 7); + } + else + { + AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 7); + } +} diff --git a/src/trainer_tower.c b/src/trainer_tower.c index d80be781d..0415990c6 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -631,7 +631,7 @@ u8 sub_815DA3C(void) return gFacilityClassToPicIndex[gUnknown_203F45C->unk_3D]; } -void sub_815DA54(void) +void InitTrainerTowerBattleStruct(void) { u16 r10; s32 r9; @@ -660,7 +660,7 @@ void sub_815DA54(void) sub_815DD2C(); } -void sub_815DBDC(void) +void FreeTrainerTowerBattleStruct(void) { Free(gUnknown_203F45C); gUnknown_203F45C = NULL; @@ -1122,7 +1122,7 @@ void sub_815E124(u8 taskId) void sub_815E160(void) { - gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY; + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_TRAINER_TOWER; if (gUnknown_203F458->unk_0004.trainers[gUnknown_203F458->unk_0000].unk_002 == 1) gBattleTypeFlags |= BATTLE_TYPE_DOUBLE; gTrainerBattleOpponent_A = 0; diff --git a/sym_ewram.txt b/sym_ewram.txt index 7efc7a4bd..205e5e4f0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -403,10 +403,10 @@ gUnknown_2023FC8: @ 2023FC8 gBattleStruct: @ 2023FE8 .space 0x4 -gUnknown_2023FEC: @ 2023FEC +gLinkBattleSendBuffer: @ 2023FEC .space 0x4 -gUnknown_2023FF0: @ 2023FF0 +gLinkBattleRecvBuffer: @ 2023FF0 .space 0x4 gBattleResources: @ 2023FF4 From 045331d139f04169df59f4550fd2f5fadac14a58 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 02:54:50 +0800 Subject: [PATCH 005/100] ported battle_controllers from pokeem --- asm/battle_2.s | 432 ++-- asm/battle_ai_switch_items.s | 14 +- asm/battle_anim.s | 4 +- asm/battle_anim_special.s | 28 +- asm/battle_anim_utility_funcs.s | 12 +- asm/battle_controller_link_opponent.s | 8 +- asm/battle_controller_link_partner.s | 8 +- asm/battle_controller_oak.s | 28 +- asm/battle_controller_opponent.s | 24 +- asm/battle_controller_player.s | 166 +- asm/battle_controller_pokedude.s | 32 +- asm/battle_controllers.s | 3392 ------------------------- asm/battle_message.s | 60 +- asm/battle_script_commands.s | 1166 ++++----- asm/battle_util.s | 338 +-- asm/berry_crush_2.s | 36 +- asm/berry_crush_3.s | 2 +- asm/cable_club.s | 16 +- asm/dodrio_berry_picking.s | 16 +- asm/dragon.s | 4 +- asm/field_fadetransition.s | 2 +- asm/fighting.s | 8 +- asm/link.s | 28 +- asm/link_rfu_2.s | 6 +- asm/link_rfu_3.s | 30 +- asm/party_menu.s | 2 +- asm/pokemon_jump_2.s | 2 +- asm/trade.s | 32 +- asm/union_room_chat.s | 18 +- include/battle.h | 30 +- include/battle_2.h | 1 + include/battle_ai_script_commands.h | 4 +- include/battle_controllers.h | 114 +- include/battle_message.h | 16 +- include/battle_util.h | 1 + include/cable_club.h | 13 + include/constants/battle.h | 2 +- include/link.h | 10 +- include/link_rfu.h | 1 + include/party_menu.h | 1 + include/pokemon.h | 2 +- ld_script.txt | 2 +- src/battle_ai_script_commands.c | 120 +- src/battle_controller_safari.c | 10 +- src/battle_controllers.c | 1171 +++++++++ src/battle_gfx_sfx_util.c | 1 + src/mevent.c | 8 +- src/mevent_server_helpers.c | 6 +- src/pokemon.c | 17 +- src/quest_log_battle.c | 2 +- src/save.c | 8 +- sym_common.txt | 2 +- sym_ewram.txt | 29 +- 53 files changed, 2629 insertions(+), 4856 deletions(-) delete mode 100644 asm/battle_controllers.s create mode 100644 include/cable_club.h create mode 100644 src/battle_controllers.c diff --git a/asm/battle_2.s b/asm/battle_2.s index d17cd21ee..910b37d65 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -18,7 +18,7 @@ sub_800FD9C: @ 800FD9C ands r0, r1 cmp r0, 0 beq _0800FDD8 - bl sub_800D230 + bl HandleLinkBattleSetup ldr r0, _0800FDD0 @ =sub_80109C8 bl SetMainCallback2 ldr r1, _0800FDD4 @ =gUnknown_2023E82 @@ -171,7 +171,7 @@ _0800FEA6: strb r0, [r1] ldr r0, _0800FF6C @ =sub_80116F4 bl SetVBlankCallback - bl sub_800D278 + bl SetUpBattleVars ldr r0, _0800FF70 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 @@ -1029,7 +1029,7 @@ _080105D4: bne _080105EC b _080108B8 _080105EC: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0801062A @@ -1142,7 +1142,7 @@ _080106E8: .4byte gBattleStruct _080106EC: .4byte gBlockRecvBuffer _080106F0: .4byte gUnknown_2023E82 _080106F4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08010700 @@ -1181,7 +1181,7 @@ _08010740: .4byte gEnemyParty _08010744: .4byte gBlockRecvBuffer _08010748: .4byte gUnknown_2023E82 _0801074C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08010758 @@ -1220,7 +1220,7 @@ _08010798: .4byte gUnknown_20240F4 _0801079C: .4byte gBlockRecvBuffer _080107A0: .4byte gUnknown_2023E82 _080107A4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _080107B0 @@ -1521,7 +1521,7 @@ _08010A20: bne _08010A2A b _08010B82 _08010A2A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08010A36 @@ -1775,7 +1775,7 @@ _08010C5C: bne _08010C66 b _080110F0 _08010C66: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08010CAA @@ -1931,7 +1931,7 @@ _08010D9C: adds r0, 0x1 strb r0, [r1] _08010DB6: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08010DC2 @@ -2084,7 +2084,7 @@ _08010EBE: _08010ED0: .4byte gUnknown_2024158 _08010ED4: .4byte gUnknown_2023E82 _08010ED8: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08010EE4 @@ -4772,28 +4772,28 @@ nullsub_12: @ 80123BC bx lr thumb_func_end nullsub_12 - thumb_func_start sub_80123C0 -sub_80123C0: @ 80123C0 + thumb_func_start BeginBattleIntro +BeginBattleIntro: @ 80123C0 push {lr} bl sub_8012434 ldr r1, _080123D8 @ =gUnknown_2023E82 movs r0, 0 strb r0, [r1, 0x1] - ldr r1, _080123DC @ =gUnknown_3004F84 + ldr r1, _080123DC @ =gBattleMainFunc ldr r0, _080123E0 @ =BattleIntroGetMonsData str r0, [r1] pop {r0} bx r0 .align 2, 0 _080123D8: .4byte gUnknown_2023E82 -_080123DC: .4byte gUnknown_3004F84 +_080123DC: .4byte gBattleMainFunc _080123E0: .4byte BattleIntroGetMonsData - thumb_func_end sub_80123C0 + thumb_func_end BeginBattleIntro thumb_func_start sub_80123E4 sub_80123E4: @ 80123E4 push {r4,r5,lr} - ldr r0, _08012424 @ =gUnknown_3004F84 + ldr r0, _08012424 @ =gBattleMainFunc ldr r0, [r0] bl _call_via_r0 ldr r1, _08012428 @ =gActiveBattler @@ -4825,7 +4825,7 @@ _0801241E: pop {r0} bx r0 .align 2, 0 -_08012424: .4byte gUnknown_3004F84 +_08012424: .4byte gBattleMainFunc _08012428: .4byte gActiveBattler _0801242C: .4byte gBattlersCount _08012430: .4byte gBattlerControllerFuncs @@ -4921,7 +4921,7 @@ _080124CA: cmp r2, 0 bge _080124C6 movs r1, 0 - ldr r2, _08012700 @ =sBattler_AI + ldr r2, _08012700 @ =gBattlerAttacker strb r1, [r2] ldr r0, _08012704 @ =gBattlerTarget strb r1, [r0] @@ -5184,7 +5184,7 @@ _080126F0: .4byte gUnknown_2023DC0 _080126F4: .4byte gBattleResources _080126F8: .4byte gSideTimers _080126FC: .4byte gSideAffecting -_08012700: .4byte sBattler_AI +_08012700: .4byte gBattlerAttacker _08012704: .4byte gBattlerTarget _08012708: .4byte gBattleWeather _0801270C: .4byte gUnknown_2023F20 @@ -5481,7 +5481,7 @@ _0801296C: movs r1, 0 strb r1, [r0] ldrb r0, [r6] - ldr r2, _08012B9C @ =gUnknown_2023FFC + ldr r2, _08012B9C @ =gMoveSelectionCursor adds r0, r2 strb r1, [r0] ldrb r1, [r6] @@ -5753,7 +5753,7 @@ _08012B8C: .4byte gUnknown_2023C34 _08012B90: .4byte gBitTable _08012B94: .4byte gActiveBattler _08012B98: .4byte 0xffff1fff -_08012B9C: .4byte gUnknown_2023FFC +_08012B9C: .4byte gMoveSelectionCursor _08012BA0: .4byte gCurrentMove _08012BA4: .4byte gBattleMoves _08012BA8: .4byte gMoveResultFlags @@ -5778,7 +5778,7 @@ sub_8012BC8: @ 8012BC8 ldr r6, _08012F60 @ =gStatuses3 ldr r0, _08012F64 @ =gActionSelectionCursor mov r8, r0 - ldr r1, _08012F68 @ =gUnknown_2023FFC + ldr r1, _08012F68 @ =gMoveSelectionCursor mov r9, r1 ldr r2, _08012F6C @ =gUnknown_2023E8C mov r12, r2 @@ -6240,7 +6240,7 @@ _08012F04: _08012F5C: .4byte gActiveBattler _08012F60: .4byte gStatuses3 _08012F64: .4byte gActionSelectionCursor -_08012F68: .4byte gUnknown_2023FFC +_08012F68: .4byte gMoveSelectionCursor _08012F6C: .4byte gUnknown_2023E8C _08012F70: .4byte gBattleMons _08012F74: .4byte gBattlersCount @@ -6301,14 +6301,14 @@ _08012FE4: ldrb r1, [r1] cmp r0, r1 bne _08013018 - ldr r1, _08013010 @ =gUnknown_3004F84 + ldr r1, _08013010 @ =gBattleMainFunc ldr r0, _08013014 @ =BattleIntroPrepareBackgroundSlide str r0, [r1] b _0801301A .align 2, 0 _08013008: .4byte gBattleControllerExecFlags _0801300C: .4byte gBattlersCount -_08013010: .4byte gUnknown_3004F84 +_08013010: .4byte gBattleMainFunc _08013014: .4byte BattleIntroPrepareBackgroundSlide _08013018: strb r2, [r5] @@ -6332,10 +6332,10 @@ BattleIntroPrepareBackgroundSlide: @ 8013020 ldr r0, _08013060 @ =gUnknown_2022B50 ldrb r1, [r0] movs r0, 0 - bl EmitIntroSlide + bl BtlController_EmitIntroSlide ldrb r0, [r4] bl MarkBufferBankForExecution - ldr r1, _08013064 @ =gUnknown_3004F84 + ldr r1, _08013064 @ =gBattleMainFunc ldr r0, _08013068 @ =sub_8013070 str r0, [r1] ldr r0, _0801306C @ =gUnknown_2023E82 @@ -6349,7 +6349,7 @@ _08013050: _08013058: .4byte gBattleControllerExecFlags _0801305C: .4byte gActiveBattler _08013060: .4byte gUnknown_2022B50 -_08013064: .4byte gUnknown_3004F84 +_08013064: .4byte gBattleMainFunc _08013068: .4byte sub_8013070 _0801306C: .4byte gUnknown_2023E82 thumb_func_end BattleIntroPrepareBackgroundSlide @@ -6422,7 +6422,7 @@ _080130E8: adds r3, r0, r2 movs r2, 0 ldr r6, _08013230 @ =gBaseStats - ldr r5, _08013234 @ =gUnknown_20233C4 + ldr r5, _08013234 @ =gBattleBufferB ldr r4, _08013238 @ =gActiveBattler _080130FA: adds r0, r3, r2 @@ -6526,7 +6526,7 @@ _080131B6: cmp r0, 0 bne _080131D0 movs r0, 0 - bl EmitDrawTrainerPic + bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] bl MarkBufferBankForExecution _080131D0: @@ -6543,7 +6543,7 @@ _080131D0: cmp r0, 0x1 bne _080131F6 movs r0, 0 - bl EmitDrawTrainerPic + bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] bl MarkBufferBankForExecution _080131F6: @@ -6574,7 +6574,7 @@ _080131F6: b _080132C2 .align 2, 0 _08013230: .4byte gBaseStats -_08013234: .4byte gUnknown_20233C4 +_08013234: .4byte gBattleBufferB _08013238: .4byte gActiveBattler _0801323C: .4byte gBattleStruct _08013240: .4byte gUnknown_2023BFC @@ -6631,7 +6631,7 @@ _0801328E: bl HandleSetPokedexFlag _080132B4: movs r0, 0 - bl EmitLoadMonSprite + bl BtlController_EmitLoadMonSprite mov r1, r9 ldrb r0, [r1] bl MarkBufferBankForExecution @@ -6657,7 +6657,7 @@ _080132C2: bne _080132F8 _080132EC: movs r0, 0 - bl EmitDrawTrainerPic + bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] bl MarkBufferBankForExecution _080132F8: @@ -6673,7 +6673,7 @@ _080132F8: bcs _0801330E b _080130A0 _0801330E: - ldr r1, _08013334 @ =gUnknown_3004F84 + ldr r1, _08013334 @ =gBattleMainFunc ldr r0, _08013338 @ =BattleIntroDrawPartySummaryScreens str r0, [r1] _08013314: @@ -6689,7 +6689,7 @@ _08013324: .4byte 0x0001aa02 _08013328: .4byte gBattleTypeFlags _0801332C: .4byte gActiveBattler _08013330: .4byte gBattlersCount -_08013334: .4byte gUnknown_3004F84 +_08013334: .4byte gBattleMainFunc _08013338: .4byte BattleIntroDrawPartySummaryScreens thumb_func_end sub_8013070 @@ -6768,7 +6768,7 @@ _080133B6: movs r0, 0 mov r1, sp movs r2, 0x80 - bl EmitDrawPartyStatusSummary + bl BtlController_EmitDrawPartyStatusSummary ldrb r0, [r4] bl MarkBufferBankForExecution movs r7, 0 @@ -6823,15 +6823,15 @@ _0801342E: movs r0, 0 mov r1, sp movs r2, 0x80 - bl EmitDrawPartyStatusSummary + bl BtlController_EmitDrawPartyStatusSummary ldrb r0, [r4] bl MarkBufferBankForExecution - ldr r1, _08013460 @ =gUnknown_3004F84 + ldr r1, _08013460 @ =gBattleMainFunc ldr r0, _08013464 @ =BattleIntroPrintTrainerWantsToBattle b _080134C6 .align 2, 0 _0801345C: .4byte gActiveBattler -_08013460: .4byte gUnknown_3004F84 +_08013460: .4byte gBattleMainFunc _08013464: .4byte BattleIntroPrintTrainerWantsToBattle _08013468: movs r7, 0 @@ -6878,7 +6878,7 @@ _080134B6: adds r7, 0x1 cmp r7, 0x5 ble _0801346E - ldr r1, _080134D4 @ =gUnknown_3004F84 + ldr r1, _080134D4 @ =gBattleMainFunc ldr r0, _080134D8 @ =sub_8013514 _080134C6: str r0, [r1] @@ -6890,7 +6890,7 @@ _080134C8: pop {r0} bx r0 .align 2, 0 -_080134D4: .4byte gUnknown_3004F84 +_080134D4: .4byte gBattleMainFunc _080134D8: .4byte sub_8013514 thumb_func_end BattleIntroDrawPartySummaryScreens @@ -6908,7 +6908,7 @@ BattleIntroPrintTrainerWantsToBattle: @ 80134DC ldrb r1, [r1] movs r0, 0 bl PrepareStringBattle - ldr r1, _0801350C @ =gUnknown_3004F84 + ldr r1, _0801350C @ =gBattleMainFunc ldr r0, _08013510 @ =sub_8013568 str r0, [r1] _080134FE: @@ -6917,7 +6917,7 @@ _080134FE: .align 2, 0 _08013504: .4byte gBattleControllerExecFlags _08013508: .4byte gActiveBattler -_0801350C: .4byte gUnknown_3004F84 +_0801350C: .4byte gBattleMainFunc _08013510: .4byte sub_8013568 thumb_func_end BattleIntroPrintTrainerWantsToBattle @@ -6928,7 +6928,7 @@ sub_8013514: @ 8013514 ldr r0, [r0] cmp r0, 0 bne _0801354A - ldr r1, _08013554 @ =gUnknown_3004F84 + ldr r1, _08013554 @ =gBattleMainFunc ldr r0, _08013558 @ =sub_80136E4 str r0, [r1] movs r0, 0 @@ -6952,7 +6952,7 @@ _0801354A: bx r0 .align 2, 0 _08013550: .4byte gBattleControllerExecFlags -_08013554: .4byte gUnknown_3004F84 +_08013554: .4byte gBattleMainFunc _08013558: .4byte sub_80136E4 _0801355C: .4byte gBattleTypeFlags _08013560: .4byte gBattleScripting @@ -6973,7 +6973,7 @@ sub_8013568: @ 8013568 lsrs r1, 24 movs r0, 0x1 bl PrepareStringBattle - ldr r1, _08013594 @ =gUnknown_3004F84 + ldr r1, _08013594 @ =gBattleMainFunc ldr r0, _08013598 @ =sub_801359C str r0, [r1] _0801358A: @@ -6981,7 +6981,7 @@ _0801358A: bx r0 .align 2, 0 _08013590: .4byte gBattleControllerExecFlags -_08013594: .4byte gUnknown_3004F84 +_08013594: .4byte gBattleMainFunc _08013598: .4byte sub_801359C thumb_func_end sub_8013568 @@ -7007,7 +7007,7 @@ _080135B4: cmp r0, 0x1 bne _080135CE movs r0, 0 - bl EmitIntroTrainerBallThrow + bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] bl MarkBufferBankForExecution _080135CE: @@ -7024,7 +7024,7 @@ _080135CE: cmp r0, 0x3 bne _080135F4 movs r0, 0 - bl EmitIntroTrainerBallThrow + bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] bl MarkBufferBankForExecution _080135F4: @@ -7038,7 +7038,7 @@ _080135F4: cmp r0, r1 bcc _080135B4 _08013606: - ldr r1, _08013624 @ =gUnknown_3004F84 + ldr r1, _08013624 @ =gBattleMainFunc ldr r0, _08013628 @ =sub_801362C str r0, [r1] _0801360C: @@ -7050,7 +7050,7 @@ _08013614: .4byte gBattleControllerExecFlags _08013618: .4byte gActiveBattler _0801361C: .4byte gBattlersCount _08013620: .4byte gBattleTypeFlags -_08013624: .4byte gUnknown_3004F84 +_08013624: .4byte gBattleMainFunc _08013628: .4byte sub_801362C thumb_func_end sub_801359C @@ -7109,7 +7109,7 @@ _08013684: cmp r0, r1 bcc _0801364C _08013696: - ldr r1, _080136BC @ =gUnknown_3004F84 + ldr r1, _080136BC @ =gBattleMainFunc ldr r0, _080136C0 @ =sub_80136E4 str r0, [r1] _0801369C: @@ -7123,7 +7123,7 @@ _080136AC: .4byte gBattlersCount _080136B0: .4byte gBattleMons _080136B4: .4byte gBattleTypeFlags _080136B8: .4byte 0x0001aa02 -_080136BC: .4byte gUnknown_3004F84 +_080136BC: .4byte gBattleMainFunc _080136C0: .4byte sub_80136E4 thumb_func_end sub_801362C @@ -7134,7 +7134,7 @@ sub_80136C4: @ 80136C4 ldr r0, [r0] cmp r0, 0 bne _080136D4 - ldr r1, _080136DC @ =gUnknown_3004F84 + ldr r1, _080136DC @ =gBattleMainFunc ldr r0, _080136E0 @ =sub_80136E4 str r0, [r1] _080136D4: @@ -7142,7 +7142,7 @@ _080136D4: bx r0 .align 2, 0 _080136D8: .4byte gBattleControllerExecFlags -_080136DC: .4byte gUnknown_3004F84 +_080136DC: .4byte gBattleMainFunc _080136E0: .4byte sub_80136E4 thumb_func_end sub_80136C4 @@ -7167,7 +7167,7 @@ sub_80136E4: @ 80136E4 movs r0, 0x1 bl PrepareStringBattle _0801370C: - ldr r1, _08013720 @ =gUnknown_3004F84 + ldr r1, _08013720 @ =gBattleMainFunc ldr r0, _08013724 @ =sub_8013728 str r0, [r1] _08013712: @@ -7176,7 +7176,7 @@ _08013712: .align 2, 0 _08013718: .4byte gBattleControllerExecFlags _0801371C: .4byte gBattleTypeFlags -_08013720: .4byte gUnknown_3004F84 +_08013720: .4byte gBattleMainFunc _08013724: .4byte sub_8013728 thumb_func_end sub_80136E4 @@ -7201,7 +7201,7 @@ _08013740: cmp r0, 0 bne _08013758 movs r0, 0 - bl EmitIntroTrainerBallThrow + bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] bl MarkBufferBankForExecution _08013758: @@ -7218,7 +7218,7 @@ _08013758: cmp r0, 0x2 bne _0801377E movs r0, 0 - bl EmitIntroTrainerBallThrow + bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] bl MarkBufferBankForExecution _0801377E: @@ -7243,7 +7243,7 @@ _08013790: ldr r0, [r2] adds r0, 0xB6 strb r1, [r0] - ldr r1, _080137C8 @ =gUnknown_3004F84 + ldr r1, _080137C8 @ =gBattleMainFunc ldr r0, _080137CC @ =sub_801385C str r0, [r1] _080137AC: @@ -7256,7 +7256,7 @@ _080137B8: .4byte gActiveBattler _080137BC: .4byte gBattlersCount _080137C0: .4byte gBattleTypeFlags _080137C4: .4byte gBattleStruct -_080137C8: .4byte gUnknown_3004F84 +_080137C8: .4byte gBattleMainFunc _080137CC: .4byte sub_801385C thumb_func_end sub_8013728 @@ -7287,7 +7287,7 @@ _080137EA: ldrb r1, [r0] movs r0, 0 movs r2, 0 - bl EmitSwitchInAnim + bl BtlController_EmitSwitchInAnim ldrb r0, [r4] bl MarkBufferBankForExecution _0801380C: @@ -7312,7 +7312,7 @@ _0801381E: ldr r0, [r2] adds r0, 0xB6 strb r1, [r0] - ldr r1, _08013854 @ =gUnknown_3004F84 + ldr r1, _08013854 @ =gBattleMainFunc ldr r0, _08013858 @ =sub_801385C str r0, [r1] _0801383A: @@ -7325,7 +7325,7 @@ _08013844: .4byte gActiveBattler _08013848: .4byte gBattlersCount _0801384C: .4byte gBattlerPartyIndexes _08013850: .4byte gBattleStruct -_08013854: .4byte gUnknown_3004F84 +_08013854: .4byte gBattleMainFunc _08013858: .4byte sub_801385C thumb_func_end sub_80137D0 @@ -7598,7 +7598,7 @@ _08013A32: ldr r1, _08013AFC @ =gAbsentBattlerFlags ldrb r1, [r1] strb r1, [r0] - ldr r1, _08013B00 @ =gUnknown_3004F84 + ldr r1, _08013B00 @ =gBattleMainFunc ldr r0, _08013B04 @ =sub_8014040 str r0, [r1] bl ResetSentPokesToOpponentValue @@ -7673,7 +7673,7 @@ _08013AF0: .4byte gUnknown_2023BDE _08013AF4: .4byte gUnknown_2023D7C _08013AF8: .4byte gUnknown_2023DC4 _08013AFC: .4byte gAbsentBattlerFlags -_08013B00: .4byte gUnknown_3004F84 +_08013B00: .4byte gBattleMainFunc _08013B04: .4byte sub_8014040 _08013B08: .4byte gUnknown_2023E82 _08013B0C: .4byte gBattleScripting @@ -7689,7 +7689,7 @@ sub_8013B1C: @ 8013B1C ldr r0, [r0] cmp r0, 0 bne _08013BAC - ldr r1, _08013BB8 @ =gUnknown_3004F84 + ldr r1, _08013BB8 @ =gBattleMainFunc ldr r0, _08013BBC @ =sub_8013BD4 str r0, [r1] ldr r3, _08013BC0 @ =gBattlersCount @@ -7765,7 +7765,7 @@ _08013BAC: bx r0 .align 2, 0 _08013BB4: .4byte gBattleControllerExecFlags -_08013BB8: .4byte gUnknown_3004F84 +_08013BB8: .4byte gBattleMainFunc _08013BBC: .4byte sub_8013BD4 _08013BC0: .4byte gBattlersCount _08013BC4: .4byte gUnknown_2023E82 @@ -7851,7 +7851,7 @@ _08013C58: ldr r1, _08013CA4 @ =gUnknown_2023BE3 movs r0, 0xC strb r0, [r1] - ldr r1, _08013CA8 @ =gUnknown_3004F84 + ldr r1, _08013CA8 @ =gBattleMainFunc ldr r0, _08013CAC @ =RunTurnActionsFunctions str r0, [r1] b _08013D20 @@ -7868,7 +7868,7 @@ _08013C98: .4byte gBattleMoveDamage _08013C9C: .4byte gMoveResultFlags _08013CA0: .4byte gUnknown_2023E82 _08013CA4: .4byte gUnknown_2023BE3 -_08013CA8: .4byte gUnknown_3004F84 +_08013CA8: .4byte gBattleMainFunc _08013CAC: .4byte RunTurnActionsFunctions _08013CB0: ldr r1, _08013D30 @ =gBattleResults @@ -7882,7 +7882,7 @@ _08013CBC: ldr r4, _08013D34 @ =gBattlersCount ldr r0, _08013D38 @ =gBattleStruct mov r8, r0 - ldr r1, _08013D3C @ =gUnknown_3004F84 + ldr r1, _08013D3C @ =gBattleMainFunc mov r10, r1 ldr r0, _08013D40 @ =gAbsentBattlerFlags mov r12, r0 @@ -7942,7 +7942,7 @@ _08013D20: _08013D30: .4byte gBattleResults _08013D34: .4byte gBattlersCount _08013D38: .4byte gBattleStruct -_08013D3C: .4byte gUnknown_3004F84 +_08013D3C: .4byte gBattleMainFunc _08013D40: .4byte gAbsentBattlerFlags _08013D44: .4byte sub_8014040 _08013D48: .4byte gUnknown_2023D7C @@ -8503,17 +8503,17 @@ _080141B8: .4byte gUnknown_2023E82 _080141BC: ldr r0, _080141D4 @ =gUnknown_2023D7C ldrb r1, [r0] - ldr r0, _080141D8 @ =gUnknown_20233C4 + ldr r0, _080141D8 @ =gBattleBufferB ldrb r2, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r2, r0 movs r0, 0 - bl EmitChooseAction + bl BtlController_EmitChooseAction bl _08014B26 .align 2, 0 _080141D4: .4byte gUnknown_2023D7C -_080141D8: .4byte gUnknown_20233C4 +_080141D8: .4byte gBattleBufferB _080141DC: ldr r4, _08014234 @ =gBattleControllerExecFlags ldr r1, _08014238 @ =gBitTable @@ -8540,7 +8540,7 @@ _080141DC: _0801420A: ldr r2, _08014240 @ =gUnknown_2023D7C adds r2, r5, r2 - ldr r1, _08014244 @ =gUnknown_20233C4 + ldr r1, _08014244 @ =gBattleBufferB lsls r0, r5, 9 adds r1, 0x1 adds r0, r1 @@ -8564,7 +8564,7 @@ _08014234: .4byte gBattleControllerExecFlags _08014238: .4byte gBitTable _0801423C: .4byte gActiveBattler _08014240: .4byte gUnknown_2023D7C -_08014244: .4byte gUnknown_20233C4 +_08014244: .4byte gBattleBufferB _08014248: .4byte _0801424C .align 2, 0 _0801424C: @@ -8608,7 +8608,7 @@ _08014280: ldrb r1, [r3] ldr r2, [r2] adds r2, r1, r2 - ldr r0, _080142D4 @ =gUnknown_20233C4 + ldr r0, _080142D4 @ =gBattleBufferB lsls r1, 9 adds r0, 0x3 adds r1, r0 @@ -8619,7 +8619,7 @@ _08014280: _080142C8: .4byte gUnknown_2023E82 _080142CC: .4byte gActiveBattler _080142D0: .4byte gBattleStruct -_080142D4: .4byte gUnknown_20233C4 +_080142D4: .4byte gBattleBufferB _080142D8: ldr r3, _08014318 @ =gDisableStructs ldr r5, _0801431C @ =gActiveBattler @@ -8736,7 +8736,7 @@ _0801436E: movs r0, 0 movs r2, 0 add r3, sp, 0x4 - bl EmitChooseMove + bl BtlController_EmitChooseMove b _0801460E .align 2, 0 _080143CC: .4byte gBattleMons @@ -8788,7 +8788,7 @@ _08014428: ldr r1, [r2] adds r1, r0 movs r0, 0 - bl EmitChooseItem + bl BtlController_EmitChooseItem ldrb r0, [r4] bl MarkBufferBankForExecution b _080146AC @@ -8934,7 +8934,7 @@ _08014548: str r0, [sp] movs r0, 0 movs r2, 0x6 - bl EmitChoosePokemon + bl BtlController_EmitChoosePokemon b _0801460E .align 2, 0 _08014574: .4byte gActiveBattler @@ -8988,7 +8988,7 @@ _080145D0: movs r1, 0 _080145DE: movs r3, 0 - bl EmitChoosePokemon + bl BtlController_EmitChoosePokemon b _0801460E .align 2, 0 _080145E8: .4byte gUnknown_2023D7C @@ -9007,7 +9007,7 @@ _080145F0: movs r1, 0 movs r2, 0x6 movs r3, 0 - bl EmitChoosePokemon + bl BtlController_EmitChoosePokemon _0801460E: ldr r0, _0801461C @ =gActiveBattler ldrb r0, [r0] @@ -9072,7 +9072,7 @@ _08014670: adds r0, r4 strb r5, [r0] movs r0, 0 - bl EmitCmd50 + bl BtlController_EmitEndBounceEffect mov r3, r8 ldrb r0, [r3] bl MarkBufferBankForExecution @@ -9086,7 +9086,7 @@ _080146AC: ands r0, r1 cmp r0, 0x8 bne _080146EC - ldr r0, _080146DC @ =gUnknown_20233C4 + ldr r0, _080146DC @ =gBattleBufferB ldr r4, _080146E0 @ =gActiveBattler ldrb r1, [r4] lsls r1, 9 @@ -9103,7 +9103,7 @@ _080146AC: b _08014926 .align 2, 0 _080146D8: .4byte gBattleTypeFlags -_080146DC: .4byte gUnknown_20233C4 +_080146DC: .4byte gBattleBufferB _080146E0: .4byte gActiveBattler _080146E4: .4byte gUnknown_81D8924 _080146E8: .4byte gUnknown_2023E82 @@ -9112,7 +9112,7 @@ _080146EC: lsls r0, 24 cmp r0, 0 beq _08014750 - ldr r0, _08014738 @ =gUnknown_20233C4 + ldr r0, _08014738 @ =gBattleBufferB ldr r4, _0801473C @ =gActiveBattler ldrb r2, [r4] lsls r1, r2, 9 @@ -9146,7 +9146,7 @@ _0801472C: strb r3, [r0] b _08014C78 .align 2, 0 -_08014738: .4byte gUnknown_20233C4 +_08014738: .4byte gBattleBufferB _0801473C: .4byte gActiveBattler _08014740: .4byte gUnknown_2023D80 _08014744: .4byte gUnknown_81D8943 @@ -9217,7 +9217,7 @@ _080147BC: .4byte _08014A68 .4byte _08014A8C _080147E4: - ldr r0, _08014804 @ =gUnknown_20233C4 + ldr r0, _08014804 @ =gBattleBufferB mov r1, r8 ldrb r4, [r1] lsls r1, r4, 9 @@ -9233,7 +9233,7 @@ _080147E4: strb r1, [r0] b _08014C78 .align 2, 0 -_08014804: .4byte gUnknown_20233C4 +_08014804: .4byte gBattleBufferB _08014808: adds r3, r7, 0 mov r5, r8 @@ -9333,7 +9333,7 @@ _080148CC: .4byte gUnknown_2023DC4 _080148D0: .4byte gBattleMons _080148D4: .4byte gUnknown_2023E82 _080148D8: - ldr r2, _08014900 @ =gUnknown_20233C4 + ldr r2, _08014900 @ =gBattleBufferB ldr r5, _08014904 @ =gActiveBattler ldrb r4, [r5] lsls r1, r4, 9 @@ -9349,18 +9349,18 @@ _080148D8: bne _080148F6 b _08014C48 _080148F6: - ldr r0, _08014908 @ =gUnknown_2023D68 + ldr r0, _08014908 @ =gLastUsedItem strh r3, [r0] ldr r0, _0801490C @ =gUnknown_2023E82 ldrb r1, [r5] b _08014B30 .align 2, 0 -_08014900: .4byte gUnknown_20233C4 +_08014900: .4byte gBattleBufferB _08014904: .4byte gActiveBattler -_08014908: .4byte gUnknown_2023D68 +_08014908: .4byte gLastUsedItem _0801490C: .4byte gUnknown_2023E82 _08014910: - ldr r6, _0801492C @ =gUnknown_20233C4 + ldr r6, _0801492C @ =gBattleBufferB ldr r7, _08014930 @ =gActiveBattler ldrb r2, [r7] lsls r0, r2, 9 @@ -9376,7 +9376,7 @@ _08014926: strb r1, [r0] b _08014C4E .align 2, 0 -_0801492C: .4byte gUnknown_20233C4 +_0801492C: .4byte gBattleBufferB _08014930: .4byte gActiveBattler _08014934: .4byte gUnknown_2023E82 _08014938: @@ -9602,7 +9602,7 @@ _08014ACA: _08014AFE: movs r0, 0 movs r1, 0 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg b _08014B24 .align 2, 0 _08014B08: .4byte gBattleControllerExecFlags @@ -9613,7 +9613,7 @@ _08014B18: .4byte gBattleStruct _08014B1C: movs r0, 0 movs r1, 0x1 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg _08014B24: ldr r4, _08014B3C @ =gActiveBattler _08014B26: @@ -9684,7 +9684,7 @@ _08014BA8: .4byte gActiveBattler _08014BAC: .4byte gBattleStruct _08014BB0: .4byte gUnknown_2023E82 _08014BB4: - ldr r0, _08014C08 @ =sBattler_AI + ldr r0, _08014C08 @ =gBattlerAttacker strb r2, [r0] ldr r7, _08014C0C @ =gUnknown_2023D74 ldr r6, _08014C10 @ =gUnknown_2023D80 @@ -9726,7 +9726,7 @@ _08014BFA: str r1, [r0] b _08014C4E .align 2, 0 -_08014C08: .4byte sBattler_AI +_08014C08: .4byte gBattlerAttacker _08014C0C: .4byte gUnknown_2023D74 _08014C10: .4byte gUnknown_2023D80 _08014C14: .4byte gBattleControllerExecFlags @@ -9776,7 +9776,7 @@ _08014C68: ldrb r2, [r2] cmp r0, r2 bne _08014C78 - ldr r1, _08014C9C @ =gUnknown_3004F84 + ldr r1, _08014C9C @ =gBattleMainFunc ldr r0, _08014CA0 @ =sub_80150A8 str r0, [r1] _08014C78: @@ -9794,7 +9794,7 @@ _08014C8C: .4byte gBitTable _08014C90: .4byte gActiveBattler _08014C94: .4byte gUnknown_2023E82 _08014C98: .4byte gBattlersCount -_08014C9C: .4byte gUnknown_3004F84 +_08014C9C: .4byte gBattleMainFunc _08014CA0: .4byte sub_80150A8 thumb_func_end sub_8014040 @@ -10434,7 +10434,7 @@ _08015174: movs r3, 0x1 movs r5, 0 adds r4, r1, 0 - ldr r7, _080151E8 @ =gUnknown_3004F84 + ldr r7, _080151E8 @ =gBattleMainFunc mov r10, r7 ldr r0, _080151EC @ =CheckFocusPunch_ClearVarsBeforeTurnStarts mov r12, r0 @@ -10477,7 +10477,7 @@ _080151D8: .4byte gUnknown_2023D7C _080151DC: .4byte gActiveBattler _080151E0: .4byte gUnknown_2023BDA _080151E4: .4byte gUnknown_2023BDE -_080151E8: .4byte gUnknown_3004F84 +_080151E8: .4byte gBattleMainFunc _080151EC: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts _080151F0: .4byte gBattleStruct _080151F4: .4byte gBattlersCount @@ -10617,7 +10617,7 @@ _080152F0: cmp r5, r0 blt _08015298 _080152FA: - ldr r1, _08015324 @ =gUnknown_3004F84 + ldr r1, _08015324 @ =gBattleMainFunc ldr r0, _08015328 @ =CheckFocusPunch_ClearVarsBeforeTurnStarts str r0, [r1] ldr r0, _0801532C @ =gBattleStruct @@ -10637,7 +10637,7 @@ _08015304: _08015318: .4byte gUnknown_2023BDA _0801531C: .4byte gUnknown_2023BDE _08015320: .4byte gBattlersCount -_08015324: .4byte gUnknown_3004F84 +_08015324: .4byte gBattleMainFunc _08015328: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts _0801532C: .4byte gBattleStruct thumb_func_end sub_80150A8 @@ -10854,7 +10854,7 @@ CheckFocusPunch_ClearVarsBeforeTurnStarts: @ 80154A0 cmp r0, r1 bcs _0801555E ldr r5, _08015534 @ =gActiveBattler - ldr r4, _08015538 @ =sBattler_AI + ldr r4, _08015538 @ =gBattlerAttacker movs r7, 0x84 lsls r7, 1 _080154CC: @@ -10908,7 +10908,7 @@ _08015528: .4byte gUnknown_2023DD0 _0801552C: .4byte gBattleStruct _08015530: .4byte gBattlersCount _08015534: .4byte gActiveBattler -_08015538: .4byte sBattler_AI +_08015538: .4byte gBattlerAttacker _0801553C: .4byte gUnknown_2023DC4 _08015540: .4byte gBattleMons _08015544: .4byte gDisableStructs @@ -10938,7 +10938,7 @@ _0801555E: ldr r0, _080155B0 @ =gBattleStruct ldr r0, [r0] strb r2, [r0, 0x13] - ldr r1, _080155B4 @ =gUnknown_3004F84 + ldr r1, _080155B4 @ =gBattleMainFunc ldr r0, _080155B8 @ =RunTurnActionsFunctions str r0, [r1] ldr r0, _080155BC @ =gUnknown_2023E82 @@ -10961,7 +10961,7 @@ _080155A4: .4byte gUnknown_2023BE3 _080155A8: .4byte gUnknown_2023BDA _080155AC: .4byte gDynamicBasePower _080155B0: .4byte gBattleStruct -_080155B4: .4byte gUnknown_3004F84 +_080155B4: .4byte gBattleMainFunc _080155B8: .4byte RunTurnActionsFunctions _080155BC: .4byte gUnknown_2023E82 _080155C0: .4byte gBattleScripting @@ -11001,7 +11001,7 @@ _080155D8: ldr r1, _08015638 @ =0xffefffff ands r0, r1 str r0, [r2] - ldr r3, _0801563C @ =gUnknown_3004F84 + ldr r3, _0801563C @ =gBattleMainFunc ldr r2, _08015640 @ =gUnknown_8250070 ldrb r1, [r6] movs r0, 0x7F @@ -11020,7 +11020,7 @@ _0801562C: .4byte gUnknown_8250038 _08015630: .4byte gBattlersCount _08015634: .4byte gUnknown_2023DD0 _08015638: .4byte 0xffefffff -_0801563C: .4byte gUnknown_3004F84 +_0801563C: .4byte gBattleMainFunc _08015640: .4byte gUnknown_8250070 _08015644: ldr r0, [r5] @@ -11063,7 +11063,7 @@ sub_8015670: @ 8015670 strb r0, [r1] movs r0, 0 bl GetBattlerAtPosition - ldr r1, _080156B8 @ =sBattler_AI + ldr r1, _080156B8 @ =gBattlerAttacker strb r0, [r1] ldr r1, _080156BC @ =gUnknown_2023D74 ldr r0, _080156C0 @ =gUnknown_81D88CC @@ -11078,7 +11078,7 @@ _080156A8: .4byte gUnknown_2023BE3 _080156AC: .4byte gBattleTypeFlags _080156B0: .4byte gBattleTextBuff1 _080156B4: .4byte gBattleOutcome -_080156B8: .4byte sBattler_AI +_080156B8: .4byte gBattlerAttacker _080156BC: .4byte gUnknown_2023D74 _080156C0: .4byte gUnknown_81D88CC _080156C4: @@ -11154,7 +11154,7 @@ _08015768: _0801576C: str r0, [r1] _0801576E: - ldr r1, _08015784 @ =gUnknown_3004F84 + ldr r1, _08015784 @ =gBattleMainFunc ldr r0, _08015788 @ =sub_8015910 str r0, [r1] pop {r4} @@ -11163,7 +11163,7 @@ _0801576E: .align 2, 0 _0801577C: .4byte gUnknown_2023D74 _08015780: .4byte gUnknown_81D8803 -_08015784: .4byte gUnknown_3004F84 +_08015784: .4byte gBattleMainFunc _08015788: .4byte sub_8015910 thumb_func_end sub_8015670 @@ -11186,7 +11186,7 @@ sub_801578C: @ 801578C strb r0, [r1] movs r0, 0 bl GetBattlerAtPosition - ldr r1, _080157D4 @ =sBattler_AI + ldr r1, _080157D4 @ =gBattlerAttacker strb r0, [r1] ldr r1, _080157D8 @ =gUnknown_2023D74 ldr r0, _080157DC @ =gUnknown_81D88CC @@ -11201,7 +11201,7 @@ _080157C4: .4byte gUnknown_2023BE3 _080157C8: .4byte gBattleTypeFlags _080157CC: .4byte gBattleTextBuff1 _080157D0: .4byte gBattleOutcome -_080157D4: .4byte sBattler_AI +_080157D4: .4byte gBattlerAttacker _080157D8: .4byte gUnknown_2023D74 _080157DC: .4byte gUnknown_81D88CC _080157E0: @@ -11231,12 +11231,12 @@ _0801580C: _08015810: movs r0, 0x1 bl GetBattlerAtPosition - ldr r1, _08015820 @ =sBattler_AI + ldr r1, _08015820 @ =gBattlerAttacker strb r0, [r1] b _0801582A .align 2, 0 _0801581C: .4byte gUnknown_2023E82 -_08015820: .4byte sBattler_AI +_08015820: .4byte gBattlerAttacker _08015824: ldr r1, _0801583C @ =gUnknown_2023E82 movs r0, 0 @@ -11246,7 +11246,7 @@ _0801582A: ldr r0, _08015844 @ =gUnknown_81D8806 str r0, [r1] _08015830: - ldr r1, _08015848 @ =gUnknown_3004F84 + ldr r1, _08015848 @ =gBattleMainFunc ldr r0, _0801584C @ =sub_8015910 str r0, [r1] pop {r4} @@ -11256,7 +11256,7 @@ _08015830: _0801583C: .4byte gUnknown_2023E82 _08015840: .4byte gUnknown_2023D74 _08015844: .4byte gUnknown_81D8806 -_08015848: .4byte gUnknown_3004F84 +_08015848: .4byte gBattleMainFunc _0801584C: .4byte sub_8015910 thumb_func_end sub_801578C @@ -11267,7 +11267,7 @@ sub_8015850: @ 8015850 movs r0, 0 strb r0, [r1] ldr r1, _0801587C @ =gUnknown_2023E8C - ldr r0, _08015880 @ =sBattler_AI + ldr r0, _08015880 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -11284,7 +11284,7 @@ sub_8015850: @ 8015850 .align 2, 0 _08015878: .4byte gUnknown_2023BE3 _0801587C: .4byte gUnknown_2023E8C -_08015880: .4byte sBattler_AI +_08015880: .4byte gBattlerAttacker _08015884: .4byte gUnknown_2023D74 _08015888: .4byte gUnknown_81D8916 _0801588C: @@ -11299,7 +11299,7 @@ _0801589C: ldr r0, _080158B0 @ =gUnknown_81D890F _080158A0: str r0, [r1] - ldr r1, _080158B4 @ =gUnknown_3004F84 + ldr r1, _080158B4 @ =gBattleMainFunc ldr r0, _080158B8 @ =sub_8015910 str r0, [r1] pop {r0} @@ -11307,7 +11307,7 @@ _080158A0: .align 2, 0 _080158AC: .4byte gUnknown_2023D74 _080158B0: .4byte gUnknown_81D890F -_080158B4: .4byte gUnknown_3004F84 +_080158B4: .4byte gBattleMainFunc _080158B8: .4byte sub_8015910 thumb_func_end sub_8015850 @@ -11321,7 +11321,7 @@ sub_80158BC: @ 80158BC strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] - ldr r2, _080158F8 @ =sBattler_AI + ldr r2, _080158F8 @ =gBattlerAttacker ldrb r0, [r2] strb r0, [r1, 0x2] ldr r3, _080158FC @ =gBattlerPartyIndexes @@ -11335,18 +11335,18 @@ sub_80158BC: @ 80158BC ldr r1, _08015900 @ =gUnknown_2023D74 ldr r0, _08015904 @ =gUnknown_81D891D str r0, [r1] - ldr r1, _08015908 @ =gUnknown_3004F84 + ldr r1, _08015908 @ =gBattleMainFunc ldr r0, _0801590C @ =sub_8015910 str r0, [r1] bx lr .align 2, 0 _080158F0: .4byte gUnknown_2023BE3 _080158F4: .4byte gBattleTextBuff1 -_080158F8: .4byte sBattler_AI +_080158F8: .4byte gBattlerAttacker _080158FC: .4byte gBattlerPartyIndexes _08015900: .4byte gUnknown_2023D74 _08015904: .4byte gUnknown_81D891D -_08015908: .4byte gUnknown_3004F84 +_08015908: .4byte gBattleMainFunc _0801590C: .4byte sub_8015910 thumb_func_end sub_80158BC @@ -11445,7 +11445,7 @@ _080159D0: bl BeginFastPaletteFade movs r0, 0x5 bl FadeOutMapMusic - ldr r1, _080159F4 @ =gUnknown_3004F84 + ldr r1, _080159F4 @ =gBattleMainFunc ldr r0, _080159F8 @ =sub_8015A30 str r0, [r1] ldr r1, _080159FC @ =gUnknown_300537C @@ -11455,7 +11455,7 @@ _080159D0: .align 2, 0 _080159EC: .4byte gBattlersCount _080159F0: .4byte gBattleTypeFlags -_080159F4: .4byte gUnknown_3004F84 +_080159F4: .4byte gBattleMainFunc _080159F8: .4byte sub_8015A30 _080159FC: .4byte gUnknown_300537C _08015A00: .4byte BattleMainCB2 @@ -11501,17 +11501,17 @@ sub_8015A30: @ 8015A30 cmp r0, 0x1 beq _08015A6C _08015A52: - ldr r1, _08015A64 @ =gUnknown_3004F84 + ldr r1, _08015A64 @ =gBattleMainFunc ldr r0, _08015A68 @ =ReturnFromBattleToOverworld b _08015A70 .align 2, 0 _08015A58: .4byte gPaletteFade _08015A5C: .4byte gUnknown_3004FD4 _08015A60: .4byte gBattleOutcome -_08015A64: .4byte gUnknown_3004F84 +_08015A64: .4byte gBattleMainFunc _08015A68: .4byte ReturnFromBattleToOverworld _08015A6C: - ldr r1, _08015A94 @ =gUnknown_3004F84 + ldr r1, _08015A94 @ =gBattleMainFunc ldr r0, _08015A98 @ =sub_8015AA0 _08015A70: str r0, [r1] @@ -11529,7 +11529,7 @@ _08015A8E: pop {r0} bx r0 .align 2, 0 -_08015A94: .4byte gUnknown_3004F84 +_08015A94: .4byte gBattleMainFunc _08015A98: .4byte sub_8015AA0 _08015A9C: .4byte gBattleTypeFlags thumb_func_end sub_8015A30 @@ -11568,7 +11568,7 @@ _08015AAE: lsrs r2, r0, 16 cmp r2, 0 beq _08015B08 - ldr r0, _08015B00 @ =gUnknown_3004F84 + ldr r0, _08015B00 @ =gBattleMainFunc ldr r1, _08015B04 @ =sub_8015B30 str r1, [r0] lsls r3, r5, 24 @@ -11582,7 +11582,7 @@ _08015AAE: _08015AF4: .4byte gUnknown_3004FD4 _08015AF8: .4byte gBitTable _08015AFC: .4byte gPlayerParty -_08015B00: .4byte gUnknown_3004F84 +_08015B00: .4byte gBattleMainFunc _08015B04: .4byte sub_8015B30 _08015B08: adds r5, 0x1 @@ -11593,7 +11593,7 @@ _08015B08: cmp r0, 0 bne _08015AAC _08015B16: - ldr r1, _08015B28 @ =gUnknown_3004F84 + ldr r1, _08015B28 @ =gBattleMainFunc ldr r0, _08015B2C @ =ReturnFromBattleToOverworld str r0, [r1] _08015B1C: @@ -11602,7 +11602,7 @@ _08015B1C: bx r0 .align 2, 0 _08015B24: .4byte gUnknown_3004FD4 -_08015B28: .4byte gUnknown_3004F84 +_08015B28: .4byte gBattleMainFunc _08015B2C: .4byte ReturnFromBattleToOverworld thumb_func_end sub_8015AA0 @@ -11614,7 +11614,7 @@ sub_8015B30: @ 8015B30 ldr r0, _08015B4C @ =BattleMainCB2 cmp r1, r0 bne _08015B42 - ldr r1, _08015B50 @ =gUnknown_3004F84 + ldr r1, _08015B50 @ =gBattleMainFunc ldr r0, _08015B54 @ =sub_8015AA0 str r0, [r1] _08015B42: @@ -11623,7 +11623,7 @@ _08015B42: .align 2, 0 _08015B48: .4byte gMain _08015B4C: .4byte BattleMainCB2 -_08015B50: .4byte gUnknown_3004F84 +_08015B50: .4byte gBattleMainFunc _08015B54: .4byte sub_8015AA0 thumb_func_end sub_8015B30 @@ -11726,7 +11726,7 @@ RunBattleScriptCommands_PopCallbacksStack: @ 8015C00 subs r0, 0x1 strb r0, [r1] _08015C24: - ldr r2, _08015C44 @ =gUnknown_3004F84 + ldr r2, _08015C44 @ =gBattleMainFunc ldr r0, [r3] ldr r1, [r0, 0xC] adds r0, r1, 0 @@ -11740,7 +11740,7 @@ _08015C24: .align 2, 0 _08015C3C: .4byte gUnknown_2023BE3 _08015C40: .4byte gBattleResources -_08015C44: .4byte gUnknown_3004F84 +_08015C44: .4byte gBattleMainFunc _08015C48: ldr r0, _08015C68 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -11797,7 +11797,7 @@ sub_8015CA0: @ 8015CA0 sub sp, 0x8 movs r0, 0x4 str r0, [sp] - ldr r6, _08015CE0 @ =sBattler_AI + ldr r6, _08015CE0 @ =gBattlerAttacker ldr r1, _08015CE4 @ =gUnknown_2023BDE ldr r0, _08015CE8 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -11821,7 +11821,7 @@ sub_8015CA0: @ 8015CA0 movs r0, 0xC b _0801634C .align 2, 0 -_08015CE0: .4byte sBattler_AI +_08015CE0: .4byte gBattlerAttacker _08015CE4: .4byte gUnknown_2023BDE _08015CE8: .4byte gUnknown_2023BE2 _08015CEC: .4byte gBattleStruct @@ -11868,7 +11868,7 @@ _08015CF8: ands r0, r1 strb r0, [r3] ldr r2, _08015D90 @ =gCurrentMove - ldr r1, _08015D94 @ =gUnknown_2023D4C + ldr r1, _08015D94 @ =gChosenMove movs r0, 0xA5 strh r0, [r1] strh r0, [r2] @@ -11896,7 +11896,7 @@ _08015D84: .4byte gUnknown_2023D49 _08015D88: .4byte gBattleStruct _08015D8C: .4byte gUnknown_2023E8C _08015D90: .4byte gCurrentMove -_08015D94: .4byte gUnknown_2023D4C +_08015D94: .4byte gChosenMove _08015D98: .4byte gUnknown_2023DD0 _08015D9C: ldr r0, _08015DD4 @ =gBattleMons @@ -11920,7 +11920,7 @@ _08015D9C: beq _08015DE4 _08015DC2: ldr r3, _08015DD8 @ =gCurrentMove - ldr r2, _08015DDC @ =gUnknown_2023D4C + ldr r2, _08015DDC @ =gChosenMove ldr r1, _08015DE0 @ =gUnknown_2023DB8 lsls r0, r4, 1 adds r0, r1 @@ -11931,7 +11931,7 @@ _08015DC2: .align 2, 0 _08015DD4: .4byte gBattleMons _08015DD8: .4byte gCurrentMove -_08015DDC: .4byte gUnknown_2023D4C +_08015DDC: .4byte gChosenMove _08015DE0: .4byte gUnknown_2023DB8 _08015DE4: ldr r3, _08015E38 @ =gDisableStructs @@ -11954,7 +11954,7 @@ _08015DE4: cmp r2, r1 bne _08015E48 ldr r2, _08015E3C @ =gCurrentMove - ldr r0, _08015E40 @ =gUnknown_2023D4C + ldr r0, _08015E40 @ =gChosenMove strh r4, [r0] strh r4, [r2] ldrb r1, [r6] @@ -11977,7 +11977,7 @@ _08015DE4: .align 2, 0 _08015E38: .4byte gDisableStructs _08015E3C: .4byte gCurrentMove -_08015E40: .4byte gUnknown_2023D4C +_08015E40: .4byte gChosenMove _08015E44: .4byte gBattleStruct _08015E48: cmp r2, 0 @@ -11989,7 +11989,7 @@ _08015E48: mov r0, r8 strb r3, [r0] ldr r3, _08015EB0 @ =gCurrentMove - ldr r2, _08015EB4 @ =gUnknown_2023D4C + ldr r2, _08015EB4 @ =gChosenMove ldrb r0, [r0] lsls r0, 1 ldrb r1, [r6] @@ -12032,13 +12032,13 @@ _08015E48: b _08015EF6 .align 2, 0 _08015EB0: .4byte gCurrentMove -_08015EB4: .4byte gUnknown_2023D4C +_08015EB4: .4byte gChosenMove _08015EB8: .4byte gBattleStruct _08015EBC: mov r4, r8 ldrb r0, [r4] lsls r0, 1 - ldr r4, _08015EFC @ =sBattler_AI + ldr r4, _08015EFC @ =gBattlerAttacker ldrb r2, [r4] movs r1, 0x58 muls r1, r2 @@ -12054,7 +12054,7 @@ _08015EBC: cmp r3, r2 beq _08015F10 ldr r1, _08015F04 @ =gCurrentMove - ldr r0, _08015F08 @ =gUnknown_2023D4C + ldr r0, _08015F08 @ =gChosenMove strh r3, [r0] strh r3, [r1] ldrh r0, [r1] @@ -12068,18 +12068,18 @@ _08015EF6: strb r0, [r1, 0xC] b _08015F18 .align 2, 0 -_08015EFC: .4byte sBattler_AI +_08015EFC: .4byte gBattlerAttacker _08015F00: .4byte gUnknown_2023DC4 _08015F04: .4byte gCurrentMove -_08015F08: .4byte gUnknown_2023D4C +_08015F08: .4byte gChosenMove _08015F0C: .4byte gBattleStruct _08015F10: ldr r1, _08015F30 @ =gCurrentMove - ldr r0, _08015F34 @ =gUnknown_2023D4C + ldr r0, _08015F34 @ =gChosenMove strh r3, [r0] strh r3, [r1] _08015F18: - ldr r0, _08015F38 @ =sBattler_AI + ldr r0, _08015F38 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -12092,8 +12092,8 @@ _08015F18: b _08015F48 .align 2, 0 _08015F30: .4byte gCurrentMove -_08015F34: .4byte gUnknown_2023D4C -_08015F38: .4byte sBattler_AI +_08015F34: .4byte gChosenMove +_08015F38: .4byte gBattlerAttacker _08015F3C: .4byte gBattleResults _08015F40: ldr r0, _08015FAC @ =gBattleResults @@ -12101,7 +12101,7 @@ _08015F40: ldrh r1, [r1] strh r1, [r0, 0x24] _08015F48: - ldr r4, _08015FB4 @ =sBattler_AI + ldr r4, _08015FB4 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide movs r1, 0x1 @@ -12150,7 +12150,7 @@ _08015F48: .align 2, 0 _08015FAC: .4byte gBattleResults _08015FB0: .4byte gCurrentMove -_08015FB4: .4byte sBattler_AI +_08015FB4: .4byte gBattlerAttacker _08015FB8: .4byte gSideTimers _08015FBC: .4byte gBattleMoves _08015FC0: .4byte gBattleMons @@ -12160,7 +12160,7 @@ _08015FC8: ldr r1, [r2] movs r0, 0x1 ands r1, r0 - ldr r3, _080160E8 @ =sBattler_AI + ldr r3, _080160E8 @ =gBattlerAttacker adds r7, r2, 0 cmp r1, 0 bne _08015FDA @@ -12192,7 +12192,7 @@ _08015FEC: b _080161F8 _08016008: ldr r3, _080160F8 @ =gBattleMons - ldr r2, _080160E8 @ =sBattler_AI + ldr r2, _080160E8 @ =gBattlerAttacker ldrb r6, [r2] ldr r0, _080160FC @ =gBattleStruct ldr r0, [r0] @@ -12231,7 +12231,7 @@ _08016048: lsrs r0, 24 cmp r6, r0 beq _08016096 - ldr r0, _080160E8 @ =sBattler_AI + ldr r0, _080160E8 @ =gBattlerAttacker ldrb r1, [r0] ldr r0, _080160FC @ =gBattleStruct ldr r0, [r0] @@ -12278,7 +12278,7 @@ _080160A8: b _080161AA _080160B0: ldr r2, _080160F0 @ =gBattleMoves - ldr r0, _08016108 @ =gUnknown_2023D4C + ldr r0, _08016108 @ =gChosenMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 @@ -12288,7 +12288,7 @@ _080160B0: ands r4, r0 cmp r4, 0 beq _08016130 - ldr r0, _080160E8 @ =sBattler_AI + ldr r0, _080160E8 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -12303,7 +12303,7 @@ _080160B0: b _08016122 .align 2, 0 _080160E4: .4byte gBattleTypeFlags -_080160E8: .4byte sBattler_AI +_080160E8: .4byte gBattlerAttacker _080160EC: .4byte gSideTimers _080160F0: .4byte gBattleMoves _080160F4: .4byte gCurrentMove @@ -12311,7 +12311,7 @@ _080160F8: .4byte gBattleMons _080160FC: .4byte gBattleStruct _08016100: .4byte gActiveBattler _08016104: .4byte gBattlersCount -_08016108: .4byte gUnknown_2023D4C +_08016108: .4byte gChosenMove _0801610C: movs r0, 0x3 b _08016122 @@ -12334,7 +12334,7 @@ _08016122: _0801612C: .4byte gBattlerTarget _08016130: ldr r2, _08016178 @ =gBattlerTarget - ldr r0, _0801617C @ =sBattler_AI + ldr r0, _0801617C @ =gBattlerAttacker ldrb r0, [r0] ldr r1, _08016180 @ =gBattleStruct ldr r1, [r1] @@ -12356,7 +12356,7 @@ _08016140: bne _0801615A b _0801632C _0801615A: - ldr r6, _0801617C @ =sBattler_AI + ldr r6, _0801617C @ =gBattlerAttacker ldrb r0, [r6] bl GetBattlerSide adds r4, r0, 0 @@ -12370,7 +12370,7 @@ _0801615A: b _0801631A .align 2, 0 _08016178: .4byte gBattlerTarget -_0801617C: .4byte sBattler_AI +_0801617C: .4byte gBattlerAttacker _08016180: .4byte gBattleStruct _08016184: .4byte gAbsentBattlerFlags _08016188: .4byte gBitTable @@ -12430,7 +12430,7 @@ _080161F8: cmp r0, 0 beq _080162A0 ldr r2, _08016238 @ =gBattleMoves - ldr r0, _0801623C @ =gUnknown_2023D4C + ldr r0, _0801623C @ =gChosenMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 @@ -12455,7 +12455,7 @@ _080161F8: b _08016256 .align 2, 0 _08016238: .4byte gBattleMoves -_0801623C: .4byte gUnknown_2023D4C +_0801623C: .4byte gChosenMove _08016240: movs r0, 0x3 b _08016256 @@ -12484,7 +12484,7 @@ _08016256: ands r1, r0 cmp r1, 0 beq _0801632C - ldr r0, _0801629C @ =sBattler_AI + ldr r0, _0801629C @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide adds r4, r0, 0 @@ -12500,7 +12500,7 @@ _08016256: _08016290: .4byte gBattlerTarget _08016294: .4byte gAbsentBattlerFlags _08016298: .4byte gBitTable -_0801629C: .4byte sBattler_AI +_0801629C: .4byte gBattlerAttacker _080162A0: ldr r5, _080162E4 @ =gBattlerTarget adds r2, r3, 0 @@ -12603,7 +12603,7 @@ _08016370: .4byte gUnknown_2023BE3 thumb_func_start sub_8016374 sub_8016374: @ 8016374 push {r4,lr} - ldr r3, _080163E0 @ =sBattler_AI + ldr r3, _080163E0 @ =gBattlerAttacker ldr r1, _080163E4 @ =gUnknown_2023BDE ldr r0, _080163E8 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -12619,7 +12619,7 @@ sub_8016374: @ 8016374 ldrb r0, [r3] adds r0, r1 strb r2, [r0] - ldr r1, _080163F8 @ =gUnknown_2023FFC + ldr r1, _080163F8 @ =gMoveSelectionCursor ldrb r0, [r3] adds r0, r1 strb r2, [r0] @@ -12658,13 +12658,13 @@ _080163DA: pop {r0} bx r0 .align 2, 0 -_080163E0: .4byte sBattler_AI +_080163E0: .4byte gBattlerAttacker _080163E4: .4byte gUnknown_2023BDE _080163E8: .4byte gUnknown_2023BE2 _080163EC: .4byte gBattle_BG0_X _080163F0: .4byte gBattle_BG0_Y _080163F4: .4byte gActionSelectionCursor -_080163F8: .4byte gUnknown_2023FFC +_080163F8: .4byte gMoveSelectionCursor _080163FC: .4byte gBattleTextBuff1 _08016400: .4byte gBattleStruct _08016404: .4byte gBattleScripting @@ -12681,7 +12681,7 @@ sub_8016418: @ 8016418 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r4, _08016474 @ =sBattler_AI + ldr r4, _08016474 @ =gBattlerAttacker ldr r2, _08016478 @ =gBattlerTarget ldr r1, _0801647C @ =gUnknown_2023BDE ldr r0, _08016480 @ =gUnknown_2023BE2 @@ -12697,8 +12697,8 @@ sub_8016418: @ 8016418 strh r1, [r0] ldrb r0, [r4] bl ClearFuryCutterDestinyBondGrudge - ldr r5, _0801648C @ =gUnknown_2023D68 - ldr r2, _08016490 @ =gUnknown_20233C4 + ldr r5, _0801648C @ =gLastUsedItem + ldr r2, _08016490 @ =gBattleBufferB ldrb r1, [r4] lsls r1, 9 adds r0, r2, 0x1 @@ -12722,14 +12722,14 @@ sub_8016418: @ 8016418 str r0, [r2] b _080164FC .align 2, 0 -_08016474: .4byte sBattler_AI +_08016474: .4byte gBattlerAttacker _08016478: .4byte gBattlerTarget _0801647C: .4byte gUnknown_2023BDE _08016480: .4byte gUnknown_2023BE2 _08016484: .4byte gBattle_BG0_X _08016488: .4byte gBattle_BG0_Y -_0801648C: .4byte gUnknown_2023D68 -_08016490: .4byte gUnknown_20233C4 +_0801648C: .4byte gLastUsedItem +_08016490: .4byte gBattleBufferB _08016494: .4byte gUnknown_2023D74 _08016498: .4byte gUnknown_81D99B0 _0801649C: @@ -12831,7 +12831,7 @@ _08016574: ldr r5, _080165AC @ =gUnknown_2023E82 movs r0, 0 strb r0, [r5, 0x5] - ldr r2, _080165B0 @ =sBattler_AI + ldr r2, _080165B0 @ =gBattlerAttacker ldrb r0, [r2] lsrs r0, 1 ldr r1, [r7] @@ -12859,7 +12859,7 @@ _080165A6: b _08016706 .align 2, 0 _080165AC: .4byte gUnknown_2023E82 -_080165B0: .4byte sBattler_AI +_080165B0: .4byte gBattlerAttacker _080165B4: .4byte gUnknown_2023D74 _080165B8: .4byte gUnknown_81D99E4 _080165BC: .4byte gUnknown_2023BE3 @@ -12903,7 +12903,7 @@ _08016608: ldr r3, _0801663C @ =gUnknown_2023E82 movs r0, 0x4 strb r0, [r3, 0x5] - ldr r2, _08016640 @ =sBattler_AI + ldr r2, _08016640 @ =gBattlerAttacker ldrb r0, [r2] lsrs r0, 1 ldr r1, [r7] @@ -12928,7 +12928,7 @@ _08016608: b _08016706 .align 2, 0 _0801663C: .4byte gUnknown_2023E82 -_08016640: .4byte sBattler_AI +_08016640: .4byte gBattlerAttacker _08016644: .4byte gUnknown_2023D74 _08016648: .4byte gUnknown_81D99E4 _0801664C: .4byte gUnknown_2023BE3 @@ -13016,7 +13016,7 @@ _080166F4: ldr r0, _08016734 @ =gUnknown_2023E82 strb r1, [r0, 0x5] _080166F8: - ldr r0, _08016738 @ =sBattler_AI + ldr r0, _08016738 @ =gBattlerAttacker mov r8, r0 ldr r1, _0801673C @ =gUnknown_2023D74 mov r9, r1 @@ -13049,7 +13049,7 @@ _0801671E: bx r0 .align 2, 0 _08016734: .4byte gUnknown_2023E82 -_08016738: .4byte sBattler_AI +_08016738: .4byte gBattlerAttacker _0801673C: .4byte gUnknown_2023D74 _08016740: .4byte gUnknown_81D99E4 _08016744: .4byte gUnknown_2023BE3 @@ -13088,7 +13088,7 @@ _0801677E: strb r4, [r0] cmp r1, 0x25 bne _080167BC - ldr r2, _080167B0 @ =gUnknown_2023D68 + ldr r2, _080167B0 @ =gLastUsedItem ldr r1, _080167B4 @ =gBattleMons movs r0, 0x58 muls r0, r4 @@ -13108,7 +13108,7 @@ _0801677E: b _08016816 .align 2, 0 _080167AC: .4byte gPotentialItemEffectBattler -_080167B0: .4byte gUnknown_2023D68 +_080167B0: .4byte gLastUsedItem _080167B4: .4byte gBattleMons _080167B8: .4byte gUnknown_2023E8C _080167BC: @@ -13230,7 +13230,7 @@ _080168A0: .4byte gBattleOutcome thumb_func_start sub_80168A4 sub_80168A4: @ 80168A4 push {r4-r6,lr} - ldr r4, _080168F4 @ =sBattler_AI + ldr r4, _080168F4 @ =gBattlerAttacker ldr r1, _080168F8 @ =gUnknown_2023BDE ldr r5, _080168FC @ =gUnknown_2023BE2 ldrb r0, [r5] @@ -13270,7 +13270,7 @@ _080168D8: movs r1, 0x2 b _08016922 .align 2, 0 -_080168F4: .4byte sBattler_AI +_080168F4: .4byte gBattlerAttacker _080168F8: .4byte gUnknown_2023BDE _080168FC: .4byte gUnknown_2023BE2 _08016900: .4byte gBattleTypeFlags @@ -13384,7 +13384,7 @@ _080169E4: .4byte gBattleOutcome thumb_func_start sub_80169E8 sub_80169E8: @ 80169E8 push {r4,r5,lr} - ldr r2, _08016A44 @ =sBattler_AI + ldr r2, _08016A44 @ =gBattlerAttacker ldr r1, _08016A48 @ =gUnknown_2023BDE ldr r0, _08016A4C @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -13428,7 +13428,7 @@ sub_80169E8: @ 80169E8 strb r0, [r4] b _08016A98 .align 2, 0 -_08016A44: .4byte sBattler_AI +_08016A44: .4byte gBattlerAttacker _08016A48: .4byte gUnknown_2023BDE _08016A4C: .4byte gUnknown_2023BE2 _08016A50: .4byte gBattle_BG0_X @@ -13485,7 +13485,7 @@ _08016ABC: .4byte gUnknown_2023BE3 thumb_func_start sub_8016AC0 sub_8016AC0: @ 8016AC0 - ldr r2, _08016AF8 @ =sBattler_AI + ldr r2, _08016AF8 @ =gBattlerAttacker ldr r1, _08016AFC @ =gUnknown_2023BDE ldr r0, _08016B00 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -13501,7 +13501,7 @@ sub_8016AC0: @ 8016AC0 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] - ldr r1, _08016B10 @ =gUnknown_2023D68 + ldr r1, _08016B10 @ =gLastUsedItem movs r0, 0x5 strh r0, [r1] ldr r1, _08016B14 @ =gUnknown_2023D74 @@ -13513,13 +13513,13 @@ sub_8016AC0: @ 8016AC0 strb r0, [r1] bx lr .align 2, 0 -_08016AF8: .4byte sBattler_AI +_08016AF8: .4byte gBattlerAttacker _08016AFC: .4byte gUnknown_2023BDE _08016B00: .4byte gUnknown_2023BE2 _08016B04: .4byte gBattle_BG0_X _08016B08: .4byte gBattle_BG0_Y _08016B0C: .4byte gNumSafariBalls -_08016B10: .4byte gUnknown_2023D68 +_08016B10: .4byte gLastUsedItem _08016B14: .4byte gUnknown_2023D74 _08016B18: .4byte gUnknown_81D99B0 _08016B1C: .4byte gUnknown_2023BE3 @@ -13528,7 +13528,7 @@ _08016B1C: .4byte gUnknown_2023BE3 thumb_func_start sub_8016B20 sub_8016B20: @ 8016B20 push {r4-r7,lr} - ldr r2, _08016B9C @ =sBattler_AI + ldr r2, _08016B9C @ =gBattlerAttacker ldr r1, _08016BA0 @ =gUnknown_2023BDE ldr r0, _08016BA4 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -13589,7 +13589,7 @@ _08016B86: pop {r0} bx r0 .align 2, 0 -_08016B9C: .4byte sBattler_AI +_08016B9C: .4byte gBattlerAttacker _08016BA0: .4byte gUnknown_2023BDE _08016BA4: .4byte gUnknown_2023BE2 _08016BA8: .4byte gBattle_BG0_X @@ -13603,7 +13603,7 @@ _08016BBC: .4byte gUnknown_2023BE3 thumb_func_start sub_8016BC0 sub_8016BC0: @ 8016BC0 push {r4-r7,lr} - ldr r2, _08016C3C @ =sBattler_AI + ldr r2, _08016C3C @ =gBattlerAttacker ldr r1, _08016C40 @ =gUnknown_2023BDE ldr r0, _08016C44 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -13664,7 +13664,7 @@ _08016C26: pop {r0} bx r0 .align 2, 0 -_08016C3C: .4byte sBattler_AI +_08016C3C: .4byte gBattlerAttacker _08016C40: .4byte gUnknown_2023BDE _08016C44: .4byte gUnknown_2023BE2 _08016C48: .4byte gBattle_BG0_X @@ -13678,7 +13678,7 @@ _08016C5C: .4byte gUnknown_2023BE3 thumb_func_start HandleAction_SafriZoneRun HandleAction_SafriZoneRun: @ 8016C60 push {r4,lr} - ldr r2, _08016C88 @ =sBattler_AI + ldr r2, _08016C88 @ =gBattlerAttacker ldr r1, _08016C8C @ =gUnknown_2023BDE ldr r4, _08016C90 @ =gUnknown_2023BE2 ldrb r0, [r4] @@ -13697,7 +13697,7 @@ HandleAction_SafriZoneRun: @ 8016C60 pop {r0} bx r0 .align 2, 0 -_08016C88: .4byte sBattler_AI +_08016C88: .4byte gBattlerAttacker _08016C8C: .4byte gUnknown_2023BDE _08016C90: .4byte gUnknown_2023BE2 _08016C94: .4byte gBattlersCount @@ -13706,7 +13706,7 @@ _08016C98: .4byte gBattleOutcome thumb_func_start HandleAction_Action9 HandleAction_Action9: @ 8016C9C - ldr r3, _08016CE8 @ =sBattler_AI + ldr r3, _08016CE8 @ =gBattlerAttacker ldr r1, _08016CEC @ =gUnknown_2023BDE ldr r0, _08016CF0 @ =gUnknown_2023BE2 ldrb r0, [r0] @@ -13744,7 +13744,7 @@ HandleAction_Action9: @ 8016C9C strb r0, [r1, 0x1] bx lr .align 2, 0 -_08016CE8: .4byte sBattler_AI +_08016CE8: .4byte gBattlerAttacker _08016CEC: .4byte gUnknown_2023BDE _08016CF0: .4byte gUnknown_2023BE2 _08016CF4: .4byte gBattle_BG0_X @@ -13837,7 +13837,7 @@ HandleAction_ActionFinished: @ 8016D70 strb r1, [r5, 0x18] strb r1, [r5, 0x19] ldr r2, _08016E08 @ =gUnknown_2023DA0 - ldr r3, _08016E0C @ =sBattler_AI + ldr r3, _08016E0C @ =gBattlerAttacker ldrb r0, [r3] lsls r0, 1 adds r0, r2 @@ -13876,7 +13876,7 @@ _08016DFC: .4byte gBattleMoveDamage _08016E00: .4byte gMoveResultFlags _08016E04: .4byte gBattleScripting _08016E08: .4byte gUnknown_2023DA0 -_08016E0C: .4byte sBattler_AI +_08016E0C: .4byte gBattlerAttacker _08016E10: .4byte gUnknown_2023DA8 _08016E14: .4byte gBattleStruct _08016E18: .4byte gDynamicBasePower diff --git a/asm/battle_ai_switch_items.s b/asm/battle_ai_switch_items.s index bdc1283db..eb415e34e 100644 --- a/asm/battle_ai_switch_items.s +++ b/asm/battle_ai_switch_items.s @@ -40,7 +40,7 @@ ShouldSwitchIfPerishSong: @ 8039188 movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues movs r0, 0x1 b _080391E6 .align 2, 0 @@ -84,7 +84,7 @@ _08039208: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues movs r0, 0x1 b _0803935E .align 2, 0 @@ -407,7 +407,7 @@ _080394A0: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues movs r0, 0x1 b _0803958A .align 2, 0 @@ -628,7 +628,7 @@ _08039668: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _08039686: movs r0, 0x1 _08039688: @@ -951,7 +951,7 @@ _080398EC: movs r0, 0x1 movs r1, 0x2 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues movs r0, 0x1 b _08039A56 .align 2, 0 @@ -1518,7 +1518,7 @@ _08039D96: lsls r2, 8 movs r0, 0x1 movs r1, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _08039DA8: pop {r4-r6} pop {r0} @@ -2604,7 +2604,7 @@ _0803A5FC: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues ldr r0, _0803A630 @ =gActiveBattler ldrb r0, [r0] lsrs r0, 1 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 8925effc6..dff9de521 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -111,7 +111,7 @@ DoMoveAnim: @ 807259C lsls r1, 16 lsrs r1, 16 ldr r2, _080725C0 @ =gBattleAnimAttacker - ldr r0, _080725C4 @ =sBattler_AI + ldr r0, _080725C4 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r2] ldr r2, _080725C8 @ =gBattleAnimTarget @@ -125,7 +125,7 @@ DoMoveAnim: @ 807259C bx r0 .align 2, 0 _080725C0: .4byte gBattleAnimAttacker -_080725C4: .4byte sBattler_AI +_080725C4: .4byte gBattlerAttacker _080725C8: .4byte gBattleAnimTarget _080725CC: .4byte gBattlerTarget _080725D0: .4byte gUnknown_81C68F4 diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index cf27334ca..8b0422d3f 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -1054,7 +1054,7 @@ sub_80EF490: @ 80EF490 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080EF4B4 @ =gUnknown_2023D68 + ldr r0, _080EF4B4 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 @@ -1066,7 +1066,7 @@ sub_80EF490: @ 80EF490 pop {r0} bx r0 .align 2, 0 -_080EF4B4: .4byte gUnknown_2023D68 +_080EF4B4: .4byte gLastUsedItem thumb_func_end sub_80EF490 thumb_func_start sub_80EF4B8 @@ -1075,7 +1075,7 @@ sub_80EF4B8: @ 80EF4B8 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080EF4DC @ =gUnknown_2023D68 + ldr r0, _080EF4DC @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 @@ -1087,7 +1087,7 @@ sub_80EF4B8: @ 80EF4B8 pop {r0} bx r0 .align 2, 0 -_080EF4DC: .4byte gUnknown_2023D68 +_080EF4DC: .4byte gLastUsedItem thumb_func_end sub_80EF4B8 thumb_func_start sub_80EF4E0 @@ -1210,7 +1210,7 @@ sub_80EF5AC: @ 80EF5AC lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r0, _080EF674 @ =gUnknown_2023D68 + ldr r0, _080EF674 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId adds r1, r0, 0 @@ -1297,7 +1297,7 @@ sub_80EF5AC: @ 80EF5AC pop {r0} bx r0 .align 2, 0 -_080EF674: .4byte gUnknown_2023D68 +_080EF674: .4byte gLastUsedItem _080EF678: .4byte gUnknown_82606F4 _080EF67C: .4byte gSprites _080EF680: .4byte gBattleAnimTarget @@ -1369,7 +1369,7 @@ _080EF6F8: bne _080EF708 movs r6, 0xD _080EF708: - ldr r0, _080EF7C8 @ =gUnknown_2023D68 + ldr r0, _080EF7C8 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId adds r4, r0, 0 @@ -1457,7 +1457,7 @@ _080EF708: bx r0 .align 2, 0 _080EF7C4: .4byte gSaveBlock2Ptr -_080EF7C8: .4byte gUnknown_2023D68 +_080EF7C8: .4byte gLastUsedItem _080EF7CC: .4byte gUnknown_82606F4 _080EF7D0: .4byte gSprites _080EF7D4: .4byte gBattleAnimTarget @@ -1654,7 +1654,7 @@ _080EF954: strh r0, [r4, 0x38] ldr r0, _080EF9A8 @ =sub_80EF9B4 str r0, [r4, 0x1C] - ldr r0, _080EF9AC @ =gUnknown_2023D68 + ldr r0, _080EF9AC @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 @@ -1687,7 +1687,7 @@ _080EF99E: bx r0 .align 2, 0 _080EF9A8: .4byte sub_80EF9B4 -_080EF9AC: .4byte gUnknown_2023D68 +_080EF9AC: .4byte gLastUsedItem _080EF9B0: .4byte gBattleAnimTarget thumb_func_end sub_80EF8F0 @@ -2873,7 +2873,7 @@ sub_80F02B0: @ 80F02B0 bl StartSpriteAffineAnim ldr r0, _080F0364 @ =sub_80F0378 str r0, [r4, 0x1C] - ldr r0, _080F0368 @ =gUnknown_2023D68 + ldr r0, _080F0368 @ =gLastUsedItem ldrh r0, [r0] bl ItemIdToBallId lsls r0, 24 @@ -2949,7 +2949,7 @@ _080F0302: bx r0 .align 2, 0 _080F0364: .4byte sub_80F0378 -_080F0368: .4byte gUnknown_2023D68 +_080F0368: .4byte gLastUsedItem _080F036C: .4byte gBattleAnimTarget _080F0370: .4byte gSprites _080F0374: .4byte gBattlerSpriteIds @@ -5446,7 +5446,7 @@ sub_80F1700: @ 80F1700 lsls r0, 24 lsrs r0, 24 ldr r2, _080F1718 @ =gBattleAnimTarget - ldr r1, _080F171C @ =gUnknown_2023D6E + ldr r1, _080F171C @ =gEffectBattler ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask @@ -5454,7 +5454,7 @@ sub_80F1700: @ 80F1700 bx r0 .align 2, 0 _080F1718: .4byte gBattleAnimTarget -_080F171C: .4byte gUnknown_2023D6E +_080F171C: .4byte gEffectBattler thumb_func_end sub_80F1700 thumb_func_start sub_80F1720 diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s index 82b94cf6a..a129795e3 100644 --- a/asm/battle_anim_utility_funcs.s +++ b/asm/battle_anim_utility_funcs.s @@ -3078,7 +3078,7 @@ sub_80BC060: @ 80BC060 ldrb r1, [r1] strb r1, [r2] ldr r2, _080BC088 @ =gBattleAnimTarget - ldr r1, _080BC08C @ =gUnknown_2023D6E + ldr r1, _080BC08C @ =gEffectBattler ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask @@ -3088,7 +3088,7 @@ sub_80BC060: @ 80BC060 _080BC080: .4byte gBattleAnimAttacker _080BC084: .4byte gBattlerTarget _080BC088: .4byte gBattleAnimTarget -_080BC08C: .4byte gUnknown_2023D6E +_080BC08C: .4byte gEffectBattler thumb_func_end sub_80BC060 thumb_func_start sub_80BC090 @@ -3151,11 +3151,11 @@ sub_80BC0FC: @ 80BC0FC lsls r0, 24 lsrs r0, 24 ldr r2, _080BC11C @ =gBattleAnimAttacker - ldr r1, _080BC120 @ =sBattler_AI + ldr r1, _080BC120 @ =gBattlerAttacker ldrb r1, [r1] strb r1, [r2] ldr r2, _080BC124 @ =gBattleAnimTarget - ldr r1, _080BC128 @ =gUnknown_2023D6E + ldr r1, _080BC128 @ =gEffectBattler ldrb r1, [r1] strb r1, [r2] bl DestroyAnimVisualTask @@ -3163,9 +3163,9 @@ sub_80BC0FC: @ 80BC0FC bx r0 .align 2, 0 _080BC11C: .4byte gBattleAnimAttacker -_080BC120: .4byte sBattler_AI +_080BC120: .4byte gBattlerAttacker _080BC124: .4byte gBattleAnimTarget -_080BC128: .4byte gUnknown_2023D6E +_080BC128: .4byte gEffectBattler thumb_func_end sub_80BC0FC thumb_func_start sub_80BC12C diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index 6ac812e58..e2d110861 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -10,8 +10,8 @@ nullsub_19: @ 803A664 bx lr thumb_func_end nullsub_19 - thumb_func_start sub_803A668 -sub_803A668: @ 803A668 + thumb_func_start SetControllerToLinkOpponent +SetControllerToLinkOpponent: @ 803A668 ldr r1, _0803A678 @ =gBattlerControllerFuncs ldr r0, _0803A67C @ =gActiveBattler ldrb r0, [r0] @@ -24,7 +24,7 @@ sub_803A668: @ 803A668 _0803A678: .4byte gBattlerControllerFuncs _0803A67C: .4byte gActiveBattler _0803A680: .4byte sub_803A684 - thumb_func_end sub_803A668 + thumb_func_end SetControllerToLinkOpponent thumb_func_start sub_803A684 sub_803A684: @ 803A684 @@ -1440,7 +1440,7 @@ _0803B1F6: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl RecordedOpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index c2dc58efd..a536d91b8 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -10,8 +10,8 @@ nullsub_77: @ 80D4200 bx lr thumb_func_end nullsub_77 - thumb_func_start sub_80D4204 -sub_80D4204: @ 80D4204 + thumb_func_start SetControllerToLinkPartner +SetControllerToLinkPartner: @ 80D4204 ldr r1, _080D4214 @ =gBattlerControllerFuncs ldr r0, _080D4218 @ =gActiveBattler ldrb r0, [r0] @@ -24,7 +24,7 @@ sub_80D4204: @ 80D4204 _080D4214: .4byte gBattlerControllerFuncs _080D4218: .4byte gActiveBattler _080D421C: .4byte LinkPartnerBufferRunCommand - thumb_func_end sub_80D4204 + thumb_func_end SetControllerToLinkPartner thumb_func_start LinkPartnerBufferRunCommand LinkPartnerBufferRunCommand: @ 80D4220 @@ -1144,7 +1144,7 @@ _080D4B1A: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl sub_80D49E8 add sp, 0x100 pop {r4-r6} diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 031525518..5afa2231e 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -10,8 +10,8 @@ nullsub_81: @ 80E75AC bx lr thumb_func_end nullsub_81 - thumb_func_start sub_80E75B0 -sub_80E75B0: @ 80E75B0 + thumb_func_start SetControllerToOakOrOldman +SetControllerToOakOrOldman: @ 80E75B0 ldr r1, _080E75DC @ =gBattlerControllerFuncs ldr r0, _080E75E0 @ =gActiveBattler ldrb r0, [r0] @@ -39,7 +39,7 @@ _080E75DC: .4byte gBattlerControllerFuncs _080E75E0: .4byte gActiveBattler _080E75E4: .4byte sub_80E75EC _080E75E8: .4byte gBattleStruct - thumb_func_end sub_80E75B0 + thumb_func_end SetControllerToOakOrOldman thumb_func_start sub_80E75EC sub_80E75EC: @ 80E75EC @@ -154,7 +154,7 @@ _080E76C8: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _080E781A _080E76D4: movs r0, 0x20 @@ -316,7 +316,7 @@ _080E780A: movs r1, 0xC _080E7814: movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _080E781A: bl WallyBufferExecCompleted b _080E7838 @@ -410,7 +410,7 @@ _080E78B4: movs r0, 0x1 movs r1, 0x1 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl WallyBufferExecCompleted _080E78D8: pop {r4} @@ -598,7 +598,7 @@ sub_80E7A14: @ 80E7A14 ldrb r1, [r0] ldr r2, _080E7A58 @ =gUnknown_203B0DC movs r0, 0x1 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue b _080E7A66 .align 2, 0 _080E7A44: .4byte gMain @@ -611,7 +611,7 @@ _080E7A5C: movs r0, 0x1 movs r1, 0x6 movs r2, 0 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue _080E7A66: bl WallyBufferExecCompleted _080E7A6A: @@ -710,7 +710,7 @@ _080E7B34: ldr r0, _080E7B48 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl WallyBufferExecCompleted _080E7B42: pop {r0} @@ -1145,7 +1145,7 @@ _080E7E4A: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] bl IsDoubleBattle lsls r0, 24 @@ -1437,7 +1437,7 @@ _080E807C: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] ldr r0, _080E8158 @ =sub_80E8190 str r0, [r6] @@ -2344,7 +2344,7 @@ _080E8880: ldr r0, _080E88B8 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl WallyBufferExecCompleted ldr r0, _080E88BC @ =gBattleStruct ldr r0, [r0] @@ -2733,7 +2733,7 @@ _080E8B9E: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl WallyBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -6161,7 +6161,7 @@ _080EA83E: lsls r2, 1 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl WallyBufferExecCompleted _080EA866: pop {r4} diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index 6f9097ed6..da113d908 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -10,8 +10,8 @@ nullsub_17: @ 8035A78 bx lr thumb_func_end nullsub_17 - thumb_func_start sub_8035A7C -sub_8035A7C: @ 8035A7C + thumb_func_start SetControllerToOpponent +SetControllerToOpponent: @ 8035A7C ldr r1, _08035A8C @ =gBattlerControllerFuncs ldr r0, _08035A90 @ =gActiveBattler ldrb r0, [r0] @@ -24,7 +24,7 @@ sub_8035A7C: @ 8035A7C _08035A8C: .4byte gBattlerControllerFuncs _08035A90: .4byte gActiveBattler _08035A94: .4byte sub_8035A98 - thumb_func_end sub_8035A7C + thumb_func_end SetControllerToOpponent thumb_func_start sub_8035A98 sub_8035A98: @ 8035A98 @@ -1406,7 +1406,7 @@ _080365C2: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -2403,7 +2403,7 @@ _08036DDE: ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl OpponentBufferExecCompleted add sp, 0x58 pop {r4-r7} @@ -5261,7 +5261,7 @@ _080385F0: movs r1, 0x3 _080385F4: movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _08038668 _080385FC: ldr r3, _08038670 @ =gBattleMoves @@ -5316,7 +5316,7 @@ _08038656: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _08038668: bl OpponentBufferExecCompleted b _08038712 @@ -5353,7 +5353,7 @@ _08038682: movs r0, 0x1 movs r1, 0xA adds r2, r4, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _0803870E .align 2, 0 _080386BC: .4byte gBattleMoves @@ -5378,7 +5378,7 @@ _080386C4: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _0803870E .align 2, 0 _080386F4: .4byte gBattleTypeFlags @@ -5391,7 +5391,7 @@ _080386F8: orrs r2, r4 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _0803870E: bl OpponentBufferExecCompleted _08038712: @@ -5413,7 +5413,7 @@ sub_8038718: @ 8038718 adds r0, 0xC0 ldrb r1, [r0] movs r0, 0x1 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl OpponentBufferExecCompleted pop {r0} bx r0 @@ -5528,7 +5528,7 @@ _0803880A: lsrs r1, 24 movs r0, 0x1 movs r2, 0 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue bl OpponentBufferExecCompleted pop {r4-r6} pop {r0} diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 029834bf8..51845f47a 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -10,8 +10,8 @@ nullsub_13: @ 802E310 bx lr thumb_func_end nullsub_13 - thumb_func_start SetBankFuncToPlayerBufferRunCommand -SetBankFuncToPlayerBufferRunCommand: @ 802E314 + thumb_func_start SetControllerToPlayer +SetControllerToPlayer: @ 802E314 ldr r1, _0802E32C @ =gBattlerControllerFuncs ldr r0, _0802E330 @ =gActiveBattler ldrb r0, [r0] @@ -28,7 +28,7 @@ _0802E32C: .4byte gBattlerControllerFuncs _0802E330: .4byte gActiveBattler _0802E334: .4byte PlayerBufferRunCommand _0802E338: .4byte gDoingBattleAnim - thumb_func_end SetBankFuncToPlayerBufferRunCommand + thumb_func_end SetControllerToPlayer thumb_func_start PlayerBufferExecCompleted PlayerBufferExecCompleted: @ 802E33C @@ -227,7 +227,7 @@ _0802E4C4: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _0802E616 _0802E4D0: movs r0, 0x20 @@ -389,7 +389,7 @@ _0802E606: movs r1, 0xC _0802E610: movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _0802E616: bl PlayerBufferExecCompleted b _0802E634 @@ -492,7 +492,7 @@ _0802E6B6: adds r0, r2 ldr r1, _0802E720 @ =sub_8012098 str r1, [r0] - ldr r1, _0802E724 @ =gUnknown_2023FFC + ldr r1, _0802E724 @ =gMoveSelectionCursor ldr r0, _0802E728 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -502,7 +502,7 @@ _0802E6B6: orrs r2, r0 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues ldrb r0, [r4] movs r1, 0x1 bl dp11b_obj_free @@ -516,7 +516,7 @@ _0802E714: .4byte gMain _0802E718: .4byte gSprites _0802E71C: .4byte gBattlerSpriteIds _0802E720: .4byte sub_8012098 -_0802E724: .4byte gUnknown_2023FFC +_0802E724: .4byte gMoveSelectionCursor _0802E728: .4byte gActiveBattler _0802E72C: movs r0, 0x2 @@ -665,7 +665,7 @@ _0802E846: muls r0, r1 ldr r1, _0802E8AC @ =gPlayerParty adds r0, r1 - ldr r1, _0802E8B0 @ =gUnknown_2023FFC + ldr r1, _0802E8B0 @ =gMoveSelectionCursor adds r2, r1 ldrb r1, [r2] adds r1, 0xD @@ -703,7 +703,7 @@ _0802E89C: _0802E8A4: .4byte gActiveBattler _0802E8A8: .4byte gBattlerPartyIndexes _0802E8AC: .4byte gPlayerParty -_0802E8B0: .4byte gUnknown_2023FFC +_0802E8B0: .4byte gMoveSelectionCursor _0802E8B4: .4byte gBattleMoves _0802E8B8: .4byte gAbsentBattlerFlags _0802E8BC: .4byte gBitTable @@ -806,7 +806,7 @@ _0802E96A: muls r0, r1 ldr r1, _0802E9EC @ =gPlayerParty adds r0, r1 - ldr r1, _0802E9F0 @ =gUnknown_2023FFC + ldr r1, _0802E9F0 @ =gMoveSelectionCursor adds r2, r1 ldrb r1, [r2] adds r1, 0xD @@ -861,7 +861,7 @@ _0802E9DC: _0802E9E4: .4byte gActiveBattler _0802E9E8: .4byte gBattlerPartyIndexes _0802E9EC: .4byte gPlayerParty -_0802E9F0: .4byte gUnknown_2023FFC +_0802E9F0: .4byte gMoveSelectionCursor _0802E9F4: .4byte gBattleMoves _0802E9F8: .4byte gAbsentBattlerFlags _0802E9FC: .4byte gBitTable @@ -896,7 +896,7 @@ sub_802EA10: @ 802EA10 _0802EA3A: movs r0, 0x5 bl PlaySE - ldr r1, _0802EA78 @ =gUnknown_2023FFC + ldr r1, _0802EA78 @ =gMoveSelectionCursor ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -922,7 +922,7 @@ _0802EA3A: _0802EA6C: .4byte gActiveBattler _0802EA70: .4byte gUnknown_2022BC8 _0802EA74: .4byte gMain -_0802EA78: .4byte gUnknown_2023FFC +_0802EA78: .4byte gMoveSelectionCursor _0802EA7C: ldr r2, _0802EA9C @ =gBattleMoves ldrh r1, [r1] @@ -991,7 +991,7 @@ _0802EAF8: movs r0, 0x1 add r8, r0 _0802EB04: - ldr r0, _0802EB78 @ =gUnknown_2023FFC + ldr r0, _0802EB78 @ =gMoveSelectionCursor adds r0, r2, r0 adds r1, r7, 0 adds r1, 0x8 @@ -1030,7 +1030,7 @@ _0802EB3A: mov r0, r8 cmp r0, 0 bne _0802EB88 - ldr r1, _0802EB78 @ =gUnknown_2023FFC + ldr r1, _0802EB78 @ =gMoveSelectionCursor ldr r0, _0802EB84 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -1041,11 +1041,11 @@ _0802EB3A: orrs r2, r0 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl PlayerBufferExecCompleted b _0802EDBA .align 2, 0 -_0802EB78: .4byte gUnknown_2023FFC +_0802EB78: .4byte gMoveSelectionCursor _0802EB7C: .4byte gUnknown_3004FF4 _0802EB80: .4byte 0x00007fff _0802EB84: .4byte gActiveBattler @@ -1123,7 +1123,7 @@ _0802EC10: ldr r2, _0802EC34 @ =0x0000ffff movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl PlayerBufferExecCompleted bl ResetPaletteFadeControl b _0802ED2C @@ -1134,7 +1134,7 @@ _0802EC38: ands r0, r1 cmp r0, 0 beq _0802EC68 - ldr r4, _0802EC64 @ =gUnknown_2023FFC + ldr r4, _0802EC64 @ =gMoveSelectionCursor ldrb r0, [r6] adds r2, r0, r4 ldrb r1, [r2] @@ -1153,13 +1153,13 @@ _0802EC52: eors r0, r2 b _0802ED10 .align 2, 0 -_0802EC64: .4byte gUnknown_2023FFC +_0802EC64: .4byte gMoveSelectionCursor _0802EC68: movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802ECAC - ldr r4, _0802ECA4 @ =gUnknown_2023FFC + ldr r4, _0802ECA4 @ =gMoveSelectionCursor ldrb r0, [r6] adds r3, r0, r4 ldrb r2, [r3] @@ -1186,14 +1186,14 @@ _0802EC92: eors r0, r7 b _0802ED10 .align 2, 0 -_0802ECA4: .4byte gUnknown_2023FFC +_0802ECA4: .4byte gMoveSelectionCursor _0802ECA8: .4byte gUnknown_3004FF8 _0802ECAC: movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802ECDC - ldr r4, _0802ECD8 @ =gUnknown_2023FFC + ldr r4, _0802ECD8 @ =gMoveSelectionCursor ldrb r0, [r6] adds r2, r0, r4 ldrb r1, [r2] @@ -1212,13 +1212,13 @@ _0802ECC6: eors r0, r2 b _0802ED10 .align 2, 0 -_0802ECD8: .4byte gUnknown_2023FFC +_0802ECD8: .4byte gMoveSelectionCursor _0802ECDC: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802ED4C - ldr r4, _0802ED40 @ =gUnknown_2023FFC + ldr r4, _0802ED40 @ =gMoveSelectionCursor ldrb r0, [r6] adds r3, r0, r4 ldrb r2, [r3] @@ -1261,7 +1261,7 @@ _0802ED2C: bl BeginNormalPaletteFade b _0802EDBA .align 2, 0 -_0802ED40: .4byte gUnknown_2023FFC +_0802ED40: .4byte gMoveSelectionCursor _0802ED44: .4byte gUnknown_3004FF8 _0802ED48: .4byte 0x00007fff _0802ED4C: @@ -1278,7 +1278,7 @@ _0802ED4C: ands r5, r7 cmp r5, 0 bne _0802EDBA - ldr r4, _0802ED8C @ =gUnknown_2023FFC + ldr r4, _0802ED8C @ =gMoveSelectionCursor ldrb r0, [r6] adds r0, r4 ldrb r0, [r0] @@ -1295,7 +1295,7 @@ _0802ED4C: .align 2, 0 _0802ED84: .4byte gUnknown_3004FF8 _0802ED88: .4byte gBattleTypeFlags -_0802ED8C: .4byte gUnknown_2023FFC +_0802ED8C: .4byte gMoveSelectionCursor _0802ED90: .4byte gUnknown_3004FF4 _0802ED94: ldr r1, _0802EDC8 @ =gUnknown_3004FF4 @@ -1369,7 +1369,7 @@ _0802EE18: ands r0, r1 cmp r0, 0 beq _0802EE58 - ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r5, _0802EF4C @ =gMoveSelectionCursor ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r2, r0, r5 @@ -1400,7 +1400,7 @@ _0802EE58: ands r0, r1 cmp r0, 0 beq _0802EEA6 - ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r5, _0802EF4C @ =gMoveSelectionCursor ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r3, r0, r5 @@ -1437,7 +1437,7 @@ _0802EEA6: ands r0, r1 cmp r0, 0 beq _0802EEE8 - ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r5, _0802EF4C @ =gMoveSelectionCursor ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r2, r0, r5 @@ -1468,7 +1468,7 @@ _0802EEE8: ands r0, r1 cmp r0, 0 beq _0802EF36 - ldr r5, _0802EF4C @ =gUnknown_2023FFC + ldr r5, _0802EF4C @ =gMoveSelectionCursor ldr r4, _0802EF50 @ =gActiveBattler ldrb r0, [r4] adds r3, r0, r5 @@ -1507,7 +1507,7 @@ _0802EF36: _0802EF40: .4byte gMain _0802EF44: .4byte gBattle_BG0_X _0802EF48: .4byte gBattle_BG0_Y -_0802EF4C: .4byte gUnknown_2023FFC +_0802EF4C: .4byte gMoveSelectionCursor _0802EF50: .4byte gActiveBattler _0802EF54: .4byte gUnknown_3004FF8 thumb_func_end sub_802EDDC @@ -1530,7 +1530,7 @@ sub_802EF58: @ 802EF58 _0802EF72: movs r0, 0x5 bl PlaySE - ldr r0, _0802F2E8 @ =gUnknown_2023FFC + ldr r0, _0802F2E8 @ =gMoveSelectionCursor mov r10, r0 ldr r1, _0802F2EC @ =gActiveBattler mov r8, r1 @@ -1667,7 +1667,7 @@ _0802F06E: adds r6, 0x1 cmp r6, 0x3 ble _0802F06E - ldr r1, _0802F2E8 @ =gUnknown_2023FFC + ldr r1, _0802F2E8 @ =gMoveSelectionCursor ldrb r0, [r7] adds r0, r1 ldrb r0, [r0] @@ -1831,7 +1831,7 @@ _0802F1B2: adds r6, 0x1 cmp r6, 0x3 ble _0802F1B2 - ldr r4, _0802F2E8 @ =gUnknown_2023FFC + ldr r4, _0802F2E8 @ =gMoveSelectionCursor ldr r3, _0802F2EC @ =gActiveBattler ldrb r0, [r3] adds r0, r4 @@ -1973,7 +1973,7 @@ _0802F2C8: b _0802F324 .align 2, 0 _0802F2E4: .4byte gMain -_0802F2E8: .4byte gUnknown_2023FFC +_0802F2E8: .4byte gMoveSelectionCursor _0802F2EC: .4byte gActiveBattler _0802F2F0: .4byte gUnknown_3004FF4 _0802F2F4: .4byte gUnknown_2022BC8 @@ -1995,7 +1995,7 @@ _0802F318: _0802F324: str r1, [r0] adds r7, r2, 0 - ldr r2, _0802F39C @ =gUnknown_2023FFC + ldr r2, _0802F39C @ =gMoveSelectionCursor ldrb r0, [r7] adds r0, r2 ldr r1, _0802F3A0 @ =gUnknown_3004FF4 @@ -2021,7 +2021,7 @@ _0802F34C: ldr r0, _0802F3A0 @ =gUnknown_3004FF4 ldrb r0, [r0] bl MoveSelectionDestroyCursorAt - ldr r1, _0802F39C @ =gUnknown_2023FFC + ldr r1, _0802F39C @ =gMoveSelectionCursor ldr r4, _0802F394 @ =gActiveBattler ldrb r0, [r4] adds r0, r1 @@ -2044,7 +2044,7 @@ _0802F34C: _0802F390: .4byte gBattlerControllerFuncs _0802F394: .4byte gActiveBattler _0802F398: .4byte sub_802EA10 -_0802F39C: .4byte gUnknown_2023FFC +_0802F39C: .4byte gMoveSelectionCursor _0802F3A0: .4byte gUnknown_3004FF4 _0802F3A4: .4byte gMain _0802F3A8: .4byte gBattleTypeFlags @@ -2073,7 +2073,7 @@ _0802F3C8: ands r0, r2 cmp r0, 0 beq _0802F454 - ldr r0, _0802F408 @ =gUnknown_2023FFC + ldr r0, _0802F408 @ =gMoveSelectionCursor ldr r1, _0802F40C @ =gActiveBattler ldrb r1, [r1] adds r1, r0 @@ -2089,7 +2089,7 @@ _0802F3F8: .4byte gBattlerControllerFuncs _0802F3FC: .4byte sub_802EA10 _0802F400: .4byte gMain _0802F404: .4byte gUnknown_3004FF4 -_0802F408: .4byte gUnknown_2023FFC +_0802F408: .4byte gMoveSelectionCursor _0802F40C: .4byte gActiveBattler _0802F410: ldrb r0, [r3] @@ -2102,7 +2102,7 @@ _0802F416: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, _0802F444 @ =gUnknown_2023FFC + ldr r1, _0802F444 @ =gMoveSelectionCursor ldr r0, _0802F448 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -2116,7 +2116,7 @@ _0802F416: b _0802F454 .align 2, 0 _0802F440: .4byte gUnknown_3004FF4 -_0802F444: .4byte gUnknown_2023FFC +_0802F444: .4byte gMoveSelectionCursor _0802F448: .4byte gActiveBattler _0802F44C: ldrb r0, [r4] @@ -2141,7 +2141,7 @@ _0802F454: ldrb r1, [r1] cmp r0, r1 bcs _0802F4E8 - ldr r0, _0802F49C @ =gUnknown_2023FFC + ldr r0, _0802F49C @ =gMoveSelectionCursor ldr r1, _0802F4A0 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 @@ -2156,7 +2156,7 @@ _0802F454: _0802F490: .4byte gMain _0802F494: .4byte gUnknown_3004FF4 _0802F498: .4byte gUnknown_3004FF8 -_0802F49C: .4byte gUnknown_2023FFC +_0802F49C: .4byte gMoveSelectionCursor _0802F4A0: .4byte gActiveBattler _0802F4A4: ldrb r0, [r3] @@ -2169,7 +2169,7 @@ _0802F4AA: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, _0802F4D8 @ =gUnknown_2023FFC + ldr r1, _0802F4D8 @ =gMoveSelectionCursor ldr r0, _0802F4DC @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -2183,7 +2183,7 @@ _0802F4AA: b _0802F4E8 .align 2, 0 _0802F4D4: .4byte gUnknown_3004FF4 -_0802F4D8: .4byte gUnknown_2023FFC +_0802F4D8: .4byte gMoveSelectionCursor _0802F4DC: .4byte gActiveBattler _0802F4E0: ldrb r0, [r4] @@ -2202,7 +2202,7 @@ _0802F4E8: ands r0, r2 cmp r0, 0 beq _0802F56C - ldr r0, _0802F520 @ =gUnknown_2023FFC + ldr r0, _0802F520 @ =gMoveSelectionCursor ldr r1, _0802F524 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 @@ -2216,7 +2216,7 @@ _0802F4E8: .align 2, 0 _0802F518: .4byte gMain _0802F51C: .4byte gUnknown_3004FF4 -_0802F520: .4byte gUnknown_2023FFC +_0802F520: .4byte gMoveSelectionCursor _0802F524: .4byte gActiveBattler _0802F528: ldrb r0, [r3] @@ -2229,7 +2229,7 @@ _0802F52E: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, _0802F55C @ =gUnknown_2023FFC + ldr r1, _0802F55C @ =gMoveSelectionCursor ldr r0, _0802F560 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -2243,7 +2243,7 @@ _0802F52E: b _0802F56C .align 2, 0 _0802F558: .4byte gUnknown_3004FF4 -_0802F55C: .4byte gUnknown_2023FFC +_0802F55C: .4byte gMoveSelectionCursor _0802F560: .4byte gActiveBattler _0802F564: ldrb r0, [r4] @@ -2268,7 +2268,7 @@ _0802F56C: ldrb r1, [r1] cmp r0, r1 bcs _0802F600 - ldr r0, _0802F5B4 @ =gUnknown_2023FFC + ldr r0, _0802F5B4 @ =gMoveSelectionCursor ldr r1, _0802F5B8 @ =gActiveBattler ldrb r1, [r1] adds r1, r0 @@ -2283,7 +2283,7 @@ _0802F56C: _0802F5A8: .4byte gMain _0802F5AC: .4byte gUnknown_3004FF4 _0802F5B0: .4byte gUnknown_3004FF8 -_0802F5B4: .4byte gUnknown_2023FFC +_0802F5B4: .4byte gMoveSelectionCursor _0802F5B8: .4byte gActiveBattler _0802F5BC: ldrb r0, [r3] @@ -2296,7 +2296,7 @@ _0802F5C2: strb r0, [r4] movs r0, 0x5 bl PlaySE - ldr r1, _0802F5F0 @ =gUnknown_2023FFC + ldr r1, _0802F5F0 @ =gMoveSelectionCursor ldr r0, _0802F5F4 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -2310,7 +2310,7 @@ _0802F5C2: b _0802F600 .align 2, 0 _0802F5EC: .4byte gUnknown_3004FF4 -_0802F5F0: .4byte gUnknown_2023FFC +_0802F5F0: .4byte gMoveSelectionCursor _0802F5F4: .4byte gActiveBattler _0802F5F8: ldrb r0, [r4] @@ -2363,7 +2363,7 @@ _0802F658: .4byte 0x00000439 _0802F65C: .4byte gPreBattleCallback1 _0802F660: .4byte sub_8011A1C _0802F664: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0802F694 @@ -3474,7 +3474,7 @@ _0802FEF2: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] bl IsDoubleBattle lsls r0, 24 @@ -3766,7 +3766,7 @@ _08030124: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] ldr r0, _08030200 @ =sub_8030238 str r0, [r6] @@ -4355,7 +4355,7 @@ sub_8030684: @ 8030684 ldrb r1, [r0] ldr r2, _080306C8 @ =gUnknown_203B0DC movs r0, 0x1 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue b _080306D6 .align 2, 0 _080306B4: .4byte gMain @@ -4368,7 +4368,7 @@ _080306CC: movs r0, 0x1 movs r1, 0x6 movs r2, 0 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue _080306D6: ldr r1, _080306F8 @ =gBattleBufferA ldr r0, _080306FC @ =gActiveBattler @@ -4438,7 +4438,7 @@ CompleteWhenChoseItem: @ 803073C ldr r0, _08030774 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl PlayerBufferExecCompleted _08030762: pop {r0} @@ -4638,7 +4638,7 @@ MoveSelectionDisplayPpNumber: @ 80308CC adds r0, r5, 0x4 adds r4, r0 ldr r6, _08030938 @ =gDisplayedStringBattle - ldr r5, _0803093C @ =gUnknown_2023FFC + ldr r5, _0803093C @ =gMoveSelectionCursor adds r1, r5 adds r0, r4, 0 adds r0, 0x8 @@ -4672,7 +4672,7 @@ _08030928: _08030930: .4byte gBattleBufferA _08030934: .4byte gActiveBattler _08030938: .4byte gDisplayedStringBattle -_0803093C: .4byte gUnknown_2023FFC +_0803093C: .4byte gMoveSelectionCursor thumb_func_end MoveSelectionDisplayPpNumber thumb_func_start MoveSelectionDisplayMoveType @@ -4702,7 +4702,7 @@ MoveSelectionDisplayMoveType: @ 8030940 bl StringCopy adds r3, r0, 0 ldr r2, _080309C0 @ =gBattleMoves - ldr r1, _080309C4 @ =gUnknown_2023FFC + ldr r1, _080309C4 @ =gMoveSelectionCursor ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] @@ -4733,7 +4733,7 @@ _080309B4: .4byte gDisplayedStringBattle _080309B8: .4byte gUnknown_83FE76A _080309BC: .4byte gUnknown_83FE770 _080309C0: .4byte gBattleMoves -_080309C4: .4byte gUnknown_2023FFC +_080309C4: .4byte gMoveSelectionCursor _080309C8: .4byte gUnknown_824F1A0 thumb_func_end MoveSelectionDisplayMoveType @@ -5032,7 +5032,7 @@ _08030BEA: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -6029,7 +6029,7 @@ _08031406: ldrb r1, [r0] movs r0, 0x1 adds r2, r4, 0 - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl PlayerBufferExecCompleted add sp, 0x58 pop {r4-r7} @@ -7366,7 +7366,7 @@ PlayerHandleSwitchInAnim: @ 8031F68 ldrb r0, [r5] adds r0, r1 strb r4, [r0] - ldr r1, _08031FE8 @ =gUnknown_2023FFC + ldr r1, _08031FE8 @ =gMoveSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] @@ -7390,7 +7390,7 @@ _08031FD8: .4byte gBattleBufferA _08031FDC: .4byte gBattlerPartyIndexes _08031FE0: .4byte gPlayerParty _08031FE4: .4byte gActionSelectionCursor -_08031FE8: .4byte gUnknown_2023FFC +_08031FE8: .4byte gMoveSelectionCursor _08031FEC: .4byte gBattlerControllerFuncs _08031FF0: .4byte sub_802FD18 thumb_func_end PlayerHandleSwitchInAnim @@ -8961,7 +8961,7 @@ sub_8032CB4: @ 8032CB4 ldr r1, _08032CE0 @ =gUnknown_3004FF4 movs r0, 0xFF strb r0, [r1] - ldr r1, _08032CE4 @ =gUnknown_2023FFC + ldr r1, _08032CE4 @ =gMoveSelectionCursor ldr r0, _08032CE8 @ =gActiveBattler ldrb r0, [r0] adds r0, r1 @@ -8975,7 +8975,7 @@ sub_8032CB4: @ 8032CB4 bx r0 .align 2, 0 _08032CE0: .4byte gUnknown_3004FF4 -_08032CE4: .4byte gUnknown_2023FFC +_08032CE4: .4byte gMoveSelectionCursor _08032CE8: .4byte gActiveBattler thumb_func_end sub_8032CB4 @@ -9629,7 +9629,7 @@ PlayerHandleTwoReturnValues: @ 8033230 movs r0, 0x1 movs r1, 0 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9641,7 +9641,7 @@ PlayerHandleChosenMonReturnValue: @ 8033244 movs r0, 0x1 movs r1, 0 movs r2, 0 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9652,7 +9652,7 @@ PlayerHandleOneReturnValue: @ 8033258 push {lr} movs r0, 0x1 movs r1, 0 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -9663,7 +9663,7 @@ PlayerHandleOneReturnValue_Duplicate: @ 803326C push {lr} movs r0, 0x1 movs r1, 0 - bl EmitOneReturnValue_Duplicate + bl BtlController_EmitOneReturnValue_Duplicate bl PlayerBufferExecCompleted pop {r0} bx r0 @@ -10640,21 +10640,21 @@ _08033A3E: ldr r0, _08033A50 @ =gActionSelectionCursor adds r0, r3, r0 strb r2, [r0] - ldr r1, _08033A54 @ =gUnknown_2023FFC + ldr r1, _08033A54 @ =gMoveSelectionCursor ldrb r0, [r4] adds r0, r1 strb r2, [r0] b _08033A68 .align 2, 0 _08033A50: .4byte gActionSelectionCursor -_08033A54: .4byte gUnknown_2023FFC +_08033A54: .4byte gMoveSelectionCursor _08033A58: ldr r0, _08033A5C @ =gActionSelectionCursor b _08033A62 .align 2, 0 _08033A5C: .4byte gActionSelectionCursor _08033A60: - ldr r0, _08033A74 @ =gUnknown_2023FFC + ldr r0, _08033A74 @ =gMoveSelectionCursor _08033A62: adds r0, r3, r0 movs r1, 0 @@ -10665,7 +10665,7 @@ _08033A68: pop {r0} bx r0 .align 2, 0 -_08033A74: .4byte gUnknown_2023FFC +_08033A74: .4byte gMoveSelectionCursor thumb_func_end PlayerHandleResetActionMoveSelection thumb_func_start PlayerHandlecmd55 @@ -10726,7 +10726,7 @@ _08033ADE: lsls r2, r1, 9 ldr r0, _08033B1C @ =gUnknown_2022BC8 adds r2, r0 - ldr r0, _08033B20 @ =gUnknown_2023FFC + ldr r0, _08033B20 @ =gMoveSelectionCursor adds r1, r0 ldrb r0, [r1] lsls r0, 1 @@ -10751,7 +10751,7 @@ _08033ADE: _08033B14: .4byte gBattleTypeFlags _08033B18: .4byte gActiveBattler _08033B1C: .4byte gUnknown_2022BC8 -_08033B20: .4byte gUnknown_2023FFC +_08033B20: .4byte gMoveSelectionCursor _08033B24: ldr r1, _08033B40 @ =gBattleMoves lsls r0, r4, 1 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index afc8ffef3..6e8071820 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -10,8 +10,8 @@ nullsub_99: @ 81560A0 bx lr thumb_func_end nullsub_99 - thumb_func_start sub_81560A4 -sub_81560A4: @ 81560A4 + thumb_func_start SetControllerToPokedude +SetControllerToPokedude: @ 81560A4 ldr r1, _081560C8 @ =gBattlerControllerFuncs ldr r0, _081560CC @ =gActiveBattler ldrb r0, [r0] @@ -36,7 +36,7 @@ _081560CC: .4byte gActiveBattler _081560D0: .4byte sub_81560DC _081560D4: .4byte gBattleStruct _081560D8: .4byte gSpecialVar_0x8004 - thumb_func_end sub_81560A4 + thumb_func_end SetControllerToPokedude thumb_func_start sub_81560DC sub_81560DC: @ 81560DC @@ -603,7 +603,7 @@ sub_8156538: @ 8156538 ldrb r1, [r0] ldr r2, _0815657C @ =gUnknown_203B0DC movs r0, 0x1 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue b _0815658A .align 2, 0 _08156568: .4byte gMain @@ -616,7 +616,7 @@ _08156580: movs r0, 0x1 movs r1, 0x6 movs r2, 0 - bl EmitChosenMonReturnValue + bl BtlController_EmitChosenMonReturnValue _0815658A: bl PlayerPartnerBufferExecCompleted _0815658E: @@ -683,7 +683,7 @@ sub_81565E8: @ 81565E8 ldr r0, _08156620 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 - bl EmitOneReturnValue + bl BtlController_EmitOneReturnValue bl PlayerPartnerBufferExecCompleted _0815660E: pop {r0} @@ -1121,7 +1121,7 @@ _08156922: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] bl IsDoubleBattle lsls r0, 24 @@ -1413,7 +1413,7 @@ _08156B54: lsrs r2, 16 movs r0, 0x1 movs r1, 0xB - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues strb r5, [r4] ldr r0, _08156C30 @ =sub_8156C68 str r0, [r6] @@ -2102,7 +2102,7 @@ _08157186: lsrs r1, 16 movs r0, 0x1 mov r2, sp - bl EmitDataTransfer + bl BtlController_EmitDataTransfer bl PlayerPartnerBufferExecCompleted add sp, 0x100 pop {r4-r6} @@ -4080,7 +4080,7 @@ sub_815823C: @ 815823C ldrb r0, [r5] adds r0, r1 strb r4, [r0] - ldr r1, _081582B4 @ =gUnknown_2023FFC + ldr r1, _081582B4 @ =gMoveSelectionCursor ldrb r0, [r5] adds r0, r1 strb r4, [r0] @@ -4101,7 +4101,7 @@ _081582A4: .4byte gBattleBufferA _081582A8: .4byte gBattlerPartyIndexes _081582AC: .4byte gPlayerParty _081582B0: .4byte gActionSelectionCursor -_081582B4: .4byte gUnknown_2023FFC +_081582B4: .4byte gMoveSelectionCursor _081582B8: .4byte gBattlerControllerFuncs _081582BC: .4byte sub_81563A8 thumb_func_end sub_815823C @@ -6839,13 +6839,13 @@ _081598DA: movs r1, 0x2 _081598DE: movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues b _081598F0 _081598E6: movs r0, 0x1 movs r1, 0x3 movs r2, 0 - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues _081598F0: bl PlayerPartnerBufferExecCompleted ldr r3, _08159924 @ =gUnknown_3005EE0 @@ -6984,7 +6984,7 @@ _081599DE: orrs r2, r1 movs r0, 0x1 movs r1, 0xA - bl EmitTwoReturnValues + bl BtlController_EmitTwoReturnValues bl PlayerPartnerBufferExecCompleted ldrb r0, [r6] lsls r0, 2 @@ -7012,7 +7012,7 @@ _08159A3C: .4byte gBattleStruct _08159A40: .4byte gUnknown_3005EE0 _08159A44: .4byte gActiveBattler _08159A48: - ldr r5, _08159AAC @ =gUnknown_2023FFC + ldr r5, _08159AAC @ =gMoveSelectionCursor adds r1, r2, r5 ldrb r0, [r3] ldrb r1, [r1] @@ -7061,7 +7061,7 @@ _08159AA0: pop {r0} bx r0 .align 2, 0 -_08159AAC: .4byte gUnknown_2023FFC +_08159AAC: .4byte gMoveSelectionCursor _08159AB0: .4byte gUnknown_3005EE0 _08159AB4: .4byte gActiveBattler thumb_func_end sub_8159998 diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s deleted file mode 100644 index 98a38a8d3..000000000 --- a/asm/battle_controllers.s +++ /dev/null @@ -1,3392 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_800D230 -sub_800D230: @ 800D230 - push {lr} - ldr r0, _0800D268 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800D262 - ldr r0, _0800D26C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0800D24A - bl sub_800B1F4 -_0800D24A: - ldr r0, _0800D270 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800D256 - bl sub_8009804 -_0800D256: - ldr r0, _0800D274 @ =sub_8081A90 - movs r1, 0 - bl CreateTask - bl CreateTasksForSendRecvLinkBuffers -_0800D262: - pop {r0} - bx r0 - .align 2, 0 -_0800D268: .4byte gBattleTypeFlags -_0800D26C: .4byte gWirelessCommType -_0800D270: .4byte gReceivedRemoteLinkPlayers -_0800D274: .4byte sub_8081A90 - thumb_func_end sub_800D230 - - thumb_func_start sub_800D278 -sub_800D278: @ 800D278 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0800D2E4 @ =gUnknown_3004F84 - ldr r0, _0800D2E8 @ =nullsub_12 - str r0, [r1] - movs r2, 0 - ldr r0, _0800D2EC @ =nullsub_13 - mov r8, r0 - movs r3, 0 - ldr r1, _0800D2F0 @ =gBattlerControllerFuncs - mov r12, r1 - ldr r7, _0800D2F4 @ =gBattlerPositions - movs r6, 0xFF - ldr r5, _0800D2F8 @ =gActionSelectionCursor - ldr r4, _0800D2FC @ =gUnknown_2023FFC -_0800D298: - mov r0, r8 - mov r1, r12 - adds r1, 0x4 - mov r12, r1 - subs r1, 0x4 - stm r1!, {r0} - adds r1, r2, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - adds r0, r2, r5 - strb r3, [r0] - adds r0, r2, r4 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _0800D298 - bl sub_800D230 - ldr r0, _0800D300 @ =gBattleControllerExecFlags - movs r4, 0 - str r4, [r0] - bl ClearBattleAnimationVars - bl ClearBattleMonForms - bl BattleAI_HandleItemUseBeforeAISetup - ldr r0, _0800D304 @ =gUnknown_2022B54 - str r4, [r0] - ldr r0, _0800D308 @ =gUnknown_2023DDC - strb r4, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800D2E4: .4byte gUnknown_3004F84 -_0800D2E8: .4byte nullsub_12 -_0800D2EC: .4byte nullsub_13 -_0800D2F0: .4byte gBattlerControllerFuncs -_0800D2F4: .4byte gBattlerPositions -_0800D2F8: .4byte gActionSelectionCursor -_0800D2FC: .4byte gUnknown_2023FFC -_0800D300: .4byte gBattleControllerExecFlags -_0800D304: .4byte gUnknown_2022B54 -_0800D308: .4byte gUnknown_2023DDC - thumb_func_end sub_800D278 - - thumb_func_start sub_800D30C -sub_800D30C: @ 800D30C - push {r4,r5,lr} - ldr r0, _0800D320 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800D324 - bl sub_800D494 - b _0800D328 - .align 2, 0 -_0800D320: .4byte gBattleTypeFlags -_0800D324: - bl sub_800D364 -_0800D328: - bl sub_800D768 - ldr r0, _0800D35C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0800D356 - movs r4, 0 - ldr r0, _0800D360 @ =gBattlersCount - ldrb r1, [r0] - cmp r4, r1 - bge _0800D356 - adds r5, r0, 0 -_0800D344: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8127DA8 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _0800D344 -_0800D356: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800D35C: .4byte gBattleTypeFlags -_0800D360: .4byte gBattlersCount - thumb_func_end sub_800D30C - - thumb_func_start sub_800D364 -sub_800D364: @ 800D364 - push {r4,lr} - ldr r0, _0800D398 @ =gBattleTypeFlags - ldr r2, [r0] - movs r4, 0x1 - adds r3, r2, 0 - ands r3, r4 - cmp r3, 0 - bne _0800D414 - ldr r1, _0800D39C @ =gUnknown_3004F84 - ldr r0, _0800D3A0 @ =sub_80123C0 - str r0, [r1] - movs r0, 0x80 - lsls r0, 9 - ands r0, r2 - cmp r0, 0 - beq _0800D3B4 - ldr r2, _0800D3A4 @ =gBattlerControllerFuncs - ldr r1, _0800D3A8 @ =sub_81560A4 - str r1, [r2] - ldr r0, _0800D3AC @ =gBattlerPositions - strb r3, [r0] - str r1, [r2, 0x4] - strb r4, [r0, 0x1] - ldr r1, _0800D3B0 @ =gBattlersCount - movs r0, 0x2 - b _0800D478 - .align 2, 0 -_0800D398: .4byte gBattleTypeFlags -_0800D39C: .4byte gUnknown_3004F84 -_0800D3A0: .4byte sub_80123C0 -_0800D3A4: .4byte gBattlerControllerFuncs -_0800D3A8: .4byte sub_81560A4 -_0800D3AC: .4byte gBattlerPositions -_0800D3B0: .4byte gBattlersCount -_0800D3B4: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0800D3CC - ldr r1, _0800D3C4 @ =gBattlerControllerFuncs - ldr r0, _0800D3C8 @ =SetControllerToSafari - b _0800D3E8 - .align 2, 0 -_0800D3C4: .4byte gBattlerControllerFuncs -_0800D3C8: .4byte SetControllerToSafari -_0800D3CC: - movs r0, 0x84 - lsls r0, 2 - ands r2, r0 - cmp r2, 0 - beq _0800D3E4 - ldr r1, _0800D3DC @ =gBattlerControllerFuncs - ldr r0, _0800D3E0 @ =sub_80E75B0 - b _0800D3E8 - .align 2, 0 -_0800D3DC: .4byte gBattlerControllerFuncs -_0800D3E0: .4byte sub_80E75B0 -_0800D3E4: - ldr r1, _0800D400 @ =gBattlerControllerFuncs - ldr r0, _0800D404 @ =SetBankFuncToPlayerBufferRunCommand -_0800D3E8: - str r0, [r1] - adds r2, r1, 0 - ldr r1, _0800D408 @ =gBattlerPositions - movs r0, 0 - strb r0, [r1] - ldr r0, _0800D40C @ =sub_8035A7C - str r0, [r2, 0x4] - movs r0, 0x1 - strb r0, [r1, 0x1] - ldr r1, _0800D410 @ =gBattlersCount - movs r0, 0x2 - b _0800D478 - .align 2, 0 -_0800D400: .4byte gBattlerControllerFuncs -_0800D404: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D408: .4byte gBattlerPositions -_0800D40C: .4byte sub_8035A7C -_0800D410: .4byte gBattlersCount -_0800D414: - ldr r1, _0800D444 @ =gUnknown_3004F84 - ldr r0, _0800D448 @ =sub_80123C0 - str r0, [r1] - movs r3, 0x80 - lsls r3, 9 - ands r3, r2 - cmp r3, 0 - beq _0800D458 - ldr r3, _0800D44C @ =gBattlerControllerFuncs - ldr r1, _0800D450 @ =sub_81560A4 - str r1, [r3] - ldr r2, _0800D454 @ =gBattlerPositions - movs r0, 0 - strb r0, [r2] - str r1, [r3, 0x4] - strb r4, [r2, 0x1] - str r1, [r3, 0x8] - movs r0, 0x2 - strb r0, [r2, 0x2] - str r1, [r3, 0xC] - movs r0, 0x3 - strb r0, [r2, 0x3] - b _0800D474 - .align 2, 0 -_0800D444: .4byte gUnknown_3004F84 -_0800D448: .4byte sub_80123C0 -_0800D44C: .4byte gBattlerControllerFuncs -_0800D450: .4byte sub_81560A4 -_0800D454: .4byte gBattlerPositions -_0800D458: - ldr r2, _0800D480 @ =gBattlerControllerFuncs - ldr r0, _0800D484 @ =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r1, _0800D488 @ =gBattlerPositions - strb r3, [r1] - ldr r3, _0800D48C @ =sub_8035A7C - str r3, [r2, 0x4] - strb r4, [r1, 0x1] - str r0, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] -_0800D474: - ldr r1, _0800D490 @ =gBattlersCount - movs r0, 0x4 -_0800D478: - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800D480: .4byte gBattlerControllerFuncs -_0800D484: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D488: .4byte gBattlerPositions -_0800D48C: .4byte sub_8035A7C -_0800D490: .4byte gBattlersCount - thumb_func_end sub_800D364 - - thumb_func_start sub_800D494 -sub_800D494: @ 800D494 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _0800D4D0 @ =gBattleTypeFlags - ldr r0, [r4] - movs r5, 0x1 - adds r3, r0, 0 - ands r3, r5 - cmp r3, 0 - bne _0800D51C - movs r4, 0x4 - ands r4, r0 - cmp r4, 0 - beq _0800D4F0 - ldr r1, _0800D4D4 @ =gUnknown_3004F84 - ldr r0, _0800D4D8 @ =sub_80123C0 - str r0, [r1] - ldr r2, _0800D4DC @ =gBattlerControllerFuncs - ldr r0, _0800D4E0 @ =SetBankFuncToPlayerBufferRunCommand - str r0, [r2] - ldr r1, _0800D4E4 @ =gBattlerPositions - strb r3, [r1] - ldr r0, _0800D4E8 @ =sub_803A668 - str r0, [r2, 0x4] - strb r5, [r1, 0x1] - ldr r1, _0800D4EC @ =gBattlersCount - movs r0, 0x2 - b _0800D752 - .align 2, 0 -_0800D4D0: .4byte gBattleTypeFlags -_0800D4D4: .4byte gUnknown_3004F84 -_0800D4D8: .4byte sub_80123C0 -_0800D4DC: .4byte gBattlerControllerFuncs -_0800D4E0: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D4E4: .4byte gBattlerPositions -_0800D4E8: .4byte sub_803A668 -_0800D4EC: .4byte gBattlersCount -_0800D4F0: - ldr r2, _0800D508 @ =gBattlerControllerFuncs - ldr r0, _0800D50C @ =SetBankFuncToPlayerBufferRunCommand - str r0, [r2, 0x4] - ldr r1, _0800D510 @ =gBattlerPositions - strb r4, [r1, 0x1] - ldr r0, _0800D514 @ =sub_803A668 - str r0, [r2] - strb r5, [r1] - ldr r1, _0800D518 @ =gBattlersCount - movs r0, 0x2 - b _0800D752 - .align 2, 0 -_0800D508: .4byte gBattlerControllerFuncs -_0800D50C: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D510: .4byte gBattlerPositions -_0800D514: .4byte sub_803A668 -_0800D518: .4byte gBattlersCount -_0800D51C: - movs r5, 0x41 - ands r5, r0 - cmp r5, 0x1 - bne _0800D5A4 - movs r6, 0x4 - adds r3, r6, 0 - ands r3, r0 - cmp r3, 0 - beq _0800D56C - ldr r1, _0800D554 @ =gUnknown_3004F84 - ldr r0, _0800D558 @ =sub_80123C0 - str r0, [r1] - ldr r2, _0800D55C @ =gBattlerControllerFuncs - ldr r4, _0800D560 @ =SetBankFuncToPlayerBufferRunCommand - str r4, [r2] - ldr r1, _0800D564 @ =gBattlerPositions - movs r0, 0 - strb r0, [r1] - ldr r3, _0800D568 @ =sub_803A668 - str r3, [r2, 0x4] - strb r5, [r1, 0x1] - str r4, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - b _0800D588 - .align 2, 0 -_0800D554: .4byte gUnknown_3004F84 -_0800D558: .4byte sub_80123C0 -_0800D55C: .4byte gBattlerControllerFuncs -_0800D560: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D564: .4byte gBattlerPositions -_0800D568: .4byte sub_803A668 -_0800D56C: - ldr r2, _0800D590 @ =gBattlerControllerFuncs - ldr r0, _0800D594 @ =SetBankFuncToPlayerBufferRunCommand - str r0, [r2, 0x4] - ldr r1, _0800D598 @ =gBattlerPositions - strb r3, [r1, 0x1] - ldr r3, _0800D59C @ =sub_803A668 - str r3, [r2] - strb r5, [r1] - str r0, [r2, 0xC] - movs r0, 0x2 - strb r0, [r1, 0x3] - str r3, [r2, 0x8] - movs r0, 0x3 - strb r0, [r1, 0x2] -_0800D588: - ldr r0, _0800D5A0 @ =gBattlersCount - strb r6, [r0] - b _0800D754 - .align 2, 0 -_0800D590: .4byte gBattlerControllerFuncs -_0800D594: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D598: .4byte gBattlerPositions -_0800D59C: .4byte sub_803A668 -_0800D5A0: .4byte gBattlersCount -_0800D5A4: - bl GetMultiplayerId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r4] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0800D5BC - ldr r1, _0800D5E4 @ =gUnknown_3004F84 - ldr r0, _0800D5E8 @ =sub_80123C0 - str r0, [r1] -_0800D5BC: - movs r0, 0 - mov r10, r0 - ldr r1, _0800D5EC @ =gLinkPlayers - mov r12, r1 - ldr r7, _0800D5F0 @ =gBattlerPositions - mov r8, r0 - ldr r6, _0800D5F4 @ =gBattlerPartyIndexes - movs r4, 0 - movs r2, 0x3 - mov r9, r2 -_0800D5D0: - mov r1, r12 - adds r0, r4, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0800D5F8 - cmp r0, 0x1 - bge _0800D610 - cmp r0, 0 - beq _0800D5FC - b _0800D61A - .align 2, 0 -_0800D5E4: .4byte gUnknown_3004F84 -_0800D5E8: .4byte sub_80123C0 -_0800D5EC: .4byte gLinkPlayers -_0800D5F0: .4byte gBattlerPositions -_0800D5F4: .4byte gBattlerPartyIndexes -_0800D5F8: - cmp r0, 0x3 - bne _0800D61A -_0800D5FC: - ldr r0, _0800D60C @ =gLinkPlayers - adds r0, r4, r0 - ldrb r0, [r0, 0x18] - movs r1, 0 - bl sub_8127DA8 - b _0800D61A - .align 2, 0 -_0800D60C: .4byte gLinkPlayers -_0800D610: - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_8127DA8 -_0800D61A: - cmp r10, r5 - bne _0800D66A - ldr r0, _0800D640 @ =gLinkPlayers - adds r3, r4, r0 - ldrh r1, [r3, 0x18] - lsls r1, 2 - ldr r2, _0800D644 @ =gBattlerControllerFuncs - adds r1, r2 - ldr r2, _0800D648 @ =SetBankFuncToPlayerBufferRunCommand - str r2, [r1] - ldrh r1, [r3, 0x18] - mov r12, r0 - cmp r1, 0x2 - bgt _0800D64C - cmp r1, 0x1 - bge _0800D660 - cmp r1, 0 - beq _0800D650 - b _0800D740 - .align 2, 0 -_0800D640: .4byte gLinkPlayers -_0800D644: .4byte gBattlerControllerFuncs -_0800D648: .4byte SetBankFuncToPlayerBufferRunCommand -_0800D64C: - cmp r1, 0x3 - bne _0800D740 -_0800D650: - mov r1, r12 - adds r0, r4, r1 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0800D726 -_0800D660: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - ldrh r0, [r3, 0x18] - b _0800D738 -_0800D66A: - ldr r2, _0800D690 @ =gLinkPlayers - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - bne _0800D694 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800D6A6 - b _0800D6EC - .align 2, 0 -_0800D690: .4byte gLinkPlayers -_0800D694: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800D6EC -_0800D6A6: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, _0800D6C8 @ =gBattlerControllerFuncs - adds r0, r1 - ldr r1, _0800D6CC @ =sub_80D4204 - str r1, [r0] - ldrh r1, [r2, 0x18] - cmp r1, 0x2 - bgt _0800D6D0 - cmp r1, 0x1 - bge _0800D6E4 - cmp r1, 0 - beq _0800D6D4 - b _0800D740 - .align 2, 0 -_0800D6C8: .4byte gBattlerControllerFuncs -_0800D6CC: .4byte sub_80D4204 -_0800D6D0: - cmp r1, 0x3 - bne _0800D740 -_0800D6D4: - mov r2, r12 - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0800D726 -_0800D6E4: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - b _0800D736 -_0800D6EC: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, _0800D70C @ =gBattlerControllerFuncs - adds r0, r1 - ldr r1, _0800D710 @ =sub_803A668 - str r1, [r0] - ldrh r0, [r2, 0x18] - cmp r0, 0x2 - bgt _0800D714 - cmp r0, 0x1 - bge _0800D730 - cmp r0, 0 - beq _0800D718 - b _0800D740 - .align 2, 0 -_0800D70C: .4byte gBattlerControllerFuncs -_0800D710: .4byte sub_803A668 -_0800D714: - cmp r0, 0x3 - bne _0800D740 -_0800D718: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - adds r0, r7 - movs r1, 0x1 - strb r1, [r0] - ldrh r0, [r2, 0x18] -_0800D726: - lsls r0, 1 - adds r0, r6 - mov r1, r8 - strh r1, [r0] - b _0800D740 -_0800D730: - adds r0, r7 - mov r1, r9 - strb r1, [r0] -_0800D736: - ldrh r0, [r2, 0x18] -_0800D738: - lsls r0, 1 - adds r0, r6 - mov r2, r9 - strh r2, [r0] -_0800D740: - adds r4, 0x1C - movs r0, 0x1 - add r10, r0 - mov r1, r10 - cmp r1, 0x3 - bgt _0800D74E - b _0800D5D0 -_0800D74E: - ldr r1, _0800D764 @ =gBattlersCount - movs r0, 0x4 -_0800D752: - strb r0, [r1] -_0800D754: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800D764: .4byte gBattlersCount - thumb_func_end sub_800D494 - - thumb_func_start sub_800D768 -sub_800D768: @ 800D768 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0800D788 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800D780 - b _0800D89C -_0800D780: - movs r0, 0 - mov r8, r0 - b _0800D892 - .align 2, 0 -_0800D788: .4byte gBattleTypeFlags -_0800D78C: - movs r5, 0 - movs r0, 0x1 - add r0, r8 - mov r10, r0 - ldr r0, _0800D7B8 @ =gBattlerPositions - add r0, r8 - mov r9, r0 - mov r0, r8 - lsls r6, r0, 1 - movs r7, 0 -_0800D7A0: - mov r0, r8 - cmp r0, 0x1 - bgt _0800D808 - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800D7C0 - ldr r0, _0800D7BC @ =gPlayerParty - b _0800D7C2 - .align 2, 0 -_0800D7B8: .4byte gBattlerPositions -_0800D7BC: .4byte gPlayerParty -_0800D7C0: - ldr r0, _0800D800 @ =gEnemyParty -_0800D7C2: - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0800D888 - ldr r0, _0800D804 @ =gBattlerPartyIndexes - adds r0, r6, r0 - strh r5, [r0] - b _0800D890 - .align 2, 0 -_0800D800: .4byte gEnemyParty -_0800D804: .4byte gBattlerPartyIndexes -_0800D808: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800D830 - ldr r0, _0800D82C @ =gPlayerParty - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0xB - b _0800D844 - .align 2, 0 -_0800D82C: .4byte gPlayerParty -_0800D830: - ldr r0, _0800D880 @ =gEnemyParty - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x41 -_0800D844: - bl GetMonData - cmp r0, 0 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0800D888 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0800D888 - ldr r1, _0800D884 @ =gBattlerPartyIndexes - mov r0, r8 - subs r0, 0x2 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r5 - beq _0800D888 - adds r0, r6, r1 - strh r5, [r0] - b _0800D890 - .align 2, 0 -_0800D880: .4byte gEnemyParty -_0800D884: .4byte gBattlerPartyIndexes -_0800D888: - adds r7, 0x64 - adds r5, 0x1 - cmp r5, 0x5 - ble _0800D7A0 -_0800D890: - mov r8, r10 -_0800D892: - ldr r0, _0800D8AC @ =gBattlersCount - ldrb r0, [r0] - cmp r8, r0 - bge _0800D89C - b _0800D78C -_0800D89C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800D8AC: .4byte gBattlersCount - thumb_func_end sub_800D768 - - thumb_func_start PrepareBufferDataTransfer -PrepareBufferDataTransfer: @ 800D8B0 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r5, r3, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _0800D8D8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800D8DC - adds r0, r3, 0 - adds r1, r2, 0 - adds r2, r4, 0 - bl PrepareBufferDataTransferLink - b _0800D92E - .align 2, 0 -_0800D8D8: .4byte gBattleTypeFlags -_0800D8DC: - cmp r5, 0 - beq _0800D8E6 - cmp r5, 0x1 - beq _0800D910 - b _0800D92E -_0800D8E6: - movs r3, 0 - cmp r3, r2 - bge _0800D92E - ldr r6, _0800D908 @ =gBattleBufferA - ldr r5, _0800D90C @ =gActiveBattler -_0800D8F0: - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3, r0 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r3, 0x1 - cmp r3, r2 - blt _0800D8F0 - b _0800D92E - .align 2, 0 -_0800D908: .4byte gBattleBufferA -_0800D90C: .4byte gActiveBattler -_0800D910: - movs r3, 0 - cmp r3, r2 - bge _0800D92E - ldr r6, _0800D934 @ =gUnknown_20233C4 - ldr r5, _0800D938 @ =gActiveBattler -_0800D91A: - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3, r0 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r3, 0x1 - cmp r3, r2 - blt _0800D91A -_0800D92E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800D934: .4byte gUnknown_20233C4 -_0800D938: .4byte gActiveBattler - thumb_func_end PrepareBufferDataTransfer - - thumb_func_start CreateTasksForSendRecvLinkBuffers -CreateTasksForSendRecvLinkBuffers: @ 800D93C - push {r4-r6,lr} - ldr r0, _0800D9D4 @ =sub_800DB6C - movs r1, 0 - bl CreateTask - ldr r2, _0800D9D8 @ =gUnknown_202286C - strb r0, [r2] - ldr r5, _0800D9DC @ =gTasks - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r6, 0 - movs r4, 0 - strh r4, [r0, 0x1E] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x26] - ldr r0, _0800D9E0 @ =Task_HandleCopyReceivedLinkBuffersData - movs r1, 0 - bl CreateTask - ldr r2, _0800D9E4 @ =gUnknown_202286D - strb r0, [r2] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r4, [r0, 0x26] - ldr r0, _0800D9E8 @ =gUnknown_202286E - strb r6, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800D9D4: .4byte sub_800DB6C -_0800D9D8: .4byte gUnknown_202286C -_0800D9DC: .4byte gTasks -_0800D9E0: .4byte Task_HandleCopyReceivedLinkBuffersData -_0800D9E4: .4byte gUnknown_202286D -_0800D9E8: .4byte gUnknown_202286E - thumb_func_end CreateTasksForSendRecvLinkBuffers - - thumb_func_start PrepareBufferDataTransferLink -PrepareBufferDataTransferLink: @ 800D9EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r2 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r1, 16 - mov r12, r1 - movs r1, 0x3 - mov r0, r12 - bics r0, r1 - adds r0, 0x4 - mov r8, r0 - ldr r2, _0800DB4C @ =gTasks - ldr r3, _0800DB50 @ =gUnknown_202286C - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r4, r0, r2 - movs r1, 0x24 - ldrsh r0, [r4, r1] - add r0, r8 - adds r0, 0x9 - movs r1, 0x80 - lsls r1, 5 - adds r5, r2, 0 - cmp r0, r1 - ble _0800DA3E - ldrh r0, [r4, 0x24] - movs r2, 0 - strh r0, [r4, 0x20] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - strh r2, [r0, 0x24] -_0800DA3E: - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r4, _0800DB54 @ =gLinkBattleSendBuffer - ldr r0, [r4] - adds r0, r1 - strb r6, [r0] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, _0800DB58 @ =gActiveBattler - ldrb r0, [r0] - strb r0, [r1, 0x1] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r0, [r4] - adds r1, r0 - ldr r0, _0800DB5C @ =sBattler_AI - ldrb r0, [r0] - strb r0, [r1, 0x2] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, _0800DB60 @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r1, 0x3] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r1, 0x24 - ldrsh r0, [r0, r1] - ldr r1, [r4] - adds r0, r1 - mov r2, r8 - strb r2, [r0, 0x4] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - movs r0, 0xFF - lsls r0, 8 - mov r2, r8 - ands r0, r2 - asrs r0, 8 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r0 - ldr r0, _0800DB64 @ =gAbsentBattlerFlags - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r2, 0x24 - ldrsh r1, [r0, r2] - ldr r0, [r4] - adds r1, r0 - ldr r0, _0800DB68 @ =gUnknown_2023D6E - ldrb r0, [r0] - strb r0, [r1, 0x7] - movs r2, 0 - cmp r2, r12 - bge _0800DB2C - mov r10, r5 - adds r6, r3, 0 -_0800DB0A: - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - add r0, r10 - movs r7, 0x24 - ldrsh r1, [r0, r7] - ldr r0, [r4] - adds r1, r2, r1 - adds r1, r0 - mov r7, r9 - adds r0, r7, r2 - ldrb r0, [r0] - strb r0, [r1, 0x8] - adds r2, 0x1 - cmp r2, r12 - blt _0800DB0A -_0800DB2C: - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x24] - add r0, r8 - adds r0, 0x8 - strh r0, [r1, 0x24] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800DB4C: .4byte gTasks -_0800DB50: .4byte gUnknown_202286C -_0800DB54: .4byte gLinkBattleSendBuffer -_0800DB58: .4byte gActiveBattler -_0800DB5C: .4byte sBattler_AI -_0800DB60: .4byte gBattlerTarget -_0800DB64: .4byte gAbsentBattlerFlags -_0800DB68: .4byte gUnknown_2023D6E - thumb_func_end PrepareBufferDataTransferLink - - thumb_func_start sub_800DB6C -sub_800DB6C: @ 800DB6C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0800DB94 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x1E - ldrsh r0, [r0, r2] - adds r7, r1, 0 - cmp r0, 0x5 - bls _0800DB88 - b _0800DD20 -_0800DB88: - lsls r0, 2 - ldr r1, _0800DB98 @ =_0800DB9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800DB94: .4byte gTasks -_0800DB98: .4byte _0800DB9C - .align 2, 0 -_0800DB9C: - .4byte _0800DBB4 - .4byte _0800DBC8 - .4byte _0800DBF4 - .4byte _0800DC50 - .4byte _0800DCC6 - .4byte _0800DD04 -_0800DBB4: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - movs r1, 0x64 - strh r1, [r0, 0x1C] - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - b _0800DD20 -_0800DBC8: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r7 - ldrh r0, [r1, 0x1C] - subs r0, 0x1 - strh r0, [r1, 0x1C] - lsls r0, 16 - cmp r0, 0 - beq _0800DBDE - b _0800DD20 -_0800DBDE: - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - ldr r0, _0800DBF0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800DBEE - b _0800DD20 -_0800DBEE: - b _0800DD1C - .align 2, 0 -_0800DBF0: .4byte gReceivedRemoteLinkPlayers -_0800DBF4: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0800DC10 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800DC14 - cmp r2, 0x3 - bgt _0800DC1A - b _0800DD20 - .align 2, 0 -_0800DC10: .4byte gBattleTypeFlags -_0800DC14: - cmp r2, 0x1 - bgt _0800DC1A - b _0800DD20 -_0800DC1A: - bl sub_800AA48 - lsls r0, 24 - cmp r0, 0 - beq _0800DC3C - bl sub_800A5BC - ldr r0, _0800DC38 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - b _0800DD1E - .align 2, 0 -_0800DC38: .4byte gTasks -_0800DC3C: - ldr r0, _0800DC4C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - b _0800DD1E - .align 2, 0 -_0800DC4C: .4byte gTasks -_0800DC50: - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - adds r2, r0, r7 - movs r3, 0x26 - ldrsh r5, [r2, r3] - movs r0, 0x24 - ldrsh r6, [r2, r0] - mov r12, r6 - cmp r5, r12 - beq _0800DD20 - ldrh r0, [r2, 0x22] - movs r6, 0x22 - ldrsh r3, [r2, r6] - cmp r3, 0 - bne _0800DCC0 - cmp r5, r12 - ble _0800DC80 - movs r6, 0x20 - ldrsh r0, [r2, r6] - cmp r5, r0 - bne _0800DC80 - strh r3, [r2, 0x20] - strh r3, [r2, 0x26] -_0800DC80: - adds r4, r1, r4 - lsls r4, 3 - adds r4, r7 - movs r0, 0x26 - ldrsh r1, [r4, r0] - ldr r5, _0800DCBC @ =gLinkBattleSendBuffer - ldr r0, [r5] - adds r1, r0 - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - lsls r1, 8 - orrs r0, r1 - adds r0, 0x8 - lsls r0, 16 - lsrs r6, r0, 16 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x26 - ldrsh r2, [r4, r1] - ldr r1, [r5] - adds r1, r2 - adds r2, r6, 0 - bl SendBlock - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - b _0800DD20 - .align 2, 0 -_0800DCBC: .4byte gLinkBattleSendBuffer -_0800DCC0: - subs r0, 0x1 - strh r0, [r2, 0x22] - b _0800DD20 -_0800DCC6: - bl sub_800A4BC - lsls r0, 24 - cmp r0, 0 - beq _0800DD20 - ldr r0, _0800DCFC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r3, 0x26 - ldrsh r2, [r1, r3] - ldr r0, _0800DD00 @ =gLinkBattleSendBuffer - ldr r0, [r0] - adds r2, r0 - ldrb r0, [r2, 0x4] - ldrb r2, [r2, 0x5] - lsls r2, 8 - movs r3, 0x5 - strh r3, [r1, 0x22] - orrs r0, r2 - ldrh r6, [r1, 0x26] - adds r0, r6 - adds r0, 0x8 - strh r0, [r1, 0x26] - b _0800DD1C - .align 2, 0 -_0800DCFC: .4byte gTasks -_0800DD00: .4byte gLinkBattleSendBuffer -_0800DD04: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r7 - ldrh r0, [r1, 0x22] - subs r0, 0x1 - strh r0, [r1, 0x22] - lsls r0, 16 - cmp r0, 0 - bne _0800DD20 - movs r0, 0x5 - strh r0, [r1, 0x22] -_0800DD1C: - movs r0, 0x3 -_0800DD1E: - strh r0, [r1, 0x1E] -_0800DD20: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800DB6C - - thumb_func_start sub_800DD28 -sub_800DD28: @ 800DD28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0800DD5C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0800DE28 - ldr r0, _0800DD60 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0800DE28 - ldr r0, _0800DD64 @ =gLinkPlayers - ldr r1, [r0, 0x14] - ldr r0, _0800DD68 @ =0x00002211 - cmp r1, r0 - bne _0800DE28 - bl sub_80FBB4C - movs r4, 0 - ldr r0, _0800DD6C @ =gBlockRecvBuffer - mov r10, r0 - b _0800DE1C - .align 2, 0 -_0800DD5C: .4byte gReceivedRemoteLinkPlayers -_0800DD60: .4byte gBattleTypeFlags -_0800DD64: .4byte gLinkPlayers -_0800DD68: .4byte 0x00002211 -_0800DD6C: .4byte gBlockRecvBuffer -_0800DD70: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800DE38 @ =gBitTable - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - ands r0, r1 - adds r1, r4, 0x1 - mov r9, r1 - cmp r0, 0 - beq _0800DE16 - adds r0, r4, 0 - bl ResetBlockReceivedFlag - lsls r0, r4, 8 - mov r4, r10 - adds r3, r0, r4 - ldr r1, _0800DE3C @ =gBlockRecvBuffer + 4 - adds r0, r1 - ldrh r6, [r0] - ldr r7, _0800DE40 @ =gTasks - ldr r4, _0800DE44 @ =gUnknown_202286D - mov r12, r4 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r2, r0, r7 - movs r0, 0x24 - ldrsh r1, [r2, r0] - adds r0, r6, 0 - adds r0, 0x9 - adds r1, r0 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - ble _0800DDD0 - ldrh r0, [r2, 0x24] - strh r0, [r2, 0x20] - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r7 - movs r1, 0 - strh r1, [r0, 0x24] -_0800DDD0: - ldr r2, _0800DE48 @ =gLinkBattleRecvBuffer - mov r4, r12 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r7 - movs r4, 0x24 - ldrsh r1, [r0, r4] - ldr r0, [r2] - adds r5, r0, r1 - adds r4, r3, 0 - movs r2, 0 - adds r3, r6, 0 - adds r3, 0x8 - mov r8, r7 - mov r7, r12 - cmp r2, r3 - bge _0800DE04 -_0800DDF6: - adds r0, r5, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r3 - blt _0800DDF6 -_0800DE04: - ldrb r0, [r7] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x24] - adds r0, r6, r0 - adds r0, 0x8 - strh r0, [r1, 0x24] -_0800DE16: - mov r1, r9 - lsls r0, r1, 24 - lsrs r4, r0, 24 -_0800DE1C: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _0800DD70 -_0800DE28: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800DE38: .4byte gBitTable -_0800DE3C: .4byte gBlockRecvBuffer + 4 -_0800DE40: .4byte gTasks -_0800DE44: .4byte gUnknown_202286D -_0800DE48: .4byte gLinkBattleRecvBuffer - thumb_func_end sub_800DD28 - - thumb_func_start Task_HandleCopyReceivedLinkBuffersData -Task_HandleCopyReceivedLinkBuffersData: @ 800DE4C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _0800DEB4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r1 - movs r0, 0x26 - ldrsh r2, [r3, r0] - movs r4, 0x24 - ldrsh r0, [r3, r4] - cmp r2, r0 - bne _0800DE70 - b _0800DF8C -_0800DE70: - cmp r2, r0 - ble _0800DE82 - movs r4, 0x20 - ldrsh r0, [r3, r4] - cmp r2, r0 - bne _0800DE82 - movs r0, 0 - strh r0, [r3, 0x20] - strh r0, [r3, 0x26] -_0800DE82: - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r5, r0, r1 - movs r0, 0x26 - ldrsh r1, [r5, r0] - ldr r3, _0800DEB8 @ =gLinkBattleRecvBuffer - mov r8, r3 - ldr r0, [r3] - adds r3, r1, r0 - ldrb r4, [r3, 0x1] - ldrb r6, [r3, 0x4] - ldrb r0, [r3, 0x5] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r3] - mov r9, r2 - cmp r0, 0x1 - beq _0800DF4C - cmp r0, 0x1 - bgt _0800DEBC - cmp r0, 0 - beq _0800DEC2 - b _0800DF7A - .align 2, 0 -_0800DEB4: .4byte gTasks -_0800DEB8: .4byte gLinkBattleRecvBuffer -_0800DEBC: - cmp r0, 0x2 - beq _0800DF64 - b _0800DF7A -_0800DEC2: - ldr r2, _0800DF2C @ =gBattleControllerExecFlags - ldr r1, _0800DF30 @ =gBitTable - lsls r0, r4, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0800DF8C - lsls r0, r4, 9 - ldr r1, _0800DF34 @ =gBattleBufferA - adds r0, r1 - adds r1, r3, 0 - adds r1, 0x8 - adds r2, r6, 0 - bl memcpy - adds r0, r4, 0 - bl sub_8017298 - ldr r0, _0800DF38 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0800DF7A - ldr r2, _0800DF3C @ =sBattler_AI - movs r4, 0x26 - ldrsh r0, [r5, r4] - mov r3, r8 - ldr r1, [r3] - adds r0, r1 - ldrb r0, [r0, 0x2] - strb r0, [r2] - ldr r2, _0800DF40 @ =gBattlerTarget - movs r4, 0x26 - ldrsh r0, [r5, r4] - adds r0, r1 - ldrb r0, [r0, 0x3] - strb r0, [r2] - ldr r2, _0800DF44 @ =gAbsentBattlerFlags - movs r3, 0x26 - ldrsh r0, [r5, r3] - adds r0, r1 - ldrb r0, [r0, 0x6] - strb r0, [r2] - ldr r2, _0800DF48 @ =gUnknown_2023D6E - movs r4, 0x26 - ldrsh r0, [r5, r4] - adds r0, r1 - ldrb r0, [r0, 0x7] - strb r0, [r2] - b _0800DF7A - .align 2, 0 -_0800DF2C: .4byte gBattleControllerExecFlags -_0800DF30: .4byte gBitTable -_0800DF34: .4byte gBattleBufferA -_0800DF38: .4byte gBattleTypeFlags -_0800DF3C: .4byte sBattler_AI -_0800DF40: .4byte gBattlerTarget -_0800DF44: .4byte gAbsentBattlerFlags -_0800DF48: .4byte gUnknown_2023D6E -_0800DF4C: - lsls r0, r4, 9 - ldr r1, _0800DF60 @ =gUnknown_20233C4 - adds r0, r1 - adds r1, r3, 0 - adds r1, 0x8 - adds r2, r6, 0 - bl memcpy - b _0800DF7A - .align 2, 0 -_0800DF60: .4byte gUnknown_20233C4 -_0800DF64: - ldrb r2, [r3, 0x8] - ldr r3, _0800DF98 @ =gBattleControllerExecFlags - ldr r1, _0800DF9C @ =gBitTable - lsls r0, r4, 2 - adds r0, r1 - lsls r2, 2 - ldr r1, [r0] - lsls r1, r2 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] -_0800DF7A: - ldr r0, _0800DFA0 @ =gTasks - mov r2, r9 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, r6, r0 - adds r0, 0x8 - strh r0, [r1, 0x26] -_0800DF8C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800DF98: .4byte gBattleControllerExecFlags -_0800DF9C: .4byte gBitTable -_0800DFA0: .4byte gTasks - thumb_func_end Task_HandleCopyReceivedLinkBuffersData - - thumb_func_start BtlController_EmitGetMonData -BtlController_EmitGetMonData: @ 800DFA4 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800DFC4 @ =gUnknown_2022874 - movs r3, 0 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800DFC4: .4byte gUnknown_2022874 - thumb_func_end BtlController_EmitGetMonData - - thumb_func_start EmitGetRawMonData -EmitGetRawMonData: @ 800DFC8 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800DFEC @ =gUnknown_2022874 - movs r4, 0 - movs r3, 0x1 - strb r3, [r1] - strb r5, [r1, 0x1] - strb r2, [r1, 0x2] - strb r4, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800DFEC: .4byte gUnknown_2022874 - thumb_func_end EmitGetRawMonData - - thumb_func_start EmitSetMonData -EmitSetMonData: @ 800DFF0 - push {r4-r6,lr} - ldr r4, [sp, 0x10] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r3, 24 - lsrs r5, r3, 24 - ldr r0, _0800E02C @ =gUnknown_2022874 - movs r3, 0x2 - strb r3, [r0] - strb r1, [r0, 0x1] - strb r2, [r0, 0x2] - adds r1, r0, 0 - cmp r5, 0 - beq _0800E01E - adds r3, r1, 0x3 - adds r2, r5, 0 -_0800E010: - ldrb r0, [r4] - strb r0, [r3] - adds r4, 0x1 - adds r3, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _0800E010 -_0800E01E: - adds r2, r5, 0x3 - adds r0, r6, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E02C: .4byte gUnknown_2022874 - thumb_func_end EmitSetMonData - - thumb_func_start EmitSetRawMonData -EmitSetRawMonData: @ 800E030 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r4, r2, 24 - ldr r0, _0800E06C @ =gUnknown_2022874 - movs r2, 0x3 - strb r2, [r0] - strb r1, [r0, 0x1] - strb r4, [r0, 0x2] - adds r5, r0, 0 - cmp r4, 0 - beq _0800E05C - adds r1, r5, 0x3 - adds r2, r4, 0 -_0800E04E: - ldrb r0, [r3] - strb r0, [r1] - adds r3, 0x1 - adds r1, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _0800E04E -_0800E05C: - adds r2, r4, 0x3 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E06C: .4byte gUnknown_2022874 - thumb_func_end EmitSetRawMonData - - thumb_func_start EmitLoadMonSprite -EmitLoadMonSprite: @ 800E070 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E08C @ =gUnknown_2022874 - movs r2, 0x4 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E08C: .4byte gUnknown_2022874 - thumb_func_end EmitLoadMonSprite - - thumb_func_start EmitSwitchInAnim -EmitSwitchInAnim: @ 800E090 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E0B0 @ =gUnknown_2022874 - movs r3, 0x5 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E0B0: .4byte gUnknown_2022874 - thumb_func_end EmitSwitchInAnim - - thumb_func_start EmitReturnMonToBall -EmitReturnMonToBall: @ 800E0B4 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E0D0 @ =gUnknown_2022874 - movs r2, 0x6 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E0D0: .4byte gUnknown_2022874 - thumb_func_end EmitReturnMonToBall - - thumb_func_start EmitDrawTrainerPic -EmitDrawTrainerPic: @ 800E0D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E0F0 @ =gUnknown_2022874 - movs r2, 0x7 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E0F0: .4byte gUnknown_2022874 - thumb_func_end EmitDrawTrainerPic - - thumb_func_start EmitTrainerSlide -EmitTrainerSlide: @ 800E0F4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E110 @ =gUnknown_2022874 - movs r2, 0x8 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E110: .4byte gUnknown_2022874 - thumb_func_end EmitTrainerSlide - - thumb_func_start EmitTrainerSlideBack -EmitTrainerSlideBack: @ 800E114 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E130 @ =gUnknown_2022874 - movs r2, 0x9 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E130: .4byte gUnknown_2022874 - thumb_func_end EmitTrainerSlideBack - - thumb_func_start EmitFaintAnimation -EmitFaintAnimation: @ 800E134 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E150 @ =gUnknown_2022874 - movs r2, 0xA - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E150: .4byte gUnknown_2022874 - thumb_func_end EmitFaintAnimation - - thumb_func_start EmitPaletteFade -EmitPaletteFade: @ 800E154 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E170 @ =gUnknown_2022874 - movs r2, 0xB - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E170: .4byte gUnknown_2022874 - thumb_func_end EmitPaletteFade - - thumb_func_start EmitSuccessBallThrowAnim -EmitSuccessBallThrowAnim: @ 800E174 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E190 @ =gUnknown_2022874 - movs r2, 0xC - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E190: .4byte gUnknown_2022874 - thumb_func_end EmitSuccessBallThrowAnim - - thumb_func_start EmitBallThrowAnim -EmitBallThrowAnim: @ 800E194 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E1B0 @ =gUnknown_2022874 - movs r2, 0xD - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E1B0: .4byte gUnknown_2022874 - thumb_func_end EmitBallThrowAnim - - thumb_func_start EmitPause -EmitPause: @ 800E1B4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r1, _0800E1F8 @ =gUnknown_2022874 - movs r0, 0xE - strb r0, [r1] - strb r4, [r1, 0x1] - lsls r0, r4, 1 - adds r0, r4 - adds r5, r1, 0 - cmp r0, 0 - beq _0800E1E2 - adds r1, r5, 0x2 - adds r3, r0, 0 -_0800E1D4: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _0800E1D4 -_0800E1E2: - lsls r2, r4, 1 - adds r2, r4 - adds r2, 0x2 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E1F8: .4byte gUnknown_2022874 - thumb_func_end EmitPause - - thumb_func_start EmitMoveAnimation -EmitMoveAnimation: @ 800E1FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r7, _0800E290 @ =gUnknown_2022874 - movs r0, 0 - mov r12, r0 - movs r0, 0xF - strb r0, [r7] - strb r1, [r7, 0x1] - lsrs r1, 8 - strb r1, [r7, 0x2] - strb r2, [r7, 0x3] - strb r3, [r7, 0x4] - movs r6, 0xFF - lsls r6, 8 - lsrs r3, 8 - strb r3, [r7, 0x5] - strb r4, [r7, 0x6] - adds r0, r4, 0 - ands r0, r6 - asrs r0, 8 - strb r0, [r7, 0x7] - movs r0, 0xFF - lsls r0, 16 - ands r0, r4 - asrs r0, 16 - strb r0, [r7, 0x8] - lsrs r4, 24 - strb r4, [r7, 0x9] - strb r5, [r7, 0xA] - ldr r0, _0800E294 @ =gUnknown_2023D72 - ldrb r0, [r0] - strb r0, [r7, 0xB] - mov r0, r12 - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0800E29C - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0800E29C - ldr r0, _0800E298 @ =gBattleWeather - ldrh r0, [r0] - strb r0, [r7, 0xC] - ands r6, r0 - lsrs r0, r6, 8 - strb r0, [r7, 0xD] - adds r4, r7, 0 - b _0800E2A6 - .align 2, 0 -_0800E290: .4byte gUnknown_2022874 -_0800E294: .4byte gUnknown_2023D72 -_0800E298: .4byte gBattleWeather -_0800E29C: - ldr r0, _0800E2D0 @ =gUnknown_2022874 - movs r1, 0 - strb r1, [r0, 0xC] - strb r1, [r0, 0xD] - adds r4, r0, 0 -_0800E2A6: - movs r0, 0 - strb r0, [r4, 0xE] - strb r0, [r4, 0xF] - adds r0, r4, 0 - adds r0, 0x10 - ldr r1, [sp, 0x24] - movs r2, 0x1C - bl memcpy - mov r0, r8 - adds r1, r4, 0 - movs r2, 0x2C - bl PrepareBufferDataTransfer - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E2D0: .4byte gUnknown_2022874 - thumb_func_end EmitMoveAnimation - - thumb_func_start EmitPrintString -EmitPrintString: @ 800E2D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _0800E3B4 @ =gUnknown_2022874 - movs r0, 0x10 - strb r0, [r2] - ldr r0, _0800E3B8 @ =gBattleOutcome - ldrb r0, [r0] - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - lsrs r1, 8 - strb r1, [r2, 0x3] - adds r0, r2, 0x4 - mov r12, r0 - ldr r4, _0800E3BC @ =gCurrentMove - ldrh r0, [r4] - strh r0, [r2, 0x4] - ldr r0, _0800E3C0 @ =gUnknown_2023D4C - ldrh r0, [r0] - mov r1, r12 - strh r0, [r1, 0x2] - ldr r0, _0800E3C4 @ =gUnknown_2023D68 - ldrh r0, [r0] - strh r0, [r1, 0x4] - ldr r0, _0800E3C8 @ =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldr r0, _0800E3CC @ =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r1, 0x7] - ldr r0, _0800E3D0 @ =gBattleStruct - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0x52 - ldrb r1, [r1] - mov r3, r12 - strb r1, [r3, 0x8] - adds r0, 0xAD - ldrb r0, [r0] - strb r0, [r3, 0x9] - ldr r0, _0800E3D4 @ =gPotentialItemEffectBattler - ldrb r0, [r0] - strb r0, [r3, 0xA] - ldr r3, _0800E3D8 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - mov r7, r12 - strb r0, [r7, 0xB] - movs r3, 0 - mov r9, r2 - ldr r0, _0800E3DC @ =gUnknown_2022AD8 - mov r8, r0 - adds r2, 0x10 - ldr r0, _0800E3E0 @ =gBattleMons - adds r4, r0, 0 - adds r4, 0x20 -_0800E35A: - adds r1, r2, r3 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x58 - adds r3, 0x1 - cmp r3, 0x3 - ble _0800E35A - movs r3, 0 - mov r5, r12 - adds r5, 0x10 - mov r4, r12 - adds r4, 0x20 - ldr r6, _0800E3E4 @ =gBattleTextBuff2 - mov r2, r12 - adds r2, 0x30 -_0800E378: - adds r1, r5, r3 - ldr r7, _0800E3E8 @ =gBattleTextBuff1 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r4, r3 - adds r0, r3, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r3 - mov r7, r8 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0xF - ble _0800E378 - mov r0, r10 - mov r1, r9 - movs r2, 0x44 - bl PrepareBufferDataTransfer - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E3B4: .4byte gUnknown_2022874 -_0800E3B8: .4byte gBattleOutcome -_0800E3BC: .4byte gCurrentMove -_0800E3C0: .4byte gUnknown_2023D4C -_0800E3C4: .4byte gUnknown_2023D68 -_0800E3C8: .4byte gLastUsedAbility -_0800E3CC: .4byte gBattleScripting -_0800E3D0: .4byte gBattleStruct -_0800E3D4: .4byte gPotentialItemEffectBattler -_0800E3D8: .4byte gBattleMoves -_0800E3DC: .4byte gUnknown_2022AD8 -_0800E3E0: .4byte gBattleMons -_0800E3E4: .4byte gBattleTextBuff2 -_0800E3E8: .4byte gBattleTextBuff1 - thumb_func_end EmitPrintString - - thumb_func_start EmitPrintSelectionString -EmitPrintSelectionString: @ 800E3EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _0800E4A8 @ =gUnknown_2022874 - movs r0, 0x11 - strb r0, [r2] - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - lsrs r1, 8 - strb r1, [r2, 0x3] - adds r0, r2, 0x4 - mov r12, r0 - ldr r0, _0800E4AC @ =gCurrentMove - ldrh r0, [r0] - strh r0, [r2, 0x4] - ldr r0, _0800E4B0 @ =gUnknown_2023D4C - ldrh r0, [r0] - mov r1, r12 - strh r0, [r1, 0x2] - ldr r0, _0800E4B4 @ =gUnknown_2023D68 - ldrh r0, [r0] - strh r0, [r1, 0x4] - ldr r0, _0800E4B8 @ =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x6] - ldr r0, _0800E4BC @ =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r1, 0x7] - ldr r0, _0800E4C0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x52 - ldrb r0, [r0] - strb r0, [r1, 0x8] - movs r3, 0 - mov r9, r2 - ldr r7, _0800E4C4 @ =gUnknown_2022AD8 - mov r8, r7 - mov r4, r9 - adds r4, 0x10 - ldr r0, _0800E4C8 @ =gBattleMons - adds r2, r0, 0 - adds r2, 0x20 -_0800E44E: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x58 - adds r3, 0x1 - cmp r3, 0x3 - ble _0800E44E - movs r3, 0 - mov r5, r12 - adds r5, 0x10 - mov r4, r12 - adds r4, 0x20 - ldr r6, _0800E4CC @ =gBattleTextBuff2 - mov r2, r12 - adds r2, 0x30 -_0800E46C: - adds r1, r5, r3 - ldr r7, _0800E4D0 @ =gBattleTextBuff1 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r4, r3 - adds r0, r3, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r1, r2, r3 - mov r7, r8 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0xF - ble _0800E46C - mov r0, r10 - mov r1, r9 - movs r2, 0x44 - bl PrepareBufferDataTransfer - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E4A8: .4byte gUnknown_2022874 -_0800E4AC: .4byte gCurrentMove -_0800E4B0: .4byte gUnknown_2023D4C -_0800E4B4: .4byte gUnknown_2023D68 -_0800E4B8: .4byte gLastUsedAbility -_0800E4BC: .4byte gBattleScripting -_0800E4C0: .4byte gBattleStruct -_0800E4C4: .4byte gUnknown_2022AD8 -_0800E4C8: .4byte gBattleMons -_0800E4CC: .4byte gBattleTextBuff2 -_0800E4D0: .4byte gBattleTextBuff1 - thumb_func_end EmitPrintSelectionString - - thumb_func_start EmitChooseAction -EmitChooseAction: @ 800E4D4 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _0800E4FC @ =gUnknown_2022874 - movs r3, 0x12 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E4FC: .4byte gUnknown_2022874 - thumb_func_end EmitChooseAction - - thumb_func_start Emitcmd19 -Emitcmd19: @ 800E500 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E51C @ =gUnknown_2022874 - movs r2, 0x13 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E51C: .4byte gUnknown_2022874 - thumb_func_end Emitcmd19 - - thumb_func_start EmitChooseMove -EmitChooseMove: @ 800E520 - push {r4-r6,lr} - adds r5, r3, 0 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, _0800E558 @ =gUnknown_2022874 - movs r4, 0 - movs r0, 0x14 - strb r0, [r3] - strb r1, [r3, 0x1] - strb r2, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0 - adds r1, r3, 0 - adds r4, r1, 0x4 -_0800E53C: - adds r0, r5, r2 - ldrb r0, [r0] - strb r0, [r4] - adds r4, 0x1 - adds r2, 0x1 - cmp r2, 0x13 - bls _0800E53C - adds r0, r6, 0 - movs r2, 0x18 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E558: .4byte gUnknown_2022874 - thumb_func_end EmitChooseMove - - thumb_func_start EmitChooseItem -EmitChooseItem: @ 800E55C - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0800E58C @ =gUnknown_2022874 - movs r0, 0x15 - strb r0, [r1] - movs r2, 0 - adds r3, r1, 0x1 -_0800E56E: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2 - ble _0800E56E - adds r0, r5, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E58C: .4byte gUnknown_2022874 - thumb_func_end EmitChooseItem - - thumb_func_start EmitChoosePokemon -EmitChoosePokemon: @ 800E590 - push {r4-r6,lr} - ldr r6, [sp, 0x10] - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0800E5C8 @ =gUnknown_2022874 - movs r0, 0x16 - strb r0, [r4] - strb r1, [r4, 0x1] - strb r2, [r4, 0x2] - strb r3, [r4, 0x3] - movs r2, 0 - adds r1, r4, 0 - adds r3, r1, 0x4 -_0800E5AA: - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2 - ble _0800E5AA - adds r0, r5, 0 - movs r2, 0x8 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E5C8: .4byte gUnknown_2022874 - thumb_func_end EmitChoosePokemon - - thumb_func_start EmitCmd23 -EmitCmd23: @ 800E5CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E5E8 @ =gUnknown_2022874 - movs r2, 0x17 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E5E8: .4byte gUnknown_2022874 - thumb_func_end EmitCmd23 - - thumb_func_start EmitHealthBarUpdate -EmitHealthBarUpdate: @ 800E5EC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _0800E620 @ =gUnknown_2022874 - movs r4, 0 - movs r2, 0x18 - strb r2, [r3] - strb r4, [r3, 0x1] - strb r1, [r3, 0x2] - lsls r1, 16 - asrs r1, 16 - movs r2, 0xFF - lsls r2, 8 - ands r1, r2 - asrs r1, 8 - strb r1, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E620: .4byte gUnknown_2022874 - thumb_func_end EmitHealthBarUpdate - - thumb_func_start EmitExpUpdate -EmitExpUpdate: @ 800E624 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _0800E654 @ =gUnknown_2022874 - movs r3, 0x19 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsls r2, 16 - asrs r2, 16 - movs r3, 0xFF - lsls r3, 8 - ands r2, r3 - asrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E654: .4byte gUnknown_2022874 - thumb_func_end EmitExpUpdate - - thumb_func_start EmitStatusIconUpdate -EmitStatusIconUpdate: @ 800E658 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E6A8 @ =gUnknown_2022874 - movs r3, 0x1A - strb r3, [r1] - strb r4, [r1, 0x1] - movs r6, 0xFF - lsls r6, 8 - adds r3, r4, 0 - ands r3, r6 - lsrs r3, 8 - strb r3, [r1, 0x2] - movs r5, 0xFF - lsls r5, 16 - adds r3, r4, 0 - ands r3, r5 - lsrs r3, 16 - strb r3, [r1, 0x3] - lsrs r4, 24 - strb r4, [r1, 0x4] - strb r2, [r1, 0x5] - adds r3, r2, 0 - ands r3, r6 - lsrs r3, 8 - strb r3, [r1, 0x6] - adds r3, r2, 0 - ands r3, r5 - lsrs r3, 16 - strb r3, [r1, 0x7] - lsrs r2, 24 - strb r2, [r1, 0x8] - movs r2, 0x9 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E6A8: .4byte gUnknown_2022874 - thumb_func_end EmitStatusIconUpdate - - thumb_func_start EmitStatusAnimation -EmitStatusAnimation: @ 800E6AC - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E6E4 @ =gUnknown_2022874 - movs r3, 0x1B - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - movs r3, 0xFF - lsls r3, 8 - ands r3, r2 - lsrs r3, 8 - strb r3, [r1, 0x3] - movs r3, 0xFF - lsls r3, 16 - ands r3, r2 - lsrs r3, 16 - strb r3, [r1, 0x4] - lsrs r2, 24 - strb r2, [r1, 0x5] - movs r2, 0x6 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E6E4: .4byte gUnknown_2022874 - thumb_func_end EmitStatusAnimation - - thumb_func_start EmitStatusXor -EmitStatusXor: @ 800E6E8 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E704 @ =gUnknown_2022874 - movs r2, 0x1C - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E704: .4byte gUnknown_2022874 - thumb_func_end EmitStatusXor - - thumb_func_start EmitDataTransfer -EmitDataTransfer: @ 800E708 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, _0800E74C @ =gUnknown_2022874 - movs r0, 0x1D - strb r0, [r1] - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - adds r5, r1, 0 - cmp r4, 0 - beq _0800E738 - adds r1, r5, 0x4 - adds r3, r4, 0 -_0800E72A: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _0800E72A -_0800E738: - adds r2, r4, 0x4 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E74C: .4byte gUnknown_2022874 - thumb_func_end EmitDataTransfer - - thumb_func_start EmitDMA3Transfer -EmitDMA3Transfer: @ 800E750 - push {r4-r6,lr} - adds r4, r3, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 16 - lsrs r5, r2, 16 - ldr r2, _0800E7B4 @ =gUnknown_2022874 - movs r0, 0x1E - strb r0, [r2] - strb r1, [r2, 0x1] - movs r3, 0xFF - lsls r3, 8 - adds r0, r1, 0 - ands r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x2] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r2, 0x3] - lsrs r1, 24 - strb r1, [r2, 0x4] - strb r5, [r2, 0x5] - adds r0, r5, 0 - ands r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x6] - adds r1, r2, 0 - cmp r5, 0 - beq _0800E7A0 - adds r3, r1, 0x7 - adds r2, r5, 0 -_0800E792: - ldrb r0, [r4] - strb r0, [r3] - adds r4, 0x1 - adds r3, 0x1 - subs r2, 0x1 - cmp r2, 0 - bne _0800E792 -_0800E7A0: - adds r2, r5, 0x7 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E7B4: .4byte gUnknown_2022874 - thumb_func_end EmitDMA3Transfer - - thumb_func_start EmitPlayBGM -EmitPlayBGM: @ 800E7B8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, _0800E7FC @ =gUnknown_2022874 - movs r0, 0x1F - strb r0, [r1] - strb r4, [r1, 0x1] - lsrs r0, r4, 8 - strb r0, [r1, 0x2] - adds r5, r1, 0 - cmp r4, 0 - beq _0800E7E6 - adds r1, r5, 0x3 - adds r3, r4, 0 -_0800E7D8: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _0800E7D8 -_0800E7E6: - adds r2, r4, 0x3 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E7FC: .4byte gUnknown_2022874 - thumb_func_end EmitPlayBGM - - thumb_func_start EmitCmd32 -EmitCmd32: @ 800E800 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r1, _0800E844 @ =gUnknown_2022874 - movs r0, 0x20 - strb r0, [r1] - strb r4, [r1, 0x1] - lsrs r0, r4, 8 - strb r0, [r1, 0x2] - adds r5, r1, 0 - cmp r4, 0 - beq _0800E82E - adds r1, r5, 0x3 - adds r3, r4, 0 -_0800E820: - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _0800E820 -_0800E82E: - adds r2, r4, 0x3 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl PrepareBufferDataTransfer - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E844: .4byte gUnknown_2022874 - thumb_func_end EmitCmd32 - - thumb_func_start EmitTwoReturnValues -EmitTwoReturnValues: @ 800E848 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _0800E870 @ =gUnknown_2022874 - movs r3, 0x21 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E870: .4byte gUnknown_2022874 - thumb_func_end EmitTwoReturnValues - - thumb_func_start EmitChosenMonReturnValue -EmitChosenMonReturnValue: @ 800E874 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _0800E8A8 @ =gUnknown_2022874 - movs r0, 0x22 - strb r0, [r2] - strb r1, [r2, 0x1] - movs r3, 0 - adds r1, r2, 0x2 -_0800E888: - adds r0, r4, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r3, 0x1 - cmp r3, 0x2 - ble _0800E888 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x5 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E8A8: .4byte gUnknown_2022874 - thumb_func_end EmitChosenMonReturnValue - - thumb_func_start EmitOneReturnValue -EmitOneReturnValue: @ 800E8AC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _0800E8D4 @ =gUnknown_2022874 - movs r4, 0 - movs r2, 0x23 - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E8D4: .4byte gUnknown_2022874 - thumb_func_end EmitOneReturnValue - - thumb_func_start EmitOneReturnValue_Duplicate -EmitOneReturnValue_Duplicate: @ 800E8D8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _0800E900 @ =gUnknown_2022874 - movs r4, 0 - movs r2, 0x24 - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E900: .4byte gUnknown_2022874 - thumb_func_end EmitOneReturnValue_Duplicate - - thumb_func_start EmitCmd37 -EmitCmd37: @ 800E904 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E920 @ =gUnknown_2022874 - movs r2, 0x25 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E920: .4byte gUnknown_2022874 - thumb_func_end EmitCmd37 - - thumb_func_start EmitCmd38 -EmitCmd38: @ 800E924 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E940 @ =gUnknown_2022874 - movs r2, 0x26 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E940: .4byte gUnknown_2022874 - thumb_func_end EmitCmd38 - - thumb_func_start EmitCmd39 -EmitCmd39: @ 800E944 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E960 @ =gUnknown_2022874 - movs r2, 0x27 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E960: .4byte gUnknown_2022874 - thumb_func_end EmitCmd39 - - thumb_func_start EmitCmd40 -EmitCmd40: @ 800E964 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E980 @ =gUnknown_2022874 - movs r2, 0x28 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E980: .4byte gUnknown_2022874 - thumb_func_end EmitCmd40 - - thumb_func_start EmitHitAnimation -EmitHitAnimation: @ 800E984 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E9A0 @ =gUnknown_2022874 - movs r2, 0x29 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E9A0: .4byte gUnknown_2022874 - thumb_func_end EmitHitAnimation - - thumb_func_start EmitCmd42 -EmitCmd42: @ 800E9A4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800E9C0 @ =gUnknown_2022874 - movs r2, 0x2A - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800E9C0: .4byte gUnknown_2022874 - thumb_func_end EmitCmd42 - - thumb_func_start EmitPlaySE -EmitPlaySE: @ 800E9C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _0800E9EC @ =gUnknown_2022874 - movs r4, 0 - movs r2, 0x2B - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800E9EC: .4byte gUnknown_2022874 - thumb_func_end EmitPlaySE - - thumb_func_start Emitcmd44 -Emitcmd44: @ 800E9F0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _0800EA18 @ =gUnknown_2022874 - movs r4, 0 - movs r2, 0x2C - strb r2, [r3] - strb r1, [r3, 0x1] - lsrs r1, 8 - strb r1, [r3, 0x2] - strb r4, [r3, 0x3] - adds r1, r3, 0 - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800EA18: .4byte gUnknown_2022874 - thumb_func_end Emitcmd44 - - thumb_func_start EmitFaintingCry -EmitFaintingCry: @ 800EA1C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EA38 @ =gUnknown_2022874 - movs r2, 0x2D - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EA38: .4byte gUnknown_2022874 - thumb_func_end EmitFaintingCry - - thumb_func_start EmitIntroSlide -EmitIntroSlide: @ 800EA3C - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EA58 @ =gUnknown_2022874 - movs r2, 0x2E - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EA58: .4byte gUnknown_2022874 - thumb_func_end EmitIntroSlide - - thumb_func_start EmitIntroTrainerBallThrow -EmitIntroTrainerBallThrow: @ 800EA5C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EA78 @ =gUnknown_2022874 - movs r2, 0x2F - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EA78: .4byte gUnknown_2022874 - thumb_func_end EmitIntroTrainerBallThrow - - thumb_func_start EmitDrawPartyStatusSummary -EmitDrawPartyStatusSummary: @ 800EA7C - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r1, _0800EAC0 @ =gUnknown_2022874 - movs r3, 0x30 - strb r3, [r1] - movs r0, 0x7F - ands r0, r2 - strb r0, [r1, 0x1] - movs r0, 0x80 - ands r0, r2 - lsls r0, 24 - lsrs r0, 31 - strb r0, [r1, 0x2] - strb r3, [r1, 0x3] - movs r2, 0 - adds r3, r1, 0x4 -_0800EAA4: - adds r0, r4, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x2F - ble _0800EAA4 - adds r0, r5, 0 - movs r2, 0x34 - bl PrepareBufferDataTransfer - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800EAC0: .4byte gUnknown_2022874 - thumb_func_end EmitDrawPartyStatusSummary - - thumb_func_start EmitCmd49 -EmitCmd49: @ 800EAC4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EAE0 @ =gUnknown_2022874 - movs r2, 0x31 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EAE0: .4byte gUnknown_2022874 - thumb_func_end EmitCmd49 - - thumb_func_start EmitCmd50 -EmitCmd50: @ 800EAE4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EB00 @ =gUnknown_2022874 - movs r2, 0x32 - strb r2, [r1] - strb r2, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EB00: .4byte gUnknown_2022874 - thumb_func_end EmitCmd50 - - thumb_func_start EmitSpriteInvisibility -EmitSpriteInvisibility: @ 800EB04 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EB24 @ =gUnknown_2022874 - movs r2, 0x33 - strb r2, [r1] - strb r3, [r1, 0x1] - strb r2, [r1, 0x2] - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EB24: .4byte gUnknown_2022874 - thumb_func_end EmitSpriteInvisibility - - thumb_func_start EmitBattleAnimation -EmitBattleAnimation: @ 800EB28 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _0800EB50 @ =gUnknown_2022874 - movs r3, 0x34 - strb r3, [r1] - strb r4, [r1, 0x1] - strb r2, [r1, 0x2] - lsrs r2, 8 - strb r2, [r1, 0x3] - movs r2, 0x4 - bl PrepareBufferDataTransfer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800EB50: .4byte gUnknown_2022874 - thumb_func_end EmitBattleAnimation - - thumb_func_start EmitLinkStandbyMsg -EmitLinkStandbyMsg: @ 800EB54 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EB70 @ =gUnknown_2022874 - movs r2, 0x35 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EB70: .4byte gUnknown_2022874 - thumb_func_end EmitLinkStandbyMsg - - thumb_func_start EmitResetActionMoveSelection -EmitResetActionMoveSelection: @ 800EB74 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EB90 @ =gUnknown_2022874 - movs r2, 0x36 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EB90: .4byte gUnknown_2022874 - thumb_func_end EmitResetActionMoveSelection - - thumb_func_start EmitCmd55 -EmitCmd55: @ 800EB94 - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EBB0 @ =gUnknown_2022874 - movs r2, 0x37 - strb r2, [r1] - strb r3, [r1, 0x1] - movs r2, 0x2 - bl PrepareBufferDataTransfer - pop {r0} - bx r0 - .align 2, 0 -_0800EBB0: .4byte gUnknown_2022874 - thumb_func_end EmitCmd55 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_message.s b/asm/battle_message.s index 04dc59d1b..b4a9e7a51 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -23,7 +23,7 @@ BufferStringBattle: @ 80D7274 ldr r0, _080D7338 @ =gUnknown_2022BC8 adds r1, r0 str r1, [r4] - ldr r2, _080D733C @ =gUnknown_2023D68 + ldr r2, _080D733C @ =gLastUsedItem ldrh r0, [r1, 0x4] strh r0, [r2] ldr r2, _080D7340 @ =gLastUsedAbility @@ -71,7 +71,7 @@ _080D72D6: mov r8, r0 ldr r3, _080D7330 @ =gUnknown_2039A34 ldr r5, _080D7358 @ =gBattleTextBuff2 - ldr r4, _080D735C @ =gUnknown_2022AD8 + ldr r4, _080D735C @ =gBattleTextBuff3 _080D72F4: mov r0, r8 adds r1, r2, r0 @@ -108,7 +108,7 @@ _080D7326: _080D7330: .4byte gUnknown_2039A34 _080D7334: .4byte gActiveBattler _080D7338: .4byte gUnknown_2022BC8 -_080D733C: .4byte gUnknown_2023D68 +_080D733C: .4byte gLastUsedItem _080D7340: .4byte gLastUsedAbility _080D7344: .4byte gBattleScripting _080D7348: .4byte gBattleStruct @@ -116,7 +116,7 @@ _080D734C: .4byte gPotentialItemEffectBattler _080D7350: .4byte gBattleTextBuff1 _080D7354: .4byte gUnknown_2039A30 _080D7358: .4byte gBattleTextBuff2 -_080D735C: .4byte gUnknown_2022AD8 +_080D735C: .4byte gBattleTextBuff3 _080D7360: .4byte _080D7364 .align 2, 0 _080D7364: @@ -890,7 +890,7 @@ _080D79A2: _080D79B0: .4byte gBattleTextBuff2 _080D79B4: .4byte gStringVar2 _080D79B8: - ldr r1, _080D79D0 @ =gUnknown_2022AD8 + ldr r1, _080D79D0 @ =gBattleTextBuff3 ldrb r0, [r1] cmp r0, 0xFD bne _080D79D8 @@ -902,7 +902,7 @@ _080D79C4: bl ExpandBattleTextBuffPlaceholders bl _080D8382 .align 2, 0 -_080D79D0: .4byte gUnknown_2022AD8 +_080D79D0: .4byte gBattleTextBuff3 _080D79D4: .4byte gStringVar3 _080D79D8: adds r4, r1, 0 @@ -1073,7 +1073,7 @@ _080D7B40: .4byte gBattlerPartyIndexes _080D7B44: .4byte gLinkPlayers _080D7B48: .4byte gEnemyParty _080D7B4C: - ldr r4, _080D7B70 @ =sBattler_AI + ldr r4, _080D7B70 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -1090,7 +1090,7 @@ _080D7B4C: ldr r4, _080D7B7C @ =gUnknown_83FD55B b _080D7B8A .align 2, 0 -_080D7B70: .4byte sBattler_AI +_080D7B70: .4byte gBattlerAttacker _080D7B74: .4byte gBattleTypeFlags _080D7B78: .4byte gUnknown_83FD555 _080D7B7C: .4byte gUnknown_83FD55B @@ -1140,7 +1140,7 @@ _080D7BC0: .align 2, 0 _080D7BDC: .4byte gBattlerPartyIndexes _080D7BE0: - ldr r4, _080D7C14 @ =sBattler_AI + ldr r4, _080D7C14 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -1164,7 +1164,7 @@ _080D7BE0: adds r0, r1 b _080D82AA .align 2, 0 -_080D7C14: .4byte sBattler_AI +_080D7C14: .4byte gBattlerAttacker _080D7C18: .4byte gBattlerPartyIndexes _080D7C1C: .4byte gPlayerParty _080D7C20: @@ -1188,7 +1188,7 @@ _080D7C20: _080D7C44: .4byte gBattlerPartyIndexes _080D7C48: .4byte gEnemyParty _080D7C4C: - ldr r5, _080D7C98 @ =sBattler_AI + ldr r5, _080D7C98 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 @@ -1228,7 +1228,7 @@ _080D7C8C: ldrh r1, [r0] b _080D82A4 .align 2, 0 -_080D7C98: .4byte sBattler_AI +_080D7C98: .4byte gBattlerAttacker _080D7C9C: .4byte gBattleTypeFlags _080D7CA0: .4byte gUnknown_83FD555 _080D7CA4: .4byte gUnknown_83FD55B @@ -1300,7 +1300,7 @@ _080D7D24: .align 2, 0 _080D7D30: .4byte gBattlerPartyIndexes _080D7D34: - ldr r5, _080D7D80 @ =gUnknown_2023D6E + ldr r5, _080D7D80 @ =gEffectBattler ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 @@ -1340,7 +1340,7 @@ _080D7D74: ldrh r1, [r0] b _080D82A4 .align 2, 0 -_080D7D80: .4byte gUnknown_2023D6E +_080D7D80: .4byte gEffectBattler _080D7D84: .4byte gBattleTypeFlags _080D7D88: .4byte gUnknown_83FD555 _080D7D8C: .4byte gUnknown_83FD55B @@ -1517,7 +1517,7 @@ _080D7EE4: ands r0, r1 cmp r0, 0 beq _080D7F9C - ldr r2, _080D7F20 @ =gUnknown_2023D68 + ldr r2, _080D7F20 @ =gLastUsedItem ldrh r0, [r2] cmp r0, 0xAF bne _080D7F98 @@ -1540,7 +1540,7 @@ _080D7EE4: b _080D7F90 .align 2, 0 _080D7F1C: .4byte gBattleTypeFlags -_080D7F20: .4byte gUnknown_2023D68 +_080D7F20: .4byte gLastUsedItem _080D7F24: .4byte gBattleStruct _080D7F28: .4byte gPotentialItemEffectBattler _080D7F2C: @@ -1600,7 +1600,7 @@ _080D7F98: ldrh r0, [r2] b _080D7FA0 _080D7F9C: - ldr r0, _080D7FAC @ =gUnknown_2023D68 + ldr r0, _080D7FAC @ =gLastUsedItem ldrh r0, [r0] _080D7FA0: mov r1, sp @@ -1608,7 +1608,7 @@ _080D7FA0: mov r4, sp b _080D8382 .align 2, 0 -_080D7FAC: .4byte gUnknown_2023D68 +_080D7FAC: .4byte gLastUsedItem _080D7FB0: ldr r0, _080D7FB4 @ =gLastUsedAbility b _080D7FF0 @@ -1616,11 +1616,11 @@ _080D7FB0: _080D7FB4: .4byte gLastUsedAbility _080D7FB8: ldr r1, _080D7FC0 @ =gUnknown_2039A30 - ldr r0, _080D7FC4 @ =sBattler_AI + ldr r0, _080D7FC4 @ =gBattlerAttacker b _080D7FEC .align 2, 0 _080D7FC0: .4byte gUnknown_2039A30 -_080D7FC4: .4byte sBattler_AI +_080D7FC4: .4byte gBattlerAttacker _080D7FC8: ldr r1, _080D7FD0 @ =gUnknown_2039A30 ldr r0, _080D7FD4 @ =gBattlerTarget @@ -1638,7 +1638,7 @@ _080D7FE0: .4byte gUnknown_2039A30 _080D7FE4: .4byte gBattleScripting _080D7FE8: ldr r1, _080D7FFC @ =gUnknown_2039A30 - ldr r0, _080D8000 @ =gUnknown_2023D6E + ldr r0, _080D8000 @ =gEffectBattler _080D7FEC: ldrb r0, [r0] _080D7FEE: @@ -1652,7 +1652,7 @@ _080D7FF0: b _080D8382 .align 2, 0 _080D7FFC: .4byte gUnknown_2039A30 -_080D8000: .4byte gUnknown_2023D6E +_080D8000: .4byte gEffectBattler _080D8004: .4byte gUnknown_824FC40 _080D8008: ldr r3, _080D8020 @ =gTrainerBattleOpponent_A @@ -2045,10 +2045,10 @@ _080D830C: .4byte 0x00000834 _080D8310: .4byte gUnknown_83FD81A _080D8314: .4byte gUnknown_83FD824 _080D8318: - ldr r0, _080D831C @ =sBattler_AI + ldr r0, _080D831C @ =gBattlerAttacker b _080D8322 .align 2, 0 -_080D831C: .4byte sBattler_AI +_080D831C: .4byte gBattlerAttacker _080D8320: ldr r0, _080D8334 @ =gBattlerTarget _080D8322: @@ -2065,10 +2065,10 @@ _080D8334: .4byte gBattlerTarget _080D8338: .4byte gUnknown_83FD569 _080D833C: .4byte gUnknown_83FD56D _080D8340: - ldr r0, _080D8344 @ =sBattler_AI + ldr r0, _080D8344 @ =gBattlerAttacker b _080D834A .align 2, 0 -_080D8344: .4byte sBattler_AI +_080D8344: .4byte gBattlerAttacker _080D8348: ldr r0, _080D835C @ =gBattlerTarget _080D834A: @@ -2085,10 +2085,10 @@ _080D835C: .4byte gBattlerTarget _080D8360: .4byte gUnknown_83FD560 _080D8364: .4byte gUnknown_83FD564 _080D8368: - ldr r0, _080D836C @ =sBattler_AI + ldr r0, _080D836C @ =gBattlerAttacker b _080D8372 .align 2, 0 -_080D836C: .4byte sBattler_AI +_080D836C: .4byte gBattlerAttacker _080D8370: ldr r0, _080D83D4 @ =gBattlerTarget _080D8372: @@ -2946,7 +2946,7 @@ SetPpNumbersPaletteInMoveSelection: @ 80D89DC ldr r0, _080D8A3C @ =gUnknown_2022BC8 adds r1, r0 ldr r4, _080D8A40 @ =gUnknown_8D2FBB4 - ldr r0, _080D8A44 @ =gUnknown_2023FFC + ldr r0, _080D8A44 @ =gMoveSelectionCursor adds r2, r0 ldrb r2, [r2] adds r0, r1, 0 @@ -2985,7 +2985,7 @@ SetPpNumbersPaletteInMoveSelection: @ 80D89DC _080D8A38: .4byte gActiveBattler _080D8A3C: .4byte gUnknown_2022BC8 _080D8A40: .4byte gUnknown_8D2FBB4 -_080D8A44: .4byte gUnknown_2023FFC +_080D8A44: .4byte gMoveSelectionCursor _080D8A48: .4byte gPlttBufferUnfaded _080D8A4C: .4byte gPlttBufferFaded + 0xB8 thumb_func_end SetPpNumbersPaletteInMoveSelection diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 11c522a5e..373d191ef 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -25,7 +25,7 @@ _0801D77C: .4byte gBattleOutcome _0801D780: .4byte gUnknown_2023BE3 _0801D784: ldr r2, _0801D7B4 @ =gBattleMons - ldr r0, _0801D7B8 @ =sBattler_AI + ldr r0, _0801D7B8 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -49,7 +49,7 @@ _0801D784: b _0801DAFA .align 2, 0 _0801D7B4: .4byte gBattleMons -_0801D7B8: .4byte sBattler_AI +_0801D7B8: .4byte gBattlerAttacker _0801D7BC: .4byte gUnknown_2023DD0 _0801D7C0: .4byte gUnknown_2023D74 _0801D7C4: .4byte gUnknown_81D694E @@ -76,7 +76,7 @@ _0801D7EE: ldr r4, _0801D848 @ =gBattleMons ldr r0, _0801D84C @ =gUnknown_2023D48 ldrb r1, [r0] - ldr r3, _0801D850 @ =sBattler_AI + ldr r3, _0801D850 @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 muls r2, r0 @@ -119,7 +119,7 @@ _0801D7EE: _0801D844: .4byte gBattlerTarget _0801D848: .4byte gBattleMons _0801D84C: .4byte gUnknown_2023D48 -_0801D850: .4byte sBattler_AI +_0801D850: .4byte gBattlerAttacker _0801D854: .4byte gUnknown_2023DD0 _0801D858: .4byte gCurrentMove _0801D85C: .4byte 0x00800200 @@ -200,7 +200,7 @@ _0801D8C4: ands r0, r1 cmp r0, 0 beq _0801D94C - ldr r0, _0801D93C @ =sBattler_AI + ldr r0, _0801D93C @ =gBattlerAttacker ldrb r0, [r0] ldr r2, _0801D940 @ =0x00000115 adds r1, r3, 0 @@ -224,7 +224,7 @@ _0801D92C: .4byte gUnknown_2023E8C _0801D930: .4byte gBattlerTarget _0801D934: .4byte gBattleMoves _0801D938: .4byte gCurrentMove -_0801D93C: .4byte sBattler_AI +_0801D93C: .4byte gBattlerAttacker _0801D940: .4byte 0x00000115 _0801D944: .4byte gUnknown_2023D74 _0801D948: .4byte gUnknown_81D8FAA @@ -327,7 +327,7 @@ _0801D9FA: cmp r3, 0xAE bne _0801DA38 ldr r2, _0801DA98 @ =gBattleMons - ldr r0, _0801DA9C @ =sBattler_AI + ldr r0, _0801DA9C @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -349,7 +349,7 @@ _0801DA38: cmp r0, 0 beq _0801DA5E ldr r1, _0801DA98 @ =gBattleMons - ldr r0, _0801DA9C @ =sBattler_AI + ldr r0, _0801DA9C @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -362,7 +362,7 @@ _0801DA38: cmp r0, 0 beq _0801DAF4 _0801DA5E: - ldr r0, _0801DA9C @ =sBattler_AI + ldr r0, _0801DA9C @ =gBattlerAttacker ldrb r0, [r0] bl CancelMultiTurnMoves ldr r2, _0801DAA0 @ =gMoveResultFlags @@ -390,14 +390,14 @@ _0801DA5E: _0801DA90: .4byte gBattleMoves _0801DA94: .4byte gCurrentMove _0801DA98: .4byte gBattleMons -_0801DA9C: .4byte sBattler_AI +_0801DA9C: .4byte gBattlerAttacker _0801DAA0: .4byte gMoveResultFlags _0801DAA4: .4byte gUnknown_2023DA0 _0801DAA8: .4byte gBattlerTarget _0801DAAC: .4byte gUnknown_2023DA8 _0801DAB0: .4byte gUnknown_2023E82 _0801DAB4: - ldr r0, _0801DAE0 @ =sBattler_AI + ldr r0, _0801DAE0 @ =gBattlerAttacker ldrb r0, [r0] ldr r2, _0801DAE4 @ =0x00000121 adds r1, r3, 0 @@ -418,7 +418,7 @@ _0801DAB4: ldr r0, _0801DAF0 @ =gUnknown_81D8FC2 b _0801DAFA .align 2, 0 -_0801DAE0: .4byte sBattler_AI +_0801DAE0: .4byte gBattlerAttacker _0801DAE4: .4byte 0x00000121 _0801DAE8: .4byte gBattleScripting _0801DAEC: .4byte gUnknown_2023D74 @@ -642,7 +642,7 @@ AccuracyCalcHelper: @ 801DC7C subs r0, r4 lsls r0, 2 adds r0, r1 - ldr r1, _0801DCE8 @ =sBattler_AI + ldr r1, _0801DCE8 @ =gBattlerAttacker ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 @@ -675,7 +675,7 @@ _0801DCCE: _0801DCDC: .4byte gStatuses3 _0801DCE0: .4byte gBattlerTarget _0801DCE4: .4byte gDisableStructs -_0801DCE8: .4byte sBattler_AI +_0801DCE8: .4byte gBattlerAttacker _0801DCEC: .4byte gUnknown_2023DD0 _0801DCF0: .4byte gMoveResultFlags _0801DCF4: @@ -816,7 +816,7 @@ sub_801DDC4: @ 801DDC4 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801DE12 - ldr r0, _0801DE6C @ =sBattler_AI + ldr r0, _0801DE6C @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -842,7 +842,7 @@ _0801DE12: ldrb r0, [r1, 0x1] cmp r0, 0 bne _0801DE48 - ldr r0, _0801DE6C @ =sBattler_AI + ldr r0, _0801DE6C @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -865,7 +865,7 @@ _0801DE56: _0801DE60: .4byte gUnknown_2023D74 _0801DE64: .4byte gBattleTypeFlags _0801DE68: .4byte gBattleMoves -_0801DE6C: .4byte sBattler_AI +_0801DE6C: .4byte gBattlerAttacker _0801DE70: adds r0, r6, 0x2 lsls r0, 16 @@ -890,7 +890,7 @@ _0801DE70: subs r0, r4 lsls r0, 2 adds r0, r1 - ldr r1, _0801DEE4 @ =sBattler_AI + ldr r1, _0801DEE4 @ =gBattlerAttacker ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 @@ -923,7 +923,7 @@ _0801DED4: .4byte gStatuses3 _0801DED8: .4byte gBattlerTarget _0801DEDC: .4byte 0x0000ffff _0801DEE0: .4byte gDisableStructs -_0801DEE4: .4byte sBattler_AI +_0801DEE4: .4byte gBattlerAttacker _0801DEE8: .4byte 0x000400c0 _0801DEEC: .4byte gUnknown_2023D74 _0801DEF0: @@ -999,7 +999,7 @@ _0801DF5E: ands r0, r1 cmp r0, 0 beq _0801DF98 - ldr r0, _0801DF94 @ =sBattler_AI + ldr r0, _0801DF94 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 @@ -1009,9 +1009,9 @@ _0801DF5E: _0801DF88: .4byte gBattleMoves _0801DF8C: .4byte gBattleMons _0801DF90: .4byte gBattlerTarget -_0801DF94: .4byte sBattler_AI +_0801DF94: .4byte gBattlerAttacker _0801DF98: - ldr r0, _0801E0FC @ =sBattler_AI + ldr r0, _0801E0FC @ =gBattlerAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 @@ -1087,7 +1087,7 @@ _0801E012: lsls r0, 16 lsrs r4, r0, 16 ldr r7, _0801E10C @ =gBattleMons - ldr r0, _0801E0FC @ =sBattler_AI + ldr r0, _0801E0FC @ =gBattlerAttacker ldrb r0, [r0] movs r5, 0x58 muls r0, r5 @@ -1147,7 +1147,7 @@ _0801E050: lsrs r4, r0, 16 _0801E0A8: ldr r2, _0801E10C @ =gBattleMons - ldr r0, _0801E0FC @ =sBattler_AI + ldr r0, _0801E0FC @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -1188,7 +1188,7 @@ _0801E0D4: ldrb r2, [r0, 0x1A] b _0801E134 .align 2, 0 -_0801E0FC: .4byte sBattler_AI +_0801E0FC: .4byte gBattlerAttacker _0801E100: .4byte gBattleMoves _0801E104: .4byte gBattleWeather _0801E108: .4byte gUnknown_82504FC @@ -1302,7 +1302,7 @@ atk02_attackstring: @ 801E1D8 ands r0, r1 cmp r0, 0 bne _0801E204 - ldr r0, _0801E220 @ =sBattler_AI + ldr r0, _0801E220 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x4 bl PrepareStringBattle @@ -1325,7 +1325,7 @@ _0801E210: .align 2, 0 _0801E218: .4byte gBattleControllerExecFlags _0801E21C: .4byte gUnknown_2023DD0 -_0801E220: .4byte sBattler_AI +_0801E220: .4byte gBattlerAttacker _0801E224: .4byte gUnknown_2023D74 _0801E228: .4byte gUnknown_2023E82 thumb_func_end atk02_attackstring @@ -1346,7 +1346,7 @@ atk03_ppreduce: @ 801E22C b _0801E3DE _0801E244: ldr r1, _0801E280 @ =gUnknown_2023ECC - ldr r2, _0801E284 @ =sBattler_AI + ldr r2, _0801E284 @ =gBattlerAttacker ldrb r3, [r2] lsls r0, r3, 2 adds r0, r3 @@ -1376,7 +1376,7 @@ _0801E244: .align 2, 0 _0801E27C: .4byte gBattleControllerExecFlags _0801E280: .4byte gUnknown_2023ECC -_0801E284: .4byte sBattler_AI +_0801E284: .4byte gBattlerAttacker _0801E288: .4byte gBattleMoves _0801E28C: .4byte gCurrentMove _0801E290: @@ -1434,7 +1434,7 @@ _0801E2E6: bne _0801E3CC ldr r2, _0801E34C @ =gBattleMons ldr r3, _0801E354 @ =gUnknown_2023D48 - ldr r1, _0801E358 @ =sBattler_AI + ldr r1, _0801E358 @ =gBattlerAttacker ldrb r5, [r1] movs r0, 0x58 mov r8, r0 @@ -1479,7 +1479,7 @@ _0801E348: .4byte gBattlerTarget _0801E34C: .4byte gBattleMons _0801E350: .4byte gUnknown_2023DD0 _0801E354: .4byte gUnknown_2023D48 -_0801E358: .4byte sBattler_AI +_0801E358: .4byte gBattlerAttacker _0801E35C: .4byte gUnknown_2023E8C _0801E360: strb r4, [r2] @@ -1531,7 +1531,7 @@ _0801E362: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData mov r7, r9 ldrb r0, [r7] bl MarkBufferBankForExecution @@ -1567,7 +1567,7 @@ _0801E404: .4byte gUnknown_2023D74 sub_801E408: @ 801E408 push {r4-r7,lr} ldr r1, _0801E42C @ =gBattleMons - ldr r0, _0801E430 @ =sBattler_AI + ldr r0, _0801E430 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -1584,7 +1584,7 @@ sub_801E408: @ 801E408 b _0801E440 .align 2, 0 _0801E42C: .4byte gBattleMons -_0801E430: .4byte sBattler_AI +_0801E430: .4byte gBattlerAttacker _0801E434: .4byte gEnigmaBerries _0801E438: bl ItemId_GetHoldEffect @@ -1592,7 +1592,7 @@ _0801E438: lsrs r6, r0, 24 _0801E440: ldr r1, _0801E4CC @ =gPotentialItemEffectBattler - ldr r3, _0801E4D0 @ =sBattler_AI + ldr r3, _0801E4D0 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] ldr r4, _0801E4D4 @ =gBattleMons @@ -1669,7 +1669,7 @@ _0801E4C0: b _0801E4E2 .align 2, 0 _0801E4CC: .4byte gPotentialItemEffectBattler -_0801E4D0: .4byte sBattler_AI +_0801E4D0: .4byte gBattlerAttacker _0801E4D4: .4byte gBattleMons _0801E4D8: .4byte gBattleMoves _0801E4DC: .4byte gCurrentMove @@ -1780,7 +1780,7 @@ atk05_damagecalc: @ 801E59C lsls r1, 1 adds r1, r4 ldrh r3, [r1] - ldr r6, _0801E65C @ =sBattler_AI + ldr r6, _0801E65C @ =gBattlerAttacker ldrb r0, [r6] movs r4, 0x58 muls r0, r4 @@ -1835,7 +1835,7 @@ atk05_damagecalc: @ 801E59C str r0, [r4] _0801E620: ldr r1, _0801E684 @ =gUnknown_2023E8C - ldr r0, _0801E65C @ =sBattler_AI + ldr r0, _0801E65C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -1862,7 +1862,7 @@ _0801E642: .align 2, 0 _0801E654: .4byte gSideAffecting _0801E658: .4byte gBattlerTarget -_0801E65C: .4byte sBattler_AI +_0801E65C: .4byte gBattlerAttacker _0801E660: .4byte gBattleMons _0801E664: .4byte gCurrentMove _0801E668: .4byte gDynamicBasePower @@ -2134,7 +2134,7 @@ _0801E878: mov r8, r0 _0801E888: ldr r2, _0801E914 @ =gBattleMons - ldr r0, _0801E918 @ =sBattler_AI + ldr r0, _0801E918 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -2203,7 +2203,7 @@ _0801E8C0: .align 2, 0 _0801E910: .4byte gBattleMoves _0801E914: .4byte gBattleMons -_0801E918: .4byte sBattler_AI +_0801E918: .4byte gBattlerAttacker _0801E91C: .4byte gBattleMoveDamage _0801E920: .4byte gBattlerTarget _0801E924: .4byte gLastUsedAbility @@ -2304,7 +2304,7 @@ _0801E9D4: ldrb r6, [r0] cmp r6, 0x19 bne _0801EA52 - ldr r0, _0801EA90 @ =sBattler_AI + ldr r0, _0801EA90 @ =gBattlerAttacker ldrb r0, [r0] ldr r7, _0801EA94 @ =gCurrentMove ldrh r1, [r7] @@ -2364,7 +2364,7 @@ _0801EA52: cmp r0, 0 beq _0801EA70 ldr r2, _0801EAB0 @ =gUnknown_2023E8C - ldr r0, _0801EA90 @ =sBattler_AI + ldr r0, _0801EA90 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 4 adds r1, r2 @@ -2387,7 +2387,7 @@ _0801EA70: _0801EA84: .4byte gUnknown_824F050 _0801EA88: .4byte gBattleMons _0801EA8C: .4byte gBattlerTarget -_0801EA90: .4byte sBattler_AI +_0801EA90: .4byte gBattlerAttacker _0801EA94: .4byte gCurrentMove _0801EA98: .4byte gMoveResultFlags _0801EA9C: .4byte gBattleMoves @@ -2511,7 +2511,7 @@ _0801EB66: orrs r0, r1 strb r0, [r2] ldr r1, _0801ED28 @ =gUnknown_2023E8C - ldr r0, _0801ED2C @ =sBattler_AI + ldr r0, _0801ED2C @ =gBattlerAttacker ldrb r2, [r0] lsls r2, 4 adds r2, r1 @@ -2547,7 +2547,7 @@ _0801EBA6: orrs r0, r1 strb r0, [r2] ldr r1, _0801ED28 @ =gUnknown_2023E8C - ldr r0, _0801ED2C @ =sBattler_AI + ldr r0, _0801ED2C @ =gBattlerAttacker ldrb r2, [r0] lsls r2, 4 adds r2, r1 @@ -2679,7 +2679,7 @@ _0801ECC2: ldrb r4, [r0] cmp r4, 0x19 bne _0801ED18 - ldr r0, _0801ED2C @ =sBattler_AI + ldr r0, _0801ED2C @ =gBattlerAttacker ldrb r0, [r0] mov r2, r9 ldrh r1, [r2] @@ -2721,7 +2721,7 @@ _0801ED18: .align 2, 0 _0801ED24: .4byte gMoveResultFlags _0801ED28: .4byte gUnknown_2023E8C -_0801ED2C: .4byte sBattler_AI +_0801ED2C: .4byte gBattlerAttacker _0801ED30: .4byte gBattleMoves _0801ED34: .4byte gLastUsedAbility _0801ED38: .4byte gUnknown_2023E82 @@ -3425,7 +3425,7 @@ _0801F26C: movs r1, 0x80 orrs r0, r1 strb r0, [r2] - ldr r1, _0801F2AC @ =gUnknown_2023D68 + ldr r1, _0801F2AC @ =gLastUsedItem adds r0, r3, 0 muls r0, r4 adds r0, r5 @@ -3442,7 +3442,7 @@ _0801F294: .align 2, 0 _0801F2A4: .4byte gUnknown_2023ECC _0801F2A8: .4byte gMoveResultFlags -_0801F2AC: .4byte gUnknown_2023D68 +_0801F2AC: .4byte gLastUsedItem _0801F2B0: .4byte gUnknown_2023D74 thumb_func_end atk07_adjustnormaldamage @@ -3613,7 +3613,7 @@ _0801F3F8: movs r1, 0x80 orrs r0, r1 strb r0, [r2] - ldr r1, _0801F438 @ =gUnknown_2023D68 + ldr r1, _0801F438 @ =gLastUsedItem adds r0, r3, 0 muls r0, r7 adds r0, r4 @@ -3630,7 +3630,7 @@ _0801F420: .align 2, 0 _0801F430: .4byte gUnknown_2023ECC _0801F434: .4byte gMoveResultFlags -_0801F438: .4byte gUnknown_2023D68 +_0801F438: .4byte gLastUsedItem _0801F43C: .4byte gUnknown_2023D74 thumb_func_end atk08_adjustnormaldamage2 @@ -3712,7 +3712,7 @@ _0801F4CE: cmp r0, 0 bne _0801F564 ldr r1, _0801F548 @ =gActiveBattler - ldr r0, _0801F54C @ =sBattler_AI + ldr r0, _0801F54C @ =gBattlerAttacker mov r8, r0 ldrb r0, [r0] strb r0, [r1] @@ -3742,7 +3742,7 @@ _0801F4CE: adds r0, r4 str r0, [sp, 0x8] movs r0, 0 - bl EmitMoveAnimation + bl BtlController_EmitMoveAnimation ldrb r0, [r6, 0x18] adds r0, 0x1 strb r0, [r6, 0x18] @@ -3763,7 +3763,7 @@ _0801F53C: .4byte gBattleMoves _0801F540: .4byte gBattleScripting _0801F544: .4byte gMoveResultFlags _0801F548: .4byte gActiveBattler -_0801F54C: .4byte sBattler_AI +_0801F54C: .4byte gBattlerAttacker _0801F550: .4byte gBattleMovePower _0801F554: .4byte gBattleMoveDamage _0801F558: .4byte gBattleMons @@ -3875,7 +3875,7 @@ _0801F628: lsrs r1, r0, 16 _0801F636: movs r0, 0 - bl EmitHealthBarUpdate + bl BtlController_EmitHealthBarUpdate ldr r4, _0801F678 @ =gActiveBattler ldrb r0, [r4] bl MarkBufferBankForExecution @@ -4152,14 +4152,14 @@ _0801F858: ldr r1, _0801F88C @ =gUnknown_2023DD8 ldrb r0, [r5] adds r0, r1 - ldr r1, _0801F890 @ =sBattler_AI + ldr r1, _0801F890 @ =gBattlerAttacker b _0801F89C .align 2, 0 _0801F880: .4byte gUnknown_2023D58 _0801F884: .4byte gActiveBattler _0801F888: .4byte gUnknown_2023D74 _0801F88C: .4byte gUnknown_2023DD8 -_0801F890: .4byte sBattler_AI +_0801F890: .4byte gBattlerAttacker _0801F894: ldr r1, _0801F8C0 @ =gUnknown_2023DD8 ldrb r0, [r5] @@ -4256,7 +4256,7 @@ _0801F908: ldrb r0, [r5] lsls r0, 4 adds r0, r3 - ldr r2, _0801F968 @ =sBattler_AI + ldr r2, _0801F968 @ =gBattlerAttacker b _0801F974 .align 2, 0 _0801F954: .4byte gUnknown_2023D54 @@ -4264,7 +4264,7 @@ _0801F958: .4byte gUnknown_2023ECC _0801F95C: .4byte gCurrentMove _0801F960: .4byte gUnknown_2023E8C _0801F964: .4byte gUnknown_2023D74 -_0801F968: .4byte sBattler_AI +_0801F968: .4byte gBattlerAttacker _0801F96C: ldrb r0, [r5] lsls r0, 4 @@ -4318,12 +4318,12 @@ _0801F990: ldrb r0, [r5] lsls r0, 4 adds r0, r3 - ldr r2, _0801F9DC @ =sBattler_AI + ldr r2, _0801F9DC @ =gBattlerAttacker b _0801F9E8 .align 2, 0 _0801F9D4: .4byte gUnknown_2023E8C _0801F9D8: .4byte gUnknown_2023D74 -_0801F9DC: .4byte sBattler_AI +_0801F9DC: .4byte gBattlerAttacker _0801F9E0: ldrb r0, [r5] lsls r0, 4 @@ -4356,7 +4356,7 @@ _0801F9FA: movs r1, 0x2A movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution b _0801FA5A @@ -4417,7 +4417,7 @@ atk0D_critmessage: @ 801FA7C ands r0, r1 cmp r0, 0 bne _0801FAAA - ldr r0, _0801FAC4 @ =sBattler_AI + ldr r0, _0801FAC4 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0xD9 bl PrepareStringBattle @@ -4436,7 +4436,7 @@ _0801FAB2: _0801FAB8: .4byte gBattleControllerExecFlags _0801FABC: .4byte gCritMultiplier _0801FAC0: .4byte gMoveResultFlags -_0801FAC4: .4byte sBattler_AI +_0801FAC4: .4byte gBattlerAttacker _0801FAC8: .4byte gUnknown_2023E82 _0801FACC: .4byte gUnknown_2023D74 thumb_func_end atk0D_critmessage @@ -4496,7 +4496,7 @@ _0801FB32: movs r0, 0 movs r1, 0xC _0801FB36: - bl EmitPlaySE + bl BtlController_EmitPlaySE ldrb r0, [r4] bl MarkBufferBankForExecution b _0801FB88 @@ -4517,7 +4517,7 @@ _0801FB52: movs r0, 0 movs r1, 0xC _0801FB5E: - bl EmitPlaySE + bl BtlController_EmitPlaySE ldr r0, _0801FB6C @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -4531,7 +4531,7 @@ _0801FB70: bne _0801FB88 movs r0, 0 movs r1, 0xD - bl EmitPlaySE + bl BtlController_EmitPlaySE ldr r0, _0801FB98 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -4636,7 +4636,7 @@ _0801FC34: movs r3, 0x99 b _0801FD2E _0801FC38: - ldr r4, _0801FC60 @ =gUnknown_2023D68 + ldr r4, _0801FC60 @ =gLastUsedItem ldr r2, _0801FC64 @ =gBattleMons ldr r3, _0801FC68 @ =gBattlerTarget ldrb r1, [r3] @@ -4656,7 +4656,7 @@ _0801FC38: ldr r0, _0801FC74 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 -_0801FC60: .4byte gUnknown_2023D68 +_0801FC60: .4byte gLastUsedItem _0801FC64: .4byte gBattleMons _0801FC68: .4byte gBattlerTarget _0801FC6C: .4byte gPotentialItemEffectBattler @@ -4711,7 +4711,7 @@ _0801FCD0: ands r0, r5 cmp r0, 0 beq _0801FD18 - ldr r4, _0801FD00 @ =gUnknown_2023D68 + ldr r4, _0801FD00 @ =gLastUsedItem ldr r2, _0801FD04 @ =gBattleMons ldr r3, _0801FD08 @ =gBattlerTarget ldrb r1, [r3] @@ -4731,7 +4731,7 @@ _0801FCD0: ldr r0, _0801FD14 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 -_0801FD00: .4byte gUnknown_2023D68 +_0801FD00: .4byte gLastUsedItem _0801FD04: .4byte gBattleMons _0801FD08: .4byte gBattlerTarget _0801FD0C: .4byte gPotentialItemEffectBattler @@ -4754,7 +4754,7 @@ _0801FD2A: beq _0801FD38 _0801FD2E: adds r0, r3, 0 - ldr r1, _0801FD48 @ =sBattler_AI + ldr r1, _0801FD48 @ =gBattlerAttacker ldrb r1, [r1] bl PrepareStringBattle _0801FD38: @@ -4768,7 +4768,7 @@ _0801FD40: pop {r0} bx r0 .align 2, 0 -_0801FD48: .4byte sBattler_AI +_0801FD48: .4byte gBattlerAttacker _0801FD4C: .4byte gUnknown_2023D74 thumb_func_end atk0F_resultmessage @@ -4785,7 +4785,7 @@ atk10_printstring: @ 801FD50 ldrb r1, [r1, 0x2] lsls r1, 8 orrs r0, r1 - ldr r1, _0801FD88 @ =sBattler_AI + ldr r1, _0801FD88 @ =gBattlerAttacker ldrb r1, [r1] bl PrepareStringBattle ldr r0, [r4] @@ -4801,7 +4801,7 @@ _0801FD7A: .align 2, 0 _0801FD80: .4byte gBattleControllerExecFlags _0801FD84: .4byte gUnknown_2023D74 -_0801FD88: .4byte sBattler_AI +_0801FD88: .4byte gBattlerAttacker _0801FD8C: .4byte gUnknown_2023E82 thumb_func_end atk10_printstring @@ -4809,7 +4809,7 @@ _0801FD8C: .4byte gUnknown_2023E82 atk11_printselectionstring: @ 801FD90 push {r4,r5,lr} ldr r5, _0801FDC4 @ =gActiveBattler - ldr r0, _0801FDC8 @ =sBattler_AI + ldr r0, _0801FDC8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, _0801FDCC @ =gUnknown_2023D74 @@ -4819,7 +4819,7 @@ atk11_printselectionstring: @ 801FD90 lsls r0, 8 orrs r1, r0 movs r0, 0 - bl EmitPrintSelectionString + bl BtlController_EmitPrintSelectionString ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] @@ -4833,7 +4833,7 @@ atk11_printselectionstring: @ 801FD90 bx r0 .align 2, 0 _0801FDC4: .4byte gActiveBattler -_0801FDC8: .4byte sBattler_AI +_0801FDC8: .4byte gBattlerAttacker _0801FDCC: .4byte gUnknown_2023D74 _0801FDD0: .4byte gUnknown_2023E82 thumb_func_end atk11_printselectionstring @@ -4911,7 +4911,7 @@ atk13_printfromtable: @ 801FE30 lsls r0, 1 adds r1, r0 ldrh r0, [r1] - ldr r1, _0801FE80 @ =sBattler_AI + ldr r1, _0801FE80 @ =gBattlerAttacker ldrb r1, [r1] bl PrepareStringBattle ldr r0, [r4] @@ -4927,7 +4927,7 @@ _0801FE6E: _0801FE74: .4byte gBattleControllerExecFlags _0801FE78: .4byte gUnknown_2023D74 _0801FE7C: .4byte gUnknown_2023E82 -_0801FE80: .4byte sBattler_AI +_0801FE80: .4byte gBattlerAttacker thumb_func_end atk13_printfromtable thumb_func_start atk14_printselectionstringfromtable @@ -4954,12 +4954,12 @@ atk14_printselectionstringfromtable: @ 801FE84 lsls r0, 1 adds r1, r0 ldr r4, _0801FEE0 @ =gActiveBattler - ldr r0, _0801FEE4 @ =sBattler_AI + ldr r0, _0801FEE4 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldrh r1, [r1] movs r0, 0 - bl EmitPrintSelectionString + bl BtlController_EmitPrintSelectionString ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -4976,7 +4976,7 @@ _0801FED4: .4byte gBattleControllerExecFlags _0801FED8: .4byte gUnknown_2023D74 _0801FEDC: .4byte gUnknown_2023E82 _0801FEE0: .4byte gActiveBattler -_0801FEE4: .4byte sBattler_AI +_0801FEE4: .4byte gBattlerAttacker thumb_func_end atk14_printselectionstringfromtable thumb_func_start BankGetTurnOrder @@ -5036,8 +5036,8 @@ sub_801FF20: @ 801FF20 adds r6, r1, 0 cmp r0, 0 beq _0801FF78 - ldr r2, _0801FF68 @ =gUnknown_2023D6E - ldr r0, _0801FF6C @ =sBattler_AI + ldr r2, _0801FF68 @ =gEffectBattler + ldr r0, _0801FF6C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r2] movs r0, 0xBF @@ -5049,17 +5049,17 @@ sub_801FF20: @ 801FF20 b _0801FF84 .align 2, 0 _0801FF64: .4byte gUnknown_2023E82 -_0801FF68: .4byte gUnknown_2023D6E -_0801FF6C: .4byte sBattler_AI +_0801FF68: .4byte gEffectBattler +_0801FF6C: .4byte gBattlerAttacker _0801FF70: .4byte gBattleScripting _0801FF74: .4byte gBattlerTarget _0801FF78: - ldr r2, _08020094 @ =gUnknown_2023D6E + ldr r2, _08020094 @ =gEffectBattler ldr r0, _08020098 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r2] ldr r1, _0802009C @ =gBattleScripting - ldr r0, _080200A0 @ =sBattler_AI + ldr r0, _080200A0 @ =gBattlerAttacker _0801FF84: ldrb r0, [r0] strb r0, [r1, 0x17] @@ -5084,7 +5084,7 @@ _0801FF84: bl _080210EC _0801FFB2: ldr r3, _080200A8 @ =gBattleMons - ldr r2, _08020094 @ =gUnknown_2023D6E + ldr r2, _08020094 @ =gEffectBattler ldrb r1, [r2] movs r0, 0x58 muls r0, r1 @@ -5138,7 +5138,7 @@ _0801FFE6: bl _080210EC _08020020: ldr r3, _080200A8 @ =gBattleMons - ldr r2, _08020094 @ =gUnknown_2023D6E + ldr r2, _08020094 @ =gEffectBattler ldrb r1, [r2] movs r0, 0x58 muls r0, r1 @@ -5199,10 +5199,10 @@ _08020084: _08020092: b _08020570 .align 2, 0 -_08020094: .4byte gUnknown_2023D6E +_08020094: .4byte gEffectBattler _08020098: .4byte gBattlerTarget _0802009C: .4byte gBattleScripting -_080200A0: .4byte sBattler_AI +_080200A0: .4byte gBattlerAttacker _080200A4: .4byte gBattleTypeFlags _080200A8: .4byte gBattleMons _080200AC: .4byte gUnknown_2023DD0 @@ -5585,7 +5585,7 @@ _08020346: str r1, [sp, 0x4] _08020382: ldr r4, _080203DC @ =gBattleMons - ldr r0, _080203E0 @ =gUnknown_2023D6E + ldr r0, _080203E0 @ =gEffectBattler ldrb r3, [r0] movs r0, 0x58 adds r2, r3, 0 @@ -5633,7 +5633,7 @@ _080203CA: .align 2, 0 _080203D8: .4byte gBattleWeather _080203DC: .4byte gBattleMons -_080203E0: .4byte gUnknown_2023D6E +_080203E0: .4byte gEffectBattler _080203E4: mov r0, r9 ldrb r1, [r0] @@ -5848,7 +5848,7 @@ _08020578: bne _080205CC bl Random ldr r2, _080205C4 @ =gBattleMons - ldr r1, _080205C8 @ =gUnknown_2023D6E + ldr r1, _080205C8 @ =gEffectBattler ldrb r3, [r1] movs r1, 0x58 muls r3, r1 @@ -5867,10 +5867,10 @@ _080205B8: .4byte gUnknown_2023D74 _080205BC: .4byte gUnknown_825053C _080205C0: .4byte gUnknown_2023E82 _080205C4: .4byte gBattleMons -_080205C8: .4byte gUnknown_2023D6E +_080205C8: .4byte gEffectBattler _080205CC: ldr r2, _08020630 @ =gBattleMons - ldr r0, _08020634 @ =gUnknown_2023D6E + ldr r0, _08020634 @ =gEffectBattler ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -5889,7 +5889,7 @@ _080205E0: ldr r0, [r0] str r0, [r2] ldr r4, _08020644 @ =gActiveBattler - ldr r1, _08020634 @ =gUnknown_2023D6E + ldr r1, _08020634 @ =gEffectBattler ldrb r0, [r1] strb r0, [r4] ldrb r1, [r1] @@ -5902,7 +5902,7 @@ _080205E0: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r2, _0802064C @ =gUnknown_2023DD0 @@ -5920,7 +5920,7 @@ _080205E0: b _08020656 .align 2, 0 _08020630: .4byte gBattleMons -_08020634: .4byte gUnknown_2023D6E +_08020634: .4byte gEffectBattler _08020638: .4byte gUnknown_2023D74 _0802063C: .4byte gUnknown_825062C _08020640: .4byte gUnknown_2023E82 @@ -6226,7 +6226,7 @@ _08020928: .4byte gUnknown_2023D74 _0802092C: .4byte gUnknown_825062C _08020930: .4byte gUnknown_2023E82 _08020934: - ldr r5, _08020984 @ =sBattler_AI + ldr r5, _08020984 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x1 @@ -6266,7 +6266,7 @@ _0802096C: ldr r0, [r0] b _08021108 .align 2, 0 -_08020984: .4byte sBattler_AI +_08020984: .4byte gBattlerAttacker _08020988: .4byte gUnknown_2023E7E _0802098C: .4byte gBattleMons _08020990: .4byte 0x0000ffff @@ -6383,7 +6383,7 @@ _08020A3C: ldrb r1, [r3] ldr r0, [r2] adds r1, r0 - ldr r0, _08020AD8 @ =sBattler_AI + ldr r0, _08020AD8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r1, 0x14] ldr r4, _08020ADC @ =gUnknown_2023D74 @@ -6428,7 +6428,7 @@ _08020ABE: .align 2, 0 _08020AD0: .4byte gBattleStruct _08020AD4: .4byte gCurrentMove -_08020AD8: .4byte sBattler_AI +_08020AD8: .4byte gBattlerAttacker _08020ADC: .4byte gUnknown_2023D74 _08020AE0: .4byte gUnknown_825062C _08020AE4: .4byte gUnknown_2023E82 @@ -6627,7 +6627,7 @@ _08020C7C: .4byte gDisableStructs _08020C80: .4byte gUnknown_2023DB8 _08020C84: .4byte gCurrentMove _08020C88: - ldr r0, _08020CA4 @ =sBattler_AI + ldr r0, _08020CA4 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 @@ -6643,7 +6643,7 @@ _08020C9E: str r0, [r2] b _080210EC .align 2, 0 -_08020CA4: .4byte sBattler_AI +_08020CA4: .4byte gBattlerAttacker _08020CA8: ldr r5, _08020D64 @ =gBattleTypeFlags ldr r0, [r5] @@ -6654,7 +6654,7 @@ _08020CA8: beq _08020CB8 b _080210EC _08020CB8: - ldr r4, _08020D68 @ =sBattler_AI + ldr r4, _08020D68 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -6696,7 +6696,7 @@ _08020CEA: ldrb r1, [r0] ldr r3, _08020D78 @ =gBitTable ldr r2, _08020D7C @ =gBattlerPartyIndexes - ldr r0, _08020D68 @ =sBattler_AI + ldr r0, _08020D68 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r2 @@ -6741,7 +6741,7 @@ _08020D26: b _0802110A .align 2, 0 _08020D64: .4byte gBattleTypeFlags -_08020D68: .4byte sBattler_AI +_08020D68: .4byte gBattlerAttacker _08020D6C: .4byte 0x00000902 _08020D70: .4byte gTrainerBattleOpponent_A _08020D74: .4byte gUnknown_2023F20 @@ -6753,7 +6753,7 @@ _08020D88: .4byte gUnknown_2023D74 _08020D8C: .4byte gUnknown_81D948E _08020D90: .4byte gLastUsedAbility _08020D94: - ldr r4, _08020E60 @ =sBattler_AI + ldr r4, _08020E60 @ =gBattlerAttacker mov r10, r4 ldrb r2, [r4] movs r0, 0x58 @@ -6794,7 +6794,7 @@ _08020DD4: adds r0, 0xD0 ldr r1, [r5] adds r1, r0 - ldr r2, _08020E68 @ =gUnknown_2023D68 + ldr r2, _08020E68 @ =gLastUsedItem strh r3, [r1] strh r3, [r2] ldrb r0, [r7] @@ -6813,7 +6813,7 @@ _08020DD4: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData mov r2, r10 ldrb r0, [r2] bl MarkBufferBankForExecution @@ -6831,7 +6831,7 @@ _08020DD4: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r4, _08020E70 @ =gUnknown_2023D74 @@ -6854,9 +6854,9 @@ _08020DD4: strb r6, [r0] b _0802110A .align 2, 0 -_08020E60: .4byte sBattler_AI +_08020E60: .4byte gBattlerAttacker _08020E64: .4byte gBattleStruct -_08020E68: .4byte gUnknown_2023D68 +_08020E68: .4byte gLastUsedItem _08020E6C: .4byte gActiveBattler _08020E70: .4byte gUnknown_2023D74 _08020E74: .4byte gUnknown_81D9271 @@ -6880,14 +6880,14 @@ _08020E78: subs r0, r1 lsls r0, 2 adds r0, r2 - ldr r1, _08020EB0 @ =sBattler_AI + ldr r1, _08020EB0 @ =gBattlerAttacker ldrb r1, [r1] strb r1, [r0, 0x14] b _080210EC .align 2, 0 _08020EA8: .4byte gBattlerTarget _08020EAC: .4byte gDisableStructs -_08020EB0: .4byte sBattler_AI +_08020EB0: .4byte gBattlerAttacker _08020EB4: ldr r0, _08020ECC @ =gBattlerTarget ldrb r1, [r0] @@ -6953,7 +6953,7 @@ _08020F1A: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r4, _08020F58 @ =gUnknown_2023D74 @@ -7089,7 +7089,7 @@ _08021058: bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 - ldr r1, _080210D0 @ =gUnknown_2023D68 + ldr r1, _080210D0 @ =gLastUsedItem mov r3, r9 ldrb r0, [r3] muls r0, r4 @@ -7141,7 +7141,7 @@ _08021058: strb r5, [r0] b _0802110A .align 2, 0 -_080210D0: .4byte gUnknown_2023D68 +_080210D0: .4byte gLastUsedItem _080210D4: .4byte gUnknown_2023F20 _080210D8: .4byte gBitTable _080210DC: .4byte gBattlerPartyIndexes @@ -7182,7 +7182,7 @@ _08021120: .4byte gUnknown_81D8FEB atk15_seteffectwithchance: @ 8021124 push {r4,lr} ldr r2, _08021150 @ =gBattleMons - ldr r0, _08021154 @ =sBattler_AI + ldr r0, _08021154 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -7203,7 +7203,7 @@ atk15_seteffectwithchance: @ 8021124 b _08021170 .align 2, 0 _08021150: .4byte gBattleMons -_08021154: .4byte sBattler_AI +_08021154: .4byte gBattlerAttacker _08021158: .4byte gBattleMoves _0802115C: .4byte gCurrentMove _08021160: @@ -7437,7 +7437,7 @@ _08021330: cmp r0, 0x1 bne _08021358 ldr r1, _08021348 @ =gActiveBattler - ldr r0, _0802134C @ =sBattler_AI + ldr r0, _0802134C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r1] ldr r0, _08021350 @ =gBattlerTarget @@ -7447,7 +7447,7 @@ _08021330: b _08021368 .align 2, 0 _08021348: .4byte gActiveBattler -_0802134C: .4byte sBattler_AI +_0802134C: .4byte gBattlerAttacker _08021350: .4byte gBattlerTarget _08021354: .4byte gUnknown_81D8674 _08021358: @@ -7455,7 +7455,7 @@ _08021358: ldr r0, _080213D4 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r1] - ldr r0, _080213D8 @ =sBattler_AI + ldr r0, _080213D8 @ =gBattlerAttacker ldrb r0, [r0] mov r9, r0 ldr r4, _080213DC @ =gUnknown_81D8684 @@ -7515,7 +7515,7 @@ _080213C8: .align 2, 0 _080213D0: .4byte gActiveBattler _080213D4: .4byte gBattlerTarget -_080213D8: .4byte sBattler_AI +_080213D8: .4byte gBattlerAttacker _080213DC: .4byte gUnknown_81D8684 _080213E0: .4byte gAbsentBattlerFlags _080213E4: .4byte gBitTable @@ -7548,7 +7548,7 @@ _08021400: movs r3, 0xC1 lsls r3, 1 adds r1, r0, r3 - ldr r0, _0802155C @ =sBattler_AI + ldr r0, _0802155C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r1] _0802142C: @@ -7559,7 +7559,7 @@ _0802142C: cmp r0, 0 beq _0802146A ldr r6, _08021564 @ =gBattleMons - ldr r0, _0802155C @ =sBattler_AI + ldr r0, _0802155C @ =gBattlerAttacker ldrb r0, [r0] movs r5, 0x58 muls r0, r5 @@ -7605,7 +7605,7 @@ _08021482: beq _08021492 b _08021592 _08021492: - ldr r0, _0802155C @ =sBattler_AI + ldr r0, _0802155C @ =gBattlerAttacker mov r8, r0 ldrb r0, [r0] bl GetBattlerSide @@ -7663,7 +7663,7 @@ _08021492: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _08021588 @ =gBattleTextBuff1 @@ -7697,7 +7697,7 @@ _0802154C: .4byte gBattleResults _08021550: .4byte gBattlerPartyIndexes _08021554: .4byte gEnemyParty _08021558: .4byte gBattleStruct -_0802155C: .4byte sBattler_AI +_0802155C: .4byte gBattlerAttacker _08021560: .4byte gUnknown_2023DD0 _08021564: .4byte gBattleMons _08021568: .4byte gUnknown_2023D74 @@ -7737,7 +7737,7 @@ atk1A_faint_animation: @ 80215A0 ldr r4, _080215D8 @ =gActiveBattler strb r0, [r4] movs r0, 0 - bl EmitFaintAnimation + bl BtlController_EmitFaintAnimation ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -7782,7 +7782,7 @@ atk1B_faint_effects_clear: @ 80215DC movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl sub_8012BC8 @@ -7948,7 +7948,7 @@ atk1E_jumpifability: @ 8021730 ldrb r0, [r2, 0x1] cmp r0, 0x8 bne _08021790 - ldr r0, _08021788 @ =sBattler_AI + ldr r0, _08021788 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0 str r0, [sp] @@ -7970,12 +7970,12 @@ atk1E_jumpifability: @ 8021730 b _080217EC .align 2, 0 _08021784: .4byte gUnknown_2023D74 -_08021788: .4byte sBattler_AI +_08021788: .4byte gBattlerAttacker _0802178C: .4byte gLastUsedAbility _08021790: cmp r0, 0x9 bne _080217C8 - ldr r0, _080217C0 @ =sBattler_AI + ldr r0, _080217C0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0 str r0, [sp] @@ -7996,7 +7996,7 @@ _08021790: ldrb r1, [r1] b _080217EC .align 2, 0 -_080217C0: .4byte sBattler_AI +_080217C0: .4byte gBattlerAttacker _080217C4: .4byte gLastUsedAbility _080217C8: ldrb r0, [r2, 0x1] @@ -8046,13 +8046,13 @@ atk1F_jumpifsideaffecting: @ 8021818 ldrb r4, [r0, 0x1] cmp r4, 0x1 bne _08021838 - ldr r0, _08021834 @ =sBattler_AI + ldr r0, _08021834 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition b _08021842 .align 2, 0 _08021830: .4byte gUnknown_2023D74 -_08021834: .4byte sBattler_AI +_08021834: .4byte gBattlerAttacker _08021838: ldr r0, _08021878 @ =gBattlerTarget ldrb r0, [r0] @@ -8887,7 +8887,7 @@ _08021EB6: movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] - ldr r1, _08021F68 @ =gUnknown_2022AD8 + ldr r1, _08021F68 @ =gBattleTextBuff3 strb r3, [r1] movs r0, 0x1 strb r0, [r1, 0x1] @@ -8941,7 +8941,7 @@ _08021F4C: _08021F5C: .4byte gBattleStruct _08021F60: .4byte gBattleTextBuff1 _08021F64: .4byte gBattleTextBuff2 -_08021F68: .4byte gUnknown_2022AD8 +_08021F68: .4byte gBattleTextBuff3 _08021F6C: .4byte gPlayerParty _08021F70: .4byte gBattleMons _08021F74: .4byte gUnknown_2023D6D @@ -8952,7 +8952,7 @@ _08021F78: beq _08021F82 b _080223DA _08021F82: - ldr r1, _08022060 @ =gUnknown_20233C4 + ldr r1, _08022060 @ =gBattleBufferB ldr r7, _08022064 @ =gBattleStruct ldr r0, [r7] adds r0, 0x8F @@ -9043,7 +9043,7 @@ _08021F82: ldr r0, _08022074 @ =gBattleMoveDamage ldrh r2, [r0] movs r0, 0 - bl EmitExpUpdate + bl BtlController_EmitExpUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08022052: @@ -9054,7 +9054,7 @@ _08022052: b _080223DA .align 2, 0 _0802205C: .4byte gBattleControllerExecFlags -_08022060: .4byte gUnknown_20233C4 +_08022060: .4byte gBattleBufferB _08022064: .4byte gBattleStruct _08022068: .4byte gPlayerParty _0802206C: .4byte gBattleResources @@ -9075,7 +9075,7 @@ _08022086: adds r0, 0x8F ldrb r0, [r0] strb r0, [r1] - ldr r3, _08022320 @ =gUnknown_20233C4 + ldr r3, _08022320 @ =gBattleBufferB ldrb r2, [r1] lsls r1, r2, 9 adds r0, r1, r3 @@ -9164,7 +9164,7 @@ _080220DA: ldr r0, _08022344 @ =gUnknown_81D89F5 str r0, [r1] ldr r4, _08022348 @ =gBattleMoveDamage - ldr r2, _08022320 @ =gUnknown_20233C4 + ldr r2, _08022320 @ =gBattleBufferB ldrb r1, [r6] lsls r1, 9 adds r0, r2, 0x2 @@ -9382,7 +9382,7 @@ _08022256: _08022314: .4byte gBattleControllerExecFlags _08022318: .4byte gActiveBattler _0802231C: .4byte gBattleStruct -_08022320: .4byte gUnknown_20233C4 +_08022320: .4byte gBattleBufferB _08022324: .4byte gBattleTypeFlags _08022328: .4byte gBattlerPartyIndexes _0802232C: .4byte gPlayerParty @@ -10677,14 +10677,14 @@ _08022C80: .4byte gActiveBattler _08022C84: .4byte gBattlerTarget _08022C88: ldr r0, _08022CB0 @ =gActiveBattler - ldr r1, _08022CB4 @ =sBattler_AI + ldr r1, _08022CB4 @ =gBattlerAttacker _08022C8C: ldrb r1, [r1] strb r1, [r0] ldr r0, _08022CB8 @ =gBattleMoveDamage ldrh r1, [r0] movs r0, 0 - bl EmitHealthBarUpdate + bl BtlController_EmitHealthBarUpdate ldr r0, _08022CB0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -10696,7 +10696,7 @@ _08022C8C: bx r0 .align 2, 0 _08022CB0: .4byte gActiveBattler -_08022CB4: .4byte sBattler_AI +_08022CB4: .4byte gBattlerAttacker _08022CB8: .4byte gBattleMoveDamage _08022CBC: .4byte gUnknown_2023D74 thumb_func_end atk3B_healthbar_update @@ -10755,7 +10755,7 @@ atk3F_end3: @ 8022D04 subs r0, 0x1 strb r0, [r1] _08022D1E: - ldr r2, _08022D3C @ =gUnknown_3004F84 + ldr r2, _08022D3C @ =gBattleMainFunc ldr r0, [r3] ldr r1, [r0, 0xC] adds r0, r1, 0 @@ -10769,7 +10769,7 @@ _08022D1E: bx r0 .align 2, 0 _08022D38: .4byte gBattleResources -_08022D3C: .4byte gUnknown_3004F84 +_08022D3C: .4byte gBattleMainFunc thumb_func_end atk3F_end3 thumb_func_start atk41_call @@ -10891,7 +10891,7 @@ _08022E0E: thumb_func_start atk44_endselectionscript atk44_endselectionscript: @ 8022E18 - ldr r0, _08022E2C @ =sBattler_AI + ldr r0, _08022E2C @ =gBattlerAttacker ldrb r0, [r0] ldr r1, _08022E30 @ =gBattleStruct ldr r1, [r1] @@ -10901,7 +10901,7 @@ atk44_endselectionscript: @ 8022E18 strb r1, [r0] bx lr .align 2, 0 -_08022E2C: .4byte sBattler_AI +_08022E2C: .4byte gBattlerAttacker _08022E30: .4byte gBattleStruct thumb_func_end atk44_endselectionscript @@ -10941,7 +10941,7 @@ _08022E6E: ldrb r1, [r0, 0x2] ldrh r2, [r3] movs r0, 0 - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldr r0, _08022E88 @ =gActiveBattler ldrb r0, [r0] b _08022EE4 @@ -10987,7 +10987,7 @@ _08022ED8: ldrb r1, [r2, 0x2] ldrh r2, [r3] movs r0, 0 - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldrb r0, [r6] _08022EE4: bl MarkBufferBankForExecution @@ -11042,7 +11042,7 @@ _08022F3E: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldr r0, _08022F60 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -11090,7 +11090,7 @@ _08022FA4: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldrb r0, [r7] bl MarkBufferBankForExecution ldr r0, [r6] @@ -11379,7 +11379,7 @@ _080231B0: movs r1, 0x1 mov r2, r8 str r3, [sp] - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldr r0, _080231F0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -11429,7 +11429,7 @@ atk49_moveend: @ 8023210 sub sp, 0x1C movs r0, 0 mov r10, r0 - ldr r2, _08023260 @ =gUnknown_2023D4C + ldr r2, _08023260 @ =gChosenMove ldrh r1, [r2] ldr r0, _08023264 @ =0x0000ffff movs r3, 0 @@ -11446,7 +11446,7 @@ _08023232: ldrb r0, [r0, 0x2] str r0, [sp, 0x14] ldr r1, _0802326C @ =gBattleMons - ldr r0, _08023270 @ =sBattler_AI + ldr r0, _08023270 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -11462,11 +11462,11 @@ _08023232: ldrb r0, [r0, 0x7] b _08023282 .align 2, 0 -_08023260: .4byte gUnknown_2023D4C +_08023260: .4byte gChosenMove _08023264: .4byte 0x0000ffff _08023268: .4byte gUnknown_2023D74 _0802326C: .4byte gBattleMons -_08023270: .4byte sBattler_AI +_08023270: .4byte gBattlerAttacker _08023274: .4byte gEnigmaBerries _08023278: ldrh r0, [r1, 0x2E] @@ -11476,7 +11476,7 @@ _08023278: _08023282: str r0, [sp, 0x8] ldr r1, _080232A4 @ =gBattleStruct - ldr r0, _080232A8 @ =sBattler_AI + ldr r0, _080232A8 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 1 adds r0, 0xC8 @@ -11492,13 +11492,13 @@ _08023282: b _08023346 .align 2, 0 _080232A4: .4byte gBattleStruct -_080232A8: .4byte sBattler_AI +_080232A8: .4byte gBattlerAttacker _080232AC: ldr r4, _080232C0 @ =gActiveBattler strb r2, [r4] movs r0, 0 movs r1, 0x1 - bl EmitSpriteInvisibility + bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution b _0802379E @@ -11509,7 +11509,7 @@ _080232C4: strb r2, [r4] movs r0, 0 movs r1, 0 - bl EmitSpriteInvisibility + bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldrb r1, [r6] @@ -11632,7 +11632,7 @@ _080233E4: bne _080233EE b _080237C8 _080233EE: - ldr r0, _08023484 @ =sBattler_AI + ldr r0, _08023484 @ =gBattlerAttacker ldrb r1, [r0] cmp r1, r3 bne _080233F8 @@ -11708,7 +11708,7 @@ _0802346A: .align 2, 0 _0802347C: .4byte gBattleMons _08023480: .4byte gBattlerTarget -_08023484: .4byte sBattler_AI +_08023484: .4byte gBattlerAttacker _08023488: .4byte gMoveResultFlags _0802348C: .4byte gUnknown_2023ECC _08023490: .4byte gBattleMoves @@ -11739,7 +11739,7 @@ _080234C0: bne _080234CA b _080237C8 _080234CA: - ldr r0, _08023544 @ =sBattler_AI + ldr r0, _08023544 @ =gBattlerAttacker ldrb r0, [r0] cmp r0, r2 bne _080234D4 @@ -11786,7 +11786,7 @@ _080234FE: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl BattleScriptPushCursor @@ -11799,7 +11799,7 @@ _080234FE: .align 2, 0 _0802353C: .4byte gBattleMons _08023540: .4byte gBattlerTarget -_08023544: .4byte sBattler_AI +_08023544: .4byte gBattlerAttacker _08023548: .4byte gUnknown_2023ECC _0802354C: .4byte gMoveResultFlags _08023550: .4byte gActiveBattler @@ -11857,7 +11857,7 @@ _080235B0: .align 2, 0 _080235BC: .4byte gBattleScripting _080235C0: - ldr r0, _080235E0 @ =sBattler_AI + ldr r0, _080235E0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0 str r0, [sp] @@ -11874,7 +11874,7 @@ _080235DA: mov r10, r1 b _080237C8 .align 2, 0 -_080235E0: .4byte sBattler_AI +_080235E0: .4byte gBattlerAttacker _080235E4: ldr r0, _08023674 @ =gUnknown_2023DD0 ldr r0, [r0] @@ -11886,7 +11886,7 @@ _080235E4: ldr r2, [sp, 0x8] cmp r2, 0x1D bne _08023628 - ldr r0, _08023678 @ =gUnknown_2023D4C + ldr r0, _08023678 @ =gChosenMove ldrh r2, [r0] adds r3, r0, 0 cmp r2, 0xA5 @@ -11915,7 +11915,7 @@ _08023622: _08023628: movs r4, 0 ldr r2, _08023684 @ =gBattleMons - ldr r3, _08023688 @ =sBattler_AI + ldr r3, _08023688 @ =gBattlerAttacker ldrb r1, [r3] movs r0, 0x58 muls r0, r1 @@ -11956,11 +11956,11 @@ _0802366A: b _08023BB4 .align 2, 0 _08023674: .4byte gUnknown_2023DD0 -_08023678: .4byte gUnknown_2023D4C +_08023678: .4byte gChosenMove _0802367C: .4byte 0x0000ffff _08023680: .4byte gMoveResultFlags _08023684: .4byte gBattleMons -_08023688: .4byte sBattler_AI +_08023688: .4byte gBattlerAttacker _0802368C: movs r4, 0 ldr r0, _080236C0 @ =gBattlersCount @@ -12024,7 +12024,7 @@ _080236FC: b _080237C8 _08023702: ldr r1, _08023728 @ =gStatuses3 - ldr r0, _0802372C @ =sBattler_AI + ldr r0, _0802372C @ =gBattlerAttacker ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 @@ -12046,7 +12046,7 @@ _08023726: b _08023AFA .align 2, 0 _08023728: .4byte gStatuses3 -_0802372C: .4byte sBattler_AI +_0802372C: .4byte gBattlerAttacker _08023730: .4byte 0x000400c0 _08023734: .4byte gUnknown_2023DD0 _08023738: @@ -12057,7 +12057,7 @@ _08023738: cmp r0, 0 bne _08023764 ldr r1, _080237AC @ =gStatuses3 - ldr r0, _080237B0 @ =sBattler_AI + ldr r0, _080237B0 @ =gBattlerAttacker ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 @@ -12073,12 +12073,12 @@ _08023738: beq _080237C8 _08023764: ldr r4, _080237B8 @ =gActiveBattler - ldr r5, _080237B0 @ =sBattler_AI + ldr r5, _080237B0 @ =gBattlerAttacker ldrb r0, [r5] strb r0, [r4] movs r0, 0 movs r1, 0 - bl EmitSpriteInvisibility + bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, _080237AC @ =gStatuses3 @@ -12108,7 +12108,7 @@ _0802379E: .align 2, 0 _080237A8: .4byte gMoveResultFlags _080237AC: .4byte gStatuses3 -_080237B0: .4byte sBattler_AI +_080237B0: .4byte gBattlerAttacker _080237B4: .4byte 0x000400c0 _080237B8: .4byte gActiveBattler _080237BC: .4byte 0xfffbff3f @@ -12196,7 +12196,7 @@ _08023860: movs r0, 0x80 lsls r0, 5 ands r0, r3 - ldr r2, _08023918 @ =sBattler_AI + ldr r2, _08023918 @ =gBattlerAttacker mov r9, r2 adds r5, r1, 0 cmp r0, 0 @@ -12224,7 +12224,7 @@ _0802388A: ldrb r1, [r2] lsls r1, 1 adds r1, r0 - ldr r0, _0802392C @ =gUnknown_2023D4C + ldr r0, _0802392C @ =gChosenMove ldrh r0, [r0] strh r0, [r1] _080238A6: @@ -12273,7 +12273,7 @@ _080238E8: ldr r0, _08023940 @ =gLastUsedMove lsls r1, r4, 1 adds r1, r0 - ldr r0, _0802392C @ =gUnknown_2023D4C + ldr r0, _0802392C @ =gChosenMove ldrh r0, [r0] strh r0, [r1] ldr r0, _08023944 @ =gUnknown_2023DB0 @@ -12287,12 +12287,12 @@ _080238E8: b _08023966 .align 2, 0 _08023914: .4byte gUnknown_2023DD0 -_08023918: .4byte sBattler_AI +_08023918: .4byte gBattlerAttacker _0802391C: .4byte gActiveBattler _08023920: .4byte gBattlerTarget _08023924: .4byte 0xffffefff _08023928: .4byte gUnknown_2023D90 -_0802392C: .4byte gUnknown_2023D4C +_0802392C: .4byte gChosenMove _08023930: .4byte gAbsentBattlerFlags _08023934: .4byte gBitTable _08023938: .4byte gBattleStruct @@ -12343,7 +12343,7 @@ _08023984: ands r0, r1 cmp r0, 0 bne _08023A20 - ldr r0, _080239CC @ =gUnknown_2023D4C + ldr r0, _080239CC @ =gChosenMove ldrh r3, [r0] ldr r0, _080239B8 @ =0x0000ffff cmp r3, r0 @@ -12361,7 +12361,7 @@ _080239BC: .4byte gUnknown_2023DB0 _080239C0: .4byte gBattlerTarget _080239C4: .4byte gUnknown_2023DC0 _080239C8: .4byte gMoveResultFlags -_080239CC: .4byte gUnknown_2023D4C +_080239CC: .4byte gChosenMove _080239D0: .4byte gUnknown_2023DA0 _080239D4: ldr r0, _080239F8 @ =gUnknown_2023DA0 @@ -12422,7 +12422,7 @@ _08023A40: ldr r0, _08023B04 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r7, _08023B08 @ =gBitTable - ldr r2, _08023B0C @ =sBattler_AI + ldr r2, _08023B0C @ =gBattlerAttacker ldrb r3, [r2] lsls r0, r3, 2 adds r0, r7 @@ -12478,7 +12478,7 @@ _08023A40: lsls r1, r2, 1 adds r1, r5 adds r1, 0x98 - ldr r3, _08023B24 @ =gUnknown_2023D4C + ldr r3, _08023B24 @ =gChosenMove ldrh r0, [r3] strb r0, [r1] ldrb r1, [r4] @@ -12521,13 +12521,13 @@ _08023AFA: .align 2, 0 _08023B04: .4byte gAbsentBattlerFlags _08023B08: .4byte gBitTable -_08023B0C: .4byte sBattler_AI +_08023B0C: .4byte gBattlerAttacker _08023B10: .4byte gBattleStruct _08023B14: .4byte gBattleMoves _08023B18: .4byte gUnknown_2023DD0 _08023B1C: .4byte gBattlerTarget _08023B20: .4byte gMoveResultFlags -_08023B24: .4byte gUnknown_2023D4C +_08023B24: .4byte gChosenMove _08023B28: ldr r5, _08023C10 @ =gUnknown_2023DD0 ldr r2, [r5] @@ -12543,7 +12543,7 @@ _08023B28: cmp r0, 0 beq _08023BAC ldr r1, _08023C18 @ =gUnknown_2023E8C - ldr r0, _08023C1C @ =sBattler_AI + ldr r0, _08023C1C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -12652,7 +12652,7 @@ _08023BFE: _08023C10: .4byte gUnknown_2023DD0 _08023C14: .4byte gBattleTypeFlags _08023C18: .4byte gUnknown_2023E8C -_08023C1C: .4byte sBattler_AI +_08023C1C: .4byte gBattlerAttacker _08023C20: .4byte gBattleMoves _08023C24: .4byte gCurrentMove _08023C28: .4byte gBattlerTarget @@ -12865,7 +12865,7 @@ _08023DAE: ands r5, r4 cmp r5, 0 bne _08023E2A - ldr r0, _08023E64 @ =sBattler_AI + ldr r0, _08023E64 @ =gBattlerAttacker ldrb r0, [r0] ldr r7, _08023E68 @ =gCurrentMove ldrh r1, [r7] @@ -12919,7 +12919,7 @@ _08023E2A: cmp r0, 0 beq _08023E48 ldr r2, _08023E80 @ =gUnknown_2023E8C - ldr r0, _08023E64 @ =sBattler_AI + ldr r0, _08023E64 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 4 adds r1, r2 @@ -12940,7 +12940,7 @@ _08023E48: .align 2, 0 _08023E5C: .4byte gBattleMons _08023E60: .4byte gBattlerTarget -_08023E64: .4byte sBattler_AI +_08023E64: .4byte gBattlerAttacker _08023E68: .4byte gCurrentMove _08023E6C: .4byte gBattleMoves _08023E70: .4byte gLastUsedAbility @@ -12955,7 +12955,7 @@ _08023E84: .4byte gUnknown_2023D74 atk4B_returnatktoball: @ 8023E88 push {r4,lr} ldr r4, _08023EC4 @ =gActiveBattler - ldr r0, _08023EC8 @ =sBattler_AI + ldr r0, _08023EC8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldr r2, _08023ECC @ =gUnknown_2023DD0 @@ -12971,7 +12971,7 @@ atk4B_returnatktoball: @ 8023E88 bne _08023EB6 movs r0, 0 movs r1, 0 - bl EmitReturnMonToBall + bl BtlController_EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution _08023EB6: @@ -12984,7 +12984,7 @@ _08023EB6: bx r0 .align 2, 0 _08023EC4: .4byte gActiveBattler -_08023EC8: .4byte sBattler_AI +_08023EC8: .4byte gBattlerAttacker _08023ECC: .4byte gUnknown_2023DD0 _08023ED0: .4byte gBitTable _08023ED4: .4byte gUnknown_2023D74 @@ -13071,7 +13071,7 @@ _08023F56: muls r0, r5 adds r3, r0, r6 movs r2, 0 - ldr r5, _080240B0 @ =gUnknown_20233C4 + ldr r5, _080240B0 @ =gBattleBufferB adds r7, r4, 0 _08023F84: adds r0, r3, r2 @@ -13222,7 +13222,7 @@ _080240A0: .4byte gBattleControllerExecFlags _080240A4: .4byte gUnknown_2023D74 _080240A8: .4byte gActiveBattler _080240AC: .4byte gBattleMons -_080240B0: .4byte gUnknown_20233C4 +_080240B0: .4byte gBattleBufferB _080240B4: .4byte gBaseStats _080240B8: .4byte gUnknown_2023F20 _080240BC: .4byte gBitTable @@ -13294,7 +13294,7 @@ _0802412A: ldr r0, [r4] ldrb r2, [r0, 0x2] movs r0, 0 - bl EmitSwitchInAnim + bl BtlController_EmitSwitchInAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] @@ -13603,7 +13603,7 @@ sub_8024398: @ 8024398 movs r0, 0 movs r1, 0x1 movs r3, 0 - bl EmitChoosePokemon + bl BtlController_EmitChoosePokemon ldrb r0, [r4] bl MarkBufferBankForExecution add sp, 0x4 @@ -13700,7 +13700,7 @@ _08024446: str r0, [r7] movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution b _080244F6 @@ -13740,7 +13740,7 @@ _080244E4: .4byte gUnknown_2023ECC _080244E8: movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _080244F6: @@ -13798,7 +13798,7 @@ _08024518: bics r0, r1 str r0, [r2] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _080245CE @@ -13839,7 +13839,7 @@ _080245B8: .4byte gBattleStruct _080245BC: movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x1 @@ -13882,7 +13882,7 @@ _080245CE: bics r0, r1 str r0, [r2] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _0802468C @@ -13928,7 +13928,7 @@ _08024674: bne _0802468C movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0802468C: @@ -13965,7 +13965,7 @@ _0802468C: bics r0, r1 str r0, [r2] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _0802473E @@ -14006,7 +14006,7 @@ _08024724: .4byte gBattleStruct _08024728: movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x2 @@ -14051,7 +14051,7 @@ _0802473E: bics r0, r1 str r0, [r2] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _080247FC @@ -14097,7 +14097,7 @@ _080247E4: bne _080247FC movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _080247FC: @@ -14136,7 +14136,7 @@ _0802483C: _08024840: movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldr r0, _08024880 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -14176,7 +14176,7 @@ _08024894: strb r0, [r1] movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldr r0, _080248B0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -14223,7 +14223,7 @@ _080248D6: ldr r6, _08024940 @ =gActiveBattler movs r0, 0x2 strb r0, [r6] - ldr r0, _08024944 @ =gUnknown_20233C4 + ldr r0, _08024944 @ =gBattleBufferB ldrb r1, [r0, 0x1] movs r0, 0x2 movs r2, 0x6 @@ -14248,7 +14248,7 @@ _080248D6: bics r0, r1 str r0, [r7] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r6] bl MarkBufferBankForExecution b _0802497E @@ -14257,7 +14257,7 @@ _08024934: .4byte gBattleTypeFlags _08024938: .4byte gUnknown_2023DD0 _0802493C: .4byte gBitTable _08024940: .4byte gActiveBattler -_08024944: .4byte gUnknown_20233C4 +_08024944: .4byte gBattleBufferB _08024948: .4byte gAbsentBattlerFlags _0802494C: ldr r4, _080249DC @ =gUnknown_2023ECC @@ -14297,7 +14297,7 @@ _0802497E: ldr r5, _080249E8 @ =gActiveBattler movs r0, 0x3 strb r0, [r5] - ldr r0, _080249EC @ =gUnknown_20233C4 + ldr r0, _080249EC @ =gBattleBufferB ldr r2, _080249F0 @ =0x00000201 adds r0, r2 ldrb r1, [r0] @@ -14325,7 +14325,7 @@ _0802497E: bics r0, r1 str r0, [r2] movs r0, 0 - bl EmitCmd42 + bl BtlController_EmitCmd42 ldrb r0, [r5] bl MarkBufferBankForExecution b _08024A2E @@ -14334,7 +14334,7 @@ _080249DC: .4byte gUnknown_2023ECC _080249E0: .4byte gBattleStruct _080249E4: .4byte gBitTable _080249E8: .4byte gActiveBattler -_080249EC: .4byte gUnknown_20233C4 +_080249EC: .4byte gBattleBufferB _080249F0: .4byte 0x00000201 _080249F4: .4byte gAbsentBattlerFlags _080249F8: .4byte gUnknown_2023DD0 @@ -14518,7 +14518,7 @@ _08024B34: movs r0, 0 adds r1, r5, 0 movs r3, 0 - bl EmitChoosePokemon + bl BtlController_EmitChoosePokemon ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r6] @@ -14556,7 +14556,7 @@ _08024BB0: beq _08024BC4 movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _08024BC4: @@ -14603,7 +14603,7 @@ _08024BF0: _08024C20: movs r0, 0 movs r1, 0x2 - bl EmitLinkStandbyMsg + bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _08024C2E: @@ -14661,7 +14661,7 @@ _08024C86: b _08024E0E _08024C92: ldr r6, _08024CBC @ =gBattleStruct - ldr r2, _08024CC0 @ =gUnknown_20233C4 + ldr r2, _08024CC0 @ =gBattleBufferB movs r5, 0x80 lsls r5, 2 adds r4, r0, 0 @@ -14684,7 +14684,7 @@ _08024CAC: .align 2, 0 _08024CB8: .4byte gBattlersCount _08024CBC: .4byte gBattleStruct -_08024CC0: .4byte gUnknown_20233C4 +_08024CC0: .4byte gBattleBufferB _08024CC4: ldr r0, _08024CDC @ =gBattleTypeFlags ldr r0, [r0] @@ -14701,7 +14701,7 @@ _08024CD2: _08024CDC: .4byte gBattleTypeFlags _08024CE0: ldr r1, _08024DAC @ =gUnknown_2023E82 - ldr r4, _08024DB0 @ =gUnknown_20233C4 + ldr r4, _08024DB0 @ =gBattleBufferB ldrb r0, [r7] lsls r0, 9 adds r2, r4, 0x1 @@ -14804,7 +14804,7 @@ _08024CE0: b _08024DC2 .align 2, 0 _08024DAC: .4byte gUnknown_2023E82 -_08024DB0: .4byte gUnknown_20233C4 +_08024DB0: .4byte gBattleBufferB _08024DB4: .4byte gBattleStruct _08024DB8: .4byte gBattleTypeFlags _08024DBC: @@ -14817,7 +14817,7 @@ _08024DC2: movs r0, 0x6 strb r0, [r1, 0x1] ldr r4, _08024E20 @ =gBattleMons - ldr r3, _08024E24 @ =sBattler_AI + ldr r3, _08024E24 @ =gBattlerAttacker ldrb r0, [r3] movs r2, 0x58 muls r0, r2 @@ -14839,7 +14839,7 @@ _08024DC2: ldr r3, _08024E2C @ =gActiveBattler ldrb r0, [r3] strb r0, [r2, 0x2] - ldr r1, _08024E30 @ =gUnknown_20233C4 + ldr r1, _08024E30 @ =gBattleBufferB ldrb r0, [r3] lsls r0, 9 adds r1, 0x1 @@ -14861,10 +14861,10 @@ _08024E16: .align 2, 0 _08024E1C: .4byte gBattleTextBuff1 _08024E20: .4byte gBattleMons -_08024E24: .4byte sBattler_AI +_08024E24: .4byte gBattlerAttacker _08024E28: .4byte gBattleTextBuff2 _08024E2C: .4byte gActiveBattler -_08024E30: .4byte gUnknown_20233C4 +_08024E30: .4byte gBattleBufferB _08024E34: .4byte gUnknown_2023D74 thumb_func_end sub_8024C48 @@ -15207,7 +15207,7 @@ _080250F2: ldr r1, _08025114 @ =gActiveBattler strb r0, [r1] movs r0, 0 - bl EmitTrainerSlide + bl BtlController_EmitTrainerSlide ldr r0, _08025114 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -15226,7 +15226,7 @@ _08025118: .4byte gUnknown_2023D74 atk54_playse: @ 802511C push {r4,r5,lr} ldr r5, _0802514C @ =gActiveBattler - ldr r0, _08025150 @ =sBattler_AI + ldr r0, _08025150 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, _08025154 @ =gUnknown_2023D74 @@ -15236,7 +15236,7 @@ atk54_playse: @ 802511C lsls r0, 8 orrs r1, r0 movs r0, 0 - bl EmitPlaySE + bl BtlController_EmitPlaySE ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] @@ -15247,7 +15247,7 @@ atk54_playse: @ 802511C bx r0 .align 2, 0 _0802514C: .4byte gActiveBattler -_08025150: .4byte sBattler_AI +_08025150: .4byte gBattlerAttacker _08025154: .4byte gUnknown_2023D74 thumb_func_end atk54_playse @@ -15255,7 +15255,7 @@ _08025154: .4byte gUnknown_2023D74 atk55_play_sound: @ 8025158 push {r4,r5,lr} ldr r5, _08025188 @ =gActiveBattler - ldr r0, _0802518C @ =sBattler_AI + ldr r0, _0802518C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, _08025190 @ =gUnknown_2023D74 @@ -15265,7 +15265,7 @@ atk55_play_sound: @ 8025158 lsls r0, 8 orrs r1, r0 movs r0, 0 - bl Emitcmd44 + bl BtlController_EmitPlayFanfare ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] @@ -15276,7 +15276,7 @@ atk55_play_sound: @ 8025158 bx r0 .align 2, 0 _08025188: .4byte gActiveBattler -_0802518C: .4byte sBattler_AI +_0802518C: .4byte gBattlerAttacker _08025190: .4byte gUnknown_2023D74 thumb_func_end atk55_play_sound @@ -15290,7 +15290,7 @@ atk56_playfaintcry: @ 8025194 ldr r4, _080251C0 @ =gActiveBattler strb r0, [r4] movs r0, 0 - bl EmitFaintingCry + bl BtlController_EmitFaintingCry ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -15314,7 +15314,7 @@ atk57: @ 80251C4 ldr r0, _080251F4 @ =gBattleOutcome ldrb r1, [r0] movs r0, 0 - bl EmitCmd55 + bl BtlController_EmitCmd55 ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _080251F8 @ =gUnknown_2023D74 @@ -15341,7 +15341,7 @@ atk58_returntoball: @ 80251FC strb r0, [r4] movs r0, 0 movs r1, 0x1 - bl EmitReturnMonToBall + bl BtlController_EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -16108,7 +16108,7 @@ sub_802581C: @ 802581C bne _080258A0 _0802586E: movs r0, 0 - bl EmitHitAnimation + bl BtlController_EmitHitAnimation ldr r0, _0802588C @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -16460,7 +16460,7 @@ _08025B20: .4byte gUnknown_2023C08 atk5F: @ 8025B24 push {lr} ldr r0, _08025B4C @ =gActiveBattler - ldr r2, _08025B50 @ =sBattler_AI + ldr r2, _08025B50 @ =gBattlerAttacker ldrb r3, [r2] strb r3, [r0] ldr r1, _08025B54 @ =gBattlerTarget @@ -16480,7 +16480,7 @@ atk5F: @ 8025B24 b _08025B62 .align 2, 0 _08025B4C: .4byte gActiveBattler -_08025B50: .4byte sBattler_AI +_08025B50: .4byte gBattlerAttacker _08025B54: .4byte gBattlerTarget _08025B58: .4byte gUnknown_2023DD0 _08025B5C: .4byte 0xffffefff @@ -16501,7 +16501,7 @@ _08025B70: .4byte gUnknown_2023D74 thumb_func_start atk60_incrementgamestat atk60_incrementgamestat: @ 8025B74 push {lr} - ldr r0, _08025B9C @ =sBattler_AI + ldr r0, _08025B9C @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -16519,7 +16519,7 @@ _08025B8E: pop {r0} bx r0 .align 2, 0 -_08025B9C: .4byte sBattler_AI +_08025B9C: .4byte gBattlerAttacker _08025BA0: .4byte gUnknown_2023D74 thumb_func_end atk60_incrementgamestat @@ -16599,7 +16599,7 @@ _08025C32: movs r0, 0 mov r1, sp movs r2, 0x1 - bl EmitDrawPartyStatusSummary + bl BtlController_EmitDrawPartyStatusSummary ldr r0, _08025C64 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -16629,7 +16629,7 @@ atk62: @ 8025C6C ldr r4, _08025C98 @ =gActiveBattler strb r0, [r4] movs r0, 0 - bl EmitCmd49 + bl BtlController_EmitHidePartyStatusSummary ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -16662,7 +16662,7 @@ _08025CB4: .4byte gUnknown_2023D74 _08025CB8: .4byte gCurrentMove _08025CBC: .4byte gUnknown_2023D4E _08025CC0: - ldr r2, _08025CEC @ =gUnknown_2023D4C + ldr r2, _08025CEC @ =gChosenMove ldr r1, _08025CF0 @ =gCurrentMove ldr r0, _08025CF4 @ =gUnknown_2023D4E ldrh r0, [r0] @@ -16686,7 +16686,7 @@ _08025CCE: pop {r0} bx r0 .align 2, 0 -_08025CEC: .4byte gUnknown_2023D4C +_08025CEC: .4byte gChosenMove _08025CF0: .4byte gCurrentMove _08025CF4: .4byte gUnknown_2023D4E _08025CF8: .4byte gUnknown_81D65A8 @@ -16737,7 +16737,7 @@ atk64_statusanimation: @ 8025D00 ldr r2, [r0] movs r0, 0 movs r1, 0 - bl EmitStatusAnimation + bl BtlController_EmitStatusAnimation ldrb r0, [r4] bl MarkBufferBankForExecution _08025D60: @@ -16816,7 +16816,7 @@ atk65_status2animation: @ 8025D90 ands r2, r3 movs r0, 0 movs r1, 0x1 - bl EmitStatusAnimation + bl BtlController_EmitStatusAnimation ldrb r0, [r5] bl MarkBufferBankForExecution _08025E08: @@ -16888,7 +16888,7 @@ atk66_chosenstatusanimation: @ 8025E38 bne _08025EA2 ldrb r1, [r4, 0x2] movs r0, 0 - bl EmitStatusAnimation + bl BtlController_EmitStatusAnimation ldrb r0, [r5] bl MarkBufferBankForExecution _08025EA2: @@ -17206,7 +17206,7 @@ _08026114: movs r1, 0x80 orrs r0, r1 strb r0, [r2] - ldr r1, _08026154 @ =gUnknown_2023D68 + ldr r1, _08026154 @ =gLastUsedItem adds r0, r3, 0 muls r0, r4 adds r0, r5 @@ -17223,7 +17223,7 @@ _0802613C: .align 2, 0 _0802614C: .4byte gUnknown_2023ECC _08026150: .4byte gMoveResultFlags -_08026154: .4byte gUnknown_2023D68 +_08026154: .4byte gLastUsedItem _08026158: .4byte gUnknown_2023D74 thumb_func_end atk69_adjustsetdamage @@ -17264,7 +17264,7 @@ atk6A_removeitem: @ 802615C movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r6] @@ -17288,7 +17288,7 @@ atk6B_atknameinbuff1: @ 80261CC strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] - ldr r2, _080261FC @ =sBattler_AI + ldr r2, _080261FC @ =gBattlerAttacker ldrb r0, [r2] strb r0, [r1, 0x2] ldr r3, _08026200 @ =gBattlerPartyIndexes @@ -17306,7 +17306,7 @@ atk6B_atknameinbuff1: @ 80261CC bx lr .align 2, 0 _080261F8: .4byte gBattleTextBuff1 -_080261FC: .4byte sBattler_AI +_080261FC: .4byte gBattlerAttacker _08026200: .4byte gBattlerPartyIndexes _08026204: .4byte gUnknown_2023D74 thumb_func_end atk6B_atknameinbuff1 @@ -18040,7 +18040,7 @@ atk6E_setatktoplayer0: @ 80267F0 push {lr} movs r0, 0 bl GetBattlerAtPosition - ldr r1, _08026808 @ =sBattler_AI + ldr r1, _08026808 @ =gBattlerAttacker strb r0, [r1] ldr r1, _0802680C @ =gUnknown_2023D74 ldr r0, [r1] @@ -18049,7 +18049,7 @@ atk6E_setatktoplayer0: @ 80267F0 pop {r0} bx r0 .align 2, 0 -_08026808: .4byte sBattler_AI +_08026808: .4byte gBattlerAttacker _0802680C: .4byte gUnknown_2023D74 thumb_func_end atk6E_setatktoplayer0 @@ -18064,7 +18064,7 @@ atk6F_makevisible: @ 8026810 strb r0, [r4] movs r0, 0 movs r1, 0 - bl EmitSpriteInvisibility + bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -18361,7 +18361,7 @@ atk75_useitemonopponent: @ 8026A58 push {lr} sub sp, 0x4 ldr r2, _08026A98 @ =gBattlerInMenuId - ldr r1, _08026A9C @ =sBattler_AI + ldr r1, _08026A9C @ =gBattlerAttacker ldrb r0, [r1] strb r0, [r2] ldr r2, _08026AA0 @ =gBattlerPartyIndexes @@ -18373,7 +18373,7 @@ atk75_useitemonopponent: @ 8026A58 muls r0, r2 ldr r1, _08026AA4 @ =gEnemyParty adds r0, r1 - ldr r1, _08026AA8 @ =gUnknown_2023D68 + ldr r1, _08026AA8 @ =gLastUsedItem ldrh r1, [r1] lsls r2, 24 lsrs r2, 24 @@ -18390,10 +18390,10 @@ atk75_useitemonopponent: @ 8026A58 bx r0 .align 2, 0 _08026A98: .4byte gBattlerInMenuId -_08026A9C: .4byte sBattler_AI +_08026A9C: .4byte gBattlerAttacker _08026AA0: .4byte gBattlerPartyIndexes _08026AA4: .4byte gEnemyParty -_08026AA8: .4byte gUnknown_2023D68 +_08026AA8: .4byte gLastUsedItem _08026AAC: .4byte gUnknown_2023D74 thumb_func_end atk75_useitemonopponent @@ -18448,7 +18448,7 @@ _08026B1C: .align 2, 0 _08026B28: .4byte gActiveBattler _08026B2C: - ldr r1, _08026B68 @ =sBattler_AI + ldr r1, _08026B68 @ =gBattlerAttacker ldr r4, _08026B6C @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1] @@ -18477,7 +18477,7 @@ _08026B2C: strb r2, [r4] b _08026F4E .align 2, 0 -_08026B68: .4byte sBattler_AI +_08026B68: .4byte gBattlerAttacker _08026B6C: .4byte gBattlerTarget _08026B70: .4byte gSideTimers _08026B74: .4byte gBattleMons @@ -18746,7 +18746,7 @@ _08026D7C: _08026D84: movs r0, 0 movs r1, 0 - bl EmitReturnMonToBall + bl BtlController_EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution b _08026F4E @@ -18863,7 +18863,7 @@ _08026E4E: movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08026F28 @ =gUnknown_2023E82 @@ -18938,7 +18938,7 @@ _08026EEC: movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08026F28 @ =gUnknown_2023E82 @@ -18982,7 +18982,7 @@ atk77_setprotectlike: @ 8026F68 push {r7} movs r6, 0x1 ldr r2, _08027034 @ =gUnknown_2023DB0 - ldr r1, _08027038 @ =sBattler_AI + ldr r1, _08027038 @ =gBattlerAttacker ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 @@ -19083,7 +19083,7 @@ _0802701E: b _0802707E .align 2, 0 _08027034: .4byte gUnknown_2023DB0 -_08027038: .4byte sBattler_AI +_08027038: .4byte gBattlerAttacker _0802703C: .4byte gDisableStructs _08027040: .4byte gUnknown_2023BE2 _08027044: .4byte gBattlersCount @@ -19094,7 +19094,7 @@ _08027054: .4byte gUnknown_2023E8C _08027058: .4byte gUnknown_2023E82 _0802705C: ldr r2, _08027090 @ =gDisableStructs - ldr r0, _08027094 @ =sBattler_AI + ldr r0, _08027094 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 @@ -19122,7 +19122,7 @@ _0802707E: bx r0 .align 2, 0 _08027090: .4byte gDisableStructs -_08027094: .4byte sBattler_AI +_08027094: .4byte gBattlerAttacker _08027098: .4byte gUnknown_2023E82 _0802709C: .4byte gMoveResultFlags _080270A0: .4byte gUnknown_2023D74 @@ -19176,7 +19176,7 @@ _080270F0: cmp r0, r1 bne _0802718C ldr r4, _08027170 @ =gActiveBattler - ldr r7, _08027174 @ =sBattler_AI + ldr r7, _08027174 @ =gBattlerAttacker ldrb r0, [r7] strb r0, [r4] ldr r2, _08027178 @ =gBattleMoveDamage @@ -19188,7 +19188,7 @@ _080270F0: str r0, [r2] ldr r1, _0802717C @ =0x00007fff movs r0, 0 - bl EmitHealthBarUpdate + bl BtlController_EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08027180 @ =gUnknown_2023D74 @@ -19232,7 +19232,7 @@ _08027164: .4byte gBattlerTarget _08027168: .4byte gBattlersCount _0802716C: .4byte gBattleMons _08027170: .4byte gActiveBattler -_08027174: .4byte sBattler_AI +_08027174: .4byte gBattlerAttacker _08027178: .4byte gBattleMoveDamage _0802717C: .4byte 0x00007fff _08027180: .4byte gUnknown_2023D74 @@ -19273,7 +19273,7 @@ atk79_setatkhptozero: @ 80271C0 cmp r3, 0 bne _08027204 ldr r4, _08027210 @ =gActiveBattler - ldr r0, _08027214 @ =sBattler_AI + ldr r0, _08027214 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldr r1, _08027218 @ =gBattleMons @@ -19291,7 +19291,7 @@ atk79_setatkhptozero: @ 80271C0 movs r1, 0x2A movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802721C @ =gUnknown_2023D74 @@ -19306,7 +19306,7 @@ _08027204: .align 2, 0 _0802720C: .4byte gBattleControllerExecFlags _08027210: .4byte gActiveBattler -_08027214: .4byte sBattler_AI +_08027214: .4byte gBattlerAttacker _08027218: .4byte gBattleMons _0802721C: .4byte gUnknown_2023D74 thumb_func_end atk79_setatkhptozero @@ -19337,7 +19337,7 @@ atk7A_jumpifnexttargetvalid: @ 8027220 ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] - ldr r2, _080272A4 @ =sBattler_AI + ldr r2, _080272A4 @ =gBattlerAttacker lsls r1, 24 lsrs r1, 24 adds r3, r0, 0 @@ -19379,7 +19379,7 @@ _08027276: _08027298: .4byte gUnknown_2023D74 _0802729C: .4byte gBattleTypeFlags _080272A0: .4byte gBattlerTarget -_080272A4: .4byte sBattler_AI +_080272A4: .4byte gBattlerAttacker _080272A8: .4byte gAbsentBattlerFlags _080272AC: .4byte gBitTable _080272B0: .4byte gBattlersCount @@ -19414,7 +19414,7 @@ atk7B_tryhealhalfhealth: @ 80272C4 ldr r3, _08027324 @ =gBattlerTarget cmp r0, 0x1 bne _080272EC - ldr r0, _08027328 @ =sBattler_AI + ldr r0, _08027328 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r3] _080272EC: @@ -19447,7 +19447,7 @@ _08027306: .align 2, 0 _08027320: .4byte gUnknown_2023D74 _08027324: .4byte gBattlerTarget -_08027328: .4byte sBattler_AI +_08027328: .4byte gBattlerAttacker _0802732C: .4byte gBattleMoveDamage _08027330: .4byte gBattleMons _08027334: @@ -19484,7 +19484,7 @@ _08027356: ldrb r1, [r2] cmp r5, r1 bge _080273AC - ldr r0, _080273E8 @ =sBattler_AI + ldr r0, _080273E8 @ =gBattlerAttacker ldrb r6, [r0] ldr r2, _080273EC @ =0x0000ffff mov r9, r2 @@ -19520,7 +19520,7 @@ _080273A4: cmp r5, r7 blt _0802737C _080273AC: - ldr r1, _080273E8 @ =sBattler_AI + ldr r1, _080273E8 @ =gBattlerAttacker ldrb r0, [r1] mov r2, r10 ldr r1, [r2] @@ -19549,7 +19549,7 @@ _080273AC: .align 2, 0 _080273E0: .4byte gBattlersCount _080273E4: .4byte gBattleStruct -_080273E8: .4byte sBattler_AI +_080273E8: .4byte gBattlerAttacker _080273EC: .4byte 0x0000ffff _080273F0: .4byte gUnknown_2023DD0 _080273F4: .4byte 0xfffffbff @@ -19604,7 +19604,7 @@ _08027464: .4byte gUnknown_81D65A8 _08027468: .4byte gBattleMoves _0802746C: ldr r2, _0802749C @ =gUnknown_2023ECC - ldr r0, _080274A0 @ =sBattler_AI + ldr r0, _080274A0 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 @@ -19629,7 +19629,7 @@ _0802748A: bx r0 .align 2, 0 _0802749C: .4byte gUnknown_2023ECC -_080274A0: .4byte sBattler_AI +_080274A0: .4byte gBattlerAttacker _080274A4: .4byte gUnknown_2023D74 thumb_func_end atk7C_trymirrormove @@ -19680,7 +19680,7 @@ _080274F8: .4byte gUnknown_2023D74 thumb_func_start atk7E_setreflect atk7E_setreflect: @ 80274FC push {r4-r6,lr} - ldr r6, _0802752C @ =sBattler_AI + ldr r6, _0802752C @ =gBattlerAttacker ldrb r0, [r6] bl GetBattlerPosition ldr r4, _08027530 @ =gSideAffecting @@ -19703,7 +19703,7 @@ atk7E_setreflect: @ 80274FC movs r0, 0 b _080275B0 .align 2, 0 -_0802752C: .4byte sBattler_AI +_0802752C: .4byte gBattlerAttacker _08027530: .4byte gSideAffecting _08027534: .4byte gMoveResultFlags _08027538: .4byte gUnknown_2023E82 @@ -19842,7 +19842,7 @@ _08027634: _08027644: .4byte gBattleMons _08027648: .4byte gUnknown_2023E82 _0802764C: - ldr r0, _0802767C @ =sBattler_AI + ldr r0, _0802767C @ =gBattlerAttacker ldrb r0, [r0] orrs r2, r0 str r2, [r6] @@ -19868,7 +19868,7 @@ _08027668: pop {r0} bx r0 .align 2, 0 -_0802767C: .4byte sBattler_AI +_0802767C: .4byte gBattlerAttacker _08027680: .4byte gUnknown_2023E82 _08027684: .4byte gUnknown_2023D74 thumb_func_end atk7F_setseeded @@ -19964,7 +19964,7 @@ atk81_trysetrest: @ 8027708 orrs r6, r0 ldr r5, _08027764 @ =gActiveBattler ldr r2, _08027768 @ =gBattlerTarget - ldr r0, _0802776C @ =sBattler_AI + ldr r0, _0802776C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r2] strb r0, [r5] @@ -19995,7 +19995,7 @@ atk81_trysetrest: @ 8027708 _08027760: .4byte gUnknown_2023D74 _08027764: .4byte gActiveBattler _08027768: .4byte gBattlerTarget -_0802776C: .4byte sBattler_AI +_0802776C: .4byte gBattlerAttacker _08027770: .4byte gBattleMoveDamage _08027774: .4byte gBattleMons _08027778: @@ -20032,7 +20032,7 @@ _08027798: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r1, _080277D4 @ =gUnknown_2023D74 @@ -20065,7 +20065,7 @@ atk82_jumpifnotfirstturn: @ 80277D8 lsls r0, 24 orrs r3, r0 ldr r2, _08027810 @ =gDisableStructs - ldr r0, _08027814 @ =sBattler_AI + ldr r0, _08027814 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 @@ -20080,7 +20080,7 @@ atk82_jumpifnotfirstturn: @ 80277D8 .align 2, 0 _0802780C: .4byte gUnknown_2023D74 _08027810: .4byte gDisableStructs -_08027814: .4byte sBattler_AI +_08027814: .4byte gBattlerAttacker _08027818: str r3, [r5] _0802781A: @@ -20252,7 +20252,7 @@ _08027942: atk85_stockpile: @ 8027948 push {r4,r5,lr} ldr r5, _08027970 @ =gDisableStructs - ldr r4, _08027974 @ =sBattler_AI + ldr r4, _08027974 @ =gBattlerAttacker ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 @@ -20272,7 +20272,7 @@ atk85_stockpile: @ 8027948 b _080279AA .align 2, 0 _08027970: .4byte gDisableStructs -_08027974: .4byte sBattler_AI +_08027974: .4byte gBattlerAttacker _08027978: .4byte gMoveResultFlags _0802797C: .4byte gUnknown_2023E82 _08027980: @@ -20330,7 +20330,7 @@ atk86_stockpiletobasedamage: @ 80279C4 lsls r0, 24 orrs r2, r0 ldr r7, _08027A00 @ =gDisableStructs - ldr r6, _08027A04 @ =sBattler_AI + ldr r6, _08027A04 @ =gBattlerAttacker ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 @@ -20344,7 +20344,7 @@ atk86_stockpiletobasedamage: @ 80279C4 .align 2, 0 _080279FC: .4byte gUnknown_2023D74 _08027A00: .4byte gDisableStructs -_08027A04: .4byte sBattler_AI +_08027A04: .4byte gBattlerAttacker _08027A08: ldr r0, _08027AB8 @ =gUnknown_2023E82 ldrb r0, [r0, 0x6] @@ -20413,7 +20413,7 @@ _08027A08: str r0, [r1] _08027A90: ldr r2, _08027AD8 @ =gDisableStructs - ldr r0, _08027ADC @ =sBattler_AI + ldr r0, _08027ADC @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 @@ -20442,7 +20442,7 @@ _08027ACC: .4byte gCurrentMove _08027AD0: .4byte gBattleScripting _08027AD4: .4byte gUnknown_2023E8C _08027AD8: .4byte gDisableStructs -_08027ADC: .4byte sBattler_AI +_08027ADC: .4byte gBattlerAttacker _08027AE0: .4byte gUnknown_2023D74 thumb_func_end atk86_stockpiletobasedamage @@ -20465,7 +20465,7 @@ atk87_stockpiletohpheal: @ 8027AE4 orrs r2, r0 ldr r0, _08027B28 @ =gDisableStructs mov r8, r0 - ldr r6, _08027B2C @ =sBattler_AI + ldr r6, _08027B2C @ =gBattlerAttacker ldrb r3, [r6] lsls r0, r3, 3 subs r0, r3 @@ -20482,7 +20482,7 @@ atk87_stockpiletohpheal: @ 8027AE4 .align 2, 0 _08027B24: .4byte gUnknown_2023D74 _08027B28: .4byte gDisableStructs -_08027B2C: .4byte sBattler_AI +_08027B2C: .4byte gBattlerAttacker _08027B30: .4byte gUnknown_2023E82 _08027B34: ldr r1, _08027B58 @ =gBattleMons @@ -20609,11 +20609,11 @@ ChangeStatBuffs: @ 8027BFC cmp r0, 0 beq _08027C30 ldr r0, _08027C28 @ =gActiveBattler - ldr r1, _08027C2C @ =sBattler_AI + ldr r1, _08027C2C @ =gBattlerAttacker b _08027C34 .align 2, 0 _08027C28: .4byte gActiveBattler -_08027C2C: .4byte sBattler_AI +_08027C2C: .4byte gBattlerAttacker _08027C30: ldr r0, _08027CD4 @ =gActiveBattler ldr r1, _08027CD8 @ =gBattlerTarget @@ -21239,7 +21239,7 @@ _0802811C: .4byte gBattleMons atk8B_setbide: @ 8028120 push {r4,r5,lr} ldr r4, _08028178 @ =gBattleMons - ldr r3, _0802817C @ =sBattler_AI + ldr r3, _0802817C @ =gBattlerAttacker ldrb r0, [r3] movs r5, 0x58 adds r2, r0, 0 @@ -21282,7 +21282,7 @@ atk8B_setbide: @ 8028120 bx r0 .align 2, 0 _08028178: .4byte gBattleMons -_0802817C: .4byte sBattler_AI +_0802817C: .4byte gBattlerAttacker _08028180: .4byte gUnknown_2023DB8 _08028184: .4byte gCurrentMove _08028188: .4byte gUnknown_2023D58 @@ -21293,7 +21293,7 @@ _0802818C: .4byte gUnknown_2023D74 atk8C_confuseifrepeatingattackends: @ 8028190 push {lr} ldr r1, _080281C0 @ =gBattleMons - ldr r0, _080281C4 @ =sBattler_AI + ldr r0, _080281C4 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -21317,7 +21317,7 @@ _080281B2: bx r0 .align 2, 0 _080281C0: .4byte gBattleMons -_080281C4: .4byte sBattler_AI +_080281C4: .4byte gBattlerAttacker _080281C8: .4byte gUnknown_2023E82 _080281CC: .4byte gUnknown_2023D74 thumb_func_end atk8C_confuseifrepeatingattackends @@ -21389,7 +21389,7 @@ _08028240: .4byte gUnknown_2023D74 TryDoForceSwitchOut: @ 8028244 push {r4-r7,lr} ldr r6, _08028278 @ =gBattleMons - ldr r7, _0802827C @ =sBattler_AI + ldr r7, _0802827C @ =gBattlerAttacker ldrb r0, [r7] movs r5, 0x58 adds r1, r0, 0 @@ -21415,7 +21415,7 @@ TryDoForceSwitchOut: @ 8028244 b _080282E8 .align 2, 0 _08028278: .4byte gBattleMons -_0802827C: .4byte sBattler_AI +_0802827C: .4byte gBattlerAttacker _08028280: .4byte gBattlerTarget _08028284: .4byte gBattleStruct _08028288: .4byte gBattlerPartyIndexes @@ -21857,7 +21857,7 @@ atk90_tryconversiontypechange: @ 8028604 push {r5-r7} movs r6, 0 ldr r2, _08028698 @ =gBattleMons - ldr r3, _0802869C @ =sBattler_AI + ldr r3, _0802869C @ =gBattlerAttacker ldrb r1, [r3] movs r0, 0x58 muls r0, r1 @@ -21892,7 +21892,7 @@ _08028646: mov r10, r0 ldr r5, _08028698 @ =gBattleMons mov r12, r5 - ldr r7, _0802869C @ =sBattler_AI + ldr r7, _0802869C @ =gBattlerAttacker ldrb r0, [r7] movs r4, 0x58 adds r5, r0, 0 @@ -21929,7 +21929,7 @@ _08028692: b _080286A6 .align 2, 0 _08028698: .4byte gBattleMons -_0802869C: .4byte sBattler_AI +_0802869C: .4byte gBattlerAttacker _080286A0: .4byte gBattleMoves _080286A4: movs r2, 0 @@ -21983,7 +21983,7 @@ _080286F2: bcs _080286F2 ldr r4, _08028748 @ =gBattleMons lsls r1, r3, 1 - ldr r3, _0802874C @ =sBattler_AI + ldr r3, _0802874C @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 adds r5, r2, 0 @@ -22020,7 +22020,7 @@ _08028740: .align 2, 0 _08028744: .4byte gBattleMoves _08028748: .4byte gBattleMons -_0802874C: .4byte sBattler_AI +_0802874C: .4byte gBattlerAttacker _08028750: movs r2, 0 _08028752: @@ -22142,7 +22142,7 @@ _08028838: .4byte gUnknown_2023D74 thumb_func_start atk92_setlightscreen atk92_setlightscreen: @ 802883C push {r4-r6,lr} - ldr r5, _0802886C @ =sBattler_AI + ldr r5, _0802886C @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition ldr r4, _08028870 @ =gSideAffecting @@ -22165,7 +22165,7 @@ atk92_setlightscreen: @ 802883C movs r0, 0 b _080288F0 .align 2, 0 -_0802886C: .4byte sBattler_AI +_0802886C: .4byte gBattlerAttacker _08028870: .4byte gSideAffecting _08028874: .4byte gMoveResultFlags _08028878: .4byte gUnknown_2023E82 @@ -22360,7 +22360,7 @@ _080289F4: adds r2, r0 lsls r2, 2 adds r2, r1 - ldr r7, _08028A74 @ =sBattler_AI + ldr r7, _08028A74 @ =gBattlerAttacker ldrb r0, [r7] muls r0, r6 add r0, r8 @@ -22406,14 +22406,14 @@ _08028A48: _08028A68: .4byte gStatuses3 _08028A6C: .4byte gBattleMoves _08028A70: .4byte gCurrentMove -_08028A74: .4byte sBattler_AI +_08028A74: .4byte gBattlerAttacker _08028A78: ldr r1, _08028B44 @ =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 - ldr r1, _08028B48 @ =sBattler_AI + ldr r1, _08028B48 @ =gBattlerAttacker ldrb r0, [r0, 0x15] adds r7, r1, 0 ldrb r3, [r7] @@ -22513,7 +22513,7 @@ _08028B1A: b _08028BC6 .align 2, 0 _08028B44: .4byte gDisableStructs -_08028B48: .4byte sBattler_AI +_08028B48: .4byte gBattlerAttacker _08028B4C: .4byte gBattleMoves _08028B50: .4byte gCurrentMove _08028B54: .4byte gBattleMons @@ -22544,7 +22544,7 @@ _08028B68: movs r1, 0x80 orrs r0, r1 strb r0, [r2] - ldr r1, _08028BB0 @ =gUnknown_2023D68 + ldr r1, _08028BB0 @ =gLastUsedItem mov r2, r9 ldrb r0, [r2] muls r0, r3 @@ -22556,7 +22556,7 @@ _08028B68: _08028BA4: .4byte gUnknown_2023ECC _08028BA8: .4byte gBattleMoveDamage _08028BAC: .4byte gMoveResultFlags -_08028BB0: .4byte gUnknown_2023D68 +_08028BB0: .4byte gLastUsedItem _08028BB4: ldr r1, _08028BD4 @ =gBattleMoveDamage movs r0, 0x58 @@ -22587,7 +22587,7 @@ _08028BE0: orrs r0, r1 strb r0, [r2] ldr r3, _08028C18 @ =gBattleMons - ldr r0, _08028C1C @ =sBattler_AI + ldr r0, _08028C1C @ =gBattlerAttacker ldrb r0, [r0] movs r2, 0x58 adds r1, r0, 0 @@ -22609,7 +22609,7 @@ _08028BE0: .align 2, 0 _08028C14: .4byte gMoveResultFlags _08028C18: .4byte gBattleMons -_08028C1C: .4byte sBattler_AI +_08028C1C: .4byte gBattlerAttacker _08028C20: .4byte gBattlerTarget _08028C24: .4byte gUnknown_2023E82 _08028C28: @@ -22731,7 +22731,7 @@ sub_8028CF0: @ 8028CF0 lsls r1, 8 cmp r0, r1 bne _08028D18 - ldr r0, _08028DC0 @ =sBattler_AI + ldr r0, _08028DC0 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -22768,7 +22768,7 @@ _08028D48: ldrh r1, [r2] movs r0, 0x18 ands r0, r1 - ldr r5, _08028DC0 @ =sBattler_AI + ldr r5, _08028DC0 @ =gBattlerAttacker adds r4, r2, 0 cmp r0, 0 beq _08028DDA @@ -22823,7 +22823,7 @@ _08028D48: b _08028DD8 .align 2, 0 _08028DBC: .4byte gBattleTypeFlags -_08028DC0: .4byte sBattler_AI +_08028DC0: .4byte gBattlerAttacker _08028DC4: .4byte gBattleWeather _08028DC8: .4byte gBattleMons _08028DCC: .4byte gStatuses3 @@ -22892,7 +22892,7 @@ _08028E48: ldr r1, _08028E7C @ =gBattleMoveDamage movs r0, 0 str r0, [r1] - ldr r5, _08028E80 @ =sBattler_AI + ldr r5, _08028E80 @ =gBattlerAttacker _08028E50: ldr r0, _08028E84 @ =gAbsentBattlerFlags ldrb r1, [r0] @@ -22919,7 +22919,7 @@ _08028E6A: bx r0 .align 2, 0 _08028E7C: .4byte gBattleMoveDamage -_08028E80: .4byte sBattler_AI +_08028E80: .4byte gBattlerAttacker _08028E84: .4byte gAbsentBattlerFlags _08028E88: .4byte gBitTable _08028E8C: .4byte gUnknown_2023D74 @@ -22932,7 +22932,7 @@ sub_8028E90: @ 8028E90 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r4, _08028EBC @ =sBattler_AI + ldr r4, _08028EBC @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -22948,7 +22948,7 @@ sub_8028E90: @ 8028E90 ldr r0, _08028EC4 @ =gPlayerParty b _08028ED8 .align 2, 0 -_08028EBC: .4byte sBattler_AI +_08028EBC: .4byte gBattlerAttacker _08028EC0: .4byte gBattlerPartyIndexes _08028EC4: .4byte gPlayerParty _08028EC8: @@ -23101,7 +23101,7 @@ _08029008: muls r2, r6 adds r2, r4 ldr r1, _0802903C @ =gBitTable - ldr r0, _08029040 @ =sBattler_AI + ldr r0, _08029040 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r0, r1 @@ -23124,7 +23124,7 @@ _0802902C: bx r0 .align 2, 0 _0802903C: .4byte gBitTable -_08029040: .4byte sBattler_AI +_08029040: .4byte gBattlerAttacker _08029044: .4byte gUnknown_2023D74 thumb_func_end sub_8028E90 @@ -23172,7 +23172,7 @@ _08029074: adds r2, r6 ldr r2, [r2] movs r0, 0 - bl EmitStatusIconUpdate + bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _080290A2: @@ -23198,7 +23198,7 @@ _080290D4: cmp r0, 0x4 bne _0802918C ldr r4, _08029170 @ =gActiveBattler - ldr r5, _08029174 @ =sBattler_AI + ldr r5, _08029174 @ =gBattlerAttacker ldrb r0, [r5] strb r0, [r4] ldr r6, _08029178 @ =gAbsentBattlerFlags @@ -23222,7 +23222,7 @@ _080290D4: adds r2, r3 ldr r2, [r2] movs r0, 0 - bl EmitStatusIconUpdate + bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08029114: @@ -23259,7 +23259,7 @@ _08029114: adds r2, r3 ldr r2, [r2] movs r0, 0 - bl EmitStatusIconUpdate + bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08029164: @@ -23270,7 +23270,7 @@ _08029164: b _080291C0 .align 2, 0 _08029170: .4byte gActiveBattler -_08029174: .4byte sBattler_AI +_08029174: .4byte gBattlerAttacker _08029178: .4byte gAbsentBattlerFlags _0802917C: .4byte gBitTable _08029180: .4byte gBattleMons @@ -23294,7 +23294,7 @@ _0802918C: adds r2, r3 ldr r2, [r2] movs r0, 0 - bl EmitStatusIconUpdate + bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] @@ -23313,7 +23313,7 @@ _080291CC: .4byte gBattleMons atk99_setmist: @ 80291D0 push {r4-r6,lr} ldr r6, _08029200 @ =gSideTimers - ldr r4, _08029204 @ =sBattler_AI + ldr r4, _08029204 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerPosition movs r5, 0x1 @@ -23336,7 +23336,7 @@ atk99_setmist: @ 80291D0 b _0802925E .align 2, 0 _08029200: .4byte gSideTimers -_08029204: .4byte sBattler_AI +_08029204: .4byte gBattlerAttacker _08029208: .4byte gMoveResultFlags _0802920C: .4byte gUnknown_2023E82 _08029210: @@ -23394,7 +23394,7 @@ _08029274: .4byte gUnknown_2023D74 atk9A_setfocusenergy: @ 8029278 push {lr} ldr r1, _080292A8 @ =gBattleMons - ldr r0, _080292AC @ =sBattler_AI + ldr r0, _080292AC @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -23418,7 +23418,7 @@ atk9A_setfocusenergy: @ 8029278 b _080292C0 .align 2, 0 _080292A8: .4byte gBattleMons -_080292AC: .4byte sBattler_AI +_080292AC: .4byte gBattlerAttacker _080292B0: .4byte gMoveResultFlags _080292B4: .4byte gUnknown_2023E82 _080292B8: @@ -23443,7 +23443,7 @@ atk9B_transformdataexecution: @ 80292D4 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r1, _0802932C @ =gUnknown_2023D4C + ldr r1, _0802932C @ =gChosenMove ldr r2, _08029330 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] @@ -23485,7 +23485,7 @@ _0802931A: movs r0, 0x1 b _08029464 .align 2, 0 -_0802932C: .4byte gUnknown_2023D4C +_0802932C: .4byte gChosenMove _08029330: .4byte 0x0000ffff _08029334: .4byte gUnknown_2023D74 _08029338: .4byte gBattleMons @@ -23495,7 +23495,7 @@ _08029344: .4byte 0x000400c0 _08029348: .4byte gMoveResultFlags _0802934C: .4byte gUnknown_2023E82 _08029350: - ldr r3, _08029424 @ =sBattler_AI + ldr r3, _08029424 @ =gBattlerAttacker ldrb r0, [r3] adds r1, r0, 0 muls r1, r6 @@ -23603,7 +23603,7 @@ _08029400: adds r0, r5 b _08029442 .align 2, 0 -_08029424: .4byte sBattler_AI +_08029424: .4byte gBattlerAttacker _08029428: .4byte gDisableStructs _0802942C: .4byte gBattleTextBuff1 _08029430: .4byte gActiveBattler @@ -23623,7 +23623,7 @@ _08029442: strb r0, [r1] movs r0, 0 movs r1, 0x2 - bl EmitResetActionMoveSelection + bl BtlController_EmitResetActionMoveSelection mov r2, r8 ldrb r0, [r2] bl MarkBufferBankForExecution @@ -23644,7 +23644,7 @@ _08029470: .4byte gUnknown_2023E82 atk9C_setsubstitute: @ 8029474 push {r4-r7,lr} ldr r7, _080294A4 @ =gBattleMons - ldr r6, _080294A8 @ =sBattler_AI + ldr r6, _080294A8 @ =gBattlerAttacker ldrb r0, [r6] movs r5, 0x58 muls r0, r5 @@ -23668,7 +23668,7 @@ _0802948E: b _08029508 .align 2, 0 _080294A4: .4byte gBattleMons -_080294A8: .4byte sBattler_AI +_080294A8: .4byte gBattlerAttacker _080294AC: .4byte gBattleMoveDamage _080294B0: .4byte gUnknown_2023E82 _080294B4: @@ -23779,7 +23779,7 @@ atk9D_mimicattackcopy: @ 8029578 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _080295F0 @ =gUnknown_2023D4C + ldr r0, _080295F0 @ =gChosenMove ldr r1, _080295F4 @ =0x0000ffff adds r7, r1, 0 strh r7, [r0] @@ -23794,7 +23794,7 @@ atk9D_mimicattackcopy: @ 8029578 cmp r0, 0 bne _080295D2 ldr r3, _08029600 @ =gBattleMons - ldr r2, _08029604 @ =sBattler_AI + ldr r2, _08029604 @ =gBattlerAttacker ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 @@ -23834,12 +23834,12 @@ _080295D2: str r1, [r3] b _08029744 .align 2, 0 -_080295F0: .4byte gUnknown_2023D4C +_080295F0: .4byte gChosenMove _080295F4: .4byte 0x0000ffff _080295F8: .4byte gLastUsedMove _080295FC: .4byte gBattlerTarget _08029600: .4byte gBattleMons -_08029604: .4byte sBattler_AI +_08029604: .4byte gBattlerAttacker _08029608: .4byte gUnknown_2023D74 _0802960C: movs r2, 0 @@ -24090,7 +24090,7 @@ _080297F8: .4byte gBattlerTarget atk9F_dmgtolevel: @ 80297FC ldr r3, _0802981C @ =gBattleMoveDamage ldr r2, _08029820 @ =gBattleMons - ldr r0, _08029824 @ =sBattler_AI + ldr r0, _08029824 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -24106,7 +24106,7 @@ atk9F_dmgtolevel: @ 80297FC .align 2, 0 _0802981C: .4byte gBattleMoveDamage _08029820: .4byte gBattleMons -_08029824: .4byte sBattler_AI +_08029824: .4byte gBattlerAttacker _08029828: .4byte gUnknown_2023D74 thumb_func_end atk9F_dmgtolevel @@ -24125,7 +24125,7 @@ _08029830: lsls r3, r0, 1 ldr r4, _08029870 @ =gBattleMoveDamage ldr r2, _08029874 @ =gBattleMons - ldr r0, _08029878 @ =sBattler_AI + ldr r0, _08029878 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -24148,14 +24148,14 @@ _08029830: .align 2, 0 _08029870: .4byte gBattleMoveDamage _08029874: .4byte gBattleMons -_08029878: .4byte sBattler_AI +_08029878: .4byte gBattlerAttacker _0802987C: .4byte gUnknown_2023D74 thumb_func_end atkA0_psywavedamageeffect thumb_func_start atkA1_counterdamagecalculator atkA1_counterdamagecalculator: @ 8029880 push {r4-r6,lr} - ldr r4, _080298F0 @ =sBattler_AI + ldr r4, _080298F0 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -24208,7 +24208,7 @@ atkA1_counterdamagecalculator: @ 8029880 strb r1, [r0] b _08029918 .align 2, 0 -_080298F0: .4byte sBattler_AI +_080298F0: .4byte gBattlerAttacker _080298F4: .4byte gUnknown_2023E8C _080298F8: .4byte gBattleMons _080298FC: .4byte gBattleMoveDamage @@ -24217,7 +24217,7 @@ _08029904: .4byte gBattlerTarget _08029908: ldr r2, _08029924 @ =gBattlerTarget ldr r1, _08029928 @ =gUnknown_2023E8C - ldr r0, _0802992C @ =sBattler_AI + ldr r0, _0802992C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -24232,11 +24232,11 @@ _08029918: .align 2, 0 _08029924: .4byte gBattlerTarget _08029928: .4byte gUnknown_2023E8C -_0802992C: .4byte sBattler_AI +_0802992C: .4byte gBattlerAttacker _08029930: .4byte gUnknown_2023D74 _08029934: ldr r2, _0802996C @ =gUnknown_2023ECC - ldr r0, _08029970 @ =sBattler_AI + ldr r0, _08029970 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 @@ -24265,14 +24265,14 @@ _08029964: bx r0 .align 2, 0 _0802996C: .4byte gUnknown_2023ECC -_08029970: .4byte sBattler_AI +_08029970: .4byte gBattlerAttacker _08029974: .4byte gUnknown_2023D74 thumb_func_end atkA1_counterdamagecalculator thumb_func_start atkA2_mirrorcoatdamagecalculator atkA2_mirrorcoatdamagecalculator: @ 8029978 push {r4-r6,lr} - ldr r4, _080299E8 @ =sBattler_AI + ldr r4, _080299E8 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -24326,7 +24326,7 @@ atkA2_mirrorcoatdamagecalculator: @ 8029978 strb r1, [r0] b _08029A10 .align 2, 0 -_080299E8: .4byte sBattler_AI +_080299E8: .4byte gBattlerAttacker _080299EC: .4byte gUnknown_2023E8C _080299F0: .4byte gBattleMons _080299F4: .4byte gBattleMoveDamage @@ -24335,7 +24335,7 @@ _080299FC: .4byte gBattlerTarget _08029A00: ldr r2, _08029A1C @ =gBattlerTarget ldr r1, _08029A20 @ =gUnknown_2023E8C - ldr r0, _08029A24 @ =sBattler_AI + ldr r0, _08029A24 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -24350,11 +24350,11 @@ _08029A10: .align 2, 0 _08029A1C: .4byte gBattlerTarget _08029A20: .4byte gUnknown_2023E8C -_08029A24: .4byte sBattler_AI +_08029A24: .4byte gBattlerAttacker _08029A28: .4byte gUnknown_2023D74 _08029A2C: ldr r2, _08029A64 @ =gUnknown_2023ECC - ldr r0, _08029A68 @ =sBattler_AI + ldr r0, _08029A68 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 @@ -24383,7 +24383,7 @@ _08029A5C: bx r0 .align 2, 0 _08029A64: .4byte gUnknown_2023ECC -_08029A68: .4byte sBattler_AI +_08029A68: .4byte gBattlerAttacker _08029A6C: .4byte gUnknown_2023D74 thumb_func_end atkA2_mirrorcoatdamagecalculator @@ -24728,7 +24728,7 @@ atkA5_painsplitdmgcalc: @ 8029CE8 ands r0, r1 cmp r0, 0 bne _08029D88 - ldr r5, _08029D70 @ =sBattler_AI + ldr r5, _08029D70 @ =gBattlerAttacker ldrb r0, [r5] muls r0, r7 adds r0, r6 @@ -24778,7 +24778,7 @@ atkA5_painsplitdmgcalc: @ 8029CE8 .align 2, 0 _08029D68: .4byte gBattleMons _08029D6C: .4byte gBattlerTarget -_08029D70: .4byte sBattler_AI +_08029D70: .4byte gBattlerAttacker _08029D74: .4byte gBattleMoveDamage _08029D78: .4byte gBattleScripting _08029D7C: .4byte gUnknown_2023ECC @@ -24814,7 +24814,7 @@ atkA6_settypetorandomresistance: @ 8029DAC mov r5, r8 push {r5-r7} ldr r1, _08029E14 @ =gUnknown_2023DA0 - ldr r4, _08029E18 @ =sBattler_AI + ldr r4, _08029E18 @ =gBattlerAttacker ldrb r0, [r4] lsls r0, 1 adds r2, r0, r1 @@ -24861,7 +24861,7 @@ _08029DF6: b _08029F80 .align 2, 0 _08029E14: .4byte gUnknown_2023DA0 -_08029E18: .4byte sBattler_AI +_08029E18: .4byte gBattlerAttacker _08029E1C: .4byte 0x0000ffff _08029E20: .4byte gBattleMons _08029E24: .4byte gUnknown_2023DC0 @@ -24934,7 +24934,7 @@ _08029E9C: ldr r6, _08029F90 @ =gUnknown_824F050 adds r3, r4, r6 ldr r1, _08029F94 @ =gUnknown_2023DA8 - ldr r2, _08029F98 @ =sBattler_AI + ldr r2, _08029F98 @ =gBattlerAttacker ldrb r5, [r2] lsls r0, r5, 1 adds r0, r1 @@ -25052,7 +25052,7 @@ _08029F80: .align 2, 0 _08029F90: .4byte gUnknown_824F050 _08029F94: .4byte gUnknown_2023DA8 -_08029F98: .4byte sBattler_AI +_08029F98: .4byte gBattlerAttacker _08029F9C: .4byte gBattleMons _08029FA0: .4byte 0x000003e7 _08029FA4: .4byte gUnknown_2023D74 @@ -25085,7 +25085,7 @@ atkA7_setalwayshitflag: @ 8029FAC subs r0, r1 lsls r0, 2 adds r0, r2 - ldr r1, _08029FFC @ =sBattler_AI + ldr r1, _08029FFC @ =gBattlerAttacker ldrb r1, [r1] strb r1, [r0, 0x15] ldr r1, _0802A000 @ =gUnknown_2023D74 @@ -25099,7 +25099,7 @@ atkA7_setalwayshitflag: @ 8029FAC _08029FF0: .4byte gStatuses3 _08029FF4: .4byte gBattlerTarget _08029FF8: .4byte gDisableStructs -_08029FFC: .4byte sBattler_AI +_08029FFC: .4byte gBattlerAttacker _0802A000: .4byte gUnknown_2023D74 thumb_func_end atkA7_setalwayshitflag @@ -25111,12 +25111,12 @@ atkA8_copymovepermanently: @ 802A004 mov r5, r8 push {r5-r7} sub sp, 0x14 - ldr r0, _0802A164 @ =gUnknown_2023D4C + ldr r0, _0802A164 @ =gChosenMove ldr r1, _0802A168 @ =0x0000ffff adds r5, r1, 0 strh r5, [r0] ldr r3, _0802A16C @ =gBattleMons - ldr r2, _0802A170 @ =sBattler_AI + ldr r2, _0802A170 @ =gBattlerAttacker ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 @@ -25260,7 +25260,7 @@ _0802A0F2: movs r1, 0x3 movs r2, 0 movs r3, 0x10 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldr r0, _0802A184 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -25290,10 +25290,10 @@ _0802A0F2: str r0, [r1] b _0802A1AA .align 2, 0 -_0802A164: .4byte gUnknown_2023D4C +_0802A164: .4byte gChosenMove _0802A168: .4byte 0x0000ffff _0802A16C: .4byte gBattleMons -_0802A170: .4byte sBattler_AI +_0802A170: .4byte gBattlerAttacker _0802A174: .4byte gUnknown_2023D90 _0802A178: .4byte gBattlerTarget _0802A17C: .4byte gUnknown_2023D48 @@ -25458,7 +25458,7 @@ atkA9_trychoosesleeptalkmove: @ 802A290 push {r5-r7} movs r6, 0 movs r5, 0 - ldr r0, _0802A320 @ =sBattler_AI + ldr r0, _0802A320 @ =gBattlerAttacker mov r9, r0 movs r1, 0x58 mov r8, r1 @@ -25509,7 +25509,7 @@ _0802A2FC: adds r5, 0x1 cmp r5, 0x3 ble _0802A2AE - ldr r0, _0802A320 @ =sBattler_AI + ldr r0, _0802A320 @ =gBattlerAttacker ldrb r0, [r0] adds r1, r6, 0 movs r2, 0xFD @@ -25524,7 +25524,7 @@ _0802A2FC: str r0, [r1] b _0802A394 .align 2, 0 -_0802A320: .4byte sBattler_AI +_0802A320: .4byte gBattlerAttacker _0802A324: .4byte gUnknown_2023BF0 _0802A328: .4byte gBitTable _0802A32C: .4byte gUnknown_2023D74 @@ -25544,7 +25544,7 @@ _0802A334: ldr r4, _0802A3A8 @ =gUnknown_2023D4E ldr r2, _0802A3AC @ =gBattleMons lsls r1, r5, 1 - ldr r0, _0802A3B0 @ =sBattler_AI + ldr r0, _0802A3B0 @ =gBattlerAttacker ldrb r3, [r0] movs r0, 0x58 muls r0, r3 @@ -25590,7 +25590,7 @@ _0802A394: _0802A3A4: .4byte gBitTable _0802A3A8: .4byte gUnknown_2023D4E _0802A3AC: .4byte gBattleMons -_0802A3B0: .4byte sBattler_AI +_0802A3B0: .4byte gBattlerAttacker _0802A3B4: .4byte gUnknown_2023D48 _0802A3B8: .4byte gUnknown_2023DD0 _0802A3BC: .4byte 0xfffffbff @@ -25601,7 +25601,7 @@ _0802A3C4: .4byte gUnknown_2023D74 thumb_func_start atkAA_setdestinybond atkAA_setdestinybond: @ 802A3C8 ldr r1, _0802A3EC @ =gBattleMons - ldr r0, _0802A3F0 @ =sBattler_AI + ldr r0, _0802A3F0 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 @@ -25619,14 +25619,14 @@ atkAA_setdestinybond: @ 802A3C8 bx lr .align 2, 0 _0802A3EC: .4byte gBattleMons -_0802A3F0: .4byte sBattler_AI +_0802A3F0: .4byte gBattlerAttacker _0802A3F4: .4byte gUnknown_2023D74 thumb_func_end atkAA_setdestinybond thumb_func_start TrySetDestinyBondToHappen TrySetDestinyBondToHappen: @ 802A3F8 push {r4,r5,lr} - ldr r0, _0802A448 @ =sBattler_AI + ldr r0, _0802A448 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -25665,7 +25665,7 @@ _0802A442: pop {r0} bx r0 .align 2, 0 -_0802A448: .4byte sBattler_AI +_0802A448: .4byte gBattlerAttacker _0802A44C: .4byte gBattlerTarget _0802A450: .4byte gBattleMons _0802A454: .4byte gUnknown_2023DD0 @@ -25689,7 +25689,7 @@ _0802A46C: .4byte gUnknown_2023D74 atkAC_remaininghptopower: @ 802A470 push {lr} ldr r2, _0802A4C4 @ =gBattleMons - ldr r0, _0802A4C8 @ =sBattler_AI + ldr r0, _0802A4C8 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -25731,7 +25731,7 @@ _0802A4AA: bx r0 .align 2, 0 _0802A4C4: .4byte gBattleMons -_0802A4C8: .4byte sBattler_AI +_0802A4C8: .4byte gBattlerAttacker _0802A4CC: .4byte gUnknown_8250810 _0802A4D0: .4byte gDynamicBasePower _0802A4D4: .4byte gUnknown_2023D74 @@ -25911,7 +25911,7 @@ _0802A57C: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802A630: @@ -25991,7 +25991,7 @@ _0802A6CC: ldr r6, _0802A724 @ =gUnknown_2023E82 mov r0, r8 strb r0, [r6, 0x5] - ldr r5, _0802A728 @ =sBattler_AI + ldr r5, _0802A728 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 @@ -26032,7 +26032,7 @@ _0802A6E8: .align 2, 0 _0802A720: .4byte gCurrentMove _0802A724: .4byte gUnknown_2023E82 -_0802A728: .4byte sBattler_AI +_0802A728: .4byte gBattlerAttacker _0802A72C: .4byte gEnemyParty _0802A730: .4byte gPlayerParty _0802A734: .4byte gBattleMons @@ -26047,7 +26047,7 @@ _0802A73C: strb r0, [r6, 0x5] _0802A74C: ldr r7, _0802A7C0 @ =gActiveBattler - ldr r0, _0802A7C4 @ =sBattler_AI + ldr r0, _0802A7C4 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition movs r2, 0x2 @@ -26103,7 +26103,7 @@ _0802A74C: b _0802A7F2 .align 2, 0 _0802A7C0: .4byte gActiveBattler -_0802A7C4: .4byte sBattler_AI +_0802A7C4: .4byte gBattlerAttacker _0802A7C8: .4byte gBattleScripting _0802A7CC: .4byte gBattleTypeFlags _0802A7D0: .4byte gAbsentBattlerFlags @@ -26144,7 +26144,7 @@ _0802A7F6: cmp r5, r0 beq _0802A8AE ldr r2, _0802A840 @ =gBattlerPartyIndexes - ldr r0, _0802A844 @ =sBattler_AI + ldr r0, _0802A844 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 @@ -26158,7 +26158,7 @@ _0802A7F6: _0802A838: .4byte gUnknown_2023E82 _0802A83C: .4byte gBattleMons _0802A840: .4byte gBattlerPartyIndexes -_0802A844: .4byte sBattler_AI +_0802A844: .4byte gBattlerAttacker _0802A848: ldr r0, _0802A880 @ =gBattleTypeFlags ldr r0, [r0] @@ -26222,7 +26222,7 @@ _0802A8B6: movs r2, 0x3F mov r8, r2 ldr r3, _0802A974 @ =gBattleMons - ldr r2, _0802A978 @ =sBattler_AI + ldr r2, _0802A978 @ =gBattlerAttacker ldrb r0, [r2] movs r5, 0x58 muls r0, r5 @@ -26282,7 +26282,7 @@ _0802A934: cmp r2, 0 beq _0802A956 ldr r4, _0802A980 @ =gActiveBattler - ldr r0, _0802A978 @ =sBattler_AI + ldr r0, _0802A978 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] add r0, sp, 0x4 @@ -26290,7 +26290,7 @@ _0802A934: movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802A956: @@ -26309,7 +26309,7 @@ _0802A956: .align 2, 0 _0802A970: .4byte gUnknown_2023E82 _0802A974: .4byte gBattleMons -_0802A978: .4byte sBattler_AI +_0802A978: .4byte gBattlerAttacker _0802A97C: .4byte 0xf7ffffff _0802A980: .4byte gActiveBattler _0802A984: .4byte gBattleTypeFlags @@ -26359,7 +26359,7 @@ _0802A9E0: orrs r2, r3 str r2, [r1] ldr r1, _0802AA0C @ =gBattleMoveDamage - ldr r0, _0802AA10 @ =sBattler_AI + ldr r0, _0802AA10 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r4 adds r0, r5 @@ -26381,14 +26381,14 @@ _0802AA04: bx r0 .align 2, 0 _0802AA0C: .4byte gBattleMoveDamage -_0802AA10: .4byte sBattler_AI +_0802AA10: .4byte gBattlerAttacker _0802AA14: .4byte gUnknown_2023D74 thumb_func_end atkAF_cursetarget thumb_func_start atkB0_trysetspikes atkB0_trysetspikes: @ 802AA18 push {r4,lr} - ldr r4, _0802AA6C @ =sBattler_AI + ldr r4, _0802AA6C @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide movs r1, 0x1 @@ -26428,7 +26428,7 @@ atkB0_trysetspikes: @ 802AA18 str r1, [r3] b _0802AA96 .align 2, 0 -_0802AA6C: .4byte sBattler_AI +_0802AA6C: .4byte gBattlerAttacker _0802AA70: .4byte gSideTimers _0802AA74: .4byte gUnknown_2023ECC _0802AA78: .4byte gUnknown_2023D74 @@ -26490,7 +26490,7 @@ atkB2_trysetperishsong: @ 802AAD4 movs r3, 0 ldr r0, _0802AB18 @ =gBattlersCount adds r7, r0, 0 - ldr r0, _0802AB1C @ =sBattler_AI + ldr r0, _0802AB1C @ =gBattlerAttacker mov r8, r0 ldrb r1, [r7] cmp r6, r1 @@ -26520,7 +26520,7 @@ _0802AB14: b _0802AB34 .align 2, 0 _0802AB18: .4byte gBattlersCount -_0802AB1C: .4byte sBattler_AI +_0802AB1C: .4byte gBattlerAttacker _0802AB20: .4byte gBattleMons _0802AB24: .4byte gDisableStructs _0802AB28: .4byte gStatuses3 @@ -26589,7 +26589,7 @@ atkB3_rolloutdamagecalculation: @ 802AB8C ands r0, r1 cmp r0, 0 beq _0802ABC0 - ldr r0, _0802ABB4 @ =sBattler_AI + ldr r0, _0802ABB4 @ =gBattlerAttacker ldrb r0, [r0] bl CancelMultiTurnMoves ldr r1, _0802ABB8 @ =gUnknown_2023D74 @@ -26598,12 +26598,12 @@ atkB3_rolloutdamagecalculation: @ 802AB8C b _0802ACD8 .align 2, 0 _0802ABB0: .4byte gMoveResultFlags -_0802ABB4: .4byte sBattler_AI +_0802ABB4: .4byte gBattlerAttacker _0802ABB8: .4byte gUnknown_2023D74 _0802ABBC: .4byte gUnknown_81D6960 _0802ABC0: ldr r2, _0802ACE4 @ =gBattleMons - ldr r1, _0802ACE8 @ =sBattler_AI + ldr r1, _0802ACE8 @ =gBattlerAttacker ldrb r3, [r1] movs r5, 0x58 adds r0, r3, 0 @@ -26756,7 +26756,7 @@ _0802ACD8: bx r0 .align 2, 0 _0802ACE4: .4byte gBattleMons -_0802ACE8: .4byte sBattler_AI +_0802ACE8: .4byte gBattlerAttacker _0802ACEC: .4byte gDisableStructs _0802ACF0: .4byte gCurrentMove _0802ACF4: .4byte gUnknown_2023DB8 @@ -26831,7 +26831,7 @@ atkB5_furycuttercalc: @ 802AD70 cmp r0, 0 beq _0802ADAC ldr r2, _0802AD9C @ =gDisableStructs - ldr r0, _0802ADA0 @ =sBattler_AI + ldr r0, _0802ADA0 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 @@ -26846,12 +26846,12 @@ atkB5_furycuttercalc: @ 802AD70 .align 2, 0 _0802AD98: .4byte gMoveResultFlags _0802AD9C: .4byte gDisableStructs -_0802ADA0: .4byte sBattler_AI +_0802ADA0: .4byte gBattlerAttacker _0802ADA4: .4byte gUnknown_2023D74 _0802ADA8: .4byte gUnknown_81D6960 _0802ADAC: ldr r5, _0802AE0C @ =gDisableStructs - ldr r4, _0802AE10 @ =sBattler_AI + ldr r4, _0802AE10 @ =gBattlerAttacker ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 @@ -26903,7 +26903,7 @@ _0802AE04: bx r0 .align 2, 0 _0802AE0C: .4byte gDisableStructs -_0802AE10: .4byte sBattler_AI +_0802AE10: .4byte gBattlerAttacker _0802AE14: .4byte gDynamicBasePower _0802AE18: .4byte gBattleMoves _0802AE1C: .4byte gCurrentMove @@ -26925,7 +26925,7 @@ atkB6_happinesstodamagecalculation: @ 802AE24 bne _0802AE64 ldr r4, _0802AE58 @ =gDynamicBasePower ldr r2, _0802AE5C @ =gBattleMons - ldr r0, _0802AE60 @ =sBattler_AI + ldr r0, _0802AE60 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -26938,11 +26938,11 @@ _0802AE50: .4byte gBattleMoves _0802AE54: .4byte gCurrentMove _0802AE58: .4byte gDynamicBasePower _0802AE5C: .4byte gBattleMons -_0802AE60: .4byte sBattler_AI +_0802AE60: .4byte gBattlerAttacker _0802AE64: ldr r4, _0802AE98 @ =gDynamicBasePower ldr r2, _0802AE9C @ =gBattleMons - ldr r0, _0802AEA0 @ =sBattler_AI + ldr r0, _0802AEA0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -26968,7 +26968,7 @@ _0802AE7A: .align 2, 0 _0802AE98: .4byte gDynamicBasePower _0802AE9C: .4byte gBattleMons -_0802AEA0: .4byte sBattler_AI +_0802AEA0: .4byte gBattlerAttacker _0802AEA4: .4byte gUnknown_2023D74 thumb_func_end atkB6_happinesstodamagecalculation @@ -27076,7 +27076,7 @@ _0802AF70: .4byte gUnknown_81D7DB7 thumb_func_start atkB8_setsafeguard atkB8_setsafeguard: @ 802AF74 push {r4-r7,lr} - ldr r7, _0802AFA8 @ =sBattler_AI + ldr r7, _0802AFA8 @ =gBattlerAttacker ldrb r0, [r7] bl GetBattlerPosition ldr r4, _0802AFAC @ =gSideAffecting @@ -27100,7 +27100,7 @@ atkB8_setsafeguard: @ 802AF74 strb r0, [r1, 0x5] b _0802B000 .align 2, 0 -_0802AFA8: .4byte sBattler_AI +_0802AFA8: .4byte gBattlerAttacker _0802AFAC: .4byte gSideAffecting _0802AFB0: .4byte gMoveResultFlags _0802AFB4: .4byte gUnknown_2023E82 @@ -27251,7 +27251,7 @@ _0802B0B4: cmp r2, r3 bcs _0802B10C adds r4, r6, 0 - ldr r0, _0802B134 @ =sBattler_AI + ldr r0, _0802B134 @ =gBattlerAttacker ldrb r5, [r0] ldr r1, _0802B138 @ =gBitTable mov r12, r1 @@ -27291,7 +27291,7 @@ _0802B124: .4byte gBattleTextBuff1 _0802B128: .4byte gBattlerTarget _0802B12C: .4byte gBattlersCount _0802B130: .4byte gUnknown_2023D74 -_0802B134: .4byte sBattler_AI +_0802B134: .4byte gBattlerAttacker _0802B138: .4byte gBitTable _0802B13C: .4byte gAbsentBattlerFlags thumb_func_end atkB9_magnitudedamagecalculation @@ -27307,7 +27307,7 @@ atkBA_jumpifnopursuitswitchdmg: @ 802B140 ldrb r0, [r0] cmp r0, 0x1 bne _0802B170 - ldr r0, _0802B168 @ =sBattler_AI + ldr r0, _0802B168 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -27317,12 +27317,12 @@ atkBA_jumpifnopursuitswitchdmg: @ 802B140 b _0802B18A .align 2, 0 _0802B164: .4byte gUnknown_2023D72 -_0802B168: .4byte sBattler_AI +_0802B168: .4byte gBattlerAttacker _0802B16C: movs r0, 0 b _0802B18A _0802B170: - ldr r0, _0802B184 @ =sBattler_AI + ldr r0, _0802B184 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -27331,7 +27331,7 @@ _0802B170: movs r0, 0x3 b _0802B18A .align 2, 0 -_0802B184: .4byte sBattler_AI +_0802B184: .4byte gBattlerAttacker _0802B188: movs r0, 0x2 _0802B18A: @@ -27347,7 +27347,7 @@ _0802B18A: beq _0802B1A2 b _0802B2A8 _0802B1A2: - ldr r5, _0802B26C @ =sBattler_AI + ldr r5, _0802B26C @ =gBattlerAttacker ldr r0, _0802B270 @ =gBattleStruct ldr r1, [r0] adds r1, r3, r1 @@ -27450,7 +27450,7 @@ _0802B22E: .align 2, 0 _0802B264: .4byte gBattlerTarget _0802B268: .4byte gUnknown_2023D7C -_0802B26C: .4byte sBattler_AI +_0802B26C: .4byte gBattlerAttacker _0802B270: .4byte gBattleStruct _0802B274: .4byte gBattleMons _0802B278: .4byte gDisableStructs @@ -27540,7 +27540,7 @@ _0802B328: .4byte gUnknown_2023D74 atkBC_maxattackhalvehp: @ 802B32C push {r4,r5,lr} ldr r5, _0802B378 @ =gBattleMons - ldr r4, _0802B37C @ =sBattler_AI + ldr r4, _0802B37C @ =gBattlerAttacker ldrb r0, [r4] movs r3, 0x58 muls r0, r3 @@ -27579,7 +27579,7 @@ _0802B36C: b _0802B3A2 .align 2, 0 _0802B378: .4byte gBattleMons -_0802B37C: .4byte sBattler_AI +_0802B37C: .4byte gBattlerAttacker _0802B380: .4byte gBattleMoveDamage _0802B384: .4byte gUnknown_2023D74 _0802B388: @@ -27609,7 +27609,7 @@ atkBD_copyfoestats: @ 802B3AC push {r4-r7,lr} movs r2, 0 ldr r7, _0802B3E4 @ =gUnknown_2023D74 - ldr r6, _0802B3E8 @ =sBattler_AI + ldr r6, _0802B3E8 @ =gBattlerAttacker movs r4, 0x58 ldr r3, _0802B3EC @ =gUnknown_2023BFC ldr r5, _0802B3F0 @ =gBattlerTarget @@ -27636,7 +27636,7 @@ _0802B3BA: bx r0 .align 2, 0 _0802B3E4: .4byte gUnknown_2023D74 -_0802B3E8: .4byte sBattler_AI +_0802B3E8: .4byte gBattlerAttacker _0802B3EC: .4byte gUnknown_2023BFC _0802B3F0: .4byte gBattlerTarget thumb_func_end atkBD_copyfoestats @@ -27645,7 +27645,7 @@ _0802B3F0: .4byte gBattlerTarget atkBE_rapidspinfree: @ 802B3F4 push {r4-r6,lr} ldr r1, _0802B464 @ =gBattleMons - ldr r5, _0802B468 @ =sBattler_AI + ldr r5, _0802B468 @ =gBattlerAttacker ldrb r2, [r5] movs r6, 0x58 adds r0, r2, 0 @@ -27700,7 +27700,7 @@ atkBE_rapidspinfree: @ 802B3F4 b _0802B532 .align 2, 0 _0802B464: .4byte gBattleMons -_0802B468: .4byte sBattler_AI +_0802B468: .4byte gBattlerAttacker _0802B46C: .4byte gBattleScripting _0802B470: .4byte gBattlerTarget _0802B474: .4byte 0xffff1fff @@ -27795,7 +27795,7 @@ _0802B53C: .4byte gUnknown_2023D74 thumb_func_start atkBF_setdefensecurlbit atkBF_setdefensecurlbit: @ 802B540 ldr r1, _0802B564 @ =gBattleMons - ldr r0, _0802B568 @ =sBattler_AI + ldr r0, _0802B568 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 @@ -27813,7 +27813,7 @@ atkBF_setdefensecurlbit: @ 802B540 bx lr .align 2, 0 _0802B564: .4byte gBattleMons -_0802B568: .4byte sBattler_AI +_0802B568: .4byte gBattlerAttacker _0802B56C: .4byte gUnknown_2023D74 thumb_func_end atkBF_setdefensecurlbit @@ -27822,7 +27822,7 @@ atkC0_recoverbasedonsunlight: @ 802B570 push {r4-r7,lr} sub sp, 0x4 ldr r1, _0802B5DC @ =gBattlerTarget - ldr r5, _0802B5E0 @ =sBattler_AI + ldr r5, _0802B5E0 @ =gBattlerAttacker ldrb r0, [r5] strb r0, [r1] ldr r7, _0802B5E4 @ =gBattleMons @@ -27861,7 +27861,7 @@ atkC0_recoverbasedonsunlight: @ 802B570 _0802B5C2: ldr r3, _0802B5EC @ =gBattleMoveDamage ldr r2, _0802B5E4 @ =gBattleMons - ldr r0, _0802B5E0 @ =sBattler_AI + ldr r0, _0802B5E0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 @@ -27873,7 +27873,7 @@ _0802B5C2: b _0802B62A .align 2, 0 _0802B5DC: .4byte gBattlerTarget -_0802B5E0: .4byte sBattler_AI +_0802B5E0: .4byte gBattlerAttacker _0802B5E4: .4byte gBattleMons _0802B5E8: .4byte gBattleWeather _0802B5EC: .4byte gBattleMoveDamage @@ -27955,7 +27955,7 @@ sub_802B678: @ 802B678 mov r6, r8 push {r6,r7} ldr r2, _0802B760 @ =gBattleMons - ldr r0, _0802B764 @ =sBattler_AI + ldr r0, _0802B764 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -28067,7 +28067,7 @@ _0802B742: bx r0 .align 2, 0 _0802B760: .4byte gBattleMons -_0802B764: .4byte sBattler_AI +_0802B764: .4byte gBattlerAttacker _0802B768: .4byte gDynamicBasePower _0802B76C: .4byte gBattleStruct _0802B770: .4byte gUnknown_2023D74 @@ -28089,7 +28089,7 @@ atkC2_selectfirstvalidtarget: @ 802B774 cmp r1, 0 beq _0802B7BE adds r3, r6, 0 - ldr r0, _0802B7DC @ =sBattler_AI + ldr r0, _0802B7DC @ =gBattlerAttacker ldrb r5, [r0] ldr r0, _0802B7E0 @ =gBitTable mov r12, r0 @@ -28128,7 +28128,7 @@ _0802B7BE: _0802B7D0: .4byte gBattlerTarget _0802B7D4: .4byte gBattlersCount _0802B7D8: .4byte gUnknown_2023D74 -_0802B7DC: .4byte sBattler_AI +_0802B7DC: .4byte gBattlerAttacker _0802B7E0: .4byte gBitTable _0802B7E4: .4byte gAbsentBattlerFlags thumb_func_end atkC2_selectfirstvalidtarget @@ -28180,7 +28180,7 @@ _0802B82C: adds r0, 0x4 ldrb r4, [r7] adds r0, r4 - ldr r5, _0802B8D0 @ =sBattler_AI + ldr r5, _0802B8D0 @ =gBattlerAttacker ldrb r1, [r5] strb r1, [r0] ldrb r0, [r7] @@ -28248,7 +28248,7 @@ _0802B8BA: b _0802B8EE .align 2, 0 _0802B8CC: .4byte gCurrentMove -_0802B8D0: .4byte sBattler_AI +_0802B8D0: .4byte gBattlerAttacker _0802B8D4: .4byte gSideAffecting _0802B8D8: .4byte gBattleMons _0802B8DC: .4byte gUnknown_2023E8C @@ -28283,7 +28283,7 @@ atkC4_trydobeatup: @ 802B910 mov r7, r9 mov r6, r8 push {r6,r7} - ldr r0, _0802B954 @ =sBattler_AI + ldr r0, _0802B954 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -28313,7 +28313,7 @@ _0802B92A: ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 -_0802B954: .4byte sBattler_AI +_0802B954: .4byte gBattlerAttacker _0802B958: .4byte gEnemyParty _0802B95C: .4byte gPlayerParty _0802B960: .4byte gBattleMons @@ -28380,7 +28380,7 @@ _0802B9D0: strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] - ldr r6, _0802BAB0 @ =sBattler_AI + ldr r6, _0802BAB0 @ =gBattlerAttacker ldrb r0, [r6] strb r0, [r1, 0x2] strb r2, [r1, 0x3] @@ -28475,7 +28475,7 @@ _0802BA9C: .align 2, 0 _0802BAA8: .4byte gUnknown_2023E82 _0802BAAC: .4byte gBattleTextBuff1 -_0802BAB0: .4byte sBattler_AI +_0802BAB0: .4byte gBattlerAttacker _0802BAB4: .4byte gUnknown_2023D74 _0802BAB8: .4byte gBattleMoveDamage _0802BABC: .4byte gBaseStats @@ -28550,7 +28550,7 @@ _0802BB38: bne _0802BB8C _0802BB44: ldr r2, _0802BB58 @ =gStatuses3 - ldr r0, _0802BB5C @ =sBattler_AI + ldr r0, _0802BB5C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28560,10 +28560,10 @@ _0802BB44: .align 2, 0 _0802BB54: .4byte 0x00000123 _0802BB58: .4byte gStatuses3 -_0802BB5C: .4byte sBattler_AI +_0802BB5C: .4byte gBattlerAttacker _0802BB60: ldr r2, _0802BB70 @ =gStatuses3 - ldr r0, _0802BB74 @ =sBattler_AI + ldr r0, _0802BB74 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28572,10 +28572,10 @@ _0802BB60: b _0802BB88 .align 2, 0 _0802BB70: .4byte gStatuses3 -_0802BB74: .4byte sBattler_AI +_0802BB74: .4byte gBattlerAttacker _0802BB78: ldr r2, _0802BB98 @ =gStatuses3 - ldr r0, _0802BB9C @ =sBattler_AI + ldr r0, _0802BB9C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28594,7 +28594,7 @@ _0802BB8C: bx r0 .align 2, 0 _0802BB98: .4byte gStatuses3 -_0802BB9C: .4byte sBattler_AI +_0802BB9C: .4byte gBattlerAttacker _0802BBA0: .4byte gUnknown_2023D74 thumb_func_end atkC5_setsemiinvulnerablebit @@ -28621,7 +28621,7 @@ _0802BBBC: bne _0802BC16 _0802BBC8: ldr r2, _0802BBE0 @ =gStatuses3 - ldr r0, _0802BBE4 @ =sBattler_AI + ldr r0, _0802BBE4 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28632,10 +28632,10 @@ _0802BBC8: .align 2, 0 _0802BBDC: .4byte 0x00000123 _0802BBE0: .4byte gStatuses3 -_0802BBE4: .4byte sBattler_AI +_0802BBE4: .4byte gBattlerAttacker _0802BBE8: ldr r2, _0802BBFC @ =gStatuses3 - ldr r0, _0802BC00 @ =sBattler_AI + ldr r0, _0802BC00 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28645,10 +28645,10 @@ _0802BBE8: b _0802BC12 .align 2, 0 _0802BBFC: .4byte gStatuses3 -_0802BC00: .4byte sBattler_AI +_0802BC00: .4byte gBattlerAttacker _0802BC04: ldr r2, _0802BC24 @ =gStatuses3 - ldr r0, _0802BC28 @ =sBattler_AI + ldr r0, _0802BC28 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28666,7 +28666,7 @@ _0802BC16: bx r0 .align 2, 0 _0802BC24: .4byte gStatuses3 -_0802BC28: .4byte sBattler_AI +_0802BC28: .4byte gBattlerAttacker _0802BC2C: .4byte 0xfffbffff _0802BC30: .4byte gUnknown_2023D74 thumb_func_end atkC6_clearsemiinvulnerablebit @@ -28682,7 +28682,7 @@ atkC7_setminimize: @ 802BC34 cmp r0, 0 beq _0802BC58 ldr r2, _0802BC68 @ =gStatuses3 - ldr r0, _0802BC6C @ =sBattler_AI + ldr r0, _0802BC6C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 @@ -28701,7 +28701,7 @@ _0802BC58: .align 2, 0 _0802BC64: .4byte gUnknown_2023DD0 _0802BC68: .4byte gStatuses3 -_0802BC6C: .4byte sBattler_AI +_0802BC6C: .4byte gBattlerAttacker _0802BC70: .4byte gUnknown_2023D74 thumb_func_end atkC7_setminimize @@ -28792,7 +28792,7 @@ _0802BD18: .4byte gUnknown_2023E82 _0802BD1C: .4byte gUnknown_2023D74 _0802BD20: ldr r4, _0802BD54 @ =gActiveBattler - ldr r0, _0802BD58 @ =sBattler_AI + ldr r0, _0802BD58 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldr r2, _0802BD5C @ =gBattleMoveDamage @@ -28804,7 +28804,7 @@ _0802BD20: str r0, [r2] ldr r1, _0802BD60 @ =0x00007fff movs r0, 0 - bl EmitHealthBarUpdate + bl BtlController_EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802BD64 @ =gUnknown_2023D74 @@ -28817,7 +28817,7 @@ _0802BD4C: bx r0 .align 2, 0 _0802BD54: .4byte gActiveBattler -_0802BD58: .4byte sBattler_AI +_0802BD58: .4byte gBattlerAttacker _0802BD5C: .4byte gBattleMoveDamage _0802BD60: .4byte 0x00007fff _0802BD64: .4byte gUnknown_2023D74 @@ -28826,7 +28826,7 @@ _0802BD64: .4byte gUnknown_2023D74 thumb_func_start atkCA_setforcedtarget atkCA_setforcedtarget: @ 802BD68 push {r4,r5,lr} - ldr r4, _0802BDA8 @ =sBattler_AI + ldr r4, _0802BDA8 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide ldr r5, _0802BDAC @ =gSideTimers @@ -28856,7 +28856,7 @@ atkCA_setforcedtarget: @ 802BD68 pop {r0} bx r0 .align 2, 0 -_0802BDA8: .4byte sBattler_AI +_0802BDA8: .4byte gBattlerAttacker _0802BDAC: .4byte gSideTimers _0802BDB0: .4byte gUnknown_2023D74 thumb_func_end atkCA_setforcedtarget @@ -28865,7 +28865,7 @@ _0802BDB0: .4byte gUnknown_2023D74 atkCB_setcharge: @ 802BDB4 push {r4,lr} ldr r0, _0802BE08 @ =gStatuses3 - ldr r3, _0802BE0C @ =sBattler_AI + ldr r3, _0802BE0C @ =gBattlerAttacker ldrb r1, [r3] lsls r1, 2 adds r1, r0 @@ -28907,7 +28907,7 @@ atkCB_setcharge: @ 802BDB4 bx r0 .align 2, 0 _0802BE08: .4byte gStatuses3 -_0802BE0C: .4byte sBattler_AI +_0802BE0C: .4byte gBattlerAttacker _0802BE10: .4byte gDisableStructs _0802BE14: .4byte gUnknown_2023D74 thumb_func_end atkCB_setcharge @@ -28969,7 +28969,7 @@ atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C push {r4-r6,lr} sub sp, 0x4 ldr r1, _0802BED8 @ =gBattleMons - ldr r3, _0802BEDC @ =sBattler_AI + ldr r3, _0802BEDC @ =gBattlerAttacker ldrb r0, [r3] movs r6, 0x58 muls r0, r6 @@ -28998,13 +28998,13 @@ atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution b _0802BF02 .align 2, 0 _0802BED8: .4byte gBattleMons -_0802BEDC: .4byte sBattler_AI +_0802BEDC: .4byte gBattlerAttacker _0802BEE0: .4byte gUnknown_2023D74 _0802BEE4: .4byte gActiveBattler _0802BEE8: @@ -29081,7 +29081,7 @@ _0802BF64: .4byte gUnknown_2023D74 atkCF_jumpifnodamage: @ 802BF68 push {lr} ldr r2, _0802BF94 @ =gUnknown_2023E8C - ldr r0, _0802BF98 @ =sBattler_AI + ldr r0, _0802BF98 @ =gBattlerAttacker ldrb r0, [r0] lsls r1, r0, 4 adds r0, r2, 0x4 @@ -29103,7 +29103,7 @@ _0802BF88: b _0802BFBA .align 2, 0 _0802BF94: .4byte gUnknown_2023E8C -_0802BF98: .4byte sBattler_AI +_0802BF98: .4byte gBattlerAttacker _0802BF9C: .4byte gUnknown_2023D74 _0802BFA0: ldr r3, _0802BFC0 @ =gUnknown_2023D74 @@ -29191,7 +29191,7 @@ _0802C034: .4byte gUnknown_2023D74 thumb_func_start atkD1_trysethelpinghand atkD1_trysethelpinghand: @ 802C038 push {r4,lr} - ldr r4, _0802C0A0 @ =sBattler_AI + ldr r4, _0802C0A0 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerPosition movs r1, 0x2 @@ -29240,7 +29240,7 @@ atkD1_trysethelpinghand: @ 802C038 str r0, [r1] b _0802C0D6 .align 2, 0 -_0802C0A0: .4byte sBattler_AI +_0802C0A0: .4byte gBattlerAttacker _0802C0A4: .4byte gBattlerTarget _0802C0A8: .4byte gBattleTypeFlags _0802C0AC: .4byte gAbsentBattlerFlags @@ -29284,7 +29284,7 @@ sub_802C0E0: @ 802C0E0 ands r0, r1 cmp r0, 0 bne _0802C1DE - ldr r0, _0802C200 @ =sBattler_AI + ldr r0, _0802C200 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -29303,7 +29303,7 @@ sub_802C0E0: @ 802C0E0 cmp r1, r0 bne _0802C1DE _0802C120: - ldr r6, _0802C200 @ =sBattler_AI + ldr r6, _0802C200 @ =gBattlerAttacker ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 @@ -29357,7 +29357,7 @@ _0802C120: _0802C18A: ldr r0, _0802C21C @ =gBattleMons mov r8, r0 - ldr r1, _0802C200 @ =sBattler_AI + ldr r1, _0802C200 @ =gBattlerAttacker ldrb r4, [r1] movs r5, 0x58 adds r0, r4, 0 @@ -29415,7 +29415,7 @@ _0802C1DE: b _0802C37A .align 2, 0 _0802C1FC: .4byte gBattleTypeFlags -_0802C200: .4byte sBattler_AI +_0802C200: .4byte gBattlerAttacker _0802C204: .4byte 0x00000902 _0802C208: .4byte gTrainerBattleOpponent_A _0802C20C: .4byte gBattlerTarget @@ -29459,7 +29459,7 @@ _0802C258: ldrh r0, [r0, 0x2E] mov r9, r0 strh r2, [r6] - ldr r1, _0802C348 @ =sBattler_AI + ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] muls r0, r5 add r0, r8 @@ -29471,7 +29471,7 @@ _0802C258: mov r2, r9 strh r2, [r0, 0x2E] ldr r4, _0802C34C @ =gActiveBattler - ldr r3, _0802C348 @ =sBattler_AI + ldr r3, _0802C348 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r4] str r6, [sp] @@ -29479,8 +29479,8 @@ _0802C258: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData - ldr r1, _0802C348 @ =sBattler_AI + bl BtlController_EmitSetMonData + ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] bl MarkBufferBankForExecution ldrb r0, [r7] @@ -29495,7 +29495,7 @@ _0802C258: movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldrb r0, [r7] @@ -29512,14 +29512,14 @@ _0802C258: adds r0, r1 adds r0, 0xC9 strb r3, [r0] - ldr r1, _0802C348 @ =sBattler_AI + ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r3, [r0] - ldr r2, _0802C348 @ =sBattler_AI + ldr r2, _0802C348 @ =gBattlerAttacker ldrb r0, [r2] mov r3, r10 ldr r1, [r3] @@ -29565,7 +29565,7 @@ _0802C258: b _0802C378 .align 2, 0 _0802C344: .4byte gBattleStruct -_0802C348: .4byte sBattler_AI +_0802C348: .4byte gBattlerAttacker _0802C34C: .4byte gActiveBattler _0802C350: .4byte gUnknown_2023D74 _0802C354: .4byte gBattleTextBuff1 @@ -29615,7 +29615,7 @@ atkD3_trycopyability: @ 802C390 beq _0802C3E4 cmp r0, 0x19 beq _0802C3E4 - ldr r0, _0802C3D8 @ =sBattler_AI + ldr r0, _0802C3D8 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 @@ -29636,7 +29636,7 @@ atkD3_trycopyability: @ 802C390 .align 2, 0 _0802C3D0: .4byte gBattleMons _0802C3D4: .4byte gBattlerTarget -_0802C3D8: .4byte sBattler_AI +_0802C3D8: .4byte gBattlerAttacker _0802C3DC: .4byte gLastUsedAbility _0802C3E0: .4byte gUnknown_2023D74 _0802C3E4: @@ -29676,7 +29676,7 @@ atkD4_trywish: @ 802C408 _0802C41C: .4byte gUnknown_2023D74 _0802C420: ldr r1, _0802C44C @ =gUnknown_2023F20 - ldr r4, _0802C450 @ =sBattler_AI + ldr r4, _0802C450 @ =gBattlerAttacker adds r0, r1, 0 adds r0, 0x20 ldrb r5, [r4] @@ -29699,7 +29699,7 @@ _0802C420: b _0802C4D2 .align 2, 0 _0802C44C: .4byte gUnknown_2023F20 -_0802C450: .4byte sBattler_AI +_0802C450: .4byte gBattlerAttacker _0802C454: .4byte gBattlerPartyIndexes _0802C458: ldr r1, _0802C4BC @ =gBattleTextBuff1 @@ -29774,7 +29774,7 @@ _0802C4D4: atkD5_trysetroots: @ 802C4DC push {lr} ldr r1, _0802C514 @ =gStatuses3 - ldr r0, _0802C518 @ =sBattler_AI + ldr r0, _0802C518 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 @@ -29801,7 +29801,7 @@ atkD5_trysetroots: @ 802C4DC b _0802C52C .align 2, 0 _0802C514: .4byte gStatuses3 -_0802C518: .4byte sBattler_AI +_0802C518: .4byte gBattlerAttacker _0802C51C: .4byte gUnknown_2023D74 _0802C520: orrs r1, r3 @@ -29821,7 +29821,7 @@ _0802C530: .4byte gUnknown_2023D74 atkD6_doubledamagedealtifdamaged: @ 802C534 push {lr} ldr r3, _0802C580 @ =gUnknown_2023E8C - ldr r0, _0802C584 @ =sBattler_AI + ldr r0, _0802C584 @ =gBattlerAttacker ldrb r0, [r0] lsls r2, r0, 4 adds r0, r3, 0x4 @@ -29861,7 +29861,7 @@ _0802C572: bx r0 .align 2, 0 _0802C580: .4byte gUnknown_2023E8C -_0802C584: .4byte sBattler_AI +_0802C584: .4byte gBattlerAttacker _0802C588: .4byte gBattlerTarget _0802C58C: .4byte gBattleScripting _0802C590: .4byte gUnknown_2023D74 @@ -29935,7 +29935,7 @@ atkD8_setdamagetohealthdifference: @ 802C604 movs r1, 0x58 muls r0, r1 adds r3, r0, r2 - ldr r0, _0802C648 @ =sBattler_AI + ldr r0, _0802C648 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r1 adds r1, r0, r2 @@ -29960,7 +29960,7 @@ atkD8_setdamagetohealthdifference: @ 802C604 .align 2, 0 _0802C640: .4byte gBattleMons _0802C644: .4byte gBattlerTarget -_0802C648: .4byte sBattler_AI +_0802C648: .4byte gBattlerAttacker _0802C64C: .4byte gUnknown_2023D74 _0802C650: ldr r2, _0802C668 @ =gBattleMoveDamage @@ -29996,7 +29996,7 @@ atkD9_scaledamagebyhealthratio: @ 802C670 adds r0, r2 ldrb r3, [r0, 0x1] ldr r2, _0802C6C8 @ =gBattleMons - ldr r0, _0802C6CC @ =sBattler_AI + ldr r0, _0802C6CC @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -30024,7 +30024,7 @@ _0802C6BC: .4byte gDynamicBasePower _0802C6C0: .4byte gBattleMoves _0802C6C4: .4byte gCurrentMove _0802C6C8: .4byte gBattleMons -_0802C6CC: .4byte sBattler_AI +_0802C6CC: .4byte gBattlerAttacker _0802C6D0: .4byte gUnknown_2023D74 thumb_func_end atkD9_scaledamagebyhealthratio @@ -30032,7 +30032,7 @@ _0802C6D0: .4byte gUnknown_2023D74 atkDA_tryswapabilities: @ 802C6D4 push {r4-r6,lr} ldr r5, _0802C738 @ =gBattleMons - ldr r0, _0802C73C @ =sBattler_AI + ldr r0, _0802C73C @ =gBattlerAttacker ldrb r0, [r0] movs r4, 0x58 muls r0, r4 @@ -30084,7 +30084,7 @@ _0802C71C: b _0802C762 .align 2, 0 _0802C738: .4byte gBattleMons -_0802C73C: .4byte sBattler_AI +_0802C73C: .4byte gBattlerAttacker _0802C740: .4byte gBattlerTarget _0802C744: .4byte gMoveResultFlags _0802C748: .4byte gUnknown_2023D74 @@ -30115,7 +30115,7 @@ atkDB_tryimprision: @ 802C76C mov r6, r8 push {r6,r7} ldr r1, _0802C78C @ =gStatuses3 - ldr r4, _0802C790 @ =sBattler_AI + ldr r4, _0802C790 @ =gBattlerAttacker ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 @@ -30128,7 +30128,7 @@ atkDB_tryimprision: @ 802C76C b _0802C83E .align 2, 0 _0802C78C: .4byte gStatuses3 -_0802C790: .4byte sBattler_AI +_0802C790: .4byte gBattlerAttacker _0802C794: ldr r0, _0802C7B4 @ =gStatuses3 mov r2, r9 @@ -30166,7 +30166,7 @@ _0802C7D2: cmp r8, r0 beq _0802C828 movs r4, 0 - ldr r7, _0802C864 @ =sBattler_AI + ldr r7, _0802C864 @ =gBattlerAttacker mov r9, r7 ldr r0, _0802C868 @ =gBattleMons mov r12, r0 @@ -30242,7 +30242,7 @@ _0802C858: pop {r0} bx r0 .align 2, 0 -_0802C864: .4byte sBattler_AI +_0802C864: .4byte gBattlerAttacker _0802C868: .4byte gBattleMons _0802C86C: .4byte gBattlersCount _0802C870: .4byte gUnknown_2023D74 @@ -30252,7 +30252,7 @@ _0802C870: .4byte gUnknown_2023D74 atkDC_trysetgrudge: @ 802C874 push {lr} ldr r1, _0802C8AC @ =gStatuses3 - ldr r0, _0802C8B0 @ =sBattler_AI + ldr r0, _0802C8B0 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 @@ -30279,7 +30279,7 @@ atkDC_trysetgrudge: @ 802C874 b _0802C8C4 .align 2, 0 _0802C8AC: .4byte gStatuses3 -_0802C8B0: .4byte sBattler_AI +_0802C8B0: .4byte gBattlerAttacker _0802C8B4: .4byte gUnknown_2023D74 _0802C8B8: orrs r1, r3 @@ -30386,7 +30386,7 @@ atkDE_asistattackselect: @ 802C964 ldr r0, [r0] adds r0, 0x18 str r0, [sp, 0x4] - ldr r0, _0802CA88 @ =sBattler_AI + ldr r0, _0802CA88 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition movs r1, 0x1 @@ -30401,7 +30401,7 @@ _0802C994: movs r2, 0 _0802C996: ldr r1, _0802CA94 @ =gBattlerPartyIndexes - ldr r0, _0802CA88 @ =sBattler_AI + ldr r0, _0802CA88 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 @@ -30520,7 +30520,7 @@ _0802CA3C: b _0802CACE .align 2, 0 _0802CA84: .4byte gBattleStruct -_0802CA88: .4byte sBattler_AI +_0802CA88: .4byte gBattlerAttacker _0802CA8C: .4byte gPlayerParty _0802CA90: .4byte gEnemyParty _0802CA94: .4byte gBattlerPartyIndexes @@ -30562,7 +30562,7 @@ _0802CAE0: .4byte gUnknown_2023D74 atkDF_trysetmagiccoat: @ 802CAE4 push {lr} ldr r1, _0802CB2C @ =gBattlerTarget - ldr r3, _0802CB30 @ =sBattler_AI + ldr r3, _0802CB30 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, _0802CB34 @ =gUnknown_2023ECC @@ -30598,7 +30598,7 @@ atkDF_trysetmagiccoat: @ 802CAE4 b _0802CB5C .align 2, 0 _0802CB2C: .4byte gBattlerTarget -_0802CB30: .4byte sBattler_AI +_0802CB30: .4byte gBattlerAttacker _0802CB34: .4byte gUnknown_2023ECC _0802CB38: .4byte gUnknown_2023BE2 _0802CB3C: .4byte gBattlersCount @@ -30628,7 +30628,7 @@ _0802CB64: .4byte gUnknown_2023D74 atkE0_trysetsnatch: @ 802CB68 push {lr} ldr r2, _0802CBAC @ =gUnknown_2023ECC - ldr r3, _0802CBB0 @ =sBattler_AI + ldr r3, _0802CBB0 @ =gBattlerAttacker ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 @@ -30661,7 +30661,7 @@ atkE0_trysetsnatch: @ 802CB68 b _0802CBD6 .align 2, 0 _0802CBAC: .4byte gUnknown_2023ECC -_0802CBB0: .4byte sBattler_AI +_0802CBB0: .4byte gBattlerAttacker _0802CBB4: .4byte gUnknown_2023BE2 _0802CBB8: .4byte gBattlersCount _0802CBBC: .4byte gUnknown_2023D74 @@ -30834,7 +30834,7 @@ atkE2_switchoutabilities: @ 802CCC0 movs r0, 0 movs r1, 0x28 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802CD1A: @@ -31132,7 +31132,7 @@ _0802CF60: ldrb r2, [r0] movs r0, 0 movs r1, 0 - bl EmitBattleAnimation + bl BtlController_EmitBattleAnimation ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802CF94 @ =gUnknown_2023D74 @@ -31197,7 +31197,7 @@ atkE8_settypebasedhalvers: @ 802CFD8 cmp r0, 0xC9 bne _0802D028 ldr r1, _0802D01C @ =gStatuses3 - ldr r0, _0802D020 @ =sBattler_AI + ldr r0, _0802D020 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 @@ -31217,11 +31217,11 @@ atkE8_settypebasedhalvers: @ 802CFD8 _0802D014: .4byte gBattleMoves _0802D018: .4byte gCurrentMove _0802D01C: .4byte gStatuses3 -_0802D020: .4byte sBattler_AI +_0802D020: .4byte gBattlerAttacker _0802D024: .4byte gUnknown_2023E82 _0802D028: ldr r1, _0802D05C @ =gStatuses3 - ldr r0, _0802D060 @ =sBattler_AI + ldr r0, _0802D060 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 @@ -31249,7 +31249,7 @@ _0802D050: b _0802D086 .align 2, 0 _0802D05C: .4byte gStatuses3 -_0802D060: .4byte sBattler_AI +_0802D060: .4byte gBattlerAttacker _0802D064: .4byte gUnknown_2023E82 _0802D068: .4byte gUnknown_2023D74 _0802D06C: @@ -31376,7 +31376,7 @@ atkEA_tryrecycleitem: @ 802D148 push {r4-r7,lr} sub sp, 0x4 ldr r7, _0802D1B0 @ =gActiveBattler - ldr r0, _0802D1B4 @ =sBattler_AI + ldr r0, _0802D1B4 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r7] ldr r1, _0802D1B8 @ =gBattleStruct @@ -31396,7 +31396,7 @@ atkEA_tryrecycleitem: @ 802D148 ldrh r0, [r0, 0x2E] cmp r0, 0 bne _0802D1C8 - ldr r1, _0802D1C0 @ =gUnknown_2023D68 + ldr r1, _0802D1C0 @ =gLastUsedItem strh r5, [r1] strh r0, [r6] ldrb r0, [r7] @@ -31414,7 +31414,7 @@ atkEA_tryrecycleitem: @ 802D148 movs r1, 0x2 movs r2, 0 movs r3, 0x2 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r1, _0802D1C4 @ =gUnknown_2023D74 @@ -31424,10 +31424,10 @@ atkEA_tryrecycleitem: @ 802D148 b _0802D1E2 .align 2, 0 _0802D1B0: .4byte gActiveBattler -_0802D1B4: .4byte sBattler_AI +_0802D1B4: .4byte gBattlerAttacker _0802D1B8: .4byte gBattleStruct _0802D1BC: .4byte gBattleMons -_0802D1C0: .4byte gUnknown_2023D68 +_0802D1C0: .4byte gLastUsedItem _0802D1C4: .4byte gUnknown_2023D74 _0802D1C8: ldr r3, _0802D1EC @ =gUnknown_2023D74 @@ -31459,7 +31459,7 @@ atkEB_settypetoterrain: @ 802D1F0 push {r7} ldr r0, _0802D260 @ =gBattleMons mov r8, r0 - ldr r7, _0802D264 @ =sBattler_AI + ldr r7, _0802D264 @ =gBattlerAttacker ldrb r0, [r7] movs r6, 0x58 muls r0, r6 @@ -31512,7 +31512,7 @@ atkEB_settypetoterrain: @ 802D1F0 b _0802D292 .align 2, 0 _0802D260: .4byte gBattleMons -_0802D264: .4byte sBattler_AI +_0802D264: .4byte gBattlerAttacker _0802D268: .4byte gUnknown_8250888 _0802D26C: .4byte gUnknown_2022B50 _0802D270: .4byte gBattleTextBuff1 @@ -31544,7 +31544,7 @@ _0802D29C: .4byte gUnknown_2023D74 thumb_func_start atkEC_pursuitrelated atkEC_pursuitrelated: @ 802D2A0 push {r4-r6,lr} - ldr r5, _0802D314 @ =sBattler_AI + ldr r5, _0802D314 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x2 @@ -31600,7 +31600,7 @@ atkEC_pursuitrelated: @ 802D2A0 strb r0, [r5] b _0802D35A .align 2, 0 -_0802D314: .4byte sBattler_AI +_0802D314: .4byte gBattlerAttacker _0802D318: .4byte gActiveBattler _0802D31C: .4byte gBattleTypeFlags _0802D320: .4byte gAbsentBattlerFlags @@ -31636,8 +31636,8 @@ _0802D360: .4byte gUnknown_2023D74 thumb_func_start atkEF_snatchsetbanks atkEF_snatchsetbanks: @ 802D364 push {r4,lr} - ldr r1, _0802D388 @ =gUnknown_2023D6E - ldr r3, _0802D38C @ =sBattler_AI + ldr r1, _0802D388 @ =gEffectBattler + ldr r3, _0802D38C @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, _0802D390 @ =gBattlerTarget @@ -31653,8 +31653,8 @@ atkEF_snatchsetbanks: @ 802D364 strb r0, [r3] b _0802D39E .align 2, 0 -_0802D388: .4byte gUnknown_2023D6E -_0802D38C: .4byte sBattler_AI +_0802D388: .4byte gEffectBattler +_0802D38C: .4byte gBattlerAttacker _0802D390: .4byte gBattlerTarget _0802D394: .4byte gBattleScripting _0802D398: @@ -31679,7 +31679,7 @@ _0802D3B4: .4byte gUnknown_2023D74 thumb_func_start atkEE_removelightscreenreflect atkEE_removelightscreenreflect: @ 802D3B8 push {r4,lr} - ldr r0, _0802D400 @ =sBattler_AI + ldr r0, _0802D400 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide movs r1, 0x1 @@ -31715,7 +31715,7 @@ _0802D3E0: strb r0, [r1, 0x19] b _0802D41E .align 2, 0 -_0802D400: .4byte sBattler_AI +_0802D400: .4byte gBattlerAttacker _0802D404: .4byte gSideTimers _0802D408: .4byte gSideAffecting _0802D40C: .4byte 0x0000fffe @@ -31749,7 +31749,7 @@ sub_802D434: @ 802D434 b _0802D7EE _0802D442: ldr r5, _0802D478 @ =gActiveBattler - ldr r0, _0802D47C @ =sBattler_AI + ldr r0, _0802D47C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] ldr r6, _0802D480 @ =gBattlerTarget @@ -31765,7 +31765,7 @@ _0802D442: beq _0802D490 movs r0, 0 movs r1, 0x6 - bl EmitBallThrowAnim + bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D488 @ =gUnknown_2023D74 @@ -31774,7 +31774,7 @@ _0802D442: .align 2, 0 _0802D474: .4byte gBattleControllerExecFlags _0802D478: .4byte gActiveBattler -_0802D47C: .4byte sBattler_AI +_0802D47C: .4byte gBattlerAttacker _0802D480: .4byte gBattlerTarget _0802D484: .4byte gBattleTypeFlags _0802D488: .4byte gUnknown_2023D74 @@ -31786,7 +31786,7 @@ _0802D490: beq _0802D4B4 movs r0, 0 movs r1, 0x5 - bl EmitBallThrowAnim + bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D4AC @ =gUnknown_2023D74 @@ -31803,7 +31803,7 @@ _0802D4B4: beq _0802D4DC movs r0, 0 movs r1, 0x4 - bl EmitBallThrowAnim + bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D4D4 @ =gUnknown_2023D74 @@ -31813,7 +31813,7 @@ _0802D4B4: _0802D4D4: .4byte gUnknown_2023D74 _0802D4D8: .4byte gUnknown_81D9A88 _0802D4DC: - ldr r0, _0802D500 @ =gUnknown_2023D68 + ldr r0, _0802D500 @ =gLastUsedItem ldrh r0, [r0] cmp r0, 0x5 bne _0802D508 @@ -31831,7 +31831,7 @@ _0802D4DC: lsrs r5, r0, 24 b _0802D520 .align 2, 0 -_0802D500: .4byte gUnknown_2023D68 +_0802D500: .4byte gLastUsedItem _0802D504: .4byte gBattleStruct _0802D508: ldr r3, _0802D53C @ =gBaseStats @@ -31847,7 +31847,7 @@ _0802D508: adds r0, r3 ldrb r5, [r0, 0x8] _0802D520: - ldr r2, _0802D544 @ =gUnknown_2023D68 + ldr r2, _0802D544 @ =gLastUsedItem ldrh r0, [r2] cmp r0, 0x5 bhi _0802D52A @@ -31866,7 +31866,7 @@ _0802D532: .align 2, 0 _0802D53C: .4byte gBaseStats _0802D540: .4byte gBattleMons -_0802D544: .4byte gUnknown_2023D68 +_0802D544: .4byte gLastUsedItem _0802D548: .4byte _0802D54C .align 2, 0 _0802D54C: @@ -32014,7 +32014,7 @@ _0802D666: bl __udivsi3 adds r6, r0, 0 _0802D67A: - ldr r1, _0802D6A0 @ =gUnknown_2023D68 + ldr r1, _0802D6A0 @ =gLastUsedItem ldrh r0, [r1] cmp r0, 0x5 beq _0802D6BC @@ -32030,7 +32030,7 @@ _0802D67A: _0802D694: .4byte gUnknown_8250892 _0802D698: .4byte gBattleMons _0802D69C: .4byte gBattlerTarget -_0802D6A0: .4byte gUnknown_2023D68 +_0802D6A0: .4byte gLastUsedItem _0802D6A4: .4byte gBattleResults _0802D6A8: ldr r0, _0802D700 @ =gBattleResults @@ -32048,7 +32048,7 @@ _0802D6BC: bls _0802D720 movs r0, 0 movs r1, 0x4 - bl EmitBallThrowAnim + bl BtlController_EmitBallThrowAnim ldr r0, _0802D704 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -32065,7 +32065,7 @@ _0802D6BC: muls r0, r1 ldr r1, _0802D718 @ =gEnemyParty adds r0, r1 - ldr r2, _0802D71C @ =gUnknown_2023D68 + ldr r2, _0802D71C @ =gLastUsedItem movs r1, 0x26 bl SetMonData bl CalculatePlayerPartyCount @@ -32082,7 +32082,7 @@ _0802D70C: .4byte gUnknown_81D9A42 _0802D710: .4byte gBattlerPartyIndexes _0802D714: .4byte gBattlerTarget _0802D718: .4byte gEnemyParty -_0802D71C: .4byte gUnknown_2023D68 +_0802D71C: .4byte gLastUsedItem _0802D720: movs r0, 0xFF lsls r0, 16 @@ -32115,7 +32115,7 @@ _0802D752: cmp r0, r6 bcc _0802D74C _0802D762: - ldr r5, _0802D7B8 @ =gUnknown_2023D68 + ldr r5, _0802D7B8 @ =gLastUsedItem ldrh r0, [r5] cmp r0, 0x1 bne _0802D76C @@ -32123,7 +32123,7 @@ _0802D762: _0802D76C: movs r0, 0 adds r1, r4, 0 - bl EmitBallThrowAnim + bl BtlController_EmitBallThrowAnim ldr r0, _0802D7BC @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -32156,7 +32156,7 @@ _0802D7AE: strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 -_0802D7B8: .4byte gUnknown_2023D68 +_0802D7B8: .4byte gLastUsedItem _0802D7BC: .4byte gActiveBattler _0802D7C0: .4byte gUnknown_2023D74 _0802D7C4: .4byte gUnknown_81D9A42 @@ -32196,7 +32196,7 @@ sub_802D800: @ 802D800 push {r6,r7} ldr r0, _0802D870 @ =gBattlerPartyIndexes mov r9, r0 - ldr r5, _0802D874 @ =sBattler_AI + ldr r5, _0802D874 @ =gBattlerAttacker ldrb r0, [r5] movs r6, 0x1 eors r0, r6 @@ -32241,7 +32241,7 @@ sub_802D800: @ 802D800 b _0802D8D6 .align 2, 0 _0802D870: .4byte gBattlerPartyIndexes -_0802D874: .4byte sBattler_AI +_0802D874: .4byte gBattlerAttacker _0802D878: .4byte gEnemyParty _0802D87C: .4byte gUnknown_2023E82 _0802D880: .4byte gStringVar1 @@ -32291,7 +32291,7 @@ _0802D8D6: _0802D8EA: ldr r2, _0802D944 @ =gBattleResults ldr r3, _0802D948 @ =gBattleMons - ldr r0, _0802D94C @ =sBattler_AI + ldr r0, _0802D94C @ =gBattlerAttacker ldrb r0, [r0] movs r1, 0x1 eors r1, r0 @@ -32330,7 +32330,7 @@ _0802D93C: .4byte gUnknown_2023E82 _0802D940: .4byte 0x00000834 _0802D944: .4byte gBattleResults _0802D948: .4byte gBattleMons -_0802D94C: .4byte sBattler_AI +_0802D94C: .4byte gBattlerAttacker _0802D950: .4byte gBattlerPartyIndexes _0802D954: .4byte gEnemyParty _0802D958: .4byte gUnknown_2023D74 @@ -32955,7 +32955,7 @@ _0802DE40: b _0802DFA6 _0802DE4E: ldr r7, _0802DF00 @ =gBattlerPartyIndexes - ldr r0, _0802DF04 @ =sBattler_AI + ldr r0, _0802DF04 @ =gBattlerAttacker mov r10, r0 ldrb r0, [r0] movs r4, 0x1 @@ -33037,7 +33037,7 @@ _0802DE4E: .align 2, 0 _0802DEFC: .4byte gPaletteFade _0802DF00: .4byte gBattlerPartyIndexes -_0802DF04: .4byte sBattler_AI +_0802DF04: .4byte gBattlerAttacker _0802DF08: .4byte gEnemyParty _0802DF0C: .4byte gBattleStruct _0802DF10: .4byte BattleMainCB2 @@ -33055,7 +33055,7 @@ _0802DF18: cmp r0, 0 bne _0802DFA6 ldr r2, _0802DF60 @ =gBattlerPartyIndexes - ldr r0, _0802DF64 @ =sBattler_AI + ldr r0, _0802DF64 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x1 eors r0, r1 @@ -33077,7 +33077,7 @@ _0802DF54: .4byte gMain _0802DF58: .4byte BattleMainCB2 _0802DF5C: .4byte gPaletteFade _0802DF60: .4byte gBattlerPartyIndexes -_0802DF64: .4byte sBattler_AI +_0802DF64: .4byte gBattlerAttacker _0802DF68: .4byte gEnemyParty _0802DF6C: .4byte gBattleStruct _0802DF70: @@ -33123,7 +33123,7 @@ _0802DFB8: .4byte gUnknown_2023D74 thumb_func_start atkF4_subattackerhpbydmg atkF4_subattackerhpbydmg: @ 802DFBC ldr r2, _0802DFDC @ =gBattleMons - ldr r0, _0802DFE0 @ =sBattler_AI + ldr r0, _0802DFE0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -33140,7 +33140,7 @@ atkF4_subattackerhpbydmg: @ 802DFBC bx lr .align 2, 0 _0802DFDC: .4byte gBattleMons -_0802DFE0: .4byte sBattler_AI +_0802DFE0: .4byte gBattlerAttacker _0802DFE4: .4byte gBattleMoveDamage _0802DFE8: .4byte gUnknown_2023D74 thumb_func_end atkF4_subattackerhpbydmg @@ -33148,7 +33148,7 @@ _0802DFE8: .4byte gUnknown_2023D74 thumb_func_start atkF5_removeattackerstatus1 atkF5_removeattackerstatus1: @ 802DFEC ldr r1, _0802E008 @ =gBattleMons - ldr r0, _0802E00C @ =sBattler_AI + ldr r0, _0802E00C @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -33163,7 +33163,7 @@ atkF5_removeattackerstatus1: @ 802DFEC bx lr .align 2, 0 _0802E008: .4byte gBattleMons -_0802E00C: .4byte sBattler_AI +_0802E00C: .4byte gBattlerAttacker _0802E010: .4byte gUnknown_2023D74 thumb_func_end atkF5_removeattackerstatus1 diff --git a/asm/battle_util.s b/asm/battle_util.s index 739f10609..34e4ad428 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -42,17 +42,17 @@ _08016E74: .align 2, 0 _08016E7C: .4byte gBattlerTarget _08016E80: - ldr r0, _08016E88 @ =sBattler_AI + ldr r0, _08016E88 @ =gBattlerAttacker ldrb r2, [r0] b _08016EC2 .align 2, 0 -_08016E88: .4byte sBattler_AI +_08016E88: .4byte gBattlerAttacker _08016E8C: - ldr r0, _08016E94 @ =gUnknown_2023D6E + ldr r0, _08016E94 @ =gEffectBattler ldrb r2, [r0] b _08016EC2 .align 2, 0 -_08016E94: .4byte gUnknown_2023D6E +_08016E94: .4byte gEffectBattler _08016E98: movs r2, 0 b _08016EC2 @@ -172,7 +172,7 @@ _08016F26: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _08016F7A: @@ -322,7 +322,7 @@ _08017038: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _080170A0: @@ -459,7 +459,7 @@ _08017146: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _080171AA: @@ -734,7 +734,7 @@ PrepareStringBattle: @ 80173AC strb r1, [r4] movs r0, 0 adds r1, r2, 0 - bl EmitPrintString + bl BtlController_EmitPrintString ldrb r0, [r4] bl MarkBufferBankForExecution pop {r4} @@ -994,7 +994,7 @@ sub_8017594: @ 8017594 push {r7} movs r6, 0 ldr r2, _080176AC @ =gBattleMons - ldr r1, _080176B0 @ =gUnknown_20233C4 + ldr r1, _080176B0 @ =gBattleBufferB ldr r5, _080176B4 @ =gActiveBattler ldrb r3, [r5] lsls r0, r3, 9 @@ -1133,7 +1133,7 @@ _0801768E: b _080176F2 .align 2, 0 _080176AC: .4byte gBattleMons -_080176B0: .4byte gUnknown_20233C4 +_080176B0: .4byte gBattleBufferB _080176B4: .4byte gActiveBattler _080176B8: .4byte gBattleStruct _080176BC: .4byte gDisableStructs @@ -1173,7 +1173,7 @@ _080176F2: beq _0801773A ldr r0, _08017784 @ =gCurrentMove strh r1, [r0] - ldr r2, _08017788 @ =gUnknown_2023D68 + ldr r2, _08017788 @ =gLastUsedItem ldrb r1, [r5] movs r0, 0x58 muls r0, r1 @@ -1190,7 +1190,7 @@ _080176F2: lsls r0, 24 lsrs r6, r0, 24 _0801773A: - ldr r0, _08017794 @ =gUnknown_20233C4 + ldr r0, _08017794 @ =gBattleBufferB ldrb r2, [r5] lsls r1, r2, 9 adds r0, 0x2 @@ -1226,10 +1226,10 @@ _08017778: .4byte gActiveBattler _0801777C: .4byte gBattleMons _08017780: .4byte 0x0000ffff _08017784: .4byte gCurrentMove -_08017788: .4byte gUnknown_2023D68 +_08017788: .4byte gLastUsedItem _0801778C: .4byte gUnknown_2023D80 _08017790: .4byte gUnknown_81D963D -_08017794: .4byte gUnknown_20233C4 +_08017794: .4byte gBattleBufferB _08017798: .4byte gUnknown_81D8EA4 thumb_func_end sub_8017594 @@ -1536,7 +1536,7 @@ sub_8017998: @ 8017998 lsrs r4, 24 adds r0, r4, 0 bl GetBattlerAtPosition - ldr r2, _08017A18 @ =gUnknown_20233C4 + ldr r2, _08017A18 @ =gBattleBufferB ldrb r1, [r5] lsls r1, 9 adds r2, 0x3 @@ -1548,7 +1548,7 @@ _08017A08: .4byte gUnknown_2023E8C _08017A0C: .4byte gUnknown_2023D80 _08017A10: .4byte gUnknown_81D8EA0 _08017A14: .4byte gBattleTypeFlags -_08017A18: .4byte gUnknown_20233C4 +_08017A18: .4byte gBattleBufferB _08017A1C: ldrb r0, [r5] bl GetBattlerPosition @@ -1557,14 +1557,14 @@ _08017A1C: lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition - ldr r2, _08017A3C @ =gUnknown_20233C4 + ldr r2, _08017A3C @ =gBattleBufferB ldrb r1, [r5] lsls r1, 9 adds r2, 0x3 adds r1, r2 b _08017A50 .align 2, 0 -_08017A3C: .4byte gUnknown_20233C4 +_08017A3C: .4byte gBattleBufferB _08017A40: ldr r0, _08017A60 @ =gUnknown_2023E8C ldrb r1, [r5] @@ -1681,7 +1681,7 @@ UpdateTurnCounters: @ 8017B04 push {r5-r7} movs r0, 0 mov r9, r0 - ldr r1, _08017BA8 @ =sBattler_AI + ldr r1, _08017BA8 @ =gBattlerAttacker mov r2, r9 strb r2, [r1] ldr r0, _08017BAC @ =gBattlersCount @@ -1762,7 +1762,7 @@ _08017B9E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08017BA8: .4byte sBattler_AI +_08017BA8: .4byte gBattlerAttacker _08017BAC: .4byte gBattlersCount _08017BB0: .4byte gBattlerTarget _08017BB4: .4byte gBattleStruct @@ -1865,7 +1865,7 @@ _08017C84: ldr r3, _08017D20 @ =gActiveBattler mov r8, r3 movs r7, 0 - ldr r6, _08017D24 @ =sBattler_AI + ldr r6, _08017D24 @ =gBattlerAttacker ldr r5, _08017D28 @ =gBattleTextBuff1 _08017C8E: ldr r0, [r1] @@ -1941,7 +1941,7 @@ _08017D14: .4byte gUnknown_2023BDE _08017D18: .4byte gBattlersCount _08017D1C: .4byte gBattleStruct _08017D20: .4byte gActiveBattler -_08017D24: .4byte sBattler_AI +_08017D24: .4byte gBattlerAttacker _08017D28: .4byte gBattleTextBuff1 _08017D2C: .4byte gSideTimers _08017D30: .4byte gSideAffecting @@ -1960,7 +1960,7 @@ _08017D4A: mov r10, r0 movs r2, 0 mov r8, r2 - ldr r7, _08017DE4 @ =sBattler_AI + ldr r7, _08017DE4 @ =gBattlerAttacker ldr r5, _08017DE8 @ =gBattleTextBuff1 _08017D56: ldr r0, [r1] @@ -2035,7 +2035,7 @@ _08017DD4: bls _08017D56 b _08017EA4 .align 2, 0 -_08017DE4: .4byte sBattler_AI +_08017DE4: .4byte gBattlerAttacker _08017DE8: .4byte gBattleTextBuff1 _08017DEC: .4byte gSideTimers _08017DF0: .4byte gActiveBattler @@ -2055,7 +2055,7 @@ _08017E08: mov r10, r0 movs r2, 0 mov r8, r2 - ldr r7, _08017EC4 @ =sBattler_AI + ldr r7, _08017EC4 @ =gBattlerAttacker ldr r5, _08017EC8 @ =gBattleTextBuff1 _08017E20: ldr r0, [r1] @@ -2142,7 +2142,7 @@ _08017EAC: b _0801822A .align 2, 0 _08017EC0: .4byte gActiveBattler -_08017EC4: .4byte sBattler_AI +_08017EC4: .4byte gBattlerAttacker _08017EC8: .4byte gBattleTextBuff1 _08017ECC: .4byte gSideTimers _08017ED0: .4byte gSideAffecting @@ -2158,7 +2158,7 @@ _08017EE4: cmp r0, 0x1 bhi _08017F60 ldr r6, _08017F80 @ =gActiveBattler - ldr r5, _08017F84 @ =sBattler_AI + ldr r5, _08017F84 @ =gBattlerAttacker _08017EF4: ldr r0, [r1] adds r0, 0xDB @@ -2234,7 +2234,7 @@ _08017F68: b _0801822A .align 2, 0 _08017F80: .4byte gActiveBattler -_08017F84: .4byte sBattler_AI +_08017F84: .4byte gBattlerAttacker _08017F88: .4byte gSideTimers _08017F8C: .4byte gSideAffecting _08017F90: .4byte 0x0000ffdf @@ -2561,7 +2561,7 @@ _0801822A: bne _08018232 b _08017B92 _08018232: - ldr r0, _08018250 @ =gUnknown_3004F84 + ldr r0, _08018250 @ =gBattleMainFunc ldr r1, [r0] ldr r0, _08018254 @ =sub_8013BD4 eors r1, r0 @@ -2576,7 +2576,7 @@ _08018232: pop {r1} bx r1 .align 2, 0 -_08018250: .4byte gUnknown_3004F84 +_08018250: .4byte gBattleMainFunc _08018254: .4byte sub_8013BD4 thumb_func_end UpdateTurnCounters @@ -2614,7 +2614,7 @@ _08018294: .4byte gBattleStruct _08018298: .4byte gBattlersCount _0801829C: ldr r3, _080182D0 @ =gActiveBattler - ldr r4, _080182D4 @ =sBattler_AI + ldr r4, _080182D4 @ =gBattlerAttacker ldr r1, _080182D8 @ =gUnknown_2023BDE ldr r5, [r5] ldrb r0, [r5, 0x1] @@ -2639,7 +2639,7 @@ _0801829C: bl _08018C50 .align 2, 0 _080182D0: .4byte gActiveBattler -_080182D4: .4byte sBattler_AI +_080182D4: .4byte gBattlerAttacker _080182D8: .4byte gUnknown_2023BDE _080182DC: .4byte gAbsentBattlerFlags _080182E0: .4byte gBitTable @@ -3204,7 +3204,7 @@ _08018734: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution b _080187FC @@ -3269,7 +3269,7 @@ _080187EE: cmp r0, r1 bcc _080187CE _080187FC: - ldr r2, _08018814 @ =sBattler_AI + ldr r2, _08018814 @ =gBattlerAttacker ldr r1, _08018818 @ =gBattlersCount ldrb r0, [r2] ldrb r1, [r1] @@ -3280,7 +3280,7 @@ _080187FC: b _08018C4C .align 2, 0 _08018810: .4byte gBattleMons -_08018814: .4byte sBattler_AI +_08018814: .4byte gBattlerAttacker _08018818: .4byte gBattlersCount _0801881C: ldr r5, _08018854 @ =gActiveBattler @@ -3777,10 +3777,10 @@ _08018B6C: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r6] bl MarkBufferBankForExecution - ldr r1, _08018C2C @ =gUnknown_2023D6E + ldr r1, _08018C2C @ =gEffectBattler ldrb r0, [r6] strb r0, [r1] ldr r0, _08018C30 @ =gUnknown_81D91C7 @@ -3804,7 +3804,7 @@ _08018C16: _08018C20: .4byte gStatuses3 _08018C24: .4byte 0xfffff800 _08018C28: .4byte gBattleMons -_08018C2C: .4byte gUnknown_2023D6E +_08018C2C: .4byte gEffectBattler _08018C30: .4byte gUnknown_81D91C7 _08018C34: .4byte gBattleStruct _08018C38: @@ -4001,7 +4001,7 @@ _08018D92: ldrb r0, [r4] mov r1, r9 strb r0, [r1] - ldr r1, _08018DF0 @ =sBattler_AI + ldr r1, _08018DF0 @ =gBattlerAttacker adds r0, r6, 0x4 ldrb r2, [r4] adds r0, r2 @@ -4027,7 +4027,7 @@ _08018D92: b _08018F44 .align 2, 0 _08018DEC: .4byte gUnknown_2023E82 -_08018DF0: .4byte sBattler_AI +_08018DF0: .4byte gBattlerAttacker _08018DF4: .4byte gBattleMoveDamage _08018DF8: .4byte gUnknown_2023ECC _08018DFC: .4byte 0x0000ffff @@ -4071,7 +4071,7 @@ _08018E42: ldr r4, _08018E88 @ =gBattleTextBuff1 ldr r6, _08018E8C @ =gDisableStructs mov r12, r6 - ldr r0, _08018E90 @ =sBattler_AI + ldr r0, _08018E90 @ =gBattlerAttacker mov r9, r0 _08018E4E: ldr r1, _08018E94 @ =gUnknown_2023BDE @@ -4103,7 +4103,7 @@ _08018E80: .4byte gBattlersCount _08018E84: .4byte gActiveBattler _08018E88: .4byte gBattleTextBuff1 _08018E8C: .4byte gDisableStructs -_08018E90: .4byte sBattler_AI +_08018E90: .4byte gBattlerAttacker _08018E94: .4byte gUnknown_2023BDE _08018E98: .4byte gAbsentBattlerFlags _08018E9C: .4byte gBitTable @@ -4706,7 +4706,7 @@ _08019320: .4byte _08019B98 _08019360: ldr r1, _08019390 @ =gBattleMons - ldr r3, _08019394 @ =sBattler_AI + ldr r3, _08019394 @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 muls r2, r0 @@ -4729,13 +4729,13 @@ _08019360: bl _08019B90 .align 2, 0 _08019390: .4byte gBattleMons -_08019394: .4byte sBattler_AI +_08019394: .4byte gBattlerAttacker _08019398: .4byte 0xfdffffff _0801939C: .4byte gStatuses3 _080193A0: .4byte 0xffffbfff _080193A4: ldr r7, _0801940C @ =gBattleMons - ldr r4, _08019410 @ =sBattler_AI + ldr r4, _08019410 @ =gBattlerAttacker ldrb r1, [r4] movs r5, 0x58 adds r0, r1, 0 @@ -4787,7 +4787,7 @@ _080193C4: b _08019946 .align 2, 0 _0801940C: .4byte gBattleMons -_08019410: .4byte sBattler_AI +_08019410: .4byte gBattlerAttacker _08019414: .4byte 0xf7ffffff _08019418: .4byte gUnknown_2023E82 _0801941C: .4byte gUnknown_2023D74 @@ -4821,7 +4821,7 @@ _08019450: str r0, [r2] _08019454: ldr r2, _08019498 @ =gBattleMons - ldr r0, _0801949C @ =sBattler_AI + ldr r0, _0801949C @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -4857,7 +4857,7 @@ _0801947E: b _08019946 .align 2, 0 _08019498: .4byte gBattleMons -_0801949C: .4byte sBattler_AI +_0801949C: .4byte gBattlerAttacker _080194A0: .4byte gCurrentMove _080194A4: .4byte gUnknown_2023D74 _080194A8: .4byte gUnknown_81D9029 @@ -4885,7 +4885,7 @@ _080194D8: .4byte gUnknown_2023D74 _080194DC: .4byte gUnknown_81D9036 _080194E0: ldr r1, _0801953C @ =gBattleMons - ldr r7, _08019540 @ =sBattler_AI + ldr r7, _08019540 @ =gBattlerAttacker ldrb r0, [r7] movs r6, 0x58 muls r0, r6 @@ -4930,7 +4930,7 @@ _08019526: b _08019578 .align 2, 0 _0801953C: .4byte gBattleMons -_08019540: .4byte sBattler_AI +_08019540: .4byte gBattlerAttacker _08019544: .4byte gBattleMoves _08019548: .4byte gCurrentMove _0801954C: .4byte gUnknown_2023D74 @@ -4968,7 +4968,7 @@ _08019590: .4byte gUnknown_2023E82 _08019594: .4byte gBattleStruct _08019598: ldr r1, _080195EC @ =gBattleMons - ldr r0, _080195F0 @ =sBattler_AI + ldr r0, _080195F0 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -5012,7 +5012,7 @@ _080195C2: b _080197F4 .align 2, 0 _080195EC: .4byte gBattleMons -_080195F0: .4byte sBattler_AI +_080195F0: .4byte gBattlerAttacker _080195F4: .4byte gDisableStructs _080195F8: .4byte gUnknown_2023DD0 _080195FC: .4byte gUnknown_2023E82 @@ -5021,7 +5021,7 @@ _08019604: .4byte gUnknown_81D94F2 _08019608: .4byte gMoveResultFlags _0801960C: ldr r1, _0801965C @ =gBattleMons - ldr r3, _08019660 @ =sBattler_AI + ldr r3, _08019660 @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 muls r0, r2 @@ -5062,7 +5062,7 @@ _08019628: b _08019946 .align 2, 0 _0801965C: .4byte gBattleMons -_08019660: .4byte sBattler_AI +_08019660: .4byte gBattlerAttacker _08019664: .4byte 0xffbfffff _08019668: .4byte gDisableStructs _0801966C: .4byte gUnknown_2023D74 @@ -5070,7 +5070,7 @@ _08019670: .4byte gUnknown_81D7342 _08019674: .4byte gUnknown_2023DD0 _08019678: ldr r1, _080196C8 @ =gBattleMons - ldr r3, _080196CC @ =sBattler_AI + ldr r3, _080196CC @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 muls r0, r2 @@ -5111,14 +5111,14 @@ _08019692: b _08019946 .align 2, 0 _080196C8: .4byte gBattleMons -_080196CC: .4byte sBattler_AI +_080196CC: .4byte gBattlerAttacker _080196D0: .4byte gUnknown_2023E8C _080196D4: .4byte gUnknown_2023D74 _080196D8: .4byte gUnknown_81D90B1 _080196DC: .4byte gUnknown_2023DD0 _080196E0: ldr r0, _08019734 @ =gDisableStructs - ldr r3, _08019738 @ =sBattler_AI + ldr r3, _08019738 @ =gBattlerAttacker ldrb r2, [r3] lsls r1, r2, 3 subs r1, r2 @@ -5161,7 +5161,7 @@ _08019700: b _08019946 .align 2, 0 _08019734: .4byte gDisableStructs -_08019738: .4byte sBattler_AI +_08019738: .4byte gBattlerAttacker _0801973C: .4byte gCurrentMove _08019740: .4byte gUnknown_2023E8C _08019744: .4byte gBattleScripting @@ -5170,7 +5170,7 @@ _0801974C: .4byte gUnknown_81D8C4F _08019750: .4byte gUnknown_2023DD0 _08019754: ldr r0, _0801979C @ =gDisableStructs - ldr r4, _080197A0 @ =sBattler_AI + ldr r4, _080197A0 @ =gBattlerAttacker ldrb r3, [r4] lsls r1, r3, 3 subs r1, r3 @@ -5208,14 +5208,14 @@ _08019782: b _08019934 .align 2, 0 _0801979C: .4byte gDisableStructs -_080197A0: .4byte sBattler_AI +_080197A0: .4byte gBattlerAttacker _080197A4: .4byte gBattleMoves _080197A8: .4byte gCurrentMove _080197AC: .4byte gUnknown_2023E8C _080197B0: .4byte gUnknown_2023D74 _080197B4: .4byte gUnknown_81D8ECA _080197B8: - ldr r4, _080197FC @ =sBattler_AI + ldr r4, _080197FC @ =gBattlerAttacker ldrb r0, [r4] ldr r1, _08019800 @ =gCurrentMove ldrh r1, [r1] @@ -5249,7 +5249,7 @@ _080197F4: mov r9, r0 b _08019946 .align 2, 0 -_080197FC: .4byte sBattler_AI +_080197FC: .4byte gBattlerAttacker _08019800: .4byte gCurrentMove _08019804: .4byte gUnknown_2023E8C _08019808: .4byte gUnknown_2023D74 @@ -5257,7 +5257,7 @@ _0801980C: .4byte gUnknown_81D8F94 _08019810: .4byte gUnknown_2023DD0 _08019814: ldr r7, _0801985C @ =gBattleMons - ldr r5, _08019860 @ =sBattler_AI + ldr r5, _08019860 @ =gBattlerAttacker ldrb r0, [r5] movs r6, 0x58 muls r0, r6 @@ -5292,7 +5292,7 @@ _08019814: b _080198B2 .align 2, 0 _0801985C: .4byte gBattleMons -_08019860: .4byte sBattler_AI +_08019860: .4byte gBattlerAttacker _08019864: .4byte gUnknown_2023E82 _08019868: ldr r0, _080198B8 @ =gUnknown_2023E82 @@ -5363,7 +5363,7 @@ _080198F0: .4byte gUnknown_81D9116 _080198F4: .4byte gBattleStruct _080198F8: ldr r1, _08019958 @ =gBattleMons - ldr r4, _0801995C @ =sBattler_AI + ldr r4, _0801995C @ =gBattlerAttacker ldrb r2, [r4] movs r0, 0x58 muls r0, r2 @@ -5412,7 +5412,7 @@ _08019946: b _08019B98 .align 2, 0 _08019958: .4byte gBattleMons -_0801995C: .4byte sBattler_AI +_0801995C: .4byte gBattlerAttacker _08019960: .4byte gUnknown_2023E8C _08019964: .4byte gUnknown_2023D74 _08019968: .4byte gUnknown_81D90A1 @@ -5430,7 +5430,7 @@ _08019974: beq _08019988 b _08019B8C _08019988: - ldr r0, _080199A0 @ =sBattler_AI + ldr r0, _080199A0 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -5441,7 +5441,7 @@ _08019988: b _080199B0 .align 2, 0 _0801999C: .4byte gBattleTypeFlags -_080199A0: .4byte sBattler_AI +_080199A0: .4byte gBattlerAttacker _080199A4: .4byte gUnknown_2023D74 _080199A8: .4byte gUnknown_81D9180 _080199AC: @@ -5460,7 +5460,7 @@ _080199C0: .4byte gUnknown_81D9192 _080199C4: .4byte gUnknown_2023E82 _080199C8: ldr r1, _08019A00 @ =gBattleMons - ldr r4, _08019A04 @ =sBattler_AI + ldr r4, _08019A04 @ =gBattlerAttacker ldrb r2, [r4] movs r0, 0x58 muls r0, r2 @@ -5485,7 +5485,7 @@ _080199C8: b _08019A34 .align 2, 0 _08019A00: .4byte gBattleMons -_08019A04: .4byte sBattler_AI +_08019A04: .4byte gBattlerAttacker _08019A08: .4byte gBattleScripting _08019A0C: ldr r0, _08019A48 @ =gUnknown_81D914A @@ -5527,7 +5527,7 @@ _08019A58: .4byte gUnknown_81D913D _08019A5C: .4byte gBattleStruct _08019A60: ldr r1, _08019A98 @ =gBattleMons - ldr r6, _08019A9C @ =sBattler_AI + ldr r6, _08019A9C @ =gBattlerAttacker ldrb r0, [r6] movs r5, 0x58 muls r0, r5 @@ -5556,7 +5556,7 @@ _08019A60: b _08019B2C .align 2, 0 _08019A98: .4byte gBattleMons -_08019A9C: .4byte sBattler_AI +_08019A9C: .4byte gBattlerAttacker _08019AA0: .4byte 0xffffff00 _08019AA4: .4byte gUnknown_2023D74 _08019AA8: .4byte gUnknown_81D8BA9 @@ -5631,7 +5631,7 @@ _08019B38: .4byte gUnknown_2023D74 _08019B3C: .4byte gUnknown_81D8BFC _08019B40: ldr r1, _08019BE8 @ =gBattleMons - ldr r0, _08019BEC @ =sBattler_AI + ldr r0, _08019BEC @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -5690,7 +5690,7 @@ _08019BA8: cmp r7, 0x2 bne _08019BD4 ldr r4, _08019C08 @ =gActiveBattler - ldr r0, _08019BEC @ =sBattler_AI + ldr r0, _08019BEC @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldrb r1, [r4] @@ -5703,7 +5703,7 @@ _08019BA8: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _08019BD4: @@ -5718,7 +5718,7 @@ _08019BD4: bx r1 .align 2, 0 _08019BE8: .4byte gBattleMons -_08019BEC: .4byte sBattler_AI +_08019BEC: .4byte gBattlerAttacker _08019BF0: .4byte gBattleMoves _08019BF4: .4byte gCurrentMove _08019BF8: .4byte gUnknown_2023D74 @@ -6148,7 +6148,7 @@ AbilityBattleEffects: @ 8019F18 lsrs r4, 16 movs r0, 0 mov r9, r0 - ldr r5, _08019F74 @ =sBattler_AI + ldr r5, _08019F74 @ =gBattlerAttacker ldr r1, _08019F78 @ =gBattlersCount ldrb r0, [r5] ldrb r1, [r1] @@ -6172,7 +6172,7 @@ _08019F54: ldr r0, _08019F80 @ =gPlayerParty b _08019F94 .align 2, 0 -_08019F74: .4byte sBattler_AI +_08019F74: .4byte gBattlerAttacker _08019F78: .4byte gBattlersCount _08019F7C: .4byte gBattlerPartyIndexes _08019F80: .4byte gPlayerParty @@ -6363,7 +6363,7 @@ _0801A0DC: .4byte _0801BB78 .4byte _0801B8B4 _0801A12C: - ldr r2, _0801A160 @ =sBattler_AI + ldr r2, _0801A160 @ =gBattlerAttacker ldr r0, _0801A164 @ =gBattlersCount ldrb r1, [r2] adds r3, r0, 0 @@ -6393,7 +6393,7 @@ _0801A152: _0801A15C: bl _0801BBAA .align 2, 0 -_0801A160: .4byte sBattler_AI +_0801A160: .4byte gBattlerAttacker _0801A164: .4byte gBattlersCount _0801A168: cmp r0, 0x16 @@ -6699,7 +6699,7 @@ _0801A3E0: bne _0801A3F4 bl _0801BBAA _0801A3F4: - ldr r0, _0801A414 @ =sBattler_AI + ldr r0, _0801A414 @ =gBattlerAttacker mov r1, r10 strb r1, [r0] mov r2, r8 @@ -6715,7 +6715,7 @@ _0801A40C: bl _0801BBAA .align 2, 0 _0801A410: .4byte gBattleMons -_0801A414: .4byte sBattler_AI +_0801A414: .4byte gBattlerAttacker _0801A418: cmp r5, 0x36 bne _0801A41E @@ -6869,7 +6869,7 @@ _0801A52C: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl _0801BB5A @@ -6978,7 +6978,7 @@ _0801A636: bl _0801BBAA _0801A646: ldr r1, _0801A684 @ =gBattleMons - ldr r0, _0801A688 @ =sBattler_AI + ldr r0, _0801A688 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7007,7 +7007,7 @@ _0801A66C: _0801A67C: .4byte gUnknown_8250104 _0801A680: .4byte 0x0000ffff _0801A684: .4byte gBattleMons -_0801A688: .4byte sBattler_AI +_0801A688: .4byte gBattlerAttacker _0801A68C: .4byte gUnknown_2023DD0 _0801A690: .4byte gUnknown_2023D74 _0801A694: .4byte gUnknown_81D946E @@ -7045,7 +7045,7 @@ _0801A6BE: b _0801A832 _0801A6D0: ldr r1, _0801A6EC @ =gUnknown_2023E8C - ldr r0, _0801A6F0 @ =sBattler_AI + ldr r0, _0801A6F0 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -7059,7 +7059,7 @@ _0801A6D0: .align 2, 0 _0801A6E8: .4byte gBattleMoves _0801A6EC: .4byte gUnknown_2023E8C -_0801A6F0: .4byte sBattler_AI +_0801A6F0: .4byte gBattlerAttacker _0801A6F4: .4byte gUnknown_2023D74 _0801A6F8: .4byte gUnknown_81D93BE _0801A6FC: @@ -7089,7 +7089,7 @@ _0801A716: b _0801A832 _0801A728: ldr r1, _0801A744 @ =gUnknown_2023E8C - ldr r0, _0801A748 @ =sBattler_AI + ldr r0, _0801A748 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -7103,7 +7103,7 @@ _0801A728: .align 2, 0 _0801A740: .4byte gBattleMoves _0801A744: .4byte gUnknown_2023E8C -_0801A748: .4byte sBattler_AI +_0801A748: .4byte gBattlerAttacker _0801A74C: .4byte gUnknown_2023D74 _0801A750: .4byte gUnknown_81D93BE _0801A754: @@ -7146,7 +7146,7 @@ _0801A768: ldr r0, _0801A7C0 @ =gUnknown_2023E82 strb r3, [r0, 0x5] ldr r1, _0801A7C4 @ =gUnknown_2023E8C - ldr r0, _0801A7C8 @ =sBattler_AI + ldr r0, _0801A7C8 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -7162,7 +7162,7 @@ _0801A7B8: .4byte gBattleMons _0801A7BC: .4byte gBattleResources _0801A7C0: .4byte gUnknown_2023E82 _0801A7C4: .4byte gUnknown_2023E8C -_0801A7C8: .4byte sBattler_AI +_0801A7C8: .4byte gBattlerAttacker _0801A7CC: .4byte gUnknown_2023D74 _0801A7D0: .4byte gUnknown_81D93F7 _0801A7D4: @@ -7187,7 +7187,7 @@ _0801A7F8: ldr r0, _0801A814 @ =gUnknown_2023E82 strb r4, [r0, 0x5] ldr r1, _0801A818 @ =gUnknown_2023E8C - ldr r0, _0801A81C @ =sBattler_AI + ldr r0, _0801A81C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -7201,7 +7201,7 @@ _0801A7F8: .align 2, 0 _0801A814: .4byte gUnknown_2023E82 _0801A818: .4byte gUnknown_2023E8C -_0801A81C: .4byte sBattler_AI +_0801A81C: .4byte gBattlerAttacker _0801A820: .4byte gUnknown_2023D74 _0801A824: .4byte gUnknown_81D93F7 _0801A828: @@ -7229,7 +7229,7 @@ _0801A83C: cmp r0, r3 bne _0801A898 ldr r1, _0801A878 @ =gUnknown_2023E8C - ldr r0, _0801A87C @ =sBattler_AI + ldr r0, _0801A87C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 @@ -7246,7 +7246,7 @@ _0801A86C: .4byte gUnknown_2023D74 _0801A870: .4byte gUnknown_81D93F6 _0801A874: .4byte gBattleMons _0801A878: .4byte gUnknown_2023E8C -_0801A87C: .4byte sBattler_AI +_0801A87C: .4byte gBattlerAttacker _0801A880: .4byte gUnknown_81D93E1 _0801A884: ldr r1, _0801A890 @ =gUnknown_2023D74 @@ -7439,7 +7439,7 @@ _0801AA5C: bl _0801BBAA _0801AA6C: ldr r1, _0801AAF8 @ =gBattleMons - ldr r0, _0801AAFC @ =sBattler_AI + ldr r0, _0801AAFC @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7507,7 +7507,7 @@ _0801AAE4: .align 2, 0 _0801AAF4: .4byte gMoveResultFlags _0801AAF8: .4byte gBattleMons -_0801AAFC: .4byte sBattler_AI +_0801AAFC: .4byte gBattlerAttacker _0801AB00: .4byte gUnknown_2023E8C _0801AB04: .4byte gUnknown_2023ECC _0801AB08: .4byte gBattlerTarget @@ -7525,7 +7525,7 @@ _0801AB1C: bl _0801BBAA _0801AB2C: ldr r1, _0801ABEC @ =gBattleMons - ldr r0, _0801ABF0 @ =sBattler_AI + ldr r0, _0801ABF0 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7618,7 +7618,7 @@ _0801ABC8: .align 2, 0 _0801ABE8: .4byte gMoveResultFlags _0801ABEC: .4byte gBattleMons -_0801ABF0: .4byte sBattler_AI +_0801ABF0: .4byte gBattlerAttacker _0801ABF4: .4byte gUnknown_2023E8C _0801ABF8: .4byte gUnknown_2023ECC _0801ABFC: .4byte gBattlerTarget @@ -7637,7 +7637,7 @@ _0801AC14: bl _0801BBAA _0801AC24: ldr r1, _0801ACC8 @ =gBattleMons - ldr r0, _0801ACCC @ =sBattler_AI + ldr r0, _0801ACCC @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7715,7 +7715,7 @@ _0801ACA4: .align 2, 0 _0801ACC4: .4byte gMoveResultFlags _0801ACC8: .4byte gBattleMons -_0801ACCC: .4byte sBattler_AI +_0801ACCC: .4byte gBattlerAttacker _0801ACD0: .4byte gUnknown_2023E8C _0801ACD4: .4byte gUnknown_2023ECC _0801ACD8: .4byte gBattlerTarget @@ -7734,7 +7734,7 @@ _0801ACF0: bl _0801BBAA _0801AD00: ldr r1, _0801ADA4 @ =gBattleMons - ldr r0, _0801ADA8 @ =sBattler_AI + ldr r0, _0801ADA8 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7812,7 +7812,7 @@ _0801AD80: .align 2, 0 _0801ADA0: .4byte gMoveResultFlags _0801ADA4: .4byte gBattleMons -_0801ADA8: .4byte sBattler_AI +_0801ADA8: .4byte gBattlerAttacker _0801ADAC: .4byte gUnknown_2023E8C _0801ADB0: .4byte gUnknown_2023ECC _0801ADB4: .4byte gBattlerTarget @@ -7831,7 +7831,7 @@ _0801ADCC: bl _0801BBAA _0801ADDC: ldr r1, _0801AE80 @ =gBattleMons - ldr r0, _0801AE84 @ =sBattler_AI + ldr r0, _0801AE84 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -7909,7 +7909,7 @@ _0801AE5C: .align 2, 0 _0801AE7C: .4byte gMoveResultFlags _0801AE80: .4byte gBattleMons -_0801AE84: .4byte sBattler_AI +_0801AE84: .4byte gBattlerAttacker _0801AE88: .4byte gUnknown_2023E8C _0801AE8C: .4byte gBattleMoves _0801AE90: .4byte gUnknown_2023ECC @@ -7928,7 +7928,7 @@ _0801AEA8: bl _0801BBAA _0801AEB8: ldr r5, _0801AFEC @ =gBattleMons - ldr r7, _0801AFF0 @ =sBattler_AI + ldr r7, _0801AFF0 @ =gBattlerAttacker ldrb r1, [r7] movs r6, 0x58 adds r0, r1, 0 @@ -8074,7 +8074,7 @@ _0801AFBE: .align 2, 0 _0801AFE8: .4byte gMoveResultFlags _0801AFEC: .4byte gBattleMons -_0801AFF0: .4byte sBattler_AI +_0801AFF0: .4byte gBattlerAttacker _0801AFF4: .4byte gUnknown_2023E8C _0801AFF8: .4byte gBattleMoves _0801AFFC: .4byte gUnknown_2023ECC @@ -8417,7 +8417,7 @@ _0801B304: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl _0801BBC6 @@ -8589,7 +8589,7 @@ _0801B48E: ldrb r0, [r0] strb r0, [r1, 0x3] ldr r1, _0801B4C4 @ =gBattleScripting - ldr r0, _0801B4C8 @ =sBattler_AI + ldr r0, _0801B4C8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r1, 0x17] bl BattleScriptPushCursor @@ -8607,7 +8607,7 @@ _0801B4B8: .4byte gUnknown_2023DD0 _0801B4BC: .4byte 0xffffbfff _0801B4C0: .4byte gUnknown_2023E82 _0801B4C4: .4byte gBattleScripting -_0801B4C8: .4byte sBattler_AI +_0801B4C8: .4byte gBattlerAttacker _0801B4CC: .4byte gUnknown_2023D74 _0801B4D0: .4byte gUnknown_81D94CE _0801B4D4: @@ -9533,7 +9533,7 @@ BattleScriptExecute: @ 801BBE4 lsls r0, 24 lsrs r0, 22 adds r2, r0 - ldr r1, _0801BC18 @ =gUnknown_3004F84 + ldr r1, _0801BC18 @ =gBattleMainFunc ldr r0, [r1] str r0, [r2] ldr r0, _0801BC1C @ =RunBattleScriptCommands_PopCallbacksStack @@ -9545,7 +9545,7 @@ BattleScriptExecute: @ 801BBE4 .align 2, 0 _0801BC10: .4byte gUnknown_2023D74 _0801BC14: .4byte gBattleResources -_0801BC18: .4byte gUnknown_3004F84 +_0801BC18: .4byte gBattleMainFunc _0801BC1C: .4byte RunBattleScriptCommands_PopCallbacksStack _0801BC20: .4byte gUnknown_2023BE3 thumb_func_end BattleScriptExecute @@ -9568,7 +9568,7 @@ BattleScriptPushCursorAndCallback: @ 801BC24 lsls r0, 24 lsrs r0, 22 adds r2, r0 - ldr r1, _0801BC60 @ =gUnknown_3004F84 + ldr r1, _0801BC60 @ =gBattleMainFunc ldr r0, [r1] str r0, [r2] ldr r0, _0801BC64 @ =sub_8015C74 @@ -9579,7 +9579,7 @@ BattleScriptPushCursorAndCallback: @ 801BC24 .align 2, 0 _0801BC58: .4byte gUnknown_2023D74 _0801BC5C: .4byte gBattleResources -_0801BC60: .4byte gUnknown_3004F84 +_0801BC60: .4byte gBattleMainFunc _0801BC64: .4byte sub_8015C74 thumb_func_end BattleScriptPushCursorAndCallback @@ -9604,7 +9604,7 @@ sub_801BC68: @ 801BC68 str r1, [sp, 0xC] add r0, sp, 0x4 strb r1, [r0] - ldr r4, _0801BCB4 @ =gUnknown_2023D68 + ldr r4, _0801BCB4 @ =gLastUsedItem ldr r1, _0801BCB8 @ =gBattleMons movs r0, 0x58 muls r0, r7 @@ -9624,7 +9624,7 @@ sub_801BC68: @ 801BC68 ldrb r0, [r0, 0x1A] b _0801BCD4 .align 2, 0 -_0801BCB4: .4byte gUnknown_2023D68 +_0801BCB4: .4byte gLastUsedItem _0801BCB8: .4byte gBattleMons _0801BCBC: .4byte gEnigmaBerries _0801BCC0: @@ -9639,7 +9639,7 @@ _0801BCC0: _0801BCD4: mov r9, r0 ldr r1, _0801BCFC @ =gBattleMons - ldr r0, _0801BD00 @ =sBattler_AI + ldr r0, _0801BD00 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 @@ -9659,7 +9659,7 @@ _0801BCD4: b _0801BD1E .align 2, 0 _0801BCFC: .4byte gBattleMons -_0801BD00: .4byte sBattler_AI +_0801BD00: .4byte gBattlerAttacker _0801BD04: .4byte gEnigmaBerries _0801BD08: ldr r0, [sp, 0x14] @@ -9761,7 +9761,7 @@ _0801BDD0: ldr r0, _0801BDF4 @ =gPotentialItemEffectBattler strb r7, [r0] ldr r1, _0801BDF8 @ =gActiveBattler - ldr r0, _0801BDFC @ =sBattler_AI + ldr r0, _0801BDFC @ =gBattlerAttacker strb r7, [r0] strb r7, [r1] ldr r0, _0801BE00 @ =gUnknown_81D95D9 @@ -9772,7 +9772,7 @@ _0801BDEC: .4byte gBattleMons _0801BDF0: .4byte gBattleScripting _0801BDF4: .4byte gPotentialItemEffectBattler _0801BDF8: .4byte gActiveBattler -_0801BDFC: .4byte sBattler_AI +_0801BDFC: .4byte gBattlerAttacker _0801BE00: .4byte gUnknown_81D95D9 _0801BE04: ldr r1, _0801BE2C @ =gBattleMons @@ -9991,7 +9991,7 @@ _0801BFE0: movs r0, 0 movs r2, 0 movs r3, 0x1 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldr r0, _0801C028 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution @@ -10039,7 +10039,7 @@ _0801C066: ldr r0, _0801C088 @ =gPotentialItemEffectBattler strb r7, [r0] ldr r1, _0801C08C @ =gActiveBattler - ldr r0, _0801C090 @ =sBattler_AI + ldr r0, _0801C090 @ =gBattlerAttacker strb r7, [r0] strb r7, [r1] ldr r0, _0801C094 @ =gUnknown_81D95D9 @@ -10050,7 +10050,7 @@ _0801C080: .4byte gBattleMons _0801C084: .4byte gBattleScripting _0801C088: .4byte gPotentialItemEffectBattler _0801C08C: .4byte gActiveBattler -_0801C090: .4byte sBattler_AI +_0801C090: .4byte gBattlerAttacker _0801C094: .4byte gUnknown_81D95D9 _0801C098: movs r0, 0x58 @@ -10492,7 +10492,7 @@ _0801C3D8: strb r6, [r1, 0x3] subs r0, 0xD3 strb r0, [r1, 0x4] - ldr r0, _0801C410 @ =gUnknown_2023D6E + ldr r0, _0801C410 @ =gEffectBattler strb r7, [r0] ldr r1, _0801C414 @ =gBattleScripting movs r0, 0x11 @@ -10502,7 +10502,7 @@ _0801C3D8: .align 2, 0 _0801C408: .4byte gBattleTextBuff1 _0801C40C: .4byte gBattleTextBuff2 -_0801C410: .4byte gUnknown_2023D6E +_0801C410: .4byte gEffectBattler _0801C414: .4byte gBattleScripting _0801C418: movs r0, 0x58 @@ -10536,7 +10536,7 @@ _0801C440: strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r0, _0801C464 @ =gUnknown_2023D6E + ldr r0, _0801C464 @ =gEffectBattler strb r7, [r0] ldr r1, _0801C468 @ =gBattleScripting movs r0, 0x12 @@ -10545,7 +10545,7 @@ _0801C440: b _0801C506 .align 2, 0 _0801C460: .4byte gBattleTextBuff1 -_0801C464: .4byte gUnknown_2023D6E +_0801C464: .4byte gEffectBattler _0801C468: .4byte gBattleScripting _0801C46C: movs r0, 0x58 @@ -10579,7 +10579,7 @@ _0801C494: strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r0, _0801C4B8 @ =gUnknown_2023D6E + ldr r0, _0801C4B8 @ =gEffectBattler strb r7, [r0] ldr r1, _0801C4BC @ =gBattleScripting movs r0, 0x13 @@ -10588,7 +10588,7 @@ _0801C494: b _0801C56C .align 2, 0 _0801C4B4: .4byte gBattleTextBuff1 -_0801C4B8: .4byte gUnknown_2023D6E +_0801C4B8: .4byte gEffectBattler _0801C4BC: .4byte gBattleScripting _0801C4C0: movs r0, 0x58 @@ -10622,7 +10622,7 @@ _0801C4E8: strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r0, _0801C51C @ =gUnknown_2023D6E + ldr r0, _0801C51C @ =gEffectBattler strb r7, [r0] ldr r1, _0801C520 @ =gBattleScripting movs r0, 0x14 @@ -10638,7 +10638,7 @@ _0801C506: b _0801C95A .align 2, 0 _0801C518: .4byte gBattleTextBuff1 -_0801C51C: .4byte gUnknown_2023D6E +_0801C51C: .4byte gEffectBattler _0801C520: .4byte gBattleScripting _0801C524: .4byte gUnknown_81D9679 _0801C528: @@ -10672,7 +10672,7 @@ _0801C550: strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r0, _0801C580 @ =gUnknown_2023D6E + ldr r0, _0801C580 @ =gEffectBattler strb r7, [r0] ldr r1, _0801C584 @ =gBattleScripting movs r0, 0x15 @@ -10688,7 +10688,7 @@ _0801C56C: b _0801C95A .align 2, 0 _0801C57C: .4byte gBattleTextBuff1 -_0801C580: .4byte gUnknown_2023D6E +_0801C580: .4byte gEffectBattler _0801C584: .4byte gBattleScripting _0801C588: .4byte gUnknown_81D9679 _0801C58C: @@ -10822,7 +10822,7 @@ _0801C638: strb r2, [r0, 0x6] subs r1, 0xD3 strb r1, [r0, 0x7] - ldr r0, _0801C6B4 @ =gUnknown_2023D6E + ldr r0, _0801C6B4 @ =gEffectBattler strb r7, [r0] ldr r1, _0801C6B8 @ =gBattleScripting mov r0, r10 @@ -10840,7 +10840,7 @@ _0801C638: _0801C6A8: .4byte gUnknown_2023BFC _0801C6AC: .4byte gBattleTextBuff1 _0801C6B0: .4byte gBattleTextBuff2 -_0801C6B4: .4byte gUnknown_2023D6E +_0801C6B4: .4byte gEffectBattler _0801C6B8: .4byte gBattleScripting _0801C6BC: .4byte gUnknown_81D9679 _0801C6C0: @@ -11178,7 +11178,7 @@ _0801C95A: ldr r0, _0801C990 @ =gPotentialItemEffectBattler strb r7, [r0] ldr r4, _0801C994 @ =gActiveBattler - ldr r0, _0801C998 @ =sBattler_AI + ldr r0, _0801C998 @ =gBattlerAttacker strb r7, [r0] strb r7, [r4] ldr r3, [sp, 0xC] @@ -11196,7 +11196,7 @@ _0801C988: .4byte gUnknown_2023E82 _0801C98C: .4byte gBattleScripting _0801C990: .4byte gPotentialItemEffectBattler _0801C994: .4byte gActiveBattler -_0801C998: .4byte sBattler_AI +_0801C998: .4byte gBattlerAttacker _0801C99C: movs r0, 0x58 muls r0, r7 @@ -11254,7 +11254,7 @@ _0801C9FC: bcc _0801CA08 b _0801CFA6 _0801CA08: - ldr r4, _0801CA30 @ =gUnknown_2023D68 + ldr r4, _0801CA30 @ =gLastUsedItem ldr r1, _0801CA34 @ =gBattleMons movs r0, 0x58 muls r0, r7 @@ -11274,7 +11274,7 @@ _0801CA08: b _0801CA4C .align 2, 0 _0801CA2C: .4byte gBattlersCount -_0801CA30: .4byte gUnknown_2023D68 +_0801CA30: .4byte gLastUsedItem _0801CA34: .4byte gBattleMons _0801CA38: .4byte gEnigmaBerries _0801CA3C: @@ -11719,7 +11719,7 @@ _0801CE08: movs r1, 0x28 movs r2, 0 movs r3, 0x4 - bl EmitSetMonData + bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution b _0801CFA6 @@ -11852,7 +11852,7 @@ _0801CF10: ldr r0, _0801CFC4 @ =0x0000ffff cmp r1, r0 beq _0801CFA6 - ldr r0, _0801CFC8 @ =sBattler_AI + ldr r0, _0801CFC8 @ =gBattlerAttacker ldrb r3, [r0] cmp r3, r2 beq _0801CFA6 @@ -11867,7 +11867,7 @@ _0801CF10: beq _0801CFA6 cmp r1, 0 beq _0801CFA6 - ldr r0, _0801CFD0 @ =gUnknown_2023D68 + ldr r0, _0801CFD0 @ =gLastUsedItem mov r2, sp ldrh r2, [r2, 0x14] strh r2, [r0] @@ -11921,9 +11921,9 @@ _0801CFB8: .4byte gMoveResultFlags _0801CFBC: .4byte gUnknown_2023ECC _0801CFC0: .4byte gBattlerTarget _0801CFC4: .4byte 0x0000ffff -_0801CFC8: .4byte sBattler_AI +_0801CFC8: .4byte gBattlerAttacker _0801CFCC: .4byte gBattleMons -_0801CFD0: .4byte gUnknown_2023D68 +_0801CFD0: .4byte gLastUsedItem _0801CFD4: .4byte gPotentialItemEffectBattler _0801CFD8: .4byte gBattleScripting _0801CFDC: .4byte gUnknown_2023D74 @@ -12096,7 +12096,7 @@ _0801D0A0: .4byte _0801D39C .4byte _0801D2A4 _0801D1A4: - ldr r0, _0801D284 @ =sBattler_AI + ldr r0, _0801D284 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide movs r1, 0x1 @@ -12121,7 +12121,7 @@ _0801D1A4: beq _0801D1D6 b _0801D2EC _0801D1D6: - ldr r0, _0801D284 @ =sBattler_AI + ldr r0, _0801D284 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -12137,7 +12137,7 @@ _0801D1E6: bl __modsi3 lsls r0, 24 lsrs r5, r0, 24 - ldr r6, _0801D284 @ =sBattler_AI + ldr r6, _0801D284 @ =gBattlerAttacker ldrb r3, [r6] cmp r5, r3 beq _0801D1E6 @@ -12207,7 +12207,7 @@ _0801D25E: strb r1, [r0] b _0801D39C .align 2, 0 -_0801D284: .4byte sBattler_AI +_0801D284: .4byte gBattlerAttacker _0801D288: .4byte gSideTimers _0801D28C: .4byte gBattleMons _0801D290: .4byte gBattlersCount @@ -12216,7 +12216,7 @@ _0801D298: .4byte gBitTable _0801D29C: .4byte gBattleMoves _0801D2A0: .4byte gUnknown_2023ECC _0801D2A4: - ldr r0, _0801D2B8 @ =sBattler_AI + ldr r0, _0801D2B8 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition adds r1, r0, 0 @@ -12226,9 +12226,9 @@ _0801D2A4: eors r0, r2 b _0801D34E .align 2, 0 -_0801D2B8: .4byte sBattler_AI +_0801D2B8: .4byte gBattlerAttacker _0801D2BC: - ldr r0, _0801D2F0 @ =sBattler_AI + ldr r0, _0801D2F0 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide movs r1, 0x1 @@ -12255,7 +12255,7 @@ _0801D2EC: adds r5, r4, 0 b _0801D39C .align 2, 0 -_0801D2F0: .4byte sBattler_AI +_0801D2F0: .4byte gBattlerAttacker _0801D2F4: .4byte gSideTimers _0801D2F8: .4byte gBattleMons _0801D2FC: @@ -12269,7 +12269,7 @@ _0801D2FC: ands r6, r0 cmp r6, 0 beq _0801D378 - ldr r0, _0801D334 @ =sBattler_AI + ldr r0, _0801D334 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 @@ -12284,7 +12284,7 @@ _0801D2FC: b _0801D34E .align 2, 0 _0801D330: .4byte gBattleTypeFlags -_0801D334: .4byte sBattler_AI +_0801D334: .4byte gBattlerAttacker _0801D338: movs r0, 0x3 b _0801D34E @@ -12318,7 +12318,7 @@ _0801D34E: _0801D370: .4byte gAbsentBattlerFlags _0801D374: .4byte gBitTable _0801D378: - ldr r0, _0801D394 @ =sBattler_AI + ldr r0, _0801D394 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition adds r1, r0, 0 @@ -12331,12 +12331,12 @@ _0801D378: lsrs r5, r0, 24 b _0801D39C .align 2, 0 -_0801D394: .4byte sBattler_AI +_0801D394: .4byte gBattlerAttacker _0801D398: - ldr r0, _0801D3B8 @ =sBattler_AI + ldr r0, _0801D3B8 @ =gBattlerAttacker ldrb r5, [r0] _0801D39C: - ldr r0, _0801D3B8 @ =sBattler_AI + ldr r0, _0801D3B8 @ =gBattlerAttacker ldrb r0, [r0] ldr r1, _0801D3BC @ =gBattleStruct ldr r1, [r1] @@ -12350,7 +12350,7 @@ _0801D39C: pop {r1} bx r1 .align 2, 0 -_0801D3B8: .4byte sBattler_AI +_0801D3B8: .4byte gBattlerAttacker _0801D3BC: .4byte gBattleStruct thumb_func_end GetMoveTarget @@ -12427,7 +12427,7 @@ sub_801D438: @ 801D438 ands r0, r1 cmp r0, 0 bne _0801D4F4 - ldr r4, _0801D500 @ =sBattler_AI + ldr r4, _0801D500 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -12480,7 +12480,7 @@ _0801D4B0: movs r6, 0x46 _0801D4BE: ldr r5, _0801D504 @ =gBattleMons - ldr r0, _0801D500 @ =sBattler_AI + ldr r0, _0801D500 @ =gBattlerAttacker mov r8, r0 ldrb r0, [r0] movs r7, 0x58 @@ -12511,7 +12511,7 @@ _0801D4F4: .align 2, 0 _0801D4F8: .4byte gBattleTypeFlags _0801D4FC: .4byte 0x00010002 -_0801D500: .4byte sBattler_AI +_0801D500: .4byte gBattlerAttacker _0801D504: .4byte gBattleMons _0801D508: .4byte 0x00000827 _0801D50C: .4byte 0x00000821 @@ -12560,7 +12560,7 @@ _0801D564: movs r1, 0xFF ands r1, r0 ldr r2, _0801D608 @ =gBattleMons - ldr r0, _0801D60C @ =sBattler_AI + ldr r0, _0801D60C @ =gBattlerAttacker ldrb r3, [r0] movs r0, 0x58 muls r0, r3 @@ -12614,7 +12614,7 @@ _0801D5B6: ldr r0, _0801D618 @ =gUnknown_2023D48 ldrb r0, [r0] lsls r0, 1 - ldr r1, _0801D60C @ =sBattler_AI + ldr r1, _0801D60C @ =gBattlerAttacker ldrb r2, [r1] movs r1, 0x58 muls r1, r2 @@ -12638,7 +12638,7 @@ _0801D5B6: b _0801D732 .align 2, 0 _0801D608: .4byte gBattleMons -_0801D60C: .4byte sBattler_AI +_0801D60C: .4byte gBattlerAttacker _0801D610: .4byte gCurrentMove _0801D614: .4byte gBitTable _0801D618: .4byte gUnknown_2023D48 @@ -12650,7 +12650,7 @@ _0801D62C: .4byte gBattlerTarget _0801D630: .4byte gUnknown_2023DD0 _0801D634: ldr r5, _0801D6B8 @ =gBattleMons - ldr r2, _0801D6BC @ =sBattler_AI + ldr r2, _0801D6BC @ =gBattlerAttacker mov r8, r2 ldrb r0, [r2] movs r7, 0x58 @@ -12717,7 +12717,7 @@ _0801D6AA: b _0801D6E2 .align 2, 0 _0801D6B8: .4byte gBattleMons -_0801D6BC: .4byte sBattler_AI +_0801D6BC: .4byte gBattlerAttacker _0801D6C0: .4byte gBattlersCount _0801D6C4: .4byte gUnknown_2023D74 _0801D6C8: .4byte gUnknown_81D9504 @@ -12742,7 +12742,7 @@ _0801D6E8: .4byte gUnknown_2023E82 _0801D6EC: .4byte gUnknown_2023D74 _0801D6F0: .4byte gUnknown_81D94F2 _0801D6F4: - ldr r4, _0801D744 @ =sBattler_AI + ldr r4, _0801D744 @ =gBattlerAttacker ldrb r1, [r4] movs r0, 0x58 muls r1, r0 @@ -12784,7 +12784,7 @@ _0801D738: pop {r1} bx r1 .align 2, 0 -_0801D744: .4byte sBattler_AI +_0801D744: .4byte gBattlerAttacker _0801D748: .4byte gBattleMons _0801D74C: .4byte gBattleMoveDamage _0801D750: .4byte gBattlerTarget diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s index f775bd8dc..fedf89c50 100644 --- a/asm/berry_crush_2.s +++ b/asm/berry_crush_2.s @@ -146,7 +146,7 @@ _0814BC44: bl sub_80FA42C b _0814BC66 _0814BC4A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _0814BC66 @@ -362,7 +362,7 @@ _0814BDCC: bl sub_80FA42C b _0814BDFC _0814BDD2: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814BE02 @@ -497,7 +497,7 @@ _0814BED4: bl sub_80FA42C b _0814BFC0 _0814BEDA: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814BFC6 @@ -519,7 +519,7 @@ _0814BEDA: bl SendBlock b _0814BFC0 _0814BF0A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814BFC6 @@ -653,7 +653,7 @@ _0814C008: bl sub_80FA42C b _0814C108 _0814C01A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C10E @@ -725,7 +725,7 @@ _0814C080: .align 2, 0 _0814C0AC: .4byte sub_814DB84 _0814C0B0: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C10E @@ -751,7 +751,7 @@ _0814C0D2: bl sub_80FA42C b _0814C108 _0814C0E4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C10E @@ -907,7 +907,7 @@ _0814C1FC: bl sub_80FA42C b _0814C23C _0814C21E: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C242 @@ -951,7 +951,7 @@ _0814C262: beq _0814C298 b _0814C2EC _0814C26C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C2F2 @@ -972,7 +972,7 @@ _0814C292: bl sub_80FA42C b _0814C2EC _0814C298: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814C2F2 @@ -2070,7 +2070,7 @@ _0814CADA: strh r0, [r4, 0x10] b _0814CB12 _0814CAF4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814CB18 @@ -2172,7 +2172,7 @@ _0814CB8A: bl SetGpuReg b _0814CBFC _0814CBBC: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814CC02 @@ -2273,7 +2273,7 @@ _0814CC72: bl SendBlock b _0814CF8E _0814CC8A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _0814CC96 @@ -2618,7 +2618,7 @@ _0814CF24: bl SendBlock b _0814CF8E _0814CF30: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814CF94 @@ -2849,7 +2849,7 @@ _0814D100: bl sub_80FA42C b _0814D178 _0814D106: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814D17E @@ -3031,7 +3031,7 @@ _0814D260: bl sub_80FA42C b _0814D30C _0814D266: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814D312 @@ -3047,7 +3047,7 @@ _0814D266: bl SendBlock b _0814D30C _0814D288: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814D312 @@ -3319,7 +3319,7 @@ _0814D482: bl sub_80FA42C b _0814D4B8 _0814D488: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814D4BE diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s index b10f29f8d..afab275ab 100644 --- a/asm/berry_crush_3.s +++ b/asm/berry_crush_3.s @@ -341,7 +341,7 @@ _0814D8D4: bl sub_80FA42C b _0814D9BA _0814D8DA: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0814D9C0 diff --git a/asm/cable_club.s b/asm/cable_club.s index 28cbfc49c..a20b4310c 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -439,7 +439,7 @@ sub_8080A4C: @ 8080A4C adds r4, r0, r1 movs r0, 0 strh r0, [r4, 0xE] - bl sub_800AA48 + bl IsLinkMaster lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -644,7 +644,7 @@ _08080C3C: beq _08080C5C movs r0, 0x5 bl PlaySE - bl sub_800A5BC + bl CheckShouldAdvanceLinkState ldr r0, _08080C64 @ =gTasks lsls r1, r6, 2 adds r1, r6 @@ -1367,7 +1367,7 @@ sub_80811FC: @ 80811FC ldrsh r2, [r4, r3] cmp r2, 0 bne _08081230 - bl sub_8009804 + bl OpenLink bl sub_800A270 ldr r0, _0808122C @ =sub_8081A90 movs r1, 0x50 @@ -1405,7 +1405,7 @@ sub_808124C: @ 808124C lsrs r0, 24 cmp r0, 0x1 bls _08081292 - bl sub_800AA48 + bl IsLinkMaster lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1450,7 +1450,7 @@ sub_80812A0: @ 80812A0 lsls r0, 24 cmp r4, r0 bne _080812CA - bl sub_800A5BC + bl CheckShouldAdvanceLinkState ldr r0, _080812D0 @ =gTasks lsls r1, r5, 2 adds r1, r5 @@ -1790,7 +1790,7 @@ _08081560: strh r0, [r6] b _0808160A _0808156A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0808160A @@ -1901,7 +1901,7 @@ _08081640: strb r0, [r4] b _0808165C _0808164C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0808165C @@ -2283,7 +2283,7 @@ _08081950: .align 2, 0 _08081958: .4byte gUnknown_2031DA4 _0808195C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08081970 diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index 13a4d95b5..c6e46517e 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -385,7 +385,7 @@ _08150B08: bl sub_80FA42C b _08150BDC _08150B16: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08150BFC @@ -652,7 +652,7 @@ _08150D28: bl sub_815F138 b _08150D52 _08150D3A: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08150D74 @@ -673,7 +673,7 @@ _08150D52: .align 2, 0 _08150D60: .4byte gUnknown_203F3E0 _08150D64: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08150D74 @@ -1025,7 +1025,7 @@ _08150FFE: ldr r1, [r6] b _0815106A _08151010: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08151092 @@ -1131,7 +1131,7 @@ _081510BE: ldr r1, [r6] b _08151140 _081510DA: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0815118A @@ -1276,7 +1276,7 @@ _081511DC: ldr r1, [r6] b _0815128A _08151202: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _081512AA @@ -1463,7 +1463,7 @@ _0815136A: .align 2, 0 _08151388: .4byte gUnknown_203F3E0 _0815138C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08151480 @@ -1984,7 +1984,7 @@ _0815177E: _081517A0: .4byte gUnknown_203F3E0 _081517A4: .4byte 0x0000318c _081517A8: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08151836 diff --git a/asm/dragon.s b/asm/dragon.s index 956e8b1e0..5f86b5eca 100644 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -266,7 +266,7 @@ sub_80B7448: @ 80B7448 ldr r0, _080B74A0 @ =gBattleAnimArgs ldrh r0, [r0] strh r0, [r6, 0x3A] - ldr r4, _080B74A4 @ =sBattler_AI + ldr r4, _080B74A4 @ =gBattlerAttacker ldrb r0, [r4] movs r1, 0 bl sub_8076B2C @@ -284,7 +284,7 @@ sub_80B7448: @ 80B7448 .align 2, 0 _080B749C: .4byte gBattleAnimAttacker _080B74A0: .4byte gBattleAnimArgs -_080B74A4: .4byte sBattler_AI +_080B74A4: .4byte gBattlerAttacker _080B74A8: lsrs r0, r1, 17 _080B74AA: diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index b2eb846e7..082aa0103 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -406,7 +406,7 @@ _0807DE1E: bl sub_800AB9C b _0807DE32 _0807DE24: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0807DE50 diff --git a/asm/fighting.s b/asm/fighting.s index 240e2bbb0..b933e88e6 100644 --- a/asm/fighting.s +++ b/asm/fighting.s @@ -1037,7 +1037,7 @@ sub_80B107C: @ 80B107C ldrsh r0, [r0, r1] cmp r0, 0 bne _080B10D8 - ldr r4, _080B10CC @ =sBattler_AI + ldr r4, _080B10CC @ =gBattlerAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord @@ -1066,7 +1066,7 @@ sub_80B107C: @ 80B107C b _080B10F4 .align 2, 0 _080B10C8: .4byte gBattleAnimArgs -_080B10CC: .4byte sBattler_AI +_080B10CC: .4byte gBattlerAttacker _080B10D0: .4byte gBattleAnimAttacker _080B10D4: .4byte gBattleAnimTarget _080B10D8: @@ -1341,7 +1341,7 @@ sub_80B12E8: @ 80B12E8 ldrsh r0, [r0, r1] cmp r0, 0 bne _080B132C - ldr r4, _080B1320 @ =sBattler_AI + ldr r4, _080B1320 @ =gBattlerAttacker ldrb r0, [r4] movs r1, 0x2 bl GetBattlerSpriteCoord @@ -1360,7 +1360,7 @@ sub_80B12E8: @ 80B12E8 b _080B1332 .align 2, 0 _080B131C: .4byte gBattleAnimArgs -_080B1320: .4byte sBattler_AI +_080B1320: .4byte gBattlerAttacker _080B1324: .4byte gBattleAnimTarget _080B1328: .4byte gBattleAnimAttacker _080B132C: diff --git a/asm/link.s b/asm/link.s index 7275ebbd2..80b4f5f6a 100644 --- a/asm/link.s +++ b/asm/link.s @@ -236,7 +236,7 @@ sub_8009640: @ 8009640 ldr r2, _080096DC @ =0x00001111 adds r0, r2, 0 strh r0, [r1] - bl sub_8009804 + bl OpenLink ldr r0, _080096E0 @ =gMain ldrh r0, [r0, 0x24] bl SeedRng @@ -431,8 +431,8 @@ _080097FC: .4byte gTasks _08009800: .4byte gUnknown_3003F84 thumb_func_end task02_080097CC - thumb_func_start sub_8009804 -sub_8009804: @ 8009804 + thumb_func_start OpenLink +OpenLink: @ 8009804 push {r4-r6,lr} ldr r0, _0800984C @ =gWirelessCommType ldrb r4, [r0] @@ -505,7 +505,7 @@ _080098A8: .4byte gReceivedRemoteLinkPlayers _080098AC: .4byte gUnknown_3003EB8 _080098B0: .4byte gUnknown_3003F30 _080098B4: .4byte gUnknown_3003F2C - thumb_func_end sub_8009804 + thumb_func_end OpenLink thumb_func_start CloseLink CloseLink: @ 80098B8 @@ -1556,7 +1556,7 @@ sub_800A0B4: @ 800A0B4 str r1, [r0] ldr r0, _0800A0CC @ =gLinkTimeOutCounter strh r1, [r0] - bl sub_8009804 + bl OpenLink pop {r0} bx r0 .align 2, 0 @@ -2115,8 +2115,8 @@ _0800A4B4: .4byte gUnknown_3003F90 _0800A4B8: .4byte 0x0000cccc thumb_func_end sub_800A474 - thumb_func_start sub_800A4BC -sub_800A4BC: @ 800A4BC + thumb_func_start IsLinkTaskFinished +IsLinkTaskFinished: @ 800A4BC push {lr} ldr r0, _0800A4D0 @ =gWirelessCommType ldrb r0, [r0] @@ -2142,7 +2142,7 @@ _0800A4E2: bx r1 .align 2, 0 _0800A4E8: .4byte gUnknown_3003F80 - thumb_func_end sub_800A4BC + thumb_func_end IsLinkTaskFinished thumb_func_start GetBlockReceivedStatus GetBlockReceivedStatus: @ 800A4EC @@ -2265,8 +2265,8 @@ _0800A5B2: _0800A5B8: .4byte gUnknown_3003EBC thumb_func_end ResetBlockReceivedFlag - thumb_func_start sub_800A5BC -sub_800A5BC: @ 800A5BC + thumb_func_start CheckShouldAdvanceLinkState +CheckShouldAdvanceLinkState: @ 800A5BC push {lr} ldr r0, _0800A5DC @ =gUnknown_3003F20 ldr r1, [r0] @@ -2287,7 +2287,7 @@ _0800A5D8: .align 2, 0 _0800A5DC: .4byte gUnknown_3003F20 _0800A5E0: .4byte gUnknown_3003F84 - thumb_func_end sub_800A5BC + thumb_func_end CheckShouldAdvanceLinkState thumb_func_start LinkTestCalcBlockChecksum LinkTestCalcBlockChecksum: @ 800A5E4 @@ -2883,8 +2883,8 @@ GetLinkPlayerCount_2: @ 800AA38 _0800AA44: .4byte gUnknown_3003F20 thumb_func_end GetLinkPlayerCount_2 - thumb_func_start sub_800AA48 -sub_800AA48: @ 800AA48 + thumb_func_start IsLinkMaster +IsLinkMaster: @ 800AA48 push {lr} ldr r0, _0800AA60 @ =gWirelessCommType ldrb r0, [r0] @@ -2906,7 +2906,7 @@ _0800AA68: _0800AA70: pop {r1} bx r1 - thumb_func_end sub_800AA48 + thumb_func_end IsLinkMaster thumb_func_start sub_800AA74 sub_800AA74: @ 800AA74 diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 2bfeaca50..356cbb45b 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -4996,7 +4996,7 @@ _080FAC58: .align 2, 0 _080FAC74: .4byte 0x0000099d _080FAC78: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _080FACD6 @@ -5103,7 +5103,7 @@ _080FAD3A: .align 2, 0 _080FAD50: .4byte gBlockSendBuffer _080FAD54: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _080FAD8A @@ -6875,7 +6875,7 @@ sub_80FBA78: @ 80FBA78 adds r0, r2, 0 strh r0, [r1] bl sub_800B1F4 - bl sub_8009804 + bl OpenLink ldr r0, _080FBB00 @ =gMain ldrh r0, [r0, 0x24] bl SeedRng diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 17d761a3d..1232764e5 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -317,7 +317,7 @@ _08115B0C: movs r2, 0 bl sub_80FAF58 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink ldrb r1, [r4] movs r0, 0xF ands r0, r1 @@ -1841,7 +1841,7 @@ _081167C0: ldrb r0, [r0] strb r0, [r1] bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBBD8 movs r0, 0x70 bl AllocZeroed @@ -2595,7 +2595,7 @@ _08116E70: movs r2, 0 bl sub_80FAF58 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBBD8 movs r0, 0x1 bl sub_80FB128 @@ -3864,7 +3864,7 @@ _08117968: .align 2, 0 _08117970: .4byte gPaletteFade _08117974: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08117988 @@ -3999,7 +3999,7 @@ _08117A7C: movs r1, 0 bl sub_80FAF74 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink movs r0, 0x2 bl sub_80FBB8C movs r0, 0x1 @@ -4477,7 +4477,7 @@ _08117EB2: strb r0, [r5, 0xC] b _08117ECA _08117EBA: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08117ECA @@ -4571,7 +4571,7 @@ _08117F7C: movs r2, 0 bl sub_80FAF58 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBBD8 movs r0, 0x70 bl AllocZeroed @@ -4897,7 +4897,7 @@ _0811826C: bl sub_800AB9C b _08118288 _08118278: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08118288 @@ -4990,7 +4990,7 @@ _08118340: movs r2, 0 bl sub_80FAF58 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBBD8 movs r0, 0x70 bl AllocZeroed @@ -5302,7 +5302,7 @@ _081185E8: bl sub_800AB9C b _08118604 _081185F4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08118604 @@ -5582,7 +5582,7 @@ _0811887C: ldrh r2, [r2, 0xC] bl sub_80FAFA0 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBC00 ldr r0, [r6, 0x8] movs r1, 0x1 @@ -6274,7 +6274,7 @@ _08118EAC: .align 2, 0 _08118EC4: .4byte gStringVar4 _08118EC8: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08118ED6 @@ -6796,7 +6796,7 @@ _08119354: movs r0, 0xF b _081198DA _0811935C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _08119368 @@ -7640,7 +7640,7 @@ _08119A3E: movs r2, 0 bl sub_80FAF58 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBC00 movs r0, 0x1 bl sub_80FB128 @@ -13134,7 +13134,7 @@ _0811C48C: .align 2, 0 _0811C4A4: .4byte gMain _0811C4A8: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0811C516 diff --git a/asm/party_menu.s b/asm/party_menu.s index 4fac6a6c5..89c03fcff 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -18290,7 +18290,7 @@ _08127BD8: ldrb r0, [r0, 0xB] cmp r0, 0x4 bne _08127BEC - bl sub_8044348 + bl SetMonPreventsSwitchingString b _08127C8A .align 2, 0 _08127BE8: .4byte gUnknown_203B0A0 diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index de3071fd6..ab95e1bf4 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -470,7 +470,7 @@ _08147E3C: .align 2, 0 _08147E60: .4byte gUnknown_203F3D4 _08147E64: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08147F04 diff --git a/asm/trade.s b/asm/trade.s index 61328d618..0e0520f37 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -263,7 +263,7 @@ _0804C80A: cmp r0, 0 beq _0804C880 bl sub_800B1F4 - bl sub_8009804 + bl OpenLink bl sub_80FBB20 b _0804C892 .align 2, 0 @@ -275,7 +275,7 @@ _0804C874: .4byte 0x00001122 _0804C878: .4byte gUnknown_2031DA8 _0804C87C: .4byte gWirelessCommType _0804C880: - bl sub_8009804 + bl OpenLink ldr r1, _0804C8A8 @ =gMain movs r7, 0x87 lsls r7, 3 @@ -341,7 +341,7 @@ _0804C8F4: bcs _0804C908 b _0804CEE6 _0804C908: - bl sub_800AA48 + bl IsLinkMaster lsls r0, 24 cmp r0, 0 beq _0804C940 @@ -357,7 +357,7 @@ _0804C908: bhi _0804C928 b _0804CEE6 _0804C928: - bl sub_800A5BC + bl CheckShouldAdvanceLinkState ldr r1, _0804C93C @ =gMain movs r3, 0x87 lsls r3, 3 @@ -2201,7 +2201,7 @@ _0804D8D8: .4byte gBlockSendBuffer _0804D8DC: .4byte gPlayerParty _0804D8E0: .4byte gUnknown_2031DA8 _0804D8E4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _0804D8F0 @@ -3875,7 +3875,7 @@ _0804E61C: adds r0, 0x80 ldr r1, _0804E64C @ =0x0000bbbb strh r1, [r0] - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0804E668 @@ -3944,7 +3944,7 @@ _0804E6B0: movs r0, 0x3 movs r1, 0x1 bl sub_804F488 - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0804E6DE @@ -4285,7 +4285,7 @@ sub_804E944: @ 804E944 ldrb r0, [r0] cmp r0, 0 beq _0804E988 - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _0804E9AA @@ -7508,7 +7508,7 @@ _08050240: adds r0, r1 movs r1, 0x1 strb r1, [r0] - bl sub_8009804 + bl OpenLink ldr r1, _08050278 @ =gMain movs r2, 0x87 lsls r2, 3 @@ -7549,7 +7549,7 @@ _08050298: .align 2, 0 _080502A4: .4byte gUnknown_2031DAC _080502A8: - bl sub_800AA48 + bl IsLinkMaster lsls r0, 24 cmp r0, 0 bne _080502B4 @@ -7571,7 +7571,7 @@ _080502B4: bhi _080502D6 b _08050472 _080502D6: - bl sub_800A5BC + bl CheckShouldAdvanceLinkState ldr r1, _080502E8 @ =gMain movs r2, 0x87 lsls r2, 3 @@ -8274,7 +8274,7 @@ sub_80508F4: @ 80508F4 .align 2, 0 _08050908: .4byte gUnknown_2031DAC _0805090C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08050932 @@ -14405,7 +14405,7 @@ _08054080: strb r1, [r0] str r2, [r3, 0x64] _0805409C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _080540A8 @@ -14420,7 +14420,7 @@ _080540A8: _080540B4: .4byte gUnknown_2031DAC _080540B8: .4byte gMain _080540BC: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _080540C8 @@ -14637,7 +14637,7 @@ _08054278: str r0, [r1, 0x64] b _08054396 _0805427E: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 bne _0805428A @@ -14672,7 +14672,7 @@ _080542A0: .align 2, 0 _080542C0: .4byte gUnknown_2031DAC _080542C4: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08054396 diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 9f8d7da11..285827e14 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -295,7 +295,7 @@ _08128662: adds r0, 0x1 strh r0, [r1, 0x6] _08128674: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _081286BC @@ -321,7 +321,7 @@ _08128674: .align 2, 0 _081286A8: .4byte gUnknown_203B0E0 _081286AC: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _081286BC @@ -765,7 +765,7 @@ _08128A36: .align 2, 0 _08128A40: .4byte gUnknown_203B0E0 _08128A44: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128A94 @@ -888,7 +888,7 @@ _08128B28: .align 2, 0 _08128B48: .4byte gUnknown_203B0E0 _08128B4C: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128BFC @@ -925,7 +925,7 @@ _08128B80: .align 2, 0 _08128B9C: .4byte gUnknown_203B0E0 _08128BA0: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128BFC @@ -1016,7 +1016,7 @@ _08128C44: lsls r0, 24 cmp r0, 0 bne _08128CA2 - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128CA2 @@ -1134,7 +1134,7 @@ _08128D30: lsrs r0, 24 cmp r0, 0x1 beq _08128D9C - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128D9C @@ -1231,7 +1231,7 @@ _08128DEC: adds r0, 0x1 strh r0, [r1, 0x6] _08128E00: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1277,7 +1277,7 @@ _08128E52: .align 2, 0 _08128E5C: .4byte gUnknown_203B0E0 _08128E60: - bl sub_800A4BC + bl IsLinkTaskFinished lsls r0, 24 cmp r0, 0 beq _08128E70 diff --git a/include/battle.h b/include/battle.h index ae17cdca0..f919c4e0d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -29,9 +29,9 @@ #define SIDE_PLAYER 0x0 #define SIDE_OPPONENT 0x1 -#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) -#define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE)) -#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) +#define GET_BATTLER_POSITION(battler)((gBattlerPositions[battler])) +#define GET_BATTLER_SIDE(battler)((GetBattlerPosition(battler) & BIT_SIDE)) +#define GET_BATTLER_SIDE2(battler)((GET_BATTLER_POSITION(battler) & BIT_SIDE)) #define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 @@ -567,11 +567,11 @@ struct BattleStruct u8 field_A6; u8 field_A7; u16 hpOnSwitchout[2]; - u32 savedBattleTypeFlags; u8 abilityPreventingSwitchout; u8 hpScale; u8 synchronizeMoveEffect; - u8 field_B3; + u8 field_AF; + u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? u8 field_B4; u8 field_B5; u8 field_B6; @@ -780,13 +780,13 @@ struct BattleScripting u8 animArg2; u16 tripleKickPower; u8 atk49_state; - u8 bankWithAbility; + u8 battlerWithAbility; u8 multihitMoveEffect; - u8 bank; + u8 battler; u8 animTurn; u8 animTargetsHit; u8 statChanger; - u8 field_1B; + bool8 statAnimPlayed; u8 atk23_state; u8 battleStyle; u8 atk6C_state; @@ -795,12 +795,10 @@ struct BattleScripting u8 reshowMainState; u8 reshowHelperState; u8 field_23; - u8 field_24; + u8 windowsType; // TODO: what does this field do in firered? u8 multiplayerId; }; -extern struct BattleScripting gBattleScripting; - // functions // battle_1 @@ -954,6 +952,8 @@ extern u16 gMoveToLearn; extern u16 gBattleMovePower; extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT]; extern u16 gCurrentMove; +extern u16 gChosenMove; +extern u16 gCalledMove; extern u8 gCritMultiplier; extern u16 gBattleWeather; extern u8 gLastUsedAbility; @@ -978,5 +978,13 @@ extern bool8 gDoingBattleAnim; extern void *gUnknown_3005EE0[]; extern u8 *gUnknown_2022BB8; extern u8 *gUnknown_2022BBC; +extern void (*gBattleMainFunc)(void); +extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT]; +extern u32 gUnknown_2022B54; +extern u8 gUnknown_2023DDC; +extern u8 gBattlerAttacker; +extern u8 gEffectBattler; +extern u8 gUnknown_2023D72; +extern struct BattleScripting gBattleScripting; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index 72fcb0e11..cf20bcd25 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -47,6 +47,7 @@ bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); void sub_80120C4(struct Sprite *); void sub_8012100(struct Sprite *); +void nullsub_12(void); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 3786d4a8c..12df776be 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,9 +3,7 @@ #include "global.h" -extern u8 sBattler_AI; - -void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); +void BattleAI_HandleItemUseBeforeAISetup(void); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); void ClearBankMoveHistory(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 577bce485..758a6e52f 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -162,8 +162,8 @@ enum CONTROLLER_INTROSLIDE, CONTROLLER_INTROTRAINERBALLTHROW, CONTROLLER_DRAWPARTYSTATUSSUMMARY, - CONTROLLER_49, - CONTROLLER_50, + CONTROLLER_HIDEPARTYSTATUSSUMMARY, + CONTROLLER_ENDBOUNCE, CONTROLLER_SPRITEINVISIBILITY, CONTROLLER_BATTLEANIMATION, CONTROLLER_LINKSTANDBYMSG, @@ -177,68 +177,53 @@ enum // general functions void HandleLinkBattleSetup(void); -void SetUpBattleVarsAndBirchZigzagoon(void); -void sub_8032768(void); -void sub_8033648(void); +void SetUpBattleVars(void); +void sub_800D30C(void); +void sub_800DD28(void); void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); // emitters void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck); -void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused -void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); -void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused -void EmitLoadMonSprite(u8 bufferId); -void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); -void EmitReturnMonToBall(u8 bufferId, u8 arg1); -void EmitDrawTrainerPic(u8 bufferId); -void EmitTrainerSlide(u8 bufferId); -void EmitTrainerSlideBack(u8 bufferId); -void EmitFaintAnimation(u8 bufferId); -void EmitPaletteFade(u8 bufferId); // unused -void EmitSuccessBallThrowAnim(u8 bufferId); // unused -void EmitBallThrowAnim(u8 bufferId, u8 caseId); -void EmitPause(u8 bufferId, u8 toWait, void *data); // unused -void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); -void EmitPrintString(u8 bufferId, u16 stringId); -void EmitPrintSelectionString(u8 bufferId, u16 stringId); -void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); -void EmitUnknownYesNoBox(u8 bufferId); -void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); -void EmitChooseItem(u8 bufferId, u8* arg1); -void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); -void EmitCmd23(u8 bufferId); // unused -void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); -void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); -void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); -void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); -void EmitStatusXor(u8 bufferId, u8 b); // unused -void EmitDataTransfer(u8 bufferId, u16 size, void *data); -void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused -void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused -void EmitCmd32(u8 bufferId, u16 size, void *c); // unused -void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); -void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); -void EmitOneReturnValue(u8 bufferId, u16 arg1); -void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); -void EmitCmd37(u8 bufferId); // unused -void EmitCmd38(u8 bufferId, u8 b); // unused -void EmitCmd39(u8 bufferId); // unused -void EmitCmd40(u8 bufferId); // unused -void EmitHitAnimation(u8 bufferId); -void EmitCmd42(u8 bufferId); -void EmitPlaySE(u8 bufferId, u16 songId); -void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); -void EmitFaintingCry(u8 bufferId); -void EmitIntroSlide(u8 bufferId, u8 terrainId); -void EmitIntroTrainerBallThrow(u8 bufferId); -void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); -void EmitCmd49(u8 bufferId); -void EmitCmd50(u8 bufferId); -void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); -void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); -void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); -void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); -void EmitCmd55(u8 bufferId, u8 arg1); +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); +void BtlController_EmitLoadMonSprite(u8 bufferId); +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1); +void BtlController_EmitDrawTrainerPic(u8 bufferId); +void BtlController_EmitTrainerSlide(u8 bufferId); +void BtlController_EmitTrainerSlideBack(u8 bufferId); +void BtlController_EmitFaintAnimation(u8 bufferId); +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId); +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr); +void BtlController_EmitPrintString(u8 bufferId, u16 stringId); +void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId); +void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); +void BtlController_EmitChooseItem(u8 bufferId, u8* arg1); +void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); +void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); +void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1); +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); +void BtlController_EmitHitAnimation(u8 bufferId); +void BtlController_EmitCmd42(u8 bufferId); +void BtlController_EmitPlaySE(u8 bufferId, u16 songId); +void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId); +void BtlController_EmitFaintingCry(u8 bufferId); +void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId); +void BtlController_EmitIntroTrainerBallThrow(u8 bufferId); +void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void BtlController_EmitHidePartyStatusSummary(u8 bufferId); +void BtlController_EmitEndBounceEffect(u8 bufferId); +void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1); +void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); +void BtlController_EmitCmd55(u8 bufferId, u8 arg1); // player controller void SetControllerToPlayer(void); @@ -251,6 +236,7 @@ void c3_0802FDF4(u8 taskId); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionDestroyCursorAt(u8 cursorPos); void InitMoveSelectionsVarsAndStrings(void); +void nullsub_13(void); // recorded player controller void SetControllerToRecordedPlayer(void); @@ -264,11 +250,11 @@ void SetControllerToPlayerPartner(void); // safari controller void SetControllerToSafari(void); -// wally controller -void SetControllerToWally(void); +// pokedude controller +void SetControllerToPokedude(void); -// recorded opponent controller -void SetControllerToRecordedOpponent(void); +// oak controller +void SetControllerToOakOrOldman(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_message.h b/include/battle_message.h index df2653756..ffc9d5bb7 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -35,11 +35,11 @@ #define B_TXT_EFF_ABILITY 0x1B #define B_TXT_TRAINER1_CLASS 0x1C #define B_TXT_TRAINER1_NAME 0x1D -#define B_TXT_1E 0x1E // trainer name for a link player -#define B_TXT_1F 0x1F // trainer name for a link player -#define B_TXT_20 0x20 // trainer name for a link player -#define B_TXT_21 0x21 // trainer name for a link player -#define B_TXT_22 0x22 // trainer name for a link player +#define B_TXT_LINK_PLAYER_NAME 0x1E +#define B_TXT_LINK_PARTNER_NAME 0x1F +#define B_TXT_LINK_OPPONENT1_NAME 0x20 +#define B_TXT_LINK_OPPONENT2_NAME 0x21 +#define B_TXT_LINK_SCR_TRAINER_NAME 0x22 #define B_TXT_PLAYER_NAME 0x23 #define B_TXT_TRAINER1_LOSE_TEXT 0x24 #define B_TXT_TRAINER1_WIN_TEXT 0x25 @@ -196,7 +196,7 @@ textVar[4] = B_BUFF_EOS; \ } -struct StringInfoBattle +struct BattleMsgData { u16 currentMove; u16 originallyUsedMove; @@ -205,7 +205,7 @@ struct StringInfoBattle u8 scrActive; u8 unk1605E; u8 hpScale; - u8 StringBank; + u8 itemEffectBattler; u8 moveType; u8 abilities[4]; u8 textBuffs[3][0x10]; @@ -220,6 +220,8 @@ u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); void BattlePutTextOnWindow(const u8* text, u8 arg1); bool8 sub_80D89B0(u16); +extern struct BattleMsgData *gBattleMsgDataPtr; + #define TEXT_BUFF_ARRAY_COUNT 16 extern u8 gDisplayedStringBattle[300]; diff --git a/include/battle_util.h b/include/battle_util.h index a062f0743..88b35e1a4 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -88,5 +88,6 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); void MarkBufferBankForExecution(u8 battlerId); void sub_80174B8(u8 battlerId); +void sub_8017298(u8 battlerId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/cable_club.h b/include/cable_club.h new file mode 100644 index 000000000..401cfacf1 --- /dev/null +++ b/include/cable_club.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CABLE_CLUB_H +#define GUARD_CABLE_CLUB_H + +#include "task.h" + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void sub_8081A90(u8 taskId); + +#endif //GUARD_CABLE_CLUB_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 36fb4d447..b424103a1 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -53,7 +53,7 @@ #define BATTLE_TYPE_MULTI 0x0040 #define BATTLE_TYPE_SAFARI 0x0080 #define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 +#define BATTLE_TYPE_OLDMAN_TUTORIAL 0x0200 #define BATTLE_TYPE_ROAMER 0x0400 #define BATTLE_TYPE_EREADER_TRAINER 0x0800 #define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 diff --git a/include/link.h b/include/link.h index e1a4e106b..190a9d96a 100644 --- a/include/link.h +++ b/include/link.h @@ -145,6 +145,7 @@ extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; +extern u8 gWirelessCommType; extern u8 gUnknown_3003F84; extern u64 gSioMlt_Recv; @@ -199,15 +200,16 @@ void sub_8011BD0(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); void sub_800AC34(void); -void sub_8009804(void); -bool8 sub_800AA48(void); -void sub_800A5BC(void); +void OpenLink(void); +bool8 IsLinkMaster(void); +void CheckShouldAdvanceLinkState(void); void sub_800AA80(u8); void sub_80098D8(void); void CloseLink(void); -bool8 sub_800A4BC(void); +bool8 IsLinkTaskFinished(void); bool32 sub_800B270(void); void sub_800B388(void); void sub_8054A28(void); +void sub_800B1F4(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 7e0ea2068..928ae380e 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -18,5 +18,6 @@ void MEvent_CreateTask_CardOrNewsOverWireless(u8); void MEvent_CreateTask_Leader(u8); void sub_80F9E2C(void * data); u8 sub_8116DE0(void); +void sub_80FBB4C(void); #endif //GUARD_LINK_RFU_H diff --git a/include/party_menu.h b/include/party_menu.h index 2ae33175c..3c88f75e0 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -63,5 +63,6 @@ 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); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index d2eefd390..6c20b967d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -651,7 +651,7 @@ bool8 IsTradedMon(struct Pokemon *mon); bool8 IsOtherTrainer(u32 otId, u8 *otName); void MonRestorePP(struct Pokemon *mon); void BoxMonRestorePP(struct BoxPokemon *boxMon); -void sub_8044348(void); +void SetMonPreventsSwitchingString(void); void SetWildMonHeldItem(void); bool8 IsMonShiny(struct Pokemon *mon); u8 *GetTrainerPartnerName(void); diff --git a/ld_script.txt b/ld_script.txt index 2f0a7e186..34c5e942b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -63,7 +63,7 @@ SECTIONS { asm/link.o(.text); src/multiboot.o(.text); asm/main_menu.o(.text); - asm/battle_controllers.o(.text); + src/battle_controllers.o(.text); src/decompress.o(.text); asm/battle_1.o(.text); asm/battle_2.o(.text); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 1650f1056..86e7d3143 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -249,7 +249,7 @@ static const u16 sDiscouragedPowerfulMoveEffects[] = }; // TODO: move these -extern u8 sBattler_AI; +extern u8 gBattlerAttacker; extern const u32 gBitTable[]; // util.h extern u32 gStatuses3[]; // battle_2.h extern u16 gSideAffecting[2]; @@ -318,7 +318,7 @@ void BattleAI_SetupAIData(void) } gBattleResources->AI_ScriptsStack->size = 0; - sBattler_AI = gActiveBattler; + gBattlerAttacker = gActiveBattler; // Decide a random target battlerId in doubles. if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -331,7 +331,7 @@ void BattleAI_SetupAIData(void) // There's only one choice in single battles. else { - gBattlerTarget = sBattler_AI ^ BIT_SIDE; + gBattlerTarget = gBattlerAttacker ^ BIT_SIDE; } // Choose proper trainer ai scripts. @@ -425,13 +425,13 @@ void BattleAI_DoAIProcessing(void) break; case AIState_SettingUp: gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr. - if (gBattleMons[sBattler_AI].pp[AI_THINKING_STRUCT->movesetIndex] == 0) + if (gBattleMons[gBattlerAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0) { AI_THINKING_STRUCT->moveConsidered = 0; // don't consider a move you have 0 PP for, idiot. } else { - AI_THINKING_STRUCT->moveConsidered = gBattleMons[sBattler_AI].moves[AI_THINKING_STRUCT->movesetIndex]; + AI_THINKING_STRUCT->moveConsidered = gBattleMons[gBattlerAttacker].moves[AI_THINKING_STRUCT->movesetIndex]; } AI_THINKING_STRUCT->aiState++; break; @@ -544,7 +544,7 @@ static void BattleAICmd_if_hp_less_than(void) u16 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -559,7 +559,7 @@ static void BattleAICmd_if_hp_more_than(void) u16 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -574,7 +574,7 @@ static void BattleAICmd_if_hp_equal(void) u16 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -589,7 +589,7 @@ static void BattleAICmd_if_hp_not_equal(void) u16 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -605,7 +605,7 @@ static void BattleAICmd_if_status(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -623,7 +623,7 @@ static void BattleAICmd_if_not_status(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -641,7 +641,7 @@ static void BattleAICmd_if_status2(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -659,7 +659,7 @@ static void BattleAICmd_if_not_status2(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -677,7 +677,7 @@ static void BattleAICmd_if_status3(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -695,7 +695,7 @@ static void BattleAICmd_if_not_status3(void) u32 arg; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -713,7 +713,7 @@ static void BattleAICmd_if_status4(void) u32 arg1, arg2; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -732,7 +732,7 @@ static void BattleAICmd_if_not_status4(void) u32 arg1, arg2; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -907,8 +907,8 @@ static void BattleAICmd_if_user_can_damage(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] != 0 - && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].power != 0) + if (gBattleMons[gBattlerAttacker].moves[i] != 0 + && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0) break; } if (i == MAX_MON_MOVES) @@ -923,8 +923,8 @@ static void BattleAICmd_if_user_cant_damage(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] != 0 - && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].power != 0) + if (gBattleMons[gBattlerAttacker].moves[i] != 0 + && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0) break; } if (i != MAX_MON_MOVES) @@ -944,13 +944,13 @@ static void BattleAICmd_get_type(void) switch (gAIScriptPtr[1]) { case 1: // player primary type - AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type1; + AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type1; break; case 0: // enemy primary type AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type1; break; case 3: // player secondary type - AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type2; + AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type2; break; case 2: // enemy secondary type AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2; @@ -992,17 +992,17 @@ static void BattleAICmd_is_most_powerful_move(void) { for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++) { - if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i]) + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i]) break; } - if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE + if (gBattleMons[gBattlerAttacker].moves[checkedMove] != MOVE_NONE && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF - && gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1) + && gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].power > 1) { - gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove]; - AI_CalcDmg(sBattler_AI, gBattlerTarget); - TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget); + gCurrentMove = gBattleMons[gBattlerAttacker].moves[checkedMove]; + AI_CalcDmg(gBattlerAttacker, gBattlerTarget); + TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget); moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100; if (moveDmgs[checkedMove] == 0) moveDmgs[checkedMove] = 1; @@ -1035,7 +1035,7 @@ static void BattleAICmd_is_most_powerful_move(void) static void BattleAICmd_get_move(void) { if (gAIScriptPtr[1] == USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMove[sBattler_AI]; + AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerAttacker]; else AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerTarget]; @@ -1060,7 +1060,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (GetWhoStrikesFirst(sBattler_AI, gBattlerTarget, TRUE) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) == gAIScriptPtr[1]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1068,7 +1068,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (GetWhoStrikesFirst(sBattler_AI, gBattlerTarget, TRUE) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) != gAIScriptPtr[1]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1092,7 +1092,7 @@ static void BattleAICmd_count_alive_pokemon(void) AI_THINKING_STRUCT->funcResult = 0; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1145,7 +1145,7 @@ static void BattleAICmd_get_ability(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1218,11 +1218,11 @@ static void BattleAICmd_get_highest_possible_damage(void) for (i = 0; i < 4; i++) { gBattleMoveDamage = 40; - gCurrentMove = gBattleMons[sBattler_AI].moves[i]; + gCurrentMove = gBattleMons[gBattlerAttacker].moves[i]; if (gCurrentMove != 0) { - TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget); + TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget); if (gBattleMoveDamage == 120) // Super effective STAB. gBattleMoveDamage = AI_EFFECTIVENESS_x2; @@ -1257,7 +1257,7 @@ static void BattleAICmd_if_type_effectiveness(void) gBattleMoveDamage = AI_EFFECTIVENESS_x1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget); + TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget); if (gBattleMoveDamage == 120) // Super effective STAB. gBattleMoveDamage = AI_EFFECTIVENESS_x2; @@ -1402,7 +1402,7 @@ static void BattleAICmd_if_stat_level_less_than(void) u32 party; if (gAIScriptPtr[1] == USER) - party = sBattler_AI; + party = gBattlerAttacker; else party = gBattlerTarget; @@ -1417,7 +1417,7 @@ static void BattleAICmd_if_stat_level_more_than(void) u32 party; if (gAIScriptPtr[1] == USER) - party = sBattler_AI; + party = gBattlerAttacker; else party = gBattlerTarget; @@ -1432,7 +1432,7 @@ static void BattleAICmd_if_stat_level_equal(void) u32 party; if (gAIScriptPtr[1] == USER) - party = sBattler_AI; + party = gBattlerAttacker; else party = gBattlerTarget; @@ -1447,7 +1447,7 @@ static void BattleAICmd_if_stat_level_not_equal(void) u32 party; if (gAIScriptPtr[1] == USER) - party = sBattler_AI; + party = gBattlerAttacker; else party = gBattlerTarget; @@ -1471,8 +1471,8 @@ static void BattleAICmd_if_can_faint(void) gMoveResultFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - AI_CalcDmg(sBattler_AI, gBattlerTarget); - TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget); + AI_CalcDmg(gBattlerAttacker, gBattlerTarget); + TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget); gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100; @@ -1500,8 +1500,8 @@ static void BattleAICmd_if_cant_faint(void) gMoveResultFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - AI_CalcDmg(sBattler_AI, gBattlerTarget); - TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget); + AI_CalcDmg(gBattlerAttacker, gBattlerTarget); + TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget); gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100; @@ -1524,7 +1524,7 @@ static void BattleAICmd_if_has_move(void) case 3: for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] == *temp_ptr) + if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr) break; } if (i == MAX_MON_MOVES) @@ -1558,7 +1558,7 @@ static void BattleAICmd_if_dont_have_move(void) case 3: for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] == *temp_ptr) + if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr) break; } if (i != MAX_MON_MOVES) @@ -1591,7 +1591,7 @@ static void BattleAICmd_if_move_effect(void) case 3: for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].effect == gAIScriptPtr[2]) + if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == gAIScriptPtr[2]) break; } if (i != MAX_MON_MOVES) @@ -1603,7 +1603,7 @@ static void BattleAICmd_if_move_effect(void) case 2: for (i = 0; i < 8; i++) { - if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == gAIScriptPtr[2]) + if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == gAIScriptPtr[2]) break; } gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); @@ -1620,7 +1620,7 @@ static void BattleAICmd_if_not_move_effect(void) case 3: for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].effect == gAIScriptPtr[2]) + if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == gAIScriptPtr[2]) break; } if (i != MAX_MON_MOVES) @@ -1644,7 +1644,7 @@ static void BattleAICmd_if_last_move_did_damage(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1739,7 +1739,7 @@ static void BattleAICmd_get_hold_effect(void) u16 side; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1759,7 +1759,7 @@ static void BattleAICmd_get_gender(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1773,7 +1773,7 @@ static void BattleAICmd_is_first_turn(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1787,7 +1787,7 @@ static void BattleAICmd_get_stockpile_count(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1808,7 +1808,7 @@ static void BattleAICmd_get_used_held_item(void) u8 battlerId; if (gAIScriptPtr[1] == AI_USER) - battlerId = sBattler_AI; + battlerId = gBattlerAttacker; else battlerId = gBattlerTarget; @@ -1848,7 +1848,7 @@ static void BattleAICmd_get_protect_count(void) u8 index; if (gAIScriptPtr[1] == USER) - index = sBattler_AI; + index = gBattlerAttacker; else index = gBattlerTarget; @@ -1903,7 +1903,7 @@ static void BattleAICmd_if_level_compare(void) switch (gAIScriptPtr[1]) { case 0: // greater than - if (gBattleMons[sBattler_AI].level > gBattleMons[gBattlerTarget].level) + if (gBattleMons[gBattlerAttacker].level > gBattleMons[gBattlerTarget].level) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); return; @@ -1911,7 +1911,7 @@ static void BattleAICmd_if_level_compare(void) gAIScriptPtr += 6; return; case 1: // less than - if (gBattleMons[sBattler_AI].level < gBattleMons[gBattlerTarget].level) + if (gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); return; @@ -1919,7 +1919,7 @@ static void BattleAICmd_if_level_compare(void) gAIScriptPtr += 6; return; case 2: // equal - if (gBattleMons[sBattler_AI].level == gBattleMons[gBattlerTarget].level) + if (gBattleMons[gBattlerAttacker].level == gBattleMons[gBattlerTarget].level) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); return; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 5a2f20ef4..b3c6ab2e5 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -176,16 +176,16 @@ static void HandleInputChooseAction(void) switch (gActionSelectionCursor[gActiveBattler]) { case 0: - EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0); + BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0); break; case 1: - EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0); + BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0); break; case 2: - EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0); + BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0); break; case 3: - EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0); + BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0); break; } SafariBufferExecCompleted(); @@ -276,7 +276,7 @@ static void CompleteWhenChosePokeblock(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - EmitOneReturnValue(1, gSpecialVar_ItemId); + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); SafariBufferExecCompleted(); } } diff --git a/src/battle_controllers.c b/src/battle_controllers.c new file mode 100644 index 000000000..20c934a0c --- /dev/null +++ b/src/battle_controllers.c @@ -0,0 +1,1171 @@ +#include "global.h" +#include "battle.h" +#include "battle_2.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_util.h" +#include "battle_controllers.h" +#include "battle_message.h" +#include "link.h" +#include "link_rfu.h" +#include "cable_club.h" +#include "party_menu.h" +#include "pokemon.h" +#include "task.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "constants/battle.h" + +static EWRAM_DATA u8 sLinkSendTaskId = 0; +static EWRAM_DATA u8 sLinkReceiveTaskId = 0; +static EWRAM_DATA u8 gUnknown_202286E = 0; +EWRAM_DATA struct UnusedControllerStruct gUnknown_2022870 = {0}; +static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {0}; + +static void CreateTasksForSendRecvLinkBuffers(void); +static void InitLinkBtlControllers(void); +static void InitSinglePlayerBtlControllers(void); +static void SetBattlePartyIds(void); +static void Task_HandleSendLinkBuffersData(u8 taskId); +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); + +void HandleLinkBattleSetup(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gWirelessCommType) + sub_800B1F4(); + if (!gReceivedRemoteLinkPlayers) + OpenLink(); + CreateTask(sub_8081A90, 0); + CreateTasksForSendRecvLinkBuffers(); + } +} + +void SetUpBattleVars(void) +{ + s32 i; + + gBattleMainFunc = nullsub_12; + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + gBattlerControllerFuncs[i] = nullsub_13; + gBattlerPositions[i] = 0xFF; + gActionSelectionCursor[i] = 0; + gMoveSelectionCursor[i] = 0; + } + HandleLinkBattleSetup(); + gBattleControllerExecFlags = 0; + ClearBattleAnimationVars(); + ClearBattleMonForms(); + BattleAI_HandleItemUseBeforeAISetup(); + gUnknown_2022B54 = 0; + gUnknown_2023DDC = 0; +} + +void sub_800D30C(void) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + InitLinkBtlControllers(); + else + InitSinglePlayerBtlControllers(); + SetBattlePartyIds(); + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + for (i = 0; i < gBattlersCount; ++i) + sub_8127DA8(i, 0); +} + +static void InitSinglePlayerBtlControllers(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMainFunc = BeginBattleIntro; + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + gBattlerControllerFuncs[0] = SetControllerToPokedude; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToPokedude; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlersCount = 2; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + gBattlerControllerFuncs[0] = SetControllerToSafari; + else if (gBattleTypeFlags & (BATTLE_TYPE_OLDMAN_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) + gBattlerControllerFuncs[0] = SetControllerToOakOrOldman; + else + gBattlerControllerFuncs[0] = SetControllerToPlayer; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToOpponent; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlersCount = 2; + } + } + else + { + gBattleMainFunc = BeginBattleIntro; + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + gBattlerControllerFuncs[0] = SetControllerToPokedude; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToPokedude; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlerControllerFuncs[2] = SetControllerToPokedude; + gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT; + gBattlerControllerFuncs[3] = SetControllerToPokedude; + gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT; + gBattlersCount = MAX_BATTLERS_COUNT; + } + else + { + gBattlerControllerFuncs[0] = SetControllerToPlayer; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToOpponent; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlerControllerFuncs[2] = SetControllerToPlayer; + gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT; + gBattlerControllerFuncs[3] = SetControllerToOpponent; + gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT; + gBattlersCount = MAX_BATTLERS_COUNT; + } + } +} + +static void InitLinkBtlControllers(void) +{ + s32 i; + u8 multiplayerId; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) + { + gBattleMainFunc = BeginBattleIntro; + gBattlerControllerFuncs[0] = SetControllerToPlayer; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToLinkOpponent; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlersCount = 2; + } + else + { + gBattlerControllerFuncs[1] = SetControllerToPlayer; + gBattlerPositions[1] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[0] = SetControllerToLinkOpponent; + gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT; + gBattlersCount = 2; + } + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) + { + gBattleMainFunc = BeginBattleIntro; + gBattlerControllerFuncs[0] = SetControllerToPlayer; + gBattlerPositions[0] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[1] = SetControllerToLinkOpponent; + gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT; + gBattlerControllerFuncs[2] = SetControllerToPlayer; + gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT; + gBattlerControllerFuncs[3] = SetControllerToLinkOpponent; + gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT; + gBattlersCount = MAX_BATTLERS_COUNT; + } + else + { + gBattlerControllerFuncs[1] = SetControllerToPlayer; + gBattlerPositions[1] = B_POSITION_PLAYER_LEFT; + gBattlerControllerFuncs[0] = SetControllerToLinkOpponent; + gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT; + gBattlerControllerFuncs[3] = SetControllerToPlayer; + gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT; + gBattlerControllerFuncs[2] = SetControllerToLinkOpponent; + gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT; + gBattlersCount = MAX_BATTLERS_COUNT; + } + } + else + { + multiplayerId = GetMultiplayerId(); + if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) + gBattleMainFunc = BeginBattleIntro; + + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + sub_8127DA8(gLinkPlayers[i].id, 0); + break; + case 1: + case 2: + sub_8127DA8(gLinkPlayers[i].id, 1); + break; + } + if (i == multiplayerId) + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToPlayer; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT; + break; + case 1: + case 2: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; + break; + } + } + else + { + if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1)) || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1))) + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToLinkPartner; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT; + break; + case 1: + case 2: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT; + break; + } + } + else + { + gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToLinkOpponent; + switch (gLinkPlayers[i].id) + { + case 0: + case 3: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_LEFT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT; + break; + case 1: + case 2: + gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT; + gBattlerPartyIndexes[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT; + break; + } + } + } + } + gBattlersCount = MAX_BATTLERS_COUNT; + } +} + +static void SetBattlePartyIds(void) +{ + s32 i, j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + for (i = 0; i < gBattlersCount; ++i) + { + for (j = 0; j < PARTY_SIZE; ++j) + { + if (i < 2) + { + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG)) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG)) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + } + else + { + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2. + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) + && gBattlerPartyIndexes[i - 2] != j) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + else + { + if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) + && gBattlerPartyIndexes[i - 2] != j) + { + gBattlerPartyIndexes[i] = j; + break; + } + } + } + } + } + } +} + +static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + PrepareBufferDataTransferLink(bufferId, size, data); + } + else + { + switch (bufferId) + { + case 0: + for (i = 0; i < size; ++data, ++i) + gBattleBufferA[gActiveBattler][i] = *data; + break; + case 1: + for (i = 0; i < size; ++data, ++i) + gBattleBufferB[gActiveBattler][i] = *data; + break; + } + } +} + +static void CreateTasksForSendRecvLinkBuffers(void) +{ + sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0); + gTasks[sLinkSendTaskId].data[11] = 0; + gTasks[sLinkSendTaskId].data[12] = 0; + gTasks[sLinkSendTaskId].data[13] = 0; + gTasks[sLinkSendTaskId].data[14] = 0; + gTasks[sLinkSendTaskId].data[15] = 0; + sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0); + gTasks[sLinkReceiveTaskId].data[12] = 0; + gTasks[sLinkReceiveTaskId].data[13] = 0; + gTasks[sLinkReceiveTaskId].data[14] = 0; + gTasks[sLinkReceiveTaskId].data[15] = 0; + gUnknown_202286E = 0; +} + +enum +{ + LINK_BUFF_BUFFER_ID, + LINK_BUFF_ACTIVE_BATTLER, + LINK_BUFF_ATTACKER, + LINK_BUFF_TARGET, + LINK_BUFF_SIZE_LO, + LINK_BUFF_SIZE_HI, + LINK_BUFF_ABSENT_BATTLER_FLAGS, + LINK_BUFF_EFFECT_BATTLER, + LINK_BUFF_DATA, +}; + +void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data) +{ + s32 alignedSize, i; + + alignedSize = size - size % 4 + 4; + if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE) + { + gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14]; + gTasks[sLinkSendTaskId].data[14] = 0; + } + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_BUFFER_ID] = bufferId; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ACTIVE_BATTLER] = gActiveBattler; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_TARGET] = gBattlerTarget; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_LO] = alignedSize; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags; + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler; + for (i = 0; i < size; ++i) + gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i]; + gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA; +} + +static void Task_HandleSendLinkBuffersData(u8 taskId) +{ + u16 blockSize; + s32 playerCount; + + switch (gTasks[taskId].data[11]) + { + case 0: + gTasks[taskId].data[10] = 100; + ++gTasks[taskId].data[11]; + break; + case 1: + if (!--gTasks[taskId].data[10]) + { + ++gTasks[taskId].data[11]; + if (gReceivedRemoteLinkPlayers) + gTasks[taskId].data[11] = 3; + } + break; + case 2: + playerCount = GetLinkPlayerCount_2(); + if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && playerCount > 3) || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && playerCount > 1)) + { + if (IsLinkMaster()) + { + CheckShouldAdvanceLinkState(); + ++gTasks[taskId].data[11]; + } + else + { + ++gTasks[taskId].data[11]; + } + } + break; + case 3: + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (!gTasks[taskId].data[13]) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA; + SendBlock(bitmask_all_link_players_but_self(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize); + ++gTasks[taskId].data[11]; + } + else + { + --gTasks[taskId].data[13]; + break; + } + } + break; + case 4: + if (IsLinkTaskFinished()) + { + blockSize = gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8); + gTasks[taskId].data[13] = 5; + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA; + gTasks[taskId].data[11] = 3; + } + break; + case 5: + if (!--gTasks[taskId].data[13]) + { + gTasks[taskId].data[13] = 5; + gTasks[taskId].data[11] = 3; + } + break; + } +} + +void sub_800DD28(void) +{ + u8 i; + s32 j; + u16 r6; + u8 *recvBuffer, *dest, *src; + + if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211)) + { + sub_80FBB4C(); + for (i = 0; i < GetLinkPlayerCount(); ++i) + { + if (GetBlockReceivedStatus() & gBitTable[i]) + { + ResetBlockReceivedFlag(i); + recvBuffer = (u8 *)gBlockRecvBuffer[i]; + { + r6 = gBlockRecvBuffer[i][2]; + if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000) + { + gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14]; + gTasks[sLinkReceiveTaskId].data[14] = 0; + } + dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]]; + src = recvBuffer; + for (j = 0; j < r6 + 8; ++j) + dest[j] = src[j]; + } + gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; + } + } + } +} + +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) +{ + u16 blockSize; + u8 battlerId; + u8 var; + + if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) + { + if (gTasks[taskId].data[15] > gTasks[taskId].data[14] + && gTasks[taskId].data[15] == gTasks[taskId].data[12]) + { + gTasks[taskId].data[12] = 0; + gTasks[taskId].data[15] = 0; + } + battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER]; + blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8); + switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0]) + { + case 0: + if (gBattleControllerExecFlags & gBitTable[battlerId]) + return; + memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize); + sub_8017298(battlerId); + if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)) + { + gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER]; + gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_TARGET]; + gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ABSENT_BATTLER_FLAGS]; + gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_EFFECT_BATTLER]; + } + break; + case 1: + memcpy(gBattleBufferB[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize); + break; + case 2: + var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA]; + gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (var * 4)); + break; + } + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA; + } +} + +void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck) +{ + sBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA; + sBattleBuffersTransferData[1] = requestId; + sBattleBuffersTransferData[2] = monToCheck; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) +{ + sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; + sBattleBuffersTransferData[1] = monId; + sBattleBuffersTransferData[2] = bytes; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; + sBattleBuffersTransferData[1] = requestId; + sBattleBuffersTransferData[2] = monToCheck; + for (i = 0; i < bytes; ++i) + sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes); +} + +// not used +static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; + sBattleBuffersTransferData[1] = monId; + sBattleBuffersTransferData[2] = bytes; + for (i = 0; i < bytes; ++i) + sBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3); +} + +void BtlController_EmitLoadMonSprite(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE; + sBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE; + sBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE; + sBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) +{ + sBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM; + sBattleBuffersTransferData[1] = partyId; + sBattleBuffersTransferData[2] = dontClearSubstituteBit; + sBattleBuffersTransferData[3] = 5; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1) +{ + sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; + sBattleBuffersTransferData[1] = arg1; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitDrawTrainerPic(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC; + sBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC; + sBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC; + sBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitTrainerSlide(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE; + sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE; + sBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE; + sBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitTrainerSlideBack(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK; + sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK; + sBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK; + sBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitFaintAnimation(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION; + sBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION; + sBattleBuffersTransferData[2] = CONTROLLER_FAINTANIMATION; + sBattleBuffersTransferData[3] = CONTROLLER_FAINTANIMATION; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitPaletteFade(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE; + sBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE; + sBattleBuffersTransferData[2] = CONTROLLER_PALETTEFADE; + sBattleBuffersTransferData[3] = CONTROLLER_PALETTEFADE; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM; + sBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM; + sBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM; + sBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM; + sBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +// not used +static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_PAUSE; + sBattleBuffersTransferData[1] = toWait; + for (i = 0; i < toWait * 3; ++i) + sBattleBuffersTransferData[2 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2); +} + +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr) +{ + sBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION; + sBattleBuffersTransferData[1] = move; + sBattleBuffersTransferData[2] = (move & 0xFF00) >> 8; + sBattleBuffersTransferData[3] = turnOfMove; + sBattleBuffersTransferData[4] = movePower; + sBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8; + sBattleBuffersTransferData[6] = dmg; + sBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8; + sBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; + sBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; + sBattleBuffersTransferData[10] = friendship; + sBattleBuffersTransferData[11] = gUnknown_2023D72; // multihit in pokeem + if (WEATHER_HAS_EFFECT2) + { + sBattleBuffersTransferData[12] = gBattleWeather; + sBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; + } + else + { + sBattleBuffersTransferData[12] = 0; + sBattleBuffersTransferData[13] = 0; + } + sBattleBuffersTransferData[14] = 0; + sBattleBuffersTransferData[15] = 0; + memcpy(&sBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct)); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); +} + +void BtlController_EmitPrintString(u8 bufferId, u16 stringID) +{ + s32 i; + struct BattleMsgData *stringInfo; + + sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING; + sBattleBuffersTransferData[1] = gBattleOutcome; + sBattleBuffersTransferData[2] = stringID; + sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->originallyUsedMove = gChosenMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleScripting.battler; + stringInfo->unk1605E = gBattleStruct->field_52; + stringInfo->hpScale = gBattleStruct->hpScale; + stringInfo->itemEffectBattler = gPotentialItemEffectBattler; + stringInfo->moveType = gBattleMoves[gCurrentMove].type; + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4); +} + +void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID) +{ + s32 i; + struct BattleMsgData *stringInfo; + + sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; + sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; + sBattleBuffersTransferData[2] = stringID; + sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; + + stringInfo = (struct BattleMsgData*)(&sBattleBuffersTransferData[4]); + stringInfo->currentMove = gCurrentMove; + stringInfo->originallyUsedMove = gChosenMove; + stringInfo->lastItem = gLastUsedItem; + stringInfo->lastAbility = gLastUsedAbility; + stringInfo->scrActive = gBattleScripting.battler; + stringInfo->unk1605E = gBattleStruct->field_52; + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + stringInfo->abilities[i] = gBattleMons[i].ability; + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i) + { + stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; + stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; + stringInfo->textBuffs[2][i] = gBattleTextBuff3[i]; + } + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4); +} + +void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2) +{ + sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = arg2; + sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitUnknownYesNoBox(u8 bufferId, u32 arg1) // TODO: Does the function name make sense for pokefirered? +{ + sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX; + sBattleBuffersTransferData[1] = arg1; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEMOVE; + sBattleBuffersTransferData[1] = isDoubleBattle; + sBattleBuffersTransferData[2] = NoPpNumber; + sBattleBuffersTransferData[3] = 0; + for (i = 0; i < sizeof(*movePpData); ++i) + sBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); +} + +void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; + for (i = 0; i < 3; ++i) + sBattleBuffersTransferData[1 + i] = arg1[i]; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON; + sBattleBuffersTransferData[1] = caseId; + sBattleBuffersTransferData[2] = arg2; + sBattleBuffersTransferData[3] = abilityId; + for (i = 0; i < 3; ++i) + sBattleBuffersTransferData[4 + i] = arg4[i]; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written. +} + +// not used +static void BtlController_EmitCmd23(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_23; + sBattleBuffersTransferData[1] = CONTROLLER_23; + sBattleBuffersTransferData[2] = CONTROLLER_23; + sBattleBuffersTransferData[3] = CONTROLLER_23; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue) +{ + sBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE; + sBattleBuffersTransferData[1] = 0; + sBattleBuffersTransferData[2] = (s16)hpValue; + sBattleBuffersTransferData[3] = ((s16)hpValue & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints) +{ + sBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE; + sBattleBuffersTransferData[1] = partyId; + sBattleBuffersTransferData[2] = (s16)expPoints; + sBattleBuffersTransferData[3] = ((s16)expPoints & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2) +{ + sBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE; + sBattleBuffersTransferData[1] = status1; + sBattleBuffersTransferData[2] = (status1 & 0x0000FF00) >> 8; + sBattleBuffersTransferData[3] = (status1 & 0x00FF0000) >> 16; + sBattleBuffersTransferData[4] = (status1 & 0xFF000000) >> 24; + sBattleBuffersTransferData[5] = status2; + sBattleBuffersTransferData[6] = (status2 & 0x0000FF00) >> 8; + sBattleBuffersTransferData[7] = (status2 & 0x00FF0000) >> 16; + sBattleBuffersTransferData[8] = (status2 & 0xFF000000) >> 24; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 9); +} + +void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status) +{ + sBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION; + sBattleBuffersTransferData[1] = status2; + sBattleBuffersTransferData[2] = status; + sBattleBuffersTransferData[3] = (status & 0x0000FF00) >> 8; + sBattleBuffersTransferData[4] = (status & 0x00FF0000) >> 16; + sBattleBuffersTransferData[5] = (status & 0xFF000000) >> 24; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6); +} + +// not used +static void BtlController_EmitStatusXor(u8 bufferId, u8 b) +{ + sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR; + sBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_DATATRANSFER; + sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER; + sBattleBuffersTransferData[2] = size; + sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8; + for (i = 0; i < size; ++i) + sBattleBuffersTransferData[4 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4); +} + +// not used +static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_DMA3TRANSFER; + sBattleBuffersTransferData[1] = (u32)(dst); + sBattleBuffersTransferData[2] = ((u32)(dst) & 0x0000FF00) >> 8; + sBattleBuffersTransferData[3] = ((u32)(dst) & 0x00FF0000) >> 16; + sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24; + sBattleBuffersTransferData[5] = size; + sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8; + for (i = 0; i < size; ++i) + sBattleBuffersTransferData[7 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7); +} + +// not used +static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_31; + sBattleBuffersTransferData[1] = songId; + sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + for (i = 0; i < songId; ++i) + sBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3); +} + +// not used +static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_32; + sBattleBuffersTransferData[1] = size; + sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8; + for (i = 0; i < size; ++i) + sBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); +} + +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2) +{ + sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = arg2; + sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE; + sBattleBuffersTransferData[1] = b; + for (i = 0; i < 3; ++i) + sBattleBuffersTransferData[2 + i] = c[i]; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); +} + +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1) +{ + sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b) +{ + sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE; + sBattleBuffersTransferData[1] = b; + sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitCmd37(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_37; + sBattleBuffersTransferData[1] = CONTROLLER_37; + sBattleBuffersTransferData[2] = CONTROLLER_37; + sBattleBuffersTransferData[3] = CONTROLLER_37; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitCmd38(u8 bufferId, u8 b) +{ + sBattleBuffersTransferData[0] = CONTROLLER_38; + sBattleBuffersTransferData[1] = b; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +// not used +static void BtlController_EmitCmd39(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_39; + sBattleBuffersTransferData[1] = CONTROLLER_39; + sBattleBuffersTransferData[2] = CONTROLLER_39; + sBattleBuffersTransferData[3] = CONTROLLER_39; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +// not used +static void BtlController_EmitCmd40(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_40; + sBattleBuffersTransferData[1] = CONTROLLER_40; + sBattleBuffersTransferData[2] = CONTROLLER_40; + sBattleBuffersTransferData[3] = CONTROLLER_40; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitHitAnimation(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION; + sBattleBuffersTransferData[1] = CONTROLLER_HITANIMATION; + sBattleBuffersTransferData[2] = CONTROLLER_HITANIMATION; + sBattleBuffersTransferData[3] = CONTROLLER_HITANIMATION; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitCmd42(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_42; + sBattleBuffersTransferData[1] = CONTROLLER_42; + sBattleBuffersTransferData[2] = CONTROLLER_42; + sBattleBuffersTransferData[3] = CONTROLLER_42; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitPlaySE(u8 bufferId, u16 songId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND; + sBattleBuffersTransferData[1] = songId; + sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM; + sBattleBuffersTransferData[1] = songId; + sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; + sBattleBuffersTransferData[3] = 0; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitFaintingCry(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY; + sBattleBuffersTransferData[1] = CONTROLLER_FAINTINGCRY; + sBattleBuffersTransferData[2] = CONTROLLER_FAINTINGCRY; + sBattleBuffersTransferData[3] = CONTROLLER_FAINTINGCRY; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE; + sBattleBuffersTransferData[1] = terrainId; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitIntroTrainerBallThrow(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW; + sBattleBuffersTransferData[1] = CONTROLLER_INTROTRAINERBALLTHROW; + sBattleBuffersTransferData[2] = CONTROLLER_INTROTRAINERBALLTHROW; + sBattleBuffersTransferData[3] = CONTROLLER_INTROTRAINERBALLTHROW; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2) +{ + s32 i; + + sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; + sBattleBuffersTransferData[1] = arg2 & 0x7F; + sBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7; + sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; + for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i) + sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4); +} + +void BtlController_EmitHidePartyStatusSummary(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_HIDEPARTYSTATUSSUMMARY; + sBattleBuffersTransferData[1] = CONTROLLER_HIDEPARTYSTATUSSUMMARY; + sBattleBuffersTransferData[2] = CONTROLLER_HIDEPARTYSTATUSSUMMARY; + sBattleBuffersTransferData[3] = CONTROLLER_HIDEPARTYSTATUSSUMMARY; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitEndBounceEffect(u8 bufferId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_ENDBOUNCE; + sBattleBuffersTransferData[1] = CONTROLLER_ENDBOUNCE; + sBattleBuffersTransferData[2] = CONTROLLER_ENDBOUNCE; + sBattleBuffersTransferData[3] = CONTROLLER_ENDBOUNCE; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible) +{ + sBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY; + sBattleBuffersTransferData[1] = isInvisible; + sBattleBuffersTransferData[2] = CONTROLLER_SPRITEINVISIBILITY; + sBattleBuffersTransferData[3] = CONTROLLER_SPRITEINVISIBILITY; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument) +{ + sBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION; + sBattleBuffersTransferData[1] = animationId; + sBattleBuffersTransferData[2] = argument; + sBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); +} + +void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1) +{ + sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG; + sBattleBuffersTransferData[1] = arg1; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId) +{ + sBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION; + sBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} + +void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome) +{ + sBattleBuffersTransferData[0] = CONTROLLER_55; + sBattleBuffersTransferData[1] = battleOutcome; + PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); +} diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index bea4406bc..f0a724fe6 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -758,6 +758,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform) void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) { u8 position; + // variable i is actually u8, but needs to be 32-bit to make the inline ASM match. s32 i; u32 palOffset; const void *substitutePal; diff --git a/src/mevent.c b/src/mevent.c index fc0c1f2d4..d0d7f59aa 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -134,7 +134,7 @@ static void ResetTTDataBuffer(void) { memset(gDecompressionBuffer, 0, 0x2000); gLinkType = 0x5502; - sub_8009804(); + OpenLink(); SetSuppressLinkErrorMessage(TRUE); } @@ -156,7 +156,7 @@ bool32 sub_81436EC(void) static bool32 IsEReaderConnectionSane(void) { - if (sub_800AA48() && GetLinkPlayerCount_2() == 2) + if (IsLinkMaster() && GetLinkPlayerCount_2() == 2) return TRUE; return FALSE; } @@ -171,7 +171,7 @@ u32 sub_8143770(u8 * r4, u16 * r5) switch (*r4) { case 0: - if (sub_800AA48() && GetLinkPlayerCount_2() > 1) + if (IsLinkMaster() && GetLinkPlayerCount_2() > 1) { *r4 = 1; ; @@ -193,7 +193,7 @@ u32 sub_8143770(u8 * r4, u16 * r5) if (GetLinkPlayerCount_2() == 2) { PlaySE(SE_TOY_G); - sub_800A5BC(); + CheckShouldAdvanceLinkState(); *r5 = 0; *r4 = 3; } diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c index 35efa68c8..6df5207f0 100644 --- a/src/mevent_server_helpers.c +++ b/src/mevent_server_helpers.c @@ -155,7 +155,7 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr) switch (svr->seqno) { case 0: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) { header.ident = svr->sendIdent; header.size = svr->sendSize; @@ -167,7 +167,7 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr) } break; case 1: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) { if (mevent_has_received(svr->sendPlayerNo)) { @@ -189,7 +189,7 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr) } break; case 2: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) { if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC) sub_80FA190(); diff --git a/src/pokemon.c b/src/pokemon.c index 848f258be..ffe407daf 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -19,7 +19,6 @@ #include "evolution_scene.h" #include "battle_message.h" #include "battle_util.h" -#include "battle_ai_script_commands.h" #include "link.h" #include "m4a.h" #include "sound.h" @@ -2592,7 +2591,7 @@ u8 CountAliveMonsInBattle(u8 caseId) case BATTLE_ALIVE_ATK_SIDE: for (i = 0; i < 4; i++) { - if (GetBattlerSide(i) == GetBattlerSide(sBattler_AI) && !(gAbsentBattlerFlags & gBitTable[i])) + if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i])) retVal++; } break; @@ -6106,7 +6105,7 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId) } else { - sBattler_AI = gBattlerInMenuId; + gBattlerAttacker = gBattlerInMenuId; BattleStringExpandPlaceholdersToDisplayedString(BattleText_GetPumped); } } @@ -6114,7 +6113,7 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId) if (itemEffect[3] & 0x80) { - sBattler_AI = gBattlerInMenuId; + gBattlerAttacker = gBattlerInMenuId; BattleStringExpandPlaceholdersToDisplayedString(BattleText_MistShroud); } @@ -7075,15 +7074,9 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon) } } -// SetMonPreventsSwitchingString -void sub_8044348(void) +void SetMonPreventsSwitchingString(void) { -#ifdef NONMATCHING - gLastUsedAbility = gBattleStruct -> abilityPreventingSwitchout; // fixed from the original -#else - gLastUsedAbility = ((u8 *) gBattleStruct)[0xac]; // huh? why is this wrong? -#endif - + gLastUsedAbility = gBattleStruct -> abilityPreventingSwitchout; gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX; gBattleTextBuff1[2] = gBattleStruct->battlerPreventingSwitchout; diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index 3dfc2eb57..2687e4ea5 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -26,7 +26,7 @@ void sub_812C334(s32 *, s32 *); void sub_812BFDC(void) { - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_POKEDUDE)) && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_OLDMAN_TUTORIAL | BATTLE_TYPE_POKEDUDE)) && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) { struct QuestLogStruct_TrainerBattleRecord * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_TrainerBattleRecord)); struct QuestLogStruct_WildBattleRecord * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_WildBattleRecord)); diff --git a/src/save.c b/src/save.c index d3d31a22e..9f580477b 100644 --- a/src/save.c +++ b/src/save.c @@ -68,7 +68,7 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen extern void sub_800AB9C(void); // link -extern bool8 sub_800A4BC(void); // link +extern bool8 IsLinkTaskFinished(void); // link extern void save_serialize_map(void); // fieldmap extern void sub_804C1C0(void); // load_save extern void sav2_gender2_inplace_and_xFE(void); // load_save @@ -865,7 +865,7 @@ void sub_80DA634(u8 taskId) gTasks[taskId].data[0] = 2; break; case 2: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) { save_serialize_map(); gTasks[taskId].data[0] = 3; @@ -899,7 +899,7 @@ void sub_80DA634(u8 taskId) gTasks[taskId].data[0] = 8; break; case 8: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) { sub_80DA434(); gTasks[taskId].data[0] = 9; @@ -910,7 +910,7 @@ void sub_80DA634(u8 taskId) gTasks[taskId].data[0] = 10; break; case 10: - if (sub_800A4BC()) + if (IsLinkTaskFinished()) gTasks[taskId].data[0]++; break; case 11: diff --git a/sym_common.txt b/sym_common.txt index 3ed97758a..a8a434559 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -108,7 +108,7 @@ gUnknown_3004F74: @ 3004F74 gPreBattleCallback1: @ 3004F80 .space 0x4 -gUnknown_3004F84: @ 3004F84 +gBattleMainFunc: @ 3004F84 .space 0xC gBattleResults: @ 3004F90 diff --git a/sym_ewram.txt b/sym_ewram.txt index 205e5e4f0..4532d441c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -79,20 +79,7 @@ gUnknown_2022860: @ 2022860 .space 0xC @ .include "src/link_rfu.o" -gUnknown_202286C: @ 202286C - .space 0x1 - -gUnknown_202286D: @ 202286D - .space 0x1 - -gUnknown_202286E: @ 202286E - .space 0x2 - -gUnknown_2022870: @ 2022870 - .space 0x4 - -gUnknown_2022874: @ 2022874 - .space 0x100 + .include "src/battle_controllers.o" gBattle_BG0_X: @ 2022974 .space 0x2 @@ -139,7 +126,7 @@ gBattleTextBuff1: @ 2022AB8 gBattleTextBuff2: @ 2022AC8 .space 0x10 -gUnknown_2022AD8: @ 2022AD8 +gBattleTextBuff3: @ 2022AD8 .space 0x10 gUnknown_2022AE8: @ 2022AE8 @@ -178,7 +165,7 @@ gUnknown_2022BC7: @ 2022BC7 gUnknown_2022BC8: @ 2022BC8 .space 0x7FC -gUnknown_20233C4: @ 20233C4 +gBattleBufferB: @ 20233C4 .space 0x4 gUnknown_20233C8: @ 20233C8 @@ -244,7 +231,7 @@ gUnknown_2023D49: @ 2023D49 gCurrentMove: @ 2023D4A .space 0x2 -gUnknown_2023D4C: @ 2023D4C +gChosenMove: @ 2023D4C .space 0x2 gUnknown_2023D4E: @ 2023D4E @@ -259,13 +246,13 @@ gUnknown_2023D54: @ 2023D54 gUnknown_2023D58: @ 2023D58 .space 0x10 -gUnknown_2023D68: @ 2023D68 +gLastUsedItem: @ 2023D68 .space 0x2 gLastUsedAbility: @ 2023D6A .space 0x1 -sBattler_AI: @ 2023D6B +gBattlerAttacker: @ 2023D6B .space 0x1 gBattlerTarget: @ 2023D6C @@ -274,7 +261,7 @@ gBattlerTarget: @ 2023D6C gUnknown_2023D6D: @ 2023D6D .space 0x1 -gUnknown_2023D6E: @ 2023D6E +gEffectBattler: @ 2023D6E .space 0x1 gPotentialItemEffectBattler: @ 2023D6F @@ -415,7 +402,7 @@ gBattleResources: @ 2023FF4 gActionSelectionCursor: @ 2023FF8 .space 0x4 -gUnknown_2023FFC: @ 2023FFC +gMoveSelectionCursor: @ 2023FFC .space 0x4 gUnknown_2024000: @ 2024000 From 3f866d2a60cde838d9170bf080b075f120d81ed5 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 03:27:06 +0800 Subject: [PATCH 006/100] matched BattleLoadSubstituteOrMonSpriteGfx --- src/battle_gfx_sfx_util.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index f0a724fe6..ba691801f 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -758,10 +758,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform) void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) { u8 position; - // variable i is actually u8, but needs to be 32-bit to make the inline ASM match. s32 i; u32 palOffset; - const void *substitutePal; if (!loadMonSprite) { @@ -770,19 +768,16 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]); else LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]); - i = 1; - palOffset = battlerId * 16; - substitutePal = gSubstituteDollPal; - for (; i < 4; ++i) + for (i = 1; i < 4; ++i) { - #ifndef NONMATCHING - register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position]; - #endif - void *dmaDst = (i * 0x800) + dmaSrc; + u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position]; - DmaCopy32(3, dmaSrc, dmaDst, 0x800); + ++ptr; + --ptr; + DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800); } - LoadCompressedPalette(substitutePal, palOffset + 0x100, 0x20); + palOffset = (battlerId * 16) + 0x100; + LoadCompressedPalette(gSubstituteDollPal, palOffset, 32); } else { From 1f986e65435c10f3d62b3777beb8acf712dcbbf2 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 05:40:12 +0800 Subject: [PATCH 007/100] fixed incorrect comment --- src/battle_util2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_util2.c b/src/battle_util2.c index 5254ab25b..83014a83b 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -19,7 +19,7 @@ void AllocateBattleResources(void) *ptr++ = AllocZeroed(8); while (--i >= 0); } - // TODO: Figure out whether 0x200 is really the size of *gBattleResources. + // TODO: Figure out whether 0x200 is really the size of *gBattleStruct. // The following works in pokeem: // gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); gBattleStruct = AllocZeroed(0x200); From 035df4d7a4a2782cf7bc3789f56471a03ffbfca0 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 12:10:40 +0800 Subject: [PATCH 008/100] ported documentation of battle_util.s --- asm/battle_2.s | 734 +++---- asm/battle_anim_special.s | 4 +- asm/battle_controller_oak.s | 4 +- asm/battle_script_commands.s | 3274 +++++++++++++++---------------- asm/battle_util.s | 1450 +++++++------- asm/evolution_scene.s | 100 +- data/battle_scripts_1.s | 204 +- data/data.s | 2 +- include/battle_util.h | 10 +- src/battle_ai_script_commands.c | 6 +- src/pokemon.c | 4 +- sym_ewram.txt | 28 +- 12 files changed, 2910 insertions(+), 2910 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 910b37d65..365ef0691 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -21,14 +21,14 @@ sub_800FD9C: @ 800FD9C bl HandleLinkBattleSetup ldr r0, _0800FDD0 @ =sub_80109C8 bl SetMainCallback2 - ldr r1, _0800FDD4 @ =gUnknown_2023E82 + ldr r1, _0800FDD4 @ =gBattleCommunication movs r0, 0 strb r0, [r1] b _0800FE1C .align 2, 0 _0800FDCC: .4byte gBattleTypeFlags _0800FDD0: .4byte sub_80109C8 -_0800FDD4: .4byte gUnknown_2023E82 +_0800FDD4: .4byte gBattleCommunication _0800FDD8: bl sub_800FE24 ldr r1, [r4] @@ -237,7 +237,7 @@ _0800FFAE: cmp r4, r5 ble _0800FFAE movs r1, 0 - ldr r0, _0800FFE8 @ =gUnknown_2023E82 + ldr r0, _0800FFE8 @ =gBattleCommunication strb r1, [r0] add sp, 0x4 pop {r4,r5} @@ -251,7 +251,7 @@ _0800FFD8: .4byte gTrainerBattleOpponent_A _0800FFDC: .4byte gMain _0800FFE0: .4byte 0x00000439 _0800FFE4: .4byte gPlayerParty -_0800FFE8: .4byte gUnknown_2023E82 +_0800FFE8: .4byte gBattleCommunication thumb_func_end sub_800FE24 thumb_func_start sub_800FFEC @@ -952,7 +952,7 @@ sub_8010508: @ 8010508 movs r0, 0x1 adds r5, r4, 0 eors r5, r0 - ldr r0, _08010544 @ =gUnknown_2023E82 + ldr r0, _08010544 @ =gBattleCommunication ldrb r0, [r0] cmp r0, 0x10 bls _08010536 @@ -965,7 +965,7 @@ _08010536: mov pc, r0 .align 2, 0 _08010540: .4byte gBattleStruct -_08010544: .4byte gUnknown_2023E82 +_08010544: .4byte gBattleCommunication _08010548: .4byte _0801054C .align 2, 0 _0801054C: @@ -1000,7 +1000,7 @@ _08010590: movs r0, 0x3 bl ShowBg bl sub_80357C8 - ldr r1, _080105CC @ =gUnknown_2023E82 + ldr r1, _080105CC @ =gBattleCommunication movs r0, 0x1 strb r0, [r1] _080105BC: @@ -1013,7 +1013,7 @@ _080105C6: bl sub_80FCEA8 b _080108B8 .align 2, 0 -_080105CC: .4byte gUnknown_2023E82 +_080105CC: .4byte gBattleCommunication _080105D0: .4byte gWirelessCommType _080105D4: ldr r2, _08010640 @ =gBattleTypeFlags @@ -1053,7 +1053,7 @@ _080105EC: adds r1, r5 movs r2, 0x20 bl SendBlock - ldr r0, _08010650 @ =gUnknown_2023E82 + ldr r0, _08010650 @ =gBattleCommunication strb r6, [r0] _0801062A: ldr r0, _08010654 @ =gWirelessCommType @@ -1071,19 +1071,19 @@ _08010640: .4byte gBattleTypeFlags _08010644: .4byte gReceivedRemoteLinkPlayers _08010648: .4byte gBattleStruct _0801064C: .4byte 0x00000185 -_08010650: .4byte gUnknown_2023E82 +_08010650: .4byte gBattleCommunication _08010654: .4byte gWirelessCommType _08010658: movs r0, 0x4 orrs r1, r0 str r1, [r2] - ldr r1, _0801066C @ =gUnknown_2023E82 + ldr r1, _0801066C @ =gBattleCommunication movs r0, 0xF strb r0, [r1] bl sub_801017C b _080108B8 .align 2, 0 -_0801066C: .4byte gUnknown_2023E82 +_0801066C: .4byte gBattleCommunication _08010670: bl GetBlockReceivedStatus movs r1, 0x3 @@ -1133,14 +1133,14 @@ _0801067E: ldrh r0, [r1] strh r0, [r2, 0x10] bl SetDeoxysStats - ldr r1, _080106F0 @ =gUnknown_2023E82 + ldr r1, _080106F0 @ =gBattleCommunication b _080108B2 .align 2, 0 _080106E0: .4byte sub_800F6FC _080106E4: .4byte gTasks _080106E8: .4byte gBattleStruct _080106EC: .4byte gBlockRecvBuffer -_080106F0: .4byte gUnknown_2023E82 +_080106F0: .4byte gBattleCommunication _080106F4: bl IsLinkTaskFinished lsls r0, 24 @@ -1154,11 +1154,11 @@ _08010700: ldr r1, _08010714 @ =gPlayerParty movs r2, 0xC8 bl SendBlock - ldr r1, _08010718 @ =gUnknown_2023E82 + ldr r1, _08010718 @ =gBattleCommunication b _080108B2 .align 2, 0 _08010714: .4byte gPlayerParty -_08010718: .4byte gUnknown_2023E82 +_08010718: .4byte gBattleCommunication _0801071C: bl GetBlockReceivedStatus movs r1, 0x3 @@ -1174,12 +1174,12 @@ _0801072A: adds r1, r2 movs r2, 0xC8 bl memcpy - ldr r1, _08010748 @ =gUnknown_2023E82 + ldr r1, _08010748 @ =gBattleCommunication b _080108B2 .align 2, 0 _08010740: .4byte gEnemyParty _08010744: .4byte gBlockRecvBuffer -_08010748: .4byte gUnknown_2023E82 +_08010748: .4byte gBattleCommunication _0801074C: bl IsLinkTaskFinished lsls r0, 24 @@ -1193,11 +1193,11 @@ _08010758: ldr r1, _0801076C @ =gUnknown_202434C movs r2, 0xC8 bl SendBlock - ldr r1, _08010770 @ =gUnknown_2023E82 + ldr r1, _08010770 @ =gBattleCommunication b _080108B2 .align 2, 0 _0801076C: .4byte gUnknown_202434C -_08010770: .4byte gUnknown_2023E82 +_08010770: .4byte gBattleCommunication _08010774: bl GetBlockReceivedStatus movs r1, 0x3 @@ -1213,12 +1213,12 @@ _08010782: adds r1, r2 movs r2, 0xC8 bl memcpy - ldr r1, _080107A0 @ =gUnknown_2023E82 + ldr r1, _080107A0 @ =gBattleCommunication b _080108B2 .align 2, 0 _08010798: .4byte gUnknown_20240F4 _0801079C: .4byte gBlockRecvBuffer -_080107A0: .4byte gUnknown_2023E82 +_080107A0: .4byte gBattleCommunication _080107A4: bl IsLinkTaskFinished lsls r0, 24 @@ -1232,11 +1232,11 @@ _080107B0: ldr r1, _080107C4 @ =gUnknown_2024414 movs r2, 0xC8 bl SendBlock - ldr r1, _080107C8 @ =gUnknown_2023E82 + ldr r1, _080107C8 @ =gBattleCommunication b _080108B2 .align 2, 0 _080107C4: .4byte gUnknown_2024414 -_080107C8: .4byte gUnknown_2023E82 +_080107C8: .4byte gBattleCommunication _080107CC: bl GetBlockReceivedStatus movs r1, 0x3 @@ -1268,17 +1268,17 @@ _080107CC: adds r0, r4, 0 adds r0, 0x64 bl sub_8011D0C - ldr r1, _08010830 @ =gUnknown_2023E82 + ldr r1, _08010830 @ =gBattleCommunication b _080108B2 .align 2, 0 _08010820: .4byte gUnknown_20241BC _08010824: .4byte gBlockRecvBuffer _08010828: .4byte 0xfffffe70 _0801082C: .4byte 0xfffffed4 -_08010830: .4byte gUnknown_2023E82 +_08010830: .4byte gBattleCommunication _08010834: bl sub_800D30C - ldr r0, _08010848 @ =gUnknown_2023E82 + ldr r0, _08010848 @ =gBattleCommunication ldrb r1, [r0] adds r1, 0x1 movs r2, 0 @@ -1287,7 +1287,7 @@ _08010834: strb r2, [r0, 0x2] b _080108B8 .align 2, 0 -_08010848: .4byte gUnknown_2023E82 +_08010848: .4byte gBattleCommunication _0801084C: ldr r0, _08010880 @ =gUnknown_2023E83 adds r1, r0, 0x1 @@ -1321,14 +1321,14 @@ _0801088C: .4byte sub_80123E4 _08010890: .4byte BattleMainCB2 _08010894: .4byte gBattleTypeFlags _08010898: - ldr r0, _080108C0 @ =gUnknown_2023E82 + ldr r0, _080108C0 @ =gBattleCommunication ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] movs r1, 0x1 strb r1, [r0, 0x1] _080108A4: - ldr r1, _080108C0 @ =gUnknown_2023E82 + ldr r1, _080108C0 @ =gBattleCommunication ldrb r0, [r1, 0x1] subs r0, 0x1 strb r0, [r1, 0x1] @@ -1344,7 +1344,7 @@ _080108B8: pop {r0} bx r0 .align 2, 0 -_080108C0: .4byte gUnknown_2023E82 +_080108C0: .4byte gBattleCommunication thumb_func_end sub_8010508 thumb_func_start sub_80108C4 @@ -1494,7 +1494,7 @@ sub_80109C8: @ 80109C8 bl RunTasks bl AnimateSprites bl BuildOamBuffer - ldr r5, _08010A10 @ =gUnknown_2023E82 + ldr r5, _08010A10 @ =gBattleCommunication ldrb r0, [r5] cmp r0, 0x1 beq _08010A5C @@ -1505,7 +1505,7 @@ sub_80109C8: @ 80109C8 b _08010B82 .align 2, 0 _08010A0C: .4byte gBattleStruct -_08010A10: .4byte gUnknown_2023E82 +_08010A10: .4byte gBattleCommunication _08010A14: cmp r0, 0x2 beq _08010AFC @@ -1596,7 +1596,7 @@ _08010ABA: adds r4, 0x1 cmp r4, 0x3 ble _08010A78 - ldr r1, _08010AEC @ =gUnknown_2023E82 + ldr r1, _08010AEC @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -1615,7 +1615,7 @@ _08010ABA: .align 2, 0 _08010AE4: .4byte gBlockRecvBuffer _08010AE8: .4byte gUnknown_2022B58 -_08010AEC: .4byte gUnknown_2023E82 +_08010AEC: .4byte gBattleCommunication _08010AF0: .4byte gMain _08010AF4: .4byte gBattleTypeFlags _08010AF8: .4byte sub_80109C8 @@ -1709,7 +1709,7 @@ sub_8010BA0: @ 8010BA0 bl RunTasks bl AnimateSprites bl BuildOamBuffer - ldr r0, _08010BDC @ =gUnknown_2023E82 + ldr r0, _08010BDC @ =gBattleCommunication ldrb r0, [r0] cmp r0, 0xC bls _08010BCC @@ -1722,7 +1722,7 @@ _08010BCC: mov pc, r0 .align 2, 0 _08010BD8: .4byte gBattleStruct -_08010BDC: .4byte gUnknown_2023E82 +_08010BDC: .4byte gBattleCommunication _08010BE0: .4byte _08010BE4 .align 2, 0 _08010BE4: @@ -1753,7 +1753,7 @@ _08010C18: movs r0, 0x3 bl ShowBg bl sub_80357C8 - ldr r1, _08010C54 @ =gUnknown_2023E82 + ldr r1, _08010C54 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1] _08010C44: @@ -1766,7 +1766,7 @@ _08010C4E: bl sub_80FCEA8 b _080110F0 .align 2, 0 -_08010C54: .4byte gUnknown_2023E82 +_08010C54: .4byte gBattleCommunication _08010C58: .4byte gWirelessCommType _08010C5C: ldr r0, _08010CC0 @ =gReceivedRemoteLinkPlayers @@ -1800,7 +1800,7 @@ _08010C66: adds r1, r5 movs r2, 0x20 bl SendBlock - ldr r1, _08010CCC @ =gUnknown_2023E82 + ldr r1, _08010CCC @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -1819,7 +1819,7 @@ _08010CB4: _08010CC0: .4byte gReceivedRemoteLinkPlayers _08010CC4: .4byte gBattleStruct _08010CC8: .4byte 0x00000185 -_08010CCC: .4byte gUnknown_2023E82 +_08010CCC: .4byte gBattleCommunication _08010CD0: .4byte gWirelessCommType _08010CD4: bl GetBlockReceivedStatus @@ -1926,7 +1926,7 @@ _08010D9C: bge _08010D3A bl ZeroPlayerPartyMons bl ZeroEnemyPartyMons - ldr r1, _08010DD8 @ =gUnknown_2023E82 + ldr r1, _08010DD8 @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -1943,10 +1943,10 @@ _08010DC2: ldr r1, _08010DDC @ =gDecompressionBuffer movs r2, 0xC8 bl SendBlock - ldr r1, _08010DD8 @ =gUnknown_2023E82 + ldr r1, _08010DD8 @ =gBattleCommunication b _080110EA .align 2, 0 -_08010DD8: .4byte gUnknown_2023E82 +_08010DD8: .4byte gBattleCommunication _08010DDC: .4byte gDecompressionBuffer _08010DE0: bl GetBlockReceivedStatus @@ -2078,11 +2078,11 @@ _08010EBE: adds r6, 0x1 cmp r6, 0x3 ble _08010E00 - ldr r1, _08010ED4 @ =gUnknown_2023E82 + ldr r1, _08010ED4 @ =gBattleCommunication b _080110EA .align 2, 0 _08010ED0: .4byte gUnknown_2024158 -_08010ED4: .4byte gUnknown_2023E82 +_08010ED4: .4byte gBattleCommunication _08010ED8: bl IsLinkTaskFinished lsls r0, 24 @@ -2096,11 +2096,11 @@ _08010EE4: ldr r1, _08010EF8 @ =gDecompressionBuffer + 0x0C8 movs r2, 0x64 bl SendBlock - ldr r1, _08010EFC @ =gUnknown_2023E82 + ldr r1, _08010EFC @ =gBattleCommunication b _080110EA .align 2, 0 _08010EF8: .4byte gDecompressionBuffer + 0x0C8 -_08010EFC: .4byte gUnknown_2023E82 +_08010EFC: .4byte gBattleCommunication _08010F00: bl GetBlockReceivedStatus movs r1, 0xF @@ -2273,16 +2273,16 @@ _08010FDE: lsls r2, 1 adds r0, r4, r2 bl sub_8011D0C - ldr r1, _08011068 @ =gUnknown_2023E82 + ldr r1, _08011068 @ =gBattleCommunication b _080110EA .align 2, 0 _0801105C: .4byte gUnknown_2024220 _08011060: .4byte gPlayerParty _08011064: .4byte gEnemyParty -_08011068: .4byte gUnknown_2023E82 +_08011068: .4byte gBattleCommunication _0801106C: bl sub_800D30C - ldr r0, _08011080 @ =gUnknown_2023E82 + ldr r0, _08011080 @ =gBattleCommunication ldrb r1, [r0] adds r1, 0x1 movs r2, 0 @@ -2291,7 +2291,7 @@ _0801106C: strb r2, [r0, 0x2] b _080110F0 .align 2, 0 -_08011080: .4byte gUnknown_2023E82 +_08011080: .4byte gBattleCommunication _08011084: ldr r0, _080110B8 @ =gUnknown_2023E83 adds r1, r0, 0x1 @@ -2325,14 +2325,14 @@ _080110C4: .4byte sub_80123E4 _080110C8: .4byte BattleMainCB2 _080110CC: .4byte gBattleTypeFlags _080110D0: - ldr r0, _080110FC @ =gUnknown_2023E82 + ldr r0, _080110FC @ =gBattleCommunication ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] movs r1, 0x1 strb r1, [r0, 0x1] _080110DC: - ldr r1, _080110FC @ =gUnknown_2023E82 + ldr r1, _080110FC @ =gBattleCommunication ldrb r0, [r1, 0x1] subs r0, 0x1 strb r0, [r1, 0x1] @@ -2350,7 +2350,7 @@ _080110F0: pop {r0} bx r0 .align 2, 0 -_080110FC: .4byte gUnknown_2023E82 +_080110FC: .4byte gBattleCommunication thumb_func_end sub_8010BA0 thumb_func_start BattleMainCB2 @@ -3634,7 +3634,7 @@ _08011A9C: bl sub_801184C ldr r0, _08011B8C @ =sub_8011B94 bl SetMainCallback2 - ldr r0, _08011B90 @ =gUnknown_2023E82 + ldr r0, _08011B90 @ =gBattleCommunication strb r4, [r0] add sp, 0x4 pop {r4} @@ -3661,7 +3661,7 @@ _08011B80: .4byte sub_80116F4 _08011B84: .4byte sub_800F6FC _08011B88: .4byte gTasks _08011B8C: .4byte sub_8011B94 -_08011B90: .4byte gUnknown_2023E82 +_08011B90: .4byte gBattleCommunication thumb_func_end sub_8011A1C thumb_func_start sub_8011B94 @@ -3680,7 +3680,7 @@ sub_8011B94: @ 8011B94 sub_8011BB0: @ 8011BB0 push {r4,lr} sub sp, 0x4 - ldr r4, _08011BC8 @ =gUnknown_2023E82 + ldr r4, _08011BC8 @ =gBattleCommunication ldrb r0, [r4] cmp r0, 0x1 beq _08011BEA @@ -3690,7 +3690,7 @@ sub_8011BB0: @ 8011BB0 beq _08011BD2 b _08011C34 .align 2, 0 -_08011BC8: .4byte gUnknown_2023E82 +_08011BC8: .4byte gBattleCommunication _08011BCC: cmp r0, 0x2 beq _08011C10 @@ -4776,7 +4776,7 @@ nullsub_12: @ 80123BC BeginBattleIntro: @ 80123C0 push {lr} bl sub_8012434 - ldr r1, _080123D8 @ =gUnknown_2023E82 + ldr r1, _080123D8 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x1] ldr r1, _080123DC @ =gBattleMainFunc @@ -4785,7 +4785,7 @@ BeginBattleIntro: @ 80123C0 pop {r0} bx r0 .align 2, 0 -_080123D8: .4byte gUnknown_2023E82 +_080123D8: .4byte gBattleCommunication _080123DC: .4byte gBattleMainFunc _080123E0: .4byte BattleIntroGetMonsData thumb_func_end BeginBattleIntro @@ -4904,7 +4904,7 @@ _0801246C: ble _08012464 movs r5, 0 ldr r3, _080126F8 @ =gSideTimers - ldr r4, _080126FC @ =gSideAffecting + ldr r4, _080126FC @ =gSideStatuses movs r2, 0x1 _080124C6: strh r5, [r4] @@ -4927,7 +4927,7 @@ _080124CA: strb r1, [r0] ldr r2, _08012708 @ =gBattleWeather strh r1, [r2] - ldr r1, _0801270C @ =gUnknown_2023F20 + ldr r1, _0801270C @ =gWishFutureKnock movs r2, 0 movs r3, 0 _080124F2: @@ -4937,7 +4937,7 @@ _080124F2: cmp r2, 0x2B bls _080124F2 movs r0, 0 - ldr r1, _08012710 @ =gUnknown_2023DD0 + ldr r1, _08012710 @ =gHitMarker str r0, [r1] ldr r2, _08012714 @ =gBattleTypeFlags ldr r0, [r2] @@ -4953,7 +4953,7 @@ _080124F2: cmp r0, 0 beq _08012522 movs r0, 0x80 - ldr r2, _08012710 @ =gUnknown_2023DD0 + ldr r2, _08012710 @ =gHitMarker str r0, [r2] _08012522: ldr r1, _0801271C @ =gSaveBlock2Ptr @@ -4982,7 +4982,7 @@ _08012522: ldr r0, [r0, 0xC] adds r0, 0x20 strb r2, [r0] - ldr r1, _08012734 @ =gUnknown_2023E82 + ldr r1, _08012734 @ =gBattleCommunication movs r2, 0 adds r0, r1, 0x7 _0801255C: @@ -5183,12 +5183,12 @@ _080126EC: .4byte gUnknown_2023DD4 _080126F0: .4byte gUnknown_2023DC0 _080126F4: .4byte gBattleResources _080126F8: .4byte gSideTimers -_080126FC: .4byte gSideAffecting +_080126FC: .4byte gSideStatuses _08012700: .4byte gBattlerAttacker _08012704: .4byte gBattlerTarget _08012708: .4byte gBattleWeather -_0801270C: .4byte gUnknown_2023F20 -_08012710: .4byte gUnknown_2023DD0 +_0801270C: .4byte gWishFutureKnock +_08012710: .4byte gHitMarker _08012714: .4byte gBattleTypeFlags _08012718: .4byte 0x00010002 _0801271C: .4byte gSaveBlock2Ptr @@ -5197,7 +5197,7 @@ _08012724: .4byte gUnknown_2023D72 _08012728: .4byte gBattleOutcome _0801272C: .4byte gBattleControllerExecFlags _08012730: .4byte gUnknown_2023E7E -_08012734: .4byte gUnknown_2023E82 +_08012734: .4byte gBattleCommunication _08012738: .4byte gUnknown_2023E7C _0801273C: .4byte gBattleMoveDamage _08012740: .4byte gIntroSlideFlags @@ -5266,7 +5266,7 @@ _080127B0: ldrb r7, [r7] cmp r5, r7 bge _08012824 - ldr r0, _080128E0 @ =gUnknown_2023C34 + ldr r0, _080128E0 @ =gChosenMoveByBattler mov r8, r0 ldr r3, _080128C4 @ =gDisableStructs ldr r4, _080128D4 @ =gStatuses3 @@ -5403,7 +5403,7 @@ _080128D0: .4byte gCurrentMove _080128D4: .4byte gStatuses3 _080128D8: .4byte gBattleMons _080128DC: .4byte gBattlersCount -_080128E0: .4byte gUnknown_2023C34 +_080128E0: .4byte gChosenMoveByBattler _080128E4: .4byte 0xfbffffff _080128E8: .4byte 0x15100007 _080128EC: .4byte 0x0003043f @@ -5431,7 +5431,7 @@ _0801290C: ldrb r6, [r6] cmp r5, r6 bge _0801296C - ldr r0, _08012B8C @ =gUnknown_2023C34 + ldr r0, _08012B8C @ =gChosenMoveByBattler mov r8, r0 ldr r6, _08012B90 @ =gBitTable ldr r4, _08012B94 @ =gActiveBattler @@ -5749,7 +5749,7 @@ _08012B7C: .4byte gBattleMons _08012B80: .4byte gBattleStruct _08012B84: .4byte gActionSelectionCursor _08012B88: .4byte gBattlersCount -_08012B8C: .4byte gUnknown_2023C34 +_08012B8C: .4byte gChosenMoveByBattler _08012B90: .4byte gBitTable _08012B94: .4byte gActiveBattler _08012B98: .4byte 0xffff1fff @@ -5780,7 +5780,7 @@ sub_8012BC8: @ 8012BC8 mov r8, r0 ldr r1, _08012F68 @ =gMoveSelectionCursor mov r9, r1 - ldr r2, _08012F6C @ =gUnknown_2023E8C + ldr r2, _08012F6C @ =gProtectStructs mov r12, r2 adds r5, r7, 0 movs r4, 0x58 @@ -6241,7 +6241,7 @@ _08012F5C: .4byte gActiveBattler _08012F60: .4byte gStatuses3 _08012F64: .4byte gActionSelectionCursor _08012F68: .4byte gMoveSelectionCursor -_08012F6C: .4byte gUnknown_2023E8C +_08012F6C: .4byte gProtectStructs _08012F70: .4byte gBattleMons _08012F74: .4byte gBattlersCount _08012F78: .4byte gBitTable @@ -6262,7 +6262,7 @@ _08012FA8: .4byte gBaseStats thumb_func_start BattleIntroGetMonsData BattleIntroGetMonsData: @ 8012FAC push {r4,r5,lr} - ldr r5, _08012FBC @ =gUnknown_2023E82 + ldr r5, _08012FBC @ =gBattleCommunication ldrb r0, [r5] cmp r0, 0 beq _08012FC0 @@ -6270,7 +6270,7 @@ BattleIntroGetMonsData: @ 8012FAC beq _08012FE4 b _0801301A .align 2, 0 -_08012FBC: .4byte gUnknown_2023E82 +_08012FBC: .4byte gBattleCommunication _08012FC0: ldr r4, _08012FE0 @ =gActiveBattler ldrb r0, [r5, 0x1] @@ -6280,7 +6280,7 @@ _08012FC0: movs r2, 0 bl BtlController_EmitGetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] @@ -6334,11 +6334,11 @@ BattleIntroPrepareBackgroundSlide: @ 8013020 movs r0, 0 bl BtlController_EmitIntroSlide ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r1, _08013064 @ =gBattleMainFunc ldr r0, _08013068 @ =sub_8013070 str r0, [r1] - ldr r0, _0801306C @ =gUnknown_2023E82 + ldr r0, _0801306C @ =gBattleCommunication strb r5, [r0] strb r5, [r0, 0x1] _08013050: @@ -6351,7 +6351,7 @@ _0801305C: .4byte gActiveBattler _08013060: .4byte gUnknown_2022B50 _08013064: .4byte gBattleMainFunc _08013068: .4byte sub_8013070 -_0801306C: .4byte gUnknown_2023E82 +_0801306C: .4byte gBattleCommunication thumb_func_end BattleIntroPrepareBackgroundSlide thumb_func_start sub_8013070 @@ -6528,7 +6528,7 @@ _080131B6: movs r0, 0 bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080131D0: ldr r5, _08013244 @ =gBattleTypeFlags ldr r0, [r5] @@ -6545,7 +6545,7 @@ _080131D0: movs r0, 0 bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080131F6: ldrb r0, [r4] bl GetBattlerSide @@ -6634,7 +6634,7 @@ _080132B4: bl BtlController_EmitLoadMonSprite mov r1, r9 ldrb r0, [r1] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080132C2: ldr r0, _08013328 @ =gBattleTypeFlags ldr r0, [r0] @@ -6659,7 +6659,7 @@ _080132EC: movs r0, 0 bl BtlController_EmitDrawTrainerPic ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080132F8: mov r2, r9 ldrb r0, [r2] @@ -6770,7 +6770,7 @@ _080133B6: movs r2, 0x80 bl BtlController_EmitDrawPartyStatusSummary ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec movs r7, 0 mov r6, r8 mov r5, sp @@ -6825,7 +6825,7 @@ _0801342E: movs r2, 0x80 bl BtlController_EmitDrawPartyStatusSummary ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r1, _08013460 @ =gBattleMainFunc ldr r0, _08013464 @ =BattleIntroPrintTrainerWantsToBattle b _080134C6 @@ -7009,7 +7009,7 @@ _080135B4: movs r0, 0 bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080135CE: ldr r0, _08013620 @ =gBattleTypeFlags ldr r0, [r0] @@ -7026,7 +7026,7 @@ _080135CE: movs r0, 0 bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080135F4: ldrb r0, [r4] adds r0, 0x1 @@ -7203,7 +7203,7 @@ _08013740: movs r0, 0 bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08013758: ldr r0, _080137C0 @ =gBattleTypeFlags ldr r0, [r0] @@ -7220,7 +7220,7 @@ _08013758: movs r0, 0 bl BtlController_EmitIntroTrainerBallThrow ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0801377E: ldrb r0, [r4] adds r0, 0x1 @@ -7289,7 +7289,7 @@ _080137EA: movs r2, 0 bl BtlController_EmitSwitchInAnim ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0801380C: ldrb r0, [r4] adds r0, 0x1 @@ -7356,7 +7356,7 @@ _08013874: ldrb r0, [r1] cmp r5, r0 bge _0801389A - ldr r2, _080138AC @ =gUnknown_2023BDE + ldr r2, _080138AC @ =gBattlerByTurnOrder _0801388E: adds r0, r5, r2 strb r5, [r0] @@ -7371,14 +7371,14 @@ _0801389A: _080138A0: .4byte gBattleControllerExecFlags _080138A4: .4byte gBattleStruct _080138A8: .4byte gBattlersCount -_080138AC: .4byte gUnknown_2023BDE +_080138AC: .4byte gBattlerByTurnOrder _080138B0: adds r4, r5, 0x1 mov r8, r4 ldrb r1, [r1] cmp r8, r1 bge _080138EE - ldr r6, _08013924 @ =gUnknown_2023BDE + ldr r6, _08013924 @ =gBattlerByTurnOrder ldr r3, _08013928 @ =gBattlersCount lsls r7, r5, 24 _080138C0: @@ -7434,7 +7434,7 @@ _080138FA: strb r1, [r0] b _08013ADA .align 2, 0 -_08013924: .4byte gUnknown_2023BDE +_08013924: .4byte gBattlerByTurnOrder _08013928: .4byte gBattlersCount _0801392C: .4byte gBattleStruct _08013930: @@ -7446,7 +7446,7 @@ _08013930: ldrb r1, [r1] cmp r0, r1 bcs _0801398A - ldr r5, _08013AF0 @ =gUnknown_2023BDE + ldr r5, _08013AF0 @ =gBattlerByTurnOrder adds r4, r2, 0 _08013944: ldr r0, [r4] @@ -7519,7 +7519,7 @@ _080139BA: ldrb r1, [r3] cmp r0, r1 bcs _08013A14 - ldr r5, _08013AF0 @ =gUnknown_2023BDE + ldr r5, _08013AF0 @ =gBattlerByTurnOrder adds r4, r2, 0 _080139D0: ldr r0, [r4] @@ -7530,7 +7530,7 @@ _080139D0: movs r0, 0 movs r2, 0 str r3, [sp, 0x4] - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 ldr r3, [sp, 0x4] cmp r0, 0 @@ -7602,7 +7602,7 @@ _08013A32: ldr r0, _08013B04 @ =sub_8014040 str r0, [r1] bl ResetSentPokesToOpponentValue - ldr r1, _08013B08 @ =gUnknown_2023E82 + ldr r1, _08013B08 @ =gBattleCommunication movs r2, 0 adds r0, r1, 0x7 _08013A74: @@ -7669,13 +7669,13 @@ _08013ADA: .align 2, 0 _08013AE8: .4byte gBattleStruct _08013AEC: .4byte gBattlersCount -_08013AF0: .4byte gUnknown_2023BDE +_08013AF0: .4byte gBattlerByTurnOrder _08013AF4: .4byte gUnknown_2023D7C _08013AF8: .4byte gUnknown_2023DC4 _08013AFC: .4byte gAbsentBattlerFlags _08013B00: .4byte gBattleMainFunc _08013B04: .4byte sub_8014040 -_08013B08: .4byte gUnknown_2023E82 +_08013B08: .4byte gBattleCommunication _08013B0C: .4byte gBattleScripting _08013B10: .4byte gMoveResultFlags _08013B14: .4byte gBattleMons @@ -7690,10 +7690,10 @@ sub_8013B1C: @ 8013B1C cmp r0, 0 bne _08013BAC ldr r1, _08013BB8 @ =gBattleMainFunc - ldr r0, _08013BBC @ =sub_8013BD4 + ldr r0, _08013BBC @ =BattleTurnPassed str r0, [r1] ldr r3, _08013BC0 @ =gBattlersCount - ldr r1, _08013BC4 @ =gUnknown_2023E82 + ldr r1, _08013BC4 @ =gBattleCommunication movs r2, 0 adds r0, r1, 0x7 _08013B34: @@ -7766,16 +7766,16 @@ _08013BAC: .align 2, 0 _08013BB4: .4byte gBattleControllerExecFlags _08013BB8: .4byte gBattleMainFunc -_08013BBC: .4byte sub_8013BD4 +_08013BBC: .4byte BattleTurnPassed _08013BC0: .4byte gBattlersCount -_08013BC4: .4byte gUnknown_2023E82 +_08013BC4: .4byte gBattleCommunication _08013BC8: .4byte gBattleMons _08013BCC: .4byte gBattleStruct _08013BD0: .4byte gMoveResultFlags thumb_func_end sub_8013B1C - thumb_func_start sub_8013BD4 -sub_8013BD4: @ 8013BD4 + thumb_func_start BattleTurnPassed +BattleTurnPassed: @ 8013BD4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7787,13 +7787,13 @@ sub_8013BD4: @ 8013BD4 ldrb r0, [r0] cmp r0, 0 bne _08013C04 - bl UpdateTurnCounters + bl DoFieldEndTurnEffects lsls r0, 24 cmp r0, 0 beq _08013BF8 b _08013D20 _08013BF8: - bl TurnBasedEffects + bl DoBattlerEndTurnEffects lsls r0, 24 cmp r0, 0 beq _08013C04 @@ -7810,14 +7810,14 @@ _08013C12: ldr r0, [r0] adds r0, 0x4D strb r1, [r0] - bl sub_8018C98 + bl HandleWishPerishSongOnTurnEnd lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _08013D20 movs r0, 0 bl TurnValuesCleanUp - ldr r2, _08013C80 @ =gUnknown_2023DD0 + ldr r2, _08013C80 @ =gHitMarker ldr r0, [r2] ldr r1, _08013C84 @ =0xfffffdff ands r0, r1 @@ -7836,7 +7836,7 @@ _08013C12: str r4, [r0] ldr r0, _08013C9C @ =gMoveResultFlags strb r4, [r0] - ldr r1, _08013CA0 @ =gUnknown_2023E82 + ldr r1, _08013CA0 @ =gBattleCommunication movs r2, 0 adds r0, r1, 0x4 _08013C58: @@ -7858,7 +7858,7 @@ _08013C58: .align 2, 0 _08013C78: .4byte gBattleOutcome _08013C7C: .4byte gBattleStruct -_08013C80: .4byte gUnknown_2023DD0 +_08013C80: .4byte gHitMarker _08013C84: .4byte 0xfffffdff _08013C88: .4byte 0xfff7ffff _08013C8C: .4byte 0xffbfffff @@ -7866,7 +7866,7 @@ _08013C90: .4byte 0xffefffff _08013C94: .4byte gBattleScripting _08013C98: .4byte gBattleMoveDamage _08013C9C: .4byte gMoveResultFlags -_08013CA0: .4byte gUnknown_2023E82 +_08013CA0: .4byte gBattleCommunication _08013CA4: .4byte gUnknown_2023BE3 _08013CA8: .4byte gBattleMainFunc _08013CAC: .4byte RunTurnActionsFunctions @@ -7948,7 +7948,7 @@ _08013D44: .4byte sub_8014040 _08013D48: .4byte gUnknown_2023D7C _08013D4C: .4byte gUnknown_2023DC4 _08013D50: .4byte gUnknown_2023E80 - thumb_func_end sub_8013BD4 + thumb_func_end BattleTurnPassed thumb_func_start IsRunningFromBattleImpossible IsRunningFromBattleImpossible: @ 8013D54 @@ -8120,7 +8120,7 @@ _08013E8A: adds r0, 0x20 ldrb r0, [r0] strb r0, [r2] - ldr r1, _08013EC0 @ =gUnknown_2023E82 + ldr r1, _08013EC0 @ =gBattleCommunication movs r0, 0x2 b _08013F5C .align 2, 0 @@ -8131,7 +8131,7 @@ _08013EB0: .4byte gBattleMons _08013EB4: .4byte gBattlersCount _08013EB8: .4byte gBattleScripting _08013EBC: .4byte gLastUsedAbility -_08013EC0: .4byte gUnknown_2023E82 +_08013EC0: .4byte gBattleCommunication _08013EC4: ldr r1, _08013EF8 @ =gBattleMons ldr r0, _08013EFC @ =gActiveBattler @@ -8155,7 +8155,7 @@ _08013EC4: cmp r0, 0 beq _08013F0C _08013EEE: - ldr r1, _08013F08 @ =gUnknown_2023E82 + ldr r1, _08013F08 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] movs r0, 0x1 @@ -8165,7 +8165,7 @@ _08013EF8: .4byte gBattleMons _08013EFC: .4byte gActiveBattler _08013F00: .4byte 0x0400e000 _08013F04: .4byte gStatuses3 -_08013F08: .4byte gUnknown_2023E82 +_08013F08: .4byte gBattleCommunication _08013F0C: ldr r0, _08013F1C @ =gBattleTypeFlags ldr r0, [r0] @@ -8184,28 +8184,28 @@ _08013F20: ldr r1, _08013F34 @ =gLastUsedAbility ldrb r0, [r2] strb r0, [r1] - ldr r1, _08013F38 @ =gUnknown_2023E82 + ldr r1, _08013F38 @ =gBattleCommunication movs r0, 0x2 b _08013F5C .align 2, 0 _08013F30: .4byte gBattleScripting _08013F34: .4byte gLastUsedAbility -_08013F38: .4byte gUnknown_2023E82 +_08013F38: .4byte gBattleCommunication _08013F3C: ldr r0, _08013F4C @ =gBattleScripting strb r5, [r0, 0x17] ldr r1, _08013F50 @ =gLastUsedAbility ldrb r0, [r2] strb r0, [r1] - ldr r1, _08013F54 @ =gUnknown_2023E82 + ldr r1, _08013F54 @ =gBattleCommunication movs r0, 0x2 b _08013F5C .align 2, 0 _08013F4C: .4byte gBattleScripting _08013F50: .4byte gLastUsedAbility -_08013F54: .4byte gUnknown_2023E82 +_08013F54: .4byte gBattleCommunication _08013F58: - ldr r1, _08013F68 @ =gUnknown_2023E82 + ldr r1, _08013F68 @ =gBattleCommunication movs r0, 0x1 _08013F5C: strb r0, [r1, 0x5] @@ -8215,7 +8215,7 @@ _08013F5E: pop {r1} bx r1 .align 2, 0 -_08013F68: .4byte gUnknown_2023E82 +_08013F68: .4byte gBattleCommunication thumb_func_end IsRunningFromBattleImpossible thumb_func_start sub_8013F6C @@ -8335,7 +8335,7 @@ sub_8014040: @ 8014040 mov r5, r8 push {r5-r7} sub sp, 0x1C - ldr r0, _0801408C @ =gUnknown_2023E82 + ldr r0, _0801408C @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x4] ldr r0, _08014090 @ =gActiveBattler @@ -8352,7 +8352,7 @@ _08014064: bl GetBattlerPosition lsls r0, 24 lsrs r5, r0, 24 - ldr r1, _0801408C @ =gUnknown_2023E82 + ldr r1, _0801408C @ =gBattleCommunication ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -8366,7 +8366,7 @@ _08014080: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0801408C: .4byte gUnknown_2023E82 +_0801408C: .4byte gBattleCommunication _08014090: .4byte gActiveBattler _08014094: .4byte gBattlersCount _08014098: .4byte _0801409C @@ -8413,7 +8413,7 @@ _080140B8: ands r1, r0 cmp r1, 0 bne _08014114 - ldr r4, _08014160 @ =gUnknown_2023E82 + ldr r4, _08014160 @ =gBattleCommunication adds r0, r5, 0 bl GetBattlerAtPosition lsls r0, 24 @@ -8447,7 +8447,7 @@ _08014114: ands r0, r1 cmp r0, 0 bne _08014168 - ldr r0, _08014160 @ =gUnknown_2023E82 + ldr r0, _08014160 @ =gBattleCommunication ldrb r1, [r4] adds r1, r0 movs r0, 0x4 @@ -8458,17 +8458,17 @@ _08014150: .4byte gActiveBattler _08014154: .4byte gBattleStruct _08014158: .4byte gBattleTypeFlags _0801415C: .4byte gBitTable -_08014160: .4byte gUnknown_2023E82 +_08014160: .4byte gBattleCommunication _08014164: .4byte gUnknown_2023D7C _08014168: - ldr r0, _08014178 @ =gUnknown_2023E82 + ldr r0, _08014178 @ =gBattleCommunication ldrb r1, [r4] adds r1, r0 movs r0, 0x3 strb r0, [r1] bl _08014C4E .align 2, 0 -_08014178: .4byte gUnknown_2023E82 +_08014178: .4byte gBattleCommunication _0801417C: ldr r1, _080141B0 @ =gBattleMons movs r0, 0x58 @@ -8490,7 +8490,7 @@ _0801419C: ldr r0, _080141B4 @ =gUnknown_2023D7C adds r0, r2, r0 strb r3, [r0] - ldr r1, _080141B8 @ =gUnknown_2023E82 + ldr r1, _080141B8 @ =gBattleCommunication ldrb r0, [r4] adds r0, r1 movs r1, 0x3 @@ -8499,7 +8499,7 @@ _0801419C: .align 2, 0 _080141B0: .4byte gBattleMons _080141B4: .4byte gUnknown_2023D7C -_080141B8: .4byte gUnknown_2023E82 +_080141B8: .4byte gBattleCommunication _080141BC: ldr r0, _080141D4 @ =gUnknown_2023D7C ldrb r1, [r0] @@ -8582,11 +8582,11 @@ _0801424C: .4byte _080146AC .4byte _08014670 _08014280: - bl sub_8017998 + bl AreAllMovesUnusable lsls r0, 24 cmp r0, 0 beq _080142D8 - ldr r0, _080142C8 @ =gUnknown_2023E82 + ldr r0, _080142C8 @ =gBattleCommunication ldr r3, _080142CC @ =gActiveBattler ldrb r1, [r3] adds r1, r0 @@ -8616,7 +8616,7 @@ _08014280: strb r0, [r2, 0xC] bl _08014C78 .align 2, 0 -_080142C8: .4byte gUnknown_2023E82 +_080142C8: .4byte gBattleCommunication _080142CC: .4byte gActiveBattler _080142D0: .4byte gBattleStruct _080142D4: .4byte gBattleBufferB @@ -8646,7 +8646,7 @@ _080142D8: adds r0, r3 ldrb r0, [r0, 0xC] strb r0, [r1] - ldr r1, _08014328 @ =gUnknown_2023E82 + ldr r1, _08014328 @ =gBattleCommunication ldrb r0, [r5] adds r0, r1 movs r1, 0x3 @@ -8657,7 +8657,7 @@ _08014318: .4byte gDisableStructs _0801431C: .4byte gActiveBattler _08014320: .4byte gUnknown_2023DC4 _08014324: .4byte gBattleStruct -_08014328: .4byte gUnknown_2023E82 +_08014328: .4byte gBattleCommunication _0801432C: add r2, sp, 0x4 ldr r3, _080143CC @ =gBattleMons @@ -8748,14 +8748,14 @@ _080143D4: ands r0, r1 cmp r0, 0 beq _08014428 - ldr r1, _08014418 @ =gUnknown_2023D80 + ldr r1, _08014418 @ =gSelectionBattleScripts mov r3, r8 ldrb r0, [r3] lsls r0, 2 adds r0, r1 ldr r1, _0801441C @ =gUnknown_81D96A4 str r1, [r0] - ldr r0, _08014420 @ =gUnknown_2023E82 + ldr r0, _08014420 @ =gBattleCommunication ldrb r1, [r3] adds r1, r0 movs r3, 0 @@ -8774,9 +8774,9 @@ _080143D4: .align 2, 0 _08014410: .4byte gBattleTypeFlags _08014414: .4byte 0x00000902 -_08014418: .4byte gUnknown_2023D80 +_08014418: .4byte gSelectionBattleScripts _0801441C: .4byte gUnknown_81D96A4 -_08014420: .4byte gUnknown_2023E82 +_08014420: .4byte gBattleCommunication _08014424: .4byte gBattleStruct _08014428: ldr r2, _08014448 @ =gBattleStruct @@ -8790,7 +8790,7 @@ _08014428: movs r0, 0 bl BtlController_EmitChooseItem ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080146AC .align 2, 0 _08014448: .4byte gBattleStruct @@ -9011,7 +9011,7 @@ _080145F0: _0801460E: ldr r0, _0801461C @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080146AC .align 2, 0 _08014618: .4byte gBattleStruct @@ -9021,14 +9021,14 @@ _08014620: lsls r0, 24 cmp r0, 0 beq _080146AC - ldr r1, _0801465C @ =gUnknown_2023D80 + ldr r1, _0801465C @ =gSelectionBattleScripts ldr r3, _08014660 @ =gActiveBattler ldrb r0, [r3] lsls r0, 2 adds r0, r1 ldr r1, _08014664 @ =gUnknown_81D8949 str r1, [r0] - ldr r0, _08014668 @ =gUnknown_2023E82 + ldr r0, _08014668 @ =gBattleCommunication ldrb r1, [r3] adds r1, r0 movs r4, 0 @@ -9047,13 +9047,13 @@ _08014620: strb r4, [r0] b _08014C78 .align 2, 0 -_0801465C: .4byte gUnknown_2023D80 +_0801465C: .4byte gSelectionBattleScripts _08014660: .4byte gActiveBattler _08014664: .4byte gUnknown_81D8949 -_08014668: .4byte gUnknown_2023E82 +_08014668: .4byte gBattleCommunication _0801466C: .4byte gBattleStruct _08014670: - ldr r4, _080146A8 @ =gUnknown_2023E82 + ldr r4, _080146A8 @ =gBattleCommunication mov r2, r8 ldrb r1, [r2] adds r1, r4 @@ -9075,10 +9075,10 @@ _08014670: bl BtlController_EmitEndBounceEffect mov r3, r8 ldrb r0, [r3] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _08014C78 .align 2, 0 -_080146A8: .4byte gUnknown_2023E82 +_080146A8: .4byte gBattleCommunication _080146AC: ldr r0, _080146D8 @ =gBattleTypeFlags ldr r0, [r0] @@ -9097,7 +9097,7 @@ _080146AC: bne _080146EC ldr r0, _080146E4 @ =gUnknown_81D8924 bl BattleScriptExecute - ldr r1, _080146E8 @ =gUnknown_2023E82 + ldr r1, _080146E8 @ =gBattleCommunication ldrb r0, [r4] adds r0, r1 b _08014926 @@ -9106,7 +9106,7 @@ _080146D8: .4byte gBattleTypeFlags _080146DC: .4byte gBattleBufferB _080146E0: .4byte gActiveBattler _080146E4: .4byte gUnknown_81D8924 -_080146E8: .4byte gUnknown_2023E82 +_080146E8: .4byte gBattleCommunication _080146EC: bl IsRunningFromBattleImpossible lsls r0, 24 @@ -9121,12 +9121,12 @@ _080146EC: ldrb r0, [r1] cmp r0, 0x3 bne _08014750 - ldr r1, _08014740 @ =gUnknown_2023D80 + ldr r1, _08014740 @ =gSelectionBattleScripts lsls r0, r2, 2 adds r0, r1 ldr r1, _08014744 @ =gUnknown_81D8943 str r1, [r0] - ldr r0, _08014748 @ =gUnknown_2023E82 + ldr r0, _08014748 @ =gBattleCommunication ldrb r1, [r4] adds r1, r0 movs r3, 0 @@ -9148,18 +9148,18 @@ _0801472C: .align 2, 0 _08014738: .4byte gBattleBufferB _0801473C: .4byte gActiveBattler -_08014740: .4byte gUnknown_2023D80 +_08014740: .4byte gSelectionBattleScripts _08014744: .4byte gUnknown_81D8943 -_08014748: .4byte gUnknown_2023E82 +_08014748: .4byte gBattleCommunication _0801474C: .4byte gBattleStruct _08014750: - ldr r2, _0801475C @ =gUnknown_2023E82 + ldr r2, _0801475C @ =gBattleCommunication ldr r0, _08014760 @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_0801475C: .4byte gUnknown_2023E82 +_0801475C: .4byte gBattleCommunication _08014760: .4byte gActiveBattler _08014764: ldr r4, _080147A8 @ =gBattleControllerExecFlags @@ -9251,18 +9251,18 @@ _08014808: ldr r0, _08014830 @ =0x0000ffff cmp r2, r0 bne _08014838 - ldr r0, _08014834 @ =gUnknown_2023E82 + ldr r0, _08014834 @ =gBattleCommunication adds r0, r4, r0 b _08014926 .align 2, 0 _08014830: .4byte 0x0000ffff -_08014834: .4byte gUnknown_2023E82 +_08014834: .4byte gBattleCommunication _08014838: - bl sub_8017594 + bl TrySetCantSelectMoveBattleScript lsls r0, 24 cmp r0, 0 beq _0801487C - ldr r0, _08014874 @ =gUnknown_2023E82 + ldr r0, _08014874 @ =gBattleCommunication ldrb r1, [r5] adds r1, r0 movs r3, 0 @@ -9287,7 +9287,7 @@ _08014838: strb r0, [r1] b _08014C78 .align 2, 0 -_08014874: .4byte gUnknown_2023E82 +_08014874: .4byte gBattleCommunication _08014878: .4byte gBattleStruct _0801487C: mov r2, r8 @@ -9324,14 +9324,14 @@ _0801487C: add r0, r9 ldrb r0, [r0] strb r0, [r4, 0xC] - ldr r0, _080148D4 @ =gUnknown_2023E82 + ldr r0, _080148D4 @ =gBattleCommunication ldrb r1, [r3] b _08014B30 .align 2, 0 _080148C8: .4byte gBattleStruct _080148CC: .4byte gUnknown_2023DC4 _080148D0: .4byte gBattleMons -_080148D4: .4byte gUnknown_2023E82 +_080148D4: .4byte gBattleCommunication _080148D8: ldr r2, _08014900 @ =gBattleBufferB ldr r5, _08014904 @ =gActiveBattler @@ -9351,14 +9351,14 @@ _080148D8: _080148F6: ldr r0, _08014908 @ =gLastUsedItem strh r3, [r0] - ldr r0, _0801490C @ =gUnknown_2023E82 + ldr r0, _0801490C @ =gBattleCommunication ldrb r1, [r5] b _08014B30 .align 2, 0 _08014900: .4byte gBattleBufferB _08014904: .4byte gActiveBattler _08014908: .4byte gLastUsedItem -_0801490C: .4byte gUnknown_2023E82 +_0801490C: .4byte gBattleCommunication _08014910: ldr r6, _0801492C @ =gBattleBufferB ldr r7, _08014930 @ =gActiveBattler @@ -9369,7 +9369,7 @@ _08014910: ldrb r1, [r0] cmp r1, 0x6 bne _08014938 - ldr r0, _08014934 @ =gUnknown_2023E82 + ldr r0, _08014934 @ =gBattleCommunication adds r0, r2, r0 _08014926: movs r1, 0 @@ -9378,7 +9378,7 @@ _08014926: .align 2, 0 _0801492C: .4byte gBattleBufferB _08014930: .4byte gActiveBattler -_08014934: .4byte gUnknown_2023E82 +_08014934: .4byte gBattleCommunication _08014938: ldr r0, _080149FC @ =gBattleStruct mov r12, r0 @@ -9476,80 +9476,80 @@ _08014938: ldrb r0, [r0] strb r0, [r1] _080149F6: - ldr r0, _08014A04 @ =gUnknown_2023E82 + ldr r0, _08014A04 @ =gBattleCommunication ldrb r1, [r7] b _08014B30 .align 2, 0 _080149FC: .4byte gBattleStruct _08014A00: .4byte gBattleTypeFlags -_08014A04: .4byte gUnknown_2023E82 +_08014A04: .4byte gBattleCommunication _08014A08: - ldr r2, _08014A20 @ =gUnknown_2023DD0 + ldr r2, _08014A20 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 8 orrs r0, r1 str r0, [r2] - ldr r2, _08014A24 @ =gUnknown_2023E82 + ldr r2, _08014A24 @ =gBattleCommunication ldr r0, _08014A28 @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A20: .4byte gUnknown_2023DD0 -_08014A24: .4byte gUnknown_2023E82 +_08014A20: .4byte gHitMarker +_08014A24: .4byte gBattleCommunication _08014A28: .4byte gActiveBattler _08014A2C: - ldr r2, _08014A38 @ =gUnknown_2023E82 + ldr r2, _08014A38 @ =gBattleCommunication ldr r0, _08014A3C @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A38: .4byte gUnknown_2023E82 +_08014A38: .4byte gBattleCommunication _08014A3C: .4byte gActiveBattler _08014A40: - ldr r2, _08014A4C @ =gUnknown_2023E82 + ldr r2, _08014A4C @ =gBattleCommunication ldr r0, _08014A50 @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A4C: .4byte gUnknown_2023E82 +_08014A4C: .4byte gBattleCommunication _08014A50: .4byte gActiveBattler _08014A54: - ldr r2, _08014A60 @ =gUnknown_2023E82 + ldr r2, _08014A60 @ =gBattleCommunication ldr r0, _08014A64 @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A60: .4byte gUnknown_2023E82 +_08014A60: .4byte gBattleCommunication _08014A64: .4byte gActiveBattler _08014A68: - ldr r2, _08014A80 @ =gUnknown_2023DD0 + ldr r2, _08014A80 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 8 orrs r0, r1 str r0, [r2] - ldr r2, _08014A84 @ =gUnknown_2023E82 + ldr r2, _08014A84 @ =gBattleCommunication ldr r0, _08014A88 @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A80: .4byte gUnknown_2023DD0 -_08014A84: .4byte gUnknown_2023E82 +_08014A80: .4byte gHitMarker +_08014A84: .4byte gBattleCommunication _08014A88: .4byte gActiveBattler _08014A8C: - ldr r2, _08014A98 @ =gUnknown_2023E82 + ldr r2, _08014A98 @ =gBattleCommunication ldr r0, _08014A9C @ =gActiveBattler ldrb r1, [r0] adds r1, r2 b _08014B32 .align 2, 0 -_08014A98: .4byte gUnknown_2023E82 +_08014A98: .4byte gBattleCommunication _08014A9C: .4byte gActiveBattler _08014AA0: ldr r3, _08014B08 @ =gBattleControllerExecFlags @@ -9618,8 +9618,8 @@ _08014B24: ldr r4, _08014B3C @ =gActiveBattler _08014B26: ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r0, _08014B40 @ =gUnknown_2023E82 + bl MarkBattlerForControllerExec + ldr r0, _08014B40 @ =gBattleCommunication ldrb r1, [r4] _08014B30: adds r1, r0 @@ -9630,7 +9630,7 @@ _08014B32: b _08014C4E .align 2, 0 _08014B3C: .4byte gActiveBattler -_08014B40: .4byte gUnknown_2023E82 +_08014B40: .4byte gBattleCommunication _08014B44: ldr r3, _08014B78 @ =gBattleControllerExecFlags ldr r1, _08014B7C @ =gBitTable @@ -9652,7 +9652,7 @@ _08014B44: ands r0, r1 cmp r0, 0 bne _08014C4E - ldr r1, _08014B84 @ =gUnknown_2023E82 + ldr r1, _08014B84 @ =gBattleCommunication ldrb r0, [r1, 0x4] adds r0, 0x1 strb r0, [r1, 0x4] @@ -9661,7 +9661,7 @@ _08014B44: _08014B78: .4byte gBattleControllerExecFlags _08014B7C: .4byte gBitTable _08014B80: .4byte gActiveBattler -_08014B84: .4byte gUnknown_2023E82 +_08014B84: .4byte gBattleCommunication _08014B88: ldr r5, _08014BA8 @ =gActiveBattler ldrb r2, [r5] @@ -9673,7 +9673,7 @@ _08014B88: ldrb r0, [r0] cmp r0, 0 beq _08014BB4 - ldr r0, _08014BB0 @ =gUnknown_2023E82 + ldr r0, _08014BB0 @ =gBattleCommunication adds r0, r2, r0 adds r1, 0x84 ldrb r1, [r1] @@ -9682,12 +9682,12 @@ _08014B88: .align 2, 0 _08014BA8: .4byte gActiveBattler _08014BAC: .4byte gBattleStruct -_08014BB0: .4byte gUnknown_2023E82 +_08014BB0: .4byte gBattleCommunication _08014BB4: ldr r0, _08014C08 @ =gBattlerAttacker strb r2, [r0] - ldr r7, _08014C0C @ =gUnknown_2023D74 - ldr r6, _08014C10 @ =gUnknown_2023D80 + ldr r7, _08014C0C @ =gBattlescriptCurrInstr + ldr r6, _08014C10 @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r6 @@ -9727,8 +9727,8 @@ _08014BFA: b _08014C4E .align 2, 0 _08014C08: .4byte gBattlerAttacker -_08014C0C: .4byte gUnknown_2023D74 -_08014C10: .4byte gUnknown_2023D80 +_08014C0C: .4byte gBattlescriptCurrInstr +_08014C10: .4byte gSelectionBattleScripts _08014C14: .4byte gBattleControllerExecFlags _08014C18: .4byte gBitTable _08014C1C: .4byte gUnknown_825011C @@ -9754,7 +9754,7 @@ _08014C20: cmp r3, 0 bne _08014C4E _08014C48: - ldr r0, _08014C94 @ =gUnknown_2023E82 + ldr r0, _08014C94 @ =gBattleCommunication adds r0, r4, r0 strb r3, [r0] _08014C4E: @@ -9771,7 +9771,7 @@ _08014C4E: bcs _08014C68 bl _08014064 _08014C68: - ldr r0, _08014C94 @ =gUnknown_2023E82 + ldr r0, _08014C94 @ =gBattleCommunication ldrb r0, [r0, 0x4] ldrb r2, [r2] cmp r0, r2 @@ -9792,7 +9792,7 @@ _08014C78: _08014C88: .4byte gBattleControllerExecFlags _08014C8C: .4byte gBitTable _08014C90: .4byte gActiveBattler -_08014C94: .4byte gUnknown_2023E82 +_08014C94: .4byte gBattleCommunication _08014C98: .4byte gBattlersCount _08014C9C: .4byte gBattleMainFunc _08014CA0: .4byte sub_80150A8 @@ -9812,7 +9812,7 @@ SwapTurnOrder: @ 8014CA4 ldrb r3, [r2] strb r3, [r4] strb r5, [r2] - ldr r2, _08014CD4 @ =gUnknown_2023BDE + ldr r2, _08014CD4 @ =gBattlerByTurnOrder adds r0, r2 ldrb r5, [r0] adds r1, r2 @@ -9824,7 +9824,7 @@ SwapTurnOrder: @ 8014CA4 bx r0 .align 2, 0 _08014CD0: .4byte gUnknown_2023BDA -_08014CD4: .4byte gUnknown_2023BDE +_08014CD4: .4byte gBattlerByTurnOrder thumb_func_end SwapTurnOrder thumb_func_start GetWhoStrikesFirst @@ -10163,7 +10163,7 @@ _08014F78: adds r2, r0, 0 cmp r1, 0 bne _08014FC8 - ldr r0, _08014F9C @ =gUnknown_2023E8C + ldr r0, _08014F9C @ =gProtectStructs lsls r1, r3, 4 adds r1, r0 ldrb r0, [r1] @@ -10174,7 +10174,7 @@ _08014F78: b _08014FCA .align 2, 0 _08014F98: .4byte gUnknown_2023D7C -_08014F9C: .4byte gUnknown_2023E8C +_08014F9C: .4byte gProtectStructs _08014FA0: ldr r0, _08014FC0 @ =gBattleStruct ldr r0, [r0] @@ -10203,7 +10203,7 @@ _08014FCA: ldrb r0, [r0] cmp r0, 0 bne _08015014 - ldr r0, _08014FE8 @ =gUnknown_2023E8C + ldr r0, _08014FE8 @ =gProtectStructs lsls r1, 4 adds r1, r0 ldrb r0, [r1] @@ -10213,7 +10213,7 @@ _08014FCA: movs r2, 0xA5 b _08015016 .align 2, 0 -_08014FE8: .4byte gUnknown_2023E8C +_08014FE8: .4byte gProtectStructs _08014FEC: ldr r0, _0801500C @ =gBattleStruct ldr r0, [r0] @@ -10342,7 +10342,7 @@ _080150D0: ldr r7, _08015108 @ =gUnknown_2023BDA ldr r6, _0801510C @ =gUnknown_2023D7C mov r2, r8 - ldr r5, _08015110 @ =gUnknown_2023BDE + ldr r5, _08015110 @ =gBattlerByTurnOrder _080150D8: adds r1, r3, r7 ldrb r0, [r2] @@ -10368,7 +10368,7 @@ _08015100: .4byte gActiveBattler _08015104: .4byte gBattlersCount _08015108: .4byte gUnknown_2023BDA _0801510C: .4byte gUnknown_2023D7C -_08015110: .4byte gUnknown_2023BDE +_08015110: .4byte gBattlerByTurnOrder _08015114: movs r0, 0x2 ands r1, r0 @@ -10428,7 +10428,7 @@ _08015174: adds r0, r1 ldrb r0, [r0] strb r0, [r6] - ldr r2, _080151E4 @ =gUnknown_2023BDE + ldr r2, _080151E4 @ =gBattlerByTurnOrder ldrb r0, [r3] strb r0, [r2] movs r3, 0x1 @@ -10476,7 +10476,7 @@ _080151CC: _080151D8: .4byte gUnknown_2023D7C _080151DC: .4byte gActiveBattler _080151E0: .4byte gUnknown_2023BDA -_080151E4: .4byte gUnknown_2023BDE +_080151E4: .4byte gBattlerByTurnOrder _080151E8: .4byte gBattleMainFunc _080151EC: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts _080151F0: .4byte gBattleStruct @@ -10492,7 +10492,7 @@ _080151F8: ldr r6, _0801528C @ =gUnknown_2023D7C mov r2, r8 ldr r5, _08015290 @ =gUnknown_2023BDA - ldr r4, _08015294 @ =gUnknown_2023BDE + ldr r4, _08015294 @ =gBattlerByTurnOrder _0801520E: ldrb r0, [r2] adds r0, r6 @@ -10529,7 +10529,7 @@ _0801523E: beq _08015282 ldr r6, _0801528C @ =gUnknown_2023D7C ldr r5, _08015290 @ =gUnknown_2023BDA - ldr r4, _08015294 @ =gUnknown_2023BDE + ldr r4, _08015294 @ =gBattlerByTurnOrder _08015252: ldrb r0, [r2] adds r0, r6 @@ -10563,7 +10563,7 @@ _08015282: _08015288: .4byte gBattlersCount _0801528C: .4byte gUnknown_2023D7C _08015290: .4byte gUnknown_2023BDA -_08015294: .4byte gUnknown_2023BDE +_08015294: .4byte gBattlerByTurnOrder _08015298: adds r4, r5, 0x1 adds r7, r4, 0 @@ -10574,7 +10574,7 @@ _08015298: lsls r2, r5, 24 mov r8, r2 _080152A8: - ldr r0, _0801531C @ =gUnknown_2023BDE + ldr r0, _0801531C @ =gBattlerByTurnOrder adds r1, r5, r0 ldrb r3, [r1] adds r0, r4, r0 @@ -10635,7 +10635,7 @@ _08015304: bx r0 .align 2, 0 _08015318: .4byte gUnknown_2023BDA -_0801531C: .4byte gUnknown_2023BDE +_0801531C: .4byte gBattlerByTurnOrder _08015320: .4byte gBattlersCount _08015324: .4byte gBattleMainFunc _08015328: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts @@ -10660,9 +10660,9 @@ TurnValuesCleanUp: @ 8015330 adds r5, r1, 0 cmp r2, 0 beq _08015428 - ldr r7, _08015390 @ =gUnknown_2023E8C + ldr r7, _08015390 @ =gProtectStructs adds r6, r5, 0 - ldr r0, _08015394 @ =gUnknown_2023C34 + ldr r0, _08015394 @ =gChosenMoveByBattler mov r12, r0 ldr r1, _08015398 @ =gDisableStructs mov r8, r1 @@ -10691,8 +10691,8 @@ _0801535E: .align 2, 0 _08015388: .4byte gActiveBattler _0801538C: .4byte gBattlersCount -_08015390: .4byte gUnknown_2023E8C -_08015394: .4byte gUnknown_2023C34 +_08015390: .4byte gProtectStructs +_08015394: .4byte gChosenMoveByBattler _08015398: .4byte gDisableStructs _0801539C: ldrb r0, [r6] @@ -10801,7 +10801,7 @@ SpecialStatusesClear: @ 8015450 beq _0801548E adds r3, r2, 0 movs r4, 0 - ldr r5, _0801549C @ =gUnknown_2023ECC + ldr r5, _0801549C @ =gSpecialStatuses _08015468: ldrb r1, [r3] lsls r0, r1, 2 @@ -10830,13 +10830,13 @@ _0801548E: .align 2, 0 _08015494: .4byte gActiveBattler _08015498: .4byte gBattlersCount -_0801549C: .4byte gUnknown_2023ECC +_0801549C: .4byte gSpecialStatuses thumb_func_end SpecialStatusesClear thumb_func_start CheckFocusPunch_ClearVarsBeforeTurnStarts CheckFocusPunch_ClearVarsBeforeTurnStarts: @ 80154A0 push {r4-r7,lr} - ldr r0, _08015528 @ =gUnknown_2023DD0 + ldr r0, _08015528 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 8 @@ -10893,7 +10893,7 @@ _080154CC: lsls r0, 31 cmp r0, 0 bne _08015550 - ldr r0, _08015548 @ =gUnknown_2023E8C + ldr r0, _08015548 @ =gProtectStructs lsls r1, r3, 4 adds r1, r0 ldrb r0, [r1] @@ -10904,7 +10904,7 @@ _080154CC: bl BattleScriptExecute b _08015598 .align 2, 0 -_08015528: .4byte gUnknown_2023DD0 +_08015528: .4byte gHitMarker _0801552C: .4byte gBattleStruct _08015530: .4byte gBattlersCount _08015534: .4byte gActiveBattler @@ -10912,7 +10912,7 @@ _08015538: .4byte gBattlerAttacker _0801553C: .4byte gUnknown_2023DC4 _08015540: .4byte gBattleMons _08015544: .4byte gDisableStructs -_08015548: .4byte gUnknown_2023E8C +_08015548: .4byte gProtectStructs _0801554C: .4byte gUnknown_81D9015 _08015550: mov r2, r12 @@ -10941,7 +10941,7 @@ _0801555E: ldr r1, _080155B4 @ =gBattleMainFunc ldr r0, _080155B8 @ =RunTurnActionsFunctions str r0, [r1] - ldr r0, _080155BC @ =gUnknown_2023E82 + ldr r0, _080155BC @ =gBattleCommunication strb r2, [r0, 0x3] strb r2, [r0, 0x4] ldr r0, _080155C0 @ =gBattleScripting @@ -10963,7 +10963,7 @@ _080155AC: .4byte gDynamicBasePower _080155B0: .4byte gBattleStruct _080155B4: .4byte gBattleMainFunc _080155B8: .4byte RunTurnActionsFunctions -_080155BC: .4byte gUnknown_2023E82 +_080155BC: .4byte gBattleCommunication _080155C0: .4byte gBattleScripting _080155C4: .4byte gBattleResources thumb_func_end CheckFocusPunch_ClearVarsBeforeTurnStarts @@ -10996,7 +10996,7 @@ _080155D8: ldrb r0, [r0] cmp r1, r0 bcc _08015644 - ldr r2, _08015634 @ =gUnknown_2023DD0 + ldr r2, _08015634 @ =gHitMarker ldr r0, [r2] ldr r1, _08015638 @ =0xffefffff ands r0, r1 @@ -11018,7 +11018,7 @@ _08015624: .4byte gBattleStruct _08015628: .4byte gUnknown_2023BE2 _0801562C: .4byte gUnknown_8250038 _08015630: .4byte gBattlersCount -_08015634: .4byte gUnknown_2023DD0 +_08015634: .4byte gHitMarker _08015638: .4byte 0xffefffff _0801563C: .4byte gBattleMainFunc _08015640: .4byte gUnknown_8250070 @@ -11028,7 +11028,7 @@ _08015644: ldrb r0, [r0] cmp r0, r1 beq _0801565C - ldr r2, _08015664 @ =gUnknown_2023DD0 + ldr r2, _08015664 @ =gHitMarker ldr r0, [r2] ldr r1, _08015668 @ =0xfffffdff ands r0, r1 @@ -11040,7 +11040,7 @@ _0801565C: pop {r0} bx r0 .align 2, 0 -_08015664: .4byte gUnknown_2023DD0 +_08015664: .4byte gHitMarker _08015668: .4byte 0xfffffdff _0801566C: .4byte 0xfff7ffff thumb_func_end RunTurnActionsFunctions @@ -11065,7 +11065,7 @@ sub_8015670: @ 8015670 bl GetBattlerAtPosition ldr r1, _080156B8 @ =gBattlerAttacker strb r0, [r1] - ldr r1, _080156BC @ =gUnknown_2023D74 + ldr r1, _080156BC @ =gBattlescriptCurrInstr ldr r0, _080156C0 @ =gUnknown_81D88CC str r0, [r1] ldrb r1, [r4] @@ -11079,7 +11079,7 @@ _080156AC: .4byte gBattleTypeFlags _080156B0: .4byte gBattleTextBuff1 _080156B4: .4byte gBattleOutcome _080156B8: .4byte gBattlerAttacker -_080156BC: .4byte gUnknown_2023D74 +_080156BC: .4byte gBattlescriptCurrInstr _080156C0: .4byte gUnknown_81D88CC _080156C4: ldr r0, _080156E0 @ =0x00080900 @@ -11090,12 +11090,12 @@ _080156C4: movs r0, 0x9B lsls r0, 1 bl PlayBGM - ldr r1, _080156E4 @ =gUnknown_2023D74 + ldr r1, _080156E4 @ =gBattlescriptCurrInstr ldr r0, _080156E8 @ =gUnknown_81D88D7 b _0801576C .align 2, 0 _080156E0: .4byte 0x00080900 -_080156E4: .4byte gUnknown_2023D74 +_080156E4: .4byte gBattlescriptCurrInstr _080156E8: .4byte gUnknown_81D88D7 _080156EC: movs r0, 0xA @@ -11103,7 +11103,7 @@ _080156EC: cmp r1, 0x8 bne _08015768 bl BattleStopLowHpSound - ldr r1, _08015720 @ =gUnknown_2023D74 + ldr r1, _08015720 @ =gBattlescriptCurrInstr ldr r0, _08015724 @ =gUnknown_81D87EF str r0, [r1] ldr r2, _08015728 @ =gTrainers @@ -11123,7 +11123,7 @@ _080156EC: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08015720: .4byte gUnknown_2023D74 +_08015720: .4byte gBattlescriptCurrInstr _08015724: .4byte gUnknown_81D87EF _08015728: .4byte gTrainers _0801572C: .4byte gTrainerBattleOpponent_A @@ -11149,7 +11149,7 @@ _0801575E: bl PlayBGM b _0801576E _08015768: - ldr r1, _0801577C @ =gUnknown_2023D74 + ldr r1, _0801577C @ =gBattlescriptCurrInstr ldr r0, _08015780 @ =gUnknown_81D8803 _0801576C: str r0, [r1] @@ -11161,7 +11161,7 @@ _0801576E: pop {r0} bx r0 .align 2, 0 -_0801577C: .4byte gUnknown_2023D74 +_0801577C: .4byte gBattlescriptCurrInstr _08015780: .4byte gUnknown_81D8803 _08015784: .4byte gBattleMainFunc _08015788: .4byte sub_8015910 @@ -11188,7 +11188,7 @@ sub_801578C: @ 801578C bl GetBattlerAtPosition ldr r1, _080157D4 @ =gBattlerAttacker strb r0, [r1] - ldr r1, _080157D8 @ =gUnknown_2023D74 + ldr r1, _080157D8 @ =gBattlescriptCurrInstr ldr r0, _080157DC @ =gUnknown_81D88CC str r0, [r1] ldrb r1, [r4] @@ -11202,7 +11202,7 @@ _080157C8: .4byte gBattleTypeFlags _080157CC: .4byte gBattleTextBuff1 _080157D0: .4byte gBattleOutcome _080157D4: .4byte gBattlerAttacker -_080157D8: .4byte gUnknown_2023D74 +_080157D8: .4byte gBattlescriptCurrInstr _080157DC: .4byte gUnknown_81D88CC _080157E0: movs r0, 0x8 @@ -11219,14 +11219,14 @@ _080157E0: ands r1, r0 cmp r1, 0 beq _0801580C - ldr r1, _08015808 @ =gUnknown_2023E82 + ldr r1, _08015808 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08015810 .align 2, 0 -_08015808: .4byte gUnknown_2023E82 +_08015808: .4byte gBattleCommunication _0801580C: - ldr r0, _0801581C @ =gUnknown_2023E82 + ldr r0, _0801581C @ =gBattleCommunication strb r4, [r0, 0x5] _08015810: movs r0, 0x1 @@ -11235,14 +11235,14 @@ _08015810: strb r0, [r1] b _0801582A .align 2, 0 -_0801581C: .4byte gUnknown_2023E82 +_0801581C: .4byte gBattleCommunication _08015820: .4byte gBattlerAttacker _08015824: - ldr r1, _0801583C @ =gUnknown_2023E82 + ldr r1, _0801583C @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] _0801582A: - ldr r1, _08015840 @ =gUnknown_2023D74 + ldr r1, _08015840 @ =gBattlescriptCurrInstr ldr r0, _08015844 @ =gUnknown_81D8806 str r0, [r1] _08015830: @@ -11253,8 +11253,8 @@ _08015830: pop {r0} bx r0 .align 2, 0 -_0801583C: .4byte gUnknown_2023E82 -_08015840: .4byte gUnknown_2023D74 +_0801583C: .4byte gBattleCommunication +_08015840: .4byte gBattlescriptCurrInstr _08015844: .4byte gUnknown_81D8806 _08015848: .4byte gBattleMainFunc _0801584C: .4byte sub_8015910 @@ -11266,7 +11266,7 @@ sub_8015850: @ 8015850 ldr r1, _08015878 @ =gUnknown_2023BE3 movs r0, 0 strb r0, [r1] - ldr r1, _0801587C @ =gUnknown_2023E8C + ldr r1, _0801587C @ =gProtectStructs ldr r0, _08015880 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -11278,24 +11278,24 @@ sub_8015850: @ 8015850 beq _0801588C cmp r0, 0x2 beq _0801589C - ldr r1, _08015884 @ =gUnknown_2023D74 + ldr r1, _08015884 @ =gBattlescriptCurrInstr ldr r0, _08015888 @ =gUnknown_81D8916 b _080158A0 .align 2, 0 _08015878: .4byte gUnknown_2023BE3 -_0801587C: .4byte gUnknown_2023E8C +_0801587C: .4byte gProtectStructs _08015880: .4byte gBattlerAttacker -_08015884: .4byte gUnknown_2023D74 +_08015884: .4byte gBattlescriptCurrInstr _08015888: .4byte gUnknown_81D8916 _0801588C: - ldr r1, _08015894 @ =gUnknown_2023D74 + ldr r1, _08015894 @ =gBattlescriptCurrInstr ldr r0, _08015898 @ =gUnknown_81D8901 b _080158A0 .align 2, 0 -_08015894: .4byte gUnknown_2023D74 +_08015894: .4byte gBattlescriptCurrInstr _08015898: .4byte gUnknown_81D8901 _0801589C: - ldr r1, _080158AC @ =gUnknown_2023D74 + ldr r1, _080158AC @ =gBattlescriptCurrInstr ldr r0, _080158B0 @ =gUnknown_81D890F _080158A0: str r0, [r1] @@ -11305,7 +11305,7 @@ _080158A0: pop {r0} bx r0 .align 2, 0 -_080158AC: .4byte gUnknown_2023D74 +_080158AC: .4byte gBattlescriptCurrInstr _080158B0: .4byte gUnknown_81D890F _080158B4: .4byte gBattleMainFunc _080158B8: .4byte sub_8015910 @@ -11332,7 +11332,7 @@ sub_80158BC: @ 80158BC strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _08015900 @ =gUnknown_2023D74 + ldr r1, _08015900 @ =gBattlescriptCurrInstr ldr r0, _08015904 @ =gUnknown_81D891D str r0, [r1] ldr r1, _08015908 @ =gBattleMainFunc @@ -11344,7 +11344,7 @@ _080158F0: .4byte gUnknown_2023BE3 _080158F4: .4byte gBattleTextBuff1 _080158F8: .4byte gBattlerAttacker _080158FC: .4byte gBattlerPartyIndexes -_08015900: .4byte gUnknown_2023D74 +_08015900: .4byte gBattlescriptCurrInstr _08015904: .4byte gUnknown_81D891D _08015908: .4byte gBattleMainFunc _0801590C: .4byte sub_8015910 @@ -11465,7 +11465,7 @@ _08015A04: cmp r0, 0 bne _08015A1E ldr r1, _08015A28 @ =gUnknown_825011C - ldr r0, _08015A2C @ =gUnknown_2023D74 + ldr r0, _08015A2C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] lsls r0, 2 @@ -11479,7 +11479,7 @@ _08015A1E: .align 2, 0 _08015A24: .4byte gBattleControllerExecFlags _08015A28: .4byte gUnknown_825011C -_08015A2C: .4byte gUnknown_2023D74 +_08015A2C: .4byte gBattlescriptCurrInstr thumb_func_end sub_8015910 thumb_func_start sub_8015A30 @@ -11747,7 +11747,7 @@ _08015C48: cmp r0, 0 bne _08015C62 ldr r1, _08015C6C @ =gUnknown_825011C - ldr r0, _08015C70 @ =gUnknown_2023D74 + ldr r0, _08015C70 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] lsls r0, 2 @@ -11760,7 +11760,7 @@ _08015C62: .align 2, 0 _08015C68: .4byte gBattleControllerExecFlags _08015C6C: .4byte gUnknown_825011C -_08015C70: .4byte gUnknown_2023D74 +_08015C70: .4byte gBattlescriptCurrInstr thumb_func_end RunBattleScriptCommands_PopCallbacksStack thumb_func_start sub_8015C74 @@ -11771,7 +11771,7 @@ sub_8015C74: @ 8015C74 cmp r0, 0 bne _08015C90 ldr r1, _08015C98 @ =gUnknown_825011C - ldr r0, _08015C9C @ =gUnknown_2023D74 + ldr r0, _08015C9C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] lsls r0, 2 @@ -11784,7 +11784,7 @@ _08015C90: .align 2, 0 _08015C94: .4byte gBattleControllerExecFlags _08015C98: .4byte gUnknown_825011C -_08015C9C: .4byte gUnknown_2023D74 +_08015C9C: .4byte gBattlescriptCurrInstr thumb_func_end sub_8015C74 thumb_func_start sub_8015CA0 @@ -11798,7 +11798,7 @@ sub_8015CA0: @ 8015CA0 movs r0, 0x4 str r0, [sp] ldr r6, _08015CE0 @ =gBattlerAttacker - ldr r1, _08015CE4 @ =gUnknown_2023BDE + ldr r1, _08015CE4 @ =gBattlerByTurnOrder ldr r0, _08015CE8 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -11822,7 +11822,7 @@ sub_8015CA0: @ 8015CA0 b _0801634C .align 2, 0 _08015CE0: .4byte gBattlerAttacker -_08015CE4: .4byte gUnknown_2023BDE +_08015CE4: .4byte gBattlerByTurnOrder _08015CE8: .4byte gUnknown_2023BE2 _08015CEC: .4byte gBattleStruct _08015CF0: .4byte gBitTable @@ -11841,7 +11841,7 @@ _08015CF8: strb r2, [r0] ldr r0, _08015D78 @ =gUnknown_2023D72 strb r2, [r0] - ldr r0, _08015D7C @ =gUnknown_2023E82 + ldr r0, _08015D7C @ =gBattleCommunication strb r2, [r0, 0x6] ldr r2, _08015D80 @ =gUnknown_2023D48 ldr r3, _08015D84 @ =gUnknown_2023D49 @@ -11854,7 +11854,7 @@ _08015CF8: ldrb r0, [r0] strb r0, [r3] strb r0, [r2] - ldr r1, _08015D8C @ =gUnknown_2023E8C + ldr r1, _08015D8C @ =gProtectStructs ldrb r4, [r6] lsls r0, r4, 4 adds r3, r0, r1 @@ -11872,7 +11872,7 @@ _08015CF8: movs r0, 0xA5 strh r0, [r1] strh r0, [r2] - ldr r2, _08015D98 @ =gUnknown_2023DD0 + ldr r2, _08015D98 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 4 @@ -11890,14 +11890,14 @@ _08015D6C: .4byte gCritMultiplier _08015D70: .4byte gBattleScripting _08015D74: .4byte gMoveResultFlags _08015D78: .4byte gUnknown_2023D72 -_08015D7C: .4byte gUnknown_2023E82 +_08015D7C: .4byte gBattleCommunication _08015D80: .4byte gUnknown_2023D48 _08015D84: .4byte gUnknown_2023D49 _08015D88: .4byte gBattleStruct -_08015D8C: .4byte gUnknown_2023E8C +_08015D8C: .4byte gProtectStructs _08015D90: .4byte gCurrentMove _08015D94: .4byte gChosenMove -_08015D98: .4byte gUnknown_2023DD0 +_08015D98: .4byte gHitMarker _08015D9C: ldr r0, _08015DD4 @ =gBattleMons movs r1, 0x58 @@ -12390,7 +12390,7 @@ _0801618C: b _08016310 _080161AA: ldr r4, _080161E4 @ =gActiveBattler - ldr r0, _080161E8 @ =gUnknown_2023BDE + ldr r0, _080161E8 @ =gBattlerByTurnOrder ldr r3, [sp] adds r0, r3, r0 ldrb r0, [r0] @@ -12403,7 +12403,7 @@ _080161AA: adds r1, 0x20 ldrb r1, [r1] bl sub_80C71D0 - ldr r2, _080161F0 @ =gUnknown_2023ECC + ldr r2, _080161F0 @ =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 @@ -12419,9 +12419,9 @@ _080161AA: b _0801632C .align 2, 0 _080161E4: .4byte gActiveBattler -_080161E8: .4byte gUnknown_2023BDE +_080161E8: .4byte gBattlerByTurnOrder _080161EC: .4byte gBattleMons -_080161F0: .4byte gUnknown_2023ECC +_080161F0: .4byte gSpecialStatuses _080161F4: .4byte gBattlerTarget _080161F8: ldr r0, [r7] @@ -12566,7 +12566,7 @@ _0801631A: bl GetBattlerAtPosition strb r0, [r5] _0801632C: - ldr r4, _08016360 @ =gUnknown_2023D74 + ldr r4, _08016360 @ =gBattlescriptCurrInstr ldr r3, _08016364 @ =gUnknown_81D65A8 ldr r2, _08016368 @ =gBattleMoves ldr r0, _0801636C @ =gCurrentMove @@ -12593,7 +12593,7 @@ _0801634C: pop {r0} bx r0 .align 2, 0 -_08016360: .4byte gUnknown_2023D74 +_08016360: .4byte gBattlescriptCurrInstr _08016364: .4byte gUnknown_81D65A8 _08016368: .4byte gBattleMoves _0801636C: .4byte gCurrentMove @@ -12604,7 +12604,7 @@ _08016370: .4byte gUnknown_2023BE3 sub_8016374: @ 8016374 push {r4,lr} ldr r3, _080163E0 @ =gBattlerAttacker - ldr r1, _080163E4 @ =gUnknown_2023BDE + ldr r1, _080163E4 @ =gBattlerByTurnOrder ldr r0, _080163E8 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -12641,7 +12641,7 @@ sub_8016374: @ 8016374 strb r0, [r2, 0x4] ldr r0, _08016404 @ =gBattleScripting strb r4, [r0, 0x17] - ldr r1, _08016408 @ =gUnknown_2023D74 + ldr r1, _08016408 @ =gBattlescriptCurrInstr ldr r0, _0801640C @ =gUnknown_81D894D str r0, [r1] ldr r1, _08016410 @ =gUnknown_2023BE3 @@ -12659,7 +12659,7 @@ _080163DA: bx r0 .align 2, 0 _080163E0: .4byte gBattlerAttacker -_080163E4: .4byte gUnknown_2023BDE +_080163E4: .4byte gBattlerByTurnOrder _080163E8: .4byte gUnknown_2023BE2 _080163EC: .4byte gBattle_BG0_X _080163F0: .4byte gBattle_BG0_Y @@ -12668,7 +12668,7 @@ _080163F8: .4byte gMoveSelectionCursor _080163FC: .4byte gBattleTextBuff1 _08016400: .4byte gBattleStruct _08016404: .4byte gBattleScripting -_08016408: .4byte gUnknown_2023D74 +_08016408: .4byte gBattlescriptCurrInstr _0801640C: .4byte gUnknown_81D894D _08016410: .4byte gUnknown_2023BE3 _08016414: .4byte gBattleResults @@ -12683,7 +12683,7 @@ sub_8016418: @ 8016418 push {r5-r7} ldr r4, _08016474 @ =gBattlerAttacker ldr r2, _08016478 @ =gBattlerTarget - ldr r1, _0801647C @ =gUnknown_2023BDE + ldr r1, _0801647C @ =gBattlerByTurnOrder ldr r0, _08016480 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -12713,7 +12713,7 @@ sub_8016418: @ 8016418 adds r1, r3, 0 cmp r1, 0xC bhi _0801649C - ldr r2, _08016494 @ =gUnknown_2023D74 + ldr r2, _08016494 @ =gBattlescriptCurrInstr ldr r1, _08016498 @ =gUnknown_81D99B0 ldrh r0, [r5] lsls r0, 2 @@ -12724,13 +12724,13 @@ sub_8016418: @ 8016418 .align 2, 0 _08016474: .4byte gBattlerAttacker _08016478: .4byte gBattlerTarget -_0801647C: .4byte gUnknown_2023BDE +_0801647C: .4byte gBattlerByTurnOrder _08016480: .4byte gUnknown_2023BE2 _08016484: .4byte gBattle_BG0_X _08016488: .4byte gBattle_BG0_Y _0801648C: .4byte gLastUsedItem _08016490: .4byte gBattleBufferB -_08016494: .4byte gUnknown_2023D74 +_08016494: .4byte gBattlescriptCurrInstr _08016498: .4byte gUnknown_81D99B0 _0801649C: adds r0, r3, 0 @@ -12739,7 +12739,7 @@ _0801649C: lsrs r0, 16 cmp r0, 0x1 bhi _080164C4 - ldr r0, _080164B8 @ =gUnknown_2023D74 + ldr r0, _080164B8 @ =gBattlescriptCurrInstr ldr r1, _080164BC @ =gUnknown_81D99FC ldr r1, [r1] str r1, [r0] @@ -12747,7 +12747,7 @@ _0801649C: mov r10, r1 b _0801671E .align 2, 0 -_080164B8: .4byte gUnknown_2023D74 +_080164B8: .4byte gBattlescriptCurrInstr _080164BC: .4byte gUnknown_81D99FC _080164C0: .4byte gUnknown_2023BE3 _080164C4: @@ -12755,7 +12755,7 @@ _080164C4: lsls r0, 1 cmp r1, r0 bne _080164E8 - ldr r0, _080164DC @ =gUnknown_2023D74 + ldr r0, _080164DC @ =gBattlescriptCurrInstr ldr r1, _080164E0 @ =gUnknown_81D99FC ldr r1, [r1, 0x4] str r1, [r0] @@ -12763,7 +12763,7 @@ _080164C4: mov r10, r2 b _0801671E .align 2, 0 -_080164DC: .4byte gUnknown_2023D74 +_080164DC: .4byte gBattlescriptCurrInstr _080164E0: .4byte gUnknown_81D99FC _080164E4: .4byte gUnknown_2023BE3 _080164E8: @@ -12772,7 +12772,7 @@ _080164E8: lsls r0, 24 cmp r0, 0 bne _08016510 - ldr r0, _08016504 @ =gUnknown_2023D74 + ldr r0, _08016504 @ =gBattlescriptCurrInstr ldr r1, _08016508 @ =gUnknown_81D99E4 ldr r1, [r1] str r1, [r0] @@ -12781,7 +12781,7 @@ _080164FC: mov r10, r0 b _0801671E .align 2, 0 -_08016504: .4byte gUnknown_2023D74 +_08016504: .4byte gBattlescriptCurrInstr _08016508: .4byte gUnknown_81D99E4 _0801650C: .4byte gUnknown_2023BE3 _08016510: @@ -12797,7 +12797,7 @@ _08016510: ldrb r0, [r0] subs r0, 0x1 mov r8, r4 - ldr r1, _08016550 @ =gUnknown_2023D74 + ldr r1, _08016550 @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _08016554 @ =gUnknown_81D99E4 mov r12, r3 @@ -12816,7 +12816,7 @@ _0801653C: .align 2, 0 _08016548: .4byte gBattleScripting _0801654C: .4byte gBattleStruct -_08016550: .4byte gUnknown_2023D74 +_08016550: .4byte gBattlescriptCurrInstr _08016554: .4byte gUnknown_81D99E4 _08016558: .4byte gUnknown_2023BE3 _0801655C: .4byte _08016560 @@ -12828,7 +12828,7 @@ _08016560: .4byte _08016608 .4byte _080166D8 _08016574: - ldr r5, _080165AC @ =gUnknown_2023E82 + ldr r5, _080165AC @ =gBattleCommunication movs r0, 0 strb r0, [r5, 0x5] ldr r2, _080165B0 @ =gBattlerAttacker @@ -12845,7 +12845,7 @@ _08016574: beq _080165C0 movs r0, 0x3E ands r0, r1 - ldr r1, _080165B4 @ =gUnknown_2023D74 + ldr r1, _080165B4 @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _080165B8 @ =gUnknown_81D99E4 ldr r2, _080165BC @ =gUnknown_2023BE3 @@ -12858,13 +12858,13 @@ _080165A6: strb r0, [r5, 0x5] b _08016706 .align 2, 0 -_080165AC: .4byte gUnknown_2023E82 +_080165AC: .4byte gBattleCommunication _080165B0: .4byte gBattlerAttacker -_080165B4: .4byte gUnknown_2023D74 +_080165B4: .4byte gBattlescriptCurrInstr _080165B8: .4byte gUnknown_81D99E4 _080165BC: .4byte gUnknown_2023BE3 _080165C0: - ldr r0, _080165FC @ =gUnknown_2023D74 + ldr r0, _080165FC @ =gBattlescriptCurrInstr mov r9, r0 ldr r6, _08016600 @ =gUnknown_81D99E4 ldr r1, _08016604 @ =gUnknown_2023BE3 @@ -12896,11 +12896,11 @@ _080165D0: beq _080165D0 b _08016706 .align 2, 0 -_080165FC: .4byte gUnknown_2023D74 +_080165FC: .4byte gBattlescriptCurrInstr _08016600: .4byte gUnknown_81D99E4 _08016604: .4byte gUnknown_2023BE3 _08016608: - ldr r3, _0801663C @ =gUnknown_2023E82 + ldr r3, _0801663C @ =gBattleCommunication movs r0, 0x4 strb r0, [r3, 0x5] ldr r2, _08016640 @ =gBattlerAttacker @@ -12920,16 +12920,16 @@ _08016608: beq _08016650 movs r0, 0x5 strb r0, [r3, 0x5] - ldr r2, _08016644 @ =gUnknown_2023D74 + ldr r2, _08016644 @ =gBattlescriptCurrInstr mov r9, r2 ldr r6, _08016648 @ =gUnknown_81D99E4 ldr r0, _0801664C @ =gUnknown_2023BE3 mov r10, r0 b _08016706 .align 2, 0 -_0801663C: .4byte gUnknown_2023E82 +_0801663C: .4byte gBattleCommunication _08016640: .4byte gBattlerAttacker -_08016644: .4byte gUnknown_2023D74 +_08016644: .4byte gBattlescriptCurrInstr _08016648: .4byte gUnknown_81D99E4 _0801664C: .4byte gUnknown_2023BE3 _08016650: @@ -12952,7 +12952,7 @@ _08016650: strb r0, [r1, 0x4] ldrb r0, [r6] ands r2, r0 - ldr r1, _080166CC @ =gUnknown_2023D74 + ldr r1, _080166CC @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _080166D0 @ =gUnknown_81D99E4 ldr r0, _080166D4 @ =gUnknown_2023BE3 @@ -12995,7 +12995,7 @@ _080166B4: .align 2, 0 _080166C4: .4byte gBattleTextBuff1 _080166C8: .4byte gBattleTextBuff2 -_080166CC: .4byte gUnknown_2023D74 +_080166CC: .4byte gBattlescriptCurrInstr _080166D0: .4byte gUnknown_81D99E4 _080166D4: .4byte gUnknown_2023BE3 _080166D8: @@ -13005,20 +13005,20 @@ _080166D8: ands r1, r0 cmp r1, 0 beq _080166F4 - ldr r1, _080166F0 @ =gUnknown_2023E82 + ldr r1, _080166F0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _080166F8 .align 2, 0 _080166EC: .4byte gBattleTypeFlags -_080166F0: .4byte gUnknown_2023E82 +_080166F0: .4byte gBattleCommunication _080166F4: - ldr r0, _08016734 @ =gUnknown_2023E82 + ldr r0, _08016734 @ =gBattleCommunication strb r1, [r0, 0x5] _080166F8: ldr r0, _08016738 @ =gBattlerAttacker mov r8, r0 - ldr r1, _0801673C @ =gUnknown_2023D74 + ldr r1, _0801673C @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _08016740 @ =gUnknown_81D99E4 ldr r2, _08016744 @ =gUnknown_2023BE3 @@ -13048,9 +13048,9 @@ _0801671E: pop {r0} bx r0 .align 2, 0 -_08016734: .4byte gUnknown_2023E82 +_08016734: .4byte gBattleCommunication _08016738: .4byte gBattlerAttacker -_0801673C: .4byte gUnknown_2023D74 +_0801673C: .4byte gBattlescriptCurrInstr _08016740: .4byte gUnknown_81D99E4 _08016744: .4byte gUnknown_2023BE3 thumb_func_end sub_8016418 @@ -13095,7 +13095,7 @@ _0801677E: adds r0, r1 ldrh r0, [r0, 0x2E] strh r0, [r2] - ldr r0, _080167B8 @ =gUnknown_2023E8C + ldr r0, _080167B8 @ =gProtectStructs lsls r2, r4, 4 adds r2, r0 ldrb r1, [r2, 0x1] @@ -13110,7 +13110,7 @@ _0801677E: _080167AC: .4byte gPotentialItemEffectBattler _080167B0: .4byte gLastUsedItem _080167B4: .4byte gBattleMons -_080167B8: .4byte gUnknown_2023E8C +_080167B8: .4byte gProtectStructs _080167BC: ldr r7, _080167EC @ =gBattleMons movs r2, 0x58 @@ -13124,7 +13124,7 @@ _080167BC: bne _080167F8 ldr r0, _080167F0 @ =gLastUsedAbility strb r1, [r0] - ldr r0, _080167F4 @ =gUnknown_2023E8C + ldr r0, _080167F4 @ =gProtectStructs lsls r2, r4, 4 adds r2, r0 ldrb r1, [r2, 0x1] @@ -13138,7 +13138,7 @@ _080167BC: .align 2, 0 _080167EC: .4byte gBattleMons _080167F0: .4byte gLastUsedAbility -_080167F4: .4byte gUnknown_2023E8C +_080167F4: .4byte gProtectStructs _080167F8: ldr r0, _08016820 @ =gBattleTypeFlags ldr r3, [r0] @@ -13231,7 +13231,7 @@ _080168A0: .4byte gBattleOutcome sub_80168A4: @ 80168A4 push {r4-r6,lr} ldr r4, _080168F4 @ =gBattlerAttacker - ldr r1, _080168F8 @ =gUnknown_2023BDE + ldr r1, _080168F8 @ =gBattlerByTurnOrder ldr r5, _080168FC @ =gUnknown_2023BE2 ldrb r0, [r5] adds r0, r1 @@ -13271,7 +13271,7 @@ _080168D8: b _08016922 .align 2, 0 _080168F4: .4byte gBattlerAttacker -_080168F8: .4byte gUnknown_2023BDE +_080168F8: .4byte gBattlerByTurnOrder _080168FC: .4byte gUnknown_2023BE2 _08016900: .4byte gBattleTypeFlags _08016904: .4byte gBattlersCount @@ -13322,18 +13322,18 @@ _0801694C: bne _080169D8 ldrb r0, [r4] bl ClearFuryCutterDestinyBondGrudge - ldr r1, _0801697C @ =gUnknown_2023E82 + ldr r1, _0801697C @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x5] - ldr r1, _08016980 @ =gUnknown_2023D74 + ldr r1, _08016980 @ =gBattlescriptCurrInstr ldr r0, _08016984 @ =gUnknown_81D893A str r0, [r1] ldr r1, _08016988 @ =gUnknown_2023BE3 movs r0, 0xA b _080169D6 .align 2, 0 -_0801697C: .4byte gUnknown_2023E82 -_08016980: .4byte gUnknown_2023D74 +_0801697C: .4byte gBattleCommunication +_08016980: .4byte gBattlescriptCurrInstr _08016984: .4byte gUnknown_81D893A _08016988: .4byte gUnknown_2023BE3 _0801698C: @@ -13348,10 +13348,10 @@ _0801698C: ands r0, r1 cmp r0, 0 beq _080169CC - ldr r1, _080169BC @ =gUnknown_2023E82 + ldr r1, _080169BC @ =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] - ldr r1, _080169C0 @ =gUnknown_2023D74 + ldr r1, _080169C0 @ =gBattlescriptCurrInstr ldr r0, _080169C4 @ =gUnknown_81D893A str r0, [r1] ldr r1, _080169C8 @ =gUnknown_2023BE3 @@ -13360,8 +13360,8 @@ _0801698C: .align 2, 0 _080169B4: .4byte gBattleMons _080169B8: .4byte 0x0400e000 -_080169BC: .4byte gUnknown_2023E82 -_080169C0: .4byte gUnknown_2023D74 +_080169BC: .4byte gBattleCommunication +_080169C0: .4byte gBattlescriptCurrInstr _080169C4: .4byte gUnknown_81D893A _080169C8: .4byte gUnknown_2023BE3 _080169CC: @@ -13385,7 +13385,7 @@ _080169E4: .4byte gBattleOutcome sub_80169E8: @ 80169E8 push {r4,r5,lr} ldr r2, _08016A44 @ =gBattlerAttacker - ldr r1, _08016A48 @ =gUnknown_2023BDE + ldr r1, _08016A48 @ =gBattlerByTurnOrder ldr r0, _08016A4C @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -13429,7 +13429,7 @@ sub_80169E8: @ 80169E8 b _08016A98 .align 2, 0 _08016A44: .4byte gBattlerAttacker -_08016A48: .4byte gUnknown_2023BDE +_08016A48: .4byte gBattlerByTurnOrder _08016A4C: .4byte gUnknown_2023BE2 _08016A50: .4byte gBattle_BG0_X _08016A54: .4byte gBattle_BG0_Y @@ -13438,12 +13438,12 @@ _08016A5C: .4byte gEnemyParty _08016A60: .4byte gBaseStats _08016A64: .4byte 0x000004fb _08016A68: - ldr r1, _08016A70 @ =gUnknown_2023E82 + ldr r1, _08016A70 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08016A9C .align 2, 0 -_08016A70: .4byte gUnknown_2023E82 +_08016A70: .4byte gBattleCommunication _08016A74: adds r1, 0x7A ldrb r0, [r1] @@ -13456,17 +13456,17 @@ _08016A74: ldrb r0, [r0] cmp r0, 0 beq _08016A98 - ldr r1, _08016A94 @ =gUnknown_2023E82 + ldr r1, _08016A94 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08016A9C .align 2, 0 -_08016A94: .4byte gUnknown_2023E82 +_08016A94: .4byte gBattleCommunication _08016A98: - ldr r0, _08016AB0 @ =gUnknown_2023E82 + ldr r0, _08016AB0 @ =gBattleCommunication strb r5, [r0, 0x5] _08016A9C: - ldr r1, _08016AB4 @ =gUnknown_2023D74 + ldr r1, _08016AB4 @ =gBattlescriptCurrInstr ldr r0, _08016AB8 @ =gUnknown_81D9A04 ldr r0, [r0] str r0, [r1] @@ -13477,8 +13477,8 @@ _08016A9C: pop {r0} bx r0 .align 2, 0 -_08016AB0: .4byte gUnknown_2023E82 -_08016AB4: .4byte gUnknown_2023D74 +_08016AB0: .4byte gBattleCommunication +_08016AB4: .4byte gBattlescriptCurrInstr _08016AB8: .4byte gUnknown_81D9A04 _08016ABC: .4byte gUnknown_2023BE3 thumb_func_end sub_80169E8 @@ -13486,7 +13486,7 @@ _08016ABC: .4byte gUnknown_2023BE3 thumb_func_start sub_8016AC0 sub_8016AC0: @ 8016AC0 ldr r2, _08016AF8 @ =gBattlerAttacker - ldr r1, _08016AFC @ =gUnknown_2023BDE + ldr r1, _08016AFC @ =gBattlerByTurnOrder ldr r0, _08016B00 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -13504,7 +13504,7 @@ sub_8016AC0: @ 8016AC0 ldr r1, _08016B10 @ =gLastUsedItem movs r0, 0x5 strh r0, [r1] - ldr r1, _08016B14 @ =gUnknown_2023D74 + ldr r1, _08016B14 @ =gBattlescriptCurrInstr ldr r0, _08016B18 @ =gUnknown_81D99B0 ldr r0, [r0, 0x14] str r0, [r1] @@ -13514,13 +13514,13 @@ sub_8016AC0: @ 8016AC0 bx lr .align 2, 0 _08016AF8: .4byte gBattlerAttacker -_08016AFC: .4byte gUnknown_2023BDE +_08016AFC: .4byte gBattlerByTurnOrder _08016B00: .4byte gUnknown_2023BE2 _08016B04: .4byte gBattle_BG0_X _08016B08: .4byte gBattle_BG0_Y _08016B0C: .4byte gNumSafariBalls _08016B10: .4byte gLastUsedItem -_08016B14: .4byte gUnknown_2023D74 +_08016B14: .4byte gBattlescriptCurrInstr _08016B18: .4byte gUnknown_81D99B0 _08016B1C: .4byte gUnknown_2023BE3 thumb_func_end sub_8016AC0 @@ -13529,7 +13529,7 @@ _08016B1C: .4byte gUnknown_2023BE3 sub_8016B20: @ 8016B20 push {r4-r7,lr} ldr r2, _08016B9C @ =gBattlerAttacker - ldr r1, _08016BA0 @ =gUnknown_2023BDE + ldr r1, _08016BA0 @ =gBattlerByTurnOrder ldr r0, _08016BA4 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -13578,7 +13578,7 @@ _08016B66: movs r0, 0x3 strb r0, [r1] _08016B86: - ldr r1, _08016BB4 @ =gUnknown_2023D74 + ldr r1, _08016BB4 @ =gBattlescriptCurrInstr ldr r0, _08016BB8 @ =gUnknown_81D9A04 ldr r0, [r0, 0x8] str r0, [r1] @@ -13590,12 +13590,12 @@ _08016B86: bx r0 .align 2, 0 _08016B9C: .4byte gBattlerAttacker -_08016BA0: .4byte gUnknown_2023BDE +_08016BA0: .4byte gBattlerByTurnOrder _08016BA4: .4byte gUnknown_2023BE2 _08016BA8: .4byte gBattle_BG0_X _08016BAC: .4byte gBattle_BG0_Y _08016BB0: .4byte gBattleStruct -_08016BB4: .4byte gUnknown_2023D74 +_08016BB4: .4byte gBattlescriptCurrInstr _08016BB8: .4byte gUnknown_81D9A04 _08016BBC: .4byte gUnknown_2023BE3 thumb_func_end sub_8016B20 @@ -13604,7 +13604,7 @@ _08016BBC: .4byte gUnknown_2023BE3 sub_8016BC0: @ 8016BC0 push {r4-r7,lr} ldr r2, _08016C3C @ =gBattlerAttacker - ldr r1, _08016C40 @ =gUnknown_2023BDE + ldr r1, _08016C40 @ =gBattlerByTurnOrder ldr r0, _08016C44 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -13653,7 +13653,7 @@ _08016C06: movs r0, 0x14 strb r0, [r1] _08016C26: - ldr r1, _08016C54 @ =gUnknown_2023D74 + ldr r1, _08016C54 @ =gBattlescriptCurrInstr ldr r0, _08016C58 @ =gUnknown_81D9A04 ldr r0, [r0, 0x4] str r0, [r1] @@ -13665,12 +13665,12 @@ _08016C26: bx r0 .align 2, 0 _08016C3C: .4byte gBattlerAttacker -_08016C40: .4byte gUnknown_2023BDE +_08016C40: .4byte gBattlerByTurnOrder _08016C44: .4byte gUnknown_2023BE2 _08016C48: .4byte gBattle_BG0_X _08016C4C: .4byte gBattle_BG0_Y _08016C50: .4byte gBattleStruct -_08016C54: .4byte gUnknown_2023D74 +_08016C54: .4byte gBattlescriptCurrInstr _08016C58: .4byte gUnknown_81D9A04 _08016C5C: .4byte gUnknown_2023BE3 thumb_func_end sub_8016BC0 @@ -13679,7 +13679,7 @@ _08016C5C: .4byte gUnknown_2023BE3 HandleAction_SafriZoneRun: @ 8016C60 push {r4,lr} ldr r2, _08016C88 @ =gBattlerAttacker - ldr r1, _08016C8C @ =gUnknown_2023BDE + ldr r1, _08016C8C @ =gBattlerByTurnOrder ldr r4, _08016C90 @ =gUnknown_2023BE2 ldrb r0, [r4] adds r0, r1 @@ -13698,7 +13698,7 @@ HandleAction_SafriZoneRun: @ 8016C60 bx r0 .align 2, 0 _08016C88: .4byte gBattlerAttacker -_08016C8C: .4byte gUnknown_2023BDE +_08016C8C: .4byte gBattlerByTurnOrder _08016C90: .4byte gUnknown_2023BE2 _08016C94: .4byte gBattlersCount _08016C98: .4byte gBattleOutcome @@ -13707,7 +13707,7 @@ _08016C98: .4byte gBattleOutcome thumb_func_start HandleAction_Action9 HandleAction_Action9: @ 8016C9C ldr r3, _08016CE8 @ =gBattlerAttacker - ldr r1, _08016CEC @ =gUnknown_2023BDE + ldr r1, _08016CEC @ =gBattlerByTurnOrder ldr r0, _08016CF0 @ =gUnknown_2023BE2 ldrb r0, [r0] adds r0, r1 @@ -13732,7 +13732,7 @@ HandleAction_Action9: @ 8016C9C strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _08016D04 @ =gUnknown_2023D74 + ldr r1, _08016D04 @ =gBattlescriptCurrInstr ldr r0, _08016D08 @ =gUnknown_81D9A04 ldr r0, [r0, 0xC] str r0, [r1] @@ -13745,13 +13745,13 @@ HandleAction_Action9: @ 8016C9C bx lr .align 2, 0 _08016CE8: .4byte gBattlerAttacker -_08016CEC: .4byte gUnknown_2023BDE +_08016CEC: .4byte gBattlerByTurnOrder _08016CF0: .4byte gUnknown_2023BE2 _08016CF4: .4byte gBattle_BG0_X _08016CF8: .4byte gBattle_BG0_Y _08016CFC: .4byte gBattleTextBuff1 _08016D00: .4byte gBattlerPartyIndexes -_08016D04: .4byte gUnknown_2023D74 +_08016D04: .4byte gBattlescriptCurrInstr _08016D08: .4byte gUnknown_81D9A04 _08016D0C: .4byte gUnknown_2023BE3 _08016D10: .4byte gUnknown_2023BDA @@ -13792,7 +13792,7 @@ HandleAction_NothingIsFainted: @ 8016D3C adds r0, r2 ldrb r0, [r0] strb r0, [r3] - ldr r2, _08016D68 @ =gUnknown_2023DD0 + ldr r2, _08016D68 @ =gHitMarker ldr r0, [r2] ldr r1, _08016D6C @ =0xf1e892af ands r0, r1 @@ -13802,7 +13802,7 @@ HandleAction_NothingIsFainted: @ 8016D3C _08016D5C: .4byte gUnknown_2023BE2 _08016D60: .4byte gUnknown_2023BE3 _08016D64: .4byte gUnknown_2023BDA -_08016D68: .4byte gUnknown_2023DD0 +_08016D68: .4byte gHitMarker _08016D6C: .4byte 0xf1e892af thumb_func_end HandleAction_NothingIsFainted @@ -13820,7 +13820,7 @@ HandleAction_ActionFinished: @ 8016D70 ldrb r0, [r0] strb r0, [r3] bl SpecialStatusesClear - ldr r2, _08016DF0 @ =gUnknown_2023DD0 + ldr r2, _08016DF0 @ =gHitMarker ldr r0, [r2] ldr r1, _08016DF4 @ =0xf1e892af ands r0, r1 @@ -13853,7 +13853,7 @@ HandleAction_ActionFinished: @ 8016D70 ldr r0, _08016E18 @ =gDynamicBasePower strh r4, [r0] strb r1, [r5, 0x14] - ldr r0, _08016E1C @ =gUnknown_2023E82 + ldr r0, _08016E1C @ =gBattleCommunication strb r1, [r0, 0x3] strb r1, [r0, 0x4] strb r1, [r5, 0x16] @@ -13869,7 +13869,7 @@ HandleAction_ActionFinished: @ 8016D70 _08016DE4: .4byte gUnknown_2023BE2 _08016DE8: .4byte gUnknown_2023BE3 _08016DEC: .4byte gUnknown_2023BDA -_08016DF0: .4byte gUnknown_2023DD0 +_08016DF0: .4byte gHitMarker _08016DF4: .4byte 0xf1e892af _08016DF8: .4byte gCurrentMove _08016DFC: .4byte gBattleMoveDamage @@ -13880,7 +13880,7 @@ _08016E0C: .4byte gBattlerAttacker _08016E10: .4byte gUnknown_2023DA8 _08016E14: .4byte gBattleStruct _08016E18: .4byte gDynamicBasePower -_08016E1C: .4byte gUnknown_2023E82 +_08016E1C: .4byte gBattleCommunication _08016E20: .4byte gBattleResources thumb_func_end HandleAction_ActionFinished diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index 8b0422d3f..b703b8334 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -6192,7 +6192,7 @@ sub_80F1CE4: @ 80F1CE4 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, _080F1CF8 @ =gUnknown_2023E82 + ldr r2, _080F1CF8 @ =gBattleCommunication ldrb r0, [r2, 0x5] cmp r0, 0x2 bls _080F1D00 @@ -6200,7 +6200,7 @@ sub_80F1CE4: @ 80F1CE4 movs r0, 0 b _080F1D04 .align 2, 0 -_080F1CF8: .4byte gUnknown_2023E82 +_080F1CF8: .4byte gBattleCommunication _080F1CFC: .4byte gBattleAnimArgs _080F1D00: ldr r1, _080F1D10 @ =gBattleAnimArgs diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 5afa2231e..3ded95b1d 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -2136,7 +2136,7 @@ _080E86DC: .4byte gActiveBattler _080E86E0: bl OpponentBufferExecCompleted _080E86E4: - ldr r0, _080E86FC @ =gUnknown_2023E82 + ldr r0, _080E86FC @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x7] ldr r0, _080E8700 @ =gBattleStruct @@ -2149,7 +2149,7 @@ _080E86F2: pop {r0} bx r0 .align 2, 0 -_080E86FC: .4byte gUnknown_2023E82 +_080E86FC: .4byte gBattleCommunication _080E8700: .4byte gBattleStruct thumb_func_end sub_80E85D4 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 373d191ef..25dbe3ce3 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -33,7 +33,7 @@ _0801D784: ldrh r0, [r0, 0x28] cmp r0, 0 bne _0801D7C8 - ldr r2, _0801D7BC @ =gUnknown_2023DD0 + ldr r2, _0801D7BC @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 2 @@ -44,17 +44,17 @@ _0801D784: lsls r0, 12 orrs r1, r0 str r1, [r2] - ldr r1, _0801D7C0 @ =gUnknown_2023D74 + ldr r1, _0801D7C0 @ =gBattlescriptCurrInstr ldr r0, _0801D7C4 @ =gUnknown_81D694E b _0801DAFA .align 2, 0 _0801D7B4: .4byte gBattleMons _0801D7B8: .4byte gBattlerAttacker -_0801D7BC: .4byte gUnknown_2023DD0 -_0801D7C0: .4byte gUnknown_2023D74 +_0801D7BC: .4byte gHitMarker +_0801D7C0: .4byte gBattlescriptCurrInstr _0801D7C4: .4byte gUnknown_81D694E _0801D7C8: - bl sub_80192D4 + bl AtkCanceller_UnableToUseMove lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 @@ -85,7 +85,7 @@ _0801D7EE: adds r0, 0x24 adds r1, r0 ldrb r0, [r1] - ldr r5, _0801D854 @ =gUnknown_2023DD0 + ldr r5, _0801D854 @ =gHitMarker cmp r0, 0 bne _0801D86C ldr r0, _0801D858 @ =gCurrentMove @@ -106,7 +106,7 @@ _0801D7EE: ands r0, r1 cmp r0, 0 bne _0801D86C - ldr r1, _0801D860 @ =gUnknown_2023D74 + ldr r1, _0801D860 @ =gBattlescriptCurrInstr ldr r0, _0801D864 @ =gUnknown_81D8EA8 str r0, [r1] ldr r2, _0801D868 @ =gMoveResultFlags @@ -120,10 +120,10 @@ _0801D844: .4byte gBattlerTarget _0801D848: .4byte gBattleMons _0801D84C: .4byte gUnknown_2023D48 _0801D850: .4byte gBattlerAttacker -_0801D854: .4byte gUnknown_2023DD0 +_0801D854: .4byte gHitMarker _0801D858: .4byte gCurrentMove _0801D85C: .4byte 0x00800200 -_0801D860: .4byte gUnknown_2023D74 +_0801D860: .4byte gBattlescriptCurrInstr _0801D864: .4byte gUnknown_81D8EA8 _0801D868: .4byte gMoveResultFlags _0801D86C: @@ -148,7 +148,7 @@ _0801D86C: ands r0, r1 cmp r0, 0 bne _0801D8C4 - bl sub_801D438 + bl IsMonDisobedient lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 @@ -171,13 +171,13 @@ _0801D8B4: .align 2, 0 _0801D8C0: .4byte gMoveResultFlags _0801D8C4: - ldr r2, _0801D928 @ =gUnknown_2023DD0 + ldr r2, _0801D928 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] - ldr r2, _0801D92C @ =gUnknown_2023E8C + ldr r2, _0801D92C @ =gProtectStructs ldr r1, _0801D930 @ =gBattlerTarget ldrb r3, [r1] lsls r0, r3, 4 @@ -215,18 +215,18 @@ _0801D8C4: ands r0, r2 strb r0, [r1] bl BattleScriptPushCursor - ldr r1, _0801D944 @ =gUnknown_2023D74 + ldr r1, _0801D944 @ =gBattlescriptCurrInstr ldr r0, _0801D948 @ =gUnknown_81D8FAA b _0801DAFA .align 2, 0 -_0801D928: .4byte gUnknown_2023DD0 -_0801D92C: .4byte gUnknown_2023E8C +_0801D928: .4byte gHitMarker +_0801D92C: .4byte gProtectStructs _0801D930: .4byte gBattlerTarget _0801D934: .4byte gBattleMoves _0801D938: .4byte gCurrentMove _0801D93C: .4byte gBattlerAttacker _0801D940: .4byte 0x00000115 -_0801D944: .4byte gUnknown_2023D74 +_0801D944: .4byte gBattlescriptCurrInstr _0801D948: .4byte gUnknown_81D8FAA _0801D94C: movs r2, 0 @@ -234,11 +234,11 @@ _0801D94C: ldrb r0, [r0] cmp r2, r0 bge _0801D98E - ldr r6, _0801D9CC @ =gUnknown_2023E8C + ldr r6, _0801D9CC @ =gProtectStructs ldr r1, _0801D9D0 @ =gBattleMoves mov r12, r1 adds r5, r0, 0 - ldr r7, _0801D9D4 @ =gUnknown_2023BDE + ldr r7, _0801D9D4 @ =gBattlerByTurnOrder _0801D960: adds r4, r2, r7 ldrb r3, [r4] @@ -265,7 +265,7 @@ _0801D988: cmp r2, r5 blt _0801D960 _0801D98E: - ldr r0, _0801D9DC @ =gUnknown_2023ECC + ldr r0, _0801D9DC @ =gSpecialStatuses mov r1, r8 ldrb r2, [r1] lsls r1, r2, 2 @@ -284,7 +284,7 @@ _0801D98E: movs r0, 0x1F strb r0, [r4] bl BattleScriptPushCursor - ldr r1, _0801D9E4 @ =gUnknown_2023D74 + ldr r1, _0801D9E4 @ =gBattlescriptCurrInstr ldr r0, _0801D9E8 @ =gUnknown_81D938D str r0, [r1] mov r1, r8 @@ -294,13 +294,13 @@ _0801D98E: b _0801DAFC .align 2, 0 _0801D9C8: .4byte gBattlersCount -_0801D9CC: .4byte gUnknown_2023E8C +_0801D9CC: .4byte gProtectStructs _0801D9D0: .4byte gBattleMoves -_0801D9D4: .4byte gUnknown_2023BDE +_0801D9D4: .4byte gBattlerByTurnOrder _0801D9D8: .4byte gCurrentMove -_0801D9DC: .4byte gUnknown_2023ECC +_0801D9DC: .4byte gSpecialStatuses _0801D9E0: .4byte gLastUsedAbility -_0801D9E4: .4byte gUnknown_2023D74 +_0801D9E4: .4byte gBattlescriptCurrInstr _0801D9E8: .4byte gUnknown_81D938D _0801D9EC: lsls r0, r2, 4 @@ -382,7 +382,7 @@ _0801DA5E: lsls r0, 1 adds r0, r1 strh r2, [r0] - ldr r1, _0801DAB0 @ =gUnknown_2023E82 + ldr r1, _0801DAB0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] b _0801DAF4 @@ -395,7 +395,7 @@ _0801DAA0: .4byte gMoveResultFlags _0801DAA4: .4byte gUnknown_2023DA0 _0801DAA8: .4byte gBattlerTarget _0801DAAC: .4byte gUnknown_2023DA8 -_0801DAB0: .4byte gUnknown_2023E82 +_0801DAB0: .4byte gBattleCommunication _0801DAB4: ldr r0, _0801DAE0 @ =gBattlerAttacker ldrb r0, [r0] @@ -414,17 +414,17 @@ _0801DAB4: ldrb r0, [r4] strb r0, [r1, 0x17] bl BattleScriptPushCursor - ldr r1, _0801DAEC @ =gUnknown_2023D74 + ldr r1, _0801DAEC @ =gBattlescriptCurrInstr ldr r0, _0801DAF0 @ =gUnknown_81D8FC2 b _0801DAFA .align 2, 0 _0801DAE0: .4byte gBattlerAttacker _0801DAE4: .4byte 0x00000121 _0801DAE8: .4byte gBattleScripting -_0801DAEC: .4byte gUnknown_2023D74 +_0801DAEC: .4byte gBattlescriptCurrInstr _0801DAF0: .4byte gUnknown_81D8FC2 _0801DAF4: - ldr r1, _0801DB0C @ =gUnknown_2023D74 + ldr r1, _0801DB0C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _0801DAFA: @@ -438,7 +438,7 @@ _0801DAFC: pop {r0} bx r0 .align 2, 0 -_0801DB0C: .4byte gUnknown_2023D74 +_0801DB0C: .4byte gBattlescriptCurrInstr thumb_func_end atk00_attackcanceler thumb_func_start JumpIfMoveFailed @@ -449,7 +449,7 @@ JumpIfMoveFailed: @ 801DB10 lsrs r0, 24 lsls r1, 16 lsrs r6, r1, 16 - ldr r1, _0801DB5C @ =gUnknown_2023D74 + ldr r1, _0801DB5C @ =gBattlescriptCurrInstr ldr r5, [r1] adds r4, r5, r0 ldr r0, _0801DB60 @ =gMoveResultFlags @@ -482,7 +482,7 @@ JumpIfMoveFailed: @ 801DB10 orrs r4, r0 b _0801DB8A .align 2, 0 -_0801DB5C: .4byte gUnknown_2023D74 +_0801DB5C: .4byte gBattlescriptCurrInstr _0801DB60: .4byte gMoveResultFlags _0801DB64: .4byte gUnknown_2023DA0 _0801DB68: .4byte gBattlerTarget @@ -500,7 +500,7 @@ _0801DB70: cmp r0, 0 bne _0801DB8E _0801DB8A: - ldr r0, _0801DB9C @ =gUnknown_2023D74 + ldr r0, _0801DB9C @ =gBattlescriptCurrInstr str r4, [r0] _0801DB8E: add sp, 0x4 @@ -509,13 +509,13 @@ _0801DB8E: bx r0 .align 2, 0 _0801DB98: .4byte gBattlerTarget -_0801DB9C: .4byte gUnknown_2023D74 +_0801DB9C: .4byte gBattlescriptCurrInstr thumb_func_end JumpIfMoveFailed thumb_func_start atk40_jumpifaffectedbyprotect atk40_jumpifaffectedbyprotect: @ 801DBA0 push {lr} - ldr r1, _0801DBE8 @ =gUnknown_2023E8C + ldr r1, _0801DBE8 @ =gProtectStructs ldr r0, _0801DBEC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 4 @@ -544,19 +544,19 @@ atk40_jumpifaffectedbyprotect: @ 801DBA0 movs r0, 0x5 movs r1, 0 bl JumpIfMoveFailed - ldr r1, _0801DBFC @ =gUnknown_2023E82 + ldr r1, _0801DBFC @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] b _0801DC08 .align 2, 0 -_0801DBE8: .4byte gUnknown_2023E8C +_0801DBE8: .4byte gProtectStructs _0801DBEC: .4byte gBattlerTarget _0801DBF0: .4byte gBattleMoves _0801DBF4: .4byte gCurrentMove _0801DBF8: .4byte gMoveResultFlags -_0801DBFC: .4byte gUnknown_2023E82 +_0801DBFC: .4byte gBattleCommunication _0801DC00: - ldr r1, _0801DC0C @ =gUnknown_2023D74 + ldr r1, _0801DC0C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -564,7 +564,7 @@ _0801DC08: pop {r0} bx r0 .align 2, 0 -_0801DC0C: .4byte gUnknown_2023D74 +_0801DC0C: .4byte gBattlescriptCurrInstr thumb_func_end atk40_jumpifaffectedbyprotect thumb_func_start JumpIfMoveAffectedByProtect @@ -573,7 +573,7 @@ JumpIfMoveAffectedByProtect: @ 801DC10 lsls r0, 16 lsrs r3, r0, 16 movs r4, 0 - ldr r1, _0801DC64 @ =gUnknown_2023E8C + ldr r1, _0801DC64 @ =gProtectStructs ldr r0, _0801DC68 @ =gBattlerTarget ldrb r0, [r0] lsls r0, 4 @@ -602,7 +602,7 @@ JumpIfMoveAffectedByProtect: @ 801DC10 movs r0, 0x7 adds r1, r3, 0 bl JumpIfMoveFailed - ldr r1, _0801DC78 @ =gUnknown_2023E82 + ldr r1, _0801DC78 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] movs r4, 0x1 @@ -612,12 +612,12 @@ _0801DC5C: pop {r1} bx r1 .align 2, 0 -_0801DC64: .4byte gUnknown_2023E8C +_0801DC64: .4byte gProtectStructs _0801DC68: .4byte gBattlerTarget _0801DC6C: .4byte gBattleMoves _0801DC70: .4byte gCurrentMove _0801DC74: .4byte gMoveResultFlags -_0801DC78: .4byte gUnknown_2023E82 +_0801DC78: .4byte gBattleCommunication thumb_func_end JumpIfMoveAffectedByProtect thumb_func_start AccuracyCalcHelper @@ -648,7 +648,7 @@ AccuracyCalcHelper: @ 801DC7C cmp r0, r1 beq _0801DD98 _0801DCAE: - ldr r0, _0801DCEC @ =gUnknown_2023DD0 + ldr r0, _0801DCEC @ =gHitMarker ldr r1, [r0] movs r2, 0x80 lsls r2, 9 @@ -676,7 +676,7 @@ _0801DCDC: .4byte gStatuses3 _0801DCE0: .4byte gBattlerTarget _0801DCE4: .4byte gDisableStructs _0801DCE8: .4byte gBattlerAttacker -_0801DCEC: .4byte gUnknown_2023DD0 +_0801DCEC: .4byte gHitMarker _0801DCF0: .4byte gMoveResultFlags _0801DCF4: ldr r0, [r2] @@ -791,7 +791,7 @@ sub_801DDC4: @ 801DDC4 mov r5, r8 push {r5-r7} sub sp, 0x8 - ldr r0, _0801DE60 @ =gUnknown_2023D74 + ldr r0, _0801DE60 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r6, [r0, 0x5] ldrb r0, [r0, 0x6] @@ -862,7 +862,7 @@ _0801DE56: bl JumpIfMoveFailed b _0801E1C2 .align 2, 0 -_0801DE60: .4byte gUnknown_2023D74 +_0801DE60: .4byte gBattlescriptCurrInstr _0801DE64: .4byte gBattleTypeFlags _0801DE68: .4byte gBattleMoves _0801DE6C: .4byte gBattlerAttacker @@ -904,7 +904,7 @@ _0801DEA8: ands r0, r1 cmp r0, 0 beq _0801DEF0 - ldr r3, _0801DEEC @ =gUnknown_2023D74 + ldr r3, _0801DEEC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -925,7 +925,7 @@ _0801DEDC: .4byte 0x0000ffff _0801DEE0: .4byte gDisableStructs _0801DEE4: .4byte gBattlerAttacker _0801DEE8: .4byte 0x000400c0 -_0801DEEC: .4byte gUnknown_2023D74 +_0801DEEC: .4byte gBattlescriptCurrInstr _0801DEF0: movs r0, 0 bl JumpIfMoveAffectedByProtect @@ -934,13 +934,13 @@ _0801DEF0: beq _0801DEFE b _0801E1C2 _0801DEFE: - ldr r1, _0801DF08 @ =gUnknown_2023D74 + ldr r1, _0801DF08 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x7 str r0, [r1] b _0801E1C2 .align 2, 0 -_0801DF08: .4byte gUnknown_2023D74 +_0801DF08: .4byte gBattlescriptCurrInstr _0801DF0C: cmp r6, 0 bne _0801DF14 @@ -1255,7 +1255,7 @@ _0801E150: cmp r0, 0x20 bne _0801E1B0 _0801E192: - ldr r1, _0801E1AC @ =gUnknown_2023E82 + ldr r1, _0801E1AC @ =gBattleCommunication movs r0, 0x2 b _0801E1B4 .align 2, 0 @@ -1264,9 +1264,9 @@ _0801E19C: .4byte gBattlerTarget _0801E1A0: .4byte gMoveResultFlags _0801E1A4: .4byte gBattleTypeFlags _0801E1A8: .4byte gBattleMoves -_0801E1AC: .4byte gUnknown_2023E82 +_0801E1AC: .4byte gBattleCommunication _0801E1B0: - ldr r1, _0801E1D4 @ =gUnknown_2023E82 + ldr r1, _0801E1D4 @ =gBattleCommunication movs r0, 0 _0801E1B4: strb r0, [r1, 0x6] @@ -1285,7 +1285,7 @@ _0801E1C2: pop {r0} bx r0 .align 2, 0 -_0801E1D4: .4byte gUnknown_2023E82 +_0801E1D4: .4byte gBattleCommunication thumb_func_end sub_801DDC4 thumb_func_start atk02_attackstring @@ -1295,7 +1295,7 @@ atk02_attackstring: @ 801E1D8 ldr r5, [r0] cmp r5, 0 bne _0801E210 - ldr r4, _0801E21C @ =gUnknown_2023DD0 + ldr r4, _0801E21C @ =gHitMarker ldr r0, [r4] movs r1, 0xC0 lsls r1, 3 @@ -1312,11 +1312,11 @@ atk02_attackstring: @ 801E1D8 orrs r0, r1 str r0, [r4] _0801E204: - ldr r0, _0801E224 @ =gUnknown_2023D74 + ldr r0, _0801E224 @ =gBattlescriptCurrInstr ldr r1, [r0] adds r1, 0x1 str r1, [r0] - ldr r0, _0801E228 @ =gUnknown_2023E82 + ldr r0, _0801E228 @ =gBattleCommunication strb r5, [r0, 0x7] _0801E210: pop {r4,r5} @@ -1324,10 +1324,10 @@ _0801E210: bx r0 .align 2, 0 _0801E218: .4byte gBattleControllerExecFlags -_0801E21C: .4byte gUnknown_2023DD0 +_0801E21C: .4byte gHitMarker _0801E220: .4byte gBattlerAttacker -_0801E224: .4byte gUnknown_2023D74 -_0801E228: .4byte gUnknown_2023E82 +_0801E224: .4byte gBattlescriptCurrInstr +_0801E228: .4byte gBattleCommunication thumb_func_end atk02_attackstring thumb_func_start atk03_ppreduce @@ -1345,7 +1345,7 @@ atk03_ppreduce: @ 801E22C beq _0801E244 b _0801E3DE _0801E244: - ldr r1, _0801E280 @ =gUnknown_2023ECC + ldr r1, _0801E280 @ =gSpecialStatuses ldr r2, _0801E284 @ =gBattlerAttacker ldrb r3, [r2] lsls r0, r3, 2 @@ -1375,7 +1375,7 @@ _0801E244: b _0801E2C6 .align 2, 0 _0801E27C: .4byte gBattleControllerExecFlags -_0801E280: .4byte gUnknown_2023ECC +_0801E280: .4byte gSpecialStatuses _0801E284: .4byte gBattlerAttacker _0801E288: .4byte gBattleMoves _0801E28C: .4byte gCurrentMove @@ -1425,7 +1425,7 @@ _0801E2C6: bne _0801E2E6 adds r6, 0x1 _0801E2E6: - ldr r0, _0801E350 @ =gUnknown_2023DD0 + ldr r0, _0801E350 @ =gHitMarker ldr r4, [r0] movs r0, 0xA0 lsls r0, 4 @@ -1452,7 +1452,7 @@ _0801E2E6: adds r7, r3, 0 cmp r0, 0 beq _0801E3CC - ldr r0, _0801E35C @ =gUnknown_2023E8C + ldr r0, _0801E35C @ =gProtectStructs lsls r1, r5, 4 adds r1, r0 ldrb r0, [r1, 0x2] @@ -1477,10 +1477,10 @@ _0801E2E6: .align 2, 0 _0801E348: .4byte gBattlerTarget _0801E34C: .4byte gBattleMons -_0801E350: .4byte gUnknown_2023DD0 +_0801E350: .4byte gHitMarker _0801E354: .4byte gUnknown_2023D48 _0801E358: .4byte gBattlerAttacker -_0801E35C: .4byte gUnknown_2023E8C +_0801E35C: .4byte gProtectStructs _0801E360: strb r4, [r2] _0801E362: @@ -1534,14 +1534,14 @@ _0801E362: bl BtlController_EmitSetMonData mov r7, r9 ldrb r0, [r7] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0801E3CC: - ldr r2, _0801E3FC @ =gUnknown_2023DD0 + ldr r2, _0801E3FC @ =gHitMarker ldr r0, [r2] ldr r1, _0801E400 @ =0xfffff7ff ands r0, r1 str r0, [r2] - ldr r1, _0801E404 @ =gUnknown_2023D74 + ldr r1, _0801E404 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -1558,9 +1558,9 @@ _0801E3DE: _0801E3F0: .4byte gDisableStructs _0801E3F4: .4byte gBitTable _0801E3F8: .4byte gActiveBattler -_0801E3FC: .4byte gUnknown_2023DD0 +_0801E3FC: .4byte gHitMarker _0801E400: .4byte 0xfffff7ff -_0801E404: .4byte gUnknown_2023D74 +_0801E404: .4byte gBattlescriptCurrInstr thumb_func_end atk03_ppreduce thumb_func_start sub_801E408 @@ -1755,7 +1755,7 @@ _0801E580: movs r0, 0x1 _0801E584: strb r0, [r1] - ldr r1, _0801E598 @ =gUnknown_2023D74 + ldr r1, _0801E598 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -1764,14 +1764,14 @@ _0801E584: bx r0 .align 2, 0 _0801E594: .4byte gCritMultiplier -_0801E598: .4byte gUnknown_2023D74 +_0801E598: .4byte gBattlescriptCurrInstr thumb_func_end sub_801E408 thumb_func_start atk05_damagecalc atk05_damagecalc: @ 801E59C push {r4-r7,lr} sub sp, 0x10 - ldr r4, _0801E654 @ =gSideAffecting + ldr r4, _0801E654 @ =gSideStatuses ldr r5, _0801E658 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerPosition @@ -1834,7 +1834,7 @@ atk05_damagecalc: @ 801E59C lsls r0, r3, 1 str r0, [r4] _0801E620: - ldr r1, _0801E684 @ =gUnknown_2023E8C + ldr r1, _0801E684 @ =gProtectStructs ldr r0, _0801E65C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -1851,7 +1851,7 @@ _0801E620: bl __divsi3 str r0, [r4] _0801E642: - ldr r1, _0801E688 @ =gUnknown_2023D74 + ldr r1, _0801E688 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -1860,7 +1860,7 @@ _0801E642: pop {r0} bx r0 .align 2, 0 -_0801E654: .4byte gSideAffecting +_0801E654: .4byte gSideStatuses _0801E658: .4byte gBattlerTarget _0801E65C: .4byte gBattlerAttacker _0801E660: .4byte gBattleMons @@ -1872,8 +1872,8 @@ _0801E674: .4byte gCritMultiplier _0801E678: .4byte gBattleScripting _0801E67C: .4byte gStatuses3 _0801E680: .4byte gBattleMoves -_0801E684: .4byte gUnknown_2023E8C -_0801E688: .4byte gUnknown_2023D74 +_0801E684: .4byte gProtectStructs +_0801E688: .4byte gBattlescriptCurrInstr thumb_func_end atk05_damagecalc thumb_func_start AI_CalcDmg @@ -1887,7 +1887,7 @@ AI_CalcDmg: @ 801E68C lsrs r7, r0, 24 lsls r5, 24 lsrs r5, 24 - ldr r4, _0801E744 @ =gSideAffecting + ldr r4, _0801E744 @ =gSideStatuses adds r0, r5, 0 bl GetBattlerPosition movs r1, 0x1 @@ -1948,7 +1948,7 @@ AI_CalcDmg: @ 801E68C lsls r0, r3, 1 str r0, [r4] _0801E71A: - ldr r0, _0801E76C @ =gUnknown_2023E8C + ldr r0, _0801E76C @ =gProtectStructs lsls r1, r7, 4 adds r1, r0 ldrb r0, [r1] @@ -1970,7 +1970,7 @@ _0801E738: pop {r0} bx r0 .align 2, 0 -_0801E744: .4byte gSideAffecting +_0801E744: .4byte gSideStatuses _0801E748: .4byte gBattleMons _0801E74C: .4byte gCurrentMove _0801E750: .4byte gDynamicBasePower @@ -1980,7 +1980,7 @@ _0801E75C: .4byte gCritMultiplier _0801E760: .4byte gBattleScripting _0801E764: .4byte gStatuses3 _0801E768: .4byte gBattleMoves -_0801E76C: .4byte gUnknown_2023E8C +_0801E76C: .4byte gProtectStructs thumb_func_end AI_CalcDmg thumb_func_start ModulateDmgByType @@ -2193,7 +2193,7 @@ _0801E8C0: lsls r0, 1 adds r0, r1 strh r2, [r0] - ldr r0, _0801E934 @ =gUnknown_2023E82 + ldr r0, _0801E934 @ =gBattleCommunication mov r1, r8 strb r1, [r0, 0x6] ldrb r0, [r4] @@ -2210,7 +2210,7 @@ _0801E924: .4byte gLastUsedAbility _0801E928: .4byte gMoveResultFlags _0801E92C: .4byte gUnknown_2023DA0 _0801E930: .4byte gUnknown_2023DA8 -_0801E934: .4byte gUnknown_2023E82 +_0801E934: .4byte gBattleCommunication _0801E938: ldr r1, _0801E944 @ =gUnknown_824F050 adds r0, r3, r1 @@ -2350,7 +2350,7 @@ _0801EA10: lsls r0, 1 adds r0, r1 strh r2, [r0] - ldr r1, _0801EAAC @ =gUnknown_2023E82 + ldr r1, _0801EAAC @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r5] @@ -2363,7 +2363,7 @@ _0801EA52: ands r0, r1 cmp r0, 0 beq _0801EA70 - ldr r2, _0801EAB0 @ =gUnknown_2023E8C + ldr r2, _0801EAB0 @ =gProtectStructs ldr r0, _0801EA90 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 4 @@ -2373,7 +2373,7 @@ _0801EA52: orrs r0, r2 strb r0, [r1, 0x1] _0801EA70: - ldr r1, _0801EAB4 @ =gUnknown_2023D74 + ldr r1, _0801EAB4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -2394,9 +2394,9 @@ _0801EA9C: .4byte gBattleMoves _0801EAA0: .4byte gLastUsedAbility _0801EAA4: .4byte gUnknown_2023DA0 _0801EAA8: .4byte gUnknown_2023DA8 -_0801EAAC: .4byte gUnknown_2023E82 -_0801EAB0: .4byte gUnknown_2023E8C -_0801EAB4: .4byte gUnknown_2023D74 +_0801EAAC: .4byte gBattleCommunication +_0801EAB0: .4byte gProtectStructs +_0801EAB4: .4byte gBattlescriptCurrInstr thumb_func_end atk06_typecalc thumb_func_start CheckWonderGuardAndLevitate @@ -2460,7 +2460,7 @@ _0801EB08: bne _0801EB4C ldr r0, _0801EB44 @ =gLastUsedAbility strb r1, [r0] - ldr r0, _0801EB48 @ =gUnknown_2023E82 + ldr r0, _0801EB48 @ =gBattleCommunication mov r1, r12 strb r1, [r0, 0x6] ldrb r0, [r3] @@ -2471,7 +2471,7 @@ _0801EB08: _0801EB3C: .4byte gBattleMons _0801EB40: .4byte gBattlerTarget _0801EB44: .4byte gLastUsedAbility -_0801EB48: .4byte gUnknown_2023E82 +_0801EB48: .4byte gBattleCommunication _0801EB4C: ldr r1, _0801EB58 @ =gUnknown_824F050 adds r0, r5, r1 @@ -2510,7 +2510,7 @@ _0801EB66: movs r1, 0x8 orrs r0, r1 strb r0, [r2] - ldr r1, _0801ED28 @ =gUnknown_2023E8C + ldr r1, _0801ED28 @ =gProtectStructs ldr r0, _0801ED2C @ =gBattlerAttacker ldrb r2, [r0] lsls r2, 4 @@ -2546,7 +2546,7 @@ _0801EBA6: movs r1, 0x8 orrs r0, r1 strb r0, [r2] - ldr r1, _0801ED28 @ =gUnknown_2023E8C + ldr r1, _0801ED28 @ =gProtectStructs ldr r0, _0801ED2C @ =gBattlerAttacker ldrb r2, [r0] lsls r2, 4 @@ -2704,7 +2704,7 @@ _0801ECC2: beq _0801ED18 ldr r0, _0801ED34 @ =gLastUsedAbility strb r4, [r0] - ldr r1, _0801ED38 @ =gUnknown_2023E82 + ldr r1, _0801ED38 @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] mov r1, r8 @@ -2720,11 +2720,11 @@ _0801ED18: bx r0 .align 2, 0 _0801ED24: .4byte gMoveResultFlags -_0801ED28: .4byte gUnknown_2023E8C +_0801ED28: .4byte gProtectStructs _0801ED2C: .4byte gBattlerAttacker _0801ED30: .4byte gBattleMoves _0801ED34: .4byte gLastUsedAbility -_0801ED38: .4byte gUnknown_2023E82 +_0801ED38: .4byte gBattleCommunication thumb_func_end CheckWonderGuardAndLevitate thumb_func_start ModulateDmgByType2 @@ -3322,7 +3322,7 @@ _0801F186: ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 - ldr r2, _0801F250 @ =gUnknown_2023ECC + ldr r2, _0801F250 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -3358,14 +3358,14 @@ _0801F1C4: ldrb r0, [r0] cmp r0, 0x65 beq _0801F216 - ldr r0, _0801F260 @ =gUnknown_2023E8C + ldr r0, _0801F260 @ =gProtectStructs lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _0801F216 - ldr r0, _0801F250 @ =gUnknown_2023ECC + ldr r0, _0801F250 @ =gSpecialStatuses lsls r1, r4, 2 adds r1, r4 lsls r1, 2 @@ -3386,7 +3386,7 @@ _0801F216: bgt _0801F294 subs r0, r1, 0x1 str r0, [r2] - ldr r1, _0801F260 @ =gUnknown_2023E8C + ldr r1, _0801F260 @ =gProtectStructs ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 @@ -3403,15 +3403,15 @@ _0801F216: .align 2, 0 _0801F248: .4byte gPotentialItemEffectBattler _0801F24C: .4byte gBattlerTarget -_0801F250: .4byte gUnknown_2023ECC +_0801F250: .4byte gSpecialStatuses _0801F254: .4byte gBattleMons _0801F258: .4byte gBattleMoves _0801F25C: .4byte gCurrentMove -_0801F260: .4byte gUnknown_2023E8C +_0801F260: .4byte gProtectStructs _0801F264: .4byte gBattleMoveDamage _0801F268: .4byte gMoveResultFlags _0801F26C: - ldr r0, _0801F2A4 @ =gUnknown_2023ECC + ldr r0, _0801F2A4 @ =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 @@ -3432,7 +3432,7 @@ _0801F26C: ldrh r0, [r0, 0x2E] strh r0, [r1] _0801F294: - ldr r1, _0801F2B0 @ =gUnknown_2023D74 + ldr r1, _0801F2B0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -3440,10 +3440,10 @@ _0801F294: pop {r0} bx r0 .align 2, 0 -_0801F2A4: .4byte gUnknown_2023ECC +_0801F2A4: .4byte gSpecialStatuses _0801F2A8: .4byte gMoveResultFlags _0801F2AC: .4byte gLastUsedItem -_0801F2B0: .4byte gUnknown_2023D74 +_0801F2B0: .4byte gBattlescriptCurrInstr thumb_func_end atk07_adjustnormaldamage thumb_func_start atk08_adjustnormaldamage2 @@ -3526,7 +3526,7 @@ _0801F336: ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 - ldr r2, _0801F3E4 @ =gUnknown_2023ECC + ldr r2, _0801F3E4 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -3552,14 +3552,14 @@ _0801F374: ands r0, r1 cmp r0, 0 bne _0801F420 - ldr r5, _0801F3EC @ =gUnknown_2023E8C + ldr r5, _0801F3EC @ =gProtectStructs lsls r0, r2, 4 adds r0, r5 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 blt _0801F3B2 - ldr r0, _0801F3E4 @ =gUnknown_2023ECC + ldr r0, _0801F3E4 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -3593,13 +3593,13 @@ _0801F3B2: .align 2, 0 _0801F3DC: .4byte gPotentialItemEffectBattler _0801F3E0: .4byte gBattlerTarget -_0801F3E4: .4byte gUnknown_2023ECC +_0801F3E4: .4byte gSpecialStatuses _0801F3E8: .4byte gBattleMons -_0801F3EC: .4byte gUnknown_2023E8C +_0801F3EC: .4byte gProtectStructs _0801F3F0: .4byte gBattleMoveDamage _0801F3F4: .4byte gMoveResultFlags _0801F3F8: - ldr r0, _0801F430 @ =gUnknown_2023ECC + ldr r0, _0801F430 @ =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 @@ -3620,7 +3620,7 @@ _0801F3F8: ldrh r0, [r0, 0x2E] strh r0, [r1] _0801F420: - ldr r1, _0801F43C @ =gUnknown_2023D74 + ldr r1, _0801F43C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -3628,10 +3628,10 @@ _0801F420: pop {r0} bx r0 .align 2, 0 -_0801F430: .4byte gUnknown_2023ECC +_0801F430: .4byte gSpecialStatuses _0801F434: .4byte gMoveResultFlags _0801F438: .4byte gLastUsedItem -_0801F43C: .4byte gUnknown_2023D74 +_0801F43C: .4byte gBattlescriptCurrInstr thumb_func_end atk08_adjustnormaldamage2 thumb_func_start atk09_attackanimation @@ -3646,7 +3646,7 @@ atk09_attackanimation: @ 801F440 beq _0801F452 b _0801F572 _0801F452: - ldr r0, _0801F48C @ =gUnknown_2023DD0 + ldr r0, _0801F48C @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -3658,7 +3658,7 @@ _0801F452: beq _0801F4A0 cmp r0, 0xA4 beq _0801F4A0 - ldr r4, _0801F494 @ =gUnknown_2023D74 + ldr r4, _0801F494 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -3674,9 +3674,9 @@ _0801F452: b _0801F572 .align 2, 0 _0801F488: .4byte gBattleControllerExecFlags -_0801F48C: .4byte gUnknown_2023DD0 +_0801F48C: .4byte gHitMarker _0801F490: .4byte gCurrentMove -_0801F494: .4byte gUnknown_2023D74 +_0801F494: .4byte gBattlescriptCurrInstr _0801F498: .4byte gUnknown_81D89F1 _0801F49C: .4byte gBattleScripting _0801F4A0: @@ -3751,9 +3751,9 @@ _0801F4CE: strb r0, [r6, 0x19] mov r1, r8 ldrb r0, [r1] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0801F530: - ldr r1, _0801F560 @ =gUnknown_2023D74 + ldr r1, _0801F560 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -3768,9 +3768,9 @@ _0801F550: .4byte gBattleMovePower _0801F554: .4byte gBattleMoveDamage _0801F558: .4byte gBattleMons _0801F55C: .4byte gDisableStructs -_0801F560: .4byte gUnknown_2023D74 +_0801F560: .4byte gBattlescriptCurrInstr _0801F564: - ldr r4, _0801F580 @ =gUnknown_2023D74 + ldr r4, _0801F580 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -3784,7 +3784,7 @@ _0801F572: pop {r0} bx r0 .align 2, 0 -_0801F580: .4byte gUnknown_2023D74 +_0801F580: .4byte gBattlescriptCurrInstr _0801F584: .4byte gUnknown_81D89F1 thumb_func_end atk09_attackanimation @@ -3795,7 +3795,7 @@ sub_801F588: @ 801F588 ldr r0, [r0] cmp r0, 0 bne _0801F59A - ldr r1, _0801F5A4 @ =gUnknown_2023D74 + ldr r1, _0801F5A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -3804,7 +3804,7 @@ _0801F59A: bx r0 .align 2, 0 _0801F5A0: .4byte gBattleControllerExecFlags -_0801F5A4: .4byte gUnknown_2023D74 +_0801F5A4: .4byte gBattlescriptCurrInstr thumb_func_end sub_801F588 thumb_func_start atk0B_healthbarupdate @@ -3820,10 +3820,10 @@ atk0B_healthbarupdate: @ 801F5A8 ands r0, r1 cmp r0, 0 bne _0801F662 - ldr r0, _0801F614 @ =gUnknown_2023D74 + ldr r0, _0801F614 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r2, _0801F618 @ =gActiveBattler strb r0, [r2] ldr r1, _0801F61C @ =gBattleMons @@ -3846,7 +3846,7 @@ atk0B_healthbarupdate: @ 801F5A8 ldrb r0, [r1, 0xA] cmp r0, 0 beq _0801F628 - ldr r0, _0801F624 @ =gUnknown_2023DD0 + ldr r0, _0801F624 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 1 @@ -3860,11 +3860,11 @@ atk0B_healthbarupdate: @ 801F5A8 .align 2, 0 _0801F60C: .4byte gBattleControllerExecFlags _0801F610: .4byte gMoveResultFlags -_0801F614: .4byte gUnknown_2023D74 +_0801F614: .4byte gBattlescriptCurrInstr _0801F618: .4byte gActiveBattler _0801F61C: .4byte gBattleMons _0801F620: .4byte gDisableStructs -_0801F624: .4byte gUnknown_2023DD0 +_0801F624: .4byte gHitMarker _0801F628: ldr r0, _0801F670 @ =gBattleMoveDamage ldr r0, [r0] @@ -3878,7 +3878,7 @@ _0801F636: bl BtlController_EmitHealthBarUpdate ldr r4, _0801F678 @ =gActiveBattler ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -3894,7 +3894,7 @@ _0801F636: orrs r1, r2 strb r1, [r0, 0x5] _0801F662: - ldr r1, _0801F680 @ =gUnknown_2023D74 + ldr r1, _0801F680 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -3907,7 +3907,7 @@ _0801F670: .4byte gBattleMoveDamage _0801F674: .4byte 0x00002710 _0801F678: .4byte gActiveBattler _0801F67C: .4byte gBattleResults -_0801F680: .4byte gUnknown_2023D74 +_0801F680: .4byte gBattlescriptCurrInstr thumb_func_end atk0B_healthbarupdate thumb_func_start atk0C_datahpupdate @@ -3953,10 +3953,10 @@ _0801F6C4: beq _0801F6D2 b _0801FA34 _0801F6D2: - ldr r0, _0801F75C @ =gUnknown_2023D74 + ldr r0, _0801F75C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r7, _0801F760 @ =gActiveBattler strb r0, [r7] ldr r1, _0801F764 @ =gBattleMons @@ -3980,7 +3980,7 @@ _0801F6D2: mov r12, r0 cmp r1, 0 beq _0801F7E8 - ldr r0, _0801F76C @ =gUnknown_2023DD0 + ldr r0, _0801F76C @ =gHitMarker ldr r3, [r0] movs r0, 0x80 lsls r0, 1 @@ -3992,7 +3992,7 @@ _0801F6D2: ldr r4, [r6] cmp r5, r4 blt _0801F77C - ldr r0, _0801F774 @ =gUnknown_2023ECC + ldr r0, _0801F774 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -4020,16 +4020,16 @@ _0801F736: _0801F750: .4byte gBattleMoves _0801F754: .4byte gCurrentMove _0801F758: .4byte gMoveResultFlags -_0801F75C: .4byte gUnknown_2023D74 +_0801F75C: .4byte gBattlescriptCurrInstr _0801F760: .4byte gActiveBattler _0801F764: .4byte gBattleMons _0801F768: .4byte gDisableStructs -_0801F76C: .4byte gUnknown_2023DD0 +_0801F76C: .4byte gHitMarker _0801F770: .4byte gBattleMoveDamage -_0801F774: .4byte gUnknown_2023ECC +_0801F774: .4byte gSpecialStatuses _0801F778: .4byte gUnknown_2023D54 _0801F77C: - ldr r0, _0801F7D4 @ =gUnknown_2023ECC + ldr r0, _0801F7D4 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -4066,7 +4066,7 @@ _0801F7AC: beq _0801F7C0 b _0801FA5A _0801F7C0: - ldr r4, _0801F7E0 @ =gUnknown_2023D74 + ldr r4, _0801F7E0 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x2 str r0, [r4] @@ -4075,13 +4075,13 @@ _0801F7C0: str r0, [r4] b _0801FA62 .align 2, 0 -_0801F7D4: .4byte gUnknown_2023ECC +_0801F7D4: .4byte gSpecialStatuses _0801F7D8: .4byte gUnknown_2023D54 _0801F7DC: .4byte gActiveBattler -_0801F7E0: .4byte gUnknown_2023D74 +_0801F7E0: .4byte gBattlescriptCurrInstr _0801F7E4: .4byte gUnknown_81D9526 _0801F7E8: - ldr r0, _0801F828 @ =gUnknown_2023DD0 + ldr r0, _0801F828 @ =gHitMarker ldr r2, [r0] ldr r1, _0801F82C @ =0xfffffeff ands r2, r1 @@ -4115,7 +4115,7 @@ _0801F824: strh r3, [r1, 0x28] b _0801F9FA .align 2, 0 -_0801F828: .4byte gUnknown_2023DD0 +_0801F828: .4byte gHitMarker _0801F82C: .4byte 0xfffffeff _0801F830: .4byte gBattleMoveDamage _0801F834: .4byte gBattleMons @@ -4135,7 +4135,7 @@ _0801F83C: .align 2, 0 _0801F854: .4byte gActiveBattler _0801F858: - ldr r0, _0801F880 @ =gUnknown_2023D58 + ldr r0, _0801F880 @ =gTakenDmg ldr r2, _0801F884 @ =gActiveBattler ldrb r1, [r2] lsls r1, 2 @@ -4143,25 +4143,25 @@ _0801F858: ldr r0, [r1] adds r0, r5 str r0, [r1] - ldr r0, _0801F888 @ =gUnknown_2023D74 + ldr r0, _0801F888 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] adds r5, r2, 0 cmp r0, 0 bne _0801F894 - ldr r1, _0801F88C @ =gUnknown_2023DD8 + ldr r1, _0801F88C @ =gTakenDmgByBattler ldrb r0, [r5] adds r0, r1 ldr r1, _0801F890 @ =gBattlerAttacker b _0801F89C .align 2, 0 -_0801F880: .4byte gUnknown_2023D58 +_0801F880: .4byte gTakenDmg _0801F884: .4byte gActiveBattler -_0801F888: .4byte gUnknown_2023D74 -_0801F88C: .4byte gUnknown_2023DD8 +_0801F888: .4byte gBattlescriptCurrInstr +_0801F88C: .4byte gTakenDmgByBattler _0801F890: .4byte gBattlerAttacker _0801F894: - ldr r1, _0801F8C0 @ =gUnknown_2023DD8 + ldr r1, _0801F8C0 @ =gTakenDmgByBattler ldrb r0, [r5] adds r0, r1 ldr r1, _0801F8C4 @ =gBattlerTarget @@ -4185,7 +4185,7 @@ _0801F8A0: adds r7, r0, 0 b _0801F8E0 .align 2, 0 -_0801F8C0: .4byte gUnknown_2023DD8 +_0801F8C0: .4byte gTakenDmgByBattler _0801F8C4: .4byte gBattlerTarget _0801F8C8: .4byte gBattleMons _0801F8CC: .4byte gUnknown_2023D54 @@ -4199,7 +4199,7 @@ _0801F8D0: strh r1, [r0, 0x28] adds r7, r2, 0 _0801F8E0: - ldr r2, _0801F958 @ =gUnknown_2023ECC + ldr r2, _0801F958 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -4233,7 +4233,7 @@ _0801F908: ldrh r0, [r0] cmp r0, 0xDC beq _0801F98C - ldr r3, _0801F960 @ =gUnknown_2023E8C + ldr r3, _0801F960 @ =gProtectStructs ldrb r0, [r5] lsls r0, 4 adds r1, r3, 0x4 @@ -4248,7 +4248,7 @@ _0801F908: adds r1, 0x8 adds r0, r1 str r2, [r0] - ldr r0, _0801F964 @ =gUnknown_2023D74 + ldr r0, _0801F964 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 @@ -4260,10 +4260,10 @@ _0801F908: b _0801F974 .align 2, 0 _0801F954: .4byte gUnknown_2023D54 -_0801F958: .4byte gUnknown_2023ECC +_0801F958: .4byte gSpecialStatuses _0801F95C: .4byte gCurrentMove -_0801F960: .4byte gUnknown_2023E8C -_0801F964: .4byte gUnknown_2023D74 +_0801F960: .4byte gProtectStructs +_0801F964: .4byte gBattlescriptCurrInstr _0801F968: .4byte gBattlerAttacker _0801F96C: ldrb r0, [r5] @@ -4294,7 +4294,7 @@ _0801F990: ands r0, r1 cmp r0, 0 bne _0801F9FA - ldr r3, _0801F9D4 @ =gUnknown_2023E8C + ldr r3, _0801F9D4 @ =gProtectStructs ldrb r0, [r5] lsls r0, 4 adds r1, r3, 0 @@ -4310,7 +4310,7 @@ _0801F990: adds r1, 0xC adds r0, r1 str r2, [r0] - ldr r0, _0801F9D8 @ =gUnknown_2023D74 + ldr r0, _0801F9D8 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 @@ -4321,8 +4321,8 @@ _0801F990: ldr r2, _0801F9DC @ =gBattlerAttacker b _0801F9E8 .align 2, 0 -_0801F9D4: .4byte gUnknown_2023E8C -_0801F9D8: .4byte gUnknown_2023D74 +_0801F9D4: .4byte gProtectStructs +_0801F9D8: .4byte gBattlescriptCurrInstr _0801F9DC: .4byte gBattlerAttacker _0801F9E0: ldrb r0, [r5] @@ -4358,20 +4358,20 @@ _0801F9FA: movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0801FA5A .align 2, 0 _0801FA28: .4byte gBattlerTarget _0801FA2C: .4byte 0xffefffff _0801FA30: .4byte gUnknown_2023C0C _0801FA34: - ldr r0, _0801FA6C @ =gUnknown_2023D74 + ldr r0, _0801FA6C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _0801FA70 @ =gActiveBattler strb r0, [r1] - ldr r2, _0801FA74 @ =gUnknown_2023ECC + ldr r2, _0801FA74 @ =gSpecialStatuses ldrb r1, [r1] lsls r0, r1, 2 adds r0, r1 @@ -4384,7 +4384,7 @@ _0801FA34: ldr r0, _0801FA78 @ =0x0000ffff str r0, [r1] _0801FA5A: - ldr r1, _0801FA6C @ =gUnknown_2023D74 + ldr r1, _0801FA6C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -4394,9 +4394,9 @@ _0801FA62: pop {r0} bx r0 .align 2, 0 -_0801FA6C: .4byte gUnknown_2023D74 +_0801FA6C: .4byte gBattlescriptCurrInstr _0801FA70: .4byte gActiveBattler -_0801FA74: .4byte gUnknown_2023ECC +_0801FA74: .4byte gSpecialStatuses _0801FA78: .4byte 0x0000ffff thumb_func_end atk0C_datahpupdate @@ -4421,11 +4421,11 @@ atk0D_critmessage: @ 801FA7C ldrb r1, [r0] movs r0, 0xD9 bl PrepareStringBattle - ldr r1, _0801FAC8 @ =gUnknown_2023E82 + ldr r1, _0801FAC8 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] _0801FAAA: - ldr r1, _0801FACC @ =gUnknown_2023D74 + ldr r1, _0801FACC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -4437,8 +4437,8 @@ _0801FAB8: .4byte gBattleControllerExecFlags _0801FABC: .4byte gCritMultiplier _0801FAC0: .4byte gMoveResultFlags _0801FAC4: .4byte gBattlerAttacker -_0801FAC8: .4byte gUnknown_2023E82 -_0801FACC: .4byte gUnknown_2023D74 +_0801FAC8: .4byte gBattleCommunication +_0801FACC: .4byte gBattlescriptCurrInstr thumb_func_end atk0D_critmessage thumb_func_start atk0E_effectivenesssound @@ -4498,7 +4498,7 @@ _0801FB32: _0801FB36: bl BtlController_EmitPlaySE ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0801FB88 _0801FB42: ldrb r1, [r1] @@ -4520,7 +4520,7 @@ _0801FB5E: bl BtlController_EmitPlaySE ldr r0, _0801FB6C @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0801FB88 .align 2, 0 _0801FB6C: .4byte gActiveBattler @@ -4534,9 +4534,9 @@ _0801FB70: bl BtlController_EmitPlaySE ldr r0, _0801FB98 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0801FB88: - ldr r1, _0801FB9C @ =gUnknown_2023D74 + ldr r1, _0801FB9C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -4546,7 +4546,7 @@ _0801FB90: bx r0 .align 2, 0 _0801FB98: .4byte gActiveBattler -_0801FB9C: .4byte gUnknown_2023D74 +_0801FB9C: .4byte gBattlescriptCurrInstr thumb_func_end atk0E_effectivenesssound thumb_func_start atk0F_resultmessage @@ -4565,7 +4565,7 @@ _0801FBAE: adds r0, r4, 0 ands r0, r2 adds r6, r1, 0 - ldr r7, _0801FBE4 @ =gUnknown_2023E82 + ldr r7, _0801FBE4 @ =gBattleCommunication cmp r0, 0 beq _0801FBEC movs r0, 0x8 @@ -4586,7 +4586,7 @@ _0801FBCE: .align 2, 0 _0801FBDC: .4byte gBattleControllerExecFlags _0801FBE0: .4byte gMoveResultFlags -_0801FBE4: .4byte gUnknown_2023E82 +_0801FBE4: .4byte gBattleCommunication _0801FBE8: .4byte gUnknown_83FE514 _0801FBEC: movs r0, 0x1 @@ -4652,7 +4652,7 @@ _0801FC38: ands r0, r5 strb r0, [r6] bl BattleScriptPushCursor - ldr r1, _0801FC70 @ =gUnknown_2023D74 + ldr r1, _0801FC70 @ =gBattlescriptCurrInstr ldr r0, _0801FC74 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 @@ -4660,7 +4660,7 @@ _0801FC60: .4byte gLastUsedItem _0801FC64: .4byte gBattleMons _0801FC68: .4byte gBattlerTarget _0801FC6C: .4byte gPotentialItemEffectBattler -_0801FC70: .4byte gUnknown_2023D74 +_0801FC70: .4byte gBattlescriptCurrInstr _0801FC74: .4byte gUnknown_81D9641 _0801FC78: adds r2, r6, 0 @@ -4685,11 +4685,11 @@ _0801FC88: ands r0, r1 strb r0, [r2] bl BattleScriptPushCursor - ldr r1, _0801FCA8 @ =gUnknown_2023D74 + ldr r1, _0801FCA8 @ =gBattlescriptCurrInstr ldr r0, _0801FCAC @ =gUnknown_81D8FE4 b _0801FD3E .align 2, 0 -_0801FCA8: .4byte gUnknown_2023D74 +_0801FCA8: .4byte gBattlescriptCurrInstr _0801FCAC: .4byte gUnknown_81D8FE4 _0801FCB0: movs r0, 0x40 @@ -4700,11 +4700,11 @@ _0801FCB0: ands r0, r5 strb r0, [r2] bl BattleScriptPushCursor - ldr r1, _0801FCC8 @ =gUnknown_2023D74 + ldr r1, _0801FCC8 @ =gBattlescriptCurrInstr ldr r0, _0801FCCC @ =gUnknown_81D8FDD b _0801FD3E .align 2, 0 -_0801FCC8: .4byte gUnknown_2023D74 +_0801FCC8: .4byte gBattlescriptCurrInstr _0801FCCC: .4byte gUnknown_81D8FDD _0801FCD0: movs r0, 0x80 @@ -4727,7 +4727,7 @@ _0801FCD0: ands r0, r5 strb r0, [r6] bl BattleScriptPushCursor - ldr r1, _0801FD10 @ =gUnknown_2023D74 + ldr r1, _0801FD10 @ =gBattlescriptCurrInstr ldr r0, _0801FD14 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 @@ -4735,7 +4735,7 @@ _0801FD00: .4byte gLastUsedItem _0801FD04: .4byte gBattleMons _0801FD08: .4byte gBattlerTarget _0801FD0C: .4byte gPotentialItemEffectBattler -_0801FD10: .4byte gUnknown_2023D74 +_0801FD10: .4byte gBattlescriptCurrInstr _0801FD14: .4byte gUnknown_81D9641 _0801FD18: movs r0, 0x20 @@ -4758,7 +4758,7 @@ _0801FD2E: ldrb r1, [r1] bl PrepareStringBattle _0801FD38: - ldr r1, _0801FD4C @ =gUnknown_2023D74 + ldr r1, _0801FD4C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _0801FD3E: @@ -4769,7 +4769,7 @@ _0801FD40: bx r0 .align 2, 0 _0801FD48: .4byte gBattlerAttacker -_0801FD4C: .4byte gUnknown_2023D74 +_0801FD4C: .4byte gBattlescriptCurrInstr thumb_func_end atk0F_resultmessage thumb_func_start atk10_printstring @@ -4779,7 +4779,7 @@ atk10_printstring: @ 801FD50 ldr r0, [r0] cmp r0, 0 bne _0801FD7A - ldr r4, _0801FD84 @ =gUnknown_2023D74 + ldr r4, _0801FD84 @ =gBattlescriptCurrInstr ldr r1, [r4] ldrb r0, [r1, 0x1] ldrb r1, [r1, 0x2] @@ -4791,7 +4791,7 @@ atk10_printstring: @ 801FD50 ldr r0, [r4] adds r0, 0x3 str r0, [r4] - ldr r1, _0801FD8C @ =gUnknown_2023E82 + ldr r1, _0801FD8C @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] _0801FD7A: @@ -4800,9 +4800,9 @@ _0801FD7A: bx r0 .align 2, 0 _0801FD80: .4byte gBattleControllerExecFlags -_0801FD84: .4byte gUnknown_2023D74 +_0801FD84: .4byte gBattlescriptCurrInstr _0801FD88: .4byte gBattlerAttacker -_0801FD8C: .4byte gUnknown_2023E82 +_0801FD8C: .4byte gBattleCommunication thumb_func_end atk10_printstring thumb_func_start atk11_printselectionstring @@ -4812,7 +4812,7 @@ atk11_printselectionstring: @ 801FD90 ldr r0, _0801FDC8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] - ldr r4, _0801FDCC @ =gUnknown_2023D74 + ldr r4, _0801FDCC @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] @@ -4821,11 +4821,11 @@ atk11_printselectionstring: @ 801FD90 movs r0, 0 bl BtlController_EmitPrintSelectionString ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r4] adds r0, 0x3 str r0, [r4] - ldr r1, _0801FDD0 @ =gUnknown_2023E82 + ldr r1, _0801FDD0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] pop {r4,r5} @@ -4834,8 +4834,8 @@ atk11_printselectionstring: @ 801FD90 .align 2, 0 _0801FDC4: .4byte gActiveBattler _0801FDC8: .4byte gBattlerAttacker -_0801FDCC: .4byte gUnknown_2023D74 -_0801FDD0: .4byte gUnknown_2023E82 +_0801FDCC: .4byte gBattlescriptCurrInstr +_0801FDD0: .4byte gBattleCommunication thumb_func_end atk11_printselectionstring thumb_func_start atk12_waitmessage @@ -4845,21 +4845,21 @@ atk12_waitmessage: @ 801FDD4 ldr r4, [r0] cmp r4, 0 bne _0801FE22 - ldr r6, _0801FDF4 @ =gUnknown_2023E82 + ldr r6, _0801FDF4 @ =gBattleCommunication ldrb r0, [r6, 0x7] cmp r0, 0 bne _0801FDFC - ldr r1, _0801FDF8 @ =gUnknown_2023D74 + ldr r1, _0801FDF8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] b _0801FE22 .align 2, 0 _0801FDF0: .4byte gBattleControllerExecFlags -_0801FDF4: .4byte gUnknown_2023E82 -_0801FDF8: .4byte gUnknown_2023D74 +_0801FDF4: .4byte gBattleCommunication +_0801FDF8: .4byte gBattlescriptCurrInstr _0801FDFC: - ldr r5, _0801FE28 @ =gUnknown_2023D74 + ldr r5, _0801FE28 @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -4883,7 +4883,7 @@ _0801FE22: pop {r0} bx r0 .align 2, 0 -_0801FE28: .4byte gUnknown_2023D74 +_0801FE28: .4byte gBattlescriptCurrInstr _0801FE2C: .4byte gUnknown_2023E7C thumb_func_end atk12_waitmessage @@ -4894,7 +4894,7 @@ atk13_printfromtable: @ 801FE30 ldr r0, [r0] cmp r0, 0 bne _0801FE6E - ldr r4, _0801FE78 @ =gUnknown_2023D74 + ldr r4, _0801FE78 @ =gBattlescriptCurrInstr ldr r2, [r4] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -4906,7 +4906,7 @@ atk13_printfromtable: @ 801FE30 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 - ldr r5, _0801FE7C @ =gUnknown_2023E82 + ldr r5, _0801FE7C @ =gBattleCommunication ldrb r0, [r5, 0x5] lsls r0, 1 adds r1, r0 @@ -4925,8 +4925,8 @@ _0801FE6E: bx r0 .align 2, 0 _0801FE74: .4byte gBattleControllerExecFlags -_0801FE78: .4byte gUnknown_2023D74 -_0801FE7C: .4byte gUnknown_2023E82 +_0801FE78: .4byte gBattlescriptCurrInstr +_0801FE7C: .4byte gBattleCommunication _0801FE80: .4byte gBattlerAttacker thumb_func_end atk13_printfromtable @@ -4937,7 +4937,7 @@ atk14_printselectionstringfromtable: @ 801FE84 ldr r0, [r0] cmp r0, 0 bne _0801FECE - ldr r5, _0801FED8 @ =gUnknown_2023D74 + ldr r5, _0801FED8 @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -4949,7 +4949,7 @@ atk14_printselectionstringfromtable: @ 801FE84 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 - ldr r6, _0801FEDC @ =gUnknown_2023E82 + ldr r6, _0801FEDC @ =gBattleCommunication ldrb r0, [r6, 0x5] lsls r0, 1 adds r1, r0 @@ -4961,7 +4961,7 @@ atk14_printselectionstringfromtable: @ 801FE84 movs r0, 0 bl BtlController_EmitPrintSelectionString ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x5 str r0, [r5] @@ -4973,8 +4973,8 @@ _0801FECE: bx r0 .align 2, 0 _0801FED4: .4byte gBattleControllerExecFlags -_0801FED8: .4byte gUnknown_2023D74 -_0801FEDC: .4byte gUnknown_2023E82 +_0801FED8: .4byte gBattlescriptCurrInstr +_0801FEDC: .4byte gBattleCommunication _0801FEE0: .4byte gActiveBattler _0801FEE4: .4byte gBattlerAttacker thumb_func_end atk14_printselectionstringfromtable @@ -4989,7 +4989,7 @@ BankGetTurnOrder: @ 801FEE8 ldrb r3, [r0] cmp r1, r3 bge _0801FF0E - ldr r4, _0801FF1C @ =gUnknown_2023BDE + ldr r4, _0801FF1C @ =gBattlerByTurnOrder ldrb r0, [r4] cmp r0, r2 beq _0801FF0E @@ -5009,11 +5009,11 @@ _0801FF0E: bx r1 .align 2, 0 _0801FF18: .4byte gBattlersCount -_0801FF1C: .4byte gUnknown_2023BDE +_0801FF1C: .4byte gBattlerByTurnOrder thumb_func_end BankGetTurnOrder - thumb_func_start sub_801FF20 -sub_801FF20: @ 801FF20 + thumb_func_start SetMoveEffect +SetMoveEffect: @ 801FF20 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -5029,7 +5029,7 @@ sub_801FF20: @ 801FF20 movs r7, 0 movs r1, 0x1 str r1, [sp, 0x4] - ldr r1, _0801FF64 @ =gUnknown_2023E82 + ldr r1, _0801FF64 @ =gBattleCommunication ldrb r3, [r1, 0x3] movs r0, 0x40 ands r0, r3 @@ -5048,7 +5048,7 @@ sub_801FF20: @ 801FF20 ldr r0, _0801FF74 @ =gBattlerTarget b _0801FF84 .align 2, 0 -_0801FF64: .4byte gUnknown_2023E82 +_0801FF64: .4byte gBattleCommunication _0801FF68: .4byte gEffectBattler _0801FF6C: .4byte gBattlerAttacker _0801FF70: .4byte gBattleScripting @@ -5094,7 +5094,7 @@ _0801FFB2: mov r9, r2 cmp r0, 0x13 bne _0801FFE6 - ldr r0, _080200AC @ =gUnknown_2023DD0 + ldr r0, _080200AC @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 @@ -5103,7 +5103,7 @@ _0801FFB2: bne _0801FFE6 cmp r4, 0 bne _0801FFE6 - ldr r0, _080200B0 @ =gUnknown_2023E82 + ldr r0, _080200B0 @ =gBattleCommunication ldrb r0, [r0, 0x3] cmp r0, 0x9 bhi _0801FFE6 @@ -5112,7 +5112,7 @@ _0801FFE6: mov r3, r9 ldrb r0, [r3] bl GetBattlerPosition - ldr r2, _080200B4 @ =gSideAffecting + ldr r2, _080200B4 @ =gSideStatuses movs r1, 0x1 ands r1, r0 lsls r1, 1 @@ -5122,7 +5122,7 @@ _0801FFE6: ands r0, r1 cmp r0, 0 beq _08020020 - ldr r0, _080200AC @ =gUnknown_2023DD0 + ldr r0, _080200AC @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 @@ -5131,7 +5131,7 @@ _0801FFE6: bne _08020020 cmp r4, 0 bne _08020020 - ldr r0, _080200B0 @ =gUnknown_2023E82 + ldr r0, _080200B0 @ =gBattleCommunication ldrb r0, [r0, 0x3] cmp r0, 0x7 bhi _08020020 @@ -5148,7 +5148,7 @@ _08020020: mov r8, r3 cmp r0, 0 bne _08020046 - ldr r0, _080200B0 @ =gUnknown_2023E82 + ldr r0, _080200B0 @ =gBattleCommunication ldrb r0, [r0, 0x3] cmp r0, 0xB beq _08020046 @@ -5173,7 +5173,7 @@ _08020046: beq _08020068 bl _080210EC _08020068: - ldr r0, _080200B0 @ =gUnknown_2023E82 + ldr r0, _080200B0 @ =gBattleCommunication ldrb r1, [r0, 0x3] adds r6, r0, 0 cmp r1, 0x6 @@ -5205,9 +5205,9 @@ _0802009C: .4byte gBattleScripting _080200A0: .4byte gBattlerAttacker _080200A4: .4byte gBattleTypeFlags _080200A8: .4byte gBattleMons -_080200AC: .4byte gUnknown_2023DD0 -_080200B0: .4byte gUnknown_2023E82 -_080200B4: .4byte gSideAffecting +_080200AC: .4byte gHitMarker +_080200B0: .4byte gBattleCommunication +_080200B4: .4byte gSideStatuses _080200B8: .4byte gUnknown_825053C _080200BC: cmp r0, 0x40 @@ -5343,14 +5343,14 @@ _080201A6: ldrb r0, [r3] movs r1, 0x11 bl sub_80C71D0 - ldr r4, _080201D8 @ =gUnknown_2023D74 + ldr r4, _080201D8 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _080201DC @ =gUnknown_81D9438 _080201C0: str r0, [r4] - ldr r2, _080201E0 @ =gUnknown_2023DD0 + ldr r2, _080201E0 @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 @@ -5362,9 +5362,9 @@ _080201D2: b _080204A8 .align 2, 0 _080201D4: .4byte gLastUsedAbility -_080201D8: .4byte gUnknown_2023D74 +_080201D8: .4byte gBattlescriptCurrInstr _080201DC: .4byte gUnknown_81D9438 -_080201E0: .4byte gUnknown_2023DD0 +_080201E0: .4byte gHitMarker _080201E4: mov r1, r9 ldrb r0, [r1] @@ -5385,7 +5385,7 @@ _080201E4: cmp r0, 0x8 bne _08020222 _08020208: - ldr r0, _0802026C @ =gUnknown_2023DD0 + ldr r0, _0802026C @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 @@ -5444,7 +5444,7 @@ _0802025E: _0802026A: b _08020560 .align 2, 0 -_0802026C: .4byte gUnknown_2023DD0 +_0802026C: .4byte gHitMarker _08020270: mov r2, r9 ldrb r1, [r2] @@ -5466,7 +5466,7 @@ _0802028A: ldrb r0, [r3] movs r1, 0x29 bl sub_80C71D0 - ldr r4, _080202AC @ =gUnknown_2023D74 + ldr r4, _080202AC @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -5474,7 +5474,7 @@ _0802028A: b _080201C0 .align 2, 0 _080202A8: .4byte gLastUsedAbility -_080202AC: .4byte gUnknown_2023D74 +_080202AC: .4byte gBattlescriptCurrInstr _080202B0: .4byte gUnknown_81D9420 _080202B4: mov r0, r9 @@ -5494,7 +5494,7 @@ _080202B4: cmp r0, 0xA bne _08020304 _080202D4: - ldr r0, _080202F8 @ =gUnknown_2023DD0 + ldr r0, _080202F8 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 @@ -5506,15 +5506,15 @@ _080202D4: cmp r5, 0x80 bne _08020304 _080202EA: - ldr r4, _080202FC @ =gUnknown_2023D74 + ldr r4, _080202FC @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020300 @ =gUnknown_81D9420 b _080204F4 .align 2, 0 -_080202F8: .4byte gUnknown_2023DD0 -_080202FC: .4byte gUnknown_2023D74 +_080202F8: .4byte gHitMarker +_080202FC: .4byte gBattlescriptCurrInstr _08020300: .4byte gUnknown_81D9420 _08020304: mov r3, r9 @@ -5657,7 +5657,7 @@ _08020402: ldrb r0, [r3] movs r1, 0x7 bl sub_80C71D0 - ldr r4, _08020424 @ =gUnknown_2023D74 + ldr r4, _08020424 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -5665,7 +5665,7 @@ _08020402: b _080201C0 .align 2, 0 _08020420: .4byte gLastUsedAbility -_08020424: .4byte gUnknown_2023D74 +_08020424: .4byte gBattlescriptCurrInstr _08020428: .4byte gUnknown_81D942C _0802042C: mov r0, r8 @@ -5700,13 +5700,13 @@ _0802045A: ldrb r0, [r1] movs r1, 0x11 bl sub_80C71D0 - ldr r4, _08020498 @ =gUnknown_2023D74 + ldr r4, _08020498 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _0802049C @ =gUnknown_81D9438 str r0, [r4] - ldr r2, _080204A0 @ =gUnknown_2023DD0 + ldr r2, _080204A0 @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 @@ -5722,9 +5722,9 @@ _08020484: bl _0802110A .align 2, 0 _08020494: .4byte gLastUsedAbility -_08020498: .4byte gUnknown_2023D74 +_08020498: .4byte gBattlescriptCurrInstr _0802049C: .4byte gUnknown_81D9438 -_080204A0: .4byte gUnknown_2023DD0 +_080204A0: .4byte gHitMarker _080204A4: .4byte 0xffffdfff _080204A8: strb r0, [r6, 0x5] @@ -5749,7 +5749,7 @@ _080204AE: cmp r0, 0x8 bne _08020510 _080204D2: - ldr r0, _08020500 @ =gUnknown_2023DD0 + ldr r0, _08020500 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 @@ -5761,22 +5761,22 @@ _080204D2: cmp r5, 0x80 bne _08020510 _080204E8: - ldr r4, _08020504 @ =gUnknown_2023D74 + ldr r4, _08020504 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020508 @ =gUnknown_81D9438 _080204F4: str r0, [r4] - ldr r1, _0802050C @ =gUnknown_2023E82 + ldr r1, _0802050C @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] bl _0802110A .align 2, 0 -_08020500: .4byte gUnknown_2023DD0 -_08020504: .4byte gUnknown_2023D74 +_08020500: .4byte gHitMarker +_08020504: .4byte gBattlescriptCurrInstr _08020508: .4byte gUnknown_81D9438 -_0802050C: .4byte gUnknown_2023E82 +_0802050C: .4byte gBattleCommunication _08020510: mov r3, r9 ldrb r0, [r3] @@ -5834,12 +5834,12 @@ _08020570: beq _08020578 b _08020694 _08020578: - ldr r0, _080205B8 @ =gUnknown_2023D74 + ldr r0, _080205B8 @ =gBattlescriptCurrInstr ldr r0, [r0] adds r0, 0x1 bl BattleScriptPush ldr r1, _080205BC @ =gUnknown_825053C - ldr r0, _080205C0 @ =gUnknown_2023E82 + ldr r0, _080205C0 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -5863,9 +5863,9 @@ _08020578: b _080205E0 .align 2, 0 _080205B4: .4byte gMoveResultFlags -_080205B8: .4byte gUnknown_2023D74 +_080205B8: .4byte gBattlescriptCurrInstr _080205BC: .4byte gUnknown_825053C -_080205C0: .4byte gUnknown_2023E82 +_080205C0: .4byte gBattleCommunication _080205C4: .4byte gBattleMons _080205C8: .4byte gEffectBattler _080205CC: @@ -5880,9 +5880,9 @@ _080205CC: orrs r0, r3 str r0, [r1] _080205E0: - ldr r2, _08020638 @ =gUnknown_2023D74 + ldr r2, _08020638 @ =gBattlescriptCurrInstr ldr r1, _0802063C @ =gUnknown_825062C - ldr r5, _08020640 @ =gUnknown_2023E82 + ldr r5, _08020640 @ =gBattleCommunication ldrb r0, [r5, 0x3] lsls r0, 2 adds r0, r1 @@ -5904,8 +5904,8 @@ _080205E0: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r2, _0802064C @ =gUnknown_2023DD0 + bl MarkBattlerForControllerExec + ldr r2, _0802064C @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 @@ -5921,17 +5921,17 @@ _080205E0: .align 2, 0 _08020630: .4byte gBattleMons _08020634: .4byte gEffectBattler -_08020638: .4byte gUnknown_2023D74 +_08020638: .4byte gBattlescriptCurrInstr _0802063C: .4byte gUnknown_825062C -_08020640: .4byte gUnknown_2023E82 +_08020640: .4byte gBattleCommunication _08020644: .4byte gActiveBattler _08020648: .4byte gUnknown_2023C30 -_0802064C: .4byte gUnknown_2023DD0 +_0802064C: .4byte gHitMarker _08020650: .4byte 0xffffdfff _08020654: strb r0, [r5, 0x5] _08020656: - ldr r0, _08020688 @ =gUnknown_2023E82 + ldr r0, _08020688 @ =gBattleCommunication ldrb r2, [r0, 0x3] adds r6, r0, 0 cmp r2, 0x2 @@ -5949,15 +5949,15 @@ _08020670: adds r0, 0xB4 ldrb r1, [r6, 0x3] strb r1, [r0] - ldr r2, _08020690 @ =gUnknown_2023DD0 + ldr r2, _08020690 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 7 bl _08021008 .align 2, 0 -_08020688: .4byte gUnknown_2023E82 +_08020688: .4byte gBattleCommunication _0802068C: .4byte gBattleStruct -_08020690: .4byte gUnknown_2023DD0 +_08020690: .4byte gHitMarker _08020694: mov r2, r10 cmp r2, 0 @@ -6091,21 +6091,21 @@ _080207E6: ldr r0, [r2] orrs r0, r1 str r0, [r2] - ldr r4, _08020820 @ =gUnknown_2023D74 + ldr r4, _08020820 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020824 @ =gUnknown_825062C - ldr r0, _08020828 @ =gUnknown_2023E82 + ldr r0, _08020828 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _08021108 .align 2, 0 -_08020820: .4byte gUnknown_2023D74 +_08020820: .4byte gBattlescriptCurrInstr _08020824: .4byte gUnknown_825062C -_08020828: .4byte gUnknown_2023E82 +_08020828: .4byte gBattleCommunication _0802082C: mov r0, r9 ldrb r2, [r0] @@ -6129,13 +6129,13 @@ _0802084C: ldrb r0, [r1] movs r1, 0x27 bl sub_80C71D0 - ldr r1, _08020868 @ =gUnknown_2023D74 + ldr r1, _08020868 @ =gBattlescriptCurrInstr ldr r0, _0802086C @ =gUnknown_81D9452 str r0, [r1] bl _0802110A .align 2, 0 _08020864: .4byte gLastUsedAbility -_08020868: .4byte gUnknown_2023D74 +_08020868: .4byte gBattlescriptCurrInstr _0802086C: .4byte gUnknown_81D9452 _08020870: adds r0, r2, 0 @@ -6156,7 +6156,7 @@ _08020886: adds r0, 0x50 adds r2, r0 ldr r1, _080208B0 @ =gUnknown_825053C - ldr r0, _080208B4 @ =gUnknown_2023E82 + ldr r0, _080208B4 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -6168,7 +6168,7 @@ _08020886: .align 2, 0 _080208AC: .4byte gUnknown_2023BE2 _080208B0: .4byte gUnknown_825053C -_080208B4: .4byte gUnknown_2023E82 +_080208B4: .4byte gBattleCommunication _080208B8: mov r3, r9 ldrb r0, [r3] @@ -6208,12 +6208,12 @@ _080208D4: ldr r0, [r2] orrs r0, r1 str r0, [r2] - ldr r4, _08020928 @ =gUnknown_2023D74 + ldr r4, _08020928 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _0802092C @ =gUnknown_825062C - ldr r0, _08020930 @ =gUnknown_2023E82 + ldr r0, _08020930 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -6222,9 +6222,9 @@ _080208D4: .align 2, 0 _08020920: .4byte gUnknown_2023DB8 _08020924: .4byte gCurrentMove -_08020928: .4byte gUnknown_2023D74 +_08020928: .4byte gBattlescriptCurrInstr _0802092C: .4byte gUnknown_825062C -_08020930: .4byte gUnknown_2023E82 +_08020930: .4byte gBattleCommunication _08020934: ldr r5, _08020984 @ =gBattlerAttacker ldrb r0, [r5] @@ -6254,12 +6254,12 @@ _08020934: adds r0, r3, 0 strh r0, [r4] _0802096C: - ldr r4, _08020994 @ =gUnknown_2023D74 + ldr r4, _08020994 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020998 @ =gUnknown_825062C - ldr r0, _0802099C @ =gUnknown_2023E82 + ldr r0, _0802099C @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -6270,9 +6270,9 @@ _08020984: .4byte gBattlerAttacker _08020988: .4byte gUnknown_2023E7E _0802098C: .4byte gBattleMons _08020990: .4byte 0x0000ffff -_08020994: .4byte gUnknown_2023D74 +_08020994: .4byte gBattlescriptCurrInstr _08020998: .4byte gUnknown_825062C -_0802099C: .4byte gUnknown_2023E82 +_0802099C: .4byte gBattleCommunication _080209A0: mov r4, r9 ldrb r1, [r4] @@ -6287,7 +6287,7 @@ _080209A0: b _080210EC _080209B6: bl Random - ldr r4, _080209D4 @ =gUnknown_2023E82 + ldr r4, _080209D4 @ =gBattleCommunication lsls r0, 16 lsrs r0, 16 movs r1, 0x3 @@ -6296,10 +6296,10 @@ _080209B6: strb r0, [r4, 0x3] movs r0, 0 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect b _0802110A .align 2, 0 -_080209D4: .4byte gUnknown_2023E82 +_080209D4: .4byte gBattleCommunication _080209D8: mov r0, r9 ldrb r1, [r0] @@ -6322,7 +6322,7 @@ _080209D8: ldr r1, _08020A18 @ =gCurrentMove ldrh r1, [r1] strh r1, [r0] - ldr r0, _08020A1C @ =gUnknown_2023E8C + ldr r0, _08020A1C @ =gProtectStructs ldrb r1, [r2] lsls r1, 4 adds r1, r0 @@ -6334,7 +6334,7 @@ _080209D8: .align 2, 0 _08020A14: .4byte gUnknown_2023DB8 _08020A18: .4byte gCurrentMove -_08020A1C: .4byte gUnknown_2023E8C +_08020A1C: .4byte gProtectStructs _08020A20: mov r3, r9 ldrb r0, [r3] @@ -6386,12 +6386,12 @@ _08020A3C: ldr r0, _08020AD8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r1, 0x14] - ldr r4, _08020ADC @ =gUnknown_2023D74 + ldr r4, _08020ADC @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020AE0 @ =gUnknown_825062C - ldr r2, _08020AE4 @ =gUnknown_2023E82 + ldr r2, _08020AE4 @ =gBattleCommunication ldrb r0, [r2, 0x3] lsls r0, 2 adds r0, r1 @@ -6429,9 +6429,9 @@ _08020ABE: _08020AD0: .4byte gBattleStruct _08020AD4: .4byte gCurrentMove _08020AD8: .4byte gBattlerAttacker -_08020ADC: .4byte gUnknown_2023D74 +_08020ADC: .4byte gBattlescriptCurrInstr _08020AE0: .4byte gUnknown_825062C -_08020AE4: .4byte gUnknown_2023E82 +_08020AE4: .4byte gBattleCommunication _08020AE8: .4byte gUnknown_83FE664 _08020AEC: ldr r1, _08020B1C @ =gBattleMoveDamage @@ -6448,12 +6448,12 @@ _08020AF8: movs r0, 0x1 str r0, [r1] _08020B04: - ldr r4, _08020B24 @ =gUnknown_2023D74 + ldr r4, _08020B24 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020B28 @ =gUnknown_825062C - ldr r0, _08020B2C @ =gUnknown_2023E82 + ldr r0, _08020B2C @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -6462,9 +6462,9 @@ _08020B04: .align 2, 0 _08020B1C: .4byte gBattleMoveDamage _08020B20: .4byte gUnknown_2023D54 -_08020B24: .4byte gUnknown_2023D74 +_08020B24: .4byte gBattlescriptCurrInstr _08020B28: .4byte gUnknown_825062C -_08020B2C: .4byte gUnknown_2023E82 +_08020B2C: .4byte gBattleCommunication _08020B30: ldrb r1, [r6, 0x3] adds r1, 0xF2 @@ -6486,7 +6486,7 @@ _08020B4C: ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] - ldr r4, _08020B6C @ =gUnknown_2023D74 + ldr r4, _08020B6C @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6494,7 +6494,7 @@ _08020B4C: b _08021108 .align 2, 0 _08020B68: .4byte gBattleScripting -_08020B6C: .4byte gUnknown_2023D74 +_08020B6C: .4byte gBattlescriptCurrInstr _08020B70: .4byte gUnknown_81D6BD1 _08020B74: movs r0, 0x70 @@ -6518,7 +6518,7 @@ _08020B92: ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] - ldr r4, _08020BB0 @ =gUnknown_2023D74 + ldr r4, _08020BB0 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6526,7 +6526,7 @@ _08020B92: b _08021108 .align 2, 0 _08020BAC: .4byte gBattleScripting -_08020BB0: .4byte gUnknown_2023D74 +_08020BB0: .4byte gBattlescriptCurrInstr _08020BB4: .4byte gUnknown_81D6C62 _08020BB8: ldrb r1, [r6, 0x3] @@ -6549,7 +6549,7 @@ _08020BD4: ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] - ldr r4, _08020BF4 @ =gUnknown_2023D74 + ldr r4, _08020BF4 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6557,7 +6557,7 @@ _08020BD4: b _08021108 .align 2, 0 _08020BF0: .4byte gBattleScripting -_08020BF4: .4byte gUnknown_2023D74 +_08020BF4: .4byte gBattlescriptCurrInstr _08020BF8: .4byte gUnknown_81D6BD1 _08020BFC: movs r0, 0x60 @@ -6581,7 +6581,7 @@ _08020C1A: ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] - ldr r4, _08020C38 @ =gUnknown_2023D74 + ldr r4, _08020C38 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6589,7 +6589,7 @@ _08020C1A: b _08021108 .align 2, 0 _08020C34: .4byte gBattleScripting -_08020C38: .4byte gUnknown_2023D74 +_08020C38: .4byte gBattlescriptCurrInstr _08020C3C: .4byte gUnknown_81D6C62 _08020C40: mov r0, r9 @@ -6690,7 +6690,7 @@ _08020CEA: lsls r0, 3 cmp r1, r0 beq _08020D26 - ldr r0, _08020D74 @ =gUnknown_2023F20 + ldr r0, _08020D74 @ =gWishFutureKnock adds r0, 0x29 adds r0, r6, r0 ldrb r1, [r0] @@ -6725,7 +6725,7 @@ _08020D26: ldrb r0, [r0] cmp r0, 0x3C bne _08020D94 - ldr r1, _08020D88 @ =gUnknown_2023D74 + ldr r1, _08020D88 @ =gBattlescriptCurrInstr ldr r0, _08020D8C @ =gUnknown_81D948E str r0, [r1] ldr r1, _08020D90 @ =gLastUsedAbility @@ -6744,12 +6744,12 @@ _08020D64: .4byte gBattleTypeFlags _08020D68: .4byte gBattlerAttacker _08020D6C: .4byte 0x00000902 _08020D70: .4byte gTrainerBattleOpponent_A -_08020D74: .4byte gUnknown_2023F20 +_08020D74: .4byte gWishFutureKnock _08020D78: .4byte gBitTable _08020D7C: .4byte gBattlerPartyIndexes _08020D80: .4byte gBattleMons _08020D84: .4byte gBattlerTarget -_08020D88: .4byte gUnknown_2023D74 +_08020D88: .4byte gBattlescriptCurrInstr _08020D8C: .4byte gUnknown_81D948E _08020D90: .4byte gLastUsedAbility _08020D94: @@ -6816,7 +6816,7 @@ _08020DD4: bl BtlController_EmitSetMonData mov r2, r10 ldrb r0, [r2] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] @@ -6833,8 +6833,8 @@ _08020DD4: movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r4, _08020E70 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r4, _08020E70 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6858,7 +6858,7 @@ _08020E60: .4byte gBattlerAttacker _08020E64: .4byte gBattleStruct _08020E68: .4byte gLastUsedItem _08020E6C: .4byte gActiveBattler -_08020E70: .4byte gUnknown_2023D74 +_08020E70: .4byte gBattlescriptCurrInstr _08020E74: .4byte gUnknown_81D9271 _08020E78: ldr r3, _08020EA8 @ =gBattlerTarget @@ -6904,24 +6904,24 @@ _08020EB4: .align 2, 0 _08020ECC: .4byte gBattlerTarget _08020ED0: - ldr r4, _08020EE0 @ =gUnknown_2023D74 + ldr r4, _08020EE0 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020EE4 @ =gUnknown_81D8D55 b _08021108 .align 2, 0 -_08020EE0: .4byte gUnknown_2023D74 +_08020EE0: .4byte gBattlescriptCurrInstr _08020EE4: .4byte gUnknown_81D8D55 _08020EE8: - ldr r4, _08020EF8 @ =gUnknown_2023D74 + ldr r4, _08020EF8 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020EFC @ =gUnknown_81D8DF1 b _08021108 .align 2, 0 -_08020EF8: .4byte gUnknown_2023D74 +_08020EF8: .4byte gBattlescriptCurrInstr _08020EFC: .4byte gUnknown_81D8DF1 _08020F00: ldr r6, _08020F50 @ =gBattlerTarget @@ -6955,8 +6955,8 @@ _08020F1A: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r4, _08020F58 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r4, _08020F58 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -6965,17 +6965,17 @@ _08020F1A: .align 2, 0 _08020F50: .4byte gBattlerTarget _08020F54: .4byte gActiveBattler -_08020F58: .4byte gUnknown_2023D74 +_08020F58: .4byte gBattlescriptCurrInstr _08020F5C: .4byte gUnknown_81D9177 _08020F60: - ldr r4, _08020F70 @ =gUnknown_2023D74 + ldr r4, _08020F70 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020F74 @ =gUnknown_81D8F35 b _08021108 .align 2, 0 -_08020F70: .4byte gUnknown_2023D74 +_08020F70: .4byte gBattlescriptCurrInstr _08020F74: .4byte gUnknown_81D8F35 _08020F78: ldr r4, _08020FA8 @ =gBattleMoveDamage @@ -6989,12 +6989,12 @@ _08020F78: movs r0, 0x1 str r0, [r4] _08020F8E: - ldr r4, _08020FB0 @ =gUnknown_2023D74 + ldr r4, _08020FB0 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020FB4 @ =gUnknown_825062C - ldr r0, _08020FB8 @ =gUnknown_2023E82 + ldr r0, _08020FB8 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 @@ -7003,9 +7003,9 @@ _08020F8E: .align 2, 0 _08020FA8: .4byte gBattleMoveDamage _08020FAC: .4byte gUnknown_2023D54 -_08020FB0: .4byte gUnknown_2023D74 +_08020FB0: .4byte gBattlescriptCurrInstr _08020FB4: .4byte gUnknown_825062C -_08020FB8: .4byte gUnknown_2023E82 +_08020FB8: .4byte gBattleCommunication _08020FBC: mov r4, r9 ldrb r0, [r4] @@ -7070,7 +7070,7 @@ _08021018: beq _080210EC ldr r0, _0802104C @ =gLastUsedAbility strb r2, [r0] - ldr r1, _08021050 @ =gUnknown_2023D74 + ldr r1, _08021050 @ =gBattlescriptCurrInstr ldr r0, _08021054 @ =gUnknown_81D948E str r0, [r1] ldrb r0, [r5] @@ -7079,7 +7079,7 @@ _08021018: b _0802110A .align 2, 0 _0802104C: .4byte gLastUsedAbility -_08021050: .4byte gUnknown_2023D74 +_08021050: .4byte gBattlescriptCurrInstr _08021054: .4byte gUnknown_81D948E _08021058: ldrh r0, [r1, 0x2E] @@ -7102,7 +7102,7 @@ _08021058: movs r5, 0 movs r1, 0 strh r1, [r0, 0x2E] - ldr r2, _080210D4 @ =gUnknown_2023F20 + ldr r2, _080210D4 @ =gWishFutureKnock adds r2, 0x29 adds r2, r6, r2 ldr r3, _080210D8 @ =gBitTable @@ -7118,7 +7118,7 @@ _08021058: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r4, _080210E0 @ =gUnknown_2023D74 + ldr r4, _080210E0 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -7142,22 +7142,22 @@ _08021058: b _0802110A .align 2, 0 _080210D0: .4byte gLastUsedItem -_080210D4: .4byte gUnknown_2023F20 +_080210D4: .4byte gWishFutureKnock _080210D8: .4byte gBitTable _080210DC: .4byte gBattlerPartyIndexes -_080210E0: .4byte gUnknown_2023D74 +_080210E0: .4byte gBattlescriptCurrInstr _080210E4: .4byte gUnknown_81D8F86 _080210E8: .4byte gBattleStruct _080210EC: - ldr r1, _080210F8 @ =gUnknown_2023D74 + ldr r1, _080210F8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _0802110A .align 2, 0 -_080210F8: .4byte gUnknown_2023D74 +_080210F8: .4byte gBattlescriptCurrInstr _080210FC: - ldr r4, _0802111C @ =gUnknown_2023D74 + ldr r4, _0802111C @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -7174,9 +7174,9 @@ _0802110A: pop {r0} bx r0 .align 2, 0 -_0802111C: .4byte gUnknown_2023D74 +_0802111C: .4byte gBattlescriptCurrInstr _08021120: .4byte gUnknown_81D8FEB - thumb_func_end sub_801FF20 + thumb_func_end SetMoveEffect thumb_func_start atk15_seteffectwithchance atk15_seteffectwithchance: @ 8021124 @@ -7216,7 +7216,7 @@ _08021160: adds r0, r2 ldrb r4, [r0, 0x5] _08021170: - ldr r3, _08021198 @ =gUnknown_2023E82 + ldr r3, _08021198 @ =gBattleCommunication ldrb r2, [r3, 0x3] movs r0, 0x80 ands r0, r2 @@ -7235,7 +7235,7 @@ _08021170: .align 2, 0 _08021190: .4byte gBattleMoves _08021194: .4byte gCurrentMove -_08021198: .4byte gUnknown_2023E82 +_08021198: .4byte gBattleCommunication _0802119C: .4byte gMoveResultFlags _080211A0: bl Random @@ -7247,7 +7247,7 @@ _080211A0: lsrs r0, 16 cmp r0, r4 bhi _080211EA - ldr r0, _080211D8 @ =gUnknown_2023E82 + ldr r0, _080211D8 @ =gBattleCommunication ldrb r0, [r0, 0x3] cmp r0, 0 beq _080211EA @@ -7262,23 +7262,23 @@ _080211A0: _080211CE: movs r0, 0 movs r1, 0x80 - bl sub_801FF20 + bl SetMoveEffect b _080211F2 .align 2, 0 -_080211D8: .4byte gUnknown_2023E82 +_080211D8: .4byte gBattleCommunication _080211DC: .4byte gMoveResultFlags _080211E0: movs r0, 0 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect b _080211F2 _080211EA: - ldr r1, _08021204 @ =gUnknown_2023D74 + ldr r1, _08021204 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080211F2: - ldr r0, _08021208 @ =gUnknown_2023E82 + ldr r0, _08021208 @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x3] ldr r0, _0802120C @ =gBattleScripting @@ -7287,8 +7287,8 @@ _080211F2: pop {r0} bx r0 .align 2, 0 -_08021204: .4byte gUnknown_2023D74 -_08021208: .4byte gUnknown_2023E82 +_08021204: .4byte gBattlescriptCurrInstr +_08021208: .4byte gBattleCommunication _0802120C: .4byte gBattleScripting thumb_func_end atk15_seteffectwithchance @@ -7297,7 +7297,7 @@ atk16_seteffectprimary: @ 8021210 push {lr} movs r0, 0x1 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect pop {r0} bx r0 thumb_func_end atk16_seteffectprimary @@ -7307,7 +7307,7 @@ atk17_seteffectsecondary: @ 8021220 push {lr} movs r0, 0 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect pop {r0} bx r0 thumb_func_end atk17_seteffectsecondary @@ -7315,13 +7315,13 @@ atk17_seteffectsecondary: @ 8021220 thumb_func_start atk18_clearstatusfromeffect atk18_clearstatusfromeffect: @ 8021230 push {lr} - ldr r0, _08021254 @ =gUnknown_2023D74 + ldr r0, _08021254 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r2, _08021258 @ =gActiveBattler strb r0, [r2] - ldr r3, _0802125C @ =gUnknown_2023E82 + ldr r3, _0802125C @ =gBattleCommunication ldrb r0, [r3, 0x3] cmp r0, 0x6 bhi _08021264 @@ -7332,9 +7332,9 @@ atk18_clearstatusfromeffect: @ 8021230 adds r1, 0x4C b _0802126E .align 2, 0 -_08021254: .4byte gUnknown_2023D74 +_08021254: .4byte gBattlescriptCurrInstr _08021258: .4byte gActiveBattler -_0802125C: .4byte gUnknown_2023E82 +_0802125C: .4byte gBattleCommunication _08021260: .4byte gBattleMons _08021264: ldr r1, _08021298 @ =gBattleMons @@ -7352,10 +7352,10 @@ _0802126E: ldr r0, [r2] bics r0, r1 str r0, [r2] - ldr r0, _080212A0 @ =gUnknown_2023E82 + ldr r0, _080212A0 @ =gBattleCommunication movs r2, 0 strb r2, [r0, 0x3] - ldr r1, _080212A4 @ =gUnknown_2023D74 + ldr r1, _080212A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -7366,8 +7366,8 @@ _0802126E: .align 2, 0 _08021298: .4byte gBattleMons _0802129C: .4byte gUnknown_825053C -_080212A0: .4byte gUnknown_2023E82 -_080212A4: .4byte gUnknown_2023D74 +_080212A0: .4byte gBattleCommunication +_080212A4: .4byte gBattlescriptCurrInstr _080212A8: .4byte gBattleScripting thumb_func_end atk18_clearstatusfromeffect @@ -7378,17 +7378,17 @@ atk19_tryfaintmon: @ 80212AC mov r6, r8 push {r6,r7} sub sp, 0x4 - ldr r0, _08021318 @ =gUnknown_2023D74 + ldr r0, _08021318 @ =gBattlescriptCurrInstr ldr r2, [r0] ldrb r1, [r2, 0x2] adds r6, r0, 0 cmp r1, 0 beq _08021330 ldrb r0, [r2, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r5, _0802131C @ =gActiveBattler strb r0, [r5] - ldr r2, _08021320 @ =gUnknown_2023DD0 + ldr r2, _08021320 @ =gHitMarker ldr r1, _08021324 @ =gBitTable ldrb r0, [r5] lsls r0, 2 @@ -7416,7 +7416,7 @@ _080212E4: str r4, [r6] ldrb r0, [r5] bl GetBattlerSide - ldr r1, _08021328 @ =gSideAffecting + ldr r1, _08021328 @ =gSideStatuses lsls r0, 24 lsrs r0, 23 adds r0, r1 @@ -7426,11 +7426,11 @@ _080212E4: strh r1, [r0] b _08021592 .align 2, 0 -_08021318: .4byte gUnknown_2023D74 +_08021318: .4byte gBattlescriptCurrInstr _0802131C: .4byte gActiveBattler -_08021320: .4byte gUnknown_2023DD0 +_08021320: .4byte gHitMarker _08021324: .4byte gBitTable -_08021328: .4byte gSideAffecting +_08021328: .4byte gSideStatuses _0802132C: .4byte 0x0000fdff _08021330: ldrb r0, [r2, 0x1] @@ -7483,7 +7483,7 @@ _08021382: beq _08021392 b _0802158C _08021392: - ldr r5, _080213EC @ =gUnknown_2023DD0 + ldr r5, _080213EC @ =gHitMarker lsls r1, r2, 28 ldr r0, [r5] orrs r0, r1 @@ -7520,7 +7520,7 @@ _080213DC: .4byte gUnknown_81D8684 _080213E0: .4byte gAbsentBattlerFlags _080213E4: .4byte gBitTable _080213E8: .4byte gBattleMons -_080213EC: .4byte gUnknown_2023DD0 +_080213EC: .4byte gHitMarker _080213F0: .4byte gBattleResults _080213F4: ldr r4, _0802154C @ =gBattleResults @@ -7552,7 +7552,7 @@ _08021400: ldrb r0, [r0] strb r0, [r1] _0802142C: - ldr r2, _08021560 @ =gUnknown_2023DD0 + ldr r2, _08021560 @ =gHitMarker ldr r1, [r2] movs r0, 0x40 ands r0, r1 @@ -7571,7 +7571,7 @@ _0802142C: negs r0, r0 ands r1, r0 str r1, [r2] - ldr r4, _08021568 @ =gUnknown_2023D74 + ldr r4, _08021568 @ =gBattlescriptCurrInstr ldr r0, [r4] bl BattleScriptPush ldr r1, _0802156C @ =gBattleMoveDamage @@ -7596,7 +7596,7 @@ _0802146A: bne _08021482 b _08021592 _08021482: - ldr r0, _08021560 @ =gUnknown_2023DD0 + ldr r0, _08021560 @ =gHitMarker ldr r5, [r0] movs r0, 0x80 lsls r0, 17 @@ -7642,7 +7642,7 @@ _08021492: adds r6, 0x24 adds r0, r6 strb r5, [r0] - ldr r5, _08021568 @ =gUnknown_2023D74 + ldr r5, _08021568 @ =gBattlescriptCurrInstr ldr r0, [r5] bl BattleScriptPush ldr r0, _08021580 @ =gUnknown_81D8FA3 @@ -7665,7 +7665,7 @@ _08021492: movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r1, _08021588 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] @@ -7698,9 +7698,9 @@ _08021550: .4byte gBattlerPartyIndexes _08021554: .4byte gEnemyParty _08021558: .4byte gBattleStruct _0802155C: .4byte gBattlerAttacker -_08021560: .4byte gUnknown_2023DD0 +_08021560: .4byte gHitMarker _08021564: .4byte gBattleMons -_08021568: .4byte gUnknown_2023D74 +_08021568: .4byte gBattlescriptCurrInstr _0802156C: .4byte gBattleMoveDamage _08021570: .4byte gUnknown_81D8C6C _08021574: .4byte gStatuses3 @@ -7730,16 +7730,16 @@ atk1A_faint_animation: @ 80215A0 ldr r0, [r0] cmp r0, 0 bne _080215CA - ldr r5, _080215D4 @ =gUnknown_2023D74 + ldr r5, _080215D4 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _080215D8 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl BtlController_EmitFaintAnimation ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -7749,7 +7749,7 @@ _080215CA: bx r0 .align 2, 0 _080215D0: .4byte gBattleControllerExecFlags -_080215D4: .4byte gUnknown_2023D74 +_080215D4: .4byte gBattlescriptCurrInstr _080215D8: .4byte gActiveBattler thumb_func_end atk1A_faint_animation @@ -7761,10 +7761,10 @@ atk1B_faint_effects_clear: @ 80215DC ldr r6, [r0] cmp r6, 0 bne _08021628 - ldr r5, _08021634 @ =gUnknown_2023D74 + ldr r5, _08021634 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08021638 @ =gActiveBattler strb r0, [r4] ldr r1, _0802163C @ =gBattleMons @@ -7784,7 +7784,7 @@ atk1B_faint_effects_clear: @ 80215DC movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec bl sub_8012BC8 ldr r0, [r5] adds r0, 0x2 @@ -7796,7 +7796,7 @@ _08021628: bx r0 .align 2, 0 _08021630: .4byte gBattleControllerExecFlags -_08021634: .4byte gUnknown_2023D74 +_08021634: .4byte gBattlescriptCurrInstr _08021638: .4byte gActiveBattler _0802163C: .4byte gBattleMons thumb_func_end atk1B_faint_effects_clear @@ -7804,10 +7804,10 @@ _0802163C: .4byte gBattleMons thumb_func_start atk1C_jumpifstatus atk1C_jumpifstatus: @ 8021640 push {r4,r5,lr} - ldr r5, _0802169C @ =gUnknown_2023D74 + ldr r5, _0802169C @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r0, 24 ldr r2, [r5] @@ -7848,10 +7848,10 @@ atk1C_jumpifstatus: @ 8021640 str r3, [r5] b _080216AC .align 2, 0 -_0802169C: .4byte gUnknown_2023D74 +_0802169C: .4byte gBattlescriptCurrInstr _080216A0: .4byte gBattleMons _080216A4: - ldr r1, _080216B4 @ =gUnknown_2023D74 + ldr r1, _080216B4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] @@ -7860,16 +7860,16 @@ _080216AC: pop {r0} bx r0 .align 2, 0 -_080216B4: .4byte gUnknown_2023D74 +_080216B4: .4byte gBattlescriptCurrInstr thumb_func_end atk1C_jumpifstatus thumb_func_start atk1D_jumpifstatus2 atk1D_jumpifstatus2: @ 80216B8 push {r4,r5,lr} - ldr r5, _08021714 @ =gUnknown_2023D74 + ldr r5, _08021714 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r0, 24 ldr r2, [r5] @@ -7910,10 +7910,10 @@ atk1D_jumpifstatus2: @ 80216B8 str r3, [r5] b _08021724 .align 2, 0 -_08021714: .4byte gUnknown_2023D74 +_08021714: .4byte gBattlescriptCurrInstr _08021718: .4byte gBattleMons _0802171C: - ldr r1, _0802172C @ =gUnknown_2023D74 + ldr r1, _0802172C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] @@ -7922,7 +7922,7 @@ _08021724: pop {r0} bx r0 .align 2, 0 -_0802172C: .4byte gUnknown_2023D74 +_0802172C: .4byte gBattlescriptCurrInstr thumb_func_end atk1D_jumpifstatus2 thumb_func_start atk1E_jumpifability @@ -7931,7 +7931,7 @@ atk1E_jumpifability: @ 8021730 mov r7, r8 push {r7} sub sp, 0x4 - ldr r6, _08021784 @ =gUnknown_2023D74 + ldr r6, _08021784 @ =gBattlescriptCurrInstr ldr r2, [r6] ldrb r5, [r2, 0x2] mov r8, r5 @@ -7969,7 +7969,7 @@ atk1E_jumpifability: @ 8021730 ldrb r1, [r1] b _080217EC .align 2, 0 -_08021784: .4byte gUnknown_2023D74 +_08021784: .4byte gBattlescriptCurrInstr _08021788: .4byte gBattlerAttacker _0802178C: .4byte gLastUsedAbility _08021790: @@ -8000,7 +8000,7 @@ _080217C0: .4byte gBattlerAttacker _080217C4: .4byte gLastUsedAbility _080217C8: ldrb r0, [r2, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080217F8 @ =gBattleMons @@ -8041,7 +8041,7 @@ _0802180A: thumb_func_start atk1F_jumpifsideaffecting atk1F_jumpifsideaffecting: @ 8021818 push {r4-r6,lr} - ldr r0, _08021830 @ =gUnknown_2023D74 + ldr r0, _08021830 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r4, [r0, 0x1] cmp r4, 0x1 @@ -8051,7 +8051,7 @@ atk1F_jumpifsideaffecting: @ 8021818 bl GetBattlerPosition b _08021842 .align 2, 0 -_08021830: .4byte gUnknown_2023D74 +_08021830: .4byte gBattlescriptCurrInstr _08021834: .4byte gBattlerAttacker _08021838: ldr r0, _08021878 @ =gBattlerTarget @@ -8060,7 +8060,7 @@ _08021838: movs r4, 0x1 _08021842: ands r4, r0 - ldr r6, _0802187C @ =gUnknown_2023D74 + ldr r6, _0802187C @ =gBattlescriptCurrInstr ldr r3, [r6] ldrb r2, [r3, 0x2] ldrb r0, [r3, 0x3] @@ -8076,7 +8076,7 @@ _08021842: ldrb r0, [r3, 0x7] lsls r0, 24 adds r5, r1, r0 - ldr r1, _08021880 @ =gSideAffecting + ldr r1, _08021880 @ =gSideStatuses lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] @@ -8087,8 +8087,8 @@ _08021842: b _0802188A .align 2, 0 _08021878: .4byte gBattlerTarget -_0802187C: .4byte gUnknown_2023D74 -_08021880: .4byte gSideAffecting +_0802187C: .4byte gBattlescriptCurrInstr +_08021880: .4byte gSideStatuses _08021884: adds r0, r3, 0 adds r0, 0x8 @@ -8103,10 +8103,10 @@ _0802188A: atk20_jumpifstat: @ 8021890 push {r4,r5,lr} movs r5, 0 - ldr r4, _080218C4 @ =gUnknown_2023D74 + ldr r4, _080218C4 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r0, 24 ldr r2, _080218C8 @ =gBattleMons @@ -8127,7 +8127,7 @@ atk20_jumpifstat: @ 8021890 ldr r0, [r0] mov pc, r0 .align 2, 0 -_080218C4: .4byte gUnknown_2023D74 +_080218C4: .4byte gBattlescriptCurrInstr _080218C8: .4byte gBattleMons _080218CC: .4byte _080218D0 .align 2, 0 @@ -8139,43 +8139,43 @@ _080218D0: .4byte _08021928 .4byte _0802193C _080218E8: - ldr r0, _080218F4 @ =gUnknown_2023D74 + ldr r0, _080218F4 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bne _0802194E b _08021948 .align 2, 0 -_080218F4: .4byte gUnknown_2023D74 +_080218F4: .4byte gBattlescriptCurrInstr _080218F8: - ldr r0, _08021904 @ =gUnknown_2023D74 + ldr r0, _08021904 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 beq _0802194E b _08021948 .align 2, 0 -_08021904: .4byte gUnknown_2023D74 +_08021904: .4byte gBattlescriptCurrInstr _08021908: - ldr r0, _08021914 @ =gUnknown_2023D74 + ldr r0, _08021914 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bls _0802194E b _08021948 .align 2, 0 -_08021914: .4byte gUnknown_2023D74 +_08021914: .4byte gBattlescriptCurrInstr _08021918: - ldr r0, _08021924 @ =gUnknown_2023D74 + ldr r0, _08021924 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bcs _0802194E b _08021948 .align 2, 0 -_08021924: .4byte gUnknown_2023D74 +_08021924: .4byte gBattlescriptCurrInstr _08021928: - ldr r0, _08021938 @ =gUnknown_2023D74 + ldr r0, _08021938 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 @@ -8183,9 +8183,9 @@ _08021928: beq _0802194E b _08021948 .align 2, 0 -_08021938: .4byte gUnknown_2023D74 +_08021938: .4byte gBattlescriptCurrInstr _0802193C: - ldr r0, _08021970 @ =gUnknown_2023D74 + ldr r0, _08021970 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 @@ -8198,7 +8198,7 @@ _08021948: _0802194E: cmp r5, 0 beq _08021974 - ldr r3, _08021970 @ =gUnknown_2023D74 + ldr r3, _08021970 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] @@ -8213,9 +8213,9 @@ _0802194E: str r1, [r3] b _0802197C .align 2, 0 -_08021970: .4byte gUnknown_2023D74 +_08021970: .4byte gBattlescriptCurrInstr _08021974: - ldr r1, _08021984 @ =gUnknown_2023D74 + ldr r1, _08021984 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x9 str r0, [r1] @@ -8224,16 +8224,16 @@ _0802197C: pop {r0} bx r0 .align 2, 0 -_08021984: .4byte gUnknown_2023D74 +_08021984: .4byte gBattlescriptCurrInstr thumb_func_end atk20_jumpifstat thumb_func_start atk21_jumpifstatus3condition atk21_jumpifstatus3condition: @ 8021988 push {r4-r6,lr} - ldr r4, _080219DC @ =gUnknown_2023D74 + ldr r4, _080219DC @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r5, _080219E0 @ =gActiveBattler strb r0, [r5] ldr r2, [r4] @@ -8270,7 +8270,7 @@ atk21_jumpifstatus3condition: @ 8021988 bne _08021A00 b _080219F8 .align 2, 0 -_080219DC: .4byte gUnknown_2023D74 +_080219DC: .4byte gBattlescriptCurrInstr _080219E0: .4byte gActiveBattler _080219E4: .4byte gStatuses3 _080219E8: @@ -8300,10 +8300,10 @@ _08021A06: thumb_func_start atk22_jumpiftype atk22_jumpiftype: @ 8021A0C push {r4-r6,lr} - ldr r4, _08021A54 @ =gUnknown_2023D74 + ldr r4, _08021A54 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r0, 24 ldr r3, [r4] @@ -8336,7 +8336,7 @@ _08021A50: str r6, [r4] b _08021A60 .align 2, 0 -_08021A54: .4byte gUnknown_2023D74 +_08021A54: .4byte gBattlescriptCurrInstr _08021A58: .4byte gBattleMons _08021A5C: adds r0, r3, 0x7 @@ -8358,13 +8358,13 @@ sub_8021A68: @ 8021A68 ldr r0, [r0] adds r0, 0x50 mov r9, r0 - ldr r0, _08021AB4 @ =gUnknown_2023D74 + ldr r0, _08021AB4 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 - ldr r1, _08021AB8 @ =gUnknown_2023D6D + bl GetBattlerForBattleScript + ldr r1, _08021AB8 @ =gBattlerFainted strb r0, [r1] - ldr r2, _08021ABC @ =gUnknown_2023F4E + ldr r2, _08021ABC @ =gSentPokesToOpponent movs r1, 0x2 ands r1, r0 lsls r1, 24 @@ -8385,9 +8385,9 @@ _08021AA4: mov pc, r0 .align 2, 0 _08021AB0: .4byte gBattleStruct -_08021AB4: .4byte gUnknown_2023D74 -_08021AB8: .4byte gUnknown_2023D6D -_08021ABC: .4byte gUnknown_2023F4E +_08021AB4: .4byte gBattlescriptCurrInstr +_08021AB8: .4byte gBattlerFainted +_08021ABC: .4byte gSentPokesToOpponent _08021AC0: .4byte gBattleScripting _08021AC4: .4byte _08021AC8 .align 2, 0 @@ -8400,7 +8400,7 @@ _08021AC8: .4byte _08022368 .4byte _080223B0 _08021AE4: - ldr r4, _08021B34 @ =gUnknown_2023D6D + ldr r4, _08021B34 @ =gBattlerFainted ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -8438,7 +8438,7 @@ _08021B08: strb r0, [r2] bl _080223DA .align 2, 0 -_08021B34: .4byte gUnknown_2023D6D +_08021B34: .4byte gBattlerFainted _08021B38: .4byte gBattleTypeFlags _08021B3C: .4byte 0x00080982 _08021B40: .4byte gBattleScripting @@ -8506,7 +8506,7 @@ _08021BC2: ble _08021B54 ldr r3, _08021C28 @ =gBaseStats ldr r2, _08021C2C @ =gBattleMons - ldr r0, _08021C30 @ =gUnknown_2023D6D + ldr r0, _08021C30 @ =gBattlerFainted ldrb r1, [r0] movs r0, 0x58 muls r1, r0 @@ -8552,7 +8552,7 @@ _08021C0E: .align 2, 0 _08021C28: .4byte gBaseStats _08021C2C: .4byte gBattleMons -_08021C30: .4byte gUnknown_2023D6D +_08021C30: .4byte gBattlerFainted _08021C34: .4byte gUnknown_2023F52 _08021C38: adds r0, r1, 0 @@ -8922,7 +8922,7 @@ _08021EB6: ldr r1, _08021F6C @ =gPlayerParty adds r0, r1 ldr r3, _08021F70 @ =gBattleMons - ldr r1, _08021F74 @ =gUnknown_2023D6D + ldr r1, _08021F74 @ =gBattlerFainted ldrb r2, [r1] movs r1, 0x58 muls r1, r2 @@ -8944,7 +8944,7 @@ _08021F64: .4byte gBattleTextBuff2 _08021F68: .4byte gBattleTextBuff3 _08021F6C: .4byte gPlayerParty _08021F70: .4byte gBattleMons -_08021F74: .4byte gUnknown_2023D6D +_08021F74: .4byte gBattlerFainted _08021F78: ldr r0, _0802205C @ =gBattleControllerExecFlags ldr r2, [r0] @@ -9045,7 +9045,7 @@ _08021F82: movs r0, 0 bl BtlController_EmitExpUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08022052: ldr r1, _08022078 @ =gBattleScripting ldrb r0, [r1, 0x1C] @@ -9160,7 +9160,7 @@ _080220DA: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r1, _08022340 @ =gUnknown_2023D74 + ldr r1, _08022340 @ =gBattlescriptCurrInstr ldr r0, _08022344 @ =gUnknown_81D89F5 str r0, [r1] ldr r4, _08022348 @ =gBattleMoveDamage @@ -9390,7 +9390,7 @@ _08022330: .4byte gBattleTextBuff1 _08022334: .4byte gBattleTextBuff2 _08022338: .4byte gUnknown_3004FD4 _0802233C: .4byte gBitTable -_08022340: .4byte gUnknown_2023D74 +_08022340: .4byte gBattlescriptCurrInstr _08022344: .4byte gUnknown_81D89F5 _08022348: .4byte gBattleMoveDamage _0802234C: .4byte gBattleMons @@ -9448,7 +9448,7 @@ _080223B0: cmp r5, 0 bne _080223DA ldr r4, _080223EC @ =gBattleMons - ldr r2, _080223F0 @ =gUnknown_2023D6D + ldr r2, _080223F0 @ =gBattlerFainted ldrb r0, [r2] movs r1, 0x58 muls r0, r1 @@ -9460,7 +9460,7 @@ _080223B0: adds r0, r4 adds r0, 0x20 strb r3, [r0] - ldr r1, _080223F4 @ =gUnknown_2023D74 + ldr r1, _080223F4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -9474,8 +9474,8 @@ _080223DA: .align 2, 0 _080223E8: .4byte gBattleControllerExecFlags _080223EC: .4byte gBattleMons -_080223F0: .4byte gUnknown_2023D6D -_080223F4: .4byte gUnknown_2023D74 +_080223F0: .4byte gBattlerFainted +_080223F4: .4byte gBattlescriptCurrInstr thumb_func_end sub_8021A68 thumb_func_start sub_80223F8 @@ -9576,15 +9576,15 @@ _08022498: ldr r0, _08022548 @ =gBattlersCount ldrb r1, [r0] mov r12, r0 - ldr r7, _0802254C @ =gUnknown_2023D74 + ldr r7, _0802254C @ =gBattlescriptCurrInstr cmp r3, r1 bge _080224E4 - ldr r0, _08022550 @ =gUnknown_2023DD0 + ldr r0, _08022550 @ =gHitMarker movs r6, 0x80 lsls r6, 21 ldr r4, [r0] adds r2, r1, 0 - ldr r1, _08022554 @ =gUnknown_2023ECC + ldr r1, _08022554 @ =gSpecialStatuses _080224C8: adds r0, r6, 0 lsls r0, r5 @@ -9608,12 +9608,12 @@ _080224E4: ldrb r1, [r0] cmp r5, r1 bge _0802251E - ldr r0, _08022550 @ =gUnknown_2023DD0 + ldr r0, _08022550 @ =gHitMarker movs r4, 0x80 lsls r4, 21 mov r12, r4 ldr r6, [r0] - ldr r0, _08022554 @ =gUnknown_2023ECC + ldr r0, _08022554 @ =gSpecialStatuses adds r4, r1, 0 adds r1, r0, 0 adds r1, 0x14 @@ -9651,9 +9651,9 @@ _0802253C: .4byte gBattleOutcome _08022540: .4byte gEnemyParty _08022544: .4byte gBattleTypeFlags _08022548: .4byte gBattlersCount -_0802254C: .4byte gUnknown_2023D74 -_08022550: .4byte gUnknown_2023DD0 -_08022554: .4byte gUnknown_2023ECC +_0802254C: .4byte gBattlescriptCurrInstr +_08022550: .4byte gHitMarker +_08022554: .4byte gSpecialStatuses _08022558: cmp r2, 0 beq _0802257A @@ -9679,7 +9679,7 @@ _0802257A: str r0, [r7] b _0802258A _08022582: - ldr r1, _08022594 @ =gUnknown_2023D74 + ldr r1, _08022594 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -9690,7 +9690,7 @@ _0802258A: pop {r0} bx r0 .align 2, 0 -_08022594: .4byte gUnknown_2023D74 +_08022594: .4byte gBattlescriptCurrInstr thumb_func_end sub_80223F8 thumb_func_start MoveValuesCleanUp @@ -9704,10 +9704,10 @@ MoveValuesCleanUp: @ 8022598 strb r1, [r0, 0xE] ldr r0, _080225C8 @ =gCritMultiplier strb r1, [r0] - ldr r0, _080225CC @ =gUnknown_2023E82 + ldr r0, _080225CC @ =gBattleCommunication strb r2, [r0, 0x3] strb r2, [r0, 0x6] - ldr r2, _080225D0 @ =gUnknown_2023DD0 + ldr r2, _080225D0 @ =gHitMarker ldr r0, [r2] subs r1, 0x42 ands r0, r1 @@ -9719,8 +9719,8 @@ MoveValuesCleanUp: @ 8022598 _080225C0: .4byte gMoveResultFlags _080225C4: .4byte gBattleScripting _080225C8: .4byte gCritMultiplier -_080225CC: .4byte gUnknown_2023E82 -_080225D0: .4byte gUnknown_2023DD0 +_080225CC: .4byte gBattleCommunication +_080225D0: .4byte gHitMarker _080225D4: .4byte 0xffffbfff thumb_func_end MoveValuesCleanUp @@ -9728,20 +9728,20 @@ _080225D4: .4byte 0xffffbfff atk25_movevaluescleanup: @ 80225D8 push {lr} bl MoveValuesCleanUp - ldr r1, _080225EC @ =gUnknown_2023D74 + ldr r1, _080225EC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080225EC: .4byte gUnknown_2023D74 +_080225EC: .4byte gBattlescriptCurrInstr thumb_func_end atk25_movevaluescleanup thumb_func_start atk26_setmultihit atk26_setmultihit: @ 80225F0 ldr r3, _08022600 @ =gUnknown_2023D72 - ldr r2, _08022604 @ =gUnknown_2023D74 + ldr r2, _08022604 @ =gBattlescriptCurrInstr ldr r0, [r2] ldrb r1, [r0, 0x1] strb r1, [r3] @@ -9750,7 +9750,7 @@ atk26_setmultihit: @ 80225F0 bx lr .align 2, 0 _08022600: .4byte gUnknown_2023D72 -_08022604: .4byte gUnknown_2023D74 +_08022604: .4byte gBattlescriptCurrInstr thumb_func_end atk26_setmultihit thumb_func_start atk27_decrementmultihit @@ -9763,16 +9763,16 @@ atk27_decrementmultihit: @ 8022608 lsls r0, 24 cmp r0, 0 bne _0802262C - ldr r1, _08022628 @ =gUnknown_2023D74 + ldr r1, _08022628 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08022646 .align 2, 0 _08022624: .4byte gUnknown_2023D72 -_08022628: .4byte gUnknown_2023D74 +_08022628: .4byte gBattlescriptCurrInstr _0802262C: - ldr r3, _0802264C @ =gUnknown_2023D74 + ldr r3, _0802264C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -9789,12 +9789,12 @@ _08022646: pop {r0} bx r0 .align 2, 0 -_0802264C: .4byte gUnknown_2023D74 +_0802264C: .4byte gBattlescriptCurrInstr thumb_func_end atk27_decrementmultihit thumb_func_start atk28_goto atk28_goto: @ 8022650 - ldr r3, _0802266C @ =gUnknown_2023D74 + ldr r3, _0802266C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -9809,13 +9809,13 @@ atk28_goto: @ 8022650 str r1, [r3] bx lr .align 2, 0 -_0802266C: .4byte gUnknown_2023D74 +_0802266C: .4byte gBattlescriptCurrInstr thumb_func_end atk28_goto thumb_func_start atk29_jumpifbyte atk29_jumpifbyte: @ 8022670 push {r4-r6,lr} - ldr r3, _080226B4 @ =gUnknown_2023D74 + ldr r3, _080226B4 @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] @@ -9849,7 +9849,7 @@ atk29_jumpifbyte: @ 8022670 ldr r0, [r0] mov pc, r0 .align 2, 0 -_080226B4: .4byte gUnknown_2023D74 +_080226B4: .4byte gBattlescriptCurrInstr _080226B8: .4byte _080226BC .align 2, 0 _080226BC: @@ -9901,7 +9901,7 @@ _08022708: thumb_func_start atk2A_jumpifhalfword atk2A_jumpifhalfword: @ 8022710 push {r4-r6,lr} - ldr r3, _0802275C @ =gUnknown_2023D74 + ldr r3, _0802275C @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] @@ -9938,7 +9938,7 @@ atk2A_jumpifhalfword: @ 8022710 ldr r0, [r0] mov pc, r0 .align 2, 0 -_0802275C: .4byte gUnknown_2023D74 +_0802275C: .4byte gBattlescriptCurrInstr _08022760: .4byte _08022764 .align 2, 0 _08022764: @@ -9990,7 +9990,7 @@ _080227B0: thumb_func_start atk2B_jumpifword atk2B_jumpifword: @ 80227B8 push {r4-r6,lr} - ldr r3, _08022810 @ =gUnknown_2023D74 + ldr r3, _08022810 @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] @@ -10033,7 +10033,7 @@ atk2B_jumpifword: @ 80227B8 ldr r0, [r0] mov pc, r0 .align 2, 0 -_08022810: .4byte gUnknown_2023D74 +_08022810: .4byte gBattlescriptCurrInstr _08022814: .4byte _08022818 .align 2, 0 _08022818: @@ -10085,7 +10085,7 @@ _08022864: thumb_func_start atk2C_jumpifarrayequal atk2C_jumpifarrayequal: @ 802286C push {r4-r7,lr} - ldr r2, _080228C4 @ =gUnknown_2023D74 + ldr r2, _080228C4 @ =gBattlescriptCurrInstr ldr r3, [r2] ldrb r1, [r3, 0x1] ldrb r0, [r3, 0x2] @@ -10129,7 +10129,7 @@ atk2C_jumpifarrayequal: @ 802286C adds r0, r3, 0 b _080228E0 .align 2, 0 -_080228C4: .4byte gUnknown_2023D74 +_080228C4: .4byte gBattlescriptCurrInstr _080228C8: adds r5, 0x1 adds r4, 0x1 @@ -10161,7 +10161,7 @@ _080228EC: atk2D_jumpifarraynotequal: @ 80228F4 push {r4-r7,lr} movs r7, 0 - ldr r3, _08022968 @ =gUnknown_2023D74 + ldr r3, _08022968 @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -10220,7 +10220,7 @@ _0802295E: mov r0, r12 b _08022970 .align 2, 0 -_08022968: .4byte gUnknown_2023D74 +_08022968: .4byte gBattlescriptCurrInstr _0802296C: ldr r0, [r3] adds r0, 0xE @@ -10233,7 +10233,7 @@ _08022970: thumb_func_start atk2E_setbyte atk2E_setbyte: @ 8022978 - ldr r3, _0802299C @ =gUnknown_2023D74 + ldr r3, _0802299C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10252,12 +10252,12 @@ atk2E_setbyte: @ 8022978 str r0, [r3] bx lr .align 2, 0 -_0802299C: .4byte gUnknown_2023D74 +_0802299C: .4byte gBattlescriptCurrInstr thumb_func_end atk2E_setbyte thumb_func_start atk2F_addbyte atk2F_addbyte: @ 80229A0 - ldr r3, _080229C8 @ =gUnknown_2023D74 + ldr r3, _080229C8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10278,12 +10278,12 @@ atk2F_addbyte: @ 80229A0 str r0, [r3] bx lr .align 2, 0 -_080229C8: .4byte gUnknown_2023D74 +_080229C8: .4byte gBattlescriptCurrInstr thumb_func_end atk2F_addbyte thumb_func_start atk30_subbyte atk30_subbyte: @ 80229CC - ldr r3, _080229F4 @ =gUnknown_2023D74 + ldr r3, _080229F4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10304,13 +10304,13 @@ atk30_subbyte: @ 80229CC str r0, [r3] bx lr .align 2, 0 -_080229F4: .4byte gUnknown_2023D74 +_080229F4: .4byte gBattlescriptCurrInstr thumb_func_end atk30_subbyte thumb_func_start atk31_copyarray atk31_copyarray: @ 80229F8 push {r4-r6,lr} - ldr r3, _08022A48 @ =gUnknown_2023D74 + ldr r3, _08022A48 @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -10352,13 +10352,13 @@ _08022A3C: pop {r0} bx r0 .align 2, 0 -_08022A48: .4byte gUnknown_2023D74 +_08022A48: .4byte gBattlescriptCurrInstr thumb_func_end atk31_copyarray thumb_func_start atk32_copyarraywithindex atk32_copyarraywithindex: @ 8022A4C push {r4-r7,lr} - ldr r3, _08022AB4 @ =gUnknown_2023D74 + ldr r3, _08022AB4 @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -10412,12 +10412,12 @@ _08022AA8: pop {r0} bx r0 .align 2, 0 -_08022AB4: .4byte gUnknown_2023D74 +_08022AB4: .4byte gBattlescriptCurrInstr thumb_func_end atk32_copyarraywithindex thumb_func_start atk33_orbyte atk33_orbyte: @ 8022AB8 - ldr r3, _08022AE0 @ =gUnknown_2023D74 + ldr r3, _08022AE0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10438,13 +10438,13 @@ atk33_orbyte: @ 8022AB8 str r0, [r3] bx lr .align 2, 0 -_08022AE0: .4byte gUnknown_2023D74 +_08022AE0: .4byte gBattlescriptCurrInstr thumb_func_end atk33_orbyte thumb_func_start atk34_orhalfword atk34_orhalfword: @ 8022AE4 push {r4,lr} - ldr r4, _08022B18 @ =gUnknown_2023D74 + ldr r4, _08022B18 @ =gBattlescriptCurrInstr ldr r3, [r4] ldrb r2, [r3, 0x1] ldrb r0, [r3, 0x2] @@ -10470,13 +10470,13 @@ atk34_orhalfword: @ 8022AE4 pop {r0} bx r0 .align 2, 0 -_08022B18: .4byte gUnknown_2023D74 +_08022B18: .4byte gBattlescriptCurrInstr thumb_func_end atk34_orhalfword thumb_func_start atk35_orword atk35_orword: @ 8022B1C push {r4,lr} - ldr r4, _08022B5C @ =gUnknown_2023D74 + ldr r4, _08022B5C @ =gBattlescriptCurrInstr ldr r2, [r4] ldrb r3, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10508,12 +10508,12 @@ atk35_orword: @ 8022B1C pop {r0} bx r0 .align 2, 0 -_08022B5C: .4byte gUnknown_2023D74 +_08022B5C: .4byte gBattlescriptCurrInstr thumb_func_end atk35_orword thumb_func_start atk36_bicbyte atk36_bicbyte: @ 8022B60 - ldr r3, _08022B88 @ =gUnknown_2023D74 + ldr r3, _08022B88 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10534,13 +10534,13 @@ atk36_bicbyte: @ 8022B60 str r0, [r3] bx lr .align 2, 0 -_08022B88: .4byte gUnknown_2023D74 +_08022B88: .4byte gBattlescriptCurrInstr thumb_func_end atk36_bicbyte thumb_func_start atk37_bichalfword atk37_bichalfword: @ 8022B8C push {r4,lr} - ldr r4, _08022BC0 @ =gUnknown_2023D74 + ldr r4, _08022BC0 @ =gBattlescriptCurrInstr ldr r3, [r4] ldrb r1, [r3, 0x1] ldrb r0, [r3, 0x2] @@ -10566,13 +10566,13 @@ atk37_bichalfword: @ 8022B8C pop {r0} bx r0 .align 2, 0 -_08022BC0: .4byte gUnknown_2023D74 +_08022BC0: .4byte gBattlescriptCurrInstr thumb_func_end atk37_bichalfword thumb_func_start atk38_bicword atk38_bicword: @ 8022BC4 push {r4,lr} - ldr r4, _08022C04 @ =gUnknown_2023D74 + ldr r4, _08022C04 @ =gBattlescriptCurrInstr ldr r2, [r4] ldrb r3, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10604,7 +10604,7 @@ atk38_bicword: @ 8022BC4 pop {r0} bx r0 .align 2, 0 -_08022C04: .4byte gUnknown_2023D74 +_08022C04: .4byte gBattlescriptCurrInstr thumb_func_end atk38_bicword thumb_func_start atk39_pause @@ -10614,7 +10614,7 @@ atk39_pause: @ 8022C08 ldr r4, [r0] cmp r4, 0 bne _08022C34 - ldr r5, _08022C40 @ =gUnknown_2023D74 + ldr r5, _08022C40 @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -10637,7 +10637,7 @@ _08022C34: bx r0 .align 2, 0 _08022C3C: .4byte gBattleControllerExecFlags -_08022C40: .4byte gUnknown_2023D74 +_08022C40: .4byte gBattlescriptCurrInstr _08022C44: .4byte gUnknown_2023E7C thumb_func_end atk39_pause @@ -10648,7 +10648,7 @@ sub_8022C48: @ 8022C48 ldr r0, [r0] cmp r0, 0 bne _08022C5A - ldr r1, _08022C64 @ =gUnknown_2023D74 + ldr r1, _08022C64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -10657,13 +10657,13 @@ _08022C5A: bx r0 .align 2, 0 _08022C60: .4byte gBattleControllerExecFlags -_08022C64: .4byte gUnknown_2023D74 +_08022C64: .4byte gBattlescriptCurrInstr thumb_func_end sub_8022C48 thumb_func_start atk3B_healthbar_update atk3B_healthbar_update: @ 8022C68 push {lr} - ldr r0, _08022C7C @ =gUnknown_2023D74 + ldr r0, _08022C7C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 @@ -10672,7 +10672,7 @@ atk3B_healthbar_update: @ 8022C68 ldr r1, _08022C84 @ =gBattlerTarget b _08022C8C .align 2, 0 -_08022C7C: .4byte gUnknown_2023D74 +_08022C7C: .4byte gBattlescriptCurrInstr _08022C80: .4byte gActiveBattler _08022C84: .4byte gBattlerTarget _08022C88: @@ -10687,8 +10687,8 @@ _08022C8C: bl BtlController_EmitHealthBarUpdate ldr r0, _08022CB0 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08022CBC @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08022CBC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -10698,7 +10698,7 @@ _08022C8C: _08022CB0: .4byte gActiveBattler _08022CB4: .4byte gBattlerAttacker _08022CB8: .4byte gBattleMoveDamage -_08022CBC: .4byte gUnknown_2023D74 +_08022CBC: .4byte gBattlescriptCurrInstr thumb_func_end atk3B_healthbar_update thumb_func_start atk3C_return @@ -10775,7 +10775,7 @@ _08022D3C: .4byte gBattleMainFunc thumb_func_start atk41_call atk41_call: @ 8022D40 push {r4,lr} - ldr r4, _08022D6C @ =gUnknown_2023D74 + ldr r4, _08022D6C @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x5 bl BattleScriptPush @@ -10795,16 +10795,16 @@ atk41_call: @ 8022D40 pop {r0} bx r0 .align 2, 0 -_08022D6C: .4byte gUnknown_2023D74 +_08022D6C: .4byte gBattlescriptCurrInstr thumb_func_end atk41_call thumb_func_start atk42_jumpiftype2 atk42_jumpiftype2: @ 8022D70 push {r4,lr} - ldr r4, _08022DB8 @ =gUnknown_2023D74 + ldr r4, _08022DB8 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r0, 24 ldr r3, [r4] @@ -10836,7 +10836,7 @@ _08022D9E: str r1, [r4] b _08022DC4 .align 2, 0 -_08022DB8: .4byte gUnknown_2023D74 +_08022DB8: .4byte gBattlescriptCurrInstr _08022DBC: .4byte gBattleMons _08022DC0: adds r0, r3, 0x7 @@ -10851,7 +10851,7 @@ _08022DC4: atk43_jumpifabilitypresent: @ 8022DCC push {r4,lr} sub sp, 0x4 - ldr r4, _08022E04 @ =gUnknown_2023D74 + ldr r4, _08022E04 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r2, [r0, 0x1] movs r0, 0 @@ -10877,7 +10877,7 @@ atk43_jumpifabilitypresent: @ 8022DCC str r1, [r4] b _08022E0E .align 2, 0 -_08022E04: .4byte gUnknown_2023D74 +_08022E04: .4byte gBattlescriptCurrInstr _08022E08: ldr r0, [r4] adds r0, 0x6 @@ -10908,10 +10908,10 @@ _08022E30: .4byte gBattleStruct thumb_func_start sub_8022E34 sub_8022E34: @ 8022E34 push {r4-r6,lr} - ldr r4, _08022E84 @ =gUnknown_2023D74 + ldr r4, _08022E84 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r6, _08022E88 @ =gActiveBattler strb r0, [r6] ldr r2, [r4] @@ -10936,7 +10936,7 @@ sub_8022E34: @ 8022E34 cmp r0, 0x19 bne _08022E8C _08022E6E: - ldr r4, _08022E84 @ =gUnknown_2023D74 + ldr r4, _08022E84 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x2] ldrh r2, [r3] @@ -10946,10 +10946,10 @@ _08022E6E: ldrb r0, [r0] b _08022EE4 .align 2, 0 -_08022E84: .4byte gUnknown_2023D74 +_08022E84: .4byte gBattlescriptCurrInstr _08022E88: .4byte gActiveBattler _08022E8C: - ldr r0, _08022EA4 @ =gUnknown_2023DD0 + ldr r0, _08022EA4 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -10960,7 +10960,7 @@ _08022E8C: ldr r0, _08022EA8 @ =gUnknown_81D89F1 b _08022EEC .align 2, 0 -_08022EA4: .4byte gUnknown_2023DD0 +_08022EA4: .4byte gHitMarker _08022EA8: .4byte gUnknown_81D89F1 _08022EAC: adds r0, r5, 0 @@ -10990,7 +10990,7 @@ _08022ED8: bl BtlController_EmitBattleAnimation ldrb r0, [r6] _08022EE4: - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r4] adds r0, 0x7 _08022EEC: @@ -11003,10 +11003,10 @@ _08022EEC: thumb_func_start atk46_playanimation2 atk46_playanimation2: @ 8022EF4 push {r4-r7,lr} - ldr r6, _08022F5C @ =gUnknown_2023D74 + ldr r6, _08022F5C @ =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r7, _08022F60 @ =gActiveBattler strb r0, [r7] ldr r2, [r6] @@ -11045,17 +11045,17 @@ _08022F3E: bl BtlController_EmitBattleAnimation ldr r0, _08022F60 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08022F5C @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08022F5C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] b _08022FBA .align 2, 0 -_08022F5C: .4byte gUnknown_2023D74 +_08022F5C: .4byte gBattlescriptCurrInstr _08022F60: .4byte gActiveBattler _08022F64: - ldr r0, _08022F74 @ =gUnknown_2023DD0 + ldr r0, _08022F74 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -11064,7 +11064,7 @@ _08022F64: adds r0, r2, 0 b _08022FB6 .align 2, 0 -_08022F74: .4byte gUnknown_2023DD0 +_08022F74: .4byte gHitMarker _08022F78: adds r0, r5, 0 subs r0, 0xA @@ -11092,7 +11092,7 @@ _08022FA4: movs r0, 0 bl BtlController_EmitBattleAnimation ldrb r0, [r7] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r6] _08022FB6: adds r0, 0xA @@ -11147,7 +11147,7 @@ _08022FF8: movs r1, 0 strb r0, [r4, 0x10] strb r1, [r4, 0x11] - ldr r1, _08023018 @ =gUnknown_2023D74 + ldr r1, _08023018 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -11155,7 +11155,7 @@ _08022FF8: pop {r0} bx r0 .align 2, 0 -_08023018: .4byte gUnknown_2023D74 +_08023018: .4byte gBattlescriptCurrInstr thumb_func_end atk47_setgraphicalstatchangevalues thumb_func_start atk48_playstatchangeanimation @@ -11170,11 +11170,11 @@ atk48_playstatchangeanimation: @ 802301C movs r0, 0 mov r8, r0 movs r3, 0 - ldr r5, _08023090 @ =gUnknown_2023D74 + ldr r5, _08023090 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] str r3, [sp] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r2, _08023094 @ =gActiveBattler strb r0, [r2] ldr r0, [r5] @@ -11205,7 +11205,7 @@ _0802306A: ands r0, r1 cmp r0, 0 beq _080230F6 - ldr r0, _08023090 @ =gUnknown_2023D74 + ldr r0, _08023090 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x8 @@ -11219,7 +11219,7 @@ _0802306A: adds r0, r7, r0 b _080230E4 .align 2, 0 -_08023090: .4byte gUnknown_2023D74 +_08023090: .4byte gBattlescriptCurrInstr _08023094: .4byte gActiveBattler _08023098: .4byte gUnknown_2023BFC _0802309C: @@ -11279,7 +11279,7 @@ _080230F6: cmp r4, 0 bne _0802306A _08023104: - ldr r0, _0802312C @ =gUnknown_2023D74 + ldr r0, _0802312C @ =gBattlescriptCurrInstr mov r9, r0 cmp r3, 0x1 ble _08023192 @@ -11297,7 +11297,7 @@ _08023104: _08023120: .4byte gActiveBattler _08023124: .4byte gSideTimers _08023128: .4byte gBattleMons -_0802312C: .4byte gUnknown_2023D74 +_0802312C: .4byte gBattlescriptCurrInstr _08023130: movs r0, 0x2 ands r0, r1 @@ -11382,8 +11382,8 @@ _080231B0: bl BtlController_EmitBattleAnimation ldr r0, _080231F0 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r0, _080231F4 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r0, _080231F4 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x4 @@ -11396,12 +11396,12 @@ _080231B0: movs r0, 0x1 strb r0, [r4, 0x1B] _080231E8: - ldr r1, _080231F4 @ =gUnknown_2023D74 + ldr r1, _080231F4 @ =gBattlescriptCurrInstr b _080231FA .align 2, 0 _080231EC: .4byte gBattleScripting _080231F0: .4byte gActiveBattler -_080231F4: .4byte gUnknown_2023D74 +_080231F4: .4byte gBattlescriptCurrInstr _080231F8: mov r1, r9 _080231FA: @@ -11439,7 +11439,7 @@ atk49_moveend: @ 8023210 ldrh r2, [r2] str r2, [sp, 0x18] _08023232: - ldr r0, _08023268 @ =gUnknown_2023D74 + ldr r0, _08023268 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r4, [r0, 0x1] str r4, [sp, 0x10] @@ -11464,7 +11464,7 @@ _08023232: .align 2, 0 _08023260: .4byte gChosenMove _08023264: .4byte 0x0000ffff -_08023268: .4byte gUnknown_2023D74 +_08023268: .4byte gBattlescriptCurrInstr _0802326C: .4byte gBattleMons _08023270: .4byte gBattlerAttacker _08023274: .4byte gEnigmaBerries @@ -11500,7 +11500,7 @@ _080232AC: movs r1, 0x1 bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0802379E .align 2, 0 _080232C0: .4byte gActiveBattler @@ -11511,7 +11511,7 @@ _080232C4: movs r1, 0 bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r1, [r6] lsls r1, 2 adds r1, r5 @@ -11543,13 +11543,13 @@ _080232F0: adds r0, r2 ldr r0, [r0] bl BattleScriptPush - ldr r1, _0802332C @ =gUnknown_2023D74 + ldr r1, _0802332C @ =gBattlescriptCurrInstr ldr r0, _08023330 @ =gUnknown_81D96A8 bl _08023BFC .align 2, 0 _08023324: .4byte gBattleScripting _08023328: .4byte gUnknown_81D65A8 -_0802332C: .4byte gUnknown_2023D74 +_0802332C: .4byte gBattlescriptCurrInstr _08023330: .4byte gUnknown_81D96A8 _08023334: ldr r2, _0802334C @ =gBattleMoves @@ -11657,7 +11657,7 @@ _08023410: beq _0802341E b _080237C8 _0802341E: - ldr r2, _0802348C @ =gUnknown_2023ECC + ldr r2, _0802348C @ =gSpecialStatuses ldrb r3, [r5] lsls r0, r3, 2 adds r0, r3 @@ -11701,7 +11701,7 @@ _0802346A: adds r0, r2, 0x1 strb r0, [r1, 0x19] bl BattleScriptPushCursor - ldr r1, _08023498 @ =gUnknown_2023D74 + ldr r1, _08023498 @ =gBattlescriptCurrInstr ldr r0, _0802349C @ =gUnknown_81D8C48 str r0, [r1] b _080236FC @@ -11710,10 +11710,10 @@ _0802347C: .4byte gBattleMons _08023480: .4byte gBattlerTarget _08023484: .4byte gBattlerAttacker _08023488: .4byte gMoveResultFlags -_0802348C: .4byte gUnknown_2023ECC +_0802348C: .4byte gSpecialStatuses _08023490: .4byte gBattleMoves _08023494: .4byte gCurrentMove -_08023498: .4byte gUnknown_2023D74 +_08023498: .4byte gBattlescriptCurrInstr _0802349C: .4byte gUnknown_81D8C48 _080234A0: ldr r4, _0802353C @ =gBattleMons @@ -11745,7 +11745,7 @@ _080234CA: bne _080234D4 b _080237C8 _080234D4: - ldr r0, _08023548 @ =gUnknown_2023ECC + ldr r0, _08023548 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -11788,9 +11788,9 @@ _080234FE: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec bl BattleScriptPushCursor - ldr r1, _08023554 @ =gUnknown_2023D74 + ldr r1, _08023554 @ =gBattlescriptCurrInstr ldr r0, _08023558 @ =gUnknown_81D9098 str r0, [r1] movs r2, 0x1 @@ -11800,10 +11800,10 @@ _080234FE: _0802353C: .4byte gBattleMons _08023540: .4byte gBattlerTarget _08023544: .4byte gBattlerAttacker -_08023548: .4byte gUnknown_2023ECC +_08023548: .4byte gSpecialStatuses _0802354C: .4byte gMoveResultFlags _08023550: .4byte gActiveBattler -_08023554: .4byte gUnknown_2023D74 +_08023554: .4byte gBattlescriptCurrInstr _08023558: .4byte gUnknown_81D9098 _0802355C: ldr r0, _0802357C @ =gBattlerTarget @@ -11876,7 +11876,7 @@ _080235DA: .align 2, 0 _080235E0: .4byte gBattlerAttacker _080235E4: - ldr r0, _08023674 @ =gUnknown_2023DD0 + ldr r0, _08023674 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 18 @@ -11955,7 +11955,7 @@ _0802366A: strb r0, [r2, 0x14] b _08023BB4 .align 2, 0 -_08023674: .4byte gUnknown_2023DD0 +_08023674: .4byte gHitMarker _08023678: .4byte gChosenMove _0802367C: .4byte 0x0000ffff _08023680: .4byte gMoveResultFlags @@ -11998,7 +11998,7 @@ _080236CC: movs r0, 0x3 movs r1, 0 movs r2, 0 - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 cmp r0, 0 beq _080237C8 @@ -12013,7 +12013,7 @@ _080236EC: movs r0, 0x4 movs r1, 0 movs r2, 0 - bl sub_801BC68 + bl ItemBattleEffects _080236F6: lsls r0, 24 cmp r0, 0 @@ -12035,7 +12035,7 @@ _08023702: bne _08023718 b _08023AFA _08023718: - ldr r0, _08023734 @ =gUnknown_2023DD0 + ldr r0, _08023734 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -12048,7 +12048,7 @@ _08023726: _08023728: .4byte gStatuses3 _0802372C: .4byte gBattlerAttacker _08023730: .4byte 0x000400c0 -_08023734: .4byte gUnknown_2023DD0 +_08023734: .4byte gHitMarker _08023738: ldr r0, _080237A8 @ =gMoveResultFlags ldrb r1, [r0] @@ -12080,7 +12080,7 @@ _08023764: movs r1, 0 bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, _080237AC @ =gStatuses3 ldrb r2, [r5] lsls r2, 2 @@ -12089,7 +12089,7 @@ _08023764: ldr r1, _080237BC @ =0xfffbff3f ands r0, r1 str r0, [r2] - ldr r2, _080237C0 @ =gUnknown_2023ECC + ldr r2, _080237C0 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -12112,7 +12112,7 @@ _080237B0: .4byte gBattlerAttacker _080237B4: .4byte 0x000400c0 _080237B8: .4byte gActiveBattler _080237BC: .4byte 0xfffbff3f -_080237C0: .4byte gUnknown_2023ECC +_080237C0: .4byte gSpecialStatuses _080237C4: .4byte gBattleScripting _080237C8: ldr r1, _080237D4 @ =gBattleScripting @@ -12124,7 +12124,7 @@ _080237C8: .align 2, 0 _080237D4: .4byte gBattleScripting _080237D8: - ldr r0, _08023808 @ =gUnknown_2023ECC + ldr r0, _08023808 @ =gSpecialStatuses ldr r6, _0802380C @ =gBattlerTarget ldrb r2, [r6] lsls r3, r2, 2 @@ -12150,7 +12150,7 @@ _080237D8: _08023806: b _08023846 .align 2, 0 -_08023808: .4byte gUnknown_2023ECC +_08023808: .4byte gSpecialStatuses _0802380C: .4byte gBattlerTarget _08023810: .4byte gBattlersCount _08023814: .4byte gStatuses3 @@ -12164,7 +12164,7 @@ _0802381C: ldr r2, _08023854 @ =gDisableStructs ldr r5, _08023858 @ =0xfeffffff adds r3, r0, 0 - ldr r1, _0802385C @ =gUnknown_2023C34 + ldr r1, _0802385C @ =gChosenMoveByBattler _0802382E: ldrb r0, [r2, 0xA] cmp r0, 0 @@ -12189,9 +12189,9 @@ _08023846: _08023850: .4byte gBattlersCount _08023854: .4byte gDisableStructs _08023858: .4byte 0xfeffffff -_0802385C: .4byte gUnknown_2023C34 +_0802385C: .4byte gChosenMoveByBattler _08023860: - ldr r1, _08023914 @ =gUnknown_2023DD0 + ldr r1, _08023914 @ =gHitMarker ldr r3, [r1] movs r0, 0x80 lsls r0, 5 @@ -12286,7 +12286,7 @@ _080238E8: strh r0, [r1] b _08023966 .align 2, 0 -_08023914: .4byte gUnknown_2023DD0 +_08023914: .4byte gHitMarker _08023918: .4byte gBattlerAttacker _0802391C: .4byte gActiveBattler _08023920: .4byte gBattlerTarget @@ -12450,7 +12450,7 @@ _08023A40: ands r0, r1 cmp r0, 0 beq _08023AFA - ldr r0, _08023B18 @ =gUnknown_2023DD0 + ldr r0, _08023B18 @ =gHitMarker ldr r1, [r0] movs r0, 0x80 lsls r0, 18 @@ -12524,12 +12524,12 @@ _08023B08: .4byte gBitTable _08023B0C: .4byte gBattlerAttacker _08023B10: .4byte gBattleStruct _08023B14: .4byte gBattleMoves -_08023B18: .4byte gUnknown_2023DD0 +_08023B18: .4byte gHitMarker _08023B1C: .4byte gBattlerTarget _08023B20: .4byte gMoveResultFlags _08023B24: .4byte gChosenMove _08023B28: - ldr r5, _08023C10 @ =gUnknown_2023DD0 + ldr r5, _08023C10 @ =gHitMarker ldr r2, [r5] movs r0, 0x80 lsls r0, 12 @@ -12542,7 +12542,7 @@ _08023B28: ands r0, r1 cmp r0, 0 beq _08023BAC - ldr r1, _08023C18 @ =gUnknown_2023E8C + ldr r1, _08023C18 @ =gProtectStructs ldr r0, _08023C1C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -12634,7 +12634,7 @@ _08023BE8: mov r2, r10 cmp r2, 0 bne _08023BFE - ldr r1, _08023C34 @ =gUnknown_2023D74 + ldr r1, _08023C34 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 _08023BFC: @@ -12649,16 +12649,16 @@ _08023BFE: pop {r0} bx r0 .align 2, 0 -_08023C10: .4byte gUnknown_2023DD0 +_08023C10: .4byte gHitMarker _08023C14: .4byte gBattleTypeFlags -_08023C18: .4byte gUnknown_2023E8C +_08023C18: .4byte gProtectStructs _08023C1C: .4byte gBattlerAttacker _08023C20: .4byte gBattleMoves _08023C24: .4byte gCurrentMove _08023C28: .4byte gBattlerTarget _08023C2C: .4byte gBattleMons _08023C30: .4byte gBattleScripting -_08023C34: .4byte gUnknown_2023D74 +_08023C34: .4byte gBattlescriptCurrInstr thumb_func_end atk49_moveend thumb_func_start atk4A_typecalc2 @@ -12704,7 +12704,7 @@ atk4A_typecalc2: @ 8023C38 lsls r0, 1 adds r0, r1 strh r4, [r0] - ldr r0, _08023CB8 @ =gUnknown_2023E82 + ldr r0, _08023CB8 @ =gBattleCommunication mov r2, r8 strb r2, [r0, 0x6] ldrb r0, [r7] @@ -12719,7 +12719,7 @@ _08023CA8: .4byte gBattlerTarget _08023CAC: .4byte gLastUsedAbility _08023CB0: .4byte gMoveResultFlags _08023CB4: .4byte gUnknown_2023DA0 -_08023CB8: .4byte gUnknown_2023E82 +_08023CB8: .4byte gBattleCommunication _08023CBC: ldr r0, _08023CC8 @ =gMoveResultFlags ldrb r1, [r0] @@ -12905,7 +12905,7 @@ _08023DF0: lsls r0, 1 adds r0, r1 strh r5, [r0] - ldr r1, _08023E7C @ =gUnknown_2023E82 + ldr r1, _08023E7C @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r2] @@ -12918,7 +12918,7 @@ _08023E2A: ands r0, r1 cmp r0, 0 beq _08023E48 - ldr r2, _08023E80 @ =gUnknown_2023E8C + ldr r2, _08023E80 @ =gProtectStructs ldr r0, _08023E64 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 4 @@ -12928,7 +12928,7 @@ _08023E2A: orrs r0, r2 strb r0, [r1, 0x1] _08023E48: - ldr r1, _08023E84 @ =gUnknown_2023D74 + ldr r1, _08023E84 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -12946,9 +12946,9 @@ _08023E6C: .4byte gBattleMoves _08023E70: .4byte gLastUsedAbility _08023E74: .4byte gMoveResultFlags _08023E78: .4byte gUnknown_2023DA0 -_08023E7C: .4byte gUnknown_2023E82 -_08023E80: .4byte gUnknown_2023E8C -_08023E84: .4byte gUnknown_2023D74 +_08023E7C: .4byte gBattleCommunication +_08023E80: .4byte gProtectStructs +_08023E84: .4byte gBattlescriptCurrInstr thumb_func_end atk4A_typecalc2 thumb_func_start atk4B_returnatktoball @@ -12958,7 +12958,7 @@ atk4B_returnatktoball: @ 8023E88 ldr r0, _08023EC8 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] - ldr r2, _08023ECC @ =gUnknown_2023DD0 + ldr r2, _08023ECC @ =gHitMarker ldr r1, _08023ED0 @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -12973,9 +12973,9 @@ atk4B_returnatktoball: @ 8023E88 movs r1, 0 bl BtlController_EmitReturnMonToBall ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08023EB6: - ldr r1, _08023ED4 @ =gUnknown_2023D74 + ldr r1, _08023ED4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -12985,9 +12985,9 @@ _08023EB6: .align 2, 0 _08023EC4: .4byte gActiveBattler _08023EC8: .4byte gBattlerAttacker -_08023ECC: .4byte gUnknown_2023DD0 +_08023ECC: .4byte gHitMarker _08023ED0: .4byte gBitTable -_08023ED4: .4byte gUnknown_2023D74 +_08023ED4: .4byte gBattlescriptCurrInstr thumb_func_end atk4B_returnatktoball thumb_func_start atk4C_getswitchedmondata @@ -12997,10 +12997,10 @@ atk4C_getswitchedmondata: @ 8023ED8 ldr r0, [r0] cmp r0, 0 bne _08023F28 - ldr r5, _08023F34 @ =gUnknown_2023D74 + ldr r5, _08023F34 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08023F38 @ =gActiveBattler strb r0, [r4] ldr r3, _08023F3C @ =gBattlerPartyIndexes @@ -13025,7 +13025,7 @@ atk4C_getswitchedmondata: @ 8023ED8 movs r1, 0 bl BtlController_EmitGetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -13035,7 +13035,7 @@ _08023F28: bx r0 .align 2, 0 _08023F30: .4byte gBattleControllerExecFlags -_08023F34: .4byte gUnknown_2023D74 +_08023F34: .4byte gBattlescriptCurrInstr _08023F38: .4byte gActiveBattler _08023F3C: .4byte gBattlerPartyIndexes _08023F40: .4byte gBattleStruct @@ -13052,10 +13052,10 @@ sub_8023F48: @ 8023F48 beq _08023F56 b _08024098 _08023F56: - ldr r0, _080240A4 @ =gUnknown_2023D74 + ldr r0, _080240A4 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _080240A8 @ =gActiveBattler strb r0, [r4] ldr r6, _080240AC @ =gBattleMons @@ -13129,7 +13129,7 @@ _08023F84: bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080240B8 @ =gUnknown_2023F20 + ldr r0, _080240B8 @ =gWishFutureKnock adds r0, 0x29 adds r0, r2, r0 ldrb r1, [r0] @@ -13208,7 +13208,7 @@ _08024068: strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _080240A4 @ =gUnknown_2023D74 + ldr r1, _080240A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -13219,12 +13219,12 @@ _08024098: bx r0 .align 2, 0 _080240A0: .4byte gBattleControllerExecFlags -_080240A4: .4byte gUnknown_2023D74 +_080240A4: .4byte gBattlescriptCurrInstr _080240A8: .4byte gActiveBattler _080240AC: .4byte gBattleMons _080240B0: .4byte gBattleBufferB _080240B4: .4byte gBaseStats -_080240B8: .4byte gUnknown_2023F20 +_080240B8: .4byte gWishFutureKnock _080240BC: .4byte gBitTable _080240C0: .4byte gBattlerPartyIndexes _080240C4: .4byte gBattleMoves @@ -13240,10 +13240,10 @@ sub_80240D4: @ 80240D4 ldr r0, [r0] cmp r0, 0 bne _08024160 - ldr r0, _0802416C @ =gUnknown_2023D74 + ldr r0, _0802416C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r6, _08024170 @ =gActiveBattler strb r0, [r6] ldrb r0, [r6] @@ -13290,13 +13290,13 @@ _0802412A: lsls r0, 1 adds r0, r1 ldrb r1, [r0] - ldr r4, _0802416C @ =gUnknown_2023D74 + ldr r4, _0802416C @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r2, [r0, 0x2] movs r0, 0 bl BtlController_EmitSwitchInAnim ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r4] adds r0, 0x3 str r0, [r4] @@ -13306,7 +13306,7 @@ _08024160: bx r0 .align 2, 0 _08024168: .4byte gBattleControllerExecFlags -_0802416C: .4byte gUnknown_2023D74 +_0802416C: .4byte gBattlescriptCurrInstr _08024170: .4byte gActiveBattler _08024174: .4byte gBattleTypeFlags _08024178: .4byte 0x0001aa02 @@ -13321,12 +13321,12 @@ sub_802418C: @ 802418C push {r4-r7,lr} mov r7, r8 push {r7} - ldr r4, _080241F0 @ =gUnknown_2023D74 + ldr r4, _080241F0 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] movs r0, 0x7F ands r0, r1 - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r3, _080241F4 @ =gActiveBattler strb r0, [r3] ldr r2, [r4] @@ -13369,7 +13369,7 @@ _080241D8: str r1, [r4] b _08024388 .align 2, 0 -_080241F0: .4byte gUnknown_2023D74 +_080241F0: .4byte gBattlescriptCurrInstr _080241F4: .4byte gActiveBattler _080241F8: .4byte gBattleMons _080241FC: .4byte 0x0400e000 @@ -13542,7 +13542,7 @@ _08024354: cmp r5, 0x6 bne _08024380 _08024358: - ldr r3, _0802437C @ =gUnknown_2023D74 + ldr r3, _0802437C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] @@ -13559,9 +13559,9 @@ _08024358: .align 2, 0 _08024374: .4byte gPlayerParty _08024378: .4byte gBattlerPartyIndexes -_0802437C: .4byte gUnknown_2023D74 +_0802437C: .4byte gBattlescriptCurrInstr _08024380: - ldr r1, _08024394 @ =gUnknown_2023D74 + ldr r1, _08024394 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] @@ -13572,7 +13572,7 @@ _08024388: pop {r0} bx r0 .align 2, 0 -_08024394: .4byte gUnknown_2023D74 +_08024394: .4byte gBattlescriptCurrInstr thumb_func_end sub_802418C thumb_func_start sub_8024398 @@ -13605,7 +13605,7 @@ sub_8024398: @ 8024398 movs r3, 0 bl BtlController_EmitChoosePokemon ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec add sp, 0x4 pop {r4,r5} pop {r0} @@ -13626,7 +13626,7 @@ sub_80243EC: @ 80243EC movs r7, 0 movs r0, 0 mov r9, r0 - ldr r6, _08024498 @ =gUnknown_2023D74 + ldr r6, _08024498 @ =gBattlescriptCurrInstr ldr r2, [r6] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] @@ -13660,7 +13660,7 @@ _08024422: bcc _0802443C b _080248A6 _0802443C: - ldr r7, _080244A8 @ =gUnknown_2023DD0 + ldr r7, _080244A8 @ =gHitMarker ldr r6, _080244AC @ =gBitTable adds r4, r1, 0 ldr r2, _080244B0 @ =gAbsentBattlerFlags @@ -13678,7 +13678,7 @@ _08024446: adds r0, r2, 0 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _080244B4 @@ -13702,18 +13702,18 @@ _08024446: movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080244F6 .align 2, 0 -_08024498: .4byte gUnknown_2023D74 +_08024498: .4byte gBattlescriptCurrInstr _0802449C: .4byte gBattleTypeFlags _080244A0: .4byte gActiveBattler _080244A4: .4byte gBattlersCount -_080244A8: .4byte gUnknown_2023DD0 +_080244A8: .4byte gHitMarker _080244AC: .4byte gBitTable _080244B0: .4byte gAbsentBattlerFlags _080244B4: - ldr r5, _080244E4 @ =gUnknown_2023ECC + ldr r5, _080244E4 @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -13736,13 +13736,13 @@ _080244B4: strb r1, [r0] b _080244F6 .align 2, 0 -_080244E4: .4byte gUnknown_2023ECC +_080244E4: .4byte gSpecialStatuses _080244E8: movs r0, 0 movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080244F6: ldrb r0, [r4] adds r0, 0x1 @@ -13762,7 +13762,7 @@ _08024510: bne _08024518 b _080248A6 _08024518: - ldr r0, _08024570 @ =gUnknown_2023DD0 + ldr r0, _08024570 @ =gHitMarker mov r8, r0 ldr r0, [r0] lsrs r5, r0, 28 @@ -13776,7 +13776,7 @@ _08024518: movs r0, 0 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _08024580 @@ -13800,15 +13800,15 @@ _08024518: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080245CE .align 2, 0 -_08024570: .4byte gUnknown_2023DD0 +_08024570: .4byte gHitMarker _08024574: .4byte gBitTable _08024578: .4byte gActiveBattler _0802457C: .4byte gAbsentBattlerFlags _08024580: - ldr r6, _080245B4 @ =gUnknown_2023ECC + ldr r6, _080245B4 @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -13834,14 +13834,14 @@ _08024580: strb r1, [r0] b _080245CE .align 2, 0 -_080245B4: .4byte gUnknown_2023ECC +_080245B4: .4byte gSpecialStatuses _080245B8: .4byte gBattleStruct _080245BC: movs r0, 0 movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec movs r0, 0x1 mov r9, r0 _080245CE: @@ -13860,7 +13860,7 @@ _080245CE: movs r0, 0x2 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _08024638 @@ -13872,7 +13872,7 @@ _080245CE: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r2, _08024634 @ =gUnknown_2023DD0 + ldr r2, _08024634 @ =gHitMarker ldrb r0, [r4] lsls r0, 2 adds r0, r6 @@ -13884,15 +13884,15 @@ _080245CE: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0802468C .align 2, 0 _08024628: .4byte gBitTable _0802462C: .4byte gActiveBattler _08024630: .4byte gAbsentBattlerFlags -_08024634: .4byte gUnknown_2023DD0 +_08024634: .4byte gHitMarker _08024638: - ldr r6, _0802466C @ =gUnknown_2023ECC + ldr r6, _0802466C @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -13918,7 +13918,7 @@ _08024638: strb r1, [r0] b _0802468C .align 2, 0 -_0802466C: .4byte gUnknown_2023ECC +_0802466C: .4byte gSpecialStatuses _08024670: .4byte gBattleStruct _08024674: movs r0, 0x1 @@ -13930,7 +13930,7 @@ _08024674: movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0802468C: ldr r6, _080246DC @ =gBitTable ldr r0, [r6, 0x4] @@ -13943,7 +13943,7 @@ _0802468C: movs r0, 0x1 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _080246EC @@ -13955,7 +13955,7 @@ _0802468C: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r2, _080246E8 @ =gUnknown_2023DD0 + ldr r2, _080246E8 @ =gHitMarker ldrb r0, [r4] lsls r0, 2 adds r0, r6 @@ -13967,15 +13967,15 @@ _0802468C: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0802473E .align 2, 0 _080246DC: .4byte gBitTable _080246E0: .4byte gActiveBattler _080246E4: .4byte gAbsentBattlerFlags -_080246E8: .4byte gUnknown_2023DD0 +_080246E8: .4byte gHitMarker _080246EC: - ldr r6, _08024720 @ =gUnknown_2023ECC + ldr r6, _08024720 @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -14001,14 +14001,14 @@ _080246EC: strb r1, [r0] b _0802473E .align 2, 0 -_08024720: .4byte gUnknown_2023ECC +_08024720: .4byte gSpecialStatuses _08024724: .4byte gBattleStruct _08024728: movs r0, 0 movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec movs r0, 0x2 mov r2, r9 orrs r2, r0 @@ -14029,7 +14029,7 @@ _0802473E: movs r0, 0x3 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _080247A8 @@ -14041,7 +14041,7 @@ _0802473E: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r2, _080247A4 @ =gUnknown_2023DD0 + ldr r2, _080247A4 @ =gHitMarker ldrb r0, [r4] lsls r0, 2 adds r0, r6 @@ -14053,15 +14053,15 @@ _0802473E: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080247FC .align 2, 0 _08024798: .4byte gBitTable _0802479C: .4byte gActiveBattler _080247A0: .4byte gAbsentBattlerFlags -_080247A4: .4byte gUnknown_2023DD0 +_080247A4: .4byte gHitMarker _080247A8: - ldr r6, _080247DC @ =gUnknown_2023ECC + ldr r6, _080247DC @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -14087,7 +14087,7 @@ _080247A8: strb r1, [r0] b _080247FC .align 2, 0 -_080247DC: .4byte gUnknown_2023ECC +_080247DC: .4byte gSpecialStatuses _080247E0: .4byte gBattleStruct _080247E4: movs r0, 0x2 @@ -14099,9 +14099,9 @@ _080247E4: movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080247FC: - ldr r1, _0802482C @ =gUnknown_2023ECC + ldr r1, _0802482C @ =gSpecialStatuses ldrb r0, [r1] lsls r0, 25 cmp r0, 0 @@ -14126,7 +14126,7 @@ _080247FC: strb r0, [r1] b _08024840 .align 2, 0 -_0802482C: .4byte gUnknown_2023ECC +_0802482C: .4byte gSpecialStatuses _08024830: .4byte gAbsentBattlerFlags _08024834: .4byte gBitTable _08024838: .4byte gActiveBattler @@ -14139,9 +14139,9 @@ _08024840: bl BtlController_EmitLinkStandbyMsg ldr r0, _08024880 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08024850: - ldr r1, _08024884 @ =gUnknown_2023ECC + ldr r1, _08024884 @ =gSpecialStatuses ldrb r0, [r1, 0x14] lsls r0, 25 cmp r0, 0 @@ -14166,7 +14166,7 @@ _08024850: b _08024894 .align 2, 0 _08024880: .4byte gActiveBattler -_08024884: .4byte gUnknown_2023ECC +_08024884: .4byte gSpecialStatuses _08024888: .4byte gAbsentBattlerFlags _0802488C: .4byte gBitTable _08024890: @@ -14179,16 +14179,16 @@ _08024894: bl BtlController_EmitLinkStandbyMsg ldr r0, _080248B0 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080248A6: - ldr r1, _080248B4 @ =gUnknown_2023D74 + ldr r1, _080248B4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] b _08024C2E .align 2, 0 _080248B0: .4byte gActiveBattler -_080248B4: .4byte gUnknown_2023D74 +_080248B4: .4byte gBattlescriptCurrInstr _080248B8: cmp r0, 0x6 beq _080248BE @@ -14208,7 +14208,7 @@ _080248CC: bne _080248D6 b _08024A48 _080248D6: - ldr r7, _08024938 @ =gUnknown_2023DD0 + ldr r7, _08024938 @ =gHitMarker ldr r0, [r7] lsrs r5, r0, 28 ldr r4, _0802493C @ =gBitTable @@ -14227,7 +14227,7 @@ _080248D6: ldrb r1, [r0, 0x1] movs r0, 0x2 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _0802494C @@ -14250,17 +14250,17 @@ _080248D6: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r6] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0802497E .align 2, 0 _08024934: .4byte gBattleTypeFlags -_08024938: .4byte gUnknown_2023DD0 +_08024938: .4byte gHitMarker _0802493C: .4byte gBitTable _08024940: .4byte gActiveBattler _08024944: .4byte gBattleBufferB _08024948: .4byte gAbsentBattlerFlags _0802494C: - ldr r4, _080249DC @ =gUnknown_2023ECC + ldr r4, _080249DC @ =gSpecialStatuses ldrb r0, [r6] lsls r1, r0, 2 adds r1, r0 @@ -14303,7 +14303,7 @@ _0802497E: ldrb r1, [r0] movs r0, 0x3 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _080249FC @@ -14315,7 +14315,7 @@ _0802497E: ldrb r1, [r2] orrs r0, r1 strb r0, [r2] - ldr r2, _080249F8 @ =gUnknown_2023DD0 + ldr r2, _080249F8 @ =gHitMarker ldrb r0, [r5] lsls r0, 2 adds r0, r4 @@ -14327,19 +14327,19 @@ _0802497E: movs r0, 0 bl BtlController_EmitCmd42 ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _08024A2E .align 2, 0 -_080249DC: .4byte gUnknown_2023ECC +_080249DC: .4byte gSpecialStatuses _080249E0: .4byte gBattleStruct _080249E4: .4byte gBitTable _080249E8: .4byte gActiveBattler _080249EC: .4byte gBattleBufferB _080249F0: .4byte 0x00000201 _080249F4: .4byte gAbsentBattlerFlags -_080249F8: .4byte gUnknown_2023DD0 +_080249F8: .4byte gHitMarker _080249FC: - ldr r4, _08024A3C @ =gUnknown_2023ECC + ldr r4, _08024A3C @ =gSpecialStatuses ldrb r0, [r5] lsls r1, r0, 2 adds r1, r0 @@ -14364,24 +14364,24 @@ _080249FC: orrs r1, r2 strb r1, [r0] _08024A2E: - ldr r1, _08024A44 @ =gUnknown_2023D74 + ldr r1, _08024A44 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] mov r12, r1 b _08024A4C .align 2, 0 -_08024A3C: .4byte gUnknown_2023ECC +_08024A3C: .4byte gSpecialStatuses _08024A40: .4byte gBattleStruct -_08024A44: .4byte gUnknown_2023D74 +_08024A44: .4byte gBattlescriptCurrInstr _08024A48: adds r0, r2, 0x6 str r0, [r6] _08024A4C: - ldr r0, _08024A9C @ =gUnknown_2023DD0 + ldr r0, _08024A9C @ =gHitMarker ldr r0, [r0] lsrs r5, r0, 28 - ldr r1, _08024AA0 @ =gUnknown_2023D6D + ldr r1, _08024AA0 @ =gBattlerFainted movs r0, 0 strb r0, [r1] ldr r4, _08024AA4 @ =gBitTable @@ -14421,8 +14421,8 @@ _08024A92: str r1, [r2] b _08024C2E .align 2, 0 -_08024A9C: .4byte gUnknown_2023DD0 -_08024AA0: .4byte gUnknown_2023D6D +_08024A9C: .4byte gHitMarker +_08024AA0: .4byte gBattlerFainted _08024AA4: .4byte gBitTable _08024AA8: .4byte gBattlersCount _08024AAC: @@ -14435,10 +14435,10 @@ _08024AAC: _08024AB8: movs r0, 0x7F ands r0, r1 - bl sub_8016E24 + bl GetBattlerForBattleScript lsls r0, 24 lsrs r7, r0, 24 - ldr r1, _08024AE0 @ =gUnknown_2023ECC + ldr r1, _08024AE0 @ =gSpecialStatuses lsls r0, r7, 2 adds r0, r7 lsls r0, 2 @@ -14452,12 +14452,12 @@ _08024AB8: str r0, [r6] b _08024C2E .align 2, 0 -_08024AE0: .4byte gUnknown_2023ECC +_08024AE0: .4byte gSpecialStatuses _08024AE4: adds r0, r7, 0 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 beq _08024B34 @@ -14472,7 +14472,7 @@ _08024AE4: ldrb r1, [r3] orrs r0, r1 strb r0, [r3] - ldr r3, _08024B30 @ =gUnknown_2023DD0 + ldr r3, _08024B30 @ =gHitMarker ldrb r0, [r2] lsls r0, 2 adds r0, r4 @@ -14488,7 +14488,7 @@ _08024AE4: _08024B24: .4byte gActiveBattler _08024B28: .4byte gAbsentBattlerFlags _08024B2C: .4byte gBitTable -_08024B30: .4byte gUnknown_2023DD0 +_08024B30: .4byte gHitMarker _08024B34: ldr r4, _08024BD8 @ =gActiveBattler strb r7, [r4] @@ -14520,7 +14520,7 @@ _08024B34: movs r3, 0 bl BtlController_EmitChoosePokemon ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r6] adds r0, 0x6 str r0, [r6] @@ -14558,7 +14558,7 @@ _08024BB0: movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08024BC4: ldrb r0, [r4] adds r0, 0x1 @@ -14605,7 +14605,7 @@ _08024C20: movs r1, 0x2 bl BtlController_EmitLinkStandbyMsg ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08024C2E: add sp, 0x4 pop {r3,r4} @@ -14629,10 +14629,10 @@ sub_8024C48: @ 8024C48 beq _08024C54 b _08024E16 _08024C54: - ldr r4, _08024C78 @ =gUnknown_2023D74 + ldr r4, _08024C78 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r7, _08024C7C @ =gActiveBattler strb r0, [r7] ldr r0, [r4] @@ -14646,7 +14646,7 @@ _08024C54: b _08024E0E .align 2, 0 _08024C74: .4byte gBattleControllerExecFlags -_08024C78: .4byte gUnknown_2023D74 +_08024C78: .4byte gBattlescriptCurrInstr _08024C7C: .4byte gActiveBattler _08024C80: cmp r0, 0x2 @@ -14700,7 +14700,7 @@ _08024CD2: .align 2, 0 _08024CDC: .4byte gBattleTypeFlags _08024CE0: - ldr r1, _08024DAC @ =gUnknown_2023E82 + ldr r1, _08024DAC @ =gBattleCommunication ldr r4, _08024DB0 @ =gBattleBufferB ldrb r0, [r7] lsls r0, 9 @@ -14803,7 +14803,7 @@ _08024CE0: strb r0, [r1] b _08024DC2 .align 2, 0 -_08024DAC: .4byte gUnknown_2023E82 +_08024DAC: .4byte gBattleCommunication _08024DB0: .4byte gBattleBufferB _08024DB4: .4byte gBattleStruct _08024DB8: .4byte gBattleTypeFlags @@ -14850,7 +14850,7 @@ _08024DC2: negs r0, r0 strb r0, [r2, 0x4] _08024E0E: - ldr r1, _08024E34 @ =gUnknown_2023D74 + ldr r1, _08024E34 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] @@ -14865,7 +14865,7 @@ _08024E24: .4byte gBattlerAttacker _08024E28: .4byte gBattleTextBuff2 _08024E2C: .4byte gActiveBattler _08024E30: .4byte gBattleBufferB -_08024E34: .4byte gUnknown_2023D74 +_08024E34: .4byte gBattlescriptCurrInstr thumb_func_end sub_8024C48 thumb_func_start sub_8024E38 @@ -14875,15 +14875,15 @@ sub_8024E38: @ 8024E38 mov r6, r8 push {r6,r7} sub sp, 0x4 - ldr r6, _08024F40 @ =gUnknown_2023D74 + ldr r6, _08024F40 @ =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08024F44 @ =gActiveBattler strb r0, [r4] ldrb r0, [r4] bl sub_80174B8 - ldr r2, _08024F48 @ =gUnknown_2023DD0 + ldr r2, _08024F48 @ =gHitMarker ldr r1, _08024F4C @ =gBitTable ldrb r0, [r4] lsls r0, 2 @@ -14893,7 +14893,7 @@ sub_8024E38: @ 8024E38 ldr r0, [r2] bics r0, r1 str r0, [r2] - ldr r2, _08024F50 @ =gUnknown_2023ECC + ldr r2, _08024F50 @ =gSpecialStatuses ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 @@ -14906,7 +14906,7 @@ sub_8024E38: @ 8024E38 strb r0, [r1] ldrb r0, [r4] bl GetBattlerSide - ldr r5, _08024F54 @ =gSideAffecting + ldr r5, _08024F54 @ =gSideStatuses lsls r0, 24 lsrs r0, 23 adds r0, r5 @@ -14996,12 +14996,12 @@ _08024F28: str r0, [r6] b _080250C6 .align 2, 0 -_08024F40: .4byte gUnknown_2023D74 +_08024F40: .4byte gBattlescriptCurrInstr _08024F44: .4byte gActiveBattler -_08024F48: .4byte gUnknown_2023DD0 +_08024F48: .4byte gHitMarker _08024F4C: .4byte gBitTable -_08024F50: .4byte gUnknown_2023ECC -_08024F54: .4byte gSideAffecting +_08024F50: .4byte gSpecialStatuses +_08024F54: .4byte gSideStatuses _08024F58: .4byte gBattleMons _08024F5C: .4byte gSideTimers _08024F60: .4byte gBattleMoveDamage @@ -15056,13 +15056,13 @@ _08024FC4: ldrb r1, [r5] movs r0, 0 movs r2, 0 - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 cmp r0, 0 bne _080250C6 ldrb r0, [r5] bl GetBattlerSide - ldr r1, _08025070 @ =gSideAffecting + ldr r1, _08025070 @ =gSideStatuses lsls r0, 24 lsrs r0, 23 adds r0, r1 @@ -15075,7 +15075,7 @@ _08024FC4: ldrb r3, [r0] cmp r4, r3 bge _08025012 - ldr r6, _0802507C @ =gUnknown_2023BDE + ldr r6, _0802507C @ =gBattlerByTurnOrder ldr r3, _08025080 @ =gUnknown_2023BDA movs r2, 0xC adds r1, r0, 0 @@ -15120,16 +15120,16 @@ _08025020: cmp r4, r0 blt _08025020 _08025046: - ldr r0, _08025088 @ =gUnknown_2023D74 + ldr r0, _08025088 @ =gBattlescriptCurrInstr ldr r1, [r0] ldrb r1, [r1, 0x1] adds r5, r0, 0 cmp r1, 0x5 bne _080250C0 - ldr r0, _0802508C @ =gUnknown_2023DD0 + ldr r0, _0802508C @ =gHitMarker ldr r0, [r0] lsrs r4, r0, 28 - ldr r1, _08025090 @ =gUnknown_2023D6D + ldr r1, _08025090 @ =gBattlerFainted ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -15139,15 +15139,15 @@ _08025046: _08025064: .4byte gBattleMons _08025068: .4byte gActiveBattler _0802506C: .4byte gDisableStructs -_08025070: .4byte gSideAffecting +_08025070: .4byte gSideStatuses _08025074: .4byte 0x0000fdff _08025078: .4byte gBattlersCount -_0802507C: .4byte gUnknown_2023BDE +_0802507C: .4byte gBattlerByTurnOrder _08025080: .4byte gUnknown_2023BDA _08025084: .4byte gBattleStruct -_08025088: .4byte gUnknown_2023D74 -_0802508C: .4byte gUnknown_2023DD0 -_08025090: .4byte gUnknown_2023D6D +_08025088: .4byte gBattlescriptCurrInstr +_0802508C: .4byte gHitMarker +_08025090: .4byte gBattlerFainted _08025094: .4byte gBitTable _08025098: ldr r0, _080250D4 @ =gBattlersCount @@ -15191,7 +15191,7 @@ _080250D8: .4byte gAbsentBattlerFlags thumb_func_start atk53_trainer_slide atk53_trainer_slide: @ 80250DC push {lr} - ldr r0, _080250EC @ =gUnknown_2023D74 + ldr r0, _080250EC @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 @@ -15199,7 +15199,7 @@ atk53_trainer_slide: @ 80250DC movs r0, 0 b _080250F2 .align 2, 0 -_080250EC: .4byte gUnknown_2023D74 +_080250EC: .4byte gBattlescriptCurrInstr _080250F0: movs r0, 0x1 _080250F2: @@ -15210,8 +15210,8 @@ _080250F2: bl BtlController_EmitTrainerSlide ldr r0, _08025114 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08025118 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08025118 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -15219,7 +15219,7 @@ _080250F2: bx r0 .align 2, 0 _08025114: .4byte gActiveBattler -_08025118: .4byte gUnknown_2023D74 +_08025118: .4byte gBattlescriptCurrInstr thumb_func_end atk53_trainer_slide thumb_func_start atk54_playse @@ -15229,7 +15229,7 @@ atk54_playse: @ 802511C ldr r0, _08025150 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] - ldr r4, _08025154 @ =gUnknown_2023D74 + ldr r4, _08025154 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] @@ -15238,7 +15238,7 @@ atk54_playse: @ 802511C movs r0, 0 bl BtlController_EmitPlaySE ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r4] adds r0, 0x3 str r0, [r4] @@ -15248,7 +15248,7 @@ atk54_playse: @ 802511C .align 2, 0 _0802514C: .4byte gActiveBattler _08025150: .4byte gBattlerAttacker -_08025154: .4byte gUnknown_2023D74 +_08025154: .4byte gBattlescriptCurrInstr thumb_func_end atk54_playse thumb_func_start atk55_play_sound @@ -15258,7 +15258,7 @@ atk55_play_sound: @ 8025158 ldr r0, _0802518C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] - ldr r4, _08025190 @ =gUnknown_2023D74 + ldr r4, _08025190 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] @@ -15267,7 +15267,7 @@ atk55_play_sound: @ 8025158 movs r0, 0 bl BtlController_EmitPlayFanfare ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r4] adds r0, 0x3 str r0, [r4] @@ -15277,22 +15277,22 @@ atk55_play_sound: @ 8025158 .align 2, 0 _08025188: .4byte gActiveBattler _0802518C: .4byte gBattlerAttacker -_08025190: .4byte gUnknown_2023D74 +_08025190: .4byte gBattlescriptCurrInstr thumb_func_end atk55_play_sound thumb_func_start atk56_playfaintcry atk56_playfaintcry: @ 8025194 push {r4,r5,lr} - ldr r5, _080251BC @ =gUnknown_2023D74 + ldr r5, _080251BC @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _080251C0 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl BtlController_EmitFaintingCry ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -15300,7 +15300,7 @@ atk56_playfaintcry: @ 8025194 pop {r0} bx r0 .align 2, 0 -_080251BC: .4byte gUnknown_2023D74 +_080251BC: .4byte gBattlescriptCurrInstr _080251C0: .4byte gActiveBattler thumb_func_end atk56_playfaintcry @@ -15316,8 +15316,8 @@ atk57: @ 80251C4 movs r0, 0 bl BtlController_EmitCmd55 ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _080251F8 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _080251F8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -15327,23 +15327,23 @@ atk57: @ 80251C4 .align 2, 0 _080251F0: .4byte gActiveBattler _080251F4: .4byte gBattleOutcome -_080251F8: .4byte gUnknown_2023D74 +_080251F8: .4byte gBattlescriptCurrInstr thumb_func_end atk57 thumb_func_start atk58_returntoball atk58_returntoball: @ 80251FC push {r4,r5,lr} - ldr r5, _08025228 @ =gUnknown_2023D74 + ldr r5, _08025228 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _0802522C @ =gActiveBattler strb r0, [r4] movs r0, 0 movs r1, 0x1 bl BtlController_EmitReturnMonToBall ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -15351,14 +15351,14 @@ atk58_returntoball: @ 80251FC pop {r0} bx r0 .align 2, 0 -_08025228: .4byte gUnknown_2023D74 +_08025228: .4byte gBattlescriptCurrInstr _0802522C: .4byte gActiveBattler thumb_func_end atk58_returntoball thumb_func_start atk59_handlelearnnewmove atk59_handlelearnnewmove: @ 8025230 push {r4-r7,lr} - ldr r0, _080252A4 @ =gUnknown_2023D74 + ldr r0, _080252A4 @ =gBattlescriptCurrInstr ldr r2, [r0] ldrb r6, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -15412,11 +15412,11 @@ _0802527E: _0802529A: cmp r5, 0 bne _080252B4 - ldr r0, _080252A4 @ =gUnknown_2023D74 + ldr r0, _080252A4 @ =gBattlescriptCurrInstr str r4, [r0] b _0802535C .align 2, 0 -_080252A4: .4byte gUnknown_2023D74 +_080252A4: .4byte gBattlescriptCurrInstr _080252A8: .4byte gBattleStruct _080252AC: .4byte gPlayerParty _080252B0: .4byte 0x0000fffe @@ -15424,14 +15424,14 @@ _080252B4: ldr r0, _080252C4 @ =0x0000ffff cmp r5, r0 bne _080252CC - ldr r1, _080252C8 @ =gUnknown_2023D74 + ldr r1, _080252C8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] b _0802535C .align 2, 0 _080252C4: .4byte 0x0000ffff -_080252C8: .4byte gUnknown_2023D74 +_080252C8: .4byte gBattlescriptCurrInstr _080252CC: movs r0, 0 bl GetBattlerAtPosition @@ -15501,7 +15501,7 @@ _0802530C: adds r1, r5, 0 bl GiveMoveToBattleMon _08025358: - ldr r0, _08025378 @ =gUnknown_2023D74 + ldr r0, _08025378 @ =gBattlescriptCurrInstr str r6, [r0] _0802535C: pop {r4-r7} @@ -15513,7 +15513,7 @@ _08025368: .4byte gBattlerPartyIndexes _0802536C: .4byte gBattleStruct _08025370: .4byte gBattleMons _08025374: .4byte gBattleTypeFlags -_08025378: .4byte gUnknown_2023D74 +_08025378: .4byte gBattlescriptCurrInstr thumb_func_end atk59_handlelearnnewmove thumb_func_start sub_802537C @@ -15564,14 +15564,14 @@ _080253C4: ldrb r0, [r1, 0x1F] adds r0, 0x1 strb r0, [r1, 0x1F] - ldr r0, _080253F8 @ =gUnknown_2023E82 + ldr r0, _080253F8 @ =gBattleCommunication strb r4, [r0, 0x1] bl sub_802DCB8 b _080256D0 .align 2, 0 _080253F0: .4byte gUnknown_83FE791 _080253F4: .4byte gBattleScripting -_080253F8: .4byte gUnknown_2023E82 +_080253F8: .4byte gBattleCommunication _080253FC: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] @@ -15579,7 +15579,7 @@ _080253FC: ands r0, r1 cmp r0, 0 beq _08025422 - ldr r4, _08025488 @ =gUnknown_2023E82 + ldr r4, _08025488 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 beq _08025422 @@ -15596,7 +15596,7 @@ _08025422: ands r0, r1 cmp r0, 0 beq _08025448 - ldr r4, _08025488 @ =gUnknown_2023E82 + ldr r4, _08025488 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025448 @@ -15616,7 +15616,7 @@ _08025448: beq _0802548C movs r0, 0x5 bl PlaySE - ldr r0, _08025488 @ =gUnknown_2023E82 + ldr r0, _08025488 @ =gBattleCommunication ldrb r4, [r0, 0x1] cmp r4, 0 bne _0802549C @@ -15636,7 +15636,7 @@ _08025448: b _080254D8 .align 2, 0 _08025484: .4byte gMain -_08025488: .4byte gUnknown_2023E82 +_08025488: .4byte gBattleCommunication _0802548C: movs r0, 0x2 ands r0, r1 @@ -15755,7 +15755,7 @@ _08025580: .4byte 0x0000013f _08025584: .4byte gActiveBattler _08025588: .4byte gBattleScripting _0802558C: - ldr r3, _08025680 @ =gUnknown_2023D74 + ldr r3, _08025680 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -15872,7 +15872,7 @@ _08025622: bl SetBattleMonMoveSlot b _080256D0 .align 2, 0 -_08025680: .4byte gUnknown_2023D74 +_08025680: .4byte gBattlescriptCurrInstr _08025684: .4byte gBattleTextBuff2 _08025688: .4byte gMoveToLearn _0802568C: .4byte gBattlerPartyIndexes @@ -15889,13 +15889,13 @@ _080256A4: movs r2, 0x1D movs r3, 0xD bl sub_802DB7C - ldr r1, _080256C0 @ =gUnknown_2023D74 + ldr r1, _080256C0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080256D0 .align 2, 0 -_080256C0: .4byte gUnknown_2023D74 +_080256C0: .4byte gBattlescriptCurrInstr _080256C4: ldr r0, _080256DC @ =gBattleControllerExecFlags ldr r0, [r0] @@ -15940,13 +15940,13 @@ _080256F8: ldrb r0, [r5, 0x1F] adds r0, 0x1 strb r0, [r5, 0x1F] - ldr r0, _08025724 @ =gUnknown_2023E82 + ldr r0, _08025724 @ =gBattleCommunication strb r4, [r0, 0x1] bl sub_802DCB8 b _0802580E .align 2, 0 _08025720: .4byte gUnknown_83FE791 -_08025724: .4byte gUnknown_2023E82 +_08025724: .4byte gBattleCommunication _08025728: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] @@ -15954,7 +15954,7 @@ _08025728: ands r0, r1 cmp r0, 0 beq _0802574E - ldr r4, _080257B0 @ =gUnknown_2023E82 + ldr r4, _080257B0 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 beq _0802574E @@ -15971,7 +15971,7 @@ _0802574E: ands r0, r1 cmp r0, 0 beq _08025774 - ldr r4, _080257B0 @ =gUnknown_2023E82 + ldr r4, _080257B0 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025774 @@ -15991,11 +15991,11 @@ _08025774: beq _080257D8 movs r0, 0x5 bl PlaySE - ldr r0, _080257B0 @ =gUnknown_2023E82 + ldr r0, _080257B0 @ =gBattleCommunication ldrb r0, [r0, 0x1] cmp r0, 0 beq _080257B8 - ldr r3, _080257B4 @ =gUnknown_2023D74 + ldr r3, _080257B4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -16011,10 +16011,10 @@ _08025774: b _080257C0 .align 2, 0 _080257AC: .4byte gMain -_080257B0: .4byte gUnknown_2023E82 -_080257B4: .4byte gUnknown_2023D74 +_080257B0: .4byte gBattleCommunication +_080257B4: .4byte gBattlescriptCurrInstr _080257B8: - ldr r1, _080257D4 @ =gUnknown_2023D74 + ldr r1, _080257D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -16028,7 +16028,7 @@ _080257C0: bl sub_802DB7C b _0802580E .align 2, 0 -_080257D4: .4byte gUnknown_2023D74 +_080257D4: .4byte gBattlescriptCurrInstr _080257D8: movs r0, 0x2 ands r0, r1 @@ -16036,7 +16036,7 @@ _080257D8: beq _0802580E movs r0, 0x5 bl PlaySE - ldr r3, _08025818 @ =gUnknown_2023D74 + ldr r3, _08025818 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -16061,16 +16061,16 @@ _0802580E: pop {r0} bx r0 .align 2, 0 -_08025818: .4byte gUnknown_2023D74 +_08025818: .4byte gBattlescriptCurrInstr thumb_func_end sub_80256E0 thumb_func_start sub_802581C sub_802581C: @ 802581C push {r4,lr} - ldr r4, _08025888 @ =gUnknown_2023D74 + ldr r4, _08025888 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r2, _0802588C @ =gActiveBattler strb r0, [r2] ldr r0, _08025890 @ =gMoveResultFlags @@ -16079,7 +16079,7 @@ sub_802581C: @ 802581C ands r0, r1 cmp r0, 0 bne _080258A0 - ldr r0, _08025894 @ =gUnknown_2023DD0 + ldr r0, _08025894 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 1 @@ -16111,17 +16111,17 @@ _0802586E: bl BtlController_EmitHitAnimation ldr r0, _0802588C @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08025888 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08025888 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] b _080258A6 .align 2, 0 -_08025888: .4byte gUnknown_2023D74 +_08025888: .4byte gBattlescriptCurrInstr _0802588C: .4byte gActiveBattler _08025890: .4byte gMoveResultFlags -_08025894: .4byte gUnknown_2023DD0 +_08025894: .4byte gHitMarker _08025898: .4byte gBattleMons _0802589C: .4byte gDisableStructs _080258A0: @@ -16334,16 +16334,16 @@ _08025A00: strb r0, [r1, 0x8] cmp r4, 0 beq _08025A48 - ldr r1, _08025A44 @ =gUnknown_2023D74 + ldr r1, _08025A44 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08025A62 .align 2, 0 _08025A40: .4byte gBattleTextBuff1 -_08025A44: .4byte gUnknown_2023D74 +_08025A44: .4byte gBattlescriptCurrInstr _08025A48: - ldr r3, _08025A6C @ =gUnknown_2023D74 + ldr r3, _08025A6C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -16363,7 +16363,7 @@ _08025A62: pop {r0} bx r0 .align 2, 0 -_08025A6C: .4byte gUnknown_2023D74 +_08025A6C: .4byte gBattlescriptCurrInstr thumb_func_end sub_80258AC thumb_func_start atk5E @@ -16371,13 +16371,13 @@ atk5E: @ 8025A70 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r4, _08025A94 @ =gUnknown_2023D74 + ldr r4, _08025A94 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r6, _08025A98 @ =gActiveBattler strb r0, [r6] - ldr r5, _08025A9C @ =gUnknown_2023E82 + ldr r5, _08025A9C @ =gBattleCommunication ldrb r0, [r5] mov r8, r4 cmp r0, 0 @@ -16386,16 +16386,16 @@ atk5E: @ 8025A70 beq _08025AB8 b _08025B0C .align 2, 0 -_08025A94: .4byte gUnknown_2023D74 +_08025A94: .4byte gBattlescriptCurrInstr _08025A98: .4byte gActiveBattler -_08025A9C: .4byte gUnknown_2023E82 +_08025A9C: .4byte gBattleCommunication _08025AA0: movs r0, 0 movs r1, 0 movs r2, 0 bl BtlController_EmitGetMonData ldrb r0, [r6] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] @@ -16467,7 +16467,7 @@ atk5F: @ 8025B24 ldrb r0, [r1] strb r0, [r2] strb r3, [r1] - ldr r2, _08025B58 @ =gUnknown_2023DD0 + ldr r2, _08025B58 @ =gHitMarker ldr r1, [r2] movs r3, 0x80 lsls r3, 5 @@ -16482,20 +16482,20 @@ atk5F: @ 8025B24 _08025B4C: .4byte gActiveBattler _08025B50: .4byte gBattlerAttacker _08025B54: .4byte gBattlerTarget -_08025B58: .4byte gUnknown_2023DD0 +_08025B58: .4byte gHitMarker _08025B5C: .4byte 0xffffefff _08025B60: orrs r1, r3 _08025B62: str r1, [r2] - ldr r1, _08025B70 @ =gUnknown_2023D74 + ldr r1, _08025B70 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_08025B70: .4byte gUnknown_2023D74 +_08025B70: .4byte gBattlescriptCurrInstr thumb_func_end atk5F thumb_func_start atk60_incrementgamestat @@ -16507,12 +16507,12 @@ atk60_incrementgamestat: @ 8025B74 lsls r0, 24 cmp r0, 0 bne _08025B8E - ldr r0, _08025BA0 @ =gUnknown_2023D74 + ldr r0, _08025BA0 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl IncrementGameStat _08025B8E: - ldr r1, _08025BA0 @ =gUnknown_2023D74 + ldr r1, _08025BA0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -16520,7 +16520,7 @@ _08025B8E: bx r0 .align 2, 0 _08025B9C: .4byte gBattlerAttacker -_08025BA0: .4byte gUnknown_2023D74 +_08025BA0: .4byte gBattlescriptCurrInstr thumb_func_end atk60_incrementgamestat thumb_func_start atk61_drawpartystatussummary @@ -16533,10 +16533,10 @@ atk61_drawpartystatussummary: @ 8025BA4 ldr r0, [r0] cmp r0, 0 bne _08025C58 - ldr r0, _08025C0C @ =gUnknown_2023D74 + ldr r0, _08025C0C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _08025C10 @ =gActiveBattler strb r0, [r1] ldrb r0, [r1] @@ -16576,7 +16576,7 @@ _08025C00: b _08025C32 .align 2, 0 _08025C08: .4byte gBattleControllerExecFlags -_08025C0C: .4byte gUnknown_2023D74 +_08025C0C: .4byte gBattlescriptCurrInstr _08025C10: .4byte gActiveBattler _08025C14: .4byte gEnemyParty _08025C18: .4byte gPlayerParty @@ -16602,8 +16602,8 @@ _08025C32: bl BtlController_EmitDrawPartyStatusSummary ldr r0, _08025C64 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _08025C68 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08025C68 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -16616,22 +16616,22 @@ _08025C58: bx r0 .align 2, 0 _08025C64: .4byte gActiveBattler -_08025C68: .4byte gUnknown_2023D74 +_08025C68: .4byte gBattlescriptCurrInstr thumb_func_end atk61_drawpartystatussummary thumb_func_start atk62 atk62: @ 8025C6C push {r4,r5,lr} - ldr r5, _08025C94 @ =gUnknown_2023D74 + ldr r5, _08025C94 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08025C98 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl BtlController_EmitHidePartyStatusSummary ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -16639,14 +16639,14 @@ atk62: @ 8025C6C pop {r0} bx r0 .align 2, 0 -_08025C94: .4byte gUnknown_2023D74 +_08025C94: .4byte gBattlescriptCurrInstr _08025C98: .4byte gActiveBattler thumb_func_end atk62 thumb_func_start atk63_jumptorandomattack atk63_jumptorandomattack: @ 8025C9C push {r4,lr} - ldr r0, _08025CB4 @ =gUnknown_2023D74 + ldr r0, _08025CB4 @ =gBattlescriptCurrInstr ldr r1, [r0] ldrb r1, [r1, 0x1] adds r4, r0, 0 @@ -16658,7 +16658,7 @@ atk63_jumptorandomattack: @ 8025C9C strh r1, [r0] b _08025CCE .align 2, 0 -_08025CB4: .4byte gUnknown_2023D74 +_08025CB4: .4byte gBattlescriptCurrInstr _08025CB8: .4byte gCurrentMove _08025CBC: .4byte gUnknown_2023D4E _08025CC0: @@ -16700,10 +16700,10 @@ atk64_statusanimation: @ 8025D00 ldr r0, [r0] cmp r0, 0 bne _08025D68 - ldr r0, _08025D74 @ =gUnknown_2023D74 + ldr r0, _08025D74 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08025D78 @ =gActiveBattler strb r0, [r4] ldr r1, _08025D7C @ =gStatuses3 @@ -16723,7 +16723,7 @@ atk64_statusanimation: @ 8025D00 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025D60 - ldr r0, _08025D88 @ =gUnknown_2023DD0 + ldr r0, _08025D88 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -16739,9 +16739,9 @@ atk64_statusanimation: @ 8025D00 movs r1, 0 bl BtlController_EmitStatusAnimation ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08025D60: - ldr r1, _08025D74 @ =gUnknown_2023D74 + ldr r1, _08025D74 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -16751,12 +16751,12 @@ _08025D68: bx r0 .align 2, 0 _08025D70: .4byte gBattleControllerExecFlags -_08025D74: .4byte gUnknown_2023D74 +_08025D74: .4byte gBattlescriptCurrInstr _08025D78: .4byte gActiveBattler _08025D7C: .4byte gStatuses3 _08025D80: .4byte 0x000400c0 _08025D84: .4byte gDisableStructs -_08025D88: .4byte gUnknown_2023DD0 +_08025D88: .4byte gHitMarker _08025D8C: .4byte gBattleMons thumb_func_end atk64_statusanimation @@ -16767,10 +16767,10 @@ atk65_status2animation: @ 8025D90 ldr r0, [r0] cmp r0, 0 bne _08025E10 - ldr r4, _08025E1C @ =gUnknown_2023D74 + ldr r4, _08025E1C @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r5, _08025E20 @ =gActiveBattler strb r0, [r5] ldr r1, [r4] @@ -16801,7 +16801,7 @@ atk65_status2animation: @ 8025D90 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025E08 - ldr r0, _08025E30 @ =gUnknown_2023DD0 + ldr r0, _08025E30 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -16818,9 +16818,9 @@ atk65_status2animation: @ 8025D90 movs r1, 0x1 bl BtlController_EmitStatusAnimation ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08025E08: - ldr r1, _08025E1C @ =gUnknown_2023D74 + ldr r1, _08025E1C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] @@ -16830,12 +16830,12 @@ _08025E10: bx r0 .align 2, 0 _08025E18: .4byte gBattleControllerExecFlags -_08025E1C: .4byte gUnknown_2023D74 +_08025E1C: .4byte gBattlescriptCurrInstr _08025E20: .4byte gActiveBattler _08025E24: .4byte gStatuses3 _08025E28: .4byte 0x000400c0 _08025E2C: .4byte gDisableStructs -_08025E30: .4byte gUnknown_2023DD0 +_08025E30: .4byte gHitMarker _08025E34: .4byte gBattleMons thumb_func_end atk65_status2animation @@ -16846,10 +16846,10 @@ atk66_chosenstatusanimation: @ 8025E38 ldr r0, [r0] cmp r0, 0 bne _08025EAA - ldr r4, _08025EB4 @ =gUnknown_2023D74 + ldr r4, _08025EB4 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r5, _08025EB8 @ =gActiveBattler strb r0, [r5] ldr r4, [r4] @@ -16880,7 +16880,7 @@ atk66_chosenstatusanimation: @ 8025E38 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025EA2 - ldr r0, _08025EC8 @ =gUnknown_2023DD0 + ldr r0, _08025EC8 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 @@ -16890,9 +16890,9 @@ atk66_chosenstatusanimation: @ 8025E38 movs r0, 0 bl BtlController_EmitStatusAnimation ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08025EA2: - ldr r1, _08025EB4 @ =gUnknown_2023D74 + ldr r1, _08025EB4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x7 str r0, [r1] @@ -16902,19 +16902,19 @@ _08025EAA: bx r0 .align 2, 0 _08025EB0: .4byte gBattleControllerExecFlags -_08025EB4: .4byte gUnknown_2023D74 +_08025EB4: .4byte gBattlescriptCurrInstr _08025EB8: .4byte gActiveBattler _08025EBC: .4byte gStatuses3 _08025EC0: .4byte 0x000400c0 _08025EC4: .4byte gDisableStructs -_08025EC8: .4byte gUnknown_2023DD0 +_08025EC8: .4byte gHitMarker thumb_func_end atk66_chosenstatusanimation thumb_func_start atk67_yesnobox atk67_yesnobox: @ 8025ECC push {r4,r5,lr} sub sp, 0x4 - ldr r5, _08025EE0 @ =gUnknown_2023E82 + ldr r5, _08025EE0 @ =gBattleCommunication ldrb r4, [r5] cmp r4, 0 beq _08025EE4 @@ -16922,7 +16922,7 @@ atk67_yesnobox: @ 8025ECC beq _08025F0C b _08025F9A .align 2, 0 -_08025EE0: .4byte gUnknown_2023E82 +_08025EE0: .4byte gBattleCommunication _08025EE4: str r4, [sp] movs r0, 0x17 @@ -16964,7 +16964,7 @@ _08025F30: ands r0, r1 cmp r0, 0 beq _08025F56 - ldr r4, _08025F70 @ =gUnknown_2023E82 + ldr r4, _08025F70 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025F56 @@ -16981,13 +16981,13 @@ _08025F56: ands r0, r1 cmp r0, 0 beq _08025F74 - ldr r0, _08025F70 @ =gUnknown_2023E82 + ldr r0, _08025F70 @ =gBattleCommunication movs r4, 0x1 strb r4, [r0, 0x1] b _08025F7E .align 2, 0 _08025F6C: .4byte gMain -_08025F70: .4byte gUnknown_2023E82 +_08025F70: .4byte gBattleCommunication _08025F74: movs r4, 0x1 adds r0, r4, 0 @@ -17003,7 +17003,7 @@ _08025F7E: movs r2, 0x1D movs r3, 0xD bl sub_802DB7C - ldr r1, _08025FA4 @ =gUnknown_2023D74 + ldr r1, _08025FA4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -17013,7 +17013,7 @@ _08025F9A: pop {r0} bx r0 .align 2, 0 -_08025FA4: .4byte gUnknown_2023D74 +_08025FA4: .4byte gBattlescriptCurrInstr thumb_func_end atk67_yesnobox thumb_func_start atk68_cancelallactions @@ -17021,7 +17021,7 @@ atk68_cancelallactions: @ 8025FA8 push {r4,r5,lr} movs r1, 0 ldr r2, _08025FD4 @ =gBattlersCount - ldr r5, _08025FD8 @ =gUnknown_2023D74 + ldr r5, _08025FD8 @ =gBattlescriptCurrInstr ldrb r0, [r2] cmp r1, r0 bge _08025FC6 @@ -17043,7 +17043,7 @@ _08025FC6: bx r0 .align 2, 0 _08025FD4: .4byte gBattlersCount -_08025FD8: .4byte gUnknown_2023D74 +_08025FD8: .4byte gBattlescriptCurrInstr _08025FDC: .4byte gUnknown_2023BDA thumb_func_end atk68_cancelallactions @@ -17103,7 +17103,7 @@ _0802602E: ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 - ldr r2, _080260F8 @ =gUnknown_2023ECC + ldr r2, _080260F8 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -17139,14 +17139,14 @@ _0802606C: ldrb r0, [r0] cmp r0, 0x65 beq _080260BE - ldr r0, _08026108 @ =gUnknown_2023E8C + ldr r0, _08026108 @ =gProtectStructs lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _080260BE - ldr r0, _080260F8 @ =gUnknown_2023ECC + ldr r0, _080260F8 @ =gSpecialStatuses lsls r1, r4, 2 adds r1, r4 lsls r1, 2 @@ -17167,7 +17167,7 @@ _080260BE: bgt _0802613C subs r0, r1, 0x1 str r0, [r2] - ldr r1, _08026108 @ =gUnknown_2023E8C + ldr r1, _08026108 @ =gProtectStructs ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 @@ -17184,15 +17184,15 @@ _080260BE: .align 2, 0 _080260F0: .4byte gPotentialItemEffectBattler _080260F4: .4byte gBattlerTarget -_080260F8: .4byte gUnknown_2023ECC +_080260F8: .4byte gSpecialStatuses _080260FC: .4byte gBattleMons _08026100: .4byte gBattleMoves _08026104: .4byte gCurrentMove -_08026108: .4byte gUnknown_2023E8C +_08026108: .4byte gProtectStructs _0802610C: .4byte gBattleMoveDamage _08026110: .4byte gMoveResultFlags _08026114: - ldr r0, _0802614C @ =gUnknown_2023ECC + ldr r0, _0802614C @ =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 @@ -17213,7 +17213,7 @@ _08026114: ldrh r0, [r0, 0x2E] strh r0, [r1] _0802613C: - ldr r1, _08026158 @ =gUnknown_2023D74 + ldr r1, _08026158 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -17221,20 +17221,20 @@ _0802613C: pop {r0} bx r0 .align 2, 0 -_0802614C: .4byte gUnknown_2023ECC +_0802614C: .4byte gSpecialStatuses _08026150: .4byte gMoveResultFlags _08026154: .4byte gLastUsedItem -_08026158: .4byte gUnknown_2023D74 +_08026158: .4byte gBattlescriptCurrInstr thumb_func_end atk69_adjustsetdamage thumb_func_start atk6A_removeitem atk6A_removeitem: @ 802615C push {r4-r6,lr} sub sp, 0x4 - ldr r6, _080261BC @ =gUnknown_2023D74 + ldr r6, _080261BC @ =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r5, _080261C0 @ =gActiveBattler strb r0, [r5] ldr r1, _080261C4 @ =gBattleStruct @@ -17266,7 +17266,7 @@ atk6A_removeitem: @ 802615C movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r5] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r6] adds r0, 0x2 str r0, [r6] @@ -17275,7 +17275,7 @@ atk6A_removeitem: @ 802615C pop {r0} bx r0 .align 2, 0 -_080261BC: .4byte gUnknown_2023D74 +_080261BC: .4byte gBattlescriptCurrInstr _080261C0: .4byte gActiveBattler _080261C4: .4byte gBattleStruct _080261C8: .4byte gBattleMons @@ -17299,7 +17299,7 @@ atk6B_atknameinbuff1: @ 80261CC strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _08026204 @ =gUnknown_2023D74 + ldr r1, _08026204 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -17308,7 +17308,7 @@ atk6B_atknameinbuff1: @ 80261CC _080261F8: .4byte gBattleTextBuff1 _080261FC: .4byte gBattlerAttacker _08026200: .4byte gBattlerPartyIndexes -_08026204: .4byte gUnknown_2023D74 +_08026204: .4byte gBattlescriptCurrInstr thumb_func_end atk6B_atknameinbuff1 thumb_func_start atk6C_drawlvlupbox @@ -17524,7 +17524,7 @@ _080263C4: bl ShowBg movs r0, 0x1 bl ShowBg - ldr r1, _08026400 @ =gUnknown_2023D74 + ldr r1, _08026400 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -17534,7 +17534,7 @@ _080263F6: pop {r0} bx r0 .align 2, 0 -_08026400: .4byte gUnknown_2023D74 +_08026400: .4byte gBattlescriptCurrInstr thumb_func_end atk6C_drawlvlupbox thumb_func_start sub_8026404 @@ -18025,14 +18025,14 @@ _080267D2: atk6D_resetsentmonsvalue: @ 80267D8 push {lr} bl ResetSentPokesToOpponentValue - ldr r1, _080267EC @ =gUnknown_2023D74 + ldr r1, _080267EC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080267EC: .4byte gUnknown_2023D74 +_080267EC: .4byte gBattlescriptCurrInstr thumb_func_end atk6D_resetsentmonsvalue thumb_func_start atk6E_setatktoplayer0 @@ -18042,7 +18042,7 @@ atk6E_setatktoplayer0: @ 80267F0 bl GetBattlerAtPosition ldr r1, _08026808 @ =gBattlerAttacker strb r0, [r1] - ldr r1, _0802680C @ =gUnknown_2023D74 + ldr r1, _0802680C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -18050,23 +18050,23 @@ atk6E_setatktoplayer0: @ 80267F0 bx r0 .align 2, 0 _08026808: .4byte gBattlerAttacker -_0802680C: .4byte gUnknown_2023D74 +_0802680C: .4byte gBattlescriptCurrInstr thumb_func_end atk6E_setatktoplayer0 thumb_func_start atk6F_makevisible atk6F_makevisible: @ 8026810 push {r4,r5,lr} - ldr r5, _0802683C @ =gUnknown_2023D74 + ldr r5, _0802683C @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _08026840 @ =gActiveBattler strb r0, [r4] movs r0, 0 movs r1, 0 bl BtlController_EmitSpriteInvisibility ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -18074,17 +18074,17 @@ atk6F_makevisible: @ 8026810 pop {r0} bx r0 .align 2, 0 -_0802683C: .4byte gUnknown_2023D74 +_0802683C: .4byte gBattlescriptCurrInstr _08026840: .4byte gActiveBattler thumb_func_end atk6F_makevisible thumb_func_start atk70_recordlastability atk70_recordlastability: @ 8026844 push {r4,lr} - ldr r4, _0802686C @ =gUnknown_2023D74 + ldr r4, _0802686C @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _08026870 @ =gActiveBattler strb r0, [r1] ldrb r0, [r1] @@ -18098,7 +18098,7 @@ atk70_recordlastability: @ 8026844 pop {r0} bx r0 .align 2, 0 -_0802686C: .4byte gUnknown_2023D74 +_0802686C: .4byte gBattlescriptCurrInstr _08026870: .4byte gActiveBattler _08026874: .4byte gLastUsedAbility thumb_func_end atk70_recordlastability @@ -18130,26 +18130,26 @@ _0802689C: .4byte gMoveToLearn atk71_buffermovetolearn: @ 80268A0 push {lr} bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r1, _080268B4 @ =gUnknown_2023D74 + ldr r1, _080268B4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080268B4: .4byte gUnknown_2023D74 +_080268B4: .4byte gBattlescriptCurrInstr thumb_func_end atk71_buffermovetolearn thumb_func_start atk72_jumpifplayerran atk72_jumpifplayerran: @ 80268B8 push {lr} - ldr r0, _080268E4 @ =gUnknown_2023D6D + ldr r0, _080268E4 @ =gBattlerFainted ldrb r0, [r0] bl sub_8016748 lsls r0, 24 cmp r0, 0 beq _080268EC - ldr r3, _080268E8 @ =gUnknown_2023D74 + ldr r3, _080268E8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -18164,10 +18164,10 @@ atk72_jumpifplayerran: @ 80268B8 str r1, [r3] b _080268F4 .align 2, 0 -_080268E4: .4byte gUnknown_2023D6D -_080268E8: .4byte gUnknown_2023D74 +_080268E4: .4byte gBattlerFainted +_080268E8: .4byte gBattlescriptCurrInstr _080268EC: - ldr r1, _080268F8 @ =gUnknown_2023D74 + ldr r1, _080268F8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -18175,7 +18175,7 @@ _080268F4: pop {r0} bx r0 .align 2, 0 -_080268F8: .4byte gUnknown_2023D74 +_080268F8: .4byte gBattlescriptCurrInstr thumb_func_end atk72_jumpifplayerran thumb_func_start atk73_hpthresholds @@ -18187,10 +18187,10 @@ atk73_hpthresholds: @ 80268FC ands r4, r6 cmp r4, 0 bne _08026992 - ldr r0, _08026950 @ =gUnknown_2023D74 + ldr r0, _08026950 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _08026954 @ =gActiveBattler strb r0, [r1] movs r1, 0x1 @@ -18222,7 +18222,7 @@ _08026942: b _08026992 .align 2, 0 _0802694C: .4byte gBattleTypeFlags -_08026950: .4byte gUnknown_2023D74 +_08026950: .4byte gBattlescriptCurrInstr _08026954: .4byte gActiveBattler _08026958: .4byte gBattleMons _0802695C: .4byte gBattleStruct @@ -18254,7 +18254,7 @@ _08026988: _08026990: strb r1, [r0] _08026992: - ldr r1, _080269A4 @ =gUnknown_2023D74 + ldr r1, _080269A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -18263,7 +18263,7 @@ _08026992: bx r0 .align 2, 0 _080269A0: .4byte gBattleStruct -_080269A4: .4byte gUnknown_2023D74 +_080269A4: .4byte gBattlescriptCurrInstr thumb_func_end atk73_hpthresholds thumb_func_start atk74_hpthresholds2 @@ -18278,10 +18278,10 @@ atk74_hpthresholds2: @ 80269A8 ands r7, r0 cmp r7, 0 bne _08026A42 - ldr r0, _08026A10 @ =gUnknown_2023D74 + ldr r0, _08026A10 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript adds r4, r0, 0 ldr r0, _08026A14 @ =gActiveBattler strb r4, [r0] @@ -18317,7 +18317,7 @@ atk74_hpthresholds2: @ 80269A8 b _08026A42 .align 2, 0 _08026A0C: .4byte gBattleTypeFlags -_08026A10: .4byte gUnknown_2023D74 +_08026A10: .4byte gBattlescriptCurrInstr _08026A14: .4byte gActiveBattler _08026A18: .4byte gBattleStruct _08026A1C: .4byte gBattleMons @@ -18343,7 +18343,7 @@ _08026A3A: _08026A40: strb r0, [r1] _08026A42: - ldr r1, _08026A54 @ =gUnknown_2023D74 + ldr r1, _08026A54 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -18353,7 +18353,7 @@ _08026A42: pop {r0} bx r0 .align 2, 0 -_08026A54: .4byte gUnknown_2023D74 +_08026A54: .4byte gBattlescriptCurrInstr thumb_func_end atk74_hpthresholds2 thumb_func_start atk75_useitemonopponent @@ -18381,7 +18381,7 @@ atk75_useitemonopponent: @ 8026A58 str r3, [sp] movs r3, 0 bl PokemonUseItemEffects - ldr r1, _08026AAC @ =gUnknown_2023D74 + ldr r1, _08026AAC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -18394,7 +18394,7 @@ _08026A9C: .4byte gBattlerAttacker _08026AA0: .4byte gBattlerPartyIndexes _08026AA4: .4byte gEnemyParty _08026AA8: .4byte gLastUsedItem -_08026AAC: .4byte gUnknown_2023D74 +_08026AAC: .4byte gBattlescriptCurrInstr thumb_func_end atk75_useitemonopponent thumb_func_start sub_8026AB0 @@ -18404,10 +18404,10 @@ sub_8026AB0: @ 8026AB0 mov r6, r8 push {r6,r7} sub sp, 0x8 - ldr r4, _08026ADC @ =gUnknown_2023D74 + ldr r4, _08026ADC @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _08026AE0 @ =gActiveBattler strb r0, [r1] ldr r0, [r4] @@ -18422,7 +18422,7 @@ _08026AD2: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08026ADC: .4byte gUnknown_2023D74 +_08026ADC: .4byte gBattlescriptCurrInstr _08026AE0: .4byte gActiveBattler _08026AE4: .4byte _08026AE8 .align 2, 0 @@ -18492,11 +18492,11 @@ _08026B84: .4byte gBattlerTarget _08026B88: .4byte gActiveBattler _08026B8C: bl IsRunningFromBattleImpossible - ldr r1, _08026B98 @ =gUnknown_2023E82 + ldr r1, _08026B98 @ =gBattleCommunication strb r0, [r1] b _08026F4E .align 2, 0 -_08026B98: .4byte gUnknown_2023E82 +_08026B98: .4byte gBattleCommunication _08026B9C: ldr r0, _08026BAC @ =gCurrentMove ldrh r0, [r0] @@ -18509,7 +18509,7 @@ _08026B9C: _08026BAC: .4byte gCurrentMove _08026BB0: .4byte gBattlerTarget _08026BB4: - ldr r2, _08026BD4 @ =gUnknown_2023DD0 + ldr r2, _08026BD4 @ =gHitMarker ldr r1, _08026BD8 @ =gBitTable ldr r0, _08026BDC @ =gActiveBattler ldrb r0, [r0] @@ -18521,23 +18521,23 @@ _08026BB4: ands r2, r0 cmp r2, 0 beq _08026BE4 - ldr r1, _08026BE0 @ =gUnknown_2023E82 + ldr r1, _08026BE0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1] b _08026F4E .align 2, 0 -_08026BD4: .4byte gUnknown_2023DD0 +_08026BD4: .4byte gHitMarker _08026BD8: .4byte gBitTable _08026BDC: .4byte gActiveBattler -_08026BE0: .4byte gUnknown_2023E82 +_08026BE0: .4byte gBattleCommunication _08026BE4: - ldr r0, _08026BEC @ =gUnknown_2023E82 + ldr r0, _08026BEC @ =gBattleCommunication strb r2, [r0] b _08026F4E .align 2, 0 -_08026BEC: .4byte gUnknown_2023E82 +_08026BEC: .4byte gBattleCommunication _08026BF0: - ldr r4, _08026C20 @ =gUnknown_2023ECC + ldr r4, _08026C20 @ =gSpecialStatuses ldr r3, _08026C24 @ =gActiveBattler ldrb r0, [r3] lsls r1, r0, 2 @@ -18561,7 +18561,7 @@ _08026BF0: strb r0, [r1] b _08026F4E .align 2, 0 -_08026C20: .4byte gUnknown_2023ECC +_08026C20: .4byte gSpecialStatuses _08026C24: .4byte gActiveBattler _08026C28: ldr r4, _08026C4C @ =gBattlerPartyIndexes @@ -18658,7 +18658,7 @@ _08026CCC: bne _08026CD8 b _08026F4E _08026CD8: - ldr r0, _08026CEC @ =gUnknown_2023DD0 + ldr r0, _08026CEC @ =gHitMarker ldr r1, [r0] ldr r2, _08026CF0 @ =0xffbfffff ands r1, r2 @@ -18667,11 +18667,11 @@ _08026CD8: .align 2, 0 _08026CE4: .4byte gBattleTypeFlags _08026CE8: .4byte gBattleMons -_08026CEC: .4byte gUnknown_2023DD0 +_08026CEC: .4byte gHitMarker _08026CF0: .4byte 0xffbfffff _08026CF4: movs r7, 0 - ldr r2, _08026D3C @ =gUnknown_2023E82 + ldr r2, _08026D3C @ =gBattleCommunication strb r7, [r2, 0x5] ldr r1, _08026D40 @ =gActiveBattler movs r0, 0x1 @@ -18709,7 +18709,7 @@ _08026D2A: bls _08026D0C b _08026F4E .align 2, 0 -_08026D3C: .4byte gUnknown_2023E82 +_08026D3C: .4byte gBattleCommunication _08026D40: .4byte gActiveBattler _08026D44: .4byte gBattlersCount _08026D48: .4byte gBattleMons @@ -18748,14 +18748,14 @@ _08026D84: movs r1, 0 bl BtlController_EmitReturnMonToBall ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _08026F4E .align 2, 0 _08026D94: .4byte gBattlersCount _08026D98: .4byte gActiveBattler _08026D9C: .4byte gBattleMons _08026DA0: - ldr r0, _08026F28 @ =gUnknown_2023E82 + ldr r0, _08026F28 @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x5] mov r8, r1 @@ -18865,8 +18865,8 @@ _08026E4E: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08026F28 @ =gUnknown_2023E82 + bl MarkBattlerForControllerExec + ldr r1, _08026F28 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _08026E88: @@ -18940,13 +18940,13 @@ _08026EEC: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08026F28 @ =gUnknown_2023E82 + bl MarkBattlerForControllerExec + ldr r1, _08026F28 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08026F4E .align 2, 0 -_08026F28: .4byte gUnknown_2023E82 +_08026F28: .4byte gBattleCommunication _08026F2C: .4byte gBattlersCount _08026F30: .4byte gBattleMons _08026F34: .4byte 0xf7ffffff @@ -18959,7 +18959,7 @@ _08026F44: cmp r0, 0 beq _08026F56 _08026F4E: - ldr r1, _08026F64 @ =gUnknown_2023D74 + ldr r1, _08026F64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] @@ -18972,7 +18972,7 @@ _08026F56: pop {r0} bx r0 .align 2, 0 -_08026F64: .4byte gUnknown_2023D74 +_08026F64: .4byte gBattlescriptCurrInstr thumb_func_end sub_8026AB0 thumb_func_start atk77_setprotectlike @@ -19039,7 +19039,7 @@ _08026FA8: ldrb r0, [r1] cmp r0, 0x6F bne _08026FF8 - ldr r0, _08027054 @ =gUnknown_2023E8C + ldr r0, _08027054 @ =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 @@ -19047,7 +19047,7 @@ _08026FA8: movs r2, 0x1 orrs r0, r2 strb r0, [r1] - ldr r1, _08027058 @ =gUnknown_2023E82 + ldr r1, _08027058 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] _08026FF8: @@ -19059,7 +19059,7 @@ _08026FF8: ldrb r0, [r1] cmp r0, 0x74 bne _0802701E - ldr r0, _08027054 @ =gUnknown_2023E8C + ldr r0, _08027054 @ =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 @@ -19067,7 +19067,7 @@ _08026FF8: movs r2, 0x2 orrs r0, r2 strb r0, [r1] - ldr r1, _08027058 @ =gUnknown_2023E82 + ldr r1, _08027058 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _0802701E: @@ -19090,8 +19090,8 @@ _08027044: .4byte gBattlersCount _08027048: .4byte gUnknown_82507E0 _0802704C: .4byte gBattleMoves _08027050: .4byte gCurrentMove -_08027054: .4byte gUnknown_2023E8C -_08027058: .4byte gUnknown_2023E82 +_08027054: .4byte gProtectStructs +_08027058: .4byte gBattleCommunication _0802705C: ldr r2, _08027090 @ =gDisableStructs ldr r0, _08027094 @ =gBattlerAttacker @@ -19102,7 +19102,7 @@ _0802705C: adds r0, r2 movs r1, 0 strb r1, [r0, 0x8] - ldr r1, _08027098 @ =gUnknown_2023E82 + ldr r1, _08027098 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] ldr r2, _0802709C @ =gMoveResultFlags @@ -19111,7 +19111,7 @@ _0802705C: orrs r0, r1 strb r0, [r2] _0802707E: - ldr r1, _080270A0 @ =gUnknown_2023D74 + ldr r1, _080270A0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19123,9 +19123,9 @@ _0802707E: .align 2, 0 _08027090: .4byte gDisableStructs _08027094: .4byte gBattlerAttacker -_08027098: .4byte gUnknown_2023E82 +_08027098: .4byte gBattleCommunication _0802709C: .4byte gMoveResultFlags -_080270A0: .4byte gUnknown_2023D74 +_080270A0: .4byte gBattlescriptCurrInstr thumb_func_end atk77_setprotectlike thumb_func_start atk78_faintifabilitynotdamp @@ -19190,8 +19190,8 @@ _080270F0: movs r0, 0 bl BtlController_EmitHealthBarUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _08027180 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _08027180 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19235,7 +19235,7 @@ _08027170: .4byte gActiveBattler _08027174: .4byte gBattlerAttacker _08027178: .4byte gBattleMoveDamage _0802717C: .4byte 0x00007fff -_08027180: .4byte gUnknown_2023D74 +_08027180: .4byte gBattlescriptCurrInstr _08027184: .4byte gBitTable _08027188: .4byte gAbsentBattlerFlags _0802718C: @@ -19249,7 +19249,7 @@ _0802718C: adds r1, 0x20 ldrb r1, [r1] bl sub_80C71D0 - ldr r1, _080271B8 @ =gUnknown_2023D74 + ldr r1, _080271B8 @ =gBattlescriptCurrInstr ldr r0, _080271BC @ =gUnknown_81D93AF str r0, [r1] _080271A8: @@ -19260,7 +19260,7 @@ _080271A8: bx r0 .align 2, 0 _080271B4: .4byte gLastUsedAbility -_080271B8: .4byte gUnknown_2023D74 +_080271B8: .4byte gBattlescriptCurrInstr _080271BC: .4byte gUnknown_81D93AF thumb_func_end atk78_faintifabilitynotdamp @@ -19293,8 +19293,8 @@ atk79_setatkhptozero: @ 80271C0 movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _0802721C @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802721C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19308,13 +19308,13 @@ _0802720C: .4byte gBattleControllerExecFlags _08027210: .4byte gActiveBattler _08027214: .4byte gBattlerAttacker _08027218: .4byte gBattleMons -_0802721C: .4byte gUnknown_2023D74 +_0802721C: .4byte gBattlescriptCurrInstr thumb_func_end atk79_setatkhptozero thumb_func_start atk7A_jumpifnexttargetvalid atk7A_jumpifnexttargetvalid: @ 8027220 push {r4-r7,lr} - ldr r3, _08027298 @ =gUnknown_2023D74 + ldr r3, _08027298 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r4, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -19376,7 +19376,7 @@ _08027276: str r0, [r7] b _080272BC .align 2, 0 -_08027298: .4byte gUnknown_2023D74 +_08027298: .4byte gBattlescriptCurrInstr _0802729C: .4byte gBattleTypeFlags _080272A0: .4byte gBattlerTarget _080272A4: .4byte gBattlerAttacker @@ -19398,7 +19398,7 @@ _080272BC: thumb_func_start atk7B_tryhealhalfhealth atk7B_tryhealhalfhealth: @ 80272C4 push {r4-r6,lr} - ldr r4, _08027320 @ =gUnknown_2023D74 + ldr r4, _08027320 @ =gBattlescriptCurrInstr ldr r1, [r4] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -19445,7 +19445,7 @@ _08027306: str r2, [r4] b _0802733A .align 2, 0 -_08027320: .4byte gUnknown_2023D74 +_08027320: .4byte gBattlescriptCurrInstr _08027324: .4byte gBattlerTarget _08027328: .4byte gBattlerAttacker _0802732C: .4byte gBattleMoveDamage @@ -19538,7 +19538,7 @@ _080273AC: ldr r0, _080273EC @ =0x0000ffff cmp r3, r0 beq _080273FC - ldr r2, _080273F0 @ =gUnknown_2023DD0 + ldr r2, _080273F0 @ =gHitMarker ldr r0, [r2] ldr r1, _080273F4 @ =0xfffffbff ands r0, r1 @@ -19551,14 +19551,14 @@ _080273E0: .4byte gBattlersCount _080273E4: .4byte gBattleStruct _080273E8: .4byte gBattlerAttacker _080273EC: .4byte 0x0000ffff -_080273F0: .4byte gUnknown_2023DD0 +_080273F0: .4byte gHitMarker _080273F4: .4byte 0xfffffbff _080273F8: .4byte gCurrentMove _080273FC: mov r0, r8 cmp r0, 0 beq _0802746C - ldr r2, _08027450 @ =gUnknown_2023DD0 + ldr r2, _08027450 @ =gHitMarker ldr r0, [r2] ldr r1, _08027454 @ =0xfffffbff ands r0, r1 @@ -19580,7 +19580,7 @@ _08027426: bl GetMoveTarget ldr r1, _0802745C @ =gBattlerTarget strb r0, [r1] - ldr r5, _08027460 @ =gUnknown_2023D74 + ldr r5, _08027460 @ =gBattlescriptCurrInstr ldr r3, _08027464 @ =gUnknown_81D65A8 ldr r2, _08027468 @ =gBattleMoves ldrh r1, [r4] @@ -19595,15 +19595,15 @@ _08027426: str r0, [r5] b _0802748A .align 2, 0 -_08027450: .4byte gUnknown_2023DD0 +_08027450: .4byte gHitMarker _08027454: .4byte 0xfffffbff _08027458: .4byte gCurrentMove _0802745C: .4byte gBattlerTarget -_08027460: .4byte gUnknown_2023D74 +_08027460: .4byte gBattlescriptCurrInstr _08027464: .4byte gUnknown_81D65A8 _08027468: .4byte gBattleMoves _0802746C: - ldr r2, _0802749C @ =gUnknown_2023ECC + ldr r2, _0802749C @ =gSpecialStatuses ldr r0, _080274A0 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 @@ -19614,7 +19614,7 @@ _0802746C: movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r1, _080274A4 @ =gUnknown_2023D74 + ldr r1, _080274A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19628,9 +19628,9 @@ _0802748A: pop {r0} bx r0 .align 2, 0 -_0802749C: .4byte gUnknown_2023ECC +_0802749C: .4byte gSpecialStatuses _080274A0: .4byte gBattlerAttacker -_080274A4: .4byte gUnknown_2023D74 +_080274A4: .4byte gBattlescriptCurrInstr thumb_func_end atk7C_trymirrormove thumb_func_start atk7D_setrain @@ -19647,34 +19647,34 @@ atk7D_setrain: @ 80274A8 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _080274D0 @ =gUnknown_2023E82 + ldr r1, _080274D0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _080274E4 .align 2, 0 _080274C8: .4byte gBattleWeather _080274CC: .4byte gMoveResultFlags -_080274D0: .4byte gUnknown_2023E82 +_080274D0: .4byte gBattleCommunication _080274D4: movs r0, 0x1 strh r0, [r2] - ldr r0, _080274F0 @ =gUnknown_2023E82 + ldr r0, _080274F0 @ =gBattleCommunication strb r1, [r0, 0x5] - ldr r0, _080274F4 @ =gUnknown_2023F20 + ldr r0, _080274F4 @ =gWishFutureKnock adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _080274E4: - ldr r1, _080274F8 @ =gUnknown_2023D74 + ldr r1, _080274F8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080274F0: .4byte gUnknown_2023E82 -_080274F4: .4byte gUnknown_2023F20 -_080274F8: .4byte gUnknown_2023D74 +_080274F0: .4byte gBattleCommunication +_080274F4: .4byte gWishFutureKnock +_080274F8: .4byte gBattlescriptCurrInstr thumb_func_end atk7D_setrain thumb_func_start atk7E_setreflect @@ -19683,7 +19683,7 @@ atk7E_setreflect: @ 80274FC ldr r6, _0802752C @ =gBattlerAttacker ldrb r0, [r6] bl GetBattlerPosition - ldr r4, _08027530 @ =gSideAffecting + ldr r4, _08027530 @ =gSideStatuses movs r5, 0x1 adds r1, r5, 0 ands r1, r0 @@ -19699,14 +19699,14 @@ atk7E_setreflect: @ 80274FC movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _08027538 @ =gUnknown_2023E82 + ldr r1, _08027538 @ =gBattleCommunication movs r0, 0 b _080275B0 .align 2, 0 _0802752C: .4byte gBattlerAttacker -_08027530: .4byte gSideAffecting +_08027530: .4byte gSideStatuses _08027534: .4byte gMoveResultFlags -_08027538: .4byte gUnknown_2023E82 +_08027538: .4byte gBattleCommunication _0802753C: ldrb r0, [r6] bl GetBattlerPosition @@ -19750,20 +19750,20 @@ _0802753C: lsrs r1, r0, 24 cmp r1, 0x2 bne _080275AC - ldr r0, _080275A8 @ =gUnknown_2023E82 + ldr r0, _080275A8 @ =gBattleCommunication strb r1, [r0, 0x5] b _080275B2 .align 2, 0 _080275A0: .4byte gSideTimers _080275A4: .4byte gBattleTypeFlags -_080275A8: .4byte gUnknown_2023E82 +_080275A8: .4byte gBattleCommunication _080275AC: - ldr r1, _080275C0 @ =gUnknown_2023E82 + ldr r1, _080275C0 @ =gBattleCommunication movs r0, 0x1 _080275B0: strb r0, [r1, 0x5] _080275B2: - ldr r1, _080275C4 @ =gUnknown_2023D74 + ldr r1, _080275C4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19771,8 +19771,8 @@ _080275B2: pop {r0} bx r0 .align 2, 0 -_080275C0: .4byte gUnknown_2023E82 -_080275C4: .4byte gUnknown_2023D74 +_080275C0: .4byte gBattleCommunication +_080275C4: .4byte gBattlescriptCurrInstr thumb_func_end atk7E_setreflect thumb_func_start atk7F_setseeded @@ -19806,7 +19806,7 @@ _080275FA: movs r0, 0x1 orrs r0, r5 strb r0, [r7] - ldr r1, _08027614 @ =gUnknown_2023E82 + ldr r1, _08027614 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08027668 @@ -19814,7 +19814,7 @@ _080275FA: _08027608: .4byte gMoveResultFlags _0802760C: .4byte gStatuses3 _08027610: .4byte gBattlerTarget -_08027614: .4byte gUnknown_2023E82 +_08027614: .4byte gBattleCommunication _08027618: ldr r1, _08027644 @ =gBattleMons movs r0, 0x58 @@ -19834,13 +19834,13 @@ _08027634: movs r0, 0x1 orrs r0, r5 strb r0, [r7] - ldr r1, _08027648 @ =gUnknown_2023E82 + ldr r1, _08027648 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08027668 .align 2, 0 _08027644: .4byte gBattleMons -_08027648: .4byte gUnknown_2023E82 +_08027648: .4byte gBattleCommunication _0802764C: ldr r0, _0802767C @ =gBattlerAttacker ldrb r0, [r0] @@ -19854,10 +19854,10 @@ _0802764C: mov r2, r12 orrs r0, r2 str r0, [r1] - ldr r0, _08027680 @ =gUnknown_2023E82 + ldr r0, _08027680 @ =gBattleCommunication strb r3, [r0, 0x5] _08027668: - ldr r1, _08027684 @ =gUnknown_2023D74 + ldr r1, _08027684 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -19869,14 +19869,14 @@ _08027668: bx r0 .align 2, 0 _0802767C: .4byte gBattlerAttacker -_08027680: .4byte gUnknown_2023E82 -_08027684: .4byte gUnknown_2023D74 +_08027680: .4byte gBattleCommunication +_08027684: .4byte gBattlescriptCurrInstr thumb_func_end atk7F_setseeded thumb_func_start atk80_manipulatedamage atk80_manipulatedamage: @ 8027688 push {r4,lr} - ldr r1, _080276A0 @ =gUnknown_2023D74 + ldr r1, _080276A0 @ =gBattlescriptCurrInstr ldr r0, [r1] ldrb r2, [r0, 0x1] adds r4, r1, 0 @@ -19888,7 +19888,7 @@ atk80_manipulatedamage: @ 8027688 beq _080276AA b _080276F8 .align 2, 0 -_080276A0: .4byte gUnknown_2023D74 +_080276A0: .4byte gBattlescriptCurrInstr _080276A4: cmp r2, 0x2 beq _080276F0 @@ -19949,7 +19949,7 @@ _08027704: .4byte gBattleMoveDamage atk81_trysetrest: @ 8027708 push {r4-r7,lr} sub sp, 0x4 - ldr r0, _08027760 @ =gUnknown_2023D74 + ldr r0, _08027760 @ =gBattlescriptCurrInstr mov r12, r0 ldr r1, [r0] ldrb r6, [r1, 0x1] @@ -19992,7 +19992,7 @@ atk81_trysetrest: @ 8027708 str r6, [r0] b _080277C8 .align 2, 0 -_08027760: .4byte gUnknown_2023D74 +_08027760: .4byte gBattlescriptCurrInstr _08027764: .4byte gActiveBattler _08027768: .4byte gBattlerTarget _0802776C: .4byte gBattlerAttacker @@ -20007,14 +20007,14 @@ _08027778: ands r1, r0 cmp r1, 0 beq _08027794 - ldr r1, _08027790 @ =gUnknown_2023E82 + ldr r1, _08027790 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08027798 .align 2, 0 -_08027790: .4byte gUnknown_2023E82 +_08027790: .4byte gBattleCommunication _08027794: - ldr r0, _080277D0 @ =gUnknown_2023E82 + ldr r0, _080277D0 @ =gBattleCommunication strb r1, [r0, 0x5] _08027798: ldrb r0, [r5] @@ -20034,8 +20034,8 @@ _08027798: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, _080277D4 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _080277D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -20045,14 +20045,14 @@ _080277C8: pop {r0} bx r0 .align 2, 0 -_080277D0: .4byte gUnknown_2023E82 -_080277D4: .4byte gUnknown_2023D74 +_080277D0: .4byte gBattleCommunication +_080277D4: .4byte gBattlescriptCurrInstr thumb_func_end atk81_trysetrest thumb_func_start atk82_jumpifnotfirstturn atk82_jumpifnotfirstturn: @ 80277D8 push {r4,r5,lr} - ldr r5, _0802780C @ =gUnknown_2023D74 + ldr r5, _0802780C @ =gBattlescriptCurrInstr ldr r4, [r5] ldrb r3, [r4, 0x1] ldrb r0, [r4, 0x2] @@ -20078,7 +20078,7 @@ atk82_jumpifnotfirstturn: @ 80277D8 str r0, [r5] b _0802781A .align 2, 0 -_0802780C: .4byte gUnknown_2023D74 +_0802780C: .4byte gBattlescriptCurrInstr _08027810: .4byte gDisableStructs _08027814: .4byte gBattlerAttacker _08027818: @@ -20091,13 +20091,13 @@ _0802781A: thumb_func_start atk83_nop atk83_nop: @ 8027820 - ldr r1, _0802782C @ =gUnknown_2023D74 + ldr r1, _0802782C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 -_0802782C: .4byte gUnknown_2023D74 +_0802782C: .4byte gBattlescriptCurrInstr thumb_func_end atk83_nop thumb_func_start UproarWakeUpCheck @@ -20123,7 +20123,7 @@ UproarWakeUpCheck: @ 8027830 adds r4, r1, 0 movs r3, 0 ldr r6, _08027890 @ =gBattleScripting - ldr r7, _08027894 @ =gUnknown_2023E82 + ldr r7, _08027894 @ =gBattleCommunication _0802785C: mov r0, r12 adds r0, 0x50 @@ -20151,7 +20151,7 @@ _0802785C: _08027888: .4byte gBattlersCount _0802788C: .4byte gBattleMons _08027890: .4byte gBattleScripting -_08027894: .4byte gUnknown_2023E82 +_08027894: .4byte gBattleCommunication _08027898: .4byte gBattlerTarget _0802789C: adds r3, 0x58 @@ -20166,11 +20166,11 @@ _080278A4: movs r0, 0x1 b _080278C2 _080278B0: - ldr r0, _080278B8 @ =gUnknown_2023E82 + ldr r0, _080278B8 @ =gBattleCommunication strb r3, [r0, 0x5] b _080278A4 .align 2, 0 -_080278B8: .4byte gUnknown_2023E82 +_080278B8: .4byte gBattleCommunication _080278BC: strb r2, [r1] b _080278A4 @@ -20187,7 +20187,7 @@ _080278C2: thumb_func_start atk84_jumpifcantmakeasleep atk84_jumpifcantmakeasleep: @ 80278CC push {r4-r6,lr} - ldr r5, _080278F8 @ =gUnknown_2023D74 + ldr r5, _080278F8 @ =gBattlescriptCurrInstr ldr r1, [r5] ldrb r4, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -20208,7 +20208,7 @@ atk84_jumpifcantmakeasleep: @ 80278CC str r4, [r5] b _08027942 .align 2, 0 -_080278F8: .4byte gUnknown_2023D74 +_080278F8: .4byte gBattlescriptCurrInstr _080278FC: .4byte gBattlerTarget _08027900: ldr r1, _08027930 @ =gBattleMons @@ -20226,7 +20226,7 @@ _08027900: _08027918: ldr r2, _08027934 @ =gLastUsedAbility strb r0, [r2] - ldr r1, _08027938 @ =gUnknown_2023E82 + ldr r1, _08027938 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] str r4, [r5] @@ -20237,7 +20237,7 @@ _08027918: .align 2, 0 _08027930: .4byte gBattleMons _08027934: .4byte gLastUsedAbility -_08027938: .4byte gUnknown_2023E82 +_08027938: .4byte gBattleCommunication _0802793C: ldr r0, [r5] adds r0, 0x5 @@ -20266,7 +20266,7 @@ atk85_stockpile: @ 8027948 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _0802797C @ =gUnknown_2023E82 + ldr r1, _0802797C @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080279AA @@ -20274,7 +20274,7 @@ atk85_stockpile: @ 8027948 _08027970: .4byte gDisableStructs _08027974: .4byte gBattlerAttacker _08027978: .4byte gMoveResultFlags -_0802797C: .4byte gUnknown_2023E82 +_0802797C: .4byte gBattleCommunication _08027980: adds r0, 0x1 movs r3, 0 @@ -20295,10 +20295,10 @@ _08027980: strb r0, [r2, 0x4] movs r0, 0xFF strb r0, [r2, 0x5] - ldr r0, _080279BC @ =gUnknown_2023E82 + ldr r0, _080279BC @ =gBattleCommunication strb r3, [r0, 0x5] _080279AA: - ldr r1, _080279C0 @ =gUnknown_2023D74 + ldr r1, _080279C0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -20307,8 +20307,8 @@ _080279AA: bx r0 .align 2, 0 _080279B8: .4byte gBattleTextBuff1 -_080279BC: .4byte gUnknown_2023E82 -_080279C0: .4byte gUnknown_2023D74 +_080279BC: .4byte gBattleCommunication +_080279C0: .4byte gBattlescriptCurrInstr thumb_func_end atk85_stockpile thumb_func_start atk86_stockpiletobasedamage @@ -20317,7 +20317,7 @@ atk86_stockpiletobasedamage: @ 80279C4 mov r7, r8 push {r7} sub sp, 0x10 - ldr r3, _080279FC @ =gUnknown_2023D74 + ldr r3, _080279FC @ =gBattlescriptCurrInstr ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -20342,17 +20342,17 @@ atk86_stockpiletobasedamage: @ 80279C4 str r2, [r3] b _08027AAA .align 2, 0 -_080279FC: .4byte gUnknown_2023D74 +_080279FC: .4byte gBattlescriptCurrInstr _08027A00: .4byte gDisableStructs _08027A04: .4byte gBattlerAttacker _08027A08: - ldr r0, _08027AB8 @ =gUnknown_2023E82 + ldr r0, _08027AB8 @ =gBattleCommunication ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _08027A90 ldr r0, _08027ABC @ =gBattleMoveDamage mov r8, r0 - ldr r4, _08027AC0 @ =gSideAffecting + ldr r4, _08027AC0 @ =gSideStatuses ldr r5, _08027AC4 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerPosition @@ -20397,7 +20397,7 @@ _08027A08: adds r0, r7 ldrb r0, [r0, 0x9] strb r0, [r2, 0x18] - ldr r1, _08027AD4 @ =gUnknown_2023E8C + ldr r1, _08027AD4 @ =gProtectStructs ldrb r0, [r6] lsls r0, 4 adds r0, r1 @@ -20421,7 +20421,7 @@ _08027A90: adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] - ldr r1, _08027AE0 @ =gUnknown_2023D74 + ldr r1, _08027AE0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -20433,17 +20433,17 @@ _08027AAA: pop {r0} bx r0 .align 2, 0 -_08027AB8: .4byte gUnknown_2023E82 +_08027AB8: .4byte gBattleCommunication _08027ABC: .4byte gBattleMoveDamage -_08027AC0: .4byte gSideAffecting +_08027AC0: .4byte gSideStatuses _08027AC4: .4byte gBattlerTarget _08027AC8: .4byte gBattleMons _08027ACC: .4byte gCurrentMove _08027AD0: .4byte gBattleScripting -_08027AD4: .4byte gUnknown_2023E8C +_08027AD4: .4byte gProtectStructs _08027AD8: .4byte gDisableStructs _08027ADC: .4byte gBattlerAttacker -_08027AE0: .4byte gUnknown_2023D74 +_08027AE0: .4byte gBattlescriptCurrInstr thumb_func_end atk86_stockpiletobasedamage thumb_func_start atk87_stockpiletohpheal @@ -20451,7 +20451,7 @@ atk87_stockpiletohpheal: @ 8027AE4 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r7, _08027B24 @ =gUnknown_2023D74 + ldr r7, _08027B24 @ =gBattlescriptCurrInstr ldr r1, [r7] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] @@ -20476,14 +20476,14 @@ atk87_stockpiletohpheal: @ 8027AE4 cmp r1, 0 bne _08027B34 str r2, [r7] - ldr r0, _08027B30 @ =gUnknown_2023E82 + ldr r0, _08027B30 @ =gBattleCommunication strb r1, [r0, 0x5] b _08027BB0 .align 2, 0 -_08027B24: .4byte gUnknown_2023D74 +_08027B24: .4byte gBattlescriptCurrInstr _08027B28: .4byte gDisableStructs _08027B2C: .4byte gBattlerAttacker -_08027B30: .4byte gUnknown_2023E82 +_08027B30: .4byte gBattleCommunication _08027B34: ldr r1, _08027B58 @ =gBattleMons movs r0, 0x58 @@ -20499,14 +20499,14 @@ _08027B34: ldr r1, _08027B5C @ =gBattlerTarget ldrb r0, [r6] strb r0, [r1] - ldr r1, _08027B60 @ =gUnknown_2023E82 + ldr r1, _08027B60 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08027BB0 .align 2, 0 _08027B58: .4byte gBattleMons _08027B5C: .4byte gBattlerTarget -_08027B60: .4byte gUnknown_2023E82 +_08027B60: .4byte gBattleCommunication _08027B64: ldr r5, _08027BBC @ =gBattleMoveDamage ldrh r0, [r1, 0x2C] @@ -20575,7 +20575,7 @@ atk88_negativedamage: @ 8027BC8 negs r0, r0 str r0, [r2] _08027BE4: - ldr r1, _08027BF8 @ =gUnknown_2023D74 + ldr r1, _08027BF8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -20584,7 +20584,7 @@ _08027BE4: .align 2, 0 _08027BF0: .4byte gBattleMoveDamage _08027BF4: .4byte gUnknown_2023D54 -_08027BF8: .4byte gUnknown_2023D74 +_08027BF8: .4byte gBattlescriptCurrInstr thumb_func_end atk88_negativedamage thumb_func_start ChangeStatBuffs @@ -20685,7 +20685,7 @@ _08027C88: beq _08027D58 cmp r5, 0x1 bne _08027D48 - ldr r4, _08027CE8 @ =gUnknown_2023ECC + ldr r4, _08027CE8 @ =gSpecialStatuses ldr r3, _08027CD4 @ =gActiveBattler ldrb r0, [r3] lsls r1, r0, 2 @@ -20696,7 +20696,7 @@ _08027C88: lsls r0, 31 cmp r0, 0 beq _08027CF0 - ldr r0, _08027CEC @ =gUnknown_2023D74 + ldr r0, _08027CEC @ =gBattlescriptCurrInstr mov r4, r8 str r4, [r0] b _08027D48 @@ -20706,8 +20706,8 @@ _08027CD8: .4byte gBattlerTarget _08027CDC: .4byte gBattleTextBuff1 _08027CE0: .4byte gSideTimers _08027CE4: .4byte gCurrentMove -_08027CE8: .4byte gUnknown_2023ECC -_08027CEC: .4byte gUnknown_2023D74 +_08027CE8: .4byte gSpecialStatuses +_08027CEC: .4byte gBattlescriptCurrInstr _08027CF0: mov r0, r8 bl BattleScriptPush @@ -20715,7 +20715,7 @@ _08027CF0: ldr r6, _08027D1C @ =gActiveBattler ldrb r0, [r6] strb r0, [r1, 0x17] - ldr r1, _08027D20 @ =gUnknown_2023D74 + ldr r1, _08027D20 @ =gBattlescriptCurrInstr ldr r0, _08027D24 @ =gUnknown_81D8C3E str r0, [r1] ldrb r1, [r6] @@ -20731,7 +20731,7 @@ _08027CF0: .align 2, 0 _08027D18: .4byte gBattleScripting _08027D1C: .4byte gActiveBattler -_08027D20: .4byte gUnknown_2023D74 +_08027D20: .4byte gBattlescriptCurrInstr _08027D24: .4byte gUnknown_81D8C3E _08027D28: ldr r0, _08027D4C @ =gCurrentMove @@ -20746,7 +20746,7 @@ _08027D28: lsls r0, 24 cmp r0, 0 beq _08027D58 - ldr r1, _08027D50 @ =gUnknown_2023D74 + ldr r1, _08027D50 @ =gBattlescriptCurrInstr ldr r0, _08027D54 @ =gUnknown_81D7DF2 str r0, [r1] _08027D48: @@ -20754,7 +20754,7 @@ _08027D48: b _08028060 .align 2, 0 _08027D4C: .4byte gCurrentMove -_08027D50: .4byte gUnknown_2023D74 +_08027D50: .4byte gBattlescriptCurrInstr _08027D54: .4byte gUnknown_81D7DF2 _08027D58: ldr r2, _08027DA0 @ =gBattleMons @@ -20781,7 +20781,7 @@ _08027D74: beq _08027E0C cmp r5, 0x1 bne _08027D48 - ldr r4, _08027DAC @ =gUnknown_2023ECC + ldr r4, _08027DAC @ =gSpecialStatuses lsls r0, r3, 2 adds r0, r3 lsls r0, 2 @@ -20790,7 +20790,7 @@ _08027D74: lsls r0, 31 cmp r0, 0 beq _08027DB4 - ldr r0, _08027DB0 @ =gUnknown_2023D74 + ldr r0, _08027DB0 @ =gBattlescriptCurrInstr mov r1, r8 str r1, [r0] b _08027D48 @@ -20798,8 +20798,8 @@ _08027D74: _08027DA0: .4byte gBattleMons _08027DA4: .4byte gActiveBattler _08027DA8: .4byte gCurrentMove -_08027DAC: .4byte gUnknown_2023ECC -_08027DB0: .4byte gUnknown_2023D74 +_08027DAC: .4byte gSpecialStatuses +_08027DB0: .4byte gBattlescriptCurrInstr _08027DB4: mov r0, r8 bl BattleScriptPush @@ -20807,7 +20807,7 @@ _08027DB4: ldr r2, _08027DFC @ =gActiveBattler ldrb r0, [r2] strb r0, [r1, 0x17] - ldr r1, _08027E00 @ =gUnknown_2023D74 + ldr r1, _08027E00 @ =gBattlescriptCurrInstr ldr r0, _08027E04 @ =gUnknown_81D9416 str r0, [r1] ldr r1, _08027E08 @ =gLastUsedAbility @@ -20835,7 +20835,7 @@ _08027DB4: .align 2, 0 _08027DF8: .4byte gBattleScripting _08027DFC: .4byte gActiveBattler -_08027E00: .4byte gUnknown_2023D74 +_08027E00: .4byte gBattlescriptCurrInstr _08027E04: .4byte gUnknown_81D9416 _08027E08: .4byte gLastUsedAbility _08027E0C: @@ -20861,7 +20861,7 @@ _08027E0C: ldr r3, _08027E58 @ =gActiveBattler ldrb r0, [r3] strb r0, [r1, 0x17] - ldr r1, _08027E60 @ =gUnknown_2023D74 + ldr r1, _08027E60 @ =gBattlescriptCurrInstr ldr r0, _08027E64 @ =gUnknown_81D947E str r0, [r1] ldr r1, _08027E68 @ =gLastUsedAbility @@ -20878,7 +20878,7 @@ _08027E0C: .align 2, 0 _08027E58: .4byte gActiveBattler _08027E5C: .4byte gBattleScripting -_08027E60: .4byte gUnknown_2023D74 +_08027E60: .4byte gBattlescriptCurrInstr _08027E64: .4byte gUnknown_81D947E _08027E68: .4byte gLastUsedAbility _08027E6C: @@ -20906,7 +20906,7 @@ _08027E8E: ldr r2, _08027EBC @ =gActiveBattler ldrb r0, [r2] strb r0, [r1, 0x17] - ldr r1, _08027EC4 @ =gUnknown_2023D74 + ldr r1, _08027EC4 @ =gBattlescriptCurrInstr ldr r0, _08027EC8 @ =gUnknown_81D947E str r0, [r1] ldr r1, _08027ECC @ =gLastUsedAbility @@ -20923,7 +20923,7 @@ _08027E8E: .align 2, 0 _08027EBC: .4byte gActiveBattler _08027EC0: .4byte gBattleScripting -_08027EC4: .4byte gUnknown_2023D74 +_08027EC4: .4byte gBattlescriptCurrInstr _08027EC8: .4byte gUnknown_81D947E _08027ECC: .4byte gLastUsedAbility _08027ED0: @@ -20991,7 +20991,7 @@ _08027F12: movs r1, 0 ldr r0, _08027F64 @ =gBattlerTarget ldrb r0, [r0] - ldr r3, _08027F68 @ =gUnknown_2023E82 + ldr r3, _08027F68 @ =gBattleCommunication mov r8, r3 cmp r0, r2 bne _08027F56 @@ -21004,7 +21004,7 @@ _08027F56: _08027F5C: .4byte gActiveBattler _08027F60: .4byte gBattleTextBuff2 _08027F64: .4byte gBattlerTarget -_08027F68: .4byte gUnknown_2023E82 +_08027F68: .4byte gBattleCommunication _08027F6C: asrs r6, r0, 28 movs r0, 0x7 @@ -21051,7 +21051,7 @@ _08027F86: cmp r0, 0xC bne _08027FDC _08027FC2: - ldr r1, _08027FD8 @ =gUnknown_2023E82 + ldr r1, _08027FD8 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] mov r8, r1 @@ -21060,12 +21060,12 @@ _08027FC2: _08027FCC: .4byte gBattleTextBuff2 _08027FD0: .4byte gBattleMons _08027FD4: .4byte gActiveBattler -_08027FD8: .4byte gUnknown_2023E82 +_08027FD8: .4byte gBattleCommunication _08027FDC: movs r1, 0 ldr r0, _08028070 @ =gBattlerTarget ldrb r0, [r0] - ldr r2, _08028074 @ =gUnknown_2023E82 + ldr r2, _08028074 @ =gBattleCommunication mov r8, r2 cmp r0, r3 bne _08027FEC @@ -21144,7 +21144,7 @@ _08028060: bx r1 .align 2, 0 _08028070: .4byte gBattlerTarget -_08028074: .4byte gUnknown_2023E82 +_08028074: .4byte gBattleCommunication _08028078: .4byte gActiveBattler _0802807C: .4byte gMoveResultFlags thumb_func_end ChangeStatBuffs @@ -21152,7 +21152,7 @@ _0802807C: .4byte gMoveResultFlags thumb_func_start atk89_statbuffchange atk89_statbuffchange: @ 8028080 push {r4,r5,lr} - ldr r5, _080280C4 @ =gUnknown_2023D74 + ldr r5, _080280C4 @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r3, [r2, 0x2] ldrb r0, [r2, 0x3] @@ -21185,7 +21185,7 @@ _080280BC: pop {r0} bx r0 .align 2, 0 -_080280C4: .4byte gUnknown_2023D74 +_080280C4: .4byte gBattlescriptCurrInstr _080280C8: .4byte gBattleScripting thumb_func_end atk89_statbuffchange @@ -21195,7 +21195,7 @@ atk8A_normalisebuffs: @ 80280CC movs r2, 0 ldr r0, _08028114 @ =gBattlersCount ldrb r1, [r0] - ldr r0, _08028118 @ =gUnknown_2023D74 + ldr r0, _08028118 @ =gBattlescriptCurrInstr mov r12, r0 cmp r2, r1 bge _08028104 @@ -21231,7 +21231,7 @@ _08028104: bx r0 .align 2, 0 _08028114: .4byte gBattlersCount -_08028118: .4byte gUnknown_2023D74 +_08028118: .4byte gBattlescriptCurrInstr _0802811C: .4byte gBattleMons thumb_func_end atk8A_normalisebuffs @@ -21259,7 +21259,7 @@ atk8B_setbide: @ 8028120 ldrh r1, [r1] movs r2, 0 strh r1, [r0] - ldr r1, _08028188 @ =gUnknown_2023D58 + ldr r1, _08028188 @ =gTakenDmg ldrb r0, [r3] lsls r0, 2 adds r0, r1 @@ -21273,7 +21273,7 @@ atk8B_setbide: @ 8028120 lsls r2, 2 orrs r0, r2 str r0, [r1] - ldr r1, _0802818C @ =gUnknown_2023D74 + ldr r1, _0802818C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -21285,8 +21285,8 @@ _08028178: .4byte gBattleMons _0802817C: .4byte gBattlerAttacker _08028180: .4byte gUnknown_2023DB8 _08028184: .4byte gCurrentMove -_08028188: .4byte gUnknown_2023D58 -_0802818C: .4byte gUnknown_2023D74 +_08028188: .4byte gTakenDmg +_0802818C: .4byte gBattlescriptCurrInstr thumb_func_end atk8B_setbide thumb_func_start atk8C_confuseifrepeatingattackends @@ -21305,11 +21305,11 @@ atk8C_confuseifrepeatingattackends: @ 8028190 ands r0, r1 cmp r0, 0 bne _080281B2 - ldr r1, _080281C8 @ =gUnknown_2023E82 + ldr r1, _080281C8 @ =gBattleCommunication movs r0, 0x75 strb r0, [r1, 0x3] _080281B2: - ldr r1, _080281CC @ =gUnknown_2023D74 + ldr r1, _080281CC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -21318,14 +21318,14 @@ _080281B2: .align 2, 0 _080281C0: .4byte gBattleMons _080281C4: .4byte gBattlerAttacker -_080281C8: .4byte gUnknown_2023E82 -_080281CC: .4byte gUnknown_2023D74 +_080281C8: .4byte gBattleCommunication +_080281CC: .4byte gBattlescriptCurrInstr thumb_func_end atk8C_confuseifrepeatingattackends thumb_func_start atk8D_setmultihitcounter atk8D_setmultihitcounter: @ 80281D0 push {r4,r5,lr} - ldr r0, _080281E4 @ =gUnknown_2023D74 + ldr r0, _080281E4 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x1] cmp r1, 0 @@ -21334,7 +21334,7 @@ atk8D_setmultihitcounter: @ 80281D0 strb r1, [r0] b _08028206 .align 2, 0 -_080281E4: .4byte gUnknown_2023D74 +_080281E4: .4byte gBattlescriptCurrInstr _080281E8: .4byte gUnknown_2023D72 _080281EC: ldr r4, _08028214 @ =gUnknown_2023D72 @@ -21350,7 +21350,7 @@ _08028202: adds r0, 0x2 strb r0, [r4] _08028206: - ldr r1, _08028218 @ =gUnknown_2023D74 + ldr r1, _08028218 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -21359,7 +21359,7 @@ _08028206: bx r0 .align 2, 0 _08028214: .4byte gUnknown_2023D72 -_08028218: .4byte gUnknown_2023D74 +_08028218: .4byte gBattlescriptCurrInstr thumb_func_end atk8D_setmultihitcounter thumb_func_start atk8E_initmultihitstring @@ -21375,14 +21375,14 @@ atk8E_initmultihitstring: @ 802821C strb r2, [r1, 0xC] movs r0, 0xFF strb r0, [r1, 0xD] - ldr r1, _08028240 @ =gUnknown_2023D74 + ldr r1, _08028240 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802823C: .4byte gBattleScripting -_08028240: .4byte gUnknown_2023D74 +_08028240: .4byte gBattlescriptCurrInstr thumb_func_end atk8E_initmultihitstring thumb_func_start TryDoForceSwitchOut @@ -21442,7 +21442,7 @@ _0802828C: lsrs r1, 2 cmp r0, r1 bhi _080282DC - ldr r3, _080282D8 @ =gUnknown_2023D74 + ldr r3, _080282D8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -21458,7 +21458,7 @@ _0802828C: movs r0, 0 b _080282F6 .align 2, 0 -_080282D8: .4byte gUnknown_2023D74 +_080282D8: .4byte gBattlescriptCurrInstr _080282DC: ldr r0, _080282FC @ =gBattleStruct ldr r1, [r0] @@ -21470,7 +21470,7 @@ _080282E8: adds r0, r2 ldrh r0, [r0] strb r0, [r1] - ldr r1, _08028304 @ =gUnknown_2023D74 + ldr r1, _08028304 @ =gBattlescriptCurrInstr ldr r0, _08028308 @ =gUnknown_81D8C10 str r0, [r1] movs r0, 0x1 @@ -21481,7 +21481,7 @@ _080282F6: .align 2, 0 _080282FC: .4byte gBattleStruct _08028300: .4byte gBattlerPartyIndexes -_08028304: .4byte gUnknown_2023D74 +_08028304: .4byte gBattlescriptCurrInstr _08028308: .4byte gUnknown_81D8C10 thumb_func_end TryDoForceSwitchOut @@ -21622,7 +21622,7 @@ _08028404: cmp r1, 0 bne _08028440 _0802841C: - ldr r3, _0802843C @ =gUnknown_2023D74 + ldr r3, _0802843C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -21638,7 +21638,7 @@ _0802841C: b _080285F8 .align 2, 0 _08028438: .4byte gBattleTypeFlags -_0802843C: .4byte gUnknown_2023D74 +_0802843C: .4byte gBattlescriptCurrInstr _08028440: bl TryDoForceSwitchOut lsls r0, 24 @@ -21955,7 +21955,7 @@ _080286BE: _080286C8: cmp r3, r6 bne _080286EC - ldr r3, _080286E8 @ =gUnknown_2023D74 + ldr r3, _080286E8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -21970,7 +21970,7 @@ _080286C8: str r1, [r3] b _08028790 .align 2, 0 -_080286E8: .4byte gUnknown_2023D74 +_080286E8: .4byte gBattlescriptCurrInstr _080286EC: movs r7, 0x3 ldr r5, _08028744 @ =gBattleMoves @@ -22051,7 +22051,7 @@ _08028752: strb r2, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r1, _080287A4 @ =gUnknown_2023D74 + ldr r1, _080287A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -22065,7 +22065,7 @@ _08028790: bx r0 .align 2, 0 _080287A0: .4byte gBattleTextBuff1 -_080287A4: .4byte gUnknown_2023D74 +_080287A4: .4byte gBattlescriptCurrInstr thumb_func_end atk90_tryconversiontypechange thumb_func_start atk91_givepaydaymoney @@ -22111,7 +22111,7 @@ atk91_givepaydaymoney: @ 80287A8 strb r4, [r1, 0x5] movs r0, 0xFF strb r0, [r1, 0x6] - ldr r4, _08028820 @ =gUnknown_2023D74 + ldr r4, _08028820 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush @@ -22124,10 +22124,10 @@ _08028810: .4byte gUnknown_2023E7E _08028814: .4byte gBattleStruct _08028818: .4byte gSaveBlock1Ptr _0802881C: .4byte gBattleTextBuff1 -_08028820: .4byte gUnknown_2023D74 +_08028820: .4byte gBattlescriptCurrInstr _08028824: .4byte gUnknown_81D911D _08028828: - ldr r1, _08028838 @ =gUnknown_2023D74 + ldr r1, _08028838 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -22136,7 +22136,7 @@ _08028830: pop {r0} bx r0 .align 2, 0 -_08028838: .4byte gUnknown_2023D74 +_08028838: .4byte gBattlescriptCurrInstr thumb_func_end atk91_givepaydaymoney thumb_func_start atk92_setlightscreen @@ -22145,7 +22145,7 @@ atk92_setlightscreen: @ 802883C ldr r5, _0802886C @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition - ldr r4, _08028870 @ =gSideAffecting + ldr r4, _08028870 @ =gSideStatuses movs r6, 0x1 adds r1, r6, 0 ands r1, r0 @@ -22161,14 +22161,14 @@ atk92_setlightscreen: @ 802883C movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _08028878 @ =gUnknown_2023E82 + ldr r1, _08028878 @ =gBattleCommunication movs r0, 0 b _080288F0 .align 2, 0 _0802886C: .4byte gBattlerAttacker -_08028870: .4byte gSideAffecting +_08028870: .4byte gSideStatuses _08028874: .4byte gMoveResultFlags -_08028878: .4byte gUnknown_2023E82 +_08028878: .4byte gBattleCommunication _0802887C: ldrb r0, [r5] bl GetBattlerPosition @@ -22212,19 +22212,19 @@ _0802887C: lsrs r0, 24 cmp r0, 0x2 bne _080288EC - ldr r1, _080288E8 @ =gUnknown_2023E82 + ldr r1, _080288E8 @ =gBattleCommunication movs r0, 0x4 b _080288F0 .align 2, 0 _080288E0: .4byte gSideTimers _080288E4: .4byte gBattleTypeFlags -_080288E8: .4byte gUnknown_2023E82 +_080288E8: .4byte gBattleCommunication _080288EC: - ldr r1, _08028900 @ =gUnknown_2023E82 + ldr r1, _08028900 @ =gBattleCommunication movs r0, 0x3 _080288F0: strb r0, [r1, 0x5] - ldr r1, _08028904 @ =gUnknown_2023D74 + ldr r1, _08028904 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -22232,8 +22232,8 @@ _080288F0: pop {r0} bx r0 .align 2, 0 -_08028900: .4byte gUnknown_2023E82 -_08028904: .4byte gUnknown_2023D74 +_08028900: .4byte gBattleCommunication +_08028904: .4byte gBattlescriptCurrInstr thumb_func_end atk92_setlightscreen thumb_func_start atk93_tryKO @@ -22295,7 +22295,7 @@ _0802895A: ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 - ldr r2, _080289DC @ =gUnknown_2023ECC + ldr r2, _080289DC @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 @@ -22327,7 +22327,7 @@ _08028998: strb r0, [r2] ldr r0, _080289E8 @ =gLastUsedAbility strb r4, [r0] - ldr r1, _080289EC @ =gUnknown_2023D74 + ldr r1, _080289EC @ =gBattlescriptCurrInstr ldr r0, _080289F0 @ =gUnknown_81D93A1 str r0, [r1] mov r1, r9 @@ -22338,11 +22338,11 @@ _08028998: .align 2, 0 _080289D4: .4byte gPotentialItemEffectBattler _080289D8: .4byte gBattlerTarget -_080289DC: .4byte gUnknown_2023ECC +_080289DC: .4byte gSpecialStatuses _080289E0: .4byte gBattleMons _080289E4: .4byte gMoveResultFlags _080289E8: .4byte gLastUsedAbility -_080289EC: .4byte gUnknown_2023D74 +_080289EC: .4byte gBattlescriptCurrInstr _080289F0: .4byte gUnknown_81D93A1 _080289F4: ldr r1, _08028A68 @ =gStatuses3 @@ -22491,7 +22491,7 @@ _08028B0E: cmp r4, 0 beq _08028BE0 _08028B1A: - ldr r0, _08028B5C @ =gUnknown_2023E8C + ldr r0, _08028B5C @ =gProtectStructs mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 @@ -22518,11 +22518,11 @@ _08028B4C: .4byte gBattleMoves _08028B50: .4byte gCurrentMove _08028B54: .4byte gBattleMons _08028B58: .4byte gBattlerTarget -_08028B5C: .4byte gUnknown_2023E8C +_08028B5C: .4byte gProtectStructs _08028B60: .4byte gBattleMoveDamage _08028B64: .4byte gMoveResultFlags _08028B68: - ldr r0, _08028BA4 @ =gUnknown_2023ECC + ldr r0, _08028BA4 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -22553,7 +22553,7 @@ _08028B68: strh r0, [r1] b _08028BCA .align 2, 0 -_08028BA4: .4byte gUnknown_2023ECC +_08028BA4: .4byte gSpecialStatuses _08028BA8: .4byte gBattleMoveDamage _08028BAC: .4byte gMoveResultFlags _08028BB0: .4byte gLastUsedItem @@ -22571,7 +22571,7 @@ _08028BC6: orrs r0, r1 strb r0, [r2] _08028BCA: - ldr r1, _08028BDC @ =gUnknown_2023D74 + ldr r1, _08028BDC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -22579,7 +22579,7 @@ _08028BCA: .align 2, 0 _08028BD4: .4byte gBattleMoveDamage _08028BD8: .4byte gMoveResultFlags -_08028BDC: .4byte gUnknown_2023D74 +_08028BDC: .4byte gBattlescriptCurrInstr _08028BE0: ldr r2, _08028C14 @ =gMoveResultFlags ldrb r0, [r2] @@ -22603,7 +22603,7 @@ _08028BE0: ldrb r0, [r0] cmp r1, r0 bcc _08028C28 - ldr r1, _08028C24 @ =gUnknown_2023E82 + ldr r1, _08028C24 @ =gBattleCommunication movs r0, 0 b _08028C2C .align 2, 0 @@ -22611,13 +22611,13 @@ _08028C14: .4byte gMoveResultFlags _08028C18: .4byte gBattleMons _08028C1C: .4byte gBattlerAttacker _08028C20: .4byte gBattlerTarget -_08028C24: .4byte gUnknown_2023E82 +_08028C24: .4byte gBattleCommunication _08028C28: - ldr r1, _08028C54 @ =gUnknown_2023E82 + ldr r1, _08028C54 @ =gBattleCommunication movs r0, 0x1 _08028C2C: strb r0, [r1, 0x5] - ldr r3, _08028C58 @ =gUnknown_2023D74 + ldr r3, _08028C58 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -22638,8 +22638,8 @@ _08028C48: pop {r0} bx r0 .align 2, 0 -_08028C54: .4byte gUnknown_2023E82 -_08028C58: .4byte gUnknown_2023D74 +_08028C54: .4byte gBattleCommunication +_08028C58: .4byte gBattlescriptCurrInstr thumb_func_end atk93_tryKO thumb_func_start atk94_damagetohalftargethp @@ -22660,7 +22660,7 @@ atk94_damagetohalftargethp: @ 8028C5C movs r0, 0x1 str r0, [r3] _08028C7A: - ldr r1, _08028C94 @ =gUnknown_2023D74 + ldr r1, _08028C94 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -22670,7 +22670,7 @@ _08028C7A: _08028C88: .4byte gBattleMoveDamage _08028C8C: .4byte gBattleMons _08028C90: .4byte gBattlerTarget -_08028C94: .4byte gUnknown_2023D74 +_08028C94: .4byte gBattlescriptCurrInstr thumb_func_end atk94_damagetohalftargethp thumb_func_start atk95_setsandstorm @@ -22687,35 +22687,35 @@ atk95_setsandstorm: @ 8028C98 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _08028CC0 @ =gUnknown_2023E82 + ldr r1, _08028CC0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08028CD6 .align 2, 0 _08028CB8: .4byte gBattleWeather _08028CBC: .4byte gMoveResultFlags -_08028CC0: .4byte gUnknown_2023E82 +_08028CC0: .4byte gBattleCommunication _08028CC4: movs r0, 0x8 strh r0, [r2] - ldr r1, _08028CE4 @ =gUnknown_2023E82 + ldr r1, _08028CE4 @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x5] - ldr r0, _08028CE8 @ =gUnknown_2023F20 + ldr r0, _08028CE8 @ =gWishFutureKnock adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _08028CD6: - ldr r1, _08028CEC @ =gUnknown_2023D74 + ldr r1, _08028CEC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_08028CE4: .4byte gUnknown_2023E82 -_08028CE8: .4byte gUnknown_2023F20 -_08028CEC: .4byte gUnknown_2023D74 +_08028CE4: .4byte gBattleCommunication +_08028CE8: .4byte gWishFutureKnock +_08028CEC: .4byte gBattlescriptCurrInstr thumb_func_end atk95_setsandstorm thumb_func_start sub_8028CF0 @@ -22909,7 +22909,7 @@ _08028E64: movs r0, 0 str r0, [r1] _08028E6A: - ldr r1, _08028E8C @ =gUnknown_2023D74 + ldr r1, _08028E8C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -22922,7 +22922,7 @@ _08028E7C: .4byte gBattleMoveDamage _08028E80: .4byte gBattlerAttacker _08028E84: .4byte gAbsentBattlerFlags _08028E88: .4byte gBitTable -_08028E8C: .4byte gUnknown_2023D74 +_08028E8C: .4byte gBattlescriptCurrInstr thumb_func_end sub_8028CF0 thumb_func_start sub_8028E90 @@ -23023,7 +23023,7 @@ _08028F1C: ldrb r2, [r0] cmp r2, 0xC bne _08028F94 - ldr r1, _08028F88 @ =gUnknown_2023D74 + ldr r1, _08028F88 @ =gBattlescriptCurrInstr ldr r0, _08028F8C @ =gUnknown_81D9444 str r0, [r1] ldr r0, _08028F90 @ =gLastUsedAbility @@ -23037,7 +23037,7 @@ _08028F78: .4byte gBattlerPartyIndexes _08028F7C: .4byte gEnemyParty _08028F80: .4byte gBattlerTarget _08028F84: .4byte gBattleMons -_08028F88: .4byte gUnknown_2023D74 +_08028F88: .4byte gBattlescriptCurrInstr _08028F8C: .4byte gUnknown_81D9444 _08028F90: .4byte gLastUsedAbility _08028F94: @@ -23078,7 +23078,7 @@ _08028F94: cmp r0, 0xFF bne _08029008 _08028FE4: - ldr r3, _08029004 @ =gUnknown_2023D74 + ldr r3, _08029004 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -23094,7 +23094,7 @@ _08028FE4: b _0802902C .align 2, 0 _08029000: .4byte gBattleMons -_08029004: .4byte gUnknown_2023D74 +_08029004: .4byte gBattlescriptCurrInstr _08029008: ldrb r0, [r5] adds r2, r0, 0 @@ -23110,7 +23110,7 @@ _08029008: ldr r0, [r2] orrs r0, r1 str r0, [r2] - ldr r1, _08029044 @ =gUnknown_2023D74 + ldr r1, _08029044 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -23125,7 +23125,7 @@ _0802902C: .align 2, 0 _0802903C: .4byte gBitTable _08029040: .4byte gBattlerAttacker -_08029044: .4byte gUnknown_2023D74 +_08029044: .4byte gBattlescriptCurrInstr thumb_func_end sub_8028E90 thumb_func_start sub_8029048 @@ -23137,7 +23137,7 @@ sub_8029048: @ 8029048 beq _08029054 b _080291C0 _08029054: - ldr r5, _080290BC @ =gUnknown_2023D74 + ldr r5, _080290BC @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r0, [r2, 0x1] cmp r0, 0xD @@ -23174,7 +23174,7 @@ _08029074: movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080290A2: ldrb r0, [r4] adds r0, 0x1 @@ -23188,7 +23188,7 @@ _080290A2: b _08029164 .align 2, 0 _080290B8: .4byte gBattleControllerExecFlags -_080290BC: .4byte gUnknown_2023D74 +_080290BC: .4byte gBattlescriptCurrInstr _080290C0: .4byte gActiveBattler _080290C4: .4byte gBattlersCount _080290C8: .4byte gBitTable @@ -23224,7 +23224,7 @@ _080290D4: movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08029114: ldr r0, _08029184 @ =gBattleTypeFlags ldr r0, [r0] @@ -23261,9 +23261,9 @@ _08029114: movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08029164: - ldr r1, _08029188 @ =gUnknown_2023D74 + ldr r1, _08029188 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] @@ -23275,10 +23275,10 @@ _08029178: .4byte gAbsentBattlerFlags _0802917C: .4byte gBitTable _08029180: .4byte gBattleMons _08029184: .4byte gBattleTypeFlags -_08029188: .4byte gUnknown_2023D74 +_08029188: .4byte gBattlescriptCurrInstr _0802918C: ldrb r0, [r2, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _080291C8 @ =gActiveBattler strb r0, [r4] ldr r3, _080291CC @ =gBattleMons @@ -23296,7 +23296,7 @@ _0802918C: movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] @@ -23331,14 +23331,14 @@ atk99_setmist: @ 80291D0 movs r1, 0x20 orrs r0, r1 strb r0, [r2] - ldr r0, _0802920C @ =gUnknown_2023E82 + ldr r0, _0802920C @ =gBattleCommunication strb r5, [r0, 0x5] b _0802925E .align 2, 0 _08029200: .4byte gSideTimers _08029204: .4byte gBattlerAttacker _08029208: .4byte gMoveResultFlags -_0802920C: .4byte gUnknown_2023E82 +_0802920C: .4byte gBattleCommunication _08029210: ldrb r0, [r4] bl GetBattlerPosition @@ -23362,7 +23362,7 @@ _08029210: strb r1, [r0, 0x5] ldrb r0, [r4] bl GetBattlerPosition - ldr r2, _0802926C @ =gSideAffecting + ldr r2, _0802926C @ =gSideStatuses adds r1, r5, 0 ands r1, r0 lsls r1, 1 @@ -23374,10 +23374,10 @@ _08029210: movs r3, 0 orrs r0, r2 strh r0, [r1] - ldr r0, _08029270 @ =gUnknown_2023E82 + ldr r0, _08029270 @ =gBattleCommunication strb r3, [r0, 0x5] _0802925E: - ldr r1, _08029274 @ =gUnknown_2023D74 + ldr r1, _08029274 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -23385,9 +23385,9 @@ _0802925E: pop {r0} bx r0 .align 2, 0 -_0802926C: .4byte gSideAffecting -_08029270: .4byte gUnknown_2023E82 -_08029274: .4byte gUnknown_2023D74 +_0802926C: .4byte gSideStatuses +_08029270: .4byte gBattleCommunication +_08029274: .4byte gBattlescriptCurrInstr thumb_func_end atk99_setmist thumb_func_start atk9A_setfocusenergy @@ -23412,7 +23412,7 @@ atk9A_setfocusenergy: @ 8029278 movs r1, 0x20 orrs r0, r1 strb r0, [r2] - ldr r1, _080292B4 @ =gUnknown_2023E82 + ldr r1, _080292B4 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080292C0 @@ -23420,22 +23420,22 @@ atk9A_setfocusenergy: @ 8029278 _080292A8: .4byte gBattleMons _080292AC: .4byte gBattlerAttacker _080292B0: .4byte gMoveResultFlags -_080292B4: .4byte gUnknown_2023E82 +_080292B4: .4byte gBattleCommunication _080292B8: orrs r1, r3 str r1, [r0] - ldr r0, _080292CC @ =gUnknown_2023E82 + ldr r0, _080292CC @ =gBattleCommunication strb r2, [r0, 0x5] _080292C0: - ldr r1, _080292D0 @ =gUnknown_2023D74 + ldr r1, _080292D0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_080292CC: .4byte gUnknown_2023E82 -_080292D0: .4byte gUnknown_2023D74 +_080292CC: .4byte gBattleCommunication +_080292D0: .4byte gBattlescriptCurrInstr thumb_func_end atk9A_setfocusenergy thumb_func_start atk9B_transformdataexecution @@ -23447,7 +23447,7 @@ atk9B_transformdataexecution: @ 80292D4 ldr r2, _08029330 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] - ldr r1, _08029334 @ =gUnknown_2023D74 + ldr r1, _08029334 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -23481,19 +23481,19 @@ _0802931A: movs r1, 0x20 orrs r0, r1 strb r0, [r2] - ldr r1, _0802934C @ =gUnknown_2023E82 + ldr r1, _0802934C @ =gBattleCommunication movs r0, 0x1 b _08029464 .align 2, 0 _0802932C: .4byte gChosenMove _08029330: .4byte 0x0000ffff -_08029334: .4byte gUnknown_2023D74 +_08029334: .4byte gBattlescriptCurrInstr _08029338: .4byte gBattleMons _0802933C: .4byte gBattlerTarget _08029340: .4byte gStatuses3 _08029344: .4byte 0x000400c0 _08029348: .4byte gMoveResultFlags -_0802934C: .4byte gUnknown_2023E82 +_0802934C: .4byte gBattleCommunication _08029350: ldr r3, _08029424 @ =gBattlerAttacker ldrb r0, [r3] @@ -23626,8 +23626,8 @@ _08029442: bl BtlController_EmitResetActionMoveSelection mov r2, r8 ldrb r0, [r2] - bl MarkBufferBankForExecution - ldr r1, _08029470 @ =gUnknown_2023E82 + bl MarkBattlerForControllerExec + ldr r1, _08029470 @ =gBattleCommunication movs r0, 0 _08029464: strb r0, [r1, 0x5] @@ -23637,7 +23637,7 @@ _08029464: pop {r0} bx r0 .align 2, 0 -_08029470: .4byte gUnknown_2023E82 +_08029470: .4byte gBattleCommunication thumb_func_end atk9B_transformdataexecution thumb_func_start atk9C_setsubstitute @@ -23662,7 +23662,7 @@ _0802948E: ldr r1, _080294AC @ =gBattleMoveDamage movs r0, 0 str r0, [r1] - ldr r1, _080294B0 @ =gUnknown_2023E82 + ldr r1, _080294B0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08029508 @@ -23670,7 +23670,7 @@ _0802948E: _080294A4: .4byte gBattleMons _080294A8: .4byte gBattlerAttacker _080294AC: .4byte gBattleMoveDamage -_080294B0: .4byte gUnknown_2023E82 +_080294B0: .4byte gBattleCommunication _080294B4: ldr r4, _08029518 @ =gBattleMoveDamage str r1, [r4] @@ -23707,16 +23707,16 @@ _080294C0: ldr r1, [r4] movs r2, 0 strb r1, [r0, 0xA] - ldr r0, _08029524 @ =gUnknown_2023E82 + ldr r0, _08029524 @ =gBattleCommunication strb r2, [r0, 0x5] - ldr r2, _08029528 @ =gUnknown_2023DD0 + ldr r2, _08029528 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 1 orrs r0, r1 str r0, [r2] _08029508: - ldr r1, _0802952C @ =gUnknown_2023D74 + ldr r1, _0802952C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -23727,9 +23727,9 @@ _08029508: _08029518: .4byte gBattleMoveDamage _0802951C: .4byte 0xffff1fff _08029520: .4byte gDisableStructs -_08029524: .4byte gUnknown_2023E82 -_08029528: .4byte gUnknown_2023DD0 -_0802952C: .4byte gUnknown_2023D74 +_08029524: .4byte gBattleCommunication +_08029528: .4byte gHitMarker +_0802952C: .4byte gBattlescriptCurrInstr thumb_func_end atk9C_setsubstitute thumb_func_start IsMoveUncopyableByMimic @@ -23819,7 +23819,7 @@ atk9D_mimicattackcopy: @ 8029578 cmp r1, r7 bne _0802960C _080295D2: - ldr r3, _08029608 @ =gUnknown_2023D74 + ldr r3, _08029608 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -23840,14 +23840,14 @@ _080295F8: .4byte gLastUsedMove _080295FC: .4byte gBattlerTarget _08029600: .4byte gBattleMons _08029604: .4byte gBattlerAttacker -_08029608: .4byte gUnknown_2023D74 +_08029608: .4byte gBattlescriptCurrInstr _0802960C: movs r2, 0 mov r3, r12 adds r3, 0xC adds r0, r4, r3 ldrh r0, [r0] - ldr r4, _0802969C @ =gUnknown_2023D74 + ldr r4, _0802969C @ =gBattlescriptCurrInstr mov r10, r4 cmp r0, r1 beq _08029646 @@ -23916,7 +23916,7 @@ _08029646: strb r4, [r0] b _080296C4 .align 2, 0 -_0802969C: .4byte gUnknown_2023D74 +_0802969C: .4byte gBattlescriptCurrInstr _080296A0: .4byte gUnknown_2023D48 _080296A4: .4byte gLastUsedMove _080296A8: .4byte gBattlerTarget @@ -24014,7 +24014,7 @@ atk9E_metronome: @ 8029754 movs r6, 0xB1 lsls r6, 1 ldr r5, _080297D8 @ =gUnknown_82507E8 - ldr r0, _080297DC @ =gUnknown_2023D74 + ldr r0, _080297DC @ =gBattlescriptCurrInstr mov r8, r0 _08029766: bl Random @@ -24045,7 +24045,7 @@ _08029794: ldr r0, _080297E4 @ =0x0000ffff cmp r1, r0 bne _08029766 - ldr r2, _080297E8 @ =gUnknown_2023DD0 + ldr r2, _080297E8 @ =gHitMarker ldr r0, [r2] ldr r1, _080297EC @ =0xfffffbff ands r0, r1 @@ -24076,10 +24076,10 @@ _08029794: .align 2, 0 _080297D4: .4byte gCurrentMove _080297D8: .4byte gUnknown_82507E8 -_080297DC: .4byte gUnknown_2023D74 +_080297DC: .4byte gBattlescriptCurrInstr _080297E0: .4byte 0x000001ff _080297E4: .4byte 0x0000ffff -_080297E8: .4byte gUnknown_2023DD0 +_080297E8: .4byte gHitMarker _080297EC: .4byte 0xfffffbff _080297F0: .4byte gUnknown_81D65A8 _080297F4: .4byte gBattleMoves @@ -24098,7 +24098,7 @@ atk9F_dmgtolevel: @ 80297FC adds r0, 0x2A ldrb r0, [r0] str r0, [r3] - ldr r1, _08029828 @ =gUnknown_2023D74 + ldr r1, _08029828 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -24107,7 +24107,7 @@ atk9F_dmgtolevel: @ 80297FC _0802981C: .4byte gBattleMoveDamage _08029820: .4byte gBattleMons _08029824: .4byte gBattlerAttacker -_08029828: .4byte gUnknown_2023D74 +_08029828: .4byte gBattlescriptCurrInstr thumb_func_end atk9F_dmgtolevel thumb_func_start atkA0_psywavedamageeffect @@ -24138,7 +24138,7 @@ _08029830: movs r1, 0x64 bl __divsi3 str r0, [r4] - ldr r1, _0802987C @ =gUnknown_2023D74 + ldr r1, _0802987C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -24149,7 +24149,7 @@ _08029830: _08029870: .4byte gBattleMoveDamage _08029874: .4byte gBattleMons _08029878: .4byte gBattlerAttacker -_0802987C: .4byte gUnknown_2023D74 +_0802987C: .4byte gBattlescriptCurrInstr thumb_func_end atkA0_psywavedamageeffect thumb_func_start atkA1_counterdamagecalculator @@ -24160,7 +24160,7 @@ atkA1_counterdamagecalculator: @ 8029880 bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 - ldr r5, _080298F4 @ =gUnknown_2023E8C + ldr r5, _080298F4 @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r5 @@ -24209,14 +24209,14 @@ atkA1_counterdamagecalculator: @ 8029880 b _08029918 .align 2, 0 _080298F0: .4byte gBattlerAttacker -_080298F4: .4byte gUnknown_2023E8C +_080298F4: .4byte gProtectStructs _080298F8: .4byte gBattleMons _080298FC: .4byte gBattleMoveDamage _08029900: .4byte gSideTimers _08029904: .4byte gBattlerTarget _08029908: ldr r2, _08029924 @ =gBattlerTarget - ldr r1, _08029928 @ =gUnknown_2023E8C + ldr r1, _08029928 @ =gProtectStructs ldr r0, _0802992C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -24224,18 +24224,18 @@ _08029908: ldrb r0, [r0, 0xC] strb r0, [r2] _08029918: - ldr r1, _08029930 @ =gUnknown_2023D74 + ldr r1, _08029930 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029964 .align 2, 0 _08029924: .4byte gBattlerTarget -_08029928: .4byte gUnknown_2023E8C +_08029928: .4byte gProtectStructs _0802992C: .4byte gBattlerAttacker -_08029930: .4byte gUnknown_2023D74 +_08029930: .4byte gBattlescriptCurrInstr _08029934: - ldr r2, _0802996C @ =gUnknown_2023ECC + ldr r2, _0802996C @ =gSpecialStatuses ldr r0, _08029970 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 @@ -24246,7 +24246,7 @@ _08029934: movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r3, _08029974 @ =gUnknown_2023D74 + ldr r3, _08029974 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24264,9 +24264,9 @@ _08029964: pop {r0} bx r0 .align 2, 0 -_0802996C: .4byte gUnknown_2023ECC +_0802996C: .4byte gSpecialStatuses _08029970: .4byte gBattlerAttacker -_08029974: .4byte gUnknown_2023D74 +_08029974: .4byte gBattlescriptCurrInstr thumb_func_end atkA1_counterdamagecalculator thumb_func_start atkA2_mirrorcoatdamagecalculator @@ -24277,7 +24277,7 @@ atkA2_mirrorcoatdamagecalculator: @ 8029978 bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 - ldr r5, _080299EC @ =gUnknown_2023E8C + ldr r5, _080299EC @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r5 @@ -24327,14 +24327,14 @@ atkA2_mirrorcoatdamagecalculator: @ 8029978 b _08029A10 .align 2, 0 _080299E8: .4byte gBattlerAttacker -_080299EC: .4byte gUnknown_2023E8C +_080299EC: .4byte gProtectStructs _080299F0: .4byte gBattleMons _080299F4: .4byte gBattleMoveDamage _080299F8: .4byte gSideTimers _080299FC: .4byte gBattlerTarget _08029A00: ldr r2, _08029A1C @ =gBattlerTarget - ldr r1, _08029A20 @ =gUnknown_2023E8C + ldr r1, _08029A20 @ =gProtectStructs ldr r0, _08029A24 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -24342,18 +24342,18 @@ _08029A00: ldrb r0, [r0, 0xD] strb r0, [r2] _08029A10: - ldr r1, _08029A28 @ =gUnknown_2023D74 + ldr r1, _08029A28 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029A5C .align 2, 0 _08029A1C: .4byte gBattlerTarget -_08029A20: .4byte gUnknown_2023E8C +_08029A20: .4byte gProtectStructs _08029A24: .4byte gBattlerAttacker -_08029A28: .4byte gUnknown_2023D74 +_08029A28: .4byte gBattlescriptCurrInstr _08029A2C: - ldr r2, _08029A64 @ =gUnknown_2023ECC + ldr r2, _08029A64 @ =gSpecialStatuses ldr r0, _08029A68 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 @@ -24364,7 +24364,7 @@ _08029A2C: movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r3, _08029A6C @ =gUnknown_2023D74 + ldr r3, _08029A6C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24382,9 +24382,9 @@ _08029A5C: pop {r0} bx r0 .align 2, 0 -_08029A64: .4byte gUnknown_2023ECC +_08029A64: .4byte gSpecialStatuses _08029A68: .4byte gBattlerAttacker -_08029A6C: .4byte gUnknown_2023D74 +_08029A6C: .4byte gBattlescriptCurrInstr thumb_func_end atkA2_mirrorcoatdamagecalculator thumb_func_start atkA3_disablelastusedattack @@ -24513,7 +24513,7 @@ _08029AC4: ands r0, r3 orrs r0, r2 strb r0, [r1, 0xB] - ldr r1, _08029B84 @ =gUnknown_2023D74 + ldr r1, _08029B84 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -24524,9 +24524,9 @@ _08029B74: .4byte gBattlerTarget _08029B78: .4byte gLastUsedMove _08029B7C: .4byte gDisableStructs _08029B80: .4byte gBattleTextBuff1 -_08029B84: .4byte gUnknown_2023D74 +_08029B84: .4byte gBattlescriptCurrInstr _08029B88: - ldr r3, _08029BB0 @ =gUnknown_2023D74 + ldr r3, _08029BB0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24547,7 +24547,7 @@ _08029BA2: pop {r0} bx r0 .align 2, 0 -_08029BB0: .4byte gUnknown_2023D74 +_08029BB0: .4byte gBattlescriptCurrInstr thumb_func_end atkA3_disablelastusedattack thumb_func_start atkA4_trysetencore @@ -24672,7 +24672,7 @@ _08029C24: ands r0, r3 orrs r0, r2 strb r0, [r1, 0xE] - ldr r1, _08029CB8 @ =gUnknown_2023D74 + ldr r1, _08029CB8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -24682,9 +24682,9 @@ _08029CA8: .4byte gBattleMons _08029CAC: .4byte gBattlerTarget _08029CB0: .4byte gLastUsedMove _08029CB4: .4byte gDisableStructs -_08029CB8: .4byte gUnknown_2023D74 +_08029CB8: .4byte gBattlescriptCurrInstr _08029CBC: - ldr r3, _08029CE4 @ =gUnknown_2023D74 + ldr r3, _08029CE4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24706,7 +24706,7 @@ _08029CD6: pop {r0} bx r0 .align 2, 0 -_08029CE4: .4byte gUnknown_2023D74 +_08029CE4: .4byte gBattlescriptCurrInstr thumb_func_end atkA4_trysetencore thumb_func_start atkA5_painsplitdmgcalc @@ -24760,7 +24760,7 @@ atkA5_painsplitdmgcalc: @ 8029CE8 ldrh r0, [r0, 0x28] subs r0, r3 str r0, [r4] - ldr r2, _08029D7C @ =gUnknown_2023ECC + ldr r2, _08029D7C @ =gSpecialStatuses mov r0, r12 ldrb r1, [r0] lsls r0, r1, 2 @@ -24770,7 +24770,7 @@ atkA5_painsplitdmgcalc: @ 8029CE8 adds r0, r2 ldr r1, _08029D80 @ =0x0000ffff str r1, [r0] - ldr r1, _08029D84 @ =gUnknown_2023D74 + ldr r1, _08029D84 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -24781,11 +24781,11 @@ _08029D6C: .4byte gBattlerTarget _08029D70: .4byte gBattlerAttacker _08029D74: .4byte gBattleMoveDamage _08029D78: .4byte gBattleScripting -_08029D7C: .4byte gUnknown_2023ECC +_08029D7C: .4byte gSpecialStatuses _08029D80: .4byte 0x0000ffff -_08029D84: .4byte gUnknown_2023D74 +_08029D84: .4byte gBattlescriptCurrInstr _08029D88: - ldr r3, _08029DA8 @ =gUnknown_2023D74 + ldr r3, _08029DA8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24803,7 +24803,7 @@ _08029DA2: pop {r0} bx r0 .align 2, 0 -_08029DA8: .4byte gUnknown_2023D74 +_08029DA8: .4byte gBattlescriptCurrInstr thumb_func_end atkA5_painsplitdmgcalc thumb_func_start atkA6_settypetorandomresistance @@ -24845,7 +24845,7 @@ atkA6_settypetorandomresistance: @ 8029DAC cmp r0, 0 beq _08029E94 _08029DF6: - ldr r3, _08029E28 @ =gUnknown_2023D74 + ldr r3, _08029E28 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -24865,7 +24865,7 @@ _08029E18: .4byte gBattlerAttacker _08029E1C: .4byte 0x0000ffff _08029E20: .4byte gBattleMons _08029E24: .4byte gUnknown_2023DC0 -_08029E28: .4byte gUnknown_2023D74 +_08029E28: .4byte gBattlescriptCurrInstr _08029E2C: mov r0, r12 strb r5, [r0] @@ -24883,11 +24883,11 @@ _08029E2C: strb r5, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r1, _08029E54 @ =gUnknown_2023D74 + ldr r1, _08029E54 @ =gBattlescriptCurrInstr b _08029E82 .align 2, 0 _08029E50: .4byte gBattleTextBuff1 -_08029E54: .4byte gUnknown_2023D74 +_08029E54: .4byte gBattlescriptCurrInstr _08029E58: mov r0, r8 adds r0, 0x1 @@ -24977,7 +24977,7 @@ _08029EF8: ble _08029E9C movs r0, 0 mov r8, r0 - ldr r1, _08029FA4 @ =gUnknown_2023D74 + ldr r1, _08029FA4 @ =gBattlescriptCurrInstr mov r12, r1 ldr r3, _08029F90 @ =gUnknown_824F050 adds r0, r4, 0x1 @@ -25055,7 +25055,7 @@ _08029F94: .4byte gUnknown_2023DA8 _08029F98: .4byte gBattlerAttacker _08029F9C: .4byte gBattleMons _08029FA0: .4byte 0x000003e7 -_08029FA4: .4byte gUnknown_2023D74 +_08029FA4: .4byte gBattlescriptCurrInstr _08029FA8: .4byte 0x0000014f thumb_func_end atkA6_settypetorandomresistance @@ -25088,7 +25088,7 @@ atkA7_setalwayshitflag: @ 8029FAC ldr r1, _08029FFC @ =gBattlerAttacker ldrb r1, [r1] strb r1, [r0, 0x15] - ldr r1, _0802A000 @ =gUnknown_2023D74 + ldr r1, _0802A000 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -25100,7 +25100,7 @@ _08029FF0: .4byte gStatuses3 _08029FF4: .4byte gBattlerTarget _08029FF8: .4byte gDisableStructs _08029FFC: .4byte gBattlerAttacker -_0802A000: .4byte gUnknown_2023D74 +_0802A000: .4byte gBattlescriptCurrInstr thumb_func_end atkA7_setalwayshitflag thumb_func_start atkA8_copymovepermanently @@ -25263,7 +25263,7 @@ _0802A0F2: bl BtlController_EmitSetMonData ldr r0, _0802A184 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r1, _0802A188 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] @@ -25284,7 +25284,7 @@ _0802A0F2: strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _0802A18C @ =gUnknown_2023D74 + ldr r1, _0802A18C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -25300,9 +25300,9 @@ _0802A17C: .4byte gUnknown_2023D48 _0802A180: .4byte gBattleMoves _0802A184: .4byte gActiveBattler _0802A188: .4byte gBattleTextBuff1 -_0802A18C: .4byte gUnknown_2023D74 +_0802A18C: .4byte gBattlescriptCurrInstr _0802A190: - ldr r3, _0802A1BC @ =gUnknown_2023D74 + ldr r3, _0802A1BC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -25325,7 +25325,7 @@ _0802A1AA: pop {r0} bx r0 .align 2, 0 -_0802A1BC: .4byte gUnknown_2023D74 +_0802A1BC: .4byte gBattlescriptCurrInstr thumb_func_end atkA8_copymovepermanently thumb_func_start IsTwoTurnsMove @@ -25429,7 +25429,7 @@ _0802A248: cmp r0, 0x1A bne _0802A288 _0802A26A: - ldr r0, _0802A284 @ =gUnknown_2023DD0 + ldr r0, _0802A284 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 20 @@ -25441,7 +25441,7 @@ _0802A26A: .align 2, 0 _0802A27C: .4byte gBattleMoves _0802A280: .4byte gBattleWeather -_0802A284: .4byte gUnknown_2023DD0 +_0802A284: .4byte gHitMarker _0802A288: movs r0, 0x2 _0802A28A: @@ -25518,7 +25518,7 @@ _0802A2FC: lsrs r6, r0, 24 cmp r6, 0xF bne _0802A330 - ldr r1, _0802A32C @ =gUnknown_2023D74 + ldr r1, _0802A32C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -25527,7 +25527,7 @@ _0802A2FC: _0802A320: .4byte gBattlerAttacker _0802A324: .4byte gUnknown_2023BF0 _0802A328: .4byte gBitTable -_0802A32C: .4byte gUnknown_2023D74 +_0802A32C: .4byte gBattlescriptCurrInstr _0802A330: movs r7, 0x3 ldr r4, _0802A3A4 @ =gBitTable @@ -25555,7 +25555,7 @@ _0802A334: strh r0, [r4] ldr r0, _0802A3B4 @ =gUnknown_2023D48 strb r5, [r0] - ldr r2, _0802A3B8 @ =gUnknown_2023DD0 + ldr r2, _0802A3B8 @ =gHitMarker ldr r0, [r2] ldr r1, _0802A3BC @ =0xfffffbff ands r0, r1 @@ -25565,7 +25565,7 @@ _0802A334: bl GetMoveTarget ldr r1, _0802A3C0 @ =gBattlerTarget strb r0, [r1] - ldr r3, _0802A3C4 @ =gUnknown_2023D74 + ldr r3, _0802A3C4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -25592,10 +25592,10 @@ _0802A3A8: .4byte gUnknown_2023D4E _0802A3AC: .4byte gBattleMons _0802A3B0: .4byte gBattlerAttacker _0802A3B4: .4byte gUnknown_2023D48 -_0802A3B8: .4byte gUnknown_2023DD0 +_0802A3B8: .4byte gHitMarker _0802A3BC: .4byte 0xfffffbff _0802A3C0: .4byte gBattlerTarget -_0802A3C4: .4byte gUnknown_2023D74 +_0802A3C4: .4byte gBattlescriptCurrInstr thumb_func_end atkA9_trychoosesleeptalkmove thumb_func_start atkAA_setdestinybond @@ -25612,7 +25612,7 @@ atkAA_setdestinybond: @ 802A3C8 lsls r1, 18 orrs r0, r1 str r0, [r2] - ldr r1, _0802A3F4 @ =gUnknown_2023D74 + ldr r1, _0802A3F4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -25620,7 +25620,7 @@ atkAA_setdestinybond: @ 802A3C8 .align 2, 0 _0802A3EC: .4byte gBattleMons _0802A3F0: .4byte gBattlerAttacker -_0802A3F4: .4byte gUnknown_2023D74 +_0802A3F4: .4byte gBattlescriptCurrInstr thumb_func_end atkAA_setdestinybond thumb_func_start TrySetDestinyBondToHappen @@ -25650,7 +25650,7 @@ TrySetDestinyBondToHappen: @ 802A3F8 beq _0802A442 cmp r5, r3 beq _0802A442 - ldr r2, _0802A454 @ =gUnknown_2023DD0 + ldr r2, _0802A454 @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 17 @@ -25668,21 +25668,21 @@ _0802A442: _0802A448: .4byte gBattlerAttacker _0802A44C: .4byte gBattlerTarget _0802A450: .4byte gBattleMons -_0802A454: .4byte gUnknown_2023DD0 +_0802A454: .4byte gHitMarker thumb_func_end TrySetDestinyBondToHappen thumb_func_start atkAB_trysetdestinybondtohappen atkAB_trysetdestinybondtohappen: @ 802A458 push {lr} bl TrySetDestinyBondToHappen - ldr r1, _0802A46C @ =gUnknown_2023D74 + ldr r1, _0802A46C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802A46C: .4byte gUnknown_2023D74 +_0802A46C: .4byte gBattlescriptCurrInstr thumb_func_end atkAB_trysetdestinybondtohappen thumb_func_start atkAC_remaininghptopower @@ -25723,7 +25723,7 @@ _0802A4AA: adds r0, r1 ldrb r0, [r0] strh r0, [r2] - ldr r1, _0802A4D4 @ =gUnknown_2023D74 + ldr r1, _0802A4D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -25734,7 +25734,7 @@ _0802A4C4: .4byte gBattleMons _0802A4C8: .4byte gBattlerAttacker _0802A4CC: .4byte gUnknown_8250810 _0802A4D0: .4byte gDynamicBasePower -_0802A4D4: .4byte gUnknown_2023D74 +_0802A4D4: .4byte gBattlescriptCurrInstr thumb_func_end atkAC_remaininghptopower thumb_func_start atkAD_tryspiteppreduce @@ -25913,9 +25913,9 @@ _0802A57C: movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0802A630: - ldr r1, _0802A67C @ =gUnknown_2023D74 + ldr r1, _0802A67C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -25943,9 +25943,9 @@ _0802A66C: .4byte gBattleTextBuff2 _0802A670: .4byte gActiveBattler _0802A674: .4byte gDisableStructs _0802A678: .4byte gBitTable -_0802A67C: .4byte gUnknown_2023D74 +_0802A67C: .4byte gBattlescriptCurrInstr _0802A680: - ldr r3, _0802A6AC @ =gUnknown_2023D74 + ldr r3, _0802A6AC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -25968,7 +25968,7 @@ _0802A69A: pop {r0} bx r0 .align 2, 0 -_0802A6AC: .4byte gUnknown_2023D74 +_0802A6AC: .4byte gBattlescriptCurrInstr thumb_func_end atkAD_tryspiteppreduce thumb_func_start atkAE_healpartystatus @@ -25988,7 +25988,7 @@ atkAE_healpartystatus: @ 802A6B0 beq _0802A6CC b _0802A8B6 _0802A6CC: - ldr r6, _0802A724 @ =gUnknown_2023E82 + ldr r6, _0802A724 @ =gBattleCommunication mov r0, r8 strb r0, [r6, 0x5] ldr r5, _0802A728 @ =gBattlerAttacker @@ -26031,7 +26031,7 @@ _0802A6E8: b _0802A74C .align 2, 0 _0802A720: .4byte gCurrentMove -_0802A724: .4byte gUnknown_2023E82 +_0802A724: .4byte gBattleCommunication _0802A728: .4byte gBattlerAttacker _0802A72C: .4byte gEnemyParty _0802A730: .4byte gPlayerParty @@ -26114,7 +26114,7 @@ _0802A7E0: ldrb r1, [r1] adds r0, r3, 0 bl sub_80C71D0 - ldr r1, _0802A838 @ =gUnknown_2023E82 + ldr r1, _0802A838 @ =gBattleCommunication ldrb r0, [r1, 0x5] mov r2, r9 orrs r0, r2 @@ -26155,7 +26155,7 @@ _0802A7F6: muls r0, r1 b _0802A878 .align 2, 0 -_0802A838: .4byte gUnknown_2023E82 +_0802A838: .4byte gBattleCommunication _0802A83C: .4byte gBattleMons _0802A840: .4byte gBattlerPartyIndexes _0802A844: .4byte gBattlerAttacker @@ -26216,7 +26216,7 @@ _0802A8AE: ble _0802A7F6 b _0802A934 _0802A8B6: - ldr r1, _0802A970 @ =gUnknown_2023E82 + ldr r1, _0802A970 @ =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] movs r2, 0x3F @@ -26292,9 +26292,9 @@ _0802A934: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0802A956: - ldr r1, _0802A990 @ =gUnknown_2023D74 + ldr r1, _0802A990 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -26307,7 +26307,7 @@ _0802A956: pop {r0} bx r0 .align 2, 0 -_0802A970: .4byte gUnknown_2023E82 +_0802A970: .4byte gBattleCommunication _0802A974: .4byte gBattleMons _0802A978: .4byte gBattlerAttacker _0802A97C: .4byte 0xf7ffffff @@ -26315,7 +26315,7 @@ _0802A980: .4byte gActiveBattler _0802A984: .4byte gBattleTypeFlags _0802A988: .4byte gAbsentBattlerFlags _0802A98C: .4byte gBitTable -_0802A990: .4byte gUnknown_2023D74 +_0802A990: .4byte gBattlescriptCurrInstr thumb_func_end atkAE_healpartystatus thumb_func_start atkAF_cursetarget @@ -26337,7 +26337,7 @@ atkAF_cursetarget: @ 802A994 ands r0, r3 cmp r0, 0 beq _0802A9E0 - ldr r3, _0802A9DC @ =gUnknown_2023D74 + ldr r3, _0802A9DC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -26354,7 +26354,7 @@ atkAF_cursetarget: @ 802A994 .align 2, 0 _0802A9D4: .4byte gBattleMons _0802A9D8: .4byte gBattlerTarget -_0802A9DC: .4byte gUnknown_2023D74 +_0802A9DC: .4byte gBattlescriptCurrInstr _0802A9E0: orrs r2, r3 str r2, [r1] @@ -26371,7 +26371,7 @@ _0802A9E0: movs r0, 0x1 str r0, [r1] _0802A9FC: - ldr r1, _0802AA14 @ =gUnknown_2023D74 + ldr r1, _0802AA14 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -26382,7 +26382,7 @@ _0802AA04: .align 2, 0 _0802AA0C: .4byte gBattleMoveDamage _0802AA10: .4byte gBattlerAttacker -_0802AA14: .4byte gUnknown_2023D74 +_0802AA14: .4byte gBattlescriptCurrInstr thumb_func_end atkAF_cursetarget thumb_func_start atkB0_trysetspikes @@ -26403,7 +26403,7 @@ atkB0_trysetspikes: @ 802AA18 ldrb r0, [r3, 0xA] cmp r0, 0x3 bne _0802AA7C - ldr r2, _0802AA74 @ =gUnknown_2023ECC + ldr r2, _0802AA74 @ =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 @@ -26413,7 +26413,7 @@ atkB0_trysetspikes: @ 802AA18 movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r3, _0802AA78 @ =gUnknown_2023D74 + ldr r3, _0802AA78 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -26430,10 +26430,10 @@ atkB0_trysetspikes: @ 802AA18 .align 2, 0 _0802AA6C: .4byte gBattlerAttacker _0802AA70: .4byte gSideTimers -_0802AA74: .4byte gUnknown_2023ECC -_0802AA78: .4byte gUnknown_2023D74 +_0802AA74: .4byte gSpecialStatuses +_0802AA78: .4byte gBattlescriptCurrInstr _0802AA7C: - ldr r1, _0802AA9C @ =gSideAffecting + ldr r1, _0802AA9C @ =gSideStatuses adds r1, r2, r1 ldrh r2, [r1] movs r0, 0x10 @@ -26442,7 +26442,7 @@ _0802AA7C: ldrb r0, [r3, 0xA] adds r0, 0x1 strb r0, [r3, 0xA] - ldr r1, _0802AAA0 @ =gUnknown_2023D74 + ldr r1, _0802AAA0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -26451,8 +26451,8 @@ _0802AA96: pop {r0} bx r0 .align 2, 0 -_0802AA9C: .4byte gSideAffecting -_0802AAA0: .4byte gUnknown_2023D74 +_0802AA9C: .4byte gSideStatuses +_0802AAA0: .4byte gBattlescriptCurrInstr thumb_func_end atkB0_trysetspikes thumb_func_start atkB1_setforesight @@ -26469,7 +26469,7 @@ atkB1_setforesight: @ 802AAA4 lsls r1, 22 orrs r0, r1 str r0, [r2] - ldr r1, _0802AAD0 @ =gUnknown_2023D74 + ldr r1, _0802AAD0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -26477,7 +26477,7 @@ atkB1_setforesight: @ 802AAA4 .align 2, 0 _0802AAC8: .4byte gBattleMons _0802AACC: .4byte gBattlerTarget -_0802AAD0: .4byte gUnknown_2023D74 +_0802AAD0: .4byte gBattlescriptCurrInstr thumb_func_end atkB1_setforesight thumb_func_start atkB2_trysetperishsong @@ -26544,7 +26544,7 @@ _0802AB40: ldrb r0, [r0] cmp r6, r0 bne _0802AB74 - ldr r3, _0802AB70 @ =gUnknown_2023D74 + ldr r3, _0802AB70 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -26560,9 +26560,9 @@ _0802AB40: b _0802AB7C .align 2, 0 _0802AB6C: .4byte gBattlersCount -_0802AB70: .4byte gUnknown_2023D74 +_0802AB70: .4byte gBattlescriptCurrInstr _0802AB74: - ldr r1, _0802AB88 @ =gUnknown_2023D74 + ldr r1, _0802AB88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -26574,7 +26574,7 @@ _0802AB7C: pop {r0} bx r0 .align 2, 0 -_0802AB88: .4byte gUnknown_2023D74 +_0802AB88: .4byte gBattlescriptCurrInstr thumb_func_end atkB2_trysetperishsong thumb_func_start atkB3_rolloutdamagecalculation @@ -26592,14 +26592,14 @@ atkB3_rolloutdamagecalculation: @ 802AB8C ldr r0, _0802ABB4 @ =gBattlerAttacker ldrb r0, [r0] bl CancelMultiTurnMoves - ldr r1, _0802ABB8 @ =gUnknown_2023D74 + ldr r1, _0802ABB8 @ =gBattlescriptCurrInstr ldr r0, _0802ABBC @ =gUnknown_81D6960 str r0, [r1] b _0802ACD8 .align 2, 0 _0802ABB0: .4byte gMoveResultFlags _0802ABB4: .4byte gBattlerAttacker -_0802ABB8: .4byte gUnknown_2023D74 +_0802ABB8: .4byte gBattlescriptCurrInstr _0802ABBC: .4byte gUnknown_81D6960 _0802ABC0: ldr r2, _0802ACE4 @ =gBattleMons @@ -26709,7 +26709,7 @@ _0802AC66: lsrs r0, 28 movs r1, 0x5 subs r1, r0 - ldr r7, _0802AD04 @ =gUnknown_2023D74 + ldr r7, _0802AD04 @ =gBattlescriptCurrInstr adds r5, r3, 0 cmp r2, r1 bge _0802ACB4 @@ -26763,7 +26763,7 @@ _0802ACF4: .4byte gUnknown_2023DB8 _0802ACF8: .4byte 0xffffefff _0802ACFC: .4byte gDynamicBasePower _0802AD00: .4byte gBattleMoves -_0802AD04: .4byte gUnknown_2023D74 +_0802AD04: .4byte gBattlescriptCurrInstr thumb_func_end atkB3_rolloutdamagecalculation thumb_func_start atkB4_jumpifconfusedandstatmaxed @@ -26781,7 +26781,7 @@ atkB4_jumpifconfusedandstatmaxed: @ 802AD08 ldr r0, [r0] movs r1, 0x7 ands r0, r1 - ldr r4, _0802AD60 @ =gUnknown_2023D74 + ldr r4, _0802AD60 @ =gBattlescriptCurrInstr cmp r0, 0 beq _0802AD64 ldr r2, [r4] @@ -26810,7 +26810,7 @@ atkB4_jumpifconfusedandstatmaxed: @ 802AD08 .align 2, 0 _0802AD58: .4byte gBattleMons _0802AD5C: .4byte gBattlerTarget -_0802AD60: .4byte gUnknown_2023D74 +_0802AD60: .4byte gBattlescriptCurrInstr _0802AD64: ldr r0, [r4] adds r0, 0x6 @@ -26839,7 +26839,7 @@ atkB5_furycuttercalc: @ 802AD70 adds r0, r2 movs r1, 0 strb r1, [r0, 0x10] - ldr r1, _0802ADA4 @ =gUnknown_2023D74 + ldr r1, _0802ADA4 @ =gBattlescriptCurrInstr ldr r0, _0802ADA8 @ =gUnknown_81D6960 str r0, [r1] b _0802AE04 @@ -26847,7 +26847,7 @@ atkB5_furycuttercalc: @ 802AD70 _0802AD98: .4byte gMoveResultFlags _0802AD9C: .4byte gDisableStructs _0802ADA0: .4byte gBattlerAttacker -_0802ADA4: .4byte gUnknown_2023D74 +_0802ADA4: .4byte gBattlescriptCurrInstr _0802ADA8: .4byte gUnknown_81D6960 _0802ADAC: ldr r5, _0802AE0C @ =gDisableStructs @@ -26879,7 +26879,7 @@ _0802ADC4: subs r0, r1 lsls r0, 2 adds r0, r5 - ldr r4, _0802AE20 @ =gUnknown_2023D74 + ldr r4, _0802AE20 @ =gBattlescriptCurrInstr ldrb r1, [r0, 0x10] cmp r2, r1 bge _0802ADFE @@ -26907,7 +26907,7 @@ _0802AE10: .4byte gBattlerAttacker _0802AE14: .4byte gDynamicBasePower _0802AE18: .4byte gBattleMoves _0802AE1C: .4byte gCurrentMove -_0802AE20: .4byte gUnknown_2023D74 +_0802AE20: .4byte gBattlescriptCurrInstr thumb_func_end atkB5_furycuttercalc thumb_func_start atkB6_happinesstodamagecalculation @@ -26958,7 +26958,7 @@ _0802AE7A: movs r1, 0x19 bl __divsi3 strh r0, [r4] - ldr r1, _0802AEA4 @ =gUnknown_2023D74 + ldr r1, _0802AEA4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -26969,7 +26969,7 @@ _0802AE7A: _0802AE98: .4byte gDynamicBasePower _0802AE9C: .4byte gBattleMons _0802AEA0: .4byte gBattlerAttacker -_0802AEA4: .4byte gUnknown_2023D74 +_0802AEA4: .4byte gBattlescriptCurrInstr thumb_func_end atkB6_happinesstodamagecalculation thumb_func_start atkB7_presentdamagecalculation @@ -27026,14 +27026,14 @@ _0802AF00: _0802AF06: cmp r4, 0xCB bgt _0802AF24 - ldr r1, _0802AF1C @ =gUnknown_2023D74 + ldr r1, _0802AF1C @ =gBattlescriptCurrInstr ldr r0, _0802AF20 @ =gUnknown_81D6930 b _0802AF5E .align 2, 0 _0802AF10: .4byte gBattleMoveDamage _0802AF14: .4byte gBattleMons _0802AF18: .4byte gBattlerTarget -_0802AF1C: .4byte gUnknown_2023D74 +_0802AF1C: .4byte gBattlescriptCurrInstr _0802AF20: .4byte gUnknown_81D6930 _0802AF24: ldr r2, _0802AF40 @ =gBattleMons @@ -27046,13 +27046,13 @@ _0802AF24: ldrh r0, [r0, 0x28] cmp r1, r0 bne _0802AF50 - ldr r1, _0802AF48 @ =gUnknown_2023D74 + ldr r1, _0802AF48 @ =gBattlescriptCurrInstr ldr r0, _0802AF4C @ =gUnknown_81D7DD1 b _0802AF5E .align 2, 0 _0802AF40: .4byte gBattleMons _0802AF44: .4byte gBattlerTarget -_0802AF48: .4byte gUnknown_2023D74 +_0802AF48: .4byte gBattlescriptCurrInstr _0802AF4C: .4byte gUnknown_81D7DD1 _0802AF50: ldr r2, _0802AF68 @ =gMoveResultFlags @@ -27060,7 +27060,7 @@ _0802AF50: movs r0, 0xF7 ands r0, r1 strb r0, [r2] - ldr r1, _0802AF6C @ =gUnknown_2023D74 + ldr r1, _0802AF6C @ =gBattlescriptCurrInstr ldr r0, _0802AF70 @ =gUnknown_81D7DB7 _0802AF5E: str r0, [r1] @@ -27069,7 +27069,7 @@ _0802AF5E: bx r0 .align 2, 0 _0802AF68: .4byte gMoveResultFlags -_0802AF6C: .4byte gUnknown_2023D74 +_0802AF6C: .4byte gBattlescriptCurrInstr _0802AF70: .4byte gUnknown_81D7DB7 thumb_func_end atkB7_presentdamagecalculation @@ -27079,7 +27079,7 @@ atkB8_setsafeguard: @ 802AF74 ldr r7, _0802AFA8 @ =gBattlerAttacker ldrb r0, [r7] bl GetBattlerPosition - ldr r4, _0802AFAC @ =gSideAffecting + ldr r4, _0802AFAC @ =gSideStatuses movs r6, 0x1 adds r1, r6, 0 ands r1, r0 @@ -27095,15 +27095,15 @@ atkB8_setsafeguard: @ 802AF74 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _0802AFB4 @ =gUnknown_2023E82 + ldr r1, _0802AFB4 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _0802B000 .align 2, 0 _0802AFA8: .4byte gBattlerAttacker -_0802AFAC: .4byte gSideAffecting +_0802AFAC: .4byte gSideStatuses _0802AFB0: .4byte gMoveResultFlags -_0802AFB4: .4byte gUnknown_2023E82 +_0802AFB4: .4byte gBattleCommunication _0802AFB8: ldrb r0, [r7] bl GetBattlerPosition @@ -27136,10 +27136,10 @@ _0802AFB8: adds r0, r5 ldrb r1, [r7] strb r1, [r0, 0x7] - ldr r0, _0802B014 @ =gUnknown_2023E82 + ldr r0, _0802B014 @ =gBattleCommunication strb r4, [r0, 0x5] _0802B000: - ldr r1, _0802B018 @ =gUnknown_2023D74 + ldr r1, _0802B018 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -27148,8 +27148,8 @@ _0802B000: bx r0 .align 2, 0 _0802B010: .4byte gSideTimers -_0802B014: .4byte gUnknown_2023E82 -_0802B018: .4byte gUnknown_2023D74 +_0802B014: .4byte gBattleCommunication +_0802B018: .4byte gBattlescriptCurrInstr thumb_func_end atkB8_setsafeguard thumb_func_start atkB9_magnitudedamagecalculation @@ -27246,7 +27246,7 @@ _0802B0B4: ldr r0, _0802B12C @ =gBattlersCount ldrb r3, [r0] adds r6, r1, 0 - ldr r0, _0802B130 @ =gUnknown_2023D74 + ldr r0, _0802B130 @ =gBattlescriptCurrInstr mov r8, r0 cmp r2, r3 bcs _0802B10C @@ -27290,7 +27290,7 @@ _0802B120: .4byte gDynamicBasePower _0802B124: .4byte gBattleTextBuff1 _0802B128: .4byte gBattlerTarget _0802B12C: .4byte gBattlersCount -_0802B130: .4byte gUnknown_2023D74 +_0802B130: .4byte gBattlescriptCurrInstr _0802B134: .4byte gBattlerAttacker _0802B138: .4byte gBitTable _0802B13C: .4byte gAbsentBattlerFlags @@ -27396,12 +27396,12 @@ _0802B1A2: mov r10, r7 ldr r2, _0802B28C @ =gUnknown_2023D49 mov r9, r2 - ldr r7, _0802B290 @ =gUnknown_2023DD0 + ldr r7, _0802B290 @ =gHitMarker mov r12, r7 ldrb r2, [r0] cmp r1, r2 bge _0802B22E - ldr r6, _0802B294 @ =gUnknown_2023BDE + ldr r6, _0802B294 @ =gBattlerByTurnOrder ldr r5, _0802B264 @ =gBattlerTarget ldr r4, _0802B298 @ =gUnknown_2023BDA movs r3, 0xB @@ -27434,7 +27434,7 @@ _0802B22E: strb r0, [r1] mov r2, r10 strb r0, [r2] - ldr r7, _0802B29C @ =gUnknown_2023D74 + ldr r7, _0802B29C @ =gBattlescriptCurrInstr ldr r0, [r7] adds r0, 0x5 str r0, [r7] @@ -27459,14 +27459,14 @@ _0802B280: .4byte gBattlersCount _0802B284: .4byte gCurrentMove _0802B288: .4byte gUnknown_2023D48 _0802B28C: .4byte gUnknown_2023D49 -_0802B290: .4byte gUnknown_2023DD0 -_0802B294: .4byte gUnknown_2023BDE +_0802B290: .4byte gHitMarker +_0802B294: .4byte gBattlerByTurnOrder _0802B298: .4byte gUnknown_2023BDA -_0802B29C: .4byte gUnknown_2023D74 +_0802B29C: .4byte gBattlescriptCurrInstr _0802B2A0: .4byte gBattleScripting _0802B2A4: .4byte 0xfffffbff _0802B2A8: - ldr r3, _0802B2D0 @ =gUnknown_2023D74 + ldr r3, _0802B2D0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -27488,7 +27488,7 @@ _0802B2C2: pop {r0} bx r0 .align 2, 0 -_0802B2D0: .4byte gUnknown_2023D74 +_0802B2D0: .4byte gBattlescriptCurrInstr thumb_func_end atkBA_jumpifnopursuitswitchdmg thumb_func_start atkBB_setsunny @@ -27505,35 +27505,35 @@ atkBB_setsunny: @ 802B2D4 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _0802B2FC @ =gUnknown_2023E82 + ldr r1, _0802B2FC @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _0802B312 .align 2, 0 _0802B2F4: .4byte gBattleWeather _0802B2F8: .4byte gMoveResultFlags -_0802B2FC: .4byte gUnknown_2023E82 +_0802B2FC: .4byte gBattleCommunication _0802B300: movs r0, 0x20 strh r0, [r2] - ldr r1, _0802B320 @ =gUnknown_2023E82 + ldr r1, _0802B320 @ =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] - ldr r0, _0802B324 @ =gUnknown_2023F20 + ldr r0, _0802B324 @ =gWishFutureKnock adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _0802B312: - ldr r1, _0802B328 @ =gUnknown_2023D74 + ldr r1, _0802B328 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802B320: .4byte gUnknown_2023E82 -_0802B324: .4byte gUnknown_2023F20 -_0802B328: .4byte gUnknown_2023D74 +_0802B320: .4byte gBattleCommunication +_0802B324: .4byte gWishFutureKnock +_0802B328: .4byte gBattlescriptCurrInstr thumb_func_end atkBB_setsunny thumb_func_start atkBC_maxattackhalvehp @@ -27572,7 +27572,7 @@ _0802B344: movs r0, 0x1 str r0, [r1] _0802B36C: - ldr r1, _0802B384 @ =gUnknown_2023D74 + ldr r1, _0802B384 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -27581,9 +27581,9 @@ _0802B36C: _0802B378: .4byte gBattleMons _0802B37C: .4byte gBattlerAttacker _0802B380: .4byte gBattleMoveDamage -_0802B384: .4byte gUnknown_2023D74 +_0802B384: .4byte gBattlescriptCurrInstr _0802B388: - ldr r3, _0802B3A8 @ =gUnknown_2023D74 + ldr r3, _0802B3A8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -27601,14 +27601,14 @@ _0802B3A2: pop {r0} bx r0 .align 2, 0 -_0802B3A8: .4byte gUnknown_2023D74 +_0802B3A8: .4byte gBattlescriptCurrInstr thumb_func_end atkBC_maxattackhalvehp thumb_func_start atkBD_copyfoestats atkBD_copyfoestats: @ 802B3AC push {r4-r7,lr} movs r2, 0 - ldr r7, _0802B3E4 @ =gUnknown_2023D74 + ldr r7, _0802B3E4 @ =gBattlescriptCurrInstr ldr r6, _0802B3E8 @ =gBattlerAttacker movs r4, 0x58 ldr r3, _0802B3EC @ =gUnknown_2023BFC @@ -27635,7 +27635,7 @@ _0802B3BA: pop {r0} bx r0 .align 2, 0 -_0802B3E4: .4byte gUnknown_2023D74 +_0802B3E4: .4byte gBattlescriptCurrInstr _0802B3E8: .4byte gBattlerAttacker _0802B3EC: .4byte gUnknown_2023BFC _0802B3F0: .4byte gBattlerTarget @@ -27695,7 +27695,7 @@ atkBE_rapidspinfree: @ 802B3F4 movs r0, 0xFF strb r0, [r1, 0x4] bl BattleScriptPushCursor - ldr r1, _0802B480 @ =gUnknown_2023D74 + ldr r1, _0802B480 @ =gBattlescriptCurrInstr ldr r0, _0802B484 @ =gUnknown_81D8DF3 b _0802B532 .align 2, 0 @@ -27706,7 +27706,7 @@ _0802B470: .4byte gBattlerTarget _0802B474: .4byte 0xffff1fff _0802B478: .4byte gBattleStruct _0802B47C: .4byte gBattleTextBuff1 -_0802B480: .4byte gUnknown_2023D74 +_0802B480: .4byte gBattlescriptCurrInstr _0802B484: .4byte gUnknown_81D8DF3 _0802B488: ldr r4, _0802B4BC @ =gStatuses3 @@ -27730,17 +27730,17 @@ _0802B488: ands r0, r2 str r0, [r1] bl BattleScriptPushCursor - ldr r1, _0802B4C0 @ =gUnknown_2023D74 + ldr r1, _0802B4C0 @ =gBattlescriptCurrInstr ldr r0, _0802B4C4 @ =gUnknown_81D8E04 b _0802B532 .align 2, 0 _0802B4BC: .4byte gStatuses3 -_0802B4C0: .4byte gUnknown_2023D74 +_0802B4C0: .4byte gBattlescriptCurrInstr _0802B4C4: .4byte gUnknown_81D8E04 _0802B4C8: adds r0, r2, 0 bl GetBattlerSide - ldr r4, _0802B518 @ =gSideAffecting + ldr r4, _0802B518 @ =gSideStatuses lsls r0, 24 lsrs r0, 23 adds r0, r4 @@ -27770,17 +27770,17 @@ _0802B4C8: adds r1, r2 strb r4, [r1, 0xA] bl BattleScriptPushCursor - ldr r1, _0802B524 @ =gUnknown_2023D74 + ldr r1, _0802B524 @ =gBattlescriptCurrInstr ldr r0, _0802B528 @ =gUnknown_81D8E0B b _0802B532 .align 2, 0 -_0802B518: .4byte gSideAffecting +_0802B518: .4byte gSideStatuses _0802B51C: .4byte 0x0000ffef _0802B520: .4byte gSideTimers -_0802B524: .4byte gUnknown_2023D74 +_0802B524: .4byte gBattlescriptCurrInstr _0802B528: .4byte gUnknown_81D8E0B _0802B52C: - ldr r1, _0802B53C @ =gUnknown_2023D74 + ldr r1, _0802B53C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _0802B532: @@ -27789,7 +27789,7 @@ _0802B532: pop {r0} bx r0 .align 2, 0 -_0802B53C: .4byte gUnknown_2023D74 +_0802B53C: .4byte gBattlescriptCurrInstr thumb_func_end atkBE_rapidspinfree thumb_func_start atkBF_setdefensecurlbit @@ -27806,7 +27806,7 @@ atkBF_setdefensecurlbit: @ 802B540 lsls r1, 23 orrs r0, r1 str r0, [r2] - ldr r1, _0802B56C @ =gUnknown_2023D74 + ldr r1, _0802B56C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -27814,7 +27814,7 @@ atkBF_setdefensecurlbit: @ 802B540 .align 2, 0 _0802B564: .4byte gBattleMons _0802B568: .4byte gBattlerAttacker -_0802B56C: .4byte gUnknown_2023D74 +_0802B56C: .4byte gBattlescriptCurrInstr thumb_func_end atkBF_setdefensecurlbit thumb_func_start atkC0_recoverbasedonsunlight @@ -27917,16 +27917,16 @@ _0802B636: ldr r0, [r1] negs r0, r0 str r0, [r1] - ldr r1, _0802B64C @ =gUnknown_2023D74 + ldr r1, _0802B64C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802B66A .align 2, 0 _0802B648: .4byte gBattleMoveDamage -_0802B64C: .4byte gUnknown_2023D74 +_0802B64C: .4byte gBattlescriptCurrInstr _0802B650: - ldr r3, _0802B674 @ =gUnknown_2023D74 + ldr r3, _0802B674 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -27945,7 +27945,7 @@ _0802B66A: pop {r0} bx r0 .align 2, 0 -_0802B674: .4byte gUnknown_2023D74 +_0802B674: .4byte gBattlescriptCurrInstr thumb_func_end atkC0_recoverbasedonsunlight thumb_func_start sub_802B678 @@ -28055,7 +28055,7 @@ _0802B742: movs r1, 0xC0 orrs r0, r1 strb r0, [r2, 0x13] - ldr r1, _0802B770 @ =gUnknown_2023D74 + ldr r1, _0802B770 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28070,7 +28070,7 @@ _0802B760: .4byte gBattleMons _0802B764: .4byte gBattlerAttacker _0802B768: .4byte gDynamicBasePower _0802B76C: .4byte gBattleStruct -_0802B770: .4byte gUnknown_2023D74 +_0802B770: .4byte gBattlescriptCurrInstr thumb_func_end sub_802B678 thumb_func_start atkC2_selectfirstvalidtarget @@ -28084,7 +28084,7 @@ atkC2_selectfirstvalidtarget: @ 802B774 ldr r1, _0802B7D4 @ =gBattlersCount ldrb r1, [r1] adds r6, r0, 0 - ldr r0, _0802B7D8 @ =gUnknown_2023D74 + ldr r0, _0802B7D8 @ =gBattlescriptCurrInstr mov r8, r0 cmp r1, 0 beq _0802B7BE @@ -28127,7 +28127,7 @@ _0802B7BE: .align 2, 0 _0802B7D0: .4byte gBattlerTarget _0802B7D4: .4byte gBattlersCount -_0802B7D8: .4byte gUnknown_2023D74 +_0802B7D8: .4byte gBattlescriptCurrInstr _0802B7DC: .4byte gBattlerAttacker _0802B7E0: .4byte gBitTable _0802B7E4: .4byte gAbsentBattlerFlags @@ -28141,7 +28141,7 @@ atkC3_trysetfutureattack: @ 802B7E8 mov r5, r8 push {r5-r7} sub sp, 0x10 - ldr r0, _0802B820 @ =gUnknown_2023F20 + ldr r0, _0802B820 @ =gWishFutureKnock mov r8, r0 ldr r7, _0802B824 @ =gBattlerTarget ldrb r1, [r7] @@ -28149,7 +28149,7 @@ atkC3_trysetfutureattack: @ 802B7E8 ldrb r6, [r0] cmp r6, 0 beq _0802B82C - ldr r3, _0802B828 @ =gUnknown_2023D74 + ldr r3, _0802B828 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -28164,9 +28164,9 @@ atkC3_trysetfutureattack: @ 802B7E8 str r1, [r3] b _0802B8F6 .align 2, 0 -_0802B820: .4byte gUnknown_2023F20 +_0802B820: .4byte gWishFutureKnock _0802B824: .4byte gBattlerTarget -_0802B828: .4byte gUnknown_2023D74 +_0802B828: .4byte gBattlescriptCurrInstr _0802B82C: lsls r1, 1 mov r0, r8 @@ -28187,7 +28187,7 @@ _0802B82C: add r0, r8 movs r1, 0x3 strb r1, [r0] - ldr r4, _0802B8D4 @ =gSideAffecting + ldr r4, _0802B8D4 @ =gSideStatuses ldrb r0, [r7] bl GetBattlerPosition movs r1, 0x1 @@ -28219,7 +28219,7 @@ _0802B82C: adds r2, 0x8 adds r1, r2 str r0, [r1] - ldr r1, _0802B8DC @ =gUnknown_2023E8C + ldr r1, _0802B8DC @ =gProtectStructs ldrb r0, [r5] lsls r0, 4 adds r0, r1 @@ -28242,24 +28242,24 @@ _0802B8BA: ldr r0, _0802B8E0 @ =0x00000161 cmp r1, r0 bne _0802B8E8 - ldr r0, _0802B8E4 @ =gUnknown_2023E82 + ldr r0, _0802B8E4 @ =gBattleCommunication mov r1, r10 strb r1, [r0, 0x5] b _0802B8EE .align 2, 0 _0802B8CC: .4byte gCurrentMove _0802B8D0: .4byte gBattlerAttacker -_0802B8D4: .4byte gSideAffecting +_0802B8D4: .4byte gSideStatuses _0802B8D8: .4byte gBattleMons -_0802B8DC: .4byte gUnknown_2023E8C +_0802B8DC: .4byte gProtectStructs _0802B8E0: .4byte 0x00000161 -_0802B8E4: .4byte gUnknown_2023E82 +_0802B8E4: .4byte gBattleCommunication _0802B8E8: - ldr r1, _0802B908 @ =gUnknown_2023E82 + ldr r1, _0802B908 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] _0802B8EE: - ldr r1, _0802B90C @ =gUnknown_2023D74 + ldr r1, _0802B90C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -28273,8 +28273,8 @@ _0802B8F6: pop {r0} bx r0 .align 2, 0 -_0802B908: .4byte gUnknown_2023E82 -_0802B90C: .4byte gUnknown_2023D74 +_0802B908: .4byte gBattleCommunication +_0802B90C: .4byte gBattlescriptCurrInstr thumb_func_end atkC3_trysetfutureattack thumb_func_start atkC4_trydobeatup @@ -28301,7 +28301,7 @@ _0802B92A: ldrh r0, [r0, 0x28] cmp r0, 0 bne _0802B96C - ldr r3, _0802B968 @ =gUnknown_2023D74 + ldr r3, _0802B968 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -28318,9 +28318,9 @@ _0802B958: .4byte gEnemyParty _0802B95C: .4byte gPlayerParty _0802B960: .4byte gBattleMons _0802B964: .4byte gBattlerTarget -_0802B968: .4byte gUnknown_2023D74 +_0802B968: .4byte gBattlescriptCurrInstr _0802B96C: - ldr r6, _0802BAA8 @ =gUnknown_2023E82 + ldr r6, _0802BAA8 @ =gBattleCommunication ldrb r0, [r6] mov r8, r0 cmp r0, 0x5 @@ -28370,7 +28370,7 @@ _0802B9C0: cmp r0, 0x5 bls _0802B97C _0802B9D0: - ldr r1, _0802BAA8 @ =gUnknown_2023E82 + ldr r1, _0802BAA8 @ =gBattleCommunication mov r9, r1 ldrb r2, [r1] cmp r2, 0x5 @@ -28386,7 +28386,7 @@ _0802B9D0: strb r2, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _0802BAB4 @ =gUnknown_2023D74 + ldr r1, _0802BAB4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x9 str r0, [r1] @@ -28452,7 +28452,7 @@ _0802B9D0: adds r2, r0, 0x2 mov r0, r8 str r2, [r0] - ldr r1, _0802BAD0 @ =gUnknown_2023E8C + ldr r1, _0802BAD0 @ =gProtectStructs ldrb r0, [r6] lsls r0, 4 adds r0, r1 @@ -28473,22 +28473,22 @@ _0802BA9C: strb r0, [r2] b _0802BB0E .align 2, 0 -_0802BAA8: .4byte gUnknown_2023E82 +_0802BAA8: .4byte gBattleCommunication _0802BAAC: .4byte gBattleTextBuff1 _0802BAB0: .4byte gBattlerAttacker -_0802BAB4: .4byte gUnknown_2023D74 +_0802BAB4: .4byte gBattlescriptCurrInstr _0802BAB8: .4byte gBattleMoveDamage _0802BABC: .4byte gBaseStats _0802BAC0: .4byte gBattleMoves _0802BAC4: .4byte gCurrentMove _0802BAC8: .4byte gBattleMons _0802BACC: .4byte gBattlerTarget -_0802BAD0: .4byte gUnknown_2023E8C +_0802BAD0: .4byte gProtectStructs _0802BAD4: mov r0, r8 cmp r0, 0 beq _0802BAF4 - ldr r3, _0802BAF0 @ =gUnknown_2023D74 + ldr r3, _0802BAF0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -28500,9 +28500,9 @@ _0802BAD4: ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 -_0802BAF0: .4byte gUnknown_2023D74 +_0802BAF0: .4byte gBattlescriptCurrInstr _0802BAF4: - ldr r3, _0802BB1C @ =gUnknown_2023D74 + ldr r3, _0802BB1C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] @@ -28524,7 +28524,7 @@ _0802BB0E: pop {r0} bx r0 .align 2, 0 -_0802BB1C: .4byte gUnknown_2023D74 +_0802BB1C: .4byte gBattlescriptCurrInstr thumb_func_end atkC4_trydobeatup thumb_func_start atkC5_setsemiinvulnerablebit @@ -28586,7 +28586,7 @@ _0802BB88: orrs r0, r2 str r0, [r1] _0802BB8C: - ldr r1, _0802BBA0 @ =gUnknown_2023D74 + ldr r1, _0802BBA0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28595,7 +28595,7 @@ _0802BB8C: .align 2, 0 _0802BB98: .4byte gStatuses3 _0802BB9C: .4byte gBattlerAttacker -_0802BBA0: .4byte gUnknown_2023D74 +_0802BBA0: .4byte gBattlescriptCurrInstr thumb_func_end atkC5_setsemiinvulnerablebit thumb_func_start atkC6_clearsemiinvulnerablebit @@ -28658,7 +28658,7 @@ _0802BC12: ands r0, r2 str r0, [r1] _0802BC16: - ldr r1, _0802BC30 @ =gUnknown_2023D74 + ldr r1, _0802BC30 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28668,13 +28668,13 @@ _0802BC16: _0802BC24: .4byte gStatuses3 _0802BC28: .4byte gBattlerAttacker _0802BC2C: .4byte 0xfffbffff -_0802BC30: .4byte gUnknown_2023D74 +_0802BC30: .4byte gBattlescriptCurrInstr thumb_func_end atkC6_clearsemiinvulnerablebit thumb_func_start atkC7_setminimize atkC7_setminimize: @ 802BC34 push {lr} - ldr r0, _0802BC64 @ =gUnknown_2023DD0 + ldr r0, _0802BC64 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 18 @@ -28692,17 +28692,17 @@ atkC7_setminimize: @ 802BC34 orrs r0, r2 str r0, [r1] _0802BC58: - ldr r1, _0802BC70 @ =gUnknown_2023D74 + ldr r1, _0802BC70 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802BC64: .4byte gUnknown_2023DD0 +_0802BC64: .4byte gHitMarker _0802BC68: .4byte gStatuses3 _0802BC6C: .4byte gBattlerAttacker -_0802BC70: .4byte gUnknown_2023D74 +_0802BC70: .4byte gBattlescriptCurrInstr thumb_func_end atkC7_setminimize thumb_func_start atkC8_sethail @@ -28720,33 +28720,33 @@ atkC8_sethail: @ 802BC74 movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _0802BCA0 @ =gUnknown_2023E82 + ldr r1, _0802BCA0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _0802BCB2 .align 2, 0 _0802BC98: .4byte gBattleWeather _0802BC9C: .4byte gMoveResultFlags -_0802BCA0: .4byte gUnknown_2023E82 +_0802BCA0: .4byte gBattleCommunication _0802BCA4: strh r2, [r3] - ldr r0, _0802BCC0 @ =gUnknown_2023E82 + ldr r0, _0802BCC0 @ =gBattleCommunication movs r1, 0x5 strb r1, [r0, 0x5] - ldr r0, _0802BCC4 @ =gUnknown_2023F20 + ldr r0, _0802BCC4 @ =gWishFutureKnock adds r0, 0x28 strb r1, [r0] _0802BCB2: - ldr r1, _0802BCC8 @ =gUnknown_2023D74 + ldr r1, _0802BCC8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802BCC0: .4byte gUnknown_2023E82 -_0802BCC4: .4byte gUnknown_2023F20 -_0802BCC8: .4byte gUnknown_2023D74 +_0802BCC0: .4byte gBattleCommunication +_0802BCC4: .4byte gWishFutureKnock +_0802BCC8: .4byte gBattlescriptCurrInstr thumb_func_end atkC8_sethail thumb_func_start atkC9_jumpifattackandspecialattackcannotfall @@ -28767,11 +28767,11 @@ atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC ldrsb r0, [r1, r0] cmp r0, 0 bne _0802BD20 - ldr r0, _0802BD18 @ =gUnknown_2023E82 + ldr r0, _0802BD18 @ =gBattleCommunication ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _0802BD20 - ldr r3, _0802BD1C @ =gUnknown_2023D74 + ldr r3, _0802BD1C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -28788,8 +28788,8 @@ atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC .align 2, 0 _0802BD10: .4byte gBattleMons _0802BD14: .4byte gBattlerTarget -_0802BD18: .4byte gUnknown_2023E82 -_0802BD1C: .4byte gUnknown_2023D74 +_0802BD18: .4byte gBattleCommunication +_0802BD1C: .4byte gBattlescriptCurrInstr _0802BD20: ldr r4, _0802BD54 @ =gActiveBattler ldr r0, _0802BD58 @ =gBattlerAttacker @@ -28806,8 +28806,8 @@ _0802BD20: movs r0, 0 bl BtlController_EmitHealthBarUpdate ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _0802BD64 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802BD64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -28820,7 +28820,7 @@ _0802BD54: .4byte gActiveBattler _0802BD58: .4byte gBattlerAttacker _0802BD5C: .4byte gBattleMoveDamage _0802BD60: .4byte 0x00007fff -_0802BD64: .4byte gUnknown_2023D74 +_0802BD64: .4byte gBattlescriptCurrInstr thumb_func_end atkC9_jumpifattackandspecialattackcannotfall thumb_func_start atkCA_setforcedtarget @@ -28848,7 +28848,7 @@ atkCA_setforcedtarget: @ 802BD68 adds r1, r5 ldrb r0, [r4] strb r0, [r1, 0x9] - ldr r1, _0802BDB0 @ =gUnknown_2023D74 + ldr r1, _0802BDB0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28858,7 +28858,7 @@ atkCA_setforcedtarget: @ 802BD68 .align 2, 0 _0802BDA8: .4byte gBattlerAttacker _0802BDAC: .4byte gSideTimers -_0802BDB0: .4byte gUnknown_2023D74 +_0802BDB0: .4byte gBattlescriptCurrInstr thumb_func_end atkCA_setforcedtarget thumb_func_start atkCB_setcharge @@ -28898,7 +28898,7 @@ atkCB_setcharge: @ 802BDB4 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x12] - ldr r1, _0802BE14 @ =gUnknown_2023D74 + ldr r1, _0802BE14 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28909,13 +28909,13 @@ atkCB_setcharge: @ 802BDB4 _0802BE08: .4byte gStatuses3 _0802BE0C: .4byte gBattlerAttacker _0802BE10: .4byte gDisableStructs -_0802BE14: .4byte gUnknown_2023D74 +_0802BE14: .4byte gBattlescriptCurrInstr thumb_func_end atkCB_setcharge thumb_func_start atkCC_callterrainattack atkCC_callterrainattack: @ 802BE18 push {r4,lr} - ldr r2, _0802BE68 @ =gUnknown_2023DD0 + ldr r2, _0802BE68 @ =gHitMarker ldr r0, [r2] ldr r1, _0802BE6C @ =0xfffffbff ands r0, r1 @@ -28945,7 +28945,7 @@ atkCC_callterrainattack: @ 802BE18 adds r0, r3 ldr r0, [r0] bl BattleScriptPush - ldr r1, _0802BE88 @ =gUnknown_2023D74 + ldr r1, _0802BE88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -28953,7 +28953,7 @@ atkCC_callterrainattack: @ 802BE18 pop {r0} bx r0 .align 2, 0 -_0802BE68: .4byte gUnknown_2023DD0 +_0802BE68: .4byte gHitMarker _0802BE6C: .4byte 0xfffffbff _0802BE70: .4byte gCurrentMove _0802BE74: .4byte gUnknown_825081C @@ -28961,7 +28961,7 @@ _0802BE78: .4byte gUnknown_2022B50 _0802BE7C: .4byte gBattlerTarget _0802BE80: .4byte gUnknown_81D65A8 _0802BE84: .4byte gBattleMoves -_0802BE88: .4byte gUnknown_2023D74 +_0802BE88: .4byte gBattlescriptCurrInstr thumb_func_end atkCC_callterrainattack thumb_func_start atkCD_cureifburnedparalysedorpoisoned @@ -28983,7 +28983,7 @@ atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C beq _0802BEE8 movs r0, 0 str r0, [r2] - ldr r1, _0802BEE0 @ =gUnknown_2023D74 + ldr r1, _0802BEE0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29000,15 +29000,15 @@ atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0802BF02 .align 2, 0 _0802BED8: .4byte gBattleMons _0802BEDC: .4byte gBattlerAttacker -_0802BEE0: .4byte gUnknown_2023D74 +_0802BEE0: .4byte gBattlescriptCurrInstr _0802BEE4: .4byte gActiveBattler _0802BEE8: - ldr r3, _0802BF0C @ =gUnknown_2023D74 + ldr r3, _0802BF0C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29027,7 +29027,7 @@ _0802BF02: pop {r0} bx r0 .align 2, 0 -_0802BF0C: .4byte gUnknown_2023D74 +_0802BF0C: .4byte gBattlescriptCurrInstr thumb_func_end atkCD_cureifburnedparalysedorpoisoned thumb_func_start atkCE_settorment @@ -29045,7 +29045,7 @@ atkCE_settorment: @ 802BF10 lsls r2, 24 cmp r1, 0 bge _0802BF54 - ldr r3, _0802BF50 @ =gUnknown_2023D74 + ldr r3, _0802BF50 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29062,11 +29062,11 @@ atkCE_settorment: @ 802BF10 .align 2, 0 _0802BF48: .4byte gBattleMons _0802BF4C: .4byte gBattlerTarget -_0802BF50: .4byte gUnknown_2023D74 +_0802BF50: .4byte gBattlescriptCurrInstr _0802BF54: orrs r1, r2 str r1, [r0] - ldr r1, _0802BF64 @ =gUnknown_2023D74 + ldr r1, _0802BF64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29074,13 +29074,13 @@ _0802BF60: pop {r0} bx r0 .align 2, 0 -_0802BF64: .4byte gUnknown_2023D74 +_0802BF64: .4byte gBattlescriptCurrInstr thumb_func_end atkCE_settorment thumb_func_start atkCF_jumpifnodamage atkCF_jumpifnodamage: @ 802BF68 push {lr} - ldr r2, _0802BF94 @ =gUnknown_2023E8C + ldr r2, _0802BF94 @ =gProtectStructs ldr r0, _0802BF98 @ =gBattlerAttacker ldrb r0, [r0] lsls r1, r0, 4 @@ -29096,17 +29096,17 @@ atkCF_jumpifnodamage: @ 802BF68 cmp r0, 0 beq _0802BFA0 _0802BF88: - ldr r1, _0802BF9C @ =gUnknown_2023D74 + ldr r1, _0802BF9C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802BFBA .align 2, 0 -_0802BF94: .4byte gUnknown_2023E8C +_0802BF94: .4byte gProtectStructs _0802BF98: .4byte gBattlerAttacker -_0802BF9C: .4byte gUnknown_2023D74 +_0802BF9C: .4byte gBattlescriptCurrInstr _0802BFA0: - ldr r3, _0802BFC0 @ =gUnknown_2023D74 + ldr r3, _0802BFC0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29123,7 +29123,7 @@ _0802BFBA: pop {r0} bx r0 .align 2, 0 -_0802BFC0: .4byte gUnknown_2023D74 +_0802BFC0: .4byte gBattlescriptCurrInstr thumb_func_end atkCF_jumpifnodamage thumb_func_start atkD0_settaunt @@ -29157,7 +29157,7 @@ atkD0_settaunt: @ 802BFC4 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x13] - ldr r1, _0802C010 @ =gUnknown_2023D74 + ldr r1, _0802C010 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29165,9 +29165,9 @@ atkD0_settaunt: @ 802BFC4 .align 2, 0 _0802C008: .4byte gDisableStructs _0802C00C: .4byte gBattlerTarget -_0802C010: .4byte gUnknown_2023D74 +_0802C010: .4byte gBattlescriptCurrInstr _0802C014: - ldr r3, _0802C034 @ =gUnknown_2023D74 + ldr r3, _0802C034 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29185,7 +29185,7 @@ _0802C02E: pop {r0} bx r0 .align 2, 0 -_0802C034: .4byte gUnknown_2023D74 +_0802C034: .4byte gBattlescriptCurrInstr thumb_func_end atkD0_settaunt thumb_func_start atkD1_trysethelpinghand @@ -29217,7 +29217,7 @@ atkD1_trysethelpinghand: @ 802C038 ands r1, r0 cmp r1, 0 bne _0802C0BC - ldr r1, _0802C0B4 @ =gUnknown_2023E8C + ldr r1, _0802C0B4 @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r1 @@ -29234,7 +29234,7 @@ atkD1_trysethelpinghand: @ 802C038 movs r0, 0x8 orrs r0, r1 strb r0, [r2] - ldr r1, _0802C0B8 @ =gUnknown_2023D74 + ldr r1, _0802C0B8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29245,10 +29245,10 @@ _0802C0A4: .4byte gBattlerTarget _0802C0A8: .4byte gBattleTypeFlags _0802C0AC: .4byte gAbsentBattlerFlags _0802C0B0: .4byte gBitTable -_0802C0B4: .4byte gUnknown_2023E8C -_0802C0B8: .4byte gUnknown_2023D74 +_0802C0B4: .4byte gProtectStructs +_0802C0B8: .4byte gBattlescriptCurrInstr _0802C0BC: - ldr r3, _0802C0DC @ =gUnknown_2023D74 + ldr r3, _0802C0DC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29266,7 +29266,7 @@ _0802C0D6: pop {r0} bx r0 .align 2, 0 -_0802C0DC: .4byte gUnknown_2023D74 +_0802C0DC: .4byte gBattlescriptCurrInstr thumb_func_end atkD1_trysethelpinghand thumb_func_start sub_802C0E0 @@ -29325,7 +29325,7 @@ _0802C120: lsls r0, 3 cmp r1, r0 beq _0802C18A - ldr r0, _0802C210 @ =gUnknown_2023F20 + ldr r0, _0802C210 @ =gWishFutureKnock adds r2, r0, 0 adds r2, 0x29 adds r0, r4, r2 @@ -29399,7 +29399,7 @@ _0802C1B2: cmp r0, 0xB bhi _0802C224 _0802C1DE: - ldr r3, _0802C220 @ =gUnknown_2023D74 + ldr r3, _0802C220 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29419,18 +29419,18 @@ _0802C200: .4byte gBattlerAttacker _0802C204: .4byte 0x00000902 _0802C208: .4byte gTrainerBattleOpponent_A _0802C20C: .4byte gBattlerTarget -_0802C210: .4byte gUnknown_2023F20 +_0802C210: .4byte gWishFutureKnock _0802C214: .4byte gBitTable _0802C218: .4byte gBattlerPartyIndexes _0802C21C: .4byte gBattleMons -_0802C220: .4byte gUnknown_2023D74 +_0802C220: .4byte gBattlescriptCurrInstr _0802C224: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _0802C258 - ldr r1, _0802C24C @ =gUnknown_2023D74 + ldr r1, _0802C24C @ =gBattlescriptCurrInstr ldr r0, _0802C250 @ =gUnknown_81D948E str r0, [r1] ldr r1, _0802C254 @ =gLastUsedAbility @@ -29445,7 +29445,7 @@ _0802C224: bl sub_80C71D0 b _0802C37A .align 2, 0 -_0802C24C: .4byte gUnknown_2023D74 +_0802C24C: .4byte gBattlescriptCurrInstr _0802C250: .4byte gUnknown_81D948E _0802C254: .4byte gLastUsedAbility _0802C258: @@ -29482,7 +29482,7 @@ _0802C258: bl BtlController_EmitSetMonData ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] @@ -29497,7 +29497,7 @@ _0802C258: movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r7] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldrb r0, [r7] mov r2, r10 ldr r1, [r2] @@ -29528,7 +29528,7 @@ _0802C258: adds r0, 0xC9 movs r1, 0 strb r1, [r0] - ldr r1, _0802C350 @ =gUnknown_2023D74 + ldr r1, _0802C350 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29560,29 +29560,29 @@ _0802C258: ldrh r0, [r6] cmp r0, 0 beq _0802C374 - ldr r1, _0802C35C @ =gUnknown_2023E82 + ldr r1, _0802C35C @ =gBattleCommunication movs r0, 0x2 b _0802C378 .align 2, 0 _0802C344: .4byte gBattleStruct _0802C348: .4byte gBattlerAttacker _0802C34C: .4byte gActiveBattler -_0802C350: .4byte gUnknown_2023D74 +_0802C350: .4byte gBattlescriptCurrInstr _0802C354: .4byte gBattleTextBuff1 _0802C358: .4byte gBattleTextBuff2 -_0802C35C: .4byte gUnknown_2023E82 +_0802C35C: .4byte gBattleCommunication _0802C360: ldrh r0, [r6] cmp r0, 0 beq _0802C374 - ldr r0, _0802C370 @ =gUnknown_2023E82 + ldr r0, _0802C370 @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x5] b _0802C37A .align 2, 0 -_0802C370: .4byte gUnknown_2023E82 +_0802C370: .4byte gBattleCommunication _0802C374: - ldr r1, _0802C38C @ =gUnknown_2023E82 + ldr r1, _0802C38C @ =gBattleCommunication movs r0, 0x1 _0802C378: strb r0, [r1, 0x5] @@ -29596,7 +29596,7 @@ _0802C37A: pop {r0} bx r0 .align 2, 0 -_0802C38C: .4byte gUnknown_2023E82 +_0802C38C: .4byte gBattleCommunication thumb_func_end sub_802C0E0 thumb_func_start atkD3_trycopyability @@ -29628,7 +29628,7 @@ atkD3_trycopyability: @ 802C390 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] - ldr r1, _0802C3E0 @ =gUnknown_2023D74 + ldr r1, _0802C3E0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29638,9 +29638,9 @@ _0802C3D0: .4byte gBattleMons _0802C3D4: .4byte gBattlerTarget _0802C3D8: .4byte gBattlerAttacker _0802C3DC: .4byte gLastUsedAbility -_0802C3E0: .4byte gUnknown_2023D74 +_0802C3E0: .4byte gBattlescriptCurrInstr _0802C3E4: - ldr r3, _0802C404 @ =gUnknown_2023D74 + ldr r3, _0802C404 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29658,13 +29658,13 @@ _0802C3FE: pop {r0} bx r0 .align 2, 0 -_0802C404: .4byte gUnknown_2023D74 +_0802C404: .4byte gBattlescriptCurrInstr thumb_func_end atkD3_trycopyability thumb_func_start atkD4_trywish atkD4_trywish: @ 802C408 push {r4-r7,lr} - ldr r7, _0802C41C @ =gUnknown_2023D74 + ldr r7, _0802C41C @ =gBattlescriptCurrInstr ldr r2, [r7] ldrb r3, [r2, 0x1] cmp r3, 0 @@ -29673,9 +29673,9 @@ atkD4_trywish: @ 802C408 beq _0802C458 b _0802C4D4 .align 2, 0 -_0802C41C: .4byte gUnknown_2023D74 +_0802C41C: .4byte gBattlescriptCurrInstr _0802C420: - ldr r1, _0802C44C @ =gUnknown_2023F20 + ldr r1, _0802C44C @ =gWishFutureKnock ldr r4, _0802C450 @ =gBattlerAttacker adds r0, r1, 0 adds r0, 0x20 @@ -29698,7 +29698,7 @@ _0802C420: adds r0, 0x6 b _0802C4D2 .align 2, 0 -_0802C44C: .4byte gUnknown_2023F20 +_0802C44C: .4byte gWishFutureKnock _0802C450: .4byte gBattlerAttacker _0802C454: .4byte gBattlerPartyIndexes _0802C458: @@ -29710,7 +29710,7 @@ _0802C458: ldr r4, _0802C4C0 @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1, 0x2] - ldr r0, _0802C4C4 @ =gUnknown_2023F20 + ldr r0, _0802C4C4 @ =gWishFutureKnock adds r0, 0x24 ldrb r5, [r4] adds r0, r5 @@ -29757,7 +29757,7 @@ _0802C4A4: .align 2, 0 _0802C4BC: .4byte gBattleTextBuff1 _0802C4C0: .4byte gBattlerTarget -_0802C4C4: .4byte gUnknown_2023F20 +_0802C4C4: .4byte gWishFutureKnock _0802C4C8: .4byte gBattleMoveDamage _0802C4CC: .4byte gBattleMons _0802C4D0: @@ -29785,7 +29785,7 @@ atkD5_trysetroots: @ 802C4DC ands r0, r3 cmp r0, 0 beq _0802C520 - ldr r3, _0802C51C @ =gUnknown_2023D74 + ldr r3, _0802C51C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29802,11 +29802,11 @@ atkD5_trysetroots: @ 802C4DC .align 2, 0 _0802C514: .4byte gStatuses3 _0802C518: .4byte gBattlerAttacker -_0802C51C: .4byte gUnknown_2023D74 +_0802C51C: .4byte gBattlescriptCurrInstr _0802C520: orrs r1, r3 str r1, [r2] - ldr r1, _0802C530 @ =gUnknown_2023D74 + ldr r1, _0802C530 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29814,13 +29814,13 @@ _0802C52C: pop {r0} bx r0 .align 2, 0 -_0802C530: .4byte gUnknown_2023D74 +_0802C530: .4byte gBattlescriptCurrInstr thumb_func_end atkD5_trysetroots thumb_func_start atkD6_doubledamagedealtifdamaged atkD6_doubledamagedealtifdamaged: @ 802C534 push {lr} - ldr r3, _0802C580 @ =gUnknown_2023E8C + ldr r3, _0802C580 @ =gProtectStructs ldr r0, _0802C584 @ =gBattlerAttacker ldrb r0, [r0] lsls r2, r0, 4 @@ -29853,18 +29853,18 @@ _0802C56C: movs r0, 0x2 strb r0, [r1, 0xE] _0802C572: - ldr r1, _0802C590 @ =gUnknown_2023D74 + ldr r1, _0802C590 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802C580: .4byte gUnknown_2023E8C +_0802C580: .4byte gProtectStructs _0802C584: .4byte gBattlerAttacker _0802C588: .4byte gBattlerTarget _0802C58C: .4byte gBattleScripting -_0802C590: .4byte gUnknown_2023D74 +_0802C590: .4byte gBattlescriptCurrInstr thumb_func_end atkD6_doubledamagedealtifdamaged thumb_func_start atkD7_setyawn @@ -29890,7 +29890,7 @@ atkD7_setyawn: @ 802C594 cmp r0, 0 beq _0802C5E8 _0802C5BC: - ldr r3, _0802C5E4 @ =gUnknown_2023D74 + ldr r3, _0802C5E4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29908,13 +29908,13 @@ _0802C5BC: _0802C5D8: .4byte gStatuses3 _0802C5DC: .4byte gBattlerTarget _0802C5E0: .4byte gBattleMons -_0802C5E4: .4byte gUnknown_2023D74 +_0802C5E4: .4byte gBattlescriptCurrInstr _0802C5E8: movs r0, 0x80 lsls r0, 5 orrs r2, r0 str r2, [r4] - ldr r1, _0802C600 @ =gUnknown_2023D74 + ldr r1, _0802C600 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29923,7 +29923,7 @@ _0802C5F8: pop {r0} bx r0 .align 2, 0 -_0802C600: .4byte gUnknown_2023D74 +_0802C600: .4byte gBattlescriptCurrInstr thumb_func_end atkD7_setyawn thumb_func_start atkD8_setdamagetohealthdifference @@ -29943,7 +29943,7 @@ atkD8_setdamagetohealthdifference: @ 802C604 ldrh r2, [r1, 0x28] cmp r0, r2 bhi _0802C650 - ldr r3, _0802C64C @ =gUnknown_2023D74 + ldr r3, _0802C64C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -29961,14 +29961,14 @@ atkD8_setdamagetohealthdifference: @ 802C604 _0802C640: .4byte gBattleMons _0802C644: .4byte gBattlerTarget _0802C648: .4byte gBattlerAttacker -_0802C64C: .4byte gUnknown_2023D74 +_0802C64C: .4byte gBattlescriptCurrInstr _0802C650: ldr r2, _0802C668 @ =gBattleMoveDamage ldrh r0, [r3, 0x28] ldrh r1, [r1, 0x28] subs r0, r1 str r0, [r2] - ldr r1, _0802C66C @ =gUnknown_2023D74 + ldr r1, _0802C66C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -29977,7 +29977,7 @@ _0802C662: bx r0 .align 2, 0 _0802C668: .4byte gBattleMoveDamage -_0802C66C: .4byte gUnknown_2023D74 +_0802C66C: .4byte gBattlescriptCurrInstr thumb_func_end atkD8_setdamagetohealthdifference thumb_func_start atkD9_scaledamagebyhealthratio @@ -30012,7 +30012,7 @@ atkD9_scaledamagebyhealthratio: @ 802C670 movs r0, 0x1 strh r0, [r4] _0802C6AC: - ldr r1, _0802C6D0 @ =gUnknown_2023D74 + ldr r1, _0802C6D0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -30025,7 +30025,7 @@ _0802C6C0: .4byte gBattleMoves _0802C6C4: .4byte gCurrentMove _0802C6C8: .4byte gBattleMons _0802C6CC: .4byte gBattlerAttacker -_0802C6D0: .4byte gUnknown_2023D74 +_0802C6D0: .4byte gBattlescriptCurrInstr thumb_func_end atkD9_scaledamagebyhealthratio thumb_func_start atkDA_tryswapabilities @@ -30068,7 +30068,7 @@ _0802C6FC: cmp r0, 0 beq _0802C74C _0802C71C: - ldr r3, _0802C748 @ =gUnknown_2023D74 + ldr r3, _0802C748 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30087,7 +30087,7 @@ _0802C738: .4byte gBattleMons _0802C73C: .4byte gBattlerAttacker _0802C740: .4byte gBattlerTarget _0802C744: .4byte gMoveResultFlags -_0802C748: .4byte gUnknown_2023D74 +_0802C748: .4byte gBattlescriptCurrInstr _0802C74C: ldrb r1, [r2] strb r3, [r2] @@ -30096,7 +30096,7 @@ _0802C74C: adds r0, r5 adds r0, 0x20 strb r1, [r0] - ldr r1, _0802C768 @ =gUnknown_2023D74 + ldr r1, _0802C768 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30105,7 +30105,7 @@ _0802C762: pop {r0} bx r0 .align 2, 0 -_0802C768: .4byte gUnknown_2023D74 +_0802C768: .4byte gBattlescriptCurrInstr thumb_func_end atkDA_tryswapabilities thumb_func_start atkDB_tryimprision @@ -30140,14 +30140,14 @@ _0802C794: lsls r2, 6 orrs r0, r2 str r0, [r1] - ldr r1, _0802C7B8 @ =gUnknown_2023D74 + ldr r1, _0802C7B8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C836 .align 2, 0 _0802C7B4: .4byte gStatuses3 -_0802C7B8: .4byte gUnknown_2023D74 +_0802C7B8: .4byte gBattlescriptCurrInstr _0802C7BC: adds r0, r2, 0 bl GetBattlerSide @@ -30221,7 +30221,7 @@ _0802C836: cmp r6, r0 bne _0802C858 _0802C83E: - ldr r3, _0802C870 @ =gUnknown_2023D74 + ldr r3, _0802C870 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30245,7 +30245,7 @@ _0802C858: _0802C864: .4byte gBattlerAttacker _0802C868: .4byte gBattleMons _0802C86C: .4byte gBattlersCount -_0802C870: .4byte gUnknown_2023D74 +_0802C870: .4byte gBattlescriptCurrInstr thumb_func_end atkDB_tryimprision thumb_func_start atkDC_trysetgrudge @@ -30263,7 +30263,7 @@ atkDC_trysetgrudge: @ 802C874 ands r0, r3 cmp r0, 0 beq _0802C8B8 - ldr r3, _0802C8B4 @ =gUnknown_2023D74 + ldr r3, _0802C8B4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30280,11 +30280,11 @@ atkDC_trysetgrudge: @ 802C874 .align 2, 0 _0802C8AC: .4byte gStatuses3 _0802C8B0: .4byte gBattlerAttacker -_0802C8B4: .4byte gUnknown_2023D74 +_0802C8B4: .4byte gBattlescriptCurrInstr _0802C8B8: orrs r1, r3 str r1, [r2] - ldr r1, _0802C8C8 @ =gUnknown_2023D74 + ldr r1, _0802C8C8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30292,7 +30292,7 @@ _0802C8C4: pop {r0} bx r0 .align 2, 0 -_0802C8C8: .4byte gUnknown_2023D74 +_0802C8C8: .4byte gBattlescriptCurrInstr thumb_func_end atkDC_trysetgrudge thumb_func_start atkDD_weightdamagecalculation @@ -30358,7 +30358,7 @@ _0802C944: movs r0, 0x78 strh r0, [r1] _0802C94A: - ldr r1, _0802C960 @ =gUnknown_2023D74 + ldr r1, _0802C960 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -30369,7 +30369,7 @@ _0802C94A: bx r0 .align 2, 0 _0802C95C: .4byte gDynamicBasePower -_0802C960: .4byte gUnknown_2023D74 +_0802C960: .4byte gBattlescriptCurrInstr thumb_func_end atkDD_weightdamagecalculation thumb_func_start atkDE_asistattackselect @@ -30491,7 +30491,7 @@ _0802CA3C: mov r1, r10 cmp r1, 0 beq _0802CAB4 - ldr r2, _0802CAA0 @ =gUnknown_2023DD0 + ldr r2, _0802CAA0 @ =gHitMarker ldr r0, [r2] ldr r1, _0802CAA4 @ =0xfffffbff ands r0, r1 @@ -30513,7 +30513,7 @@ _0802CA3C: bl GetMoveTarget ldr r1, _0802CAAC @ =gBattlerTarget strb r0, [r1] - ldr r1, _0802CAB0 @ =gUnknown_2023D74 + ldr r1, _0802CAB0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30526,13 +30526,13 @@ _0802CA90: .4byte gEnemyParty _0802CA94: .4byte gBattlerPartyIndexes _0802CA98: .4byte 0x0000ffff _0802CA9C: .4byte gUnknown_82507E8 -_0802CAA0: .4byte gUnknown_2023DD0 +_0802CAA0: .4byte gHitMarker _0802CAA4: .4byte 0xfffffbff _0802CAA8: .4byte gUnknown_2023D4E _0802CAAC: .4byte gBattlerTarget -_0802CAB0: .4byte gUnknown_2023D74 +_0802CAB0: .4byte gBattlescriptCurrInstr _0802CAB4: - ldr r3, _0802CAE0 @ =gUnknown_2023D74 + ldr r3, _0802CAE0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30555,7 +30555,7 @@ _0802CACE: pop {r0} bx r0 .align 2, 0 -_0802CAE0: .4byte gUnknown_2023D74 +_0802CAE0: .4byte gBattlescriptCurrInstr thumb_func_end atkDE_asistattackselect thumb_func_start atkDF_trysetmagiccoat @@ -30565,7 +30565,7 @@ atkDF_trysetmagiccoat: @ 802CAE4 ldr r3, _0802CB30 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] - ldr r2, _0802CB34 @ =gUnknown_2023ECC + ldr r2, _0802CB34 @ =gSpecialStatuses ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 @@ -30582,7 +30582,7 @@ atkDF_trysetmagiccoat: @ 802CAE4 subs r0, 0x1 cmp r1, r0 bne _0802CB44 - ldr r3, _0802CB40 @ =gUnknown_2023D74 + ldr r3, _0802CB40 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30599,12 +30599,12 @@ atkDF_trysetmagiccoat: @ 802CAE4 .align 2, 0 _0802CB2C: .4byte gBattlerTarget _0802CB30: .4byte gBattlerAttacker -_0802CB34: .4byte gUnknown_2023ECC +_0802CB34: .4byte gSpecialStatuses _0802CB38: .4byte gUnknown_2023BE2 _0802CB3C: .4byte gBattlersCount -_0802CB40: .4byte gUnknown_2023D74 +_0802CB40: .4byte gBattlescriptCurrInstr _0802CB44: - ldr r0, _0802CB60 @ =gUnknown_2023E8C + ldr r0, _0802CB60 @ =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 @@ -30612,7 +30612,7 @@ _0802CB44: movs r2, 0x10 orrs r0, r2 strb r0, [r1] - ldr r1, _0802CB64 @ =gUnknown_2023D74 + ldr r1, _0802CB64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30620,14 +30620,14 @@ _0802CB5C: pop {r0} bx r0 .align 2, 0 -_0802CB60: .4byte gUnknown_2023E8C -_0802CB64: .4byte gUnknown_2023D74 +_0802CB60: .4byte gProtectStructs +_0802CB64: .4byte gBattlescriptCurrInstr thumb_func_end atkDF_trysetmagiccoat thumb_func_start atkE0_trysetsnatch atkE0_trysetsnatch: @ 802CB68 push {lr} - ldr r2, _0802CBAC @ =gUnknown_2023ECC + ldr r2, _0802CBAC @ =gSpecialStatuses ldr r3, _0802CBB0 @ =gBattlerAttacker ldrb r1, [r3] lsls r0, r1, 2 @@ -30645,7 +30645,7 @@ atkE0_trysetsnatch: @ 802CB68 subs r0, 0x1 cmp r1, r0 bne _0802CBC0 - ldr r3, _0802CBBC @ =gUnknown_2023D74 + ldr r3, _0802CBBC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30660,20 +30660,20 @@ atkE0_trysetsnatch: @ 802CB68 str r1, [r3] b _0802CBD6 .align 2, 0 -_0802CBAC: .4byte gUnknown_2023ECC +_0802CBAC: .4byte gSpecialStatuses _0802CBB0: .4byte gBattlerAttacker _0802CBB4: .4byte gUnknown_2023BE2 _0802CBB8: .4byte gBattlersCount -_0802CBBC: .4byte gUnknown_2023D74 +_0802CBBC: .4byte gBattlescriptCurrInstr _0802CBC0: - ldr r0, _0802CBDC @ =gUnknown_2023E8C + ldr r0, _0802CBDC @ =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] - ldr r1, _0802CBE0 @ =gUnknown_2023D74 + ldr r1, _0802CBE0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30681,8 +30681,8 @@ _0802CBD6: pop {r0} bx r0 .align 2, 0 -_0802CBDC: .4byte gUnknown_2023E8C -_0802CBE0: .4byte gUnknown_2023D74 +_0802CBDC: .4byte gProtectStructs +_0802CBE0: .4byte gBattlescriptCurrInstr thumb_func_end atkE0_trysetsnatch thumb_func_start atkE1_trygetintimidatetarget @@ -30756,7 +30756,7 @@ _0802CC60: cmp r0, r2 bcc _0802CCAC _0802CC6A: - ldr r3, _0802CCA8 @ =gUnknown_2023D74 + ldr r3, _0802CCA8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -30779,9 +30779,9 @@ _0802CC98: .4byte gBattlerTarget _0802CC9C: .4byte gBattlersCount _0802CCA0: .4byte gBitTable _0802CCA4: .4byte gAbsentBattlerFlags -_0802CCA8: .4byte gUnknown_2023D74 +_0802CCA8: .4byte gBattlescriptCurrInstr _0802CCAC: - ldr r1, _0802CCBC @ =gUnknown_2023D74 + ldr r1, _0802CCBC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -30790,17 +30790,17 @@ _0802CCB4: pop {r0} bx r0 .align 2, 0 -_0802CCBC: .4byte gUnknown_2023D74 +_0802CCBC: .4byte gBattlescriptCurrInstr thumb_func_end atkE1_trygetintimidatetarget thumb_func_start atkE2_switchoutabilities atkE2_switchoutabilities: @ 802CCC0 push {r4-r6,lr} sub sp, 0x4 - ldr r5, _0802CD28 @ =gUnknown_2023D74 + ldr r5, _0802CD28 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r4, _0802CD2C @ =gActiveBattler strb r0, [r4] ldr r3, _0802CD30 @ =gBattleMons @@ -30836,7 +30836,7 @@ atkE2_switchoutabilities: @ 802CCC0 movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _0802CD1A: ldr r0, [r5] adds r0, 0x2 @@ -30846,7 +30846,7 @@ _0802CD1A: pop {r0} bx r0 .align 2, 0 -_0802CD28: .4byte gUnknown_2023D74 +_0802CD28: .4byte gBattlescriptCurrInstr _0802CD2C: .4byte gActiveBattler _0802CD30: .4byte gBattleMons _0802CD34: .4byte gBitTable @@ -30856,10 +30856,10 @@ _0802CD38: .4byte gBattleStruct thumb_func_start atkE3_jumpifhasnohp atkE3_jumpifhasnohp: @ 802CD3C push {r4,lr} - ldr r4, _0802CD78 @ =gUnknown_2023D74 + ldr r4, _0802CD78 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] - bl sub_8016E24 + bl GetBattlerForBattleScript ldr r1, _0802CD7C @ =gActiveBattler strb r0, [r1] ldr r2, _0802CD80 @ =gBattleMons @@ -30884,7 +30884,7 @@ atkE3_jumpifhasnohp: @ 802CD3C str r1, [r4] b _0802CD8A .align 2, 0 -_0802CD78: .4byte gUnknown_2023D74 +_0802CD78: .4byte gBattlescriptCurrInstr _0802CD7C: .4byte gActiveBattler _0802CD80: .4byte gBattleMons _0802CD84: @@ -30923,67 +30923,67 @@ _0802CDAC: .4byte _0802CE14 .4byte _0802CE20 _0802CDCC: - ldr r1, _0802CDD4 @ =gUnknown_2023E82 + ldr r1, _0802CDD4 @ =gBattleCommunication movs r0, 0x2 b _0802CE30 .align 2, 0 -_0802CDD4: .4byte gUnknown_2023E82 +_0802CDD4: .4byte gBattleCommunication _0802CDD8: - ldr r1, _0802CDE0 @ =gUnknown_2023E82 + ldr r1, _0802CDE0 @ =gBattleCommunication movs r0, 0x1 b _0802CE30 .align 2, 0 -_0802CDE0: .4byte gUnknown_2023E82 +_0802CDE0: .4byte gBattleCommunication _0802CDE4: - ldr r1, _0802CDEC @ =gUnknown_2023E82 + ldr r1, _0802CDEC @ =gBattleCommunication movs r0, 0x1B b _0802CE30 .align 2, 0 -_0802CDEC: .4byte gUnknown_2023E82 +_0802CDEC: .4byte gBattleCommunication _0802CDF0: - ldr r1, _0802CDF8 @ =gUnknown_2023E82 + ldr r1, _0802CDF8 @ =gBattleCommunication movs r0, 0x17 b _0802CE30 .align 2, 0 -_0802CDF8: .4byte gUnknown_2023E82 +_0802CDF8: .4byte gBattleCommunication _0802CDFC: - ldr r1, _0802CE04 @ =gUnknown_2023E82 + ldr r1, _0802CE04 @ =gBattleCommunication movs r0, 0x16 b _0802CE30 .align 2, 0 -_0802CE04: .4byte gUnknown_2023E82 +_0802CE04: .4byte gBattleCommunication _0802CE08: - ldr r1, _0802CE10 @ =gUnknown_2023E82 + ldr r1, _0802CE10 @ =gBattleCommunication movs r0, 0x18 b _0802CE30 .align 2, 0 -_0802CE10: .4byte gUnknown_2023E82 +_0802CE10: .4byte gBattleCommunication _0802CE14: - ldr r1, _0802CE1C @ =gUnknown_2023E82 + ldr r1, _0802CE1C @ =gBattleCommunication movs r0, 0x7 b _0802CE30 .align 2, 0 -_0802CE1C: .4byte gUnknown_2023E82 +_0802CE1C: .4byte gBattleCommunication _0802CE20: - ldr r1, _0802CE28 @ =gUnknown_2023E82 + ldr r1, _0802CE28 @ =gBattleCommunication movs r0, 0x8 b _0802CE30 .align 2, 0 -_0802CE28: .4byte gUnknown_2023E82 +_0802CE28: .4byte gBattleCommunication _0802CE2C: - ldr r1, _0802CE40 @ =gUnknown_2023E82 + ldr r1, _0802CE40 @ =gBattleCommunication movs r0, 0x5 _0802CE30: strb r0, [r1, 0x3] - ldr r1, _0802CE44 @ =gUnknown_2023D74 + ldr r1, _0802CE44 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 -_0802CE40: .4byte gUnknown_2023E82 -_0802CE44: .4byte gUnknown_2023D74 +_0802CE40: .4byte gBattleCommunication +_0802CE44: .4byte gBattlescriptCurrInstr thumb_func_end atkE4_getsecretpowereffect thumb_func_start sub_802CE48 @@ -31085,7 +31085,7 @@ _0802CF0A: adds r7, r4, 0 cmp r7, 0x5 ble _0802CE54 - ldr r1, _0802CF2C @ =gUnknown_2023D74 + ldr r1, _0802CF2C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -31097,7 +31097,7 @@ _0802CF0A: .align 2, 0 _0802CF24: .4byte gPlayerParty _0802CF28: .4byte gUnknown_8250848 -_0802CF2C: .4byte gUnknown_2023D74 +_0802CF2C: .4byte gBattlescriptCurrInstr thumb_func_end sub_802CE48 thumb_func_start atkE6_docastformchangeanimation @@ -31134,8 +31134,8 @@ _0802CF60: movs r1, 0 bl BtlController_EmitBattleAnimation ldrb r0, [r4] - bl MarkBufferBankForExecution - ldr r1, _0802CF94 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802CF94 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -31147,24 +31147,24 @@ _0802CF84: .4byte gActiveBattler _0802CF88: .4byte gBattleScripting _0802CF8C: .4byte gBattleMons _0802CF90: .4byte gBattleStruct -_0802CF94: .4byte gUnknown_2023D74 +_0802CF94: .4byte gBattlescriptCurrInstr thumb_func_end atkE6_docastformchangeanimation thumb_func_start atkE7_trycastformdatachange atkE7_trycastformdatachange: @ 802CF98 push {r4,lr} - ldr r1, _0802CFC8 @ =gUnknown_2023D74 + ldr r1, _0802CFC8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r0, _0802CFCC @ =gBattleScripting ldrb r0, [r0, 0x17] - bl sub_8019DAC + bl CastformDataTypeChange lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _0802CFC2 - ldr r0, _0802CFD0 @ =gUnknown_81D92F8 + ldr r0, _0802CFD0 @ =BattleScript_CastformChange bl BattleScriptPushCursorAndCallback ldr r0, _0802CFD4 @ =gBattleStruct ldr r0, [r0] @@ -31176,9 +31176,9 @@ _0802CFC2: pop {r0} bx r0 .align 2, 0 -_0802CFC8: .4byte gUnknown_2023D74 +_0802CFC8: .4byte gBattlescriptCurrInstr _0802CFCC: .4byte gBattleScripting -_0802CFD0: .4byte gUnknown_81D92F8 +_0802CFD0: .4byte BattleScript_CastformChange _0802CFD4: .4byte gBattleStruct thumb_func_end atkE7_trycastformdatachange @@ -31210,7 +31210,7 @@ atkE8_settypebasedhalvers: @ 802CFD8 bne _0802D04C orrs r1, r3 str r1, [r2] - ldr r0, _0802D024 @ =gUnknown_2023E82 + ldr r0, _0802D024 @ =gBattleCommunication strb r4, [r0, 0x5] b _0802D050 .align 2, 0 @@ -31218,7 +31218,7 @@ _0802D014: .4byte gBattleMoves _0802D018: .4byte gCurrentMove _0802D01C: .4byte gStatuses3 _0802D020: .4byte gBattlerAttacker -_0802D024: .4byte gUnknown_2023E82 +_0802D024: .4byte gBattleCommunication _0802D028: ldr r1, _0802D05C @ =gStatuses3 ldr r0, _0802D060 @ =gBattlerAttacker @@ -31234,7 +31234,7 @@ _0802D028: bne _0802D04C orrs r1, r3 str r1, [r2] - ldr r1, _0802D064 @ =gUnknown_2023E82 + ldr r1, _0802D064 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] movs r4, 0x1 @@ -31242,7 +31242,7 @@ _0802D04C: cmp r4, 0 beq _0802D06C _0802D050: - ldr r1, _0802D068 @ =gUnknown_2023D74 + ldr r1, _0802D068 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -31250,10 +31250,10 @@ _0802D050: .align 2, 0 _0802D05C: .4byte gStatuses3 _0802D060: .4byte gBattlerAttacker -_0802D064: .4byte gUnknown_2023E82 -_0802D068: .4byte gUnknown_2023D74 +_0802D064: .4byte gBattleCommunication +_0802D068: .4byte gBattlescriptCurrInstr _0802D06C: - ldr r3, _0802D08C @ =gUnknown_2023D74 + ldr r3, _0802D08C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -31271,7 +31271,7 @@ _0802D086: pop {r0} bx r0 .align 2, 0 -_0802D08C: .4byte gUnknown_2023D74 +_0802D08C: .4byte gBattlescriptCurrInstr thumb_func_end atkE8_settypebasedhalvers thumb_func_start atkE9_setweatherballtype @@ -31359,7 +31359,7 @@ _0802D128: _0802D12E: strb r0, [r1, 0x13] _0802D130: - ldr r1, _0802D144 @ =gUnknown_2023D74 + ldr r1, _0802D144 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -31368,7 +31368,7 @@ _0802D130: bx r0 .align 2, 0 _0802D140: .4byte gBattleStruct -_0802D144: .4byte gUnknown_2023D74 +_0802D144: .4byte gBattlescriptCurrInstr thumb_func_end atkE9_setweatherballtype thumb_func_start atkEA_tryrecycleitem @@ -31416,8 +31416,8 @@ atkEA_tryrecycleitem: @ 802D148 movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r7] - bl MarkBufferBankForExecution - ldr r1, _0802D1C4 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802D1C4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -31428,9 +31428,9 @@ _0802D1B4: .4byte gBattlerAttacker _0802D1B8: .4byte gBattleStruct _0802D1BC: .4byte gBattleMons _0802D1C0: .4byte gLastUsedItem -_0802D1C4: .4byte gUnknown_2023D74 +_0802D1C4: .4byte gBattlescriptCurrInstr _0802D1C8: - ldr r3, _0802D1EC @ =gUnknown_2023D74 + ldr r3, _0802D1EC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -31449,7 +31449,7 @@ _0802D1E2: pop {r0} bx r0 .align 2, 0 -_0802D1EC: .4byte gUnknown_2023D74 +_0802D1EC: .4byte gBattlescriptCurrInstr thumb_func_end atkEA_tryrecycleitem thumb_func_start atkEB_settypetoterrain @@ -31505,7 +31505,7 @@ atkEB_settypetoterrain: @ 802D1F0 strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] - ldr r1, _0802D274 @ =gUnknown_2023D74 + ldr r1, _0802D274 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -31516,9 +31516,9 @@ _0802D264: .4byte gBattlerAttacker _0802D268: .4byte gUnknown_8250888 _0802D26C: .4byte gUnknown_2022B50 _0802D270: .4byte gBattleTextBuff1 -_0802D274: .4byte gUnknown_2023D74 +_0802D274: .4byte gBattlescriptCurrInstr _0802D278: - ldr r3, _0802D29C @ =gUnknown_2023D74 + ldr r3, _0802D29C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -31538,7 +31538,7 @@ _0802D292: pop {r0} bx r0 .align 2, 0 -_0802D29C: .4byte gUnknown_2023D74 +_0802D29C: .4byte gBattlescriptCurrInstr thumb_func_end atkEB_settypetoterrain thumb_func_start atkEC_pursuitrelated @@ -31587,7 +31587,7 @@ atkEC_pursuitrelated: @ 802D2A0 strb r1, [r0] ldr r0, _0802D334 @ =gCurrentMove strh r2, [r0] - ldr r1, _0802D338 @ =gUnknown_2023D74 + ldr r1, _0802D338 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -31609,10 +31609,10 @@ _0802D328: .4byte gUnknown_2023D7C _0802D32C: .4byte gUnknown_2023DC4 _0802D330: .4byte gUnknown_2023BDA _0802D334: .4byte gCurrentMove -_0802D338: .4byte gUnknown_2023D74 +_0802D338: .4byte gBattlescriptCurrInstr _0802D33C: .4byte gBattleScripting _0802D340: - ldr r3, _0802D360 @ =gUnknown_2023D74 + ldr r3, _0802D360 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -31630,7 +31630,7 @@ _0802D35A: pop {r0} bx r0 .align 2, 0 -_0802D360: .4byte gUnknown_2023D74 +_0802D360: .4byte gBattlescriptCurrInstr thumb_func_end atkEC_pursuitrelated thumb_func_start atkEF_snatchsetbanks @@ -31664,7 +31664,7 @@ _0802D398: _0802D39E: ldrb r0, [r4] strb r0, [r1, 0x17] - ldr r1, _0802D3B4 @ =gUnknown_2023D74 + ldr r1, _0802D3B4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -31673,7 +31673,7 @@ _0802D39E: bx r0 .align 2, 0 _0802D3B0: .4byte gBattleScripting -_0802D3B4: .4byte gUnknown_2023D74 +_0802D3B4: .4byte gBattlescriptCurrInstr thumb_func_end atkEF_snatchsetbanks thumb_func_start atkEE_removelightscreenreflect @@ -31698,7 +31698,7 @@ atkEE_removelightscreenreflect: @ 802D3B8 cmp r1, 0 beq _0802D418 _0802D3E0: - ldr r2, _0802D408 @ =gSideAffecting + ldr r2, _0802D408 @ =gSideStatuses adds r2, r3, r2 ldrh r1, [r2] ldr r0, _0802D40C @ =0x0000fffe @@ -31717,7 +31717,7 @@ _0802D3E0: .align 2, 0 _0802D400: .4byte gBattlerAttacker _0802D404: .4byte gSideTimers -_0802D408: .4byte gSideAffecting +_0802D408: .4byte gSideStatuses _0802D40C: .4byte 0x0000fffe _0802D410: .4byte 0x0000fffd _0802D414: .4byte gBattleScripting @@ -31726,7 +31726,7 @@ _0802D418: strb r1, [r0, 0x18] strb r1, [r0, 0x19] _0802D41E: - ldr r1, _0802D430 @ =gUnknown_2023D74 + ldr r1, _0802D430 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -31735,7 +31735,7 @@ _0802D41E: bx r0 .align 2, 0 _0802D42C: .4byte gBattleScripting -_0802D430: .4byte gUnknown_2023D74 +_0802D430: .4byte gBattlescriptCurrInstr thumb_func_end atkEE_removelightscreenreflect thumb_func_start sub_802D434 @@ -31767,8 +31767,8 @@ _0802D442: movs r1, 0x6 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0802D488 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802D488 @ =gBattlescriptCurrInstr ldr r0, _0802D48C @ =gUnknown_81D9AD1 b _0802D7EC .align 2, 0 @@ -31777,7 +31777,7 @@ _0802D478: .4byte gActiveBattler _0802D47C: .4byte gBattlerAttacker _0802D480: .4byte gBattlerTarget _0802D484: .4byte gBattleTypeFlags -_0802D488: .4byte gUnknown_2023D74 +_0802D488: .4byte gBattlescriptCurrInstr _0802D48C: .4byte gUnknown_81D9AD1 _0802D490: movs r0, 0x8 @@ -31788,12 +31788,12 @@ _0802D490: movs r1, 0x5 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0802D4AC @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802D4AC @ =gBattlescriptCurrInstr ldr r0, _0802D4B0 @ =gUnknown_81D9AC1 b _0802D7EC .align 2, 0 -_0802D4AC: .4byte gUnknown_2023D74 +_0802D4AC: .4byte gBattlescriptCurrInstr _0802D4B0: .4byte gUnknown_81D9AC1 _0802D4B4: movs r0, 0x81 @@ -31805,12 +31805,12 @@ _0802D4B4: movs r1, 0x4 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] - bl MarkBufferBankForExecution - ldr r1, _0802D4D4 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr ldr r0, _0802D4D8 @ =gUnknown_81D9A88 b _0802D7EC .align 2, 0 -_0802D4D4: .4byte gUnknown_2023D74 +_0802D4D4: .4byte gBattlescriptCurrInstr _0802D4D8: .4byte gUnknown_81D9A88 _0802D4DC: ldr r0, _0802D500 @ =gLastUsedItem @@ -32051,8 +32051,8 @@ _0802D6BC: bl BtlController_EmitBallThrowAnim ldr r0, _0802D704 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution - ldr r1, _0802D708 @ =gUnknown_2023D74 + bl MarkBattlerForControllerExec + ldr r1, _0802D708 @ =gBattlescriptCurrInstr ldr r0, _0802D70C @ =gUnknown_81D9A42 str r0, [r1] ldr r1, _0802D710 @ =gBattlerPartyIndexes @@ -32077,7 +32077,7 @@ _0802D6BC: .align 2, 0 _0802D700: .4byte gBattleResults _0802D704: .4byte gActiveBattler -_0802D708: .4byte gUnknown_2023D74 +_0802D708: .4byte gBattlescriptCurrInstr _0802D70C: .4byte gUnknown_81D9A42 _0802D710: .4byte gBattlerPartyIndexes _0802D714: .4byte gBattlerTarget @@ -32126,10 +32126,10 @@ _0802D76C: bl BtlController_EmitBallThrowAnim ldr r0, _0802D7BC @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec cmp r4, 0x4 bne _0802D7E4 - ldr r1, _0802D7C0 @ =gUnknown_2023D74 + ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr ldr r0, _0802D7C4 @ =gUnknown_81D9A42 str r0, [r1] ldr r1, _0802D7C8 @ =gBattlerPartyIndexes @@ -32151,30 +32151,30 @@ _0802D76C: cmp r0, 0x6 bne _0802D7D8 _0802D7AE: - ldr r1, _0802D7D4 @ =gUnknown_2023E82 + ldr r1, _0802D7D4 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 _0802D7B8: .4byte gLastUsedItem _0802D7BC: .4byte gActiveBattler -_0802D7C0: .4byte gUnknown_2023D74 +_0802D7C0: .4byte gBattlescriptCurrInstr _0802D7C4: .4byte gUnknown_81D9A42 _0802D7C8: .4byte gBattlerPartyIndexes _0802D7CC: .4byte gBattlerTarget _0802D7D0: .4byte gEnemyParty -_0802D7D4: .4byte gUnknown_2023E82 +_0802D7D4: .4byte gBattleCommunication _0802D7D8: - ldr r1, _0802D7E0 @ =gUnknown_2023E82 + ldr r1, _0802D7E0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 -_0802D7E0: .4byte gUnknown_2023E82 +_0802D7E0: .4byte gBattleCommunication _0802D7E4: - ldr r0, _0802D7F4 @ =gUnknown_2023E82 + ldr r0, _0802D7F4 @ =gBattleCommunication strb r4, [r0, 0x5] - ldr r1, _0802D7F8 @ =gUnknown_2023D74 + ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr ldr r0, _0802D7FC @ =gUnknown_81D9A93 _0802D7EC: str r0, [r1] @@ -32183,8 +32183,8 @@ _0802D7EE: pop {r0} bx r0 .align 2, 0 -_0802D7F4: .4byte gUnknown_2023E82 -_0802D7F8: .4byte gUnknown_2023D74 +_0802D7F4: .4byte gBattleCommunication +_0802D7F8: .4byte gBattlescriptCurrInstr _0802D7FC: .4byte gUnknown_81D9A93 thumb_func_end sub_802D434 @@ -32217,7 +32217,7 @@ sub_802D800: @ 802D800 lsrs r1, r0, 24 cmp r1, 0 bne _0802D88C - ldr r0, _0802D87C @ =gUnknown_2023E82 + ldr r0, _0802D87C @ =gBattleCommunication strb r1, [r0, 0x5] ldr r4, _0802D880 @ =gStringVar1 ldr r0, _0802D884 @ =0x00004037 @@ -32243,7 +32243,7 @@ sub_802D800: @ 802D800 _0802D870: .4byte gBattlerPartyIndexes _0802D874: .4byte gBattlerAttacker _0802D878: .4byte gEnemyParty -_0802D87C: .4byte gUnknown_2023E82 +_0802D87C: .4byte gBattleCommunication _0802D880: .4byte gStringVar1 _0802D884: .4byte 0x00004037 _0802D888: .4byte gStringVar2 @@ -32275,7 +32275,7 @@ _0802D88C: adds r1, r0, 0 adds r0, r4, 0 bl StringCopy - ldr r1, _0802D93C @ =gUnknown_2023E82 + ldr r1, _0802D93C @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] _0802D8D6: @@ -32284,7 +32284,7 @@ _0802D8D6: lsls r0, 24 cmp r0, 0 beq _0802D8EA - ldr r1, _0802D93C @ =gUnknown_2023E82 + ldr r1, _0802D93C @ =gBattleCommunication ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] @@ -32311,7 +32311,7 @@ _0802D8EA: adds r2, 0x2A movs r1, 0x2 bl GetMonData - ldr r1, _0802D958 @ =gUnknown_2023D74 + ldr r1, _0802D958 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -32326,14 +32326,14 @@ _0802D92C: .4byte gStringVar1 _0802D930: .4byte 0x00004037 _0802D934: .4byte gStringVar2 _0802D938: .4byte gStringVar3 -_0802D93C: .4byte gUnknown_2023E82 +_0802D93C: .4byte gBattleCommunication _0802D940: .4byte 0x00000834 _0802D944: .4byte gBattleResults _0802D948: .4byte gBattleMons _0802D94C: .4byte gBattlerAttacker _0802D950: .4byte gBattlerPartyIndexes _0802D954: .4byte gEnemyParty -_0802D958: .4byte gUnknown_2023D74 +_0802D958: .4byte gBattlescriptCurrInstr thumb_func_end sub_802D800 thumb_func_start sub_802D95C @@ -32360,7 +32360,7 @@ sub_802D95C: @ 802D95C lsls r0, 24 cmp r0, 0 beq _0802D9B4 - ldr r3, _0802D9B0 @ =gUnknown_2023D74 + ldr r3, _0802D9B0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -32376,7 +32376,7 @@ sub_802D95C: @ 802D95C b _0802D9CE .align 2, 0 _0802D9AC: .4byte gEnemyParty -_0802D9B0: .4byte gUnknown_2023D74 +_0802D9B0: .4byte gBattlescriptCurrInstr _0802D9B4: adds r0, r5, 0 bl SpeciesToNationalPokedexNum @@ -32385,7 +32385,7 @@ _0802D9B4: movs r1, 0x3 adds r2, r4, 0 bl HandleSetPokedexFlag - ldr r1, _0802D9D4 @ =gUnknown_2023D74 + ldr r1, _0802D9D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] @@ -32394,7 +32394,7 @@ _0802D9CE: pop {r0} bx r0 .align 2, 0 -_0802D9D4: .4byte gUnknown_2023D74 +_0802D9D4: .4byte gBattlescriptCurrInstr thumb_func_end sub_802D95C thumb_func_start sub_802D9D8 @@ -32407,7 +32407,7 @@ sub_802D9D8: @ 802D9D8 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 - ldr r0, _0802DA04 @ =gUnknown_2023E82 + ldr r0, _0802DA04 @ =gBattleCommunication ldrb r0, [r0] cmp r0, 0x5 bls _0802D9F4 @@ -32420,7 +32420,7 @@ _0802D9F4: mov pc, r0 .align 2, 0 _0802DA00: .4byte gEnemyParty -_0802DA04: .4byte gUnknown_2023E82 +_0802DA04: .4byte gBattleCommunication _0802DA08: .4byte _0802DA0C .align 2, 0 _0802DA0C: @@ -32454,12 +32454,12 @@ _0802DA4A: bl FreeAllWindowBuffers adds r0, r5, 0 bl sub_8106B60 - ldr r1, _0802DA60 @ =gUnknown_2023E82 + ldr r1, _0802DA60 @ =gBattleCommunication strb r0, [r1, 0x1] b _0802DB36 .align 2, 0 _0802DA5C: .4byte gPaletteFade -_0802DA60: .4byte gUnknown_2023E82 +_0802DA60: .4byte gBattleCommunication _0802DA64: ldr r0, _0802DAAC @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -32475,7 +32475,7 @@ _0802DA72: cmp r1, r0 bne _0802DB6C ldr r2, _0802DAB8 @ =gTasks - ldr r4, _0802DABC @ =gUnknown_2023E82 + ldr r4, _0802DABC @ =gBattleCommunication ldrb r1, [r4, 0x1] lsls r0, r1, 2 adds r0, r1 @@ -32501,7 +32501,7 @@ _0802DAAC: .4byte gPaletteFade _0802DAB0: .4byte gMain _0802DAB4: .4byte BattleMainCB2 _0802DAB8: .4byte gTasks -_0802DABC: .4byte gUnknown_2023E82 +_0802DABC: .4byte gBattleCommunication _0802DAC0: .4byte 0x05006000 _0802DAC4: .4byte sub_80116F4 _0802DAC8: @@ -32553,7 +32553,7 @@ _0802DAE0: movs r0, 0x3 bl ShowBg _0802DB34: - ldr r1, _0802DB54 @ =gUnknown_2023E82 + ldr r1, _0802DB54 @ =gBattleCommunication _0802DB36: ldrb r0, [r1] adds r0, 0x1 @@ -32565,7 +32565,7 @@ _0802DB44: .4byte 0x0000ffff _0802DB48: .4byte gPlttBufferFaded _0802DB4C: .4byte 0x05000080 _0802DB50: .4byte 0x0001ffff -_0802DB54: .4byte gUnknown_2023E82 +_0802DB54: .4byte gBattleCommunication _0802DB58: ldr r0, _0802DB74 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -32573,7 +32573,7 @@ _0802DB58: ands r0, r1 cmp r0, 0 bne _0802DB6C - ldr r1, _0802DB78 @ =gUnknown_2023D74 + ldr r1, _0802DB78 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -32584,7 +32584,7 @@ _0802DB6C: bx r0 .align 2, 0 _0802DB74: .4byte gPaletteFade -_0802DB78: .4byte gUnknown_2023D74 +_0802DB78: .4byte gBattlescriptCurrInstr thumb_func_end sub_802D9D8 thumb_func_start sub_802DB7C @@ -32765,7 +32765,7 @@ sub_802DCB8: @ 802DCB8 strh r2, [r0] movs r1, 0x2 strh r1, [r0, 0x2] - ldr r0, _0802DCF4 @ =gUnknown_2023E82 + ldr r0, _0802DCF4 @ =gBattleCommunication ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 @@ -32786,7 +32786,7 @@ sub_802DCB8: @ 802DCB8 pop {r0} bx r0 .align 2, 0 -_0802DCF4: .4byte gUnknown_2023E82 +_0802DCF4: .4byte gBattleCommunication thumb_func_end sub_802DCB8 thumb_func_start sub_802DCF8 @@ -32797,7 +32797,7 @@ sub_802DCF8: @ 802DCF8 movs r1, 0x20 strh r1, [r0] strh r1, [r0, 0x2] - ldr r0, _0802DD34 @ =gUnknown_2023E82 + ldr r0, _0802DD34 @ =gBattleCommunication ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 @@ -32820,7 +32820,7 @@ sub_802DCF8: @ 802DCF8 pop {r0} bx r0 .align 2, 0 -_0802DD34: .4byte gUnknown_2023E82 +_0802DD34: .4byte gBattleCommunication thumb_func_end sub_802DCF8 thumb_func_start sub_802DD38 @@ -32831,7 +32831,7 @@ sub_802DD38: @ 802DD38 mov r5, r8 push {r5-r7} sub sp, 0x8 - ldr r0, _0802DD5C @ =gUnknown_2023E82 + ldr r0, _0802DD5C @ =gBattleCommunication ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x4 @@ -32844,7 +32844,7 @@ _0802DD50: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0802DD5C: .4byte gUnknown_2023E82 +_0802DD5C: .4byte gBattleCommunication _0802DD60: .4byte _0802DD64 .align 2, 0 _0802DD64: @@ -32864,7 +32864,7 @@ _0802DD78: ldr r0, _0802DDA0 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow - ldr r1, _0802DDA4 @ =gUnknown_2023E82 + ldr r1, _0802DDA4 @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -32873,7 +32873,7 @@ _0802DD78: b _0802DFA6 .align 2, 0 _0802DDA0: .4byte gUnknown_83FE791 -_0802DDA4: .4byte gUnknown_2023E82 +_0802DDA4: .4byte gBattleCommunication _0802DDA8: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] @@ -32897,7 +32897,7 @@ _0802DDCC: ands r0, r1 cmp r0, 0 beq _0802DDF2 - ldr r4, _0802DE20 @ =gUnknown_2023E82 + ldr r4, _0802DE20 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _0802DDF2 @@ -32916,7 +32916,7 @@ _0802DDF2: beq _0802DE24 movs r0, 0x5 bl PlaySE - ldr r1, _0802DE20 @ =gUnknown_2023E82 + ldr r1, _0802DE20 @ =gBattleCommunication ldrb r0, [r1, 0x1] cmp r0, 0 bne _0802DE36 @@ -32928,7 +32928,7 @@ _0802DDF2: b _0802DFA6 .align 2, 0 _0802DE1C: .4byte gMain -_0802DE20: .4byte gUnknown_2023E82 +_0802DE20: .4byte gBattleCommunication _0802DE24: movs r0, 0x2 ands r0, r1 @@ -32938,13 +32938,13 @@ _0802DE24: _0802DE2E: movs r0, 0x5 bl PlaySE - ldr r1, _0802DE3C @ =gUnknown_2023E82 + ldr r1, _0802DE3C @ =gBattleCommunication _0802DE36: movs r0, 0x4 strb r0, [r1] b _0802DFA6 .align 2, 0 -_0802DE3C: .4byte gUnknown_2023E82 +_0802DE3C: .4byte gBattleCommunication _0802DE40: ldr r0, _0802DEFC @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -33029,7 +33029,7 @@ _0802DE4E: adds r2, r6, 0 adds r3, r5, 0 bl DoNamingScreen - ldr r1, _0802DF14 @ =gUnknown_2023E82 + ldr r1, _0802DF14 @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -33041,7 +33041,7 @@ _0802DF04: .4byte gBattlerAttacker _0802DF08: .4byte gEnemyParty _0802DF0C: .4byte gBattleStruct _0802DF10: .4byte BattleMainCB2 -_0802DF14: .4byte gUnknown_2023E82 +_0802DF14: .4byte gBattleCommunication _0802DF18: ldr r0, _0802DF54 @ =gMain ldr r1, [r0, 0x4] @@ -33086,15 +33086,15 @@ _0802DF70: lsrs r0, 24 cmp r0, 0x6 bne _0802DF8C - ldr r1, _0802DF88 @ =gUnknown_2023D74 + ldr r1, _0802DF88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802DFA6 .align 2, 0 -_0802DF88: .4byte gUnknown_2023D74 +_0802DF88: .4byte gBattlescriptCurrInstr _0802DF8C: - ldr r3, _0802DFB8 @ =gUnknown_2023D74 + ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] @@ -33117,7 +33117,7 @@ _0802DFA6: pop {r0} bx r0 .align 2, 0 -_0802DFB8: .4byte gUnknown_2023D74 +_0802DFB8: .4byte gBattlescriptCurrInstr thumb_func_end sub_802DD38 thumb_func_start atkF4_subattackerhpbydmg @@ -33133,7 +33133,7 @@ atkF4_subattackerhpbydmg: @ 802DFBC ldrh r0, [r1, 0x28] subs r0, r2 strh r0, [r1, 0x28] - ldr r1, _0802DFE8 @ =gUnknown_2023D74 + ldr r1, _0802DFE8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -33142,7 +33142,7 @@ atkF4_subattackerhpbydmg: @ 802DFBC _0802DFDC: .4byte gBattleMons _0802DFE0: .4byte gBattlerAttacker _0802DFE4: .4byte gBattleMoveDamage -_0802DFE8: .4byte gUnknown_2023D74 +_0802DFE8: .4byte gBattlescriptCurrInstr thumb_func_end atkF4_subattackerhpbydmg thumb_func_start atkF5_removeattackerstatus1 @@ -33156,7 +33156,7 @@ atkF5_removeattackerstatus1: @ 802DFEC adds r0, r1 movs r1, 0 str r1, [r0] - ldr r1, _0802E010 @ =gUnknown_2023D74 + ldr r1, _0802E010 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] @@ -33164,7 +33164,7 @@ atkF5_removeattackerstatus1: @ 802DFEC .align 2, 0 _0802E008: .4byte gBattleMons _0802E00C: .4byte gBattlerAttacker -_0802E010: .4byte gUnknown_2023D74 +_0802E010: .4byte gBattlescriptCurrInstr thumb_func_end atkF5_removeattackerstatus1 thumb_func_start sub_802E014 diff --git a/asm/battle_util.s b/asm/battle_util.s index 34e4ad428..d73ed9e0e 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8016E24 -sub_8016E24: @ 8016E24 + thumb_func_start GetBattlerForBattleScript +GetBattlerForBattleScript: @ 8016E24 push {lr} lsls r0, 24 lsrs r0, 24 @@ -63,11 +63,11 @@ _08016E9C: .align 2, 0 _08016EA4: .4byte gBattleScripting _08016EA8: - ldr r0, _08016EB0 @ =gUnknown_2023D6D + ldr r0, _08016EB0 @ =gBattlerFainted ldrb r2, [r0] b _08016EC2 .align 2, 0 -_08016EB0: .4byte gUnknown_2023D6D +_08016EB0: .4byte gBattlerFainted _08016EB4: movs r0, 0 b _08016EBA @@ -81,7 +81,7 @@ _08016EC2: adds r0, r2, 0 pop {r1} bx r1 - thumb_func_end sub_8016E24 + thumb_func_end GetBattlerForBattleScript thumb_func_start PressurePPLose PressurePPLose: @ 8016EC8 @@ -174,7 +174,7 @@ _08016F26: movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08016F7A: add sp, 0x4 pop {r4-r7} @@ -324,7 +324,7 @@ _08017038: movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080170A0: add sp, 0x4 pop {r3-r5} @@ -461,7 +461,7 @@ _08017146: movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _080171AA: add sp, 0x4 pop {r3-r5} @@ -481,8 +481,8 @@ _080171D0: .4byte gBitTable _080171D4: .4byte gActiveBattler thumb_func_end PressurePPLoseOnUsingPerishSong - thumb_func_start MarkAllBufferBanksForExecution -MarkAllBufferBanksForExecution: @ 80171D8 + thumb_func_start MarkAllBattlersForControllerExec +MarkAllBattlersForControllerExec: @ 80171D8 push {r4,r5,lr} ldr r0, _08017208 @ =gBattleTypeFlags ldr r0, [r0] @@ -538,10 +538,10 @@ _08017236: _0801723C: .4byte gBattlersCount _08017240: .4byte gBattleControllerExecFlags _08017244: .4byte gBitTable - thumb_func_end MarkAllBufferBanksForExecution + thumb_func_end MarkAllBattlersForControllerExec - thumb_func_start MarkBufferBankForExecution -MarkBufferBankForExecution: @ 8017248 + thumb_func_start MarkBattlerForControllerExec +MarkBattlerForControllerExec: @ 8017248 push {lr} lsls r0, 24 lsrs r3, r0, 24 @@ -580,7 +580,7 @@ _0801728C: .align 2, 0 _08017290: .4byte gBattleControllerExecFlags _08017294: .4byte gBitTable - thumb_func_end MarkBufferBankForExecution + thumb_func_end MarkBattlerForControllerExec thumb_func_start sub_8017298 sub_8017298: @ 8017298 @@ -679,7 +679,7 @@ _08017350: .4byte gDisableStructs WasUnableToUseMove: @ 8017354 push {lr} lsls r0, 24 - ldr r1, _080173A0 @ =gUnknown_2023E8C + ldr r1, _080173A0 @ =gProtectStructs lsrs r0, 20 adds r1, r0, r1 ldrb r0, [r1] @@ -716,7 +716,7 @@ _0801739A: movs r0, 0x1 b _080173A6 .align 2, 0 -_080173A0: .4byte gUnknown_2023E8C +_080173A0: .4byte gProtectStructs _080173A4: movs r0, 0 _080173A6: @@ -736,7 +736,7 @@ PrepareStringBattle: @ 80173AC adds r1, r2, 0 bl BtlController_EmitPrintString ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec pop {r4} pop {r0} bx r0 @@ -748,7 +748,7 @@ _080173CC: .4byte gActiveBattler ResetSentPokesToOpponentValue: @ 80173D0 push {r4-r6,lr} movs r3, 0 - ldr r0, _08017424 @ =gUnknown_2023F4E + ldr r0, _08017424 @ =gSentPokesToOpponent strb r3, [r0] strb r3, [r0, 0x1] movs r1, 0 @@ -776,7 +776,7 @@ _080173FE: ldrb r0, [r2] cmp r1, r0 bge _0801741E - ldr r5, _08017424 @ =gUnknown_2023F4E + ldr r5, _08017424 @ =gSentPokesToOpponent movs r4, 0x2 _0801740C: adds r0, r1, 0 @@ -793,7 +793,7 @@ _0801741E: pop {r0} bx r0 .align 2, 0 -_08017424: .4byte gUnknown_2023F4E +_08017424: .4byte gSentPokesToOpponent _08017428: .4byte gBattlersCount _0801742C: .4byte gBitTable _08017430: .4byte gBattlerPartyIndexes @@ -818,7 +818,7 @@ sub_8017434: @ 8017434 lsls r0, 24 lsrs r0, 25 mov r12, r0 - ldr r1, _080174A4 @ =gUnknown_2023F4E + ldr r1, _080174A4 @ =gSentPokesToOpponent adds r0, r1 strb r4, [r0] adds r5, r4, 0 @@ -860,7 +860,7 @@ _08017498: pop {r0} bx r0 .align 2, 0 -_080174A4: .4byte gUnknown_2023F4E +_080174A4: .4byte gSentPokesToOpponent _080174A8: .4byte gBattlersCount _080174AC: .4byte gAbsentBattlerFlags _080174B0: .4byte gBitTable @@ -887,7 +887,7 @@ _080174D4: ldrb r0, [r5] cmp r3, r0 bge _0801750A - ldr r0, _08017514 @ =gUnknown_2023F4E + ldr r0, _08017514 @ =gSentPokesToOpponent mov r12, r0 movs r7, 0x2 ldr r6, _08017518 @ =gBitTable @@ -916,7 +916,7 @@ _0801750A: bx r0 .align 2, 0 _08017510: .4byte gBattlersCount -_08017514: .4byte gUnknown_2023F4E +_08017514: .4byte gSentPokesToOpponent _08017518: .4byte gBitTable _0801751C: .4byte gBattlerPartyIndexes thumb_func_end sub_80174B8 @@ -956,18 +956,18 @@ BattleScriptPushCursor: @ 8017544 lsls r0, 24 lsrs r0, 22 adds r2, r0 - ldr r0, _08017568 @ =gUnknown_2023D74 + ldr r0, _08017568 @ =gBattlescriptCurrInstr ldr r0, [r0] str r0, [r2] bx lr .align 2, 0 _08017564: .4byte gBattleResources -_08017568: .4byte gUnknown_2023D74 +_08017568: .4byte gBattlescriptCurrInstr thumb_func_end BattleScriptPushCursor thumb_func_start BattleScriptPop BattleScriptPop: @ 801756C - ldr r3, _0801758C @ =gUnknown_2023D74 + ldr r3, _0801758C @ =gBattlescriptCurrInstr ldr r0, _08017590 @ =gBattleResources ldr r0, [r0] ldr r1, [r0, 0x8] @@ -983,12 +983,12 @@ BattleScriptPop: @ 801756C str r0, [r3] bx lr .align 2, 0 -_0801758C: .4byte gUnknown_2023D74 +_0801758C: .4byte gBattlescriptCurrInstr _08017590: .4byte gBattleResources thumb_func_end BattleScriptPop - thumb_func_start sub_8017594 -sub_8017594: @ 8017594 + thumb_func_start TrySetCantSelectMoveBattleScript +TrySetCantSelectMoveBattleScript: @ 8017594 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1028,11 +1028,11 @@ sub_8017594: @ 8017594 strb r3, [r0, 0x17] ldr r0, _080176C4 @ =gCurrentMove strh r4, [r0] - ldr r1, _080176C8 @ =gUnknown_2023D80 + ldr r1, _080176C8 @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r1 - ldr r1, _080176CC @ =gUnknown_81D8C5A + ldr r1, _080176CC @ =BattleScript_SelectingDisabledMove str r1, [r0] movs r6, 0x1 _080175F0: @@ -1056,11 +1056,11 @@ _080175F0: bge _0801762C adds r0, r2, 0 bl CancelMultiTurnMoves - ldr r1, _080176C8 @ =gUnknown_2023D80 + ldr r1, _080176C8 @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r1 - ldr r1, _080176D4 @ =gUnknown_81D8EB7 + ldr r1, _080176D4 @ =BattleScript_SelectingTormentedMove str r1, [r0] adds r0, r6, 0x1 lsls r0, 24 @@ -1087,11 +1087,11 @@ _0801762C: bne _08017668 ldr r0, _080176C4 @ =gCurrentMove strh r4, [r0] - ldr r1, _080176C8 @ =gUnknown_2023D80 + ldr r1, _080176C8 @ =gSelectionBattleScripts ldrb r0, [r3] lsls r0, 2 adds r0, r1 - ldr r1, _080176DC @ =gUnknown_81D8EC6 + ldr r1, _080176DC @ =BattleScript_SelectingNotAllowedMoveTaunt str r1, [r0] adds r0, r6, 0x1 lsls r0, 24 @@ -1106,11 +1106,11 @@ _08017668: beq _0801768E ldr r0, _080176C4 @ =gCurrentMove strh r4, [r0] - ldr r1, _080176C8 @ =gUnknown_2023D80 + ldr r1, _080176C8 @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r1 - ldr r1, _080176E0 @ =gUnknown_81D8F9F + ldr r1, _080176E0 @ =BattleScript_SelectingImprisonedMove str r1, [r0] adds r0, r6, 0x1 lsls r0, 24 @@ -1139,13 +1139,13 @@ _080176B8: .4byte gBattleStruct _080176BC: .4byte gDisableStructs _080176C0: .4byte gBattleScripting _080176C4: .4byte gCurrentMove -_080176C8: .4byte gUnknown_2023D80 -_080176CC: .4byte gUnknown_81D8C5A +_080176C8: .4byte gSelectionBattleScripts +_080176CC: .4byte BattleScript_SelectingDisabledMove _080176D0: .4byte gLastUsedMove -_080176D4: .4byte gUnknown_81D8EB7 +_080176D4: .4byte BattleScript_SelectingTormentedMove _080176D8: .4byte gBattleMoves -_080176DC: .4byte gUnknown_81D8EC6 -_080176E0: .4byte gUnknown_81D8F9F +_080176DC: .4byte BattleScript_SelectingNotAllowedMoveTaunt +_080176E0: .4byte BattleScript_SelectingImprisonedMove _080176E4: .4byte gEnigmaBerries _080176E8: ldrh r0, [r1, 0x2E] @@ -1180,11 +1180,11 @@ _080176F2: adds r0, r7 ldrh r0, [r0, 0x2E] strh r0, [r2] - ldr r1, _0801778C @ =gUnknown_2023D80 + ldr r1, _0801778C @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r1 - ldr r1, _08017790 @ =gUnknown_81D963D + ldr r1, _08017790 @ =BattleScript_SelectingNotAllowedMoveChoiceItem str r1, [r0] adds r0, r6, 0x1 lsls r0, 24 @@ -1205,10 +1205,10 @@ _0801773A: ldrb r0, [r0] cmp r0, 0 bne _08017768 - ldr r1, _0801778C @ =gUnknown_2023D80 + ldr r1, _0801778C @ =gSelectionBattleScripts lsls r0, r2, 2 adds r0, r1 - ldr r1, _08017798 @ =gUnknown_81D8EA4 + ldr r1, _08017798 @ =BattleScript_SelectingMoveWithNoPP str r1, [r0] adds r0, r6, 0x1 lsls r0, 24 @@ -1227,11 +1227,11 @@ _0801777C: .4byte gBattleMons _08017780: .4byte 0x0000ffff _08017784: .4byte gCurrentMove _08017788: .4byte gLastUsedItem -_0801778C: .4byte gUnknown_2023D80 -_08017790: .4byte gUnknown_81D963D +_0801778C: .4byte gSelectionBattleScripts +_08017790: .4byte BattleScript_SelectingNotAllowedMoveChoiceItem _08017794: .4byte gBattleBufferB -_08017798: .4byte gUnknown_81D8EA4 - thumb_func_end sub_8017594 +_08017798: .4byte BattleScript_SelectingMoveWithNoPP + thumb_func_end TrySetCantSelectMoveBattleScript thumb_func_start CheckMoveLimitations CheckMoveLimitations: @ 801779C @@ -1491,8 +1491,8 @@ _08017990: .4byte gBattleMoves _08017994: .4byte 0x0000ffff thumb_func_end CheckMoveLimitations - thumb_func_start sub_8017998 -sub_8017998: @ 8017998 + thumb_func_start AreAllMovesUnusable +AreAllMovesUnusable: @ 8017998 push {r4-r6,lr} ldr r5, _08017A04 @ =gActiveBattler ldrb r0, [r5] @@ -1503,7 +1503,7 @@ sub_8017998: @ 8017998 lsrs r6, r0, 24 cmp r6, 0xF bne _08017A40 - ldr r0, _08017A08 @ =gUnknown_2023E8C + ldr r0, _08017A08 @ =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 @@ -1511,7 +1511,7 @@ sub_8017998: @ 8017998 movs r2, 0x4 orrs r0, r2 strb r0, [r1] - ldr r1, _08017A0C @ =gUnknown_2023D80 + ldr r1, _08017A0C @ =gSelectionBattleScripts ldrb r0, [r5] lsls r0, 2 adds r0, r1 @@ -1544,8 +1544,8 @@ sub_8017998: @ 8017998 b _08017A50 .align 2, 0 _08017A04: .4byte gActiveBattler -_08017A08: .4byte gUnknown_2023E8C -_08017A0C: .4byte gUnknown_2023D80 +_08017A08: .4byte gProtectStructs +_08017A0C: .4byte gSelectionBattleScripts _08017A10: .4byte gUnknown_81D8EA0 _08017A14: .4byte gBattleTypeFlags _08017A18: .4byte gBattleBufferB @@ -1566,7 +1566,7 @@ _08017A1C: .align 2, 0 _08017A3C: .4byte gBattleBufferB _08017A40: - ldr r0, _08017A60 @ =gUnknown_2023E8C + ldr r0, _08017A60 @ =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 @@ -1585,8 +1585,8 @@ _08017A5A: pop {r1} bx r1 .align 2, 0 -_08017A60: .4byte gUnknown_2023E8C - thumb_func_end sub_8017998 +_08017A60: .4byte gProtectStructs + thumb_func_end AreAllMovesUnusable thumb_func_start GetImprisonedMovesCount GetImprisonedMovesCount: @ 8017A64 @@ -1672,8 +1672,8 @@ _08017AFC: .4byte gUnknown_2023BF0 _08017B00: .4byte gStatuses3 thumb_func_end GetImprisonedMovesCount - thumb_func_start UpdateTurnCounters -UpdateTurnCounters: @ 8017B04 + thumb_func_start DoFieldEndTurnEffects +DoFieldEndTurnEffects: @ 8017B04 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1789,7 +1789,7 @@ _08017BF0: ldrb r2, [r1] cmp r5, r2 bge _08017C0A - ldr r2, _08017C14 @ =gUnknown_2023BDE + ldr r2, _08017C14 @ =gBattlerByTurnOrder _08017BFE: adds r0, r5, r2 strb r5, [r0] @@ -1802,14 +1802,14 @@ _08017C0A: b _08017C58 .align 2, 0 _08017C10: .4byte gBattlersCount -_08017C14: .4byte gUnknown_2023BDE +_08017C14: .4byte gBattlerByTurnOrder _08017C18: adds r4, r5, 0x1 adds r6, r4, 0 ldrb r1, [r1] cmp r6, r1 bge _08017C56 - ldr r7, _08017D14 @ =gUnknown_2023BDE + ldr r7, _08017D14 @ =gBattlerByTurnOrder ldr r0, _08017D18 @ =gBattlersCount mov r10, r0 lsls r1, r5, 24 @@ -1880,7 +1880,7 @@ _08017C8E: strb r0, [r6] mov r3, r8 strb r0, [r3] - ldr r0, _08017D30 @ =gSideAffecting + ldr r0, _08017D30 @ =gSideStatuses adds r3, r1, r0 ldrh r1, [r3] movs r0, 0x1 @@ -1899,7 +1899,7 @@ _08017C8E: adds r1, r2, 0 ands r0, r1 strh r0, [r3] - ldr r0, _08017D38 @ =gUnknown_81D8B32 + ldr r0, _08017D38 @ =BattleScript_SideStatusWoreOff bl BattleScriptExecute movs r0, 0xFD strb r0, [r5] @@ -1937,16 +1937,16 @@ _08017D06: bls _08017C8E b _08017F60 .align 2, 0 -_08017D14: .4byte gUnknown_2023BDE +_08017D14: .4byte gBattlerByTurnOrder _08017D18: .4byte gBattlersCount _08017D1C: .4byte gBattleStruct _08017D20: .4byte gActiveBattler _08017D24: .4byte gBattlerAttacker _08017D28: .4byte gBattleTextBuff1 _08017D2C: .4byte gSideTimers -_08017D30: .4byte gSideAffecting +_08017D30: .4byte gSideStatuses _08017D34: .4byte 0x0000fffe -_08017D38: .4byte gUnknown_81D8B32 +_08017D38: .4byte BattleScript_SideStatusWoreOff _08017D3C: mov r1, r12 ldr r0, [r1] @@ -1975,7 +1975,7 @@ _08017D56: strb r0, [r7] ldr r3, _08017DF0 @ =gActiveBattler strb r0, [r3] - ldr r0, _08017DF4 @ =gSideAffecting + ldr r0, _08017DF4 @ =gSideStatuses adds r3, r1, r0 ldrh r1, [r3] movs r0, 0x2 @@ -1994,9 +1994,9 @@ _08017D56: adds r1, r2, 0 ands r0, r1 strh r0, [r3] - ldr r0, _08017DFC @ =gUnknown_81D8B32 + ldr r0, _08017DFC @ =BattleScript_SideStatusWoreOff bl BattleScriptExecute - ldr r0, _08017E00 @ =gUnknown_2023E82 + ldr r0, _08017E00 @ =gBattleCommunication strb r4, [r0, 0x5] movs r0, 0xFD strb r0, [r5] @@ -2039,10 +2039,10 @@ _08017DE4: .4byte gBattlerAttacker _08017DE8: .4byte gBattleTextBuff1 _08017DEC: .4byte gSideTimers _08017DF0: .4byte gActiveBattler -_08017DF4: .4byte gSideAffecting +_08017DF4: .4byte gSideStatuses _08017DF8: .4byte 0x0000fffd -_08017DFC: .4byte gUnknown_81D8B32 -_08017E00: .4byte gUnknown_2023E82 +_08017DFC: .4byte BattleScript_SideStatusWoreOff +_08017E00: .4byte gBattleCommunication _08017E04: .4byte gBattleStruct _08017E08: mov r1, r12 @@ -2079,16 +2079,16 @@ _08017E20: lsls r0, 24 cmp r0, 0 bne _08017E82 - ldr r2, _08017ED0 @ =gSideAffecting + ldr r2, _08017ED0 @ =gSideStatuses adds r2, r3, r2 ldrh r0, [r2] ldr r3, _08017ED4 @ =0x0000feff adds r1, r3, 0 ands r0, r1 strh r0, [r2] - ldr r0, _08017ED8 @ =gUnknown_81D8B32 + ldr r0, _08017ED8 @ =BattleScript_SideStatusWoreOff bl BattleScriptExecute - ldr r0, _08017EDC @ =gUnknown_2023E82 + ldr r0, _08017EDC @ =gBattleCommunication strb r4, [r0, 0x5] movs r0, 0xFD strb r0, [r5] @@ -2145,10 +2145,10 @@ _08017EC0: .4byte gActiveBattler _08017EC4: .4byte gBattlerAttacker _08017EC8: .4byte gBattleTextBuff1 _08017ECC: .4byte gSideTimers -_08017ED0: .4byte gSideAffecting +_08017ED0: .4byte gSideStatuses _08017ED4: .4byte 0x0000feff -_08017ED8: .4byte gUnknown_81D8B32 -_08017EDC: .4byte gUnknown_2023E82 +_08017ED8: .4byte BattleScript_SideStatusWoreOff +_08017EDC: .4byte gBattleCommunication _08017EE0: .4byte gBattleStruct _08017EE4: mov r1, r12 @@ -2171,7 +2171,7 @@ _08017EF4: ldrb r0, [r2, 0x7] strb r0, [r5] strb r0, [r6] - ldr r0, _08017F8C @ =gSideAffecting + ldr r0, _08017F8C @ =gSideStatuses adds r3, r1, r0 ldrh r1, [r3] movs r0, 0x20 @@ -2189,7 +2189,7 @@ _08017EF4: adds r1, r2, 0 ands r0, r1 strh r0, [r3] - ldr r0, _08017F94 @ =gUnknown_81D8B43 + ldr r0, _08017F94 @ =BattleScript_SafeguardEnds bl BattleScriptExecute mov r0, r9 adds r0, 0x1 @@ -2236,9 +2236,9 @@ _08017F68: _08017F80: .4byte gActiveBattler _08017F84: .4byte gBattlerAttacker _08017F88: .4byte gSideTimers -_08017F8C: .4byte gSideAffecting +_08017F8C: .4byte gSideStatuses _08017F90: .4byte 0x0000ffdf -_08017F94: .4byte gUnknown_81D8B43 +_08017F94: .4byte BattleScript_SafeguardEnds _08017F98: .4byte gBattleStruct _08017F9C: mov r2, r12 @@ -2250,7 +2250,7 @@ _08017F9C: cmp r0, r1 bcs _0801801C ldr r4, _08018034 @ =gActiveBattler - ldr r5, _08018038 @ =gUnknown_2023BDE + ldr r5, _08018038 @ =gBattlerByTurnOrder _08017FB0: ldr r0, [r2] adds r0, 0xDB @@ -2258,7 +2258,7 @@ _08017FB0: adds r0, r5 ldrb r0, [r0] strb r0, [r4] - ldr r0, _0801803C @ =gUnknown_2023F20 + ldr r0, _0801803C @ =gWishFutureKnock adds r0, 0x20 ldrb r2, [r4] adds r1, r0, r2 @@ -2280,7 +2280,7 @@ _08017FB0: beq _08017FF8 ldr r0, _08018044 @ =gBattlerTarget strb r2, [r0] - ldr r0, _08018048 @ =gUnknown_81D8ED5 + ldr r0, _08018048 @ =BattleScript_WishComesTrue bl BattleScriptExecute mov r0, r9 adds r0, 0x1 @@ -2322,11 +2322,11 @@ _08018024: .align 2, 0 _08018030: .4byte gBattlersCount _08018034: .4byte gActiveBattler -_08018038: .4byte gUnknown_2023BDE -_0801803C: .4byte gUnknown_2023F20 +_08018038: .4byte gBattlerByTurnOrder +_0801803C: .4byte gWishFutureKnock _08018040: .4byte gBattleMons _08018044: .4byte gBattlerTarget -_08018048: .4byte gUnknown_81D8ED5 +_08018048: .4byte BattleScript_WishComesTrue _0801804C: .4byte gBattleStruct _08018050: ldr r3, _08018088 @ =gBattleWeather @@ -2341,7 +2341,7 @@ _0801805E: ands r0, r2 cmp r0, 0 bne _080180AA - ldr r1, _0801808C @ =gUnknown_2023F20 + ldr r1, _0801808C @ =gWishFutureKnock adds r1, 0x28 ldrb r0, [r1] subs r0, 0x1 @@ -2354,16 +2354,16 @@ _0801805E: ldr r1, _08018094 @ =0x0000fffd ands r0, r1 strh r0, [r3] - ldr r1, _08018098 @ =gUnknown_2023E82 + ldr r1, _08018098 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _080180C8 .align 2, 0 _08018088: .4byte gBattleWeather -_0801808C: .4byte gUnknown_2023F20 +_0801808C: .4byte gWishFutureKnock _08018090: .4byte 0x0000fffe _08018094: .4byte 0x0000fffd -_08018098: .4byte gUnknown_2023E82 +_08018098: .4byte gBattleCommunication _0801809C: movs r0, 0x2 ands r0, r2 @@ -2380,21 +2380,21 @@ _080180AA: cmp r1, 0 beq _080180C4 _080180B6: - ldr r1, _080180C0 @ =gUnknown_2023E82 + ldr r1, _080180C0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080180C8 .align 2, 0 -_080180C0: .4byte gUnknown_2023E82 +_080180C0: .4byte gBattleCommunication _080180C4: - ldr r0, _080180CC @ =gUnknown_2023E82 + ldr r0, _080180CC @ =gBattleCommunication strb r1, [r0, 0x5] _080180C8: - ldr r0, _080180D0 @ =gUnknown_81D8A64 + ldr r0, _080180D0 @ =BattleScript_RainContinuesOrEnds b _080181EE .align 2, 0 -_080180CC: .4byte gUnknown_2023E82 -_080180D0: .4byte gUnknown_81D8A64 +_080180CC: .4byte gBattleCommunication +_080180D0: .4byte BattleScript_RainContinuesOrEnds _080180D4: ldr r3, _08018108 @ =gBattleWeather ldrh r2, [r3] @@ -2408,7 +2408,7 @@ _080180E2: ands r0, r2 cmp r0, 0 bne _0801811C - ldr r1, _0801810C @ =gUnknown_2023F20 + ldr r1, _0801810C @ =gWishFutureKnock adds r1, 0x28 ldrb r0, [r1] subs r0, 0x1 @@ -2419,18 +2419,18 @@ _080180E2: ldr r0, _08018110 @ =0x0000fff7 ands r0, r2 strh r0, [r3] - ldr r1, _08018114 @ =gUnknown_2023D74 - ldr r0, _08018118 @ =gUnknown_81D8B01 + ldr r1, _08018114 @ =gBattlescriptCurrInstr + ldr r0, _08018118 @ =BattleScript_SandStormHailEnds b _08018120 .align 2, 0 _08018108: .4byte gBattleWeather -_0801810C: .4byte gUnknown_2023F20 +_0801810C: .4byte gWishFutureKnock _08018110: .4byte 0x0000fff7 -_08018114: .4byte gUnknown_2023D74 -_08018118: .4byte gUnknown_81D8B01 +_08018114: .4byte gBattlescriptCurrInstr +_08018118: .4byte BattleScript_SandStormHailEnds _0801811C: - ldr r1, _08018134 @ =gUnknown_2023D74 - ldr r0, _08018138 @ =gUnknown_81D8A7F + ldr r1, _08018134 @ =gBattlescriptCurrInstr + ldr r0, _08018138 @ =BattleScript_DamagingWeatherContinues _08018120: str r0, [r1] adds r3, r1, 0 @@ -2438,14 +2438,14 @@ _08018120: movs r2, 0 movs r0, 0xC strb r0, [r1, 0x10] - ldr r0, _08018140 @ =gUnknown_2023E82 + ldr r0, _08018140 @ =gBattleCommunication strb r2, [r0, 0x5] b _080181EC .align 2, 0 -_08018134: .4byte gUnknown_2023D74 -_08018138: .4byte gUnknown_81D8A7F +_08018134: .4byte gBattlescriptCurrInstr +_08018138: .4byte BattleScript_DamagingWeatherContinues _0801813C: .4byte gBattleScripting -_08018140: .4byte gUnknown_2023E82 +_08018140: .4byte gBattleCommunication _08018144: ldr r3, _08018174 @ =gBattleWeather ldrh r2, [r3] @@ -2457,7 +2457,7 @@ _08018144: ands r0, r2 cmp r0, 0 bne _08018188 - ldr r1, _08018178 @ =gUnknown_2023F20 + ldr r1, _08018178 @ =gWishFutureKnock adds r1, 0x28 ldrb r0, [r1] subs r0, 0x1 @@ -2468,25 +2468,25 @@ _08018144: ldr r0, _0801817C @ =0x0000ffdf ands r0, r2 strh r0, [r3] - ldr r1, _08018180 @ =gUnknown_2023D74 - ldr r0, _08018184 @ =gUnknown_81D8B18 + ldr r1, _08018180 @ =gBattlescriptCurrInstr + ldr r0, _08018184 @ =BattleScript_SunlightFaded b _0801818C .align 2, 0 _08018174: .4byte gBattleWeather -_08018178: .4byte gUnknown_2023F20 +_08018178: .4byte gWishFutureKnock _0801817C: .4byte 0x0000ffdf -_08018180: .4byte gUnknown_2023D74 -_08018184: .4byte gUnknown_81D8B18 +_08018180: .4byte gBattlescriptCurrInstr +_08018184: .4byte BattleScript_SunlightFaded _08018188: - ldr r1, _08018194 @ =gUnknown_2023D74 - ldr r0, _08018198 @ =gUnknown_81D8B0A + ldr r1, _08018194 @ =gBattlescriptCurrInstr + ldr r0, _08018198 @ =BattleScript_SunlightContinues _0801818C: str r0, [r1] adds r3, r1, 0 b _080181EC .align 2, 0 -_08018194: .4byte gUnknown_2023D74 -_08018198: .4byte gUnknown_81D8B0A +_08018194: .4byte gBattlescriptCurrInstr +_08018198: .4byte BattleScript_SunlightContinues _0801819C: ldr r3, _080181C4 @ =gBattleWeather ldrh r2, [r3] @@ -2494,7 +2494,7 @@ _0801819C: ands r0, r2 cmp r0, 0 beq _080181FC - ldr r1, _080181C8 @ =gUnknown_2023F20 + ldr r1, _080181C8 @ =gWishFutureKnock adds r1, 0x28 ldrb r0, [r1] subs r0, 0x1 @@ -2505,25 +2505,25 @@ _0801819C: ldr r0, _080181CC @ =0x0000ff7f ands r0, r2 strh r0, [r3] - ldr r1, _080181D0 @ =gUnknown_2023D74 - ldr r0, _080181D4 @ =gUnknown_81D8B01 + ldr r1, _080181D0 @ =gBattlescriptCurrInstr + ldr r0, _080181D4 @ =BattleScript_SandStormHailEnds b _080181DC .align 2, 0 _080181C4: .4byte gBattleWeather -_080181C8: .4byte gUnknown_2023F20 +_080181C8: .4byte gWishFutureKnock _080181CC: .4byte 0x0000ff7f -_080181D0: .4byte gUnknown_2023D74 -_080181D4: .4byte gUnknown_81D8B01 +_080181D0: .4byte gBattlescriptCurrInstr +_080181D4: .4byte BattleScript_SandStormHailEnds _080181D8: - ldr r1, _0801820C @ =gUnknown_2023D74 - ldr r0, _08018210 @ =gUnknown_81D8A7F + ldr r1, _0801820C @ =gBattlescriptCurrInstr + ldr r0, _08018210 @ =BattleScript_DamagingWeatherContinues _080181DC: str r0, [r1] adds r3, r1, 0 ldr r1, _08018214 @ =gBattleScripting movs r0, 0xD strb r0, [r1, 0x10] - ldr r1, _08018218 @ =gUnknown_2023E82 + ldr r1, _08018218 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _080181EC: @@ -2544,10 +2544,10 @@ _080181FC: mov r12, r2 b _0801822A .align 2, 0 -_0801820C: .4byte gUnknown_2023D74 -_08018210: .4byte gUnknown_81D8A7F +_0801820C: .4byte gBattlescriptCurrInstr +_08018210: .4byte BattleScript_DamagingWeatherContinues _08018214: .4byte gBattleScripting -_08018218: .4byte gUnknown_2023E82 +_08018218: .4byte gBattleCommunication _0801821C: .4byte gBattleStruct _08018220: mov r0, r9 @@ -2563,7 +2563,7 @@ _0801822A: _08018232: ldr r0, _08018250 @ =gBattleMainFunc ldr r1, [r0] - ldr r0, _08018254 @ =sub_8013BD4 + ldr r0, _08018254 @ =BattleTurnPassed eors r1, r0 negs r0, r1 orrs r0, r1 @@ -2577,11 +2577,11 @@ _08018232: bx r1 .align 2, 0 _08018250: .4byte gBattleMainFunc -_08018254: .4byte sub_8013BD4 - thumb_func_end UpdateTurnCounters +_08018254: .4byte BattleTurnPassed + thumb_func_end DoFieldEndTurnEffects - thumb_func_start TurnBasedEffects -TurnBasedEffects: @ 8018258 + thumb_func_start DoBattlerEndTurnEffects +DoBattlerEndTurnEffects: @ 8018258 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2590,7 +2590,7 @@ TurnBasedEffects: @ 8018258 sub sp, 0x8 movs r0, 0 mov r9, r0 - ldr r2, _0801828C @ =gUnknown_2023DD0 + ldr r2, _0801828C @ =gHitMarker ldr r0, [r2] ldr r1, _08018290 @ =0x01000020 orrs r0, r1 @@ -2608,14 +2608,14 @@ TurnBasedEffects: @ 8018258 _08018288: bl _08018C62 .align 2, 0 -_0801828C: .4byte gUnknown_2023DD0 +_0801828C: .4byte gHitMarker _08018290: .4byte 0x01000020 _08018294: .4byte gBattleStruct _08018298: .4byte gBattlersCount _0801829C: ldr r3, _080182D0 @ =gActiveBattler ldr r4, _080182D4 @ =gBattlerAttacker - ldr r1, _080182D8 @ =gUnknown_2023BDE + ldr r1, _080182D8 @ =gBattlerByTurnOrder ldr r5, [r5] ldrb r0, [r5, 0x1] adds r0, r1 @@ -2640,7 +2640,7 @@ _0801829C: .align 2, 0 _080182D0: .4byte gActiveBattler _080182D4: .4byte gBattlerAttacker -_080182D8: .4byte gUnknown_2023BDE +_080182D8: .4byte gBattlerByTurnOrder _080182DC: .4byte gAbsentBattlerFlags _080182E0: .4byte gBitTable _080182E4: @@ -2717,13 +2717,13 @@ _08018390: ldr r0, [r1] negs r0, r0 str r0, [r1] - ldr r0, _080183A8 @ =gUnknown_81D8F0C + ldr r0, _080183A8 @ =BattleScript_IngrainTurnHeal bl _08018C04 .align 2, 0 _0801839C: .4byte gStatuses3 _080183A0: .4byte gBattleMons _080183A4: .4byte gBattleMoveDamage -_080183A8: .4byte gUnknown_81D8F0C +_080183A8: .4byte BattleScript_IngrainTurnHeal _080183AC: ldrb r1, [r6] movs r0, 0 @@ -2742,7 +2742,7 @@ _080183CA: ldrb r1, [r6] movs r0, 0x1 movs r2, 0 - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 cmp r0, 0 bne _080183DE @@ -2753,7 +2753,7 @@ _080183E2: ldrb r1, [r6] movs r0, 0x1 movs r2, 0x1 - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 cmp r0, 0 bne _080183F6 @@ -2810,7 +2810,7 @@ _08018452: strb r5, [r1, 0x10] ldrb r0, [r4] strb r0, [r1, 0x11] - ldr r0, _08018474 @ =gUnknown_81D8B4D + ldr r0, _08018474 @ =BattleScript_LeechSeedTurnDrain b _08018C04 .align 2, 0 _08018460: .4byte gStatuses3 @@ -2818,7 +2818,7 @@ _08018464: .4byte gBattleMons _08018468: .4byte gBattlerTarget _0801846C: .4byte gBattleMoveDamage _08018470: .4byte gBattleScripting -_08018474: .4byte gUnknown_81D8B4D +_08018474: .4byte BattleScript_LeechSeedTurnDrain _08018478: ldr r2, _080184B4 @ =gBattleMons ldrb r1, [r6] @@ -2850,12 +2850,12 @@ _0801849E: movs r0, 0x1 str r0, [r2] _080184AE: - ldr r0, _080184BC @ =gUnknown_81D9053 + ldr r0, _080184BC @ =BattleScript_PoisonTurnDmg b _08018C04 .align 2, 0 _080184B4: .4byte gBattleMons _080184B8: .4byte gBattleMoveDamage -_080184BC: .4byte gUnknown_81D9053 +_080184BC: .4byte BattleScript_PoisonTurnDmg _080184C0: ldr r4, _08018534 @ =gBattleMons ldrb r0, [r6] @@ -2916,12 +2916,12 @@ _08018518: ldr r1, [r5] muls r0, r1 str r0, [r5] - ldr r0, _0801853C @ =gUnknown_81D9053 + ldr r0, _0801853C @ =BattleScript_PoisonTurnDmg b _08018C04 .align 2, 0 _08018534: .4byte gBattleMons _08018538: .4byte gBattleMoveDamage -_0801853C: .4byte gUnknown_81D9053 +_0801853C: .4byte BattleScript_PoisonTurnDmg _08018540: ldr r2, _0801857C @ =gBattleMons ldrb r1, [r6] @@ -2953,12 +2953,12 @@ _08018566: movs r0, 0x1 str r0, [r2] _08018576: - ldr r0, _08018584 @ =gUnknown_81D9075 + ldr r0, _08018584 @ =BattleScript_BurnTurnDmg b _08018C04 .align 2, 0 _0801857C: .4byte gBattleMons _08018580: .4byte gBattleMoveDamage -_08018584: .4byte gUnknown_81D9075 +_08018584: .4byte BattleScript_BurnTurnDmg _08018588: ldr r4, _080185D4 @ =gBattleMons ldrb r1, [r6] @@ -2998,12 +2998,12 @@ _080185AE: movs r0, 0x1 str r0, [r1] _080185CE: - ldr r0, _080185DC @ =gUnknown_81D9155 + ldr r0, _080185DC @ =BattleScript_NightmareTurnDmg b _08018C04 .align 2, 0 _080185D4: .4byte gBattleMons _080185D8: .4byte gBattleMoveDamage -_080185DC: .4byte gUnknown_81D9155 +_080185DC: .4byte BattleScript_NightmareTurnDmg _080185E0: ldr r0, _080185E8 @ =0xf7ffffff ands r2, r0 @@ -3043,12 +3043,12 @@ _08018614: movs r0, 0x1 str r0, [r2] _08018624: - ldr r0, _08018630 @ =gUnknown_81D9166 + ldr r0, _08018630 @ =BattleScript_CurseTurnDmg b _08018C04 .align 2, 0 _08018628: .4byte gBattleMons _0801862C: .4byte gBattleMoveDamage -_08018630: .4byte gUnknown_81D9166 +_08018630: .4byte BattleScript_CurseTurnDmg _08018634: ldr r3, _080186D4 @ =gBattleMons mov r8, r3 @@ -3116,8 +3116,8 @@ _08018664: strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r1, _080186E8 @ =gUnknown_2023D74 - ldr r0, _080186EC @ =gUnknown_81D9124 + ldr r1, _080186E8 @ =gBattlescriptCurrInstr + ldr r0, _080186EC @ =BattleScript_WrapTurnDmg str r0, [r1] ldr r2, _080186F0 @ =gBattleMoveDamage ldrb r0, [r6] @@ -3137,8 +3137,8 @@ _080186D8: .4byte 0xffffe000 _080186DC: .4byte gBattleScripting _080186E0: .4byte gBattleStruct _080186E4: .4byte gBattleTextBuff1 -_080186E8: .4byte gUnknown_2023D74 -_080186EC: .4byte gUnknown_81D9124 +_080186E8: .4byte gBattlescriptCurrInstr +_080186EC: .4byte BattleScript_WrapTurnDmg _080186F0: .4byte gBattleMoveDamage _080186F4: ldr r2, _08018724 @ =gBattleTextBuff1 @@ -3160,8 +3160,8 @@ _080186F4: strb r0, [r2, 0x3] movs r0, 0xFF strb r0, [r2, 0x4] - ldr r1, _0801872C @ =gUnknown_2023D74 - ldr r0, _08018730 @ =gUnknown_81D9136 + ldr r1, _0801872C @ =gBattlescriptCurrInstr + ldr r0, _08018730 @ =BattleScript_WrapEnds str r0, [r1] _08018720: ldr r0, [r1] @@ -3169,8 +3169,8 @@ _08018720: .align 2, 0 _08018724: .4byte gBattleTextBuff1 _08018728: .4byte gBattleStruct -_0801872C: .4byte gUnknown_2023D74 -_08018730: .4byte gUnknown_81D9136 +_0801872C: .4byte gBattlescriptCurrInstr +_08018730: .4byte BattleScript_WrapEnds _08018734: movs r0, 0x8 negs r0, r0 @@ -3186,10 +3186,10 @@ _08018734: ldr r1, _08018784 @ =0xf7ffffff ands r0, r1 str r0, [r2] - ldr r1, _08018788 @ =gUnknown_2023E82 + ldr r1, _08018788 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] - ldr r0, _0801878C @ =gUnknown_81D904A + ldr r0, _0801878C @ =BattleScript_MonWokeUpInUproar bl BattleScriptExecute ldr r4, _08018790 @ =gActiveBattler ldrb r0, [r6] @@ -3206,12 +3206,12 @@ _08018734: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _080187FC .align 2, 0 _08018784: .4byte 0xf7ffffff -_08018788: .4byte gUnknown_2023E82 -_0801878C: .4byte gUnknown_81D904A +_08018788: .4byte gBattleCommunication +_0801878C: .4byte BattleScript_MonWokeUpInUproar _08018790: .4byte gActiveBattler _08018794: ldr r2, _08018810 @ =gBattleMons @@ -3305,14 +3305,14 @@ _0801881C: beq _08018860 ldrb r0, [r5] bl CancelMultiTurnMoves - ldr r1, _0801885C @ =gUnknown_2023E82 + ldr r1, _0801885C @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08018894 .align 2, 0 _08018854: .4byte gActiveBattler _08018858: .4byte gBattleMons -_0801885C: .4byte gUnknown_2023E82 +_0801885C: .4byte gBattleCommunication _08018860: ldrb r3, [r5] adds r0, r3, 0 @@ -3323,7 +3323,7 @@ _08018860: ands r0, r1 cmp r0, 0 beq _08018888 - ldr r0, _08018884 @ =gUnknown_2023E82 + ldr r0, _08018884 @ =gBattleCommunication strb r4, [r0, 0x5] ldr r0, [r2] movs r1, 0x80 @@ -3332,15 +3332,15 @@ _08018860: str r0, [r2] b _08018894 .align 2, 0 -_08018884: .4byte gUnknown_2023E82 +_08018884: .4byte gBattleCommunication _08018888: - ldr r1, _080188A8 @ =gUnknown_2023E82 + ldr r1, _080188A8 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] adds r0, r3, 0 bl CancelMultiTurnMoves _08018894: - ldr r0, _080188AC @ =gUnknown_81D90BC + ldr r0, _080188AC @ =BattleScript_PrintUproarOverTurns bl BattleScriptExecute movs r5, 0x1 mov r9, r5 @@ -3352,8 +3352,8 @@ _0801889E: _080188A6: b _08018C12 .align 2, 0 -_080188A8: .4byte gUnknown_2023E82 -_080188AC: .4byte gUnknown_81D90BC +_080188A8: .4byte gBattleCommunication +_080188AC: .4byte BattleScript_PrintUproarOverTurns _080188B0: ldr r1, _080188E8 @ =gBattleMons ldrb r0, [r6] @@ -3416,12 +3416,12 @@ _0801890E: beq _08018926 b _08018C12 _08018926: - ldr r1, _08018950 @ =gUnknown_2023E82 + ldr r1, _08018950 @ =gBattleCommunication movs r0, 0x47 strb r0, [r1, 0x3] movs r0, 0x1 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect ldrb r0, [r6] muls r0, r7 adds r0, r5 @@ -3431,13 +3431,13 @@ _08018926: bne _08018944 b _08018C08 _08018944: - ldr r0, _08018954 @ =gUnknown_81D90C5 + ldr r0, _08018954 @ =BattleScript_ThrashConfuses bl BattleScriptExecute b _08018C08 .align 2, 0 _0801894C: .4byte 0xffffefff -_08018950: .4byte gUnknown_2023E82 -_08018954: .4byte gUnknown_81D90C5 +_08018950: .4byte gBattleCommunication +_08018954: .4byte BattleScript_ThrashConfuses _08018958: ldr r0, _080189D8 @ =gDisableStructs ldrb r3, [r6] @@ -3536,10 +3536,10 @@ _08018A08: lsls r0, 2 adds r0, r7 strh r2, [r0, 0x4] - ldr r0, _08018A18 @ =gUnknown_81D8C5E + ldr r0, _08018A18 @ =BattleScript_DisabledNoMore b _08018C04 .align 2, 0 -_08018A18: .4byte gUnknown_81D8C5E +_08018A18: .4byte BattleScript_DisabledNoMore _08018A1C: ldr r3, _08018A68 @ =gDisableStructs ldrb r1, [r6] @@ -3628,10 +3628,10 @@ _08018AA6: adds r0, r4, 0 ands r0, r2 strb r0, [r1, 0xE] - ldr r0, _08018ACC @ =gUnknown_81D8C65 + ldr r0, _08018ACC @ =BattleScript_EncoredNoMore b _08018C04 .align 2, 0 -_08018ACC: .4byte gUnknown_81D8C65 +_08018ACC: .4byte BattleScript_EncoredNoMore _08018AD0: ldr r0, _08018AEC @ =gStatuses3 ldrb r1, [r6] @@ -3779,11 +3779,11 @@ _08018B6C: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r6] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec ldr r1, _08018C2C @ =gEffectBattler ldrb r0, [r6] strb r0, [r1] - ldr r0, _08018C30 @ =gUnknown_81D91C7 + ldr r0, _08018C30 @ =BattleScript_YawnMakesAsleep _08018C04: bl BattleScriptExecute _08018C08: @@ -3805,7 +3805,7 @@ _08018C20: .4byte gStatuses3 _08018C24: .4byte 0xfffff800 _08018C28: .4byte gBattleMons _08018C2C: .4byte gEffectBattler -_08018C30: .4byte gUnknown_81D91C7 +_08018C30: .4byte BattleScript_YawnMakesAsleep _08018C34: .4byte gBattleStruct _08018C38: ldr r1, [r7] @@ -3838,7 +3838,7 @@ _08018C62: bhi _08018C6C bl _0801829C _08018C6C: - ldr r0, _08018C90 @ =gUnknown_2023DD0 + ldr r0, _08018C90 @ =gHitMarker ldr r1, [r0] ldr r2, _08018C94 @ =0xfeffffdf ands r1, r2 @@ -3856,18 +3856,18 @@ _08018C78: .align 2, 0 _08018C88: .4byte gBattleStruct _08018C8C: .4byte gBattlersCount -_08018C90: .4byte gUnknown_2023DD0 +_08018C90: .4byte gHitMarker _08018C94: .4byte 0xfeffffdf - thumb_func_end TurnBasedEffects + thumb_func_end DoBattlerEndTurnEffects - thumb_func_start sub_8018C98 -sub_8018C98: @ 8018C98 + thumb_func_start HandleWishPerishSongOnTurnEnd +HandleWishPerishSongOnTurnEnd: @ 8018C98 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r2, _08018CC8 @ =gUnknown_2023DD0 + ldr r2, _08018CC8 @ =gHitMarker ldr r0, [r2] ldr r1, _08018CCC @ =0x01000020 orrs r0, r1 @@ -3887,7 +3887,7 @@ sub_8018C98: @ 8018C98 _08018CC4: b _08018F68 .align 2, 0 -_08018CC8: .4byte gUnknown_2023DD0 +_08018CC8: .4byte gHitMarker _08018CCC: .4byte 0x01000020 _08018CD0: .4byte gBattleStruct _08018CD4: @@ -3903,7 +3903,7 @@ _08018CD4: _08018CE6: ldr r4, _08018D28 @ =gActiveBattler ldr r5, _08018D2C @ =gBattleTextBuff1 - ldr r6, _08018D30 @ =gUnknown_2023F20 + ldr r6, _08018D30 @ =gWishFutureKnock movs r0, 0x8 adds r0, r6 mov r10, r0 @@ -3936,7 +3936,7 @@ _08018D20: .4byte 0x00000181 _08018D24: .4byte gBattlersCount _08018D28: .4byte gActiveBattler _08018D2C: .4byte gBattleTextBuff1 -_08018D30: .4byte gUnknown_2023F20 +_08018D30: .4byte gWishFutureKnock _08018D34: .4byte gBattlerTarget _08018D38: .4byte gAbsentBattlerFlags _08018D3C: .4byte gBitTable @@ -3944,7 +3944,7 @@ _08018D40: ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] - ldr r1, _08018D80 @ =gUnknown_2023F20 + ldr r1, _08018D80 @ =gWishFutureKnock ldrb r0, [r4] adds r1, r0, r1 ldrb r0, [r1] @@ -3969,15 +3969,15 @@ _08018D40: ldrh r0, [r0] cmp r0, 0xF8 bne _08018D8C - ldr r0, _08018D88 @ =gUnknown_2023E82 + ldr r0, _08018D88 @ =gBattleCommunication strb r3, [r0, 0x5] b _08018D92 .align 2, 0 -_08018D80: .4byte gUnknown_2023F20 +_08018D80: .4byte gWishFutureKnock _08018D84: .4byte gBattleMons -_08018D88: .4byte gUnknown_2023E82 +_08018D88: .4byte gBattleCommunication _08018D8C: - ldr r1, _08018DEC @ =gUnknown_2023E82 + ldr r1, _08018DEC @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _08018D92: @@ -4013,7 +4013,7 @@ _08018D92: add r0, r10 ldr r0, [r0] str r0, [r1] - ldr r2, _08018DF8 @ =gUnknown_2023ECC + ldr r2, _08018DF8 @ =gSpecialStatuses mov r3, r9 ldrb r1, [r3] lsls r0, r1, 2 @@ -4023,15 +4023,15 @@ _08018D92: adds r0, r2 ldr r1, _08018DFC @ =0x0000ffff str r1, [r0] - ldr r0, _08018E00 @ =gUnknown_81D8E12 + ldr r0, _08018E00 @ =BattleScript_MonTookFutureAttack b _08018F44 .align 2, 0 -_08018DEC: .4byte gUnknown_2023E82 +_08018DEC: .4byte gBattleCommunication _08018DF0: .4byte gBattlerAttacker _08018DF4: .4byte gBattleMoveDamage -_08018DF8: .4byte gUnknown_2023ECC +_08018DF8: .4byte gSpecialStatuses _08018DFC: .4byte 0x0000ffff -_08018E00: .4byte gUnknown_81D8E12 +_08018E00: .4byte BattleScript_MonTookFutureAttack _08018E04: ldr r0, [r7] ldr r2, _08018E7C @ =0x00000181 @@ -4074,7 +4074,7 @@ _08018E42: ldr r0, _08018E90 @ =gBattlerAttacker mov r9, r0 _08018E4E: - ldr r1, _08018E94 @ =gUnknown_2023BDE + ldr r1, _08018E94 @ =gBattlerByTurnOrder ldr r0, [r3] adds r3, r0, r2 ldrb r0, [r3] @@ -4104,7 +4104,7 @@ _08018E84: .4byte gActiveBattler _08018E88: .4byte gBattleTextBuff1 _08018E8C: .4byte gDisableStructs _08018E90: .4byte gBattlerAttacker -_08018E94: .4byte gUnknown_2023BDE +_08018E94: .4byte gBattlerByTurnOrder _08018E98: .4byte gAbsentBattlerFlags _08018E9C: .4byte gBitTable _08018EA0: @@ -4162,15 +4162,15 @@ _08018EA0: adds r0, r2 ldrh r0, [r0, 0x28] str r0, [r3] - ldr r1, _08018F20 @ =gUnknown_2023D74 - ldr r0, _08018F24 @ =gUnknown_81D8D33 + ldr r1, _08018F20 @ =gBattlescriptCurrInstr + ldr r0, _08018F24 @ =BattleScript_PerishSongTakesLife b _08018F40 .align 2, 0 _08018F14: .4byte gStatuses3 _08018F18: .4byte gBattleMoveDamage _08018F1C: .4byte gBattleMons -_08018F20: .4byte gUnknown_2023D74 -_08018F24: .4byte gUnknown_81D8D33 +_08018F20: .4byte gBattlescriptCurrInstr +_08018F24: .4byte BattleScript_PerishSongTakesLife _08018F28: lsrs r1, 28 subs r1, 0x1 @@ -4182,8 +4182,8 @@ _08018F28: ands r0, r3 orrs r0, r1 strb r0, [r4, 0xF] - ldr r1, _08018F4C @ =gUnknown_2023D74 - ldr r0, _08018F50 @ =gUnknown_81D8D4E + ldr r1, _08018F4C @ =gBattlescriptCurrInstr + ldr r0, _08018F50 @ =BattleScript_PerishSongCountGoesDown _08018F40: str r0, [r1] ldr r0, [r1] @@ -4192,8 +4192,8 @@ _08018F44: movs r0, 0x1 b _08018F74 .align 2, 0 -_08018F4C: .4byte gUnknown_2023D74 -_08018F50: .4byte gUnknown_81D8D4E +_08018F4C: .4byte gBattlescriptCurrInstr +_08018F50: .4byte BattleScript_PerishSongCountGoesDown _08018F54: adds r3, r7, 0 ldr r0, [r3] @@ -4206,7 +4206,7 @@ _08018F54: bcs _08018F68 b _08018E4E _08018F68: - ldr r2, _08018F88 @ =gUnknown_2023DD0 + ldr r2, _08018F88 @ =gHitMarker ldr r0, [r2] ldr r1, _08018F8C @ =0xfeffffdf ands r0, r1 @@ -4222,9 +4222,9 @@ _08018F74: bx r1 .align 2, 0 _08018F84: .4byte 0x00000181 -_08018F88: .4byte gUnknown_2023DD0 +_08018F88: .4byte gHitMarker _08018F8C: .4byte 0xfeffffdf - thumb_func_end sub_8018C98 + thumb_func_end HandleWishPerishSongOnTurnEnd thumb_func_start HandleFaintedMonActions HandleFaintedMonActions: @ 8018F90 @@ -4242,16 +4242,16 @@ HandleFaintedMonActions: @ 8018F90 .align 2, 0 _08018FA8: .4byte gBattleTypeFlags _08018FAC: - ldr r0, _08018FBC @ =gUnknown_81D8694 + ldr r0, _08018FBC @ =BattleScript_GiveExp bl BattleScriptExecute ldr r0, [r5] adds r0, 0x4D movs r1, 0x2 b _08018FCC .align 2, 0 -_08018FBC: .4byte gUnknown_81D8694 +_08018FBC: .4byte BattleScript_GiveExp _08018FC0: - ldr r0, _08018FD4 @ =gUnknown_81D869D + ldr r0, _08018FD4 @ =BattleScript_HandleFaintedMon bl BattleScriptExecute ldr r0, [r5] adds r0, 0x4D @@ -4262,7 +4262,7 @@ _08018FCE: movs r0, 0x1 b _08019274 .align 2, 0 -_08018FD4: .4byte gUnknown_81D869D +_08018FD4: .4byte BattleScript_HandleFaintedMon _08018FD8: ldr r0, _08018FF4 @ =gBattleStruct mov r8, r0 @@ -4323,7 +4323,7 @@ _0801903C: lsrs r0, 24 movs r1, 0x6 movs r2, 0x6 - bl sub_8019C10 + bl HasNoMonsToSwitch lsls r0, 24 cmp r0, 0 bne _08019064 @@ -4339,7 +4339,7 @@ _08019064: _0801906E: ldr r0, _080190F4 @ =gBattleStruct mov r8, r0 - ldr r1, _080190F8 @ =gUnknown_2023D6D + ldr r1, _080190F8 @ =gBattlerFainted mov r12, r1 ldr r2, _080190FC @ =gBattlerTarget mov r5, r8 @@ -4405,12 +4405,12 @@ _080190E8: .4byte gBattlersCount _080190EC: .4byte gAbsentBattlerFlags _080190F0: .4byte gBitTable _080190F4: .4byte gBattleStruct -_080190F8: .4byte gUnknown_2023D6D +_080190F8: .4byte gBattlerFainted _080190FC: .4byte gBattlerTarget _08019100: .4byte gBattleMons _08019104: .4byte gBattlerPartyIndexes _08019108: - ldr r0, _08019134 @ =gUnknown_2023D6D + ldr r0, _08019134 @ =gBattlerFainted ldrb r0, [r0] bl sub_8017434 ldr r2, _08019138 @ =gBattleStruct @@ -4431,7 +4431,7 @@ _08019108: strb r1, [r0] b _08019262 .align 2, 0 -_08019134: .4byte gUnknown_2023D6D +_08019134: .4byte gBattlerFainted _08019138: .4byte gBattleStruct _0801913C: .4byte gBattlersCount _08019140: @@ -4452,7 +4452,7 @@ _0801914A: adds r0, 0x1 strb r0, [r1] _0801915E: - ldr r0, _080191AC @ =gUnknown_2023D6D + ldr r0, _080191AC @ =gBattlerFainted mov r12, r0 ldr r7, _080191B0 @ =gBattlerTarget ldr r5, _080191B4 @ =gBattleStruct @@ -4493,7 +4493,7 @@ _08019198: bne _0801916A b _080191E0 .align 2, 0 -_080191AC: .4byte gUnknown_2023D6D +_080191AC: .4byte gBattlerFainted _080191B0: .4byte gBattlerTarget _080191B4: .4byte gBattleStruct _080191B8: .4byte gBattleMons @@ -4557,7 +4557,7 @@ _0801922C: movs r0, 0x1 movs r1, 0 movs r2, 0x1 - bl sub_801BC68 + bl ItemBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -4616,7 +4616,7 @@ TryClearRageStatuses: @ 8019284 ldr r4, _080192C8 @ =gUnknown_2023DC4 movs r6, 0x80 lsls r6, 16 - ldr r2, _080192CC @ =gUnknown_2023C34 + ldr r2, _080192CC @ =gChosenMoveByBattler _0801929A: ldr r1, [r2] adds r0, r1, 0 @@ -4643,12 +4643,12 @@ _080192BC: .align 2, 0 _080192C4: .4byte gBattlersCount _080192C8: .4byte gUnknown_2023DC4 -_080192CC: .4byte gUnknown_2023C34 +_080192CC: .4byte gChosenMoveByBattler _080192D0: .4byte 0xff7fffff thumb_func_end TryClearRageStatuses - thumb_func_start sub_80192D4 -sub_80192D4: @ 80192D4 + thumb_func_start AtkCanceller_UnableToUseMove +AtkCanceller_UnableToUseMove: @ 80192D4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4776,11 +4776,11 @@ _080193C4: ands r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r1, _08019418 @ =gUnknown_2023E82 + ldr r1, _08019418 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] - ldr r1, _0801941C @ =gUnknown_2023D74 - ldr r0, _08019420 @ =gUnknown_81D9036 + ldr r1, _0801941C @ =gBattlescriptCurrInstr + ldr r0, _08019420 @ =BattleScript_MoveUsedWokeUp str r0, [r1] movs r4, 0x2 mov r9, r4 @@ -4789,9 +4789,9 @@ _080193C4: _0801940C: .4byte gBattleMons _08019410: .4byte gBattlerAttacker _08019414: .4byte 0xf7ffffff -_08019418: .4byte gUnknown_2023E82 -_0801941C: .4byte gUnknown_2023D74 -_08019420: .4byte gUnknown_81D9036 +_08019418: .4byte gBattleCommunication +_0801941C: .4byte gBattlescriptCurrInstr +_08019420: .4byte BattleScript_MoveUsedWokeUp _08019424: ldrb r0, [r4] adds r1, r0, 0 @@ -4843,10 +4843,10 @@ _08019478: bne _0801947E b _08019946 _0801947E: - ldr r1, _080194A4 @ =gUnknown_2023D74 - ldr r0, _080194A8 @ =gUnknown_81D9029 + ldr r1, _080194A4 @ =gBattlescriptCurrInstr + ldr r0, _080194A8 @ =BattleScript_MoveUsedIsAsleep str r0, [r1] - ldr r2, _080194AC @ =gUnknown_2023DD0 + ldr r2, _080194AC @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -4859,9 +4859,9 @@ _0801947E: _08019498: .4byte gBattleMons _0801949C: .4byte gBattlerAttacker _080194A0: .4byte gCurrentMove -_080194A4: .4byte gUnknown_2023D74 -_080194A8: .4byte gUnknown_81D9029 -_080194AC: .4byte gUnknown_2023DD0 +_080194A4: .4byte gBattlescriptCurrInstr +_080194A8: .4byte BattleScript_MoveUsedIsAsleep +_080194AC: .4byte gHitMarker _080194B0: adds r2, 0x50 adds r2, r1, r2 @@ -4870,19 +4870,19 @@ _080194B0: ands r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r0, _080194D4 @ =gUnknown_2023E82 + ldr r0, _080194D4 @ =gBattleCommunication strb r4, [r0, 0x5] - ldr r1, _080194D8 @ =gUnknown_2023D74 - ldr r0, _080194DC @ =gUnknown_81D9036 + ldr r1, _080194D8 @ =gBattlescriptCurrInstr + ldr r0, _080194DC @ =BattleScript_MoveUsedWokeUp str r0, [r1] movs r1, 0x2 mov r9, r1 b _08019946 .align 2, 0 _080194D0: .4byte 0xf7ffffff -_080194D4: .4byte gUnknown_2023E82 -_080194D8: .4byte gUnknown_2023D74 -_080194DC: .4byte gUnknown_81D9036 +_080194D4: .4byte gBattleCommunication +_080194D8: .4byte gBattlescriptCurrInstr +_080194DC: .4byte BattleScript_MoveUsedWokeUp _080194E0: ldr r1, _0801953C @ =gBattleMons ldr r7, _08019540 @ =gBattlerAttacker @@ -4918,10 +4918,10 @@ _080194E0: bne _08019526 b _08019946 _08019526: - ldr r1, _0801954C @ =gUnknown_2023D74 - ldr r0, _08019550 @ =gUnknown_81D9080 + ldr r1, _0801954C @ =gBattlescriptCurrInstr + ldr r0, _08019550 @ =BattleScript_MoveUsedIsFrozen str r0, [r1] - ldr r2, _08019554 @ =gUnknown_2023DD0 + ldr r2, _08019554 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 2 @@ -4933,9 +4933,9 @@ _0801953C: .4byte gBattleMons _08019540: .4byte gBattlerAttacker _08019544: .4byte gBattleMoves _08019548: .4byte gCurrentMove -_0801954C: .4byte gUnknown_2023D74 -_08019550: .4byte gUnknown_81D9080 -_08019554: .4byte gUnknown_2023DD0 +_0801954C: .4byte gBattlescriptCurrInstr +_08019550: .4byte BattleScript_MoveUsedIsFrozen +_08019554: .4byte gHitMarker _08019558: ldrb r0, [r7] adds r2, r0, 0 @@ -4947,10 +4947,10 @@ _08019558: ands r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r1, _08019588 @ =gUnknown_2023D74 - ldr r0, _0801958C @ =gUnknown_81D908D + ldr r1, _08019588 @ =gBattlescriptCurrInstr + ldr r0, _0801958C @ =BattleScript_MoveUsedUnfroze str r0, [r1] - ldr r0, _08019590 @ =gUnknown_2023E82 + ldr r0, _08019590 @ =gBattleCommunication strb r4, [r0, 0x5] _08019578: movs r2, 0x2 @@ -4962,9 +4962,9 @@ _08019580: ldr r1, [r7] b _08019B90 .align 2, 0 -_08019588: .4byte gUnknown_2023D74 -_0801958C: .4byte gUnknown_81D908D -_08019590: .4byte gUnknown_2023E82 +_08019588: .4byte gBattlescriptCurrInstr +_0801958C: .4byte BattleScript_MoveUsedUnfroze +_08019590: .4byte gBattleCommunication _08019594: .4byte gBattleStruct _08019598: ldr r1, _080195EC @ =gBattleMons @@ -4992,17 +4992,17 @@ _080195AE: _080195C2: adds r0, r2, 0 bl CancelMultiTurnMoves - ldr r2, _080195F8 @ =gUnknown_2023DD0 + ldr r2, _080195F8 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 orrs r0, r1 str r0, [r2] - ldr r1, _080195FC @ =gUnknown_2023E82 + ldr r1, _080195FC @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] - ldr r1, _08019600 @ =gUnknown_2023D74 - ldr r0, _08019604 @ =gUnknown_81D94F2 + ldr r1, _08019600 @ =gBattlescriptCurrInstr + ldr r0, _08019604 @ =BattleScript_MoveUsedLoafingAround str r0, [r1] ldr r2, _08019608 @ =gMoveResultFlags ldrb r0, [r2] @@ -5014,10 +5014,10 @@ _080195C2: _080195EC: .4byte gBattleMons _080195F0: .4byte gBattlerAttacker _080195F4: .4byte gDisableStructs -_080195F8: .4byte gUnknown_2023DD0 -_080195FC: .4byte gUnknown_2023E82 -_08019600: .4byte gUnknown_2023D74 -_08019604: .4byte gUnknown_81D94F2 +_080195F8: .4byte gHitMarker +_080195FC: .4byte gBattleCommunication +_08019600: .4byte gBattlescriptCurrInstr +_08019604: .4byte BattleScript_MoveUsedLoafingAround _08019608: .4byte gMoveResultFlags _0801960C: ldr r1, _0801965C @ =gBattleMons @@ -5048,10 +5048,10 @@ _08019628: strb r1, [r0, 0x19] ldrb r0, [r3] bl CancelMultiTurnMoves - ldr r1, _0801966C @ =gUnknown_2023D74 - ldr r0, _08019670 @ =gUnknown_81D7342 + ldr r1, _0801966C @ =gBattlescriptCurrInstr + ldr r0, _08019670 @ =BattleScript_MoveUsedMustRecharge str r0, [r1] - ldr r2, _08019674 @ =gUnknown_2023DD0 + ldr r2, _08019674 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -5065,9 +5065,9 @@ _0801965C: .4byte gBattleMons _08019660: .4byte gBattlerAttacker _08019664: .4byte 0xffbfffff _08019668: .4byte gDisableStructs -_0801966C: .4byte gUnknown_2023D74 -_08019670: .4byte gUnknown_81D7342 -_08019674: .4byte gUnknown_2023DD0 +_0801966C: .4byte gBattlescriptCurrInstr +_08019670: .4byte BattleScript_MoveUsedMustRecharge +_08019674: .4byte gHitMarker _08019678: ldr r1, _080196C8 @ =gBattleMons ldr r3, _080196CC @ =gBattlerAttacker @@ -5087,7 +5087,7 @@ _08019692: negs r0, r0 ands r1, r0 str r1, [r2] - ldr r0, _080196D0 @ =gUnknown_2023E8C + ldr r0, _080196D0 @ =gProtectStructs ldrb r2, [r3] lsls r2, 4 adds r2, r0 @@ -5097,10 +5097,10 @@ _08019692: strb r0, [r2, 0x2] ldrb r0, [r3] bl CancelMultiTurnMoves - ldr r1, _080196D4 @ =gUnknown_2023D74 - ldr r0, _080196D8 @ =gUnknown_81D90B1 + ldr r1, _080196D4 @ =gBattlescriptCurrInstr + ldr r0, _080196D8 @ =BattleScript_MoveUsedFlinched str r0, [r1] - ldr r2, _080196DC @ =gUnknown_2023DD0 + ldr r2, _080196DC @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -5112,10 +5112,10 @@ _08019692: .align 2, 0 _080196C8: .4byte gBattleMons _080196CC: .4byte gBattlerAttacker -_080196D0: .4byte gUnknown_2023E8C -_080196D4: .4byte gUnknown_2023D74 -_080196D8: .4byte gUnknown_81D90B1 -_080196DC: .4byte gUnknown_2023DD0 +_080196D0: .4byte gProtectStructs +_080196D4: .4byte gBattlescriptCurrInstr +_080196D8: .4byte BattleScript_MoveUsedFlinched +_080196DC: .4byte gHitMarker _080196E0: ldr r0, _08019734 @ =gDisableStructs ldr r3, _08019738 @ =gBattlerAttacker @@ -5135,7 +5135,7 @@ _080196FA: bne _08019700 b _08019946 _08019700: - ldr r0, _08019740 @ =gUnknown_2023E8C + ldr r0, _08019740 @ =gProtectStructs lsls r2, 4 adds r2, r0 ldrb r0, [r2, 0x1] @@ -5147,10 +5147,10 @@ _08019700: strb r0, [r1, 0x17] ldrb r0, [r3] bl CancelMultiTurnMoves - ldr r1, _08019748 @ =gUnknown_2023D74 - ldr r0, _0801974C @ =gUnknown_81D8C4F + ldr r1, _08019748 @ =gBattlescriptCurrInstr + ldr r0, _0801974C @ =BattleScript_MoveUsedIsDisabled str r0, [r1] - ldr r2, _08019750 @ =gUnknown_2023DD0 + ldr r2, _08019750 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -5163,11 +5163,11 @@ _08019700: _08019734: .4byte gDisableStructs _08019738: .4byte gBattlerAttacker _0801973C: .4byte gCurrentMove -_08019740: .4byte gUnknown_2023E8C +_08019740: .4byte gProtectStructs _08019744: .4byte gBattleScripting -_08019748: .4byte gUnknown_2023D74 -_0801974C: .4byte gUnknown_81D8C4F -_08019750: .4byte gUnknown_2023DD0 +_08019748: .4byte gBattlescriptCurrInstr +_0801974C: .4byte BattleScript_MoveUsedIsDisabled +_08019750: .4byte gHitMarker _08019754: ldr r0, _0801979C @ =gDisableStructs ldr r4, _080197A0 @ =gBattlerAttacker @@ -5194,7 +5194,7 @@ _0801976C: beq _08019782 b _08019946 _08019782: - ldr r0, _080197AC @ =gUnknown_2023E8C + ldr r0, _080197AC @ =gProtectStructs lsls r2, r3, 4 adds r2, r0 ldrb r0, [r2, 0x2] @@ -5203,17 +5203,17 @@ _08019782: strb r0, [r2, 0x2] ldrb r0, [r4] bl CancelMultiTurnMoves - ldr r1, _080197B0 @ =gUnknown_2023D74 - ldr r0, _080197B4 @ =gUnknown_81D8ECA + ldr r1, _080197B0 @ =gBattlescriptCurrInstr + ldr r0, _080197B4 @ =BattleScript_MoveUsedIsTaunted b _08019934 .align 2, 0 _0801979C: .4byte gDisableStructs _080197A0: .4byte gBattlerAttacker _080197A4: .4byte gBattleMoves _080197A8: .4byte gCurrentMove -_080197AC: .4byte gUnknown_2023E8C -_080197B0: .4byte gUnknown_2023D74 -_080197B4: .4byte gUnknown_81D8ECA +_080197AC: .4byte gProtectStructs +_080197B0: .4byte gBattlescriptCurrInstr +_080197B4: .4byte BattleScript_MoveUsedIsTaunted _080197B8: ldr r4, _080197FC @ =gBattlerAttacker ldrb r0, [r4] @@ -5225,7 +5225,7 @@ _080197B8: bne _080197CC b _08019946 _080197CC: - ldr r0, _08019804 @ =gUnknown_2023E8C + ldr r0, _08019804 @ =gProtectStructs ldrb r2, [r4] lsls r2, 4 adds r2, r0 @@ -5235,10 +5235,10 @@ _080197CC: strb r0, [r2, 0x1] ldrb r0, [r4] bl CancelMultiTurnMoves - ldr r1, _08019808 @ =gUnknown_2023D74 - ldr r0, _0801980C @ =gUnknown_81D8F94 + ldr r1, _08019808 @ =gBattlescriptCurrInstr + ldr r0, _0801980C @ =BattleScript_MoveUsedIsImprisoned str r0, [r1] - ldr r2, _08019810 @ =gUnknown_2023DD0 + ldr r2, _08019810 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -5251,10 +5251,10 @@ _080197F4: .align 2, 0 _080197FC: .4byte gBattlerAttacker _08019800: .4byte gCurrentMove -_08019804: .4byte gUnknown_2023E8C -_08019808: .4byte gUnknown_2023D74 -_0801980C: .4byte gUnknown_81D8F94 -_08019810: .4byte gUnknown_2023DD0 +_08019804: .4byte gProtectStructs +_08019808: .4byte gBattlescriptCurrInstr +_0801980C: .4byte BattleScript_MoveUsedIsImprisoned +_08019810: .4byte gHitMarker _08019814: ldr r7, _0801985C @ =gBattleMons ldr r5, _08019860 @ =gBattlerAttacker @@ -5285,7 +5285,7 @@ _08019814: ands r2, r0 cmp r2, 0 beq _08019868 - ldr r1, _08019864 @ =gUnknown_2023E82 + ldr r1, _08019864 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] bl BattleScriptPushCursor @@ -5293,9 +5293,9 @@ _08019814: .align 2, 0 _0801985C: .4byte gBattleMons _08019860: .4byte gBattlerAttacker -_08019864: .4byte gUnknown_2023E82 +_08019864: .4byte gBattleCommunication _08019868: - ldr r0, _080198B8 @ =gUnknown_2023E82 + ldr r0, _080198B8 @ =gBattleCommunication movs r4, 0x1 strb r1, [r0, 0x5] ldr r1, _080198BC @ =gBattlerTarget @@ -5318,35 +5318,35 @@ _08019868: bl CalculateBaseDamage ldr r1, _080198C0 @ =gBattleMoveDamage str r0, [r1] - ldr r0, _080198C4 @ =gUnknown_2023E8C + ldr r0, _080198C4 @ =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 ldrb r0, [r1, 0x1] orrs r0, r4 strb r0, [r1, 0x1] - ldr r2, _080198C8 @ =gUnknown_2023DD0 + ldr r2, _080198C8 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 orrs r0, r1 str r0, [r2] _080198B2: - ldr r1, _080198CC @ =gUnknown_2023D74 - ldr r0, _080198D0 @ =gUnknown_81D90D3 + ldr r1, _080198CC @ =gBattlescriptCurrInstr + ldr r0, _080198D0 @ =BattleScript_MoveUsedIsConfused b _080198DC .align 2, 0 -_080198B8: .4byte gUnknown_2023E82 +_080198B8: .4byte gBattleCommunication _080198BC: .4byte gBattlerTarget _080198C0: .4byte gBattleMoveDamage -_080198C4: .4byte gUnknown_2023E8C -_080198C8: .4byte gUnknown_2023DD0 -_080198CC: .4byte gUnknown_2023D74 -_080198D0: .4byte gUnknown_81D90D3 +_080198C4: .4byte gProtectStructs +_080198C8: .4byte gHitMarker +_080198CC: .4byte gBattlescriptCurrInstr +_080198D0: .4byte BattleScript_MoveUsedIsConfused _080198D4: bl BattleScriptPushCursor - ldr r1, _080198EC @ =gUnknown_2023D74 - ldr r0, _080198F0 @ =gUnknown_81D9116 + ldr r1, _080198EC @ =gBattlescriptCurrInstr + ldr r0, _080198F0 @ =BattleScript_MoveUsedIsConfusedNoMore _080198DC: str r0, [r1] movs r1, 0x1 @@ -5358,8 +5358,8 @@ _080198E6: ldr r1, [r4] b _08019B90 .align 2, 0 -_080198EC: .4byte gUnknown_2023D74 -_080198F0: .4byte gUnknown_81D9116 +_080198EC: .4byte gBattlescriptCurrInstr +_080198F0: .4byte BattleScript_MoveUsedIsConfusedNoMore _080198F4: .4byte gBattleStruct _080198F8: ldr r1, _08019958 @ =gBattleMons @@ -5381,7 +5381,7 @@ _080198F8: ands r1, r0 cmp r1, 0 bne _08019946 - ldr r0, _08019960 @ =gUnknown_2023E8C + ldr r0, _08019960 @ =gProtectStructs ldrb r2, [r4] lsls r2, 4 adds r2, r0 @@ -5389,11 +5389,11 @@ _080198F8: movs r1, 0x80 orrs r0, r1 strb r0, [r2] - ldr r1, _08019964 @ =gUnknown_2023D74 - ldr r0, _08019968 @ =gUnknown_81D90A1 + ldr r1, _08019964 @ =gBattlescriptCurrInstr + ldr r0, _08019968 @ =BattleScript_MoveUsedIsParalyzed _08019934: str r0, [r1] - ldr r2, _0801996C @ =gUnknown_2023DD0 + ldr r2, _0801996C @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -5413,10 +5413,10 @@ _08019946: .align 2, 0 _08019958: .4byte gBattleMons _0801995C: .4byte gBattlerAttacker -_08019960: .4byte gUnknown_2023E8C -_08019964: .4byte gUnknown_2023D74 -_08019968: .4byte gUnknown_81D90A1 -_0801996C: .4byte gUnknown_2023DD0 +_08019960: .4byte gProtectStructs +_08019964: .4byte gBattlescriptCurrInstr +_08019968: .4byte BattleScript_MoveUsedIsParalyzed +_0801996C: .4byte gHitMarker _08019970: .4byte gBattleStruct _08019974: ldr r0, _0801999C @ =gBattleTypeFlags @@ -5436,28 +5436,28 @@ _08019988: lsls r0, 24 cmp r0, 0 bne _080199AC - ldr r1, _080199A4 @ =gUnknown_2023D74 + ldr r1, _080199A4 @ =gBattlescriptCurrInstr ldr r0, _080199A8 @ =gUnknown_81D9180 b _080199B0 .align 2, 0 _0801999C: .4byte gBattleTypeFlags _080199A0: .4byte gBattlerAttacker -_080199A4: .4byte gUnknown_2023D74 +_080199A4: .4byte gBattlescriptCurrInstr _080199A8: .4byte gUnknown_81D9180 _080199AC: - ldr r1, _080199BC @ =gUnknown_2023D74 + ldr r1, _080199BC @ =gBattlescriptCurrInstr ldr r0, _080199C0 @ =gUnknown_81D9192 _080199B0: str r0, [r1] - ldr r1, _080199C4 @ =gUnknown_2023E82 + ldr r1, _080199C4 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] movs r0, 0x1 b _08019B86 .align 2, 0 -_080199BC: .4byte gUnknown_2023D74 +_080199BC: .4byte gBattlescriptCurrInstr _080199C0: .4byte gUnknown_81D9192 -_080199C4: .4byte gUnknown_2023E82 +_080199C4: .4byte gBattleCommunication _080199C8: ldr r1, _08019A00 @ =gBattleMons ldr r4, _08019A04 @ =gBattlerAttacker @@ -5488,15 +5488,15 @@ _08019A00: .4byte gBattleMons _08019A04: .4byte gBattlerAttacker _08019A08: .4byte gBattleScripting _08019A0C: - ldr r0, _08019A48 @ =gUnknown_81D914A + ldr r0, _08019A48 @ =BattleScript_MoveUsedIsInLoveCantAttack bl BattleScriptPush - ldr r2, _08019A4C @ =gUnknown_2023DD0 + ldr r2, _08019A4C @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 orrs r0, r1 str r0, [r2] - ldr r0, _08019A50 @ =gUnknown_2023E8C + ldr r0, _08019A50 @ =gProtectStructs ldrb r2, [r4] lsls r2, 4 adds r2, r0 @@ -5507,8 +5507,8 @@ _08019A0C: ldrb r0, [r4] bl CancelMultiTurnMoves _08019A34: - ldr r1, _08019A54 @ =gUnknown_2023D74 - ldr r0, _08019A58 @ =gUnknown_81D913D + ldr r1, _08019A54 @ =gBattlescriptCurrInstr + ldr r0, _08019A58 @ =BattleScript_MoveUsedIsInLove str r0, [r1] movs r4, 0x1 mov r9, r4 @@ -5519,11 +5519,11 @@ _08019A42: ldr r1, [r0] b _08019B90 .align 2, 0 -_08019A48: .4byte gUnknown_81D914A -_08019A4C: .4byte gUnknown_2023DD0 -_08019A50: .4byte gUnknown_2023E8C -_08019A54: .4byte gUnknown_2023D74 -_08019A58: .4byte gUnknown_81D913D +_08019A48: .4byte BattleScript_MoveUsedIsInLoveCantAttack +_08019A4C: .4byte gHitMarker +_08019A50: .4byte gProtectStructs +_08019A54: .4byte gBattlescriptCurrInstr +_08019A58: .4byte BattleScript_MoveUsedIsInLove _08019A5C: .4byte gBattleStruct _08019A60: ldr r1, _08019A98 @ =gBattleMons @@ -5551,17 +5551,17 @@ _08019A60: ands r0, r4 cmp r0, 0 beq _08019AAC - ldr r1, _08019AA4 @ =gUnknown_2023D74 - ldr r0, _08019AA8 @ =gUnknown_81D8BA9 + ldr r1, _08019AA4 @ =gBattlescriptCurrInstr + ldr r0, _08019AA8 @ =BattleScript_BideStoringEnergy b _08019B2C .align 2, 0 _08019A98: .4byte gBattleMons _08019A9C: .4byte gBattlerAttacker _08019AA0: .4byte 0xffffff00 -_08019AA4: .4byte gUnknown_2023D74 -_08019AA8: .4byte gUnknown_81D8BA9 +_08019AA4: .4byte gBattlescriptCurrInstr +_08019AA8: .4byte BattleScript_BideStoringEnergy _08019AAC: - ldr r3, _08019B04 @ =gUnknown_2023D58 + ldr r3, _08019B04 @ =gTakenDmg lsls r0, r2, 2 adds r0, r3 ldr r0, [r0] @@ -5578,7 +5578,7 @@ _08019AAC: mov r1, r10 str r0, [r1] ldr r4, _08019B0C @ =gBattlerTarget - ldr r1, _08019B10 @ =gUnknown_2023DD8 + ldr r1, _08019B10 @ =gTakenDmgByBattler ldrb r0, [r6] adds r0, r1 ldrb r0, [r0] @@ -5598,25 +5598,25 @@ _08019AAC: bl GetMoveTarget strb r0, [r4] _08019AF6: - ldr r1, _08019B1C @ =gUnknown_2023D74 - ldr r0, _08019B20 @ =gUnknown_81D8BB4 + ldr r1, _08019B1C @ =gBattlescriptCurrInstr + ldr r0, _08019B20 @ =BattleScript_BideAttack str r0, [r1] ldr r2, _08019B24 @ =gBattleStruct mov r8, r2 b _08019B2E .align 2, 0 -_08019B04: .4byte gUnknown_2023D58 +_08019B04: .4byte gTakenDmg _08019B08: .4byte gCurrentMove _08019B0C: .4byte gBattlerTarget -_08019B10: .4byte gUnknown_2023DD8 +_08019B10: .4byte gTakenDmgByBattler _08019B14: .4byte gAbsentBattlerFlags _08019B18: .4byte gBitTable -_08019B1C: .4byte gUnknown_2023D74 -_08019B20: .4byte gUnknown_81D8BB4 +_08019B1C: .4byte gBattlescriptCurrInstr +_08019B20: .4byte BattleScript_BideAttack _08019B24: .4byte gBattleStruct _08019B28: - ldr r1, _08019B38 @ =gUnknown_2023D74 - ldr r0, _08019B3C @ =gUnknown_81D8BFC + ldr r1, _08019B38 @ =gBattlescriptCurrInstr + ldr r0, _08019B3C @ =BattleScript_BideNoEnergyToAttack _08019B2C: str r0, [r1] _08019B2E: @@ -5627,8 +5627,8 @@ _08019B32: ldr r1, [r7] b _08019B90 .align 2, 0 -_08019B38: .4byte gUnknown_2023D74 -_08019B3C: .4byte gUnknown_81D8BFC +_08019B38: .4byte gBattlescriptCurrInstr +_08019B3C: .4byte BattleScript_BideNoEnergyToAttack _08019B40: ldr r1, _08019BE8 @ =gBattleMons ldr r0, _08019BEC @ =gBattlerAttacker @@ -5657,10 +5657,10 @@ _08019B40: ands r3, r0 str r3, [r4] bl BattleScriptPushCursor - ldr r1, _08019BF8 @ =gUnknown_2023D74 - ldr r0, _08019BFC @ =gUnknown_81D908D + ldr r1, _08019BF8 @ =gBattlescriptCurrInstr + ldr r0, _08019BFC @ =BattleScript_MoveUsedUnfroze str r0, [r1] - ldr r1, _08019C00 @ =gUnknown_2023E82 + ldr r1, _08019C00 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _08019B84: @@ -5705,7 +5705,7 @@ _08019BA8: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec _08019BD4: mov r0, r9 add sp, 0x10 @@ -5721,16 +5721,16 @@ _08019BE8: .4byte gBattleMons _08019BEC: .4byte gBattlerAttacker _08019BF0: .4byte gBattleMoves _08019BF4: .4byte gCurrentMove -_08019BF8: .4byte gUnknown_2023D74 -_08019BFC: .4byte gUnknown_81D908D -_08019C00: .4byte gUnknown_2023E82 +_08019BF8: .4byte gBattlescriptCurrInstr +_08019BFC: .4byte BattleScript_MoveUsedUnfroze +_08019C00: .4byte gBattleCommunication _08019C04: .4byte gBattleStruct _08019C08: .4byte gActiveBattler _08019C0C: .4byte gUnknown_2023C30 - thumb_func_end sub_80192D4 + thumb_func_end AtkCanceller_UnableToUseMove - thumb_func_start sub_8019C10 -sub_8019C10: @ 8019C10 + thumb_func_start HasNoMonsToSwitch +HasNoMonsToSwitch: @ 8019C10 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -5934,10 +5934,10 @@ _08019D90: _08019DA0: .4byte gPlayerParty _08019DA4: .4byte gBattlerPartyIndexes _08019DA8: .4byte gBattleStruct - thumb_func_end sub_8019C10 + thumb_func_end HasNoMonsToSwitch - thumb_func_start sub_8019DAC -sub_8019DAC: @ 8019DAC + thumb_func_start CastformDataTypeChange +CastformDataTypeChange: @ 8019DAC push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 @@ -6122,7 +6122,7 @@ _08019F08: .align 2, 0 _08019F10: .4byte gBattleWeather _08019F14: .4byte gBattleMons - thumb_func_end sub_8019DAC + thumb_func_end CastformDataTypeChange thumb_func_start AbilityBattleEffects AbilityBattleEffects: @ 8019F18 @@ -6515,16 +6515,16 @@ _0801A250: bl _0801BBC6 _0801A25A: bl weather_get_current - ldr r1, _0801A274 @ =gUnknown_2023E82 + ldr r1, _0801A274 @ =gBattleCommunication strb r0, [r1, 0x5] - ldr r0, _0801A278 @ =gUnknown_81D8B1F + ldr r0, _0801A278 @ =BattleScript_OverworldWeatherStarts bl BattleScriptPushCursorAndCallback bl _0801BBAA .align 2, 0 _0801A26C: .4byte gBattleWeather _0801A270: .4byte gBattleScripting -_0801A274: .4byte gUnknown_2023E82 -_0801A278: .4byte gUnknown_81D8B1F +_0801A274: .4byte gBattleCommunication +_0801A278: .4byte BattleScript_OverworldWeatherStarts _0801A27C: ldr r2, _0801A2A0 @ =gBattleWeather ldrh r1, [r2] @@ -6536,7 +6536,7 @@ _0801A27C: _0801A28C: movs r0, 0x5 strh r0, [r2] - ldr r0, _0801A2A4 @ =gUnknown_81D927F + ldr r0, _0801A2A4 @ =BattleScript_DrizzleActivates bl BattleScriptPushCursorAndCallback ldr r0, _0801A2A8 @ =gBattleScripting mov r1, r10 @@ -6544,7 +6544,7 @@ _0801A28C: bl _0801BB5A .align 2, 0 _0801A2A0: .4byte gBattleWeather -_0801A2A4: .4byte gUnknown_81D927F +_0801A2A4: .4byte BattleScript_DrizzleActivates _0801A2A8: .4byte gBattleScripting _0801A2AC: ldr r2, _0801A2D0 @ =gBattleWeather @@ -6557,7 +6557,7 @@ _0801A2AC: _0801A2BC: movs r0, 0x18 strh r0, [r2] - ldr r0, _0801A2D4 @ =gUnknown_81D92BF + ldr r0, _0801A2D4 @ =BattleScript_SandstreamActivates bl BattleScriptPushCursorAndCallback ldr r0, _0801A2D8 @ =gBattleScripting mov r2, r10 @@ -6565,7 +6565,7 @@ _0801A2BC: bl _0801BB5A .align 2, 0 _0801A2D0: .4byte gBattleWeather -_0801A2D4: .4byte gUnknown_81D92BF +_0801A2D4: .4byte BattleScript_SandstreamActivates _0801A2D8: .4byte gBattleScripting _0801A2DC: ldr r2, _0801A300 @ =gBattleWeather @@ -6578,7 +6578,7 @@ _0801A2DC: _0801A2EC: movs r0, 0x60 strh r0, [r2] - ldr r0, _0801A304 @ =gUnknown_81D9379 + ldr r0, _0801A304 @ =BattleScript_DroughtActivates bl BattleScriptPushCursorAndCallback ldr r0, _0801A308 @ =gBattleScripting mov r3, r10 @@ -6586,10 +6586,10 @@ _0801A2EC: bl _0801BB5A .align 2, 0 _0801A300: .4byte gBattleWeather -_0801A304: .4byte gUnknown_81D9379 +_0801A304: .4byte BattleScript_DroughtActivates _0801A308: .4byte gBattleScripting _0801A30C: - ldr r0, _0801A338 @ =gUnknown_2023ECC + ldr r0, _0801A338 @ =gSpecialStatuses mov r4, r10 lsls r2, r4, 2 adds r1, r2, r4 @@ -6612,11 +6612,11 @@ _0801A324: movs r1, 0x8 b _0801A396 .align 2, 0 -_0801A338: .4byte gUnknown_2023ECC +_0801A338: .4byte gSpecialStatuses _0801A33C: .4byte gStatuses3 _0801A340: mov r0, r10 - bl sub_8019DAC + bl CastformDataTypeChange lsls r0, 24 lsrs r0, 24 mov r9, r0 @@ -6624,17 +6624,17 @@ _0801A340: bne _0801A354 bl _0801BBC6 _0801A354: - ldr r0, _0801A364 @ =gUnknown_81D92F8 + ldr r0, _0801A364 @ =BattleScript_CastformChange bl BattleScriptPushCursorAndCallback ldr r0, _0801A368 @ =gBattleScripting mov r1, r10 strb r1, [r0, 0x17] bl _0801BA6A .align 2, 0 -_0801A364: .4byte gUnknown_81D92F8 +_0801A364: .4byte BattleScript_CastformChange _0801A368: .4byte gBattleScripting _0801A36C: - ldr r0, _0801A3A0 @ =gUnknown_2023ECC + ldr r0, _0801A3A0 @ =gSpecialStatuses mov r3, r10 lsls r2, r3, 2 adds r1, r2, r3 @@ -6660,7 +6660,7 @@ _0801A396: strb r0, [r3] bl _0801BBAA .align 2, 0 -_0801A3A0: .4byte gUnknown_2023ECC +_0801A3A0: .4byte gSpecialStatuses _0801A3A4: .4byte gStatuses3 _0801A3A8: movs r4, 0 @@ -6670,7 +6670,7 @@ _0801A3A8: bl _0801BBAA _0801A3B4: adds r0, r4, 0 - bl sub_8019DAC + bl CastformDataTypeChange lsls r0, 24 lsrs r0, 24 mov r9, r0 @@ -6765,7 +6765,7 @@ _0801A46A: _0801A476: mov r0, r8 strb r5, [r0] - ldr r0, _0801A4A0 @ =gUnknown_81D92AB + ldr r0, _0801A4A0 @ =BattleScript_RainDishActivates bl BattleScriptPushCursorAndCallback ldr r1, _0801A4A4 @ =gBattleMoveDamage ldrh r0, [r4, 0x2C] @@ -6782,7 +6782,7 @@ _0801A490: bl _0801BB5A .align 2, 0 _0801A49C: .4byte gBattleWeather -_0801A4A0: .4byte gUnknown_81D92AB +_0801A4A0: .4byte BattleScript_RainDishActivates _0801A4A4: .4byte gBattleMoveDamage _0801A4A8: adds r0, r7, 0 @@ -6862,7 +6862,7 @@ _0801A52C: mov r1, r10 strb r1, [r4] strb r1, [r0, 0x17] - ldr r0, _0801A588 @ =gUnknown_81D92D3 + ldr r0, _0801A588 @ =BattleScript_ShedSkinActivates bl BattleScriptPushCursorAndCallback str r5, [sp] movs r0, 0 @@ -6871,7 +6871,7 @@ _0801A52C: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec bl _0801BB5A .align 2, 0 _0801A564: .4byte gBattleTextBuff1 @@ -6883,7 +6883,7 @@ _0801A578: .4byte gUnknown_82500B4 _0801A57C: .4byte 0xf7ffffff _0801A580: .4byte gBattleScripting _0801A584: .4byte gActiveBattler -_0801A588: .4byte gUnknown_81D92D3 +_0801A588: .4byte BattleScript_ShedSkinActivates _0801A58C: ldrb r2, [r4, 0x1B] movs r0, 0x1B @@ -6910,7 +6910,7 @@ _0801A5B0: movs r0, 0x11 strb r0, [r4, 0x10] strb r1, [r4, 0x11] - ldr r0, _0801A5D4 @ =gUnknown_81D9293 + ldr r0, _0801A5D4 @ =BattleScript_SpeedBoostActivates bl BattleScriptPushCursorAndCallback mov r0, r10 strb r0, [r4, 0x17] @@ -6918,7 +6918,7 @@ _0801A5B0: .align 2, 0 _0801A5CC: .4byte gDisableStructs _0801A5D0: .4byte gBattleScripting -_0801A5D4: .4byte gUnknown_81D9293 +_0801A5D4: .4byte BattleScript_SpeedBoostActivates _0801A5D8: ldr r2, _0801A5FC @ =gDisableStructs ldrb r0, [r0] @@ -6947,7 +6947,7 @@ _0801A600: bl _0801BBAA _0801A60C: movs r5, 0 - ldr r0, _0801A67C @ =gUnknown_8250104 + ldr r0, _0801A67C @ =sSoundMovesTable ldrh r2, [r0] ldr r3, _0801A680 @ =0x0000ffff adds r1, r0, 0 @@ -6990,27 +6990,27 @@ _0801A646: ands r0, r1 cmp r0, 0 beq _0801A66C - ldr r0, _0801A68C @ =gUnknown_2023DD0 + ldr r0, _0801A68C @ =gHitMarker ldr r1, [r0] movs r2, 0x80 lsls r2, 4 orrs r1, r2 str r1, [r0] _0801A66C: - ldr r1, _0801A690 @ =gUnknown_2023D74 - ldr r0, _0801A694 @ =gUnknown_81D946E + ldr r1, _0801A690 @ =gBattlescriptCurrInstr + ldr r0, _0801A694 @ =BattleScript_SoundproofProtected str r0, [r1] movs r2, 0x1 mov r9, r2 bl _0801BBB0 .align 2, 0 -_0801A67C: .4byte gUnknown_8250104 +_0801A67C: .4byte sSoundMovesTable _0801A680: .4byte 0x0000ffff _0801A684: .4byte gBattleMons _0801A688: .4byte gBattlerAttacker -_0801A68C: .4byte gUnknown_2023DD0 -_0801A690: .4byte gUnknown_2023D74 -_0801A694: .4byte gUnknown_81D946E +_0801A68C: .4byte gHitMarker +_0801A690: .4byte gBattlescriptCurrInstr +_0801A694: .4byte BattleScript_SoundproofProtected _0801A698: cmp r4, 0 bne _0801A6A0 @@ -7044,7 +7044,7 @@ _0801A6BE: bne _0801A6D0 b _0801A832 _0801A6D0: - ldr r1, _0801A6EC @ =gUnknown_2023E8C + ldr r1, _0801A6EC @ =gProtectStructs ldr r0, _0801A6F0 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -7053,26 +7053,26 @@ _0801A6D0: lsls r0, 28 cmp r0, 0 bge _0801A6FC - ldr r1, _0801A6F4 @ =gUnknown_2023D74 - ldr r0, _0801A6F8 @ =gUnknown_81D93BE + ldr r1, _0801A6F4 @ =gBattlescriptCurrInstr + ldr r0, _0801A6F8 @ =BattleScript_MoveHPDrain b _0801A700 .align 2, 0 _0801A6E8: .4byte gBattleMoves -_0801A6EC: .4byte gUnknown_2023E8C +_0801A6EC: .4byte gProtectStructs _0801A6F0: .4byte gBattlerAttacker -_0801A6F4: .4byte gUnknown_2023D74 -_0801A6F8: .4byte gUnknown_81D93BE +_0801A6F4: .4byte gBattlescriptCurrInstr +_0801A6F8: .4byte BattleScript_MoveHPDrain _0801A6FC: - ldr r1, _0801A708 @ =gUnknown_2023D74 - ldr r0, _0801A70C @ =gUnknown_81D93BD + ldr r1, _0801A708 @ =gBattlescriptCurrInstr + ldr r0, _0801A70C @ =BattleScript_MoveHPDrain_PPLoss _0801A700: str r0, [r1] movs r4, 0x1 mov r9, r4 b _0801A832 .align 2, 0 -_0801A708: .4byte gUnknown_2023D74 -_0801A70C: .4byte gUnknown_81D93BD +_0801A708: .4byte gBattlescriptCurrInstr +_0801A70C: .4byte BattleScript_MoveHPDrain_PPLoss _0801A710: cmp r5, 0xB beq _0801A716 @@ -7088,7 +7088,7 @@ _0801A716: bne _0801A728 b _0801A832 _0801A728: - ldr r1, _0801A744 @ =gUnknown_2023E8C + ldr r1, _0801A744 @ =gProtectStructs ldr r0, _0801A748 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -7097,25 +7097,25 @@ _0801A728: lsls r0, 28 cmp r0, 0 bge _0801A754 - ldr r1, _0801A74C @ =gUnknown_2023D74 - ldr r0, _0801A750 @ =gUnknown_81D93BE + ldr r1, _0801A74C @ =gBattlescriptCurrInstr + ldr r0, _0801A750 @ =BattleScript_MoveHPDrain b _0801A758 .align 2, 0 _0801A740: .4byte gBattleMoves -_0801A744: .4byte gUnknown_2023E8C +_0801A744: .4byte gProtectStructs _0801A748: .4byte gBattlerAttacker -_0801A74C: .4byte gUnknown_2023D74 -_0801A750: .4byte gUnknown_81D93BE +_0801A74C: .4byte gBattlescriptCurrInstr +_0801A750: .4byte BattleScript_MoveHPDrain _0801A754: - ldr r1, _0801A760 @ =gUnknown_2023D74 - ldr r0, _0801A764 @ =gUnknown_81D93BD + ldr r1, _0801A760 @ =gBattlescriptCurrInstr + ldr r0, _0801A764 @ =BattleScript_MoveHPDrain_PPLoss _0801A758: str r0, [r1] movs r0, 0x1 b _0801A830 .align 2, 0 -_0801A760: .4byte gUnknown_2023D74 -_0801A764: .4byte gUnknown_81D93BD +_0801A760: .4byte gBattlescriptCurrInstr +_0801A764: .4byte BattleScript_MoveHPDrain_PPLoss _0801A768: cmp r5, 0xA bne _0801A832 @@ -7143,9 +7143,9 @@ _0801A768: adds r5, r1, 0 cmp r3, 0 bne _0801A7F8 - ldr r0, _0801A7C0 @ =gUnknown_2023E82 + ldr r0, _0801A7C0 @ =gBattleCommunication strb r3, [r0, 0x5] - ldr r1, _0801A7C4 @ =gUnknown_2023E8C + ldr r1, _0801A7C4 @ =gProtectStructs ldr r0, _0801A7C8 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -7154,20 +7154,20 @@ _0801A768: lsls r0, 28 cmp r0, 0 bge _0801A7D4 - ldr r1, _0801A7CC @ =gUnknown_2023D74 - ldr r0, _0801A7D0 @ =gUnknown_81D93F7 + ldr r1, _0801A7CC @ =gBattlescriptCurrInstr + ldr r0, _0801A7D0 @ =BattleScript_FlashFireBoost b _0801A7D8 .align 2, 0 _0801A7B8: .4byte gBattleMons _0801A7BC: .4byte gBattleResources -_0801A7C0: .4byte gUnknown_2023E82 -_0801A7C4: .4byte gUnknown_2023E8C +_0801A7C0: .4byte gBattleCommunication +_0801A7C4: .4byte gProtectStructs _0801A7C8: .4byte gBattlerAttacker -_0801A7CC: .4byte gUnknown_2023D74 -_0801A7D0: .4byte gUnknown_81D93F7 +_0801A7CC: .4byte gBattlescriptCurrInstr +_0801A7D0: .4byte BattleScript_FlashFireBoost _0801A7D4: - ldr r1, _0801A7F0 @ =gUnknown_2023D74 - ldr r0, _0801A7F4 @ =gUnknown_81D93F6 + ldr r1, _0801A7F0 @ =gBattlescriptCurrInstr + ldr r0, _0801A7F4 @ =BattleScript_FlashFireBoost_PPLoss _0801A7D8: str r0, [r1] ldr r0, [r2] @@ -7181,12 +7181,12 @@ _0801A7D8: mov r9, r4 b _0801A832 .align 2, 0 -_0801A7F0: .4byte gUnknown_2023D74 -_0801A7F4: .4byte gUnknown_81D93F6 +_0801A7F0: .4byte gBattlescriptCurrInstr +_0801A7F4: .4byte BattleScript_FlashFireBoost_PPLoss _0801A7F8: - ldr r0, _0801A814 @ =gUnknown_2023E82 + ldr r0, _0801A814 @ =gBattleCommunication strb r4, [r0, 0x5] - ldr r1, _0801A818 @ =gUnknown_2023E8C + ldr r1, _0801A818 @ =gProtectStructs ldr r0, _0801A81C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -7195,18 +7195,18 @@ _0801A7F8: lsls r0, 28 cmp r0, 0 bge _0801A828 - ldr r1, _0801A820 @ =gUnknown_2023D74 - ldr r0, _0801A824 @ =gUnknown_81D93F7 + ldr r1, _0801A820 @ =gBattlescriptCurrInstr + ldr r0, _0801A824 @ =BattleScript_FlashFireBoost b _0801A82C .align 2, 0 -_0801A814: .4byte gUnknown_2023E82 -_0801A818: .4byte gUnknown_2023E8C +_0801A814: .4byte gBattleCommunication +_0801A818: .4byte gProtectStructs _0801A81C: .4byte gBattlerAttacker -_0801A820: .4byte gUnknown_2023D74 -_0801A824: .4byte gUnknown_81D93F7 +_0801A820: .4byte gBattlescriptCurrInstr +_0801A824: .4byte BattleScript_FlashFireBoost _0801A828: - ldr r1, _0801A86C @ =gUnknown_2023D74 - ldr r0, _0801A870 @ =gUnknown_81D93F6 + ldr r1, _0801A86C @ =gBattlescriptCurrInstr + ldr r0, _0801A870 @ =BattleScript_FlashFireBoost_PPLoss _0801A82C: str r0, [r1] movs r0, 0x2 @@ -7228,7 +7228,7 @@ _0801A83C: ldrh r3, [r1, 0x28] cmp r0, r3 bne _0801A898 - ldr r1, _0801A878 @ =gUnknown_2023E8C + ldr r1, _0801A878 @ =gProtectStructs ldr r0, _0801A87C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 @@ -7237,25 +7237,25 @@ _0801A83C: lsls r0, 28 cmp r0, 0 bge _0801A884 - ldr r1, _0801A86C @ =gUnknown_2023D74 - ldr r0, _0801A880 @ =gUnknown_81D93E1 + ldr r1, _0801A86C @ =gBattlescriptCurrInstr + ldr r0, _0801A880 @ =BattleScript_MonMadeMoveUseless str r0, [r1] bl _0801BBAA .align 2, 0 -_0801A86C: .4byte gUnknown_2023D74 -_0801A870: .4byte gUnknown_81D93F6 +_0801A86C: .4byte gBattlescriptCurrInstr +_0801A870: .4byte BattleScript_FlashFireBoost_PPLoss _0801A874: .4byte gBattleMons -_0801A878: .4byte gUnknown_2023E8C +_0801A878: .4byte gProtectStructs _0801A87C: .4byte gBattlerAttacker -_0801A880: .4byte gUnknown_81D93E1 +_0801A880: .4byte BattleScript_MonMadeMoveUseless _0801A884: - ldr r1, _0801A890 @ =gUnknown_2023D74 - ldr r0, _0801A894 @ =gUnknown_81D93E0 + ldr r1, _0801A890 @ =gBattlescriptCurrInstr + ldr r0, _0801A894 @ =BattleScript_MonMadeMoveUseless_PPLoss str r0, [r1] bl _0801BBAA .align 2, 0 -_0801A890: .4byte gUnknown_2023D74 -_0801A894: .4byte gUnknown_81D93E0 +_0801A890: .4byte gBattlescriptCurrInstr +_0801A894: .4byte BattleScript_MonMadeMoveUseless_PPLoss _0801A898: ldr r2, _0801A8B4 @ =gBattleMoveDamage ldrh r0, [r1, 0x2C] @@ -7360,7 +7360,7 @@ _0801A9AC: bne _0801A9C0 bl _0801BBAA _0801A9C0: - ldr r2, _0801AA44 @ =gUnknown_2023ECC + ldr r2, _0801AA44 @ =gSpecialStatuses ldr r0, _0801AA48 @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7416,19 +7416,19 @@ _0801AA1A: movs r0, 0xFF strb r0, [r1, 0x3] bl BattleScriptPushCursor - ldr r1, _0801AA54 @ =gUnknown_2023D74 - ldr r0, _0801AA58 @ =gUnknown_81D949C + ldr r1, _0801AA54 @ =gBattlescriptCurrInstr + ldr r0, _0801AA58 @ =BattleScript_ColorChangeActivates str r0, [r1] bl _0801BB5A .align 2, 0 _0801AA3C: .4byte gMoveResultFlags _0801AA40: .4byte gBattleMoves -_0801AA44: .4byte gUnknown_2023ECC +_0801AA44: .4byte gSpecialStatuses _0801AA48: .4byte gBattlerTarget _0801AA4C: .4byte gBattleMons _0801AA50: .4byte gBattleTextBuff1 -_0801AA54: .4byte gUnknown_2023D74 -_0801AA58: .4byte gUnknown_81D949C +_0801AA54: .4byte gBattlescriptCurrInstr +_0801AA58: .4byte BattleScript_ColorChangeActivates _0801AA5C: ldr r0, _0801AAF4 @ =gMoveResultFlags ldrb r1, [r0] @@ -7449,7 +7449,7 @@ _0801AA6C: bne _0801AA82 bl _0801BBAA _0801AA82: - ldr r0, _0801AB00 @ =gUnknown_2023E8C + ldr r0, _0801AB00 @ =gProtectStructs lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7458,7 +7458,7 @@ _0801AA82: beq _0801AA94 bl _0801BBAA _0801AA94: - ldr r2, _0801AB04 @ =gUnknown_2023ECC + ldr r2, _0801AB04 @ =gSpecialStatuses ldr r0, _0801AB08 @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7500,21 +7500,21 @@ _0801AAD6: str r2, [r1] _0801AAE4: bl BattleScriptPushCursor - ldr r1, _0801AB14 @ =gUnknown_2023D74 - ldr r0, _0801AB18 @ =gUnknown_81D94A3 + ldr r1, _0801AB14 @ =gBattlescriptCurrInstr + ldr r0, _0801AB18 @ =BattleScript_RoughSkinActivates str r0, [r1] bl _0801BB5A .align 2, 0 _0801AAF4: .4byte gMoveResultFlags _0801AAF8: .4byte gBattleMons _0801AAFC: .4byte gBattlerAttacker -_0801AB00: .4byte gUnknown_2023E8C -_0801AB04: .4byte gUnknown_2023ECC +_0801AB00: .4byte gProtectStructs +_0801AB04: .4byte gSpecialStatuses _0801AB08: .4byte gBattlerTarget _0801AB0C: .4byte gBattleMoves _0801AB10: .4byte gBattleMoveDamage -_0801AB14: .4byte gUnknown_2023D74 -_0801AB18: .4byte gUnknown_81D94A3 +_0801AB14: .4byte gBattlescriptCurrInstr +_0801AB18: .4byte BattleScript_RoughSkinActivates _0801AB1C: ldr r0, _0801ABE8 @ =gMoveResultFlags ldrb r1, [r0] @@ -7535,7 +7535,7 @@ _0801AB2C: bne _0801AB42 bl _0801BBAA _0801AB42: - ldr r0, _0801ABF4 @ =gUnknown_2023E8C + ldr r0, _0801ABF4 @ =gProtectStructs lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7544,7 +7544,7 @@ _0801AB42: beq _0801AB54 bl _0801BBAA _0801AB54: - ldr r2, _0801ABF8 @ =gUnknown_2023ECC + ldr r2, _0801ABF8 @ =gSpecialStatuses ldr r0, _0801ABFC @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7586,7 +7586,7 @@ _0801AB94: beq _0801ABAC bl _0801BBAA _0801ABAC: - ldr r5, _0801AC04 @ =gUnknown_2023E82 + ldr r5, _0801AC04 @ =gBattleCommunication movs r4, 0x3 _0801ABB0: bl Random @@ -7594,7 +7594,7 @@ _0801ABB0: strb r0, [r5, 0x3] cmp r0, 0 beq _0801ABB0 - ldr r1, _0801AC04 @ =gUnknown_2023E82 + ldr r1, _0801AC04 @ =gBattleCommunication ldrb r0, [r1, 0x3] cmp r0, 0x3 bne _0801ABC8 @@ -7605,10 +7605,10 @@ _0801ABC8: adds r0, 0x40 strb r0, [r1, 0x3] bl BattleScriptPushCursor - ldr r1, _0801AC08 @ =gUnknown_2023D74 - ldr r0, _0801AC0C @ =gUnknown_81D94CB + ldr r1, _0801AC08 @ =gBattlescriptCurrInstr + ldr r0, _0801AC0C @ =BattleScript_ApplySecondaryEffect str r0, [r1] - ldr r2, _0801AC10 @ =gUnknown_2023DD0 + ldr r2, _0801AC10 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 6 @@ -7619,14 +7619,14 @@ _0801ABC8: _0801ABE8: .4byte gMoveResultFlags _0801ABEC: .4byte gBattleMons _0801ABF0: .4byte gBattlerAttacker -_0801ABF4: .4byte gUnknown_2023E8C -_0801ABF8: .4byte gUnknown_2023ECC +_0801ABF4: .4byte gProtectStructs +_0801ABF8: .4byte gSpecialStatuses _0801ABFC: .4byte gBattlerTarget _0801AC00: .4byte gBattleMoves -_0801AC04: .4byte gUnknown_2023E82 -_0801AC08: .4byte gUnknown_2023D74 -_0801AC0C: .4byte gUnknown_81D94CB -_0801AC10: .4byte gUnknown_2023DD0 +_0801AC04: .4byte gBattleCommunication +_0801AC08: .4byte gBattlescriptCurrInstr +_0801AC0C: .4byte BattleScript_ApplySecondaryEffect +_0801AC10: .4byte gHitMarker _0801AC14: ldr r0, _0801ACC4 @ =gMoveResultFlags ldrb r1, [r0] @@ -7647,7 +7647,7 @@ _0801AC24: bne _0801AC3A bl _0801BBAA _0801AC3A: - ldr r0, _0801ACD0 @ =gUnknown_2023E8C + ldr r0, _0801ACD0 @ =gProtectStructs lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7656,7 +7656,7 @@ _0801AC3A: beq _0801AC4C bl _0801BBAA _0801AC4C: - ldr r2, _0801ACD4 @ =gUnknown_2023ECC + ldr r2, _0801ACD4 @ =gSpecialStatuses ldr r0, _0801ACD8 @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7698,14 +7698,14 @@ _0801AC8C: beq _0801ACA4 bl _0801BBAA _0801ACA4: - ldr r1, _0801ACE0 @ =gUnknown_2023E82 + ldr r1, _0801ACE0 @ =gBattleCommunication movs r0, 0x42 strb r0, [r1, 0x3] bl BattleScriptPushCursor - ldr r1, _0801ACE4 @ =gUnknown_2023D74 - ldr r0, _0801ACE8 @ =gUnknown_81D94CB + ldr r1, _0801ACE4 @ =gBattlescriptCurrInstr + ldr r0, _0801ACE8 @ =BattleScript_ApplySecondaryEffect str r0, [r1] - ldr r2, _0801ACEC @ =gUnknown_2023DD0 + ldr r2, _0801ACEC @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 6 @@ -7716,14 +7716,14 @@ _0801ACA4: _0801ACC4: .4byte gMoveResultFlags _0801ACC8: .4byte gBattleMons _0801ACCC: .4byte gBattlerAttacker -_0801ACD0: .4byte gUnknown_2023E8C -_0801ACD4: .4byte gUnknown_2023ECC +_0801ACD0: .4byte gProtectStructs +_0801ACD4: .4byte gSpecialStatuses _0801ACD8: .4byte gBattlerTarget _0801ACDC: .4byte gBattleMoves -_0801ACE0: .4byte gUnknown_2023E82 -_0801ACE4: .4byte gUnknown_2023D74 -_0801ACE8: .4byte gUnknown_81D94CB -_0801ACEC: .4byte gUnknown_2023DD0 +_0801ACE0: .4byte gBattleCommunication +_0801ACE4: .4byte gBattlescriptCurrInstr +_0801ACE8: .4byte BattleScript_ApplySecondaryEffect +_0801ACEC: .4byte gHitMarker _0801ACF0: ldr r0, _0801ADA0 @ =gMoveResultFlags ldrb r1, [r0] @@ -7744,7 +7744,7 @@ _0801AD00: bne _0801AD16 bl _0801BBAA _0801AD16: - ldr r0, _0801ADAC @ =gUnknown_2023E8C + ldr r0, _0801ADAC @ =gProtectStructs lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7753,7 +7753,7 @@ _0801AD16: beq _0801AD28 bl _0801BBAA _0801AD28: - ldr r2, _0801ADB0 @ =gUnknown_2023ECC + ldr r2, _0801ADB0 @ =gSpecialStatuses ldr r0, _0801ADB4 @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7795,14 +7795,14 @@ _0801AD68: beq _0801AD80 bl _0801BBAA _0801AD80: - ldr r1, _0801ADBC @ =gUnknown_2023E82 + ldr r1, _0801ADBC @ =gBattleCommunication movs r0, 0x45 strb r0, [r1, 0x3] bl BattleScriptPushCursor - ldr r1, _0801ADC0 @ =gUnknown_2023D74 - ldr r0, _0801ADC4 @ =gUnknown_81D94CB + ldr r1, _0801ADC0 @ =gBattlescriptCurrInstr + ldr r0, _0801ADC4 @ =BattleScript_ApplySecondaryEffect str r0, [r1] - ldr r2, _0801ADC8 @ =gUnknown_2023DD0 + ldr r2, _0801ADC8 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 6 @@ -7813,14 +7813,14 @@ _0801AD80: _0801ADA0: .4byte gMoveResultFlags _0801ADA4: .4byte gBattleMons _0801ADA8: .4byte gBattlerAttacker -_0801ADAC: .4byte gUnknown_2023E8C -_0801ADB0: .4byte gUnknown_2023ECC +_0801ADAC: .4byte gProtectStructs +_0801ADB0: .4byte gSpecialStatuses _0801ADB4: .4byte gBattlerTarget _0801ADB8: .4byte gBattleMoves -_0801ADBC: .4byte gUnknown_2023E82 -_0801ADC0: .4byte gUnknown_2023D74 -_0801ADC4: .4byte gUnknown_81D94CB -_0801ADC8: .4byte gUnknown_2023DD0 +_0801ADBC: .4byte gBattleCommunication +_0801ADC0: .4byte gBattlescriptCurrInstr +_0801ADC4: .4byte BattleScript_ApplySecondaryEffect +_0801ADC8: .4byte gHitMarker _0801ADCC: ldr r0, _0801AE7C @ =gMoveResultFlags ldrb r1, [r0] @@ -7841,7 +7841,7 @@ _0801ADDC: bne _0801ADF2 bl _0801BBAA _0801ADF2: - ldr r0, _0801AE88 @ =gUnknown_2023E8C + ldr r0, _0801AE88 @ =gProtectStructs lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7862,7 +7862,7 @@ _0801AE04: bne _0801AE1C bl _0801BBAA _0801AE1C: - ldr r2, _0801AE90 @ =gUnknown_2023ECC + ldr r2, _0801AE90 @ =gSpecialStatuses ldr r0, _0801AE94 @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 2 @@ -7892,14 +7892,14 @@ _0801AE44: beq _0801AE5C bl _0801BBAA _0801AE5C: - ldr r1, _0801AE98 @ =gUnknown_2023E82 + ldr r1, _0801AE98 @ =gBattleCommunication movs r0, 0x43 strb r0, [r1, 0x3] bl BattleScriptPushCursor - ldr r1, _0801AE9C @ =gUnknown_2023D74 - ldr r0, _0801AEA0 @ =gUnknown_81D94CB + ldr r1, _0801AE9C @ =gBattlescriptCurrInstr + ldr r0, _0801AEA0 @ =BattleScript_ApplySecondaryEffect str r0, [r1] - ldr r2, _0801AEA4 @ =gUnknown_2023DD0 + ldr r2, _0801AEA4 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 6 @@ -7910,14 +7910,14 @@ _0801AE5C: _0801AE7C: .4byte gMoveResultFlags _0801AE80: .4byte gBattleMons _0801AE84: .4byte gBattlerAttacker -_0801AE88: .4byte gUnknown_2023E8C +_0801AE88: .4byte gProtectStructs _0801AE8C: .4byte gBattleMoves -_0801AE90: .4byte gUnknown_2023ECC +_0801AE90: .4byte gSpecialStatuses _0801AE94: .4byte gBattlerTarget -_0801AE98: .4byte gUnknown_2023E82 -_0801AE9C: .4byte gUnknown_2023D74 -_0801AEA0: .4byte gUnknown_81D94CB -_0801AEA4: .4byte gUnknown_2023DD0 +_0801AE98: .4byte gBattleCommunication +_0801AE9C: .4byte gBattlescriptCurrInstr +_0801AEA0: .4byte BattleScript_ApplySecondaryEffect +_0801AEA4: .4byte gHitMarker _0801AEA8: ldr r0, _0801AFE8 @ =gMoveResultFlags ldrb r1, [r0] @@ -7939,7 +7939,7 @@ _0801AEB8: bne _0801AED0 bl _0801BBAA _0801AED0: - ldr r0, _0801AFF4 @ =gUnknown_2023E8C + ldr r0, _0801AFF4 @ =gProtectStructs lsls r1, 4 adds r1, r0 ldrb r0, [r1, 0x1] @@ -7960,7 +7960,7 @@ _0801AEE2: bne _0801AEFA bl _0801BBAA _0801AEFA: - ldr r3, _0801AFFC @ =gUnknown_2023ECC + ldr r3, _0801AFFC @ =gSpecialStatuses ldr r4, _0801B000 @ =gBattlerTarget mov r8, r4 ldrb r1, [r4] @@ -8067,21 +8067,21 @@ _0801AFBE: orrs r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r1, _0801B008 @ =gUnknown_2023D74 - ldr r0, _0801B00C @ =gUnknown_81D94BE + ldr r1, _0801B008 @ =gBattlescriptCurrInstr + ldr r0, _0801B00C @ =BattleScript_CuteCharmActivates str r0, [r1] bl _0801BB5A .align 2, 0 _0801AFE8: .4byte gMoveResultFlags _0801AFEC: .4byte gBattleMons _0801AFF0: .4byte gBattlerAttacker -_0801AFF4: .4byte gUnknown_2023E8C +_0801AFF4: .4byte gProtectStructs _0801AFF8: .4byte gBattleMoves -_0801AFFC: .4byte gUnknown_2023ECC +_0801AFFC: .4byte gSpecialStatuses _0801B000: .4byte gBattlerTarget _0801B004: .4byte gBitTable -_0801B008: .4byte gUnknown_2023D74 -_0801B00C: .4byte gUnknown_81D94BE +_0801B008: .4byte gBattlescriptCurrInstr +_0801B00C: .4byte BattleScript_CuteCharmActivates _0801B010: movs r4, 0 mov r10, r4 @@ -8399,8 +8399,8 @@ _0801B302: str r0, [r2] _0801B304: bl BattleScriptPushCursor - ldr r1, _0801B344 @ =gUnknown_2023D74 - ldr r0, _0801B348 @ =gUnknown_81D94D1 + ldr r1, _0801B344 @ =gBattlescriptCurrInstr + ldr r0, _0801B348 @ =BattleScript_AbilityCuredStatus str r0, [r1] ldr r0, _0801B34C @ =gBattleScripting mov r1, r10 @@ -8419,13 +8419,13 @@ _0801B304: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec bl _0801BBC6 .align 2, 0 _0801B33C: .4byte gBattleMons _0801B340: .4byte 0xfff0ffff -_0801B344: .4byte gUnknown_2023D74 -_0801B348: .4byte gUnknown_81D94D1 +_0801B344: .4byte gBattlescriptCurrInstr +_0801B348: .4byte BattleScript_AbilityCuredStatus _0801B34C: .4byte gBattleScripting _0801B350: .4byte gActiveBattler _0801B354: .4byte gUnknown_2023C30 @@ -8465,7 +8465,7 @@ _0801B386: cmp r0, 0x3B bne _0801B3AA mov r0, r10 - bl sub_8019DAC + bl CastformDataTypeChange lsls r0, 24 lsrs r0, 24 mov r9, r0 @@ -8493,7 +8493,7 @@ _0801B3C8: beq _0801B3D4 bl _0801BBAA _0801B3D4: - ldr r4, _0801B434 @ =gUnknown_2023DD0 + ldr r4, _0801B434 @ =gHitMarker ldr r1, [r4] movs r0, 0x80 lsls r0, 7 @@ -8520,7 +8520,7 @@ _0801B3E6: movs r0, 0x2 strb r0, [r1] _0801B408: - ldr r1, _0801B43C @ =gUnknown_2023E82 + ldr r1, _0801B43C @ =gBattleCommunication ldr r0, [r6] adds r0, 0xB4 ldrb r0, [r0] @@ -8531,8 +8531,8 @@ _0801B408: ldrb r0, [r0] strb r0, [r1, 0x17] bl BattleScriptPushCursor - ldr r1, _0801B448 @ =gUnknown_2023D74 - ldr r0, _0801B44C @ =gUnknown_81D94CE + ldr r1, _0801B448 @ =gBattlescriptCurrInstr + ldr r0, _0801B44C @ =BattleScript_SynchronizeActivates str r0, [r1] ldr r0, [r4] movs r1, 0x80 @@ -8541,13 +8541,13 @@ _0801B408: str r0, [r4] b _0801BB5A .align 2, 0 -_0801B434: .4byte gUnknown_2023DD0 +_0801B434: .4byte gHitMarker _0801B438: .4byte 0xffffbfff -_0801B43C: .4byte gUnknown_2023E82 +_0801B43C: .4byte gBattleCommunication _0801B440: .4byte gBattleScripting _0801B444: .4byte gBattlerTarget -_0801B448: .4byte gUnknown_2023D74 -_0801B44C: .4byte gUnknown_81D94CE +_0801B448: .4byte gBattlescriptCurrInstr +_0801B44C: .4byte BattleScript_SynchronizeActivates _0801B450: mov r1, r8 ldrb r0, [r1] @@ -8555,7 +8555,7 @@ _0801B450: beq _0801B45A b _0801BBAA _0801B45A: - ldr r4, _0801B4B8 @ =gUnknown_2023DD0 + ldr r4, _0801B4B8 @ =gHitMarker ldr r1, [r4] movs r0, 0x80 lsls r0, 7 @@ -8583,7 +8583,7 @@ _0801B46A: movs r0, 0x2 strb r0, [r1] _0801B48E: - ldr r1, _0801B4C0 @ =gUnknown_2023E82 + ldr r1, _0801B4C0 @ =gBattleCommunication ldr r0, [r6] adds r0, 0xB4 ldrb r0, [r0] @@ -8593,8 +8593,8 @@ _0801B48E: ldrb r0, [r0] strb r0, [r1, 0x17] bl BattleScriptPushCursor - ldr r1, _0801B4CC @ =gUnknown_2023D74 - ldr r0, _0801B4D0 @ =gUnknown_81D94CE + ldr r1, _0801B4CC @ =gBattlescriptCurrInstr + ldr r0, _0801B4D0 @ =BattleScript_SynchronizeActivates str r0, [r1] ldr r0, [r4] movs r1, 0x80 @@ -8603,13 +8603,13 @@ _0801B48E: str r0, [r4] b _0801BB5A .align 2, 0 -_0801B4B8: .4byte gUnknown_2023DD0 +_0801B4B8: .4byte gHitMarker _0801B4BC: .4byte 0xffffbfff -_0801B4C0: .4byte gUnknown_2023E82 +_0801B4C0: .4byte gBattleCommunication _0801B4C4: .4byte gBattleScripting _0801B4C8: .4byte gBattlerAttacker -_0801B4CC: .4byte gUnknown_2023D74 -_0801B4D0: .4byte gUnknown_81D94CE +_0801B4CC: .4byte gBattlescriptCurrInstr +_0801B4D0: .4byte BattleScript_SynchronizeActivates _0801B4D4: movs r5, 0 ldr r0, _0801B50C @ =gBattlersCount @@ -9336,7 +9336,7 @@ _0801BA54: .4byte gBattlersCount _0801BA58: .4byte gBattleMons _0801BA5C: .4byte gLastUsedAbility _0801BA60: - ldr r0, _0801BA78 @ =gUnknown_81D92F8 + ldr r0, _0801BA78 @ =BattleScript_CastformChange bl BattleScriptPushCursorAndCallback ldr r0, _0801BA7C @ =gBattleScripting strb r4, [r0, 0x17] @@ -9349,11 +9349,11 @@ _0801BA6A: strb r1, [r0] b _0801BBAA .align 2, 0 -_0801BA78: .4byte gUnknown_81D92F8 +_0801BA78: .4byte BattleScript_CastformChange _0801BA7C: .4byte gBattleScripting _0801BA80: .4byte gBattleStruct _0801BA84: - ldr r0, _0801BAA0 @ =gUnknown_81D92F8 + ldr r0, _0801BAA0 @ =BattleScript_CastformChange bl BattleScriptPushCursorAndCallback ldr r0, _0801BAA4 @ =gBattleScripting mov r3, r10 @@ -9366,7 +9366,7 @@ _0801BA84: strb r1, [r0] b _0801BBC6 .align 2, 0 -_0801BAA0: .4byte gUnknown_81D92F8 +_0801BAA0: .4byte BattleScript_CastformChange _0801BAA4: .4byte gBattleScripting _0801BAA8: .4byte gBattleStruct _0801BAAC: @@ -9376,14 +9376,14 @@ _0801BAAC: ldr r1, _0801BAC0 @ =0xfff7ffff ands r0, r1 str r0, [r2] - ldr r0, _0801BAC4 @ =gUnknown_81D9307 + ldr r0, _0801BAC4 @ =BattleScript_IntimidateActivatesEnd3 bl BattleScriptPushCursorAndCallback b _0801BB52 .align 2, 0 _0801BAC0: .4byte 0xfff7ffff -_0801BAC4: .4byte gUnknown_81D9307 +_0801BAC4: .4byte BattleScript_IntimidateActivatesEnd3 _0801BAC8: - ldr r0, _0801BB18 @ =gUnknown_81D92A1 + ldr r0, _0801BB18 @ =BattleScript_TraceActivates bl BattleScriptPushCursorAndCallback ldr r1, _0801BB1C @ =gStatuses3 ldr r0, [sp, 0x18] @@ -9422,7 +9422,7 @@ _0801BAC8: strb r0, [r1, 0x3] b _0801BBAA .align 2, 0 -_0801BB18: .4byte gUnknown_81D92A1 +_0801BB18: .4byte BattleScript_TraceActivates _0801BB1C: .4byte gStatuses3 _0801BB20: .4byte 0xffefffff _0801BB24: .4byte gBattleScripting @@ -9439,8 +9439,8 @@ _0801BB3C: ands r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r1, _0801BB6C @ =gUnknown_2023D74 - ldr r0, _0801BB70 @ =gUnknown_81D9310 + ldr r1, _0801BB6C @ =gBattlescriptCurrInstr + ldr r0, _0801BB70 @ =BattleScript_IntimidateActivates str r0, [r1] _0801BB52: ldr r0, _0801BB74 @ =gBattleStruct @@ -9456,8 +9456,8 @@ _0801BB5A: b _0801BBAA .align 2, 0 _0801BB68: .4byte 0xfff7ffff -_0801BB6C: .4byte gUnknown_2023D74 -_0801BB70: .4byte gUnknown_81D9310 +_0801BB6C: .4byte gBattlescriptCurrInstr +_0801BB70: .4byte BattleScript_IntimidateActivates _0801BB74: .4byte gBattleStruct _0801BB78: movs r5, 0 @@ -9520,7 +9520,7 @@ _0801BBE0: .4byte gLastUsedAbility thumb_func_start BattleScriptExecute BattleScriptExecute: @ 801BBE4 - ldr r1, _0801BC10 @ =gUnknown_2023D74 + ldr r1, _0801BC10 @ =gBattlescriptCurrInstr str r0, [r1] ldr r0, _0801BC14 @ =gBattleResources ldr r0, [r0] @@ -9543,7 +9543,7 @@ BattleScriptExecute: @ 801BBE4 strb r0, [r1] bx lr .align 2, 0 -_0801BC10: .4byte gUnknown_2023D74 +_0801BC10: .4byte gBattlescriptCurrInstr _0801BC14: .4byte gBattleResources _0801BC18: .4byte gBattleMainFunc _0801BC1C: .4byte RunBattleScriptCommands_PopCallbacksStack @@ -9555,7 +9555,7 @@ BattleScriptPushCursorAndCallback: @ 801BC24 push {r4,lr} adds r4, r0, 0 bl BattleScriptPushCursor - ldr r0, _0801BC58 @ =gUnknown_2023D74 + ldr r0, _0801BC58 @ =gBattlescriptCurrInstr str r4, [r0] ldr r0, _0801BC5C @ =gBattleResources ldr r0, [r0] @@ -9577,14 +9577,14 @@ BattleScriptPushCursorAndCallback: @ 801BC24 pop {r0} bx r0 .align 2, 0 -_0801BC58: .4byte gUnknown_2023D74 +_0801BC58: .4byte gBattlescriptCurrInstr _0801BC5C: .4byte gBattleResources _0801BC60: .4byte gBattleMainFunc _0801BC64: .4byte sub_8015C74 thumb_func_end BattleScriptPushCursorAndCallback - thumb_func_start sub_801BC68 -sub_801BC68: @ 801BC68 + thumb_func_start ItemBattleEffects +ItemBattleEffects: @ 801BC68 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -9764,7 +9764,7 @@ _0801BDD0: ldr r0, _0801BDFC @ =gBattlerAttacker strb r7, [r0] strb r7, [r1] - ldr r0, _0801BE00 @ =gUnknown_81D95D9 + ldr r0, _0801BE00 @ =BattleScript_WhiteHerbEnd2 bl BattleScriptExecute bl _0801CFA6 .align 2, 0 @@ -9773,7 +9773,7 @@ _0801BDF0: .4byte gBattleScripting _0801BDF4: .4byte gPotentialItemEffectBattler _0801BDF8: .4byte gActiveBattler _0801BDFC: .4byte gBattlerAttacker -_0801BE00: .4byte gUnknown_81D95D9 +_0801BE00: .4byte BattleScript_WhiteHerbEnd2 _0801BE04: ldr r1, _0801BE2C @ =gBattleMons movs r0, 0x58 @@ -9874,12 +9874,12 @@ _0801BF14: ldr r0, [r4] negs r0, r0 str r0, [r4] - ldr r0, _0801BF28 @ =gUnknown_81D95EF + ldr r0, _0801BF28 @ =BattleScript_ItemHealHP_RemoveItem bl BattleScriptExecute b _0801C27E .align 2, 0 _0801BF24: .4byte gBattleMoveDamage -_0801BF28: .4byte gUnknown_81D95EF +_0801BF28: .4byte BattleScript_ItemHealHP_RemoveItem _0801BF2C: cmp r6, 0 beq _0801BF34 @@ -9980,7 +9980,7 @@ _0801BFE0: strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] - ldr r0, _0801C024 @ =gUnknown_81D960C + ldr r0, _0801C024 @ =BattleScript_BerryPPHealEnd2 bl BattleScriptExecute mov r1, r10 adds r1, 0x9 @@ -9994,13 +9994,13 @@ _0801BFE0: bl BtlController_EmitSetMonData ldr r0, _0801C028 @ =gActiveBattler ldrb r0, [r0] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec movs r0, 0x3 str r0, [sp, 0xC] bl _0801C95A .align 2, 0 _0801C020: .4byte gBattleTextBuff1 -_0801C024: .4byte gUnknown_81D960C +_0801C024: .4byte BattleScript_BerryPPHealEnd2 _0801C028: .4byte gActiveBattler _0801C02C: ldr r0, _0801C080 @ =gBattleMons @@ -10042,7 +10042,7 @@ _0801C066: ldr r0, _0801C090 @ =gBattlerAttacker strb r7, [r0] strb r7, [r1] - ldr r0, _0801C094 @ =gUnknown_81D95D9 + ldr r0, _0801C094 @ =BattleScript_WhiteHerbEnd2 bl BattleScriptExecute bl _0801C952 .align 2, 0 @@ -10051,7 +10051,7 @@ _0801C084: .4byte gBattleScripting _0801C088: .4byte gPotentialItemEffectBattler _0801C08C: .4byte gActiveBattler _0801C090: .4byte gBattlerAttacker -_0801C094: .4byte gUnknown_81D95D9 +_0801C094: .4byte BattleScript_WhiteHerbEnd2 _0801C098: movs r0, 0x58 muls r0, r7 @@ -10088,7 +10088,7 @@ _0801C0D4: ldr r0, [r3] negs r0, r0 str r0, [r3] - ldr r0, _0801C0F4 @ =gUnknown_81D961C + ldr r0, _0801C0F4 @ =BattleScript_ItemHealHP_End2 bl BattleScriptExecute movs r0, 0x4 str r0, [sp, 0xC] @@ -10098,7 +10098,7 @@ _0801C0D4: bl _0801C952 .align 2, 0 _0801C0F0: .4byte gBattleMoveDamage -_0801C0F4: .4byte gUnknown_81D961C +_0801C0F4: .4byte BattleScript_ItemHealHP_End2 _0801C0F8: movs r0, 0x58 adds r1, r7, 0 @@ -10285,22 +10285,22 @@ _0801C248: lsls r0, 24 cmp r0, 0 bge _0801C278 - ldr r0, _0801C274 @ =gUnknown_81D964F + ldr r0, _0801C274 @ =BattleScript_BerryConfuseHealEnd2 bl BattleScriptExecute b _0801C27E .align 2, 0 _0801C26C: .4byte gBattleTextBuff1 _0801C270: .4byte gBattleMoveDamage -_0801C274: .4byte gUnknown_81D964F +_0801C274: .4byte BattleScript_BerryConfuseHealEnd2 _0801C278: - ldr r0, _0801C284 @ =gUnknown_81D95EF + ldr r0, _0801C284 @ =BattleScript_ItemHealHP_RemoveItem bl BattleScriptExecute _0801C27E: movs r0, 0x4 str r0, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C284: .4byte gUnknown_81D95EF +_0801C284: .4byte BattleScript_ItemHealHP_RemoveItem _0801C288: movs r0, 0x58 adds r1, r7, 0 @@ -10361,22 +10361,22 @@ _0801C2DC: cmp r0, 0 bge _0801C30C _0801C2F8: - ldr r0, _0801C308 @ =gUnknown_81D964F + ldr r0, _0801C308 @ =BattleScript_BerryConfuseHealEnd2 bl BattleScriptExecute b _0801C312 .align 2, 0 _0801C300: .4byte gBattleTextBuff1 _0801C304: .4byte gBattleMoveDamage -_0801C308: .4byte gUnknown_81D964F +_0801C308: .4byte BattleScript_BerryConfuseHealEnd2 _0801C30C: - ldr r0, _0801C318 @ =gUnknown_81D95EF + ldr r0, _0801C318 @ =BattleScript_ItemHealHP_RemoveItem bl BattleScriptExecute _0801C312: movs r3, 0x4 str r3, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C318: .4byte gUnknown_81D95EF +_0801C318: .4byte BattleScript_ItemHealHP_RemoveItem _0801C31C: movs r0, 0x58 adds r5, r7, 0 @@ -10436,22 +10436,22 @@ _0801C36E: cmp r0, 0 bge _0801C3A0 _0801C38A: - ldr r0, _0801C39C @ =gUnknown_81D964F + ldr r0, _0801C39C @ =BattleScript_BerryConfuseHealEnd2 bl BattleScriptExecute b _0801C3A6 .align 2, 0 _0801C394: .4byte gBattleTextBuff1 _0801C398: .4byte gBattleMoveDamage -_0801C39C: .4byte gUnknown_81D964F +_0801C39C: .4byte BattleScript_BerryConfuseHealEnd2 _0801C3A0: - ldr r0, _0801C3AC @ =gUnknown_81D95EF + ldr r0, _0801C3AC @ =BattleScript_ItemHealHP_RemoveItem bl BattleScriptExecute _0801C3A6: movs r2, 0x4 str r2, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C3AC: .4byte gUnknown_81D95EF +_0801C3AC: .4byte BattleScript_ItemHealHP_RemoveItem _0801C3B0: movs r0, 0x58 muls r0, r7 @@ -10631,7 +10631,7 @@ _0801C4E8: _0801C506: strb r0, [r1, 0x10] strb r6, [r1, 0x11] - ldr r0, _0801C524 @ =gUnknown_81D9679 + ldr r0, _0801C524 @ =BattleScript_BerryStatRaiseEnd2 bl BattleScriptExecute movs r2, 0x5 str r2, [sp, 0xC] @@ -10640,7 +10640,7 @@ _0801C506: _0801C518: .4byte gBattleTextBuff1 _0801C51C: .4byte gEffectBattler _0801C520: .4byte gBattleScripting -_0801C524: .4byte gUnknown_81D9679 +_0801C524: .4byte BattleScript_BerryStatRaiseEnd2 _0801C528: movs r0, 0x58 muls r0, r7 @@ -10681,7 +10681,7 @@ _0801C550: _0801C56C: strb r0, [r1, 0x10] strb r6, [r1, 0x11] - ldr r0, _0801C588 @ =gUnknown_81D9679 + ldr r0, _0801C588 @ =BattleScript_BerryStatRaiseEnd2 bl BattleScriptExecute movs r5, 0x5 str r5, [sp, 0xC] @@ -10690,7 +10690,7 @@ _0801C56C: _0801C57C: .4byte gBattleTextBuff1 _0801C580: .4byte gEffectBattler _0801C584: .4byte gBattleScripting -_0801C588: .4byte gUnknown_81D9679 +_0801C588: .4byte BattleScript_BerryStatRaiseEnd2 _0801C58C: movs r0, 0x58 adds r5, r7, 0 @@ -10723,13 +10723,13 @@ _0801C5AC: _0801C5C2: orrs r2, r3 str r2, [r1] - ldr r0, _0801C5D4 @ =gUnknown_81D9694 + ldr r0, _0801C5D4 @ =BattleScript_BerryFocusEnergyEnd2 bl BattleScriptExecute movs r2, 0x2 str r2, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C5D4: .4byte gUnknown_81D9694 +_0801C5D4: .4byte BattleScript_BerryFocusEnergyEnd2 _0801C5D8: cmp r6, 0 beq _0801C5DE @@ -10831,7 +10831,7 @@ _0801C638: adds r0, 0x6 strb r0, [r1, 0x10] strb r2, [r1, 0x11] - ldr r0, _0801C6BC @ =gUnknown_81D9679 + ldr r0, _0801C6BC @ =BattleScript_BerryStatRaiseEnd2 bl BattleScriptExecute movs r0, 0x5 str r0, [sp, 0xC] @@ -10842,7 +10842,7 @@ _0801C6AC: .4byte gBattleTextBuff1 _0801C6B0: .4byte gBattleTextBuff2 _0801C6B4: .4byte gEffectBattler _0801C6B8: .4byte gBattleScripting -_0801C6BC: .4byte gUnknown_81D9679 +_0801C6BC: .4byte BattleScript_BerryStatRaiseEnd2 _0801C6C0: movs r0, 0x58 adds r1, r7, 0 @@ -10861,13 +10861,13 @@ _0801C6D8: negs r0, r0 ands r2, r0 str r2, [r1] - ldr r0, _0801C6EC @ =gUnknown_81D9531 + ldr r0, _0801C6EC @ =BattleScript_BerryCurePrlzEnd2 bl BattleScriptExecute movs r1, 0x1 str r1, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C6EC: .4byte gUnknown_81D9531 +_0801C6EC: .4byte BattleScript_BerryCurePrlzEnd2 _0801C6F0: movs r0, 0x58 adds r1, r7, 0 @@ -10885,14 +10885,14 @@ _0801C708: ldr r0, _0801C71C @ =0xfffff077 ands r2, r0 str r2, [r1] - ldr r0, _0801C720 @ =gUnknown_81D9549 + ldr r0, _0801C720 @ =BattleScript_BerryCurePsnEnd2 bl BattleScriptExecute movs r2, 0x1 str r2, [sp, 0xC] b _0801C95A .align 2, 0 _0801C71C: .4byte 0xfffff077 -_0801C720: .4byte gUnknown_81D9549 +_0801C720: .4byte BattleScript_BerryCurePsnEnd2 _0801C724: movs r0, 0x58 adds r1, r7, 0 @@ -10911,13 +10911,13 @@ _0801C73C: negs r0, r0 ands r2, r0 str r2, [r1] - ldr r0, _0801C750 @ =gUnknown_81D9561 + ldr r0, _0801C750 @ =BattleScript_BerryCureBrnEnd2 bl BattleScriptExecute movs r3, 0x1 str r3, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C750: .4byte gUnknown_81D9561 +_0801C750: .4byte BattleScript_BerryCureBrnEnd2 _0801C754: movs r0, 0x58 adds r1, r7, 0 @@ -10936,13 +10936,13 @@ _0801C76C: negs r0, r0 ands r2, r0 str r2, [r1] - ldr r0, _0801C780 @ =gUnknown_81D9579 + ldr r0, _0801C780 @ =BattleScript_BerryCureFrzEnd2 bl BattleScriptExecute movs r5, 0x1 str r5, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C780: .4byte gUnknown_81D9579 +_0801C780: .4byte BattleScript_BerryCureFrzEnd2 _0801C784: movs r0, 0x58 adds r3, r7, 0 @@ -10968,11 +10968,11 @@ _0801C79C: ldr r2, _0801C7B8 @ =0xf7ffffff ands r0, r2 str r0, [r1] - ldr r0, _0801C7BC @ =gUnknown_81D9591 + ldr r0, _0801C7BC @ =BattleScript_BerryCureSlpEnd2 b _0801C906 .align 2, 0 _0801C7B8: .4byte 0xf7ffffff -_0801C7BC: .4byte gUnknown_81D9591 +_0801C7BC: .4byte BattleScript_BerryCureSlpEnd2 _0801C7C0: movs r0, 0x58 adds r1, r7, 0 @@ -10991,13 +10991,13 @@ _0801C7D8: negs r0, r0 ands r2, r0 str r2, [r1] - ldr r0, _0801C7EC @ =gUnknown_81D95A9 + ldr r0, _0801C7EC @ =BattleScript_BerryCureConfusionEnd2 bl BattleScriptExecute movs r1, 0x2 str r1, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C7EC: .4byte gUnknown_81D95A9 +_0801C7EC: .4byte BattleScript_BerryCureConfusionEnd2 _0801C7F0: movs r0, 0x58 adds r5, r7, 0 @@ -11098,7 +11098,7 @@ _0801C8AE: mov r5, r10 cmp r5, 0x1 bgt _0801C8E0 - ldr r1, _0801C8DC @ =gUnknown_2023E82 + ldr r1, _0801C8DC @ =gBattleCommunication movs r0, 0 b _0801C8E4 .align 2, 0 @@ -11110,9 +11110,9 @@ _0801C8CC: .4byte gUnknown_82500A4 _0801C8D0: .4byte gUnknown_82500AC _0801C8D4: .4byte gUnknown_82500B4 _0801C8D8: .4byte gUnknown_82500BC -_0801C8DC: .4byte gUnknown_2023E82 +_0801C8DC: .4byte gBattleCommunication _0801C8E0: - ldr r1, _0801C910 @ =gUnknown_2023E82 + ldr r1, _0801C910 @ =gBattleCommunication movs r0, 0x1 _0801C8E4: strb r0, [r1, 0x5] @@ -11131,16 +11131,16 @@ _0801C8E4: subs r1, 0x8 ands r0, r1 str r0, [r3] - ldr r0, _0801C918 @ =gUnknown_81D95BF + ldr r0, _0801C918 @ =BattleScript_BerryCureChosenStatusEnd2 _0801C906: bl BattleScriptExecute movs r0, 0x1 str r0, [sp, 0xC] b _0801C95A .align 2, 0 -_0801C910: .4byte gUnknown_2023E82 +_0801C910: .4byte gBattleCommunication _0801C914: .4byte gBattleMons -_0801C918: .4byte gUnknown_81D95BF +_0801C918: .4byte BattleScript_BerryCureChosenStatusEnd2 _0801C91C: movs r0, 0x58 adds r1, r7, 0 @@ -11160,9 +11160,9 @@ _0801C91C: ldr r0, _0801C97C @ =gBattleTextBuff1 ldr r1, _0801C980 @ =gUnknown_82500C4 bl StringCopy - ldr r0, _0801C984 @ =gUnknown_81D95BF + ldr r0, _0801C984 @ =BattleScript_BerryCureChosenStatusEnd2 bl BattleScriptExecute - ldr r1, _0801C988 @ =gUnknown_2023E82 + ldr r1, _0801C988 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] movs r1, 0x2 @@ -11191,8 +11191,8 @@ _0801C95A: _0801C978: .4byte 0xfff0ffff _0801C97C: .4byte gBattleTextBuff1 _0801C980: .4byte gUnknown_82500C4 -_0801C984: .4byte gUnknown_81D95BF -_0801C988: .4byte gUnknown_2023E82 +_0801C984: .4byte BattleScript_BerryCureChosenStatusEnd2 +_0801C988: .4byte gBattleCommunication _0801C98C: .4byte gBattleScripting _0801C990: .4byte gPotentialItemEffectBattler _0801C994: .4byte gActiveBattler @@ -11344,16 +11344,16 @@ _0801CAE6: ands r1, r0 str r1, [r2] bl BattleScriptPushCursor - ldr r1, _0801CB04 @ =gUnknown_2023D74 - ldr r0, _0801CB08 @ =gUnknown_81D9537 + ldr r1, _0801CB04 @ =gBattlescriptCurrInstr + ldr r0, _0801CB08 @ =BattleScript_BerryCureParRet str r0, [r1] movs r0, 0x1 str r0, [sp, 0xC] b _0801CDF6 .align 2, 0 _0801CB00: .4byte gBattleMons -_0801CB04: .4byte gUnknown_2023D74 -_0801CB08: .4byte gUnknown_81D9537 +_0801CB04: .4byte gBattlescriptCurrInstr +_0801CB08: .4byte BattleScript_BerryCureParRet _0801CB0C: ldr r1, _0801CB38 @ =gBattleMons movs r0, 0x58 @@ -11371,8 +11371,8 @@ _0801CB22: ands r1, r0 str r1, [r2] bl BattleScriptPushCursor - ldr r1, _0801CB40 @ =gUnknown_2023D74 - ldr r0, _0801CB44 @ =gUnknown_81D954F + ldr r1, _0801CB40 @ =gBattlescriptCurrInstr + ldr r0, _0801CB44 @ =BattleScript_BerryCurePsnRet str r0, [r1] movs r1, 0x1 str r1, [sp, 0xC] @@ -11380,8 +11380,8 @@ _0801CB22: .align 2, 0 _0801CB38: .4byte gBattleMons _0801CB3C: .4byte 0xfffff077 -_0801CB40: .4byte gUnknown_2023D74 -_0801CB44: .4byte gUnknown_81D954F +_0801CB40: .4byte gBattlescriptCurrInstr +_0801CB44: .4byte BattleScript_BerryCurePsnRet _0801CB48: ldr r1, _0801CB78 @ =gBattleMons movs r0, 0x58 @@ -11400,16 +11400,16 @@ _0801CB5E: ands r1, r0 str r1, [r2] bl BattleScriptPushCursor - ldr r1, _0801CB7C @ =gUnknown_2023D74 - ldr r0, _0801CB80 @ =gUnknown_81D9567 + ldr r1, _0801CB7C @ =gBattlescriptCurrInstr + ldr r0, _0801CB80 @ =BattleScript_BerryCureBrnRet str r0, [r1] movs r2, 0x1 str r2, [sp, 0xC] b _0801CDF6 .align 2, 0 _0801CB78: .4byte gBattleMons -_0801CB7C: .4byte gUnknown_2023D74 -_0801CB80: .4byte gUnknown_81D9567 +_0801CB7C: .4byte gBattlescriptCurrInstr +_0801CB80: .4byte BattleScript_BerryCureBrnRet _0801CB84: ldr r1, _0801CBB4 @ =gBattleMons movs r0, 0x58 @@ -11428,16 +11428,16 @@ _0801CB9A: ands r1, r0 str r1, [r2] bl BattleScriptPushCursor - ldr r1, _0801CBB8 @ =gUnknown_2023D74 - ldr r0, _0801CBBC @ =gUnknown_81D957F + ldr r1, _0801CBB8 @ =gBattlescriptCurrInstr + ldr r0, _0801CBBC @ =BattleScript_BerryCureFrzRet str r0, [r1] movs r3, 0x1 str r3, [sp, 0xC] b _0801CDF6 .align 2, 0 _0801CBB4: .4byte gBattleMons -_0801CBB8: .4byte gUnknown_2023D74 -_0801CBBC: .4byte gUnknown_81D957F +_0801CBB8: .4byte gBattlescriptCurrInstr +_0801CBBC: .4byte BattleScript_BerryCureFrzRet _0801CBC0: ldr r2, _0801CBF8 @ =gBattleMons movs r0, 0x58 @@ -11464,14 +11464,14 @@ _0801CBDA: ands r0, r1 str r0, [r2] bl BattleScriptPushCursor - ldr r1, _0801CC00 @ =gUnknown_2023D74 - ldr r0, _0801CC04 @ =gUnknown_81D9597 + ldr r1, _0801CC00 @ =gBattlescriptCurrInstr + ldr r0, _0801CC04 @ =BattleScript_BerryCureSlpRet b _0801CD58 .align 2, 0 _0801CBF8: .4byte gBattleMons _0801CBFC: .4byte 0xf7ffffff -_0801CC00: .4byte gUnknown_2023D74 -_0801CC04: .4byte gUnknown_81D9597 +_0801CC00: .4byte gBattlescriptCurrInstr +_0801CC04: .4byte BattleScript_BerryCureSlpRet _0801CC08: ldr r1, _0801CC38 @ =gBattleMons movs r0, 0x58 @@ -11490,16 +11490,16 @@ _0801CC1E: ands r1, r0 str r1, [r2] bl BattleScriptPushCursor - ldr r1, _0801CC3C @ =gUnknown_2023D74 - ldr r0, _0801CC40 @ =gUnknown_81D95AF + ldr r1, _0801CC3C @ =gBattlescriptCurrInstr + ldr r0, _0801CC40 @ =BattleScript_BerryCureConfusionRet str r0, [r1] movs r0, 0x2 str r0, [sp, 0xC] b _0801CDF6 .align 2, 0 _0801CC38: .4byte gBattleMons -_0801CC3C: .4byte gUnknown_2023D74 -_0801CC40: .4byte gUnknown_81D95AF +_0801CC3C: .4byte gBattlescriptCurrInstr +_0801CC40: .4byte BattleScript_BerryCureConfusionRet _0801CC44: ldr r1, _0801CC80 @ =gBattleMons movs r0, 0x58 @@ -11521,11 +11521,11 @@ _0801CC5C: ldr r1, _0801CC8C @ =gUnknown_82500C4 bl StringCopy bl BattleScriptPushCursor - ldr r1, _0801CC90 @ =gUnknown_2023E82 + ldr r1, _0801CC90 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] - ldr r1, _0801CC94 @ =gUnknown_2023D74 - ldr r0, _0801CC98 @ =gUnknown_81D95C5 + ldr r1, _0801CC94 @ =gBattlescriptCurrInstr + ldr r0, _0801CC98 @ =BattleScript_BerryCureChosenStatusRet str r0, [r1] movs r1, 0x2 str r1, [sp, 0xC] @@ -11535,9 +11535,9 @@ _0801CC80: .4byte gBattleMons _0801CC84: .4byte 0xfff0ffff _0801CC88: .4byte gBattleTextBuff1 _0801CC8C: .4byte gUnknown_82500C4 -_0801CC90: .4byte gUnknown_2023E82 -_0801CC94: .4byte gUnknown_2023D74 -_0801CC98: .4byte gUnknown_81D95C5 +_0801CC90: .4byte gBattleCommunication +_0801CC94: .4byte gBattlescriptCurrInstr +_0801CC98: .4byte BattleScript_BerryCureChosenStatusRet _0801CC9C: ldr r4, _0801CD60 @ =gBattleMons movs r0, 0x58 @@ -11629,10 +11629,10 @@ _0801CD3E: ands r0, r1 str r0, [r5] bl BattleScriptPushCursor - ldr r0, _0801CD84 @ =gUnknown_2023E82 + ldr r0, _0801CD84 @ =gBattleCommunication strb r4, [r0, 0x5] - ldr r1, _0801CD88 @ =gUnknown_2023D74 - ldr r0, _0801CD8C @ =gUnknown_81D95C5 + ldr r1, _0801CD88 @ =gBattlescriptCurrInstr + ldr r0, _0801CD8C @ =BattleScript_BerryCureChosenStatusRet _0801CD58: str r0, [r1] movs r5, 0x1 @@ -11648,9 +11648,9 @@ _0801CD74: .4byte gUnknown_82500A4 _0801CD78: .4byte gUnknown_82500AC _0801CD7C: .4byte gUnknown_82500B4 _0801CD80: .4byte gUnknown_82500BC -_0801CD84: .4byte gUnknown_2023E82 -_0801CD88: .4byte gUnknown_2023D74 -_0801CD8C: .4byte gUnknown_81D95C5 +_0801CD84: .4byte gBattleCommunication +_0801CD88: .4byte gBattlescriptCurrInstr +_0801CD8C: .4byte BattleScript_BerryCureChosenStatusRet _0801CD90: ldr r0, _0801CDDC @ =gBattleMons mov r8, r0 @@ -11687,16 +11687,16 @@ _0801CDB4: ldr r0, _0801CDE4 @ =gPotentialItemEffectBattler strb r7, [r0] bl BattleScriptPushCursor - ldr r1, _0801CDE8 @ =gUnknown_2023D74 - ldr r0, _0801CDEC @ =gUnknown_81D95DF + ldr r1, _0801CDE8 @ =gBattlescriptCurrInstr + ldr r0, _0801CDEC @ =BattleScript_WhiteHerbRet str r0, [r1] b _0801CFA6 .align 2, 0 _0801CDDC: .4byte gBattleMons _0801CDE0: .4byte gBattleScripting _0801CDE4: .4byte gPotentialItemEffectBattler -_0801CDE8: .4byte gUnknown_2023D74 -_0801CDEC: .4byte gUnknown_81D95DF +_0801CDE8: .4byte gBattlescriptCurrInstr +_0801CDEC: .4byte BattleScript_WhiteHerbRet _0801CDF0: ldr r0, [sp, 0xC] cmp r0, 0 @@ -11721,7 +11721,7 @@ _0801CE08: movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] - bl MarkBufferBankForExecution + bl MarkBattlerForControllerExec b _0801CFA6 .align 2, 0 _0801CE24: .4byte gBattleScripting @@ -11765,7 +11765,7 @@ _0801CE68: beq _0801CE76 b _0801CFA6 _0801CE76: - ldr r2, _0801CEF8 @ =gUnknown_2023ECC + ldr r2, _0801CEF8 @ =gSpecialStatuses ldr r4, _0801CEFC @ =gBattlerTarget ldrb r1, [r4] lsls r0, r1, 2 @@ -11814,23 +11814,23 @@ _0801CE9C: ldrh r0, [r0, 0x28] cmp r0, 0 beq _0801CFA6 - ldr r1, _0801CF0C @ =gUnknown_2023E82 + ldr r1, _0801CF0C @ =gBattleCommunication movs r0, 0x8 strb r0, [r1, 0x3] bl BattleScriptPushCursor movs r0, 0 movs r1, 0 - bl sub_801FF20 + bl SetMoveEffect bl BattleScriptPop b _0801CFA6 .align 2, 0 _0801CEF4: .4byte gMoveResultFlags -_0801CEF8: .4byte gUnknown_2023ECC +_0801CEF8: .4byte gSpecialStatuses _0801CEFC: .4byte gBattlerTarget _0801CF00: .4byte gBattleMoves _0801CF04: .4byte gCurrentMove _0801CF08: .4byte gBattleMons -_0801CF0C: .4byte gUnknown_2023E82 +_0801CF0C: .4byte gBattleCommunication _0801CF10: ldr r0, _0801CFB8 @ =gMoveResultFlags ldrb r0, [r0] @@ -11838,7 +11838,7 @@ _0801CF10: ands r5, r0 cmp r5, 0 bne _0801CFA6 - ldr r1, _0801CFBC @ =gUnknown_2023ECC + ldr r1, _0801CFBC @ =gSpecialStatuses ldr r4, _0801CFC0 @ =gBattlerTarget ldrb r2, [r4] lsls r0, r2, 2 @@ -11898,8 +11898,8 @@ _0801CF88: adds r0, r6 str r5, [r0] bl BattleScriptPushCursor - ldr r1, _0801CFDC @ =gUnknown_2023D74 - ldr r0, _0801CFE0 @ =gUnknown_81D9622 + ldr r1, _0801CFDC @ =gBattlescriptCurrInstr + ldr r0, _0801CFE0 @ =BattleScript_ItemHealHP_Ret str r0, [r1] ldr r0, [sp, 0xC] adds r0, 0x1 @@ -11918,7 +11918,7 @@ _0801CFA6: bx r1 .align 2, 0 _0801CFB8: .4byte gMoveResultFlags -_0801CFBC: .4byte gUnknown_2023ECC +_0801CFBC: .4byte gSpecialStatuses _0801CFC0: .4byte gBattlerTarget _0801CFC4: .4byte 0x0000ffff _0801CFC8: .4byte gBattlerAttacker @@ -11926,9 +11926,9 @@ _0801CFCC: .4byte gBattleMons _0801CFD0: .4byte gLastUsedItem _0801CFD4: .4byte gPotentialItemEffectBattler _0801CFD8: .4byte gBattleScripting -_0801CFDC: .4byte gUnknown_2023D74 -_0801CFE0: .4byte gUnknown_81D9622 - thumb_func_end sub_801BC68 +_0801CFDC: .4byte gBattlescriptCurrInstr +_0801CFE0: .4byte BattleScript_ItemHealHP_Ret + thumb_func_end ItemBattleEffects thumb_func_start ClearFuryCutterDestinyBondGrudge ClearFuryCutterDestinyBondGrudge: @ 801CFE4 @@ -11967,15 +11967,15 @@ _0801D028: .4byte gStatuses3 _0801D02C: .4byte 0xffffbfff thumb_func_end ClearFuryCutterDestinyBondGrudge - thumb_func_start sub_801D030 -sub_801D030: @ 801D030 + thumb_func_start HandleAction_RunBattleScript +HandleAction_RunBattleScript: @ 801D030 push {lr} ldr r0, _0801D050 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _0801D04C ldr r1, _0801D054 @ =gUnknown_825011C - ldr r0, _0801D058 @ =gUnknown_2023D74 + ldr r0, _0801D058 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] lsls r0, 2 @@ -11988,8 +11988,8 @@ _0801D04C: .align 2, 0 _0801D050: .4byte gBattleControllerExecFlags _0801D054: .4byte gUnknown_825011C -_0801D058: .4byte gUnknown_2023D74 - thumb_func_end sub_801D030 +_0801D058: .4byte gBattlescriptCurrInstr + thumb_func_end HandleAction_RunBattleScript thumb_func_start GetMoveTarget GetMoveTarget: @ 801D05C @@ -12197,7 +12197,7 @@ _0801D25E: ldrb r1, [r0] adds r0, r5, 0 bl sub_80C71D0 - ldr r1, _0801D2A0 @ =gUnknown_2023ECC + ldr r1, _0801D2A0 @ =gSpecialStatuses lsls r0, r5, 2 adds r0, r5 lsls r0, 2 @@ -12214,7 +12214,7 @@ _0801D290: .4byte gBattlersCount _0801D294: .4byte gAbsentBattlerFlags _0801D298: .4byte gBitTable _0801D29C: .4byte gBattleMoves -_0801D2A0: .4byte gUnknown_2023ECC +_0801D2A0: .4byte gSpecialStatuses _0801D2A4: ldr r0, _0801D2B8 @ =gBattlerAttacker ldrb r0, [r0] @@ -12414,8 +12414,8 @@ _0801D430: .4byte gBattlerPartyIndexes _0801D434: .4byte gPlayerParty thumb_func_end HasObedientBitSet - thumb_func_start sub_801D438 -sub_801D438: @ 801D438 + thumb_func_start IsMonDisobedient +IsMonDisobedient: @ 801D438 push {r4-r7,lr} mov r7, r8 push {r7} @@ -12547,14 +12547,14 @@ _0801D52E: cmp r0, 0xD6 bne _0801D564 _0801D54E: - ldr r1, _0801D55C @ =gUnknown_2023D74 - ldr r0, _0801D560 @ =gUnknown_81D94DA + ldr r1, _0801D55C @ =gBattlescriptCurrInstr + ldr r0, _0801D560 @ =BattleScript_IgnoresWhileAsleep b _0801D6E2 .align 2, 0 _0801D554: .4byte gCurrentMove _0801D558: .4byte 0xff7fffff -_0801D55C: .4byte gUnknown_2023D74 -_0801D560: .4byte gUnknown_81D94DA +_0801D55C: .4byte gBattlescriptCurrInstr +_0801D560: .4byte BattleScript_IgnoresWhileAsleep _0801D564: bl Random movs r1, 0xFF @@ -12623,15 +12623,15 @@ _0801D5B6: adds r0, r3 ldrh r0, [r0] strh r0, [r4] - ldr r1, _0801D624 @ =gUnknown_2023D74 - ldr r0, _0801D628 @ =gUnknown_81D94EA + ldr r1, _0801D624 @ =gBattlescriptCurrInstr + ldr r0, _0801D628 @ =BattleScript_IgnoresAndUsesRandomMove str r0, [r1] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0801D62C @ =gBattlerTarget strb r0, [r1] - ldr r2, _0801D630 @ =gUnknown_2023DD0 + ldr r2, _0801D630 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 14 @@ -12644,10 +12644,10 @@ _0801D614: .4byte gBitTable _0801D618: .4byte gUnknown_2023D48 _0801D61C: .4byte gUnknown_2023D49 _0801D620: .4byte gUnknown_2023D4E -_0801D624: .4byte gUnknown_2023D74 -_0801D628: .4byte gUnknown_81D94EA +_0801D624: .4byte gBattlescriptCurrInstr +_0801D628: .4byte BattleScript_IgnoresAndUsesRandomMove _0801D62C: .4byte gBattlerTarget -_0801D630: .4byte gUnknown_2023DD0 +_0801D630: .4byte gHitMarker _0801D634: ldr r5, _0801D6B8 @ =gBattleMons ldr r2, _0801D6BC @ =gBattlerAttacker @@ -12712,35 +12712,35 @@ _0801D6AA: ldrb r7, [r7] cmp r2, r7 bne _0801D6CC - ldr r1, _0801D6C4 @ =gUnknown_2023D74 - ldr r0, _0801D6C8 @ =gUnknown_81D9504 + ldr r1, _0801D6C4 @ =gBattlescriptCurrInstr + ldr r0, _0801D6C8 @ =BattleScript_IgnoresAndFallsAsleep b _0801D6E2 .align 2, 0 _0801D6B8: .4byte gBattleMons _0801D6BC: .4byte gBattlerAttacker _0801D6C0: .4byte gBattlersCount -_0801D6C4: .4byte gUnknown_2023D74 -_0801D6C8: .4byte gUnknown_81D9504 +_0801D6C4: .4byte gBattlescriptCurrInstr +_0801D6C8: .4byte BattleScript_IgnoresAndFallsAsleep _0801D6CC: subs r4, r6 cmp r4, r6 blt _0801D6F4 _0801D6D2: bl Random - ldr r2, _0801D6E8 @ =gUnknown_2023E82 + ldr r2, _0801D6E8 @ =gBattleCommunication movs r1, 0x3 ands r1, r0 strb r1, [r2, 0x5] - ldr r1, _0801D6EC @ =gUnknown_2023D74 - ldr r0, _0801D6F0 @ =gUnknown_81D94F2 + ldr r1, _0801D6EC @ =gBattlescriptCurrInstr + ldr r0, _0801D6F0 @ =BattleScript_MoveUsedLoafingAround _0801D6E2: str r0, [r1] movs r0, 0x1 b _0801D738 .align 2, 0 -_0801D6E8: .4byte gUnknown_2023E82 -_0801D6EC: .4byte gUnknown_2023D74 -_0801D6F0: .4byte gUnknown_81D94F2 +_0801D6E8: .4byte gBattleCommunication +_0801D6EC: .4byte gBattlescriptCurrInstr +_0801D6F0: .4byte BattleScript_MoveUsedLoafingAround _0801D6F4: ldr r4, _0801D744 @ =gBattlerAttacker ldrb r1, [r4] @@ -12765,10 +12765,10 @@ _0801D6F4: ldr r1, _0801D750 @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1] - ldr r1, _0801D754 @ =gUnknown_2023D74 - ldr r0, _0801D758 @ =gUnknown_81D951B + ldr r1, _0801D754 @ =gBattlescriptCurrInstr + ldr r0, _0801D758 @ =BattleScript_IgnoresAndHitsItself str r0, [r1] - ldr r2, _0801D75C @ =gUnknown_2023DD0 + ldr r2, _0801D75C @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 12 @@ -12788,9 +12788,9 @@ _0801D744: .4byte gBattlerAttacker _0801D748: .4byte gBattleMons _0801D74C: .4byte gBattleMoveDamage _0801D750: .4byte gBattlerTarget -_0801D754: .4byte gUnknown_2023D74 -_0801D758: .4byte gUnknown_81D951B -_0801D75C: .4byte gUnknown_2023DD0 - thumb_func_end sub_801D438 +_0801D754: .4byte gBattlescriptCurrInstr +_0801D758: .4byte BattleScript_IgnoresAndHitsItself +_0801D75C: .4byte gHitMarker + thumb_func_end IsMonDisobedient .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 8830ae009..0062040ec 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1337,7 +1337,7 @@ sub_80CE8DC: @ 80CE8DC strh r0, [r5, 0x8] movs r2, 0x1 strh r2, [r5, 0x1A] - ldr r0, _080CE944 @ =gUnknown_2023E82 + ldr r0, _080CE944 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -1349,7 +1349,7 @@ sub_80CE8DC: @ 80CE8DC .align 2, 0 _080CE93C: .4byte gTasks _080CE940: .4byte gPlayerParty -_080CE944: .4byte gUnknown_2023E82 +_080CE944: .4byte gBattleCommunication _080CE948: ldr r0, _080CE9A0 @ =gMain ldrh r1, [r0, 0x2C] @@ -1367,7 +1367,7 @@ _080CE948: ldrsh r0, [r2, r3] cmp r0, 0x8 bne _080CE9AC - ldr r4, _080CE9A8 @ =gUnknown_2023E82 + ldr r4, _080CE9A8 @ =gBattleCommunication ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -1395,7 +1395,7 @@ _080CE948: .align 2, 0 _080CE9A0: .4byte gMain _080CE9A4: .4byte gTasks -_080CE9A8: .4byte gUnknown_2023E82 +_080CE9A8: .4byte gBattleCommunication _080CE9AC: mov r1, r8 adds r0, r1, r7 @@ -1584,7 +1584,7 @@ _080CEB68: bl InitMovingBackgroundTask movs r0, 0x11 bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _080CEB88 @ =gUnknown_2023E82 + ldr r1, _080CEB88 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CEB8C @ =gTasks mov r2, r8 @@ -1594,10 +1594,10 @@ _080CEB68: b _080CEFDE .align 2, 0 _080CEB84: .4byte gPaletteFade -_080CEB88: .4byte gUnknown_2023E82 +_080CEB88: .4byte gBattleCommunication _080CEB8C: .4byte gTasks _080CEB90: - ldr r4, _080CEBC8 @ =gUnknown_2023E82 + ldr r4, _080CEBC8 @ =gBattleCommunication ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -1623,10 +1623,10 @@ _080CEBA6: strb r0, [r4, 0x2] bl _080CF528 .align 2, 0 -_080CEBC8: .4byte gUnknown_2023E82 +_080CEBC8: .4byte gBattleCommunication _080CEBCC: .4byte gUnknown_2039A20 _080CEBD0: - ldr r4, _080CEC00 @ =gUnknown_2023E82 + ldr r4, _080CEC00 @ =gBattleCommunication ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -1649,7 +1649,7 @@ _080CEBE6: add r1, r10 b _080CEFDE .align 2, 0 -_080CEC00: .4byte gUnknown_2023E82 +_080CEC00: .4byte gBattleCommunication _080CEC04: .4byte gUnknown_2039A20 _080CEC08: ldr r2, _080CEC44 @ =gUnknown_2039A20 @@ -1665,7 +1665,7 @@ _080CEC1C: ldr r1, [r2] movs r0, 0x3 strb r0, [r1, 0x3] - ldr r0, _080CEC48 @ =gUnknown_2023E82 + ldr r0, _080CEC48 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -1683,10 +1683,10 @@ _080CEC38: b _080CEFDE .align 2, 0 _080CEC44: .4byte gUnknown_2039A20 -_080CEC48: .4byte gUnknown_2023E82 +_080CEC48: .4byte gBattleCommunication _080CEC4C: bl sub_80F5F74 - ldr r1, _080CEC60 @ =gUnknown_2023E82 + ldr r1, _080CEC60 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CEC64 @ =gTasks mov r3, r8 @@ -1695,10 +1695,10 @@ _080CEC4C: adds r1, r0 b _080CEFDE .align 2, 0 -_080CEC60: .4byte gUnknown_2023E82 +_080CEC60: .4byte gBattleCommunication _080CEC64: .4byte gTasks _080CEC68: - ldr r6, _080CEC90 @ =gUnknown_2023E82 + ldr r6, _080CEC90 @ =gBattleCommunication ldrb r0, [r6, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -1718,9 +1718,9 @@ _080CEC7E: strb r0, [r6, 0x2] b _080CEF2E .align 2, 0 -_080CEC90: .4byte gUnknown_2023E82 +_080CEC90: .4byte gBattleCommunication _080CEC94: - ldr r0, _080CECBC @ =gUnknown_2023E82 + ldr r0, _080CECBC @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -1739,7 +1739,7 @@ _080CECAA: add r1, r10 b _080CEFDE .align 2, 0 -_080CECBC: .4byte gUnknown_2023E82 +_080CECBC: .4byte gBattleCommunication _080CECC0: bl IsSEPlaying lsls r0, 24 @@ -1971,7 +1971,7 @@ _080CEEC4: .4byte gPaletteFade _080CEEC8: .4byte gUnknown_2039A20 _080CEECC: .4byte gUnknown_300537C _080CEED0: - ldr r0, _080CEF04 @ =gUnknown_2023E82 + ldr r0, _080CEF04 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -1996,7 +1996,7 @@ _080CEEE4: add r1, r10 b _080CEFDE .align 2, 0 -_080CEF04: .4byte gUnknown_2023E82 +_080CEF04: .4byte gBattleCommunication _080CEF08: .4byte 0x0006001c _080CEF0C: .4byte 0x00007fff _080CEF10: @@ -2299,7 +2299,7 @@ _080CF176: adds r0, 0x1 movs r2, 0 strh r0, [r1, 0x14] - ldr r0, _080CF1B8 @ =gUnknown_2023E82 + ldr r0, _080CF1B8 @ =gBattleCommunication strb r2, [r0, 0x1] bl sub_802DCB8 b _080CF528 @@ -2308,7 +2308,7 @@ _080CF1A8: .4byte gUnknown_83FDF3C _080CF1AC: .4byte gDisplayedStringBattle _080CF1B0: .4byte gTasks _080CF1B4: .4byte gUnknown_83FE791 -_080CF1B8: .4byte gUnknown_2023E82 +_080CF1B8: .4byte gBattleCommunication _080CF1BC: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] @@ -2316,7 +2316,7 @@ _080CF1BC: ands r0, r1 cmp r0, 0 beq _080CF1E2 - ldr r4, _080CF248 @ =gUnknown_2023E82 + ldr r4, _080CF248 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 beq _080CF1E2 @@ -2333,7 +2333,7 @@ _080CF1E2: ands r0, r1 cmp r0, 0 beq _080CF208 - ldr r4, _080CF248 @ =gUnknown_2023E82 + ldr r4, _080CF248 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _080CF208 @@ -2359,7 +2359,7 @@ _080CF208: bl sub_802DB7C movs r0, 0x5 bl PlaySE - ldr r0, _080CF248 @ =gUnknown_2023E82 + ldr r0, _080CF248 @ =gBattleCommunication ldrb r2, [r0, 0x1] cmp r2, 0 beq _080CF250 @@ -2373,7 +2373,7 @@ _080CF208: b _080CF276 .align 2, 0 _080CF244: .4byte gMain -_080CF248: .4byte gUnknown_2023E82 +_080CF248: .4byte gBattleCommunication _080CF24C: .4byte gTasks _080CF250: ldr r0, _080CF2AC @ =gTasks @@ -2751,7 +2751,7 @@ sub_80CF53C: @ 80CF53C strh r0, [r4, 0x8] movs r2, 0x1 strh r2, [r4, 0x1A] - ldr r0, _080CF5C4 @ =gUnknown_2023E82 + ldr r0, _080CF5C4 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -2784,7 +2784,7 @@ _080CF5B2: .align 2, 0 _080CF5BC: .4byte gTasks _080CF5C0: .4byte gPlayerParty -_080CF5C4: .4byte gUnknown_2023E82 +_080CF5C4: .4byte gBattleCommunication _080CF5C8: .4byte _080CF5CC .align 2, 0 _080CF5CC: @@ -2911,7 +2911,7 @@ _080CF6E0: adds r5, 0x10 adds r0, r5, 0 bl LaunchTask_PreEvoSparklesSet1 - ldr r1, _080CF730 @ =gUnknown_2023E82 + ldr r1, _080CF730 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CF734 @ =gTasks adds r1, r7, r6 @@ -2928,11 +2928,11 @@ _080CF6E0: _080CF724: .4byte gPaletteFade _080CF728: .4byte gSprites _080CF72C: .4byte gUnknown_2039A20 -_080CF730: .4byte gUnknown_2023E82 +_080CF730: .4byte gBattleCommunication _080CF734: .4byte gTasks _080CF738: .4byte 0x00000603 _080CF73C: - ldr r4, _080CF770 @ =gUnknown_2023E82 + ldr r4, _080CF770 @ =gBattleCommunication ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -2957,10 +2957,10 @@ _080CF752: strb r0, [r4, 0x2] bl _080D003A .align 2, 0 -_080CF770: .4byte gUnknown_2023E82 +_080CF770: .4byte gBattleCommunication _080CF774: .4byte gUnknown_2039A20 _080CF778: - ldr r4, _080CF7A4 @ =gUnknown_2023E82 + ldr r4, _080CF7A4 @ =gBattleCommunication ldrb r0, [r4, 0x2] lsls r1, r0, 2 adds r1, r0 @@ -2982,7 +2982,7 @@ _080CF78E: adds r1, r5 b _080CFB1A .align 2, 0 -_080CF7A4: .4byte gUnknown_2023E82 +_080CF7A4: .4byte gBattleCommunication _080CF7A8: .4byte gUnknown_2039A20 _080CF7AC: ldr r2, _080CF7E4 @ =gUnknown_2039A20 @@ -2998,7 +2998,7 @@ _080CF7C0: ldr r1, [r2] movs r0, 0x3 strb r0, [r1, 0x3] - ldr r0, _080CF7E8 @ =gUnknown_2023E82 + ldr r0, _080CF7E8 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -3015,10 +3015,10 @@ _080CF7DC: b _080CFB1A .align 2, 0 _080CF7E4: .4byte gUnknown_2039A20 -_080CF7E8: .4byte gUnknown_2023E82 +_080CF7E8: .4byte gBattleCommunication _080CF7EC: bl sub_80F5F74 - ldr r1, _080CF800 @ =gUnknown_2023E82 + ldr r1, _080CF800 @ =gBattleCommunication strb r0, [r1, 0x2] ldr r0, _080CF804 @ =gTasks adds r1, r7, r6 @@ -3026,10 +3026,10 @@ _080CF7EC: adds r1, r0 b _080CFB1A .align 2, 0 -_080CF800: .4byte gUnknown_2023E82 +_080CF800: .4byte gBattleCommunication _080CF804: .4byte gTasks _080CF808: - ldr r0, _080CF834 @ =gUnknown_2023E82 + ldr r0, _080CF834 @ =gBattleCommunication mov r8, r0 ldrb r0, [r0, 0x2] lsls r1, r0, 2 @@ -3050,9 +3050,9 @@ _080CF820: strb r0, [r1, 0x2] b _080CFA90 .align 2, 0 -_080CF834: .4byte gUnknown_2023E82 +_080CF834: .4byte gBattleCommunication _080CF838: - ldr r0, _080CF85C @ =gUnknown_2023E82 + ldr r0, _080CF85C @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -3070,7 +3070,7 @@ _080CF84E: adds r1, r5 b _080CFB1A .align 2, 0 -_080CF85C: .4byte gUnknown_2023E82 +_080CF85C: .4byte gBattleCommunication _080CF860: bl IsSEPlaying lsls r0, 24 @@ -3261,7 +3261,7 @@ _080CFA08: .4byte gUnknown_2039A20 _080CFA0C: .4byte gTextFlags _080CFA10: .4byte gUnknown_300537C _080CFA14: - ldr r0, _080CFA60 @ =gUnknown_2023E82 + ldr r0, _080CFA60 @ =gBattleCommunication ldrb r1, [r0, 0x2] lsls r0, r1, 2 adds r0, r1 @@ -3299,7 +3299,7 @@ _080CFA28: adds r1, r5 b _080CFB1A .align 2, 0 -_080CFA60: .4byte gUnknown_2023E82 +_080CFA60: .4byte gBattleCommunication _080CFA64: .4byte gSprites _080CFA68: .4byte gUnknown_2039A20 _080CFA6C: .4byte 0x0004001c @@ -3578,7 +3578,7 @@ _080CFCAE: movs r2, 0 movs r3, 0x2 bl CreateYesNoMenu - ldr r3, _080CFCF8 @ =gUnknown_2023E82 + ldr r3, _080CFCF8 @ =gBattleCommunication strb r4, [r3, 0x1] ldr r0, _080CFCF0 @ =gTasks adds r1, r7, r6 @@ -3595,7 +3595,7 @@ _080CFCE8: .4byte gUnknown_83FDF3C _080CFCEC: .4byte gDisplayedStringBattle _080CFCF0: .4byte gTasks _080CFCF4: .4byte gUnknown_826D1CC -_080CFCF8: .4byte gUnknown_2023E82 +_080CFCF8: .4byte gBattleCommunication _080CFCFC: bl Menu_ProcessInputNoWrapClearOnChoose lsls r0, 24 @@ -3614,7 +3614,7 @@ _080CFD16: beq _080CFD70 b _080D003A _080CFD1C: - ldr r0, _080CFD60 @ =gUnknown_2023E82 + ldr r0, _080CFD60 @ =gBattleCommunication strb r4, [r0, 0x1] ldr r0, _080CFD64 @ =gUnknown_83FDF3C movs r3, 0x92 @@ -3648,12 +3648,12 @@ _080CFD56: bl BeginNormalPaletteFade b _080D003A .align 2, 0 -_080CFD60: .4byte gUnknown_2023E82 +_080CFD60: .4byte gBattleCommunication _080CFD64: .4byte gUnknown_83FDF3C _080CFD68: .4byte gDisplayedStringBattle _080CFD6C: .4byte gTasks _080CFD70: - ldr r1, _080CFD9C @ =gUnknown_2023E82 + ldr r1, _080CFD9C @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x1] ldr r0, _080CFDA0 @ =gUnknown_83FDF3C @@ -3674,7 +3674,7 @@ _080CFD70: strh r1, [r0, 0x14] b _080D003A .align 2, 0 -_080CFD9C: .4byte gUnknown_2023E82 +_080CFD9C: .4byte gBattleCommunication _080CFDA0: .4byte gUnknown_83FDF3C _080CFDA4: .4byte gDisplayedStringBattle _080CFDA8: .4byte gTasks diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a3b44dc0d..c604211bc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -18,7 +18,7 @@ gUnknown_81D6BD1:: @ 81D6BD1 gUnknown_81D6C62:: @ 81D6C62 .incbin "baserom.gba", 0x1D6C62, 0x6E0 -gUnknown_81D7342:: @ 81D7342 +BattleScript_MoveUsedMustRecharge:: @ 81D7342 .incbin "baserom.gba", 0x1D7342, 0xA75 gUnknown_81D7DB7:: @ 81D7DB7 @@ -36,10 +36,10 @@ gUnknown_81D8674:: @ 81D8674 gUnknown_81D8684:: @ 81D8684 .incbin "baserom.gba", 0x1D8684, 0x10 -gUnknown_81D8694:: @ 81D8694 +BattleScript_GiveExp:: @ 81D8694 .incbin "baserom.gba", 0x1D8694, 0x9 -gUnknown_81D869D:: @ 81D869D +BattleScript_HandleFaintedMon:: @ 81D869D .incbin "baserom.gba", 0x1D869D, 0x152 gUnknown_81D87EF:: @ 81D87EF @@ -90,40 +90,40 @@ gUnknown_81D89F1:: @ 81D89F1 gUnknown_81D89F5:: @ 81D89F5 .incbin "baserom.gba", 0x1D89F5, 0x6F -gUnknown_81D8A64:: @ 81D8A64 +BattleScript_RainContinuesOrEnds:: @ 81D8A64 .incbin "baserom.gba", 0x1D8A64, 0x1B -gUnknown_81D8A7F:: @ 81D8A7F +BattleScript_DamagingWeatherContinues:: @ 81D8A7F .incbin "baserom.gba", 0x1D8A7F, 0x82 -gUnknown_81D8B01:: @ 81D8B01 +BattleScript_SandStormHailEnds:: @ 81D8B01 .incbin "baserom.gba", 0x1D8B01, 0x9 -gUnknown_81D8B0A:: @ 81D8B0A +BattleScript_SunlightContinues:: @ 81D8B0A .incbin "baserom.gba", 0x1D8B0A, 0xE -gUnknown_81D8B18:: @ 81D8B18 +BattleScript_SunlightFaded:: @ 81D8B18 .incbin "baserom.gba", 0x1D8B18, 0x7 -gUnknown_81D8B1F:: @ 81D8B1F +BattleScript_OverworldWeatherStarts:: @ 81D8B1F .incbin "baserom.gba", 0x1D8B1F, 0x13 -gUnknown_81D8B32:: @ 81D8B32 +BattleScript_SideStatusWoreOff:: @ 81D8B32 .incbin "baserom.gba", 0x1D8B32, 0x11 -gUnknown_81D8B43:: @ 81D8B43 +BattleScript_SafeguardEnds:: @ 81D8B43 .incbin "baserom.gba", 0x1D8B43, 0xA -gUnknown_81D8B4D:: @ 81D8B4D +BattleScript_LeechSeedTurnDrain:: @ 81D8B4D .incbin "baserom.gba", 0x1D8B4D, 0x5C -gUnknown_81D8BA9:: @ 81D8BA9 +BattleScript_BideStoringEnergy:: @ 81D8BA9 .incbin "baserom.gba", 0x1D8BA9, 0xB -gUnknown_81D8BB4:: @ 81D8BB4 +BattleScript_BideAttack:: @ 81D8BB4 .incbin "baserom.gba", 0x1D8BB4, 0x48 -gUnknown_81D8BFC:: @ 81D8BFC +BattleScript_BideNoEnergyToAttack:: @ 81D8BFC .incbin "baserom.gba", 0x1D8BFC, 0x14 gUnknown_81D8C10:: @ 81D8C10 @@ -135,16 +135,16 @@ gUnknown_81D8C3E:: @ 81D8C3E gUnknown_81D8C48:: @ 81D8C48 .incbin "baserom.gba", 0x1D8C48, 0x7 -gUnknown_81D8C4F:: @ 81D8C4F +BattleScript_MoveUsedIsDisabled:: @ 81D8C4F .incbin "baserom.gba", 0x1D8C4F, 0xB -gUnknown_81D8C5A:: @ 81D8C5A +BattleScript_SelectingDisabledMove:: @ 81D8C5A .incbin "baserom.gba", 0x1D8C5A, 0x4 -gUnknown_81D8C5E:: @ 81D8C5E +BattleScript_DisabledNoMore:: @ 81D8C5E .incbin "baserom.gba", 0x1D8C5E, 0x7 -gUnknown_81D8C65:: @ 81D8C65 +BattleScript_EncoredNoMore:: @ 81D8C65 .incbin "baserom.gba", 0x1D8C65, 0x7 gUnknown_81D8C6C:: @ 81D8C6C @@ -159,10 +159,10 @@ gUnknown_81D8CBE:: @ 81D8CBE gUnknown_81D8CF5:: @ 81D8CF5 .incbin "baserom.gba", 0x1D8CF5, 0x3E -gUnknown_81D8D33:: @ 81D8D33 +BattleScript_PerishSongTakesLife:: @ 81D8D33 .incbin "baserom.gba", 0x1D8D33, 0x1B -gUnknown_81D8D4E:: @ 81D8D4E +BattleScript_PerishSongCountGoesDown:: @ 81D8D4E .incbin "baserom.gba", 0x1D8D4E, 0x7 gUnknown_81D8D55:: @ 81D8D55 @@ -180,31 +180,31 @@ gUnknown_81D8E04:: @ 81D8E04 gUnknown_81D8E0B:: @ 81D8E0B .incbin "baserom.gba", 0x1D8E0B, 0x7 -gUnknown_81D8E12:: @ 81D8E12 +BattleScript_MonTookFutureAttack:: @ 81D8E12 .incbin "baserom.gba", 0x1D8E12, 0x8E gUnknown_81D8EA0:: @ 81D8EA0 .incbin "baserom.gba", 0x1D8EA0, 0x4 -gUnknown_81D8EA4:: @ 81D8EA4 +BattleScript_SelectingMoveWithNoPP:: @ 81D8EA4 .incbin "baserom.gba", 0x1D8EA4, 0x4 gUnknown_81D8EA8:: @ 81D8EA8 .incbin "baserom.gba", 0x1D8EA8, 0xF -gUnknown_81D8EB7:: @ 81D8EB7 +BattleScript_SelectingTormentedMove:: @ 81D8EB7 .incbin "baserom.gba", 0x1D8EB7, 0xF -gUnknown_81D8EC6:: @ 81D8EC6 +BattleScript_SelectingNotAllowedMoveTaunt:: @ 81D8EC6 .incbin "baserom.gba", 0x1D8EC6, 0x4 -gUnknown_81D8ECA:: @ 81D8ECA +BattleScript_MoveUsedIsTaunted:: @ 81D8ECA .incbin "baserom.gba", 0x1D8ECA, 0xB -gUnknown_81D8ED5:: @ 81D8ED5 +BattleScript_WishComesTrue:: @ 81D8ED5 .incbin "baserom.gba", 0x1D8ED5, 0x37 -gUnknown_81D8F0C:: @ 81D8F0C +BattleScript_IngrainTurnHeal:: @ 81D8F0C .incbin "baserom.gba", 0x1D8F0C, 0x29 gUnknown_81D8F35:: @ 81D8F35 @@ -213,10 +213,10 @@ gUnknown_81D8F35:: @ 81D8F35 gUnknown_81D8F86:: @ 81D8F86 .incbin "baserom.gba", 0x1D8F86, 0xE -gUnknown_81D8F94:: @ 81D8F94 +BattleScript_MoveUsedIsImprisoned:: @ 81D8F94 .incbin "baserom.gba", 0x1D8F94, 0xB -gUnknown_81D8F9F:: @ 81D8F9F +BattleScript_SelectingImprisonedMove:: @ 81D8F9F .incbin "baserom.gba", 0x1D8F9F, 0x4 gUnknown_81D8FA3:: @ 81D8FA3 @@ -240,67 +240,67 @@ gUnknown_81D8FEB:: @ 81D8FEB gUnknown_81D9015:: @ 81D9015 .incbin "baserom.gba", 0x1D9015, 0x14 -gUnknown_81D9029:: @ 81D9029 +BattleScript_MoveUsedIsAsleep:: @ 81D9029 .incbin "baserom.gba", 0x1D9029, 0xD -gUnknown_81D9036:: @ 81D9036 +BattleScript_MoveUsedWokeUp:: @ 81D9036 .incbin "baserom.gba", 0x1D9036, 0x14 -gUnknown_81D904A:: @ 81D904A +BattleScript_MonWokeUpInUproar:: @ 81D904A .incbin "baserom.gba", 0x1D904A, 0x9 -gUnknown_81D9053:: @ 81D9053 +BattleScript_PoisonTurnDmg:: @ 81D9053 .incbin "baserom.gba", 0x1D9053, 0x22 -gUnknown_81D9075:: @ 81D9075 +BattleScript_BurnTurnDmg:: @ 81D9075 .incbin "baserom.gba", 0x1D9075, 0xB -gUnknown_81D9080:: @ 81D9080 +BattleScript_MoveUsedIsFrozen:: @ 81D9080 .incbin "baserom.gba", 0x1D9080, 0xD -gUnknown_81D908D:: @ 81D908D +BattleScript_MoveUsedUnfroze:: @ 81D908D .incbin "baserom.gba", 0x1D908D, 0xB gUnknown_81D9098:: @ 81D9098 .incbin "baserom.gba", 0x1D9098, 0x9 -gUnknown_81D90A1:: @ 81D90A1 +BattleScript_MoveUsedIsParalyzed:: @ 81D90A1 .incbin "baserom.gba", 0x1D90A1, 0x10 -gUnknown_81D90B1:: @ 81D90B1 +BattleScript_MoveUsedFlinched:: @ 81D90B1 .incbin "baserom.gba", 0x1D90B1, 0xB -gUnknown_81D90BC:: @ 81D90BC +BattleScript_PrintUproarOverTurns:: @ 81D90BC .incbin "baserom.gba", 0x1D90BC, 0x9 -gUnknown_81D90C5:: @ 81D90C5 +BattleScript_ThrashConfuses:: @ 81D90C5 .incbin "baserom.gba", 0x1D90C5, 0xE -gUnknown_81D90D3:: @ 81D90D3 +BattleScript_MoveUsedIsConfused:: @ 81D90D3 .incbin "baserom.gba", 0x1D90D3, 0x43 -gUnknown_81D9116:: @ 81D9116 +BattleScript_MoveUsedIsConfusedNoMore:: @ 81D9116 .incbin "baserom.gba", 0x1D9116, 0x7 gUnknown_81D911D:: @ 81D911D .incbin "baserom.gba", 0x1D911D, 0x7 -gUnknown_81D9124:: @ 81D9124 +BattleScript_WrapTurnDmg:: @ 81D9124 .incbin "baserom.gba", 0x1D9124, 0x12 -gUnknown_81D9136:: @ 81D9136 +BattleScript_WrapEnds:: @ 81D9136 .incbin "baserom.gba", 0x1D9136, 0x7 -gUnknown_81D913D:: @ 81D913D +BattleScript_MoveUsedIsInLove:: @ 81D913D .incbin "baserom.gba", 0x1D913D, 0xD -gUnknown_81D914A:: @ 81D914A +BattleScript_MoveUsedIsInLoveCantAttack:: @ 81D914A .incbin "baserom.gba", 0x1D914A, 0xB -gUnknown_81D9155:: @ 81D9155 +BattleScript_NightmareTurnDmg:: @ 81D9155 .incbin "baserom.gba", 0x1D9155, 0x11 -gUnknown_81D9166:: @ 81D9166 +BattleScript_CurseTurnDmg:: @ 81D9166 .incbin "baserom.gba", 0x1D9166, 0x11 gUnknown_81D9177:: @ 81D9177 @@ -315,40 +315,40 @@ gUnknown_81D9192:: @ 81D9192 gUnknown_81D91A1:: @ 81D91A1 .incbin "baserom.gba", 0x1D91A1, 0x26 -gUnknown_81D91C7:: @ 81D91C7 +BattleScript_YawnMakesAsleep:: @ 81D91C7 .incbin "baserom.gba", 0x1D91C7, 0xAA gUnknown_81D9271:: @ 81D9271 .incbin "baserom.gba", 0x1D9271, 0xE -gUnknown_81D927F:: @ 81D927F +BattleScript_DrizzleActivates:: @ 81D927F .incbin "baserom.gba", 0x1D927F, 0x14 -gUnknown_81D9293:: @ 81D9293 +BattleScript_SpeedBoostActivates:: @ 81D9293 .incbin "baserom.gba", 0x1D9293, 0xE -gUnknown_81D92A1:: @ 81D92A1 +BattleScript_TraceActivates:: @ 81D92A1 .incbin "baserom.gba", 0x1D92A1, 0xA -gUnknown_81D92AB:: @ 81D92AB +BattleScript_RainDishActivates:: @ 81D92AB .incbin "baserom.gba", 0x1D92AB, 0x14 -gUnknown_81D92BF:: @ 81D92BF +BattleScript_SandstreamActivates:: @ 81D92BF .incbin "baserom.gba", 0x1D92BF, 0x14 -gUnknown_81D92D3:: @ 81D92D3 +BattleScript_ShedSkinActivates:: @ 81D92D3 .incbin "baserom.gba", 0x1D92D3, 0x25 -gUnknown_81D92F8:: @ 81D92F8 +BattleScript_CastformChange:: @ 81D92F8 .incbin "baserom.gba", 0x1D92F8, 0xF -gUnknown_81D9307:: @ 81D9307 +BattleScript_IntimidateActivatesEnd3:: @ 81D9307 .incbin "baserom.gba", 0x1D9307, 0x9 -gUnknown_81D9310:: @ 81D9310 +BattleScript_IntimidateActivates:: @ 81D9310 .incbin "baserom.gba", 0x1D9310, 0x69 -gUnknown_81D9379:: @ 81D9379 +BattleScript_DroughtActivates:: @ 81D9379 .incbin "baserom.gba", 0x1D9379, 0x14 gUnknown_81D938D:: @ 81D938D @@ -360,22 +360,22 @@ gUnknown_81D93A1:: @ 81D93A1 gUnknown_81D93AF:: @ 81D93AF .incbin "baserom.gba", 0x1D93AF, 0xE -gUnknown_81D93BD:: @ 81D93BD +BattleScript_MoveHPDrain_PPLoss:: @ 81D93BD .incbin "baserom.gba", 0x1D93BD, 0x1 -gUnknown_81D93BE:: @ 81D93BE +BattleScript_MoveHPDrain:: @ 81D93BE .incbin "baserom.gba", 0x1D93BE, 0x22 -gUnknown_81D93E0:: @ 81D93E0 +BattleScript_MonMadeMoveUseless_PPLoss:: @ 81D93E0 .incbin "baserom.gba", 0x1D93E0, 0x1 -gUnknown_81D93E1:: @ 81D93E1 +BattleScript_MonMadeMoveUseless:: @ 81D93E1 .incbin "baserom.gba", 0x1D93E1, 0x15 -gUnknown_81D93F6:: @ 81D93F6 +BattleScript_FlashFireBoost_PPLoss:: @ 81D93F6 .incbin "baserom.gba", 0x1D93F6, 0x1 -gUnknown_81D93F7:: @ 81D93F7 +BattleScript_FlashFireBoost:: @ 81D93F7 .incbin "baserom.gba", 0x1D93F7, 0x1F gUnknown_81D9416:: @ 81D9416 @@ -396,7 +396,7 @@ gUnknown_81D9444:: @ 81D9444 gUnknown_81D9452:: @ 81D9452 .incbin "baserom.gba", 0x1D9452, 0x1C -gUnknown_81D946E:: @ 81D946E +BattleScript_SoundproofProtected:: @ 81D946E .incbin "baserom.gba", 0x1D946E, 0x10 gUnknown_81D947E:: @ 81D947E @@ -405,115 +405,115 @@ gUnknown_81D947E:: @ 81D947E gUnknown_81D948E:: @ 81D948E .incbin "baserom.gba", 0x1D948E, 0xE -gUnknown_81D949C:: @ 81D949C +BattleScript_ColorChangeActivates:: @ 81D949C .incbin "baserom.gba", 0x1D949C, 0x7 -gUnknown_81D94A3:: @ 81D94A3 +BattleScript_RoughSkinActivates:: @ 81D94A3 .incbin "baserom.gba", 0x1D94A3, 0x1B -gUnknown_81D94BE:: @ 81D94BE +BattleScript_CuteCharmActivates:: @ 81D94BE .incbin "baserom.gba", 0x1D94BE, 0xD -gUnknown_81D94CB:: @ 81D94CB +BattleScript_ApplySecondaryEffect:: @ 81D94CB .incbin "baserom.gba", 0x1D94CB, 0x3 -gUnknown_81D94CE:: @ 81D94CE +BattleScript_SynchronizeActivates:: @ 81D94CE .incbin "baserom.gba", 0x1D94CE, 0x3 -gUnknown_81D94D1:: @ 81D94D1 +BattleScript_AbilityCuredStatus:: @ 81D94D1 .incbin "baserom.gba", 0x1D94D1, 0x9 -gUnknown_81D94DA:: @ 81D94DA +BattleScript_IgnoresWhileAsleep:: @ 81D94DA .incbin "baserom.gba", 0x1D94DA, 0x10 -gUnknown_81D94EA:: @ 81D94EA +BattleScript_IgnoresAndUsesRandomMove:: @ 81D94EA .incbin "baserom.gba", 0x1D94EA, 0x8 -gUnknown_81D94F2:: @ 81D94F2 +BattleScript_MoveUsedLoafingAround:: @ 81D94F2 .incbin "baserom.gba", 0x1D94F2, 0x12 -gUnknown_81D9504:: @ 81D9504 +BattleScript_IgnoresAndFallsAsleep:: @ 81D9504 .incbin "baserom.gba", 0x1D9504, 0x17 -gUnknown_81D951B:: @ 81D951B +BattleScript_IgnoresAndHitsItself:: @ 81D951B .incbin "baserom.gba", 0x1D951B, 0xB gUnknown_81D9526:: @ 81D9526 .incbin "baserom.gba", 0x1D9526, 0xB -gUnknown_81D9531:: @ 81D9531 +BattleScript_BerryCurePrlzEnd2:: @ 81D9531 .incbin "baserom.gba", 0x1D9531, 0x6 -gUnknown_81D9537:: @ 81D9537 +BattleScript_BerryCureParRet:: @ 81D9537 .incbin "baserom.gba", 0x1D9537, 0x12 -gUnknown_81D9549:: @ 81D9549 +BattleScript_BerryCurePsnEnd2:: @ 81D9549 .incbin "baserom.gba", 0x1D9549, 0x6 -gUnknown_81D954F:: @ 81D954F +BattleScript_BerryCurePsnRet:: @ 81D954F .incbin "baserom.gba", 0x1D954F, 0x12 -gUnknown_81D9561:: @ 81D9561 +BattleScript_BerryCureBrnEnd2:: @ 81D9561 .incbin "baserom.gba", 0x1D9561, 0x6 -gUnknown_81D9567:: @ 81D9567 +BattleScript_BerryCureBrnRet:: @ 81D9567 .incbin "baserom.gba", 0x1D9567, 0x12 -gUnknown_81D9579:: @ 81D9579 +BattleScript_BerryCureFrzEnd2:: @ 81D9579 .incbin "baserom.gba", 0x1D9579, 0x6 -gUnknown_81D957F:: @ 81D957F +BattleScript_BerryCureFrzRet:: @ 81D957F .incbin "baserom.gba", 0x1D957F, 0x12 -gUnknown_81D9591:: @ 81D9591 +BattleScript_BerryCureSlpEnd2:: @ 81D9591 .incbin "baserom.gba", 0x1D9591, 0x6 -gUnknown_81D9597:: @ 81D9597 +BattleScript_BerryCureSlpRet:: @ 81D9597 .incbin "baserom.gba", 0x1D9597, 0x12 -gUnknown_81D95A9:: @ 81D95A9 +BattleScript_BerryCureConfusionEnd2:: @ 81D95A9 .incbin "baserom.gba", 0x1D95A9, 0x6 -gUnknown_81D95AF:: @ 81D95AF +BattleScript_BerryCureConfusionRet:: @ 81D95AF .incbin "baserom.gba", 0x1D95AF, 0x10 -gUnknown_81D95BF:: @ 81D95BF +BattleScript_BerryCureChosenStatusEnd2:: @ 81D95BF .incbin "baserom.gba", 0x1D95BF, 0x6 -gUnknown_81D95C5:: @ 81D95C5 +BattleScript_BerryCureChosenStatusRet:: @ 81D95C5 .incbin "baserom.gba", 0x1D95C5, 0x14 -gUnknown_81D95D9:: @ 81D95D9 +BattleScript_WhiteHerbEnd2:: @ 81D95D9 .incbin "baserom.gba", 0x1D95D9, 0x6 -gUnknown_81D95DF:: @ 81D95DF +BattleScript_WhiteHerbRet:: @ 81D95DF .incbin "baserom.gba", 0x1D95DF, 0x10 -gUnknown_81D95EF:: @ 81D95EF +BattleScript_ItemHealHP_RemoveItem:: @ 81D95EF .incbin "baserom.gba", 0x1D95EF, 0x1D -gUnknown_81D960C:: @ 81D960C +BattleScript_BerryPPHealEnd2:: @ 81D960C .incbin "baserom.gba", 0x1D960C, 0x10 -gUnknown_81D961C:: @ 81D961C +BattleScript_ItemHealHP_End2:: @ 81D961C .incbin "baserom.gba", 0x1D961C, 0x6 -gUnknown_81D9622:: @ 81D9622 +BattleScript_ItemHealHP_Ret:: @ 81D9622 .incbin "baserom.gba", 0x1D9622, 0x1B -gUnknown_81D963D:: @ 81D963D +BattleScript_SelectingNotAllowedMoveChoiceItem:: @ 81D963D .incbin "baserom.gba", 0x1D963D, 0x4 gUnknown_81D9641:: @ 81D9641 .incbin "baserom.gba", 0x1D9641, 0xE -gUnknown_81D964F:: @ 81D964F +BattleScript_BerryConfuseHealEnd2:: @ 81D964F .incbin "baserom.gba", 0x1D964F, 0x2A -gUnknown_81D9679:: @ 81D9679 +BattleScript_BerryStatRaiseEnd2:: @ 81D9679 .incbin "baserom.gba", 0x1D9679, 0x1B -gUnknown_81D9694:: @ 81D9694 +BattleScript_BerryFocusEnergyEnd2:: @ 81D9694 .incbin "baserom.gba", 0x1D9694, 0x10 gUnknown_81D96A4:: @ 81D96A4 diff --git a/data/data.s b/data/data.s index 41bbdfade..05747376d 100644 --- a/data/data.s +++ b/data/data.s @@ -278,7 +278,7 @@ gUnknown_82500C4:: @ 82500C4 gUnknown_82500CC:: @ 82500CC .incbin "baserom.gba", 0x2500CC, 0x38 -gUnknown_8250104:: @ 8250104 +sSoundMovesTable:: @ 8250104 .incbin "baserom.gba", 0x250104, 0x18 gUnknown_825011C:: @ 825011C diff --git a/include/battle_util.h b/include/battle_util.h index 88b35e1a4..e7cb8dc99 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -54,8 +54,8 @@ u8 GetBattleBank(u8 caseId); void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); -void MarkAllBufferBanksForExecution(void); // unused -void MarkBufferBankForExecution(u8 bank); +void MarkAllBattlersForControllerExec(void); // unused +void MarkBattlerForControllerExec(u8 bank); void sub_803F850(u8 arg0); void CancelMultiTurnMoves(u8 bank); bool8 WasUnableToUseMove(u8 bank); @@ -70,8 +70,8 @@ u8 TrySetCantSelectMoveBattleScript(void); u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); u8 GetImprisonedMovesCount(u8 bank, u16 move); -u8 UpdateTurnCounters(void); -u8 TurnBasedEffects(void); +u8 DoFieldEndTurnEffects(void); +u8 DoBattlerEndTurnEffects(void); bool8 HandleWishPerishSongOnTurnEnd(void); bool8 HandleFaintedMonActions(void); void TryClearRageStatuses(void); @@ -86,7 +86,7 @@ void ClearFuryCutterDestinyBondGrudge(u8 bank); void HandleAction_RunBattleScript(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); -void MarkBufferBankForExecution(u8 battlerId); +void MarkBattlerForControllerExec(u8 battlerId); void sub_80174B8(u8 battlerId); void sub_8017298(u8 battlerId); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 86e7d3143..1c281e853 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -252,7 +252,7 @@ static const u16 sDiscouragedPowerfulMoveEffects[] = extern u8 gBattlerAttacker; extern const u32 gBitTable[]; // util.h extern u32 gStatuses3[]; // battle_2.h -extern u16 gSideAffecting[2]; +extern u16 gSideStatuses[2]; extern const struct BattleMove gBattleMoves[]; extern u16 gDynamicBasePower; extern u8 gMoveResultFlags; @@ -720,7 +720,7 @@ static void BattleAICmd_if_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) != 0) + if ((gSideStatuses[arg1] & arg2) != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; @@ -739,7 +739,7 @@ static void BattleAICmd_if_not_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) == 0) + if ((gSideStatuses[arg1] & arg2) == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; diff --git a/src/pokemon.c b/src/pokemon.c index ffe407daf..d75650d91 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4170,7 +4170,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo r5 = gActiveBattler; gActiveBattler = sp34; BtlController_EmitGetMonData(0, 0, 0); - MarkBufferBankForExecution(gActiveBattler); + MarkBattlerForControllerExec(gActiveBattler); gActiveBattler = r5; } } @@ -4709,7 +4709,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m r5 = gActiveBattler; gActiveBattler = sp34; BtlController_EmitGetMonData(0, 0, 0); - MarkBufferBankForExecution(gActiveBattler); + MarkBattlerForControllerExec(gActiveBattler); gActiveBattler = r5; } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 4532d441c..585a2843c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -189,7 +189,7 @@ gBattlerPositions: @ 2023BD6 gUnknown_2023BDA: @ 2023BDA .space 0x4 -gUnknown_2023BDE: @ 2023BDE +gBattlerByTurnOrder: @ 2023BDE .space 0x4 gUnknown_2023BE2: @ 2023BE2 @@ -216,7 +216,7 @@ gUnknown_2023C0C: @ 2023C0C gUnknown_2023C30: @ 2023C30 .space 0x4 -gUnknown_2023C34: @ 2023C34 +gChosenMoveByBattler: @ 2023C34 .space 0x110 gBattlerSpriteIds: @ 2023D44 @@ -243,7 +243,7 @@ gBattleMoveDamage: @ 2023D50 gUnknown_2023D54: @ 2023D54 .space 0x4 -gUnknown_2023D58: @ 2023D58 +gTakenDmg: @ 2023D58 .space 0x10 gLastUsedItem: @ 2023D68 @@ -258,7 +258,7 @@ gBattlerAttacker: @ 2023D6B gBattlerTarget: @ 2023D6C .space 0x1 -gUnknown_2023D6D: @ 2023D6D +gBattlerFainted: @ 2023D6D .space 0x1 gEffectBattler: @ 2023D6E @@ -276,13 +276,13 @@ gCritMultiplier: @ 2023D71 gUnknown_2023D72: @ 2023D72 .space 0x2 -gUnknown_2023D74: @ 2023D74 +gBattlescriptCurrInstr: @ 2023D74 .space 0x8 gUnknown_2023D7C: @ 2023D7C .space 0x4 -gUnknown_2023D80: @ 2023D80 +gSelectionBattleScripts: @ 2023D80 .space 0x10 gUnknown_2023D90: @ 2023D90 @@ -312,19 +312,19 @@ gUnknown_2023DC4: @ 2023DC4 gMoveResultFlags: @ 2023DCC .space 0x4 -gUnknown_2023DD0: @ 2023DD0 +gHitMarker: @ 2023DD0 .space 0x4 gUnknown_2023DD4: @ 2023DD4 .space 0x4 -gUnknown_2023DD8: @ 2023DD8 +gTakenDmgByBattler: @ 2023DD8 .space 0x4 gUnknown_2023DDC: @ 2023DDC .space 0x2 -gSideAffecting: @ 2023DDE +gSideStatuses: @ 2023DDE .space 0x6 gSideTimers: @ 2023DE4 @@ -345,7 +345,7 @@ gUnknown_2023E7E: @ 2023E7E gUnknown_2023E80: @ 2023E80 .space 0x2 -gUnknown_2023E82: @ 2023E82 +gBattleCommunication: @ 2023E82 .space 0x1 gUnknown_2023E83: @ 2023E83 @@ -354,22 +354,22 @@ gUnknown_2023E83: @ 2023E83 gBattleOutcome: @ 2023E8A .space 0x2 -gUnknown_2023E8C: @ 2023E8C +gProtectStructs: @ 2023E8C .space 0x40 -gUnknown_2023ECC: @ 2023ECC +gSpecialStatuses: @ 2023ECC .space 0x50 gBattleWeather: @ 2023F1C .space 0x4 -gUnknown_2023F20: @ 2023F20 +gWishFutureKnock: @ 2023F20 .space 0x2C gIntroSlideFlags: @ 2023F4C .space 0x2 -gUnknown_2023F4E: @ 2023F4E +gSentPokesToOpponent: @ 2023F4E .space 0x2 gDynamicBasePower: @ 2023F50 From 353fe5e797e9855714cb9215f9d73cbfb769e2bc Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 13:45:10 +0800 Subject: [PATCH 009/100] improved style of sub_800DD28 --- include/graphics.h | 2 +- src/battle_controllers.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/graphics.h b/include/graphics.h index 6f9d8b762..e1bbb55ef 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -975,6 +975,6 @@ extern const u32 gGhostFrontPic[]; extern const u32 gGhostPalette[]; extern const u32 gSubstituteDollGfx[]; extern const u32 gSubstituteDollTilemap[]; -extern const u16 gSubstituteDollPal[]; +extern const u32 gSubstituteDollPal[]; #endif //GUARD_GRAPHICS_H diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 20c934a0c..509a00824 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -488,8 +488,7 @@ void sub_800DD28(void) { u8 i; s32 j; - u16 r6; - u8 *recvBuffer, *dest, *src; + u8 *recvBuffer; if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211)) { @@ -501,7 +500,9 @@ void sub_800DD28(void) ResetBlockReceivedFlag(i); recvBuffer = (u8 *)gBlockRecvBuffer[i]; { - r6 = gBlockRecvBuffer[i][2]; + u8 *dest, *src; + u16 r6 = gBlockRecvBuffer[i][2]; + if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000) { gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14]; @@ -511,8 +512,8 @@ void sub_800DD28(void) src = recvBuffer; for (j = 0; j < r6 + 8; ++j) dest[j] = src[j]; + gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; } - gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; } } } From c88c9c6edfb7122524b319e4601c5d2b97bf06ca Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 31 Jul 2019 07:57:24 +0800 Subject: [PATCH 010/100] progress #1 on porting battle_util --- asm/battle_2.s | 12 +- asm/battle_script_commands.s | 32 +- asm/battle_util.s | 4599 -------------------- data/battle_scripts_1.s | 2 +- data/data.s | 4 +- include/battle.h | 178 +- include/battle_scripts.h | 4 +- include/battle_util.h | 7 +- include/constants/battle.h | 6 +- include/constants/battle_script_commands.h | 134 + ld_script.txt | 3 + src/battle_ai_script_commands.c | 13 +- src/battle_util.c | 1147 +++++ src/battle_util2.c | 5 +- src/pokemon.c | 18 +- sym_ewram.txt | 2 +- 16 files changed, 1428 insertions(+), 4738 deletions(-) create mode 100644 include/constants/battle_script_commands.h create mode 100644 src/battle_util.c diff --git a/asm/battle_2.s b/asm/battle_2.s index 365ef0691..54e773828 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4849,7 +4849,7 @@ sub_8012434: @ 8012434 mov r12, r1 ldr r0, _080126D4 @ =gUnknown_2023DA0 mov r9, r0 - ldr r1, _080126D8 @ =gLastUsedMove + ldr r1, _080126D8 @ =gLastMoves mov r8, r1 ldr r4, _080126DC @ =gDisableStructs movs r5, 0 @@ -5174,7 +5174,7 @@ _080126AE: _080126CC: .4byte gUnknown_2023DB0 _080126D0: .4byte gUnknown_2023DA8 _080126D4: .4byte gUnknown_2023DA0 -_080126D8: .4byte gLastUsedMove +_080126D8: .4byte gLastMoves _080126DC: .4byte gDisableStructs _080126E0: .4byte gUnknown_2023D90 _080126E4: .4byte gUnknown_2023DB8 @@ -5579,7 +5579,7 @@ _08012A1A: mov r1, r12 ldrb r0, [r1] lsls r0, 1 - ldr r3, _08012BAC @ =gLastUsedMove + ldr r3, _08012BAC @ =gLastMoves adds r0, r3 movs r3, 0 strh r2, [r0] @@ -5757,7 +5757,7 @@ _08012B9C: .4byte gMoveSelectionCursor _08012BA0: .4byte gCurrentMove _08012BA4: .4byte gBattleMoves _08012BA8: .4byte gMoveResultFlags -_08012BAC: .4byte gLastUsedMove +_08012BAC: .4byte gLastMoves _08012BB0: .4byte gUnknown_2023DA0 _08012BB4: .4byte gUnknown_2023DA8 _08012BB8: .4byte gUnknown_2023DB0 @@ -6047,7 +6047,7 @@ _08012CA8: strb r1, [r0, 0x16] ldrb r0, [r7] lsls r0, 1 - ldr r1, _08012F8C @ =gLastUsedMove + ldr r1, _08012F8C @ =gLastMoves adds r0, r1 movs r3, 0 strh r2, [r0] @@ -6249,7 +6249,7 @@ _08012F7C: .4byte gDisableStructs _08012F80: .4byte 0xfbffffff _08012F84: .4byte gBattleStruct _08012F88: .4byte 0xffff1fff -_08012F8C: .4byte gLastUsedMove +_08012F8C: .4byte gLastMoves _08012F90: .4byte gUnknown_2023DA0 _08012F94: .4byte gUnknown_2023DA8 _08012F98: .4byte gUnknown_2023DB0 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 25dbe3ce3..b4fd08c29 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -12270,7 +12270,7 @@ _080238E8: ands r0, r1 cmp r0, 0 beq _0802394C - ldr r0, _08023940 @ =gLastUsedMove + ldr r0, _08023940 @ =gLastMoves lsls r1, r4, 1 adds r1, r0 ldr r0, _0802392C @ =gChosenMove @@ -12297,11 +12297,11 @@ _08023930: .4byte gAbsentBattlerFlags _08023934: .4byte gBitTable _08023938: .4byte gBattleStruct _0802393C: .4byte gBattleMoves -_08023940: .4byte gLastUsedMove +_08023940: .4byte gLastMoves _08023944: .4byte gUnknown_2023DB0 _08023948: .4byte gCurrentMove _0802394C: - ldr r1, _080239B4 @ =gLastUsedMove + ldr r1, _080239B4 @ =gLastMoves lsls r0, r4, 1 adds r0, r1 ldr r1, _080239B8 @ =0x0000ffff @@ -12355,7 +12355,7 @@ _08023984: strh r3, [r0] b _08023A2C .align 2, 0 -_080239B4: .4byte gLastUsedMove +_080239B4: .4byte gLastMoves _080239B8: .4byte 0x0000ffff _080239BC: .4byte gUnknown_2023DB0 _080239C0: .4byte gBattlerTarget @@ -23783,7 +23783,7 @@ atk9D_mimicattackcopy: @ 8029578 ldr r1, _080295F4 @ =0x0000ffff adds r7, r1, 0 strh r7, [r0] - ldr r5, _080295F8 @ =gLastUsedMove + ldr r5, _080295F8 @ =gLastMoves ldr r6, _080295FC @ =gBattlerTarget ldrb r0, [r6] lsls r0, 1 @@ -23836,7 +23836,7 @@ _080295D2: .align 2, 0 _080295F0: .4byte gChosenMove _080295F4: .4byte 0x0000ffff -_080295F8: .4byte gLastUsedMove +_080295F8: .4byte gLastMoves _080295FC: .4byte gBattlerTarget _08029600: .4byte gBattleMons _08029604: .4byte gBattlerAttacker @@ -23886,7 +23886,7 @@ _08029646: mov r0, r12 adds r0, 0xC adds r1, r0 - ldr r2, _080296A4 @ =gLastUsedMove + ldr r2, _080296A4 @ =gLastMoves ldr r3, _080296A8 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 @@ -23918,7 +23918,7 @@ _08029646: .align 2, 0 _0802969C: .4byte gBattlescriptCurrInstr _080296A0: .4byte gUnknown_2023D48 -_080296A4: .4byte gLastUsedMove +_080296A4: .4byte gLastMoves _080296A8: .4byte gBattlerTarget _080296AC: .4byte gBattleMoves _080296B0: @@ -24402,7 +24402,7 @@ atkA3_disablelastusedattack: @ 8029A70 adds r7, r2, 0 adds r7, 0xC adds r0, r7 - ldr r5, _08029B78 @ =gLastUsedMove + ldr r5, _08029B78 @ =gLastMoves lsls r1, 1 adds r1, r5 ldrh r0, [r0] @@ -24521,7 +24521,7 @@ _08029AC4: .align 2, 0 _08029B70: .4byte gBattleMons _08029B74: .4byte gBattlerTarget -_08029B78: .4byte gLastUsedMove +_08029B78: .4byte gLastMoves _08029B7C: .4byte gDisableStructs _08029B80: .4byte gBattleTextBuff1 _08029B84: .4byte gBattlescriptCurrInstr @@ -24566,7 +24566,7 @@ atkA4_trysetencore: @ 8029BB4 adds r6, r3, 0 adds r6, 0xC adds r0, r6 - ldr r2, _08029CB0 @ =gLastUsedMove + ldr r2, _08029CB0 @ =gLastMoves lsls r1, 1 adds r1, r2 ldrh r0, [r0] @@ -24680,7 +24680,7 @@ _08029C24: .align 2, 0 _08029CA8: .4byte gBattleMons _08029CAC: .4byte gBattlerTarget -_08029CB0: .4byte gLastUsedMove +_08029CB0: .4byte gLastMoves _08029CB4: .4byte gDisableStructs _08029CB8: .4byte gBattlescriptCurrInstr _08029CBC: @@ -25745,7 +25745,7 @@ atkAD_tryspiteppreduce: @ 802A4D8 mov r5, r8 push {r5-r7} sub sp, 0x4 - ldr r4, _0802A658 @ =gLastUsedMove + ldr r4, _0802A658 @ =gLastMoves ldr r1, _0802A65C @ =gBattlerTarget ldrb r3, [r1] lsls r0, r3, 1 @@ -25832,7 +25832,7 @@ _0802A57C: strb r5, [r1] movs r0, 0x2 strb r0, [r1, 0x1] - ldr r2, _0802A658 @ =gLastUsedMove + ldr r2, _0802A658 @ =gLastMoves mov r3, r8 ldrb r0, [r3] lsls r0, 1 @@ -25934,7 +25934,7 @@ _0802A630: bl CancelMultiTurnMoves b _0802A69A .align 2, 0 -_0802A658: .4byte gLastUsedMove +_0802A658: .4byte gLastMoves _0802A65C: .4byte gBattlerTarget _0802A660: .4byte 0x0000ffff _0802A664: .4byte gBattleMons @@ -30155,7 +30155,7 @@ _0802C7BC: lsrs r0, 24 mov r8, r0 ldrb r0, [r4] - bl PressurePPLoseOnUsingImprision + bl PressurePPLoseOnUsingImprison movs r6, 0 b _0802C82E _0802C7D2: diff --git a/asm/battle_util.s b/asm/battle_util.s index d73ed9e0e..b2ed61f7a 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -5,4605 +5,6 @@ .text - thumb_func_start GetBattlerForBattleScript -GetBattlerForBattleScript: @ 8016E24 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - cmp r0, 0xC - bhi _08016EC2 - lsls r0, 2 - ldr r1, _08016E3C @ =_08016E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08016E3C: .4byte _08016E40 - .align 2, 0 -_08016E40: - .4byte _08016E74 - .4byte _08016E80 - .4byte _08016E8C - .4byte _08016EA8 - .4byte _08016EC2 - .4byte _08016EA8 - .4byte _08016EC2 - .4byte _08016E98 - .4byte _08016EC2 - .4byte _08016EC2 - .4byte _08016E9C - .4byte _08016EB4 - .4byte _08016EB8 -_08016E74: - ldr r0, _08016E7C @ =gBattlerTarget - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E7C: .4byte gBattlerTarget -_08016E80: - ldr r0, _08016E88 @ =gBattlerAttacker - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E88: .4byte gBattlerAttacker -_08016E8C: - ldr r0, _08016E94 @ =gEffectBattler - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E94: .4byte gEffectBattler -_08016E98: - movs r2, 0 - b _08016EC2 -_08016E9C: - ldr r0, _08016EA4 @ =gBattleScripting - ldrb r2, [r0, 0x17] - b _08016EC2 - .align 2, 0 -_08016EA4: .4byte gBattleScripting -_08016EA8: - ldr r0, _08016EB0 @ =gBattlerFainted - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016EB0: .4byte gBattlerFainted -_08016EB4: - movs r0, 0 - b _08016EBA -_08016EB8: - movs r0, 0x1 -_08016EBA: - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r2, r0, 24 -_08016EC2: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end GetBattlerForBattleScript - - thumb_func_start PressurePPLose -PressurePPLose: @ 8016EC8 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _08016EF8 @ =gBattleMons - movs r4, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0x2E - bne _08016F7A - movs r3, 0 - adds r0, r5, 0 - muls r0, r4 - adds r1, 0xC - adds r1, r0, r1 - b _08016F04 - .align 2, 0 -_08016EF8: .4byte gBattleMons -_08016EFC: - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - bgt _08016F0A -_08016F04: - ldrh r0, [r1] - cmp r0, r2 - bne _08016EFC -_08016F0A: - cmp r3, 0x4 - beq _08016F7A - movs r7, 0x58 - adds r2, r5, 0 - muls r2, r7 - adds r0, r3, r2 - mov r6, r12 - adds r6, 0x24 - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _08016F26 - subs r0, 0x1 - strb r0, [r1] -_08016F26: - mov r0, r12 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08016F7A - ldr r1, _08016F84 @ =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _08016F88 @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08016F7A - ldr r4, _08016F8C @ =gActiveBattler - strb r5, [r4] - adds r1, r3, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r7 - adds r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08016F7A: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016F84: .4byte gDisableStructs -_08016F88: .4byte gBitTable -_08016F8C: .4byte gActiveBattler - thumb_func_end PressurePPLose - - thumb_func_start PressurePPLoseOnUsingImprision -PressurePPLoseOnUsingImprision: @ 8016F90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x4 - mov r8, r0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, _080170B0 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bge _08017038 - ldr r1, _080170B4 @ =gBattleMons - movs r0, 0x58 - adds r7, r5, 0 - muls r7, r0 - adds r1, 0xC - mov r10, r1 -_08016FC6: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r6, r4, 0x1 - cmp r9, r0 - beq _0801702E - ldr r0, _080170B4 @ =gBattleMons - movs r3, 0x58 - adds r1, r4, 0 - muls r1, r3 - adds r1, r0 - adds r1, 0x20 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0x2E - bne _0801702E - movs r2, 0 - adds r0, r5, 0 - muls r0, r3 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x8F - lsls r1, 1 - cmp r0, r1 - beq _08017016 - adds r3, r1, 0 - mov r0, r10 - adds r1, r7, r0 -_08017008: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017016 - ldrh r0, [r1] - cmp r0, r3 - bne _08017008 -_08017016: - cmp r2, 0x4 - beq _0801702E - mov r8, r2 - adds r1, r2, r7 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0801702E - subs r0, 0x1 - strb r0, [r1] -_0801702E: - adds r4, r6, 0 - ldr r0, _080170B0 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08016FC6 -_08017038: - mov r1, r8 - cmp r1, 0x4 - beq _080170A0 - ldr r6, _080170B4 @ =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080170A0 - ldr r1, _080170B8 @ =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _080170BC @ =gBitTable - mov r4, r8 - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080170A0 - ldr r4, _080170C0 @ =gActiveBattler - strb r5, [r4] - mov r1, r8 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r3 - adds r2, r6, 0 - adds r2, 0x24 - adds r0, r2 - add r0, r8 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080170A0: - 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 -_080170B0: .4byte gBattlersCount -_080170B4: .4byte gBattleMons -_080170B8: .4byte gDisableStructs -_080170BC: .4byte gBitTable -_080170C0: .4byte gActiveBattler - thumb_func_end PressurePPLoseOnUsingImprision - - thumb_func_start PressurePPLoseOnUsingPerishSong -PressurePPLoseOnUsingPerishSong: @ 80170C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - movs r6, 0x4 - movs r1, 0 - ldr r0, _080171BC @ =gBattlersCount - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bge _08017146 - ldr r7, _080171C0 @ =gBattleMons - movs r2, 0x58 - mov r12, r2 - mov r5, r12 - muls r5, r3 - adds r0, r7, 0 - adds r0, 0xC - adds r2, r5, r0 - mov r10, r2 - mov r9, r5 -_080170F6: - mov r0, r12 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r1, 0x1 - cmp r0, 0x2E - bne _0801713C - cmp r1, r3 - beq _0801713C - movs r2, 0 - mov r1, r10 - ldrh r0, [r1] - cmp r0, 0xC3 - beq _08017126 - ldr r1, _080171C4 @ =gUnknown_2023BF0 - add r1, r9 -_08017118: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017126 - ldrh r0, [r1] - cmp r0, 0xC3 - bne _08017118 -_08017126: - cmp r2, 0x4 - beq _0801713C - adds r6, r2, 0 - adds r0, r6, r5 - ldr r2, _080171C8 @ =gUnknown_2023C08 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0801713C - subs r0, 0x1 - strb r0, [r1] -_0801713C: - adds r1, r4, 0 - mov r0, r8 - ldrb r0, [r0] - cmp r1, r0 - blt _080170F6 -_08017146: - cmp r6, 0x4 - beq _080171AA - ldr r7, _080171C0 @ =gBattleMons - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080171AA - ldr r1, _080171CC @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _080171D0 @ =gBitTable - lsls r0, r6, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080171AA - ldr r4, _080171D4 @ =gActiveBattler - strb r3, [r4] - adds r1, r6, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r5 - adds r2, r7, 0 - adds r2, 0x24 - adds r0, r2 - adds r0, r6 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080171AA: - 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 -_080171BC: .4byte gBattlersCount -_080171C0: .4byte gBattleMons -_080171C4: .4byte gUnknown_2023BF0 -_080171C8: .4byte gUnknown_2023C08 -_080171CC: .4byte gDisableStructs -_080171D0: .4byte gBitTable -_080171D4: .4byte gActiveBattler - thumb_func_end PressurePPLoseOnUsingPerishSong - - thumb_func_start MarkAllBattlersForControllerExec -MarkAllBattlersForControllerExec: @ 80171D8 - push {r4,r5,lr} - ldr r0, _08017208 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08017218 - movs r2, 0 - ldr r4, _0801720C @ =gBattlersCount - ldrb r0, [r4] - cmp r2, r0 - bge _08017236 - ldr r3, _08017210 @ =gBattleControllerExecFlags - ldr r5, _08017214 @ =gBitTable -_080171F4: - ldm r5!, {r1} - lsls r1, 28 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _080171F4 - b _08017236 - .align 2, 0 -_08017208: .4byte gBattleTypeFlags -_0801720C: .4byte gBattlersCount -_08017210: .4byte gBattleControllerExecFlags -_08017214: .4byte gBitTable -_08017218: - movs r2, 0 - ldr r4, _0801723C @ =gBattlersCount - ldrb r0, [r4] - cmp r2, r0 - bge _08017236 - ldr r3, _08017240 @ =gBattleControllerExecFlags - ldr r5, _08017244 @ =gBitTable -_08017226: - ldr r0, [r3] - ldm r5!, {r1} - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _08017226 -_08017236: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801723C: .4byte gBattlersCount -_08017240: .4byte gBattleControllerExecFlags -_08017244: .4byte gBitTable - thumb_func_end MarkAllBattlersForControllerExec - - thumb_func_start MarkBattlerForControllerExec -MarkBattlerForControllerExec: @ 8017248 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08017270 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801727C - ldr r2, _08017274 @ =gBattleControllerExecFlags - ldr r1, _08017278 @ =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - b _0801728C - .align 2, 0 -_08017270: .4byte gBattleTypeFlags -_08017274: .4byte gBattleControllerExecFlags -_08017278: .4byte gBitTable -_0801727C: - ldr r2, _08017290 @ =gBattleControllerExecFlags - ldr r1, _08017294 @ =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] -_0801728C: - pop {r0} - bx r0 - .align 2, 0 -_08017290: .4byte gBattleControllerExecFlags -_08017294: .4byte gBitTable - thumb_func_end MarkBattlerForControllerExec - - thumb_func_start sub_8017298 -sub_8017298: @ 8017298 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r5, _080172AC @ =gBattleControllerExecFlags - ldr r1, _080172B0 @ =gBitTable - lsls r0, r7, 2 - adds r6, r0, r1 - b _080172C2 - .align 2, 0 -_080172AC: .4byte gBattleControllerExecFlags -_080172B0: .4byte gBitTable -_080172B4: - lsls r0, r4, 2 - ldr r1, [r6] - lsls r1, r0 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - adds r4, 0x1 -_080172C2: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _080172B4 - ldr r2, _080172E4 @ =gBattleControllerExecFlags - movs r1, 0x80 - lsls r1, 21 - lsls r1, r7 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080172E4: .4byte gBattleControllerExecFlags - thumb_func_end sub_8017298 - - thumb_func_start CancelMultiTurnMoves -CancelMultiTurnMoves: @ 80172E8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08017338 @ =gBattleMons - movs r2, 0x58 - adds r3, r0, 0 - muls r3, r2 - adds r1, 0x50 - adds r3, r1 - ldr r1, [r3] - ldr r2, _0801733C @ =0xffffefff - ands r1, r2 - ldr r2, _08017340 @ =0xfffff3ff - ands r1, r2 - movs r2, 0x71 - negs r2, r2 - ands r1, r2 - ldr r2, _08017344 @ =0xfffffcff - ands r1, r2 - str r1, [r3] - ldr r1, _08017348 @ =gStatuses3 - lsls r2, r0, 2 - adds r2, r1 - ldr r1, [r2] - ldr r3, _0801734C @ =0xfffbff3f - ands r1, r3 - str r1, [r2] - ldr r2, _08017350 @ =gDisableStructs - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x11] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x11] - movs r0, 0 - strb r0, [r1, 0x10] - bx lr - .align 2, 0 -_08017338: .4byte gBattleMons -_0801733C: .4byte 0xffffefff -_08017340: .4byte 0xfffff3ff -_08017344: .4byte 0xfffffcff -_08017348: .4byte gStatuses3 -_0801734C: .4byte 0xfffbff3f -_08017350: .4byte gDisableStructs - thumb_func_end CancelMultiTurnMoves - - thumb_func_start WasUnableToUseMove -WasUnableToUseMove: @ 8017354 - push {lr} - lsls r0, 24 - ldr r1, _080173A0 @ =gProtectStructs - lsrs r0, 20 - adds r1, r0, r1 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - bne _0801739A - ldrb r2, [r1, 0x1] - lsls r0, r2, 30 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 26 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 25 - cmp r0, 0 - blt _0801739A - lsrs r0, r2, 7 - cmp r0, 0 - bne _0801739A - ldrb r1, [r1, 0x2] - lsls r0, r1, 31 - cmp r0, 0 - bne _0801739A - lsls r0, r1, 30 - cmp r0, 0 - blt _0801739A - lsls r0, r1, 29 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 31 - cmp r0, 0 - beq _080173A4 -_0801739A: - movs r0, 0x1 - b _080173A6 - .align 2, 0 -_080173A0: .4byte gProtectStructs -_080173A4: - movs r0, 0 -_080173A6: - pop {r1} - bx r1 - thumb_func_end WasUnableToUseMove - - thumb_func_start PrepareStringBattle -PrepareStringBattle: @ 80173AC - push {r4,lr} - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r4, _080173CC @ =gActiveBattler - strb r1, [r4] - movs r0, 0 - adds r1, r2, 0 - bl BtlController_EmitPrintString - ldrb r0, [r4] - bl MarkBattlerForControllerExec - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080173CC: .4byte gActiveBattler - thumb_func_end PrepareStringBattle - - thumb_func_start ResetSentPokesToOpponentValue -ResetSentPokesToOpponentValue: @ 80173D0 - push {r4-r6,lr} - movs r3, 0 - ldr r0, _08017424 @ =gSentPokesToOpponent - strb r3, [r0] - strb r3, [r0, 0x1] - movs r1, 0 - ldr r0, _08017428 @ =gBattlersCount - ldrb r2, [r0] - adds r6, r0, 0 - cmp r1, r2 - bge _080173FE - ldr r5, _0801742C @ =gBitTable - adds r4, r2, 0 - ldr r2, _08017430 @ =gBattlerPartyIndexes -_080173EC: - ldrh r0, [r2] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - orrs r3, r0 - adds r2, 0x4 - adds r1, 0x2 - cmp r1, r4 - blt _080173EC -_080173FE: - movs r1, 0x1 - adds r2, r6, 0 - ldrb r0, [r2] - cmp r1, r0 - bge _0801741E - ldr r5, _08017424 @ =gSentPokesToOpponent - movs r4, 0x2 -_0801740C: - adds r0, r1, 0 - ands r0, r4 - asrs r0, 1 - adds r0, r5 - strb r3, [r0] - adds r1, 0x2 - ldrb r0, [r2] - cmp r1, r0 - blt _0801740C -_0801741E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08017424: .4byte gSentPokesToOpponent -_08017428: .4byte gBattlersCount -_0801742C: .4byte gBitTable -_08017430: .4byte gBattlerPartyIndexes - thumb_func_end ResetSentPokesToOpponentValue - - thumb_func_start sub_8017434 -sub_8017434: @ 8017434 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08017498 - movs r0, 0x2 - ands r0, r5 - lsls r0, 24 - lsrs r0, 25 - mov r12, r0 - ldr r1, _080174A4 @ =gSentPokesToOpponent - adds r0, r1 - strb r4, [r0] - adds r5, r4, 0 - ldr r0, _080174A8 @ =gBattlersCount - ldrb r2, [r0] - mov r8, r1 - cmp r4, r2 - bge _08017492 - ldr r0, _080174AC @ =gAbsentBattlerFlags - ldrb r7, [r0] - ldr r1, _080174B0 @ =gBitTable - adds r6, r2, 0 - ldr r3, _080174B4 @ =gBattlerPartyIndexes - adds r2, r1, 0 -_08017476: - ldr r0, [r2] - ands r0, r7 - cmp r0, 0 - bne _08017488 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r4, r0 -_08017488: - adds r3, 0x4 - adds r2, 0x8 - adds r5, 0x2 - cmp r5, r6 - blt _08017476 -_08017492: - mov r0, r12 - add r0, r8 - strb r4, [r0] -_08017498: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080174A4: .4byte gSentPokesToOpponent -_080174A8: .4byte gBattlersCount -_080174AC: .4byte gAbsentBattlerFlags -_080174B0: .4byte gBitTable -_080174B4: .4byte gBattlerPartyIndexes - thumb_func_end sub_8017434 - - thumb_func_start sub_80174B8 -sub_80174B8: @ 80174B8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080174D4 - adds r0, r4, 0 - bl sub_8017434 - b _0801750A -_080174D4: - movs r3, 0x1 - ldr r5, _08017510 @ =gBattlersCount - ldrb r0, [r5] - cmp r3, r0 - bge _0801750A - ldr r0, _08017514 @ =gSentPokesToOpponent - mov r12, r0 - movs r7, 0x2 - ldr r6, _08017518 @ =gBitTable - ldr r1, _0801751C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r4, r0, r1 -_080174EC: - adds r2, r3, 0 - ands r2, r7 - asrs r2, 1 - add r2, r12 - ldrh r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _080174EC -_0801750A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08017510: .4byte gBattlersCount -_08017514: .4byte gSentPokesToOpponent -_08017518: .4byte gBitTable -_0801751C: .4byte gBattlerPartyIndexes - thumb_func_end sub_80174B8 - - thumb_func_start BattleScriptPush -BattleScriptPush: @ 8017520 - push {r4,lr} - ldr r1, _08017540 @ =gBattleResources - ldr r1, [r1] - ldr r3, [r1, 0x8] - adds r4, r3, 0 - adds r4, 0x20 - ldrb r1, [r4] - adds r2, r1, 0x1 - strb r2, [r4] - lsls r1, 24 - lsrs r1, 22 - adds r3, r1 - str r0, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08017540: .4byte gBattleResources - thumb_func_end BattleScriptPush - - thumb_func_start BattleScriptPushCursor -BattleScriptPushCursor: @ 8017544 - ldr r0, _08017564 @ =gBattleResources - ldr r0, [r0] - ldr r2, [r0, 0x8] - adds r3, r2, 0 - adds r3, 0x20 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 22 - adds r2, r0 - ldr r0, _08017568 @ =gBattlescriptCurrInstr - ldr r0, [r0] - str r0, [r2] - bx lr - .align 2, 0 -_08017564: .4byte gBattleResources -_08017568: .4byte gBattlescriptCurrInstr - thumb_func_end BattleScriptPushCursor - - thumb_func_start BattleScriptPop -BattleScriptPop: @ 801756C - ldr r3, _0801758C @ =gBattlescriptCurrInstr - ldr r0, _08017590 @ =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x8] - adds r2, r1, 0 - adds r2, 0x20 - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r1, r0 - ldr r0, [r1] - str r0, [r3] - bx lr - .align 2, 0 -_0801758C: .4byte gBattlescriptCurrInstr -_08017590: .4byte gBattleResources - thumb_func_end BattleScriptPop - - thumb_func_start TrySetCantSelectMoveBattleScript -TrySetCantSelectMoveBattleScript: @ 8017594 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r2, _080176AC @ =gBattleMons - ldr r1, _080176B0 @ =gBattleBufferB - ldr r5, _080176B4 @ =gActiveBattler - ldrb r3, [r5] - lsls r0, r3, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r3 - adds r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r4, [r0] - ldr r1, _080176B8 @ =gBattleStruct - lsls r0, r3, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r1, r0 - mov r8, r1 - ldr r1, _080176BC @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x4] - cmp r0, r4 - bne _080175F0 - cmp r4, 0 - beq _080175F0 - ldr r0, _080176C0 @ =gBattleScripting - strb r3, [r0, 0x17] - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176CC @ =BattleScript_SelectingDisabledMove - str r1, [r0] - movs r6, 0x1 -_080175F0: - ldr r1, _080176D0 @ =gLastUsedMove - ldr r5, _080176B4 @ =gActiveBattler - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0801762C - cmp r4, 0xA5 - beq _0801762C - ldr r1, _080176AC @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0801762C - adds r0, r2, 0 - bl CancelMultiTurnMoves - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176D4 @ =BattleScript_SelectingTormentedMove - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801762C: - ldr r2, _080176BC @ =gDisableStructs - ldr r3, _080176B4 @ =gActiveBattler - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _08017668 - ldr r0, _080176D8 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08017668 - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176DC @ =BattleScript_SelectingNotAllowedMoveTaunt - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017668: - ldr r5, _080176B4 @ =gActiveBattler - ldrb r0, [r5] - adds r1, r4, 0 - bl GetImprisonedMovesCount - lsls r0, 24 - cmp r0, 0 - beq _0801768E - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176E0 @ =BattleScript_SelectingImprisonedMove - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801768E: - ldr r1, _080176AC @ =gBattleMons - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _080176E8 - ldr r1, _080176E4 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - b _080176F2 - .align 2, 0 -_080176AC: .4byte gBattleMons -_080176B0: .4byte gBattleBufferB -_080176B4: .4byte gActiveBattler -_080176B8: .4byte gBattleStruct -_080176BC: .4byte gDisableStructs -_080176C0: .4byte gBattleScripting -_080176C4: .4byte gCurrentMove -_080176C8: .4byte gSelectionBattleScripts -_080176CC: .4byte BattleScript_SelectingDisabledMove -_080176D0: .4byte gLastUsedMove -_080176D4: .4byte BattleScript_SelectingTormentedMove -_080176D8: .4byte gBattleMoves -_080176DC: .4byte BattleScript_SelectingNotAllowedMoveTaunt -_080176E0: .4byte BattleScript_SelectingImprisonedMove -_080176E4: .4byte gEnigmaBerries -_080176E8: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r3, r0, 24 -_080176F2: - ldr r2, _08017774 @ =gPotentialItemEffectBattler - ldr r1, _08017778 @ =gActiveBattler - ldrb r0, [r1] - strb r0, [r2] - ldr r7, _0801777C @ =gBattleMons - adds r5, r1, 0 - cmp r3, 0x1D - bne _0801773A - mov r0, r8 - ldrh r1, [r0] - adds r2, r1, 0 - cmp r2, 0 - beq _0801773A - ldr r0, _08017780 @ =0x0000ffff - cmp r2, r0 - beq _0801773A - cmp r2, r4 - beq _0801773A - ldr r0, _08017784 @ =gCurrentMove - strh r1, [r0] - ldr r2, _08017788 @ =gLastUsedItem - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r1, _0801778C @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08017790 @ =BattleScript_SelectingNotAllowedMoveChoiceItem - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801773A: - ldr r0, _08017794 @ =gBattleBufferB - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, 0x2 - adds r1, r0 - movs r0, 0x58 - muls r0, r2 - ldrb r1, [r1] - adds r0, r1 - adds r1, r7, 0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08017768 - ldr r1, _0801778C @ =gSelectionBattleScripts - lsls r0, r2, 2 - adds r0, r1 - ldr r1, _08017798 @ =BattleScript_SelectingMoveWithNoPP - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017768: - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017774: .4byte gPotentialItemEffectBattler -_08017778: .4byte gActiveBattler -_0801777C: .4byte gBattleMons -_08017780: .4byte 0x0000ffff -_08017784: .4byte gCurrentMove -_08017788: .4byte gLastUsedItem -_0801778C: .4byte gSelectionBattleScripts -_08017790: .4byte BattleScript_SelectingNotAllowedMoveChoiceItem -_08017794: .4byte gBattleBufferB -_08017798: .4byte BattleScript_SelectingMoveWithNoPP - thumb_func_end TrySetCantSelectMoveBattleScript - - thumb_func_start CheckMoveLimitations -CheckMoveLimitations: @ 801779C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - ldr r1, _080177E0 @ =gBattleStruct - lsls r0, r7, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r1, r0 - str r1, [sp, 0x4] - ldr r1, _080177E4 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _080177EC - ldr r2, _080177E8 @ =gEnigmaBerries - lsls r1, r7, 3 - subs r0, r1, r7 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x7] - str r0, [sp] - b _080177FE - .align 2, 0 -_080177E0: .4byte gBattleStruct -_080177E4: .4byte gBattleMons -_080177E8: .4byte gEnigmaBerries -_080177EC: - ldrh r0, [r1, 0x2E] - str r3, [sp, 0x14] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, r7, 3 - ldr r3, [sp, 0x14] -_080177FE: - ldr r0, _08017978 @ =gPotentialItemEffectBattler - strb r7, [r0] - movs r0, 0 - mov r9, r0 - lsls r2, r7, 1 - str r2, [sp, 0xC] - ldr r5, _0801797C @ =gDisableStructs - mov r12, r5 - ldr r0, _08017980 @ =gBattleMons - movs r2, 0x58 - adds r6, r7, 0 - muls r6, r2 - str r6, [sp, 0x8] - ldr r2, _08017984 @ =gUnknown_2023BF0 - adds r5, r6, r2 - movs r6, 0 - str r6, [sp, 0x10] - mov r10, r0 - subs r0, r1, r7 - lsls r0, 2 - mov r8, r0 - ldr r6, _08017988 @ =gBitTable -_0801782A: - ldrh r0, [r5] - cmp r0, 0 - bne _08017840 - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _08017840 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017840: - ldr r0, [sp, 0x8] - add r0, r9 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08017860 - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _08017860 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017860: - mov r1, r8 - add r1, r12 - ldrh r0, [r5] - ldrh r1, [r1, 0x4] - cmp r0, r1 - bne _0801787C - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _0801787C - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801787C: - movs r0, 0x58 - adds r2, r7, 0 - muls r2, r0 - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldr r1, _08017984 @ =gUnknown_2023BF0 - adds r0, r1 - mov r12, r0 - ldr r1, _0801798C @ =gLastUsedMove - ldr r0, [sp, 0xC] - adds r1, r0, r1 - str r1, [sp, 0x18] - mov r1, r12 - ldrh r1, [r1] - mov r12, r1 - ldr r0, [sp, 0x18] - ldrh r0, [r0] - cmp r12, r0 - bne _080178BE - movs r0, 0x8 - ands r0, r3 - cmp r0, 0 - beq _080178BE - mov r0, r10 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bge _080178BE - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080178BE: - ldr r0, _0801797C @ =gDisableStructs - add r0, r8 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _080178EC - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _080178EC - ldr r2, _08017990 @ =gBattleMoves - ldrh r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080178EC - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080178EC: - ldrh r1, [r5] - adds r0, r7, 0 - str r3, [sp, 0x14] - bl GetImprisonedMovesCount - lsls r0, 24 - ldr r3, [sp, 0x14] - cmp r0, 0 - beq _0801790E - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _0801790E - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801790E: - ldr r1, _0801797C @ =gDisableStructs - mov r0, r8 - adds r2, r0, r1 - ldrb r0, [r2, 0xE] - lsls r0, 28 - mov r12, r1 - cmp r0, 0 - beq _0801792E - ldrh r0, [r2, 0x6] - ldrh r1, [r5] - cmp r0, r1 - beq _0801792E - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801792E: - ldr r2, [sp] - cmp r2, 0x1D - bne _08017950 - ldr r0, [sp, 0x4] - ldrh r1, [r0] - cmp r1, 0 - beq _08017950 - ldr r0, _08017994 @ =0x0000ffff - cmp r1, r0 - beq _08017950 - ldrh r2, [r5] - cmp r1, r2 - beq _08017950 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017950: - adds r6, 0x4 - adds r5, 0x2 - ldr r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x10] - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x3 - bgt _08017966 - b _0801782A -_08017966: - adds r0, r4, 0 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017978: .4byte gPotentialItemEffectBattler -_0801797C: .4byte gDisableStructs -_08017980: .4byte gBattleMons -_08017984: .4byte gUnknown_2023BF0 -_08017988: .4byte gBitTable -_0801798C: .4byte gLastUsedMove -_08017990: .4byte gBattleMoves -_08017994: .4byte 0x0000ffff - thumb_func_end CheckMoveLimitations - - thumb_func_start AreAllMovesUnusable -AreAllMovesUnusable: @ 8017998 - push {r4-r6,lr} - ldr r5, _08017A04 @ =gActiveBattler - ldrb r0, [r5] - movs r1, 0 - movs r2, 0xFF - bl CheckMoveLimitations - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _08017A40 - ldr r0, _08017A08 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08017A0C @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08017A10 @ =gUnknown_81D8EA0 - str r1, [r0] - ldr r0, _08017A14 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08017A1C - ldrb r0, [r5] - bl GetBattlerPosition - adds r4, r0, 0 - bl Random - movs r1, 0x1 - eors r4, r1 - movs r1, 0x2 - ands r1, r0 - orrs r4, r1 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBattlerAtPosition - ldr r2, _08017A18 @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08017A50 - .align 2, 0 -_08017A04: .4byte gActiveBattler -_08017A08: .4byte gProtectStructs -_08017A0C: .4byte gSelectionBattleScripts -_08017A10: .4byte gUnknown_81D8EA0 -_08017A14: .4byte gBattleTypeFlags -_08017A18: .4byte gBattleBufferB -_08017A1C: - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r2, _08017A3C @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08017A50 - .align 2, 0 -_08017A3C: .4byte gBattleBufferB -_08017A40: - ldr r0, _08017A60 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 -_08017A50: - strb r0, [r1] - movs r0, 0 - cmp r6, 0xF - bne _08017A5A - movs r0, 0x1 -_08017A5A: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08017A60: .4byte gProtectStructs - thumb_func_end AreAllMovesUnusable - - thumb_func_start GetImprisonedMovesCount -GetImprisonedMovesCount: @ 8017A64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - movs r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, _08017AF8 @ =gBattlersCount - ldrb r0, [r0] - cmp r6, r0 - bge _08017AE8 - ldr r7, _08017AFC @ =gUnknown_2023BF0 - mov r8, r7 -_08017A8E: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r3, r4, 0x1 - cmp r9, r0 - beq _08017ADE - ldr r1, _08017B00 @ =gStatuses3 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08017ADE - movs r2, 0 - movs r0, 0x58 - adds r1, r4, 0 - muls r1, r0 - adds r0, r1, r7 - ldrh r0, [r0] - cmp r5, r0 - beq _08017AD4 - mov r4, r8 - adds r0, r1, r4 -_08017AC6: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017ADE - ldrh r1, [r0] - cmp r5, r1 - bne _08017AC6 -_08017AD4: - cmp r2, 0x3 - bgt _08017ADE - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017ADE: - adds r4, r3, 0 - ldr r0, _08017AF8 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08017A8E -_08017AE8: - adds r0, r6, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017AF8: .4byte gBattlersCount -_08017AFC: .4byte gUnknown_2023BF0 -_08017B00: .4byte gStatuses3 - thumb_func_end GetImprisonedMovesCount - - thumb_func_start DoFieldEndTurnEffects -DoFieldEndTurnEffects: @ 8017B04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r9, r0 - ldr r1, _08017BA8 @ =gBattlerAttacker - mov r2, r9 - strb r2, [r1] - ldr r0, _08017BAC @ =gBattlersCount - ldrb r4, [r0] - adds r6, r1, 0 - mov r10, r0 - ldr r7, _08017BB0 @ =gBattlerTarget - ldr r3, _08017BB4 @ =gBattleStruct - mov r12, r3 - cmp r9, r4 - bcs _08017B58 - ldr r2, _08017BB8 @ =gAbsentBattlerFlags - ldrb r1, [r2] - ldr r5, _08017BBC @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08017B58 - adds r3, r6, 0 -_08017B3A: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08017B58 - ldrb r0, [r2] - ldrb r1, [r6] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08017B3A -_08017B58: - movs r0, 0 - strb r0, [r7] - mov r0, r10 - ldrb r4, [r0] - cmp r4, 0 - beq _08017B92 - ldr r2, _08017BB8 @ =gAbsentBattlerFlags - ldrb r1, [r2] - ldr r5, _08017BBC @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08017B92 - adds r3, r7, 0 -_08017B74: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08017B92 - ldrb r0, [r2] - ldrb r1, [r7] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08017B74 -_08017B92: - mov r1, r12 - ldr r0, [r1] - ldrb r0, [r0, 0x3] - cmp r0, 0xA - bls _08017B9E - b _0801822A -_08017B9E: - lsls r0, 2 - ldr r1, _08017BC0 @ =_08017BC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08017BA8: .4byte gBattlerAttacker -_08017BAC: .4byte gBattlersCount -_08017BB0: .4byte gBattlerTarget -_08017BB4: .4byte gBattleStruct -_08017BB8: .4byte gAbsentBattlerFlags -_08017BBC: .4byte gBitTable -_08017BC0: .4byte _08017BC4 - .align 2, 0 -_08017BC4: - .4byte _08017BF0 - .4byte _08017C76 - .4byte _08017D3C - .4byte _08017E08 - .4byte _08017EE4 - .4byte _08017F9C - .4byte _08018050 - .4byte _080180D4 - .4byte _08018144 - .4byte _0801819C - .4byte _08018220 -_08017BF0: - movs r5, 0 - ldr r1, _08017C10 @ =gBattlersCount - mov r10, r1 - ldrb r2, [r1] - cmp r5, r2 - bge _08017C0A - ldr r2, _08017C14 @ =gBattlerByTurnOrder -_08017BFE: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r3, [r1] - cmp r5, r3 - blt _08017BFE -_08017C0A: - movs r5, 0 - b _08017C58 - .align 2, 0 -_08017C10: .4byte gBattlersCount -_08017C14: .4byte gBattlerByTurnOrder -_08017C18: - adds r4, r5, 0x1 - adds r6, r4, 0 - ldrb r1, [r1] - cmp r6, r1 - bge _08017C56 - ldr r7, _08017D14 @ =gBattlerByTurnOrder - ldr r0, _08017D18 @ =gBattlersCount - mov r10, r0 - lsls r1, r5, 24 - mov r8, r1 -_08017C2C: - adds r0, r5, r7 - ldrb r0, [r0] - adds r1, r4, r7 - ldrb r1, [r1] - movs r2, 0 - bl GetWhoStrikesFirst - lsls r0, 24 - cmp r0, 0 - beq _08017C4C - lsls r1, r4, 24 - lsrs r1, 24 - mov r2, r8 - lsrs r0, r2, 24 - bl SwapTurnOrder -_08017C4C: - adds r4, 0x1 - ldr r0, _08017D18 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08017C2C -_08017C56: - adds r5, r6, 0 -_08017C58: - mov r1, r10 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _08017C18 - ldr r2, _08017D1C @ =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - ldr r0, [r2] - adds r0, 0xDB - movs r1, 0 - strb r1, [r0] - mov r12, r2 -_08017C76: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017C84 - b _08017F60 -_08017C84: - ldr r3, _08017D20 @ =gActiveBattler - mov r8, r3 - movs r7, 0 - ldr r6, _08017D24 @ =gBattlerAttacker - ldr r5, _08017D28 @ =gBattleTextBuff1 -_08017C8E: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017D2C @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x1] - strb r0, [r6] - mov r3, r8 - strb r0, [r3] - ldr r0, _08017D30 @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08017CF0 - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - movs r4, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017CF0 - ldrh r0, [r3] - ldr r2, _08017D34 @ =0x0000fffe - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017D38 @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x73 - strb r0, [r5, 0x2] - strb r7, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r4 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017CF0: - ldr r2, _08017D1C @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _08017D06 - b _08018232 -_08017D06: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017C8E - b _08017F60 - .align 2, 0 -_08017D14: .4byte gBattlerByTurnOrder -_08017D18: .4byte gBattlersCount -_08017D1C: .4byte gBattleStruct -_08017D20: .4byte gActiveBattler -_08017D24: .4byte gBattlerAttacker -_08017D28: .4byte gBattleTextBuff1 -_08017D2C: .4byte gSideTimers -_08017D30: .4byte gSideStatuses -_08017D34: .4byte 0x0000fffe -_08017D38: .4byte BattleScript_SideStatusWoreOff -_08017D3C: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017D4A - b _08017EA4 -_08017D4A: - movs r0, 0x2 - mov r10, r0 - movs r2, 0 - mov r8, r2 - ldr r7, _08017DE4 @ =gBattlerAttacker - ldr r5, _08017DE8 @ =gBattleTextBuff1 -_08017D56: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017DEC @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x3] - strb r0, [r7] - ldr r3, _08017DF0 @ =gActiveBattler - strb r0, [r3] - ldr r0, _08017DF4 @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08017DBE - ldrb r0, [r2, 0x2] - subs r0, 0x1 - strb r0, [r2, 0x2] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017DBE - ldrh r0, [r3] - ldr r2, _08017DF8 @ =0x0000fffd - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017DFC @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - ldr r0, _08017E00 @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - mov r3, r10 - strb r3, [r5, 0x1] - movs r0, 0x71 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017DBE: - ldr r2, _08017E04 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r1, r9 - cmp r1, 0 - beq _08017DD4 - b _08018232 -_08017DD4: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017D56 - b _08017EA4 - .align 2, 0 -_08017DE4: .4byte gBattlerAttacker -_08017DE8: .4byte gBattleTextBuff1 -_08017DEC: .4byte gSideTimers -_08017DF0: .4byte gActiveBattler -_08017DF4: .4byte gSideStatuses -_08017DF8: .4byte 0x0000fffd -_08017DFC: .4byte BattleScript_SideStatusWoreOff -_08017E00: .4byte gBattleCommunication -_08017E04: .4byte gBattleStruct -_08017E08: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08017EA4 - ldr r0, _08017EC0 @ =gActiveBattler - mov r10, r0 - movs r2, 0 - mov r8, r2 - ldr r7, _08017EC4 @ =gBattlerAttacker - ldr r5, _08017EC8 @ =gBattleTextBuff1 -_08017E20: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r1, _08017ECC @ =gSideTimers - lsls r3, r4, 1 - adds r0, r3, r4 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x5] - strb r0, [r7] - mov r2, r10 - strb r0, [r2] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08017E82 - subs r0, 0x1 - strb r0, [r1, 0x4] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017E82 - ldr r2, _08017ED0 @ =gSideStatuses - adds r2, r3, r2 - ldrh r0, [r2] - ldr r3, _08017ED4 @ =0x0000feff - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] - ldr r0, _08017ED8 @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - ldr r0, _08017EDC @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x36 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017E82: - ldr r2, _08017EE0 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r1, r9 - cmp r1, 0 - beq _08017E98 - b _08018232 -_08017E98: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017E20 -_08017EA4: - mov r2, r9 - cmp r2, 0 - beq _08017EAC - b _08018232 -_08017EAC: - mov r3, r12 - ldr r0, [r3] - ldrb r1, [r0, 0x3] - adds r1, 0x1 - strb r1, [r0, 0x3] - ldr r0, [r3] - adds r0, 0xDB - strb r2, [r0] - b _0801822A - .align 2, 0 -_08017EC0: .4byte gActiveBattler -_08017EC4: .4byte gBattlerAttacker -_08017EC8: .4byte gBattleTextBuff1 -_08017ECC: .4byte gSideTimers -_08017ED0: .4byte gSideStatuses -_08017ED4: .4byte 0x0000feff -_08017ED8: .4byte BattleScript_SideStatusWoreOff -_08017EDC: .4byte gBattleCommunication -_08017EE0: .4byte gBattleStruct -_08017EE4: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08017F60 - ldr r6, _08017F80 @ =gActiveBattler - ldr r5, _08017F84 @ =gBattlerAttacker -_08017EF4: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017F88 @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x7] - strb r0, [r5] - strb r0, [r6] - ldr r0, _08017F8C @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08017F3E - ldrb r0, [r2, 0x6] - subs r0, 0x1 - strb r0, [r2, 0x6] - lsls r0, 24 - cmp r0, 0 - bne _08017F3E - ldrh r0, [r3] - ldr r2, _08017F90 @ =0x0000ffdf - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017F94 @ =BattleScript_SafeguardEnds - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017F3E: - ldr r2, _08017F98 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _08017F54 - b _08018232 -_08017F54: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017EF4 -_08017F60: - mov r0, r9 - cmp r0, 0 - beq _08017F68 - b _08018232 -_08017F68: - mov r1, r12 - ldr r0, [r1] - ldrb r1, [r0, 0x3] - adds r1, 0x1 - strb r1, [r0, 0x3] - mov r2, r12 - ldr r0, [r2] - adds r0, 0xDB - mov r3, r9 - strb r3, [r0] - b _0801822A - .align 2, 0 -_08017F80: .4byte gActiveBattler -_08017F84: .4byte gBattlerAttacker -_08017F88: .4byte gSideTimers -_08017F8C: .4byte gSideStatuses -_08017F90: .4byte 0x0000ffdf -_08017F94: .4byte BattleScript_SafeguardEnds -_08017F98: .4byte gBattleStruct -_08017F9C: - mov r2, r12 - ldr r0, [r2] - adds r0, 0xDB - ldr r1, _08018030 @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0801801C - ldr r4, _08018034 @ =gActiveBattler - ldr r5, _08018038 @ =gBattlerByTurnOrder -_08017FB0: - ldr r0, [r2] - adds r0, 0xDB - ldrb r0, [r0] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, _0801803C @ =gWishFutureKnock - adds r0, 0x20 - ldrb r2, [r4] - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _08017FF8 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08017FF8 - ldr r1, _08018040 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08017FF8 - ldr r0, _08018044 @ =gBattlerTarget - strb r2, [r0] - ldr r0, _08018048 @ =BattleScript_WishComesTrue - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017FF8: - ldr r2, _0801804C @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _0801800E - b _08018232 -_0801800E: - ldr r0, [r2] - adds r0, 0xDB - ldr r1, _08018030 @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _08017FB0 -_0801801C: - mov r0, r9 - cmp r0, 0 - beq _08018024 - b _08018232 -_08018024: - mov r2, r12 - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - b _0801822A - .align 2, 0 -_08018030: .4byte gBattlersCount -_08018034: .4byte gActiveBattler -_08018038: .4byte gBattlerByTurnOrder -_0801803C: .4byte gWishFutureKnock -_08018040: .4byte gBattleMons -_08018044: .4byte gBattlerTarget -_08018048: .4byte BattleScript_WishComesTrue -_0801804C: .4byte gBattleStruct -_08018050: - ldr r3, _08018088 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x7 - ands r0, r2 - cmp r0, 0 - bne _0801805E - b _080181FC -_0801805E: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - bne _080180AA - ldr r1, _0801808C @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0801809C - ldr r0, _08018090 @ =0x0000fffe - ands r0, r2 - ldr r1, _08018094 @ =0x0000fffd - ands r0, r1 - strh r0, [r3] - ldr r1, _08018098 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _080180C8 - .align 2, 0 -_08018088: .4byte gBattleWeather -_0801808C: .4byte gWishFutureKnock -_08018090: .4byte 0x0000fffe -_08018094: .4byte 0x0000fffd -_08018098: .4byte gBattleCommunication -_0801809C: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080180B6 - b _080180C4 -_080180AA: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080180C4 -_080180B6: - ldr r1, _080180C0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080180C8 - .align 2, 0 -_080180C0: .4byte gBattleCommunication -_080180C4: - ldr r0, _080180CC @ =gBattleCommunication - strb r1, [r0, 0x5] -_080180C8: - ldr r0, _080180D0 @ =BattleScript_RainContinuesOrEnds - b _080181EE - .align 2, 0 -_080180CC: .4byte gBattleCommunication -_080180D0: .4byte BattleScript_RainContinuesOrEnds -_080180D4: - ldr r3, _08018108 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - bne _080180E2 - b _080181FC -_080180E2: - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _0801811C - ldr r1, _0801810C @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0801811C - ldr r0, _08018110 @ =0x0000fff7 - ands r0, r2 - strh r0, [r3] - ldr r1, _08018114 @ =gBattlescriptCurrInstr - ldr r0, _08018118 @ =BattleScript_SandStormHailEnds - b _08018120 - .align 2, 0 -_08018108: .4byte gBattleWeather -_0801810C: .4byte gWishFutureKnock -_08018110: .4byte 0x0000fff7 -_08018114: .4byte gBattlescriptCurrInstr -_08018118: .4byte BattleScript_SandStormHailEnds -_0801811C: - ldr r1, _08018134 @ =gBattlescriptCurrInstr - ldr r0, _08018138 @ =BattleScript_DamagingWeatherContinues -_08018120: - str r0, [r1] - adds r3, r1, 0 - ldr r1, _0801813C @ =gBattleScripting - movs r2, 0 - movs r0, 0xC - strb r0, [r1, 0x10] - ldr r0, _08018140 @ =gBattleCommunication - strb r2, [r0, 0x5] - b _080181EC - .align 2, 0 -_08018134: .4byte gBattlescriptCurrInstr -_08018138: .4byte BattleScript_DamagingWeatherContinues -_0801813C: .4byte gBattleScripting -_08018140: .4byte gBattleCommunication -_08018144: - ldr r3, _08018174 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x60 - ands r0, r2 - cmp r0, 0 - beq _080181FC - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08018188 - ldr r1, _08018178 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08018188 - ldr r0, _0801817C @ =0x0000ffdf - ands r0, r2 - strh r0, [r3] - ldr r1, _08018180 @ =gBattlescriptCurrInstr - ldr r0, _08018184 @ =BattleScript_SunlightFaded - b _0801818C - .align 2, 0 -_08018174: .4byte gBattleWeather -_08018178: .4byte gWishFutureKnock -_0801817C: .4byte 0x0000ffdf -_08018180: .4byte gBattlescriptCurrInstr -_08018184: .4byte BattleScript_SunlightFaded -_08018188: - ldr r1, _08018194 @ =gBattlescriptCurrInstr - ldr r0, _08018198 @ =BattleScript_SunlightContinues -_0801818C: - str r0, [r1] - adds r3, r1, 0 - b _080181EC - .align 2, 0 -_08018194: .4byte gBattlescriptCurrInstr -_08018198: .4byte BattleScript_SunlightContinues -_0801819C: - ldr r3, _080181C4 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080181FC - ldr r1, _080181C8 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080181D8 - ldr r0, _080181CC @ =0x0000ff7f - ands r0, r2 - strh r0, [r3] - ldr r1, _080181D0 @ =gBattlescriptCurrInstr - ldr r0, _080181D4 @ =BattleScript_SandStormHailEnds - b _080181DC - .align 2, 0 -_080181C4: .4byte gBattleWeather -_080181C8: .4byte gWishFutureKnock -_080181CC: .4byte 0x0000ff7f -_080181D0: .4byte gBattlescriptCurrInstr -_080181D4: .4byte BattleScript_SandStormHailEnds -_080181D8: - ldr r1, _0801820C @ =gBattlescriptCurrInstr - ldr r0, _08018210 @ =BattleScript_DamagingWeatherContinues -_080181DC: - str r0, [r1] - adds r3, r1, 0 - ldr r1, _08018214 @ =gBattleScripting - movs r0, 0xD - strb r0, [r1, 0x10] - ldr r1, _08018218 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_080181EC: - ldr r0, [r3] -_080181EE: - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080181FC: - ldr r2, _0801821C @ =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - mov r12, r2 - b _0801822A - .align 2, 0 -_0801820C: .4byte gBattlescriptCurrInstr -_08018210: .4byte BattleScript_DamagingWeatherContinues -_08018214: .4byte gBattleScripting -_08018218: .4byte gBattleCommunication -_0801821C: .4byte gBattleStruct -_08018220: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801822A: - mov r3, r9 - cmp r3, 0 - bne _08018232 - b _08017B92 -_08018232: - ldr r0, _08018250 @ =gBattleMainFunc - ldr r1, [r0] - ldr r0, _08018254 @ =BattleTurnPassed - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018250: .4byte gBattleMainFunc -_08018254: .4byte BattleTurnPassed - thumb_func_end DoFieldEndTurnEffects - - thumb_func_start DoBattlerEndTurnEffects -DoBattlerEndTurnEffects: @ 8018258 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - ldr r2, _0801828C @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018290 @ =0x01000020 - orrs r0, r1 - str r0, [r2] - ldr r5, _08018294 @ =gBattleStruct - ldr r2, [r5] - ldr r0, _08018298 @ =gBattlersCount - ldrb r1, [r2, 0x1] - adds r7, r5, 0 - mov r8, r0 - ldrb r3, [r0] - cmp r1, r3 - bcc _08018288 - bl _08018C6C -_08018288: - bl _08018C62 - .align 2, 0 -_0801828C: .4byte gHitMarker -_08018290: .4byte 0x01000020 -_08018294: .4byte gBattleStruct -_08018298: .4byte gBattlersCount -_0801829C: - ldr r3, _080182D0 @ =gActiveBattler - ldr r4, _080182D4 @ =gBattlerAttacker - ldr r1, _080182D8 @ =gBattlerByTurnOrder - ldr r5, [r5] - ldrb r0, [r5, 0x1] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - strb r0, [r3] - ldr r0, _080182DC @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _080182E0 @ =gBitTable - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - adds r6, r3, 0 - cmp r1, 0 - beq _080182E4 - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - bl _08018C50 - .align 2, 0 -_080182D0: .4byte gActiveBattler -_080182D4: .4byte gBattlerAttacker -_080182D8: .4byte gBattlerByTurnOrder -_080182DC: .4byte gAbsentBattlerFlags -_080182E0: .4byte gBitTable -_080182E4: - ldrb r0, [r5] - cmp r0, 0x13 - bls _080182EE - bl _08018C46 -_080182EE: - lsls r0, 2 - ldr r1, _080182F8 @ =_080182FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080182F8: .4byte _080182FC - .align 2, 0 -_080182FC: - .4byte _0801834C - .4byte _080183AC - .4byte _080183CA - .4byte _080183FA - .4byte _08018478 - .4byte _080184C0 - .4byte _08018540 - .4byte _08018588 - .4byte _080185EC - .4byte _08018634 - .4byte _08018794 - .4byte _080188B0 - .4byte _08018958 - .4byte _08018A1C - .4byte _08018AD0 - .4byte _08018AF0 - .4byte _08018B3C - .4byte _08018B6C - .4byte _080183E2 - .4byte _08018C38 -_0801834C: - ldr r1, _0801839C @ =gStatuses3 - ldrb r3, [r6] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - bne _08018364 - bl _08018C12 -_08018364: - ldr r0, _080183A0 @ =gBattleMons - movs r1, 0x58 - muls r1, r3 - adds r0, r1, r0 - ldrh r2, [r0, 0x28] - ldrh r5, [r0, 0x2C] - cmp r2, r5 - bne _08018378 - bl _08018C12 -_08018378: - cmp r2, 0 - bne _08018380 - bl _08018C12 -_08018380: - ldr r1, _080183A4 @ =gBattleMoveDamage - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08018390 - movs r0, 0x1 - str r0, [r1] -_08018390: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r0, _080183A8 @ =BattleScript_IngrainTurnHeal - bl _08018C04 - .align 2, 0 -_0801839C: .4byte gStatuses3 -_080183A0: .4byte gBattleMons -_080183A4: .4byte gBattleMoveDamage -_080183A8: .4byte BattleScript_IngrainTurnHeal -_080183AC: - ldrb r1, [r6] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183C6 - bl _08018C12 -_080183C6: - bl _08018C08 -_080183CA: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183DE - bl _08018C12 -_080183DE: - bl _08018C08 -_080183E2: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0x1 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183F6 - bl _08018C12 -_080183F6: - bl _08018C08 -_080183FA: - ldr r0, _08018460 @ =gStatuses3 - ldrb r2, [r6] - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08018410 - bl _08018C12 -_08018410: - ldr r3, _08018464 @ =gBattleMons - movs r5, 0x3 - ands r5, r1 - movs r1, 0x58 - adds r0, r5, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018428 - bl _08018C12 -_08018428: - adds r0, r2, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018438 - bl _08018C12 -_08018438: - ldr r0, _08018468 @ =gBattlerTarget - strb r5, [r0] - ldr r2, _0801846C @ =gBattleMoveDamage - ldrb r0, [r6] - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _08018452 - movs r0, 0x1 - str r0, [r2] -_08018452: - ldr r1, _08018470 @ =gBattleScripting - strb r5, [r1, 0x10] - ldrb r0, [r4] - strb r0, [r1, 0x11] - ldr r0, _08018474 @ =BattleScript_LeechSeedTurnDrain - b _08018C04 - .align 2, 0 -_08018460: .4byte gStatuses3 -_08018464: .4byte gBattleMons -_08018468: .4byte gBattlerTarget -_0801846C: .4byte gBattleMoveDamage -_08018470: .4byte gBattleScripting -_08018474: .4byte BattleScript_LeechSeedTurnDrain -_08018478: - ldr r2, _080184B4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08018494 - b _08018C12 -_08018494: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _0801849E - b _08018C12 -_0801849E: - ldr r2, _080184B8 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _080184AE - movs r0, 0x1 - str r0, [r2] -_080184AE: - ldr r0, _080184BC @ =BattleScript_PoisonTurnDmg - b _08018C04 - .align 2, 0 -_080184B4: .4byte gBattleMons -_080184B8: .4byte gBattleMoveDamage -_080184BC: .4byte BattleScript_PoisonTurnDmg -_080184C0: - ldr r4, _08018534 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - mov r8, r7 - mov r2, r8 - muls r2, r0 - adds r3, r4, 0 - adds r3, 0x4C - adds r0, r2, r3 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080184DE - b _08018C12 -_080184DE: - adds r1, r2, r4 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _080184E8 - b _08018C12 -_080184E8: - ldr r5, _08018538 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 4 - str r0, [r5] - cmp r0, 0 - bne _080184F8 - movs r0, 0x1 - str r0, [r5] -_080184F8: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r2, r0, r3 - ldr r1, [r2] - movs r4, 0xF0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, r4 - beq _08018518 - movs r7, 0x80 - lsls r7, 1 - adds r0, r1, r7 - str r0, [r2] -_08018518: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r3 - ldr r0, [r0] - ands r0, r4 - lsrs r0, 8 - ldr r1, [r5] - muls r0, r1 - str r0, [r5] - ldr r0, _0801853C @ =BattleScript_PoisonTurnDmg - b _08018C04 - .align 2, 0 -_08018534: .4byte gBattleMons -_08018538: .4byte gBattleMoveDamage -_0801853C: .4byte BattleScript_PoisonTurnDmg -_08018540: - ldr r2, _0801857C @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0801855C - b _08018C12 -_0801855C: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08018566 - b _08018C12 -_08018566: - ldr r2, _08018580 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _08018576 - movs r0, 0x1 - str r0, [r2] -_08018576: - ldr r0, _08018584 @ =BattleScript_BurnTurnDmg - b _08018C04 - .align 2, 0 -_0801857C: .4byte gBattleMons -_08018580: .4byte gBattleMoveDamage -_08018584: .4byte BattleScript_BurnTurnDmg -_08018588: - ldr r4, _080185D4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r1, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r5, r1, r0 - ldr r2, [r5] - movs r0, 0x80 - lsls r0, 20 - ands r0, r2 - cmp r0, 0 - bne _080185A4 - b _08018C12 -_080185A4: - adds r3, r1, r4 - ldrh r0, [r3, 0x28] - cmp r0, 0 - bne _080185AE - b _08018C12 -_080185AE: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080185E0 - ldr r1, _080185D8 @ =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 2 - str r0, [r1] - cmp r0, 0 - bne _080185CE - movs r0, 0x1 - str r0, [r1] -_080185CE: - ldr r0, _080185DC @ =BattleScript_NightmareTurnDmg - b _08018C04 - .align 2, 0 -_080185D4: .4byte gBattleMons -_080185D8: .4byte gBattleMoveDamage -_080185DC: .4byte BattleScript_NightmareTurnDmg -_080185E0: - ldr r0, _080185E8 @ =0xf7ffffff - ands r2, r0 - str r2, [r5] - b _08018C12 - .align 2, 0 -_080185E8: .4byte 0xf7ffffff -_080185EC: - ldr r2, _08018628 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 21 - ands r0, r1 - cmp r0, 0 - bne _0801860A - b _08018C12 -_0801860A: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08018614 - b _08018C12 -_08018614: - ldr r2, _0801862C @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _08018624 - movs r0, 0x1 - str r0, [r2] -_08018624: - ldr r0, _08018630 @ =BattleScript_CurseTurnDmg - b _08018C04 - .align 2, 0 -_08018628: .4byte gBattleMons -_0801862C: .4byte gBattleMoveDamage -_08018630: .4byte BattleScript_CurseTurnDmg -_08018634: - ldr r3, _080186D4 @ =gBattleMons - mov r8, r3 - ldrb r0, [r6] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - movs r5, 0x50 - add r5, r8 - mov r10, r5 - adds r4, r1, r5 - ldr r2, [r4] - movs r5, 0xE0 - lsls r5, 8 - adds r0, r2, 0 - ands r0, r5 - cmp r0, 0 - bne _08018658 - b _08018C12 -_08018658: - mov r7, r8 - adds r0, r1, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018664 - b _08018C12 -_08018664: - ldr r1, _080186D8 @ =0xffffe000 - adds r0, r2, r1 - str r0, [r4] - ldrb r4, [r6] - adds r0, r4, 0 - muls r0, r3 - add r0, r10 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _080186F4 - ldr r1, _080186DC @ =gBattleScripting - ldr r0, _080186E0 @ =gBattleStruct - ldr r2, [r0] - lsls r0, r4, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x10] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x11] - ldr r1, _080186E4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x2] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _080186E8 @ =gBattlescriptCurrInstr - ldr r0, _080186EC @ =BattleScript_WrapTurnDmg - str r0, [r1] - ldr r2, _080186F0 @ =gBattleMoveDamage - ldrb r0, [r6] - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r2] - cmp r0, 0 - bne _08018720 - movs r0, 0x1 - str r0, [r2] - b _08018720 - .align 2, 0 -_080186D4: .4byte gBattleMons -_080186D8: .4byte 0xffffe000 -_080186DC: .4byte gBattleScripting -_080186E0: .4byte gBattleStruct -_080186E4: .4byte gBattleTextBuff1 -_080186E8: .4byte gBattlescriptCurrInstr -_080186EC: .4byte BattleScript_WrapTurnDmg -_080186F0: .4byte gBattleMoveDamage -_080186F4: - ldr r2, _08018724 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x2 - strb r0, [r2, 0x1] - ldrb r1, [r6] - ldr r0, _08018728 @ =gBattleStruct - ldr r3, [r0] - lsls r1, 1 - adds r1, r3 - ldrb r0, [r1, 0x4] - strb r0, [r2, 0x2] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r3 - ldrb r0, [r0, 0x5] - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - ldr r1, _0801872C @ =gBattlescriptCurrInstr - ldr r0, _08018730 @ =BattleScript_WrapEnds - str r0, [r1] -_08018720: - ldr r0, [r1] - b _08018C04 - .align 2, 0 -_08018724: .4byte gBattleTextBuff1 -_08018728: .4byte gBattleStruct -_0801872C: .4byte gBattlescriptCurrInstr -_08018730: .4byte BattleScript_WrapEnds -_08018734: - movs r0, 0x8 - negs r0, r0 - ands r3, r0 - str r3, [r2] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - mov r0, r10 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08018784 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r1, _08018788 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r0, _0801878C @ =BattleScript_MonWokeUpInUproar - bl BattleScriptExecute - ldr r4, _08018790 @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - add r0, r9 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080187FC - .align 2, 0 -_08018784: .4byte 0xf7ffffff -_08018788: .4byte gBattleCommunication -_0801878C: .4byte BattleScript_MonWokeUpInUproar -_08018790: .4byte gActiveBattler -_08018794: - ldr r2, _08018810 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x70 - ands r1, r0 - adds r7, r2, 0 - cmp r1, 0 - beq _0801889E - movs r0, 0 - strb r0, [r4] - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0 - beq _080187FC - mov r10, r7 - adds r6, r4, 0 - movs r1, 0x58 - mov r8, r1 - movs r3, 0x4C - adds r3, r7 - mov r9, r3 - str r0, [sp, 0x4] - movs r5, 0x7 - mov r12, r5 -_080187CE: - ldrb r4, [r6] - mov r1, r8 - muls r1, r4 - mov r0, r9 - adds r2, r1, r0 - ldr r3, [r2] - adds r0, r3, 0 - mov r5, r12 - ands r0, r5 - cmp r0, 0 - beq _080187EE - adds r0, r1, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _08018734 -_080187EE: - adds r0, r4, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp, 0x4] - cmp r0, r1 - bcc _080187CE -_080187FC: - ldr r2, _08018814 @ =gBattlerAttacker - ldr r1, _08018818 @ =gBattlersCount - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _0801881C - movs r3, 0x2 - mov r9, r3 - b _08018C4C - .align 2, 0 -_08018810: .4byte gBattleMons -_08018814: .4byte gBattlerAttacker -_08018818: .4byte gBattlersCount -_0801881C: - ldr r5, _08018854 @ =gActiveBattler - ldrb r0, [r5] - strb r0, [r2] - ldr r2, _08018858 @ =gBattleMons - ldrb r0, [r5] - movs r7, 0x58 - adds r1, r0, 0 - muls r1, r7 - adds r6, r2, 0 - adds r6, 0x50 - adds r1, r6 - ldr r0, [r1] - subs r0, 0x10 - str r0, [r1] - ldrb r0, [r5] - bl WasUnableToUseMove - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08018860 - ldrb r0, [r5] - bl CancelMultiTurnMoves - ldr r1, _0801885C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08018894 - .align 2, 0 -_08018854: .4byte gActiveBattler -_08018858: .4byte gBattleMons -_0801885C: .4byte gBattleCommunication -_08018860: - ldrb r3, [r5] - adds r0, r3, 0 - muls r0, r7 - adds r2, r0, r6 - ldr r0, [r2] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _08018888 - ldr r0, _08018884 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - b _08018894 - .align 2, 0 -_08018884: .4byte gBattleCommunication -_08018888: - ldr r1, _080188A8 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - adds r0, r3, 0 - bl CancelMultiTurnMoves -_08018894: - ldr r0, _080188AC @ =BattleScript_PrintUproarOverTurns - bl BattleScriptExecute - movs r5, 0x1 - mov r9, r5 -_0801889E: - mov r7, r9 - cmp r7, 0x2 - bne _080188A6 - b _08018C46 -_080188A6: - b _08018C12 - .align 2, 0 -_080188A8: .4byte gBattleCommunication -_080188AC: .4byte BattleScript_PrintUproarOverTurns -_080188B0: - ldr r1, _080188E8 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - muls r0, r7 - adds r5, r1, 0 - adds r5, 0x50 - adds r2, r0, r5 - ldr r1, [r2] - movs r4, 0xC0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _080188CE - b _08018C12 -_080188CE: - ldr r3, _080188EC @ =0xfffffc00 - adds r0, r1, r3 - str r0, [r2] - ldrb r0, [r6] - bl WasUnableToUseMove - lsls r0, 24 - cmp r0, 0 - beq _080188F0 - ldrb r0, [r6] - bl CancelMultiTurnMoves - b _08018C12 - .align 2, 0 -_080188E8: .4byte gBattleMons -_080188EC: .4byte 0xfffffc00 -_080188F0: - ldrb r0, [r6] - muls r0, r7 - adds r2, r0, r5 - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - beq _08018902 - b _08018C12 -_08018902: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0801890E - b _08018C12 -_0801890E: - ldr r0, _0801894C @ =0xffffefff - ands r1, r0 - str r1, [r2] - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08018926 - b _08018C12 -_08018926: - ldr r1, _08018950 @ =gBattleCommunication - movs r0, 0x47 - strb r0, [r1, 0x3] - movs r0, 0x1 - movs r1, 0 - bl SetMoveEffect - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _08018944 - b _08018C08 -_08018944: - ldr r0, _08018954 @ =BattleScript_ThrashConfuses - bl BattleScriptExecute - b _08018C08 - .align 2, 0 -_0801894C: .4byte 0xffffefff -_08018950: .4byte gBattleCommunication -_08018954: .4byte BattleScript_ThrashConfuses -_08018958: - ldr r0, _080189D8 @ =gDisableStructs - ldrb r3, [r6] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r5, r1, r0 - ldrb r1, [r5, 0xB] - lsls r1, 28 - adds r7, r0, 0 - cmp r1, 0 - bne _08018970 - b _08018C12 -_08018970: - movs r4, 0 - ldr r2, _080189DC @ =gBattleMons - movs r0, 0x58 - adds r1, r3, 0 - muls r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r5, 0x4] - ldrh r1, [r1] - cmp r0, r1 - beq _080189AE - mov r12, r7 - mov r8, r2 - adds r5, r6, 0 - movs r3, 0x58 -_0801898E: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080189AE - ldrb r2, [r5] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r12 - lsls r0, r4, 1 - muls r2, r3 - adds r0, r2 - add r0, r8 - ldrh r1, [r1, 0x4] - ldrh r0, [r0] - cmp r1, r0 - bne _0801898E -_080189AE: - cmp r4, 0x4 - bne _080189E0 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strh r1, [r0, 0x4] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - b _08018C12 - .align 2, 0 -_080189D8: .4byte gDisableStructs -_080189DC: .4byte gBattleMons -_080189E0: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r7 - ldrb r3, [r2, 0xB] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0xB] - adds r2, r1, 0 - cmp r2, 0 - beq _08018A08 - b _08018C12 -_08018A08: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x4] - ldr r0, _08018A18 @ =BattleScript_DisabledNoMore - b _08018C04 - .align 2, 0 -_08018A18: .4byte BattleScript_DisabledNoMore -_08018A1C: - ldr r3, _08018A68 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldrb r5, [r2, 0xE] - lsls r4, r5, 28 - cmp r4, 0 - bne _08018A32 - b _08018C12 -_08018A32: - ldr r7, _08018A6C @ =gBattleMons - mov r8, r7 - ldrb r0, [r2, 0xC] - lsls r0, 1 - movs r7, 0x58 - muls r1, r7 - adds r0, r1 - mov r1, r8 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - cmp r0, r1 - beq _08018A70 - movs r0, 0 - strh r0, [r2, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - b _08018C12 - .align 2, 0 -_08018A68: .4byte gDisableStructs -_08018A6C: .4byte gBattleMons -_08018A70: - lsrs r1, r4, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r5 - orrs r0, r1 - strb r0, [r2, 0xE] - cmp r1, 0 - beq _08018AA6 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - muls r1, r7 - ldrb r0, [r0, 0xC] - adds r1, r0 - mov r0, r8 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _08018AA6 - b _08018C12 -_08018AA6: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0xE] - ldr r0, _08018ACC @ =BattleScript_EncoredNoMore - b _08018C04 - .align 2, 0 -_08018ACC: .4byte BattleScript_EncoredNoMore -_08018AD0: - ldr r0, _08018AEC @ =gStatuses3 - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - beq _08018AE8 - adds r0, r2, 0 - subs r0, 0x8 - str r0, [r1] -_08018AE8: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018AEC: .4byte gStatuses3 -_08018AF0: - ldr r2, _08018B30 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x12] - lsls r1, r2, 28 - cmp r1, 0 - beq _08018B2A - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x12] - cmp r1, 0 - bne _08018B2A - ldr r0, _08018B34 @ =gStatuses3 - ldrb r2, [r6] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08018B38 @ =0xfffffdff - ands r0, r1 - str r0, [r2] -_08018B2A: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018B30: .4byte gDisableStructs -_08018B34: .4byte gStatuses3 -_08018B38: .4byte 0xfffffdff -_08018B3C: - ldr r2, _08018B68 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x13] - lsls r1, r2, 28 - cmp r1, 0 - beq _08018B62 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x13] -_08018B62: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018B68: .4byte gDisableStructs -_08018B6C: - ldr r4, _08018C20 @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r2, r0, r4 - ldr r1, [r2] - movs r3, 0xC0 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08018C12 - ldr r5, _08018C24 @ =0xfffff800 - adds r0, r1, r5 - str r0, [r2] - ldrb r2, [r6] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _08018C12 - ldr r3, _08018C28 @ =gBattleMons - movs r5, 0x58 - adds r1, r2, 0 - muls r1, r5 - adds r4, r3, 0 - adds r4, 0x4C - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08018C12 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - beq _08018C12 - cmp r0, 0xF - beq _08018C12 - adds r0, r2, 0 - bl UproarWakeUpCheck - lsls r0, 24 - cmp r0, 0 - bne _08018C12 - ldrb r0, [r6] - bl CancelMultiTurnMoves - bl Random - ldrb r1, [r6] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r6] - bl MarkBattlerForControllerExec - ldr r1, _08018C2C @ =gEffectBattler - ldrb r0, [r6] - strb r0, [r1] - ldr r0, _08018C30 @ =BattleScript_YawnMakesAsleep -_08018C04: - bl BattleScriptExecute -_08018C08: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08018C12: - ldr r0, _08018C34 @ =gBattleStruct - ldr r1, [r0] -_08018C16: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08018C46 - .align 2, 0 -_08018C20: .4byte gStatuses3 -_08018C24: .4byte 0xfffff800 -_08018C28: .4byte gBattleMons -_08018C2C: .4byte gEffectBattler -_08018C30: .4byte BattleScript_YawnMakesAsleep -_08018C34: .4byte gBattleStruct -_08018C38: - ldr r1, [r7] - movs r0, 0 - strb r0, [r1] - ldr r1, [r7] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] -_08018C46: - mov r7, r9 - cmp r7, 0 - beq _08018C50 -_08018C4C: - mov r0, r9 - b _08018C78 -_08018C50: - ldr r5, _08018C88 @ =gBattleStruct - ldr r2, [r5] - ldr r0, _08018C8C @ =gBattlersCount - ldrb r1, [r2, 0x1] - adds r7, r5, 0 - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bcs _08018C6C -_08018C62: - ldrb r0, [r2] - cmp r0, 0x13 - bhi _08018C6C - bl _0801829C -_08018C6C: - ldr r0, _08018C90 @ =gHitMarker - ldr r1, [r0] - ldr r2, _08018C94 @ =0xfeffffdf - ands r1, r2 - str r1, [r0] - movs r0, 0 -_08018C78: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018C88: .4byte gBattleStruct -_08018C8C: .4byte gBattlersCount -_08018C90: .4byte gHitMarker -_08018C94: .4byte 0xfeffffdf - thumb_func_end DoBattlerEndTurnEffects - - thumb_func_start HandleWishPerishSongOnTurnEnd -HandleWishPerishSongOnTurnEnd: @ 8018C98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08018CC8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018CCC @ =0x01000020 - orrs r0, r1 - str r0, [r2] - ldr r1, _08018CD0 @ =gBattleStruct - ldr r3, [r1] - movs r4, 0xC0 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _08018CD4 - cmp r0, 0x1 - bne _08018CC4 - b _08018E2C -_08018CC4: - b _08018F68 - .align 2, 0 -_08018CC8: .4byte gHitMarker -_08018CCC: .4byte 0x01000020 -_08018CD0: .4byte gBattleStruct -_08018CD4: - ldr r2, _08018D20 @ =0x00000181 - adds r0, r3, r2 - ldr r1, _08018D24 @ =gBattlersCount - ldrb r0, [r0] - mov r8, r1 - ldrb r6, [r1] - cmp r0, r6 - bcc _08018CE6 - b _08018E16 -_08018CE6: - ldr r4, _08018D28 @ =gActiveBattler - ldr r5, _08018D2C @ =gBattleTextBuff1 - ldr r6, _08018D30 @ =gWishFutureKnock - movs r0, 0x8 - adds r0, r6 - mov r10, r0 - movs r1, 0x18 - adds r1, r6 - mov r12, r1 - ldr r3, _08018D34 @ =gBattlerTarget - mov r9, r3 -_08018CFC: - ldr r0, [r7] - adds r3, r0, r2 - ldrb r0, [r3] - strb r0, [r4] - ldr r0, _08018D38 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08018D3C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08018D40 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - b _08018E04 - .align 2, 0 -_08018D20: .4byte 0x00000181 -_08018D24: .4byte gBattlersCount -_08018D28: .4byte gActiveBattler -_08018D2C: .4byte gBattleTextBuff1 -_08018D30: .4byte gWishFutureKnock -_08018D34: .4byte gBattlerTarget -_08018D38: .4byte gAbsentBattlerFlags -_08018D3C: .4byte gBitTable -_08018D40: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r1, _08018D80 @ =gWishFutureKnock - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _08018E04 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _08018E04 - ldr r1, _08018D84 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08018E04 - lsls r0, r2, 1 - add r0, r12 - ldrh r0, [r0] - cmp r0, 0xF8 - bne _08018D8C - ldr r0, _08018D88 @ =gBattleCommunication - strb r3, [r0, 0x5] - b _08018D92 - .align 2, 0 -_08018D80: .4byte gWishFutureKnock -_08018D84: .4byte gBattleMons -_08018D88: .4byte gBattleCommunication -_08018D8C: - ldr r1, _08018DEC @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_08018D92: - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - ldrb r0, [r4] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - strb r0, [r5, 0x2] - ldrb r0, [r4] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r5, 0x3] - movs r0, 0xFF - strb r0, [r5, 0x4] - ldrb r0, [r4] - mov r1, r9 - strb r0, [r1] - ldr r1, _08018DF0 @ =gBattlerAttacker - adds r0, r6, 0x4 - ldrb r2, [r4] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _08018DF4 @ =gBattleMoveDamage - ldrb r0, [r4] - lsls r0, 2 - add r0, r10 - ldr r0, [r0] - str r0, [r1] - ldr r2, _08018DF8 @ =gSpecialStatuses - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, _08018DFC @ =0x0000ffff - str r1, [r0] - ldr r0, _08018E00 @ =BattleScript_MonTookFutureAttack - b _08018F44 - .align 2, 0 -_08018DEC: .4byte gBattleCommunication -_08018DF0: .4byte gBattlerAttacker -_08018DF4: .4byte gBattleMoveDamage -_08018DF8: .4byte gSpecialStatuses -_08018DFC: .4byte 0x0000ffff -_08018E00: .4byte BattleScript_MonTookFutureAttack -_08018E04: - ldr r0, [r7] - ldr r2, _08018E7C @ =0x00000181 - adds r0, r2 - ldrb r0, [r0] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bcs _08018E16 - b _08018CFC -_08018E16: - ldr r0, [r7] - movs r2, 0xC0 - lsls r2, 1 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r7] - ldr r3, _08018E7C @ =0x00000181 - adds r1, r0, r3 - movs r0, 0 - strb r0, [r1] -_08018E2C: - adds r3, r7, 0 - ldr r0, [r3] - ldr r2, _08018E7C @ =0x00000181 - adds r0, r2 - ldr r1, _08018E80 @ =gBattlersCount - ldrb r0, [r0] - mov r8, r1 - ldrb r4, [r1] - cmp r0, r4 - bcc _08018E42 - b _08018F68 -_08018E42: - ldr r5, _08018E84 @ =gActiveBattler - ldr r4, _08018E88 @ =gBattleTextBuff1 - ldr r6, _08018E8C @ =gDisableStructs - mov r12, r6 - ldr r0, _08018E90 @ =gBattlerAttacker - mov r9, r0 -_08018E4E: - ldr r1, _08018E94 @ =gBattlerByTurnOrder - ldr r0, [r3] - adds r3, r0, r2 - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - mov r1, r9 - strb r0, [r1] - strb r0, [r5] - ldr r0, _08018E98 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08018E9C @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08018EA0 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - b _08018F54 - .align 2, 0 -_08018E7C: .4byte 0x00000181 -_08018E80: .4byte gBattlersCount -_08018E84: .4byte gActiveBattler -_08018E88: .4byte gBattleTextBuff1 -_08018E8C: .4byte gDisableStructs -_08018E90: .4byte gBattlerAttacker -_08018E94: .4byte gBattlerByTurnOrder -_08018E98: .4byte gAbsentBattlerFlags -_08018E9C: .4byte gBitTable -_08018EA0: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r6, _08018F14 @ =gStatuses3 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08018F54 - movs r0, 0xFD - strb r0, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xF] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r4, 0x4] - movs r0, 0xFF - strb r0, [r4, 0x5] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - mov r3, r12 - adds r4, r0, r3 - ldrb r3, [r4, 0xF] - lsls r1, r3, 28 - cmp r1, 0 - bne _08018F28 - lsls r2, 2 - adds r2, r6 - ldr r0, [r2] - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldr r3, _08018F18 @ =gBattleMoveDamage - ldr r2, _08018F1C @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - str r0, [r3] - ldr r1, _08018F20 @ =gBattlescriptCurrInstr - ldr r0, _08018F24 @ =BattleScript_PerishSongTakesLife - b _08018F40 - .align 2, 0 -_08018F14: .4byte gStatuses3 -_08018F18: .4byte gBattleMoveDamage -_08018F1C: .4byte gBattleMons -_08018F20: .4byte gBattlescriptCurrInstr -_08018F24: .4byte BattleScript_PerishSongTakesLife -_08018F28: - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r6, 0x10 - negs r6, r6 - adds r0, r6, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0xF] - ldr r1, _08018F4C @ =gBattlescriptCurrInstr - ldr r0, _08018F50 @ =BattleScript_PerishSongCountGoesDown -_08018F40: - str r0, [r1] - ldr r0, [r1] -_08018F44: - bl BattleScriptExecute - movs r0, 0x1 - b _08018F74 - .align 2, 0 -_08018F4C: .4byte gBattlescriptCurrInstr -_08018F50: .4byte BattleScript_PerishSongCountGoesDown -_08018F54: - adds r3, r7, 0 - ldr r0, [r3] - ldr r2, _08018F84 @ =0x00000181 - adds r0, r2 - ldrb r0, [r0] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bcs _08018F68 - b _08018E4E -_08018F68: - ldr r2, _08018F88 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018F8C @ =0xfeffffdf - ands r0, r1 - str r0, [r2] - movs r0, 0 -_08018F74: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018F84: .4byte 0x00000181 -_08018F88: .4byte gHitMarker -_08018F8C: .4byte 0xfeffffdf - thumb_func_end HandleWishPerishSongOnTurnEnd - - thumb_func_start HandleFaintedMonActions -HandleFaintedMonActions: @ 8018F90 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _08018FA8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08018FD8 - b _08019272 - .align 2, 0 -_08018FA8: .4byte gBattleTypeFlags -_08018FAC: - ldr r0, _08018FBC @ =BattleScript_GiveExp - bl BattleScriptExecute - ldr r0, [r5] - adds r0, 0x4D - movs r1, 0x2 - b _08018FCC - .align 2, 0 -_08018FBC: .4byte BattleScript_GiveExp -_08018FC0: - ldr r0, _08018FD4 @ =BattleScript_HandleFaintedMon - bl BattleScriptExecute - ldr r0, [r5] - adds r0, 0x4D - movs r1, 0x5 -_08018FCC: - strb r1, [r0] -_08018FCE: - movs r0, 0x1 - b _08019274 - .align 2, 0 -_08018FD4: .4byte BattleScript_HandleFaintedMon -_08018FD8: - ldr r0, _08018FF4 @ =gBattleStruct - mov r8, r0 -_08018FDC: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - ldrb r0, [r0] - cmp r0, 0x7 - bls _08018FEA - b _08019264 -_08018FEA: - lsls r0, 2 - ldr r1, _08018FF8 @ =_08018FFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08018FF4: .4byte gBattleStruct -_08018FF8: .4byte _08018FFC - .align 2, 0 -_08018FFC: - .4byte _0801901C - .4byte _0801906E - .4byte _08019108 - .4byte _0801914A - .4byte _0801915E - .4byte _080191C8 - .4byte _080191FC - .4byte _08019264 -_0801901C: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4E - movs r1, 0 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r5, 0 - ldr r0, _080190E8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0801906E - ldr r6, _080190EC @ =gAbsentBattlerFlags -_0801903C: - ldrb r0, [r6] - ldr r2, _080190F0 @ =gBitTable - lsls r1, r5, 2 - adds r1, r2 - ldr r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _08019064 - lsls r0, r5, 24 - lsrs r0, 24 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - bne _08019064 - ldrb r0, [r6] - bics r0, r4 - strb r0, [r6] -_08019064: - adds r5, 0x1 - ldr r0, _080190E8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801903C -_0801906E: - ldr r0, _080190F4 @ =gBattleStruct - mov r8, r0 - ldr r1, _080190F8 @ =gBattlerFainted - mov r12, r1 - ldr r2, _080190FC @ =gBattlerTarget - mov r5, r8 - ldr r7, _08019100 @ =gBattleMons - ldr r6, _08019104 @ =gBattlerPartyIndexes -_0801907E: - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x4E - ldrb r0, [r1] - strb r0, [r2] - mov r4, r12 - strb r0, [r4] - ldrb r4, [r1] - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080190C6 - adds r0, r3, 0 - adds r0, 0xDF - ldrb r1, [r0] - ldr r3, _080190F0 @ =gBitTable - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080190C6 - ldr r0, _080190EC @ =gAbsentBattlerFlags - ldrb r1, [r0] - lsls r0, r4, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080190C6 - b _08018FAC -_080190C6: - ldr r0, [r5] - adds r0, 0x4E - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _080190E8 @ =gBattlersCount - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0] - cmp r1, r0 - bne _0801907E - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - movs r1, 0x3 - strb r1, [r0] - b _08019264 - .align 2, 0 -_080190E8: .4byte gBattlersCount -_080190EC: .4byte gAbsentBattlerFlags -_080190F0: .4byte gBitTable -_080190F4: .4byte gBattleStruct -_080190F8: .4byte gBattlerFainted -_080190FC: .4byte gBattlerTarget -_08019100: .4byte gBattleMons -_08019104: .4byte gBattlerPartyIndexes -_08019108: - ldr r0, _08019134 @ =gBattlerFainted - ldrb r0, [r0] - bl sub_8017434 - ldr r2, _08019138 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0x4E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _0801913C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08019140 - ldr r0, [r2] - adds r0, 0x4D - movs r1, 0x3 - strb r1, [r0] - b _08019262 - .align 2, 0 -_08019134: .4byte gBattlerFainted -_08019138: .4byte gBattleStruct -_0801913C: .4byte gBattlersCount -_08019140: - ldr r0, [r2] - adds r0, 0x4D - movs r1, 0x1 - strb r1, [r0] - b _08019262 -_0801914A: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4E - movs r1, 0 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0801915E: - ldr r0, _080191AC @ =gBattlerFainted - mov r12, r0 - ldr r7, _080191B0 @ =gBattlerTarget - ldr r5, _080191B4 @ =gBattleStruct - ldr r2, _080191B8 @ =gBattleMons - ldr r6, _080191BC @ =gBitTable -_0801916A: - ldr r0, [r5] - adds r4, r0, 0 - adds r4, 0x4E - ldrb r0, [r4] - strb r0, [r7] - mov r1, r12 - strb r0, [r1] - ldrb r3, [r4] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08019198 - ldr r0, _080191C0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08019198 - b _08018FC0 -_08019198: - adds r0, r3, 0x1 - strb r0, [r4] - ldr r1, _080191C4 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0801916A - b _080191E0 - .align 2, 0 -_080191AC: .4byte gBattlerFainted -_080191B0: .4byte gBattlerTarget -_080191B4: .4byte gBattleStruct -_080191B8: .4byte gBattleMons -_080191BC: .4byte gBitTable -_080191C0: .4byte gAbsentBattlerFlags -_080191C4: .4byte gBattlersCount -_080191C8: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4E - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _080191EC @ =gBattlersCount - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0] - cmp r1, r0 - bne _080191F0 -_080191E0: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4D - movs r1, 0x6 - strb r1, [r0] - b _08019264 - .align 2, 0 -_080191EC: .4byte gBattlersCount -_080191F0: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - movs r1, 0x4 - strb r1, [r0] - b _08019264 -_080191FC: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08019216 - b _08018FCE -_08019216: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801922C - b _08018FCE -_0801922C: - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl ItemBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08019240 - b _08018FCE -_08019240: - str r0, [sp] - movs r0, 0x6 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08019256 - b _08018FCE -_08019256: - ldr r2, _08019280 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08019262: - mov r8, r2 -_08019264: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4D - ldrb r0, [r0] - cmp r0, 0x7 - beq _08019272 - b _08018FDC -_08019272: - movs r0, 0 -_08019274: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08019280: .4byte gBattleStruct - thumb_func_end HandleFaintedMonActions - thumb_func_start TryClearRageStatuses TryClearRageStatuses: @ 8019284 push {r4-r6,lr} diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c604211bc..317a4991f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -183,7 +183,7 @@ gUnknown_81D8E0B:: @ 81D8E0B BattleScript_MonTookFutureAttack:: @ 81D8E12 .incbin "baserom.gba", 0x1D8E12, 0x8E -gUnknown_81D8EA0:: @ 81D8EA0 +BattleScript_NoMovesLeft:: @ 81D8EA0 .incbin "baserom.gba", 0x1D8EA0, 0x4 BattleScript_SelectingMoveWithNoPP:: @ 81D8EA4 diff --git a/data/data.s b/data/data.s index 05747376d..e8ce97d9c 100644 --- a/data/data.s +++ b/data/data.s @@ -278,9 +278,9 @@ gUnknown_82500C4:: @ 82500C4 gUnknown_82500CC:: @ 82500CC .incbin "baserom.gba", 0x2500CC, 0x38 -sSoundMovesTable:: @ 8250104 - .incbin "baserom.gba", 0x250104, 0x18 + .section .rodata.825011C + .balign 4 gUnknown_825011C:: @ 825011C .incbin "baserom.gba", 0x25011C, 0x3E0 diff --git a/include/battle.h b/include/battle.h index f919c4e0d..188e5aae3 100644 --- a/include/battle.h +++ b/include/battle.h @@ -251,29 +251,29 @@ struct DisableStruct /*0x08*/ u8 protectUses; /*0x09*/ u8 stockpileCounter; /*0x0A*/ u8 substituteHP; - /*0x0B*/ u8 disableTimer1 : 4; - /*0x0B*/ u8 disableTimer2 : 4; + /*0x0B*/ u8 disableTimer : 4; + /*0x0B*/ u8 disableTimerStartValue : 4; /*0x0C*/ u8 encoredMovePos; /*0x0D*/ u8 unkD; - /*0x0E*/ u8 encoreTimer1 : 4; - /*0x0E*/ u8 encoreTimer2 : 4; - /*0x0F*/ u8 perishSongTimer1 : 4; - /*0x0F*/ u8 perishSongTimer2 : 4; + /*0x0E*/ u8 encoreTimer : 4; + /*0x0E*/ u8 encoreTimerStartValue : 4; + /*0x0F*/ u8 perishSongTimer : 4; + /*0x0F*/ u8 perishSongTimerStartValue : 4; /*0x10*/ u8 furyCutterCounter; - /*0x11*/ u8 rolloutCounter1 : 4; - /*0x11*/ u8 rolloutCounter2 : 4; - /*0x12*/ u8 chargeTimer1 : 4; - /*0x12*/ u8 chargeTimer2 : 4; - /*0x13*/ u8 tauntTimer1:4; + /*0x11*/ u8 rolloutTimer : 4; + /*0x11*/ u8 rolloutTimerStartValue : 4; + /*0x12*/ u8 chargeTimer : 4; + /*0x12*/ u8 chargeTimerStartValue : 4; + /*0x13*/ u8 tauntTimer:4; /*0x13*/ u8 tauntTimer2:4; - /*0x14*/ u8 bankPreventingEscape; - /*0x15*/ u8 bankWithSureHit; + /*0x14*/ u8 battlerPreventingEscape; + /*0x15*/ u8 battlerWithSureHit; /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 truantUnknownBit : 1; + /*0x18*/ u8 truantSwitchInHack : 1; /*0x18*/ u8 unk18_a_2 : 2; - /*0x18*/ u8 unk18_b : 4; + /*0x18*/ u8 mimickedMoves : 4; /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; }; @@ -285,7 +285,7 @@ struct ProtectStruct /* field_0 */ u32 protected:1; u32 endured:1; - u32 onlyStruggle:1; + u32 noValidMoves:1; u32 helpingHand:1; u32 bounceMove:1; u32 stealMove:1; @@ -296,7 +296,7 @@ struct ProtectStruct u32 targetNotAffected:1; u32 chargingTurn:1; u32 fleeFlag:2; // for RunAway and Smoke Ball - u32 usedImprisionedMove:1; + u32 usedImprisonedMove:1; u32 loveImmobility:1; u32 usedDisabledMove:1; /* field_2 */ @@ -313,8 +313,8 @@ struct ProtectStruct /* field_4 */ u32 physicalDmg; /* field_8 */ u32 specialDmg; - /* field_C */ u8 physicalBank; - /* field_D */ u8 specialBank; + /* field_C */ u8 physicalBattlerId; + /* field_D */ u8 specialBattlerId; /* field_E */ u16 fieldE; }; @@ -324,18 +324,18 @@ struct SpecialStatus { u8 statLowered : 1; // 0x1 u8 lightningRodRedirected : 1; // 0x2 - u8 restoredBankSprite: 1; // 0x4 - u8 intimidatedPoke : 1; // 0x8 + u8 restoredBattlerSprite: 1; // 0x4 + u8 intimidatedMon : 1; // 0x8 u8 traced : 1; // 0x10 - u8 flag20 : 1; + u8 ppNotAffectedByPressure : 1; u8 flag40 : 1; u8 focusBanded : 1; u8 field1[3]; - s32 moveturnLostHP; - s32 moveturnLostHP_physical; - s32 moveturnLostHP_special; - u8 moveturnPhysicalBank; - u8 moveturnSpecialBank; + s32 dmg; + s32 physicalDmg; + s32 specialDmg; + u8 physicalBattlerId; + u8 specialBattlerId; u8 field12; u8 field13; }; @@ -345,13 +345,13 @@ extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT]; struct SideTimer { /*0x00*/ u8 reflectTimer; - /*0x01*/ u8 reflectBank; + /*0x01*/ u8 reflectBattlerId; /*0x02*/ u8 lightscreenTimer; - /*0x03*/ u8 lightscreenBank; + /*0x03*/ u8 lightscreenBattlerId; /*0x04*/ u8 mistTimer; - /*0x05*/ u8 mistBank; + /*0x05*/ u8 mistBattlerId; /*0x06*/ u8 safeguardTimer; - /*0x07*/ u8 safeguardBank; + /*0x07*/ u8 safeguardBattlerId; /*0x08*/ u8 followmeTimer; /*0x09*/ u8 followmeTarget; /*0x0A*/ u8 spikesAmount; @@ -362,14 +362,14 @@ extern struct SideTimer gSideTimers[]; struct WishFutureKnock { - u8 futureSightCounter[BATTLE_BANKS_COUNT]; - u8 futureSightAttacker[BATTLE_BANKS_COUNT]; - s32 futureSightDmg[BATTLE_BANKS_COUNT]; - u16 futureSightMove[BATTLE_BANKS_COUNT]; - u8 wishCounter[BATTLE_BANKS_COUNT]; - u8 wishUserID[BATTLE_BANKS_COUNT]; + u8 futureSightCounter[MAX_BATTLERS_COUNT]; + u8 futureSightAttacker[MAX_BATTLERS_COUNT]; + s32 futureSightDmg[MAX_BATTLERS_COUNT]; + u16 futureSightMove[MAX_BATTLERS_COUNT]; + u8 wishCounter[MAX_BATTLERS_COUNT]; + u8 wishUserID[MAX_BATTLERS_COUNT]; u8 weatherDuration; - u8 knockedOffPokes[2]; + u8 knockedOffMons[2]; }; extern struct WishFutureKnock gWishFutureKnock; @@ -414,6 +414,12 @@ extern u8 gAbsentBattlerFlags; extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; +struct UsedMoves +{ + u16 moves[MAX_BATTLERS_COUNT]; + u16 unknown[MAX_BATTLERS_COUNT]; +}; + struct BattleHistory { /*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc) @@ -468,18 +474,18 @@ struct BattleResults u8 playerFaintCounter; // 0x0 u8 opponentFaintCounter; // 0x1 u8 playerSwitchesCounter; // 0x2 - u8 unk3; // 0x3 - u8 unk4; // 0x4 - u8 unk5_0:1; // 0x5 + u8 numHealingItemsUsed; // 0x3 + u8 numRevivesUsed; // 0x4 + u8 playerMonWasDamaged:1; // 0x5 u8 usedMasterBall:1; // 0x5 u8 caughtMonBall:4; // 0x5 - u8 unk5_6:1; // 0x5 + u8 shinyWildMon:1; // 0x5 u8 unk5_7:1; // 0x5 u16 playerMon1Species; // 0x6 u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 u8 playerMon2Name[11]; // 0x14 - u8 field_1F; // 0x1F + u8 pokeblockThrows; // 0x1F u16 lastOpponentSpecies; // 0x20 u16 lastUsedMovePlayer; // 0x22 u16 lastUsedMoveOpponent; // 0x24 @@ -495,39 +501,31 @@ extern struct BattleResults gBattleResults; struct BattleStruct { u8 turnEffectsTracker; - u8 turnEffectsBank; + u8 turnEffectsBattlerId; u8 filler2; - u8 turncountersTracker; - u8 wrappedMove[8]; // ask gamefreak why they declared it that way - u8 moveTarget[4]; + u8 turnCountersTracker; + u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. + u8 moveTarget[MAX_BATTLERS_COUNT]; u8 expGetterId; u8 field_11; u8 wildVictorySong; u8 dynamicMoveType; u8 wrappedBy[4]; - u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves - u8 field_40; - u8 field_41; - u8 field_42; - u8 field_43; - u8 field_44; - u8 field_45; - u8 field_46; - u8 field_47; - u8 focusPunchBank; + u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // 6 mons, each of them knowing 4 moves + u8 focusPunchBattlerId; u8 battlerPreventingSwitchout; u8 moneyMultiplier; u8 savedTurnActionNumber; u8 switchInAbilitiesCounter; u8 faintedActionsState; - u8 faintedActionsBank; + u8 faintedActionsBattlerId; u8 field_4F; u16 expValue; u8 field_52; u8 sentInPokes; - bool8 selectionScriptFinished[BATTLE_BANKS_COUNT]; + bool8 selectionScriptFinished[MAX_BATTLERS_COUNT]; u8 field_58[4]; - u8 monToSwitchIntoId[BATTLE_BANKS_COUNT]; + u8 monToSwitchIntoId[MAX_BATTLERS_COUNT]; u8 field_60[4][3]; u8 runTries; u8 caughtMonNick[11]; @@ -536,11 +534,11 @@ struct BattleStruct u8 safariPkblThrowCounter; u8 safariEscapeFactor; u8 safariCatchFactor; - u8 field_7D; - u8 field_7E; + u8 linkBattleVsSpriteId_V; + u8 linkBattleVsSpriteId_S; u8 formToChangeInto; - u8 chosenMovePositions[BATTLE_BANKS_COUNT]; - u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; + u8 chosenMovePositions[MAX_BATTLERS_COUNT]; + u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT]; u8 field_88; u8 field_89; u8 field_8A; @@ -557,47 +555,41 @@ struct BattleStruct u8 wallyMovesState; u8 wallyWaitFrames; u8 wallyMoveFrames; - u8 mirrorMoves[8]; // ask gamefreak why they declared it that way - u8 field_A0; - u8 field_A1; - u8 field_A2; - u8 field_A3; - u8 field_A4; - u8 field_A5; - u8 field_A6; - u8 field_A7; + u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; u8 synchronizeMoveEffect; u8 field_AF; - u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? + u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? Or simply not used? u8 field_B4; u8 field_B5; u8 field_B6; u8 field_B7; // void (*savedCallback)(void); - u16 usedHeldItems[BATTLE_BANKS_COUNT]; + u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? u8 AI_itemType[2]; u8 AI_itemFlags[2]; - u16 choicedMove[BATTLE_BANKS_COUNT]; - u16 changedItems[BATTLE_BANKS_COUNT]; - u8 intimidateBank; + u16 choicedMove[MAX_BATTLERS_COUNT]; + u16 changedItems[MAX_BATTLERS_COUNT]; + u8 intimidateBattler; u8 switchInItemsCounter; - u8 field_DA; + u8 arenaTurnCounter; // not used in FR? u8 turnSideTracker; u8 fillerDC[0xDF-0xDC]; - u8 field_DF; - u8 mirrorMoveArrays[32]; - u16 castformPalette[BATTLE_BANKS_COUNT][16]; + u8 givenExpMons; + u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; + u16 castformPalette[MAX_BATTLERS_COUNT][16]; +/* + // EM fields u8 field_180; u8 field_181; u8 field_182; u8 field_183; struct BattleEnigmaBerry battleEnigmaBerry; u8 wishPerishSongState; - u8 wishPerishSongBank; + u8 wishPerishSongBattlerId; bool8 overworldWeatherDone; u8 atkCancellerTracker; u8 field_1A4[96]; @@ -608,7 +600,13 @@ struct BattleStruct u8 field_2A0; u8 field_2A1; u8 field_2A2; -}; +*/ + u8 wishPerishSongState; + u8 wishPerishSongBattlerId; + u8 field_182; // overworldWeatherDone? + u8 field_183; // atkCancellerTracker? + u8 field_184[124]; // only for padding +}; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -795,8 +793,6 @@ struct BattleScripting u8 reshowMainState; u8 reshowHelperState; u8 field_23; - u8 windowsType; // TODO: what does this field do in firered? - u8 multiplayerId; }; // functions @@ -986,5 +982,15 @@ extern u8 gBattlerAttacker; extern u8 gEffectBattler; extern u8 gUnknown_2023D72; extern struct BattleScripting gBattleScripting; +extern u8 gBattlerFainted; +extern u32 gStatuses3[MAX_BATTLERS_COUNT]; +extern u8 gSentPokesToOpponent[2]; +extern const u8 *gBattlescriptCurrInstr; +extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT]; +extern u16 gLastMoves[MAX_BATTLERS_COUNT]; +extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT]; +extern u16 gSideStatuses[2]; +extern u32 gHitMarker; #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 69edacae6..b64da190e 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -123,8 +123,8 @@ extern const u8 BattleScript_82DB144[]; extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; -extern const u8 BattleScript_SelectingImprisionedMove[]; -extern const u8 BattleScript_SelectingImprisionedMoveInPalace[]; +extern const u8 BattleScript_SelectingImprisonedMove[]; +extern const u8 BattleScript_SelectingImprisonedMoveInPalace[]; extern const u8 BattleScript_GrudgeTakesPp[]; extern const u8 BattleScript_MagicCoatBounce[]; extern const u8 BattleScript_SnatchedMove[]; diff --git a/include/battle_util.h b/include/battle_util.h index e7cb8dc99..adfa10798 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -8,7 +8,7 @@ #define MOVE_LIMITATION_DISABLED (1 << 2) #define MOVE_LIMITATION_TORMENTED (1 << 3) #define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) +#define MOVE_LIMITATION_IMPRISON (1 << 5) #define ABILITYEFFECT_ON_SWITCHIN 0x0 #define ABILITYEFFECT_ENDTURN 0x1 @@ -37,6 +37,8 @@ #define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0)) #define ITEMEFFECT_ON_SWITCH_IN 0x0 +#define ITEMEFFECT_MOVE_END 0x3 +#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4 #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) #define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) @@ -53,7 +55,7 @@ u8 GetBattleBank(u8 caseId); void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); -void PressurePPLoseOnUsingImprision(u8 bankAtk); +void PressurePPLoseOnUsingImprison(u8 bankAtk); void MarkAllBattlersForControllerExec(void); // unused void MarkBattlerForControllerExec(u8 bank); void sub_803F850(u8 arg0); @@ -89,5 +91,6 @@ u8 IsMonDisobedient(void); void MarkBattlerForControllerExec(u8 battlerId); void sub_80174B8(u8 battlerId); void sub_8017298(u8 battlerId); +bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index b424103a1..f524a7643 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -207,9 +207,9 @@ #define WEATHER_SANDSTORM_TEMPORARY (1 << 3) #define WEATHER_SANDSTORM_PERMANENT (1 << 4) #define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT) -#define WEATHER_SUNNY_TEMPORARY (1 << 5) -#define WEATHER_SUNNY_PERMANENT (1 << 6) -#define WEATHER_SUNNY_ANY (WEATHER_SUNNY_TEMPORARY | WEATHER_SUNNY_PERMANENT) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT) #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY (WEATHER_HAIL) #define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUNNY_ANY | WEATHER_HAIL_ANY) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h new file mode 100644 index 000000000..894bd13b6 --- /dev/null +++ b/include/constants/battle_script_commands.h @@ -0,0 +1,134 @@ +#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H +#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H + +// Battle Scripting and BattleCommunication addresses +#define sPAINSPLIT_HP gBattleScripting +#define sBIDE_DMG gBattleScripting + 4 +#define sMULTIHIT_STRING gBattleScripting + 8 +#define sDMG_MULTIPLIER gBattleScripting + 0xE +#define sTWOTURN_STRINGID gBattleScripting + 0xF +#define sB_ANIM_ARG1 gBattleScripting + 0x10 +#define sB_ANIM_ARG2 gBattleScripting + 0x11 +#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 +#define sMOVEEND_STATE gBattleScripting + 0x14 +#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15 +#define sMULTIHIT_EFFECT gBattleScripting + 0x16 +#define sBATTLER gBattleScripting + 0x17 +#define sB_ANIM_TURN gBattleScripting + 0x18 +#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 +#define sSTATCHANGER gBattleScripting + 0x1A +#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B +#define sGIVEEXP_STATE gBattleScripting + 0x1C +#define sBATTLE_STYLE gBattleScripting + 0x1D +#define sLVLBOX_STATE gBattleScripting + 0x1E +#define sLEARNMOVE_STATE gBattleScripting + 0x1F +#define sFIELD_20 gBattleScripting + 0x20 +#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 +#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 +#define sFIELD_23 gBattleScripting + 0x23 +#define sWINDOWS_TYPE gBattleScripting + 0x24 +#define sMULTIPLAYER_ID gBattleScripting + 0x25 +#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26 + +#define cEFFECT_CHOOSER gBattleCommunication + 3 +#define cMULTISTRING_CHOOSER gBattleCommunication + 5 + +// Battle Script defines for getting the wanted battler +#define BS_TARGET 0 +#define BS_ATTACKER 1 +#define BS_EFFECT_BATTLER 2 +#define BS_FAINTED 3 +#define BS_BATTLER_0 7 +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability +#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability +#define BS_SCRIPTING 10 +#define BS_PLAYER1 11 +#define BS_OPPONENT1 12 +#define BS_PLAYER2 13 +#define BS_OPPONENT2 14 + +// atk 01, accuracy calc +#define NO_ACC_CALC 0xFFFE +#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF +#define ACC_CURR_MOVE 0 + +// compare operands +#define CMP_EQUAL 0x0 +#define CMP_NOT_EQUAL 0x1 +#define CMP_GREATER_THAN 0x2 +#define CMP_LESS_THAN 0x3 +#define CMP_COMMON_BITS 0x4 +#define CMP_NO_COMMON_BITS 0x5 + +// atk76, various +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 +#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 +#define VARIOUS_ARENA_PLAYER_MON_LOST 11 +#define VARIOUS_ARENA_BOTH_MONS_LOST 12 +#define VARIOUS_EMIT_YESNOBOX 13 +#define VARIOUS_ARENA_JUDGMENT_STRING 16 +#define VARIOUS_ARENA_WAIT_STRING 17 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_VOLUME_DOWN 21 +#define VARIOUS_VOLUME_UP 22 +#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 + +// atk80, dmg manipulation +#define ATK80_DMG_CHANGE_SIGN 0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 +#define ATK80_DMG_DOUBLED 2 + +// atk4F, a flag used for the jumpifcantswitch command +#define ATK4F_DONT_CHECK_STATUSES 0x80 + +// statchange defines +#define STAT_CHANGE_BS_PTR 0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 + +// atk48 +#define ATK48_STAT_NEGATIVE 0x1 +#define ATK48_STAT_BY_TWO 0x2 +#define ATK48_ONLY_MULTIPLE 0x4 +#define ATK48_DONT_CHECK_LOWER 0x8 + +// atk49, moveend cases +#define ATK49_RAGE 0 +#define ATK49_DEFROST 1 +#define ATK49_SYNCHRONIZE_TARGET 2 +#define ATK49_MOVE_END_ABILITIES 3 +#define ATK49_STATUS_IMMUNITY_ABILITIES 4 +#define ATK49_SYNCHRONIZE_ATTACKER 5 +#define ATK49_CHOICE_MOVE 6 +#define ATK49_CHANGED_ITEMS 7 +#define ATK49_ATTACKER_INVISIBLE 8 +#define ATK49_ATTACKER_VISIBLE 9 +#define ATK49_TARGET_VISIBLE 10 +#define ATK49_ITEM_EFFECTS_ALL 11 +#define ATK49_KINGSROCK_SHELLBELL 12 +#define ATK49_SUBSTITUTE 13 +#define ATK49_UPDATE_LAST_MOVES 14 +#define ATK49_MIRROR_MOVE 15 +#define ATK49_NEXT_TARGET 16 +#define ATK49_COUNT 17 + +#define BIT_HP 0x1 +#define BIT_ATK 0x2 +#define BIT_DEF 0x4 +#define BIT_SPEED 0x8 +#define BIT_SPATK 0x10 +#define BIT_SPDEF 0x20 +#define BIT_ACC 0x40 +#define BIT_EVASION 0x80 + +#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H diff --git a/ld_script.txt b/ld_script.txt index 34c5e942b..fb98e6fdd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -67,6 +67,7 @@ SECTIONS { src/decompress.o(.text); asm/battle_1.o(.text); asm/battle_2.o(.text); + src/battle_util.o(.text); asm/battle_util.o(.text); asm/battle_script_commands.o(.text); src/battle_util2.o(.text); @@ -380,6 +381,8 @@ SECTIONS { src/bg_regs.o(.rodata); src/string_util.o(.rodata); data/data.o(.rodata); + src/battle_util.o(.rodata); + data/data.o(.rodata.825011C); src/pokemon.o(.rodata); src/trig.o(.rodata); src/util.o(.rodata); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 1c281e853..0d389aa7f 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -34,7 +34,6 @@ enum extern const u8 *gAIScriptPtr; extern u8 *BattleAIs[]; -extern u16 gLastUsedMove[]; static void BattleAICmd_if_random_less_than(void); static void BattleAICmd_if_random_greater_than(void); @@ -466,7 +465,7 @@ void sub_80C7164(void) { if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == 0) { - BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastUsedMove[gBattlerTarget]; + BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastMoves[gBattlerTarget]; return; } } @@ -1035,9 +1034,9 @@ static void BattleAICmd_is_most_powerful_move(void) static void BattleAICmd_get_move(void) { if (gAIScriptPtr[1] == USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerAttacker]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerAttacker]; else - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerTarget]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerTarget]; gAIScriptPtr += 2; } @@ -1373,7 +1372,7 @@ static void BattleAICmd_get_weather(void) AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN; if (gBattleWeather & WEATHER_SANDSTORM_ANY) AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SANDSTORM; - if (gBattleWeather & WEATHER_SUNNY_ANY) + if (gBattleWeather & WEATHER_SUN_ANY) AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SUNNY; if (gBattleWeather & WEATHER_HAIL) AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_HAIL; @@ -1931,7 +1930,7 @@ static void BattleAICmd_if_level_compare(void) static void BattleAICmd_if_taunted(void) { - if (gDisableStructs[gBattlerTarget].tauntTimer1 != 0) + if (gDisableStructs[gBattlerTarget].tauntTimer != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1939,7 +1938,7 @@ static void BattleAICmd_if_taunted(void) static void BattleAICmd_if_not_taunted(void) { - if (gDisableStructs[gBattlerTarget].tauntTimer1 == 0) + if (gDisableStructs[gBattlerTarget].tauntTimer == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; diff --git a/src/battle_util.c b/src/battle_util.c new file mode 100644 index 000000000..8b0383929 --- /dev/null +++ b/src/battle_util.c @@ -0,0 +1,1147 @@ +#include "global.h" +#include "item.h" +#include "text.h" +#include "util.h" +#include "link.h" +#include "berry.h" +#include "random.h" +#include "pokemon.h" +#include "string_util.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_scripts.h" +#include "battle_message.h" +#include "battle_controllers.h" +#include "constants/battle.h" +#include "constants/moves.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/abilities.h" +#include "constants/battle_anim.h" +#include "constants/hold_effects.h" +#include "constants/battle_move_effects.h" +#include "constants/battle_script_commands.h" + +const u16 sSoundMovesTable[] = +{ + MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE, + MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF +}; + +u8 GetBattlerForBattleScript(u8 caseId) +{ + u32 ret = 0; + + switch (caseId) + { + case BS_TARGET: + ret = gBattlerTarget; + break; + case BS_ATTACKER: + ret = gBattlerAttacker; + break; + case BS_EFFECT_BATTLER: + ret = gEffectBattler; + break; + case BS_BATTLER_0: + ret = 0; + break; + case BS_SCRIPTING: + ret = gBattleScripting.battler; + break; + case BS_FAINTED: + ret = gBattlerFainted; + break; + case 5: + ret = gBattlerFainted; + break; + case BS_PLAYER1: + ret = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + break; + case BS_OPPONENT1: + ret = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + break; + case 4: + case 6: + case 8: + case 9: + break; + } + return ret; +} + +void PressurePPLose(u8 target, u8 attacker, u16 move) +{ + s32 i; + + if (gBattleMons[target].ability == ABILITY_PRESSURE) + { + for (i = 0; i < MAX_MON_MOVES && gBattleMons[attacker].moves[i] != move; ++i); + if (i != MAX_MON_MOVES) + { + if (gBattleMons[attacker].pp[i]) + --gBattleMons[attacker].pp[i]; + if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[i])) + { + gActiveBattler = attacker; + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); + MarkBattlerForControllerExec(gActiveBattler); + } + } + } +} + +void PressurePPLoseOnUsingImprison(u8 attacker) +{ + s32 i, j; + s32 imprisonPos = 4; + u8 atkSide = GetBattlerSide(attacker); + + for (i = 0; i < gBattlersCount; ++i) + { + if (atkSide != GetBattlerSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE) + { + for (j = 0; j < MAX_MON_MOVES && gBattleMons[attacker].moves[j] != MOVE_IMPRISON; ++j); + if (j != MAX_MON_MOVES) + { + imprisonPos = j; + if (gBattleMons[attacker].pp[j]) + --gBattleMons[attacker].pp[j]; + } + } + } + if (imprisonPos != 4 + && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos])) + { + gActiveBattler = attacker; + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]); + MarkBattlerForControllerExec(gActiveBattler); + } +} + +void PressurePPLoseOnUsingPerishSong(u8 attacker) +{ + s32 i, j; + s32 perishSongPos = 4; + + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ABILITY_PRESSURE && i != attacker) + { + for (j = 0; j < MAX_MON_MOVES && gBattleMons[attacker].moves[j] != MOVE_PERISH_SONG; ++j); + if (j != MAX_MON_MOVES) + { + perishSongPos = j; + if (gBattleMons[attacker].pp[j]) + --gBattleMons[attacker].pp[j]; + } + } + } + if (perishSongPos != MAX_MON_MOVES + && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos])) + { + gActiveBattler = attacker; + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); + MarkBattlerForControllerExec(gActiveBattler); + } +} + +void MarkAllBattlersForControllerExec(void) +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + for (i = 0; i < gBattlersCount; ++i) + gBattleControllerExecFlags |= gBitTable[i] << 0x1C; + else + for (i = 0; i < gBattlersCount; ++i) + gBattleControllerExecFlags |= gBitTable[i]; +} + +void MarkBattlerForControllerExec(u8 battlerId) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + gBattleControllerExecFlags |= gBitTable[battlerId] << 0x1C; + else + gBattleControllerExecFlags |= gBitTable[battlerId]; +} + +void sub_8017298(u8 arg0) +{ + s32 i; + + for (i = 0; i < GetLinkPlayerCount(); ++i) + gBattleControllerExecFlags |= gBitTable[arg0] << (i << 2); + gBattleControllerExecFlags &= ~(0x10000000 << arg0); +} + +void CancelMultiTurnMoves(u8 battler) +{ + gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS); + gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE); + gBattleMons[battler].status2 &= ~(STATUS2_UPROAR); + gBattleMons[battler].status2 &= ~(STATUS2_BIDE); + gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE); + gDisableStructs[battler].rolloutTimer = 0; + gDisableStructs[battler].furyCutterCounter = 0; +} + +bool8 WasUnableToUseMove(u8 battler) +{ + if (gProtectStructs[battler].prlzImmobility + || gProtectStructs[battler].targetNotAffected + || gProtectStructs[battler].usedImprisonedMove + || gProtectStructs[battler].loveImmobility + || gProtectStructs[battler].usedDisabledMove + || gProtectStructs[battler].usedTauntedMove + || gProtectStructs[battler].flag2Unknown + || gProtectStructs[battler].flinchImmobility + || gProtectStructs[battler].confusionSelfDmg) + return TRUE; + else + return FALSE; +} + +void PrepareStringBattle(u16 stringId, u8 battler) +{ + gActiveBattler = battler; + BtlController_EmitPrintString(0, stringId); + MarkBattlerForControllerExec(gActiveBattler); +} + +void ResetSentPokesToOpponentValue(void) +{ + s32 i; + u32 bits = 0; + + gSentPokesToOpponent[0] = 0; + gSentPokesToOpponent[1] = 0; + for (i = 0; i < gBattlersCount; i += 2) + bits |= gBitTable[gBattlerPartyIndexes[i]]; + for (i = 1; i < gBattlersCount; i += 2) + gSentPokesToOpponent[(i & BIT_FLANK) >> 1] = bits; +} + +void sub_8017434(u8 battler) +{ + s32 i = 0; + u32 bits = 0; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + { + u8 flank = ((battler & BIT_FLANK) >> 1); + gSentPokesToOpponent[flank] = 0; + for (i = 0; i < gBattlersCount; i += 2) + if (!(gAbsentBattlerFlags & gBitTable[i])) + bits |= gBitTable[gBattlerPartyIndexes[i]]; + gSentPokesToOpponent[flank] = bits; + } +} + +void sub_80174B8(u8 battler) +{ + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + { + sub_8017434(battler); + } + else + { + s32 i; + + for (i = 1; i < gBattlersCount; ++i) + gSentPokesToOpponent[(i & BIT_FLANK) >> 1] |= gBitTable[gBattlerPartyIndexes[battler]]; + } +} + +void BattleScriptPush(const u8 *bsPtr) +{ + gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = bsPtr; +} + +void BattleScriptPushCursor(void) +{ + gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = gBattlescriptCurrInstr; +} + +void BattleScriptPop(void) +{ + gBattlescriptCurrInstr = gBattleResources->battleScriptsStack->ptr[--gBattleResources->battleScriptsStack->size]; +} + +u8 TrySetCantSelectMoveBattleScript(void) +{ + u8 holdEffect; + u8 limitations = 0; + u16 move = gBattleMons[gActiveBattler].moves[gBattleBufferB[gActiveBattler][2]]; + u16* choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; + + if (gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) + { + gBattleScripting.battler = gActiveBattler; + gCurrentMove = move; + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMove; + limitations = 1; + } + if (move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) + { + CancelMultiTurnMoves(gActiveBattler); + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMove; + ++limitations; + } + if (gDisableStructs[gActiveBattler].tauntTimer && !gBattleMoves[move].power) + { + gCurrentMove = move; + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTaunt; + ++limitations; + } + if (GetImprisonedMovesCount(gActiveBattler, move)) + { + gCurrentMove = move; + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMove; + ++limitations; + } + if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBattler].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item); + gPotentialItemEffectBattler = gActiveBattler; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove && *choicedMove != 0xFFFF && *choicedMove != move) + { + gCurrentMove = *choicedMove; + gLastUsedItem = gBattleMons[gActiveBattler].item; + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveChoiceItem; + ++limitations; + } + if (!gBattleMons[gActiveBattler].pp[gBattleBufferB[gActiveBattler][2]]) + { + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingMoveWithNoPP; + ++limitations; + } + return limitations; +} + +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) +{ + u8 holdEffect; + u16 *choicedMove = &gBattleStruct->choicedMove[battlerId]; + s32 i; + + if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[battlerId].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + gPotentialItemEffectBattler = battlerId; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + unusableMoves |= gBitTable[i]; + if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP) + unusableMoves |= gBitTable[i]; + if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED) + unusableMoves |= gBitTable[i]; + if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) + unusableMoves |= gBitTable[i]; + if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) + unusableMoves |= gBitTable[i]; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i]) + unusableMoves |= gBitTable[i]; + } + return unusableMoves; +} + +bool8 AreAllMovesUnusable(void) +{ + u8 unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); + + if (unusable == 0xF) // All moves are unusable. + { + gProtectStructs[gActiveBattler].noValidMoves = 1; + gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition((BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler))) | (Random() & 2)); + else + gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler))); + } + else + { + gProtectStructs[gActiveBattler].noValidMoves = 0; + } + return (unusable == 0xF); +} + +u8 GetImprisonedMovesCount(u8 battlerId, u16 move) +{ + s32 i; + u8 imprisonedMoves = 0; + u8 battlerSide = GetBattlerSide(battlerId); + + for (i = 0; i < gBattlersCount; ++i) + { + if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) + { + s32 j; + for (j = 0; j < MAX_MON_MOVES && move != gBattleMons[i].moves[j]; ++j); + if (j < MAX_MON_MOVES) + ++imprisonedMoves; + } + } + return imprisonedMoves; +} + +enum +{ + ENDTURN_ORDER, + ENDTURN_REFLECT, + ENDTURN_LIGHT_SCREEN, + ENDTURN_MIST, + ENDTURN_SAFEGUARD, + ENDTURN_WISH, + ENDTURN_RAIN, + ENDTURN_SANDSTORM, + ENDTURN_SUN, + ENDTURN_HAIL, + ENDTURN_FIELD_COUNT, +}; + +u8 DoFieldEndTurnEffects(void) +{ + u8 effect = 0; + s32 i; + + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerAttacker]; ++gBattlerAttacker); + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerTarget]; ++gBattlerTarget); + do + { + u8 side; + + switch (gBattleStruct->turnCountersTracker) + { + case ENDTURN_ORDER: + for (i = 0; i < gBattlersCount; ++i) + gBattlerByTurnOrder[i] = i; + for (i = 0; i < gBattlersCount - 1; ++i) + { + s32 j; + + for (j = i + 1; j < gBattlersCount; ++j) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) + SwapTurnOrder(i, j); + } + { + u8* var = &gBattleStruct->turnCountersTracker; + + ++*var; + gBattleStruct->turnSideTracker = 0; + } + // fall through + case ENDTURN_REFLECT: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = gSideTimers[side].reflectBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_REFLECT) + { + if (--gSideTimers[side].reflectTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); + ++effect; + } + } + ++gBattleStruct->turnSideTracker; + if (effect) + break; + } + if (!effect) + { + ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_LIGHT_SCREEN: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = gSideTimers[side].lightscreenBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN) + { + if (--gSideTimers[side].lightscreenTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); + ++effect; + } + } + ++gBattleStruct->turnSideTracker; + if (effect) + break; + } + if (!effect) + { + ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_MIST: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = gSideTimers[side].mistBattlerId; + if (gSideTimers[side].mistTimer != 0 && --gSideTimers[side].mistTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_MIST; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); + ++effect; + } + ++gBattleStruct->turnSideTracker; + if (effect) + break; + } + if (!effect) + { + ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_SAFEGUARD: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = gSideTimers[side].safeguardBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD) + { + if (--gSideTimers[side].safeguardTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; + BattleScriptExecute(BattleScript_SafeguardEnds); + ++effect; + } + } + ++gBattleStruct->turnSideTracker; + if (effect) + break; + } + if (!effect) + { + ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_WISH: + while (gBattleStruct->turnSideTracker < gBattlersCount) + { + gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; + if (gWishFutureKnock.wishCounter[gActiveBattler] != 0 + && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 + && gBattleMons[gActiveBattler].hp != 0) + { + gBattlerTarget = gActiveBattler; + BattleScriptExecute(BattleScript_WishComesTrue); + ++effect; + } + ++gBattleStruct->turnSideTracker; + if (effect) + break; + } + if (!effect) + ++gBattleStruct->turnCountersTracker; + break; + case ENDTURN_RAIN: + if (gBattleWeather & WEATHER_RAIN_ANY) + { + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_RAIN_TEMPORARY; + gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + BattleScriptExecute(BattleScript_RainContinuesOrEnds); + ++effect; + } + ++gBattleStruct->turnCountersTracker; + break; + case ENDTURN_SANDSTORM: + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + } + else + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + BattleScriptExecute(gBattlescriptCurrInstr); + ++effect; + } + ++gBattleStruct->turnCountersTracker; + break; + case ENDTURN_SUN: + if (gBattleWeather & WEATHER_SUN_ANY) + { + if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SUN_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SunlightFaded; + } + else + { + gBattlescriptCurrInstr = BattleScript_SunlightContinues; + } + BattleScriptExecute(gBattlescriptCurrInstr); + ++effect; + } + ++gBattleStruct->turnCountersTracker; + break; + case ENDTURN_HAIL: + if (gBattleWeather & WEATHER_HAIL_ANY) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_HAIL; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + } + else + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(gBattlescriptCurrInstr); + ++effect; + } + ++gBattleStruct->turnCountersTracker; + break; + case ENDTURN_FIELD_COUNT: + ++effect; + break; + } + } while (!effect); + return (gBattleMainFunc != BattleTurnPassed); +} + +enum +{ + ENDTURN_INGRAIN, + ENDTURN_ABILITIES, + ENDTURN_ITEMS1, + ENDTURN_LEECH_SEED, + ENDTURN_POISON, + ENDTURN_BAD_POISON, + ENDTURN_BURN, + ENDTURN_NIGHTMARES, + ENDTURN_CURSE, + ENDTURN_WRAP, + ENDTURN_UPROAR, + ENDTURN_THRASH, + ENDTURN_DISABLE, + ENDTURN_ENCORE, + ENDTURN_LOCK_ON, + ENDTURN_CHARGE, + ENDTURN_TAUNT, + ENDTURN_YAWN, + ENDTURN_ITEMS2, + ENDTURN_BATTLER_COUNT +}; + +u8 DoBattlerEndTurnEffects(void) +{ + u8 effect = 0; + + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= ENDTURN_BATTLER_COUNT) + { + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; + if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) + { + ++gBattleStruct->turnEffectsBattlerId; + } + else + { + switch (gBattleStruct->turnEffectsTracker) + { + case ENDTURN_INGRAIN: // ingrain + if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED) + && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP + && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_IngrainTurnHeal); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_ABILITIES: // end turn abilities + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0)) + ++effect; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_ITEMS1: // item effects + if (ItemBattleEffects(1, gActiveBattler, FALSE)) + ++effect; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_ITEMS2: // item effects again + if (ItemBattleEffects(1, gActiveBattler, TRUE)) + ++effect; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_LEECH_SEED: // leech seed + if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) + && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 + && gBattleMons[gActiveBattler].hp != 0) + { + gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleScripting.animArg1 = gBattlerTarget; + gBattleScripting.animArg2 = gBattlerAttacker; + BattleScriptExecute(BattleScript_LeechSeedTurnDrain); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_POISON: // poison + if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_BAD_POISON: // toxic poison + if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) // not 16 turns + gBattleMons[gActiveBattler].status1 += 0x100; + gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_BURN: // burn + if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_BurnTurnDmg); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_NIGHTMARES: // spooky nightmares + if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) + { + // R/S does not perform this sleep check, which causes the nightmare effect to + // persist even after the affected Pokemon has been awakened by Shed Skin. + if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_NightmareTurnDmg); + ++effect; + } + else + { + gBattleMons[gActiveBattler].status2 &= ~STATUS2_NIGHTMARE; + } + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_CURSE: // curse + if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_CurseTurnDmg); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_WRAP: // wrap + if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0) + { + gBattleMons[gActiveBattler].status2 -= 0x2000; + if (gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) // damaged by wrap + { + gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); + gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; + gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); + gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else // broke free + { + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; + gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); + gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapEnds; + } + BattleScriptExecute(gBattlescriptCurrInstr); + ++effect; + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_UPROAR: // uproar + if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; ++gBattlerAttacker) + { + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) + && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_MonWokeUpInUproar); + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + break; + } + } + if (gBattlerAttacker != gBattlersCount) + { + effect = 2; // a pokemon was awaken + break; + } + else + { + gBattlerAttacker = gActiveBattler; + gBattleMons[gActiveBattler].status2 -= 0x10; // uproar timer goes down + if (WasUnableToUseMove(gActiveBattler)) + { + CancelMultiTurnMoves(gActiveBattler); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + CancelMultiTurnMoves(gActiveBattler); + } + BattleScriptExecute(BattleScript_PrintUproarOverTurns); + effect = 1; + } + } + if (effect != 2) + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_THRASH: // thrash + if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) + { + gBattleMons[gActiveBattler].status2 -= 0x400; + if (WasUnableToUseMove(gActiveBattler)) + CancelMultiTurnMoves(gActiveBattler); + else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) + && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS); + if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; + SetMoveEffect(1, 0); + if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION) + BattleScriptExecute(BattleScript_ThrashConfuses); + ++effect; + } + } + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_DISABLE: // disable + if (gDisableStructs[gActiveBattler].disableTimer != 0) + { + s32 i; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) + break; + } + if (i == MAX_MON_MOVES) // pokemon does not have the disabled move anymore + { + gDisableStructs[gActiveBattler].disabledMove = 0; + gDisableStructs[gActiveBattler].disableTimer = 0; + } + else if (--gDisableStructs[gActiveBattler].disableTimer == 0) // disable ends + { + gDisableStructs[gActiveBattler].disabledMove = 0; + BattleScriptExecute(BattleScript_DisabledNoMore); + ++effect; + } + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_ENCORE: // encore + if (gDisableStructs[gActiveBattler].encoreTimer != 0) + { + if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore + { + gDisableStructs[gActiveBattler].encoredMove = 0; + gDisableStructs[gActiveBattler].encoreTimer = 0; + } + else if (--gDisableStructs[gActiveBattler].encoreTimer == 0 + || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) + { + gDisableStructs[gActiveBattler].encoredMove = 0; + gDisableStructs[gActiveBattler].encoreTimer = 0; + BattleScriptExecute(BattleScript_EncoredNoMore); + ++effect; + } + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_LOCK_ON: // lock-on decrement + if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS) + gStatuses3[gActiveBattler] -= 0x8; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_CHARGE: // charge + if (gDisableStructs[gActiveBattler].chargeTimer && --gDisableStructs[gActiveBattler].chargeTimer == 0) + gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_TAUNT: // taunt + if (gDisableStructs[gActiveBattler].tauntTimer) + --gDisableStructs[gActiveBattler].tauntTimer; + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_YAWN: // yawn + if (gStatuses3[gActiveBattler] & STATUS3_YAWN) + { + gStatuses3[gActiveBattler] -= 0x800; + if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) + && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT + && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler)) + { + CancelMultiTurnMoves(gActiveBattler); + gBattleMons[gActiveBattler].status1 |= (Random() & 3) + 2; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + gEffectBattler = gActiveBattler; + BattleScriptExecute(BattleScript_YawnMakesAsleep); + ++effect; + } + } + ++gBattleStruct->turnEffectsTracker; + break; + case ENDTURN_BATTLER_COUNT: // done + gBattleStruct->turnEffectsTracker = 0; + ++gBattleStruct->turnEffectsBattlerId; + break; + } + if (effect) + return effect; + } + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +bool8 HandleWishPerishSongOnTurnEnd(void) +{ + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + switch (gBattleStruct->wishPerishSongState) + { + case 0: + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) + { + gActiveBattler = gBattleStruct->wishPerishSongBattlerId; + if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) + { + ++gBattleStruct->wishPerishSongBattlerId; + continue; + } + ++gBattleStruct->wishPerishSongBattlerId; + if (gWishFutureKnock.futureSightCounter[gActiveBattler] != 0 + && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 + && gBattleMons[gActiveBattler].hp != 0) + { + if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBattler]); + gBattlerTarget = gActiveBattler; + gBattlerAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler]; + gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler]; + gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF; + BattleScriptExecute(BattleScript_MonTookFutureAttack); + return TRUE; + } + } + { + u8 *state = &gBattleStruct->wishPerishSongState; + + *state = 1; + gBattleStruct->wishPerishSongBattlerId = 0; + } + // fall through + case 1: + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) + { + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId]; + if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) + { + ++gBattleStruct->wishPerishSongBattlerId; + continue; + } + ++gBattleStruct->wishPerishSongBattlerId; + if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG) + { + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBattler].perishSongTimer); + if (gDisableStructs[gActiveBattler].perishSongTimer == 0) + { + gStatuses3[gActiveBattler] &= ~STATUS3_PERISH_SONG; + gBattleMoveDamage = gBattleMons[gActiveBattler].hp; + gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife; + } + else + { + --gDisableStructs[gActiveBattler].perishSongTimer; + gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown; + } + BattleScriptExecute(gBattlescriptCurrInstr); + return TRUE; + } + } + break; + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return FALSE; +} + +#define FAINTED_ACTIONS_MAX_CASE 7 + +bool8 HandleFaintedMonActions(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + return FALSE; + do + { + s32 i; + switch (gBattleStruct->faintedActionsState) + { + case 0: + gBattleStruct->faintedActionsBattlerId = 0; + ++gBattleStruct->faintedActionsState; + for (i = 0; i < gBattlersCount; ++i) + { + if (gAbsentBattlerFlags & gBitTable[i] && !HasNoMonsToSwitch(i, 6, 6)) + gAbsentBattlerFlags &= ~(gBitTable[i]); + } + // fall through + case 1: + do + { + gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId; + if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 + && !(gBattleStruct->givenExpMons & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]]) + && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) + { + BattleScriptExecute(BattleScript_GiveExp); + gBattleStruct->faintedActionsState = 2; + return TRUE; + } + } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount); + gBattleStruct->faintedActionsState = 3; + break; + case 2: + sub_8017434(gBattlerFainted); + if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount) + gBattleStruct->faintedActionsState = 3; + else + gBattleStruct->faintedActionsState = 1; + break; + case 3: + gBattleStruct->faintedActionsBattlerId = 0; + ++gBattleStruct->faintedActionsState; + // fall through + case 4: + do + { + gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId; + if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 + && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) + { + BattleScriptExecute(BattleScript_HandleFaintedMon); + gBattleStruct->faintedActionsState = 5; + return TRUE; + } + } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount); + gBattleStruct->faintedActionsState = 6; + break; + case 5: + if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount) + gBattleStruct->faintedActionsState = 6; + else + gBattleStruct->faintedActionsState = 4; + break; + case 6: + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, TRUE) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) + return TRUE; + ++gBattleStruct->faintedActionsState; + break; + case FAINTED_ACTIONS_MAX_CASE: + break; + } + } while (gBattleStruct->faintedActionsState != FAINTED_ACTIONS_MAX_CASE); + return FALSE; +} diff --git a/src/battle_util2.c b/src/battle_util2.c index 83014a83b..6a3f3525b 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -19,10 +19,7 @@ void AllocateBattleResources(void) *ptr++ = AllocZeroed(8); while (--i >= 0); } - // TODO: Figure out whether 0x200 is really the size of *gBattleStruct. - // The following works in pokeem: - // gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); - gBattleStruct = AllocZeroed(0x200); + gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); gBattleResources = AllocZeroed(sizeof(*gBattleResources)); gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase)); gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags)); diff --git a/src/pokemon.c b/src/pokemon.c index d75650d91..615bf55f1 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2552,7 +2552,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de damage /= 2; // sunny - if (gBattleWeather & WEATHER_SUNNY_ANY) + if (gBattleWeather & WEATHER_SUN_ANY) { switch (type) { @@ -4117,14 +4117,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { gAbsentBattlerFlags &= ~gBitTable[sp34]; CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34])); - if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255) - gBattleResults.unk4++; + if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.numRevivesUsed < 255) + gBattleResults.numRevivesUsed++; } else { gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2]; - if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255) - gBattleResults.unk4++; + if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.numRevivesUsed < 255) + gBattleResults.numRevivesUsed++; } } } @@ -4164,8 +4164,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo gBattleMons[sp34].hp = data; if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == 0) { - if (gBattleResults.unk3 < 255) - gBattleResults.unk3++; + if (gBattleResults.numHealingItemsUsed < 255) + gBattleResults.numHealingItemsUsed++; // I have to re-use this variable to match. r5 = gActiveBattler; gActiveBattler = sp34; @@ -4204,7 +4204,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + r5, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[r5])) gBattleMons[sp34].pp[r5] = data; retVal = FALSE; } @@ -4229,7 +4229,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[moveIndex])) gBattleMons[sp34].pp[moveIndex] = data; retVal = FALSE; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 585a2843c..e3c0c28d6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -288,7 +288,7 @@ gSelectionBattleScripts: @ 2023D80 gUnknown_2023D90: @ 2023D90 .space 0x8 -gLastUsedMove: @ 2023D98 +gLastMoves: @ 2023D98 .space 0x8 gUnknown_2023DA0: @ 2023DA0 From 3eb1f1bc783308dac445eaacc05c9f14e9b78822 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 1 Aug 2019 12:25:38 +0800 Subject: [PATCH 011/100] matched AbilityBattleEffects --- asm/battle_2.s | 38 +- asm/battle_script_commands.s | 64 +- asm/battle_util.s | 4972 +------------------------------ asm/field_weather.s | 6 +- data/data.s | 14 +- include/battle.h | 52 +- include/battle_scripts.h | 5 + include/battle_util.h | 42 +- include/field_weather.h | 1 + src/battle_ai_script_commands.c | 2 +- src/battle_util.c | 1230 +++++++- src/pokemon.c | 2 +- sym_ewram.txt | 4 +- 13 files changed, 1349 insertions(+), 5083 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 54e773828..a80099a6a 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5266,7 +5266,7 @@ _080127B0: ldrb r7, [r7] cmp r5, r7 bge _08012824 - ldr r0, _080128E0 @ =gChosenMoveByBattler + ldr r0, _080128E0 @ =gUnknown_2023C34 mov r8, r0 ldr r3, _080128C4 @ =gDisableStructs ldr r4, _080128D4 @ =gStatuses3 @@ -5403,7 +5403,7 @@ _080128D0: .4byte gCurrentMove _080128D4: .4byte gStatuses3 _080128D8: .4byte gBattleMons _080128DC: .4byte gBattlersCount -_080128E0: .4byte gChosenMoveByBattler +_080128E0: .4byte gUnknown_2023C34 _080128E4: .4byte 0xfbffffff _080128E8: .4byte 0x15100007 _080128EC: .4byte 0x0003043f @@ -5431,7 +5431,7 @@ _0801290C: ldrb r6, [r6] cmp r5, r6 bge _0801296C - ldr r0, _08012B8C @ =gChosenMoveByBattler + ldr r0, _08012B8C @ =gUnknown_2023C34 mov r8, r0 ldr r6, _08012B90 @ =gBitTable ldr r4, _08012B94 @ =gActiveBattler @@ -5749,7 +5749,7 @@ _08012B7C: .4byte gBattleMons _08012B80: .4byte gBattleStruct _08012B84: .4byte gActionSelectionCursor _08012B88: .4byte gBattlersCount -_08012B8C: .4byte gChosenMoveByBattler +_08012B8C: .4byte gUnknown_2023C34 _08012B90: .4byte gBitTable _08012B94: .4byte gActiveBattler _08012B98: .4byte 0xffff1fff @@ -7571,7 +7571,7 @@ _08013A22: mov r8, r1 movs r7, 0x6 ldr r6, _08013AF4 @ =gUnknown_2023D7C - ldr r2, _08013AF8 @ =gUnknown_2023DC4 + ldr r2, _08013AF8 @ =gChosenMoveByBattler movs r4, 0xFF movs r3, 0 _08013A32: @@ -7671,7 +7671,7 @@ _08013AE8: .4byte gBattleStruct _08013AEC: .4byte gBattlersCount _08013AF0: .4byte gBattlerByTurnOrder _08013AF4: .4byte gUnknown_2023D7C -_08013AF8: .4byte gUnknown_2023DC4 +_08013AF8: .4byte gChosenMoveByBattler _08013AFC: .4byte gAbsentBattlerFlags _08013B00: .4byte gBattleMainFunc _08013B04: .4byte sub_8014040 @@ -7894,7 +7894,7 @@ _08013CBC: ldr r7, _08013D48 @ =gUnknown_2023D7C movs r6, 0xFF movs r5, 0 - ldr r3, _08013D4C @ =gUnknown_2023DC4 + ldr r3, _08013D4C @ =gChosenMoveByBattler _08013CDE: adds r1, r2, r7 ldrb r0, [r1] @@ -7946,7 +7946,7 @@ _08013D3C: .4byte gBattleMainFunc _08013D40: .4byte gAbsentBattlerFlags _08013D44: .4byte sub_8014040 _08013D48: .4byte gUnknown_2023D7C -_08013D4C: .4byte gUnknown_2023DC4 +_08013D4C: .4byte gChosenMoveByBattler _08013D50: .4byte gUnknown_2023E80 thumb_func_end BattleTurnPassed @@ -8631,7 +8631,7 @@ _080142D8: ldrh r2, [r0, 0x6] cmp r2, 0 beq _0801432C - ldr r1, _08014320 @ =gUnknown_2023DC4 + ldr r1, _08014320 @ =gChosenMoveByBattler lsls r0, r4, 1 adds r0, r1 strh r2, [r0] @@ -8655,7 +8655,7 @@ _080142D8: .align 2, 0 _08014318: .4byte gDisableStructs _0801431C: .4byte gActiveBattler -_08014320: .4byte gUnknown_2023DC4 +_08014320: .4byte gChosenMoveByBattler _08014324: .4byte gBattleStruct _08014328: .4byte gBattleCommunication _0801432C: @@ -9300,7 +9300,7 @@ _0801487C: adds r0, r6 ldrb r0, [r0] strb r0, [r1] - ldr r0, _080148CC @ =gUnknown_2023DC4 + ldr r0, _080148CC @ =gChosenMoveByBattler ldrb r2, [r2] lsls r5, r2, 1 adds r5, r0 @@ -9329,7 +9329,7 @@ _0801487C: b _08014B30 .align 2, 0 _080148C8: .4byte gBattleStruct -_080148CC: .4byte gUnknown_2023DC4 +_080148CC: .4byte gChosenMoveByBattler _080148D0: .4byte gBattleMons _080148D4: .4byte gBattleCommunication _080148D8: @@ -10662,7 +10662,7 @@ TurnValuesCleanUp: @ 8015330 beq _08015428 ldr r7, _08015390 @ =gProtectStructs adds r6, r5, 0 - ldr r0, _08015394 @ =gChosenMoveByBattler + ldr r0, _08015394 @ =gUnknown_2023C34 mov r12, r0 ldr r1, _08015398 @ =gDisableStructs mov r8, r1 @@ -10692,7 +10692,7 @@ _0801535E: _08015388: .4byte gActiveBattler _0801538C: .4byte gBattlersCount _08015390: .4byte gProtectStructs -_08015394: .4byte gChosenMoveByBattler +_08015394: .4byte gUnknown_2023C34 _08015398: .4byte gDisableStructs _0801539C: ldrb r0, [r6] @@ -10866,7 +10866,7 @@ _080154CC: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r1, _0801553C @ =gUnknown_2023DC4 + ldr r1, _0801553C @ =gChosenMoveByBattler ldrb r3, [r5] lsls r0, r3, 1 adds r0, r1 @@ -10909,7 +10909,7 @@ _0801552C: .4byte gBattleStruct _08015530: .4byte gBattlersCount _08015534: .4byte gActiveBattler _08015538: .4byte gBattlerAttacker -_0801553C: .4byte gUnknown_2023DC4 +_0801553C: .4byte gChosenMoveByBattler _08015540: .4byte gBattleMons _08015544: .4byte gDisableStructs _08015548: .4byte gProtectStructs @@ -12046,7 +12046,7 @@ _08015EBC: mov r1, r10 adds r1, 0xC adds r0, r1 - ldr r1, _08015F00 @ =gUnknown_2023DC4 + ldr r1, _08015F00 @ =gChosenMoveByBattler lsls r2, 1 adds r2, r1 ldrh r3, [r0] @@ -12069,7 +12069,7 @@ _08015EF6: b _08015F18 .align 2, 0 _08015EFC: .4byte gBattlerAttacker -_08015F00: .4byte gUnknown_2023DC4 +_08015F00: .4byte gChosenMoveByBattler _08015F04: .4byte gCurrentMove _08015F08: .4byte gChosenMove _08015F0C: .4byte gBattleStruct @@ -12402,7 +12402,7 @@ _080161AA: adds r1, r2 adds r1, 0x20 ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle ldr r2, _080161F0 @ =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index b4fd08c29..765eb317a 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -290,7 +290,7 @@ _0801D98E: mov r1, r8 ldrb r0, [r1] ldrb r1, [r4] - bl sub_80C71D0 + bl RecordAbilityBattle b _0801DAFC .align 2, 0 _0801D9C8: .4byte gBattlersCount @@ -2198,7 +2198,7 @@ _0801E8C0: strb r1, [r0, 0x6] ldrb r0, [r4] ldrb r1, [r3] - bl sub_80C71D0 + bl RecordAbilityBattle b _0801E9D4 .align 2, 0 _0801E910: .4byte gBattleMoves @@ -2355,7 +2355,7 @@ _0801EA10: strb r0, [r1, 0x6] ldrb r0, [r5] ldrb r1, [r3] - bl sub_80C71D0 + bl RecordAbilityBattle _0801EA52: ldr r0, _0801EA98 @ =gMoveResultFlags ldrb r1, [r0] @@ -2465,7 +2465,7 @@ _0801EB08: strb r1, [r0, 0x6] ldrb r0, [r3] movs r1, 0x1A - bl sub_80C71D0 + bl RecordAbilityBattle b _0801ED18 .align 2, 0 _0801EB3C: .4byte gBattleMons @@ -2710,7 +2710,7 @@ _0801ECC2: mov r1, r8 ldrb r0, [r1] movs r1, 0x19 - bl sub_80C71D0 + bl RecordAbilityBattle _0801ED18: pop {r3,r4} mov r8, r3 @@ -5342,7 +5342,7 @@ _080201A6: mov r3, r9 ldrb r0, [r3] movs r1, 0x11 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r4, _080201D8 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5465,7 +5465,7 @@ _0802028A: mov r3, r9 ldrb r0, [r3] movs r1, 0x29 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r4, _080202AC @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5656,7 +5656,7 @@ _08020402: mov r3, r9 ldrb r0, [r3] movs r1, 0x7 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r4, _08020424 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5699,7 +5699,7 @@ _0802045A: mov r1, r9 ldrb r0, [r1] movs r1, 0x11 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r4, _08020498 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -6128,7 +6128,7 @@ _0802084C: mov r1, r9 ldrb r0, [r1] movs r1, 0x27 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r1, _08020868 @ =gBattlescriptCurrInstr ldr r0, _0802086C @ =gUnknown_81D9452 str r0, [r1] @@ -6737,7 +6737,7 @@ _08020D26: strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle b _0802110A .align 2, 0 _08020D64: .4byte gBattleTypeFlags @@ -7075,7 +7075,7 @@ _08021018: str r0, [r1] ldrb r0, [r5] movs r1, 0x3C - bl sub_80C71D0 + bl RecordAbilityBattle b _0802110A .align 2, 0 _0802104C: .4byte gLastUsedAbility @@ -8017,7 +8017,7 @@ _080217C8: ldrb r1, [r0] adds r0, r4, 0 _080217EC: - bl sub_80C71D0 + bl RecordAbilityBattle ldr r0, _08021800 @ =gBattleScripting strb r4, [r0, 0x15] b _0802180A @@ -12164,7 +12164,7 @@ _0802381C: ldr r2, _08023854 @ =gDisableStructs ldr r5, _08023858 @ =0xfeffffff adds r3, r0, 0 - ldr r1, _0802385C @ =gChosenMoveByBattler + ldr r1, _0802385C @ =gUnknown_2023C34 _0802382E: ldrb r0, [r2, 0xA] cmp r0, 0 @@ -12189,7 +12189,7 @@ _08023846: _08023850: .4byte gBattlersCount _08023854: .4byte gDisableStructs _08023858: .4byte 0xfeffffff -_0802385C: .4byte gChosenMoveByBattler +_0802385C: .4byte gUnknown_2023C34 _08023860: ldr r1, _08023914 @ =gHitMarker ldr r3, [r1] @@ -12709,7 +12709,7 @@ atk4A_typecalc2: @ 8023C38 strb r2, [r0, 0x6] ldrb r0, [r7] ldrb r1, [r3] - bl sub_80C71D0 + bl RecordAbilityBattle b _08023DAE .align 2, 0 _08023C9C: .4byte gBattleMoves @@ -12910,7 +12910,7 @@ _08023DF0: strb r0, [r1, 0x6] ldrb r0, [r2] ldrb r1, [r3] - bl sub_80C71D0 + bl RecordAbilityBattle _08023E2A: ldr r0, _08023E74 @ =gMoveResultFlags ldrb r1, [r0] @@ -18090,7 +18090,7 @@ atk70_recordlastability: @ 8026844 ldrb r0, [r1] ldr r1, _08026874 @ =gLastUsedAbility ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle ldr r0, [r4] adds r0, 0x1 str r0, [r4] @@ -19248,7 +19248,7 @@ _0802718C: adds r1, r6 adds r1, 0x20 ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle ldr r1, _080271B8 @ =gBattlescriptCurrInstr ldr r0, _080271BC @ =gUnknown_81D93AF str r0, [r1] @@ -20232,7 +20232,7 @@ _08027918: str r4, [r5] ldrb r1, [r2] adds r0, r3, 0 - bl sub_80C71D0 + bl RecordAbilityBattle b _08027942 .align 2, 0 _08027930: .4byte gBattleMons @@ -20820,7 +20820,7 @@ _08027DB4: strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle ldr r6, _08027DFC @ =gActiveBattler ldrb r1, [r6] lsls r0, r1, 2 @@ -20873,7 +20873,7 @@ _08027E0C: strb r0, [r1] ldrb r0, [r3] ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle b _08027D48 .align 2, 0 _08027E58: .4byte gActiveBattler @@ -20918,7 +20918,7 @@ _08027E8E: strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle b _08027D48 .align 2, 0 _08027EBC: .4byte gActiveBattler @@ -22333,7 +22333,7 @@ _08028998: mov r1, r9 ldrb r0, [r1] movs r1, 0x5 - bl sub_80C71D0 + bl RecordAbilityBattle b _08028C48 .align 2, 0 _080289D4: .4byte gPotentialItemEffectBattler @@ -23030,7 +23030,7 @@ _08028F1C: strb r2, [r0] ldrb r0, [r5] movs r1, 0xC - bl sub_80C71D0 + bl RecordAbilityBattle b _0802902C .align 2, 0 _08028F78: .4byte gBattlerPartyIndexes @@ -26040,7 +26040,7 @@ _0802A738: .4byte 0xf7ffffff _0802A73C: ldrb r1, [r1] adds r0, r3, 0 - bl sub_80C71D0 + bl RecordAbilityBattle ldrb r0, [r6, 0x5] movs r1, 0x1 orrs r0, r1 @@ -26113,7 +26113,7 @@ _0802A7DC: .4byte 0xf7ffffff _0802A7E0: ldrb r1, [r1] adds r0, r3, 0 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r1, _0802A838 @ =gBattleCommunication ldrb r0, [r1, 0x5] mov r2, r9 @@ -27382,7 +27382,7 @@ _0802B1A2: lsls r0, 31 cmp r0, 0 bne _0802B2A8 - ldr r0, _0802B27C @ =gUnknown_2023DC4 + ldr r0, _0802B27C @ =gChosenMoveByBattler lsls r1, r3, 1 adds r1, r0 ldrh r0, [r1] @@ -27454,7 +27454,7 @@ _0802B26C: .4byte gBattlerAttacker _0802B270: .4byte gBattleStruct _0802B274: .4byte gBattleMons _0802B278: .4byte gDisableStructs -_0802B27C: .4byte gUnknown_2023DC4 +_0802B27C: .4byte gChosenMoveByBattler _0802B280: .4byte gBattlersCount _0802B284: .4byte gCurrentMove _0802B288: .4byte gUnknown_2023D48 @@ -29442,7 +29442,7 @@ _0802C224: strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] - bl sub_80C71D0 + bl RecordAbilityBattle b _0802C37A .align 2, 0 _0802C24C: .4byte gBattlescriptCurrInstr @@ -31575,7 +31575,7 @@ atkEC_pursuitrelated: @ 802D2A0 ldrb r0, [r0] cmp r0, 0 bne _0802D340 - ldr r1, _0802D32C @ =gUnknown_2023DC4 + ldr r1, _0802D32C @ =gChosenMoveByBattler lsls r0, r3, 1 adds r0, r1 ldrh r2, [r0] @@ -31606,7 +31606,7 @@ _0802D31C: .4byte gBattleTypeFlags _0802D320: .4byte gAbsentBattlerFlags _0802D324: .4byte gBitTable _0802D328: .4byte gUnknown_2023D7C -_0802D32C: .4byte gUnknown_2023DC4 +_0802D32C: .4byte gChosenMoveByBattler _0802D330: .4byte gUnknown_2023BDA _0802D334: .4byte gCurrentMove _0802D338: .4byte gBattlescriptCurrInstr diff --git a/asm/battle_util.s b/asm/battle_util.s index b2ed61f7a..a6b77a6e4 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -5,4920 +5,6 @@ .text - thumb_func_start TryClearRageStatuses -TryClearRageStatuses: @ 8019284 - push {r4-r6,lr} - movs r3, 0 - ldr r0, _080192C4 @ =gBattlersCount - adds r5, r0, 0 - ldrb r0, [r5] - cmp r3, r0 - bge _080192BC - ldr r4, _080192C8 @ =gUnknown_2023DC4 - movs r6, 0x80 - lsls r6, 16 - ldr r2, _080192CC @ =gChosenMoveByBattler -_0801929A: - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _080192B0 - ldrh r0, [r4] - cmp r0, 0x63 - beq _080192B0 - ldr r0, _080192D0 @ =0xff7fffff - ands r1, r0 - str r1, [r2] -_080192B0: - adds r4, 0x2 - adds r2, 0x58 - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _0801929A -_080192BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080192C4: .4byte gBattlersCount -_080192C8: .4byte gUnknown_2023DC4 -_080192CC: .4byte gChosenMoveByBattler -_080192D0: .4byte 0xff7fffff - thumb_func_end TryClearRageStatuses - - thumb_func_start AtkCanceller_UnableToUseMove -AtkCanceller_UnableToUseMove: @ 80192D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - movs r0, 0 - mov r9, r0 - ldr r1, _080192F0 @ =gUnknown_2023FC8 - mov r10, r1 - ldr r2, _080192F4 @ =gBattleStruct - mov r8, r2 - b _08019302 - .align 2, 0 -_080192F0: .4byte gUnknown_2023FC8 -_080192F4: .4byte gBattleStruct -_080192F8: - mov r4, r9 - cmp r4, 0 - beq _08019302 - bl _08019BA8 -_08019302: - mov r7, r8 - ldr r0, [r7] - adds r0, 0xB7 - ldrb r0, [r0] - cmp r0, 0xF - bls _08019312 - bl _08019B98 -_08019312: - lsls r0, 2 - ldr r1, _0801931C @ =_08019320 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801931C: .4byte _08019320 - .align 2, 0 -_08019320: - .4byte _08019360 - .4byte _080193A4 - .4byte _080194E0 - .4byte _08019598 - .4byte _0801960C - .4byte _08019678 - .4byte _080196E0 - .4byte _08019754 - .4byte _080197B8 - .4byte _08019814 - .4byte _080198F8 - .4byte _08019974 - .4byte _080199C8 - .4byte _08019A60 - .4byte _08019B40 - .4byte _08019B98 -_08019360: - ldr r1, _08019390 @ =gBattleMons - ldr r3, _08019394 @ =gBattlerAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - ldr r1, _08019398 @ =0xfdffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801939C @ =gStatuses3 - ldrb r2, [r3] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _080193A0 @ =0xffffbfff - ands r0, r1 - str r0, [r2] - mov r0, r8 - ldr r1, [r0] - bl _08019B90 - .align 2, 0 -_08019390: .4byte gBattleMons -_08019394: .4byte gBattlerAttacker -_08019398: .4byte 0xfdffffff -_0801939C: .4byte gStatuses3 -_080193A0: .4byte 0xffffbfff -_080193A4: - ldr r7, _0801940C @ =gBattleMons - ldr r4, _08019410 @ =gBattlerAttacker - ldrb r1, [r4] - movs r5, 0x58 - adds r0, r1, 0 - muls r0, r5 - adds r6, r7, 0 - adds r6, 0x4C - adds r0, r6 - ldr r0, [r0] - movs r2, 0x7 - mov r8, r2 - ands r0, r2 - cmp r0, 0 - bne _080193C4 - b _08019946 -_080193C4: - adds r0, r1, 0 - bl UproarWakeUpCheck - lsls r0, 24 - cmp r0, 0 - beq _08019424 - ldrb r0, [r4] - adds r2, r0, 0 - muls r2, r5 - adds r2, r6 - ldr r0, [r2] - movs r1, 0x8 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldrb r0, [r4] - adds r2, r0, 0 - muls r2, r5 - adds r0, r7, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08019414 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r1, _08019418 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r1, _0801941C @ =gBattlescriptCurrInstr - ldr r0, _08019420 @ =BattleScript_MoveUsedWokeUp - str r0, [r1] - movs r4, 0x2 - mov r9, r4 - b _08019946 - .align 2, 0 -_0801940C: .4byte gBattleMons -_08019410: .4byte gBattlerAttacker -_08019414: .4byte 0xf7ffffff -_08019418: .4byte gBattleCommunication -_0801941C: .4byte gBattlescriptCurrInstr -_08019420: .4byte BattleScript_MoveUsedWokeUp -_08019424: - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r0, r1, r7 - adds r0, 0x20 - ldrb r0, [r0] - movs r3, 0x1 - cmp r0, 0x30 - bne _08019438 - movs r3, 0x2 -_08019438: - adds r2, r1, r6 - ldr r1, [r2] - adds r0, r1, 0 - mov r7, r8 - ands r0, r7 - cmp r0, r3 - bcs _08019450 - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - b _08019454 -_08019450: - subs r0, r1, r3 - str r0, [r2] -_08019454: - ldr r2, _08019498 @ =gBattleMons - ldr r0, _0801949C @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r4, [r0] - movs r0, 0x7 - ands r4, r0 - cmp r4, 0 - beq _080194B0 - ldr r0, _080194A0 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAD - bne _08019478 - b _08019946 -_08019478: - cmp r0, 0xD6 - bne _0801947E - b _08019946 -_0801947E: - ldr r1, _080194A4 @ =gBattlescriptCurrInstr - ldr r0, _080194A8 @ =BattleScript_MoveUsedIsAsleep - str r0, [r1] - ldr r2, _080194AC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r0, 0x2 - mov r9, r0 - b _08019946 - .align 2, 0 -_08019498: .4byte gBattleMons -_0801949C: .4byte gBattlerAttacker -_080194A0: .4byte gCurrentMove -_080194A4: .4byte gBattlescriptCurrInstr -_080194A8: .4byte BattleScript_MoveUsedIsAsleep -_080194AC: .4byte gHitMarker -_080194B0: - adds r2, 0x50 - adds r2, r1, r2 - ldr r0, [r2] - ldr r1, _080194D0 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r0, _080194D4 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _080194D8 @ =gBattlescriptCurrInstr - ldr r0, _080194DC @ =BattleScript_MoveUsedWokeUp - str r0, [r1] - movs r1, 0x2 - mov r9, r1 - b _08019946 - .align 2, 0 -_080194D0: .4byte 0xf7ffffff -_080194D4: .4byte gBattleCommunication -_080194D8: .4byte gBattlescriptCurrInstr -_080194DC: .4byte BattleScript_MoveUsedWokeUp -_080194E0: - ldr r1, _0801953C @ =gBattleMons - ldr r7, _08019540 @ =gBattlerAttacker - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - adds r5, r1, 0 - adds r5, 0x4C - adds r0, r5 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08019580 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08019558 - ldr r2, _08019544 @ =gBattleMoves - ldr r0, _08019548 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7D - bne _08019526 - b _08019946 -_08019526: - ldr r1, _0801954C @ =gBattlescriptCurrInstr - ldr r0, _08019550 @ =BattleScript_MoveUsedIsFrozen - str r0, [r1] - ldr r2, _08019554 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - str r0, [r2] - b _08019578 - .align 2, 0 -_0801953C: .4byte gBattleMons -_08019540: .4byte gBattlerAttacker -_08019544: .4byte gBattleMoves -_08019548: .4byte gCurrentMove -_0801954C: .4byte gBattlescriptCurrInstr -_08019550: .4byte BattleScript_MoveUsedIsFrozen -_08019554: .4byte gHitMarker -_08019558: - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r2, r5 - ldr r0, [r2] - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r1, _08019588 @ =gBattlescriptCurrInstr - ldr r0, _0801958C @ =BattleScript_MoveUsedUnfroze - str r0, [r1] - ldr r0, _08019590 @ =gBattleCommunication - strb r4, [r0, 0x5] -_08019578: - movs r2, 0x2 - mov r9, r2 - ldr r4, _08019594 @ =gBattleStruct - mov r8, r4 -_08019580: - mov r7, r8 - ldr r1, [r7] - b _08019B90 - .align 2, 0 -_08019588: .4byte gBattlescriptCurrInstr -_0801958C: .4byte BattleScript_MoveUsedUnfroze -_08019590: .4byte gBattleCommunication -_08019594: .4byte gBattleStruct -_08019598: - ldr r1, _080195EC @ =gBattleMons - ldr r0, _080195F0 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x36 - beq _080195AE - b _08019946 -_080195AE: - ldr r0, _080195F4 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _080195C2 - b _08019946 -_080195C2: - adds r0, r2, 0 - bl CancelMultiTurnMoves - ldr r2, _080195F8 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - ldr r1, _080195FC @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - ldr r1, _08019600 @ =gBattlescriptCurrInstr - ldr r0, _08019604 @ =BattleScript_MoveUsedLoafingAround - str r0, [r1] - ldr r2, _08019608 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - b _080197F4 - .align 2, 0 -_080195EC: .4byte gBattleMons -_080195F0: .4byte gBattlerAttacker -_080195F4: .4byte gDisableStructs -_080195F8: .4byte gHitMarker -_080195FC: .4byte gBattleCommunication -_08019600: .4byte gBattlescriptCurrInstr -_08019604: .4byte BattleScript_MoveUsedLoafingAround -_08019608: .4byte gMoveResultFlags -_0801960C: - ldr r1, _0801965C @ =gBattleMons - ldr r3, _08019660 @ =gBattlerAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 15 - ands r0, r1 - cmp r0, 0 - bne _08019628 - b _08019946 -_08019628: - ldr r0, _08019664 @ =0xffbfffff - ands r1, r0 - str r1, [r2] - ldr r2, _08019668 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x19] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _0801966C @ =gBattlescriptCurrInstr - ldr r0, _08019670 @ =BattleScript_MoveUsedMustRecharge - str r0, [r1] - ldr r2, _08019674 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r1, 0x1 - mov r9, r1 - b _08019946 - .align 2, 0 -_0801965C: .4byte gBattleMons -_08019660: .4byte gBattlerAttacker -_08019664: .4byte 0xffbfffff -_08019668: .4byte gDisableStructs -_0801966C: .4byte gBattlescriptCurrInstr -_08019670: .4byte BattleScript_MoveUsedMustRecharge -_08019674: .4byte gHitMarker -_08019678: - ldr r1, _080196C8 @ =gBattleMons - ldr r3, _080196CC @ =gBattlerAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08019692 - b _08019946 -_08019692: - movs r0, 0x9 - negs r0, r0 - ands r1, r0 - str r1, [r2] - ldr r0, _080196D0 @ =gProtectStructs - ldrb r2, [r3] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _080196D4 @ =gBattlescriptCurrInstr - ldr r0, _080196D8 @ =BattleScript_MoveUsedFlinched - str r0, [r1] - ldr r2, _080196DC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r2, 0x1 - mov r9, r2 - b _08019946 - .align 2, 0 -_080196C8: .4byte gBattleMons -_080196CC: .4byte gBattlerAttacker -_080196D0: .4byte gProtectStructs -_080196D4: .4byte gBattlescriptCurrInstr -_080196D8: .4byte BattleScript_MoveUsedFlinched -_080196DC: .4byte gHitMarker -_080196E0: - ldr r0, _08019734 @ =gDisableStructs - ldr r3, _08019738 @ =gBattlerAttacker - ldrb r2, [r3] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r0, _0801973C @ =gCurrentMove - ldrh r1, [r1, 0x4] - ldrh r0, [r0] - cmp r1, r0 - beq _080196FA - b _08019946 -_080196FA: - cmp r1, 0 - bne _08019700 - b _08019946 -_08019700: - ldr r0, _08019740 @ =gProtectStructs - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r1, _08019744 @ =gBattleScripting - ldrb r0, [r3] - strb r0, [r1, 0x17] - ldrb r0, [r3] - bl CancelMultiTurnMoves - ldr r1, _08019748 @ =gBattlescriptCurrInstr - ldr r0, _0801974C @ =BattleScript_MoveUsedIsDisabled - str r0, [r1] - ldr r2, _08019750 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r4, 0x1 - mov r9, r4 - b _08019946 - .align 2, 0 -_08019734: .4byte gDisableStructs -_08019738: .4byte gBattlerAttacker -_0801973C: .4byte gCurrentMove -_08019740: .4byte gProtectStructs -_08019744: .4byte gBattleScripting -_08019748: .4byte gBattlescriptCurrInstr -_0801974C: .4byte BattleScript_MoveUsedIsDisabled -_08019750: .4byte gHitMarker -_08019754: - ldr r0, _0801979C @ =gDisableStructs - ldr r4, _080197A0 @ =gBattlerAttacker - ldrb r3, [r4] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x13] - lsls r0, 28 - cmp r0, 0 - bne _0801976C - b _08019946 -_0801976C: - ldr r2, _080197A4 @ =gBattleMoves - ldr r0, _080197A8 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08019782 - b _08019946 -_08019782: - ldr r0, _080197AC @ =gProtectStructs - lsls r2, r3, 4 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r0, [r4] - bl CancelMultiTurnMoves - ldr r1, _080197B0 @ =gBattlescriptCurrInstr - ldr r0, _080197B4 @ =BattleScript_MoveUsedIsTaunted - b _08019934 - .align 2, 0 -_0801979C: .4byte gDisableStructs -_080197A0: .4byte gBattlerAttacker -_080197A4: .4byte gBattleMoves -_080197A8: .4byte gCurrentMove -_080197AC: .4byte gProtectStructs -_080197B0: .4byte gBattlescriptCurrInstr -_080197B4: .4byte BattleScript_MoveUsedIsTaunted -_080197B8: - ldr r4, _080197FC @ =gBattlerAttacker - ldrb r0, [r4] - ldr r1, _08019800 @ =gCurrentMove - ldrh r1, [r1] - bl GetImprisonedMovesCount - lsls r0, 24 - cmp r0, 0 - bne _080197CC - b _08019946 -_080197CC: - ldr r0, _08019804 @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r4] - bl CancelMultiTurnMoves - ldr r1, _08019808 @ =gBattlescriptCurrInstr - ldr r0, _0801980C @ =BattleScript_MoveUsedIsImprisoned - str r0, [r1] - ldr r2, _08019810 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] -_080197F4: - movs r0, 0x1 - mov r9, r0 - b _08019946 - .align 2, 0 -_080197FC: .4byte gBattlerAttacker -_08019800: .4byte gCurrentMove -_08019804: .4byte gProtectStructs -_08019808: .4byte gBattlescriptCurrInstr -_0801980C: .4byte BattleScript_MoveUsedIsImprisoned -_08019810: .4byte gHitMarker -_08019814: - ldr r7, _0801985C @ =gBattleMons - ldr r5, _08019860 @ =gBattlerAttacker - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - adds r4, r7, 0 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r3, 0x7 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _080198E6 - subs r0, r1, 0x1 - str r0, [r2] - ldrb r0, [r5] - muls r0, r6 - adds r0, r4 - ldr r0, [r0] - ands r0, r3 - cmp r0, 0 - beq _080198D4 - bl Random - movs r1, 0x1 - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _08019868 - ldr r1, _08019864 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - bl BattleScriptPushCursor - b _080198B2 - .align 2, 0 -_0801985C: .4byte gBattleMons -_08019860: .4byte gBattlerAttacker -_08019864: .4byte gBattleCommunication -_08019868: - ldr r0, _080198B8 @ =gBattleCommunication - movs r4, 0x1 - strb r1, [r0, 0x5] - ldr r1, _080198BC @ =gBattlerTarget - ldrb r0, [r5] - strb r0, [r1] - ldrb r0, [r5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r7 - movs r0, 0x28 - str r0, [sp] - str r2, [sp, 0x4] - ldrb r0, [r5] - str r0, [sp, 0x8] - ldrb r0, [r5] - str r0, [sp, 0xC] - adds r0, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl CalculateBaseDamage - ldr r1, _080198C0 @ =gBattleMoveDamage - str r0, [r1] - ldr r0, _080198C4 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - orrs r0, r4 - strb r0, [r1, 0x1] - ldr r2, _080198C8 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] -_080198B2: - ldr r1, _080198CC @ =gBattlescriptCurrInstr - ldr r0, _080198D0 @ =BattleScript_MoveUsedIsConfused - b _080198DC - .align 2, 0 -_080198B8: .4byte gBattleCommunication -_080198BC: .4byte gBattlerTarget -_080198C0: .4byte gBattleMoveDamage -_080198C4: .4byte gProtectStructs -_080198C8: .4byte gHitMarker -_080198CC: .4byte gBattlescriptCurrInstr -_080198D0: .4byte BattleScript_MoveUsedIsConfused -_080198D4: - bl BattleScriptPushCursor - ldr r1, _080198EC @ =gBattlescriptCurrInstr - ldr r0, _080198F0 @ =BattleScript_MoveUsedIsConfusedNoMore -_080198DC: - str r0, [r1] - movs r1, 0x1 - mov r9, r1 - ldr r2, _080198F4 @ =gBattleStruct - mov r8, r2 -_080198E6: - mov r4, r8 - ldr r1, [r4] - b _08019B90 - .align 2, 0 -_080198EC: .4byte gBattlescriptCurrInstr -_080198F0: .4byte BattleScript_MoveUsedIsConfusedNoMore -_080198F4: .4byte gBattleStruct -_080198F8: - ldr r1, _08019958 @ =gBattleMons - ldr r4, _0801995C @ =gBattlerAttacker - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08019946 - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - bne _08019946 - ldr r0, _08019960 @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08019964 @ =gBattlescriptCurrInstr - ldr r0, _08019968 @ =BattleScript_MoveUsedIsParalyzed -_08019934: - str r0, [r1] - ldr r2, _0801996C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - movs r7, 0x1 - mov r9, r7 -_08019946: - ldr r2, _08019970 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xB7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r8, r2 - b _08019B98 - .align 2, 0 -_08019958: .4byte gBattleMons -_0801995C: .4byte gBattlerAttacker -_08019960: .4byte gProtectStructs -_08019964: .4byte gBattlescriptCurrInstr -_08019968: .4byte BattleScript_MoveUsedIsParalyzed -_0801996C: .4byte gHitMarker -_08019970: .4byte gBattleStruct -_08019974: - ldr r0, _0801999C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0xA0 - lsls r0, 8 - ands r1, r0 - movs r0, 0x80 - lsls r0, 8 - cmp r1, r0 - beq _08019988 - b _08019B8C -_08019988: - ldr r0, _080199A0 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080199AC - ldr r1, _080199A4 @ =gBattlescriptCurrInstr - ldr r0, _080199A8 @ =gUnknown_81D9180 - b _080199B0 - .align 2, 0 -_0801999C: .4byte gBattleTypeFlags -_080199A0: .4byte gBattlerAttacker -_080199A4: .4byte gBattlescriptCurrInstr -_080199A8: .4byte gUnknown_81D9180 -_080199AC: - ldr r1, _080199BC @ =gBattlescriptCurrInstr - ldr r0, _080199C0 @ =gUnknown_81D9192 -_080199B0: - str r0, [r1] - ldr r1, _080199C4 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _08019B86 - .align 2, 0 -_080199BC: .4byte gBattlescriptCurrInstr -_080199C0: .4byte gUnknown_81D9192 -_080199C4: .4byte gBattleCommunication -_080199C8: - ldr r1, _08019A00 @ =gBattleMons - ldr r4, _08019A04 @ =gBattlerAttacker - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0xF0 - lsls r0, 12 - ands r1, r0 - cmp r1, 0 - beq _08019A42 - lsrs r0, r1, 16 - bl CountTrailingZeroBits - ldr r1, _08019A08 @ =gBattleScripting - strb r0, [r1, 0x17] - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08019A0C - bl BattleScriptPushCursor - b _08019A34 - .align 2, 0 -_08019A00: .4byte gBattleMons -_08019A04: .4byte gBattlerAttacker -_08019A08: .4byte gBattleScripting -_08019A0C: - ldr r0, _08019A48 @ =BattleScript_MoveUsedIsInLoveCantAttack - bl BattleScriptPush - ldr r2, _08019A4C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r2] - ldr r0, _08019A50 @ =gProtectStructs - ldrb r2, [r4] - lsls r2, 4 - adds r2, r0 - ldrb r0, [r2, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r0, [r4] - bl CancelMultiTurnMoves -_08019A34: - ldr r1, _08019A54 @ =gBattlescriptCurrInstr - ldr r0, _08019A58 @ =BattleScript_MoveUsedIsInLove - str r0, [r1] - movs r4, 0x1 - mov r9, r4 - ldr r7, _08019A5C @ =gBattleStruct - mov r8, r7 -_08019A42: - mov r0, r8 - ldr r1, [r0] - b _08019B90 - .align 2, 0 -_08019A48: .4byte BattleScript_MoveUsedIsInLoveCantAttack -_08019A4C: .4byte gHitMarker -_08019A50: .4byte gProtectStructs -_08019A54: .4byte gBattlescriptCurrInstr -_08019A58: .4byte BattleScript_MoveUsedIsInLove -_08019A5C: .4byte gBattleStruct -_08019A60: - ldr r1, _08019A98 @ =gBattleMons - ldr r6, _08019A9C @ =gBattlerAttacker - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r1, 0x50 - adds r3, r0, r1 - ldr r2, [r3] - movs r4, 0xC0 - lsls r4, 2 - adds r0, r2, 0 - ands r0, r4 - cmp r0, 0 - beq _08019B32 - ldr r7, _08019AA0 @ =0xffffff00 - adds r0, r2, r7 - str r0, [r3] - ldrb r2, [r6] - adds r0, r2, 0 - muls r0, r5 - adds r0, r1 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08019AAC - ldr r1, _08019AA4 @ =gBattlescriptCurrInstr - ldr r0, _08019AA8 @ =BattleScript_BideStoringEnergy - b _08019B2C - .align 2, 0 -_08019A98: .4byte gBattleMons -_08019A9C: .4byte gBattlerAttacker -_08019AA0: .4byte 0xffffff00 -_08019AA4: .4byte gBattlescriptCurrInstr -_08019AA8: .4byte BattleScript_BideStoringEnergy -_08019AAC: - ldr r3, _08019B04 @ =gTakenDmg - lsls r0, r2, 2 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0 - beq _08019B28 - ldr r1, _08019B08 @ =gCurrentMove - movs r0, 0x75 - strh r0, [r1] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - lsls r0, 1 - mov r1, r10 - str r0, [r1] - ldr r4, _08019B0C @ =gBattlerTarget - ldr r1, _08019B10 @ =gTakenDmgByBattler - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, _08019B14 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08019B18 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08019AF6 - movs r0, 0x75 - movs r1, 0x1 - bl GetMoveTarget - strb r0, [r4] -_08019AF6: - ldr r1, _08019B1C @ =gBattlescriptCurrInstr - ldr r0, _08019B20 @ =BattleScript_BideAttack - str r0, [r1] - ldr r2, _08019B24 @ =gBattleStruct - mov r8, r2 - b _08019B2E - .align 2, 0 -_08019B04: .4byte gTakenDmg -_08019B08: .4byte gCurrentMove -_08019B0C: .4byte gBattlerTarget -_08019B10: .4byte gTakenDmgByBattler -_08019B14: .4byte gAbsentBattlerFlags -_08019B18: .4byte gBitTable -_08019B1C: .4byte gBattlescriptCurrInstr -_08019B20: .4byte BattleScript_BideAttack -_08019B24: .4byte gBattleStruct -_08019B28: - ldr r1, _08019B38 @ =gBattlescriptCurrInstr - ldr r0, _08019B3C @ =BattleScript_BideNoEnergyToAttack -_08019B2C: - str r0, [r1] -_08019B2E: - movs r4, 0x1 - mov r9, r4 -_08019B32: - mov r7, r8 - ldr r1, [r7] - b _08019B90 - .align 2, 0 -_08019B38: .4byte gBattlescriptCurrInstr -_08019B3C: .4byte BattleScript_BideNoEnergyToAttack -_08019B40: - ldr r1, _08019BE8 @ =gBattleMons - ldr r0, _08019BEC @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r4, r0, r1 - ldr r3, [r4] - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08019B8C - ldr r2, _08019BF0 @ =gBattleMoves - ldr r0, _08019BF4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7D - bne _08019B84 - movs r0, 0x21 - negs r0, r0 - ands r3, r0 - str r3, [r4] - bl BattleScriptPushCursor - ldr r1, _08019BF8 @ =gBattlescriptCurrInstr - ldr r0, _08019BFC @ =BattleScript_MoveUsedUnfroze - str r0, [r1] - ldr r1, _08019C00 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_08019B84: - movs r0, 0x2 -_08019B86: - mov r9, r0 - ldr r1, _08019C04 @ =gBattleStruct - mov r8, r1 -_08019B8C: - mov r2, r8 - ldr r1, [r2] -_08019B90: - adds r1, 0xB7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08019B98: - mov r4, r8 - ldr r0, [r4] - adds r0, 0xB7 - ldrb r0, [r0] - cmp r0, 0xF - beq _08019BA8 - bl _080192F8 -_08019BA8: - mov r7, r9 - cmp r7, 0x2 - bne _08019BD4 - ldr r4, _08019C08 @ =gActiveBattler - ldr r0, _08019BEC @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - ldr r1, _08019C0C @ =gUnknown_2023C30 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08019BD4: - mov r0, r9 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08019BE8: .4byte gBattleMons -_08019BEC: .4byte gBattlerAttacker -_08019BF0: .4byte gBattleMoves -_08019BF4: .4byte gCurrentMove -_08019BF8: .4byte gBattlescriptCurrInstr -_08019BFC: .4byte BattleScript_MoveUsedUnfroze -_08019C00: .4byte gBattleCommunication -_08019C04: .4byte gBattleStruct -_08019C08: .4byte gActiveBattler -_08019C0C: .4byte gUnknown_2023C30 - thumb_func_end AtkCanceller_UnableToUseMove - - thumb_func_start HasNoMonsToSwitch -HasNoMonsToSwitch: @ 8019C10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - adds r3, r4, 0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - ldr r0, _08019C3C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08019C40 - movs r0, 0 - b _08019D90 - .align 2, 0 -_08019C3C: .4byte gBattleTypeFlags -_08019C40: - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - beq _08019CCC - adds r0, r4, 0 - bl GetBankMultiplayerId - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - ldr r1, _08019CC4 @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _08019C66 - ldr r0, _08019CC8 @ =gPlayerParty - mov r8, r0 -_08019C66: - adds r0, r7, 0 - bl GetLinkTrainerFlankId - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 1 - adds r5, r0, r6 - adds r0, r5, 0x3 - cmp r5, r0 - bge _08019CB2 - adds r7, r0, 0 -_08019C7C: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08019CAC - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08019CAC - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08019CB2 -_08019CAC: - adds r5, 0x1 - cmp r5, r7 - blt _08019C7C -_08019CB2: - movs r1, 0 - lsls r0, r6, 1 - adds r0, r6 - adds r0, 0x3 - cmp r5, r0 - bne _08019CC0 - movs r1, 0x1 -_08019CC0: - adds r0, r1, 0 - b _08019D90 - .align 2, 0 -_08019CC4: .4byte gEnemyParty -_08019CC8: .4byte gPlayerParty -_08019CCC: - adds r0, r3, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08019CF8 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08019CF4 @ =gEnemyParty - mov r8, r0 - b _08019D10 - .align 2, 0 -_08019CF4: .4byte gEnemyParty -_08019CF8: - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08019DA0 @ =gPlayerParty - mov r8, r1 -_08019D10: - mov r0, r10 - cmp r0, 0x6 - bne _08019D20 - ldr r1, _08019DA4 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrb r0, [r0] - mov r10, r0 -_08019D20: - mov r1, r9 - cmp r1, 0x6 - bne _08019D30 - ldr r1, _08019DA4 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrb r0, [r0] - mov r9, r0 -_08019D30: - movs r5, 0 -_08019D32: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08019D82 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08019D82 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08019D82 - cmp r5, r10 - beq _08019D82 - cmp r5, r9 - beq _08019D82 - ldr r0, _08019DA8 @ =gBattleStruct - ldr r1, [r0] - adds r0, r7, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _08019D82 - adds r0, r6, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - bne _08019D88 -_08019D82: - adds r5, 0x1 - cmp r5, 0x5 - ble _08019D32 -_08019D88: - movs r0, 0 - cmp r5, 0x6 - bne _08019D90 - movs r0, 0x1 -_08019D90: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08019DA0: .4byte gPlayerParty -_08019DA4: .4byte gBattlerPartyIndexes -_08019DA8: .4byte gBattleStruct - thumb_func_end HasNoMonsToSwitch - - thumb_func_start CastformDataTypeChange -CastformDataTypeChange: @ 8019DAC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r1, _08019E1C @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r4, r0, r1 - ldrh r1, [r4] - ldr r0, _08019E20 @ =0x00000181 - cmp r1, r0 - bne _08019E50 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3B - bne _08019E50 - ldrh r0, [r4, 0x28] - cmp r0, 0 - beq _08019E50 - str r5, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08019DFE - str r5, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08019E24 -_08019DFE: - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0 - beq _08019E24 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0 - beq _08019E24 - strb r5, [r2] - strb r5, [r1] - movs r0, 0x1 - b _08019F08 - .align 2, 0 -_08019E1C: .4byte gBattleMons -_08019E20: .4byte 0x00000181 -_08019E24: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08019E50 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08019E54 -_08019E50: - movs r0, 0 - b _08019F08 -_08019E54: - ldr r1, _08019F10 @ =gBattleWeather - ldrh r0, [r1] - movs r2, 0xE7 - ands r2, r0 - adds r4, r1, 0 - cmp r2, 0 - bne _08019E82 - ldr r1, _08019F14 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r3, r1, 0 - adds r3, 0x21 - ldrb r0, [r3] - cmp r0, 0 - beq _08019E82 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0 - beq _08019E82 - strb r2, [r3] - strb r2, [r1] - movs r5, 0x1 -_08019E82: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08019EAE - ldr r1, _08019F14 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xA - beq _08019EAE - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xA - beq _08019EAE - movs r0, 0xA - strb r0, [r2] - strb r0, [r1] - movs r5, 0x2 -_08019EAE: - ldrh r1, [r4] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08019EDA - ldr r1, _08019F14 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xB - beq _08019EDA - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xB - beq _08019EDA - movs r0, 0xB - strb r0, [r2] - strb r0, [r1] - movs r5, 0x3 -_08019EDA: - ldrh r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08019F06 - ldr r1, _08019F14 @ =gBattleMons - movs r0, 0x58 - muls r0, r6 - adds r1, r0, r1 - adds r2, r1, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0xF - beq _08019F06 - adds r1, 0x22 - ldrb r0, [r1] - cmp r0, 0xF - beq _08019F06 - movs r0, 0xF - strb r0, [r2] - strb r0, [r1] - movs r5, 0x4 -_08019F06: - adds r0, r5, 0 -_08019F08: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08019F10: .4byte gBattleWeather -_08019F14: .4byte gBattleMons - thumb_func_end CastformDataTypeChange - - thumb_func_start AbilityBattleEffects -AbilityBattleEffects: @ 8019F18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - ldr r4, [sp, 0x48] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0 - mov r9, r0 - ldr r5, _08019F74 @ =gBattlerAttacker - ldr r1, _08019F78 @ =gBattlersCount - ldrb r0, [r5] - ldrb r1, [r1] - cmp r0, r1 - bcc _08019F54 - mov r1, r10 - strb r1, [r5] -_08019F54: - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08019F84 - ldr r1, _08019F7C @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08019F80 @ =gPlayerParty - b _08019F94 - .align 2, 0 -_08019F74: .4byte gBattlerAttacker -_08019F78: .4byte gBattlersCount -_08019F7C: .4byte gBattlerPartyIndexes -_08019F80: .4byte gPlayerParty -_08019F84: - ldr r1, _08019FC4 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08019FC8 @ =gEnemyParty -_08019F94: - adds r6, r1, r0 - ldr r5, _08019FCC @ =gBattlerTarget - ldr r1, _08019FD0 @ =gBattlersCount - ldrb r0, [r5] - ldrb r1, [r1] - cmp r0, r1 - bcc _08019FA6 - mov r2, r10 - strb r2, [r5] -_08019FA6: - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08019FD8 - ldr r1, _08019FC4 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08019FD4 @ =gPlayerParty - b _08019FE8 - .align 2, 0 -_08019FC4: .4byte gBattlerPartyIndexes -_08019FC8: .4byte gEnemyParty -_08019FCC: .4byte gBattlerTarget -_08019FD0: .4byte gBattlersCount -_08019FD4: .4byte gPlayerParty -_08019FD8: - ldr r1, _0801A038 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801A03C @ =gEnemyParty -_08019FE8: - adds r5, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x14] - ldr r0, _0801A040 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0801A02A - bl _0801BBC6 -_0801A02A: - mov r3, r8 - cmp r3, 0 - beq _0801A048 - ldr r0, _0801A044 @ =gLastUsedAbility - strb r3, [r0] - mov r8, r0 - b _0801A05E - .align 2, 0 -_0801A038: .4byte gBattlerPartyIndexes -_0801A03C: .4byte gEnemyParty -_0801A040: .4byte gBattleTypeFlags -_0801A044: .4byte gLastUsedAbility -_0801A048: - ldr r2, _0801A078 @ =gLastUsedAbility - ldr r1, _0801A07C @ =gBattleMons - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - mov r8, r2 -_0801A05E: - cmp r4, 0 - bne _0801A066 - ldr r0, _0801A080 @ =gCurrentMove - ldrh r4, [r0] -_0801A066: - ldr r1, _0801A084 @ =gBattleStruct - ldr r0, [r1] - ldrb r0, [r0, 0x13] - adds r6, r1, 0 - cmp r0, 0 - beq _0801A088 - movs r5, 0x3F - ands r5, r0 - b _0801A094 - .align 2, 0 -_0801A078: .4byte gLastUsedAbility -_0801A07C: .4byte gBattleMons -_0801A080: .4byte gCurrentMove -_0801A084: .4byte gBattleStruct -_0801A088: - ldr r1, _0801A0D0 @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x2] -_0801A094: - ldr r0, _0801A0D4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 8 - ands r0, r1 - movs r1, 0x80 - lsls r1, 8 - cmp r0, r1 - bne _0801A0BA - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x16 - bne _0801A0B2 - bl _0801BBC6 -_0801A0B2: - cmp r0, 0x24 - bne _0801A0BA - bl _0801BBC6 -_0801A0BA: - ldr r2, [sp, 0x4] - cmp r2, 0x13 - bls _0801A0C4 - bl _0801BBAA -_0801A0C4: - lsls r0, r2, 2 - ldr r1, _0801A0D8 @ =_0801A0DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801A0D0: .4byte gBattleMoves -_0801A0D4: .4byte gBattleTypeFlags -_0801A0D8: .4byte _0801A0DC - .align 2, 0 -_0801A0DC: - .4byte _0801A12C - .4byte _0801A3E0 - .4byte _0801A600 - .4byte _0801A698 - .4byte _0801A8B8 - .4byte _0801B010 - .4byte _0801B374 - .4byte _0801B3C8 - .4byte _0801B450 - .4byte _0801B4D4 - .4byte _0801B6FC - .4byte _0801B518 - .4byte _0801B740 - .4byte _0801B79C - .4byte _0801B7F8 - .4byte _0801B90C - .4byte _0801B9A8 - .4byte _0801BA04 - .4byte _0801BB78 - .4byte _0801B8B4 -_0801A12C: - ldr r2, _0801A160 @ =gBattlerAttacker - ldr r0, _0801A164 @ =gBattlersCount - ldrb r1, [r2] - adds r3, r0, 0 - ldrb r4, [r3] - cmp r1, r4 - bcc _0801A13E - mov r0, r10 - strb r0, [r2] -_0801A13E: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x2D - bne _0801A148 - b _0801A2AC -_0801A148: - cmp r0, 0x2D - bgt _0801A178 - cmp r0, 0xD - bne _0801A152 - b _0801A3A8 -_0801A152: - cmp r0, 0xD - bgt _0801A168 - cmp r0, 0x2 - bne _0801A15C - b _0801A27C -_0801A15C: - bl _0801BBAA - .align 2, 0 -_0801A160: .4byte gBattlerAttacker -_0801A164: .4byte gBattlersCount -_0801A168: - cmp r0, 0x16 - bne _0801A16E - b _0801A30C -_0801A16E: - cmp r0, 0x24 - bne _0801A174 - b _0801A36C -_0801A174: - bl _0801BBAA -_0801A178: - cmp r0, 0x46 - bne _0801A17E - b _0801A2DC -_0801A17E: - cmp r0, 0x46 - bgt _0801A18C - cmp r0, 0x3B - bne _0801A188 - b _0801A340 -_0801A188: - bl _0801BBAA -_0801A18C: - cmp r0, 0x4D - bne _0801A192 - b _0801A3A8 -_0801A192: - cmp r0, 0xFF - beq _0801A19A - bl _0801BBAA -_0801A19A: - bl weather_get_current - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x3 - cmp r0, 0xA - bhi _0801A250 - lsls r0, 2 - ldr r1, _0801A1B4 @ =_0801A1B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801A1B4: .4byte _0801A1B8 - .align 2, 0 -_0801A1B8: - .4byte _0801A1E4 - .4byte _0801A250 - .4byte _0801A1E4 - .4byte _0801A250 - .4byte _0801A250 - .4byte _0801A208 - .4byte _0801A250 - .4byte _0801A250 - .4byte _0801A250 - .4byte _0801A22C - .4byte _0801A1E4 -_0801A1E4: - ldr r2, _0801A200 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801A250 - movs r0, 0x5 - strh r0, [r2] - ldr r1, _0801A204 @ =gBattleScripting - movs r0, 0xA - strb r0, [r1, 0x10] - mov r2, r10 - strb r2, [r1, 0x17] - b _0801A246 - .align 2, 0 -_0801A200: .4byte gBattleWeather -_0801A204: .4byte gBattleScripting -_0801A208: - ldr r3, _0801A224 @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x18 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0801A250 - strh r2, [r3] - ldr r1, _0801A228 @ =gBattleScripting - movs r0, 0xC - strb r0, [r1, 0x10] - mov r3, r10 - strb r3, [r1, 0x17] - b _0801A246 - .align 2, 0 -_0801A224: .4byte gBattleWeather -_0801A228: .4byte gBattleScripting -_0801A22C: - ldr r3, _0801A26C @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x60 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0801A250 - strh r2, [r3] - ldr r1, _0801A270 @ =gBattleScripting - movs r0, 0xB - strb r0, [r1, 0x10] - mov r4, r10 - strb r4, [r1, 0x17] -_0801A246: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801A250: - mov r0, r9 - cmp r0, 0 - bne _0801A25A - bl _0801BBC6 -_0801A25A: - bl weather_get_current - ldr r1, _0801A274 @ =gBattleCommunication - strb r0, [r1, 0x5] - ldr r0, _0801A278 @ =BattleScript_OverworldWeatherStarts - bl BattleScriptPushCursorAndCallback - bl _0801BBAA - .align 2, 0 -_0801A26C: .4byte gBattleWeather -_0801A270: .4byte gBattleScripting -_0801A274: .4byte gBattleCommunication -_0801A278: .4byte BattleScript_OverworldWeatherStarts -_0801A27C: - ldr r2, _0801A2A0 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801A28C - bl _0801BBAA -_0801A28C: - movs r0, 0x5 - strh r0, [r2] - ldr r0, _0801A2A4 @ =BattleScript_DrizzleActivates - bl BattleScriptPushCursorAndCallback - ldr r0, _0801A2A8 @ =gBattleScripting - mov r1, r10 - strb r1, [r0, 0x17] - bl _0801BB5A - .align 2, 0 -_0801A2A0: .4byte gBattleWeather -_0801A2A4: .4byte BattleScript_DrizzleActivates -_0801A2A8: .4byte gBattleScripting -_0801A2AC: - ldr r2, _0801A2D0 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801A2BC - bl _0801BBAA -_0801A2BC: - movs r0, 0x18 - strh r0, [r2] - ldr r0, _0801A2D4 @ =BattleScript_SandstreamActivates - bl BattleScriptPushCursorAndCallback - ldr r0, _0801A2D8 @ =gBattleScripting - mov r2, r10 - strb r2, [r0, 0x17] - bl _0801BB5A - .align 2, 0 -_0801A2D0: .4byte gBattleWeather -_0801A2D4: .4byte BattleScript_SandstreamActivates -_0801A2D8: .4byte gBattleScripting -_0801A2DC: - ldr r2, _0801A300 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801A2EC - bl _0801BBAA -_0801A2EC: - movs r0, 0x60 - strh r0, [r2] - ldr r0, _0801A304 @ =BattleScript_DroughtActivates - bl BattleScriptPushCursorAndCallback - ldr r0, _0801A308 @ =gBattleScripting - mov r3, r10 - strb r3, [r0, 0x17] - bl _0801BB5A - .align 2, 0 -_0801A300: .4byte gBattleWeather -_0801A304: .4byte BattleScript_DroughtActivates -_0801A308: .4byte gBattleScripting -_0801A30C: - ldr r0, _0801A338 @ =gSpecialStatuses - mov r4, r10 - lsls r2, r4, 2 - adds r1, r2, r4 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3] - lsls r0, 28 - cmp r0, 0 - bge _0801A324 - bl _0801BBAA -_0801A324: - ldr r1, _0801A33C @ =gStatuses3 - adds r1, r2, r1 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 12 - orrs r0, r2 - str r0, [r1] - ldrb r0, [r3] - movs r1, 0x8 - b _0801A396 - .align 2, 0 -_0801A338: .4byte gSpecialStatuses -_0801A33C: .4byte gStatuses3 -_0801A340: - mov r0, r10 - bl CastformDataTypeChange - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - bne _0801A354 - bl _0801BBC6 -_0801A354: - ldr r0, _0801A364 @ =BattleScript_CastformChange - bl BattleScriptPushCursorAndCallback - ldr r0, _0801A368 @ =gBattleScripting - mov r1, r10 - strb r1, [r0, 0x17] - bl _0801BA6A - .align 2, 0 -_0801A364: .4byte BattleScript_CastformChange -_0801A368: .4byte gBattleScripting -_0801A36C: - ldr r0, _0801A3A0 @ =gSpecialStatuses - mov r3, r10 - lsls r2, r3, 2 - adds r1, r2, r3 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3] - lsls r0, 27 - cmp r0, 0 - bge _0801A384 - bl _0801BBAA -_0801A384: - ldr r1, _0801A3A4 @ =gStatuses3 - adds r1, r2, r1 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 13 - orrs r0, r2 - str r0, [r1] - ldrb r0, [r3] - movs r1, 0x10 -_0801A396: - orrs r0, r1 - strb r0, [r3] - bl _0801BBAA - .align 2, 0 -_0801A3A0: .4byte gSpecialStatuses -_0801A3A4: .4byte gStatuses3 -_0801A3A8: - movs r4, 0 - ldrb r3, [r3] - cmp r4, r3 - bcc _0801A3B4 - bl _0801BBAA -_0801A3B4: - adds r0, r4, 0 - bl CastformDataTypeChange - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - beq _0801A3C8 - bl _0801BA60 -_0801A3C8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0801A3DC @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _0801A3B4 - bl _0801BBAA - .align 2, 0 -_0801A3DC: .4byte gBattlersCount -_0801A3E0: - ldr r7, _0801A410 @ =gBattleMons - movs r0, 0x58 - mov r6, r10 - muls r6, r0 - adds r4, r6, r7 - ldrh r0, [r4, 0x28] - cmp r0, 0 - bne _0801A3F4 - bl _0801BBAA -_0801A3F4: - ldr r0, _0801A414 @ =gBattlerAttacker - mov r1, r10 - strb r1, [r0] - mov r2, r8 - ldrb r5, [r2] - cmp r5, 0x2C - beq _0801A426 - cmp r5, 0x2C - bgt _0801A418 - cmp r5, 0x3 - bne _0801A40C - b _0801A58C -_0801A40C: - bl _0801BBAA - .align 2, 0 -_0801A410: .4byte gBattleMons -_0801A414: .4byte gBattlerAttacker -_0801A418: - cmp r5, 0x36 - bne _0801A41E - b _0801A5D8 -_0801A41E: - cmp r5, 0x3D - beq _0801A4A8 - bl _0801BBAA -_0801A426: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0801A442 - bl _0801BBAA -_0801A442: - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801A45A - bl _0801BBAA -_0801A45A: - ldr r0, _0801A49C @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801A46A - bl _0801BBAA -_0801A46A: - ldrh r0, [r4, 0x2C] - ldrh r3, [r4, 0x28] - cmp r0, r3 - bhi _0801A476 - bl _0801BBAA -_0801A476: - mov r0, r8 - strb r5, [r0] - ldr r0, _0801A4A0 @ =BattleScript_RainDishActivates - bl BattleScriptPushCursorAndCallback - ldr r1, _0801A4A4 @ =gBattleMoveDamage - ldrh r0, [r4, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _0801A490 - movs r0, 0x1 - str r0, [r1] -_0801A490: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - bl _0801BB5A - .align 2, 0 -_0801A49C: .4byte gBattleWeather -_0801A4A0: .4byte BattleScript_RainDishActivates -_0801A4A4: .4byte gBattleMoveDamage -_0801A4A8: - adds r0, r7, 0 - adds r0, 0x4C - adds r5, r6, r0 - ldrb r0, [r5] - cmp r0, 0 - bne _0801A4B8 - bl _0801BBAA -_0801A4B8: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0801A4D2 - bl _0801BBAA -_0801A4D2: - ldr r0, [r5] - movs r1, 0x88 - ands r0, r1 - cmp r0, 0 - beq _0801A4E4 - ldr r0, _0801A564 @ =gBattleTextBuff1 - ldr r1, _0801A568 @ =gUnknown_8250094 - bl StringCopy -_0801A4E4: - ldr r0, [r5] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801A4F6 - ldr r0, _0801A564 @ =gBattleTextBuff1 - ldr r1, _0801A56C @ =gUnknown_825009C - bl StringCopy -_0801A4F6: - ldr r0, [r5] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801A508 - ldr r0, _0801A564 @ =gBattleTextBuff1 - ldr r1, _0801A570 @ =gUnknown_82500A4 - bl StringCopy -_0801A508: - ldr r0, [r5] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801A51A - ldr r0, _0801A564 @ =gBattleTextBuff1 - ldr r1, _0801A574 @ =gUnknown_82500AC - bl StringCopy -_0801A51A: - ldr r0, [r5] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801A52C - ldr r0, _0801A564 @ =gBattleTextBuff1 - ldr r1, _0801A578 @ =gUnknown_82500B4 - bl StringCopy -_0801A52C: - str r4, [r5] - adds r1, r7, 0 - adds r1, 0x50 - adds r1, r6, r1 - ldr r0, [r1] - ldr r2, _0801A57C @ =0xf7ffffff - ands r0, r2 - str r0, [r1] - ldr r0, _0801A580 @ =gBattleScripting - ldr r4, _0801A584 @ =gActiveBattler - mov r1, r10 - strb r1, [r4] - strb r1, [r0, 0x17] - ldr r0, _0801A588 @ =BattleScript_ShedSkinActivates - bl BattleScriptPushCursorAndCallback - str r5, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - bl _0801BB5A - .align 2, 0 -_0801A564: .4byte gBattleTextBuff1 -_0801A568: .4byte gUnknown_8250094 -_0801A56C: .4byte gUnknown_825009C -_0801A570: .4byte gUnknown_82500A4 -_0801A574: .4byte gUnknown_82500AC -_0801A578: .4byte gUnknown_82500B4 -_0801A57C: .4byte 0xf7ffffff -_0801A580: .4byte gBattleScripting -_0801A584: .4byte gActiveBattler -_0801A588: .4byte BattleScript_ShedSkinActivates -_0801A58C: - ldrb r2, [r4, 0x1B] - movs r0, 0x1B - ldrsb r0, [r4, r0] - cmp r0, 0xB - ble _0801A59A - bl _0801BBAA -_0801A59A: - ldr r0, _0801A5CC @ =gDisableStructs - mov r3, r10 - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x16] - cmp r0, 0x2 - bne _0801A5B0 - bl _0801BBAA -_0801A5B0: - adds r0, r2, 0x1 - movs r1, 0 - strb r0, [r4, 0x1B] - ldr r4, _0801A5D0 @ =gBattleScripting - movs r0, 0x11 - strb r0, [r4, 0x10] - strb r1, [r4, 0x11] - ldr r0, _0801A5D4 @ =BattleScript_SpeedBoostActivates - bl BattleScriptPushCursorAndCallback - mov r0, r10 - strb r0, [r4, 0x17] - bl _0801BB5A - .align 2, 0 -_0801A5CC: .4byte gDisableStructs -_0801A5D0: .4byte gBattleScripting -_0801A5D4: .4byte BattleScript_SpeedBoostActivates -_0801A5D8: - ldr r2, _0801A5FC @ =gDisableStructs - ldrb r0, [r0] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r3, [r1, 0x18] - lsls r0, r3, 31 - lsrs r0, 31 - movs r2, 0x1 - eors r2, r0 - movs r0, 0x2 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x18] - bl _0801BBAA - .align 2, 0 -_0801A5FC: .4byte gDisableStructs -_0801A600: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x2B - beq _0801A60C - bl _0801BBAA -_0801A60C: - movs r5, 0 - ldr r0, _0801A67C @ =sSoundMovesTable - ldrh r2, [r0] - ldr r3, _0801A680 @ =0x0000ffff - adds r1, r0, 0 - cmp r2, r3 - bne _0801A61E - bl _0801BBAA -_0801A61E: - cmp r2, r4 - beq _0801A636 - adds r2, r1, 0 -_0801A624: - adds r2, 0x2 - adds r5, 0x1 - ldrh r0, [r2] - cmp r0, r3 - bne _0801A632 - bl _0801BBAA -_0801A632: - cmp r0, r4 - bne _0801A624 -_0801A636: - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0801A680 @ =0x0000ffff - cmp r1, r0 - bne _0801A646 - bl _0801BBAA -_0801A646: - ldr r1, _0801A684 @ =gBattleMons - ldr r0, _0801A688 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _0801A66C - ldr r0, _0801A68C @ =gHitMarker - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 4 - orrs r1, r2 - str r1, [r0] -_0801A66C: - ldr r1, _0801A690 @ =gBattlescriptCurrInstr - ldr r0, _0801A694 @ =BattleScript_SoundproofProtected - str r0, [r1] - movs r2, 0x1 - mov r9, r2 - bl _0801BBB0 - .align 2, 0 -_0801A67C: .4byte sSoundMovesTable -_0801A680: .4byte 0x0000ffff -_0801A684: .4byte gBattleMons -_0801A688: .4byte gBattlerAttacker -_0801A68C: .4byte gHitMarker -_0801A690: .4byte gBattlescriptCurrInstr -_0801A694: .4byte BattleScript_SoundproofProtected -_0801A698: - cmp r4, 0 - bne _0801A6A0 - bl _0801BBAA -_0801A6A0: - mov r3, r8 - ldrb r0, [r3] - cmp r0, 0xB - beq _0801A710 - cmp r0, 0xB - bgt _0801A6B2 - cmp r0, 0xA - beq _0801A6B8 - b _0801A832 -_0801A6B2: - cmp r0, 0x12 - beq _0801A768 - b _0801A832 -_0801A6B8: - cmp r5, 0xD - beq _0801A6BE - b _0801A832 -_0801A6BE: - ldr r0, _0801A6E8 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801A6D0 - b _0801A832 -_0801A6D0: - ldr r1, _0801A6EC @ =gProtectStructs - ldr r0, _0801A6F0 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _0801A6FC - ldr r1, _0801A6F4 @ =gBattlescriptCurrInstr - ldr r0, _0801A6F8 @ =BattleScript_MoveHPDrain - b _0801A700 - .align 2, 0 -_0801A6E8: .4byte gBattleMoves -_0801A6EC: .4byte gProtectStructs -_0801A6F0: .4byte gBattlerAttacker -_0801A6F4: .4byte gBattlescriptCurrInstr -_0801A6F8: .4byte BattleScript_MoveHPDrain -_0801A6FC: - ldr r1, _0801A708 @ =gBattlescriptCurrInstr - ldr r0, _0801A70C @ =BattleScript_MoveHPDrain_PPLoss -_0801A700: - str r0, [r1] - movs r4, 0x1 - mov r9, r4 - b _0801A832 - .align 2, 0 -_0801A708: .4byte gBattlescriptCurrInstr -_0801A70C: .4byte BattleScript_MoveHPDrain_PPLoss -_0801A710: - cmp r5, 0xB - beq _0801A716 - b _0801A832 -_0801A716: - ldr r0, _0801A740 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801A728 - b _0801A832 -_0801A728: - ldr r1, _0801A744 @ =gProtectStructs - ldr r0, _0801A748 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _0801A754 - ldr r1, _0801A74C @ =gBattlescriptCurrInstr - ldr r0, _0801A750 @ =BattleScript_MoveHPDrain - b _0801A758 - .align 2, 0 -_0801A740: .4byte gBattleMoves -_0801A744: .4byte gProtectStructs -_0801A748: .4byte gBattlerAttacker -_0801A74C: .4byte gBattlescriptCurrInstr -_0801A750: .4byte BattleScript_MoveHPDrain -_0801A754: - ldr r1, _0801A760 @ =gBattlescriptCurrInstr - ldr r0, _0801A764 @ =BattleScript_MoveHPDrain_PPLoss -_0801A758: - str r0, [r1] - movs r0, 0x1 - b _0801A830 - .align 2, 0 -_0801A760: .4byte gBattlescriptCurrInstr -_0801A764: .4byte BattleScript_MoveHPDrain_PPLoss -_0801A768: - cmp r5, 0xA - bne _0801A832 - ldr r1, _0801A7B8 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801A832 - ldr r2, _0801A7BC @ =gBattleResources - ldr r0, [r2] - ldr r0, [r0, 0x4] - mov r3, r10 - lsls r1, r3, 2 - adds r0, r1 - ldr r3, [r0] - movs r4, 0x1 - ands r3, r4 - adds r5, r1, 0 - cmp r3, 0 - bne _0801A7F8 - ldr r0, _0801A7C0 @ =gBattleCommunication - strb r3, [r0, 0x5] - ldr r1, _0801A7C4 @ =gProtectStructs - ldr r0, _0801A7C8 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _0801A7D4 - ldr r1, _0801A7CC @ =gBattlescriptCurrInstr - ldr r0, _0801A7D0 @ =BattleScript_FlashFireBoost - b _0801A7D8 - .align 2, 0 -_0801A7B8: .4byte gBattleMons -_0801A7BC: .4byte gBattleResources -_0801A7C0: .4byte gBattleCommunication -_0801A7C4: .4byte gProtectStructs -_0801A7C8: .4byte gBattlerAttacker -_0801A7CC: .4byte gBattlescriptCurrInstr -_0801A7D0: .4byte BattleScript_FlashFireBoost -_0801A7D4: - ldr r1, _0801A7F0 @ =gBattlescriptCurrInstr - ldr r0, _0801A7F4 @ =BattleScript_FlashFireBoost_PPLoss -_0801A7D8: - str r0, [r1] - ldr r0, [r2] - ldr r1, [r0, 0x4] - adds r1, r5 - ldr r0, [r1] - movs r2, 0x1 - orrs r0, r2 - str r0, [r1] - movs r4, 0x2 - mov r9, r4 - b _0801A832 - .align 2, 0 -_0801A7F0: .4byte gBattlescriptCurrInstr -_0801A7F4: .4byte BattleScript_FlashFireBoost_PPLoss -_0801A7F8: - ldr r0, _0801A814 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _0801A818 @ =gProtectStructs - ldr r0, _0801A81C @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _0801A828 - ldr r1, _0801A820 @ =gBattlescriptCurrInstr - ldr r0, _0801A824 @ =BattleScript_FlashFireBoost - b _0801A82C - .align 2, 0 -_0801A814: .4byte gBattleCommunication -_0801A818: .4byte gProtectStructs -_0801A81C: .4byte gBattlerAttacker -_0801A820: .4byte gBattlescriptCurrInstr -_0801A824: .4byte BattleScript_FlashFireBoost -_0801A828: - ldr r1, _0801A86C @ =gBattlescriptCurrInstr - ldr r0, _0801A870 @ =BattleScript_FlashFireBoost_PPLoss -_0801A82C: - str r0, [r1] - movs r0, 0x2 -_0801A830: - mov r9, r0 -_0801A832: - mov r1, r9 - cmp r1, 0x1 - beq _0801A83C - bl _0801BBAA -_0801A83C: - ldr r1, _0801A874 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r1, r0, r1 - ldrh r0, [r1, 0x2C] - ldrh r3, [r1, 0x28] - cmp r0, r3 - bne _0801A898 - ldr r1, _0801A878 @ =gProtectStructs - ldr r0, _0801A87C @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 28 - cmp r0, 0 - bge _0801A884 - ldr r1, _0801A86C @ =gBattlescriptCurrInstr - ldr r0, _0801A880 @ =BattleScript_MonMadeMoveUseless - str r0, [r1] - bl _0801BBAA - .align 2, 0 -_0801A86C: .4byte gBattlescriptCurrInstr -_0801A870: .4byte BattleScript_FlashFireBoost_PPLoss -_0801A874: .4byte gBattleMons -_0801A878: .4byte gProtectStructs -_0801A87C: .4byte gBattlerAttacker -_0801A880: .4byte BattleScript_MonMadeMoveUseless -_0801A884: - ldr r1, _0801A890 @ =gBattlescriptCurrInstr - ldr r0, _0801A894 @ =BattleScript_MonMadeMoveUseless_PPLoss - str r0, [r1] - bl _0801BBAA - .align 2, 0 -_0801A890: .4byte gBattlescriptCurrInstr -_0801A894: .4byte BattleScript_MonMadeMoveUseless_PPLoss -_0801A898: - ldr r2, _0801A8B4 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _0801A8A8 - mov r4, r9 - str r4, [r2] -_0801A8A8: - ldr r0, [r2] - negs r0, r0 - str r0, [r2] - bl _0801BBAA - .align 2, 0 -_0801A8B4: .4byte gBattleMoveDamage -_0801A8B8: - mov r1, r8 - ldrb r0, [r1] - subs r0, 0x9 - cmp r0, 0x2F - bls _0801A8C6 - bl _0801BBAA -_0801A8C6: - lsls r0, 2 - ldr r1, _0801A8D0 @ =_0801A8D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801A8D0: .4byte _0801A8D4 - .align 2, 0 -_0801A8D4: - .4byte _0801ACF0 - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801A994 - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801AA5C - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801AB1C - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801AC14 - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801ADCC - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801BBAA - .4byte _0801AEA8 -_0801A994: - ldr r0, _0801AA3C @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801A9A4 - bl _0801BBAA -_0801A9A4: - cmp r4, 0xA5 - bne _0801A9AC - bl _0801BBAA -_0801A9AC: - ldr r0, _0801AA40 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801A9C0 - bl _0801BBAA -_0801A9C0: - ldr r2, _0801AA44 @ =gSpecialStatuses - ldr r0, _0801AA48 @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801A9E8 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801A9E8 - bl _0801BBAA -_0801A9E8: - ldr r1, _0801AA4C @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r1, r0, r1 - adds r3, r1, 0 - adds r3, 0x21 - ldrb r0, [r3] - cmp r0, r5 - bne _0801AA02 - bl _0801BBAA -_0801AA02: - adds r2, r1, 0 - adds r2, 0x22 - ldrb r0, [r2] - cmp r0, r5 - bne _0801AA10 - bl _0801BBAA -_0801AA10: - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _0801AA1A - bl _0801BBAA -_0801AA1A: - strb r5, [r3] - strb r5, [r2] - ldr r1, _0801AA50 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - ldr r1, _0801AA54 @ =gBattlescriptCurrInstr - ldr r0, _0801AA58 @ =BattleScript_ColorChangeActivates - str r0, [r1] - bl _0801BB5A - .align 2, 0 -_0801AA3C: .4byte gMoveResultFlags -_0801AA40: .4byte gBattleMoves -_0801AA44: .4byte gSpecialStatuses -_0801AA48: .4byte gBattlerTarget -_0801AA4C: .4byte gBattleMons -_0801AA50: .4byte gBattleTextBuff1 -_0801AA54: .4byte gBattlescriptCurrInstr -_0801AA58: .4byte BattleScript_ColorChangeActivates -_0801AA5C: - ldr r0, _0801AAF4 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801AA6C - bl _0801BBAA -_0801AA6C: - ldr r1, _0801AAF8 @ =gBattleMons - ldr r0, _0801AAFC @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r3, r0, r1 - ldrh r0, [r3, 0x28] - cmp r0, 0 - bne _0801AA82 - bl _0801BBAA -_0801AA82: - ldr r0, _0801AB00 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AA94 - bl _0801BBAA -_0801AA94: - ldr r2, _0801AB04 @ =gSpecialStatuses - ldr r0, _0801AB08 @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AABC - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AABC - bl _0801BBAA -_0801AABC: - ldr r1, _0801AB0C @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0801AAD6 - bl _0801BBAA -_0801AAD6: - ldr r1, _0801AB10 @ =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _0801AAE4 - str r2, [r1] -_0801AAE4: - bl BattleScriptPushCursor - ldr r1, _0801AB14 @ =gBattlescriptCurrInstr - ldr r0, _0801AB18 @ =BattleScript_RoughSkinActivates - str r0, [r1] - bl _0801BB5A - .align 2, 0 -_0801AAF4: .4byte gMoveResultFlags -_0801AAF8: .4byte gBattleMons -_0801AAFC: .4byte gBattlerAttacker -_0801AB00: .4byte gProtectStructs -_0801AB04: .4byte gSpecialStatuses -_0801AB08: .4byte gBattlerTarget -_0801AB0C: .4byte gBattleMoves -_0801AB10: .4byte gBattleMoveDamage -_0801AB14: .4byte gBattlescriptCurrInstr -_0801AB18: .4byte BattleScript_RoughSkinActivates -_0801AB1C: - ldr r0, _0801ABE8 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801AB2C - bl _0801BBAA -_0801AB2C: - ldr r1, _0801ABEC @ =gBattleMons - ldr r0, _0801ABF0 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801AB42 - bl _0801BBAA -_0801AB42: - ldr r0, _0801ABF4 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AB54 - bl _0801BBAA -_0801AB54: - ldr r2, _0801ABF8 @ =gSpecialStatuses - ldr r0, _0801ABFC @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AB7C - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AB7C - bl _0801BBAA -_0801AB7C: - ldr r1, _0801AC00 @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801AB94 - bl _0801BBAA -_0801AB94: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0801ABAC - bl _0801BBAA -_0801ABAC: - ldr r5, _0801AC04 @ =gBattleCommunication - movs r4, 0x3 -_0801ABB0: - bl Random - ands r0, r4 - strb r0, [r5, 0x3] - cmp r0, 0 - beq _0801ABB0 - ldr r1, _0801AC04 @ =gBattleCommunication - ldrb r0, [r1, 0x3] - cmp r0, 0x3 - bne _0801ABC8 - adds r0, 0x2 - strb r0, [r1, 0x3] -_0801ABC8: - ldrb r0, [r1, 0x3] - adds r0, 0x40 - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - ldr r1, _0801AC08 @ =gBattlescriptCurrInstr - ldr r0, _0801AC0C @ =BattleScript_ApplySecondaryEffect - str r0, [r1] - ldr r2, _0801AC10 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _0801BB5A - .align 2, 0 -_0801ABE8: .4byte gMoveResultFlags -_0801ABEC: .4byte gBattleMons -_0801ABF0: .4byte gBattlerAttacker -_0801ABF4: .4byte gProtectStructs -_0801ABF8: .4byte gSpecialStatuses -_0801ABFC: .4byte gBattlerTarget -_0801AC00: .4byte gBattleMoves -_0801AC04: .4byte gBattleCommunication -_0801AC08: .4byte gBattlescriptCurrInstr -_0801AC0C: .4byte BattleScript_ApplySecondaryEffect -_0801AC10: .4byte gHitMarker -_0801AC14: - ldr r0, _0801ACC4 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801AC24 - bl _0801BBAA -_0801AC24: - ldr r1, _0801ACC8 @ =gBattleMons - ldr r0, _0801ACCC @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801AC3A - bl _0801BBAA -_0801AC3A: - ldr r0, _0801ACD0 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AC4C - bl _0801BBAA -_0801AC4C: - ldr r2, _0801ACD4 @ =gSpecialStatuses - ldr r0, _0801ACD8 @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AC74 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AC74 - bl _0801BBAA -_0801AC74: - ldr r1, _0801ACDC @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801AC8C - bl _0801BBAA -_0801AC8C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0801ACA4 - bl _0801BBAA -_0801ACA4: - ldr r1, _0801ACE0 @ =gBattleCommunication - movs r0, 0x42 - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - ldr r1, _0801ACE4 @ =gBattlescriptCurrInstr - ldr r0, _0801ACE8 @ =BattleScript_ApplySecondaryEffect - str r0, [r1] - ldr r2, _0801ACEC @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _0801BB5A - .align 2, 0 -_0801ACC4: .4byte gMoveResultFlags -_0801ACC8: .4byte gBattleMons -_0801ACCC: .4byte gBattlerAttacker -_0801ACD0: .4byte gProtectStructs -_0801ACD4: .4byte gSpecialStatuses -_0801ACD8: .4byte gBattlerTarget -_0801ACDC: .4byte gBattleMoves -_0801ACE0: .4byte gBattleCommunication -_0801ACE4: .4byte gBattlescriptCurrInstr -_0801ACE8: .4byte BattleScript_ApplySecondaryEffect -_0801ACEC: .4byte gHitMarker -_0801ACF0: - ldr r0, _0801ADA0 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801AD00 - bl _0801BBAA -_0801AD00: - ldr r1, _0801ADA4 @ =gBattleMons - ldr r0, _0801ADA8 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801AD16 - bl _0801BBAA -_0801AD16: - ldr r0, _0801ADAC @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AD28 - bl _0801BBAA -_0801AD28: - ldr r2, _0801ADB0 @ =gSpecialStatuses - ldr r0, _0801ADB4 @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AD50 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AD50 - bl _0801BBAA -_0801AD50: - ldr r1, _0801ADB8 @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801AD68 - bl _0801BBAA -_0801AD68: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0801AD80 - bl _0801BBAA -_0801AD80: - ldr r1, _0801ADBC @ =gBattleCommunication - movs r0, 0x45 - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - ldr r1, _0801ADC0 @ =gBattlescriptCurrInstr - ldr r0, _0801ADC4 @ =BattleScript_ApplySecondaryEffect - str r0, [r1] - ldr r2, _0801ADC8 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _0801BB5A - .align 2, 0 -_0801ADA0: .4byte gMoveResultFlags -_0801ADA4: .4byte gBattleMons -_0801ADA8: .4byte gBattlerAttacker -_0801ADAC: .4byte gProtectStructs -_0801ADB0: .4byte gSpecialStatuses -_0801ADB4: .4byte gBattlerTarget -_0801ADB8: .4byte gBattleMoves -_0801ADBC: .4byte gBattleCommunication -_0801ADC0: .4byte gBattlescriptCurrInstr -_0801ADC4: .4byte BattleScript_ApplySecondaryEffect -_0801ADC8: .4byte gHitMarker -_0801ADCC: - ldr r0, _0801AE7C @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801ADDC - bl _0801BBAA -_0801ADDC: - ldr r1, _0801AE80 @ =gBattleMons - ldr r0, _0801AE84 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801ADF2 - bl _0801BBAA -_0801ADF2: - ldr r0, _0801AE88 @ =gProtectStructs - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AE04 - bl _0801BBAA -_0801AE04: - ldr r1, _0801AE8C @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801AE1C - bl _0801BBAA -_0801AE1C: - ldr r2, _0801AE90 @ =gSpecialStatuses - ldr r0, _0801AE94 @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AE44 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AE44 - bl _0801BBAA -_0801AE44: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0801AE5C - bl _0801BBAA -_0801AE5C: - ldr r1, _0801AE98 @ =gBattleCommunication - movs r0, 0x43 - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - ldr r1, _0801AE9C @ =gBattlescriptCurrInstr - ldr r0, _0801AEA0 @ =BattleScript_ApplySecondaryEffect - str r0, [r1] - ldr r2, _0801AEA4 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r2] - bl _0801BB5A - .align 2, 0 -_0801AE7C: .4byte gMoveResultFlags -_0801AE80: .4byte gBattleMons -_0801AE84: .4byte gBattlerAttacker -_0801AE88: .4byte gProtectStructs -_0801AE8C: .4byte gBattleMoves -_0801AE90: .4byte gSpecialStatuses -_0801AE94: .4byte gBattlerTarget -_0801AE98: .4byte gBattleCommunication -_0801AE9C: .4byte gBattlescriptCurrInstr -_0801AEA0: .4byte BattleScript_ApplySecondaryEffect -_0801AEA4: .4byte gHitMarker -_0801AEA8: - ldr r0, _0801AFE8 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801AEB8 - bl _0801BBAA -_0801AEB8: - ldr r5, _0801AFEC @ =gBattleMons - ldr r7, _0801AFF0 @ =gBattlerAttacker - ldrb r1, [r7] - movs r6, 0x58 - adds r0, r1, 0 - muls r0, r6 - adds r0, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801AED0 - bl _0801BBAA -_0801AED0: - ldr r0, _0801AFF4 @ =gProtectStructs - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - lsls r0, 31 - cmp r0, 0 - beq _0801AEE2 - bl _0801BBAA -_0801AEE2: - ldr r1, _0801AFF8 @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801AEFA - bl _0801BBAA -_0801AEFA: - ldr r3, _0801AFFC @ =gSpecialStatuses - ldr r4, _0801B000 @ =gBattlerTarget - mov r8, r4 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r3, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AF24 - adds r0, r3, 0 - adds r0, 0xC - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801AF24 - bl _0801BBAA -_0801AF24: - adds r0, r1, 0 - muls r0, r6 - adds r0, r5 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801AF34 - bl _0801BBAA -_0801AF34: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0801AF4C - bl _0801BBAA -_0801AF4C: - ldrb r0, [r7] - muls r0, r6 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0xC - bne _0801AF5E - bl _0801BBAA -_0801AF5E: - ldr r0, [sp, 0x8] - ldr r1, [sp, 0x10] - bl GetGenderFromSpeciesAndPersonality - adds r4, r0, 0 - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x14] - bl GetGenderFromSpeciesAndPersonality - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _0801AF7C - bl _0801BBAA -_0801AF7C: - ldrb r0, [r7] - muls r0, r6 - adds r4, r5, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _0801AF96 - bl _0801BBAA -_0801AF96: - ldr r0, [sp, 0x8] - ldr r1, [sp, 0x10] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0801AFAA - bl _0801BBAA -_0801AFAA: - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x14] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0801AFBE - bl _0801BBAA -_0801AFBE: - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r1, _0801B004 @ =gBitTable - mov r3, r8 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r1, _0801B008 @ =gBattlescriptCurrInstr - ldr r0, _0801B00C @ =BattleScript_CuteCharmActivates - str r0, [r1] - bl _0801BB5A - .align 2, 0 -_0801AFE8: .4byte gMoveResultFlags -_0801AFEC: .4byte gBattleMons -_0801AFF0: .4byte gBattlerAttacker -_0801AFF4: .4byte gProtectStructs -_0801AFF8: .4byte gBattleMoves -_0801AFFC: .4byte gSpecialStatuses -_0801B000: .4byte gBattlerTarget -_0801B004: .4byte gBitTable -_0801B008: .4byte gBattlescriptCurrInstr -_0801B00C: .4byte BattleScript_CuteCharmActivates -_0801B010: - movs r4, 0 - mov r10, r4 - ldr r0, _0801B044 @ =gBattlersCount - ldrb r0, [r0] - cmp r10, r0 - bcc _0801B020 - bl _0801BBAA -_0801B020: - ldr r1, _0801B048 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - subs r0, 0x7 - adds r2, r1, 0 - cmp r0, 0x41 - bls _0801B03A - b _0801B29E -_0801B03A: - lsls r0, 2 - ldr r1, _0801B04C @ =_0801B050 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801B044: .4byte gBattlersCount -_0801B048: .4byte gBattleMons -_0801B04C: .4byte _0801B050 - .align 2, 0 -_0801B050: - .4byte _0801B1B4 - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B278 - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B1DC - .4byte _0801B29E - .4byte _0801B158 - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B184 - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B248 - .4byte _0801B218 - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B29E - .4byte _0801B1DC -_0801B158: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - ldr r1, _0801B178 @ =0x00000f88 - ands r0, r1 - cmp r0, 0 - bne _0801B172 - b _0801B29E -_0801B172: - ldr r0, _0801B17C @ =gBattleTextBuff1 - ldr r1, _0801B180 @ =gUnknown_8250094 - b _0801B264 - .align 2, 0 -_0801B178: .4byte 0x00000f88 -_0801B17C: .4byte gBattleTextBuff1 -_0801B180: .4byte gUnknown_8250094 -_0801B184: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801B19E - b _0801B29E -_0801B19E: - ldr r0, _0801B1AC @ =gBattleTextBuff1 - ldr r1, _0801B1B0 @ =gUnknown_82500BC - bl StringCopy - movs r2, 0x2 - mov r9, r2 - b _0801B2A4 - .align 2, 0 -_0801B1AC: .4byte gBattleTextBuff1 -_0801B1B0: .4byte gUnknown_82500BC -_0801B1B4: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801B29E - ldr r0, _0801B1D4 @ =gBattleTextBuff1 - ldr r1, _0801B1D8 @ =gUnknown_82500A4 - b _0801B264 - .align 2, 0 -_0801B1D4: .4byte gBattleTextBuff1 -_0801B1D8: .4byte gUnknown_82500A4 -_0801B1DC: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801B29E - adds r2, 0x50 - adds r2, r3, r2 - ldr r0, [r2] - ldr r1, _0801B20C @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801B210 @ =gBattleTextBuff1 - ldr r1, _0801B214 @ =gUnknown_825009C - bl StringCopy - movs r0, 0x1 - mov r9, r0 - b _0801B2A4 - .align 2, 0 -_0801B20C: .4byte 0xf7ffffff -_0801B210: .4byte gBattleTextBuff1 -_0801B214: .4byte gUnknown_825009C -_0801B218: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801B29E - ldr r0, _0801B240 @ =gBattleTextBuff1 - ldr r1, _0801B244 @ =gUnknown_82500AC - bl StringCopy - movs r2, 0x1 - mov r9, r2 - b _0801B2A4 - .align 2, 0 -_0801B240: .4byte gBattleTextBuff1 -_0801B244: .4byte gUnknown_82500AC -_0801B248: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r1, r2, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801B29E - ldr r0, _0801B270 @ =gBattleTextBuff1 - ldr r1, _0801B274 @ =gUnknown_82500B4 -_0801B264: - bl StringCopy - movs r4, 0x1 - mov r9, r4 - b _0801B2A4 - .align 2, 0 -_0801B270: .4byte gBattleTextBuff1 -_0801B274: .4byte gUnknown_82500B4 -_0801B278: - movs r0, 0x58 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _0801B29E - ldr r0, _0801B2B4 @ =gBattleTextBuff1 - ldr r1, _0801B2B8 @ =gUnknown_82500C4 - bl StringCopy - movs r2, 0x3 - mov r9, r2 -_0801B29E: - mov r3, r9 - cmp r3, 0 - beq _0801B358 -_0801B2A4: - mov r4, r9 - cmp r4, 0x2 - beq _0801B2D8 - cmp r4, 0x2 - bgt _0801B2BC - cmp r4, 0x1 - beq _0801B2C4 - b _0801B304 - .align 2, 0 -_0801B2B4: .4byte gBattleTextBuff1 -_0801B2B8: .4byte gUnknown_82500C4 -_0801B2BC: - mov r0, r9 - cmp r0, 0x3 - beq _0801B2F0 - b _0801B304 -_0801B2C4: - ldr r1, _0801B2D4 @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x4C - adds r2, r1 - movs r0, 0 - b _0801B302 - .align 2, 0 -_0801B2D4: .4byte gBattleMons -_0801B2D8: - ldr r1, _0801B2EC @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x8 - negs r1, r1 - b _0801B300 - .align 2, 0 -_0801B2EC: .4byte gBattleMons -_0801B2F0: - ldr r1, _0801B33C @ =gBattleMons - movs r0, 0x58 - mov r2, r10 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - ldr r1, _0801B340 @ =0xfff0ffff -_0801B300: - ands r0, r1 -_0801B302: - str r0, [r2] -_0801B304: - bl BattleScriptPushCursor - ldr r1, _0801B344 @ =gBattlescriptCurrInstr - ldr r0, _0801B348 @ =BattleScript_AbilityCuredStatus - str r0, [r1] - ldr r0, _0801B34C @ =gBattleScripting - mov r1, r10 - strb r1, [r0, 0x17] - ldr r4, _0801B350 @ =gActiveBattler - strb r1, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - ldr r1, _0801B354 @ =gUnknown_2023C30 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - bl _0801BBC6 - .align 2, 0 -_0801B33C: .4byte gBattleMons -_0801B340: .4byte 0xfff0ffff -_0801B344: .4byte gBattlescriptCurrInstr -_0801B348: .4byte BattleScript_AbilityCuredStatus -_0801B34C: .4byte gBattleScripting -_0801B350: .4byte gActiveBattler -_0801B354: .4byte gUnknown_2023C30 -_0801B358: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _0801B370 @ =gBattlersCount - ldrb r0, [r0] - cmp r10, r0 - bcs _0801B36C - b _0801B020 -_0801B36C: - bl _0801BBAA - .align 2, 0 -_0801B370: .4byte gBattlersCount -_0801B374: - movs r2, 0 - mov r10, r2 - ldr r0, _0801B3C0 @ =gBattlersCount - ldrb r0, [r0] - cmp r10, r0 - bcc _0801B384 - bl _0801BBAA -_0801B384: - ldr r4, _0801B3C4 @ =gBattleMons -_0801B386: - movs r0, 0x58 - mov r3, r10 - muls r3, r0 - adds r0, r3, 0 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3B - bne _0801B3AA - mov r0, r10 - bl CastformDataTypeChange - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0 - beq _0801B3AA - b _0801BA84 -_0801B3AA: - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _0801B3C0 @ =gBattlersCount - ldrb r0, [r0] - cmp r10, r0 - bcc _0801B386 - bl _0801BBAA - .align 2, 0 -_0801B3C0: .4byte gBattlersCount -_0801B3C4: .4byte gBattleMons -_0801B3C8: - mov r4, r8 - ldrb r0, [r4] - cmp r0, 0x1C - beq _0801B3D4 - bl _0801BBAA -_0801B3D4: - ldr r4, _0801B434 @ =gHitMarker - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - cmp r0, 0 - bne _0801B3E6 - bl _0801BBAA -_0801B3E6: - ldr r0, _0801B438 @ =0xffffbfff - ands r1, r0 - str r1, [r4] - ldr r1, [r6] - adds r1, 0xB4 - ldrb r2, [r1] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0xB4 - ldrb r0, [r1] - cmp r0, 0x6 - bne _0801B408 - movs r0, 0x2 - strb r0, [r1] -_0801B408: - ldr r1, _0801B43C @ =gBattleCommunication - ldr r0, [r6] - adds r0, 0xB4 - ldrb r0, [r0] - adds r0, 0x40 - strb r0, [r1, 0x3] - ldr r1, _0801B440 @ =gBattleScripting - ldr r0, _0801B444 @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r1, 0x17] - bl BattleScriptPushCursor - ldr r1, _0801B448 @ =gBattlescriptCurrInstr - ldr r0, _0801B44C @ =BattleScript_SynchronizeActivates - str r0, [r1] - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r4] - b _0801BB5A - .align 2, 0 -_0801B434: .4byte gHitMarker -_0801B438: .4byte 0xffffbfff -_0801B43C: .4byte gBattleCommunication -_0801B440: .4byte gBattleScripting -_0801B444: .4byte gBattlerTarget -_0801B448: .4byte gBattlescriptCurrInstr -_0801B44C: .4byte BattleScript_SynchronizeActivates -_0801B450: - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x1C - beq _0801B45A - b _0801BBAA -_0801B45A: - ldr r4, _0801B4B8 @ =gHitMarker - ldr r1, [r4] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - cmp r0, 0 - bne _0801B46A - b _0801BBAA -_0801B46A: - ldr r0, _0801B4BC @ =0xffffbfff - ands r1, r0 - str r1, [r4] - adds r3, r6, 0 - ldr r1, [r3] - adds r1, 0xB4 - ldrb r2, [r1] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r1, r0, 0 - adds r1, 0xB4 - ldrb r0, [r1] - cmp r0, 0x6 - bne _0801B48E - movs r0, 0x2 - strb r0, [r1] -_0801B48E: - ldr r1, _0801B4C0 @ =gBattleCommunication - ldr r0, [r6] - adds r0, 0xB4 - ldrb r0, [r0] - strb r0, [r1, 0x3] - ldr r1, _0801B4C4 @ =gBattleScripting - ldr r0, _0801B4C8 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r1, 0x17] - bl BattleScriptPushCursor - ldr r1, _0801B4CC @ =gBattlescriptCurrInstr - ldr r0, _0801B4D0 @ =BattleScript_SynchronizeActivates - str r0, [r1] - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - str r0, [r4] - b _0801BB5A - .align 2, 0 -_0801B4B8: .4byte gHitMarker -_0801B4BC: .4byte 0xffffbfff -_0801B4C0: .4byte gBattleCommunication -_0801B4C4: .4byte gBattleScripting -_0801B4C8: .4byte gBattlerAttacker -_0801B4CC: .4byte gBattlescriptCurrInstr -_0801B4D0: .4byte BattleScript_SynchronizeActivates -_0801B4D4: - movs r5, 0 - ldr r0, _0801B50C @ =gBattlersCount - ldrb r1, [r0] - cmp r5, r1 - blt _0801B4E0 - b _0801BBAA -_0801B4E0: - ldr r0, _0801B510 @ =gBattleMons - adds r4, r1, 0 - ldr r2, _0801B514 @ =gStatuses3 - adds r3, r0, 0 - adds r3, 0x20 - movs r6, 0x80 - lsls r6, 12 -_0801B4EE: - ldrb r1, [r3] - cmp r1, 0x16 - bne _0801B4FE - ldr r0, [r2] - ands r0, r6 - cmp r0, 0 - beq _0801B4FE - b _0801BAAC -_0801B4FE: - adds r2, 0x4 - adds r3, 0x58 - adds r5, 0x1 - cmp r5, r4 - blt _0801B4EE - b _0801BBAA - .align 2, 0 -_0801B50C: .4byte gBattlersCount -_0801B510: .4byte gBattleMons -_0801B514: .4byte gStatuses3 -_0801B518: - movs r5, 0 - ldr r0, _0801B5F4 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B524 - b _0801BBAA -_0801B524: - ldr r2, _0801B5F8 @ =gActiveBattler - mov r8, r2 - ldr r3, _0801B5FC @ =gBattleMons - adds r3, 0x20 - str r3, [sp, 0x1C] - movs r4, 0 - str r4, [sp, 0x20] -_0801B532: - ldr r1, [sp, 0x1C] - ldrb r0, [r1] - cmp r0, 0x24 - beq _0801B53C - b _0801B6D6 -_0801B53C: - ldr r0, _0801B600 @ =gStatuses3 - ldr r2, [sp, 0x20] - adds r0, r2, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 13 - ands r1, r0 - str r2, [sp, 0x18] - cmp r1, 0 - bne _0801B552 - b _0801B6D6 -_0801B552: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerPosition - movs r1, 0x1 - adds r6, r0, 0 - eors r6, r1 - ands r6, r1 - adds r0, r6, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0801B604 @ =gBattleTypeFlags - ldr r0, [r0] - movs r2, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0801B584 - b _0801B69C -_0801B584: - movs r3, 0x58 - adds r0, r4, 0 - muls r0, r3 - ldr r3, _0801B5FC @ =gBattleMons - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0801B658 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801B60C - movs r1, 0x58 - adds r0, r7, 0 - muls r0, r1 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0801B60C - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801B60C - str r2, [sp, 0x24] - bl Random - ldr r2, [sp, 0x24] - adds r1, r2, 0 - ands r1, r0 - lsls r1, 1 - orrs r6, r1 - adds r0, r6, 0 - bl GetBattlerAtPosition - mov r2, r8 - strb r0, [r2] - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - ldr r4, _0801B5FC @ =gBattleMons - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - ldr r1, [sp, 0x1C] - strb r0, [r1] - ldrb r0, [r2] - muls r0, r3 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - ldr r2, _0801B608 @ =gLastUsedAbility - strb r0, [r2] - b _0801B6C4 - .align 2, 0 -_0801B5F4: .4byte gBattlersCount -_0801B5F8: .4byte gActiveBattler -_0801B5FC: .4byte gBattleMons -_0801B600: .4byte gStatuses3 -_0801B604: .4byte gBattleTypeFlags -_0801B608: .4byte gLastUsedAbility -_0801B60C: - ldr r3, _0801B650 @ =gBattleMons - movs r2, 0x58 - adds r0, r4, 0 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0801B658 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801B658 - mov r0, r8 - strb r4, [r0] - adds r1, r5, 0 - muls r1, r2 - adds r1, r3 - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, 0x20 - strb r0, [r1] - mov r1, r8 - ldrb r0, [r1] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - ldr r2, _0801B654 @ =gLastUsedAbility - strb r0, [r2] - b _0801B6C4 - .align 2, 0 -_0801B650: .4byte gBattleMons -_0801B654: .4byte gLastUsedAbility -_0801B658: - ldr r3, _0801B698 @ =gBattleMons - movs r2, 0x58 - adds r0, r7, 0 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0801B6CE - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801B6CE - mov r4, r8 - strb r7, [r4] - adds r1, r5, 0 - muls r1, r2 - adds r1, r3 - ldrb r0, [r4] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r4] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - b _0801B6C0 - .align 2, 0 -_0801B698: .4byte gBattleMons -_0801B69C: - mov r2, r8 - strb r4, [r2] - movs r3, 0x58 - adds r0, r4, 0 - muls r0, r3 - ldr r4, _0801B6F0 @ =gBattleMons - adds r0, r4 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r1, [r2] - cmp r1, 0 - beq _0801B6CE - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801B6CE - ldr r0, [sp, 0x1C] - strb r1, [r0] - ldrb r0, [r2] -_0801B6C0: - ldr r1, _0801B6F4 @ =gLastUsedAbility - strb r0, [r1] -_0801B6C4: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801B6CE: - mov r2, r9 - cmp r2, 0 - beq _0801B6D6 - b _0801BAC8 -_0801B6D6: - ldr r3, [sp, 0x1C] - adds r3, 0x58 - str r3, [sp, 0x1C] - ldr r4, [sp, 0x20] - adds r4, 0x4 - str r4, [sp, 0x20] - adds r5, 0x1 - ldr r0, _0801B6F8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0801B6EE - b _0801B532 -_0801B6EE: - b _0801BBAA - .align 2, 0 -_0801B6F0: .4byte gBattleMons -_0801B6F4: .4byte gLastUsedAbility -_0801B6F8: .4byte gBattlersCount -_0801B6FC: - movs r5, 0 - ldr r0, _0801B734 @ =gBattlersCount - ldrb r1, [r0] - cmp r5, r1 - blt _0801B708 - b _0801BBAA -_0801B708: - ldr r0, _0801B738 @ =gBattleMons - adds r4, r1, 0 - ldr r2, _0801B73C @ =gStatuses3 - adds r3, r0, 0 - adds r3, 0x20 - movs r6, 0x80 - lsls r6, 12 -_0801B716: - ldrb r1, [r3] - cmp r1, 0x16 - bne _0801B726 - ldr r0, [r2] - ands r0, r6 - cmp r0, 0 - beq _0801B726 - b _0801BB3C -_0801B726: - adds r2, 0x4 - adds r3, 0x58 - adds r5, 0x1 - cmp r5, r4 - blt _0801B716 - b _0801BBAA - .align 2, 0 -_0801B734: .4byte gBattlersCount -_0801B738: .4byte gBattleMons -_0801B73C: .4byte gStatuses3 -_0801B740: - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801B790 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B756 - b _0801BBAA -_0801B756: - ldr r0, _0801B794 @ =gBattleMons - mov r8, r0 -_0801B75A: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r4, r5, 0x1 - cmp r0, r6 - beq _0801B784 - movs r0, 0x58 - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r7 - bne _0801B784 - ldr r0, _0801B798 @ =gLastUsedAbility - strb r7, [r0] - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B784: - adds r5, r4, 0 - ldr r0, _0801B790 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B75A - b _0801BBAA - .align 2, 0 -_0801B790: .4byte gBattlersCount -_0801B794: .4byte gBattleMons -_0801B798: .4byte gLastUsedAbility -_0801B79C: - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801B7EC @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B7B2 - b _0801BBAA -_0801B7B2: - ldr r1, _0801B7F0 @ =gBattleMons - mov r8, r1 -_0801B7B6: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r4, r5, 0x1 - cmp r0, r6 - bne _0801B7E0 - movs r0, 0x58 - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r7 - bne _0801B7E0 - ldr r0, _0801B7F4 @ =gLastUsedAbility - strb r7, [r0] - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B7E0: - adds r5, r4, 0 - ldr r0, _0801B7EC @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B7B6 - b _0801BBAA - .align 2, 0 -_0801B7EC: .4byte gBattlersCount -_0801B7F0: .4byte gBattleMons -_0801B7F4: .4byte gLastUsedAbility -_0801B7F8: - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0xFD - beq _0801B820 - cmp r0, 0xFE - beq _0801B858 - movs r5, 0 - ldr r0, _0801B818 @ =gBattlersCount - adds r3, r0, 0 - ldrb r4, [r3] - cmp r5, r4 - blt _0801B812 - b _0801BBAA -_0801B812: - ldr r2, _0801B81C @ =gBattleMons - b _0801B890 - .align 2, 0 -_0801B818: .4byte gBattlersCount -_0801B81C: .4byte gBattleMons -_0801B820: - movs r5, 0 - ldr r0, _0801B850 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B82C - b _0801BBAA -_0801B82C: - ldr r3, _0801B854 @ =gStatuses3 - movs r2, 0x80 - lsls r2, 9 - adds r1, r0, 0 -_0801B834: - lsls r0, r5, 2 - adds r0, r3 - ldr r0, [r0] - ands r0, r2 - adds r4, r5, 0x1 - cmp r0, 0 - beq _0801B848 - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B848: - adds r5, r4, 0 - cmp r5, r1 - blt _0801B834 - b _0801BBAA - .align 2, 0 -_0801B850: .4byte gBattlersCount -_0801B854: .4byte gStatuses3 -_0801B858: - movs r5, 0 - ldr r0, _0801B888 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B864 - b _0801BBAA -_0801B864: - ldr r3, _0801B88C @ =gStatuses3 - movs r2, 0x80 - lsls r2, 10 - adds r1, r0, 0 -_0801B86C: - lsls r0, r5, 2 - adds r0, r3 - ldr r0, [r0] - ands r0, r2 - adds r4, r5, 0x1 - cmp r0, 0 - beq _0801B880 - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B880: - adds r5, r4, 0 - cmp r5, r1 - blt _0801B86C - b _0801BBAA - .align 2, 0 -_0801B888: .4byte gBattlersCount -_0801B88C: .4byte gStatuses3 -_0801B890: - movs r0, 0x58 - muls r0, r5 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r5, 0x1 - cmp r0, r7 - bne _0801B8AA - mov r0, r8 - strb r7, [r0] - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B8AA: - adds r5, r4, 0 - ldrb r1, [r3] - cmp r5, r1 - blt _0801B890 - b _0801BBAA -_0801B8B4: - movs r5, 0 - ldr r0, _0801B8F0 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B8C0 - b _0801BBAA -_0801B8C0: - ldr r6, _0801B8F4 @ =gBattleMons - adds r2, r0, 0 - movs r3, 0x58 -_0801B8C6: - adds r0, r5, 0 - muls r0, r3 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r5, 0x1 - cmp r0, r7 - bne _0801B8E8 - ldrh r0, [r1, 0x28] - cmp r0, 0 - beq _0801B8E8 - mov r0, r8 - strb r7, [r0] - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B8E8: - adds r5, r4, 0 - cmp r5, r2 - blt _0801B8C6 - b _0801BBAA - .align 2, 0 -_0801B8F0: .4byte gBattlersCount -_0801B8F4: .4byte gBattleMons -_0801B8F8: - ldr r0, _0801B908 @ =gLastUsedAbility - strb r7, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - b _0801B94A - .align 2, 0 -_0801B908: .4byte gLastUsedAbility -_0801B90C: - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801B99C @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0801B94A - ldr r4, _0801B9A0 @ =gBattleMons -_0801B922: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - beq _0801B940 - movs r0, 0x58 - muls r0, r5 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r7 - beq _0801B8F8 -_0801B940: - adds r5, 0x1 - ldr r0, _0801B99C @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B922 -_0801B94A: - mov r1, r9 - cmp r1, 0 - beq _0801B952 - b _0801BBB0 -_0801B952: - movs r5, 0 - ldr r0, _0801B99C @ =gBattlersCount - ldrb r0, [r0] - cmp r9, r0 - blt _0801B95E - b _0801BBAA -_0801B95E: - ldr r2, _0801B9A0 @ =gBattleMons - mov r8, r2 -_0801B962: - movs r0, 0x58 - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r5, 0x1 - cmp r0, r7 - bne _0801B990 - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - bne _0801B990 - cmp r5, r10 - beq _0801B990 - ldr r0, _0801B9A4 @ =gLastUsedAbility - strb r7, [r0] - lsls r0, r4, 24 - lsrs r0, 24 - mov r9, r0 -_0801B990: - adds r5, r4, 0 - ldr r0, _0801B99C @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B962 - b _0801BBAA - .align 2, 0 -_0801B99C: .4byte gBattlersCount -_0801B9A0: .4byte gBattleMons -_0801B9A4: .4byte gLastUsedAbility -_0801B9A8: - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801B9F8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B9BE - b _0801BBAA -_0801B9BE: - ldr r4, _0801B9FC @ =gBattleMons -_0801B9C0: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - beq _0801B9EC - movs r0, 0x58 - muls r0, r5 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r7 - bne _0801B9EC - ldr r0, _0801BA00 @ =gLastUsedAbility - strb r7, [r0] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801B9EC: - adds r5, 0x1 - ldr r0, _0801B9F8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801B9C0 - b _0801BBAA - .align 2, 0 -_0801B9F8: .4byte gBattlersCount -_0801B9FC: .4byte gBattleMons -_0801BA00: .4byte gLastUsedAbility -_0801BA04: - mov r0, r10 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801BA54 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801BA1A - b _0801BBAA -_0801BA1A: - ldr r4, _0801BA58 @ =gBattleMons -_0801BA1C: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r6 - bne _0801BA48 - movs r0, 0x58 - muls r0, r5 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r7 - bne _0801BA48 - ldr r0, _0801BA5C @ =gLastUsedAbility - strb r7, [r0] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801BA48: - adds r5, 0x1 - ldr r0, _0801BA54 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801BA1C - b _0801BBAA - .align 2, 0 -_0801BA54: .4byte gBattlersCount -_0801BA58: .4byte gBattleMons -_0801BA5C: .4byte gLastUsedAbility -_0801BA60: - ldr r0, _0801BA78 @ =BattleScript_CastformChange - bl BattleScriptPushCursorAndCallback - ldr r0, _0801BA7C @ =gBattleScripting - strb r4, [r0, 0x17] -_0801BA6A: - ldr r0, _0801BA80 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x7F - mov r1, r9 - subs r1, 0x1 - strb r1, [r0] - b _0801BBAA - .align 2, 0 -_0801BA78: .4byte BattleScript_CastformChange -_0801BA7C: .4byte gBattleScripting -_0801BA80: .4byte gBattleStruct -_0801BA84: - ldr r0, _0801BAA0 @ =BattleScript_CastformChange - bl BattleScriptPushCursorAndCallback - ldr r0, _0801BAA4 @ =gBattleScripting - mov r3, r10 - strb r3, [r0, 0x17] - ldr r0, _0801BAA8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x7F - mov r1, r9 - subs r1, 0x1 - strb r1, [r0] - b _0801BBC6 - .align 2, 0 -_0801BAA0: .4byte BattleScript_CastformChange -_0801BAA4: .4byte gBattleScripting -_0801BAA8: .4byte gBattleStruct -_0801BAAC: - mov r4, r8 - strb r1, [r4] - ldr r0, [r2] - ldr r1, _0801BAC0 @ =0xfff7ffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801BAC4 @ =BattleScript_IntimidateActivatesEnd3 - bl BattleScriptPushCursorAndCallback - b _0801BB52 - .align 2, 0 -_0801BAC0: .4byte 0xfff7ffff -_0801BAC4: .4byte BattleScript_IntimidateActivatesEnd3 -_0801BAC8: - ldr r0, _0801BB18 @ =BattleScript_TraceActivates - bl BattleScriptPushCursorAndCallback - ldr r1, _0801BB1C @ =gStatuses3 - ldr r0, [sp, 0x18] - adds r1, r0, r1 - ldr r0, [r1] - ldr r2, _0801BB20 @ =0xffefffff - ands r0, r2 - str r0, [r1] - ldr r0, _0801BB24 @ =gBattleScripting - strb r5, [r0, 0x17] - ldr r1, _0801BB28 @ =gBattleTextBuff1 - movs r4, 0xFD - strb r4, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r2, _0801BB2C @ =gActiveBattler - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, _0801BB30 @ =gBattlerPartyIndexes - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0801BB34 @ =gBattleTextBuff2 - strb r4, [r1] - movs r0, 0x9 - strb r0, [r1, 0x1] - ldr r0, _0801BB38 @ =gLastUsedAbility - ldrb r0, [r0] - strb r0, [r1, 0x2] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x3] - b _0801BBAA - .align 2, 0 -_0801BB18: .4byte BattleScript_TraceActivates -_0801BB1C: .4byte gStatuses3 -_0801BB20: .4byte 0xffefffff -_0801BB24: .4byte gBattleScripting -_0801BB28: .4byte gBattleTextBuff1 -_0801BB2C: .4byte gActiveBattler -_0801BB30: .4byte gBattlerPartyIndexes -_0801BB34: .4byte gBattleTextBuff2 -_0801BB38: .4byte gLastUsedAbility -_0801BB3C: - mov r3, r8 - strb r1, [r3] - ldr r0, [r2] - ldr r1, _0801BB68 @ =0xfff7ffff - ands r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r1, _0801BB6C @ =gBattlescriptCurrInstr - ldr r0, _0801BB70 @ =BattleScript_IntimidateActivates - str r0, [r1] -_0801BB52: - ldr r0, _0801BB74 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xD8 - strb r5, [r0] -_0801BB5A: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - b _0801BBAA - .align 2, 0 -_0801BB68: .4byte 0xfff7ffff -_0801BB6C: .4byte gBattlescriptCurrInstr -_0801BB70: .4byte BattleScript_IntimidateActivates -_0801BB74: .4byte gBattleStruct -_0801BB78: - movs r5, 0 - ldr r0, _0801BBD8 @ =gBattlersCount - ldrb r1, [r0] - cmp r5, r1 - bge _0801BBAA - ldr r0, _0801BBDC @ =gBattleMons - adds r2, r1, 0 - adds r1, r0, 0 - adds r1, 0x20 - ldr r3, _0801BBE0 @ =gLastUsedAbility -_0801BB8C: - ldrb r0, [r1] - cmp r0, r7 - bne _0801BBA2 - cmp r5, r10 - beq _0801BBA2 - strb r7, [r3] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801BBA2: - adds r1, 0x58 - adds r5, 0x1 - cmp r5, r2 - blt _0801BB8C -_0801BBAA: - mov r4, r9 - cmp r4, 0 - beq _0801BBC6 -_0801BBB0: - ldr r0, [sp, 0x4] - cmp r0, 0xB - bhi _0801BBC6 - ldr r1, _0801BBE0 @ =gLastUsedAbility - ldrb r0, [r1] - cmp r0, 0xFF - beq _0801BBC6 - adds r1, r0, 0 - mov r0, r10 - bl sub_80C71D0 -_0801BBC6: - mov r0, r9 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801BBD8: .4byte gBattlersCount -_0801BBDC: .4byte gBattleMons -_0801BBE0: .4byte gLastUsedAbility - thumb_func_end AbilityBattleEffects - thumb_func_start BattleScriptExecute BattleScriptExecute: @ 801BBE4 ldr r1, _0801BC10 @ =gBattlescriptCurrInstr @@ -6427,7 +1513,7 @@ _0801C816: cmp r2, 0 beq _0801C82E ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8C0 @ =gUnknown_8250094 + ldr r1, _0801C8C0 @ =gStatusConditionString_PoisonJpn bl StringCopy movs r0, 0x1 mov r10, r0 @@ -6446,7 +1532,7 @@ _0801C82E: ands r0, r1 str r0, [r2] ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8C8 @ =gUnknown_825009C + ldr r1, _0801C8C8 @ =gStatusConditionString_SleepJpn bl StringCopy movs r2, 0x1 add r10, r2 @@ -6457,7 +1543,7 @@ _0801C854: cmp r0, 0 beq _0801C86A ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8CC @ =gUnknown_82500A4 + ldr r1, _0801C8CC @ =gStatusConditionString_ParalysisJpn bl StringCopy movs r3, 0x1 add r10, r3 @@ -6468,7 +1554,7 @@ _0801C86A: cmp r0, 0 beq _0801C880 ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D0 @ =gUnknown_82500AC + ldr r1, _0801C8D0 @ =gStatusConditionString_BurnJpn bl StringCopy movs r0, 0x1 add r10, r0 @@ -6479,7 +1565,7 @@ _0801C880: cmp r0, 0 beq _0801C896 ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D4 @ =gUnknown_82500B4 + ldr r1, _0801C8D4 @ =gStatusConditionString_IceJpn bl StringCopy movs r1, 0x1 add r10, r1 @@ -6491,7 +1577,7 @@ _0801C896: cmp r0, 0 beq _0801C8AE ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D8 @ =gUnknown_82500BC + ldr r1, _0801C8D8 @ =gStatusConditionString_ConfusionJpn bl StringCopy movs r3, 0x1 add r10, r3 @@ -6504,13 +1590,13 @@ _0801C8AE: b _0801C8E4 .align 2, 0 _0801C8BC: .4byte gBattleTextBuff1 -_0801C8C0: .4byte gUnknown_8250094 +_0801C8C0: .4byte gStatusConditionString_PoisonJpn _0801C8C4: .4byte 0xf7ffffff -_0801C8C8: .4byte gUnknown_825009C -_0801C8CC: .4byte gUnknown_82500A4 -_0801C8D0: .4byte gUnknown_82500AC -_0801C8D4: .4byte gUnknown_82500B4 -_0801C8D8: .4byte gUnknown_82500BC +_0801C8C8: .4byte gStatusConditionString_SleepJpn +_0801C8CC: .4byte gStatusConditionString_ParalysisJpn +_0801C8D0: .4byte gStatusConditionString_BurnJpn +_0801C8D4: .4byte gStatusConditionString_IceJpn +_0801C8D8: .4byte gStatusConditionString_ConfusionJpn _0801C8DC: .4byte gBattleCommunication _0801C8E0: ldr r1, _0801C910 @ =gBattleCommunication @@ -6559,7 +1645,7 @@ _0801C91C: ands r2, r0 str r2, [r1] ldr r0, _0801C97C @ =gBattleTextBuff1 - ldr r1, _0801C980 @ =gUnknown_82500C4 + ldr r1, _0801C980 @ =gStatusConditionString_LoveJpn bl StringCopy ldr r0, _0801C984 @ =BattleScript_BerryCureChosenStatusEnd2 bl BattleScriptExecute @@ -6591,7 +1677,7 @@ _0801C95A: .align 2, 0 _0801C978: .4byte 0xfff0ffff _0801C97C: .4byte gBattleTextBuff1 -_0801C980: .4byte gUnknown_82500C4 +_0801C980: .4byte gStatusConditionString_LoveJpn _0801C984: .4byte BattleScript_BerryCureChosenStatusEnd2 _0801C988: .4byte gBattleCommunication _0801C98C: .4byte gBattleScripting @@ -6919,7 +2005,7 @@ _0801CC5C: ands r1, r0 str r1, [r2] ldr r0, _0801CC88 @ =gBattleTextBuff1 - ldr r1, _0801CC8C @ =gUnknown_82500C4 + ldr r1, _0801CC8C @ =gStatusConditionString_LoveJpn bl StringCopy bl BattleScriptPushCursor ldr r1, _0801CC90 @ =gBattleCommunication @@ -6935,7 +2021,7 @@ _0801CC5C: _0801CC80: .4byte gBattleMons _0801CC84: .4byte 0xfff0ffff _0801CC88: .4byte gBattleTextBuff1 -_0801CC8C: .4byte gUnknown_82500C4 +_0801CC8C: .4byte gStatusConditionString_LoveJpn _0801CC90: .4byte gBattleCommunication _0801CC94: .4byte gBattlescriptCurrInstr _0801CC98: .4byte BattleScript_BerryCureChosenStatusRet @@ -6966,7 +2052,7 @@ _0801CCC4: cmp r2, 0 beq _0801CCD4 ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD68 @ =gUnknown_8250094 + ldr r1, _0801CD68 @ =gStatusConditionString_PoisonJpn bl StringCopy _0801CCD4: ldr r0, [r6] @@ -6982,7 +2068,7 @@ _0801CCD4: ands r0, r1 str r0, [r2] ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD70 @ =gUnknown_825009C + ldr r1, _0801CD70 @ =gStatusConditionString_SleepJpn bl StringCopy _0801CCF4: ldr r0, [r6] @@ -6991,7 +2077,7 @@ _0801CCF4: cmp r0, 0 beq _0801CD06 ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD74 @ =gUnknown_82500A4 + ldr r1, _0801CD74 @ =gStatusConditionString_ParalysisJpn bl StringCopy _0801CD06: ldr r0, [r6] @@ -7000,7 +2086,7 @@ _0801CD06: cmp r0, 0 beq _0801CD18 ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD78 @ =gUnknown_82500AC + ldr r1, _0801CD78 @ =gStatusConditionString_BurnJpn bl StringCopy _0801CD18: ldr r0, [r6] @@ -7009,7 +2095,7 @@ _0801CD18: cmp r0, 0 beq _0801CD2A ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD7C @ =gUnknown_82500B4 + ldr r1, _0801CD7C @ =gStatusConditionString_IceJpn bl StringCopy _0801CD2A: adds r5, r4 @@ -7019,7 +2105,7 @@ _0801CD2A: cmp r0, 0 beq _0801CD3E ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD80 @ =gUnknown_82500BC + ldr r1, _0801CD80 @ =gStatusConditionString_ConfusionJpn bl StringCopy _0801CD3E: movs r4, 0 @@ -7042,13 +2128,13 @@ _0801CD58: .align 2, 0 _0801CD60: .4byte gBattleMons _0801CD64: .4byte gBattleTextBuff1 -_0801CD68: .4byte gUnknown_8250094 +_0801CD68: .4byte gStatusConditionString_PoisonJpn _0801CD6C: .4byte 0xf7ffffff -_0801CD70: .4byte gUnknown_825009C -_0801CD74: .4byte gUnknown_82500A4 -_0801CD78: .4byte gUnknown_82500AC -_0801CD7C: .4byte gUnknown_82500B4 -_0801CD80: .4byte gUnknown_82500BC +_0801CD70: .4byte gStatusConditionString_SleepJpn +_0801CD74: .4byte gStatusConditionString_ParalysisJpn +_0801CD78: .4byte gStatusConditionString_BurnJpn +_0801CD7C: .4byte gStatusConditionString_IceJpn +_0801CD80: .4byte gStatusConditionString_ConfusionJpn _0801CD84: .4byte gBattleCommunication _0801CD88: .4byte gBattlescriptCurrInstr _0801CD8C: .4byte BattleScript_BerryCureChosenStatusRet @@ -7597,7 +2683,7 @@ _0801D25E: adds r0, 0x20 ldrb r1, [r0] adds r0, r5, 0 - bl sub_80C71D0 + bl RecordAbilityBattle ldr r1, _0801D2A0 @ =gSpecialStatuses lsls r0, r5, 2 adds r0, r5 diff --git a/asm/field_weather.s b/asm/field_weather.s index ac24101a7..c165212d4 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -2561,8 +2561,8 @@ _0807AF92: bx r0 thumb_func_end sub_807AF00 - thumb_func_start weather_get_current -weather_get_current: @ 807AF98 + thumb_func_start GetCurrentWeather +GetCurrentWeather: @ 807AF98 ldr r0, _0807AFA4 @ =gUnknown_2037F34 movs r1, 0xDA lsls r1, 3 @@ -2571,7 +2571,7 @@ weather_get_current: @ 807AF98 bx lr .align 2, 0 _0807AFA4: .4byte gUnknown_2037F34 - thumb_func_end weather_get_current + thumb_func_end GetCurrentWeather thumb_func_start SetRainStrengthFromSoundEffect SetRainStrengthFromSoundEffect: @ 807AFA8 diff --git a/data/data.s b/data/data.s index e8ce97d9c..65f48e4f3 100644 --- a/data/data.s +++ b/data/data.s @@ -254,25 +254,25 @@ gUnknown_8250038:: @ 8250038 gUnknown_8250070:: @ 8250070 .incbin "baserom.gba", 0x250070, 0x24 -gUnknown_8250094:: @ 8250094 +gStatusConditionString_PoisonJpn:: @ 8250094 .incbin "baserom.gba", 0x250094, 0x8 -gUnknown_825009C:: @ 825009C +gStatusConditionString_SleepJpn:: @ 825009C .incbin "baserom.gba", 0x25009C, 0x8 -gUnknown_82500A4:: @ 82500A4 +gStatusConditionString_ParalysisJpn:: @ 82500A4 .incbin "baserom.gba", 0x2500A4, 0x8 -gUnknown_82500AC:: @ 82500AC +gStatusConditionString_BurnJpn:: @ 82500AC .incbin "baserom.gba", 0x2500AC, 0x8 -gUnknown_82500B4:: @ 82500B4 +gStatusConditionString_IceJpn:: @ 82500B4 .incbin "baserom.gba", 0x2500B4, 0x8 -gUnknown_82500BC:: @ 82500BC +gStatusConditionString_ConfusionJpn:: @ 82500BC .incbin "baserom.gba", 0x2500BC, 0x8 -gUnknown_82500C4:: @ 82500C4 +gStatusConditionString_LoveJpn:: @ 82500C4 .incbin "baserom.gba", 0x2500C4, 0x8 gUnknown_82500CC:: @ 82500CC diff --git a/include/battle.h b/include/battle.h index 188e5aae3..7db128430 100644 --- a/include/battle.h +++ b/include/battle.h @@ -241,7 +241,7 @@ struct ResourceFlags u32 flags[4]; }; -#define UNKNOWN_FLAG_FLASH_FIRE 1 +#define RESOURCE_FLAG_FLASH_FIRE 1 struct DisableStruct { @@ -274,7 +274,7 @@ struct DisableStruct /*0x18*/ u8 truantSwitchInHack : 1; /*0x18*/ u8 unk18_a_2 : 2; /*0x18*/ u8 mimickedMoves : 4; - /*0x19*/ u8 rechargeCounter; + /*0x19*/ u8 rechargeTimer; /*0x1A*/ u8 unk1A[2]; }; @@ -559,13 +559,16 @@ struct BattleStruct u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; - u8 synchronizeMoveEffect; + u8 field_AE; u8 field_AF; - u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? Or simply not used? - u8 field_B4; + u8 field_B0; + u8 field_B1; + u8 field_B2; + u8 field_B3; + u8 synchronizeMoveEffect; u8 field_B5; u8 field_B6; - u8 field_B7; + u8 atkCancellerTracker; // void (*savedCallback)(void); u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? @@ -581,31 +584,11 @@ struct BattleStruct u8 givenExpMons; u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; u16 castformPalette[MAX_BATTLERS_COUNT][16]; -/* - // EM fields - u8 field_180; - u8 field_181; - u8 field_182; - u8 field_183; - struct BattleEnigmaBerry battleEnigmaBerry; - u8 wishPerishSongState; - u8 wishPerishSongBattlerId; - bool8 overworldWeatherDone; - u8 atkCancellerTracker; - u8 field_1A4[96]; - u8 field_204[104]; - u8 field_26C[40]; - u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT]; - u8 field_298[8]; - u8 field_2A0; - u8 field_2A1; - u8 field_2A2; -*/ u8 wishPerishSongState; u8 wishPerishSongBattlerId; u8 field_182; // overworldWeatherDone? - u8 field_183; // atkCancellerTracker? - u8 field_184[124]; // only for padding + u8 field_183; + u8 field_184[124]; // currently unknown }; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -620,6 +603,13 @@ extern struct BattleStruct *gBattleStruct; #define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) #define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY) +#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0)) +#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type)) +#define SET_BATTLER_TYPE(battlerId, type) \ +{ \ + gBattleMons[battlerId].type1 = type; \ + gBattleMons[battlerId].type2 = type; \ +} #define MOVE_EFFECT_SLEEP 0x1 #define MOVE_EFFECT_POISON 0x2 @@ -734,6 +724,7 @@ extern struct BattleStruct *gBattleStruct; #define B_ANIM_STATUS_WRAPPED 0x9 #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 +#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0)) #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit @@ -992,5 +983,10 @@ extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT]; extern u16 gSideStatuses[2]; extern u32 gHitMarker; +extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; +extern u8 gMoveResultFlags; +extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; +extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; + #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index b64da190e..185f6228d 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -156,6 +156,7 @@ extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_WrapTurnDmg[]; extern const u8 BattleScript_WrapEnds[]; extern const u8 BattleScript_MoveUsedIsInLove[]; +extern const u8 BattleScript_MoveUsedIsInLoveCantAttack[]; extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; extern const u8 BattleScript_NightmareTurnDmg[]; extern const u8 BattleScript_CurseTurnDmg[]; @@ -288,5 +289,9 @@ extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; extern const u8 BattleScript_82DBEE3[]; +extern const u8 gUnknown_81D9192[]; +extern const u8 gUnknown_81D9180[]; +extern const u8 BattleScript_IntimidateActivates[]; +extern const u8 BattleScript_IntimidateActivatesEnd3[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index adfa10798..dfe7be60a 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -10,27 +10,27 @@ #define MOVE_LIMITATION_TAUNT (1 << 4) #define MOVE_LIMITATION_IMPRISON (1 << 5) -#define ABILITYEFFECT_ON_SWITCHIN 0x0 -#define ABILITYEFFECT_ENDTURN 0x1 -#define ABILITYEFFECT_MOVES_BLOCK 0x2 -#define ABILITYEFFECT_ABSORBING 0x3 -#define ABILITYEFFECT_CONTACT 0x4 -#define ABILITYEFFECT_IMMUNITY 0x5 -#define ABILITYEFFECT_FORECAST 0x6 -#define ABILITYEFFECT_SYNCHRONIZE 0x7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 -#define ABILITYEFFECT_INTIMIDATE1 0x9 -#define ABILITYEFFECT_INTIMIDATE2 0xA -#define ABILITYEFFECT_TRACE 0xB -#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC -#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD -#define ABILITYEFFECT_FIELD_SPORT 0xE -#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF -#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 -#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 -#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 -#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 -#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_MOVE_END 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF // TODO: Is it correct? +#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 +#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF #define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0)) #define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0)) diff --git a/include/field_weather.h b/include/field_weather.h index c3ecd4fa6..477ca0e76 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,5 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); +u8 GetCurrentWeather(void); #endif // GUARD_WEATHER_H diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 0d389aa7f..913068aed 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -479,7 +479,7 @@ void sub_80C71A8(u8 a) BATTLE_HISTORY->usedMoves[a / 2][i] = 0; } -void sub_80C71D0(u8 a, u8 b) +void RecordAbilityBattle(u8 a, u8 b) { if (GetBattlerSide(a) == 0) BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b; diff --git a/src/battle_util.c b/src/battle_util.c index 8b0383929..55f674215 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7,16 +7,20 @@ #include "random.h" #include "pokemon.h" #include "string_util.h" +#include "field_weather.h" #include "battle.h" #include "battle_anim.h" #include "battle_scripts.h" #include "battle_message.h" #include "battle_controllers.h" +#include "battle_ai_script_commands.h" #include "constants/battle.h" #include "constants/moves.h" #include "constants/items.h" #include "constants/species.h" +#include "constants/weather.h" #include "constants/abilities.h" +#include "constants/pokemon.h" #include "constants/battle_anim.h" #include "constants/hold_effects.h" #include "constants/battle_move_effects.h" @@ -82,7 +86,7 @@ void PressurePPLose(u8 target, u8 attacker, u16 move) if (gBattleMons[attacker].pp[i]) --gBattleMons[attacker].pp[i]; if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[i])) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[i])) { gActiveBattler = attacker; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); @@ -112,8 +116,8 @@ void PressurePPLoseOnUsingImprison(u8 attacker) } } if (imprisonPos != 4 - && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos])) + && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos])) { gActiveBattler = attacker; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]); @@ -140,8 +144,8 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker) } } if (perishSongPos != MAX_MON_MOVES - && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos])) + && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos])) { gActiveBattler = attacker; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); @@ -192,14 +196,14 @@ void CancelMultiTurnMoves(u8 battler) bool8 WasUnableToUseMove(u8 battler) { if (gProtectStructs[battler].prlzImmobility - || gProtectStructs[battler].targetNotAffected - || gProtectStructs[battler].usedImprisonedMove - || gProtectStructs[battler].loveImmobility - || gProtectStructs[battler].usedDisabledMove - || gProtectStructs[battler].usedTauntedMove - || gProtectStructs[battler].flag2Unknown - || gProtectStructs[battler].flinchImmobility - || gProtectStructs[battler].confusionSelfDmg) + || gProtectStructs[battler].targetNotAffected + || gProtectStructs[battler].usedImprisonedMove + || gProtectStructs[battler].loveImmobility + || gProtectStructs[battler].usedDisabledMove + || gProtectStructs[battler].usedTauntedMove + || gProtectStructs[battler].flag2Unknown + || gProtectStructs[battler].flinchImmobility + || gProtectStructs[battler].confusionSelfDmg) return TRUE; else return FALSE; @@ -545,8 +549,8 @@ u8 DoFieldEndTurnEffects(void) { gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBattler] != 0 - && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 - && gBattleMons[gActiveBattler].hp != 0) + && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 + && gBattleMons[gActiveBattler].hp != 0) { gBattlerTarget = gActiveBattler; BattleScriptExecute(BattleScript_WishComesTrue); @@ -693,8 +697,8 @@ u8 DoBattlerEndTurnEffects(void) { case ENDTURN_INGRAIN: // ingrain if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED) - && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP - && gBattleMons[gActiveBattler].hp != 0) + && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP + && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; if (gBattleMoveDamage == 0) @@ -722,8 +726,8 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_LEECH_SEED: // leech seed if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) - && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 - && gBattleMons[gActiveBattler].hp != 0) + && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 + && gBattleMons[gActiveBattler].hp != 0) { gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; @@ -891,7 +895,7 @@ u8 DoBattlerEndTurnEffects(void) if (WasUnableToUseMove(gActiveBattler)) CancelMultiTurnMoves(gActiveBattler); else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) - && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) + && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) { gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS); if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)) @@ -938,7 +942,7 @@ u8 DoBattlerEndTurnEffects(void) gDisableStructs[gActiveBattler].encoreTimer = 0; } else if (--gDisableStructs[gActiveBattler].encoreTimer == 0 - || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) + || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) { gDisableStructs[gActiveBattler].encoredMove = 0; gDisableStructs[gActiveBattler].encoreTimer = 0; @@ -1011,8 +1015,8 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } ++gBattleStruct->wishPerishSongBattlerId; if (gWishFutureKnock.futureSightCounter[gActiveBattler] != 0 - && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 - && gBattleMons[gActiveBattler].hp != 0) + && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 + && gBattleMons[gActiveBattler].hp != 0) { if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT) gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -1093,8 +1097,8 @@ bool8 HandleFaintedMonActions(void) { gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId; if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 - && !(gBattleStruct->givenExpMons & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]]) - && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) + && !(gBattleStruct->givenExpMons & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]]) + && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) { BattleScriptExecute(BattleScript_GiveExp); gBattleStruct->faintedActionsState = 2; @@ -1119,7 +1123,7 @@ bool8 HandleFaintedMonActions(void) { gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId; if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 - && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) + && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId])) { BattleScriptExecute(BattleScript_HandleFaintedMon); gBattleStruct->faintedActionsState = 5; @@ -1145,3 +1149,1177 @@ bool8 HandleFaintedMonActions(void) } while (gBattleStruct->faintedActionsState != FAINTED_ACTIONS_MAX_CASE); return FALSE; } + +void TryClearRageStatuses(void) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMoveByBattler[i] != MOVE_RAGE) + gBattleMons[i].status2 &= ~(STATUS2_RAGE); +} + +enum +{ + CANCELLER_FLAGS, + CANCELLER_ASLEEP, + CANCELLER_FROZEN, + CANCELLER_TRUANT, + CANCELLER_RECHARGE, + CANCELLER_FLINCH, + CANCELLER_DISABLED, + CANCELLER_TAUNTED, + CANCELLER_IMPRISONED, + CANCELLER_CONFUSED, + CANCELLER_PARALYSED, + CANCELLER_GHOST, + CANCELLER_IN_LOVE, + CANCELLER_BIDE, + CANCELLER_THAW, + CANCELLER_END, +}; + +u8 AtkCanceller_UnableToUseMove(void) +{ + u8 effect = 0; + s32 *bideDmg = &gBattleScripting.bideDmg; + + do + { + switch (gBattleStruct->atkCancellerTracker) + { + case CANCELLER_FLAGS: // flags clear + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_DESTINY_BOND); + gStatuses3[gBattlerAttacker] &= ~(STATUS3_GRUDGE); + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_ASLEEP: // check being asleep + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) + { + if (UproarWakeUpCheck(gBattlerAttacker)) + { + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + else + { + u8 toSub; + + if (gBattleMons[gBattlerAttacker].ability == ABILITY_EARLY_BIRD) + toSub = 2; + else + toSub = 1; + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub) + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); + else + gBattleMons[gBattlerAttacker].status1 -= toSub; + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) + { + if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 2; + } + } + else + { + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + } + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_FROZEN: // check being frozen + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) + { + if (Random() % 5) + { + if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + else + { + ++gBattleStruct->atkCancellerTracker; + break; + } + } + else // unfreeze + { + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + effect = 2; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_TRUANT: // truant + if (gBattleMons[gBattlerAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBattlerAttacker].truantCounter) + { + CancelMultiTurnMoves(gBattlerAttacker); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + gMoveResultFlags |= MOVE_RESULT_MISSED; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_RECHARGE: // recharge + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE) + { + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RECHARGE); + gDisableStructs[gBattlerAttacker].rechargeTimer = 0; + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_FLINCH: // flinch + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED) + { + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_FLINCHED); + gProtectStructs[gBattlerAttacker].flinchImmobility = 1; + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_DISABLED: // disabled move + if (gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != 0) + { + gProtectStructs[gBattlerAttacker].usedDisabledMove = 1; + gBattleScripting.battler = gBattlerAttacker; + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_TAUNTED: // taunt + if (gDisableStructs[gBattlerAttacker].tauntTimer && gBattleMoves[gCurrentMove].power == 0) + { + gProtectStructs[gBattlerAttacker].usedTauntedMove = 1; + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_IMPRISONED: // imprisoned + if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) + { + gProtectStructs[gBattlerAttacker].usedImprisonedMove = 1; + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_CONFUSED: // confusion + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) + { + --gBattleMons[gBattlerAttacker].status2; + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) + { + if (Random() & 1) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + BattleScriptPushCursor(); + } + else // confusion dmg + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlerTarget = gBattlerAttacker; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker); + gProtectStructs[gBattlerAttacker].confusionSelfDmg = 1; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; + } + else // snapped out of confusion + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; + } + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_PARALYSED: // paralysis + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && (Random() % 4) == 0) + { + gProtectStructs[gBattlerAttacker].prlzImmobility = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_GHOST: // GHOST in pokemon tower + if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + gBattlescriptCurrInstr = gUnknown_81D9180; + else + gBattlescriptCurrInstr = gUnknown_81D9192; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_IN_LOVE: // infatuation + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) + { + gBattleScripting.battler = CountTrailingZeroBits((gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) >> 0x10); + if (Random() & 1) + { + BattleScriptPushCursor(); + } + else + { + BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gProtectStructs[gBattlerAttacker].loveImmobility = 1; + CancelMultiTurnMoves(gBattlerAttacker); + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_BIDE: // bide + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE) + { + gBattleMons[gBattlerAttacker].status2 -= 0x100; + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE) + { + gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; + } + else + { + if (gTakenDmg[gBattlerAttacker]) + { + gCurrentMove = MOVE_BIDE; + *bideDmg = gTakenDmg[gBattlerAttacker] * 2; + gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker]; + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlescriptCurrInstr = BattleScript_BideAttack; + } + else + { + gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; + } + } + effect = 1; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_THAW: // move thawing + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) + { + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + effect = 2; + } + ++gBattleStruct->atkCancellerTracker; + break; + case CANCELLER_END: + break; + } + + } while (gBattleStruct->atkCancellerTracker != CANCELLER_END && !effect); + if (effect == 2) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + } + return effect; +} + +bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) +{ + u8 playerId, flankId; + struct Pokemon *party; + s32 i; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + return FALSE; + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + playerId = GetBankMultiplayerId(battler); + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + flankId = GetLinkTrainerFlankId(playerId); + for (i = flankId * 3; i < flankId * 3 + 3; ++i) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + break; + } + return (i == flankId * 3 + 3); + } + else + { + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + { + playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + flankId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + party = gEnemyParty; + } + else + { + playerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + flankId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + party = gPlayerParty; + } + if (partyIdBattlerOn1 == PARTY_SIZE) + partyIdBattlerOn1 = gBattlerPartyIndexes[playerId]; + if (partyIdBattlerOn2 == PARTY_SIZE) + partyIdBattlerOn2 = gBattlerPartyIndexes[flankId]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && i != partyIdBattlerOn1 + && i != partyIdBattlerOn2 + && i != *(gBattleStruct->monToSwitchIntoId + playerId) + && i != flankId[gBattleStruct->monToSwitchIntoId]) + break; + } + return (i == PARTY_SIZE); + } + } +} + +enum +{ + CASTFORM_NO_CHANGE, + CASTFORM_TO_NORMAL, + CASTFORM_TO_FIRE, + CASTFORM_TO_WATER, + CASTFORM_TO_ICE, +}; + +u8 CastformDataTypeChange(u8 battler) +{ + u8 formChange = 0; + if (gBattleMons[battler].species != SPECIES_CASTFORM || gBattleMons[battler].ability != ABILITY_FORECAST || gBattleMons[battler].hp == 0) + return CASTFORM_NO_CHANGE; + if (!WEATHER_HAS_EFFECT && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) + { + SET_BATTLER_TYPE(battler, TYPE_NORMAL); + return CASTFORM_TO_NORMAL; + } + if (!WEATHER_HAS_EFFECT) + return CASTFORM_NO_CHANGE; + if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) + { + SET_BATTLER_TYPE(battler, TYPE_NORMAL); + formChange = CASTFORM_TO_NORMAL; + } + if (gBattleWeather & WEATHER_SUN_ANY && !IS_BATTLER_OF_TYPE(battler, TYPE_FIRE)) + { + SET_BATTLER_TYPE(battler, TYPE_FIRE); + formChange = CASTFORM_TO_FIRE; + } + if (gBattleWeather & WEATHER_RAIN_ANY && !IS_BATTLER_OF_TYPE(battler, TYPE_WATER)) + { + SET_BATTLER_TYPE(battler, TYPE_WATER); + formChange = CASTFORM_TO_WATER; + } + if (gBattleWeather & WEATHER_HAIL_ANY && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE)) + { + SET_BATTLER_TYPE(battler, TYPE_ICE); + formChange = CASTFORM_TO_ICE; + } + return formChange; +} + +u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg) +{ + u8 effect = 0; + struct Pokemon *pokeAtk; + struct Pokemon *pokeDef; + u16 speciesAtk; + u16 speciesDef; + u32 pidAtk; + u32 pidDef; + + if (gBattlerAttacker >= gBattlersCount) + gBattlerAttacker = battler; + + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]; + else + pokeAtk = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]]; + if (gBattlerTarget >= gBattlersCount) + gBattlerTarget = battler; + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + pokeDef = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]; + else + pokeDef = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]; + speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); + pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); + speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); + pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // Why isn't that check done at the beginning? + { + u8 moveType; + s32 i; + u8 side; + u8 target1; + + if (special) + gLastUsedAbility = special; + else + gLastUsedAbility = gBattleMons[battler].ability; + if (!moveArg) + moveArg = gCurrentMove; + GET_MOVE_TYPE(moveArg, moveType); + if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST + && (gLastUsedAbility == ABILITY_INTIMIDATE || gLastUsedAbility == ABILITY_TRACE)) + return effect; + switch (caseID) + { + case ABILITYEFFECT_ON_SWITCHIN: // 0 + if (gBattlerAttacker >= gBattlersCount) + gBattlerAttacker = battler; + switch (gLastUsedAbility) + { + case ABILITYEFFECT_SWITCH_IN_WEATHER: + switch (GetCurrentWeather()) + { + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + if (!(gBattleWeather & WEATHER_RAIN_ANY)) + { + gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); + gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES; + gBattleScripting.battler = battler; + ++effect; + } + break; + case WEATHER_SANDSTORM: + if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleScripting.battler = battler; + ++effect; + } + break; + case WEATHER_DROUGHT: + if (!(gBattleWeather & WEATHER_SUN_ANY)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES; + gBattleScripting.battler = battler; + ++effect; + } + break; + } + if (effect) + { + gBattleCommunication[MULTISTRING_CHOOSER] = GetCurrentWeather(); + BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); + } + break; + case ABILITY_DRIZZLE: + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates); + gBattleScripting.battler = battler; + ++effect; + } + break; + case ABILITY_SAND_STREAM: + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates); + gBattleScripting.battler = battler; + ++effect; + } + break; + case ABILITY_DROUGHT: + if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates); + gBattleScripting.battler = battler; + ++effect; + } + break; + case ABILITY_INTIMIDATE: + if (!(gSpecialStatuses[battler].intimidatedMon)) + { + gStatuses3[battler] |= STATUS3_INTIMIDATE_POKES; + gSpecialStatuses[battler].intimidatedMon = 1; + } + break; + case ABILITY_FORECAST: + effect = CastformDataTypeChange(battler); + if (effect != 0) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + gBattleScripting.battler = battler; + *(&gBattleStruct->formToChangeInto) = effect - 1; + } + break; + case ABILITY_TRACE: + if (!(gSpecialStatuses[battler].traced)) + { + gStatuses3[battler] |= STATUS3_TRACE; + gSpecialStatuses[battler].traced = 1; + } + break; + case ABILITY_CLOUD_NINE: + case ABILITY_AIR_LOCK: + { + for (target1 = 0; target1 < gBattlersCount; ++target1) + { + effect = CastformDataTypeChange(target1); + if (effect != 0) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + gBattleScripting.battler = target1; + *(&gBattleStruct->formToChangeInto) = effect - 1; + break; + } + } + } + break; + } + break; + case ABILITYEFFECT_ENDTURN: // 1 + if (gBattleMons[battler].hp != 0) + { + gBattlerAttacker = battler; + switch (gLastUsedAbility) + { + case ABILITY_RAIN_DISH: + if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) + && gBattleMons[battler].maxHP > gBattleMons[battler].hp) + { + gLastUsedAbility = ABILITY_RAIN_DISH; // why + BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); + gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + ++effect; + } + break; + case ABILITY_SHED_SKIN: + if ((gBattleMons[battler].status1 & STATUS1_ANY) && (Random() % 3) == 0) + { + if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON)) + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + if (gBattleMons[battler].status1 & STATUS1_SLEEP) + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + if (gBattleMons[battler].status1 & STATUS1_PARALYSIS) + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + if (gBattleMons[battler].status1 & STATUS1_BURN) + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + if (gBattleMons[battler].status1 & STATUS1_FREEZE) + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + gBattleMons[battler].status1 = 0; + gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch + gBattleScripting.battler = gActiveBattler = battler; + BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); + MarkBattlerForControllerExec(gActiveBattler); + ++effect; + } + break; + case ABILITY_SPEED_BOOST: + if (gBattleMons[battler].statStages[STAT_SPEED] < 0xC && gDisableStructs[battler].isFirstTurn != 2) + { + ++gBattleMons[battler].statStages[STAT_SPEED]; + gBattleScripting.animArg1 = 0x11; + gBattleScripting.animArg2 = 0; + BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); + gBattleScripting.battler = battler; + ++effect; + } + break; + case ABILITY_TRUANT: + gDisableStructs[gBattlerAttacker].truantCounter ^= 1; + break; + } + } + break; + case ABILITYEFFECT_MOVES_BLOCK: // 2 + if (gLastUsedAbility == ABILITY_SOUNDPROOF) + { + for (i = 0; sSoundMovesTable[i] != 0xFFFF; ++i) + if (sSoundMovesTable[i] == moveArg) + break; + if (sSoundMovesTable[i] != 0xFFFF) + { + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) + gHitMarker |= HITMARKER_NO_PPDEDUCT; + gBattlescriptCurrInstr = BattleScript_SoundproofProtected; + effect = 1; + } + } + break; + case ABILITYEFFECT_ABSORBING: // 3 + if (moveArg) + { + switch (gLastUsedAbility) + { + case ABILITY_VOLT_ABSORB: + if (moveType == TYPE_ELECTRIC && gBattleMoves[moveArg].power != 0) + { + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_WATER_ABSORB: + if (moveType == TYPE_WATER && gBattleMoves[moveArg].power != 0) + { + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE && !(gBattleMons[battler].status1 & STATUS1_FREEZE)) + { + if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE; + effect = 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; + } + } + break; + } + if (effect == 1) + { + if (gBattleMons[battler].maxHP == gBattleMons[battler].hp) + { + if ((gProtectStructs[gBattlerAttacker].notFirstStrike)) + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless; + else + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless_PPLoss; + } + else + { + gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + } + } + break; + case ABILITYEFFECT_MOVE_END: // Think contact abilities. + switch (gLastUsedAbility) + { + case ABILITY_COLOR_CHANGE: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && moveArg != MOVE_STRUGGLE + && gBattleMoves[moveArg].power != 0 + && TARGET_TURN_DAMAGED + && !IS_BATTLER_OF_TYPE(battler, moveType) + && gBattleMons[battler].hp != 0) + { + SET_BATTLER_TYPE(battler, moveType); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; + ++effect; + } + break; + case ABILITY_ROUGH_SKIN: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT)) + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; + ++effect; + } + break; + case ABILITY_EFFECT_SPORE: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (Random() % 10) == 0) + { + do + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + + if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS + gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITY_POISON_POINT: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITY_STATIC: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITY_FLAME_BODY: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && TARGET_TURN_DAMAGED + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITY_CUTE_CHARM: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerAttacker].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && TARGET_TURN_DAMAGED + && gBattleMons[gBattlerTarget].hp != 0 + && (Random() % 3) == 0 + && gBattleMons[gBattlerAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS) + { + gBattleMons[gBattlerAttacker].status2 |= STATUS2_INFATUATED_WITH(gBattlerTarget); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + ++effect; + } + break; + } + break; + case ABILITYEFFECT_IMMUNITY: // 5 + for (battler = 0; battler < gBattlersCount; battler++) + { + switch (gBattleMons[battler].ability) + { + case ABILITY_IMMUNITY: + if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON | STATUS1_TOXIC_COUNTER)) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[battler].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[battler].status1 & STATUS1_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[battler].status1 & STATUS1_SLEEP) + { + gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[battler].status1 & STATUS1_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[battler].status1 & STATUS1_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[battler].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[battler].status1 = 0; + break; + case 2: // get rid of confusion + gBattleMons[battler].status2 &= ~(STATUS2_CONFUSION); + break; + case 3: // get rid of infatuation + gBattleMons[battler].status2 &= ~(STATUS2_INFATUATION); + break; + } + + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + gBattleScripting.battler = battler; + gActiveBattler = battler; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + return effect; + } + } + break; + case ABILITYEFFECT_FORECAST: // 6 + for (battler = 0; battler < gBattlersCount; ++battler) + { + if (gBattleMons[battler].ability == ABILITY_FORECAST) + { + effect = CastformDataTypeChange(battler); + if (effect) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + gBattleScripting.battler = battler; + *(&gBattleStruct->formToChangeInto) = effect - 1; + return effect; + } + } + } + break; + case ABILITYEFFECT_SYNCHRONIZE: // 7 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; + gBattleScripting.battler = gBattlerTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect; + gBattleScripting.battler = gBattlerAttacker; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + ++effect; + } + break; + case ABILITYEFFECT_INTIMIDATE1: // 9 + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3); + gBattleStruct->intimidateBattler = i; + ++effect; + break; + } + } + break; + case ABILITYEFFECT_TRACE: // 11 + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) + { + u8 target2; + + side = (GetBattlerPosition(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon + target1 = GetBattlerAtPosition(side); + target2 = GetBattlerAtPosition(side + BIT_FLANK); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 + && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + gActiveBattler = GetBattlerAtPosition(((Random() & 1) * 2) | side); + gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + ++effect; + } + else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) + { + gActiveBattler = target1; + gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + ++effect; + } + else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + gActiveBattler = target2; + gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + ++effect; + } + } + else + { + gActiveBattler = target1; + if (gBattleMons[target1].ability && gBattleMons[target1].hp) + { + gBattleMons[i].ability = gBattleMons[target1].ability; + gLastUsedAbility = gBattleMons[target1].ability; + ++effect; + } + } + if (effect) + { + BattleScriptPushCursorAndCallback(BattleScript_TraceActivates); + gStatuses3[i] &= ~(STATUS3_TRACE); + gBattleScripting.battler = i; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]) + PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility) + break; + } + } + } + break; + case ABILITYEFFECT_INTIMIDATE2: // 10 + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_IntimidateActivates; + gBattleStruct->intimidateBattler = i; + ++effect; + break; + } + } + break; + case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 + side = GetBattlerSide(battler); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_BATTLER_SIDE: // 13 + side = GetBattlerSide(battler); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_FIELD_SPORT: // 14 + switch (gLastUsedAbility) + { + case 0xFD: + for (i = 0; i < gBattlersCount; ++i) + if (gStatuses3[i] & STATUS3_MUDSPORT) + effect = i + 1; + break; + case 0xFE: + for (i = 0; i < gBattlersCount; ++i) + if (gStatuses3[i] & STATUS3_WATERSPORT) + effect = i + 1; + break; + default: + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + } + break; + case ABILITYEFFECT_CHECK_ON_FIELD: // 19 + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER: // 15 + side = GetBattlerSide(battler); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + break; + } + } + if (!effect) + { + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ability && GetBattlerSide(i) == side && i != battler) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + } + break; + case ABILITYEFFECT_COUNT_OTHER_SIDE: // 16 + side = GetBattlerSide(battler); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + ++effect; + } + } + break; + case ABILITYEFFECT_COUNT_BATTLER_SIDE: // 17 + side = GetBattlerSide(battler); + for (i = 0; i < gBattlersCount; ++i) + { + if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + ++effect; + } + } + break; + case ABILITYEFFECT_COUNT_ON_FIELD: // 18 + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability == ability && i != battler) + { + gLastUsedAbility = ability; + ++effect; + } + } + break; + } + if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF) + RecordAbilityBattle(battler, gLastUsedAbility); + } + return effect; +} diff --git a/src/pokemon.c b/src/pokemon.c index 615bf55f1..ec90f6cd4 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2567,7 +2567,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de } // flash fire triggered - if ((gBattleResources->flags->flags[battlerIdAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE) + if ((gBattleResources->flags->flags[battlerIdAtk] & RESOURCE_FLAG_FLASH_FIRE) && type == TYPE_FIRE) damage = (15 * damage) / 10; } diff --git a/sym_ewram.txt b/sym_ewram.txt index e3c0c28d6..cc42726a0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -216,7 +216,7 @@ gUnknown_2023C0C: @ 2023C0C gUnknown_2023C30: @ 2023C30 .space 0x4 -gChosenMoveByBattler: @ 2023C34 +gUnknown_2023C34: @ 2023C34 .space 0x110 gBattlerSpriteIds: @ 2023D44 @@ -306,7 +306,7 @@ gUnknown_2023DB8: @ 2023DB8 gUnknown_2023DC0: @ 2023DC0 .space 0x4 -gUnknown_2023DC4: @ 2023DC4 +gChosenMoveByBattler: @ 2023DC4 .space 0x8 gMoveResultFlags: @ 2023DCC From c2964e818143757ca5586b1a811669a1c287e870 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 2 Aug 2019 05:05:35 +0800 Subject: [PATCH 012/100] ported battle_util from pokeem --- asm/battle_2.s | 154 +- asm/battle_script_commands.s | 72 +- asm/battle_util.s | 3283 ------------------------------- data/data.s | 2 +- include/battle.h | 4 +- include/battle_scripts.h | 75 +- include/battle_util.h | 52 +- include/constants/pokemon.h | 6 + ld_script.txt | 1 - src/battle_ai_script_commands.c | 2 +- src/battle_util.c | 882 ++++++++- sym_ewram.txt | 8 +- 12 files changed, 1032 insertions(+), 3509 deletions(-) delete mode 100644 asm/battle_util.s diff --git a/asm/battle_2.s b/asm/battle_2.s index a80099a6a..f29f29fe6 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -7848,7 +7848,7 @@ _08013C58: ldrb r0, [r0] cmp r0, 0 beq _08013CB0 - ldr r1, _08013CA4 @ =gUnknown_2023BE3 + ldr r1, _08013CA4 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] ldr r1, _08013CA8 @ =gBattleMainFunc @@ -7867,7 +7867,7 @@ _08013C94: .4byte gBattleScripting _08013C98: .4byte gBattleMoveDamage _08013C9C: .4byte gMoveResultFlags _08013CA0: .4byte gBattleCommunication -_08013CA4: .4byte gUnknown_2023BE3 +_08013CA4: .4byte gCurrentActionFuncId _08013CA8: .4byte gBattleMainFunc _08013CAC: .4byte RunTurnActionsFunctions _08013CB0: @@ -9712,7 +9712,7 @@ _08014BB4: ands r0, r1 cmp r0, 0 bne _08014BFA - ldr r0, _08014C1C @ =gUnknown_825011C + ldr r0, _08014C1C @ =gBattleScriptingCommandsTable ldrb r1, [r4] lsls r1, 2 adds r1, r0 @@ -9731,7 +9731,7 @@ _08014C0C: .4byte gBattlescriptCurrInstr _08014C10: .4byte gSelectionBattleScripts _08014C14: .4byte gBattleControllerExecFlags _08014C18: .4byte gBitTable -_08014C1C: .4byte gUnknown_825011C +_08014C1C: .4byte gBattleScriptingCommandsTable _08014C20: ldr r3, _08014C88 @ =gBattleControllerExecFlags ldr r1, _08014C8C @ =gBitTable @@ -10927,7 +10927,7 @@ _0801555E: ldr r1, _080155A0 @ =gUnknown_2023BE2 movs r0, 0 strb r0, [r1] - ldr r1, _080155A4 @ =gUnknown_2023BE3 + ldr r1, _080155A4 @ =gCurrentActionFuncId ldr r0, _080155A8 @ =gUnknown_2023BDA movs r3, 0 ldrb r0, [r0] @@ -10957,7 +10957,7 @@ _08015598: bx r0 .align 2, 0 _080155A0: .4byte gUnknown_2023BE2 -_080155A4: .4byte gUnknown_2023BE3 +_080155A4: .4byte gCurrentActionFuncId _080155A8: .4byte gUnknown_2023BDA _080155AC: .4byte gDynamicBasePower _080155B0: .4byte gBattleStruct @@ -10973,7 +10973,7 @@ RunTurnActionsFunctions: @ 80155C8 push {r4-r6,lr} ldr r6, _0801561C @ =gBattleOutcome ldrb r0, [r6] - ldr r2, _08015620 @ =gUnknown_2023BE3 + ldr r2, _08015620 @ =gCurrentActionFuncId cmp r0, 0 beq _080155D8 movs r0, 0xC @@ -11013,7 +11013,7 @@ _080155D8: b _0801565C .align 2, 0 _0801561C: .4byte gBattleOutcome -_08015620: .4byte gUnknown_2023BE3 +_08015620: .4byte gCurrentActionFuncId _08015624: .4byte gBattleStruct _08015628: .4byte gUnknown_2023BE2 _0801562C: .4byte gUnknown_8250038 @@ -11048,7 +11048,7 @@ _0801566C: .4byte 0xfff7ffff thumb_func_start sub_8015670 sub_8015670: @ 8015670 push {r4,lr} - ldr r1, _080156A8 @ =gUnknown_2023BE3 + ldr r1, _080156A8 @ =gCurrentActionFuncId movs r0, 0 strb r0, [r1] ldr r0, _080156AC @ =gBattleTypeFlags @@ -11074,7 +11074,7 @@ sub_8015670: @ 8015670 strb r0, [r4] b _0801576E .align 2, 0 -_080156A8: .4byte gUnknown_2023BE3 +_080156A8: .4byte gCurrentActionFuncId _080156AC: .4byte gBattleTypeFlags _080156B0: .4byte gBattleTextBuff1 _080156B4: .4byte gBattleOutcome @@ -11170,7 +11170,7 @@ _08015788: .4byte sub_8015910 thumb_func_start sub_801578C sub_801578C: @ 801578C push {r4,lr} - ldr r1, _080157C4 @ =gUnknown_2023BE3 + ldr r1, _080157C4 @ =gCurrentActionFuncId movs r0, 0 strb r0, [r1] ldr r0, _080157C8 @ =gBattleTypeFlags @@ -11197,7 +11197,7 @@ sub_801578C: @ 801578C strb r0, [r4] b _08015830 .align 2, 0 -_080157C4: .4byte gUnknown_2023BE3 +_080157C4: .4byte gCurrentActionFuncId _080157C8: .4byte gBattleTypeFlags _080157CC: .4byte gBattleTextBuff1 _080157D0: .4byte gBattleOutcome @@ -11263,7 +11263,7 @@ _0801584C: .4byte sub_8015910 thumb_func_start sub_8015850 sub_8015850: @ 8015850 push {lr} - ldr r1, _08015878 @ =gUnknown_2023BE3 + ldr r1, _08015878 @ =gCurrentActionFuncId movs r0, 0 strb r0, [r1] ldr r1, _0801587C @ =gProtectStructs @@ -11282,7 +11282,7 @@ sub_8015850: @ 8015850 ldr r0, _08015888 @ =gUnknown_81D8916 b _080158A0 .align 2, 0 -_08015878: .4byte gUnknown_2023BE3 +_08015878: .4byte gCurrentActionFuncId _0801587C: .4byte gProtectStructs _08015880: .4byte gBattlerAttacker _08015884: .4byte gBattlescriptCurrInstr @@ -11313,7 +11313,7 @@ _080158B8: .4byte sub_8015910 thumb_func_start sub_80158BC sub_80158BC: @ 80158BC - ldr r1, _080158F0 @ =gUnknown_2023BE3 + ldr r1, _080158F0 @ =gCurrentActionFuncId movs r0, 0 strb r0, [r1] ldr r1, _080158F4 @ =gBattleTextBuff1 @@ -11340,7 +11340,7 @@ sub_80158BC: @ 80158BC str r0, [r1] bx lr .align 2, 0 -_080158F0: .4byte gUnknown_2023BE3 +_080158F0: .4byte gCurrentActionFuncId _080158F4: .4byte gBattleTextBuff1 _080158F8: .4byte gBattlerAttacker _080158FC: .4byte gBattlerPartyIndexes @@ -11353,7 +11353,7 @@ _0801590C: .4byte sub_8015910 thumb_func_start sub_8015910 sub_8015910: @ 8015910 push {r4-r7,lr} - ldr r0, _08015974 @ =gUnknown_2023BE3 + ldr r0, _08015974 @ =gCurrentActionFuncId ldrb r0, [r0] subs r0, 0xB lsls r0, 24 @@ -11401,7 +11401,7 @@ _08015942: bl StringCopy b _080159AA .align 2, 0 -_08015974: .4byte gUnknown_2023BE3 +_08015974: .4byte gCurrentActionFuncId _08015978: .4byte gBattleTypeFlags _0801597C: .4byte 0x00080b92 _08015980: .4byte gActiveBattler @@ -11464,7 +11464,7 @@ _08015A04: ldr r0, [r0] cmp r0, 0 bne _08015A1E - ldr r1, _08015A28 @ =gUnknown_825011C + ldr r1, _08015A28 @ =gBattleScriptingCommandsTable ldr r0, _08015A2C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] @@ -11478,7 +11478,7 @@ _08015A1E: bx r0 .align 2, 0 _08015A24: .4byte gBattleControllerExecFlags -_08015A28: .4byte gUnknown_825011C +_08015A28: .4byte gBattleScriptingCommandsTable _08015A2C: .4byte gBattlescriptCurrInstr thumb_func_end sub_8015910 @@ -11708,7 +11708,7 @@ _08015BFC: .4byte gEnemyParty thumb_func_start RunBattleScriptCommands_PopCallbacksStack RunBattleScriptCommands_PopCallbacksStack: @ 8015C00 push {lr} - ldr r0, _08015C3C @ =gUnknown_2023BE3 + ldr r0, _08015C3C @ =gCurrentActionFuncId ldrb r0, [r0] subs r0, 0xB lsls r0, 24 @@ -11738,7 +11738,7 @@ _08015C24: str r0, [r2] b _08015C62 .align 2, 0 -_08015C3C: .4byte gUnknown_2023BE3 +_08015C3C: .4byte gCurrentActionFuncId _08015C40: .4byte gBattleResources _08015C44: .4byte gBattleMainFunc _08015C48: @@ -11746,7 +11746,7 @@ _08015C48: ldr r0, [r0] cmp r0, 0 bne _08015C62 - ldr r1, _08015C6C @ =gUnknown_825011C + ldr r1, _08015C6C @ =gBattleScriptingCommandsTable ldr r0, _08015C70 @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] @@ -11759,18 +11759,18 @@ _08015C62: bx r0 .align 2, 0 _08015C68: .4byte gBattleControllerExecFlags -_08015C6C: .4byte gUnknown_825011C +_08015C6C: .4byte gBattleScriptingCommandsTable _08015C70: .4byte gBattlescriptCurrInstr thumb_func_end RunBattleScriptCommands_PopCallbacksStack - thumb_func_start sub_8015C74 -sub_8015C74: @ 8015C74 + thumb_func_start RunBattleScriptCommands +RunBattleScriptCommands: @ 8015C74 push {lr} ldr r0, _08015C94 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 bne _08015C90 - ldr r1, _08015C98 @ =gUnknown_825011C + ldr r1, _08015C98 @ =gBattleScriptingCommandsTable ldr r0, _08015C9C @ =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0] @@ -11783,9 +11783,9 @@ _08015C90: bx r0 .align 2, 0 _08015C94: .4byte gBattleControllerExecFlags -_08015C98: .4byte gUnknown_825011C +_08015C98: .4byte gBattleScriptingCommandsTable _08015C9C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8015C74 + thumb_func_end RunBattleScriptCommands thumb_func_start sub_8015CA0 sub_8015CA0: @ 8015CA0 @@ -11817,7 +11817,7 @@ sub_8015CA0: @ 8015CA0 ands r2, r0 cmp r2, 0 beq _08015CF8 - ldr r1, _08015CF4 @ =gUnknown_2023BE3 + ldr r1, _08015CF4 @ =gCurrentActionFuncId movs r0, 0xC b _0801634C .align 2, 0 @@ -11826,7 +11826,7 @@ _08015CE4: .4byte gBattlerByTurnOrder _08015CE8: .4byte gUnknown_2023BE2 _08015CEC: .4byte gBattleStruct _08015CF0: .4byte gBitTable -_08015CF4: .4byte gUnknown_2023BE3 +_08015CF4: .4byte gCurrentActionFuncId _08015CF8: ldr r1, _08015D6C @ =gCritMultiplier movs r0, 0x1 @@ -11843,8 +11843,8 @@ _08015CF8: strb r2, [r0] ldr r0, _08015D7C @ =gBattleCommunication strb r2, [r0, 0x6] - ldr r2, _08015D80 @ =gUnknown_2023D48 - ldr r3, _08015D84 @ =gUnknown_2023D49 + ldr r2, _08015D80 @ =gCurrMovePos + ldr r3, _08015D84 @ =gChosenMovePos mov r9, r3 ldrb r0, [r6] ldr r4, _08015D88 @ =gBattleStruct @@ -11891,8 +11891,8 @@ _08015D70: .4byte gBattleScripting _08015D74: .4byte gMoveResultFlags _08015D78: .4byte gUnknown_2023D72 _08015D7C: .4byte gBattleCommunication -_08015D80: .4byte gUnknown_2023D48 -_08015D84: .4byte gUnknown_2023D49 +_08015D80: .4byte gCurrMovePos +_08015D84: .4byte gChosenMovePos _08015D88: .4byte gBattleStruct _08015D8C: .4byte gProtectStructs _08015D90: .4byte gCurrentMove @@ -12580,7 +12580,7 @@ _0801632C: adds r0, r3 ldr r0, [r0] str r0, [r4] - ldr r1, _08016370 @ =gUnknown_2023BE3 + ldr r1, _08016370 @ =gCurrentActionFuncId movs r0, 0xA _0801634C: strb r0, [r1] @@ -12597,7 +12597,7 @@ _08016360: .4byte gBattlescriptCurrInstr _08016364: .4byte gUnknown_81D65A8 _08016368: .4byte gBattleMoves _0801636C: .4byte gCurrentMove -_08016370: .4byte gUnknown_2023BE3 +_08016370: .4byte gCurrentActionFuncId thumb_func_end sub_8015CA0 thumb_func_start sub_8016374 @@ -12644,7 +12644,7 @@ sub_8016374: @ 8016374 ldr r1, _08016408 @ =gBattlescriptCurrInstr ldr r0, _0801640C @ =gUnknown_81D894D str r0, [r1] - ldr r1, _08016410 @ =gUnknown_2023BE3 + ldr r1, _08016410 @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] ldr r1, _08016414 @ =gBattleResults @@ -12670,7 +12670,7 @@ _08016400: .4byte gBattleStruct _08016404: .4byte gBattleScripting _08016408: .4byte gBattlescriptCurrInstr _0801640C: .4byte gUnknown_81D894D -_08016410: .4byte gUnknown_2023BE3 +_08016410: .4byte gCurrentActionFuncId _08016414: .4byte gBattleResults thumb_func_end sub_8016374 @@ -12743,13 +12743,13 @@ _0801649C: ldr r1, _080164BC @ =gUnknown_81D99FC ldr r1, [r1] str r1, [r0] - ldr r1, _080164C0 @ =gUnknown_2023BE3 + ldr r1, _080164C0 @ =gCurrentActionFuncId mov r10, r1 b _0801671E .align 2, 0 _080164B8: .4byte gBattlescriptCurrInstr _080164BC: .4byte gUnknown_81D99FC -_080164C0: .4byte gUnknown_2023BE3 +_080164C0: .4byte gCurrentActionFuncId _080164C4: movs r0, 0xAF lsls r0, 1 @@ -12759,13 +12759,13 @@ _080164C4: ldr r1, _080164E0 @ =gUnknown_81D99FC ldr r1, [r1, 0x4] str r1, [r0] - ldr r2, _080164E4 @ =gUnknown_2023BE3 + ldr r2, _080164E4 @ =gCurrentActionFuncId mov r10, r2 b _0801671E .align 2, 0 _080164DC: .4byte gBattlescriptCurrInstr _080164E0: .4byte gUnknown_81D99FC -_080164E4: .4byte gUnknown_2023BE3 +_080164E4: .4byte gCurrentActionFuncId _080164E8: ldrb r0, [r4] bl GetBattlerSide @@ -12777,13 +12777,13 @@ _080164E8: ldr r1, [r1] str r1, [r0] _080164FC: - ldr r0, _0801650C @ =gUnknown_2023BE3 + ldr r0, _0801650C @ =gCurrentActionFuncId mov r10, r0 b _0801671E .align 2, 0 _08016504: .4byte gBattlescriptCurrInstr _08016508: .4byte gUnknown_81D99E4 -_0801650C: .4byte gUnknown_2023BE3 +_0801650C: .4byte gCurrentActionFuncId _08016510: ldr r3, _08016548 @ =gBattleScripting ldrb r0, [r4] @@ -12802,7 +12802,7 @@ _08016510: ldr r6, _08016554 @ =gUnknown_81D99E4 mov r12, r3 adds r7, r2, 0 - ldr r2, _08016558 @ =gUnknown_2023BE3 + ldr r2, _08016558 @ =gCurrentActionFuncId mov r10, r2 cmp r0, 0x4 bls _0801653C @@ -12818,7 +12818,7 @@ _08016548: .4byte gBattleScripting _0801654C: .4byte gBattleStruct _08016550: .4byte gBattlescriptCurrInstr _08016554: .4byte gUnknown_81D99E4 -_08016558: .4byte gUnknown_2023BE3 +_08016558: .4byte gCurrentActionFuncId _0801655C: .4byte _08016560 .align 2, 0 _08016560: @@ -12848,7 +12848,7 @@ _08016574: ldr r1, _080165B4 @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _080165B8 @ =gUnknown_81D99E4 - ldr r2, _080165BC @ =gUnknown_2023BE3 + ldr r2, _080165BC @ =gCurrentActionFuncId mov r10, r2 cmp r0, 0 bne _080165A6 @@ -12862,12 +12862,12 @@ _080165AC: .4byte gBattleCommunication _080165B0: .4byte gBattlerAttacker _080165B4: .4byte gBattlescriptCurrInstr _080165B8: .4byte gUnknown_81D99E4 -_080165BC: .4byte gUnknown_2023BE3 +_080165BC: .4byte gCurrentActionFuncId _080165C0: ldr r0, _080165FC @ =gBattlescriptCurrInstr mov r9, r0 ldr r6, _08016600 @ =gUnknown_81D99E4 - ldr r1, _08016604 @ =gUnknown_2023BE3 + ldr r1, _08016604 @ =gCurrentActionFuncId mov r10, r1 mov r4, r8 adds r3, r7, 0 @@ -12898,7 +12898,7 @@ _080165D0: .align 2, 0 _080165FC: .4byte gBattlescriptCurrInstr _08016600: .4byte gUnknown_81D99E4 -_08016604: .4byte gUnknown_2023BE3 +_08016604: .4byte gCurrentActionFuncId _08016608: ldr r3, _0801663C @ =gBattleCommunication movs r0, 0x4 @@ -12923,7 +12923,7 @@ _08016608: ldr r2, _08016644 @ =gBattlescriptCurrInstr mov r9, r2 ldr r6, _08016648 @ =gUnknown_81D99E4 - ldr r0, _0801664C @ =gUnknown_2023BE3 + ldr r0, _0801664C @ =gCurrentActionFuncId mov r10, r0 b _08016706 .align 2, 0 @@ -12931,7 +12931,7 @@ _0801663C: .4byte gBattleCommunication _08016640: .4byte gBattlerAttacker _08016644: .4byte gBattlescriptCurrInstr _08016648: .4byte gUnknown_81D99E4 -_0801664C: .4byte gUnknown_2023BE3 +_0801664C: .4byte gCurrentActionFuncId _08016650: ldr r3, _080166C4 @ =gBattleTextBuff1 movs r4, 0xFD @@ -12955,7 +12955,7 @@ _08016650: ldr r1, _080166CC @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _080166D0 @ =gUnknown_81D99E4 - ldr r0, _080166D4 @ =gUnknown_2023BE3 + ldr r0, _080166D4 @ =gCurrentActionFuncId mov r10, r0 cmp r2, 0 bne _080166B4 @@ -12997,7 +12997,7 @@ _080166C4: .4byte gBattleTextBuff1 _080166C8: .4byte gBattleTextBuff2 _080166CC: .4byte gBattlescriptCurrInstr _080166D0: .4byte gUnknown_81D99E4 -_080166D4: .4byte gUnknown_2023BE3 +_080166D4: .4byte gCurrentActionFuncId _080166D8: ldr r0, _080166EC @ =gBattleTypeFlags ldr r1, [r0] @@ -13021,7 +13021,7 @@ _080166F8: ldr r1, _0801673C @ =gBattlescriptCurrInstr mov r9, r1 ldr r6, _08016740 @ =gUnknown_81D99E4 - ldr r2, _08016744 @ =gUnknown_2023BE3 + ldr r2, _08016744 @ =gCurrentActionFuncId mov r10, r2 _08016706: mov r1, r8 @@ -13052,7 +13052,7 @@ _08016734: .4byte gBattleCommunication _08016738: .4byte gBattlerAttacker _0801673C: .4byte gBattlescriptCurrInstr _08016740: .4byte gUnknown_81D99E4 -_08016744: .4byte gUnknown_2023BE3 +_08016744: .4byte gCurrentActionFuncId thumb_func_end sub_8016418 thumb_func_start sub_8016748 @@ -13328,14 +13328,14 @@ _0801694C: ldr r1, _08016980 @ =gBattlescriptCurrInstr ldr r0, _08016984 @ =gUnknown_81D893A str r0, [r1] - ldr r1, _08016988 @ =gUnknown_2023BE3 + ldr r1, _08016988 @ =gCurrentActionFuncId movs r0, 0xA b _080169D6 .align 2, 0 _0801697C: .4byte gBattleCommunication _08016980: .4byte gBattlescriptCurrInstr _08016984: .4byte gUnknown_81D893A -_08016988: .4byte gUnknown_2023BE3 +_08016988: .4byte gCurrentActionFuncId _0801698C: ldr r1, _080169B4 @ =gBattleMons ldrb r2, [r4] @@ -13354,7 +13354,7 @@ _0801698C: ldr r1, _080169C0 @ =gBattlescriptCurrInstr ldr r0, _080169C4 @ =gUnknown_81D893A str r0, [r1] - ldr r1, _080169C8 @ =gUnknown_2023BE3 + ldr r1, _080169C8 @ =gCurrentActionFuncId movs r0, 0xA b _080169D6 .align 2, 0 @@ -13363,7 +13363,7 @@ _080169B8: .4byte 0x0400e000 _080169BC: .4byte gBattleCommunication _080169C0: .4byte gBattlescriptCurrInstr _080169C4: .4byte gUnknown_81D893A -_080169C8: .4byte gUnknown_2023BE3 +_080169C8: .4byte gCurrentActionFuncId _080169CC: ldr r0, _080169E0 @ =gBattlersCount ldrb r0, [r0] @@ -13470,7 +13470,7 @@ _08016A9C: ldr r0, _08016AB8 @ =gUnknown_81D9A04 ldr r0, [r0] str r0, [r1] - ldr r1, _08016ABC @ =gUnknown_2023BE3 + ldr r1, _08016ABC @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] pop {r4,r5} @@ -13480,7 +13480,7 @@ _08016A9C: _08016AB0: .4byte gBattleCommunication _08016AB4: .4byte gBattlescriptCurrInstr _08016AB8: .4byte gUnknown_81D9A04 -_08016ABC: .4byte gUnknown_2023BE3 +_08016ABC: .4byte gCurrentActionFuncId thumb_func_end sub_80169E8 thumb_func_start sub_8016AC0 @@ -13508,7 +13508,7 @@ sub_8016AC0: @ 8016AC0 ldr r0, _08016B18 @ =gUnknown_81D99B0 ldr r0, [r0, 0x14] str r0, [r1] - ldr r1, _08016B1C @ =gUnknown_2023BE3 + ldr r1, _08016B1C @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] bx lr @@ -13522,7 +13522,7 @@ _08016B0C: .4byte gNumSafariBalls _08016B10: .4byte gLastUsedItem _08016B14: .4byte gBattlescriptCurrInstr _08016B18: .4byte gUnknown_81D99B0 -_08016B1C: .4byte gUnknown_2023BE3 +_08016B1C: .4byte gCurrentActionFuncId thumb_func_end sub_8016AC0 thumb_func_start sub_8016B20 @@ -13582,7 +13582,7 @@ _08016B86: ldr r0, _08016BB8 @ =gUnknown_81D9A04 ldr r0, [r0, 0x8] str r0, [r1] - ldr r1, _08016BBC @ =gUnknown_2023BE3 + ldr r1, _08016BBC @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] pop {r4-r7} @@ -13597,7 +13597,7 @@ _08016BAC: .4byte gBattle_BG0_Y _08016BB0: .4byte gBattleStruct _08016BB4: .4byte gBattlescriptCurrInstr _08016BB8: .4byte gUnknown_81D9A04 -_08016BBC: .4byte gUnknown_2023BE3 +_08016BBC: .4byte gCurrentActionFuncId thumb_func_end sub_8016B20 thumb_func_start sub_8016BC0 @@ -13657,7 +13657,7 @@ _08016C26: ldr r0, _08016C58 @ =gUnknown_81D9A04 ldr r0, [r0, 0x4] str r0, [r1] - ldr r1, _08016C5C @ =gUnknown_2023BE3 + ldr r1, _08016C5C @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] pop {r4-r7} @@ -13672,7 +13672,7 @@ _08016C4C: .4byte gBattle_BG0_Y _08016C50: .4byte gBattleStruct _08016C54: .4byte gBattlescriptCurrInstr _08016C58: .4byte gUnknown_81D9A04 -_08016C5C: .4byte gUnknown_2023BE3 +_08016C5C: .4byte gCurrentActionFuncId thumb_func_end sub_8016BC0 thumb_func_start HandleAction_SafriZoneRun @@ -13736,7 +13736,7 @@ HandleAction_Action9: @ 8016C9C ldr r0, _08016D08 @ =gUnknown_81D9A04 ldr r0, [r0, 0xC] str r0, [r1] - ldr r1, _08016D0C @ =gUnknown_2023BE3 + ldr r1, _08016D0C @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] ldr r1, _08016D10 @ =gUnknown_2023BDA @@ -13753,7 +13753,7 @@ _08016CFC: .4byte gBattleTextBuff1 _08016D00: .4byte gBattlerPartyIndexes _08016D04: .4byte gBattlescriptCurrInstr _08016D08: .4byte gUnknown_81D9A04 -_08016D0C: .4byte gUnknown_2023BE3 +_08016D0C: .4byte gCurrentActionFuncId _08016D10: .4byte gUnknown_2023BDA thumb_func_end HandleAction_Action9 @@ -13769,7 +13769,7 @@ HandleAction_Action11: @ 8016D14 ldr r0, [r0] adds r0, 0x4D strb r1, [r0] - ldr r1, _08016D38 @ =gUnknown_2023BE3 + ldr r1, _08016D38 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] _08016D30: @@ -13777,7 +13777,7 @@ _08016D30: bx r0 .align 2, 0 _08016D34: .4byte gBattleStruct -_08016D38: .4byte gUnknown_2023BE3 +_08016D38: .4byte gCurrentActionFuncId thumb_func_end HandleAction_Action11 thumb_func_start HandleAction_NothingIsFainted @@ -13786,7 +13786,7 @@ HandleAction_NothingIsFainted: @ 8016D3C ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r3, _08016D60 @ =gUnknown_2023BE3 + ldr r3, _08016D60 @ =gCurrentActionFuncId ldr r2, _08016D64 @ =gUnknown_2023BDA ldrb r0, [r1] adds r0, r2 @@ -13800,7 +13800,7 @@ HandleAction_NothingIsFainted: @ 8016D3C bx lr .align 2, 0 _08016D5C: .4byte gUnknown_2023BE2 -_08016D60: .4byte gUnknown_2023BE3 +_08016D60: .4byte gCurrentActionFuncId _08016D64: .4byte gUnknown_2023BDA _08016D68: .4byte gHitMarker _08016D6C: .4byte 0xf1e892af @@ -13813,7 +13813,7 @@ HandleAction_ActionFinished: @ 8016D70 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - ldr r3, _08016DE8 @ =gUnknown_2023BE3 + ldr r3, _08016DE8 @ =gCurrentActionFuncId ldr r2, _08016DEC @ =gUnknown_2023BDA ldrb r0, [r1] adds r0, r2 @@ -13867,7 +13867,7 @@ HandleAction_ActionFinished: @ 8016D70 bx r0 .align 2, 0 _08016DE4: .4byte gUnknown_2023BE2 -_08016DE8: .4byte gUnknown_2023BE3 +_08016DE8: .4byte gCurrentActionFuncId _08016DEC: .4byte gUnknown_2023BDA _08016DF0: .4byte gHitMarker _08016DF4: .4byte 0xf1e892af diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 765eb317a..568f794d0 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -16,13 +16,13 @@ atk00_attackcanceler: @ 801D760 ldrb r0, [r0] cmp r0, 0 beq _0801D784 - ldr r1, _0801D780 @ =gUnknown_2023BE3 + ldr r1, _0801D780 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] b _0801DAFC .align 2, 0 _0801D77C: .4byte gBattleOutcome -_0801D780: .4byte gUnknown_2023BE3 +_0801D780: .4byte gCurrentActionFuncId _0801D784: ldr r2, _0801D7B4 @ =gBattleMons ldr r0, _0801D7B8 @ =gBattlerAttacker @@ -74,7 +74,7 @@ _0801D7D6: b _0801DAFC _0801D7EE: ldr r4, _0801D848 @ =gBattleMons - ldr r0, _0801D84C @ =gUnknown_2023D48 + ldr r0, _0801D84C @ =gCurrMovePos ldrb r1, [r0] ldr r3, _0801D850 @ =gBattlerAttacker ldrb r2, [r3] @@ -118,7 +118,7 @@ _0801D7EE: .align 2, 0 _0801D844: .4byte gBattlerTarget _0801D848: .4byte gBattleMons -_0801D84C: .4byte gUnknown_2023D48 +_0801D84C: .4byte gCurrMovePos _0801D850: .4byte gBattlerAttacker _0801D854: .4byte gHitMarker _0801D858: .4byte gCurrentMove @@ -1433,7 +1433,7 @@ _0801E2E6: cmp r4, 0 bne _0801E3CC ldr r2, _0801E34C @ =gBattleMons - ldr r3, _0801E354 @ =gUnknown_2023D48 + ldr r3, _0801E354 @ =gCurrMovePos ldr r1, _0801E358 @ =gBattlerAttacker ldrb r5, [r1] movs r0, 0x58 @@ -1478,7 +1478,7 @@ _0801E2E6: _0801E348: .4byte gBattlerTarget _0801E34C: .4byte gBattleMons _0801E350: .4byte gHitMarker -_0801E354: .4byte gUnknown_2023D48 +_0801E354: .4byte gCurrMovePos _0801E358: .4byte gBattlerAttacker _0801E35C: .4byte gProtectStructs _0801E360: @@ -3321,7 +3321,7 @@ _0801F186: bcs _0801F1C4 ldrb r0, [r5] movs r1, 0x27 - bl sub_80C7208 + bl RecordItemEffectBattle ldr r2, _0801F250 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -3525,7 +3525,7 @@ _0801F336: bcs _0801F374 ldrb r0, [r5] movs r1, 0x27 - bl sub_80C7208 + bl RecordItemEffectBattle ldr r2, _0801F3E4 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -10716,14 +10716,14 @@ atk3D_end: @ 8022CCC strb r1, [r0] ldr r0, _08022CE4 @ =gActiveBattler strb r1, [r0] - ldr r1, _08022CE8 @ =gUnknown_2023BE3 + ldr r1, _08022CE8 @ =gCurrentActionFuncId movs r0, 0xB strb r0, [r1] bx lr .align 2, 0 _08022CE0: .4byte gMoveResultFlags _08022CE4: .4byte gActiveBattler -_08022CE8: .4byte gUnknown_2023BE3 +_08022CE8: .4byte gCurrentActionFuncId thumb_func_end atk3D_end thumb_func_start atk3E_end2 @@ -10731,13 +10731,13 @@ atk3E_end2: @ 8022CEC ldr r1, _08022CFC @ =gActiveBattler movs r0, 0 strb r0, [r1] - ldr r1, _08022D00 @ =gUnknown_2023BE3 + ldr r1, _08022D00 @ =gCurrentActionFuncId movs r0, 0xB strb r0, [r1] bx lr .align 2, 0 _08022CFC: .4byte gActiveBattler -_08022D00: .4byte gUnknown_2023BE3 +_08022D00: .4byte gCurrentActionFuncId thumb_func_end atk3E_end2 thumb_func_start atk3F_end3 @@ -16653,18 +16653,18 @@ atk63_jumptorandomattack: @ 8025C9C cmp r1, 0 beq _08025CC0 ldr r0, _08025CB8 @ =gCurrentMove - ldr r1, _08025CBC @ =gUnknown_2023D4E + ldr r1, _08025CBC @ =gCalledMove ldrh r1, [r1] strh r1, [r0] b _08025CCE .align 2, 0 _08025CB4: .4byte gBattlescriptCurrInstr _08025CB8: .4byte gCurrentMove -_08025CBC: .4byte gUnknown_2023D4E +_08025CBC: .4byte gCalledMove _08025CC0: ldr r2, _08025CEC @ =gChosenMove ldr r1, _08025CF0 @ =gCurrentMove - ldr r0, _08025CF4 @ =gUnknown_2023D4E + ldr r0, _08025CF4 @ =gCalledMove ldrh r0, [r0] strh r0, [r1] strh r0, [r2] @@ -16688,7 +16688,7 @@ _08025CCE: .align 2, 0 _08025CEC: .4byte gChosenMove _08025CF0: .4byte gCurrentMove -_08025CF4: .4byte gUnknown_2023D4E +_08025CF4: .4byte gCalledMove _08025CF8: .4byte gUnknown_81D65A8 _08025CFC: .4byte gBattleMoves thumb_func_end atk63_jumptorandomattack @@ -17102,7 +17102,7 @@ _0802602E: bcs _0802606C ldrb r0, [r5] movs r1, 0x27 - bl sub_80C7208 + bl RecordItemEffectBattle ldr r2, _080260F8 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -22294,7 +22294,7 @@ _0802895A: bcs _08028998 ldrb r0, [r5] movs r1, 0x27 - bl sub_80C7208 + bl RecordItemEffectBattle ldr r2, _080289DC @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -23875,7 +23875,7 @@ _08029628: _08029646: cmp r2, 0x4 bne _08029728 - ldr r5, _080296A0 @ =gUnknown_2023D48 + ldr r5, _080296A0 @ =gCurrMovePos ldrb r1, [r5] lsls r1, 1 mov r2, r9 @@ -23917,7 +23917,7 @@ _08029646: b _080296C4 .align 2, 0 _0802969C: .4byte gBattlescriptCurrInstr -_080296A0: .4byte gUnknown_2023D48 +_080296A0: .4byte gCurrMovePos _080296A4: .4byte gLastMoves _080296A8: .4byte gBattlerTarget _080296AC: .4byte gBattleMoves @@ -25184,7 +25184,7 @@ _0802A08A: beq _0802A090 b _0802A190 _0802A090: - ldr r4, _0802A17C @ =gUnknown_2023D48 + ldr r4, _0802A17C @ =gCurrMovePos ldrb r1, [r4] lsls r1, 1 mov r2, r10 @@ -25296,7 +25296,7 @@ _0802A16C: .4byte gBattleMons _0802A170: .4byte gBattlerAttacker _0802A174: .4byte gUnknown_2023D90 _0802A178: .4byte gBattlerTarget -_0802A17C: .4byte gUnknown_2023D48 +_0802A17C: .4byte gCurrMovePos _0802A180: .4byte gBattleMoves _0802A184: .4byte gActiveBattler _0802A188: .4byte gBattleTextBuff1 @@ -25541,7 +25541,7 @@ _0802A334: ands r0, r6 cmp r0, 0 bne _0802A334 - ldr r4, _0802A3A8 @ =gUnknown_2023D4E + ldr r4, _0802A3A8 @ =gCalledMove ldr r2, _0802A3AC @ =gBattleMons lsls r1, r5, 1 ldr r0, _0802A3B0 @ =gBattlerAttacker @@ -25553,7 +25553,7 @@ _0802A334: adds r1, r2 ldrh r0, [r1] strh r0, [r4] - ldr r0, _0802A3B4 @ =gUnknown_2023D48 + ldr r0, _0802A3B4 @ =gCurrMovePos strb r5, [r0] ldr r2, _0802A3B8 @ =gHitMarker ldr r0, [r2] @@ -25588,10 +25588,10 @@ _0802A394: bx r0 .align 2, 0 _0802A3A4: .4byte gBitTable -_0802A3A8: .4byte gUnknown_2023D4E +_0802A3A8: .4byte gCalledMove _0802A3AC: .4byte gBattleMons _0802A3B0: .4byte gBattlerAttacker -_0802A3B4: .4byte gUnknown_2023D48 +_0802A3B4: .4byte gCurrMovePos _0802A3B8: .4byte gHitMarker _0802A3BC: .4byte 0xfffffbff _0802A3C0: .4byte gBattlerTarget @@ -27392,9 +27392,9 @@ _0802B1A2: ldr r0, _0802B280 @ =gBattlersCount ldr r2, _0802B284 @ =gCurrentMove mov r8, r2 - ldr r7, _0802B288 @ =gUnknown_2023D48 + ldr r7, _0802B288 @ =gCurrMovePos mov r10, r7 - ldr r2, _0802B28C @ =gUnknown_2023D49 + ldr r2, _0802B28C @ =gChosenMovePos mov r9, r2 ldr r7, _0802B290 @ =gHitMarker mov r12, r7 @@ -27457,8 +27457,8 @@ _0802B278: .4byte gDisableStructs _0802B27C: .4byte gChosenMoveByBattler _0802B280: .4byte gBattlersCount _0802B284: .4byte gCurrentMove -_0802B288: .4byte gUnknown_2023D48 -_0802B28C: .4byte gUnknown_2023D49 +_0802B288: .4byte gCurrMovePos +_0802B28C: .4byte gChosenMovePos _0802B290: .4byte gHitMarker _0802B294: .4byte gBattlerByTurnOrder _0802B298: .4byte gUnknown_2023BDA @@ -30496,7 +30496,7 @@ _0802CA3C: ldr r1, _0802CAA4 @ =0xfffffbff ands r0, r1 str r0, [r2] - ldr r4, _0802CAA8 @ =gUnknown_2023D4E + ldr r4, _0802CAA8 @ =gCalledMove bl Random movs r1, 0xFF ands r1, r0 @@ -30528,7 +30528,7 @@ _0802CA98: .4byte 0x0000ffff _0802CA9C: .4byte gUnknown_82507E8 _0802CAA0: .4byte gHitMarker _0802CAA4: .4byte 0xfffffbff -_0802CAA8: .4byte gUnknown_2023D4E +_0802CAA8: .4byte gCalledMove _0802CAAC: .4byte gBattlerTarget _0802CAB0: .4byte gBattlescriptCurrInstr _0802CAB4: @@ -33169,17 +33169,17 @@ _0802E010: .4byte gBattlescriptCurrInstr thumb_func_start sub_802E014 sub_802E014: @ 802E014 - ldr r1, _0802E01C @ =gUnknown_2023BE3 + ldr r1, _0802E01C @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] bx lr .align 2, 0 -_0802E01C: .4byte gUnknown_2023BE3 +_0802E01C: .4byte gCurrentActionFuncId thumb_func_end sub_802E014 thumb_func_start sub_802E020 sub_802E020: @ 802E020 - ldr r1, _0802E030 @ =gUnknown_2023BE3 + ldr r1, _0802E030 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] ldr r1, _0802E034 @ =gUnknown_2023BE2 @@ -33188,7 +33188,7 @@ sub_802E020: @ 802E020 strb r0, [r1] bx lr .align 2, 0 -_0802E030: .4byte gUnknown_2023BE3 +_0802E030: .4byte gCurrentActionFuncId _0802E034: .4byte gUnknown_2023BE2 _0802E038: .4byte gBattlersCount thumb_func_end sub_802E020 diff --git a/asm/battle_util.s b/asm/battle_util.s deleted file mode 100644 index a6b77a6e4..000000000 --- a/asm/battle_util.s +++ /dev/null @@ -1,3283 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start BattleScriptExecute -BattleScriptExecute: @ 801BBE4 - ldr r1, _0801BC10 @ =gBattlescriptCurrInstr - str r0, [r1] - ldr r0, _0801BC14 @ =gBattleResources - ldr r0, [r0] - ldr r2, [r0, 0xC] - adds r3, r2, 0 - adds r3, 0x20 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 22 - adds r2, r0 - ldr r1, _0801BC18 @ =gBattleMainFunc - ldr r0, [r1] - str r0, [r2] - ldr r0, _0801BC1C @ =RunBattleScriptCommands_PopCallbacksStack - str r0, [r1] - ldr r1, _0801BC20 @ =gUnknown_2023BE3 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0801BC10: .4byte gBattlescriptCurrInstr -_0801BC14: .4byte gBattleResources -_0801BC18: .4byte gBattleMainFunc -_0801BC1C: .4byte RunBattleScriptCommands_PopCallbacksStack -_0801BC20: .4byte gUnknown_2023BE3 - thumb_func_end BattleScriptExecute - - thumb_func_start BattleScriptPushCursorAndCallback -BattleScriptPushCursorAndCallback: @ 801BC24 - push {r4,lr} - adds r4, r0, 0 - bl BattleScriptPushCursor - ldr r0, _0801BC58 @ =gBattlescriptCurrInstr - str r4, [r0] - ldr r0, _0801BC5C @ =gBattleResources - ldr r0, [r0] - ldr r2, [r0, 0xC] - adds r3, r2, 0 - adds r3, 0x20 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 22 - adds r2, r0 - ldr r1, _0801BC60 @ =gBattleMainFunc - ldr r0, [r1] - str r0, [r2] - ldr r0, _0801BC64 @ =sub_8015C74 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801BC58: .4byte gBattlescriptCurrInstr -_0801BC5C: .4byte gBattleResources -_0801BC60: .4byte gBattleMainFunc -_0801BC64: .4byte sub_8015C74 - thumb_func_end BattleScriptPushCursorAndCallback - - thumb_func_start ItemBattleEffects -ItemBattleEffects: @ 801BC68 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r0, 0 - mov r10, r0 - movs r1, 0 - str r1, [sp, 0xC] - add r0, sp, 0x4 - strb r1, [r0] - ldr r4, _0801BCB4 @ =gLastUsedItem - ldr r1, _0801BCB8 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0801BCC0 - ldr r1, _0801BCBC @ =gEnigmaBerries - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - ldrb r0, [r0, 0x1A] - b _0801BCD4 - .align 2, 0 -_0801BCB4: .4byte gLastUsedItem -_0801BCB8: .4byte gBattleMons -_0801BCBC: .4byte gEnigmaBerries -_0801BCC0: - ldrh r0, [r4] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r0, 24 -_0801BCD4: - mov r9, r0 - ldr r1, _0801BCFC @ =gBattleMons - ldr r0, _0801BD00 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - str r0, [sp, 0x14] - cmp r0, 0xAF - bne _0801BD08 - ldr r1, _0801BD04 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - mov r8, r3 - ldrb r0, [r0, 0x1A] - b _0801BD1E - .align 2, 0 -_0801BCFC: .4byte gBattleMons -_0801BD00: .4byte gBattlerAttacker -_0801BD04: .4byte gEnigmaBerries -_0801BD08: - ldr r0, [sp, 0x14] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, [sp, 0x14] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r0, 24 -_0801BD1E: - str r0, [sp, 0x10] - ldr r2, _0801BD54 @ =gBattleMons - ldr r0, _0801BD58 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r4, [r0, 0x2E] - cmp r4, 0xAF - beq _0801BD3E - adds r0, r4, 0 - bl ItemId_GetHoldEffect - adds r0, r4, 0 - bl ItemId_GetHoldEffectParam -_0801BD3E: - ldr r0, [sp, 0x8] - cmp r0, 0x4 - bls _0801BD48 - bl _0801CFA6 -_0801BD48: - lsls r0, 2 - ldr r1, _0801BD5C @ =_0801BD60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BD54: .4byte gBattleMons -_0801BD58: .4byte gBattlerTarget -_0801BD5C: .4byte _0801BD60 - .align 2, 0 -_0801BD60: - .4byte _0801BD74 - .4byte _0801BE04 - .4byte _0801CFA6 - .4byte _0801C9FC - .4byte _0801CE4C -_0801BD74: - cmp r5, 0x17 - beq _0801BD94 - cmp r5, 0x20 - beq _0801BD80 - bl _0801CFA6 -_0801BD80: - ldr r0, _0801BD90 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4A - movs r1, 0x2 - strb r1, [r0] - bl _0801CFA6 - .align 2, 0 -_0801BD90: .4byte gBattleStruct -_0801BD94: - ldr r1, _0801BDEC @ =gBattleMons - mov r8, r1 - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r3, 0x7 - mov r10, r3 -_0801BDAA: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801BDB8 - strb r2, [r1] - movs r5, 0x5 - str r5, [sp, 0xC] -_0801BDB8: - adds r1, 0x1 - movs r0, 0x1 - negs r0, r0 - add r10, r0 - mov r3, r10 - cmp r3, 0 - bge _0801BDAA - ldr r5, [sp, 0xC] - cmp r5, 0 - bne _0801BDD0 - bl _0801CFA6 -_0801BDD0: - ldr r0, _0801BDF0 @ =gBattleScripting - strb r7, [r0, 0x17] - ldr r0, _0801BDF4 @ =gPotentialItemEffectBattler - strb r7, [r0] - ldr r1, _0801BDF8 @ =gActiveBattler - ldr r0, _0801BDFC @ =gBattlerAttacker - strb r7, [r0] - strb r7, [r1] - ldr r0, _0801BE00 @ =BattleScript_WhiteHerbEnd2 - bl BattleScriptExecute - bl _0801CFA6 - .align 2, 0 -_0801BDEC: .4byte gBattleMons -_0801BDF0: .4byte gBattleScripting -_0801BDF4: .4byte gPotentialItemEffectBattler -_0801BDF8: .4byte gActiveBattler -_0801BDFC: .4byte gBattlerAttacker -_0801BE00: .4byte BattleScript_WhiteHerbEnd2 -_0801BE04: - ldr r1, _0801BE2C @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x28] - mov r8, r1 - cmp r0, 0 - bne _0801BE18 - bl _0801CFA6 -_0801BE18: - subs r0, r5, 0x1 - cmp r0, 0x2A - bls _0801BE22 - bl _0801C952 -_0801BE22: - lsls r0, 2 - ldr r1, _0801BE30 @ =_0801BE34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BE2C: .4byte gBattleMons -_0801BE30: .4byte _0801BE34 - .align 2, 0 -_0801BE34: - .4byte _0801BEE0 - .4byte _0801C6C0 - .4byte _0801C784 - .4byte _0801C6F0 - .4byte _0801C724 - .4byte _0801C754 - .4byte _0801BF2C - .4byte _0801C7C0 - .4byte _0801C7F0 - .4byte _0801C0F8 - .4byte _0801C178 - .4byte _0801C1F4 - .4byte _0801C288 - .4byte _0801C31C - .4byte _0801C3B0 - .4byte _0801C418 - .4byte _0801C46C - .4byte _0801C4C0 - .4byte _0801C528 - .4byte _0801C58C - .4byte _0801C5D8 - .4byte _0801C952 - .4byte _0801C02C - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C91C - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C952 - .4byte _0801C098 -_0801BEE0: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r2, r0, r1 - ldrh r0, [r2, 0x2C] - ldrh r1, [r2, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801BEF6 - bl _0801C952 -_0801BEF6: - cmp r6, 0 - beq _0801BEFE - bl _0801C952 -_0801BEFE: - ldr r4, _0801BF24 @ =gBattleMoveDamage - mov r3, r9 - str r3, [r4] - ldrh r3, [r2, 0x28] - mov r5, r9 - adds r0, r3, r5 - ldrh r1, [r2, 0x2C] - cmp r0, r1 - ble _0801BF14 - subs r0, r1, r3 - str r0, [r4] -_0801BF14: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - ldr r0, _0801BF28 @ =BattleScript_ItemHealHP_RemoveItem - bl BattleScriptExecute - b _0801C27E - .align 2, 0 -_0801BF24: .4byte gBattleMoveDamage -_0801BF28: .4byte BattleScript_ItemHealHP_RemoveItem -_0801BF2C: - cmp r6, 0 - beq _0801BF34 - bl _0801C952 -_0801BF34: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801BF58 - ldr r1, _0801BF50 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801BF54 @ =gPlayerParty - b _0801BF66 - .align 2, 0 -_0801BF50: .4byte gBattlerPartyIndexes -_0801BF54: .4byte gPlayerParty -_0801BF58: - ldr r1, _0801BFD4 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0801BFD8 @ =gEnemyParty -_0801BF66: - adds r4, r1, r0 - movs r1, 0 - mov r10, r1 - add r5, sp, 0x4 -_0801BF6E: - mov r1, r10 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - mov r1, r10 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - lsls r0, 24 - lsrs r1, r0, 24 - cmp r6, 0 - beq _0801BF9E - ldrb r0, [r5] - cmp r0, 0 - beq _0801BFA8 -_0801BF9E: - movs r2, 0x1 - add r10, r2 - mov r3, r10 - cmp r3, 0x3 - ble _0801BF6E -_0801BFA8: - mov r5, r10 - cmp r5, 0x4 - bne _0801BFB2 - bl _0801C952 -_0801BFB2: - lsls r2, r5, 24 - lsrs r2, 24 - adds r0, r6, 0 - bl CalculatePPWithBonus - lsls r0, 24 - lsrs r2, r0, 24 - add r0, sp, 0x4 - ldrb r0, [r0] - mov r3, r9 - adds r1, r0, r3 - cmp r1, r2 - ble _0801BFDC - add r0, sp, 0x4 - strb r2, [r0] - b _0801BFE0 - .align 2, 0 -_0801BFD4: .4byte gBattlerPartyIndexes -_0801BFD8: .4byte gEnemyParty -_0801BFDC: - add r0, sp, 0x4 - strb r1, [r0] -_0801BFE0: - ldr r1, _0801C020 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r6, [r1, 0x2] - lsrs r0, r6, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r0, _0801C024 @ =BattleScript_BerryPPHealEnd2 - bl BattleScriptExecute - mov r1, r10 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - add r5, sp, 0x4 - str r5, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldr r0, _0801C028 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - movs r0, 0x3 - str r0, [sp, 0xC] - bl _0801C95A - .align 2, 0 -_0801C020: .4byte gBattleTextBuff1 -_0801C024: .4byte BattleScript_BerryPPHealEnd2 -_0801C028: .4byte gActiveBattler -_0801C02C: - ldr r0, _0801C080 @ =gBattleMons - movs r1, 0x58 - muls r1, r7 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r3, 0x7 - mov r10, r3 -_0801C03C: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801C04A - strb r2, [r1] - movs r5, 0x5 - str r5, [sp, 0xC] -_0801C04A: - adds r1, 0x1 - movs r0, 0x1 - negs r0, r0 - add r10, r0 - mov r3, r10 - cmp r3, 0 - bge _0801C03C - movs r5, 0x8 - mov r10, r5 - ldr r0, [sp, 0xC] - cmp r0, 0 - bne _0801C066 - bl _0801CFA6 -_0801C066: - ldr r0, _0801C084 @ =gBattleScripting - strb r7, [r0, 0x17] - ldr r0, _0801C088 @ =gPotentialItemEffectBattler - strb r7, [r0] - ldr r1, _0801C08C @ =gActiveBattler - ldr r0, _0801C090 @ =gBattlerAttacker - strb r7, [r0] - strb r7, [r1] - ldr r0, _0801C094 @ =BattleScript_WhiteHerbEnd2 - bl BattleScriptExecute - bl _0801C952 - .align 2, 0 -_0801C080: .4byte gBattleMons -_0801C084: .4byte gBattleScripting -_0801C088: .4byte gPotentialItemEffectBattler -_0801C08C: .4byte gActiveBattler -_0801C090: .4byte gBattlerAttacker -_0801C094: .4byte BattleScript_WhiteHerbEnd2 -_0801C098: - movs r0, 0x58 - muls r0, r7 - mov r2, r8 - adds r1, r0, r2 - ldrh r0, [r1, 0x28] - ldrh r3, [r1, 0x2C] - cmp r0, r3 - bcc _0801C0AC - bl _0801C952 -_0801C0AC: - cmp r6, 0 - beq _0801C0B4 - bl _0801C952 -_0801C0B4: - ldr r3, _0801C0F0 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 4 - str r0, [r3] - cmp r0, 0 - bne _0801C0C4 - movs r0, 0x1 - str r0, [r3] -_0801C0C4: - ldrh r2, [r1, 0x28] - ldr r0, [r3] - adds r0, r2, r0 - ldrh r1, [r1, 0x2C] - cmp r0, r1 - ble _0801C0D4 - subs r0, r1, r2 - str r0, [r3] -_0801C0D4: - ldr r0, [r3] - negs r0, r0 - str r0, [r3] - ldr r0, _0801C0F4 @ =BattleScript_ItemHealHP_End2 - bl BattleScriptExecute - movs r0, 0x4 - str r0, [sp, 0xC] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80C7208 - bl _0801C952 - .align 2, 0 -_0801C0F0: .4byte gBattleMoveDamage -_0801C0F4: .4byte BattleScript_ItemHealHP_End2 -_0801C0F8: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - str r1, [sp, 0x18] - adds r4, r1, 0 - add r4, r8 - ldrh r0, [r4, 0x2C] - ldrh r1, [r4, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801C112 - bl _0801C952 -_0801C112: - cmp r6, 0 - beq _0801C11A - bl _0801C952 -_0801C11A: - ldr r1, _0801C170 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - strb r6, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r5, _0801C174 @ =gBattleMoveDamage - ldrh r0, [r4, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _0801C13E - movs r0, 0x1 - str r0, [r5] -_0801C13E: - ldrh r2, [r4, 0x28] - ldr r0, [r5] - adds r0, r2, r0 - ldrh r1, [r4, 0x2C] - cmp r0, r1 - ble _0801C14E - subs r0, r1, r2 - str r0, [r5] -_0801C14E: - ldr r0, [r5] - negs r0, r0 - str r0, [r5] - mov r0, r8 - adds r0, 0x48 - ldr r2, [sp, 0x18] - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0 - bl GetFlavorRelationByPersonality - lsls r0, 24 - cmp r0, 0 - bge _0801C16C - b _0801C2F8 -_0801C16C: - b _0801C30C - .align 2, 0 -_0801C170: .4byte gBattleTextBuff1 -_0801C174: .4byte gBattleMoveDamage -_0801C178: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - str r5, [sp, 0x1C] - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801C190 - bl _0801C952 -_0801C190: - cmp r6, 0 - beq _0801C198 - bl _0801C952 -_0801C198: - ldr r1, _0801C1EC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r6, 0x1 - strb r6, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801C1F0 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801C1BC - str r6, [r4] -_0801C1BC: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801C1CC - subs r0, r1, r2 - str r0, [r4] -_0801C1CC: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r1, [sp, 0x1C] - adds r0, r1, r0 - ldr r0, [r0] - movs r1, 0x1 - bl GetFlavorRelationByPersonality - lsls r0, 24 - cmp r0, 0 - bge _0801C1EA - b _0801C38A -_0801C1EA: - b _0801C3A0 - .align 2, 0 -_0801C1EC: .4byte gBattleTextBuff1 -_0801C1F0: .4byte gBattleMoveDamage -_0801C1F4: - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - str r3, [sp, 0x20] - adds r5, r3, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801C20C - b _0801C952 -_0801C20C: - cmp r6, 0 - beq _0801C212 - b _0801C952 -_0801C212: - ldr r1, _0801C26C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801C270 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801C238 - movs r0, 0x1 - str r0, [r4] -_0801C238: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801C248 - subs r0, r1, r2 - str r0, [r4] -_0801C248: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r5, [sp, 0x20] - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x2 - bl GetFlavorRelationByPersonality - lsls r0, 24 - cmp r0, 0 - bge _0801C278 - ldr r0, _0801C274 @ =BattleScript_BerryConfuseHealEnd2 - bl BattleScriptExecute - b _0801C27E - .align 2, 0 -_0801C26C: .4byte gBattleTextBuff1 -_0801C270: .4byte gBattleMoveDamage -_0801C274: .4byte BattleScript_BerryConfuseHealEnd2 -_0801C278: - ldr r0, _0801C284 @ =BattleScript_ItemHealHP_RemoveItem - bl BattleScriptExecute -_0801C27E: - movs r0, 0x4 - str r0, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C284: .4byte BattleScript_ItemHealHP_RemoveItem -_0801C288: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - str r1, [sp, 0x24] - adds r5, r1, 0 - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801C2A0 - b _0801C952 -_0801C2A0: - cmp r6, 0 - beq _0801C2A6 - b _0801C952 -_0801C2A6: - ldr r1, _0801C300 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801C304 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801C2CC - movs r0, 0x1 - str r0, [r4] -_0801C2CC: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801C2DC - subs r0, r1, r2 - str r0, [r4] -_0801C2DC: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r2, [sp, 0x24] - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x3 - bl GetFlavorRelationByPersonality - lsls r0, 24 - cmp r0, 0 - bge _0801C30C -_0801C2F8: - ldr r0, _0801C308 @ =BattleScript_BerryConfuseHealEnd2 - bl BattleScriptExecute - b _0801C312 - .align 2, 0 -_0801C300: .4byte gBattleTextBuff1 -_0801C304: .4byte gBattleMoveDamage -_0801C308: .4byte BattleScript_BerryConfuseHealEnd2 -_0801C30C: - ldr r0, _0801C318 @ =BattleScript_ItemHealHP_RemoveItem - bl BattleScriptExecute -_0801C312: - movs r3, 0x4 - str r3, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C318: .4byte BattleScript_ItemHealHP_RemoveItem -_0801C31C: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - str r5, [sp, 0x28] - add r5, r8 - ldrh r0, [r5, 0x2C] - ldrh r1, [r5, 0x28] - lsrs r0, 1 - cmp r1, r0 - bls _0801C332 - b _0801C952 -_0801C332: - cmp r6, 0 - beq _0801C338 - b _0801C952 -_0801C338: - ldr r1, _0801C394 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x8 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r4, _0801C398 @ =gBattleMoveDamage - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801C35E - movs r0, 0x1 - str r0, [r4] -_0801C35E: - ldrh r2, [r5, 0x28] - ldr r0, [r4] - adds r0, r2, r0 - ldrh r1, [r5, 0x2C] - cmp r0, r1 - ble _0801C36E - subs r0, r1, r2 - str r0, [r4] -_0801C36E: - ldr r0, [r4] - negs r0, r0 - str r0, [r4] - mov r0, r8 - adds r0, 0x48 - ldr r1, [sp, 0x28] - adds r0, r1, r0 - ldr r0, [r0] - movs r1, 0x4 - bl GetFlavorRelationByPersonality - lsls r0, 24 - cmp r0, 0 - bge _0801C3A0 -_0801C38A: - ldr r0, _0801C39C @ =BattleScript_BerryConfuseHealEnd2 - bl BattleScriptExecute - b _0801C3A6 - .align 2, 0 -_0801C394: .4byte gBattleTextBuff1 -_0801C398: .4byte gBattleMoveDamage -_0801C39C: .4byte BattleScript_BerryConfuseHealEnd2 -_0801C3A0: - ldr r0, _0801C3AC @ =BattleScript_ItemHealHP_RemoveItem - bl BattleScriptExecute -_0801C3A6: - movs r2, 0x4 - str r2, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C3AC: .4byte BattleScript_ItemHealHP_RemoveItem -_0801C3B0: - movs r0, 0x58 - muls r0, r7 - mov r3, r8 - adds r5, r0, r3 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C3C8 - b _0801C952 -_0801C3C8: - cmp r6, 0 - beq _0801C3CE - b _0801C952 -_0801C3CE: - movs r0, 0x19 - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801C3D8 - b _0801C952 -_0801C3D8: - ldr r1, _0801C408 @ =gBattleTextBuff1 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x1 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _0801C40C @ =gBattleTextBuff2 - strb r2, [r1] - strb r6, [r1, 0x1] - movs r0, 0xD2 - strb r0, [r1, 0x2] - strb r6, [r1, 0x3] - subs r0, 0xD3 - strb r0, [r1, 0x4] - ldr r0, _0801C410 @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C414 @ =gBattleScripting - movs r0, 0x11 - strb r0, [r1, 0x1A] - movs r0, 0xF - b _0801C56C - .align 2, 0 -_0801C408: .4byte gBattleTextBuff1 -_0801C40C: .4byte gBattleTextBuff2 -_0801C410: .4byte gEffectBattler -_0801C414: .4byte gBattleScripting -_0801C418: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C430 - b _0801C952 -_0801C430: - cmp r6, 0 - beq _0801C436 - b _0801C952 -_0801C436: - movs r0, 0x1A - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801C440 - b _0801C952 -_0801C440: - ldr r1, _0801C460 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801C464 @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C468 @ =gBattleScripting - movs r0, 0x12 - strb r0, [r1, 0x1A] - movs r0, 0x10 - b _0801C506 - .align 2, 0 -_0801C460: .4byte gBattleTextBuff1 -_0801C464: .4byte gEffectBattler -_0801C468: .4byte gBattleScripting -_0801C46C: - movs r0, 0x58 - muls r0, r7 - mov r3, r8 - adds r5, r0, r3 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C484 - b _0801C952 -_0801C484: - cmp r6, 0 - beq _0801C48A - b _0801C952 -_0801C48A: - movs r0, 0x1B - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801C494 - b _0801C952 -_0801C494: - ldr r1, _0801C4B4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x3 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801C4B8 @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C4BC @ =gBattleScripting - movs r0, 0x13 - strb r0, [r1, 0x1A] - movs r0, 0x11 - b _0801C56C - .align 2, 0 -_0801C4B4: .4byte gBattleTextBuff1 -_0801C4B8: .4byte gEffectBattler -_0801C4BC: .4byte gBattleScripting -_0801C4C0: - movs r0, 0x58 - muls r0, r7 - mov r1, r8 - adds r5, r0, r1 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C4D8 - b _0801C952 -_0801C4D8: - cmp r6, 0 - beq _0801C4DE - b _0801C952 -_0801C4DE: - movs r0, 0x1C - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801C4E8 - b _0801C952 -_0801C4E8: - ldr r1, _0801C518 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801C51C @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C520 @ =gBattleScripting - movs r0, 0x14 - strb r0, [r1, 0x1A] - movs r0, 0x12 -_0801C506: - strb r0, [r1, 0x10] - strb r6, [r1, 0x11] - ldr r0, _0801C524 @ =BattleScript_BerryStatRaiseEnd2 - bl BattleScriptExecute - movs r2, 0x5 - str r2, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C518: .4byte gBattleTextBuff1 -_0801C51C: .4byte gEffectBattler -_0801C520: .4byte gBattleScripting -_0801C524: .4byte BattleScript_BerryStatRaiseEnd2 -_0801C528: - movs r0, 0x58 - muls r0, r7 - mov r3, r8 - adds r5, r0, r3 - ldrh r4, [r5, 0x28] - ldrh r0, [r5, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C540 - b _0801C952 -_0801C540: - cmp r6, 0 - beq _0801C546 - b _0801C952 -_0801C546: - movs r0, 0x1D - ldrsb r0, [r5, r0] - cmp r0, 0xB - ble _0801C550 - b _0801C952 -_0801C550: - ldr r1, _0801C57C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801C580 @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C584 @ =gBattleScripting - movs r0, 0x15 - strb r0, [r1, 0x1A] - movs r0, 0x13 -_0801C56C: - strb r0, [r1, 0x10] - strb r6, [r1, 0x11] - ldr r0, _0801C588 @ =BattleScript_BerryStatRaiseEnd2 - bl BattleScriptExecute - movs r5, 0x5 - str r5, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C57C: .4byte gBattleTextBuff1 -_0801C580: .4byte gEffectBattler -_0801C584: .4byte gBattleScripting -_0801C588: .4byte BattleScript_BerryStatRaiseEnd2 -_0801C58C: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r1, r8 - adds r0, r5, r1 - ldrh r4, [r0, 0x28] - ldrh r0, [r0, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C5A6 - b _0801C952 -_0801C5A6: - cmp r6, 0 - beq _0801C5AC - b _0801C952 -_0801C5AC: - mov r0, r8 - adds r0, 0x50 - adds r1, r5, r0 - ldr r2, [r1] - movs r3, 0x80 - lsls r3, 13 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _0801C5C2 - b _0801C952 -_0801C5C2: - orrs r2, r3 - str r2, [r1] - ldr r0, _0801C5D4 @ =BattleScript_BerryFocusEnergyEnd2 - bl BattleScriptExecute - movs r2, 0x2 - str r2, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C5D4: .4byte BattleScript_BerryFocusEnergyEnd2 -_0801C5D8: - cmp r6, 0 - beq _0801C5DE - b _0801C952 -_0801C5DE: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r3, r8 - adds r0, r5, r3 - ldrh r4, [r0, 0x28] - ldrh r0, [r0, 0x2C] - mov r1, r9 - bl __divsi3 - cmp r4, r0 - ble _0801C5F8 - b _0801C952 -_0801C5F8: - movs r0, 0 - mov r10, r0 - adds r0, r5, 0x1 - mov r1, r8 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xB - ble _0801C628 - mov r0, r8 - adds r0, 0x19 - adds r1, r5, r0 -_0801C614: - adds r1, 0x1 - movs r2, 0x1 - add r10, r2 - mov r3, r10 - cmp r3, 0x4 - bgt _0801C628 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0xB - bgt _0801C614 -_0801C628: - mov r5, r10 - cmp r5, 0x5 - bne _0801C630 - b _0801C952 -_0801C630: - movs r0, 0x58 - muls r0, r7 - adds r4, r0, 0x1 - ldr r5, _0801C6A8 @ =gUnknown_2023BFC -_0801C638: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xC - beq _0801C638 - ldr r1, _0801C6AC @ =gBattleTextBuff1 - movs r2, 0 - movs r3, 0xFD - strb r3, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - mov r0, r10 - adds r0, 0x1 - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0801C6B0 @ =gBattleTextBuff2 - strb r3, [r0] - strb r2, [r0, 0x1] - movs r1, 0xD1 - strb r1, [r0, 0x2] - strb r2, [r0, 0x3] - strb r2, [r0, 0x4] - movs r1, 0xD2 - strb r1, [r0, 0x5] - strb r2, [r0, 0x6] - subs r1, 0xD3 - strb r1, [r0, 0x7] - ldr r0, _0801C6B4 @ =gEffectBattler - strb r7, [r0] - ldr r1, _0801C6B8 @ =gBattleScripting - mov r0, r10 - adds r0, 0x21 - strb r0, [r1, 0x1A] - adds r0, 0x6 - strb r0, [r1, 0x10] - strb r2, [r1, 0x11] - ldr r0, _0801C6BC @ =BattleScript_BerryStatRaiseEnd2 - bl BattleScriptExecute - movs r0, 0x5 - str r0, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C6A8: .4byte gUnknown_2023BFC -_0801C6AC: .4byte gBattleTextBuff1 -_0801C6B0: .4byte gBattleTextBuff2 -_0801C6B4: .4byte gEffectBattler -_0801C6B8: .4byte gBattleScripting -_0801C6BC: .4byte BattleScript_BerryStatRaiseEnd2 -_0801C6C0: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _0801C6D8 - b _0801C952 -_0801C6D8: - movs r0, 0x41 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801C6EC @ =BattleScript_BerryCurePrlzEnd2 - bl BattleScriptExecute - movs r1, 0x1 - str r1, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C6EC: .4byte BattleScript_BerryCurePrlzEnd2 -_0801C6F0: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x88 - ands r0, r2 - cmp r0, 0 - bne _0801C708 - b _0801C952 -_0801C708: - ldr r0, _0801C71C @ =0xfffff077 - ands r2, r0 - str r2, [r1] - ldr r0, _0801C720 @ =BattleScript_BerryCurePsnEnd2 - bl BattleScriptExecute - movs r2, 0x1 - str r2, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C71C: .4byte 0xfffff077 -_0801C720: .4byte BattleScript_BerryCurePsnEnd2 -_0801C724: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _0801C73C - b _0801C952 -_0801C73C: - movs r0, 0x11 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801C750 @ =BattleScript_BerryCureBrnEnd2 - bl BattleScriptExecute - movs r3, 0x1 - str r3, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C750: .4byte BattleScript_BerryCureBrnEnd2 -_0801C754: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r1, r0 - ldr r2, [r1] - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _0801C76C - b _0801C952 -_0801C76C: - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801C780 @ =BattleScript_BerryCureFrzEnd2 - bl BattleScriptExecute - movs r5, 0x1 - str r5, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C780: .4byte BattleScript_BerryCureFrzEnd2 -_0801C784: - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - mov r0, r8 - adds r0, 0x4C - adds r2, r3, r0 - ldr r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801C79C - b _0801C952 -_0801C79C: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - mov r1, r8 - adds r1, 0x50 - adds r1, r3, r1 - ldr r0, [r1] - ldr r2, _0801C7B8 @ =0xf7ffffff - ands r0, r2 - str r0, [r1] - ldr r0, _0801C7BC @ =BattleScript_BerryCureSlpEnd2 - b _0801C906 - .align 2, 0 -_0801C7B8: .4byte 0xf7ffffff -_0801C7BC: .4byte BattleScript_BerryCureSlpEnd2 -_0801C7C0: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x7 - ands r0, r2 - cmp r0, 0 - bne _0801C7D8 - b _0801C952 -_0801C7D8: - movs r0, 0x8 - negs r0, r0 - ands r2, r0 - str r2, [r1] - ldr r0, _0801C7EC @ =BattleScript_BerryCureConfusionEnd2 - bl BattleScriptExecute - movs r1, 0x2 - str r1, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C7EC: .4byte BattleScript_BerryCureConfusionEnd2 -_0801C7F0: - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - mov r0, r8 - adds r0, 0x4C - adds r4, r5, r0 - ldr r2, [r4] - ldrb r0, [r4] - cmp r0, 0 - bne _0801C816 - mov r0, r8 - adds r0, 0x50 - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801C816 - b _0801C952 -_0801C816: - movs r3, 0 - mov r10, r3 - movs r0, 0x88 - ands r2, r0 - cmp r2, 0 - beq _0801C82E - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8C0 @ =gStatusConditionString_PoisonJpn - bl StringCopy - movs r0, 0x1 - mov r10, r0 -_0801C82E: - ldr r0, [r4] - movs r1, 0x7 - mov r9, r1 - ands r0, r1 - mov r6, r8 - adds r6, 0x50 - cmp r0, 0 - beq _0801C854 - adds r2, r5, r6 - ldr r0, [r2] - ldr r1, _0801C8C4 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8C8 @ =gStatusConditionString_SleepJpn - bl StringCopy - movs r2, 0x1 - add r10, r2 -_0801C854: - ldr r0, [r4] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801C86A - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8CC @ =gStatusConditionString_ParalysisJpn - bl StringCopy - movs r3, 0x1 - add r10, r3 -_0801C86A: - ldr r0, [r4] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801C880 - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D0 @ =gStatusConditionString_BurnJpn - bl StringCopy - movs r0, 0x1 - add r10, r0 -_0801C880: - ldr r0, [r4] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801C896 - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D4 @ =gStatusConditionString_IceJpn - bl StringCopy - movs r1, 0x1 - add r10, r1 -_0801C896: - adds r0, r5, r6 - ldr r0, [r0] - mov r2, r9 - ands r0, r2 - cmp r0, 0 - beq _0801C8AE - ldr r0, _0801C8BC @ =gBattleTextBuff1 - ldr r1, _0801C8D8 @ =gStatusConditionString_ConfusionJpn - bl StringCopy - movs r3, 0x1 - add r10, r3 -_0801C8AE: - mov r5, r10 - cmp r5, 0x1 - bgt _0801C8E0 - ldr r1, _0801C8DC @ =gBattleCommunication - movs r0, 0 - b _0801C8E4 - .align 2, 0 -_0801C8BC: .4byte gBattleTextBuff1 -_0801C8C0: .4byte gStatusConditionString_PoisonJpn -_0801C8C4: .4byte 0xf7ffffff -_0801C8C8: .4byte gStatusConditionString_SleepJpn -_0801C8CC: .4byte gStatusConditionString_ParalysisJpn -_0801C8D0: .4byte gStatusConditionString_BurnJpn -_0801C8D4: .4byte gStatusConditionString_IceJpn -_0801C8D8: .4byte gStatusConditionString_ConfusionJpn -_0801C8DC: .4byte gBattleCommunication -_0801C8E0: - ldr r1, _0801C910 @ =gBattleCommunication - movs r0, 0x1 -_0801C8E4: - strb r0, [r1, 0x5] - ldr r2, _0801C914 @ =gBattleMons - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - movs r1, 0 - str r1, [r0] - adds r2, 0x50 - adds r3, r2 - ldr r0, [r3] - subs r1, 0x8 - ands r0, r1 - str r0, [r3] - ldr r0, _0801C918 @ =BattleScript_BerryCureChosenStatusEnd2 -_0801C906: - bl BattleScriptExecute - movs r0, 0x1 - str r0, [sp, 0xC] - b _0801C95A - .align 2, 0 -_0801C910: .4byte gBattleCommunication -_0801C914: .4byte gBattleMons -_0801C918: .4byte BattleScript_BerryCureChosenStatusEnd2 -_0801C91C: - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r0, 0xF0 - lsls r0, 12 - ands r0, r2 - cmp r0, 0 - beq _0801C952 - ldr r0, _0801C978 @ =0xfff0ffff - ands r2, r0 - str r2, [r1] - ldr r0, _0801C97C @ =gBattleTextBuff1 - ldr r1, _0801C980 @ =gStatusConditionString_LoveJpn - bl StringCopy - ldr r0, _0801C984 @ =BattleScript_BerryCureChosenStatusEnd2 - bl BattleScriptExecute - ldr r1, _0801C988 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - movs r1, 0x2 - str r1, [sp, 0xC] -_0801C952: - ldr r2, [sp, 0xC] - cmp r2, 0 - bne _0801C95A - b _0801CFA6 -_0801C95A: - ldr r0, _0801C98C @ =gBattleScripting - strb r7, [r0, 0x17] - ldr r0, _0801C990 @ =gPotentialItemEffectBattler - strb r7, [r0] - ldr r4, _0801C994 @ =gActiveBattler - ldr r0, _0801C998 @ =gBattlerAttacker - strb r7, [r0] - strb r7, [r4] - ldr r3, [sp, 0xC] - cmp r3, 0x1 - beq _0801C99C - cmp r3, 0x3 - beq _0801C9A2 - b _0801CFA6 - .align 2, 0 -_0801C978: .4byte 0xfff0ffff -_0801C97C: .4byte gBattleTextBuff1 -_0801C980: .4byte gStatusConditionString_LoveJpn -_0801C984: .4byte BattleScript_BerryCureChosenStatusEnd2 -_0801C988: .4byte gBattleCommunication -_0801C98C: .4byte gBattleScripting -_0801C990: .4byte gPotentialItemEffectBattler -_0801C994: .4byte gActiveBattler -_0801C998: .4byte gBattlerAttacker -_0801C99C: - movs r0, 0x58 - muls r0, r7 - b _0801CE08 -_0801C9A2: - ldr r4, _0801C9F0 @ =gBattleMons - movs r0, 0x58 - adds r3, r7, 0 - muls r3, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - beq _0801C9BE - b _0801CFA6 -_0801C9BE: - ldr r1, _0801C9F4 @ =gDisableStructs - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _0801C9F8 @ =gBitTable - mov r5, r10 - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801C9DE - b _0801CFA6 -_0801C9DE: - adds r1, r5, r3 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - add r0, sp, 0x4 - ldrb r0, [r0] - strb r0, [r1] - b _0801CFA6 - .align 2, 0 -_0801C9F0: .4byte gBattleMons -_0801C9F4: .4byte gDisableStructs -_0801C9F8: .4byte gBitTable -_0801C9FC: - movs r7, 0 - ldr r0, _0801CA2C @ =gBattlersCount - ldrb r0, [r0] - cmp r7, r0 - bcc _0801CA08 - b _0801CFA6 -_0801CA08: - ldr r4, _0801CA30 @ =gLastUsedItem - ldr r1, _0801CA34 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r0, r1 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0801CA3C - ldr r1, _0801CA38 @ =gEnigmaBerries - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - b _0801CA4C - .align 2, 0 -_0801CA2C: .4byte gBattlersCount -_0801CA30: .4byte gLastUsedItem -_0801CA34: .4byte gBattleMons -_0801CA38: .4byte gEnigmaBerries -_0801CA3C: - ldrh r0, [r4] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4] - bl ItemId_GetHoldEffectParam -_0801CA4C: - subs r0, r5, 0x2 - cmp r0, 0x1A - bls _0801CA54 - b _0801CDF0 -_0801CA54: - lsls r0, 2 - ldr r1, _0801CA60 @ =_0801CA64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801CA60: .4byte _0801CA64 - .align 2, 0 -_0801CA64: - .4byte _0801CAD0 - .4byte _0801CBC0 - .4byte _0801CB0C - .4byte _0801CB48 - .4byte _0801CB84 - .4byte _0801CDF0 - .4byte _0801CC08 - .4byte _0801CC9C - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CD90 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CDF0 - .4byte _0801CC44 -_0801CAD0: - ldr r1, _0801CB00 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0801CAE6 - b _0801CDF0 -_0801CAE6: - movs r0, 0x41 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CB04 @ =gBattlescriptCurrInstr - ldr r0, _0801CB08 @ =BattleScript_BerryCureParRet - str r0, [r1] - movs r0, 0x1 - str r0, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CB00: .4byte gBattleMons -_0801CB04: .4byte gBattlescriptCurrInstr -_0801CB08: .4byte BattleScript_BerryCureParRet -_0801CB0C: - ldr r1, _0801CB38 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0801CB22 - b _0801CDF0 -_0801CB22: - ldr r0, _0801CB3C @ =0xfffff077 - ands r1, r0 - str r1, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CB40 @ =gBattlescriptCurrInstr - ldr r0, _0801CB44 @ =BattleScript_BerryCurePsnRet - str r0, [r1] - movs r1, 0x1 - str r1, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CB38: .4byte gBattleMons -_0801CB3C: .4byte 0xfffff077 -_0801CB40: .4byte gBattlescriptCurrInstr -_0801CB44: .4byte BattleScript_BerryCurePsnRet -_0801CB48: - ldr r1, _0801CB78 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0801CB5E - b _0801CDF0 -_0801CB5E: - movs r0, 0x11 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CB7C @ =gBattlescriptCurrInstr - ldr r0, _0801CB80 @ =BattleScript_BerryCureBrnRet - str r0, [r1] - movs r2, 0x1 - str r2, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CB78: .4byte gBattleMons -_0801CB7C: .4byte gBattlescriptCurrInstr -_0801CB80: .4byte BattleScript_BerryCureBrnRet -_0801CB84: - ldr r1, _0801CBB4 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x4C - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801CB9A - b _0801CDF0 -_0801CB9A: - movs r0, 0x21 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CBB8 @ =gBattlescriptCurrInstr - ldr r0, _0801CBBC @ =BattleScript_BerryCureFrzRet - str r0, [r1] - movs r3, 0x1 - str r3, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CBB4: .4byte gBattleMons -_0801CBB8: .4byte gBattlescriptCurrInstr -_0801CBBC: .4byte BattleScript_BerryCureFrzRet -_0801CBC0: - ldr r2, _0801CBF8 @ =gBattleMons - movs r0, 0x58 - adds r4, r7, 0 - muls r4, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r3, r4, r0 - ldr r1, [r3] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801CBDA - b _0801CDF0 -_0801CBDA: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r3] - adds r2, 0x50 - adds r2, r4, r2 - ldr r0, [r2] - ldr r1, _0801CBFC @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CC00 @ =gBattlescriptCurrInstr - ldr r0, _0801CC04 @ =BattleScript_BerryCureSlpRet - b _0801CD58 - .align 2, 0 -_0801CBF8: .4byte gBattleMons -_0801CBFC: .4byte 0xf7ffffff -_0801CC00: .4byte gBattlescriptCurrInstr -_0801CC04: .4byte BattleScript_BerryCureSlpRet -_0801CC08: - ldr r1, _0801CC38 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801CC1E - b _0801CDF0 -_0801CC1E: - movs r0, 0x8 - negs r0, r0 - ands r1, r0 - str r1, [r2] - bl BattleScriptPushCursor - ldr r1, _0801CC3C @ =gBattlescriptCurrInstr - ldr r0, _0801CC40 @ =BattleScript_BerryCureConfusionRet - str r0, [r1] - movs r0, 0x2 - str r0, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CC38: .4byte gBattleMons -_0801CC3C: .4byte gBattlescriptCurrInstr -_0801CC40: .4byte BattleScript_BerryCureConfusionRet -_0801CC44: - ldr r1, _0801CC80 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, 0x50 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0xF0 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - bne _0801CC5C - b _0801CDF0 -_0801CC5C: - ldr r0, _0801CC84 @ =0xfff0ffff - ands r1, r0 - str r1, [r2] - ldr r0, _0801CC88 @ =gBattleTextBuff1 - ldr r1, _0801CC8C @ =gStatusConditionString_LoveJpn - bl StringCopy - bl BattleScriptPushCursor - ldr r1, _0801CC90 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - ldr r1, _0801CC94 @ =gBattlescriptCurrInstr - ldr r0, _0801CC98 @ =BattleScript_BerryCureChosenStatusRet - str r0, [r1] - movs r1, 0x2 - str r1, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CC80: .4byte gBattleMons -_0801CC84: .4byte 0xfff0ffff -_0801CC88: .4byte gBattleTextBuff1 -_0801CC8C: .4byte gStatusConditionString_LoveJpn -_0801CC90: .4byte gBattleCommunication -_0801CC94: .4byte gBattlescriptCurrInstr -_0801CC98: .4byte BattleScript_BerryCureChosenStatusRet -_0801CC9C: - ldr r4, _0801CD60 @ =gBattleMons - movs r0, 0x58 - adds r5, r7, 0 - muls r5, r0 - adds r0, r4, 0 - adds r0, 0x4C - adds r6, r5, r0 - ldr r2, [r6] - ldrb r0, [r6] - cmp r0, 0 - bne _0801CCC4 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r5, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0801CCC4 - b _0801CDF0 -_0801CCC4: - movs r0, 0x88 - ands r2, r0 - cmp r2, 0 - beq _0801CCD4 - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD68 @ =gStatusConditionString_PoisonJpn - bl StringCopy -_0801CCD4: - ldr r0, [r6] - movs r2, 0x7 - mov r8, r2 - ands r0, r2 - adds r4, 0x50 - cmp r0, 0 - beq _0801CCF4 - adds r2, r5, r4 - ldr r0, [r2] - ldr r1, _0801CD6C @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD70 @ =gStatusConditionString_SleepJpn - bl StringCopy -_0801CCF4: - ldr r0, [r6] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801CD06 - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD74 @ =gStatusConditionString_ParalysisJpn - bl StringCopy -_0801CD06: - ldr r0, [r6] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801CD18 - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD78 @ =gStatusConditionString_BurnJpn - bl StringCopy -_0801CD18: - ldr r0, [r6] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801CD2A - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD7C @ =gStatusConditionString_IceJpn - bl StringCopy -_0801CD2A: - adds r5, r4 - ldr r0, [r5] - mov r3, r8 - ands r0, r3 - cmp r0, 0 - beq _0801CD3E - ldr r0, _0801CD64 @ =gBattleTextBuff1 - ldr r1, _0801CD80 @ =gStatusConditionString_ConfusionJpn - bl StringCopy -_0801CD3E: - movs r4, 0 - str r4, [r6] - ldr r0, [r5] - movs r1, 0x8 - negs r1, r1 - ands r0, r1 - str r0, [r5] - bl BattleScriptPushCursor - ldr r0, _0801CD84 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _0801CD88 @ =gBattlescriptCurrInstr - ldr r0, _0801CD8C @ =BattleScript_BerryCureChosenStatusRet -_0801CD58: - str r0, [r1] - movs r5, 0x1 - str r5, [sp, 0xC] - b _0801CDF6 - .align 2, 0 -_0801CD60: .4byte gBattleMons -_0801CD64: .4byte gBattleTextBuff1 -_0801CD68: .4byte gStatusConditionString_PoisonJpn -_0801CD6C: .4byte 0xf7ffffff -_0801CD70: .4byte gStatusConditionString_SleepJpn -_0801CD74: .4byte gStatusConditionString_ParalysisJpn -_0801CD78: .4byte gStatusConditionString_BurnJpn -_0801CD7C: .4byte gStatusConditionString_IceJpn -_0801CD80: .4byte gStatusConditionString_ConfusionJpn -_0801CD84: .4byte gBattleCommunication -_0801CD88: .4byte gBattlescriptCurrInstr -_0801CD8C: .4byte BattleScript_BerryCureChosenStatusRet -_0801CD90: - ldr r0, _0801CDDC @ =gBattleMons - mov r8, r0 - movs r0, 0x58 - adds r1, r7, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - movs r2, 0x6 - movs r3, 0x7 - mov r10, r3 -_0801CDA6: - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _0801CDB4 - strb r2, [r1] - movs r5, 0x5 - str r5, [sp, 0xC] -_0801CDB4: - adds r1, 0x1 - movs r0, 0x1 - negs r0, r0 - add r10, r0 - mov r3, r10 - cmp r3, 0 - bge _0801CDA6 - ldr r5, [sp, 0xC] - cmp r5, 0 - beq _0801CE34 - ldr r0, _0801CDE0 @ =gBattleScripting - strb r7, [r0, 0x17] - ldr r0, _0801CDE4 @ =gPotentialItemEffectBattler - strb r7, [r0] - bl BattleScriptPushCursor - ldr r1, _0801CDE8 @ =gBattlescriptCurrInstr - ldr r0, _0801CDEC @ =BattleScript_WhiteHerbRet - str r0, [r1] - b _0801CFA6 - .align 2, 0 -_0801CDDC: .4byte gBattleMons -_0801CDE0: .4byte gBattleScripting -_0801CDE4: .4byte gPotentialItemEffectBattler -_0801CDE8: .4byte gBattlescriptCurrInstr -_0801CDEC: .4byte BattleScript_WhiteHerbRet -_0801CDF0: - ldr r0, [sp, 0xC] - cmp r0, 0 - beq _0801CE34 -_0801CDF6: - ldr r0, _0801CE24 @ =gBattleScripting - strb r7, [r0, 0x17] - ldr r0, _0801CE28 @ =gPotentialItemEffectBattler - strb r7, [r0] - ldr r4, _0801CE2C @ =gActiveBattler - strb r7, [r4] - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 -_0801CE08: - ldr r1, _0801CE30 @ =gUnknown_2023C30 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0801CFA6 - .align 2, 0 -_0801CE24: .4byte gBattleScripting -_0801CE28: .4byte gPotentialItemEffectBattler -_0801CE2C: .4byte gActiveBattler -_0801CE30: .4byte gUnknown_2023C30 -_0801CE34: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0801CE48 @ =gBattlersCount - ldrb r0, [r0] - cmp r7, r0 - bcs _0801CE44 - b _0801CA08 -_0801CE44: - b _0801CFA6 - .align 2, 0 -_0801CE48: .4byte gBattlersCount -_0801CE4C: - ldr r7, _0801CE64 @ =gBattleMoveDamage - ldr r0, [r7] - cmp r0, 0 - bne _0801CE56 - b _0801CFA6 -_0801CE56: - mov r1, r8 - cmp r1, 0x1E - beq _0801CE68 - cmp r1, 0x3E - beq _0801CF10 - b _0801CFA6 - .align 2, 0 -_0801CE64: .4byte gBattleMoveDamage -_0801CE68: - ldr r0, _0801CEF4 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801CE76 - b _0801CFA6 -_0801CE76: - ldr r2, _0801CEF8 @ =gSpecialStatuses - ldr r4, _0801CEFC @ =gBattlerTarget - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801CE9C - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0801CE9C - b _0801CFA6 -_0801CE9C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r9 - bcs _0801CFA6 - ldr r2, _0801CF00 @ =gBattleMoves - ldr r0, _0801CF04 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0801CFA6 - ldr r2, _0801CF08 @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801CFA6 - ldr r1, _0801CF0C @ =gBattleCommunication - movs r0, 0x8 - strb r0, [r1, 0x3] - bl BattleScriptPushCursor - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - bl BattleScriptPop - b _0801CFA6 - .align 2, 0 -_0801CEF4: .4byte gMoveResultFlags -_0801CEF8: .4byte gSpecialStatuses -_0801CEFC: .4byte gBattlerTarget -_0801CF00: .4byte gBattleMoves -_0801CF04: .4byte gCurrentMove -_0801CF08: .4byte gBattleMons -_0801CF0C: .4byte gBattleCommunication -_0801CF10: - ldr r0, _0801CFB8 @ =gMoveResultFlags - ldrb r0, [r0] - movs r5, 0x29 - ands r5, r0 - cmp r5, 0 - bne _0801CFA6 - ldr r1, _0801CFBC @ =gSpecialStatuses - ldr r4, _0801CFC0 @ =gBattlerTarget - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - adds r6, r1, 0x4 - adds r0, r6 - ldr r1, [r0] - cmp r1, 0 - beq _0801CFA6 - ldr r0, _0801CFC4 @ =0x0000ffff - cmp r1, r0 - beq _0801CFA6 - ldr r0, _0801CFC8 @ =gBattlerAttacker - ldrb r3, [r0] - cmp r3, r2 - beq _0801CFA6 - ldr r2, _0801CFCC @ =gBattleMons - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - beq _0801CFA6 - cmp r1, 0 - beq _0801CFA6 - ldr r0, _0801CFD0 @ =gLastUsedItem - mov r2, sp - ldrh r2, [r2, 0x14] - strh r2, [r0] - ldr r0, _0801CFD4 @ =gPotentialItemEffectBattler - strb r3, [r0] - ldr r0, _0801CFD8 @ =gBattleScripting - strb r3, [r0, 0x17] - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldr r1, [sp, 0x10] - bl __divsi3 - negs r0, r0 - str r0, [r7] - ldrb r1, [r4] - cmp r0, 0 - bne _0801CF88 - movs r0, 0x1 - negs r0, r0 - str r0, [r7] -_0801CF88: - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - str r5, [r0] - bl BattleScriptPushCursor - ldr r1, _0801CFDC @ =gBattlescriptCurrInstr - ldr r0, _0801CFE0 @ =BattleScript_ItemHealHP_Ret - str r0, [r1] - ldr r0, [sp, 0xC] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] -_0801CFA6: - ldr r0, [sp, 0xC] - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801CFB8: .4byte gMoveResultFlags -_0801CFBC: .4byte gSpecialStatuses -_0801CFC0: .4byte gBattlerTarget -_0801CFC4: .4byte 0x0000ffff -_0801CFC8: .4byte gBattlerAttacker -_0801CFCC: .4byte gBattleMons -_0801CFD0: .4byte gLastUsedItem -_0801CFD4: .4byte gPotentialItemEffectBattler -_0801CFD8: .4byte gBattleScripting -_0801CFDC: .4byte gBattlescriptCurrInstr -_0801CFE0: .4byte BattleScript_ItemHealHP_Ret - thumb_func_end ItemBattleEffects - - thumb_func_start ClearFuryCutterDestinyBondGrudge -ClearFuryCutterDestinyBondGrudge: @ 801CFE4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0801D01C @ =gDisableStructs - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0 - strb r2, [r1, 0x10] - ldr r1, _0801D020 @ =gBattleMons - movs r2, 0x58 - adds r3, r0, 0 - muls r3, r2 - adds r1, 0x50 - adds r3, r1 - ldr r1, [r3] - ldr r2, _0801D024 @ =0xfdffffff - ands r1, r2 - str r1, [r3] - ldr r1, _0801D028 @ =gStatuses3 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r2, _0801D02C @ =0xffffbfff - ands r1, r2 - str r1, [r0] - bx lr - .align 2, 0 -_0801D01C: .4byte gDisableStructs -_0801D020: .4byte gBattleMons -_0801D024: .4byte 0xfdffffff -_0801D028: .4byte gStatuses3 -_0801D02C: .4byte 0xffffbfff - thumb_func_end ClearFuryCutterDestinyBondGrudge - - thumb_func_start HandleAction_RunBattleScript -HandleAction_RunBattleScript: @ 801D030 - push {lr} - ldr r0, _0801D050 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801D04C - ldr r1, _0801D054 @ =gUnknown_825011C - ldr r0, _0801D058 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 -_0801D04C: - pop {r0} - bx r0 - .align 2, 0 -_0801D050: .4byte gBattleControllerExecFlags -_0801D054: .4byte gUnknown_825011C -_0801D058: .4byte gBattlescriptCurrInstr - thumb_func_end HandleAction_RunBattleScript - - thumb_func_start GetMoveTarget -GetMoveTarget: @ 801D05C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 24 - lsrs r0, r1, 24 - movs r5, 0 - cmp r0, 0 - beq _0801D07A - subs r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - b _0801D086 -_0801D07A: - ldr r1, _0801D098 @ =gBattleMoves - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x6] -_0801D086: - cmp r6, 0x40 - bls _0801D08C - b _0801D39C -_0801D08C: - lsls r0, r6, 2 - ldr r1, _0801D09C @ =_0801D0A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801D098: .4byte gBattleMoves -_0801D09C: .4byte _0801D0A0 - .align 2, 0 -_0801D0A0: - .4byte _0801D1A4 - .4byte _0801D2A4 - .4byte _0801D398 - .4byte _0801D39C - .4byte _0801D2BC - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D2A4 - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D398 - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D2A4 - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D39C - .4byte _0801D2A4 -_0801D1A4: - ldr r0, _0801D284 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0801D288 @ =gSideTimers - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0801D1D6 - ldr r1, _0801D28C @ =gBattleMons - ldrb r4, [r2, 0x9] - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801D1D6 - b _0801D2EC -_0801D1D6: - ldr r0, _0801D284 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r7, 1 - mov r8, r0 -_0801D1E6: - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0801D290 @ =gBattlersCount - ldrb r1, [r1] - bl __modsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _0801D284 @ =gBattlerAttacker - ldrb r3, [r6] - cmp r5, r3 - beq _0801D1E6 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _0801D1E6 - ldr r0, _0801D294 @ =gAbsentBattlerFlags - ldrb r2, [r0] - ldr r1, _0801D298 @ =gBitTable - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _0801D1E6 - ldr r0, _0801D29C @ =gBattleMoves - mov r3, r8 - adds r1, r3, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x2] - cmp r0, 0xD - beq _0801D234 - b _0801D39C -_0801D234: - ldrb r1, [r6] - str r2, [sp] - movs r0, 0x10 - movs r2, 0x1F - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801D24A - b _0801D39C -_0801D24A: - ldr r2, _0801D28C @ =gBattleMons - movs r1, 0x58 - adds r0, r5, 0 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1F - bne _0801D25E - b _0801D39C -_0801D25E: - movs r4, 0x2 - eors r5, r4 - adds r0, r5, 0 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r5, 0 - bl RecordAbilityBattle - ldr r1, _0801D2A0 @ =gSpecialStatuses - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - orrs r1, r4 - strb r1, [r0] - b _0801D39C - .align 2, 0 -_0801D284: .4byte gBattlerAttacker -_0801D288: .4byte gSideTimers -_0801D28C: .4byte gBattleMons -_0801D290: .4byte gBattlersCount -_0801D294: .4byte gAbsentBattlerFlags -_0801D298: .4byte gBitTable -_0801D29C: .4byte gBattleMoves -_0801D2A0: .4byte gSpecialStatuses -_0801D2A4: - ldr r0, _0801D2B8 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerPosition - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - b _0801D34E - .align 2, 0 -_0801D2B8: .4byte gBattlerAttacker -_0801D2BC: - ldr r0, _0801D2F0 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0801D2F4 @ =gSideTimers - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0801D2FC - ldr r1, _0801D2F8 @ =gBattleMons - ldrb r4, [r2, 0x9] - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0801D2FC -_0801D2EC: - adds r5, r4, 0 - b _0801D39C - .align 2, 0 -_0801D2F0: .4byte gBattlerAttacker -_0801D2F4: .4byte gSideTimers -_0801D2F8: .4byte gBattleMons -_0801D2FC: - ldr r0, _0801D330 @ =gBattleTypeFlags - ldr r0, [r0] - movs r4, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0801D378 - movs r0, 0x4 - ands r6, r0 - cmp r6, 0 - beq _0801D378 - ldr r0, _0801D334 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801D33C - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0801D338 - movs r0, 0x1 - b _0801D34E - .align 2, 0 -_0801D330: .4byte gBattleTypeFlags -_0801D334: .4byte gBattlerAttacker -_0801D338: - movs r0, 0x3 - b _0801D34E -_0801D33C: - bl Random - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _0801D34C - movs r0, 0 - b _0801D34E -_0801D34C: - movs r0, 0x2 -_0801D34E: - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0801D370 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0801D374 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0801D39C - movs r0, 0x2 - eors r5, r0 - b _0801D39C - .align 2, 0 -_0801D370: .4byte gAbsentBattlerFlags -_0801D374: .4byte gBitTable -_0801D378: - ldr r0, _0801D394 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerPosition - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 - b _0801D39C - .align 2, 0 -_0801D394: .4byte gBattlerAttacker -_0801D398: - ldr r0, _0801D3B8 @ =gBattlerAttacker - ldrb r5, [r0] -_0801D39C: - ldr r0, _0801D3B8 @ =gBattlerAttacker - ldrb r0, [r0] - ldr r1, _0801D3BC @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - strb r5, [r0, 0xC] - adds r0, r5, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801D3B8: .4byte gBattlerAttacker -_0801D3BC: .4byte gBattleStruct - thumb_func_end GetMoveTarget - - thumb_func_start HasObedientBitSet -HasObedientBitSet: @ 801D3C0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0801D406 - ldr r0, _0801D40C @ =gBattlerPartyIndexes - lsls r4, 1 - adds r5, r4, r0 - ldrh r0, [r5] - movs r7, 0x64 - muls r0, r7 - ldr r6, _0801D410 @ =gPlayerParty - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xCD - lsls r1, 1 - cmp r0, r1 - beq _0801D414 - ldrh r0, [r5] - muls r0, r7 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - cmp r0, 0x97 - beq _0801D414 -_0801D406: - movs r0, 0x1 - b _0801D42A - .align 2, 0 -_0801D40C: .4byte gBattlerPartyIndexes -_0801D410: .4byte gPlayerParty -_0801D414: - ldr r0, _0801D430 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0801D434 @ =gPlayerParty - adds r0, r1 - movs r1, 0x50 - movs r2, 0 - bl GetMonData -_0801D42A: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801D430: .4byte gBattlerPartyIndexes -_0801D434: .4byte gPlayerParty - thumb_func_end HasObedientBitSet - - thumb_func_start IsMonDisobedient -IsMonDisobedient: @ 801D438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - movs r6, 0 - ldr r0, _0801D4F8 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _0801D4FC @ =0x00010002 - ands r0, r1 - cmp r0, 0 - bne _0801D4F4 - ldr r4, _0801D500 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0801D4F4 - ldrb r0, [r4] - bl HasObedientBitSet - cmp r0, 0 - beq _0801D4BE - ldr r2, _0801D504 @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x54 - adds r0, r1, r0 - ldr r0, [r0] - adds r2, 0x3C - adds r1, r2 - bl IsOtherTrainer - lsls r0, 24 - cmp r0, 0 - beq _0801D4F4 - ldr r0, _0801D508 @ =0x00000827 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0801D4F4 - movs r6, 0xA - ldr r0, _0801D50C @ =0x00000821 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801D4A2 - movs r6, 0x1E -_0801D4A2: - ldr r0, _0801D510 @ =0x00000823 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801D4B0 - movs r6, 0x32 -_0801D4B0: - ldr r0, _0801D514 @ =0x00000825 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0801D4BE - movs r6, 0x46 -_0801D4BE: - ldr r5, _0801D504 @ =gBattleMons - ldr r0, _0801D500 @ =gBattlerAttacker - mov r8, r0 - ldrb r0, [r0] - movs r7, 0x58 - muls r0, r7 - adds r0, r5 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r6 - bls _0801D4F4 - bl Random - movs r1, 0xFF - ands r1, r0 - mov r2, r8 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r7 - adds r0, r2, r5 - adds r0, 0x2A - ldrb r0, [r0] - adds r0, r6 - muls r0, r1 - asrs r4, r0, 8 - cmp r4, r6 - bge _0801D518 -_0801D4F4: - movs r0, 0 - b _0801D738 - .align 2, 0 -_0801D4F8: .4byte gBattleTypeFlags -_0801D4FC: .4byte 0x00010002 -_0801D500: .4byte gBattlerAttacker -_0801D504: .4byte gBattleMons -_0801D508: .4byte 0x00000827 -_0801D50C: .4byte 0x00000821 -_0801D510: .4byte 0x00000823 -_0801D514: .4byte 0x00000825 -_0801D518: - ldr r3, _0801D554 @ =gCurrentMove - ldrh r0, [r3] - cmp r0, 0x63 - bne _0801D52E - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r1, [r0] - ldr r2, _0801D558 @ =0xff7fffff - ands r1, r2 - str r1, [r0] -_0801D52E: - mov r1, r8 - ldrb r0, [r1] - muls r0, r7 - adds r1, r5, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801D564 - ldrh r0, [r3] - cmp r0, 0xAD - beq _0801D54E - cmp r0, 0xD6 - bne _0801D564 -_0801D54E: - ldr r1, _0801D55C @ =gBattlescriptCurrInstr - ldr r0, _0801D560 @ =BattleScript_IgnoresWhileAsleep - b _0801D6E2 - .align 2, 0 -_0801D554: .4byte gCurrentMove -_0801D558: .4byte 0xff7fffff -_0801D55C: .4byte gBattlescriptCurrInstr -_0801D560: .4byte BattleScript_IgnoresWhileAsleep -_0801D564: - bl Random - movs r1, 0xFF - ands r1, r0 - ldr r2, _0801D608 @ =gBattleMons - ldr r0, _0801D60C @ =gBattlerAttacker - ldrb r3, [r0] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - adds r0, 0x2A - ldrb r0, [r0] - adds r0, r6 - muls r0, r1 - asrs r4, r0, 8 - cmp r4, r6 - bge _0801D634 - ldr r0, _0801D610 @ =gCurrentMove - ldrh r1, [r0] - movs r0, 0x84 - lsls r0, 1 - cmp r1, r0 - beq _0801D634 - ldr r6, _0801D614 @ =gBitTable - ldr r5, _0801D618 @ =gUnknown_2023D48 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - adds r0, r3, 0 - movs r2, 0xFF - bl CheckMoveLimitations - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bne _0801D5B0 - b _0801D6D2 -_0801D5B0: - ldr r2, _0801D61C @ =gUnknown_2023D49 - mov r8, r2 - movs r7, 0x3 -_0801D5B6: - bl Random - ands r0, r7 - mov r1, r8 - strb r0, [r1] - strb r0, [r5] - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _0801D5B6 - ldr r4, _0801D620 @ =gUnknown_2023D4E - ldr r3, _0801D608 @ =gBattleMons - ldr r0, _0801D618 @ =gUnknown_2023D48 - ldrb r0, [r0] - lsls r0, 1 - ldr r1, _0801D60C @ =gBattlerAttacker - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r0, r1 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strh r0, [r4] - ldr r1, _0801D624 @ =gBattlescriptCurrInstr - ldr r0, _0801D628 @ =BattleScript_IgnoresAndUsesRandomMove - str r0, [r1] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _0801D62C @ =gBattlerTarget - strb r0, [r1] - ldr r2, _0801D630 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 14 - b _0801D732 - .align 2, 0 -_0801D608: .4byte gBattleMons -_0801D60C: .4byte gBattlerAttacker -_0801D610: .4byte gCurrentMove -_0801D614: .4byte gBitTable -_0801D618: .4byte gUnknown_2023D48 -_0801D61C: .4byte gUnknown_2023D49 -_0801D620: .4byte gUnknown_2023D4E -_0801D624: .4byte gBattlescriptCurrInstr -_0801D628: .4byte BattleScript_IgnoresAndUsesRandomMove -_0801D62C: .4byte gBattlerTarget -_0801D630: .4byte gHitMarker -_0801D634: - ldr r5, _0801D6B8 @ =gBattleMons - ldr r2, _0801D6BC @ =gBattlerAttacker - mov r8, r2 - ldrb r0, [r2] - movs r7, 0x58 - muls r0, r7 - adds r0, r5 - adds r0, 0x2A - ldrb r0, [r0] - subs r0, r6 - lsls r0, 24 - lsrs r6, r0, 24 - bl Random - movs r2, 0xFF - adds r4, r2, 0 - ands r4, r0 - cmp r4, r6 - bge _0801D6CC - mov r1, r8 - ldrb r0, [r1] - adds r1, r0, 0 - muls r1, r7 - adds r0, r5, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r2 - cmp r0, 0 - bne _0801D6CC - adds r0, r1, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - beq _0801D6CC - cmp r0, 0xF - beq _0801D6CC - movs r2, 0 - ldr r0, _0801D6C0 @ =gBattlersCount - ldrb r3, [r0] - adds r7, r0, 0 - cmp r2, r3 - bge _0801D6AA - ldr r0, [r5, 0x50] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - bne _0801D6AA - adds r1, r5, 0 - adds r1, 0x50 - movs r5, 0x70 -_0801D69A: - adds r1, 0x58 - adds r2, 0x1 - cmp r2, r3 - bge _0801D6AA - ldr r0, [r1] - ands r0, r5 - cmp r0, 0 - beq _0801D69A -_0801D6AA: - ldrb r7, [r7] - cmp r2, r7 - bne _0801D6CC - ldr r1, _0801D6C4 @ =gBattlescriptCurrInstr - ldr r0, _0801D6C8 @ =BattleScript_IgnoresAndFallsAsleep - b _0801D6E2 - .align 2, 0 -_0801D6B8: .4byte gBattleMons -_0801D6BC: .4byte gBattlerAttacker -_0801D6C0: .4byte gBattlersCount -_0801D6C4: .4byte gBattlescriptCurrInstr -_0801D6C8: .4byte BattleScript_IgnoresAndFallsAsleep -_0801D6CC: - subs r4, r6 - cmp r4, r6 - blt _0801D6F4 -_0801D6D2: - bl Random - ldr r2, _0801D6E8 @ =gBattleCommunication - movs r1, 0x3 - ands r1, r0 - strb r1, [r2, 0x5] - ldr r1, _0801D6EC @ =gBattlescriptCurrInstr - ldr r0, _0801D6F0 @ =BattleScript_MoveUsedLoafingAround -_0801D6E2: - str r0, [r1] - movs r0, 0x1 - b _0801D738 - .align 2, 0 -_0801D6E8: .4byte gBattleCommunication -_0801D6EC: .4byte gBattlescriptCurrInstr -_0801D6F0: .4byte BattleScript_MoveUsedLoafingAround -_0801D6F4: - ldr r4, _0801D744 @ =gBattlerAttacker - ldrb r1, [r4] - movs r0, 0x58 - muls r1, r0 - ldr r0, _0801D748 @ =gBattleMons - adds r1, r0 - movs r0, 0x28 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldrb r0, [r4] - str r0, [sp, 0x8] - ldrb r0, [r4] - str r0, [sp, 0xC] - adds r0, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl CalculateBaseDamage - ldr r1, _0801D74C @ =gBattleMoveDamage - str r0, [r1] - ldr r1, _0801D750 @ =gBattlerTarget - ldrb r0, [r4] - strb r0, [r1] - ldr r1, _0801D754 @ =gBattlescriptCurrInstr - ldr r0, _0801D758 @ =BattleScript_IgnoresAndHitsItself - str r0, [r1] - ldr r2, _0801D75C @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 12 -_0801D732: - orrs r0, r1 - str r0, [r2] - movs r0, 0x2 -_0801D738: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801D744: .4byte gBattlerAttacker -_0801D748: .4byte gBattleMons -_0801D74C: .4byte gBattleMoveDamage -_0801D750: .4byte gBattlerTarget -_0801D754: .4byte gBattlescriptCurrInstr -_0801D758: .4byte BattleScript_IgnoresAndHitsItself -_0801D75C: .4byte gHitMarker - thumb_func_end IsMonDisobedient - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data.s b/data/data.s index 65f48e4f3..8b3e66bdc 100644 --- a/data/data.s +++ b/data/data.s @@ -281,7 +281,7 @@ gUnknown_82500CC:: @ 82500CC .section .rodata.825011C .balign 4 -gUnknown_825011C:: @ 825011C +gBattleScriptingCommandsTable:: @ 825011C .incbin "baserom.gba", 0x25011C, 0x3E0 gUnknown_82504FC:: @ 82504FC diff --git a/include/battle.h b/include/battle.h index 7db128430..357bbbd8c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -987,6 +987,8 @@ extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; extern u8 gMoveResultFlags; extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; - +extern u8 gCurrentActionFuncId; +extern u8 gCurrMovePos; +extern u8 gChosenMovePos; #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 185f6228d..c592ba6b8 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -28,16 +28,8 @@ extern const u8 BattleScript_LocalBattleLost[]; extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; extern const u8 BattleScript_LocalBattleLostEnd[]; extern const u8 BattleScript_CheckDomeDrew[]; -extern const u8 BattleScript_82DAA0B[]; -extern const u8 BattleScript_82DAA31[]; extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_82DAA5C[]; -extern const u8 BattleScript_82DAA83[]; extern const u8 BattleScript_FrontierTrainerBattleWon[]; -extern const u8 BattleScript_82DAAAB[]; -extern const u8 BattleScript_82DAAAE[]; -extern const u8 BattleScript_82DAACB[]; -extern const u8 BattleScript_82DAADA[]; extern const u8 BattleScript_SmokeBallEscape[]; extern const u8 BattleScript_RanAwayUsingMonAbility[]; extern const u8 BattleScript_GotAwaySafely[]; @@ -47,11 +39,6 @@ extern const u8 BattleScript_PrintFailedToRunString[]; extern const u8 BattleScript_PrintCantEscapeFromBattle[]; extern const u8 BattleScript_PrintFullBox[]; extern const u8 BattleScript_ActionSwitch[]; -extern const u8 BattleScript_82DAB35[]; -extern const u8 BattleScript_82DAB37[]; -extern const u8 BattleScript_82DAB44[]; -extern const u8 BattleScript_82DAB77[]; -extern const u8 BattleScript_82DABB8[]; extern const u8 BattleScript_Pausex20[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; @@ -64,13 +51,10 @@ extern const u8 BattleScript_SideStatusWoreOff[]; extern const u8 BattleScript_SafeguardProtected[]; extern const u8 BattleScript_SafeguardEnds[]; extern const u8 BattleScript_LeechSeedTurnDrain[]; -extern const u8 BattleScript_82DAD47[]; -extern const u8 BattleScript_82DAD4D[]; extern const u8 BattleScript_BideStoringEnergy[]; extern const u8 BattleScript_BideAttack[]; extern const u8 BattleScript_BideNoEnergyToAttack[]; extern const u8 BattleScript_SuccessForceOut[]; -extern const u8 BattleScript_82DADF1[]; extern const u8 BattleScript_MistProtected[]; extern const u8 BattleScript_RageIsBuilding[]; extern const u8 BattleScript_MoveUsedIsDisabled[]; @@ -81,32 +65,16 @@ extern const u8 BattleScript_SelectingUnusableMoveInPalace[]; extern const u8 BattleScript_EncoredNoMore[]; extern const u8 BattleScript_DestinyBondTakesLife[]; extern const u8 BattleScript_SpikesOnAttacker[]; -extern const u8 BattleScript_82DAE7A[]; extern const u8 BattleScript_SpikesOnTarget[]; -extern const u8 BattleScript_82DAEB1[]; extern const u8 BattleScript_SpikesOngBank1[]; -extern const u8 BattleScript_82DAEE8[]; -extern const u8 BattleScript_82DAEFE[]; extern const u8 BattleScript_PerishSongTakesLife[]; extern const u8 BattleScript_PerishSongCountGoesDown[]; extern const u8 BattleScript_AllStatsUp[]; -extern const u8 BattleScript_82DAF54[]; -extern const u8 BattleScript_82DAF72[]; -extern const u8 BattleScript_82DAF86[]; -extern const u8 BattleScript_82DAF9A[]; -extern const u8 BattleScript_82DAFAE[]; -extern const u8 BattleScript_82DAFC2[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_WrapFree[]; extern const u8 BattleScript_LeechSeedFree[]; extern const u8 BattleScript_SpikesFree[]; extern const u8 BattleScript_MonTookFutureAttack[]; -extern const u8 BattleScript_82DB001[]; -extern const u8 BattleScript_82DB008[]; -extern const u8 BattleScript_82DB020[]; -extern const u8 BattleScript_82DB027[]; -extern const u8 BattleScript_82DB03F[]; -extern const u8 BattleScript_82DB058[]; extern const u8 BattleScript_NoMovesLeft[]; extern const u8 BattleScript_SelectingMoveWithNoPP[]; extern const u8 BattleScript_NoPPForMove[]; @@ -119,8 +87,6 @@ extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[]; extern const u8 BattleScript_WishComesTrue[]; extern const u8 BattleScript_IngrainTurnHeal[]; extern const u8 BattleScript_AtkDefDown[]; -extern const u8 BattleScript_82DB144[]; -extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; extern const u8 BattleScript_SelectingImprisonedMove[]; @@ -131,15 +97,11 @@ extern const u8 BattleScript_SnatchedMove[]; extern const u8 BattleScript_EnduredMsg[]; extern const u8 BattleScript_OneHitKOMsg[]; extern const u8 BattleScript_SAtkDown2[]; -extern const u8 BattleScript_82DB1FE[]; extern const u8 BattleScript_FocusPunchSetUp[]; extern const u8 BattleScript_MoveUsedIsAsleep[]; extern const u8 BattleScript_MoveUsedWokeUp[]; extern const u8 BattleScript_MonWokeUpInUproar[]; extern const u8 BattleScript_PoisonTurnDmg[]; -extern const u8 BattleScript_82DB243[]; -extern const u8 BattleScript_82DB245[]; -extern const u8 BattleScript_82DB25E[]; extern const u8 BattleScript_BurnTurnDmg[]; extern const u8 BattleScript_MoveUsedIsFrozen[]; extern const u8 BattleScript_MoveUsedUnfroze[]; @@ -149,8 +111,6 @@ extern const u8 BattleScript_MoveUsedFlinched[]; extern const u8 BattleScript_PrintUproarOverTurns[]; extern const u8 BattleScript_ThrashConfuses[]; extern const u8 BattleScript_MoveUsedIsConfused[]; -extern const u8 BattleScript_82DB2D4[]; -extern const u8 BattleScript_82DB2FF[]; extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_WrapTurnDmg[]; @@ -162,7 +122,6 @@ extern const u8 BattleScript_NightmareTurnDmg[]; extern const u8 BattleScript_CurseTurnDmg[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_MoveEffectSleep[]; -extern const u8 BattleScript_82DB374[]; extern const u8 BattleScript_YawnMakesAsleep[]; extern const u8 BattleScript_MoveEffectPoison[]; extern const u8 BattleScript_MoveEffectBurn[]; @@ -186,14 +145,6 @@ extern const u8 BattleScript_ShedSkinActivates[]; extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_82DB4AF[]; -extern const u8 BattleScript_82DB4B8[]; -extern const u8 BattleScript_82DB4BE[]; -extern const u8 BattleScript_82DB4C1[]; -extern const u8 BattleScript_82DB4CD[]; -extern const u8 BattleScript_82DB510[]; -extern const u8 BattleScript_82DB51B[]; -extern const u8 BattleScript_82DB51C[]; extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_TookAttack[]; extern const u8 BattleScript_SturdyPreventsOHKO[]; @@ -221,12 +172,9 @@ extern const u8 BattleScript_ApplySecondaryEffect[]; extern const u8 BattleScript_SynchronizeActivates[]; extern const u8 BattleScript_NoItemSteal[]; extern const u8 BattleScript_AbilityCuredStatus[]; -extern const u8 BattleScript_82DB695[]; extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_82DB6C7[]; extern const u8 BattleScript_IgnoresAndFallsAsleep[]; -extern const u8 BattleScript_82DB6F0[]; extern const u8 BattleScript_SubstituteFade[]; extern const u8 BattleScript_BerryCurePrlzEnd2[]; extern const u8 BattleScript_BerryCureParRet[]; @@ -252,18 +200,8 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; extern const u8 BattleScript_HangedOnMsg[]; extern const u8 BattleScript_BerryConfuseHealEnd2[]; extern const u8 BattleScript_BerryStatRaiseEnd2[]; -extern const u8 BattleScript_82DB85B[]; extern const u8 BattleScript_BerryFocusEnergyEnd2[]; extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 BattleScript_82DB87D[]; -extern const u8 BattleScript_82DB881[]; -extern const u8 BattleScript_82DB887[]; -extern const u8 BattleScript_82DB89D[]; -extern const u8 BattleScript_82DB8BE[]; -extern const u8 BattleScript_82DB8E0[]; -extern const u8 BattleScript_82DB8F3[]; -extern const u8 BattleScript_82DB973[]; -extern const u8 BattleScript_82DB992[]; extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; extern const u8 BattleScript_PrintPlayerForfeited[]; extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[]; @@ -271,27 +209,18 @@ extern const u8 BattleScript_BallThrow[]; extern const u8 BattleScript_BallThrowByWally[]; extern const u8 BattleScript_SafariBallThrow[]; extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_82DBD92[]; -extern const u8 BattleScript_82DBDA5[]; -extern const u8 BattleScript_82DBDC2[]; -extern const u8 BattleScript_82DBDC3[]; extern const u8 BattleScript_WallyBallThrow[]; extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_82DBE01[]; extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_82DBE12[]; -extern const u8 BattleScript_82DBE1C[]; -extern const u8 BattleScript_82DBE4B[]; -extern const u8 BattleScript_82DBE6F[]; -extern const u8 BattleScript_82DBE91[]; extern const u8 BattleScript_RunByUsingItem[]; extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; -extern const u8 BattleScript_82DBEE3[]; extern const u8 gUnknown_81D9192[]; extern const u8 gUnknown_81D9180[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_IntimidateActivatesEnd3[]; +extern const u8 BattleScript_IgnoresWhileAsleep[]; +extern const u8 BattleScript_IgnoresAndHitsItself[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index dfe7be60a..797f0ef52 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -52,45 +52,41 @@ #define BS_GET_PLAYER2 13 #define BS_GET_OPPONENT2 14 -u8 GetBattleBank(u8 caseId); -void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 bankAtk); -void PressurePPLoseOnUsingImprison(u8 bankAtk); -void MarkAllBattlersForControllerExec(void); // unused -void MarkBattlerForControllerExec(u8 bank); -void sub_803F850(u8 arg0); -void CancelMultiTurnMoves(u8 bank); -bool8 WasUnableToUseMove(u8 bank); -void PrepareStringBattle(u16 stringId, u8 bank); +u8 GetBattlerForBattleScript(u8 caseId); +void PressurePPLose(u8 target, u8 attacker, u16 move); +void PressurePPLoseOnUsingImprison(u8 attacker); +void PressurePPLoseOnUsingPerishSong(u8 attacker); +void MarkAllBattlersForControllerExec(void); +void MarkBattlerForControllerExec(u8 battlerId); +void sub_8017298(u8 arg0); +void CancelMultiTurnMoves(u8 battler); +bool8 WasUnableToUseMove(u8 battler); +void PrepareStringBattle(u16 stringId, u8 battler); void ResetSentPokesToOpponentValue(void); -void sub_803F9EC(u8 bank); -void sub_803FA70(u8 bank); -void BattleScriptPush(const u8* bsPtr); +void sub_8017434(u8 battler); +void sub_80174B8(u8 battler); +void BattleScriptPush(const u8 *bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); u8 TrySetCantSelectMoveBattleScript(void); -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); -u8 GetImprisonedMovesCount(u8 bank, u16 move); +u8 GetImprisonedMovesCount(u8 battlerId, u16 move); u8 DoFieldEndTurnEffects(void); u8 DoBattlerEndTurnEffects(void); bool8 HandleWishPerishSongOnTurnEnd(void); bool8 HandleFaintedMonActions(void); void TryClearRageStatuses(void); u8 AtkCanceller_UnableToUseMove(void); -bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); -u8 CastformDataTypeChange(u8 bank); -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -void BattleScriptExecute(const u8* BS_ptr); -void BattleScriptPushCursorAndCallback(const u8* BS_ptr); -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void ClearFuryCutterDestinyBondGrudge(u8 bank); -void HandleAction_RunBattleScript(void); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); -u8 IsMonDisobedient(void); -void MarkBattlerForControllerExec(u8 battlerId); -void sub_80174B8(u8 battlerId); -void sub_8017298(u8 battlerId); bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); +u8 CastformDataTypeChange(u8 battler); +u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg); +void BattleScriptExecute(const u8 *BS_ptr); +void BattleScriptPushCursorAndCallback(const u8 *BS_ptr); +u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn); +void ClearFuryCutterDestinyBondGrudge(u8 battlerId); +void HandleAction_RunBattleScript(void); +u8 GetMoveTarget(u16 move, u8 setTarget); +u8 IsMonDisobedient(void); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 78c1583b4..6942fee83 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -77,4 +77,10 @@ #define STAT_ACC 6 // only in battles #define STAT_EVASION 7 // only in battles +#define NUM_STATS 6 +#define NUM_BATTLE_STATS 8 + +// Shiny odds +#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 + #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/ld_script.txt b/ld_script.txt index fb98e6fdd..f52bcb988 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -68,7 +68,6 @@ SECTIONS { asm/battle_1.o(.text); asm/battle_2.o(.text); src/battle_util.o(.text); - asm/battle_util.o(.text); asm/battle_script_commands.o(.text); src/battle_util2.o(.text); asm/battle_controller_player.o(.text); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 913068aed..1be10d228 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -485,7 +485,7 @@ void RecordAbilityBattle(u8 a, u8 b) BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b; } -void sub_80C7208(u8 a, u8 b) +void RecordItemEffectBattle(u8 a, u8 b) { if (GetBattlerSide(a) == 0) BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b; diff --git a/src/battle_util.c b/src/battle_util.c index 55f674215..cf91b122f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8,25 +8,28 @@ #include "pokemon.h" #include "string_util.h" #include "field_weather.h" +#include "event_data.h" #include "battle.h" #include "battle_anim.h" #include "battle_scripts.h" #include "battle_message.h" +#include "constants/battle_anim.h" #include "battle_controllers.h" +#include "battle_string_ids.h" #include "battle_ai_script_commands.h" #include "constants/battle.h" #include "constants/moves.h" #include "constants/items.h" +#include "constants/flags.h" #include "constants/species.h" #include "constants/weather.h" #include "constants/abilities.h" #include "constants/pokemon.h" -#include "constants/battle_anim.h" #include "constants/hold_effects.h" #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" -const u16 sSoundMovesTable[] = +static const u16 sSoundMovesTable[] = { MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE, MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF @@ -392,6 +395,7 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; + for (j = 0; j < MAX_MON_MOVES && move != gBattleMons[i].moves[j]; ++j); if (j < MAX_MON_MOVES) ++imprisonedMoves; @@ -914,6 +918,7 @@ u8 DoBattlerEndTurnEffects(void) if (gDisableStructs[gActiveBattler].disableTimer != 0) { s32 i; + for (i = 0; i < MAX_MON_MOVES; ++i) { if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) @@ -1582,7 +1587,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattlerAttacker >= gBattlersCount) gBattlerAttacker = battler; - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]; else @@ -1992,7 +1996,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } break; case ABILITYEFFECT_IMMUNITY: // 5 - for (battler = 0; battler < gBattlersCount; battler++) + for (battler = 0; battler < gBattlersCount; ++battler) { switch (gBattleMons[battler].ability) { @@ -2323,3 +2327,873 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } return effect; } + +void BattleScriptExecute(const u8 *BS_ptr) +{ + gBattlescriptCurrInstr = BS_ptr; + gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size++] = gBattleMainFunc; + gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack; + gCurrentActionFuncId = 0; +} + +void BattleScriptPushCursorAndCallback(const u8 *BS_ptr) +{ + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BS_ptr; + gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size++] = gBattleMainFunc; + gBattleMainFunc = RunBattleScriptCommands; +} + +enum +{ + ITEM_NO_EFFECT, + ITEM_STATUS_CHANGE, + ITEM_EFFECT_OTHER, + ITEM_PP_CHANGE, + ITEM_HP_CHANGE, + ITEM_STATS_CHANGE, +}; + +u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) +{ + int i = 0; + u8 effect = ITEM_NO_EFFECT; + u8 changedPP = 0; + u8 battlerHoldEffect, atkHoldEffect, defHoldEffect; + u8 battlerHoldEffectParam, atkHoldEffectParam, defHoldEffectParam; + u16 atkItem, defItem; + + gLastUsedItem = gBattleMons[battlerId].item; + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + battlerHoldEffect = gEnigmaBerries[battlerId].holdEffect; + battlerHoldEffectParam = gEnigmaBerries[battlerId].holdEffectParam; + } + else + { + battlerHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + battlerHoldEffectParam = ItemId_GetHoldEffectParam(gLastUsedItem); + } + + atkItem = gBattleMons[gBattlerAttacker].item; + if (atkItem == ITEM_ENIGMA_BERRY) + { + atkHoldEffect = gEnigmaBerries[gBattlerAttacker].holdEffect; + atkHoldEffectParam = gEnigmaBerries[gBattlerAttacker].holdEffectParam; + } + else + { + atkHoldEffect = ItemId_GetHoldEffect(atkItem); + atkHoldEffectParam = ItemId_GetHoldEffectParam(atkItem); + } + + // def variables are unused + defItem = gBattleMons[gBattlerTarget].item; + if (defItem == ITEM_ENIGMA_BERRY) + { + defHoldEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + defHoldEffectParam = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + defHoldEffect = ItemId_GetHoldEffect(defItem); + defHoldEffectParam = ItemId_GetHoldEffectParam(defItem); + } + switch (caseID) + { + case ITEMEFFECT_ON_SWITCH_IN: + switch (battlerHoldEffect) + { + case HOLD_EFFECT_DOUBLE_PRIZE: + gBattleStruct->moneyMultiplier = 2; + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < NUM_BATTLE_STATS; ++i) + { + if (gBattleMons[battlerId].statStages[i] < 6) + { + gBattleMons[battlerId].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + gBattleScripting.battler = battlerId; + gPotentialItemEffectBattler = battlerId; + gActiveBattler = gBattlerAttacker = battlerId; + BattleScriptExecute(BattleScript_WhiteHerbEnd2); + } + break; + } + break; + case 1: + if (gBattleMons[battlerId].hp) + { + switch (battlerHoldEffect) + { + case HOLD_EFFECT_RESTORE_HP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + gBattleMoveDamage = battlerHoldEffectParam; + if (gBattleMons[battlerId].hp + battlerHoldEffectParam > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = 4; + } + break; + case HOLD_EFFECT_RESTORE_PP: + if (!moveTurn) + { + struct Pokemon *mon; + u8 ppBonuses; + u16 move; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]]; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + move = GetMonData(mon, MON_DATA_MOVE1 + i); + changedPP = GetMonData(mon, MON_DATA_PP1 + i); + ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); + if (move && changedPP == 0) + break; + } + if (i != MAX_MON_MOVES) + { + u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); + if (changedPP + battlerHoldEffectParam > maxPP) + changedPP = maxPP; + else + changedPP = changedPP + battlerHoldEffectParam; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, move); + BattleScriptExecute(BattleScript_BerryPPHealEnd2); + BtlController_EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + MarkBattlerForControllerExec(gActiveBattler); + effect = ITEM_PP_CHANGE; + } + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < NUM_BATTLE_STATS; ++i) + { + if (gBattleMons[battlerId].statStages[i] < 6) + { + gBattleMons[battlerId].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + gBattleScripting.battler = battlerId; + gPotentialItemEffectBattler = battlerId; + gActiveBattler = gBattlerAttacker = battlerId; + BattleScriptExecute(BattleScript_WhiteHerbEnd2); + } + break; + case HOLD_EFFECT_LEFTOVERS: + if (gBattleMons[battlerId].hp < gBattleMons[battlerId].maxHP && !moveTurn) + { + gBattleMoveDamage = gBattleMons[battlerId].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_ItemHealHP_End2); + effect = ITEM_HP_CHANGE; + RecordItemEffectBattle(battlerId, battlerHoldEffect); + } + break; + case HOLD_EFFECT_CONFUSE_SPICY: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SPICY) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_DRY: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_DRY) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SWEET: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SWEET) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_BITTER: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_BITTER) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SOUR: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) + { + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; + gBattleMoveDamage *= -1; + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SOUR) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_ATTACK_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); + PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); + gEffectBattler = battlerId; + SET_STATCHANGER(STAT_ATK, 1, FALSE); + gBattleScripting.animArg1 = 0xE + STAT_ATK; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_DEFENSE_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF); + gEffectBattler = battlerId; + SET_STATCHANGER(STAT_DEF, 1, FALSE); + gBattleScripting.animArg1 = 0xE + STAT_DEF; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SPEED_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED); + gEffectBattler = battlerId; + SET_STATCHANGER(STAT_SPEED, 1, FALSE); + gBattleScripting.animArg1 = 0xE + STAT_SPEED; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_ATTACK_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); + gEffectBattler = battlerId; + SET_STATCHANGER(STAT_SPATK, 1, FALSE); + gBattleScripting.animArg1 = 0xE + STAT_SPATK; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_DEFENSE_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF); + gEffectBattler = battlerId; + SET_STATCHANGER(STAT_SPDEF, 1, FALSE); + gBattleScripting.animArg1 = 0xE + STAT_SPDEF; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_CRITICAL_UP: + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY)) + { + gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY; + BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_RANDOM_STAT_UP: + if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam) + { + for (i = 0; i < 5 && gBattleMons[battlerId].statStages[STAT_ATK + i] >= 0xC; ++i); + if (i != 5) + { + do + i = Random() % 5; + while (gBattleMons[battlerId].statStages[STAT_ATK + i] == 0xC); + PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; + gBattleTextBuff2[4] = B_BUFF_STRING; + gBattleTextBuff2[5] = STRINGID_STATROSE; + gBattleTextBuff2[6] = STRINGID_STATROSE >> 8; + gBattleTextBuff2[7] = EOS; + gEffectBattler = battlerId; + SET_STATCHANGER(i + 1, 2, FALSE); + gBattleScripting.animArg1 = 0x21 + i + 6; + gBattleScripting.animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + } + break; + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS); + BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); + BattleScriptExecute(BattleScript_BerryCurePsnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[battlerId].status1 & STATUS1_BURN) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_BURN); + BattleScriptExecute(BattleScript_BerryCureBrnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE); + BattleScriptExecute(BattleScript_BerryCureFrzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP); + gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptExecute(BattleScript_BerryCureSlpEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + BattleScriptExecute(BattleScript_BerryCureConfusionEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + i = 0; + if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + ++i; + } + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + ++i; + } + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + ++i; + } + if (gBattleMons[battlerId].status1 & STATUS1_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + ++i; + } + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + ++i; + } + if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + ++i; + } + if (!(i > 1)) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleMons[battlerId].status1 = 0; + gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect = ITEM_EFFECT_OTHER; + } + break; + } + if (effect) + { + gBattleScripting.battler = battlerId; + gPotentialItemEffectBattler = battlerId; + gActiveBattler = gBattlerAttacker = battlerId; + switch (effect) + { + case ITEM_STATUS_CHANGE: + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1); + MarkBattlerForControllerExec(gActiveBattler); + break; + case ITEM_PP_CHANGE: + if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[i])) + gBattleMons[battlerId].pp[i] = changedPP; + break; + } + } + } + break; + case 2: + break; + case ITEMEFFECT_MOVE_END: + for (battlerId = 0; battlerId < gBattlersCount; ++battlerId) + { + gLastUsedItem = gBattleMons[battlerId].item; + if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) + { + battlerHoldEffect = gEnigmaBerries[battlerId].holdEffect; + battlerHoldEffectParam = gEnigmaBerries[battlerId].holdEffectParam; + } + else + { + battlerHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + battlerHoldEffectParam = ItemId_GetHoldEffectParam(gLastUsedItem); + } + switch (battlerHoldEffect) + { + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureParRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[battlerId].status1 & STATUS1_BURN) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_BURN); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) + { + gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP); + gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + } + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) + { + gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + } + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + } + if (gBattleMons[battlerId].status1 & STATUS1_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + } + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + } + if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + } + gBattleMons[battlerId].status1 = 0; + gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < NUM_BATTLE_STATS; ++i) + { + if (gBattleMons[battlerId].statStages[i] < 6) + { + gBattleMons[battlerId].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + gBattleScripting.battler = battlerId; + gPotentialItemEffectBattler = battlerId; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + return effect; + } + break; + } + if (effect) + { + gBattleScripting.battler = battlerId; + gPotentialItemEffectBattler = battlerId; + gActiveBattler = battlerId; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + break; + } + } + break; + case ITEMEFFECT_KINGSROCK_SHELLBELL: + if (gBattleMoveDamage) + { + switch (atkHoldEffect) + { + case HOLD_EFFECT_FLINCH: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && TARGET_TURN_DAMAGED + && (Random() % 100) < battlerHoldEffectParam + && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED + && gBattleMons[gBattlerTarget].hp) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; + BattleScriptPushCursor(); + SetMoveEffect(0, 0); + BattleScriptPop(); + } + break; + case HOLD_EFFECT_SHELL_BELL: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gSpecialStatuses[gBattlerTarget].dmg != 0 + && gSpecialStatuses[gBattlerTarget].dmg != 0xFFFF + && gBattlerAttacker != gBattlerTarget + && gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP + && gBattleMons[gBattlerAttacker].hp != 0) + { + gLastUsedItem = atkItem; + gPotentialItemEffectBattler = gBattlerAttacker; + gBattleScripting.battler = gBattlerAttacker; + gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkHoldEffectParam) * -1; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gSpecialStatuses[gBattlerTarget].dmg = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; + ++effect; + } + break; + } + } + break; + } + return effect; +} + +void ClearFuryCutterDestinyBondGrudge(u8 battlerId) +{ + gDisableStructs[battlerId].furyCutterCounter = 0; + gBattleMons[battlerId].status2 &= ~(STATUS2_DESTINY_BOND); + gStatuses3[battlerId] &= ~(STATUS3_GRUDGE); +} + +void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands +{ + if (!gBattleControllerExecFlags) + gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); +} + +u8 GetMoveTarget(u16 move, u8 setTarget) +{ + u8 targetBattler = 0; + u8 moveTarget; + u8 side; + + if (setTarget) + moveTarget = setTarget - 1; + else + moveTarget = gBattleMoves[move].target; + switch (moveTarget) + { + case MOVE_TARGET_SELECTED: + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBattler = gSideTimers[side].followmeTarget; + else + { + side = GetBattlerSide(gBattlerAttacker); + do + { + targetBattler = Random() % gBattlersCount; + } while (targetBattler == gBattlerAttacker || side == GetBattlerSide(targetBattler) || gAbsentBattlerFlags & gBitTable[targetBattler]); + if (gBattleMoves[move].type == TYPE_ELECTRIC + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && gBattleMons[targetBattler].ability != ABILITY_LIGHTNING_ROD) + { + targetBattler ^= BIT_FLANK; + RecordAbilityBattle(targetBattler, gBattleMons[targetBattler].ability); + gSpecialStatuses[targetBattler].lightningRodRedirected = 1; + } + } + break; + case MOVE_TARGET_DEPENDS: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_FOES_AND_ALLY: + case MOVE_TARGET_OPPONENTS_FIELD: + targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE); + if (gAbsentBattlerFlags & gBitTable[targetBattler]) + targetBattler ^= BIT_FLANK; + break; + case MOVE_TARGET_RANDOM: + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBattler = gSideTimers[side].followmeTarget; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + { + if (Random() & 1) + targetBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + else + targetBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + else + { + if (Random() & 1) + targetBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + else + targetBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + if (gAbsentBattlerFlags & gBitTable[targetBattler]) + targetBattler ^= BIT_FLANK; + } + else + targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE); + break; + case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_USER: + targetBattler = gBattlerAttacker; + break; + } + *(gBattleStruct->moveTarget + gBattlerAttacker) = targetBattler; + return targetBattler; +} + +static bool32 HasObedientBitSet(u8 battlerId) +{ + if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT + || (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS + && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)) + return TRUE; + return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_OBEDIENCE, NULL); +} + +u8 IsMonDisobedient(void) +{ + s32 rnd; + s32 calc; + u8 obedienceLevel = 0; + + if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_POKEDUDE)) || GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) + return 0; + if (HasObedientBitSet(gBattlerAttacker)) // only if species is Mew or Deoxys + { + if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName) || FlagGet(FLAG_0x827)) + return 0; + obedienceLevel = 10; + if (FlagGet(FLAG_0x821)) + obedienceLevel = 30; + if (FlagGet(FLAG_0x823)) + obedienceLevel = 50; + if (FlagGet(FLAG_0x825)) + obedienceLevel = 70; + } + if (gBattleMons[gBattlerAttacker].level <= obedienceLevel) + return 0; + rnd = (Random() & 255); + calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + return 0; + // is not obedient + if (gCurrentMove == MOVE_RAGE) + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE); + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + { + gBattlescriptCurrInstr = BattleScript_IgnoresWhileAsleep; + return 1; + } + rnd = (Random() & 255); + calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel && gCurrentMove != MOVE_FOCUS_PUNCH) // Additional check for focus punch in FR + { + calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], 0xFF); + if (calc == 0xF) // all moves cannot be used + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + else // use a random move + { + do + gCurrMovePos = gChosenMovePos = Random() & 3; + while (gBitTable[gCurrMovePos] & calc); + gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; + gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; + gBattlerTarget = GetMoveTarget(gCalledMove, 0); + gHitMarker |= HITMARKER_x200000; + return 2; + } + } + else + { + obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel; + calc = (Random() & 255); + if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) + { + // try putting asleep + int i; + + for (i = 0; i < gBattlersCount; ++i) + if (gBattleMons[i].status2 & STATUS2_UPROAR) + break; + if (i == gBattlersCount) + { + gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; + return 1; + } + } + calc -= obedienceLevel; + if (calc < obedienceLevel) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker); + gBattlerTarget = gBattlerAttacker; + gBattlescriptCurrInstr = BattleScript_IgnoresAndHitsItself; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + return 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index cc42726a0..9ce1e58a3 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -195,7 +195,7 @@ gBattlerByTurnOrder: @ 2023BDE gUnknown_2023BE2: @ 2023BE2 .space 0x1 -gUnknown_2023BE3: @ 2023BE3 +gCurrentActionFuncId: @ 2023BE3 .space 0x1 gBattleMons: @ 2023BE4 @@ -222,10 +222,10 @@ gUnknown_2023C34: @ 2023C34 gBattlerSpriteIds: @ 2023D44 .space 0x4 -gUnknown_2023D48: @ 2023D48 +gCurrMovePos: @ 2023D48 .space 0x1 -gUnknown_2023D49: @ 2023D49 +gChosenMovePos: @ 2023D49 .space 0x1 gCurrentMove: @ 2023D4A @@ -234,7 +234,7 @@ gCurrentMove: @ 2023D4A gChosenMove: @ 2023D4C .space 0x2 -gUnknown_2023D4E: @ 2023D4E +gCalledMove: @ 2023D4E .space 0x2 gBattleMoveDamage: @ 2023D50 From 742a7ee1beab323e30d60c599697a2a831c4f4de Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 2 Aug 2019 07:28:09 +0800 Subject: [PATCH 013/100] ported reshow_battle_screen from pokeem --- asm/battle_2.s | 22 +- asm/battle_anim.s | 2 +- asm/battle_anim_effects_1.s | 12 +- asm/battle_anim_effects_2.s | 12 +- asm/battle_anim_effects_3.s | 12 +- asm/battle_anim_mons.s | 16 +- asm/battle_anim_special.s | 2 +- asm/battle_controller_link_opponent.s | 6 +- asm/battle_controller_link_partner.s | 8 +- asm/battle_controller_oak.s | 10 +- asm/battle_controller_opponent.s | 8 +- asm/battle_controller_player.s | 16 +- asm/battle_controller_pokedude.s | 10 +- asm/battle_script_commands.s | 8 +- asm/berry_crush_3.s | 4 +- asm/dodrio_berry_picking.s | 4 +- asm/electric.s | 2 +- asm/evolution_scene.s | 4 +- asm/ghost.s | 2 +- asm/link_rfu_2.s | 12 +- asm/link_rfu_3.s | 20 +- asm/overworld.s | 8 +- asm/pokemon_jump_2.s | 4 +- asm/reshow_battle_screen.s | 1190 ------------------------- asm/trade.s | 12 +- asm/trainer_card.s | 4 +- asm/union_room_chat.s | 4 +- asm/water.s | 8 +- include/battle.h | 1 + include/battle_anim.h | 2 + include/battle_gfx_sfx_util.h | 4 +- include/bg.h | 14 + include/link.h | 2 + include/reshow_battle_screen.h | 2 +- ld_script.txt | 2 +- src/battle_controller_safari.c | 2 +- src/battle_gfx_sfx_util.c | 6 +- src/reshow_battle_screen.c | 322 +++++++ 38 files changed, 465 insertions(+), 1314 deletions(-) delete mode 100644 asm/reshow_battle_screen.s create mode 100644 src/reshow_battle_screen.c diff --git a/asm/battle_2.s b/asm/battle_2.s index f29f29fe6..b206cc493 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -169,7 +169,7 @@ _0800FEA6: ldr r1, _0800FF68 @ =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, _0800FF6C @ =sub_80116F4 + ldr r0, _0800FF6C @ =VBlankCB_Battle bl SetVBlankCallback bl SetUpBattleVars ldr r0, _0800FF70 @ =gBattleTypeFlags @@ -199,7 +199,7 @@ _0800FF5C: .4byte gBattle_BG3_X _0800FF60: .4byte gBattle_BG3_Y _0800FF64: .4byte gUnknown_2022B50 _0800FF68: .4byte gReservedSpritePaletteCount -_0800FF6C: .4byte sub_80116F4 +_0800FF6C: .4byte VBlankCB_Battle _0800FF70: .4byte gBattleTypeFlags _0800FF74: .4byte sub_8010BA0 _0800FF78: @@ -1010,7 +1010,7 @@ _080105BC: bne _080105C6 b _080108B8 _080105C6: - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx b _080108B8 .align 2, 0 _080105CC: .4byte gBattleCommunication @@ -1064,7 +1064,7 @@ _0801062A: _08010634: movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _080108B8 .align 2, 0 _08010640: .4byte gBattleTypeFlags @@ -1763,7 +1763,7 @@ _08010C44: bne _08010C4E b _080110F0 _08010C4E: - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx b _080110F0 .align 2, 0 _08010C54: .4byte gBattleCommunication @@ -1813,7 +1813,7 @@ _08010CAA: _08010CB4: movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _080110F0 .align 2, 0 _08010CC0: .4byte gReceivedRemoteLinkPlayers @@ -3121,8 +3121,8 @@ _080116EC: .4byte 0x04000006 _080116F0: .4byte 0x04000008 thumb_func_end sub_80116CC - thumb_func_start sub_80116F4 -sub_80116F4: @ 80116F4 + thumb_func_start VBlankCB_Battle +VBlankCB_Battle: @ 80116F4 push {lr} bl Random ldr r0, _08011788 @ =gBattle_BG0_X @@ -3192,7 +3192,7 @@ _080117A8: .4byte gUnknown_2022984 _080117AC: .4byte gUnknown_2022986 _080117B0: .4byte gUnknown_2022988 _080117B4: .4byte gUnknown_202298A - thumb_func_end sub_80116F4 + thumb_func_end VBlankCB_Battle thumb_func_start nullsub_9 nullsub_9: @ 80117B8 @@ -3612,7 +3612,7 @@ _08011A9C: ldr r1, _08011B7C @ =gReservedSpritePaletteCount movs r0, 0x4 strb r0, [r1] - ldr r0, _08011B80 @ =sub_80116F4 + ldr r0, _08011B80 @ =VBlankCB_Battle bl SetVBlankCallback ldr r0, _08011B84 @ =sub_800F6FC movs r1, 0 @@ -3657,7 +3657,7 @@ _08011B70: .4byte gBattle_BG3_X _08011B74: .4byte gBattle_BG3_Y _08011B78: .4byte gBattleTextboxPalette _08011B7C: .4byte gReservedSpritePaletteCount -_08011B80: .4byte sub_80116F4 +_08011B80: .4byte VBlankCB_Battle _08011B84: .4byte sub_800F6FC _08011B88: .4byte gTasks _08011B8C: .4byte sub_8011B94 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index dff9de521..a79600e01 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -634,7 +634,7 @@ _080729A8: ldr r0, _08072A04 @ =gBattleAnimAttacker _080729AE: ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 lsls r1, r4, 24 diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index c9cbfea7e..9045a447e 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -229,7 +229,7 @@ _080A24A2: ble _080A24BC ldr r0, _080A24B8 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r0, 0x1 b _080A24C6 .align 2, 0 @@ -237,7 +237,7 @@ _080A24B8: .4byte gBattleAnimTarget _080A24BC: ldr r0, _080A24FC @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r0, 0x6 _080A24C6: adds r1, r4, 0 @@ -306,7 +306,7 @@ sub_80A2500: @ 80A2500 ldr r4, _080A2578 @ =gUnknown_83E2A88 ldr r0, _080A257C @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 adds r3, 0x1 lsls r3, 24 @@ -868,7 +868,7 @@ sub_80A2974: @ 80A2974 bhi _080A29C0 ldr r0, _080A29BC @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 b _080A29CA .align 2, 0 @@ -876,7 +876,7 @@ _080A29BC: .4byte gBattleAnimAttacker _080A29C0: ldr r0, _080A29DC @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r0, 0x1 _080A29CA: adds r1, r4, 0 @@ -2995,7 +2995,7 @@ sub_80A39C0: @ 80A39C0 adds r5, r0, r1 ldr r4, _080A3B18 @ =gBattleAnimTarget ldrb r0, [r4] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 subs r0, 0x1 diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index 339ffcba9..c4d4a043c 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -1430,7 +1430,7 @@ _080A7928: ble _080A79A0 ldr r0, _080A7970 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldr r2, _080A7974 @ =0x0000ffc0 @@ -1451,7 +1451,7 @@ _080A7978: ble _080A79A0 ldr r0, _080A7998 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldr r3, _080A799C @ =0x0000ffc0 @@ -1466,7 +1466,7 @@ _080A799C: .4byte 0x0000ffc0 _080A79A0: ldr r0, _080A79DC @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x8] @@ -2367,7 +2367,7 @@ sub_80A8074: @ 80A8074 strh r5, [r4, 0x14] ldr r0, _080A80C4 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x16] @@ -6607,7 +6607,7 @@ sub_80AA174: @ 80AA174 ldrh r0, [r1, 0x2] strh r0, [r4, 0x30] ldrb r0, [r5] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x3C] @@ -7142,7 +7142,7 @@ sub_80AA58C: @ 80AA58C bl StartSpriteAnim ldr r0, _080AA68C @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index cc002606a..0869b7481 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -5735,7 +5735,7 @@ sub_80E0EDC: @ 80E0EDC _080E0F16: ldr r0, _080E0F24 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 b _080E0F32 .align 2, 0 @@ -5743,7 +5743,7 @@ _080E0F24: .4byte gBattleAnimAttacker _080E0F28: ldr r0, _080E0F74 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r0, 0x1 _080E0F32: adds r1, r4, 0 @@ -7613,7 +7613,7 @@ _080E1DA2: lsrs r0, 24 strh r0, [r5, 0x12] adds r0, r4, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] @@ -8641,7 +8641,7 @@ _080E258A: ldrsh r6, [r7, r1] mov r1, r8 ldrb r0, [r1] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 subs r3, 0x5 lsls r3, 24 @@ -10654,7 +10654,7 @@ sub_80E34D0: @ 80E34D0 cmp r0, 0 bne _080E34FC ldrb r0, [r4] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x2 adds r1, r5, 0 adds r1, 0x43 @@ -10666,7 +10666,7 @@ _080E34F4: .4byte gBattleAnimTarget _080E34F8: .4byte 0x0000ff70 _080E34FC: ldrb r0, [r4] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r0, 0x2 adds r1, r5, 0 adds r1, 0x43 diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s index 060a2af23..59c16da0d 100644 --- a/asm/battle_anim_mons.s +++ b/asm/battle_anim_mons.s @@ -594,8 +594,8 @@ _080748F0: bx r1 thumb_func_end GetSubstituteSpriteDefault_Y - thumb_func_start sub_8074900 -sub_8074900: @ 8074900 + thumb_func_start GetGhostSpriteDefault_Y +GetGhostSpriteDefault_Y: @ 8074900 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -618,7 +618,7 @@ _0807491E: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8074900 + thumb_func_end GetGhostSpriteDefault_Y thumb_func_start sub_807492C sub_807492C: @ 807492C @@ -4839,7 +4839,7 @@ _080767FE: cmp r0, 0 beq _08076840 adds r0, r4, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority ldr r3, _08076858 @ =gBattlerSpriteIds adds r3, r5, r3 ldrb r2, [r3] @@ -4878,8 +4878,8 @@ _08076854: .4byte gSprites _08076858: .4byte gBattlerSpriteIds thumb_func_end sub_80767F0 - thumb_func_start sub_807685C -sub_807685C: @ 807685C + thumb_func_start GetBattlerSpriteSubpriority +GetBattlerSpriteSubpriority: @ 807685C push {lr} lsls r0, 24 lsrs r0, 24 @@ -4900,7 +4900,7 @@ _0807687E: adds r0, r1, 0 pop {r1} bx r1 - thumb_func_end sub_807685C + thumb_func_end GetBattlerSpriteSubpriority thumb_func_start sub_8076884 sub_8076884: @ 8076884 @@ -5946,7 +5946,7 @@ _08077064: adds r0, 0x10 lsls r4, r0, 4 ldrb r0, [r7] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index b703b8334..c95a1099e 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -1379,7 +1379,7 @@ _080EF708: bl GetBattlerAtPosition lsls r0, 24 lsrs r0, 24 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 adds r3, 0x1 lsls r3, 24 diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index e2d110861..406216216 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -3591,7 +3591,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4 lsls r4, 24 lsrs r4, 24 ldrb r0, [r6] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -3795,7 +3795,7 @@ sub_803C550: @ 803C550 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -4270,7 +4270,7 @@ _0803C992: asrs r4, 16 mov r1, r8 ldrb r0, [r1] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index a536d91b8..8644e651c 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -3385,7 +3385,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 lsls r4, 24 lsrs r4, 24 ldrb r0, [r6] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -3577,7 +3577,7 @@ sub_80D5F40: @ 80D5F40 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -3896,7 +3896,7 @@ _080D6258: ldr r5, _080D6318 @ =gActiveBattler ldrb r1, [r5] adds r0, r4, 0 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r5] bl GetBattlerPosition adds r1, r0, 0 @@ -3918,7 +3918,7 @@ _080D6258: adds r4, r0 asrs r4, 16 ldrb r0, [r5] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 3ded95b1d..1c1838616 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -4966,7 +4966,7 @@ sub_80E9E6C: @ 80E9E6C ldrb r0, [r0, 0x8] ldr r6, _080E9ED0 @ =gActiveBattler ldrb r1, [r6] - bl sub_8034750 + bl DecompressTrainerBackPalette ldr r0, [r4] ldrb r5, [r0, 0x8] ldrb r0, [r6] @@ -5007,7 +5007,7 @@ _080E9EE0: ldr r4, _080E9F8C @ =gActiveBattler ldrb r1, [r4] movs r0, 0x5 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r4] bl GetBattlerPosition adds r1, r0, 0 @@ -5112,7 +5112,7 @@ sub_80E9FB0: @ 80E9FB0 ldrb r0, [r0, 0x8] ldr r6, _080EA014 @ =gActiveBattler ldrb r1, [r6] - bl sub_8034750 + bl DecompressTrainerBackPalette ldr r0, [r4] ldrb r5, [r0, 0x8] ldrb r0, [r6] @@ -5153,7 +5153,7 @@ _080EA024: ldr r4, _080EA0D0 @ =gActiveBattler ldrb r1, [r4] movs r0, 0x5 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r4] bl GetBattlerPosition adds r1, r0, 0 @@ -7086,7 +7086,7 @@ sub_80EAF34: @ 80EAF34 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index da113d908..85f203998 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -3596,7 +3596,7 @@ sub_80377FC: @ 80377FC adds r0, r6 bl DecompressGhostFrontPic ldrb r0, [r4] - bl sub_8074900 + bl GetGhostSpriteDefault_Y lsls r0, 24 lsrs r5, r0, 24 ldr r3, _0803788C @ =gBattleSpritesDataPtr @@ -3658,7 +3658,7 @@ _080378AA: lsls r4, 24 lsrs r4, 24 ldrb r0, [r7] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -3887,7 +3887,7 @@ sub_8037A28: @ 8037A28 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -4219,7 +4219,7 @@ _08037D3A: asrs r4, 16 mov r1, r8 ldrb r0, [r1] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 51845f47a..385b0d44e 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -4884,23 +4884,23 @@ ActionSelectionDestroyCursorAt: @ 8030A98 thumb_func_start sub_8030ADC sub_8030ADC: @ 8030ADC push {lr} - ldr r0, _08030AE8 @ =sub_8077764 + ldr r0, _08030AE8 @ =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_08030AE8: .4byte sub_8077764 +_08030AE8: .4byte ReshowBattleScreenAfterMenu thumb_func_end sub_8030ADC thumb_func_start sub_8030AEC sub_8030AEC: @ 8030AEC push {lr} - ldr r0, _08030AF8 @ =sub_8077764 + ldr r0, _08030AF8 @ =ReshowBattleScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_08030AF8: .4byte sub_8077764 +_08030AF8: .4byte ReshowBattleScreenAfterMenu thumb_func_end sub_8030AEC thumb_func_start CompleteOnFinishedStatusAnimation @@ -7457,7 +7457,7 @@ sub_8031FF4: @ 8031FF4 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -7803,7 +7803,7 @@ _08032342: ldr r5, _08032404 @ =gActiveBattler ldrb r1, [r5] adds r0, r4, 0 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r5] bl GetBattlerPosition adds r1, r0, 0 @@ -7825,7 +7825,7 @@ _08032342: adds r4, r0 asrs r4, 16 ldrb r0, [r5] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -7980,7 +7980,7 @@ _080324BE: ldr r5, _0803256C @ =gActiveBattler ldrb r1, [r5] adds r0, r4, 0 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r5] bl GetBattlerPosition adds r1, r0, 0 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 6e8071820..4bff9be01 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -3942,7 +3942,7 @@ sub_81580E0: @ 81580E0 lsls r4, 24 lsrs r4, 24 ldrb r0, [r6] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -4181,7 +4181,7 @@ sub_8158344: @ 8158344 bne _081583F0 ldrb r1, [r7] movs r0, 0x4 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r7] bl GetBattlerPosition adds r1, r0, 0 @@ -4273,7 +4273,7 @@ _081583F0: adds r4, r0 asrs r4, 16 ldrb r0, [r7] - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 @@ -4406,7 +4406,7 @@ sub_8158544: @ 8158544 ldr r4, _081585EC @ =gActiveBattler ldrb r1, [r4] movs r0, 0x4 - bl sub_8034750 + bl DecompressTrainerBackPalette ldrb r0, [r4] bl GetBattlerPosition adds r1, r0, 0 @@ -6351,7 +6351,7 @@ sub_8159478: @ 8159478 lsls r4, 24 lsrs r4, 24 adds r0, r6, 0 - bl sub_807685C + bl GetBattlerSpriteSubpriority adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 568f794d0..8bc130fd7 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -15672,7 +15672,7 @@ _080254B6: subs r2, 0x1 lsls r2, 24 lsrs r2, 24 - ldr r3, _080254F4 @ =sub_8077764 + ldr r3, _080254F4 @ =ReshowBattleScreenAfterMenu ldr r4, _080254F8 @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] @@ -15688,7 +15688,7 @@ _080254E4: .4byte gPaletteFade _080254E8: .4byte gPlayerParty _080254EC: .4byte gBattleStruct _080254F0: .4byte gPlayerPartyCount -_080254F4: .4byte sub_8077764 +_080254F4: .4byte ReshowBattleScreenAfterMenu _080254F8: .4byte gMoveToLearn _080254FC: .4byte gBattleScripting _08025500: @@ -32490,7 +32490,7 @@ _0802DA72: ldr r2, _0802DAC0 @ =0x05006000 add r0, sp, 0x10 bl CpuSet - ldr r0, _0802DAC4 @ =sub_80116F4 + ldr r0, _0802DAC4 @ =VBlankCB_Battle bl SetVBlankCallback ldrb r0, [r4] adds r0, 0x1 @@ -32503,7 +32503,7 @@ _0802DAB4: .4byte BattleMainCB2 _0802DAB8: .4byte gTasks _0802DABC: .4byte gBattleCommunication _0802DAC0: .4byte 0x05006000 -_0802DAC4: .4byte sub_80116F4 +_0802DAC4: .4byte VBlankCB_Battle _0802DAC8: bl sub_800F34C bl LoadBattleTextboxAndBackground diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s index afab275ab..51657f296 100644 --- a/asm/berry_crush_3.s +++ b/asm/berry_crush_3.s @@ -236,10 +236,10 @@ _0814D7E8: .4byte gUnknown_846ED90 _0814D7EC: .4byte gUnknown_846EEC0 _0814D7F0: .4byte gUnknown_846F058 _0814D7F4: - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite adds r0, r5, 0 bl sub_814ECE0 ldr r0, _0814D82C @ =gSpriteCoordOffsetY diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index c6e46517e..32b47791b 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -393,10 +393,10 @@ _08150B16: ldrb r0, [r0] cmp r0, 0 beq _08150BDC - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _08150BDC .align 2, 0 _08150B38: .4byte gReceivedRemoteLinkPlayers diff --git a/asm/electric.s b/asm/electric.s index 7b100e73e..d020459d5 100644 --- a/asm/electric.s +++ b/asm/electric.s @@ -2630,7 +2630,7 @@ _080AEFF8: lsrs r0, 24 strh r0, [r5, 0x22] ldrb r0, [r4] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 subs r0, 0x2 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 0062040ec..06d8a0d64 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -843,10 +843,10 @@ _080CE4CC: ldrb r0, [r0] cmp r0, 0 beq _080CE4E0 - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite _080CE4E0: movs r0, 0x1 negs r0, r0 diff --git a/asm/ghost.s b/asm/ghost.s index b0933f132..194f728fe 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -2898,7 +2898,7 @@ sub_80B68C8: @ 80B68C8 lsrs r0, 24 strh r0, [r4, 0x12] ldrb r0, [r5] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 subs r0, 0x2 diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 356cbb45b..d4934caa9 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -9368,8 +9368,8 @@ _080FCD6C: .4byte gUnknown_3005440 _080FCD70: .4byte gUnknown_3005E00 thumb_func_end sub_80FCD50 - thumb_func_start sub_80FCD74 -sub_80FCD74: @ 80FCD74 + thumb_func_start CreateWirelessStatusIndicatorSprite +CreateWirelessStatusIndicatorSprite: @ 80FCD74 push {r4,r5,lr} lsls r0, 24 lsrs r3, r0, 24 @@ -9464,7 +9464,7 @@ _080FCE34: .4byte gUnknown_203ACE4 _080FCE38: .4byte gSprites _080FCE3C: .4byte 0x00001234 _080FCE40: .4byte gUnknown_843F274 - thumb_func_end sub_80FCD74 + thumb_func_end CreateWirelessStatusIndicatorSprite thumb_func_start DestroyWirelessStatusIndicatorSprite DestroyWirelessStatusIndicatorSprite: @ 80FCE44 @@ -9514,8 +9514,8 @@ _080FCEA0: .4byte gDummyOamData _080FCEA4: .4byte 0x070003e8 thumb_func_end DestroyWirelessStatusIndicatorSprite - thumb_func_start sub_80FCEA8 -sub_80FCEA8: @ 80FCEA8 + thumb_func_start LoadWirelessStatusIndicatorSpriteGfx +LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8 push {r4,lr} ldr r4, _080FCED4 @ =gUnknown_843F274 ldrh r0, [r4, 0x6] @@ -9540,7 +9540,7 @@ _080FCED4: .4byte gUnknown_843F274 _080FCED8: .4byte 0xffff0000 _080FCEDC: .4byte gUnknown_843F27C _080FCEE0: .4byte gUnknown_203ACE4 - thumb_func_end sub_80FCEA8 + thumb_func_end LoadWirelessStatusIndicatorSpriteGfx thumb_func_start sub_80FCEE4 sub_80FCEE4: @ 80FCEE4 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 1232764e5..a109515d6 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -707,10 +707,10 @@ _08115E84: beq _08115EC0 b _081161D8 _08115E8E: - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite movs r0, 0x5 strb r0, [r5, 0x19] ldrb r1, [r5, 0x13] @@ -2475,10 +2475,10 @@ sub_8116D60: @ 8116D60 push {r4,r5,lr} adds r4, r0, 0 strb r1, [r4, 0xF] - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite ldrb r0, [r4, 0xE] bl RedrawListMenu ldr r5, _08116DD4 @ =gStringVar1 @@ -4188,10 +4188,10 @@ _08117C3C: beq _08117C84 b _08117ECA _08117C42: - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite ldr r1, [r5] ldrb r0, [r5, 0x13] lsls r0, 5 @@ -4702,10 +4702,10 @@ _0811808E: cmp r0, 0 bne _08118130 strb r2, [r5, 0xF] - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite ldrb r0, [r5, 0xE] bl RedrawListMenu ldr r4, _0811812C @ =gStringVar1 @@ -5118,10 +5118,10 @@ _0811843A: beq _0811849C strb r4, [r5, 0xF] strb r4, [r5, 0x14] - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite ldr r0, [r5] adds r4, r0, 0 adds r4, 0x10 diff --git a/asm/overworld.s b/asm/overworld.s index 56c253477..30f89b4f3 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -4058,10 +4058,10 @@ _08056B3C: ldrb r0, [r0] cmp r0, 0 beq _08056B62 - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _08056B62 .align 2, 0 _08056B54: .4byte gWirelessCommType @@ -4389,10 +4389,10 @@ _08056E18: ldrb r0, [r0] cmp r0, 0 beq _08056E3E - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _08056E3E .align 2, 0 _08056E30: .4byte gWirelessCommType diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index ab95e1bf4..66bb3dc52 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -442,10 +442,10 @@ _08147E0C: ldr r0, [r4] adds r0, 0xA4 bl sub_8149CEC - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite ldr r1, [r4] b _08147EBC .align 2, 0 diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s deleted file mode 100644 index c9faf0be7..000000000 --- a/asm/reshow_battle_screen.s +++ /dev/null @@ -1,1190 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_44 -nullsub_44: @ 8077760 - bx lr - thumb_func_end nullsub_44 - - thumb_func_start sub_8077764 -sub_8077764: @ 8077764 - push {lr} - ldr r2, _080777B0 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - movs r0, 0 - bl SetHBlankCallback - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, _080777B4 @ =gBattleScripting - adds r2, r0, 0 - adds r2, 0x21 - movs r1, 0 - strb r1, [r2] - adds r0, 0x22 - strb r1, [r0] - ldr r0, _080777B8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080777DA - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080777C4 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080777BC - movs r0, 0x19 - bl HelpSystem_SetSomeVariable2 - b _080777DA - .align 2, 0 -_080777B0: .4byte gPaletteFade -_080777B4: .4byte gBattleScripting -_080777B8: .4byte gBattleTypeFlags -_080777BC: - movs r0, 0x18 - bl HelpSystem_SetSomeVariable2 - b _080777DA -_080777C4: - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _080777D4 - movs r0, 0x1A - bl HelpSystem_SetSomeVariable2 - b _080777DA -_080777D4: - movs r0, 0x17 - bl HelpSystem_SetSomeVariable2 -_080777DA: - ldr r0, _080777E4 @ =sub_80777E8 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080777E4: .4byte sub_80777E8 - thumb_func_end sub_8077764 - - thumb_func_start sub_80777E8 -sub_80777E8: @ 80777E8 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _08077804 @ =gBattleScripting - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x14 - bls _080777F8 - b _08077A8A -_080777F8: - lsls r0, 2 - ldr r1, _08077808 @ =_0807780C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08077804: .4byte gBattleScripting -_08077808: .4byte _0807780C - .align 2, 0 -_0807780C: - .4byte _08077860 - .4byte _08077866 - .4byte _080778E8 - .4byte _08077900 - .4byte _08077906 - .4byte _08077918 - .4byte _0807791E - .4byte _08077946 - .4byte _0807794A - .4byte _0807794E - .4byte _08077952 - .4byte _08077970 - .4byte _08077978 - .4byte _08077980 - .4byte _08077988 - .4byte _08077990 - .4byte _08077998 - .4byte _080779A0 - .4byte _080779A8 - .4byte _080779B0 - .4byte _08077A5C -_08077860: - bl ResetSpriteData - b _08077A8A -_08077866: - movs r0, 0 - bl SetVBlankCallback - bl ScanlineEffect_Clear - bl sub_800F324 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - bl ResetPaletteFade - ldr r0, _080778C8 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080778CC @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080778D0 @ =gBattle_BG1_X - strh r1, [r0] - ldr r0, _080778D4 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _080778D8 @ =gBattle_BG2_X - strh r1, [r0] - ldr r0, _080778DC @ =gBattle_BG2_Y - strh r1, [r0] - ldr r0, _080778E0 @ =gBattle_BG3_X - strh r1, [r0] - ldr r0, _080778E4 @ =gBattle_BG3_Y - strh r1, [r0] - b _08077A8A - .align 2, 0 -_080778C8: .4byte gBattle_BG0_X -_080778CC: .4byte gBattle_BG0_Y -_080778D0: .4byte gBattle_BG1_X -_080778D4: .4byte gBattle_BG1_Y -_080778D8: .4byte gBattle_BG2_X -_080778DC: .4byte gBattle_BG2_Y -_080778E0: .4byte gBattle_BG3_X -_080778E4: .4byte gBattle_BG3_Y -_080778E8: - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _080778FC @ =0x01006000 - add r0, sp, 0x4 - bl CpuFastSet - b _08077A8A - .align 2, 0 -_080778FC: .4byte 0x01006000 -_08077900: - bl LoadBattleTextboxAndBackground - b _08077A8A -_08077906: - bl FreeAllSpritePalettes - ldr r1, _08077914 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - b _08077A8A - .align 2, 0 -_08077914: .4byte gReservedSpritePaletteCount -_08077918: - bl ClearSpritesHealthboxAnimData - b _08077A8A -_0807791E: - ldr r5, _08077938 @ =gBattleScripting - adds r4, r5, 0 - adds r4, 0x22 - ldrb r0, [r4] - bl BattleLoadAllHealthBoxesGfx - lsls r0, 24 - cmp r0, 0 - beq _0807793C - movs r0, 0 - strb r0, [r4] - b _08077A8A - .align 2, 0 -_08077938: .4byte gBattleScripting -_0807793C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r1, r5, 0 - b _08077962 -_08077946: - movs r0, 0 - b _08077954 -_0807794A: - movs r0, 0x1 - b _08077954 -_0807794E: - movs r0, 0x2 - b _08077954 -_08077952: - movs r0, 0x3 -_08077954: - bl sub_8077B0C - lsls r0, 24 - cmp r0, 0 - beq _08077960 - b _08077A8A -_08077960: - ldr r1, _0807796C @ =gBattleScripting -_08077962: - adds r1, 0x21 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - b _08077A8A - .align 2, 0 -_0807796C: .4byte gBattleScripting -_08077970: - movs r0, 0 - bl sub_8077C38 - b _08077A8A -_08077978: - movs r0, 0x1 - bl sub_8077C38 - b _08077A8A -_08077980: - movs r0, 0x2 - bl sub_8077C38 - b _08077A8A -_08077988: - movs r0, 0x3 - bl sub_8077C38 - b _08077A8A -_08077990: - movs r0, 0 - bl CreateHealthboxSprite - b _08077A8A -_08077998: - movs r0, 0x1 - bl CreateHealthboxSprite - b _08077A8A -_080779A0: - movs r0, 0x2 - bl CreateHealthboxSprite - b _08077A8A -_080779A8: - movs r0, 0x3 - bl CreateHealthboxSprite - b _08077A8A -_080779B0: - bl LoadAndCreateEnemyShadowSprites - movs r0, 0x1 - bl GetBattlerAtPosition - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _08077A44 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08077A48 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08077A14 - movs r0, 0x3 - bl GetBattlerAtPosition - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback -_08077A14: - ldr r1, _08077A4C @ =gActionSelectionCursor - ldr r0, _08077A50 @ =gBattlerInMenuId - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _08077A54 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08077A8A - ldr r0, _08077A58 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08077A8A - bl sub_80FCEA8 - movs r0, 0 - movs r1, 0 - bl sub_80FCD74 - b _08077A8A - .align 2, 0 -_08077A44: .4byte gBattlerPartyIndexes -_08077A48: .4byte gEnemyParty -_08077A4C: .4byte gActionSelectionCursor -_08077A50: .4byte gBattlerInMenuId -_08077A54: .4byte gWirelessCommType -_08077A58: .4byte gReceivedRemoteLinkPlayers -_08077A5C: - ldr r0, _08077A9C @ =sub_80116F4 - bl SetVBlankCallback - bl sub_8077AAC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r2, _08077AA0 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _08077AA4 @ =BattleMainCB2 - bl SetMainCallback2 - bl sub_80357C8 -_08077A8A: - ldr r1, _08077AA8 @ =gBattleScripting - adds r1, 0x21 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077A9C: .4byte sub_80116F4 -_08077AA0: .4byte gPaletteFade -_08077AA4: .4byte BattleMainCB2 -_08077AA8: .4byte gBattleScripting - thumb_func_end sub_80777E8 - - thumb_func_start sub_8077AAC -sub_8077AAC: @ 8077AAC - push {lr} - movs r0, 0x1 - bl EnableInterrupts - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - ldr r1, _08077B08 @ =0x0000b040 - movs r0, 0 - bl SetGpuRegBits - pop {r0} - bx r0 - .align 2, 0 -_08077B08: .4byte 0x0000b040 - thumb_func_end sub_8077AAC - - thumb_func_start sub_8077B0C -sub_8077B0C: @ 8077B0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08077B54 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _08077B1C - b _08077C2C -_08077B1C: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08077BA6 - ldr r0, _08077B58 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 8 - ands r0, r1 - movs r1, 0x80 - lsls r1, 8 - cmp r0, r1 - bne _08077B64 - ldr r1, _08077B5C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08077B60 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl DecompressGhostFrontPic - b _08077C24 - .align 2, 0 -_08077B54: .4byte gBattlersCount -_08077B58: .4byte gBattleTypeFlags -_08077B5C: .4byte gBattlerPartyIndexes -_08077B60: .4byte gEnemyParty -_08077B64: - ldr r0, _08077B90 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08077B9C - ldr r1, _08077B94 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08077B98 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl BattleLoadOpponentMonSpriteGfx - b _08077C24 - .align 2, 0 -_08077B90: .4byte gBattleSpritesDataPtr -_08077B94: .4byte gBattlerPartyIndexes -_08077B98: .4byte gEnemyParty -_08077B9C: - adds r0, r4, 0 - movs r1, 0 - bl BattleLoadSubstituteOrMonSpriteGfx - b _08077C24 -_08077BA6: - ldr r0, _08077BC0 @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _08077BC8 - cmp r4, 0 - bne _08077BC8 - ldr r0, _08077BC4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - b _08077BDA - .align 2, 0 -_08077BC0: .4byte gBattleTypeFlags -_08077BC4: .4byte gSaveBlock2Ptr -_08077BC8: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08077BE2 - cmp r4, 0 - bne _08077BE2 - movs r0, 0x5 -_08077BDA: - movs r1, 0 - bl sub_8034750 - b _08077C24 -_08077BE2: - ldr r0, _08077C10 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08077C1C - ldr r1, _08077C14 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08077C18 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl BattleLoadPlayerMonSpriteGfx - b _08077C24 - .align 2, 0 -_08077C10: .4byte gBattleSpritesDataPtr -_08077C14: .4byte gBattlerPartyIndexes -_08077C18: .4byte gPlayerParty -_08077C1C: - adds r0, r4, 0 - movs r1, 0 - bl BattleLoadSubstituteOrMonSpriteGfx -_08077C24: - ldr r0, _08077C34 @ =gBattleScripting - adds r0, 0x22 - movs r1, 0 - strb r1, [r0] -_08077C2C: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08077C34: .4byte gBattleScripting - thumb_func_end sub_8077B0C - - thumb_func_start sub_8077C38 -sub_8077C38: @ 8077C38 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08077C6C @ =gBattlersCount - ldrb r0, [r0] - cmp r7, r0 - bcc _08077C50 - b _08077FB4 -_08077C50: - ldr r0, _08077C70 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 8 - ands r0, r1 - movs r1, 0x80 - lsls r1, 8 - cmp r0, r1 - bne _08077C74 - adds r0, r7, 0 - bl sub_8074900 - b _08077C9A - .align 2, 0 -_08077C6C: .4byte gBattlersCount -_08077C70: .4byte gBattleTypeFlags -_08077C74: - ldr r0, _08077C90 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r7, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08077C94 - adds r0, r7, 0 - bl GetSubstituteSpriteDefault_Y - b _08077C9A - .align 2, 0 -_08077C90: .4byte gBattleSpritesDataPtr -_08077C94: - adds r0, r7, 0 - bl GetBattlerSpriteDefault_Y -_08077C9A: - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08077CAE - b _08077DAC -_08077CAE: - ldr r1, _08077D90 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _08077D94 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08077CD2 - b _08077FB4 -_08077CD2: - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToPokemon - ldr r5, _08077D98 @ =gMultiuseSpriteTemplate - adds r0, r7, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_807685C - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _08077D9C @ =gBattlerSpriteIds - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _08077DA0 @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08077DA4 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08077DA8 @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim - b _08077F84 - .align 2, 0 -_08077D90: .4byte gBattlerPartyIndexes -_08077D94: .4byte gEnemyParty -_08077D98: .4byte gMultiuseSpriteTemplate -_08077D9C: .4byte gBattlerSpriteIds -_08077DA0: .4byte gSprites -_08077DA4: .4byte SpriteCallbackDummy -_08077DA8: .4byte gBattleMonForms -_08077DAC: - ldr r0, _08077E00 @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _08077E10 - cmp r7, 0 - bne _08077E10 - ldr r5, _08077E04 @ =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r4, [r0, 0x8] - movs r0, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r6, _08077E08 @ =gMultiuseSpriteTemplate - ldr r1, _08077E0C @ =gTrainerBackPicCoords - ldr r0, [r5] - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - movs r0, 0 - bl sub_807685C - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - b _08077E54 - .align 2, 0 -_08077E00: .4byte gBattleTypeFlags -_08077E04: .4byte gSaveBlock2Ptr -_08077E08: .4byte gMultiuseSpriteTemplate -_08077E0C: .4byte gTrainerBackPicCoords -_08077E10: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08077EA8 - cmp r7, 0 - bne _08077EA8 - movs r0, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r5, _08077E94 @ =gMultiuseSpriteTemplate - ldr r0, _08077E98 @ =gTrainerBackPicCoords - ldrb r0, [r0, 0x14] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r4, r1 - asrs r4, 16 - movs r0, 0 - bl sub_807685C - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 -_08077E54: - movs r1, 0x50 - adds r2, r4, 0 - bl CreateSprite - ldr r3, _08077E9C @ =gBattlerSpriteIds - strb r0, [r3] - ldr r4, _08077EA0 @ =gSprites - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08077EA4 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - b _08077F84 - .align 2, 0 -_08077E94: .4byte gMultiuseSpriteTemplate -_08077E98: .4byte gTrainerBackPicCoords -_08077E9C: .4byte gBattlerSpriteIds -_08077EA0: .4byte gSprites -_08077EA4: .4byte SpriteCallbackDummy -_08077EA8: - ldr r1, _08077FC4 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r6, r0, r1 - ldrh r0, [r6] - movs r1, 0x64 - mov r10, r1 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _08077FC8 @ =gPlayerParty - mov r9, r1 - add r0, r9 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08077FB4 - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToPokemon - ldr r5, _08077FCC @ =gMultiuseSpriteTemplate - adds r0, r7, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - bl sub_807685C - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r8 - bl CreateSprite - ldr r4, _08077FD0 @ =gBattlerSpriteIds - adds r4, r7, r4 - strb r0, [r4] - ldr r5, _08077FD4 @ =gSprites - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r7, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08077FD8 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r7, [r0, 0x2E] - ldrh r0, [r6] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x32] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08077FDC @ =gBattleMonForms - adds r1, r7, r1 - ldrb r1, [r1] - bl StartSpriteAnim -_08077F84: - ldr r1, _08077FD4 @ =gSprites - ldr r0, _08077FD0 @ =gBattlerSpriteIds - adds r0, r7, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r0, _08077FE0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r7, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 31 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_08077FB4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077FC4: .4byte gBattlerPartyIndexes -_08077FC8: .4byte gPlayerParty -_08077FCC: .4byte gMultiuseSpriteTemplate -_08077FD0: .4byte gBattlerSpriteIds -_08077FD4: .4byte gSprites -_08077FD8: .4byte SpriteCallbackDummy -_08077FDC: .4byte gBattleMonForms -_08077FE0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_8077C38 - - thumb_func_start CreateHealthboxSprite -CreateHealthboxSprite: @ 8077FE4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0807800C @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bcc _08077FF4 - b _08078166 -_08077FF4: - ldr r0, _08078010 @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x80 - ands r1, r2 - cmp r1, 0 - beq _08078014 - cmp r5, 0 - bne _08078014 - bl CreateSafariPlayerHealthboxSprites - b _0807802C - .align 2, 0 -_0807800C: .4byte gBattlersCount -_08078010: .4byte gBattleTypeFlags -_08078014: - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08078026 - cmp r5, 0 - bne _08078026 - b _08078166 -_08078026: - adds r0, r5, 0 - bl CreateBattlerHealthboxSprites -_0807802C: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08078068 @ =gHealthboxSpriteIds - adds r4, r5, r0 - strb r6, [r4] - adds r0, r5, 0 - bl InitBattlerHealthboxCoords - adds r0, r6, 0 - bl SetHealthboxSpriteVisible - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08078074 - ldrb r0, [r4] - ldr r1, _0807806C @ =gBattlerPartyIndexes - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08078070 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - b _080780C0 - .align 2, 0 -_08078068: .4byte gHealthboxSpriteIds -_0807806C: .4byte gBattlerPartyIndexes -_08078070: .4byte gEnemyParty -_08078074: - ldr r0, _0807809C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080780A8 - ldrb r0, [r4] - ldr r1, _080780A0 @ =gBattlerPartyIndexes - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080780A4 @ =gPlayerParty - adds r1, r2 - movs r2, 0xA - bl UpdateHealthboxAttribute - b _080780C0 - .align 2, 0 -_0807809C: .4byte gBattleTypeFlags -_080780A0: .4byte gBattlerPartyIndexes -_080780A4: .4byte gPlayerParty -_080780A8: - ldrb r0, [r4] - ldr r1, _080780EC @ =gBattlerPartyIndexes - lsls r4, r5, 1 - adds r1, r4, r1 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080780F0 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_080780C0: - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080780DC - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080780F8 -_080780DC: - ldr r0, _080780F4 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl DummyBattleInterfaceFunc - b _08078104 - .align 2, 0 -_080780EC: .4byte gBattlerPartyIndexes -_080780F0: .4byte gPlayerParty -_080780F4: .4byte gHealthboxSpriteIds -_080780F8: - ldr r0, _08078130 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0 - bl DummyBattleInterfaceFunc -_08078104: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0807813C - ldr r0, _08078134 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08078138 @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08078166 - adds r0, r6, 0 - bl SetHealthboxSpriteInvisible - b _08078166 - .align 2, 0 -_08078130: .4byte gHealthboxSpriteIds -_08078134: .4byte gBattlerPartyIndexes -_08078138: .4byte gEnemyParty -_0807813C: - ldr r0, _0807816C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08078166 - ldr r0, _08078170 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08078174 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08078166 - adds r0, r6, 0 - bl SetHealthboxSpriteInvisible -_08078166: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807816C: .4byte gBattleTypeFlags -_08078170: .4byte gBattlerPartyIndexes -_08078174: .4byte gPlayerParty - thumb_func_end CreateHealthboxSprite - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trade.s b/asm/trade.s index 0e0520f37..42097bd3e 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -435,10 +435,10 @@ _0804C9C4: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite b _0804CEE6 .align 2, 0 _0804C9E0: .4byte gWirelessCommType @@ -1134,10 +1134,10 @@ _0804CFDC: ldrb r0, [r0] cmp r0, 0 beq _0804CFF0 - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite _0804CFF0: ldr r1, _0804D000 @ =gMain movs r3, 0x87 @@ -7749,10 +7749,10 @@ _0805044C: ldrb r0, [r0] cmp r0, 0 beq _0805046C - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0 movs r1, 0 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite _0805046C: ldr r0, _08050498 @ =sub_8053D84 bl SetMainCallback2 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 85797d38f..a964b02c8 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -208,10 +208,10 @@ _0808919A: ldrb r0, [r0] cmp r0, 0x1 bne _080891B6 - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0xE6 movs r1, 0x96 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite _080891B6: movs r0, 0x1 negs r0, r0 diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 285827e14..64cc9aa9f 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -177,10 +177,10 @@ _08128554: bl CreateTask ldr r1, [r4] strb r0, [r1, 0xF] - bl sub_80FCEA8 + bl LoadWirelessStatusIndicatorSpriteGfx movs r0, 0xE8 movs r1, 0x96 - bl sub_80FCD74 + bl CreateWirelessStatusIndicatorSprite _08128598: add sp, 0x4 pop {r4-r6} diff --git a/asm/water.s b/asm/water.s index e7465befa..6904e65d2 100644 --- a/asm/water.s +++ b/asm/water.s @@ -750,7 +750,7 @@ sub_80AB168: @ 80AB168 ldr r6, _080AB1B8 @ =0x0000fff6 strh r6, [r4, 0x26] ldrb r0, [r7] - bl sub_807685C + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -2408,7 +2408,7 @@ sub_80ABE4C: @ 80ABE4C lsrs r6, r0, 24 movs r5, 0xAC ldrb r0, [r4] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 lsls r0, 24 lsrs r0, 24 @@ -3679,7 +3679,7 @@ _080AC826: strh r0, [r4, 0x30] ldr r0, _080AC870 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 @@ -3737,7 +3737,7 @@ _080AC89C: strh r0, [r4, 0x30] ldr r0, _080AC8E8 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_807685C + bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 diff --git a/include/battle.h b/include/battle.h index 357bbbd8c..1e50a5dc1 100644 --- a/include/battle.h +++ b/include/battle.h @@ -795,6 +795,7 @@ void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); void DrawMainBattleBackground(void); void task00_0800F6FC(u8 taskId); +void sub_800F324(void); enum { diff --git a/include/battle_anim.h b/include/battle_anim.h index fb744c316..8e4f2a7ea 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -129,6 +129,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); +u8 GetGhostSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s void LaunchStatusAnimation(u8 bank, u8 statusAnimId); @@ -148,6 +149,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); bool8 IsContest(void); void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); +u8 GetBattlerSpriteSubpriority(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 39cea7ad1..667686af8 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -12,9 +12,9 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn); bool8 mplay_80342A4(u8 battlerId); void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId); void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId); -void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId); +void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId); void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId); -void sub_8034750(u16 a1, u8 a2); +void DecompressTrainerBackPalette(u16 a1, u8 a2); void nullsub_16(u8 a1); void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId); bool8 BattleLoadAllHealthBoxesGfx(u8 state); diff --git a/include/bg.h b/include/bg.h index 40c51167f..70ec38275 100644 --- a/include/bg.h +++ b/include/bg.h @@ -13,6 +13,20 @@ struct BGCntrlBitfield // for the I/O registers volatile u16 screenSize:2; }; +enum +{ + BG_ATTR_CHARBASEINDEX = 1, + BG_ATTR_MAPBASEINDEX, + BG_ATTR_SCREENSIZE, + BG_ATTR_PALETTEMODE, + BG_ATTR_MOSAIC, + BG_ATTR_WRAPAROUND, + BG_ATTR_PRIORITY, + BG_ATTR_METRIC, + BG_ATTR_TYPE, + BG_ATTR_BASETILE, +}; + enum { BG_CTRL_ATTR_VISIBLE = 1, diff --git a/include/link.h b/include/link.h index 190a9d96a..d816cfcf9 100644 --- a/include/link.h +++ b/include/link.h @@ -211,5 +211,7 @@ bool32 sub_800B270(void); void sub_800B388(void); void sub_8054A28(void); void sub_800B1F4(void); +void LoadWirelessStatusIndicatorSpriteGfx(void); +void CreateWirelessStatusIndicatorSprite(u8, u8); #endif // GUARD_LINK_H diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h index 9d1ec30f2..cc20eed96 100644 --- a/include/reshow_battle_screen.h +++ b/include/reshow_battle_screen.h @@ -3,7 +3,7 @@ #include "global.h" -void nullsub_35(void); +void nullsub_44(void); void ReshowBattleScreenAfterMenu(void); #endif // GUARD_RESHOW_BATTLE_SCREEN_H diff --git a/ld_script.txt b/ld_script.txt index f52bcb988..9254128fa 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -113,7 +113,7 @@ SECTIONS { asm/battle_anim.o(.text); asm/battle_anim_mons.o(.text); src/task.o(.text); - asm/reshow_battle_screen.o(.text); + src/reshow_battle_screen.o(.text); asm/battle_anim_status_effects.o(.text); asm/title_screen.o(.text); src/reset_save_heap.o(.text); diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index b3c6ab2e5..1e2fe6ee0 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -347,7 +347,7 @@ static void SafariHandleReturnMonToBall(void) static void SafariHandleDrawTrainerPic(void) { - sub_8034750(gSaveBlock2Ptr->playerGender, gActiveBattler); + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler); SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index ba691801f..3789b04c2 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -420,7 +420,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) } } -void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId) +void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId) { u16 palOffset; void *buffer; @@ -448,9 +448,9 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId) LoadCompressedSpritePaletteUsingHeap(&gTrainerFrontPicPaletteTable[frontPicId]); } -void sub_8034750(u16 a1, u8 a2) +void DecompressTrainerBackPalette(u16 index, u8 palette) { - LoadCompressedPalette(gUnknown_8239FD4[a1].data, (a2 + 16) * 16, 0x20); + LoadCompressedPalette(gUnknown_8239FD4[index].data, (palette + 16) * 16, 0x20); } void nullsub_16(u8 a1) diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c new file mode 100644 index 000000000..c75e8c583 --- /dev/null +++ b/src/reshow_battle_screen.c @@ -0,0 +1,322 @@ +#include "global.h" +#include "bg.h" +#include "palette.h" +#include "pokemon.h" +#include "main.h" +#include "link.h" +#include "data2.h" +#include "sprite.h" +#include "text.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "help_system.h" +#include "battle.h" +#include "battle_interface.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "reshow_battle_screen.h" +#include "constants/species.h" + +static void CB2_ReshowBattleScreenAfterMenu(void); +static void sub_8077AAC(void); +static bool8 LoadBattlerSpriteGfx(u8 battlerId); +static void CreateBattlerSprite(u8 battlerId); +static void CreateHealthboxSprite(u8 battlerId); + +void nullsub_44(void) +{ +} + +void ReshowBattleScreenAfterMenu(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetHBlankCallback(NULL); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + gBattleScripting.reshowMainState = 0; + gBattleScripting.reshowHelperState = 0; + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + HelpSystem_SetSomeVariable2(0x19); + else + HelpSystem_SetSomeVariable2(0x18); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + HelpSystem_SetSomeVariable2(0x1A); + } + else + { + HelpSystem_SetSomeVariable2(0x17); + } + } + SetMainCallback2(CB2_ReshowBattleScreenAfterMenu); +} + +static void CB2_ReshowBattleScreenAfterMenu(void) +{ + u8 opponentBattler; + u16 species; + + switch (gBattleScripting.reshowMainState) + { + case 0: + ResetSpriteData(); + break; + case 1: + SetVBlankCallback(NULL); + ScanlineEffect_Clear(); + sub_800F324(); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + break; + case 2: + CpuFastFill(0, (void *)VRAM, VRAM_SIZE); + break; + case 3: + LoadBattleTextboxAndBackground(); + break; + case 4: + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + break; + case 5: + ClearSpritesHealthboxAnimData(); + break; + case 6: + if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState)) + { + gBattleScripting.reshowHelperState = 0; + } + else + { + ++gBattleScripting.reshowHelperState; + --gBattleScripting.reshowMainState; + } + break; + case 7: + if (!LoadBattlerSpriteGfx(0)) + --gBattleScripting.reshowMainState; + break; + case 8: + if (!LoadBattlerSpriteGfx(1)) + --gBattleScripting.reshowMainState; + break; + case 9: + if (!LoadBattlerSpriteGfx(2)) + --gBattleScripting.reshowMainState; + break; + case 0xA: + if (!LoadBattlerSpriteGfx(3)) + --gBattleScripting.reshowMainState; + break; + case 0xB: + CreateBattlerSprite(0); + break; + case 0xC: + CreateBattlerSprite(1); + break; + case 0xD: + CreateBattlerSprite(2); + break; + case 0xE: + CreateBattlerSprite(3); + break; + case 0xF: + CreateHealthboxSprite(0); + break; + case 0x10: + CreateHealthboxSprite(1); + break; + case 0x11: + CreateHealthboxSprite(2); + break; + case 0x12: + CreateHealthboxSprite(3); + break; + case 0x13: + LoadAndCreateEnemyShadowSprites(); + opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES); + SetBattlerShadowSpriteCallback(opponentBattler, species); + if (IsDoubleBattle()) + { + opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES); + SetBattlerShadowSpriteCallback(opponentBattler, species); + } + ActionSelectionCreateCursorAt(gActionSelectionCursor[gBattlerInMenuId], 0); + if (gWirelessCommType && gReceivedRemoteLinkPlayers) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + break; + case 0x14: + SetVBlankCallback(VBlankCB_Battle); + sub_8077AAC(); + BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(BattleMainCB2); + sub_80357C8(); + break; + default: + break; + } + ++gBattleScripting.reshowMainState; +} + +static void sub_8077AAC(void) +{ + EnableInterrupts(INTR_FLAG_VBLANK); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, 0x3F); + SetGpuReg(REG_OFFSET_WINOUT, 0x3F); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_OBJWIN_ON); +} + +static bool8 LoadBattlerSpriteGfx(u8 battler) +{ + if (battler < gBattlersCount) + { + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); + else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); + else + BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, battler); + else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. + DecompressTrainerBackPalette(5, battler); + else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + else + BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE); + gBattleScripting.reshowHelperState = 0; + } + return TRUE; +} + +static void CreateBattlerSprite(u8 battler) +{ + if (battler < gBattlersCount) + { + u8 posY; + + if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + posY = GetGhostSpriteDefault_Y(battler); + else if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) + posY = GetSubstituteSpriteDefault_Y(battler); + else + posY = GetBattlerSpriteDefault_Y(battler); + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + { + if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + return; + SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler)); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[battler]].data[0] = battler; + gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]); + } + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) + { + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + GetBattlerSpriteSubpriority(0)); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[battler]].data[0] = battler; + } + else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) + { + SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(0)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, + (8 - gTrainerBackPicCoords[5].size) * 4 + 80, + GetBattlerSpriteSubpriority(0)); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[battler]].data[0] = battler; + } + else if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + { + return; + } + else + { + SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler)); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[battler]].data[0] = battler; + gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]); + } + gSprites[gBattlerSpriteIds[battler]].invisible = gBattleSpritesDataPtr->battlerData[battler].invisible; + } +} + +static void CreateHealthboxSprite(u8 battler) +{ + if (battler < gBattlersCount) + { + u8 healthboxSpriteId; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) + healthboxSpriteId = CreateSafariPlayerHealthboxSprites(); + else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) + return; + else + healthboxSpriteId = CreateBattlerHealthboxSprites(battler); + gHealthboxSpriteIds[battler] = healthboxSpriteId; + InitBattlerHealthboxCoords(battler); + SetHealthboxSpriteVisible(healthboxSpriteId); + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT); + else + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT) + DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], TRUE); + else + DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], FALSE); + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + { + if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + SetHealthboxSpriteInvisible(healthboxSpriteId); + } + else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI) && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + { + SetHealthboxSpriteInvisible(healthboxSpriteId); + } + } +} From 6a063cf74ad8168e9080c1f3be20e5dfe3c3187c Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 06:55:42 +0800 Subject: [PATCH 014/100] ported battle_controller_opponent from pokeem and corrected lots of stuff --- asm/battle_2.s | 6 +- asm/battle_ai_switch_items.s | 14 +- asm/battle_anim.s | 4 +- asm/battle_anim_effects_1.s | 20 +- asm/battle_anim_effects_2.s | 30 +- asm/battle_anim_effects_3.s | 16 +- asm/battle_anim_mons.s | 28 +- asm/battle_controller_link_opponent.s | 60 +- asm/battle_controller_link_partner.s | 46 +- asm/battle_controller_oak.s | 44 +- asm/battle_controller_opponent.s | 6736 ------------------------- asm/battle_controller_player.s | 46 +- asm/battle_controller_pokedude.s | 44 +- asm/battle_interface.s | 34 +- asm/battle_tower.s | 6 +- asm/bug.s | 12 +- asm/dragon.s | 4 +- asm/fighting.s | 12 +- asm/fire.s | 4 +- asm/flying.s | 4 +- asm/ground.s | 8 +- asm/ice.s | 4 +- asm/poison.s | 4 +- asm/rock.s | 4 +- asm/water.s | 8 +- data/data.s | 5 +- include/battle.h | 43 +- include/battle_2.h | 2 +- include/battle_ai_script_commands.h | 8 +- include/battle_anim.h | 6 +- include/battle_controllers.h | 7 + include/battle_interface.h | 2 + include/battle_tower.h | 2 + include/pokemon.h | 10 +- include/trainer_tower.h | 1 + ld_script.txt | 4 +- src/battle_controller_opponent.c | 1788 +++++++ src/battle_controller_safari.c | 12 +- src/pokemon.c | 28 +- src/trainer_tower.c | 2 +- sym_ewram.txt | 6 +- 41 files changed, 2096 insertions(+), 7028 deletions(-) delete mode 100644 asm/battle_controller_opponent.s create mode 100644 src/battle_controller_opponent.c diff --git a/asm/battle_2.s b/asm/battle_2.s index b206cc493..d4fb29c16 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4061,8 +4061,8 @@ _08011E98: .4byte nullsub_10 _08011E9C: .4byte gUnknown_2022AE8 thumb_func_end sub_8011E3C - thumb_func_start sub_8011EA0 -sub_8011EA0: @ 8011EA0 + thumb_func_start SpriteCB_FaintOpponentMon +SpriteCB_FaintOpponentMon: @ 8011EA0 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -4201,7 +4201,7 @@ _08011F8C: .align 2, 0 _08011FAC: .4byte gUnknown_82349CC _08011FB0: .4byte sub_8011FB4 - thumb_func_end sub_8011EA0 + thumb_func_end SpriteCB_FaintOpponentMon thumb_func_start sub_8011FB4 sub_8011FB4: @ 8011FB4 diff --git a/asm/battle_ai_switch_items.s b/asm/battle_ai_switch_items.s index eb415e34e..58acf73c2 100644 --- a/asm/battle_ai_switch_items.s +++ b/asm/battle_ai_switch_items.s @@ -1379,8 +1379,8 @@ _08039C76: bx r1 thumb_func_end sub_8039A80 - thumb_func_start sub_8039C84 -sub_8039C84: @ 8039C84 + thumb_func_start AI_TrySwitchOrUseItem +AI_TrySwitchOrUseItem: @ 8039C84 push {r4-r6,lr} ldr r5, _08039CDC @ =gBattleTypeFlags ldr r0, [r5] @@ -1406,7 +1406,7 @@ _08039C94: ldrb r0, [r0] cmp r0, 0x6 bne _08039D5A - bl sub_8039E3C + bl GetMostSuitableMonToSwitchInto lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x6 @@ -1525,7 +1525,7 @@ _08039DA8: bx r0 .align 2, 0 _08039DB0: .4byte gActiveBattler - thumb_func_end sub_8039C84 + thumb_func_end AI_TrySwitchOrUseItem thumb_func_start sub_8039DB4 sub_8039DB4: @ 8039DB4 @@ -1600,8 +1600,8 @@ _08039E26: _08039E38: .4byte gUnknown_824F050 thumb_func_end sub_8039DB4 - thumb_func_start sub_8039E3C -sub_8039E3C: @ 8039E3C + thumb_func_start GetMostSuitableMonToSwitchInto +GetMostSuitableMonToSwitchInto: @ 8039E3C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2015,7 +2015,7 @@ _0803A188: .4byte gBattlerPartyIndexes _0803A18C: .4byte gBattleMoveDamage _0803A190: .4byte gActiveBattler _0803A194: .4byte gBattleMoves - thumb_func_end sub_8039E3C + thumb_func_end GetMostSuitableMonToSwitchInto thumb_func_start sub_803A198 sub_803A198: @ 803A198 diff --git a/asm/battle_anim.s b/asm/battle_anim.s index a79600e01..9d16e91e1 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -28,7 +28,7 @@ ClearBattleAnimationVars: @ 80724C0 ldr r0, _0807256C @ =gAnimMovePower movs r2, 0 strh r1, [r0] - ldr r0, _08072570 @ =gUnknown_2037EFE + ldr r0, _08072570 @ =gAnimFriendship strb r2, [r0] ldr r4, _08072574 @ =gUnknown_2037F14 ldr r5, _08072578 @ =gAnimMoveTurn @@ -91,7 +91,7 @@ _08072560: .4byte gUnknown_2037EE3 _08072564: .4byte gAnimDisableStructPtr _08072568: .4byte gAnimMoveDmg _0807256C: .4byte gAnimMovePower -_08072570: .4byte gUnknown_2037EFE +_08072570: .4byte gAnimFriendship _08072574: .4byte gUnknown_2037F14 _08072578: .4byte gAnimMoveTurn _0807257C: .4byte gUnknown_2037F17 diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index 9045a447e..2d436f3ef 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -113,7 +113,7 @@ sub_80A2388: @ 80A2388 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, _080A23D0 @ =sub_8075590 + ldr r0, _080A23D0 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080A23D4 @ =move_anim_8074EE0 adds r0, r4, 0 @@ -124,7 +124,7 @@ sub_80A2388: @ 80A2388 .align 2, 0 _080A23C8: .4byte gBattleAnimArgs _080A23CC: .4byte gBattleAnimAttacker -_080A23D0: .4byte sub_8075590 +_080A23D0: .4byte StartAnimLinearTranslation _080A23D4: .4byte move_anim_8074EE0 thumb_func_end sub_80A2388 @@ -153,7 +153,7 @@ sub_80A23D8: @ 80A23D8 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, _080A2428 @ =sub_8075590 + ldr r0, _080A2428 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080A242C @ =DestroyAnimSprite adds r0, r4, 0 @@ -164,7 +164,7 @@ sub_80A23D8: @ 80A23D8 .align 2, 0 _080A2420: .4byte gBattleAnimArgs _080A2424: .4byte gBattleAnimTarget -_080A2428: .4byte sub_8075590 +_080A2428: .4byte StartAnimLinearTranslation _080A242C: .4byte DestroyAnimSprite thumb_func_end sub_80A23D8 @@ -5903,7 +5903,7 @@ _080A5004: asrs r0, 24 adds r4, r0 strh r4, [r5, 0x36] - ldr r0, _080A507C @ =sub_8075590 + ldr r0, _080A507C @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A5080 @ =sub_80A5084 adds r0, r5, 0 @@ -5931,7 +5931,7 @@ _080A506A: bx r0 .align 2, 0 _080A5078: .4byte gUnknown_83E3548 -_080A507C: .4byte sub_8075590 +_080A507C: .4byte StartAnimLinearTranslation _080A5080: .4byte sub_80A5084 thumb_func_end sub_80A4FD4 @@ -6048,7 +6048,7 @@ _080A5118: lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x36] - ldr r0, _080A516C @ =sub_8075590 + ldr r0, _080A516C @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A5170 @ =sub_80A5220 adds r0, r5, 0 @@ -6059,7 +6059,7 @@ _080A5160: bx r0 .align 2, 0 _080A5168: .4byte gBattleAnimTarget -_080A516C: .4byte sub_8075590 +_080A516C: .4byte StartAnimLinearTranslation _080A5170: .4byte sub_80A5220 thumb_func_end sub_80A50B8 @@ -7711,7 +7711,7 @@ _080A5D90: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _080A5DD8 @ =sub_8075590 + ldr r0, _080A5DD8 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A5DDC @ =DestroyAnimSprite adds r0, r5, 0 @@ -7722,7 +7722,7 @@ _080A5DCC: bx r0 .align 2, 0 _080A5DD4: .4byte gBattleAnimAttacker -_080A5DD8: .4byte sub_8075590 +_080A5DD8: .4byte StartAnimLinearTranslation _080A5DDC: .4byte DestroyAnimSprite thumb_func_end sub_80A5D7C diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index c4d4a043c..722ff51ba 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -286,14 +286,14 @@ sub_80A7058: @ 80A7058 ldrh r1, [r0, 0x22] adds r1, 0xF strh r1, [r0, 0x36] - ldr r1, _080A7078 @ =sub_8075590 + ldr r1, _080A7078 @ =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, _080A707C @ =sub_80A7080 bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080A7078: .4byte sub_8075590 +_080A7078: .4byte StartAnimLinearTranslation _080A707C: .4byte sub_80A7080 thumb_func_end sub_80A7058 @@ -586,14 +586,14 @@ sub_80A72A0: @ 80A72A0 ldrh r1, [r0, 0x22] subs r1, 0x20 strh r1, [r0, 0x36] - ldr r1, _080A72C0 @ =sub_8075590 + ldr r1, _080A72C0 @ =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, _080A72C4 @ =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080A72C0: .4byte sub_8075590 +_080A72C0: .4byte StartAnimLinearTranslation _080A72C4: .4byte DestroyAnimSprite thumb_func_end sub_80A72A0 @@ -698,7 +698,7 @@ _080A7380: mov r0, r8 strh r0, [r5, 0x32] strh r7, [r5, 0x36] - ldr r0, _080A73C4 @ =sub_8075590 + ldr r0, _080A73C4 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A73C8 @ =DestroyAnimSprite adds r0, r5, 0 @@ -714,7 +714,7 @@ _080A73B4: .4byte gBattleAnimAttacker _080A73B8: .4byte gBattleAnimArgs _080A73BC: .4byte gBattleAnimTarget _080A73C0: .4byte 0xffffa000 -_080A73C4: .4byte sub_8075590 +_080A73C4: .4byte StartAnimLinearTranslation _080A73C8: .4byte DestroyAnimSprite thumb_func_end sub_80A72C8 @@ -1764,7 +1764,7 @@ sub_80A7BC4: @ 80A7BC4 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, _080A7C14 @ =sub_8075590 + ldr r0, _080A7C14 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] adds r2, r4, 0 adds r2, 0x2C @@ -1780,7 +1780,7 @@ sub_80A7BC4: @ 80A7BC4 bx r0 .align 2, 0 _080A7C10: .4byte gBattleAnimTarget -_080A7C14: .4byte sub_8075590 +_080A7C14: .4byte StartAnimLinearTranslation _080A7C18: .4byte sub_80A7C1C thumb_func_end sub_80A7BC4 @@ -1998,7 +1998,7 @@ _080A7D90: lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x36] - ldr r0, _080A7DF0 @ =sub_8075590 + ldr r0, _080A7DF0 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A7DF4 @ =sub_80A7DF8 adds r0, r5, 0 @@ -2013,7 +2013,7 @@ _080A7DE0: .4byte 0x0000ffe0 _080A7DE4: .4byte 0x0000fff0 _080A7DE8: .4byte gBattleAnimArgs _080A7DEC: .4byte gBattleAnimTarget -_080A7DF0: .4byte sub_8075590 +_080A7DF0: .4byte StartAnimLinearTranslation _080A7DF4: .4byte sub_80A7DF8 thumb_func_end sub_80A7D64 @@ -5442,7 +5442,7 @@ _080A9808: ldrh r1, [r4, 0x6] adds r0, r1 strh r0, [r5, 0x36] - ldr r0, _080A9858 @ =sub_8075590 + ldr r0, _080A9858 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A985C @ =DestroyAnimSprite adds r0, r5, 0 @@ -5457,7 +5457,7 @@ _080A9808: .align 2, 0 _080A9850: .4byte gBattleAnimAttacker _080A9854: .4byte gBattleAnimArgs -_080A9858: .4byte sub_8075590 +_080A9858: .4byte StartAnimLinearTranslation _080A985C: .4byte DestroyAnimSprite thumb_func_end sub_80A97E8 @@ -7733,7 +7733,7 @@ _080AA9C6: str r0, [r6, 0x1C] strh r5, [r6, 0x2E] adds r0, r6, 0 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords movs r0, 0x5 strh r0, [r6, 0x32] strh r5, [r6, 0x36] @@ -7891,7 +7891,7 @@ _080AAB50: ldrh r0, [r5, 0x22] subs r0, 0x48 strh r0, [r5, 0x36] - ldr r0, _080AAB74 @ =sub_8075590 + ldr r0, _080AAB74 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080AAB78 @ =DestroyAnimSprite adds r0, r5, 0 @@ -7901,7 +7901,7 @@ _080AAB50: bx r0 .align 2, 0 _080AAB70: .4byte gBattleAnimAttacker -_080AAB74: .4byte sub_8075590 +_080AAB74: .4byte StartAnimLinearTranslation _080AAB78: .4byte DestroyAnimSprite thumb_func_end sub_80AAAE4 diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index 0869b7481..d1356c619 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -265,7 +265,7 @@ _080DE49E: strh r0, [r5, 0x2E] strh r7, [r5, 0x32] strh r6, [r5, 0x36] - ldr r0, _080DE4D4 @ =sub_8075590 + ldr r0, _080DE4D4 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080DE4D8 @ =DestroyAnimSprite adds r0, r5, 0 @@ -277,7 +277,7 @@ _080DE49E: .align 2, 0 _080DE4CC: .4byte gBattleAnimTarget _080DE4D0: .4byte gBattleAnimArgs -_080DE4D4: .4byte sub_8075590 +_080DE4D4: .4byte StartAnimLinearTranslation _080DE4D8: .4byte DestroyAnimSprite thumb_func_end sub_80DE440 @@ -2404,7 +2404,7 @@ _080DF4C4: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _080DF520 @ =sub_8075590 + ldr r0, _080DF520 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] _080DF510: pop {r4,r5} @@ -2413,7 +2413,7 @@ _080DF510: .align 2, 0 _080DF518: .4byte DestroyAnimSprite _080DF51C: .4byte gBattleAnimTarget -_080DF520: .4byte sub_8075590 +_080DF520: .4byte StartAnimLinearTranslation thumb_func_end sub_80DF468 thumb_func_start sub_80DF524 @@ -11173,7 +11173,7 @@ sub_80E38D8: @ 80E38D8 ldr r3, _080E3924 @ =gBattleAnimArgs movs r2, 0 strh r2, [r3, 0xE] - ldr r1, _080E3928 @ =gUnknown_2037EFE + ldr r1, _080E3928 @ =gAnimFriendship ldrb r0, [r1] ldrb r1, [r1] adds r0, r1, 0 @@ -11209,7 +11209,7 @@ _080E3918: bx r0 .align 2, 0 _080E3924: .4byte gBattleAnimArgs -_080E3928: .4byte gUnknown_2037EFE +_080E3928: .4byte gAnimFriendship thumb_func_end sub_80E38D8 thumb_func_start sub_80E392C @@ -12703,7 +12703,7 @@ sub_80E44EC: @ 80E44EC ldr r2, _080E4508 @ =gBattleAnimArgs movs r0, 0 strh r0, [r2, 0xE] - ldr r0, _080E450C @ =gUnknown_2037F00 + ldr r0, _080E450C @ =gWeatherMoveAnim ldrh r1, [r0] movs r0, 0x60 ands r0, r1 @@ -12713,7 +12713,7 @@ sub_80E44EC: @ 80E44EC b _080E4532 .align 2, 0 _080E4508: .4byte gBattleAnimArgs -_080E450C: .4byte gUnknown_2037F00 +_080E450C: .4byte gWeatherMoveAnim _080E4510: movs r0, 0x7 ands r0, r1 diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s index 59c16da0d..ddb5d6977 100644 --- a/asm/battle_anim_mons.s +++ b/asm/battle_anim_mons.s @@ -1715,8 +1715,8 @@ _080750F6: bx r1 thumb_func_end sub_80750C8 - thumb_func_start oamt_add_pos2_onto_pos1 -oamt_add_pos2_onto_pos1: @ 80750FC + thumb_func_start SetSpritePrimaryCoordsFromSecondaryCoords +SetSpritePrimaryCoordsFromSecondaryCoords: @ 80750FC ldrh r1, [r0, 0x24] ldrh r2, [r0, 0x20] adds r1, r2 @@ -1729,7 +1729,7 @@ oamt_add_pos2_onto_pos1: @ 80750FC strh r2, [r0, 0x24] strh r2, [r0, 0x26] bx lr - thumb_func_end oamt_add_pos2_onto_pos1 + thumb_func_end SetSpritePrimaryCoordsFromSecondaryCoords thumb_func_start sub_8075114 sub_8075114: @ 8075114 @@ -2347,8 +2347,8 @@ _08075574: _0807558C: .4byte 0x0000fffe thumb_func_end obj_translate_based_on_private_1_2_3_4 - thumb_func_start sub_8075590 -sub_8075590: @ 8075590 + thumb_func_start StartAnimLinearTranslation +StartAnimLinearTranslation: @ 8075590 push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x20] @@ -2366,7 +2366,7 @@ sub_8075590: @ 8075590 bx r0 .align 2, 0 _080755B4: .4byte sub_807563C - thumb_func_end sub_8075590 + thumb_func_end StartAnimLinearTranslation thumb_func_start sub_80755B8 sub_80755B8: @ 80755B8 @@ -3547,7 +3547,7 @@ _08075E30: ldrh r6, [r6, 0x6] adds r0, r6 strh r0, [r5, 0x36] - ldr r0, _08075E78 @ =sub_8075590 + ldr r0, _08075E78 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _08075E7C @ =DestroyAnimSprite adds r0, r5, 0 @@ -3559,7 +3559,7 @@ _08075E30: _08075E6C: .4byte gBattleAnimArgs _08075E70: .4byte gBattleAnimAttacker _08075E74: .4byte gBattleAnimTarget -_08075E78: .4byte sub_8075590 +_08075E78: .4byte StartAnimLinearTranslation _08075E7C: .4byte DestroyAnimSprite thumb_func_end sub_8075DF4 @@ -3701,7 +3701,7 @@ _08075F62: ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r5, 0x36] - ldr r0, _08075FB4 @ =sub_8075590 + ldr r0, _08075FB4 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _08075FB8 @ =DestroyAnimSprite adds r0, r5, 0 @@ -3713,7 +3713,7 @@ _08075F62: _08075FA8: .4byte gBattleAnimTarget _08075FAC: .4byte gBattleAnimAttacker _08075FB0: .4byte gBattleAnimArgs -_08075FB4: .4byte sub_8075590 +_08075FB4: .4byte StartAnimLinearTranslation _08075FB8: .4byte DestroyAnimSprite thumb_func_end sub_8075F0C @@ -4667,7 +4667,7 @@ sub_80766B8: @ 80766B8 push {lr} lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _080766E4 @ =gUnknown_2037EFE + ldr r0, _080766E4 @ =gAnimFriendship ldrb r0, [r0] movs r1, 0 cmp r0, 0x1E @@ -4687,7 +4687,7 @@ _080766D6: pop {r0} bx r0 .align 2, 0 -_080766E4: .4byte gUnknown_2037EFE +_080766E4: .4byte gAnimFriendship _080766E8: .4byte gBattleAnimArgs thumb_func_end sub_80766B8 @@ -6327,7 +6327,7 @@ _08077390: subs r0, 0x50 _0807739E: strh r0, [r4, 0x22] - ldr r0, _080773B4 @ =sub_8075590 + ldr r0, _080773B4 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080773B8 @ =DestroyAnimSprite adds r0, r4, 0 @@ -6336,7 +6336,7 @@ _0807739E: pop {r0} bx r0 .align 2, 0 -_080773B4: .4byte sub_8075590 +_080773B4: .4byte StartAnimLinearTranslation _080773B8: .4byte DestroyAnimSprite thumb_func_end sub_8077350 diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s index 406216216..7aba90e39 100644 --- a/asm/battle_controller_link_opponent.s +++ b/asm/battle_controller_link_opponent.s @@ -807,7 +807,7 @@ CompleteOnHealthbarDone_4: @ 803ACCC ldrb r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -825,7 +825,7 @@ CompleteOnHealthbarDone_4: @ 803ACCC adds r0, r5 ldrb r0, [r0] movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox b _0803AD18 .align 2, 0 _0803AD0C: .4byte gActiveBattler @@ -4256,7 +4256,7 @@ _0803C992: bl SetMultiuseSpriteTemplateToTrainerBack ldr r5, _0803CAD0 @ =gMultiuseSpriteTemplate adds r6, r7, 0 - ldr r1, _0803CAD4 @ =gUnknown_823932C + ldr r1, _0803CAD4 @ =gTrainerFrontPicCoords mov r2, r9 lsls r0, r2, 2 adds r0, r1 @@ -4391,7 +4391,7 @@ _0803C992: _0803CAC8: .4byte gFacilityClassToPicIndex _0803CACC: .4byte gActiveBattler _0803CAD0: .4byte gMultiuseSpriteTemplate -_0803CAD4: .4byte gUnknown_823932C +_0803CAD4: .4byte gTrainerFrontPicCoords _0803CAD8: .4byte gBattlerSpriteIds _0803CADC: .4byte gSprites _0803CAE0: .4byte 0x0000ff10 @@ -4425,7 +4425,7 @@ sub_803CB0C: @ 803CB0C lsls r0, 2 ldr r5, _0803CBA4 @ =gSprites adds r0, r5 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] @@ -4463,7 +4463,7 @@ sub_803CB0C: @ 803CB0C adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _0803CBA8 @ =sub_8075590 + ldr r1, _0803CBA8 @ =StartAnimLinearTranslation str r1, [r0] ldrb r0, [r4] adds r0, r6 @@ -4487,7 +4487,7 @@ sub_803CB0C: @ 803CB0C _0803CB9C: .4byte gBattlerSpriteIds _0803CBA0: .4byte gActiveBattler _0803CBA4: .4byte gSprites -_0803CBA8: .4byte sub_8075590 +_0803CBA8: .4byte StartAnimLinearTranslation _0803CBAC: .4byte SpriteCallbackDummy _0803CBB0: .4byte gBattlerControllerFuncs _0803CBB4: .4byte sub_803A70C @@ -4557,7 +4557,7 @@ _0803CC0C: lsls r0, 2 adds r2, 0x1C adds r0, r2 - ldr r1, _0803CC58 @ =sub_8011EA0 + ldr r1, _0803CC58 @ =SpriteCB_FaintOpponentMon str r1, [r0] ldr r1, _0803CC5C @ =gBattlerControllerFuncs ldrb r0, [r5] @@ -4572,7 +4572,7 @@ _0803CC48: .align 2, 0 _0803CC50: .4byte gSprites _0803CC54: .4byte gBattlerSpriteIds -_0803CC58: .4byte sub_8011EA0 +_0803CC58: .4byte SpriteCB_FaintOpponentMon _0803CC5C: .4byte gBattlerControllerFuncs _0803CC60: .4byte sub_803AD20 thumb_func_end sub_803CBB8 @@ -4679,7 +4679,7 @@ _0803CCA6: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, _0803CD8C @ =gUnknown_2037EFE + ldr r3, _0803CD8C @ =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4687,7 +4687,7 @@ _0803CCA6: adds r1, r2 ldrb r1, [r1] strb r1, [r3] - ldr r4, _0803CD90 @ =gUnknown_2037F00 + ldr r4, _0803CD90 @ =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4728,8 +4728,8 @@ _0803CD7C: .4byte gBattleBufferA _0803CD80: .4byte gAnimMoveTurn _0803CD84: .4byte gAnimMovePower _0803CD88: .4byte gAnimMoveDmg -_0803CD8C: .4byte gUnknown_2037EFE -_0803CD90: .4byte gUnknown_2037F00 +_0803CD8C: .4byte gAnimFriendship +_0803CD90: .4byte gWeatherMoveAnim _0803CD94: .4byte gAnimDisableStructPtr _0803CD98: .4byte gTransformedPersonalities _0803CD9C: @@ -5531,8 +5531,8 @@ _0803D3AC: .4byte gActiveBattler _0803D3B0: .4byte gBattleBufferA thumb_func_end RecordedOpponentHandlePlaySE - thumb_func_start LinkOpponentHandlecmd44 -LinkOpponentHandlecmd44: @ 803D3B4 + thumb_func_start LinkOpponentHandlePlayFanfare +LinkOpponentHandlePlayFanfare: @ 803D3B4 push {lr} ldr r2, _0803D3DC @ =gBattleBufferA ldr r0, _0803D3E0 @ =gActiveBattler @@ -5553,7 +5553,7 @@ LinkOpponentHandlecmd44: @ 803D3B4 .align 2, 0 _0803D3DC: .4byte gBattleBufferA _0803D3E0: .4byte gActiveBattler - thumb_func_end LinkOpponentHandlecmd44 + thumb_func_end LinkOpponentHandlePlayFanfare thumb_func_start RecordedOpponentHandleFaintingCry RecordedOpponentHandleFaintingCry: @ 803D3E4 @@ -5622,7 +5622,7 @@ sub_803D454: @ 803D454 lsls r0, 2 ldr r4, _0803D53C @ =gSprites adds r0, r4 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] @@ -5660,7 +5660,7 @@ sub_803D454: @ 803D454 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _0803D540 @ =sub_8075590 + ldr r1, _0803D540 @ =StartAnimLinearTranslation str r1, [r0] ldrb r0, [r6] adds r0, r5 @@ -5696,14 +5696,14 @@ sub_803D454: @ 803D454 ands r0, r1 cmp r0, 0 beq _0803D516 - ldr r0, _0803D554 @ =gUnknown_2024000 + ldr r0, _0803D554 @ =gBattlerStatusSummaryTaskId adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 - ldr r1, _0803D558 @ =sub_80491B0 + ldr r1, _0803D558 @ =Task_HidePartyStatusSummary str r1, [r0] _0803D516: ldr r0, [r3] @@ -5725,13 +5725,13 @@ _0803D516: _0803D534: .4byte gBattlerSpriteIds _0803D538: .4byte gActiveBattler _0803D53C: .4byte gSprites -_0803D540: .4byte sub_8075590 +_0803D540: .4byte StartAnimLinearTranslation _0803D544: .4byte sub_803D648 _0803D548: .4byte sub_803D564 _0803D54C: .4byte gTasks _0803D550: .4byte gBattleSpritesDataPtr -_0803D554: .4byte gUnknown_2024000 -_0803D558: .4byte sub_80491B0 +_0803D554: .4byte gBattlerStatusSummaryTaskId +_0803D558: .4byte Task_HidePartyStatusSummary _0803D55C: .4byte gBattlerControllerFuncs _0803D560: .4byte nullsub_19 thumb_func_end sub_803D454 @@ -5957,8 +5957,8 @@ _0803D718: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_8048D14 - ldr r2, _0803D780 @ =gUnknown_2024000 + bl CreatePartyStatusSummarySprites + ldr r2, _0803D780 @ =gBattlerStatusSummaryTaskId ldrb r1, [r5] adds r1, r2 movs r3, 0 @@ -5999,7 +5999,7 @@ _0803D776: bx r0 .align 2, 0 _0803D77C: .4byte gUnknown_2022BC8 -_0803D780: .4byte gUnknown_2024000 +_0803D780: .4byte gBattlerStatusSummaryTaskId _0803D784: .4byte gBattleSpritesDataPtr _0803D788: .4byte gBattlerControllerFuncs _0803D78C: .4byte sub_803D790 @@ -6061,14 +6061,14 @@ RecordedOpponentHandleCmd49: @ 803D7D8 cmp r0, 0 beq _0803D80A ldr r2, _0803D81C @ =gTasks - ldr r0, _0803D820 @ =gUnknown_2024000 + ldr r0, _0803D820 @ =gBattlerStatusSummaryTaskId adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 - ldr r1, _0803D824 @ =sub_80491B0 + ldr r1, _0803D824 @ =Task_HidePartyStatusSummary str r1, [r0] _0803D80A: bl RecordedOpponentBufferExecCompleted @@ -6078,8 +6078,8 @@ _0803D80A: _0803D814: .4byte gBattleSpritesDataPtr _0803D818: .4byte gActiveBattler _0803D81C: .4byte gTasks -_0803D820: .4byte gUnknown_2024000 -_0803D824: .4byte sub_80491B0 +_0803D820: .4byte gBattlerStatusSummaryTaskId +_0803D824: .4byte Task_HidePartyStatusSummary thumb_func_end RecordedOpponentHandleCmd49 thumb_func_start sub_803D828 diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 8644e651c..09aaf645c 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -495,7 +495,7 @@ sub_80D45D0: @ 80D45D0 ldrb r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -513,7 +513,7 @@ sub_80D45D0: @ 80D45D0 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox b _080D4632 .align 2, 0 _080D4610: .4byte gActiveBattler @@ -4016,7 +4016,7 @@ sub_80D6348: @ 80D6348 lsls r0, 2 ldr r5, _080D63DC @ =gSprites adds r0, r5 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r4] adds r0, r6 ldrb r1, [r0] @@ -4053,7 +4053,7 @@ sub_80D6348: @ 80D6348 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _080D63E4 @ =sub_8075590 + ldr r1, _080D63E4 @ =StartAnimLinearTranslation str r1, [r0] ldrb r0, [r4] adds r0, r6 @@ -4078,7 +4078,7 @@ _080D63D4: .4byte gBattlerSpriteIds _080D63D8: .4byte gActiveBattler _080D63DC: .4byte gSprites _080D63E0: .4byte 0x0000ffd8 -_080D63E4: .4byte sub_8075590 +_080D63E4: .4byte StartAnimLinearTranslation _080D63E8: .4byte SpriteCallbackDummy _080D63EC: .4byte gBattlerControllerFuncs _080D63F0: .4byte sub_80D42A8 @@ -4300,7 +4300,7 @@ _080D6522: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, _080D6608 @ =gUnknown_2037EFE + ldr r3, _080D6608 @ =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4308,7 +4308,7 @@ _080D6522: adds r1, r2 ldrb r1, [r1] strb r1, [r3] - ldr r4, _080D660C @ =gUnknown_2037F00 + ldr r4, _080D660C @ =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4349,8 +4349,8 @@ _080D65F8: .4byte gBattleBufferA _080D65FC: .4byte gAnimMoveTurn _080D6600: .4byte gAnimMovePower _080D6604: .4byte gAnimMoveDmg -_080D6608: .4byte gUnknown_2037EFE -_080D660C: .4byte gUnknown_2037F00 +_080D6608: .4byte gAnimFriendship +_080D660C: .4byte gWeatherMoveAnim _080D6610: .4byte gAnimDisableStructPtr _080D6614: .4byte gTransformedPersonalities _080D6618: @@ -5244,7 +5244,7 @@ sub_80D6CD4: @ 80D6CD4 lsls r0, 2 ldr r4, _080D6DE4 @ =gSprites adds r0, r4 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] @@ -5281,7 +5281,7 @@ sub_80D6CD4: @ 80D6CD4 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _080D6DEC @ =sub_8075590 + ldr r1, _080D6DEC @ =StartAnimLinearTranslation str r1, [r0] ldrb r2, [r6] adds r0, r2, r5 @@ -5362,7 +5362,7 @@ _080D6DDC: .4byte gBattlerSpriteIds _080D6DE0: .4byte gActiveBattler _080D6DE4: .4byte gSprites _080D6DE8: .4byte 0x0000ffd8 -_080D6DEC: .4byte sub_8075590 +_080D6DEC: .4byte StartAnimLinearTranslation _080D6DF0: .4byte sub_80335F8 _080D6DF4: .4byte 0x0000d6f9 _080D6DF8: .4byte gLinkPlayers @@ -5425,14 +5425,14 @@ _080D6E0C: ands r0, r1 cmp r0, 0 beq _080D6E86 - ldr r0, _080D6EC0 @ =gUnknown_2024000 + ldr r0, _080D6EC0 @ =gBattlerStatusSummaryTaskId adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 - ldr r1, _080D6EC4 @ =sub_80491B0 + ldr r1, _080D6EC4 @ =Task_HidePartyStatusSummary str r1, [r0] _080D6E86: ldr r0, [r3] @@ -5458,8 +5458,8 @@ _080D6EB0: .4byte gActiveBattler _080D6EB4: .4byte sub_80D6ED0 _080D6EB8: .4byte gTasks _080D6EBC: .4byte gBattleSpritesDataPtr -_080D6EC0: .4byte gUnknown_2024000 -_080D6EC4: .4byte sub_80491B0 +_080D6EC0: .4byte gBattlerStatusSummaryTaskId +_080D6EC4: .4byte Task_HidePartyStatusSummary _080D6EC8: .4byte gBattlerControllerFuncs _080D6ECC: .4byte nullsub_77 thumb_func_end sub_80D6CD4 @@ -5638,8 +5638,8 @@ _080D700C: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_8048D14 - ldr r2, _080D7094 @ =gUnknown_2024000 + bl CreatePartyStatusSummarySprites + ldr r2, _080D7094 @ =gBattlerStatusSummaryTaskId ldrb r1, [r5] adds r1, r2 movs r3, 0 @@ -5681,7 +5681,7 @@ _080D7080: _080D7088: .4byte gBattleSpritesDataPtr _080D708C: .4byte gActiveBattler _080D7090: .4byte gUnknown_2022BC8 -_080D7094: .4byte gUnknown_2024000 +_080D7094: .4byte gBattlerStatusSummaryTaskId _080D7098: .4byte gBattlerControllerFuncs _080D709C: .4byte sub_80D70A0 thumb_func_end sub_80D6FDC @@ -5742,14 +5742,14 @@ sub_80D70E8: @ 80D70E8 cmp r0, 0 beq _080D711A ldr r2, _080D712C @ =gTasks - ldr r0, _080D7130 @ =gUnknown_2024000 + ldr r0, _080D7130 @ =gBattlerStatusSummaryTaskId adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 - ldr r1, _080D7134 @ =sub_80491B0 + ldr r1, _080D7134 @ =Task_HidePartyStatusSummary str r1, [r0] _080D711A: bl sub_80D49E8 @@ -5759,8 +5759,8 @@ _080D711A: _080D7124: .4byte gBattleSpritesDataPtr _080D7128: .4byte gActiveBattler _080D712C: .4byte gTasks -_080D7130: .4byte gUnknown_2024000 -_080D7134: .4byte sub_80491B0 +_080D7130: .4byte gBattlerStatusSummaryTaskId +_080D7134: .4byte Task_HidePartyStatusSummary thumb_func_end sub_80D70E8 thumb_func_start sub_80D7138 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 1c1838616..d4743e8a4 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -1362,7 +1362,7 @@ _080E807C: adds r0, r7, 0 movs r2, 0x1 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -2371,7 +2371,7 @@ sub_80E88C0: @ 80E88C0 ldrb r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -2389,7 +2389,7 @@ sub_80E88C0: @ 80E88C0 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox b _080E8922 .align 2, 0 _080E8900: .4byte gActiveBattler @@ -5529,7 +5529,7 @@ sub_80EA2B8: @ 80EA2B8 lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, _080EA3A0 @ =gUnknown_2037EFE + ldr r3, _080EA3A0 @ =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -5537,7 +5537,7 @@ sub_80EA2B8: @ 80EA2B8 adds r1, r2 ldrb r1, [r1] strb r1, [r3] - ldr r4, _080EA3A4 @ =gUnknown_2037F00 + ldr r4, _080EA3A4 @ =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -5578,8 +5578,8 @@ _080EA390: .4byte gActiveBattler _080EA394: .4byte gAnimMoveTurn _080EA398: .4byte gAnimMovePower _080EA39C: .4byte gAnimMoveDmg -_080EA3A0: .4byte gUnknown_2037EFE -_080EA3A4: .4byte gUnknown_2037F00 +_080EA3A0: .4byte gAnimFriendship +_080EA3A4: .4byte gWeatherMoveAnim _080EA3A8: .4byte gAnimDisableStructPtr _080EA3AC: .4byte gTransformedPersonalities _080EA3B0: @@ -6419,7 +6419,7 @@ _080EAA48: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox _080EAA82: ldr r1, _080EAAAC @ =gBattlerControllerFuncs ldr r0, _080EAAB0 @ =gActiveBattler @@ -6822,7 +6822,7 @@ _080EAD64: lsls r0, 2 ldr r5, _080EAEAC @ =gSprites adds r0, r5 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] @@ -6859,7 +6859,7 @@ _080EAD64: adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _080EAEB4 @ =sub_8075590 + ldr r1, _080EAEB4 @ =StartAnimLinearTranslation str r1, [r0] ldrb r2, [r7] adds r0, r2, r6 @@ -6941,14 +6941,14 @@ _080EAD64: ands r0, r1 cmp r0, 0 beq _080EAE84 - ldr r0, _080EAED4 @ =gUnknown_2024000 + ldr r0, _080EAED4 @ =gBattlerStatusSummaryTaskId adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 - ldr r1, _080EAED8 @ =sub_80491B0 + ldr r1, _080EAED8 @ =Task_HidePartyStatusSummary str r1, [r0] _080EAE84: ldr r0, [r3] @@ -6970,7 +6970,7 @@ _080EAEA4: .4byte gBattlerSpriteIds _080EAEA8: .4byte gActiveBattler _080EAEAC: .4byte gSprites _080EAEB0: .4byte 0x0000ffd8 -_080EAEB4: .4byte sub_8075590 +_080EAEB4: .4byte StartAnimLinearTranslation _080EAEB8: .4byte sub_80335F8 _080EAEBC: .4byte 0x0000d6f8 _080EAEC0: .4byte gUnknown_8239FD4 @@ -6978,8 +6978,8 @@ _080EAEC4: .4byte gSaveBlock2Ptr _080EAEC8: .4byte sub_80EB0A8 _080EAECC: .4byte gTasks _080EAED0: .4byte gBattleSpritesDataPtr -_080EAED4: .4byte gUnknown_2024000 -_080EAED8: .4byte sub_80491B0 +_080EAED4: .4byte gBattlerStatusSummaryTaskId +_080EAED8: .4byte Task_HidePartyStatusSummary _080EAEDC: .4byte gBattlerControllerFuncs _080EAEE0: .4byte nullsub_13 _080EAEE4: @@ -6998,14 +6998,14 @@ _080EAEE4: cmp r0, 0 beq _080EAF14 ldr r2, _080EAF28 @ =gTasks - ldr r0, _080EAF2C @ =gUnknown_2024000 + ldr r0, _080EAF2C @ =gBattlerStatusSummaryTaskId adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 - ldr r1, _080EAF30 @ =sub_80491B0 + ldr r1, _080EAF30 @ =Task_HidePartyStatusSummary str r1, [r0] _080EAF14: bl WallyBufferExecCompleted @@ -7017,8 +7017,8 @@ _080EAF18: _080EAF20: .4byte gBattleSpritesDataPtr _080EAF24: .4byte gActiveBattler _080EAF28: .4byte gTasks -_080EAF2C: .4byte gUnknown_2024000 -_080EAF30: .4byte sub_80491B0 +_080EAF2C: .4byte gBattlerStatusSummaryTaskId +_080EAF30: .4byte Task_HidePartyStatusSummary thumb_func_end sub_80EAD54 thumb_func_start sub_80EAF34 @@ -7295,8 +7295,8 @@ _080EB14C: subs r3, 0x2 adds r4, r3 ldrb r3, [r4] - bl sub_8048D14 - ldr r2, _080EB19C @ =gUnknown_2024000 + bl CreatePartyStatusSummarySprites + ldr r2, _080EB19C @ =gBattlerStatusSummaryTaskId ldrb r1, [r5] adds r1, r2 strb r0, [r1] @@ -7309,7 +7309,7 @@ _080EB18A: _080EB190: .4byte gBattleSpritesDataPtr _080EB194: .4byte gActiveBattler _080EB198: .4byte gUnknown_2022BC8 -_080EB19C: .4byte gUnknown_2024000 +_080EB19C: .4byte gBattlerStatusSummaryTaskId thumb_func_end sub_80EB11C thumb_func_start sub_80EB1A0 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s deleted file mode 100644 index 85f203998..000000000 --- a/asm/battle_controller_opponent.s +++ /dev/null @@ -1,6736 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_17 -nullsub_17: @ 8035A78 - bx lr - thumb_func_end nullsub_17 - - thumb_func_start SetControllerToOpponent -SetControllerToOpponent: @ 8035A7C - ldr r1, _08035A8C @ =gBattlerControllerFuncs - ldr r0, _08035A90 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08035A94 @ =sub_8035A98 - str r1, [r0] - bx lr - .align 2, 0 -_08035A8C: .4byte gBattlerControllerFuncs -_08035A90: .4byte gActiveBattler -_08035A94: .4byte sub_8035A98 - thumb_func_end SetControllerToOpponent - - thumb_func_start sub_8035A98 -sub_8035A98: @ 8035A98 - push {lr} - ldr r2, _08035ACC @ =gBattleControllerExecFlags - ldr r1, _08035AD0 @ =gBitTable - ldr r0, _08035AD4 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08035AE4 - ldr r0, _08035AD8 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _08035AE0 - ldr r0, _08035ADC @ =gUnknown_8250A34 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _08035AE4 - .align 2, 0 -_08035ACC: .4byte gBattleControllerExecFlags -_08035AD0: .4byte gBitTable -_08035AD4: .4byte gActiveBattler -_08035AD8: .4byte gBattleBufferA -_08035ADC: .4byte gUnknown_8250A34 -_08035AE0: - bl OpponentBufferExecCompleted -_08035AE4: - pop {r0} - bx r0 - thumb_func_end sub_8035A98 - - thumb_func_start sub_8035AE8 -sub_8035AE8: @ 8035AE8 - push {lr} - ldr r2, _08035B10 @ =gSprites - ldr r1, _08035B14 @ =gBattlerSpriteIds - ldr r0, _08035B18 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08035B1C @ =SpriteCallbackDummy - cmp r1, r0 - bne _08035B0C - bl OpponentBufferExecCompleted -_08035B0C: - pop {r0} - bx r0 - .align 2, 0 -_08035B10: .4byte gSprites -_08035B14: .4byte gBattlerSpriteIds -_08035B18: .4byte gActiveBattler -_08035B1C: .4byte SpriteCallbackDummy - thumb_func_end sub_8035AE8 - - thumb_func_start sub_8035B20 -sub_8035B20: @ 8035B20 - push {lr} - ldr r2, _08035B48 @ =gSprites - ldr r1, _08035B4C @ =gBattlerSpriteIds - ldr r0, _08035B50 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08035B54 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08035B44 - bl OpponentBufferExecCompleted -_08035B44: - pop {r0} - bx r0 - .align 2, 0 -_08035B48: .4byte gSprites -_08035B4C: .4byte gBattlerSpriteIds -_08035B50: .4byte gActiveBattler -_08035B54: .4byte SpriteCallbackDummy - thumb_func_end sub_8035B20 - - thumb_func_start sub_8035B58 -sub_8035B58: @ 8035B58 - push {r4-r6,lr} - ldr r4, _08035BD0 @ =gSprites - ldr r6, _08035BD4 @ =gBattlerSpriteIds - ldr r5, _08035BD8 @ =gActiveBattler - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, [r0] - ldr r0, _08035BDC @ =SpriteCallbackDummy - cmp r1, r0 - bne _08035BC8 - adds r0, r2, r4 - ldrh r0, [r0, 0x6] - bl FreeTrainerFrontPicPaletteAndTile - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x38] - ldr r2, _08035BE0 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08035BE4 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - bl OpponentBufferExecCompleted -_08035BC8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08035BD0: .4byte gSprites -_08035BD4: .4byte gBattlerSpriteIds -_08035BD8: .4byte gActiveBattler -_08035BDC: .4byte SpriteCallbackDummy -_08035BE0: .4byte 0x000003ff -_08035BE4: .4byte 0xfffffc00 - thumb_func_end sub_8035B58 - - thumb_func_start sub_8035BE8 -sub_8035BE8: @ 8035BE8 - push {r4,lr} - ldr r4, _08035C28 @ =gBattleSpritesDataPtr - ldr r1, [r4] - ldr r3, _08035C2C @ =gActiveBattler - ldrb r0, [r3] - ldr r2, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08035C20 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - bl OpponentBufferExecCompleted -_08035C20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08035C28: .4byte gBattleSpritesDataPtr -_08035C2C: .4byte gActiveBattler - thumb_func_end sub_8035BE8 - - thumb_func_start sub_8035C30 -sub_8035C30: @ 8035C30 - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08035C54 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08035C88 - ldr r0, _08035C74 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08035C88 -_08035C54: - ldr r2, _08035C78 @ =gSprites - ldr r1, _08035C7C @ =gHealthboxSpriteIds - ldr r0, _08035C80 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08035C84 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08035CBE - b _08035CBC - .align 2, 0 -_08035C74: .4byte gBattleTypeFlags -_08035C78: .4byte gSprites -_08035C7C: .4byte gHealthboxSpriteIds -_08035C80: .4byte gActiveBattler -_08035C84: .4byte SpriteCallbackDummy -_08035C88: - ldr r2, _08035D84 @ =gSprites - ldr r5, _08035D88 @ =gHealthboxSpriteIds - ldr r0, _08035D8C @ =gActiveBattler - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _08035D90 @ =SpriteCallbackDummy - cmp r4, r0 - bne _08035CBE - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _08035CBE -_08035CBC: - movs r6, 0x1 -_08035CBE: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _08035CCA - movs r6, 0 -_08035CCA: - cmp r6, 0 - bne _08035CD0 - b _08035DD2 -_08035CD0: - ldr r0, _08035D94 @ =gBattleSpritesDataPtr - mov r12, r0 - ldr r0, [r0] - ldr r7, _08035D8C @ =gActiveBattler - ldrb r2, [r7] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r3 - ldrb r1, [r4, 0x1] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08035DD2 - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _08035DD2 - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - mov r1, r12 - ldr r0, [r1] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - mov r0, r12 - ldr r2, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - mov r1, r12 - ldr r2, [r1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _08035D98 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _08035D9C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08035DA4 - ldr r0, _08035DA0 @ =gMPlayInfo_BGM - bl m4aMPlayContinue - b _08035DB0 - .align 2, 0 -_08035D84: .4byte gSprites -_08035D88: .4byte gHealthboxSpriteIds -_08035D8C: .4byte gActiveBattler -_08035D90: .4byte SpriteCallbackDummy -_08035D94: .4byte gBattleSpritesDataPtr -_08035D98: .4byte 0x000027f9 -_08035D9C: .4byte gBattleTypeFlags -_08035DA0: .4byte gMPlayInfo_BGM -_08035DA4: - ldr r0, _08035DD8 @ =gMPlayInfo_BGM - ldr r1, _08035DDC @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_08035DB0: - ldr r0, _08035DE0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, _08035DE4 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _08035DE8 @ =gBattlerControllerFuncs - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _08035DEC @ =sub_8035BE8 - str r1, [r0] -_08035DD2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035DD8: .4byte gMPlayInfo_BGM -_08035DDC: .4byte 0x0000ffff -_08035DE0: .4byte gBattleSpritesDataPtr -_08035DE4: .4byte gActiveBattler -_08035DE8: .4byte gBattlerControllerFuncs -_08035DEC: .4byte sub_8035BE8 - thumb_func_end sub_8035C30 - - thumb_func_start sub_8035DF0 -sub_8035DF0: @ 8035DF0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, _08035FC0 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r1, _08035FC4 @ =gActiveBattler - mov r9, r1 - ldrb r2, [r1] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r5, 0x88 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08035E2C - ldr r0, _08035FC8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08035FCC @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_08035E2C: - ldr r1, [r4] - mov r2, r9 - ldrb r0, [r2] - movs r7, 0x2 - adds r2, r7, 0 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08035E60 - ldr r0, _08035FC8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08035FCC @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_08035E60: - ldr r0, [r4] - mov r1, r9 - ldrb r2, [r1] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - movs r4, 0x8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08035E7E - b _08035FB4 -_08035E7E: - adds r1, r7, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08035E96 - b _08035FB4 -_08035E96: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08035F28 - ldr r0, _08035FD0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08035F28 - ldr r1, _08035FD4 @ =gUnknown_3004FFC - mov r2, r9 - ldrb r0, [r2] - eors r0, r7 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08035FD8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _08035FDC @ =gHealthboxSpriteIds - mov r1, r9 - ldrb r0, [r1] - adds r1, r7, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08035FC8 @ =gBattlerPartyIndexes - mov r8, r2 - lsls r1, 1 - add r1, r8 - ldrh r1, [r1] - movs r6, 0x64 - muls r1, r6 - ldr r5, _08035FCC @ =gEnemyParty - adds r1, r5 - movs r2, 0 - bl UpdateHealthboxAttribute - mov r1, r9 - ldrb r0, [r1] - eors r0, r7 - bl sub_804BD94 - mov r2, r9 - ldrb r0, [r2] - eors r0, r7 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - mov r1, r9 - ldrb r0, [r1] - adds r4, r7, 0 - eors r4, r0 - lsls r0, r4, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback -_08035F28: - ldr r1, _08035FD4 @ =gUnknown_3004FFC - ldr r5, _08035FC4 @ =gActiveBattler - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08035FD8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _08035FDC @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08035FC8 @ =gBattlerPartyIndexes - mov r9, r2 - lsls r1, 1 - add r1, r9 - ldrh r1, [r1] - movs r2, 0x64 - mov r8, r2 - mov r2, r8 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _08035FCC @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r4, [r5] - lsls r0, r4, 1 - add r0, r9 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r0, _08035FC0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08035FE0 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08035FE4 @ =sub_8035C30 - str r1, [r0] -_08035FB4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08035FC0: .4byte gBattleSpritesDataPtr -_08035FC4: .4byte gActiveBattler -_08035FC8: .4byte gBattlerPartyIndexes -_08035FCC: .4byte gEnemyParty -_08035FD0: .4byte gBattleTypeFlags -_08035FD4: .4byte gUnknown_3004FFC -_08035FD8: .4byte gSprites -_08035FDC: .4byte gHealthboxSpriteIds -_08035FE0: .4byte gBattlerControllerFuncs -_08035FE4: .4byte sub_8035C30 - thumb_func_end sub_8035DF0 - - thumb_func_start sub_8035FE8 -sub_8035FE8: @ 8035FE8 - push {r4-r7,lr} - ldr r2, _08036044 @ =gSprites - ldr r0, _08036048 @ =gBattlerSpriteIds - ldr r7, _0803604C @ =gActiveBattler - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r2, r0, 31 - cmp r2, 0x1 - bne _08036094 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _08036094 - ldr r6, _08036050 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r4, r3, 1 - adds r0, r4, r3 - lsls r0, 2 - adds r1, r0, r1 - ldrb r5, [r1] - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - bne _0803605C - ldr r0, _08036054 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08036058 @ =gEnemyParty - adds r1, r0 - adds r0, r3, 0 - bl sub_80F1720 - b _08036094 - .align 2, 0 -_08036044: .4byte gSprites -_08036048: .4byte gBattlerSpriteIds -_0803604C: .4byte gActiveBattler -_08036050: .4byte gBattleSpritesDataPtr -_08036054: .4byte gBattlerPartyIndexes -_08036058: .4byte gEnemyParty -_0803605C: - ldrb r0, [r1, 0x1] - ands r2, r0 - cmp r2, 0 - beq _08036094 - movs r0, 0x7F - ands r0, r5 - strb r0, [r1] - ldr r0, [r6] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0803609C @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - bl OpponentBufferExecCompleted -_08036094: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803609C: .4byte 0x000027f9 - thumb_func_end sub_8035FE8 - - thumb_func_start sub_80360A0 -sub_80360A0: @ 80360A0 - push {r4-r6,lr} - ldr r6, _080360E0 @ =gActiveBattler - ldrb r0, [r6] - ldr r5, _080360E4 @ =gHealthboxSpriteIds - adds r1, r0, r5 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8049FD8 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080360E8 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - movs r2, 0 - bl sub_8048440 - b _08036124 - .align 2, 0 -_080360E0: .4byte gActiveBattler -_080360E4: .4byte gHealthboxSpriteIds -_080360E8: - movs r0, 0x1 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _08036120 - ldr r0, _08036114 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08036120 - movs r0, 0x1 - bl sub_80EB2F4 - ldr r0, _08036118 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803611C @ =sub_80E8570 - str r0, [r1] - b _08036124 - .align 2, 0 -_08036114: .4byte gBattleTypeFlags -_08036118: .4byte gBattlerControllerFuncs -_0803611C: .4byte sub_80E8570 -_08036120: - bl OpponentBufferExecCompleted -_08036124: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80360A0 - - thumb_func_start sub_803612C -sub_803612C: @ 803612C - push {lr} - ldr r2, _08036160 @ =gSprites - ldr r0, _08036164 @ =gBattlerSpriteIds - ldr r1, _08036168 @ =gActiveBattler - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0803615A - ldr r0, _0803616C @ =gHealthboxSpriteIds - adds r0, r3, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OpponentBufferExecCompleted -_0803615A: - pop {r0} - bx r0 - .align 2, 0 -_08036160: .4byte gSprites -_08036164: .4byte gBattlerSpriteIds -_08036168: .4byte gActiveBattler -_0803616C: .4byte gHealthboxSpriteIds - thumb_func_end sub_803612C - - thumb_func_start sub_8036170 -sub_8036170: @ 8036170 - push {r4-r6,lr} - ldr r0, _080361D0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _080361D4 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080361CA - ldr r5, _080361D8 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080361DC @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl HideBattlerShadowSprite - ldr r1, _080361E0 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OpponentBufferExecCompleted -_080361CA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080361D0: .4byte gBattleSpritesDataPtr -_080361D4: .4byte gActiveBattler -_080361D8: .4byte gBattlerSpriteIds -_080361DC: .4byte gSprites -_080361E0: .4byte gHealthboxSpriteIds - thumb_func_end sub_8036170 - - thumb_func_start sub_80361E4 -sub_80361E4: @ 80361E4 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080361F6 - bl OpponentBufferExecCompleted -_080361F6: - pop {r0} - bx r0 - thumb_func_end sub_80361E4 - - thumb_func_start sub_80361FC -sub_80361FC: @ 80361FC - push {r4,lr} - ldr r1, _08036238 @ =gBattlerSpriteIds - ldr r0, _0803623C @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _08036240 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _08036248 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08036244 @ =gDoingBattleAnim - strb r3, [r0] - bl OpponentBufferExecCompleted - b _08036272 - .align 2, 0 -_08036238: .4byte gBattlerSpriteIds -_0803623C: .4byte gActiveBattler -_08036240: .4byte gSprites -_08036244: .4byte gDoingBattleAnim -_08036248: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0803626C - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0803626C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08036272: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80361FC - - thumb_func_start sub_8036278 -sub_8036278: @ 8036278 - push {r4,lr} - ldr r2, _080362CC @ =gSprites - ldr r0, _080362D0 @ =gHealthboxSpriteIds - ldr r4, _080362D4 @ =gActiveBattler - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080362D8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080362C4 - ldr r0, _080362DC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080362B8 - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_080362B8: - ldr r0, _080362E0 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080362E4 @ =sub_80362E8 - str r0, [r1] -_080362C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080362CC: .4byte gSprites -_080362D0: .4byte gHealthboxSpriteIds -_080362D4: .4byte gActiveBattler -_080362D8: .4byte SpriteCallbackDummy -_080362DC: .4byte gBattleSpritesDataPtr -_080362E0: .4byte gBattlerControllerFuncs -_080362E4: .4byte sub_80362E8 - thumb_func_end sub_8036278 - - thumb_func_start sub_80362E8 -sub_80362E8: @ 80362E8 - push {lr} - ldr r0, _08036324 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08036328 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08036320 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _08036320 - ldr r0, _0803632C @ =gMPlayInfo_BGM - ldr r1, _08036330 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - bl OpponentBufferExecCompleted -_08036320: - pop {r0} - bx r0 - .align 2, 0 -_08036324: .4byte gBattleSpritesDataPtr -_08036328: .4byte gActiveBattler -_0803632C: .4byte gMPlayInfo_BGM -_08036330: .4byte 0x0000ffff - thumb_func_end sub_80362E8 - - thumb_func_start sub_8036334 -sub_8036334: @ 8036334 - push {r4,r5,lr} - ldr r3, _080363E0 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldr r5, _080363E4 @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080363D8 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldrb r2, [r5] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _080363E8 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r1, _080363EC @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080363F0 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - ldr r4, _080363F4 @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _080363F8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080363FC @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r5] - bl CopyBattleSpriteInvisibility - ldr r1, _08036400 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08036404 @ =sub_8036278 - str r1, [r0] -_080363D8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080363E0: .4byte gBattleSpritesDataPtr -_080363E4: .4byte gActiveBattler -_080363E8: .4byte 0x000027f9 -_080363EC: .4byte gBattlerSpriteIds -_080363F0: .4byte gSprites -_080363F4: .4byte gHealthboxSpriteIds -_080363F8: .4byte gBattlerPartyIndexes -_080363FC: .4byte gEnemyParty -_08036400: .4byte gBattlerControllerFuncs -_08036404: .4byte sub_8036278 - thumb_func_end sub_8036334 - - thumb_func_start sub_8036408 -sub_8036408: @ 8036408 - push {r4-r6,lr} - ldr r6, _080364AC @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _080364B0 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0803643A - ldr r0, _080364B4 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080364B8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0803643A: - ldr r4, _080364BC @ =gSprites - ldr r0, _080364C0 @ =gUnknown_3004FFC - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _080364C4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080364A4 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080364A4 - adds r0, r3, r4 - bl DestroySprite - ldrb r4, [r5] - ldr r1, _080364B4 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080364B8 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r1, _080364C8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080364CC @ =sub_8036334 - str r1, [r0] -_080364A4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080364AC: .4byte gBattleSpritesDataPtr -_080364B0: .4byte gActiveBattler -_080364B4: .4byte gBattlerPartyIndexes -_080364B8: .4byte gEnemyParty -_080364BC: .4byte gSprites -_080364C0: .4byte gUnknown_3004FFC -_080364C4: .4byte SpriteCallbackDummy -_080364C8: .4byte gBattlerControllerFuncs -_080364CC: .4byte sub_8036334 - thumb_func_end sub_8036408 - - thumb_func_start sub_80364D0 -sub_80364D0: @ 80364D0 - push {lr} - ldr r0, _080364F8 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080364FC @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080364F2 - bl OpponentBufferExecCompleted -_080364F2: - pop {r0} - bx r0 - .align 2, 0 -_080364F8: .4byte gBattleSpritesDataPtr -_080364FC: .4byte gActiveBattler - thumb_func_end sub_80364D0 - - thumb_func_start sub_8036500 -sub_8036500: @ 8036500 - push {lr} - ldr r0, _08036528 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803652C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08036522 - bl OpponentBufferExecCompleted -_08036522: - pop {r0} - bx r0 - .align 2, 0 -_08036528: .4byte gBattleSpritesDataPtr -_0803652C: .4byte gActiveBattler - thumb_func_end sub_8036500 - - thumb_func_start OpponentBufferExecCompleted -OpponentBufferExecCompleted: @ 8036530 - ldr r1, _08036554 @ =gBattlerControllerFuncs - ldr r2, _08036558 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803655C @ =sub_8035A98 - str r1, [r0] - ldr r3, _08036560 @ =gBattleControllerExecFlags - ldr r1, _08036564 @ =gBitTable - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - bx lr - .align 2, 0 -_08036554: .4byte gBattlerControllerFuncs -_08036558: .4byte gActiveBattler -_0803655C: .4byte sub_8035A98 -_08036560: .4byte gBattleControllerExecFlags -_08036564: .4byte gBitTable - thumb_func_end OpponentBufferExecCompleted - - thumb_func_start OpponentHandleGetAttributes -OpponentHandleGetAttributes: @ 8036568 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _08036594 @ =gBattleBufferA - ldr r0, _08036598 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080365A0 - ldr r0, _0803659C @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl sub_80365DC - adds r6, r0, 0 - b _080365C2 - .align 2, 0 -_08036594: .4byte gBattleBufferA -_08036598: .4byte gActiveBattler -_0803659C: .4byte gBattlerPartyIndexes -_080365A0: - ldrb r4, [r1] - movs r5, 0 -_080365A4: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080365BA - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl sub_80365DC - adds r6, r0 -_080365BA: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _080365A4 -_080365C2: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl OpponentBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end OpponentHandleGetAttributes - - thumb_func_start sub_80365DC -sub_80365DC: @ 80365DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _08036610 @ =gBattleBufferA - ldr r3, _08036614 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _08036606 - bl _08036D72 -_08036606: - lsls r0, 2 - ldr r1, _08036618 @ =_0803661C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08036610: .4byte gBattleBufferA -_08036614: .4byte gActiveBattler -_08036618: .4byte _0803661C - .align 2, 0 -_0803661C: - .4byte _0803670C - .4byte _08036930 - .4byte _08036940 - .4byte _08036950 - .4byte _080369B8 - .4byte _080369B8 - .4byte _080369B8 - .4byte _080369B8 - .4byte _080369D4 - .4byte _08036A10 - .4byte _08036A10 - .4byte _08036A10 - .4byte _08036A10 - .4byte _08036D72 - .4byte _08036D72 - .4byte _08036D72 - .4byte _08036D72 - .4byte _08036A2C - .4byte _08036A3C - .4byte _08036A6C - .4byte _08036A7C - .4byte _08036A8C - .4byte _08036A9C - .4byte _08036AAC - .4byte _08036ABC - .4byte _08036ACC - .4byte _08036ADC - .4byte _08036AEC - .4byte _08036AFC - .4byte _08036B0C - .4byte _08036B1C - .4byte _08036B2C - .4byte _08036B7C - .4byte _08036B8C - .4byte _08036B9C - .4byte _08036BAC - .4byte _08036BBC - .4byte _08036BCC - .4byte _08036BDC - .4byte _08036BEC - .4byte _08036BFC - .4byte _08036C30 - .4byte _08036C40 - .4byte _08036C50 - .4byte _08036C60 - .4byte _08036C70 - .4byte _08036C80 - .4byte _08036C90 - .4byte _08036CA0 - .4byte _08036CC0 - .4byte _08036CD0 - .4byte _08036CE0 - .4byte _08036CF0 - .4byte _08036D00 - .4byte _08036D10 - .4byte _08036D20 - .4byte _08036D30 - .4byte _08036D40 - .4byte _08036D50 - .4byte _08036D60 -_0803670C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08036920 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_08036758: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08036758 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08036920 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _08036924 @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _08036928 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _0803692C @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_08036910: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _08036910 - b _08036D72 - .align 2, 0 -_08036920: .4byte gEnemyParty -_08036924: .4byte 0xfffffc1f -_08036928: .4byte 0xfff07fff -_0803692C: .4byte 0xfffffe0f -_08036930: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803693C @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - b _08036CAA - .align 2, 0 -_0803693C: .4byte gEnemyParty -_08036940: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803694C @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - b _08036CAA - .align 2, 0 -_0803694C: .4byte gEnemyParty -_08036950: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080369B4 @ =gEnemyParty - adds r4, r1, r0 - mov r8, r9 -_08036966: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _08036966 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080369B4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_080369A4: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _080369A4 - b _08036D72 - .align 2, 0 -_080369B4: .4byte gEnemyParty -_080369B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080369D0 @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _08036CAA - .align 2, 0 -_080369D0: .4byte gEnemyParty -_080369D4: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _08036A0C @ =gEnemyParty - mov r8, r2 -_080369E0: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _080369E0 - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A0C @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _08036D72 - .align 2, 0 -_08036A0C: .4byte gEnemyParty -_08036A10: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A28 @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _08036D6A - .align 2, 0 -_08036A28: .4byte gEnemyParty -_08036A2C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A38 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1 - b _08036A46 - .align 2, 0 -_08036A38: .4byte gEnemyParty -_08036A3C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A68 @ =gEnemyParty - adds r0, r1 - movs r1, 0x19 -_08036A46: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _08036D72 - .align 2, 0 -_08036A68: .4byte gEnemyParty -_08036A6C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A78 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1A - b _08036D6A - .align 2, 0 -_08036A78: .4byte gEnemyParty -_08036A7C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A88 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1B - b _08036D6A - .align 2, 0 -_08036A88: .4byte gEnemyParty -_08036A8C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036A98 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1C - b _08036D6A - .align 2, 0 -_08036A98: .4byte gEnemyParty -_08036A9C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AA8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1D - b _08036D6A - .align 2, 0 -_08036AA8: .4byte gEnemyParty -_08036AAC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AB8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1E - b _08036D6A - .align 2, 0 -_08036AB8: .4byte gEnemyParty -_08036ABC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AC8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x1F - b _08036D6A - .align 2, 0 -_08036AC8: .4byte gEnemyParty -_08036ACC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AD8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x20 - b _08036D6A - .align 2, 0 -_08036AD8: .4byte gEnemyParty -_08036ADC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AE8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x22 - b _08036D6A - .align 2, 0 -_08036AE8: .4byte gEnemyParty -_08036AEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036AF8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x23 - b _08036D6A - .align 2, 0 -_08036AF8: .4byte gEnemyParty -_08036AFC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036B08 @ =gEnemyParty - adds r0, r1 - movs r1, 0x24 - b _08036D6A - .align 2, 0 -_08036B08: .4byte gEnemyParty -_08036B0C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036B18 @ =gEnemyParty - adds r0, r1 - movs r1, 0x25 - b _08036D6A - .align 2, 0 -_08036B18: .4byte gEnemyParty -_08036B1C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036B28 @ =gEnemyParty - adds r0, r1 - movs r1, 0x26 - b _08036D6A - .align 2, 0 -_08036B28: .4byte gEnemyParty -_08036B2C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08036B78 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _08036D72 - .align 2, 0 -_08036B78: .4byte gEnemyParty -_08036B7C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036B88 @ =gEnemyParty - adds r0, r1 - movs r1, 0x27 - b _08036D6A - .align 2, 0 -_08036B88: .4byte gEnemyParty -_08036B8C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036B98 @ =gEnemyParty - adds r0, r1 - movs r1, 0x28 - b _08036D6A - .align 2, 0 -_08036B98: .4byte gEnemyParty -_08036B9C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BA8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x29 - b _08036D6A - .align 2, 0 -_08036BA8: .4byte gEnemyParty -_08036BAC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BB8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2A - b _08036D6A - .align 2, 0 -_08036BB8: .4byte gEnemyParty -_08036BBC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BC8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2B - b _08036D6A - .align 2, 0 -_08036BC8: .4byte gEnemyParty -_08036BCC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BD8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2C - b _08036D6A - .align 2, 0 -_08036BD8: .4byte gEnemyParty -_08036BDC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BE8 @ =gEnemyParty - adds r0, r1 - movs r1, 0 - b _08036C06 - .align 2, 0 -_08036BE8: .4byte gEnemyParty -_08036BEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036BF8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x9 - b _08036CAA - .align 2, 0 -_08036BF8: .4byte gEnemyParty -_08036BFC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C2C @ =gEnemyParty - adds r0, r1 - movs r1, 0x37 -_08036C06: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _08036D72 - .align 2, 0 -_08036C2C: .4byte gEnemyParty -_08036C30: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C3C @ =gEnemyParty - adds r0, r1 - movs r1, 0x38 - b _08036D6A - .align 2, 0 -_08036C3C: .4byte gEnemyParty -_08036C40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C4C @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - b _08036CAA - .align 2, 0 -_08036C4C: .4byte gEnemyParty -_08036C50: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C5C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - b _08036CAA - .align 2, 0 -_08036C5C: .4byte gEnemyParty -_08036C60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C6C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3B - b _08036CAA - .align 2, 0 -_08036C6C: .4byte gEnemyParty -_08036C70: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C7C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3C - b _08036CAA - .align 2, 0 -_08036C7C: .4byte gEnemyParty -_08036C80: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C8C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3D - b _08036CAA - .align 2, 0 -_08036C8C: .4byte gEnemyParty -_08036C90: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036C9C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3E - b _08036CAA - .align 2, 0 -_08036C9C: .4byte gEnemyParty -_08036CA0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036CBC @ =gEnemyParty - adds r0, r1 - movs r1, 0x3F -_08036CAA: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _08036D72 - .align 2, 0 -_08036CBC: .4byte gEnemyParty -_08036CC0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036CCC @ =gEnemyParty - adds r0, r1 - movs r1, 0x16 - b _08036D6A - .align 2, 0 -_08036CCC: .4byte gEnemyParty -_08036CD0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036CDC @ =gEnemyParty - adds r0, r1 - movs r1, 0x17 - b _08036D6A - .align 2, 0 -_08036CDC: .4byte gEnemyParty -_08036CE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036CEC @ =gEnemyParty - adds r0, r1 - movs r1, 0x18 - b _08036D6A - .align 2, 0 -_08036CEC: .4byte gEnemyParty -_08036CF0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036CFC @ =gEnemyParty - adds r0, r1 - movs r1, 0x21 - b _08036D6A - .align 2, 0 -_08036CFC: .4byte gEnemyParty -_08036D00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D0C @ =gEnemyParty - adds r0, r1 - movs r1, 0x2F - b _08036D6A - .align 2, 0 -_08036D0C: .4byte gEnemyParty -_08036D10: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D1C @ =gEnemyParty - adds r0, r1 - movs r1, 0x30 - b _08036D6A - .align 2, 0 -_08036D1C: .4byte gEnemyParty -_08036D20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D2C @ =gEnemyParty - adds r0, r1 - movs r1, 0x32 - b _08036D6A - .align 2, 0 -_08036D2C: .4byte gEnemyParty -_08036D30: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D3C @ =gEnemyParty - adds r0, r1 - movs r1, 0x33 - b _08036D6A - .align 2, 0 -_08036D3C: .4byte gEnemyParty -_08036D40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D4C @ =gEnemyParty - adds r0, r1 - movs r1, 0x34 - b _08036D6A - .align 2, 0 -_08036D4C: .4byte gEnemyParty -_08036D50: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D5C @ =gEnemyParty - adds r0, r1 - movs r1, 0x35 - b _08036D6A - .align 2, 0 -_08036D5C: .4byte gEnemyParty -_08036D60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08036D84 @ =gEnemyParty - adds r0, r1 - movs r1, 0x36 -_08036D6A: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_08036D72: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08036D84: .4byte gEnemyParty - thumb_func_end sub_80365DC - - thumb_func_start OpponentHandlecmd1 -OpponentHandlecmd1: @ 8036D88 - push {r4-r7,lr} - sub sp, 0x58 - ldr r2, _08036E00 @ =gBattlerPartyIndexes - ldr r5, _08036E04 @ =gActiveBattler - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r3, _08036E08 @ =gBattleBufferA - lsls r1, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r2, [r0] - ldr r0, _08036E0C @ =gEnemyParty - adds r0, r2, r0 - adds r6, r4, r0 - mov r0, sp - adds r4, r0, r2 - movs r2, 0 - adds r0, r3, 0x2 - adds r1, r0 - adds r7, r5, 0 - mov r12, r3 - ldrb r1, [r1] - cmp r2, r1 - bcs _08036DDE - adds r3, r0, 0 -_08036DC4: - adds r1, r4, r2 - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3 - ldrb r0, [r0] - cmp r2, r0 - bcc _08036DC4 -_08036DDE: - ldrb r0, [r7] - lsls r0, 9 - mov r1, r12 - adds r1, 0x2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - adds r2, r4, 0 - bl BtlController_EmitDataTransfer - bl OpponentBufferExecCompleted - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08036E00: .4byte gBattlerPartyIndexes -_08036E04: .4byte gActiveBattler -_08036E08: .4byte gBattleBufferA -_08036E0C: .4byte gEnemyParty - thumb_func_end OpponentHandlecmd1 - - thumb_func_start OpponentHandleSetAttributes -OpponentHandleSetAttributes: @ 8036E10 - push {r4,r5,lr} - ldr r1, _08036E34 @ =gBattleBufferA - ldr r0, _08036E38 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _08036E40 - ldr r0, _08036E3C @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl sub_8036E68 - b _08036E5E - .align 2, 0 -_08036E34: .4byte gBattleBufferA -_08036E38: .4byte gActiveBattler -_08036E3C: .4byte gBattlerPartyIndexes -_08036E40: - ldrb r4, [r1] - movs r5, 0 -_08036E44: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08036E52 - adds r0, r5, 0 - bl sub_8036E68 -_08036E52: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08036E44 -_08036E5E: - bl OpponentBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end OpponentHandleSetAttributes - - thumb_func_start sub_8036E68 -sub_8036E68: @ 8036E68 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x38 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r3, _08036EA0 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - ldr r2, _08036EA4 @ =gUnknown_2022BC7 - adds r4, r0, r2 - adds r7, r4, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r6, r3, 0 - adds r3, r2, 0 - cmp r0, 0x3B - bls _08036E96 - bl _08037774 -_08036E96: - lsls r0, 2 - ldr r1, _08036EA8 @ =_08036EAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08036EA0: .4byte gActiveBattler -_08036EA4: .4byte gUnknown_2022BC7 -_08036EA8: .4byte _08036EAC - .align 2, 0 -_08036EAC: - .4byte _08036F9C - .4byte _08037134 - .4byte _08037150 - .4byte _0803716C - .4byte _080371C0 - .4byte _080371C0 - .4byte _080371C0 - .4byte _080371C0 - .4byte _080371E0 - .4byte _08037248 - .4byte _08037248 - .4byte _08037248 - .4byte _08037248 - .4byte _08037774 - .4byte _08037774 - .4byte _08037774 - .4byte _08037774 - .4byte _08037270 - .4byte _0803728C - .4byte _080372A8 - .4byte _080372C4 - .4byte _080372E0 - .4byte _080372FC - .4byte _08037318 - .4byte _08037334 - .4byte _08037350 - .4byte _0803736C - .4byte _08037388 - .4byte _080373A4 - .4byte _080373C0 - .4byte _080373DC - .4byte _080373F8 - .4byte _0803746C - .4byte _08037488 - .4byte _080374A4 - .4byte _080374C0 - .4byte _080374DC - .4byte _080374F8 - .4byte _08037514 - .4byte _08037530 - .4byte _0803754C - .4byte _08037568 - .4byte _08037584 - .4byte _080375A0 - .4byte _080375BC - .4byte _080375D8 - .4byte _080375F4 - .4byte _08037610 - .4byte _0803762C - .4byte _08037648 - .4byte _08037664 - .4byte _08037680 - .4byte _0803769C - .4byte _080376B8 - .4byte _080376D4 - .4byte _080376F0 - .4byte _0803770C - .4byte _08037728 - .4byte _08037744 - .4byte _08037760 -_08036F9C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08037130 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r7, 0 - bl SetMonData - adds r2, r7, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r7 - mov r10, r0 - adds r0, r7, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r7, 0x2 - str r0, [sp, 0x4] - adds r0, r7, 0x4 - str r0, [sp, 0x8] - adds r0, r7, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r6, r7, 0 - adds r6, 0x24 - adds r4, r7, 0 - adds r4, 0xC -_08037002: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _08037002 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08037130 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r7, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r7, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _08037774 - .align 2, 0 -_08037130: .4byte gEnemyParty -_08037134: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803714C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xB - bl SetMonData - b _08037774 - .align 2, 0 -_0803714C: .4byte gEnemyParty -_08037150: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037168 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xC - bl SetMonData - b _08037774 - .align 2, 0 -_08037168: .4byte gEnemyParty -_0803716C: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r4 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080371BC @ =gEnemyParty - adds r7, r1, r0 - adds r6, r4, 0 - adds r6, 0x8 -_08037184: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _08037184 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080371BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _08037774 - .align 2, 0 -_080371BC: .4byte gEnemyParty -_080371C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080371D8 @ =gEnemyParty - adds r0, r1 - ldr r3, _080371DC @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _0803725E - .align 2, 0 -_080371D8: .4byte gEnemyParty -_080371DC: .4byte gBattleBufferA -_080371E0: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08037244 @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x11 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _08037774 - .align 2, 0 -_08037244: .4byte gEnemyParty -_08037248: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037268 @ =gEnemyParty - adds r0, r1 - ldr r3, _0803726C @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_0803725E: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _08037774 - .align 2, 0 -_08037268: .4byte gEnemyParty -_0803726C: .4byte gBattleBufferA -_08037270: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037288 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1 - bl SetMonData - b _08037774 - .align 2, 0 -_08037288: .4byte gEnemyParty -_0803728C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080372A4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x19 - bl SetMonData - b _08037774 - .align 2, 0 -_080372A4: .4byte gEnemyParty -_080372A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080372C0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1A - bl SetMonData - b _08037774 - .align 2, 0 -_080372C0: .4byte gEnemyParty -_080372C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080372DC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1B - bl SetMonData - b _08037774 - .align 2, 0 -_080372DC: .4byte gEnemyParty -_080372E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080372F8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1C - bl SetMonData - b _08037774 - .align 2, 0 -_080372F8: .4byte gEnemyParty -_080372FC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037314 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1D - bl SetMonData - b _08037774 - .align 2, 0 -_08037314: .4byte gEnemyParty -_08037318: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037330 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1E - bl SetMonData - b _08037774 - .align 2, 0 -_08037330: .4byte gEnemyParty -_08037334: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803734C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1F - bl SetMonData - b _08037774 - .align 2, 0 -_0803734C: .4byte gEnemyParty -_08037350: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037368 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x20 - bl SetMonData - b _08037774 - .align 2, 0 -_08037368: .4byte gEnemyParty -_0803736C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037384 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x22 - bl SetMonData - b _08037774 - .align 2, 0 -_08037384: .4byte gEnemyParty -_08037388: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080373A0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x23 - bl SetMonData - b _08037774 - .align 2, 0 -_080373A0: .4byte gEnemyParty -_080373A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080373BC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x24 - bl SetMonData - b _08037774 - .align 2, 0 -_080373BC: .4byte gEnemyParty -_080373C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080373D8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x25 - bl SetMonData - b _08037774 - .align 2, 0 -_080373D8: .4byte gEnemyParty -_080373DC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080373F4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x26 - bl SetMonData - b _08037774 - .align 2, 0 -_080373F4: .4byte gEnemyParty -_080373F8: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08037468 @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x27 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _08037506 - .align 2, 0 -_08037468: .4byte gEnemyParty -_0803746C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037484 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x27 - bl SetMonData - b _08037774 - .align 2, 0 -_08037484: .4byte gEnemyParty -_08037488: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080374A0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x28 - bl SetMonData - b _08037774 - .align 2, 0 -_080374A0: .4byte gEnemyParty -_080374A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080374BC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x29 - bl SetMonData - b _08037774 - .align 2, 0 -_080374BC: .4byte gEnemyParty -_080374C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080374D8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2A - bl SetMonData - b _08037774 - .align 2, 0 -_080374D8: .4byte gEnemyParty -_080374DC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080374F4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2B - bl SetMonData - b _08037774 - .align 2, 0 -_080374F4: .4byte gEnemyParty -_080374F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037510 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 -_08037506: - movs r1, 0x2C - bl SetMonData - b _08037774 - .align 2, 0 -_08037510: .4byte gEnemyParty -_08037514: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803752C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0 - bl SetMonData - b _08037774 - .align 2, 0 -_0803752C: .4byte gEnemyParty -_08037530: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037548 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x9 - bl SetMonData - b _08037774 - .align 2, 0 -_08037548: .4byte gEnemyParty -_0803754C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037564 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x37 - bl SetMonData - b _08037774 - .align 2, 0 -_08037564: .4byte gEnemyParty -_08037568: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037580 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x38 - bl SetMonData - b _08037774 - .align 2, 0 -_08037580: .4byte gEnemyParty -_08037584: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803759C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x39 - bl SetMonData - b _08037774 - .align 2, 0 -_0803759C: .4byte gEnemyParty -_080375A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080375B8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3A - bl SetMonData - b _08037774 - .align 2, 0 -_080375B8: .4byte gEnemyParty -_080375BC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080375D4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3B - bl SetMonData - b _08037774 - .align 2, 0 -_080375D4: .4byte gEnemyParty -_080375D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080375F0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3C - bl SetMonData - b _08037774 - .align 2, 0 -_080375F0: .4byte gEnemyParty -_080375F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803760C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3D - bl SetMonData - b _08037774 - .align 2, 0 -_0803760C: .4byte gEnemyParty -_08037610: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037628 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3E - bl SetMonData - b _08037774 - .align 2, 0 -_08037628: .4byte gEnemyParty -_0803762C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037644 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3F - bl SetMonData - b _08037774 - .align 2, 0 -_08037644: .4byte gEnemyParty -_08037648: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037660 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x16 - bl SetMonData - b _08037774 - .align 2, 0 -_08037660: .4byte gEnemyParty -_08037664: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803767C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x17 - bl SetMonData - b _08037774 - .align 2, 0 -_0803767C: .4byte gEnemyParty -_08037680: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037698 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x18 - bl SetMonData - b _08037774 - .align 2, 0 -_08037698: .4byte gEnemyParty -_0803769C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080376B4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x21 - bl SetMonData - b _08037774 - .align 2, 0 -_080376B4: .4byte gEnemyParty -_080376B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080376D0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2F - bl SetMonData - b _08037774 - .align 2, 0 -_080376D0: .4byte gEnemyParty -_080376D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080376EC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x30 - bl SetMonData - b _08037774 - .align 2, 0 -_080376EC: .4byte gEnemyParty -_080376F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037708 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x32 - bl SetMonData - b _08037774 - .align 2, 0 -_08037708: .4byte gEnemyParty -_0803770C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037724 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x33 - bl SetMonData - b _08037774 - .align 2, 0 -_08037724: .4byte gEnemyParty -_08037728: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037740 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x34 - bl SetMonData - b _08037774 - .align 2, 0 -_08037740: .4byte gEnemyParty -_08037744: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803775C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x35 - bl SetMonData - b _08037774 - .align 2, 0 -_0803775C: .4byte gEnemyParty -_08037760: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08037784 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x36 - bl SetMonData -_08037774: - add sp, 0x38 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08037784: .4byte gEnemyParty - thumb_func_end sub_8036E68 - - thumb_func_start OpponentHandlecmd3 -OpponentHandlecmd3: @ 8037788 - push {r4-r7,lr} - ldr r1, _080377EC @ =gBattlerPartyIndexes - ldr r7, _080377F0 @ =gActiveBattler - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _080377F4 @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _080377F8 @ =gEnemyParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _080377E0 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_080377BE: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _080377BE -_080377E0: - bl OpponentBufferExecCompleted - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080377EC: .4byte gBattlerPartyIndexes -_080377F0: .4byte gActiveBattler -_080377F4: .4byte gBattleBufferA -_080377F8: .4byte gEnemyParty - thumb_func_end OpponentHandlecmd3 - - thumb_func_start sub_80377FC -sub_80377FC: @ 80377FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _0803787C @ =gBattlerPartyIndexes - ldr r4, _08037880 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r6, _08037884 @ =gEnemyParty - adds r0, r6 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08037888 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _08037890 - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r5 - adds r0, r6 - bl DecompressGhostFrontPic - ldrb r0, [r4] - bl GetGhostSpriteDefault_Y - lsls r0, 24 - lsrs r5, r0, 24 - ldr r3, _0803788C @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r1, [r4] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r3] - ldrb r1, [r4] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] - b _080378AA - .align 2, 0 -_0803787C: .4byte gBattlerPartyIndexes -_08037880: .4byte gActiveBattler -_08037884: .4byte gEnemyParty -_08037888: .4byte gBattleTypeFlags -_0803788C: .4byte gBattleSpritesDataPtr -_08037890: - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r5 - adds r0, r6 - bl BattleLoadOpponentMonSpriteGfx - ldrb r0, [r4] - bl GetBattlerSpriteDefault_Y - lsls r0, 24 - lsrs r5, r0, 24 -_080378AA: - ldr r7, _0803799C @ =gActiveBattler - ldrb r0, [r7] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r6, _080379A0 @ =gMultiuseSpriteTemplate - ldrb r0, [r7] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r7] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl CreateSprite - ldr r4, _080379A4 @ =gBattlerSpriteIds - ldrb r1, [r7] - adds r1, r4 - strb r0, [r1] - ldr r5, _080379A8 @ =gSprites - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080379AC @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r2, [r7] - adds r0, r2, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x2E] - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r3, [r7] - adds r0, r3, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r2, [r7] - adds r4, r2, r4 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080379B0 @ =gBattleMonForms - adds r2, r1 - ldrb r1, [r2] - bl StartSpriteAnim - ldr r0, _080379B4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _08037986 - ldrb r4, [r7] - ldr r1, _080379B8 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080379BC @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback -_08037986: - ldr r0, _080379C0 @ =gBattlerControllerFuncs - ldrb r1, [r7] - lsls r1, 2 - adds r1, r0 - ldr r0, _080379C4 @ =sub_8035FE8 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803799C: .4byte gActiveBattler -_080379A0: .4byte gMultiuseSpriteTemplate -_080379A4: .4byte gBattlerSpriteIds -_080379A8: .4byte gSprites -_080379AC: .4byte 0x0000ff10 -_080379B0: .4byte gBattleMonForms -_080379B4: .4byte gBattleTypeFlags -_080379B8: .4byte gBattlerPartyIndexes -_080379BC: .4byte gEnemyParty -_080379C0: .4byte gBattlerControllerFuncs -_080379C4: .4byte sub_8035FE8 - thumb_func_end sub_80377FC - - thumb_func_start OpponentHandleSwitchInAnim -OpponentHandleSwitchInAnim: @ 80379C8 - push {r4,lr} - ldr r4, _08037A10 @ =gActiveBattler - ldrb r0, [r4] - ldr r1, _08037A14 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - movs r1, 0x6 - strb r1, [r0] - ldr r1, _08037A18 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r2, r0, 1 - adds r2, r1 - ldr r3, _08037A1C @ =gBattleBufferA - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldrb r0, [r4] - lsls r1, r0, 9 - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - bl sub_8037A28 - ldr r1, _08037A20 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037A24 @ =sub_8036408 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08037A10: .4byte gActiveBattler -_08037A14: .4byte gBattleStruct -_08037A18: .4byte gBattlerPartyIndexes -_08037A1C: .4byte gBattleBufferA -_08037A20: .4byte gBattlerControllerFuncs -_08037A24: .4byte sub_8036408 - thumb_func_end OpponentHandleSwitchInAnim - - thumb_func_start sub_8037A28 -sub_8037A28: @ 8037A28 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl ClearTemporarySpeciesSpriteData - ldr r0, _08037B84 @ =gBattlerPartyIndexes - lsls r4, r6, 1 - adds r4, r0 - ldr r0, _08037B88 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0x64 - mov r9, r1 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - ldr r5, _08037B8C @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08037B90 @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _08037B94 @ =gUnknown_3004FFC - mov r10, r1 - add r10, r6 - mov r1, r10 - strb r0, [r1] - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r5 - adds r1, r6, 0 - bl BattleLoadOpponentMonSpriteGfx - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _08037B98 @ =gMultiuseSpriteTemplate - mov r9, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r9 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _08037B9C @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _08037BA0 @ =gSprites - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - mov r0, r10 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08037BA4 @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08037BA8 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFE - bl DoPokeballSendOutAnimation - mov r1, r10 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037B84: .4byte gBattlerPartyIndexes -_08037B88: .4byte gBattleBufferA -_08037B8C: .4byte gEnemyParty -_08037B90: .4byte sub_8033E3C -_08037B94: .4byte gUnknown_3004FFC -_08037B98: .4byte gMultiuseSpriteTemplate -_08037B9C: .4byte gBattlerSpriteIds -_08037BA0: .4byte gSprites -_08037BA4: .4byte gBattleMonForms -_08037BA8: .4byte SpriteCallbackDummy - thumb_func_end sub_8037A28 - - thumb_func_start sub_8037BAC -sub_8037BAC: @ 8037BAC - push {r4-r6,lr} - ldr r1, _08037BE0 @ =gBattleBufferA - ldr r6, _08037BE4 @ =gActiveBattler - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _08037BF4 - ldr r0, _08037BE8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _08037BEC @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037BF0 @ =sub_8037C44 - str r1, [r0] - b _08037C30 - .align 2, 0 -_08037BE0: .4byte gBattleBufferA -_08037BE4: .4byte gActiveBattler -_08037BE8: .4byte gBattleSpritesDataPtr -_08037BEC: .4byte gBattlerControllerFuncs -_08037BF0: .4byte sub_8037C44 -_08037BF4: - ldr r5, _08037C38 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08037C3C @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl HideBattlerShadowSprite - ldr r1, _08037C40 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OpponentBufferExecCompleted -_08037C30: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037C38: .4byte gBattlerSpriteIds -_08037C3C: .4byte gSprites -_08037C40: .4byte gHealthboxSpriteIds - thumb_func_end sub_8037BAC - - thumb_func_start sub_8037C44 -sub_8037C44: @ 8037C44 - push {r4-r6,lr} - ldr r6, _08037C64 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _08037C68 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r4, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _08037C6C - cmp r0, 0x1 - beq _08037C9A - b _08037CC2 - .align 2, 0 -_08037C64: .4byte gBattleSpritesDataPtr -_08037C68: .4byte gActiveBattler -_08037C6C: - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08037C86 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_08037C86: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _08037CC2 -_08037C9A: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08037CC2 - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x2 - bl InitAndLaunchSpecialAnimation - ldr r1, _08037CC8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037CCC @ =sub_8036170 - str r1, [r0] -_08037CC2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037CC8: .4byte gBattlerControllerFuncs -_08037CCC: .4byte sub_8036170 - thumb_func_end sub_8037C44 - - thumb_func_start sub_8037CD0 -sub_8037CD0: @ 8037CD0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r3, _08037CEC @ =gTrainerBattleOpponent_A - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08037CF0 - bl GetSecretBaseTrainerPicIndex - b _08037D26 - .align 2, 0 -_08037CEC: .4byte gTrainerBattleOpponent_A -_08037CF0: - ldr r0, _08037D04 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08037D08 - bl sub_80E6078 - b _08037D26 - .align 2, 0 -_08037D04: .4byte gBattleTypeFlags -_08037D08: - movs r0, 0x80 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - beq _08037D18 - bl sub_815DA3C - b _08037D26 -_08037D18: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _08037D2C - bl GetEreaderTrainerFrontSpriteId -_08037D26: - lsls r0, 24 - lsrs r0, 24 - b _08037D3A -_08037D2C: - ldr r2, _08037E6C @ =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x3] -_08037D3A: - mov r9, r0 - ldr r0, _08037E70 @ =gActiveBattler - mov r8, r0 - ldrb r1, [r0] - mov r0, r9 - bl DecompressTrainerFrontPic - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r5, _08037E74 @ =gMultiuseSpriteTemplate - ldr r1, _08037E78 @ =gUnknown_823932C - mov r2, r9 - lsls r0, r2, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 14 - adds r4, r0 - asrs r4, 16 - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - movs r1, 0xB0 - adds r2, r4, 0 - bl CreateSprite - ldr r5, _08037E7C @ =gBattlerSpriteIds - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - strb r0, [r1] - ldr r4, _08037E80 @ =gSprites - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08037E84 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldr r0, _08037E88 @ =gTrainerFrontPicPaletteTable - mov r1, r9 - lsls r6, r1, 3 - adds r0, r6, r0 - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r4 - lsls r0, 4 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0x5] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r1, 0x38] - ldr r0, _08037E8C @ =gTrainerFrontPicTable - adds r6, r0 - ldrh r0, [r6, 0x6] - bl GetSpriteTileStartByTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _08037E90 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08037E94 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r9 - strh r2, [r0, 0x6] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _08037E98 @ =sub_8033EEC - str r1, [r0] - ldr r1, _08037E9C @ =gBattlerControllerFuncs - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08037EA0 @ =sub_8035AE8 - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08037E6C: .4byte gTrainers -_08037E70: .4byte gActiveBattler -_08037E74: .4byte gMultiuseSpriteTemplate -_08037E78: .4byte gUnknown_823932C -_08037E7C: .4byte gBattlerSpriteIds -_08037E80: .4byte gSprites -_08037E84: .4byte 0x0000ff10 -_08037E88: .4byte gTrainerFrontPicPaletteTable -_08037E8C: .4byte gTrainerFrontPicTable -_08037E90: .4byte 0x000003ff -_08037E94: .4byte 0xfffffc00 -_08037E98: .4byte sub_8033EEC -_08037E9C: .4byte gBattlerControllerFuncs -_08037EA0: .4byte sub_8035AE8 - thumb_func_end sub_8037CD0 - - thumb_func_start sub_8037EA4 -sub_8037EA4: @ 8037EA4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r3, _08037EC0 @ =gTrainerBattleOpponent_A - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _08037EC4 - bl GetSecretBaseTrainerPicIndex - b _08037EFA - .align 2, 0 -_08037EC0: .4byte gTrainerBattleOpponent_A -_08037EC4: - ldr r0, _08037ED8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08037EDC - bl sub_80E6078 - b _08037EFA - .align 2, 0 -_08037ED8: .4byte gBattleTypeFlags -_08037EDC: - movs r0, 0x80 - lsls r0, 12 - ands r0, r1 - cmp r0, 0 - beq _08037EEC - bl sub_815DA3C - b _08037EFA -_08037EEC: - movs r0, 0x80 - lsls r0, 4 - ands r1, r0 - cmp r1, 0 - beq _08037F00 - bl GetEreaderTrainerFrontSpriteId -_08037EFA: - lsls r0, 24 - lsrs r0, 24 - b _08037F0E -_08037F00: - ldr r2, _08038040 @ =gTrainers - ldrh r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x3] -_08037F0E: - mov r9, r0 - ldr r0, _08038044 @ =gActiveBattler - mov r8, r0 - ldrb r1, [r0] - mov r0, r9 - bl DecompressTrainerFrontPic - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _08038048 @ =gMultiuseSpriteTemplate - ldr r2, _0803804C @ =gUnknown_823932C - mov r3, r9 - lsls r1, r3, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 14 - adds r2, r1 - asrs r2, 16 - movs r1, 0xB0 - movs r3, 0x1E - bl CreateSprite - ldr r5, _08038050 @ =gBattlerSpriteIds - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - strb r0, [r1] - ldr r4, _08038054 @ =gSprites - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x60 - strh r1, [r0, 0x24] - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x20] - adds r1, 0x20 - strh r1, [r0, 0x20] - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08038058 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldr r0, _0803805C @ =gTrainerFrontPicPaletteTable - mov r3, r9 - lsls r6, r3, 3 - adds r0, r6, r0 - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r4 - lsls r0, 4 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0x5] - mov r3, r8 - ldrb r0, [r3] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r1, 0x38] - ldr r0, _08038060 @ =gTrainerFrontPicTable - adds r6, r0 - ldrh r0, [r6, 0x6] - bl GetSpriteTileStartByTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _08038064 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08038068 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - mov r3, r8 - ldrb r0, [r3] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r1, r9 - strh r1, [r0, 0x6] - ldrb r0, [r3] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0803806C @ =sub_8033EEC - str r1, [r0] - ldr r1, _08038070 @ =gBattlerControllerFuncs - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038074 @ =sub_8035B20 - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08038040: .4byte gTrainers -_08038044: .4byte gActiveBattler -_08038048: .4byte gMultiuseSpriteTemplate -_0803804C: .4byte gUnknown_823932C -_08038050: .4byte gBattlerSpriteIds -_08038054: .4byte gSprites -_08038058: .4byte 0x0000fffe -_0803805C: .4byte gTrainerFrontPicPaletteTable -_08038060: .4byte gTrainerFrontPicTable -_08038064: .4byte 0x000003ff -_08038068: .4byte 0xfffffc00 -_0803806C: .4byte sub_8033EEC -_08038070: .4byte gBattlerControllerFuncs -_08038074: .4byte sub_8035B20 - thumb_func_end sub_8037EA4 - - thumb_func_start sub_8038078 -sub_8038078: @ 8038078 - push {r4-r6,lr} - ldr r6, _08038108 @ =gBattlerSpriteIds - ldr r4, _0803810C @ =gActiveBattler - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08038110 @ =gSprites - adds r0, r5 - bl oamt_add_pos2_onto_pos1 - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08038114 @ =sub_8075590 - str r1, [r0] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08038118 @ =SpriteCallbackDummy - bl StoreSpriteCallbackInData6 - ldr r1, _0803811C @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038120 @ =sub_8035B58 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08038108: .4byte gBattlerSpriteIds -_0803810C: .4byte gActiveBattler -_08038110: .4byte gSprites -_08038114: .4byte sub_8075590 -_08038118: .4byte SpriteCallbackDummy -_0803811C: .4byte gBattlerControllerFuncs -_08038120: .4byte sub_8035B58 - thumb_func_end sub_8038078 - - thumb_func_start sub_8038124 -sub_8038124: @ 8038124 - push {r4-r6,lr} - ldr r6, _08038170 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _08038174 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _08038178 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08038158 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_08038158: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _080381B4 - .align 2, 0 -_08038170: .4byte gBattleSpritesDataPtr -_08038174: .4byte gActiveBattler -_08038178: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080381B4 - strb r0, [r3, 0x4] - movs r0, 0x10 - movs r1, 0x3F - bl PlaySE12WithPanning - ldr r2, _080381BC @ =gSprites - ldr r1, _080381C0 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080381C4 @ =sub_8011EA0 - str r1, [r0] - ldr r1, _080381C8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080381CC @ =sub_803612C - str r1, [r0] -_080381B4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080381BC: .4byte gSprites -_080381C0: .4byte gBattlerSpriteIds -_080381C4: .4byte sub_8011EA0 -_080381C8: .4byte gBattlerControllerFuncs -_080381CC: .4byte sub_803612C - thumb_func_end sub_8038124 - - thumb_func_start sub_80381D0 -sub_80381D0: @ 80381D0 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80381D0 - - thumb_func_start sub_80381DC -sub_80381DC: @ 80381DC - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80381DC - - thumb_func_start sub_80381E8 -sub_80381E8: @ 80381E8 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80381E8 - - thumb_func_start sub_80381F4 -sub_80381F4: @ 80381F4 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80381F4 - - thumb_func_start sub_8038200 -sub_8038200: @ 8038200 - push {r4-r6,lr} - ldr r6, _080382E4 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _08038212 - b _08038326 -_08038212: - ldr r0, _080382E8 @ =gBattleBufferA - mov r12, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _080382EC @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _080382F0 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _080382F4 @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _080382F8 @ =gUnknown_2037EFE - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _080382FC @ =gUnknown_2037F00 - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _08038300 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _08038304 @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08038308 - bl OpponentBufferExecCompleted - b _08038326 - .align 2, 0 -_080382E4: .4byte gActiveBattler -_080382E8: .4byte gBattleBufferA -_080382EC: .4byte gAnimMoveTurn -_080382F0: .4byte gAnimMovePower -_080382F4: .4byte gAnimMoveDmg -_080382F8: .4byte gUnknown_2037EFE -_080382FC: .4byte gUnknown_2037F00 -_08038300: .4byte gAnimDisableStructPtr -_08038304: .4byte gTransformedPersonalities -_08038308: - ldr r0, _0803832C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _08038330 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038334 @ =sub_8038338 - str r1, [r0] -_08038326: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803832C: .4byte gBattleSpritesDataPtr -_08038330: .4byte gBattlerControllerFuncs -_08038334: .4byte sub_8038338 - thumb_func_end sub_8038200 - - thumb_func_start sub_8038338 -sub_8038338: @ 8038338 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08038384 @ =gBattleBufferA - ldr r6, _08038388 @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r10, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, r2, 0x2 - mov r9, r5 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r7, _0803838C @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _080383D0 - cmp r2, 0x1 - bgt _08038390 - cmp r2, 0 - beq _0803839A - b _080384AC - .align 2, 0 -_08038384: .4byte gBattleBufferA -_08038388: .4byte gActiveBattler -_0803838C: .4byte gBattleSpritesDataPtr -_08038390: - cmp r2, 0x2 - beq _080383FA - cmp r2, 0x3 - beq _08038470 - b _080384AC -_0803839A: - ldr r1, [r5] - lsls r0, r3, 2 - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _080383BC - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r6] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080383BC: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _080384AC -_080383D0: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080384AC - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _080384AC -_080383FA: - ldr r0, _08038460 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08038464 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080384AC - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08038448 - mov r0, r8 - cmp r0, 0x1 - bhi _08038448 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation - ldr r0, [r7] - ldrb r1, [r6] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_08038448: - ldr r0, _08038468 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803846C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _080384AC - .align 2, 0 -_08038460: .4byte gAnimScriptCallback -_08038464: .4byte gAnimScriptActive -_08038468: .4byte gBattleSpritesDataPtr -_0803846C: .4byte gActiveBattler -_08038470: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080384AC - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r10 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r9 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl OpponentBufferExecCompleted -_080384AC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8038338 - - thumb_func_start sub_80384BC -sub_80384BC: @ 80384BC - push {r4,lr} - ldr r0, _080384F0 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080384F4 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080384F8 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r1, _080384FC @ =gUnknown_2022BC6 - adds r4, r0, r1 - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _08038504 - ldr r0, _08038500 @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _0803850C - .align 2, 0 -_080384F0: .4byte gBattle_BG0_X -_080384F4: .4byte gBattle_BG0_Y -_080384F8: .4byte gActiveBattler -_080384FC: .4byte gUnknown_2022BC6 -_08038500: .4byte gDisplayedStringBattle -_08038504: - ldr r0, _08038534 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_0803850C: - ldr r0, _08038538 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08038568 - ldrh r1, [r4] - cmp r1, 0xE3 - beq _0803854C - ldr r0, _0803853C @ =0x0000017f - cmp r1, r0 - bne _08038568 - ldr r1, _08038540 @ =gBattlerControllerFuncs - ldr r0, _08038544 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038548 @ =sub_80E85C0 - b _08038574 - .align 2, 0 -_08038534: .4byte gDisplayedStringBattle -_08038538: .4byte gBattleTypeFlags -_0803853C: .4byte 0x0000017f -_08038540: .4byte gBattlerControllerFuncs -_08038544: .4byte gActiveBattler -_08038548: .4byte sub_80E85C0 -_0803854C: - ldr r1, _0803855C @ =gBattlerControllerFuncs - ldr r0, _08038560 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038564 @ =sub_80E8598 - b _08038574 - .align 2, 0 -_0803855C: .4byte gBattlerControllerFuncs -_08038560: .4byte gActiveBattler -_08038564: .4byte sub_80E8598 -_08038568: - ldr r1, _0803857C @ =gBattlerControllerFuncs - ldr r0, _08038580 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038584 @ =sub_80361E4 -_08038574: - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803857C: .4byte gBattlerControllerFuncs -_08038580: .4byte gActiveBattler -_08038584: .4byte sub_80361E4 - thumb_func_end sub_80384BC - - thumb_func_start sub_8038588 -sub_8038588: @ 8038588 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038588 - - thumb_func_start sub_8038594 -sub_8038594: @ 8038594 - push {lr} - bl sub_8039C84 - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038594 - - thumb_func_start sub_80385A4 -sub_80385A4: @ 80385A4 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_80385A4 - - thumb_func_start sub_80385B0 -sub_80385B0: @ 80385B0 - push {r4-r6,lr} - ldr r6, _080385E4 @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 9 - ldr r1, _080385E8 @ =gUnknown_2022BC8 - adds r5, r0, r1 - ldr r0, _080385EC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x93 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _08038680 - bl BattleAI_SetupAIData - bl BattleAI_GetAIActionToUse - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - beq _080385F0 - cmp r4, 0x5 - bne _080385FC - movs r0, 0x1 - movs r1, 0x4 - b _080385F4 - .align 2, 0 -_080385E4: .4byte gActiveBattler -_080385E8: .4byte gUnknown_2022BC8 -_080385EC: .4byte gBattleTypeFlags -_080385F0: - movs r0, 0x1 - movs r1, 0x3 -_080385F4: - movs r2, 0 - bl BtlController_EmitTwoReturnValues - b _08038668 -_080385FC: - ldr r3, _08038670 @ =gBattleMoves - lsls r0, r4, 1 - adds r2, r5, r0 - ldrh r1, [r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x6] - movs r0, 0x12 - ands r0, r1 - cmp r0, 0 - beq _0803861C - ldr r1, _08038674 @ =gBattlerTarget - ldrb r0, [r6] - strb r0, [r1] -_0803861C: - ldrh r1, [r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x6] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08038656 - movs r0, 0 - bl GetBattlerAtPosition - ldr r5, _08038674 @ =gBattlerTarget - strb r0, [r5] - ldr r0, _08038678 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0803867C @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08038656 - movs r0, 0x2 - bl GetBattlerAtPosition - strb r0, [r5] -_08038656: - ldr r0, _08038674 @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - movs r0, 0x1 - movs r1, 0xA - adds r2, r4, 0 - bl BtlController_EmitTwoReturnValues -_08038668: - bl OpponentBufferExecCompleted - b _08038712 - .align 2, 0 -_08038670: .4byte gBattleMoves -_08038674: .4byte gBattlerTarget -_08038678: .4byte gAbsentBattlerFlags -_0803867C: .4byte gBitTable -_08038680: - movs r6, 0x3 -_08038682: - bl Random - adds r4, r0, 0 - ands r4, r6 - lsls r0, r4, 1 - adds r0, r5, r0 - ldrh r2, [r0] - cmp r2, 0 - beq _08038682 - ldr r1, _080386BC @ =gBattleMoves - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x6] - movs r0, 0x12 - ands r0, r1 - cmp r0, 0 - beq _080386C4 - ldr r0, _080386C0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - movs r0, 0x1 - movs r1, 0xA - adds r2, r4, 0 - bl BtlController_EmitTwoReturnValues - b _0803870E - .align 2, 0 -_080386BC: .4byte gBattleMoves -_080386C0: .4byte gActiveBattler -_080386C4: - ldr r0, _080386F4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080386F8 - bl Random - movs r1, 0x2 - ands r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 16 - orrs r2, r4 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - b _0803870E - .align 2, 0 -_080386F4: .4byte gBattleTypeFlags -_080386F8: - movs r0, 0 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 16 - orrs r2, r4 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues -_0803870E: - bl OpponentBufferExecCompleted -_08038712: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80385B0 - - thumb_func_start sub_8038718 -sub_8038718: @ 8038718 - push {lr} - ldr r0, _0803873C @ =gActiveBattler - ldrb r0, [r0] - lsrs r0, 1 - ldr r1, _08038740 @ =gBattleStruct - ldr r1, [r1] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC0 - ldrb r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803873C: .4byte gActiveBattler -_08038740: .4byte gBattleStruct - thumb_func_end sub_8038718 - - thumb_func_start sub_8038744 -sub_8038744: @ 8038744 - push {r4-r6,lr} - ldr r6, _08038788 @ =gActiveBattler - ldrb r0, [r6] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r5, _0803878C @ =gBattleStruct - ldr r1, [r5] - adds r0, r1 - adds r0, 0x92 - ldrb r0, [r0] - cmp r0, 0x6 - bne _080387E4 - bl sub_8039E3C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bne _0803880A - ldr r0, _08038790 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08038794 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - b _080387A8 - .align 2, 0 -_08038788: .4byte gActiveBattler -_0803878C: .4byte gBattleStruct -_08038790: .4byte gBattleTypeFlags -_08038794: - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 -_080387A8: - movs r4, 0 - b _080387AE -_080387AC: - adds r4, 0x1 -_080387AE: - cmp r4, 0x5 - bgt _0803880A - movs r0, 0x64 - muls r0, r4 - ldr r1, _080387DC @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080387AC - ldr r1, _080387E0 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _080387AC - lsls r0, r5, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _080387AC - b _0803880A - .align 2, 0 -_080387DC: .4byte gEnemyParty -_080387E0: .4byte gBattlerPartyIndexes -_080387E4: - ldrb r0, [r6] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, [r5] - adds r0, r1 - adds r0, 0x92 - ldrb r4, [r0] - ldrb r0, [r6] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, [r5] - adds r0, r1 - adds r0, 0x92 - movs r1, 0x6 - strb r1, [r0] -_0803880A: - ldr r0, _08038830 @ =gActiveBattler - ldrb r0, [r0] - ldr r1, _08038834 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - strb r4, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - movs r0, 0x1 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue - bl OpponentBufferExecCompleted - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08038830: .4byte gActiveBattler -_08038834: .4byte gBattleStruct - thumb_func_end sub_8038744 - - thumb_func_start sub_8038838 -sub_8038838: @ 8038838 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038838 - - thumb_func_start sub_8038844 -sub_8038844: @ 8038844 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _080388BC @ =gBattleBufferA - ldr r0, _080388C0 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x3 - adds r0, r2, r0 - ldrb r1, [r0] - lsls r1, 8 - adds r3, 0x2 - adds r2, r3 - ldrb r0, [r2] - orrs r0, r1 - lsls r0, 16 - asrs r7, r0, 16 - ldr r0, _080388C4 @ =0x00007fff - cmp r7, r0 - beq _080388D4 - ldr r6, _080388C8 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080388CC @ =gEnemyParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _080388D0 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _080388FE - .align 2, 0 -_080388BC: .4byte gBattleBufferA -_080388C0: .4byte gActiveBattler -_080388C4: .4byte 0x00007fff -_080388C8: .4byte gBattlerPartyIndexes -_080388CC: .4byte gEnemyParty -_080388D0: .4byte gHealthboxSpriteIds -_080388D4: - ldr r1, _0803891C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08038920 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _08038924 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct -_080388FE: - ldr r1, _08038928 @ =gBattlerControllerFuncs - ldr r0, _0803892C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038930 @ =sub_80360A0 - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803891C: .4byte gBattlerPartyIndexes -_08038920: .4byte gEnemyParty -_08038924: .4byte gHealthboxSpriteIds -_08038928: .4byte gBattlerControllerFuncs -_0803892C: .4byte gActiveBattler -_08038930: .4byte sub_80360A0 - thumb_func_end sub_8038844 - - thumb_func_start sub_8038934 -sub_8038934: @ 8038934 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038934 - - thumb_func_start sub_8038940 -sub_8038940: @ 8038940 - push {r4,lr} - ldr r4, _0803899C @ =gActiveBattler - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08038994 - ldr r0, _080389A0 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _080389A4 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080389A8 @ =gEnemyParty - adds r1, r2 - movs r2, 0x9 - bl UpdateHealthboxAttribute - ldrb r2, [r4] - ldr r0, _080389AC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _080389B0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080389B4 @ =sub_80364D0 - str r1, [r0] -_08038994: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803899C: .4byte gActiveBattler -_080389A0: .4byte gHealthboxSpriteIds -_080389A4: .4byte gBattlerPartyIndexes -_080389A8: .4byte gEnemyParty -_080389AC: .4byte gBattleSpritesDataPtr -_080389B0: .4byte gBattlerControllerFuncs -_080389B4: .4byte sub_80364D0 - thumb_func_end sub_8038940 - - thumb_func_start sub_80389B8 -sub_80389B8: @ 80389B8 - push {r4,r5,lr} - ldr r5, _08038A10 @ =gActiveBattler - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08038A08 - ldr r4, _08038A14 @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl InitAndLaunchChosenStatusAnimation - ldr r1, _08038A18 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038A1C @ =sub_80364D0 - str r1, [r0] -_08038A08: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08038A10: .4byte gActiveBattler -_08038A14: .4byte gBattleBufferA -_08038A18: .4byte gBattlerControllerFuncs -_08038A1C: .4byte sub_80364D0 - thumb_func_end sub_80389B8 - - thumb_func_start sub_8038A20 -sub_8038A20: @ 8038A20 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A20 - - thumb_func_start sub_8038A2C -sub_8038A2C: @ 8038A2C - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A2C - - thumb_func_start sub_8038A38 -sub_8038A38: @ 8038A38 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A38 - - thumb_func_start sub_8038A44 -sub_8038A44: @ 8038A44 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A44 - - thumb_func_start sub_8038A50 -sub_8038A50: @ 8038A50 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A50 - - thumb_func_start sub_8038A5C -sub_8038A5C: @ 8038A5C - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A5C - - thumb_func_start sub_8038A68 -sub_8038A68: @ 8038A68 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A68 - - thumb_func_start sub_8038A74 -sub_8038A74: @ 8038A74 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A74 - - thumb_func_start sub_8038A80 -sub_8038A80: @ 8038A80 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038A80 - - thumb_func_start OpponentHandlecmd37 -OpponentHandlecmd37: @ 8038A8C - push {lr} - ldr r2, _08038AA4 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038AA4: .4byte gUnknown_2022870 - thumb_func_end OpponentHandlecmd37 - - thumb_func_start OpponentHandlecmd38 -OpponentHandlecmd38: @ 8038AA8 - push {lr} - ldr r3, _08038AD4 @ =gUnknown_2022870 - ldr r1, _08038AD8 @ =gBattleBufferA - ldr r0, _08038ADC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038AD4: .4byte gUnknown_2022870 -_08038AD8: .4byte gBattleBufferA -_08038ADC: .4byte gActiveBattler - thumb_func_end OpponentHandlecmd38 - - thumb_func_start OpponentHandlecmd39 -OpponentHandlecmd39: @ 8038AE0 - push {lr} - ldr r2, _08038AF4 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038AF4: .4byte gUnknown_2022870 - thumb_func_end OpponentHandlecmd39 - - thumb_func_start OpponentHandlecmd40 -OpponentHandlecmd40: @ 8038AF8 - push {lr} - ldr r3, _08038B1C @ =gUnknown_2022870 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038B1C: .4byte gUnknown_2022870 - thumb_func_end OpponentHandlecmd40 - - thumb_func_start OpponentHandleHitAnimation -OpponentHandleHitAnimation: @ 8038B20 - push {r4,lr} - ldr r3, _08038B48 @ =gSprites - ldr r2, _08038B4C @ =gBattlerSpriteIds - ldr r4, _08038B50 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _08038B54 - bl OpponentBufferExecCompleted - b _08038B7E - .align 2, 0 -_08038B48: .4byte gSprites -_08038B4C: .4byte gBattlerSpriteIds -_08038B50: .4byte gActiveBattler -_08038B54: - ldr r1, _08038B84 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _08038B88 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038B8C @ =sub_80361FC - str r1, [r0] -_08038B7E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08038B84: .4byte gDoingBattleAnim -_08038B88: .4byte gBattlerControllerFuncs -_08038B8C: .4byte sub_80361FC - thumb_func_end OpponentHandleHitAnimation - - thumb_func_start sub_8038B90 -sub_8038B90: @ 8038B90 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8038B90 - - thumb_func_start OpponentHandleEffectivenessSound -OpponentHandleEffectivenessSound: @ 8038B9C - push {r4,lr} - ldr r4, _08038BD8 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _08038BB0 - movs r3, 0xC0 -_08038BB0: - ldr r2, _08038BDC @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl OpponentBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08038BD8: .4byte gActiveBattler -_08038BDC: .4byte gBattleBufferA - thumb_func_end OpponentHandleEffectivenessSound - - thumb_func_start OpponentHandlecmd44 -OpponentHandlecmd44: @ 8038BE0 - push {lr} - ldr r2, _08038C08 @ =gBattleBufferA - ldr r0, _08038C0C @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038C08: .4byte gBattleBufferA -_08038C0C: .4byte gActiveBattler - thumb_func_end OpponentHandlecmd44 - - thumb_func_start OpponentHandleFaintingCry -OpponentHandleFaintingCry: @ 8038C10 - push {lr} - ldr r1, _08038C40 @ =gBattlerPartyIndexes - ldr r0, _08038C44 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08038C48 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - movs r2, 0x5 - bl PlayCry3 - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038C40: .4byte gBattlerPartyIndexes -_08038C44: .4byte gActiveBattler -_08038C48: .4byte gEnemyParty - thumb_func_end OpponentHandleFaintingCry - - thumb_func_start OpponentHandleIntroSlide -OpponentHandleIntroSlide: @ 8038C4C - push {lr} - ldr r1, _08038C74 @ =gBattleBufferA - ldr r0, _08038C78 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _08038C7C @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08038C74: .4byte gBattleBufferA -_08038C78: .4byte gActiveBattler -_08038C7C: .4byte gIntroSlideFlags - thumb_func_end OpponentHandleIntroSlide - - thumb_func_start sub_8038C80 -sub_8038C80: @ 8038C80 - push {r4-r6,lr} - ldr r5, _08038D60 @ =gBattlerSpriteIds - ldr r6, _08038D64 @ =gActiveBattler - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08038D68 @ =gSprites - adds r0, r4 - bl oamt_add_pos2_onto_pos1 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08038D6C @ =sub_8075590 - str r1, [r0] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08038D70 @ =sub_8038D90 - bl StoreSpriteCallbackInData6 - ldr r0, _08038D74 @ =sub_8038DC4 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08038D78 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r6] - strh r0, [r1, 0x8] - ldr r3, _08038D7C @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08038D42 - ldr r0, _08038D80 @ =gUnknown_2024000 - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _08038D84 @ =sub_80491B0 - str r1, [r0] -_08038D42: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08038D88 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038D8C @ =nullsub_17 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08038D60: .4byte gBattlerSpriteIds -_08038D64: .4byte gActiveBattler -_08038D68: .4byte gSprites -_08038D6C: .4byte sub_8075590 -_08038D70: .4byte sub_8038D90 -_08038D74: .4byte sub_8038DC4 -_08038D78: .4byte gTasks -_08038D7C: .4byte gBattleSpritesDataPtr -_08038D80: .4byte gUnknown_2024000 -_08038D84: .4byte sub_80491B0 -_08038D88: .4byte gBattlerControllerFuncs -_08038D8C: .4byte nullsub_17 - thumb_func_end sub_8038C80 - - thumb_func_start sub_8038D90 -sub_8038D90: @ 8038D90 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x6] - bl FreeTrainerFrontPicPaletteAndTile - ldrh r0, [r4, 0x38] - ldr r1, _08038DBC @ =0x000003ff - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, _08038DC0 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08038DBC: .4byte 0x000003ff -_08038DC0: .4byte 0xfffffc00 - thumb_func_end sub_8038D90 - - thumb_func_start sub_8038DC4 -sub_8038DC4: @ 8038DC4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r7, _08038E1C @ =gActiveBattler - ldrb r0, [r7] - mov r9, r0 - ldr r1, _08038E20 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08038DFE - ldr r0, _08038E24 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08038E30 -_08038DFE: - ldr r0, _08038E28 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _08038E2C @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_8037A28 - b _08038E70 - .align 2, 0 -_08038E1C: .4byte gActiveBattler -_08038E20: .4byte gTasks -_08038E24: .4byte gBattleTypeFlags -_08038E28: .4byte gBattleBufferA -_08038E2C: .4byte gBattlerPartyIndexes -_08038E30: - ldr r4, _08038E94 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r6, _08038E98 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_8037A28 - ldrb r0, [r7] - movs r5, 0x2 - eors r0, r5 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_8037A28 - ldrb r0, [r7] - eors r0, r5 - strb r0, [r7] -_08038E70: - ldr r1, _08038E9C @ =gBattlerControllerFuncs - ldr r2, _08038EA0 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08038EA4 @ =sub_8035DF0 - str r1, [r0] - mov r0, r9 - strb r0, [r2] - mov r0, r8 - bl DestroyTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08038E94: .4byte gBattleBufferA -_08038E98: .4byte gBattlerPartyIndexes -_08038E9C: .4byte gBattlerControllerFuncs -_08038EA0: .4byte gActiveBattler -_08038EA4: .4byte sub_8035DF0 - thumb_func_end sub_8038DC4 - - thumb_func_start sub_8038EA8 -sub_8038EA8: @ 8038EA8 - push {r4-r7,lr} - ldr r1, _08038ED0 @ =gBattleBufferA - ldr r0, _08038ED4 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08038ED8 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08038ED8 - bl OpponentBufferExecCompleted - b _08038FA2 - .align 2, 0 -_08038ED0: .4byte gBattleBufferA -_08038ED4: .4byte gActiveBattler -_08038ED8: - ldr r4, _08038F30 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _08038F34 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldr r1, _08038F38 @ =gBattleBufferA - ldrb r2, [r3] - lsls r0, r2, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r3, 0 - cmp r0, 0 - beq _08038F44 - ldr r0, [r4] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r2, [r3, 0x1] - lsls r1, r2, 26 - lsrs r0, r1, 27 - cmp r0, 0x1 - bhi _08038F3C - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - lsls r0, 1 - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x1] - b _08038FA2 - .align 2, 0 -_08038F30: .4byte gBattleSpritesDataPtr -_08038F34: .4byte gActiveBattler -_08038F38: .4byte gBattleBufferA -_08038F3C: - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - strb r0, [r3, 0x1] -_08038F44: - adds r5, r7, 0 - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _08038FA8 @ =gUnknown_2022BC8 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl sub_8048D14 - ldr r2, _08038FAC @ =gUnknown_2024000 - ldrb r1, [r5] - adds r1, r2 - movs r3, 0 - strb r0, [r1] - ldr r6, _08038FB0 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x5] - ldrb r2, [r5] - lsls r0, r2, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _08038F96 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x5D - strb r1, [r0, 0x5] -_08038F96: - ldr r0, _08038FB4 @ =gBattlerControllerFuncs - ldrb r1, [r7] - lsls r1, 2 - adds r1, r0 - ldr r0, _08038FB8 @ =sub_8038FBC - str r0, [r1] -_08038FA2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08038FA8: .4byte gUnknown_2022BC8 -_08038FAC: .4byte gUnknown_2024000 -_08038FB0: .4byte gBattleSpritesDataPtr -_08038FB4: .4byte gBattlerControllerFuncs -_08038FB8: .4byte sub_8038FBC - thumb_func_end sub_8038EA8 - - thumb_func_start sub_8038FBC -sub_8038FBC: @ 8038FBC - push {r4,lr} - ldr r4, _08038FFC @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _08039000 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _08038FF4 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x5] - bl OpponentBufferExecCompleted -_08038FF4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08038FFC: .4byte gBattleSpritesDataPtr -_08039000: .4byte gActiveBattler - thumb_func_end sub_8038FBC - - thumb_func_start sub_8039004 -sub_8039004: @ 8039004 - push {lr} - ldr r0, _08039040 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _08039044 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039036 - ldr r2, _08039048 @ =gTasks - ldr r0, _0803904C @ =gUnknown_2024000 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _08039050 @ =sub_80491B0 - str r1, [r0] -_08039036: - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08039040: .4byte gBattleSpritesDataPtr -_08039044: .4byte gActiveBattler -_08039048: .4byte gTasks -_0803904C: .4byte gUnknown_2024000 -_08039050: .4byte sub_80491B0 - thumb_func_end sub_8039004 - - thumb_func_start sub_8039054 -sub_8039054: @ 8039054 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8039054 - - thumb_func_start sub_8039060 -sub_8039060: @ 8039060 - push {r4,lr} - ldr r4, _080390B0 @ =gActiveBattler - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _080390A6 - ldr r3, _080390B4 @ =gSprites - ldr r0, _080390B8 @ =gBattlerSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _080390BC @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl CopyBattleSpriteInvisibility -_080390A6: - bl OpponentBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080390B0: .4byte gActiveBattler -_080390B4: .4byte gSprites -_080390B8: .4byte gBattlerSpriteIds -_080390BC: .4byte gBattleBufferA - thumb_func_end sub_8039060 - - thumb_func_start sub_80390C0 -sub_80390C0: @ 80390C0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _08039104 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08039118 - ldr r5, _08039108 @ =gBattleBufferA - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _0803910C - bl OpponentBufferExecCompleted - b _08039118 - .align 2, 0 -_08039104: .4byte gActiveBattler -_08039108: .4byte gBattleBufferA -_0803910C: - ldr r0, _08039120 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _08039124 @ =sub_8036500 - str r0, [r1] -_08039118: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08039120: .4byte gBattlerControllerFuncs -_08039124: .4byte sub_8036500 - thumb_func_end sub_80390C0 - - thumb_func_start sub_8039128 -sub_8039128: @ 8039128 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8039128 - - thumb_func_start sub_8039134 -sub_8039134: @ 8039134 - push {lr} - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8039134 - - thumb_func_start OpponentHandleCmd55 -OpponentHandleCmd55: @ 8039140 - push {lr} - ldr r0, _08039174 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _0803916A - ldr r2, _08039178 @ =gMain - ldr r0, _0803917C @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _08039180 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0803916A: - bl OpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08039174: .4byte gBattleTypeFlags -_08039178: .4byte gMain -_0803917C: .4byte 0x00000439 -_08039180: .4byte gPreBattleCallback1 - thumb_func_end OpponentHandleCmd55 - - thumb_func_start nullsub_18 -nullsub_18: @ 8039184 - bx lr - thumb_func_end nullsub_18 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index 385b0d44e..4db2fedb2 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -3317,7 +3317,7 @@ CompleteOnHealthbarDone: @ 802FE24 ldrb r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -3335,7 +3335,7 @@ CompleteOnHealthbarDone: @ 802FE24 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox b _0802FE86 .align 2, 0 _0802FE64: .4byte gActiveBattler @@ -3691,7 +3691,7 @@ _08030124: adds r0, r7, 0 movs r2, 0x1 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -8084,7 +8084,7 @@ PlayerHandleTrainerSlideBack: @ 8032590 lsls r0, 2 ldr r4, _08032638 @ =gSprites adds r0, r4 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r6] adds r0, r5 ldrb r1, [r0] @@ -8121,7 +8121,7 @@ PlayerHandleTrainerSlideBack: @ 8032590 adds r1, r4, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _08032640 @ =sub_8075590 + ldr r1, _08032640 @ =StartAnimLinearTranslation str r1, [r0] ldrb r0, [r6] adds r0, r5 @@ -8155,7 +8155,7 @@ _08032630: .4byte gBattlerSpriteIds _08032634: .4byte gActiveBattler _08032638: .4byte gSprites _0803263C: .4byte 0x0000ffd8 -_08032640: .4byte sub_8075590 +_08032640: .4byte StartAnimLinearTranslation _08032644: .4byte SpriteCallbackDummy _08032648: .4byte gBattlerControllerFuncs _0803264C: .4byte sub_802F7A0 @@ -8474,7 +8474,7 @@ _08032852: lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, _08032938 @ =gUnknown_2037EFE + ldr r3, _08032938 @ =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -8482,7 +8482,7 @@ _08032852: adds r1, r2 ldrb r1, [r1] strb r1, [r3] - ldr r4, _0803293C @ =gUnknown_2037F00 + ldr r4, _0803293C @ =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -8523,8 +8523,8 @@ _08032928: .4byte gBattleBufferA _0803292C: .4byte gAnimMoveTurn _08032930: .4byte gAnimMovePower _08032934: .4byte gAnimMoveDmg -_08032938: .4byte gUnknown_2037EFE -_0803293C: .4byte gUnknown_2037F00 +_08032938: .4byte gAnimFriendship +_0803293C: .4byte gWeatherMoveAnim _08032940: .4byte gAnimDisableStructPtr _08032944: .4byte gTransformedPersonalities _08032948: @@ -9238,7 +9238,7 @@ _08032EDC: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox _08032F16: ldr r1, _08032F40 @ =gBattlerControllerFuncs ldr r0, _08032F44 @ =gActiveBattler @@ -9940,7 +9940,7 @@ PlayerHandleIntroTrainerBallThrow: @ 8033478 lsls r0, 2 ldr r5, _080335C0 @ =gSprites adds r0, r5 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] @@ -10059,14 +10059,14 @@ PlayerHandleIntroTrainerBallThrow: @ 8033478 ands r0, r1 cmp r0, 0 beq _0803359A - ldr r0, _080335E8 @ =gUnknown_2024000 + ldr r0, _080335E8 @ =gBattlerStatusSummaryTaskId adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 - ldr r1, _080335EC @ =sub_80491B0 + ldr r1, _080335EC @ =Task_HidePartyStatusSummary str r1, [r0] _0803359A: ldr r0, [r3] @@ -10097,8 +10097,8 @@ _080335D8: .4byte gSaveBlock2Ptr _080335DC: .4byte task05_08033660 _080335E0: .4byte gTasks _080335E4: .4byte gBattleSpritesDataPtr -_080335E8: .4byte gUnknown_2024000 -_080335EC: .4byte sub_80491B0 +_080335E8: .4byte gBattlerStatusSummaryTaskId +_080335EC: .4byte Task_HidePartyStatusSummary _080335F0: .4byte gBattlerControllerFuncs _080335F4: .4byte nullsub_13 thumb_func_end PlayerHandleIntroTrainerBallThrow @@ -10323,8 +10323,8 @@ _0803379C: subs r4, 0x2 adds r3, r4 ldrb r3, [r3] - bl sub_8048D14 - ldr r2, _08033824 @ =gUnknown_2024000 + bl CreatePartyStatusSummarySprites + ldr r2, _08033824 @ =gBattlerStatusSummaryTaskId ldrb r1, [r5] adds r1, r2 movs r3, 0 @@ -10366,7 +10366,7 @@ _08033810: _08033818: .4byte gBattleSpritesDataPtr _0803381C: .4byte gActiveBattler _08033820: .4byte gUnknown_2022BC8 -_08033824: .4byte gUnknown_2024000 +_08033824: .4byte gBattlerStatusSummaryTaskId _08033828: .4byte gBattlerControllerFuncs _0803382C: .4byte sub_8033830 thumb_func_end PlayerHandleDrawPartyStatusSummary @@ -10427,14 +10427,14 @@ PlayerHandleCmd49: @ 8033878 cmp r0, 0 beq _080338AA ldr r2, _080338BC @ =gTasks - ldr r0, _080338C0 @ =gUnknown_2024000 + ldr r0, _080338C0 @ =gBattlerStatusSummaryTaskId adds r0, r3, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 - ldr r1, _080338C4 @ =sub_80491B0 + ldr r1, _080338C4 @ =Task_HidePartyStatusSummary str r1, [r0] _080338AA: bl PlayerBufferExecCompleted @@ -10444,8 +10444,8 @@ _080338AA: _080338B4: .4byte gBattleSpritesDataPtr _080338B8: .4byte gActiveBattler _080338BC: .4byte gTasks -_080338C0: .4byte gUnknown_2024000 -_080338C4: .4byte sub_80491B0 +_080338C0: .4byte gBattlerStatusSummaryTaskId +_080338C4: .4byte Task_HidePartyStatusSummary thumb_func_end PlayerHandleCmd49 thumb_func_start sub_80338C8 diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 4bff9be01..35684558a 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -1338,7 +1338,7 @@ _08156B54: adds r0, r7, 0 movs r2, 0x1 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -1714,7 +1714,7 @@ sub_8156E78: @ 8156E78 ldrb r1, [r1] movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 @@ -1732,7 +1732,7 @@ sub_8156E78: @ 8156E78 adds r0, r6 ldrb r0, [r0] movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox b _08156EDA .align 2, 0 _08156EB8: .4byte gActiveBattler @@ -4258,7 +4258,7 @@ _081583F0: movs r0, 0x84 bl SetMultiuseSpriteTemplateToTrainerBack ldr r5, _08158510 @ =gMultiuseSpriteTemplate - ldr r0, _08158514 @ =gUnknown_823932C + ldr r0, _08158514 @ =gTrainerFrontPicCoords movs r1, 0x84 mov r8, r1 movs r1, 0x84 @@ -4386,7 +4386,7 @@ _081584E2: bx r0 .align 2, 0 _08158510: .4byte gMultiuseSpriteTemplate -_08158514: .4byte gUnknown_823932C +_08158514: .4byte gTrainerFrontPicCoords _08158518: .4byte gBattlerSpriteIds _0815851C: .4byte gSprites _08158520: .4byte 0x0000ff10 @@ -4622,7 +4622,7 @@ _081586FC: lsls r0, 2 adds r2, 0x1C adds r0, r2 - ldr r1, _08158738 @ =sub_8011EA0 + ldr r1, _08158738 @ =SpriteCB_FaintOpponentMon _0815871A: str r1, [r0] ldr r1, _0815873C @ =gBattlerControllerFuncs @@ -4639,7 +4639,7 @@ _0815872A: .align 2, 0 _08158730: .4byte gSprites _08158734: .4byte gBattlerSpriteIds -_08158738: .4byte sub_8011EA0 +_08158738: .4byte SpriteCB_FaintOpponentMon _0815873C: .4byte gBattlerControllerFuncs _08158740: .4byte gActiveBattler _08158744: .4byte sub_8156DCC @@ -4808,7 +4808,7 @@ sub_8158814: @ 8158814 lsls r1, 24 orrs r3, r1 str r3, [r4] - ldr r3, _081588FC @ =gUnknown_2037EFE + ldr r3, _081588FC @ =gAnimFriendship ldrb r1, [r6] lsls r1, 9 mov r2, r12 @@ -4816,7 +4816,7 @@ sub_8158814: @ 8158814 adds r1, r2 ldrb r1, [r1] strb r1, [r3] - ldr r4, _08158900 @ =gUnknown_2037F00 + ldr r4, _08158900 @ =gWeatherMoveAnim ldrb r2, [r6] lsls r2, 9 mov r1, r12 @@ -4857,8 +4857,8 @@ _081588EC: .4byte gActiveBattler _081588F0: .4byte gAnimMoveTurn _081588F4: .4byte gAnimMovePower _081588F8: .4byte gAnimMoveDmg -_081588FC: .4byte gUnknown_2037EFE -_08158900: .4byte gUnknown_2037F00 +_081588FC: .4byte gAnimFriendship +_08158900: .4byte gWeatherMoveAnim _08158904: .4byte gAnimDisableStructPtr _08158908: .4byte gTransformedPersonalities _0815890C: @@ -5550,7 +5550,7 @@ _08158E80: ldrb r0, [r0] movs r1, 0 movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox _08158EA8: ldr r1, _08158EC4 @ =gBattlerControllerFuncs ldr r0, _08158EC8 @ =gActiveBattler @@ -6129,7 +6129,7 @@ sub_8159304: @ 8159304 lsls r0, 2 ldr r5, _08159444 @ =gSprites adds r0, r5 - bl oamt_add_pos2_onto_pos1 + bl SetSpritePrimaryCoordsFromSecondaryCoords ldrb r0, [r7] adds r0, r6 ldrb r1, [r0] @@ -6166,7 +6166,7 @@ sub_8159304: @ 8159304 adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _0815944C @ =sub_8075590 + ldr r1, _0815944C @ =StartAnimLinearTranslation str r1, [r0] ldrb r2, [r7] adds r0, r2, r6 @@ -6243,14 +6243,14 @@ sub_8159304: @ 8159304 ands r0, r1 cmp r0, 0 beq _0815941C - ldr r0, _08159468 @ =gUnknown_2024000 + ldr r0, _08159468 @ =gBattlerStatusSummaryTaskId adds r0, r2, r0 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r4 - ldr r1, _0815946C @ =sub_80491B0 + ldr r1, _0815946C @ =Task_HidePartyStatusSummary str r1, [r0] _0815941C: ldr r0, [r3] @@ -6273,15 +6273,15 @@ _0815943C: .4byte gBattlerSpriteIds _08159440: .4byte gActiveBattler _08159444: .4byte gSprites _08159448: .4byte 0x0000ffd8 -_0815944C: .4byte sub_8075590 +_0815944C: .4byte StartAnimLinearTranslation _08159450: .4byte sub_80335F8 _08159454: .4byte 0x0000d6f8 _08159458: .4byte gUnknown_8239FD4 _0815945C: .4byte sub_81595EC _08159460: .4byte gTasks _08159464: .4byte gBattleSpritesDataPtr -_08159468: .4byte gUnknown_2024000 -_0815946C: .4byte sub_80491B0 +_08159468: .4byte gBattlerStatusSummaryTaskId +_0815946C: .4byte Task_HidePartyStatusSummary _08159470: .4byte gBattlerControllerFuncs _08159474: .4byte nullsub_99 thumb_func_end sub_8159304 @@ -6560,8 +6560,8 @@ _08159690: subs r3, 0x2 adds r4, r3 ldrb r3, [r4] - bl sub_8048D14 - ldr r2, _081596E0 @ =gUnknown_2024000 + bl CreatePartyStatusSummarySprites + ldr r2, _081596E0 @ =gBattlerStatusSummaryTaskId ldrb r1, [r5] adds r1, r2 strb r0, [r1] @@ -6574,7 +6574,7 @@ _081596CE: _081596D4: .4byte gBattleSpritesDataPtr _081596D8: .4byte gActiveBattler _081596DC: .4byte gUnknown_2022BC8 -_081596E0: .4byte gUnknown_2024000 +_081596E0: .4byte gBattlerStatusSummaryTaskId thumb_func_end sub_8159660 thumb_func_start sub_81596E4 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 8f6361bb4..3e8044d2a 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -1201,8 +1201,8 @@ _08048424: _0804843C: .4byte 0x06010400 thumb_func_end UpdateLvlInHealthbox - thumb_func_start sub_8048440 -sub_8048440: @ 8048440 + thumb_func_start UpdateHpTextInHealthbox +UpdateHpTextInHealthbox: @ 8048440 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1425,7 +1425,7 @@ _08048608: .4byte gMonSpritesGfxPtr _0804860C: .4byte gSprites _08048610: .4byte 0x06010000 _08048614: .4byte 0x04000008 - thumb_func_end sub_8048440 + thumb_func_end UpdateHpTextInHealthbox thumb_func_start sub_8048618 sub_8048618: @ 8048618 @@ -2279,8 +2279,8 @@ _08048D0C: .4byte gHealthboxSpriteIds _08048D10: .4byte gBattlersCount thumb_func_end sub_8048A4C - thumb_func_start sub_8048D14 -sub_8048D14: @ 8048D14 + thumb_func_start CreatePartyStatusSummarySprites +CreatePartyStatusSummarySprites: @ 8048D14 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2866,10 +2866,10 @@ _08049172: .align 2, 0 _080491A8: .4byte TaskDummy _080491AC: .4byte gTasks - thumb_func_end sub_8048D14 + thumb_func_end CreatePartyStatusSummarySprites - thumb_func_start sub_80491B0 -sub_80491B0: @ 80491B0 + thumb_func_start Task_HidePartyStatusSummary +Task_HidePartyStatusSummary: @ 80491B0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -3099,7 +3099,7 @@ _0804936E: .align 2, 0 _08049380: .4byte gTasks _08049384: .4byte sub_804948C - thumb_func_end sub_80491B0 + thumb_func_end Task_HidePartyStatusSummary thumb_func_start sub_8049388 sub_8049388: @ 8049388 @@ -4426,7 +4426,7 @@ _08049E0C: asrs r1, 16 adds r0, r6, 0 movs r2, 0 - bl sub_8048440 + bl UpdateHpTextInHealthbox _08049E26: cmp r7, 0x2 beq _08049E2E @@ -4441,7 +4441,7 @@ _08049E2E: asrs r1, 16 adds r0, r6, 0 movs r2, 0x1 - bl sub_8048440 + bl UpdateHpTextInHealthbox _08049E44: cmp r7, 0x5 beq _08049E4C @@ -4468,7 +4468,7 @@ _08049E4C: adds r1, r6, 0 movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar _08049E80: bl IsDoubleBattle lsls r0, 24 @@ -4530,7 +4530,7 @@ _08049E96: adds r1, r6, 0 movs r2, 0x1 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar _08049F06: cmp r7, 0x4 beq _08049F0E @@ -4607,7 +4607,7 @@ _08049F74: adds r1, r6, 0 movs r2, 0 movs r3, 0 - bl sub_8049FD8 + bl MoveBattleBar _08049FA8: cmp r7, 0x4 beq _08049FB0 @@ -4636,8 +4636,8 @@ _08049FC6: bx r0 thumb_func_end UpdateHealthboxAttribute - thumb_func_start sub_8049FD8 -sub_8049FD8: @ 8049FD8 + thumb_func_start MoveBattleBar +MoveBattleBar: @ 8049FD8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4765,7 +4765,7 @@ _0804A0BE: bx r1 .align 2, 0 _0804A0D0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_8049FD8 + thumb_func_end MoveBattleBar thumb_func_start sub_804A0D4 sub_804A0D4: @ 804A0D4 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index ee6856130..abb47aba9 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -929,8 +929,8 @@ _080E6062: _080E6074: .4byte gSaveBlock2Ptr thumb_func_end sub_80E5E7C - thumb_func_start sub_80E6078 -sub_80E6078: @ 80E6078 + thumb_func_start GetBattleTowerTrainerFrontSpriteId +GetBattleTowerTrainerFrontSpriteId: @ 80E6078 push {lr} ldr r0, _080E6094 @ =gSaveBlock2Ptr ldr r3, [r0] @@ -983,7 +983,7 @@ _080E60D6: .align 2, 0 _080E60DC: .4byte gFacilityClassToPicIndex _080E60E0: .4byte gUnknown_83FFAC4 - thumb_func_end sub_80E6078 + thumb_func_end GetBattleTowerTrainerFrontSpriteId thumb_func_start sub_80E60E4 sub_80E60E4: @ 80E60E4 diff --git a/asm/bug.s b/asm/bug.s index 27c66e10f..de99118a2 100644 --- a/asm/bug.s +++ b/asm/bug.s @@ -86,7 +86,7 @@ _080B4008: ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r6, 0x36] - ldr r0, _080B4074 @ =sub_8075590 + ldr r0, _080B4074 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B4078 @ =DestroyAnimSprite adds r0, r6, 0 @@ -97,7 +97,7 @@ _080B4008: .align 2, 0 _080B406C: .4byte gBattleAnimTarget _080B4070: .4byte gBattleAnimArgs -_080B4074: .4byte sub_8075590 +_080B4074: .4byte StartAnimLinearTranslation _080B4078: .4byte DestroyAnimSprite thumb_func_end sub_80B3FAC @@ -166,7 +166,7 @@ _080B40BC: lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x36] - ldr r0, _080B4120 @ =sub_8075590 + ldr r0, _080B4120 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B4124 @ =DestroyAnimSprite adds r0, r6, 0 @@ -177,7 +177,7 @@ _080B40BC: .align 2, 0 _080B4118: .4byte gBattleAnimTarget _080B411C: .4byte gBattleAnimArgs -_080B4120: .4byte sub_8075590 +_080B4120: .4byte StartAnimLinearTranslation _080B4124: .4byte DestroyAnimSprite thumb_func_end sub_80B407C @@ -603,7 +603,7 @@ _080B43F6: strh r0, [r7, 0x2E] strh r4, [r7, 0x32] strh r5, [r7, 0x36] - ldr r0, _080B448C @ =sub_8075590 + ldr r0, _080B448C @ =StartAnimLinearTranslation str r0, [r7, 0x1C] ldr r1, _080B4490 @ =DestroyAnimSprite adds r0, r7, 0 @@ -616,7 +616,7 @@ _080B43F6: _080B4480: .4byte gBattleAnimAttacker _080B4484: .4byte gBattleAnimArgs _080B4488: .4byte gBattleAnimTarget -_080B448C: .4byte sub_8075590 +_080B448C: .4byte StartAnimLinearTranslation _080B4490: .4byte DestroyAnimSprite thumb_func_end sub_80B4364 diff --git a/asm/dragon.s b/asm/dragon.s index 5f86b5eca..bd01691f1 100644 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -152,7 +152,7 @@ _080B7386: ldr r0, _080B73A0 @ =gBattleAnimArgs ldrh r0, [r0, 0x8] strh r0, [r5, 0x2E] - ldr r0, _080B73A4 @ =sub_8075590 + ldr r0, _080B73A4 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080B73A8 @ =move_anim_8074EE0 adds r0, r5, 0 @@ -162,7 +162,7 @@ _080B7386: bx r0 .align 2, 0 _080B73A0: .4byte gBattleAnimArgs -_080B73A4: .4byte sub_8075590 +_080B73A4: .4byte StartAnimLinearTranslation _080B73A8: .4byte move_anim_8074EE0 thumb_func_end sub_80B72F8 diff --git a/asm/fighting.s b/asm/fighting.s index b933e88e6..81785b16b 100644 --- a/asm/fighting.s +++ b/asm/fighting.s @@ -399,7 +399,7 @@ _080B0BB6: ldrh r0, [r4, 0x22] subs r0, 0x14 strh r0, [r4, 0x36] - ldr r0, _080B0BD0 @ =sub_8075590 + ldr r0, _080B0BD0 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080B0BD4 @ =sub_80B0BD8 adds r0, r4, 0 @@ -408,7 +408,7 @@ _080B0BB6: pop {r0} bx r0 .align 2, 0 -_080B0BD0: .4byte sub_8075590 +_080B0BD0: .4byte StartAnimLinearTranslation _080B0BD4: .4byte sub_80B0BD8 thumb_func_end sub_80B0B80 @@ -440,7 +440,7 @@ sub_80B0BD8: @ 80B0BD8 strh r1, [r5, 0x22] strh r6, [r5, 0x26] strh r6, [r5, 0x24] - ldr r0, _080B0C20 @ =sub_8075590 + ldr r0, _080B0C20 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080B0C24 @ =DestroyAnimSprite adds r0, r5, 0 @@ -450,7 +450,7 @@ _080B0C18: pop {r0} bx r0 .align 2, 0 -_080B0C20: .4byte sub_8075590 +_080B0C20: .4byte StartAnimLinearTranslation _080B0C24: .4byte DestroyAnimSprite thumb_func_end sub_80B0BD8 @@ -654,7 +654,7 @@ sub_80B0D7C: @ 80B0D7C lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _080B0DCC @ =sub_8075590 + ldr r0, _080B0DCC @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080B0DD0 @ =sub_80B0DD4 adds r0, r5, 0 @@ -665,7 +665,7 @@ _080B0DC0: bx r0 .align 2, 0 _080B0DC8: .4byte gBattleAnimTarget -_080B0DCC: .4byte sub_8075590 +_080B0DCC: .4byte StartAnimLinearTranslation _080B0DD0: .4byte sub_80B0DD4 thumb_func_end sub_80B0D7C diff --git a/asm/fire.s b/asm/fire.s index 0e014a48d..d838039ac 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -367,14 +367,14 @@ sub_80ACBB0: @ 80ACBB0 strh r1, [r0, 0x32] movs r1, 0x50 strh r1, [r0, 0x36] - ldr r1, _080ACBD4 @ =sub_8075590 + ldr r1, _080ACBD4 @ =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, _080ACBD8 @ =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080ACBD4: .4byte sub_8075590 +_080ACBD4: .4byte StartAnimLinearTranslation _080ACBD8: .4byte DestroyAnimSprite thumb_func_end sub_80ACBB0 diff --git a/asm/flying.s b/asm/flying.s index 23fe4371d..a776b54cb 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -376,7 +376,7 @@ _080B1B72: ldrh r3, [r5, 0x36] adds r0, r3 strh r0, [r5, 0x36] - ldr r0, _080B1BA8 @ =sub_8075590 + ldr r0, _080B1BA8 @ =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, _080B1BAC @ =DestroyAnimSprite adds r0, r5, 0 @@ -390,7 +390,7 @@ _080B1B72: .align 2, 0 _080B1BA0: .4byte gBattleAnimTarget _080B1BA4: .4byte gBattleAnimArgs -_080B1BA8: .4byte sub_8075590 +_080B1BA8: .4byte StartAnimLinearTranslation _080B1BAC: .4byte DestroyAnimSprite thumb_func_end sub_80B1AB8 diff --git a/asm/ground.s b/asm/ground.s index d9cc47ed2..3df01daf8 100644 --- a/asm/ground.s +++ b/asm/ground.s @@ -155,7 +155,7 @@ _080B8C74: ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r6, 0x36] - ldr r0, _080B8CC0 @ =sub_8075590 + ldr r0, _080B8CC0 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B8CC4 @ =DestroyAnimSprite adds r0, r6, 0 @@ -167,7 +167,7 @@ _080B8C74: _080B8CB4: .4byte gBattleAnimAttacker _080B8CB8: .4byte gBattleAnimArgs _080B8CBC: .4byte gBattleAnimTarget -_080B8CC0: .4byte sub_8075590 +_080B8CC0: .4byte StartAnimLinearTranslation _080B8CC4: .4byte DestroyAnimSprite thumb_func_end sub_80B8C54 @@ -222,7 +222,7 @@ _080B8D20: strh r0, [r6, 0x32] adds r0, r7, r4 strh r0, [r6, 0x36] - ldr r0, _080B8D50 @ =sub_8075590 + ldr r0, _080B8D50 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080B8D54 @ =move_anim_8074EE0 adds r0, r6, 0 @@ -235,7 +235,7 @@ _080B8D20: .align 2, 0 _080B8D48: .4byte gBattleAnimTarget _080B8D4C: .4byte gBattleAnimArgs -_080B8D50: .4byte sub_8075590 +_080B8D50: .4byte StartAnimLinearTranslation _080B8D54: .4byte move_anim_8074EE0 thumb_func_end sub_80B8CC8 diff --git a/asm/ice.s b/asm/ice.s index ddc0370f7..ab26d23e5 100644 --- a/asm/ice.s +++ b/asm/ice.s @@ -429,7 +429,7 @@ _080AF37A: ldr r1, _080AF3B0 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080AF3B4 @ =sub_8075590 + ldr r0, _080AF3B4 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -438,7 +438,7 @@ _080AF37A: _080AF3A8: .4byte gBattleAnimArgs _080AF3AC: .4byte gBattleAnimTarget _080AF3B0: .4byte DestroyAnimSprite -_080AF3B4: .4byte sub_8075590 +_080AF3B4: .4byte StartAnimLinearTranslation thumb_func_end sub_80AF330 thumb_func_start sub_80AF3B8 diff --git a/asm/poison.s b/asm/poison.s index 111ad544a..770941be8 100644 --- a/asm/poison.s +++ b/asm/poison.s @@ -253,7 +253,7 @@ _080B17F0: strh r2, [r4, 0x32] adds r1, r3 strh r1, [r4, 0x36] - ldr r0, _080B1830 @ =sub_8075590 + ldr r0, _080B1830 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080B1834 @ =DestroyAnimSprite adds r0, r4, 0 @@ -265,7 +265,7 @@ _080B17F0: _080B1824: .4byte gBattleAnimTarget _080B1828: .4byte gBattleAnimAttacker _080B182C: .4byte gBattleAnimArgs -_080B1830: .4byte sub_8075590 +_080B1830: .4byte StartAnimLinearTranslation _080B1834: .4byte DestroyAnimSprite thumb_func_end sub_80B17C4 diff --git a/asm/rock.s b/asm/rock.s index cef182f32..c0da2bcfa 100644 --- a/asm/rock.s +++ b/asm/rock.s @@ -682,7 +682,7 @@ sub_80B4B8C: @ 80B4B8C ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x36] - ldr r0, _080B4BC8 @ =sub_8075590 + ldr r0, _080B4BC8 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080B4BCC @ =DestroyAnimSprite adds r0, r4, 0 @@ -692,7 +692,7 @@ sub_80B4B8C: @ 80B4B8C bx r0 .align 2, 0 _080B4BC4: .4byte gBattleAnimArgs -_080B4BC8: .4byte sub_8075590 +_080B4BC8: .4byte StartAnimLinearTranslation _080B4BCC: .4byte DestroyAnimSprite thumb_func_end sub_80B4B8C diff --git a/asm/water.s b/asm/water.s index 6904e65d2..d40e8f594 100644 --- a/asm/water.s +++ b/asm/water.s @@ -891,7 +891,7 @@ _080AB27A: ldrh r5, [r5, 0x6] adds r0, r5 strh r0, [r6, 0x36] - ldr r0, _080AB2C4 @ =sub_8075590 + ldr r0, _080AB2C4 @ =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, _080AB2C8 @ =DestroyAnimSprite adds r0, r6, 0 @@ -903,7 +903,7 @@ _080AB27A: _080AB2B8: .4byte gBattleAnimAttacker _080AB2BC: .4byte gBattleAnimTarget _080AB2C0: .4byte gBattleAnimArgs -_080AB2C4: .4byte sub_8075590 +_080AB2C4: .4byte StartAnimLinearTranslation _080AB2C8: .4byte DestroyAnimSprite thumb_func_end sub_80AB1F8 @@ -923,7 +923,7 @@ sub_80AB2CC: @ 80AB2CC ldrh r0, [r4, 0x22] adds r1, r0 strh r1, [r4, 0x36] - ldr r0, _080AB300 @ =sub_8075590 + ldr r0, _080AB300 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, _080AB304 @ =DestroyAnimSprite adds r0, r4, 0 @@ -933,7 +933,7 @@ sub_80AB2CC: @ 80AB2CC bx r0 .align 2, 0 _080AB2FC: .4byte gBattleAnimArgs -_080AB300: .4byte sub_8075590 +_080AB300: .4byte StartAnimLinearTranslation _080AB304: .4byte DestroyAnimSprite thumb_func_end sub_80AB2CC diff --git a/data/data.s b/data/data.s index 8b3e66bdc..0a2298a65 100644 --- a/data/data.s +++ b/data/data.s @@ -145,7 +145,7 @@ gMonShinyPaletteTable:: @ 82380CC gTrainerFrontAnimsPtrTable:: @ 82390DC .incbin "baserom.gba", 0x2390DC, 0x250 -gUnknown_823932C:: @ 823932C +gTrainerFrontPicCoords:: @ 823932C .incbin "baserom.gba", 0x23932C, 0x250 gTrainerFrontPicTable:: @ 823957C @@ -350,8 +350,7 @@ gSpriteSheet_EnemyShadow:: @ 8250A0C gSpriteTemplate_EnemyShadow:: @ 8250A1C .incbin "baserom.gba", 0x250A1C, 0x18 -gUnknown_8250A34:: @ 8250A34 - .incbin "baserom.gba", 0x250A34, 0xEC + .section .rodata.8250B20 gUnknown_8250B20:: @ 8250B20 .incbin "baserom.gba", 0x250B20, 0xE4 diff --git a/include/battle.h b/include/battle.h index 1e50a5dc1..445902b39 100644 --- a/include/battle.h +++ b/include/battle.h @@ -2,8 +2,6 @@ #define GUARD_BATTLE_H #include "global.h" - -// should they be included here or included individually by every file? #include "constants/battle.h" #include "battle_util.h" #include "battle_script_commands.h" @@ -19,8 +17,6 @@ 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) */ -#define BATTLE_BANKS_COUNT 4 - #define IDENTITY_PLAYER_MON1 0 #define IDENTITY_OPPONENT_MON1 1 #define IDENTITY_PLAYER_MON2 2 @@ -209,10 +205,10 @@ struct TrainerMonItemCustomMoves union TrainerMonPtr { - struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; - struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; - struct TrainerMonItemDefaultMoves* ItemDefaultMoves; - struct TrainerMonItemCustomMoves* ItemCustomMoves; + struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves; + struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; + struct TrainerMonItemDefaultMoves *ItemDefaultMoves; + struct TrainerMonItemCustomMoves *ItemCustomMoves; }; struct Trainer @@ -278,7 +274,7 @@ struct DisableStruct /*0x1A*/ u8 unk1A[2]; }; -extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT]; +extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT]; struct ProtectStruct { @@ -318,7 +314,7 @@ struct ProtectStruct /* field_E */ u16 fieldE; }; -extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT]; +extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT]; struct SpecialStatus { @@ -340,7 +336,7 @@ struct SpecialStatus u8 field13; }; -extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT]; +extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT]; struct SideTimer { @@ -463,7 +459,7 @@ struct BattleResources struct BattleScriptsStack *AI_ScriptsStack; }; -extern struct BattleResources* gBattleResources; +extern struct BattleResources *gBattleResources; #define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) #define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) @@ -546,15 +542,12 @@ struct BattleStruct u8 field_8C; u8 field_8D; u8 stringMoveType; - u8 expGetterBank; + u8 expGetterBattlerId; u8 field_90; u8 field_91; - u8 field_92; - u8 field_93; - u8 wallyBattleState; - u8 wallyMovesState; - u8 wallyWaitFrames; - u8 wallyMoveFrames; + u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; + u8 field_96; + u8 field_97; u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; @@ -569,7 +562,6 @@ struct BattleStruct u8 field_B5; u8 field_B6; u8 atkCancellerTracker; - // void (*savedCallback)(void); u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? u8 AI_itemType[2]; @@ -859,8 +851,7 @@ struct BattleHealthboxInfo u8 specialAnimActive : 1; //x40 u8 flag_x80 : 1; u8 field_1_x1 : 1; - u8 field_1_x1E : 4; - u8 field_1_x20 : 1; + u8 field_1_x1E : 5; u8 field_1_x40 : 1; u8 field_1_x80 : 1; u8 healthboxBounceSpriteId; @@ -879,7 +870,7 @@ struct BattleBarInfo { u8 healthboxSpriteId; s32 maxValue; - s32 currentValue; + s32 oldValue; s32 receivedValue; s32 currValue; }; @@ -930,11 +921,11 @@ extern u16 gBattle_WIN0H; extern u16 gBattle_WIN0V; extern u16 gBattle_WIN1H; extern u16 gBattle_WIN1V; -extern struct BattleSpritesGfx* gMonSpritesGfx; +extern struct BattleSpritesGfx *gMonSpritesGfx; extern u8 gBattleOutcome; extern u16 gLastUsedItem; extern u32 gBattleTypeFlags; -extern struct MonSpritesGfx* gMonSpritesGfxPtr; +extern struct MonSpritesGfx *gMonSpritesGfxPtr; extern u16 gTrainerBattleOpponent_A; extern u16 gMoveToLearn; extern u16 gBattleMovePower; @@ -991,5 +982,7 @@ extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; extern u8 gCurrentActionFuncId; extern u8 gCurrMovePos; extern u8 gChosenMovePos; +extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; +extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index cf20bcd25..e3caeee3d 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -10,7 +10,6 @@ void CB2_QuitRecordedBattle(void); void sub_8038528(struct Sprite* sprite); void sub_8038A04(void); // unused void VBlankCB_Battle(void); -void nullsub_17(void); void sub_8038B74(struct Sprite *sprite); void sub_8038D64(void); u32 sub_80391E0(u8 arrayId, u8 caseId); @@ -48,6 +47,7 @@ void sub_800FD9C(void); void sub_80120C4(struct Sprite *); void sub_8012100(struct Sprite *); void nullsub_12(void); +void SpriteCB_FaintOpponentMon(struct Sprite *sprite); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 12df776be..aa51838e5 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,13 +3,19 @@ #include "global.h" +// return values for BattleAI_ChooseMoveOrAction +// 0 - 3 are move idx +#define AI_CHOICE_FLEE 4 +#define AI_CHOICE_WATCH 5 + void BattleAI_HandleItemUseBeforeAISetup(void); -void BattleAI_SetupAIData(u8 defaultScoreMoves); +void BattleAI_SetupAIData(void); u8 BattleAI_ChooseMoveOrAction(void); void ClearBankMoveHistory(u8 bank); void RecordAbilityBattle(u8 bank, u8 abilityId); void ClearBankAbilityHistory(u8 bank); void RecordItemEffectBattle(u8 bank, u8 itemEffect); void ClearBankItemEffectHistory(u8 bank); +u8 BattleAI_GetAIActionToUse(void); #endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 8e4f2a7ea..ef179cdd1 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -96,6 +96,9 @@ void sub_80A6B90(struct BattleAnimBgData *, u32 arg1); u8 sub_80A82E4(u8 bank); bool8 AnimateBallThrow(struct Sprite *sprite); +// battle_anim_special +void sub_80F1720(u8 battler, struct Pokemon *mon); + enum { BATTLER_COORD_X, @@ -125,7 +128,7 @@ bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); u8 sub_80A8364(u8); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); -void oamt_add_pos2_onto_pos1(struct Sprite *sprite); +void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); @@ -150,6 +153,7 @@ bool8 IsContest(void); void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); u8 GetBattlerSpriteSubpriority(u8 battlerId); +void StartAnimLinearTranslation(struct Sprite *sprite); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 758a6e52f..e49911cf1 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -174,6 +174,7 @@ enum CONTROLLER_CMDS_COUNT }; +extern struct UnusedControllerStruct gUnknown_2022870; // general functions void HandleLinkBattleSetup(void); @@ -243,6 +244,7 @@ void SetControllerToRecordedPlayer(void); // opponent controller void SetControllerToOpponent(void); +void OpponentBufferExecCompleted(void); // player partner controller void SetControllerToPlayerPartner(void); @@ -255,6 +257,11 @@ void SetControllerToPokedude(void); // oak controller void SetControllerToOakOrOldman(void); +bool8 sub_80EB2E0(u8); +void sub_80EB2F4(u8); +void sub_80E8570(void); +void sub_80E85C0(void); +void sub_80E8598(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_interface.h b/include/battle_interface.h index bdcb4d80e..162faa8cb 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -61,6 +61,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; +void Task_HidePartyStatusSummary(u8 taskId); u8 CreateBattlerHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); @@ -80,5 +81,6 @@ u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); void sub_80496C0(u8 spriteId, struct Pokemon *mon); void sub_804981C(u8 spriteId, u8); +s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/battle_tower.h b/include/battle_tower.h index ec00d1f96..78e3f8e43 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -6,5 +6,7 @@ u16 sub_8164FCC(u8, u8); void sub_80E7524(u32 *); void ValidateEReaderTrainer(void); +u8 GetBattleTowerTrainerFrontSpriteId(void); +u8 GetEreaderTrainerFrontSpriteId(void); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/pokemon.h b/include/pokemon.h index 6c20b967d..d3a7522c9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -50,7 +50,7 @@ #define MON_DATA_SPATK_IV 43 #define MON_DATA_SPDEF_IV 44 #define MON_DATA_IS_EGG 45 -#define MON_DATA_ALT_ABILITY 46 +#define MON_DATA_ABILITY_NUM 46 #define MON_DATA_TOUGH 47 #define MON_DATA_SHEEN 48 #define MON_DATA_OT_GENDER 49 @@ -244,7 +244,7 @@ struct PokemonSubstruct3 /* 0x05 */ u32 spAttackIV:5; /* 0x06 */ u32 spDefenseIV:5; /* 0x07 */ u32 isEgg:1; - /* 0x07 */ u32 altAbility:1; + /* 0x07 */ u32 abilityNum:1; /* 0x08 */ u32 coolRibbon:3; /* 0x08 */ u32 beautyRibbon:3; @@ -342,7 +342,7 @@ struct BattleTowerPokemon u32 spAttackIV:5; u32 spDefenseIV:5; u32 gap:1; - u32 altAbility:1; + u32 abilityNum:1; /*0x1C*/ u32 personality; /*0x20*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x2B*/ u8 friendship; @@ -366,7 +366,7 @@ struct BattlePokemon /*0x16*/ u32 spAttackIV:5; /*0x17*/ u32 spDefenseIV:5; /*0x17*/ u32 isEgg:1; - /*0x17*/ u32 altAbility:1; + /*0x17*/ u32 abilityNum:1; /*0x18*/ s8 statStages[BATTLE_STATS_NO]; /*0x20*/ u8 ability; /*0x21*/ u8 type1; @@ -598,7 +598,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); u8 GetMonsStateToDoubles(void); -u8 GetAbilityBySpecies(u16 species, bool8 altAbility); +u8 GetAbilityBySpecies(u16 species, bool8 abilityNum); u8 GetMonAbility(struct Pokemon *mon); u8 GetSecretBaseTrainerPicIndex(void); u8 GetSecretBaseTrainerNameIndex(void); diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 5e7a90208..9cca2ea76 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -4,5 +4,6 @@ void PrintTrainerTowerRecords(void); void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); +u8 GetTrainerTowerTrainerFrontSpriteId(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/ld_script.txt b/ld_script.txt index 9254128fa..35b80253b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -72,7 +72,7 @@ SECTIONS { src/battle_util2.o(.text); asm/battle_controller_player.o(.text); src/battle_gfx_sfx_util.o(.text); - asm/battle_controller_opponent.o(.text); + src/battle_controller_opponent.o(.text); asm/battle_ai_switch_items.o(.text); asm/battle_controller_link_opponent.o(.text); src/pokemon.o(.text); @@ -382,6 +382,8 @@ SECTIONS { data/data.o(.rodata); src/battle_util.o(.rodata); data/data.o(.rodata.825011C); + src/battle_controller_opponent.o(.rodata); + data/data.o(.rodata.8250B20); src/pokemon.o(.rodata); src/trig.o(.rodata); src/util.o(.rodata); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c new file mode 100644 index 000000000..25c6ffcb9 --- /dev/null +++ b/src/battle_controller_opponent.c @@ -0,0 +1,1788 @@ +#include "global.h" +#include "bg.h" +#include "data2.h" +#include "item.h" +#include "link.h" +#include "main.h" +#include "m4a.h" +#include "task.h" +#include "text.h" +#include "util.h" +#include "window.h" +#include "palette.h" +#include "pokeball.h" +#include "pokemon.h" +#include "random.h" +#include "sound.h" +#include "string_util.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_message.h" +#include "battle_interface.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "battle_gfx_sfx_util.h" +#include "battle_ai_script_commands.h" +#include "battle_ai_switch_items.h" +#include "trainer_tower.h" +#include "reshow_battle_screen.h" +#include "constants/battle_anim.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" + +static void OpponentHandleGetMonData(void); +static void OpponentHandleGetRawMonData(void); +static void OpponentHandleSetMonData(void); +static void OpponentHandleSetRawMonData(void); +static void OpponentHandleLoadMonSprite(void); +static void OpponentHandleSwitchInAnim(void); +static void OpponentHandleReturnMonToBall(void); +static void OpponentHandleDrawTrainerPic(void); +static void OpponentHandleTrainerSlide(void); +static void OpponentHandleTrainerSlideBack(void); +static void OpponentHandleFaintAnimation(void); +static void OpponentHandlePaletteFade(void); +static void OpponentHandleSuccessBallThrowAnim(void); +static void OpponentHandleBallThrow(void); +static void OpponentHandlePause(void); +static void OpponentHandleMoveAnimation(void); +static void OpponentHandlePrintString(void); +static void OpponentHandlePrintSelectionString(void); +static void OpponentHandleChooseAction(void); +static void OpponentHandleUnknownYesNoBox(void); +static void OpponentHandleChooseMove(void); +static void OpponentHandleChooseItem(void); +static void OpponentHandleChoosePokemon(void); +static void OpponentHandleCmd23(void); +static void OpponentHandleHealthBarUpdate(void); +static void OpponentHandleExpUpdate(void); +static void OpponentHandleStatusIconUpdate(void); +static void OpponentHandleStatusAnimation(void); +static void OpponentHandleStatusXor(void); +static void OpponentHandleDataTransfer(void); +static void OpponentHandleDMA3Transfer(void); +static void OpponentHandlePlayBGM(void); +static void OpponentHandleCmd32(void); +static void OpponentHandleTwoReturnValues(void); +static void OpponentHandleChosenMonReturnValue(void); +static void OpponentHandleOneReturnValue(void); +static void OpponentHandleOneReturnValue_Duplicate(void); +static void OpponentHandleCmd37(void); +static void OpponentHandleCmd38(void); +static void OpponentHandleCmd39(void); +static void OpponentHandleCmd40(void); +static void OpponentHandleHitAnimation(void); +static void OpponentHandleCmd42(void); +static void OpponentHandlePlaySE(void); +static void OpponentHandlePlayFanfare(void); +static void OpponentHandleFaintingCry(void); +static void OpponentHandleIntroSlide(void); +static void OpponentHandleIntroTrainerBallThrow(void); +static void OpponentHandleDrawPartyStatusSummary(void); +static void OpponentHandleHidePartyStatusSummary(void); +static void OpponentHandleEndBounceEffect(void); +static void OpponentHandleSpriteInvisibility(void); +static void OpponentHandleBattleAnimation(void); +static void OpponentHandleLinkStandbyMsg(void); +static void OpponentHandleResetActionMoveSelection(void); +static void OpponentHandleCmd55(void); +static void OpponentCmdEnd(void); + +static void OpponentBufferRunCommand(void); +static u32 GetOpponentMonData(u8 monId, u8 *dst); +static void SetOpponentMonData(u8 monId); +static void DoSwitchOutAnimation(void); +static void OpponentDoMoveAnimation(void); +static void sub_80362E8(void); +static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit); +static void sub_8038DC4(u8 taskId); +static void sub_8038D90(struct Sprite *sprite); +static void sub_8038FBC(void); + +static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + OpponentHandleGetMonData, + OpponentHandleGetRawMonData, + OpponentHandleSetMonData, + OpponentHandleSetRawMonData, + OpponentHandleLoadMonSprite, + OpponentHandleSwitchInAnim, + OpponentHandleReturnMonToBall, + OpponentHandleDrawTrainerPic, + OpponentHandleTrainerSlide, + OpponentHandleTrainerSlideBack, + OpponentHandleFaintAnimation, + OpponentHandlePaletteFade, + OpponentHandleSuccessBallThrowAnim, + OpponentHandleBallThrow, + OpponentHandlePause, + OpponentHandleMoveAnimation, + OpponentHandlePrintString, + OpponentHandlePrintSelectionString, + OpponentHandleChooseAction, + OpponentHandleUnknownYesNoBox, + OpponentHandleChooseMove, + OpponentHandleChooseItem, + OpponentHandleChoosePokemon, + OpponentHandleCmd23, + OpponentHandleHealthBarUpdate, + OpponentHandleExpUpdate, + OpponentHandleStatusIconUpdate, + OpponentHandleStatusAnimation, + OpponentHandleStatusXor, + OpponentHandleDataTransfer, + OpponentHandleDMA3Transfer, + OpponentHandlePlayBGM, + OpponentHandleCmd32, + OpponentHandleTwoReturnValues, + OpponentHandleChosenMonReturnValue, + OpponentHandleOneReturnValue, + OpponentHandleOneReturnValue_Duplicate, + OpponentHandleCmd37, + OpponentHandleCmd38, + OpponentHandleCmd39, + OpponentHandleCmd40, + OpponentHandleHitAnimation, + OpponentHandleCmd42, + OpponentHandlePlaySE, + OpponentHandlePlayFanfare, + OpponentHandleFaintingCry, + OpponentHandleIntroSlide, + OpponentHandleIntroTrainerBallThrow, + OpponentHandleDrawPartyStatusSummary, + OpponentHandleHidePartyStatusSummary, + OpponentHandleEndBounceEffect, + OpponentHandleSpriteInvisibility, + OpponentHandleBattleAnimation, + OpponentHandleLinkStandbyMsg, + OpponentHandleResetActionMoveSelection, + OpponentHandleCmd55, + OpponentCmdEnd +}; + +// not used +static const u8 gUnknown_8250B18[] = { 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 }; + +static void nullsub_17(void) +{ +} + +void SetControllerToOpponent(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand; +} + +static void OpponentBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOpponentBufferCommands)) + sOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + OpponentBufferExecCompleted(); + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +static void CompleteOnBattlerSpriteCallbackDummy2(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OpponentBufferExecCompleted(); +} + +static void sub_8035B58(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + FreeTrainerFrontPicPaletteAndTile(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5]; + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + OpponentBufferExecCompleted(); + } +} + +static void sub_8035BE8(void) +{ + if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + OpponentBufferExecCompleted(); + } +} + +static void sub_8035C30(void) +{ + bool8 var = FALSE; + + if (!IsDoubleBattle() || ((IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))) + { + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + var = TRUE; + } + else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == gSprites[gHealthboxSpriteIds[gActiveBattler]].callback) + { + var = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + var = FALSE; + if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlayInfo_BGM); + else + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3; + gBattlerControllerFuncs[gActiveBattler] = sub_8035BE8; + } +} + +static void sub_8035DF0(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_8035C30; + } +} + +static void sub_8035FE8(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE + && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + { + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + } + else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + OpponentBufferExecCompleted(); + } + } +} + +static void CompleteOnHealthbarDone(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + if (!sub_80EB2E0(1) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)) + { + sub_80EB2F4(1); + gBattlerControllerFuncs[gActiveBattler] = sub_80E8570; + } + else + { + OpponentBufferExecCompleted(); + } + } +} + +static void sub_803612C(void) +{ + if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse) + { + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OpponentBufferExecCompleted(); + } +} + +static void sub_8036170(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + HideBattlerShadowSprite(gActiveBattler); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OpponentBufferExecCompleted(); + } +} + +static void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + OpponentBufferExecCompleted(); +} + +static void DoHitAnimBlinkSpriteEffect(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + OpponentBufferExecCompleted(); + } + else + { + if ((gSprites[spriteId].data[1] % 4) == 0) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +static void sub_8036278(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattlerControllerFuncs[gActiveBattler] = sub_80362E8; + } +} + +static void sub_80362E8(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + OpponentBufferExecCompleted(); + } +} + +static void sub_8036334(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + CopyBattleSpriteInvisibility(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_8036278; + } +} + +static void sub_8036408(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattlerControllerFuncs[gActiveBattler] = sub_8036334; + } +} + +static void CompleteOnFinishedStatusAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + OpponentBufferExecCompleted(); +} + +static void CompleteOnFinishedBattleAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + OpponentBufferExecCompleted(); +} + +void OpponentBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand; + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; +} + +static void OpponentHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (!gBattleBufferA[gActiveBattler][2]) + { + size += GetOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += GetOpponentMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + OpponentBufferExecCompleted(); +} + +static u32 GetOpponentMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gEnemyParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gEnemyParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gEnemyParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gEnemyParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gEnemyParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gEnemyParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + src = (u8*)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +static void OpponentHandleGetRawMonData(void) +{ + struct BattlePokemon battleMon; + u8 *src = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = src[i]; + BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + SetOpponentMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetOpponentMonData(i); + monToCheck >>= 1; + } + } + OpponentBufferExecCompleted(); +} + +static void SetOpponentMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gEnemyParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } +} + +static void OpponentHandleSetRawMonData(void) +{ + u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = gBattleBufferA[gActiveBattler][3 + i]; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleLoadMonSprite(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + u32 y; + + if (gBattleTypeFlags & BATTLE_TYPE_GHOST) + { + DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + y = GetGhostSpriteDefault_Y(gActiveBattler); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 1; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 1; + } + else + { + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + y = GetBattlerSpriteDefault_Y(gActiveBattler); + } + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(gActiveBattler, 2), + y, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]); + if (!(gBattleTypeFlags & BATTLE_TYPE_GHOST)) + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattlerControllerFuncs[gActiveBattler] = sub_8035FE8; +} + +static void OpponentHandleSwitchInAnim(void) +{ + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6; + gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; + sub_8037A28(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerControllerFuncs[gActiveBattler] = sub_8036408; +} + +static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit) +{ + u16 species; + + ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit); + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT); +} + +static void OpponentHandleReturnMonToBall(void) +{ + if (!gBattleBufferA[gActiveBattler][1]) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + HideBattlerShadowSprite(gActiveBattler); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OpponentBufferExecCompleted(); + } +} + +static void DoSwitchOutAnimation(void) +{ + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_8036170; + } + break; + } +} + +static void OpponentHandleDrawTrainerPic(void) +{ + u32 trainerPicId; + + if (gTrainerBattleOpponent_A == 0x400) + trainerPicId = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicId = GetBattleTowerTrainerFrontSpriteId(); + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + trainerPicId = GetTrainerTowerTrainerFrontSpriteId(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicId = GetEreaderTrainerFrontSpriteId(); + else + trainerPicId = gTrainers[gTrainerBattleOpponent_A].trainerPic; + DecompressTrainerFrontPic(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 176, + (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void OpponentHandleTrainerSlide(void) +{ + u32 trainerPicId; + + if (gTrainerBattleOpponent_A == 0x400) + trainerPicId = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicId = GetBattleTowerTrainerFrontSpriteId(); + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + trainerPicId = GetTrainerTowerTrainerFrontSpriteId(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicId = GetEreaderTrainerFrontSpriteId(); + else + trainerPicId = gTrainers[gTrainerBattleOpponent_A].trainerPic; + DecompressTrainerFrontPic(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 176, + (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, + 30); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2; +} + +static void OpponentHandleTrainerSlideBack(void) +{ + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); + gBattlerControllerFuncs[gActiveBattler] = sub_8035B58; +} + +static void OpponentHandleFaintAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; + gBattlerControllerFuncs[gActiveBattler] = sub_803612C; + } + } +} + +static void OpponentHandlePaletteFade(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleSuccessBallThrowAnim(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleBallThrow(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandlePause(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE + { + OpponentBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation; + } + } +} + +static void OpponentDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + u8 multihit = gBattleBufferA[gActiveBattler][11]; + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + { + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0; + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + OpponentBufferExecCompleted(); + } + break; + } +} + +static void OpponentHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + switch (*stringId) + { + case 0x17F: + gBattlerControllerFuncs[gActiveBattler] = sub_80E85C0; + return; + case 0xE3: + gBattlerControllerFuncs[gActiveBattler] = sub_80E8598; + return; + } + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; +} + +static void OpponentHandlePrintSelectionString(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleChooseAction(void) +{ + AI_TrySwitchOrUseItem(); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleUnknownYesNoBox(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleChooseMove(void) +{ + u8 chosenMoveId; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + + if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER)) + { + + BattleAI_SetupAIData(); + chosenMoveId = BattleAI_GetAIActionToUse(); + + switch (chosenMoveId) + { + case AI_CHOICE_WATCH: + BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0); + break; + case AI_CHOICE_FLEE: + BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); + break; + default: + if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + gBattlerTarget = gActiveBattler; + if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH) + { + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8)); + break; + } + OpponentBufferExecCompleted(); + } + else + { + u16 move; + + do + { + chosenMoveId = Random() & 3; + move = moveInfo->moves[chosenMoveId]; + } + while (move == MOVE_NONE); + if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8)); + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8)); + else + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8)); + + OpponentBufferExecCompleted(); + } +} + +static void OpponentHandleChooseItem(void) +{ + BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2)); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleChoosePokemon(void) +{ + s32 chosenMonId; + + if (*(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) == PARTY_SIZE) + { + chosenMonId = GetMostSuitableMonToSwitchInto(); + + if (chosenMonId == PARTY_SIZE) + { + s32 battler1, battler2; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + battler2 = battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + } + else + { + battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + for (chosenMonId = 0; chosenMonId < 6; ++chosenMonId) + if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 + && chosenMonId != gBattlerPartyIndexes[battler1] + && chosenMonId != gBattlerPartyIndexes[battler2]) + break; + } + } + else + { + chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)); + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; + } + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; + BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd23(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = (gBattleBufferA[gActiveBattler][3] << 8) | gBattleBufferA[gActiveBattler][2]; + + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void OpponentHandleExpUpdate(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 battlerId; + + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); + battlerId = gActiveBattler; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void OpponentHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24)); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void OpponentHandleStatusXor(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleDataTransfer(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleDMA3Transfer(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandlePlayBGM(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd32(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleTwoReturnValues(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleChosenMonReturnValue(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleOneReturnValue(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleOneReturnValue_Duplicate(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd37(void) +{ + gUnknown_2022870.field_0 = 0; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd38(void) +{ + gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1]; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd39(void) +{ + gUnknown_2022870.flag_x80 = 0; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd40(void) +{ + gUnknown_2022870.flag_x80 ^= 1; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + OpponentBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void OpponentHandleCmd42(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandlePlaySE(void) +{ + s8 pan; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan); + OpponentBufferExecCompleted(); +} + +static void OpponentHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleFaintingCry(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry3(species, 25, 5); + OpponentBufferExecCompleted(); +} + +static void OpponentHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8038D90); + taskId = CreateTask(sub_8038DC4, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_17; +} + +static void sub_8038D90(struct Sprite *sprite) +{ + FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam); + sprite->oam.tileNum = sprite->data[5]; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +static void sub_8038DC4(u8 taskId) +{ + u8 savedActiveBattler = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_8037A28(gActiveBattler, FALSE); + } + else + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_8037A28(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_8037A28(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + } + gBattlerControllerFuncs[gActiveBattler] = sub_8035DF0; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); +} + +static void OpponentHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + OpponentBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1; + if (gBattleBufferA[gActiveBattler][2]) + { + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E <= 1) + { + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E; + return; + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0; + } + } + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, + (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], + gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2]); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + if (gBattleBufferA[gActiveBattler][2]) + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D; + gBattlerControllerFuncs[gActiveBattler] = sub_8038FBC; + } +} + +static void sub_8038FBC(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + OpponentBufferExecCompleted(); + } +} + +static void OpponentHandleHidePartyStatusSummary(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + OpponentBufferExecCompleted(); +} + +static void OpponentHandleEndBounceEffect(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleSpriteInvisibility(void) +{ + if (IsBattlerSpritePresent(gActiveBattler)) + { + gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1]; + CopyBattleSpriteInvisibility(gActiveBattler); + } + OpponentBufferExecCompleted(); +} + +static void OpponentHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + OpponentBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; + } +} + +static void OpponentHandleLinkStandbyMsg(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleResetActionMoveSelection(void) +{ + OpponentBufferExecCompleted(); +} + +static void OpponentHandleCmd55(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)) + { + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + OpponentBufferExecCompleted(); +} + +static void OpponentCmdEnd(void) +{ +} diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 1e2fe6ee0..2246f17bb 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -260,7 +260,7 @@ static void sub_80DD7B0(void) } } -static void CompleteOnSpecialAnimDone_0(void) +static void CompleteOnSpecialAnimDone(void) { if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) SafariBufferExecCompleted(); @@ -281,7 +281,7 @@ static void CompleteWhenChosePokeblock(void) } } -static void CompleteOnFinishedBattleAnimation_3(void) +static void CompleteOnFinishedBattleAnimation(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) SafariBufferExecCompleted(); @@ -304,7 +304,7 @@ static void SafariBufferExecCompleted(void) } // not used -static void CompleteOnFinishedStatusAnimation_3(void) +static void CompleteOnFinishedStatusAnimation(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) SafariBufferExecCompleted(); @@ -385,7 +385,7 @@ static void SafariHandleSuccessBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); - gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } static void SafariHandleBallThrowAnim(void) @@ -395,7 +395,7 @@ static void SafariHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); - gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } static void SafariHandlePause(void) @@ -649,7 +649,7 @@ static void SafariHandleBattleAnimation(void) if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) SafariBufferExecCompleted(); else - gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation_3; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; } static void SafariHandleLinkStandbyMsg(void) diff --git a/src/pokemon.c b/src/pokemon.c index ec90f6cd4..5f26881ab 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1791,7 +1791,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, if (gBaseStats[species].abilities[1]) { value = personality & 1; - SetBoxMonData(boxMon, MON_DATA_ALT_ABILITY, &value); + SetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, &value); } GiveBoxMonInitialMoveset(boxMon); @@ -1940,8 +1940,8 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src) SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV); SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV); SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV); - value = src->altAbility; - SetMonData(mon, MON_DATA_ALT_ABILITY, &value); + value = src->abilityNum; + SetMonData(mon, MON_DATA_ABILITY_NUM, &value); value = src->hpIV; SetMonData(mon, MON_DATA_HP_IV, &value); value = src->attackIV; @@ -1997,7 +1997,7 @@ void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest) dest->speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); dest->spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); dest->spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); - dest->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY, NULL); + dest->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL); dest->personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); GetMonData(mon, MON_DATA_NICKNAME, dest->nickname); } @@ -3099,8 +3099,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_IS_EGG: retVal = substruct3->isEgg; break; - case MON_DATA_ALT_ABILITY: - retVal = substruct3->altAbility; + case MON_DATA_ABILITY_NUM: + retVal = substruct3->abilityNum; break; case MON_DATA_COOL_RIBBON: retVal = substruct3->coolRibbon; @@ -3502,8 +3502,8 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) else boxMon->isEgg = 0; break; - case MON_DATA_ALT_ABILITY: - SET8(substruct3->altAbility); + case MON_DATA_ABILITY_NUM: + SET8(substruct3->abilityNum); break; case MON_DATA_COOL_RIBBON: SET8(substruct3->coolRibbon); @@ -3698,9 +3698,9 @@ u8 GetMonsStateToDoubles(void) return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON; } -u8 GetAbilityBySpecies(u16 species, bool8 altAbility) +u8 GetAbilityBySpecies(u16 species, bool8 abilityNum) { - if (altAbility) + if (abilityNum) gLastUsedAbility = gBaseStats[species].abilities[1]; else gLastUsedAbility = gBaseStats[species].abilities[0]; @@ -3711,8 +3711,8 @@ u8 GetAbilityBySpecies(u16 species, bool8 altAbility) u8 GetMonAbility(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); - u8 altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY, NULL); - return GetAbilityBySpecies(species, altAbility); + u8 abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL); + return GetAbilityBySpecies(species, abilityNum); } static void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord) @@ -3858,11 +3858,11 @@ static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex) gBattleMons[battlerId].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL); gBattleMons[battlerId].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL); gBattleMons[battlerId].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL); - gBattleMons[battlerId].altAbility = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ALT_ABILITY, NULL); + gBattleMons[battlerId].abilityNum = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ABILITY_NUM, NULL); gBattleMons[battlerId].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID, NULL); gBattleMons[battlerId].type1 = gBaseStats[gBattleMons[battlerId].species].type1; gBattleMons[battlerId].type2 = gBaseStats[gBattleMons[battlerId].species].type2; - gBattleMons[battlerId].ability = GetAbilityBySpecies(gBattleMons[battlerId].species, gBattleMons[battlerId].altAbility); + gBattleMons[battlerId].ability = GetAbilityBySpecies(gBattleMons[battlerId].species, gBattleMons[battlerId].abilityNum); GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname); StringCopy10(gBattleMons[battlerId].nickname, nickname); GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[battlerId].otName); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 0415990c6..a1eedf2ac 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -626,7 +626,7 @@ void sub_815DA28(u8 * dest) StringCopyN(dest, gUnknown_203F45C->unk_00, 11); } -u8 sub_815DA3C(void) +u8 GetTrainerTowerTrainerFrontSpriteId(void) { return gFacilityClassToPicIndex[gUnknown_203F45C->unk_3D]; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 9ce1e58a3..871551522 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -405,7 +405,7 @@ gActionSelectionCursor: @ 2023FF8 gMoveSelectionCursor: @ 2023FFC .space 0x4 -gUnknown_2024000: @ 2024000 +gBattlerStatusSummaryTaskId: @ 2024000 .space 0x4 gBattlerInMenuId: @ 2024004 @@ -717,10 +717,10 @@ gAnimMovePower: @ 2037EEC gUnknown_2037EEE: @ 2037EEE .space 0x10 -gUnknown_2037EFE: @ 2037EFE +gAnimFriendship: @ 2037EFE .space 0x2 -gUnknown_2037F00: @ 2037F00 +gWeatherMoveAnim: @ 2037F00 .space 0x2 gBattleAnimArgs: @ 2037F02 From 8fed9a5f205cec0d86149a908d64f73316cbb1f4 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 07:44:51 +0800 Subject: [PATCH 015/100] quick review on battle_ai_script_commands --- data/battle_ai_scripts.s | 2 +- include/battle.h | 1 + include/battle_ai_script_commands.h | 2 +- src/battle_ai_script_commands.c | 76 ++++++++++++++--------------- src/battle_controller_opponent.c | 2 +- 5 files changed, 41 insertions(+), 42 deletions(-) diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index 944275acc..09cc3cfb2 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -4,7 +4,7 @@ .section script_data, "aw", %progbits -BattleAIs:: @ 81D9BF4 +gBattleAI_ScriptsTable:: @ 81D9BF4 .4byte AI_CheckBadMove .4byte AI_TryToFaint .4byte AI_CheckViability diff --git a/include/battle.h b/include/battle.h index 445902b39..cf975c6a5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -984,5 +984,6 @@ extern u8 gCurrMovePos; extern u8 gChosenMovePos; extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; +extern u16 gDynamicBasePower; #endif // GUARD_BATTLE_H diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index aa51838e5..94cbcce15 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -16,6 +16,6 @@ void RecordAbilityBattle(u8 bank, u8 abilityId); void ClearBankAbilityHistory(u8 bank); void RecordItemEffectBattle(u8 bank, u8 itemEffect); void ClearBankItemEffectHistory(u8 bank); -u8 BattleAI_GetAIActionToUse(void); +u8 BattleAI_ChooseMoveOrAction(void); #endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 1be10d228..c675e45fe 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1,16 +1,17 @@ #include "global.h" #include "battle.h" +#include "battle_2.h" +#include "util.h" #include "item.h" +#include "random.h" #include "pokemon.h" +#include "battle_ai_script_commands.h" #include "constants/species.h" #include "constants/abilities.h" #include "constants/battle_ai.h" #include "constants/battle_move_effects.h" #include "constants/moves.h" -extern u16 Random(void); -extern void sub_80C7164(void); - #define AI_ACTION_DONE 0x0001 #define AI_ACTION_FLEE 0x0002 #define AI_ACTION_WATCH 0x0004 @@ -32,8 +33,16 @@ enum AIState_DoNotProcess }; +/* +gAIScriptPtr is a pointer to the next battle AI cmd command to read. +when a command finishes processing, gAIScriptPtr is incremented by +the number of bytes that the current command had reserved for arguments +in order to read the next command correctly. refer to battle_ai_scripts.s for the +AI scripts. +*/ + extern const u8 *gAIScriptPtr; -extern u8 *BattleAIs[]; +extern u8 *gBattleAI_ScriptsTable[]; static void BattleAICmd_if_random_less_than(void); static void BattleAICmd_if_random_greater_than(void); @@ -130,6 +139,11 @@ static void BattleAICmd_if_level_compare(void); static void BattleAICmd_if_taunted(void); static void BattleAICmd_if_not_taunted(void); +static void RecordLastUsedMoveByTarget(void); +static void BattleAI_DoAIProcessing(void); +static void AIStackPushVar(const u8 *ptr); +static bool8 AIStackPop(void); + typedef void (*BattleAICmdFunc)(void); static const BattleAICmdFunc sBattleAICmdTable[] = @@ -247,23 +261,6 @@ static const u16 sDiscouragedPowerfulMoveEffects[] = 0xFFFF }; -// TODO: move these -extern u8 gBattlerAttacker; -extern const u32 gBitTable[]; // util.h -extern u32 gStatuses3[]; // battle_2.h -extern u16 gSideStatuses[2]; -extern const struct BattleMove gBattleMoves[]; -extern u16 gDynamicBasePower; -extern u8 gMoveResultFlags; -extern u8 gCritMultiplier; -extern u16 gCurrentMove; -extern s32 gBattleMoveDamage; - -void BattleAI_SetupAIData(void); -void BattleAI_DoAIProcessing(void); -void AIStackPushVar(const u8 *ptr); -bool8 AIStackPop(void); - void BattleAI_HandleItemUseBeforeAISetup(void) { s32 i; @@ -274,9 +271,9 @@ void BattleAI_HandleItemUseBeforeAISetup(void) // Items are allowed to use in ONLY trainer battles. // TODO: Use proper flags - if ((gBattleTypeFlags & 0x8) + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) && (gTrainerBattleOpponent_A != 0x400) - && !(gBattleTypeFlags & 0x80982) + && !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_LINK)) ) { for (i = 0; i < 4; i++) @@ -366,14 +363,14 @@ void BattleAI_SetupAIData(void) AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags; } -u8 BattleAI_GetAIActionToUse(void) +u8 BattleAI_ChooseMoveOrAction(void) { u8 currentMoveArray[MAX_MON_MOVES]; u8 consideredMoveArray[MAX_MON_MOVES]; u8 numOfBestMoves; s32 i; - sub_80C7164(); + RecordLastUsedMoveByTarget(); while (AI_THINKING_STRUCT->aiFlags != 0) { if (AI_THINKING_STRUCT->aiFlags & 1) @@ -414,7 +411,7 @@ u8 BattleAI_GetAIActionToUse(void) return consideredMoveArray[Random() % numOfBestMoves]; // break any ties that exist. } -void BattleAI_DoAIProcessing(void) +static void BattleAI_DoAIProcessing(void) { while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing) { @@ -423,7 +420,7 @@ void BattleAI_DoAIProcessing(void) case AIState_DoNotProcess: //Needed to match. break; case AIState_SettingUp: - gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr. + gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr. if (gBattleMons[gBattlerAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0) { AI_THINKING_STRUCT->moveConsidered = 0; // don't consider a move you have 0 PP for, idiot. @@ -457,7 +454,7 @@ void BattleAI_DoAIProcessing(void) } } -void sub_80C7164(void) +static void RecordLastUsedMoveByTarget(void) { s32 i; @@ -471,24 +468,25 @@ void sub_80C7164(void) } } -void sub_80C71A8(u8 a) +// not used +static void ClearBattlerMoveHistory(u8 battlerId) { s32 i; for (i = 0; i < 8; i++) - BATTLE_HISTORY->usedMoves[a / 2][i] = 0; + BATTLE_HISTORY->usedMoves[battlerId / 2][i] = MOVE_NONE; } -void RecordAbilityBattle(u8 a, u8 b) +void RecordAbilityBattle(u8 battlerId, u8 abilityId) { - if (GetBattlerSide(a) == 0) - BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b; + if (GetBattlerSide(battlerId) == 0) + BATTLE_HISTORY->abilities[GetBattlerPosition(battlerId) & 1] = abilityId; } -void RecordItemEffectBattle(u8 a, u8 b) +void RecordItemEffectBattle(u8 battlerId, u8 itemEffect) { - if (GetBattlerSide(a) == 0) - BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b; + if (GetBattlerSide(battlerId) == 0) + BATTLE_HISTORY->itemEffects[GetBattlerPosition(battlerId) & 1] = itemEffect; } static void BattleAICmd_if_random_less_than(void) @@ -1944,18 +1942,18 @@ static void BattleAICmd_if_not_taunted(void) gAIScriptPtr += 5; } -void AIStackPushVar(const u8 *var) +static void AIStackPushVar(const u8 *var) { gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = var; } // unused -void AIStackPushVar_cursor(void) +static void AIStackPushVar_cursor(void) { gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = gAIScriptPtr; } -bool8 AIStackPop(void) +static bool8 AIStackPop(void) { if (gBattleResources->AI_ScriptsStack->size != 0) { diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 25c6ffcb9..535715999 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1367,7 +1367,7 @@ static void OpponentHandleChooseMove(void) { BattleAI_SetupAIData(); - chosenMoveId = BattleAI_GetAIActionToUse(); + chosenMoveId = BattleAI_ChooseMoveOrAction(); switch (chosenMoveId) { From 5568895b043dc37e95be0e99787541d78a7c6fee Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 23:59:41 +0800 Subject: [PATCH 016/100] ported battle_ai_switch_items from pokeem --- asm/battle_2.s | 28 +- asm/battle_ai_switch_items.s | 2654 ------------------------------ asm/battle_script_commands.s | 88 +- data/data.s | 2 +- include/battle.h | 5 +- include/battle_2.h | 2 + ld_script.txt | 2 +- src/battle_ai_switch_items.c | 734 +++++++++ src/battle_controller_opponent.c | 2 +- sym_ewram.txt | 4 +- 10 files changed, 801 insertions(+), 2720 deletions(-) delete mode 100644 asm/battle_ai_switch_items.s create mode 100644 src/battle_ai_switch_items.c diff --git a/asm/battle_2.s b/asm/battle_2.s index d4fb29c16..114aeebd7 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4847,7 +4847,7 @@ sub_8012434: @ 8012434 mov r10, r0 ldr r1, _080126D0 @ =gUnknown_2023DA8 mov r12, r1 - ldr r0, _080126D4 @ =gUnknown_2023DA0 + ldr r0, _080126D4 @ =gLastLandedMoves mov r9, r0 ldr r1, _080126D8 @ =gLastMoves mov r8, r1 @@ -4879,7 +4879,7 @@ _0801246C: strh r3, [r0] mov r1, r10 strh r3, [r1] - ldr r0, _080126F0 @ =gUnknown_2023DC0 + ldr r0, _080126F0 @ =gLastHitBy adds r1, r2, r0 movs r0, 0xFF strb r0, [r1] @@ -5173,14 +5173,14 @@ _080126AE: .align 2, 0 _080126CC: .4byte gUnknown_2023DB0 _080126D0: .4byte gUnknown_2023DA8 -_080126D4: .4byte gUnknown_2023DA0 +_080126D4: .4byte gLastLandedMoves _080126D8: .4byte gLastMoves _080126DC: .4byte gDisableStructs _080126E0: .4byte gUnknown_2023D90 _080126E4: .4byte gUnknown_2023DB8 _080126E8: .4byte gStatuses3 _080126EC: .4byte gUnknown_2023DD4 -_080126F0: .4byte gUnknown_2023DC0 +_080126F0: .4byte gLastHitBy _080126F4: .4byte gBattleResources _080126F8: .4byte gSideTimers _080126FC: .4byte gSideStatuses @@ -5585,7 +5585,7 @@ _08012A1A: strh r2, [r0] ldrb r0, [r1] lsls r0, 1 - ldr r6, _08012BB0 @ =gUnknown_2023DA0 + ldr r6, _08012BB0 @ =gLastLandedMoves adds r0, r6 strh r2, [r0] ldrb r0, [r1] @@ -5606,7 +5606,7 @@ _08012A1A: strh r2, [r0] mov r1, r12 ldrb r0, [r1] - ldr r2, _08012BC0 @ =gUnknown_2023DC0 + ldr r2, _08012BC0 @ =gLastHitBy adds r0, r2 movs r1, 0xFF strb r1, [r0] @@ -5758,11 +5758,11 @@ _08012BA0: .4byte gCurrentMove _08012BA4: .4byte gBattleMoves _08012BA8: .4byte gMoveResultFlags _08012BAC: .4byte gLastMoves -_08012BB0: .4byte gUnknown_2023DA0 +_08012BB0: .4byte gLastLandedMoves _08012BB4: .4byte gUnknown_2023DA8 _08012BB8: .4byte gUnknown_2023DB0 _08012BBC: .4byte gUnknown_2023D90 -_08012BC0: .4byte gUnknown_2023DC0 +_08012BC0: .4byte gLastHitBy _08012BC4: .4byte gBattleResources thumb_func_end sub_8012760 @@ -6053,7 +6053,7 @@ _08012CA8: strh r2, [r0] ldrb r0, [r7] lsls r0, 1 - ldr r1, _08012F90 @ =gUnknown_2023DA0 + ldr r1, _08012F90 @ =gLastLandedMoves adds r0, r1 strh r2, [r0] ldrb r0, [r7] @@ -6072,7 +6072,7 @@ _08012CA8: adds r0, r1 strh r2, [r0] ldrb r0, [r7] - ldr r2, _08012FA0 @ =gUnknown_2023DC0 + ldr r2, _08012FA0 @ =gLastHitBy adds r0, r2 movs r1, 0xFF strb r1, [r0] @@ -6250,11 +6250,11 @@ _08012F80: .4byte 0xfbffffff _08012F84: .4byte gBattleStruct _08012F88: .4byte 0xffff1fff _08012F8C: .4byte gLastMoves -_08012F90: .4byte gUnknown_2023DA0 +_08012F90: .4byte gLastLandedMoves _08012F94: .4byte gUnknown_2023DA8 _08012F98: .4byte gUnknown_2023DB0 _08012F9C: .4byte gUnknown_2023D90 -_08012FA0: .4byte gUnknown_2023DC0 +_08012FA0: .4byte gLastHitBy _08012FA4: .4byte gBattleResources _08012FA8: .4byte gBaseStats thumb_func_end sub_8012BC8 @@ -13836,7 +13836,7 @@ HandleAction_ActionFinished: @ 8016D70 ldr r5, _08016E04 @ =gBattleScripting strb r1, [r5, 0x18] strb r1, [r5, 0x19] - ldr r2, _08016E08 @ =gUnknown_2023DA0 + ldr r2, _08016E08 @ =gLastLandedMoves ldr r3, _08016E0C @ =gBattlerAttacker ldrb r0, [r3] lsls r0, 1 @@ -13875,7 +13875,7 @@ _08016DF8: .4byte gCurrentMove _08016DFC: .4byte gBattleMoveDamage _08016E00: .4byte gMoveResultFlags _08016E04: .4byte gBattleScripting -_08016E08: .4byte gUnknown_2023DA0 +_08016E08: .4byte gLastLandedMoves _08016E0C: .4byte gBattlerAttacker _08016E10: .4byte gUnknown_2023DA8 _08016E14: .4byte gBattleStruct diff --git a/asm/battle_ai_switch_items.s b/asm/battle_ai_switch_items.s deleted file mode 100644 index 58acf73c2..000000000 --- a/asm/battle_ai_switch_items.s +++ /dev/null @@ -1,2654 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ShouldSwitchIfPerishSong -ShouldSwitchIfPerishSong: @ 8039188 - push {lr} - ldr r1, _080391D4 @ =gStatuses3 - ldr r0, _080391D8 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080391E4 - ldr r0, _080391DC @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xF] - lsls r0, 28 - cmp r0, 0 - bne _080391E4 - adds r0, r2, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _080391E0 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - movs r0, 0x1 - b _080391E6 - .align 2, 0 -_080391D4: .4byte gStatuses3 -_080391D8: .4byte gActiveBattler -_080391DC: .4byte gDisableStructs -_080391E0: .4byte gBattleStruct -_080391E4: - movs r0, 0 -_080391E6: - pop {r1} - bx r1 - thumb_func_end ShouldSwitchIfPerishSong - - thumb_func_start sub_80391EC -sub_80391EC: @ 80391EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08039204 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039234 - b _0803935C - .align 2, 0 -_08039204: .4byte gBattleTypeFlags -_08039208: - ldr r0, _0803922C @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _08039230 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - strb r6, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - movs r0, 0x1 - b _0803935E - .align 2, 0 -_0803922C: .4byte gActiveBattler -_08039230: .4byte gBattleStruct -_08039234: - ldr r4, _0803936C @ =gBattleMons - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x58 - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x19 - beq _08039250 - b _0803935C -_08039250: - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r2, r0, 24 - movs r6, 0 - adds r7, r4, 0 - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r4, r0, r7 - movs r0, 0x20 - adds r0, r4 - mov r8, r0 -_0803926C: - lsls r1, r6, 1 - ldr r0, _08039370 @ =gActiveBattler - ldrb r0, [r0] - muls r0, r5 - adds r1, r0 - adds r0, r7, 0 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08039298 - ldrh r1, [r4] - mov r3, r8 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - bne _0803935C -_08039298: - adds r6, 0x1 - cmp r6, 0x3 - ble _0803926C - movs r6, 0 - ldr r0, _08039374 @ =gEnemyParty - mov r9, r0 -_080392A4: - movs r0, 0x64 - adds r5, r6, 0 - muls r5, r0 - mov r3, r9 - adds r4, r5, r3 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08039356 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08039356 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08039356 - ldr r1, _08039378 @ =gBattlerPartyIndexes - ldr r0, _08039370 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _08039356 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r2, r0, 24 - movs r4, 0 - mov r8, r5 - ldr r1, _0803936C @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r5, r0, r1 - adds r7, r5, 0 - adds r7, 0x20 -_08039310: - adds r1, r4, 0 - adds r1, 0xD - mov r0, r8 - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08039350 - ldrh r1, [r5] - ldrb r2, [r7] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08039350 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _08039350 - b _08039208 -_08039350: - adds r4, 0x1 - cmp r4, 0x3 - ble _08039310 -_08039356: - adds r6, 0x1 - cmp r6, 0x5 - ble _080392A4 -_0803935C: - movs r0, 0 -_0803935E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803936C: .4byte gBattleMons -_08039370: .4byte gActiveBattler -_08039374: .4byte gEnemyParty -_08039378: .4byte gBattlerPartyIndexes - thumb_func_end sub_80391EC - - thumb_func_start sub_803937C -sub_803937C: @ 803937C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0x1 - bl ai_has_super_effective_move_on_field - lsls r0, 24 - cmp r0, 0 - beq _080393A8 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _080393A8 - b _08039588 -_080393A8: - ldr r1, _08039410 @ =gUnknown_2023DA0 - ldr r5, _08039414 @ =gActiveBattler - ldrb r3, [r5] - lsls r0, r3, 1 - adds r4, r0, r1 - ldrh r1, [r4] - cmp r1, 0 - bne _080393BA - b _08039588 -_080393BA: - ldr r0, _08039418 @ =0x0000ffff - cmp r1, r0 - bne _080393C2 - b _08039588 -_080393C2: - ldr r2, _0803941C @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080393D6 - b _08039588 -_080393D6: - ldr r0, _08039420 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039442 - mov r8, r3 - mov r0, r8 - bl GetBattlerPosition - movs r4, 0x2 - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _08039424 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _08039428 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803942C - ldrb r7, [r5] - b _08039446 - .align 2, 0 -_08039410: .4byte gUnknown_2023DA0 -_08039414: .4byte gActiveBattler -_08039418: .4byte 0x0000ffff -_0803941C: .4byte gBattleMoves -_08039420: .4byte gBattleTypeFlags -_08039424: .4byte gAbsentBattlerFlags -_08039428: .4byte gBitTable -_0803942C: - ldrb r0, [r5] - bl GetBattlerPosition - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - b _08039446 -_08039442: - adds r7, r3, 0 - mov r8, r7 -_08039446: - ldr r3, _08039468 @ =gBattleMoves - ldr r1, _0803946C @ =gUnknown_2023DA0 - ldr r2, _08039470 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - adds r1, r2, 0 - cmp r0, 0xA - bne _08039474 - movs r0, 0x12 - b _08039486 - .align 2, 0 -_08039468: .4byte gBattleMoves -_0803946C: .4byte gUnknown_2023DA0 -_08039470: .4byte gActiveBattler -_08039474: - cmp r0, 0xB - bne _0803947E - movs r2, 0xB - mov r10, r2 - b _08039488 -_0803947E: - cmp r0, 0xD - beq _08039484 - b _08039588 -_08039484: - movs r0, 0xA -_08039486: - mov r10, r0 -_08039488: - ldr r2, _0803949C @ =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, r10 - bne _080394CC - b _08039588 - .align 2, 0 -_0803949C: .4byte gBattleMons -_080394A0: - ldr r0, _080394C4 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _080394C8 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - strb r6, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - movs r0, 0x1 - b _0803958A - .align 2, 0 -_080394C4: .4byte gActiveBattler -_080394C8: .4byte gBattleStruct -_080394CC: - movs r6, 0 - ldr r2, _08039558 @ =gBaseStats - mov r9, r2 -_080394D2: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _0803955C @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08039582 - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08039582 - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08039582 - ldr r1, _08039560 @ =gBattlerPartyIndexes - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _08039582 - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - beq _08039582 - ldr r0, _08039564 @ =gBattleStruct - ldr r1, [r0] - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r6, r0 - beq _08039582 - adds r0, r7, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r6, r0 - beq _08039582 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _08039568 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x17] - b _08039572 - .align 2, 0 -_08039558: .4byte gBaseStats -_0803955C: .4byte gEnemyParty -_08039560: .4byte gBattlerPartyIndexes -_08039564: .4byte gBattleStruct -_08039568: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0, 0x16] -_08039572: - cmp r10, r0 - bne _08039582 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _080394A0 -_08039582: - adds r6, 0x1 - cmp r6, 0x5 - ble _080394D2 -_08039588: - movs r0, 0 -_0803958A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803937C - - thumb_func_start sub_8039598 -sub_8039598: @ 8039598 - push {r4,r5,lr} - ldr r3, _080395F0 @ =gBattleMons - ldr r5, _080395F4 @ =gActiveBattler - ldrb r4, [r5] - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08039660 - adds r1, r2, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1E - bne _08039660 - ldrh r0, [r1, 0x2C] - ldrh r1, [r1, 0x28] - lsrs r0, 1 - cmp r1, r0 - bcc _08039660 - ldr r1, _080395F8 @ =gUnknown_2023DA0 - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - beq _080395DE - ldr r0, _080395FC @ =0x0000ffff - cmp r1, r0 - bne _08039600 -_080395DE: - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08039600 - ldrb r0, [r5] - b _08039668 - .align 2, 0 -_080395F0: .4byte gBattleMons -_080395F4: .4byte gActiveBattler -_080395F8: .4byte gUnknown_2023DA0 -_080395FC: .4byte 0x0000ffff -_08039600: - ldr r2, _0803962C @ =gBattleMoves - ldr r1, _08039630 @ =gUnknown_2023DA0 - ldr r4, _08039634 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08039638 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08039638 - ldrb r0, [r4] - b _08039668 - .align 2, 0 -_0803962C: .4byte gBattleMoves -_08039630: .4byte gUnknown_2023DA0 -_08039634: .4byte gActiveBattler -_08039638: - movs r0, 0x8 - movs r1, 0x1 - bl sub_8039828 - lsls r0, 24 - cmp r0, 0 - bne _08039686 - movs r0, 0x4 - movs r1, 0x1 - bl sub_8039828 - lsls r0, 24 - cmp r0, 0 - bne _08039686 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _08039664 -_08039660: - movs r0, 0 - b _08039688 -_08039664: - ldr r0, _08039690 @ =gActiveBattler - ldrb r0, [r0] -_08039668: - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _08039694 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - movs r1, 0x6 - strb r1, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl BtlController_EmitTwoReturnValues -_08039686: - movs r0, 0x1 -_08039688: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08039690: .4byte gActiveBattler -_08039694: .4byte gBattleStruct - thumb_func_end sub_8039598 - - thumb_func_start ai_has_super_effective_move_on_field -ai_has_super_effective_move_on_field: @ 8039698 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08039730 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08039734 @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08039720 - movs r4, 0 - ldr r6, _08039738 @ =gBattleMons - movs r7, 0x58 - adds r0, r3, 0 - muls r0, r7 - adds r5, r0, r6 - movs r0, 0x20 - adds r0, r5 - mov r9, r0 -_080396D4: - lsls r1, r4, 1 - ldr r0, _0803973C @ =gActiveBattler - ldrb r0, [r0] - muls r0, r7 - adds r1, r0 - adds r0, r6, 0 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0803971A - ldrh r1, [r5] - mov r3, r9 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _0803971A - mov r0, r8 - cmp r0, 0 - bne _08039744 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08039744 -_0803971A: - adds r4, 0x1 - cmp r4, 0x3 - ble _080396D4 -_08039720: - ldr r0, _08039740 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039748 - b _080397C2 - .align 2, 0 -_08039730: .4byte gAbsentBattlerFlags -_08039734: .4byte gBitTable -_08039738: .4byte gBattleMons -_0803973C: .4byte gActiveBattler -_08039740: .4byte gBattleTypeFlags -_08039744: - movs r0, 0x1 - b _080397C4 -_08039748: - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080397D0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _080397D4 @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080397C2 - movs r4, 0 - ldr r6, _080397D8 @ =gBattleMons - movs r7, 0x58 - adds r0, r3, 0 - muls r0, r7 - adds r5, r0, r6 - movs r3, 0x20 - adds r3, r5 - mov r9, r3 -_08039776: - lsls r1, r4, 1 - ldr r0, _080397DC @ =gActiveBattler - ldrb r0, [r0] - muls r0, r7 - adds r1, r0 - adds r0, r6, 0 - adds r0, 0xC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _080397BC - ldrh r1, [r5] - mov r3, r9 - ldrb r2, [r3] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _080397BC - mov r0, r8 - cmp r0, 0 - bne _08039744 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _08039744 -_080397BC: - adds r4, 0x1 - cmp r4, 0x3 - ble _08039776 -_080397C2: - movs r0, 0 -_080397C4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080397D0: .4byte gAbsentBattlerFlags -_080397D4: .4byte gBitTable -_080397D8: .4byte gBattleMons -_080397DC: .4byte gActiveBattler - thumb_func_end ai_has_super_effective_move_on_field - - thumb_func_start AI_AreStatsRaised -AI_AreStatsRaised: @ 80397E0 - push {r4,lr} - movs r4, 0 - ldr r1, _08039820 @ =gBattleMons - ldr r0, _08039824 @ =gActiveBattler - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x18 - adds r2, r0, r1 - movs r3, 0x7 -_080397F4: - ldrb r1, [r2] - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x6 - ble _0803980A - subs r1, 0x6 - lsls r0, r4, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 -_0803980A: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bge _080397F4 - movs r0, 0 - cmp r4, 0x3 - bls _0803981A - movs r0, 0x1 -_0803981A: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08039820: .4byte gBattleMons -_08039824: .4byte gActiveBattler - thumb_func_end AI_AreStatsRaised - - thumb_func_start sub_8039828 -sub_8039828: @ 8039828 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x4] - ldr r1, _080398B4 @ =gUnknown_2023DA0 - ldr r5, _080398B8 @ =gActiveBattler - ldrb r3, [r5] - lsls r0, r3, 1 - adds r4, r0, r1 - ldrh r1, [r4] - cmp r1, 0 - bne _08039852 - b _08039A54 -_08039852: - ldr r0, _080398BC @ =0x0000ffff - cmp r1, r0 - bne _0803985A - b _08039A54 -_0803985A: - ldr r0, _080398C0 @ =gUnknown_2023DC0 - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08039866 - b _08039A54 -_08039866: - ldr r2, _080398C4 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0803987A - b _08039A54 -_0803987A: - ldr r0, _080398C8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039918 - mov r9, r3 - mov r0, r9 - bl GetBattlerPosition - movs r4, 0x2 - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _080398CC @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _080398D0 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080398D4 - ldrb r5, [r5] - mov r10, r5 - b _0803991C - .align 2, 0 -_080398B4: .4byte gUnknown_2023DA0 -_080398B8: .4byte gActiveBattler -_080398BC: .4byte 0x0000ffff -_080398C0: .4byte gUnknown_2023DC0 -_080398C4: .4byte gBattleMoves -_080398C8: .4byte gBattleTypeFlags -_080398CC: .4byte gAbsentBattlerFlags -_080398D0: .4byte gBitTable -_080398D4: - ldrb r0, [r5] - bl GetBattlerPosition - eors r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - b _0803991C -_080398EC: - ldr r0, _08039910 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _08039914 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - strb r7, [r0] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - movs r0, 0x1 - b _08039A56 - .align 2, 0 -_08039910: .4byte gActiveBattler -_08039914: .4byte gBattleStruct -_08039918: - mov r9, r3 - mov r10, r9 -_0803991C: - movs r7, 0 -_0803991E: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080399B0 @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08039936 - b _08039A4C -_08039936: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - bne _08039944 - b _08039A4C -_08039944: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08039A4C - ldr r1, _080399B4 @ =gBattlerPartyIndexes - mov r2, r9 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r7, r0 - beq _08039A4C - mov r2, r10 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r7, r0 - beq _08039A4C - ldr r0, _080399B8 @ =gBattleStruct - ldr r1, [r0] - mov r2, r9 - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08039A4C - mov r2, r10 - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08039A4C - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _080399C0 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, _080399BC @ =gBaseStats - adds r0, r1 - ldrb r2, [r0, 0x17] - b _080399CC - .align 2, 0 -_080399B0: .4byte gEnemyParty -_080399B4: .4byte gBattlerPartyIndexes -_080399B8: .4byte gBattleStruct -_080399BC: .4byte gBaseStats -_080399C0: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r2, _08039A68 @ =gBaseStats - adds r0, r2 - ldrb r2, [r0, 0x16] -_080399CC: - ldr r1, _08039A6C @ =gUnknown_2023DA0 - ldr r5, _08039A70 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - adds r1, r4, 0 - bl AI_TypeCalc - ldr r1, [sp] - ands r1, r0 - cmp r1, 0 - beq _08039A4C - ldr r1, _08039A74 @ =gUnknown_2023DC0 - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - mov r9, r0 - movs r4, 0 - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - mov r8, r1 - ldr r1, _08039A78 @ =gBattleMons - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r5, r0, r1 - adds r6, r5, 0 - adds r6, 0x20 -_08039A0A: - ldr r0, _08039A7C @ =gEnemyParty - adds r1, r4, 0 - adds r1, 0xD - add r0, r8 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08039A46 - ldrh r1, [r5] - ldrb r2, [r6] - bl AI_TypeCalc - lsls r0, 24 - lsrs r1, r0, 24 - movs r0, 0x2 - ands r1, r0 - cmp r1, 0 - beq _08039A46 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp, 0x4] - bl __modsi3 - cmp r0, 0 - bne _08039A46 - b _080398EC -_08039A46: - adds r4, 0x1 - cmp r4, 0x3 - ble _08039A0A -_08039A4C: - adds r7, 0x1 - cmp r7, 0x5 - bgt _08039A54 - b _0803991E -_08039A54: - movs r0, 0 -_08039A56: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08039A68: .4byte gBaseStats -_08039A6C: .4byte gUnknown_2023DA0 -_08039A70: .4byte gActiveBattler -_08039A74: .4byte gUnknown_2023DC0 -_08039A78: .4byte gBattleMons -_08039A7C: .4byte gEnemyParty - thumb_func_end sub_8039828 - - thumb_func_start sub_8039A80 -sub_8039A80: @ 8039A80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r6, _08039B5C @ =gBattleMons - ldr r4, _08039B60 @ =gActiveBattler - ldrb r2, [r4] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08039B64 @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - beq _08039AA6 - b _08039C74 -_08039AA6: - ldr r0, _08039B68 @ =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - lsls r0, 3 - ands r1, r0 - cmp r1, 0 - beq _08039ABA - b _08039C74 -_08039ABA: - str r1, [sp] - movs r0, 0xC - adds r1, r2, 0 - movs r2, 0x17 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08039AD2 - b _08039C74 -_08039AD2: - ldrb r1, [r4] - str r0, [sp] - movs r0, 0xC - movs r2, 0x47 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08039AEA - b _08039C74 -_08039AEA: - str r0, [sp] - movs r0, 0xE - movs r1, 0 - movs r2, 0x2A - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08039B1C - ldrb r0, [r4] - muls r0, r5 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - bne _08039B10 - b _08039C74 -_08039B10: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _08039B1C - b _08039C74 -_08039B1C: - movs r0, 0 - mov r8, r0 - ldr r0, _08039B6C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039B8E - ldr r4, _08039B60 @ =gActiveBattler - ldrb r7, [r4] - adds r0, r7, 0 - bl GetBattlerPosition - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _08039B70 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _08039B74 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08039B78 - ldrb r6, [r4] - b _08039B94 - .align 2, 0 -_08039B5C: .4byte gBattleMons -_08039B60: .4byte gActiveBattler -_08039B64: .4byte 0x0400e000 -_08039B68: .4byte gStatuses3 -_08039B6C: .4byte gBattleTypeFlags -_08039B70: .4byte gAbsentBattlerFlags -_08039B74: .4byte gBitTable -_08039B78: - ldrb r0, [r4] - bl GetBattlerPosition - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - b _08039B94 -_08039B8E: - ldr r0, _08039C64 @ =gActiveBattler - ldrb r6, [r0] - adds r7, r6, 0 -_08039B94: - movs r5, 0 -_08039B96: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08039C68 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08039BFA - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08039BFA - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _08039BFA - ldr r1, _08039C6C @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _08039BFA - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _08039BFA - ldr r0, _08039C70 @ =gBattleStruct - ldr r1, [r0] - adds r0, r7, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _08039BFA - adds r0, r6, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r5, r0 - beq _08039BFA - movs r0, 0x1 - add r8, r0 -_08039BFA: - adds r5, 0x1 - cmp r5, 0x5 - ble _08039B96 - mov r0, r8 - cmp r0, 0 - beq _08039C74 - bl ShouldSwitchIfPerishSong - lsls r0, 24 - cmp r0, 0 - bne _08039C60 - bl sub_80391EC - lsls r0, 24 - cmp r0, 0 - bne _08039C60 - bl sub_803937C - lsls r0, 24 - cmp r0, 0 - bne _08039C60 - bl sub_8039598 - lsls r0, 24 - cmp r0, 0 - bne _08039C60 - movs r0, 0 - bl ai_has_super_effective_move_on_field - lsls r0, 24 - cmp r0, 0 - bne _08039C74 - bl AI_AreStatsRaised - lsls r0, 24 - cmp r0, 0 - bne _08039C74 - movs r0, 0x8 - movs r1, 0x2 - bl sub_8039828 - lsls r0, 24 - cmp r0, 0 - bne _08039C60 - movs r0, 0x4 - movs r1, 0x3 - bl sub_8039828 - lsls r0, 24 - cmp r0, 0 - beq _08039C74 -_08039C60: - movs r0, 0x1 - b _08039C76 - .align 2, 0 -_08039C64: .4byte gActiveBattler -_08039C68: .4byte gEnemyParty -_08039C6C: .4byte gBattlerPartyIndexes -_08039C70: .4byte gBattleStruct -_08039C74: - movs r0, 0 -_08039C76: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8039A80 - - thumb_func_start AI_TrySwitchOrUseItem -AI_TrySwitchOrUseItem: @ 8039C84 - push {r4-r6,lr} - ldr r5, _08039CDC @ =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08039C94 - b _08039D96 -_08039C94: - bl sub_8039A80 - lsls r0, 24 - cmp r0, 0 - beq _08039D8C - ldr r0, _08039CE0 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _08039CE4 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - ldrb r0, [r0] - cmp r0, 0x6 - bne _08039D5A - bl GetMostSuitableMonToSwitchInto - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bne _08039D44 - ldr r0, [r5] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08039CE8 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - b _08039CFC - .align 2, 0 -_08039CDC: .4byte gBattleTypeFlags -_08039CE0: .4byte gActiveBattler -_08039CE4: .4byte gBattleStruct -_08039CE8: - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r5, r0, 24 -_08039CFC: - movs r4, 0 -_08039CFE: - movs r0, 0x64 - muls r0, r4 - ldr r1, _08039D7C @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08039D3E - ldr r1, _08039D80 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _08039D3E - lsls r0, r5, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - beq _08039D3E - ldr r0, _08039D84 @ =gBattleStruct - ldr r1, [r0] - adds r0, r6, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r4, r0 - beq _08039D3E - adds r0, r5, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r4, r0 - bne _08039D44 -_08039D3E: - adds r4, 0x1 - cmp r4, 0x5 - ble _08039CFE -_08039D44: - ldr r0, _08039D88 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 25 - ldr r1, _08039D84 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x92 - strb r4, [r0] -_08039D5A: - ldr r4, _08039D88 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerPosition - ldrb r2, [r4] - ldr r1, _08039D84 @ =gBattleStruct - ldr r1, [r1] - adds r2, r1 - adds r2, 0x5C - lsls r0, 24 - lsrs r0, 25 - adds r0, r1 - adds r0, 0x92 - ldrb r0, [r0] - strb r0, [r2] - b _08039DA8 - .align 2, 0 -_08039D7C: .4byte gEnemyParty -_08039D80: .4byte gBattlerPartyIndexes -_08039D84: .4byte gBattleStruct -_08039D88: .4byte gActiveBattler -_08039D8C: - bl sub_803A1F4 - lsls r0, 24 - cmp r0, 0 - bne _08039DA8 -_08039D96: - ldr r0, _08039DB0 @ =gActiveBattler - ldrb r0, [r0] - movs r2, 0x1 - eors r2, r0 - lsls r2, 8 - movs r0, 0x1 - movs r1, 0 - bl BtlController_EmitTwoReturnValues -_08039DA8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08039DB0: .4byte gActiveBattler - thumb_func_end AI_TrySwitchOrUseItem - - thumb_func_start sub_8039DB4 -sub_8039DB4: @ 8039DB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r3, 0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r7, 0 - ldr r0, _08039E38 @ =gUnknown_824F050 - mov r10, r0 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08039E26 - mov r5, r10 -_08039DE2: - ldrb r0, [r5] - cmp r0, 0xFE - beq _08039E18 - ldr r1, [sp] - cmp r0, r1 - bne _08039E18 - ldrb r4, [r5, 0x1] - cmp r4, r9 - bne _08039E02 - ldrb r1, [r6] - ldrb r0, [r5, 0x2] - muls r0, r1 - movs r1, 0xA - bl __divsi3 - strb r0, [r6] -_08039E02: - cmp r4, r8 - bne _08039E18 - cmp r9, r8 - beq _08039E18 - ldrb r1, [r6] - ldrb r0, [r5, 0x2] - muls r0, r1 - movs r1, 0xA - bl __divsi3 - strb r0, [r6] -_08039E18: - adds r5, 0x3 - adds r7, 0x3 - mov r1, r10 - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08039DE2 -_08039E26: - 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 -_08039E38: .4byte gUnknown_824F050 - thumb_func_end sub_8039DB4 - - thumb_func_start GetMostSuitableMonToSwitchInto -GetMostSuitableMonToSwitchInto: @ 8039E3C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r4, _08039E98 @ =gActiveBattler - ldrb r2, [r4] - ldr r0, _08039E9C @ =gBattleStruct - ldr r0, [r0] - adds r0, r2, r0 - adds r1, r0, 0 - adds r1, 0x5C - ldrb r0, [r1] - cmp r0, 0x6 - beq _08039E5E - b _0803A160 -_08039E5E: - ldr r0, _08039EA0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08039EF8 - str r2, [sp, 0xC] - adds r0, r2, 0 - bl GetBattlerPosition - movs r5, 0x2 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _08039EA4 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _08039EA8 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08039EAC - ldrb r4, [r4] - str r4, [sp, 0x10] - b _08039EC2 - .align 2, 0 -_08039E98: .4byte gActiveBattler -_08039E9C: .4byte gBattleStruct -_08039EA0: .4byte gBattleTypeFlags -_08039EA4: .4byte gAbsentBattlerFlags -_08039EA8: .4byte gBitTable -_08039EAC: - ldrb r0, [r4] - bl GetBattlerPosition - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x10] -_08039EC2: - bl Random - movs r3, 0x2 - ands r0, r3 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _08039EF0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08039EF4 @ =gBitTable - mov r4, r10 - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08039F0A - eors r4, r3 - lsls r0, r4, 24 - lsrs r0, 24 - mov r10, r0 - b _08039F0A - .align 2, 0 -_08039EF0: .4byte gAbsentBattlerFlags -_08039EF4: .4byte gBitTable -_08039EF8: - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldrb r4, [r4] - str r4, [sp, 0x10] - str r4, [sp, 0xC] -_08039F0A: - movs r0, 0 - mov r9, r0 - mov r1, sp - str r1, [sp, 0x14] -_08039F12: - movs r2, 0 - str r2, [sp, 0x4] - movs r4, 0x6 - str r4, [sp, 0x8] - movs r7, 0 - ldr r0, _08039FD8 @ =gBitTable - mov r8, r0 -_08039F20: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08039FDC @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _08039FF0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08039FF0 - mov r1, r8 - ldr r0, [r1] - mov r2, r9 - ands r0, r2 - cmp r0, 0 - bne _08039FF0 - ldr r1, _08039FE0 @ =gBattlerPartyIndexes - ldr r4, [sp, 0xC] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08039FF0 - ldr r2, [sp, 0x10] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _08039FF0 - ldr r0, _08039FE4 @ =gBattleStruct - ldr r1, [r0] - adds r0, r4, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08039FF0 - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _08039FF0 - ldr r1, _08039FE8 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x6] - ldrb r6, [r0, 0x7] - movs r0, 0xA - ldr r4, [sp, 0x14] - strb r0, [r4] - movs r0, 0x58 - mov r4, r10 - muls r4, r0 - ldr r0, _08039FEC @ =gBattleMons - adds r4, r0 - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r6, 0 - mov r3, sp - bl sub_8039DB4 - adds r4, 0x22 - ldrb r0, [r4] - adds r1, r5, 0 - adds r2, r6, 0 - mov r3, sp - bl sub_8039DB4 - ldr r2, [sp, 0x4] - ldr r1, [sp, 0x14] - ldrb r1, [r1] - cmp r2, r1 - bcs _08039FFE - ldr r2, [sp, 0x14] - ldrb r2, [r2] - str r2, [sp, 0x4] - lsls r0, r7, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - b _08039FFE - .align 2, 0 -_08039FD8: .4byte gBitTable -_08039FDC: .4byte gEnemyParty -_08039FE0: .4byte gBattlerPartyIndexes -_08039FE4: .4byte gBattleStruct -_08039FE8: .4byte gBaseStats -_08039FEC: .4byte gBattleMons -_08039FF0: - mov r4, r8 - ldr r0, [r4] - mov r1, r9 - orrs r1, r0 - lsls r0, r1, 24 - lsrs r0, 24 - mov r9, r0 -_08039FFE: - movs r2, 0x4 - add r8, r2 - adds r7, 0x1 - cmp r7, 0x5 - ble _08039F20 - ldr r4, [sp, 0x8] - cmp r4, 0x6 - beq _0803A06C - movs r7, 0 - movs r0, 0x64 - adds r5, r4, 0 - muls r5, r0 - ldr r6, _0803A060 @ =gEnemyParty -_0803A018: - adds r1, r7, 0 - adds r1, 0xD - adds r0, r5, r6 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0803A03E - ldr r0, _0803A064 @ =gActiveBattler - ldrb r1, [r0] - adds r0, r4, 0 - mov r2, r10 - bl TypeCalc - movs r1, 0x2 - ands r1, r0 - cmp r1, 0 - bne _0803A044 -_0803A03E: - adds r7, 0x1 - cmp r7, 0x3 - ble _0803A018 -_0803A044: - cmp r7, 0x4 - beq _0803A04A - b _0803A15E -_0803A04A: - ldr r1, [sp, 0x8] - lsls r0, r1, 2 - ldr r2, _0803A068 @ =gBitTable - adds r0, r2 - ldr r0, [r0] - mov r4, r9 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r0, 24 - b _0803A06E - .align 2, 0 -_0803A060: .4byte gEnemyParty -_0803A064: .4byte gActiveBattler -_0803A068: .4byte gBitTable -_0803A06C: - movs r0, 0x3F -_0803A06E: - mov r9, r0 - mov r1, r9 - cmp r1, 0x3F - beq _0803A078 - b _08039F12 -_0803A078: - ldr r0, _0803A170 @ =gDynamicBasePower - movs r1, 0 - strh r1, [r0] - ldr r0, _0803A174 @ =gBattleStruct - ldr r0, [r0] - strb r1, [r0, 0x13] - ldr r0, _0803A178 @ =gBattleScripting - movs r2, 0x1 - strb r2, [r0, 0xE] - ldr r0, _0803A17C @ =gMoveResultFlags - strb r1, [r0] - ldr r0, _0803A180 @ =gCritMultiplier - strb r2, [r0] - movs r2, 0 - str r2, [sp, 0x4] - movs r4, 0x6 - str r4, [sp, 0x8] - movs r7, 0 -_0803A09C: - movs r0, 0x64 - adds r6, r7, 0 - muls r6, r0 - ldr r0, _0803A184 @ =gEnemyParty - adds r4, r6, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - adds r1, r7, 0x1 - str r1, [sp, 0x18] - cmp r0, 0 - beq _0803A158 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0803A158 - ldr r1, _0803A188 @ =gBattlerPartyIndexes - ldr r2, [sp, 0xC] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _0803A158 - ldr r4, [sp, 0x10] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r7 - beq _0803A158 - ldr r0, _0803A174 @ =gBattleStruct - ldr r1, [r0] - adds r0, r2, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _0803A158 - adds r0, r4, r1 - adds r0, 0x5C - ldrb r0, [r0] - cmp r7, r0 - beq _0803A158 - movs r5, 0 - mov r9, r6 - ldr r0, _0803A18C @ =gBattleMoveDamage - mov r8, r0 - ldr r6, _0803A190 @ =gActiveBattler -_0803A100: - adds r1, r5, 0 - adds r1, 0xD - ldr r0, _0803A184 @ =gEnemyParty - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0 - mov r1, r8 - str r0, [r1] - cmp r4, 0 - beq _0803A13C - ldr r0, _0803A194 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - beq _0803A13C - ldrb r0, [r6] - mov r1, r10 - bl AI_CalcDmg - ldrb r1, [r6] - adds r0, r4, 0 - mov r2, r10 - bl TypeCalc -_0803A13C: - mov r2, r8 - ldr r0, [r2] - ldr r4, [sp, 0x4] - cmp r4, r0 - bge _0803A152 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - lsls r0, r7, 24 - lsrs r0, 24 - str r0, [sp, 0x8] -_0803A152: - adds r5, 0x1 - cmp r5, 0x3 - ble _0803A100 -_0803A158: - ldr r7, [sp, 0x18] - cmp r7, 0x5 - ble _0803A09C -_0803A15E: - ldr r0, [sp, 0x8] -_0803A160: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803A170: .4byte gDynamicBasePower -_0803A174: .4byte gBattleStruct -_0803A178: .4byte gBattleScripting -_0803A17C: .4byte gMoveResultFlags -_0803A180: .4byte gCritMultiplier -_0803A184: .4byte gEnemyParty -_0803A188: .4byte gBattlerPartyIndexes -_0803A18C: .4byte gBattleMoveDamage -_0803A190: .4byte gActiveBattler -_0803A194: .4byte gBattleMoves - thumb_func_end GetMostSuitableMonToSwitchInto - - thumb_func_start sub_803A198 -sub_803A198: @ 803A198 - push {r4,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bne _0803A1A8 - movs r0, 0x1 - b _0803A1EE -_0803A1A8: - ldrb r1, [r2, 0x4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803A1B6 - movs r0, 0x2 - b _0803A1EE -_0803A1B6: - ldrb r4, [r2, 0x3] - movs r3, 0x3F - adds r0, r3, 0 - ands r0, r4 - cmp r0, 0 - beq _0803A1C6 - movs r0, 0x3 - b _0803A1EE -_0803A1C6: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0803A1DC - ldrb r0, [r2, 0x1] - cmp r0, 0 - bne _0803A1DC - ldrb r0, [r2, 0x2] - cmp r0, 0 - beq _0803A1E0 -_0803A1DC: - movs r0, 0x4 - b _0803A1EE -_0803A1E0: - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - bne _0803A1EC - movs r0, 0x6 - b _0803A1EE -_0803A1EC: - movs r0, 0x5 -_0803A1EE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_803A198 - - thumb_func_start sub_803A1F4 -sub_803A1F4: @ 803A1F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r10, r0 - movs r7, 0 - movs r1, 0 - mov r8, r1 -_0803A20A: - movs r0, 0x64 - mov r1, r8 - muls r1, r0 - ldr r0, _0803A2A8 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0803A246 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0803A246 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0803A246 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_0803A246: - movs r2, 0x1 - add r8, r2 - mov r0, r8 - cmp r0, 0x5 - ble _0803A20A - movs r1, 0 - mov r8, r1 -_0803A254: - ldr r1, _0803A2AC @ =gBattleResources - mov r2, r8 - cmp r2, 0 - beq _0803A26E - ldr r0, [r1] - ldr r0, [r0, 0x18] - adds r0, 0x2C - ldrb r0, [r0] - subs r0, r2 - adds r0, 0x1 - cmp r10, r0 - ble _0803A26E - b _0803A644 -_0803A26E: - ldr r0, [r1] - ldr r0, [r0, 0x18] - mov r2, r8 - lsls r1, r2, 1 - adds r0, 0x24 - adds r0, r1 - ldrh r0, [r0] - mov r9, r0 - str r1, [sp] - cmp r0, 0 - bne _0803A286 - b _0803A644 -_0803A286: - ldr r1, _0803A2B0 @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - cmp r1, 0 - bne _0803A296 - b _0803A644 -_0803A296: - mov r0, r9 - cmp r0, 0xAF - bne _0803A2BC - ldr r0, _0803A2B4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _0803A2B8 @ =0x00003108 - adds r5, r0, r1 - b _0803A2BE - .align 2, 0 -_0803A2A8: .4byte gEnemyParty -_0803A2AC: .4byte gBattleResources -_0803A2B0: .4byte gItemEffectTable -_0803A2B4: .4byte gSaveBlock1Ptr -_0803A2B8: .4byte 0x00003108 -_0803A2BC: - adds r5, r1, 0 -_0803A2BE: - mov r2, r9 - lsls r0, r2, 24 - lsrs r0, 24 - adds r1, r5, 0 - bl sub_803A198 - ldr r4, _0803A2F8 @ =gActiveBattler - ldrb r1, [r4] - lsrs r1, 1 - ldr r3, _0803A2FC @ =gBattleStruct - ldr r2, [r3] - adds r1, r2 - adds r1, 0xC4 - strb r0, [r1] - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC4 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x5 - bls _0803A2EE - b _0803A5F8 -_0803A2EE: - lsls r0, 2 - ldr r1, _0803A300 @ =_0803A304 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803A2F8: .4byte gActiveBattler -_0803A2FC: .4byte gBattleStruct -_0803A300: .4byte _0803A304 - .align 2, 0 -_0803A304: - .4byte _0803A31C - .4byte _0803A348 - .4byte _0803A390 - .4byte _0803A4E8 - .4byte _0803A5C8 - .4byte _0803A650 -_0803A31C: - ldr r2, _0803A340 @ =gBattleMons - ldr r0, _0803A344 @ =gActiveBattler - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x2C] - ldrh r0, [r0, 0x28] - lsrs r1, 2 - cmp r0, r1 - bcc _0803A334 - b _0803A5F8 -_0803A334: - cmp r0, 0 - bne _0803A33A - b _0803A5F8 -_0803A33A: - movs r7, 0x1 - b _0803A5FC - .align 2, 0 -_0803A340: .4byte gBattleMons -_0803A344: .4byte gActiveBattler -_0803A348: - mov r0, r9 - movs r1, 0x4 - movs r2, 0x4 - bl GetItemEffectParamOffset - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0803A35C - b _0803A5F8 -_0803A35C: - ldr r2, _0803A388 @ =gBattleMons - ldr r0, _0803A38C @ =gActiveBattler - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - ldrh r2, [r1, 0x28] - cmp r2, 0 - bne _0803A370 - b _0803A5F8 -_0803A370: - ldrh r3, [r1, 0x2C] - lsrs r0, r3, 2 - cmp r2, r0 - bcc _0803A33A - adds r0, r2, 0 - subs r0, r3, r0 - adds r1, r5, r4 - ldrb r1, [r1] - cmp r0, r1 - bgt _0803A386 - b _0803A5F8 -_0803A386: - b _0803A33A - .align 2, 0 -_0803A388: .4byte gBattleMons -_0803A38C: .4byte gActiveBattler -_0803A390: - ldr r3, _0803A4DC @ =gActiveBattler - ldrb r0, [r3] - lsrs r0, 1 - ldr r2, _0803A4E0 @ =gBattleStruct - ldr r1, [r2] - adds r0, r1 - adds r0, 0xC6 - movs r1, 0 - strb r1, [r0] - ldrb r1, [r5, 0x3] - movs r6, 0x20 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0803A3D4 - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0803A3D4 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0803A3D4: - ldrb r1, [r5, 0x3] - movs r6, 0x10 - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0803A40E - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0803A3FE - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _0803A40E -_0803A3FE: - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0803A40E: - ldrb r1, [r5, 0x3] - movs r6, 0x8 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0803A440 - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0803A440 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0803A440: - ldrb r1, [r5, 0x3] - movs r6, 0x4 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803A472 - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0803A472 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0803A472: - ldrb r1, [r5, 0x3] - movs r6, 0x2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803A4A4 - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803A4A4 - lsrs r1, r4, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - movs r7, 0x1 -_0803A4A4: - ldrb r1, [r5, 0x3] - movs r4, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0803A4B2 - b _0803A5F8 -_0803A4B2: - ldr r1, _0803A4E4 @ =gBattleMons - ldrb r3, [r3] - movs r0, 0x58 - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0803A4CA - b _0803A5F8 -_0803A4CA: - lsrs r1, r3, 1 - ldr r0, [r2] - adds r1, r0 - adds r1, 0xC6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - b _0803A33A - .align 2, 0 -_0803A4DC: .4byte gActiveBattler -_0803A4E0: .4byte gBattleStruct -_0803A4E4: .4byte gBattleMons -_0803A4E8: - ldr r4, _0803A5BC @ =gActiveBattler - ldrb r0, [r4] - lsrs r0, 1 - ldr r3, _0803A5C0 @ =gBattleStruct - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - movs r1, 0 - strb r1, [r0] - ldr r1, _0803A5C4 @ =gDisableStructs - ldrb r2, [r4] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _0803A5F8 - ldrb r1, [r5] - movs r6, 0xF - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A528 - lsrs r2, 1 - ldr r0, [r3] - adds r2, r0 - adds r2, 0xC6 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_0803A528: - ldrb r1, [r5, 0x1] - movs r7, 0xF0 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A546 - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_0803A546: - ldrb r1, [r5, 0x1] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A562 - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0803A562: - ldrb r1, [r5, 0x2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A57E - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_0803A57E: - ldrb r1, [r5, 0x2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A59A - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] -_0803A59A: - ldrb r1, [r5] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - bne _0803A5A6 - b _0803A33A -_0803A5A6: - ldrb r0, [r4] - lsrs r0, 1 - ldr r1, [r3] - adds r0, r1 - adds r0, 0xC6 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _0803A33A - .align 2, 0 -_0803A5BC: .4byte gActiveBattler -_0803A5C0: .4byte gBattleStruct -_0803A5C4: .4byte gDisableStructs -_0803A5C8: - ldr r4, _0803A630 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _0803A634 @ =gDisableStructs - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _0803A5F8 - ldr r0, _0803A638 @ =gSideTimers - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _0803A5F8 - b _0803A33A -_0803A5F8: - cmp r7, 0 - beq _0803A644 -_0803A5FC: - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - ldr r0, _0803A630 @ =gActiveBattler - ldrb r0, [r0] - lsrs r0, 1 - ldr r1, _0803A63C @ =gBattleStruct - ldr r1, [r1] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC0 - mov r1, r9 - strb r1, [r0] - ldr r0, _0803A640 @ =gBattleResources - ldr r0, [r0] - ldr r0, [r0, 0x18] - adds r0, 0x24 - ldr r2, [sp] - adds r0, r2 - movs r1, 0 - strh r1, [r0] - adds r0, r7, 0 - b _0803A652 - .align 2, 0 -_0803A630: .4byte gActiveBattler -_0803A634: .4byte gDisableStructs -_0803A638: .4byte gSideTimers -_0803A63C: .4byte gBattleStruct -_0803A640: .4byte gBattleResources -_0803A644: - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x3 - bgt _0803A650 - b _0803A254 -_0803A650: - movs r0, 0 -_0803A652: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803A1F4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 8bc130fd7..3155a9a5d 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -370,7 +370,7 @@ _0801DA5E: movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _0801DAA4 @ =gUnknown_2023DA0 + ldr r1, _0801DAA4 @ =gLastLandedMoves ldr r3, _0801DAA8 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 @@ -392,7 +392,7 @@ _0801DA94: .4byte gCurrentMove _0801DA98: .4byte gBattleMons _0801DA9C: .4byte gBattlerAttacker _0801DAA0: .4byte gMoveResultFlags -_0801DAA4: .4byte gUnknown_2023DA0 +_0801DAA4: .4byte gLastLandedMoves _0801DAA8: .4byte gBattlerTarget _0801DAAC: .4byte gUnknown_2023DA8 _0801DAB0: .4byte gBattleCommunication @@ -458,7 +458,7 @@ JumpIfMoveFailed: @ 801DB10 ands r0, r1 cmp r0, 0 beq _0801DB70 - ldr r1, _0801DB64 @ =gUnknown_2023DA0 + ldr r1, _0801DB64 @ =gLastLandedMoves ldr r3, _0801DB68 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 @@ -484,7 +484,7 @@ JumpIfMoveFailed: @ 801DB10 .align 2, 0 _0801DB5C: .4byte gBattlescriptCurrInstr _0801DB60: .4byte gMoveResultFlags -_0801DB64: .4byte gUnknown_2023DA0 +_0801DB64: .4byte gLastLandedMoves _0801DB68: .4byte gBattlerTarget _0801DB6C: .4byte gUnknown_2023DA8 _0801DB70: @@ -2182,7 +2182,7 @@ _0801E8C0: movs r1, 0x9 orrs r0, r1 strb r0, [r2] - ldr r1, _0801E92C @ =gUnknown_2023DA0 + ldr r1, _0801E92C @ =gLastLandedMoves ldrb r0, [r4] lsls r0, 1 adds r0, r1 @@ -2208,22 +2208,22 @@ _0801E91C: .4byte gBattleMoveDamage _0801E920: .4byte gBattlerTarget _0801E924: .4byte gLastUsedAbility _0801E928: .4byte gMoveResultFlags -_0801E92C: .4byte gUnknown_2023DA0 +_0801E92C: .4byte gLastLandedMoves _0801E930: .4byte gUnknown_2023DA8 _0801E934: .4byte gBattleCommunication _0801E938: - ldr r1, _0801E944 @ =gUnknown_824F050 + ldr r1, _0801E944 @ =gTypeEffectiveness adds r0, r3, r1 ldrb r0, [r0] adds r2, r1, 0 b _0801E9B4 .align 2, 0 -_0801E944: .4byte gUnknown_824F050 +_0801E944: .4byte gTypeEffectiveness _0801E948: adds r3, 0x3 b _0801E9B0 _0801E94C: - ldr r5, _0801EA84 @ =gUnknown_824F050 + ldr r5, _0801EA84 @ =gTypeEffectiveness adds r0, r3, r5 ldrb r0, [r0] cmp r0, r8 @@ -2272,7 +2272,7 @@ _0801E9A8: adds r3, 0x3 ldr r5, _0801EA88 @ =gBattleMons ldr r4, _0801EA8C @ =gBattlerTarget - ldr r2, _0801EA84 @ =gUnknown_824F050 + ldr r2, _0801EA84 @ =gTypeEffectiveness _0801E9B0: adds r0, r3, r2 ldrb r0, [r0] @@ -2339,7 +2339,7 @@ _0801EA10: orrs r0, r4 mov r1, r8 strb r0, [r1] - ldr r1, _0801EAA4 @ =gUnknown_2023DA0 + ldr r1, _0801EAA4 @ =gLastLandedMoves ldrb r0, [r5] lsls r0, 1 adds r0, r1 @@ -2384,7 +2384,7 @@ _0801EA70: pop {r0} bx r0 .align 2, 0 -_0801EA84: .4byte gUnknown_824F050 +_0801EA84: .4byte gTypeEffectiveness _0801EA88: .4byte gBattleMons _0801EA8C: .4byte gBattlerTarget _0801EA90: .4byte gBattlerAttacker @@ -2392,7 +2392,7 @@ _0801EA94: .4byte gCurrentMove _0801EA98: .4byte gMoveResultFlags _0801EA9C: .4byte gBattleMoves _0801EAA0: .4byte gLastUsedAbility -_0801EAA4: .4byte gUnknown_2023DA0 +_0801EAA4: .4byte gLastLandedMoves _0801EAA8: .4byte gUnknown_2023DA8 _0801EAAC: .4byte gBattleCommunication _0801EAB0: .4byte gProtectStructs @@ -2473,13 +2473,13 @@ _0801EB40: .4byte gBattlerTarget _0801EB44: .4byte gLastUsedAbility _0801EB48: .4byte gBattleCommunication _0801EB4C: - ldr r1, _0801EB58 @ =gUnknown_824F050 + ldr r1, _0801EB58 @ =gTypeEffectiveness adds r0, r5, r1 ldrb r0, [r0] adds r4, r1, 0 b _0801EC9E .align 2, 0 -_0801EB58: .4byte gUnknown_824F050 +_0801EB58: .4byte gTypeEffectiveness _0801EB5C: adds r0, r5, r4 ldrb r0, [r0] @@ -2919,7 +2919,7 @@ _0801EE94: .4byte gBattleMoves _0801EE98: .4byte gBattleMons _0801EE9C: .4byte gBattleMoveDamage _0801EEA0: - ldr r1, _0801EEBC @ =gUnknown_824F050 + ldr r1, _0801EEBC @ =gTypeEffectiveness mov r2, r8 adds r0, r2, r1 ldrb r0, [r0] @@ -2934,13 +2934,13 @@ _0801EEA0: adds r0, r3, 0 b _0801EF3E .align 2, 0 -_0801EEBC: .4byte gUnknown_824F050 +_0801EEBC: .4byte gTypeEffectiveness _0801EEC0: movs r0, 0x3 add r8, r0 b _0801EF28 _0801EEC6: - ldr r7, _0801EFC0 @ =gUnknown_824F050 + ldr r7, _0801EFC0 @ =gTypeEffectiveness mov r1, r8 adds r0, r1, r7 ldrb r0, [r0] @@ -2988,7 +2988,7 @@ _0801EF20: movs r1, 0x3 add r8, r1 ldr r5, _0801EFC4 @ =gBattleMons - ldr r2, _0801EFC0 @ =gUnknown_824F050 + ldr r2, _0801EFC0 @ =gTypeEffectiveness _0801EF28: mov r3, r8 adds r0, r3, r2 @@ -3070,7 +3070,7 @@ _0801EFAE: pop {r1} bx r1 .align 2, 0 -_0801EFC0: .4byte gUnknown_824F050 +_0801EFC0: .4byte gTypeEffectiveness _0801EFC4: .4byte gBattleMons _0801EFC8: .4byte gBattleMoves thumb_func_end TypeCalc @@ -3129,7 +3129,7 @@ _0801F00C: .align 2, 0 _0801F030: .4byte gBattleMoves _0801F034: - ldr r0, _0801F0C0 @ =gUnknown_824F050 + ldr r0, _0801F0C0 @ =gTypeEffectiveness adds r1, r7, r0 ldrb r0, [r1] cmp r0, 0xFF @@ -3160,7 +3160,7 @@ _0801F05A: _0801F06C: adds r4, 0x3 adds r7, 0x3 - ldr r1, _0801F0C0 @ =gUnknown_824F050 + ldr r1, _0801F0C0 @ =gTypeEffectiveness adds r0, r7, r1 ldrb r0, [r0] cmp r0, 0xFF @@ -3205,7 +3205,7 @@ _0801F0B0: pop {r1} bx r1 .align 2, 0 -_0801F0C0: .4byte gUnknown_824F050 +_0801F0C0: .4byte gTypeEffectiveness _0801F0C4: .4byte gBattleMoves thumb_func_end AI_TypeCalc @@ -12325,7 +12325,7 @@ _08023966: ands r1, r0 cmp r1, 0 bne _08023984 - ldr r0, _080239C4 @ =gUnknown_2023DC0 + ldr r0, _080239C4 @ =gLastHitBy adds r0, r3, r0 mov r3, r9 ldrb r1, [r3] @@ -12348,7 +12348,7 @@ _08023984: ldr r0, _080239B8 @ =0x0000ffff cmp r3, r0 bne _080239D4 - ldr r1, _080239D0 @ =gUnknown_2023DA0 + ldr r1, _080239D0 @ =gLastLandedMoves ldrb r0, [r2] lsls r0, 1 adds r0, r1 @@ -12359,12 +12359,12 @@ _080239B4: .4byte gLastMoves _080239B8: .4byte 0x0000ffff _080239BC: .4byte gUnknown_2023DB0 _080239C0: .4byte gBattlerTarget -_080239C4: .4byte gUnknown_2023DC0 +_080239C4: .4byte gLastHitBy _080239C8: .4byte gMoveResultFlags _080239CC: .4byte gChosenMove -_080239D0: .4byte gUnknown_2023DA0 +_080239D0: .4byte gLastLandedMoves _080239D4: - ldr r0, _080239F8 @ =gUnknown_2023DA0 + ldr r0, _080239F8 @ =gLastLandedMoves ldrb r1, [r2] lsls r1, 1 adds r1, r0 @@ -12383,7 +12383,7 @@ _080239D4: ands r0, r3 b _08023A2A .align 2, 0 -_080239F8: .4byte gUnknown_2023DA0 +_080239F8: .4byte gLastLandedMoves _080239FC: .4byte gCurrentMove _08023A00: .4byte gUnknown_2023DA8 _08023A04: @@ -12402,7 +12402,7 @@ _08023A04: .align 2, 0 _08023A1C: .4byte gUnknown_2023DA8 _08023A20: - ldr r0, _08023A38 @ =gUnknown_2023DA0 + ldr r0, _08023A38 @ =gLastLandedMoves ldrb r1, [r2] lsls r1, 1 adds r1, r0 @@ -12416,7 +12416,7 @@ _08023A2C: strb r0, [r4, 0x14] b _08023BB4 .align 2, 0 -_08023A38: .4byte gUnknown_2023DA0 +_08023A38: .4byte gLastLandedMoves _08023A3C: .4byte 0x0000ffff _08023A40: ldr r0, _08023B04 @ =gAbsentBattlerFlags @@ -12699,7 +12699,7 @@ atk4A_typecalc2: @ 8023C38 movs r1, 0x9 orrs r0, r1 strb r0, [r2] - ldr r1, _08023CB4 @ =gUnknown_2023DA0 + ldr r1, _08023CB4 @ =gLastLandedMoves ldrb r0, [r7] lsls r0, 1 adds r0, r1 @@ -12718,7 +12718,7 @@ _08023CA4: .4byte gBattleMons _08023CA8: .4byte gBattlerTarget _08023CAC: .4byte gLastUsedAbility _08023CB0: .4byte gMoveResultFlags -_08023CB4: .4byte gUnknown_2023DA0 +_08023CB4: .4byte gLastLandedMoves _08023CB8: .4byte gBattleCommunication _08023CBC: ldr r0, _08023CC8 @ =gMoveResultFlags @@ -12730,13 +12730,13 @@ _08023CBC: .align 2, 0 _08023CC8: .4byte gMoveResultFlags _08023CCC: - ldr r1, _08023CD8 @ =gUnknown_824F050 + ldr r1, _08023CD8 @ =gTypeEffectiveness adds r0, r5, r1 ldrb r0, [r0] adds r6, r1, 0 b _08023D8E .align 2, 0 -_08023CD8: .4byte gUnknown_824F050 +_08023CD8: .4byte gTypeEffectiveness _08023CDC: adds r0, r5, r6 ldrb r0, [r0] @@ -12899,7 +12899,7 @@ _08023DF0: movs r1, 0x1 orrs r0, r1 strb r0, [r2] - ldr r1, _08023E78 @ =gUnknown_2023DA0 + ldr r1, _08023E78 @ =gLastLandedMoves mov r2, r8 ldrb r0, [r2] lsls r0, 1 @@ -12945,7 +12945,7 @@ _08023E68: .4byte gCurrentMove _08023E6C: .4byte gBattleMoves _08023E70: .4byte gLastUsedAbility _08023E74: .4byte gMoveResultFlags -_08023E78: .4byte gUnknown_2023DA0 +_08023E78: .4byte gLastLandedMoves _08023E7C: .4byte gBattleCommunication _08023E80: .4byte gProtectStructs _08023E84: .4byte gBattlescriptCurrInstr @@ -24813,7 +24813,7 @@ atkA6_settypetorandomresistance: @ 8029DAC mov r6, r9 mov r5, r8 push {r5-r7} - ldr r1, _08029E14 @ =gUnknown_2023DA0 + ldr r1, _08029E14 @ =gLastLandedMoves ldr r4, _08029E18 @ =gBattlerAttacker ldrb r0, [r4] lsls r0, 1 @@ -24830,7 +24830,7 @@ atkA6_settypetorandomresistance: @ 8029DAC cmp r0, 0 beq _08029E94 ldr r1, _08029E20 @ =gBattleMons - ldr r2, _08029E24 @ =gUnknown_2023DC0 + ldr r2, _08029E24 @ =gLastHitBy ldrb r0, [r4] adds r0, r2 ldrb r2, [r0] @@ -24860,11 +24860,11 @@ _08029DF6: str r1, [r3] b _08029F80 .align 2, 0 -_08029E14: .4byte gUnknown_2023DA0 +_08029E14: .4byte gLastLandedMoves _08029E18: .4byte gBattlerAttacker _08029E1C: .4byte 0x0000ffff _08029E20: .4byte gBattleMons -_08029E24: .4byte gUnknown_2023DC0 +_08029E24: .4byte gLastHitBy _08029E28: .4byte gBattlescriptCurrInstr _08029E2C: mov r0, r12 @@ -24931,7 +24931,7 @@ _08029E9C: bhi _08029E9C lsls r0, r4, 1 adds r4, r0, r4 - ldr r6, _08029F90 @ =gUnknown_824F050 + ldr r6, _08029F90 @ =gTypeEffectiveness adds r3, r4, r6 ldr r1, _08029F94 @ =gUnknown_2023DA8 ldr r2, _08029F98 @ =gBattlerAttacker @@ -24979,7 +24979,7 @@ _08029EF8: mov r8, r0 ldr r1, _08029FA4 @ =gBattlescriptCurrInstr mov r12, r1 - ldr r3, _08029F90 @ =gUnknown_824F050 + ldr r3, _08029F90 @ =gTypeEffectiveness adds r0, r4, 0x1 adds r0, r3 mov r9, r0 @@ -25050,7 +25050,7 @@ _08029F80: pop {r0} bx r0 .align 2, 0 -_08029F90: .4byte gUnknown_824F050 +_08029F90: .4byte gTypeEffectiveness _08029F94: .4byte gUnknown_2023DA8 _08029F98: .4byte gBattlerAttacker _08029F9C: .4byte gBattleMons diff --git a/data/data.s b/data/data.s index 0a2298a65..83621f378 100644 --- a/data/data.s +++ b/data/data.s @@ -233,7 +233,7 @@ gUnknown_824F020:: @ 824F020 gUnknown_824F048:: @ 824F048 .incbin "baserom.gba", 0x24F048, 0x8 -gUnknown_824F050:: @ 824F050 +gTypeEffectiveness:: @ 824F050 .incbin "baserom.gba", 0x24F050, 0x150 gUnknown_824F1A0:: @ 824F1A0 diff --git a/include/battle.h b/include/battle.h index cf975c6a5..e8731ddfb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -175,9 +175,6 @@ struct TrainerMonNoItemDefaultMoves u16 species; }; -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -u8 GetBattlerSide(u8 bank); - struct TrainerMonItemDefaultMoves { u16 iv; @@ -985,5 +982,7 @@ extern u8 gChosenMovePos; extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u16 gDynamicBasePower; +extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; +extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index e3caeee3d..19f59fc75 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -59,4 +59,6 @@ extern const u8 gStatusConditionString_LoveJpn[8]; extern const u8 * const gStatusConditionStringsTable[7][2]; +extern const u8 gTypeEffectiveness[336]; + #endif // GUARD_BATTLE_2_H diff --git a/ld_script.txt b/ld_script.txt index 7de54c40e..9d1ed1469 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -73,7 +73,7 @@ SECTIONS { asm/battle_controller_player.o(.text); src/battle_gfx_sfx_util.o(.text); src/battle_controller_opponent.o(.text); - asm/battle_ai_switch_items.o(.text); + src/battle_ai_switch_items.o(.text); asm/battle_controller_link_opponent.o(.text); src/pokemon.o(.text); src/trig.o(.text); diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c new file mode 100644 index 000000000..6f059e9a5 --- /dev/null +++ b/src/battle_ai_switch_items.c @@ -0,0 +1,734 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "pokemon.h" +#include "random.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/item_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" +#include "constants/pokemon.h" + +static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); +static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent); +static bool8 ShouldUseItem(void); + +static bool8 ShouldSwitchIfPerishSong(void) +{ + if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG + && gDisableStructs[gActiveBattler].perishSongTimer == 0) + { + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + else + { + return FALSE; + } +} + +static bool8 ShouldSwitchIfWonderGuard(void) +{ + u8 opposingBattler; + u8 moveFlags; + s32 i, j; + u16 move; + + if(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + return FALSE; + if (gBattleMons[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)].ability == ABILITY_WONDER_GUARD) + { + // Check if Pokemon has a super effective move. + for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), i = 0; i < MAX_MON_MOVES; ++i) + { + move = gBattleMons[gActiveBattler].moves[i]; + if (move == MOVE_NONE) + continue; + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability); + if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE) + return FALSE; + } + // Find a Pokemon in the party that has a super effective move. + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlerPartyIndexes[gActiveBattler]) + continue; + GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); // Unused return value. + GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM); // Unused return value. + + for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), j = 0; j < MAX_MON_MOVES; ++j) + { + move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); + if (move == MOVE_NONE) + continue; + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability); + if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % 3 < 2) + { + // We found a mon. + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = i; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + } + } + return FALSE; // There is not a single Pokemon in the party that has a super effective move against a mon with Wonder Guard. +} + +static bool8 FindMonThatAbsorbsOpponentsMove(void) +{ + u8 battlerIn1, battlerIn2; + u8 absorbingTypeAbility; + s32 i; + + if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3) + return FALSE; + if (gLastLandedMoves[gActiveBattler] == MOVE_NONE) + return FALSE; + if (gLastLandedMoves[gActiveBattler] == 0xFFFF) + return FALSE; + if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + return FALSE; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerIn1 = gActiveBattler; + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))]) + battlerIn2 = gActiveBattler; + else + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))); + } + else + { + battlerIn1 = gActiveBattler; + battlerIn2 = gActiveBattler; + } + if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE) + absorbingTypeAbility = ABILITY_FLASH_FIRE; + else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER) + absorbingTypeAbility = ABILITY_WATER_ABSORB; + else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC) + absorbingTypeAbility = ABILITY_VOLT_ABSORB; + else + return FALSE; + if (gBattleMons[gActiveBattler].ability == absorbingTypeAbility) + return FALSE; + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species; + u8 monAbility; + + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlerPartyIndexes[battlerIn1]) + continue; + if (i == gBattlerPartyIndexes[battlerIn2]) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); + if (GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM) != ABILITY_NONE) + monAbility = gBaseStats[species].abilities[1]; + else + monAbility = gBaseStats[species].abilities[0]; + if (absorbingTypeAbility == monAbility && Random() & 1) + { + // we found a mon + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = i; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + return FALSE; +} + +static bool8 ShouldSwitchIfNaturalCure(void) +{ + if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)) + return FALSE; + if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE) + return FALSE; + if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2) + return FALSE; + if ((gLastLandedMoves[gActiveBattler] == MOVE_NONE || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1) + { + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1) + { + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1)) + return TRUE; + if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1)) + return TRUE; + if (Random() & 1) + { + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + return FALSE; +} + +static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) +{ + u8 opposingBattler; + s32 i; + u8 moveFlags; + u16 move; + + opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + if (!(gAbsentBattlerFlags & gBitTable[opposingBattler])) + { + for (i = 0; i < MAX_MON_MOVES; ++i) + { + move = gBattleMons[gActiveBattler].moves[i]; + if (move == MOVE_NONE) + continue; + + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability); + if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE) + { + if (noRng) + return TRUE; + if (Random() % 10 != 0) + return TRUE; + } + } + } + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return FALSE; + opposingBattler = GetBattlerAtPosition(BATTLE_PARTNER(B_POSITION_PLAYER_LEFT)); + if (!(gAbsentBattlerFlags & gBitTable[opposingBattler])) + { + for (i = 0; i < MAX_MON_MOVES; ++i) + { + move = gBattleMons[gActiveBattler].moves[i]; + if (move == MOVE_NONE) + continue; + moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability); + if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE) + { + if (noRng) + return TRUE; + if (Random() % 10 != 0) + return TRUE; + } + } + } + return FALSE; +} + +static bool8 AreStatsRaised(void) +{ + u8 buffedStatsValue = 0; + s32 i; + + for (i = 0; i < NUM_BATTLE_STATS; ++i) + { + if (gBattleMons[gActiveBattler].statStages[i] > 6) + buffedStatsValue += gBattleMons[gActiveBattler].statStages[i] - 6; + } + return (buffedStatsValue > 3); +} + +static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) +{ + u8 battlerIn1, battlerIn2; + s32 i, j; + u16 move; + u8 moveFlags; + + if (gLastLandedMoves[gActiveBattler] == 0) + return FALSE; + if (gLastLandedMoves[gActiveBattler] == 0xFFFF) + return FALSE; + if (gLastHitBy[gActiveBattler] == 0xFF) + return FALSE; + if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + return FALSE; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerIn1 = gActiveBattler; + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))]) + battlerIn2 = gActiveBattler; + else + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))); + } + else + { + battlerIn1 = gActiveBattler; + battlerIn2 = gActiveBattler; + } + + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species; + u8 monAbility; + + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlerPartyIndexes[battlerIn1]) + continue; + if (i == gBattlerPartyIndexes[battlerIn2]) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); + if (GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM) != ABILITY_NONE) + monAbility = gBaseStats[species].abilities[1]; + else + monAbility = gBaseStats[species].abilities[0]; + moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBattler], species, monAbility); + if (moveFlags & flags) + { + battlerIn1 = gLastHitBy[gActiveBattler]; + for (j = 0; j < MAX_MON_MOVES; ++j) + { + move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); + if (move == MOVE_NONE) + continue; + moveFlags = AI_TypeCalc(move, gBattleMons[battlerIn1].species, gBattleMons[battlerIn1].ability); + if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0) + { + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = i; + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + } + } + return FALSE; +} + +static bool8 ShouldSwitch(void) +{ + u8 battlerIn1, battlerIn2; + s32 i; + s32 availableToSwitch; + + if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + return FALSE; + if (gStatuses3[gActiveBattler] & STATUS3_ROOTED) + return FALSE; + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0)) + return FALSE; + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0)) + return FALSE; // misses the flying or levitate check + if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0)) + { + if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL) + return FALSE; + if (gBattleMons[gActiveBattler].type2 == TYPE_STEEL) + return FALSE; + } + availableToSwitch = 0; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerIn1 = gActiveBattler; + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)]) + battlerIn2 = gActiveBattler; + else + battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK); + } + else + { + battlerIn2 = gActiveBattler; + battlerIn1 = gActiveBattler; + } + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + if (i == gBattlerPartyIndexes[battlerIn1]) + continue; + if (i == gBattlerPartyIndexes[battlerIn2]) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + ++availableToSwitch; + } + if (!availableToSwitch) + return FALSE; + if (ShouldSwitchIfPerishSong()) + return TRUE; + if (ShouldSwitchIfWonderGuard()) + return TRUE; + if (FindMonThatAbsorbsOpponentsMove()) + return TRUE; + if (ShouldSwitchIfNaturalCure()) + return TRUE; + if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) + return FALSE; + if (AreStatsRaised()) + return FALSE; + if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2) + || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3)) + return TRUE; + return FALSE; +} + +void AI_TrySwitchOrUseItem(void) +{ + u8 battlerIn1, battlerIn2; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (ShouldSwitch()) + { + if (*(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) == 6) + { + s32 monToSwitchId = GetMostSuitableMonToSwitchInto(); + if (monToSwitchId == 6) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + battlerIn2 = battlerIn1; + } + else + { + battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + battlerIn2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + } + + for (monToSwitchId = 0; monToSwitchId < PARTY_SIZE; ++monToSwitchId) + { + if (GetMonData(&gEnemyParty[monToSwitchId], MON_DATA_HP) == 0) + continue; + if (monToSwitchId == gBattlerPartyIndexes[battlerIn1]) + continue; + if (monToSwitchId == gBattlerPartyIndexes[battlerIn2]) + continue; + if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + break; + } + } + *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = monToSwitchId; + } + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)); + return; + } + else if (ShouldUseItem()) + { + return; + } + } + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8); +} + +static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var) +{ + s32 i = 0; + + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + i += 3; + continue; + } + else if (TYPE_EFFECT_ATK_TYPE(i) == atkType) + { + // Check type1. + if (TYPE_EFFECT_DEF_TYPE(i) == defType1) + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; + // Check type2. + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; + } + i += 3; + } +} + +u8 GetMostSuitableMonToSwitchInto(void) +{ + u8 opposingBattler; + u8 bestDmg; // Note : should be changed to u32 for obvious reasons. + u8 bestMonId; + u8 battlerIn1, battlerIn2; + s32 i, j; + u8 invalidMons; + u16 move; + + if (*(gBattleStruct->monToSwitchIntoId + gActiveBattler) != PARTY_SIZE) + return *(gBattleStruct->monToSwitchIntoId + gActiveBattler); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerIn1 = gActiveBattler; + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)]) + battlerIn2 = gActiveBattler; + else + battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK); + // UB: It considers the opponent only player's side even though it can battle alongside player. + opposingBattler = Random() & BIT_FLANK; + if (gAbsentBattlerFlags & gBitTable[opposingBattler]) + opposingBattler ^= BIT_FLANK; + } + else + { + opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + battlerIn1 = gActiveBattler; + battlerIn2 = gActiveBattler; + } + invalidMons = 0; + while (invalidMons != 0x3F) // All mons are invalid. + { + bestDmg = 0; + bestMonId = 6; + // Find the mon whose type is the most suitable offensively. + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); + if (species != SPECIES_NONE + && GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0 + && !(gBitTable[i] & invalidMons) + && gBattlerPartyIndexes[battlerIn1] != i + && gBattlerPartyIndexes[battlerIn2] != i + && i != *(gBattleStruct->monToSwitchIntoId + battlerIn1) + && i != *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + { + u8 type1 = gBaseStats[species].type1; + u8 type2 = gBaseStats[species].type2; + u8 typeDmg = 10; + ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type1, type1, type2, &typeDmg); + ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type2, type1, type2, &typeDmg); + if (bestDmg < typeDmg) + { + bestDmg = typeDmg; + bestMonId = i; + } + } + else + { + invalidMons |= gBitTable[i]; + } + } + // Ok, we know the mon has the right typing but does it have at least one super effective move? + if (bestMonId != PARTY_SIZE) + { + for (i = 0; i < MAX_MON_MOVES; ++i) + { + move = GetMonData(&gEnemyParty[bestMonId], MON_DATA_MOVE1 + i); + if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBattler) & MOVE_RESULT_SUPER_EFFECTIVE) + break; + } + if (i != MAX_MON_MOVES) + return bestMonId; // Has both the typing and at least one super effective move. + + invalidMons |= gBitTable[bestMonId]; // Sorry buddy, we want something better. + } + else + { + invalidMons = 0x3F; // No viable mon to switch. + } + } + gDynamicBasePower = 0; + gBattleStruct->dynamicMoveType = 0; + gBattleScripting.dmgMultiplier = 1; + gMoveResultFlags = 0; + gCritMultiplier = 1; + bestDmg = 0; + bestMonId = 6; + // If we couldn't find the best mon in terms of typing, find the one that deals most damage. + for (i = 0; i < PARTY_SIZE; ++i) + { + if ((u16)(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)) == SPECIES_NONE) + continue; + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + continue; + if (gBattlerPartyIndexes[battlerIn1] == i) + continue; + if (gBattlerPartyIndexes[battlerIn2] == i) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + for (j = 0; j < MAX_MON_MOVES; ++j) + { + move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); + gBattleMoveDamage = 0; + if (move != MOVE_NONE && gBattleMoves[move].power != 1) + { + AI_CalcDmg(gActiveBattler, opposingBattler); + TypeCalc(move, gActiveBattler, opposingBattler); + } + if (bestDmg < gBattleMoveDamage) + { + bestDmg = gBattleMoveDamage; + bestMonId = i; + } + } + } + return bestMonId; +} + +static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument +{ + if (itemId == ITEM_FULL_RESTORE) + return AI_ITEM_FULL_RESTORE; + else if (itemEffect[4] & ITEM4_HEAL_HP) + return AI_ITEM_HEAL_HP; + else if (itemEffect[3] & ITEM3_STATUS_ALL) + return AI_ITEM_CURE_CONDITION; + else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0) + return AI_ITEM_X_STAT; + else if (itemEffect[3] & ITEM3_MIST) + return AI_ITEM_GUARD_SPECS; + else + return AI_ITEM_NOT_RECOGNIZABLE; +} + +static bool8 ShouldUseItem(void) +{ + s32 i; + u8 validMons = 0; + bool8 shouldUse = FALSE; + + for (i = 0; i < PARTY_SIZE; ++i) + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0 + && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) + ++validMons; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + u16 item; + const u8 *itemEffects; + u8 paramOffset; + u8 battlerSide; + + if (i && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1) + continue; + item = gBattleResources->battleHistory->trainerItems[i]; + if (item == ITEM_NONE) + continue; + if (gItemEffectTable[item - ITEM_POTION] == NULL) + continue; + if (item == ITEM_ENIGMA_BERRY) + itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect; + else + itemEffects = gItemEffectTable[item - ITEM_POTION]; + *(gBattleStruct->AI_itemType + gActiveBattler / 2) = GetAI_ItemType(item, itemEffects); + switch (*(gBattleStruct->AI_itemType + gActiveBattler / 2)) + { + case AI_ITEM_FULL_RESTORE: + if (gBattleMons[gActiveBattler].hp >= gBattleMons[gActiveBattler].maxHP / 4) + break; + if (gBattleMons[gActiveBattler].hp == 0) + break; + shouldUse = TRUE; + break; + case AI_ITEM_HEAL_HP: + paramOffset = GetItemEffectParamOffset(item, 4, 4); + if (paramOffset == 0) + break; + if (gBattleMons[gActiveBattler].hp == 0) + break; + if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4 || gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > itemEffects[paramOffset]) + shouldUse = TRUE; + break; + case AI_ITEM_CURE_CONDITION: + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0; + if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20; + shouldUse = TRUE; + } + if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON)) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x10; + shouldUse = TRUE; + } + if (itemEffects[3] & ITEM3_BURN && gBattleMons[gActiveBattler].status1 & STATUS1_BURN) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8; + shouldUse = TRUE; + } + if (itemEffects[3] & ITEM3_FREEZE && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4; + shouldUse = TRUE; + } + if (itemEffects[3] & ITEM3_PARALYSIS && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2; + shouldUse = TRUE; + } + if (itemEffects[3] & ITEM3_CONFUSION && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION) + { + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1; + shouldUse = TRUE; + } + break; + case AI_ITEM_X_STAT: + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0; + if (!gDisableStructs[gActiveBattler].isFirstTurn) + break; + if (itemEffects[0] & ITEM0_X_ATTACK) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1; + if (itemEffects[1] & ITEM1_X_DEFEND) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2; + if (itemEffects[1] & ITEM1_X_SPEED) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4; + if (itemEffects[2] & ITEM2_X_SPATK) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8; + if (itemEffects[2] & ITEM2_X_ACCURACY) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20; + if (itemEffects[0] & ITEM0_HIGH_CRIT) + *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80; + shouldUse = TRUE; + break; + case AI_ITEM_GUARD_SPECS: + battlerSide = GetBattlerSide(gActiveBattler); + if (gDisableStructs[gActiveBattler].isFirstTurn && gSideTimers[battlerSide].mistTimer == 0) + shouldUse = TRUE; + break; + case AI_ITEM_NOT_RECOGNIZABLE: + return FALSE; + } + if (shouldUse) + { + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item; + gBattleResources->battleHistory->trainerItems[i] = 0; + return shouldUse; + } + } + return FALSE; +} diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 535715999..cd0cc70ad 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1439,7 +1439,7 @@ static void OpponentHandleChoosePokemon(void) battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - for (chosenMonId = 0; chosenMonId < 6; ++chosenMonId) + for (chosenMonId = 0; chosenMonId < PARTY_SIZE; ++chosenMonId) if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 && chosenMonId != gBattlerPartyIndexes[battler1] && chosenMonId != gBattlerPartyIndexes[battler2]) diff --git a/sym_ewram.txt b/sym_ewram.txt index 3e7e1e6de..7505da54b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -291,7 +291,7 @@ gUnknown_2023D90: @ 2023D90 gLastMoves: @ 2023D98 .space 0x8 -gUnknown_2023DA0: @ 2023DA0 +gLastLandedMoves: @ 2023DA0 .space 0x8 gUnknown_2023DA8: @ 2023DA8 @@ -303,7 +303,7 @@ gUnknown_2023DB0: @ 2023DB0 gUnknown_2023DB8: @ 2023DB8 .space 0x8 -gUnknown_2023DC0: @ 2023DC0 +gLastHitBy: @ 2023DC0 .space 0x4 gChosenMoveByBattler: @ 2023DC4 From b9d547a02f615b991713158bb7068ce0d7169088 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 5 Aug 2019 08:15:58 +0800 Subject: [PATCH 017/100] ported battle_controller_player from pokeem and matched several new functions --- asm/battle_2.s | 12 +- asm/battle_controller_link_partner.s | 4 +- asm/battle_controller_oak.s | 30 +- asm/battle_controller_player.s | 11027 ------------------------ asm/battle_controller_pokedude.s | 22 +- asm/battle_interface.s | 6 +- asm/battle_message.s | 4 +- asm/item_menu.s | 16 +- asm/link_rfu_3.s | 8 +- asm/party_menu.s | 22 +- data/data.s | 10 +- data/data_83F5738.s | 10 +- include/battle.h | 8 +- include/battle_anim.h | 4 + include/battle_controllers.h | 13 +- include/{battle_2.h => battle_main.h} | 61 +- include/battle_script_commands.h | 1 + include/data2.h | 2 +- include/link.h | 4 +- include/party_menu.h | 5 +- include/pokemon.h | 2 + include/pokemon_special_anim.h | 9 + include/strings.h | 10 + ld_script.txt | 4 +- src/battle_ai_script_commands.c | 2 +- src/battle_controller_opponent.c | 2 +- src/battle_controller_player.c | 2975 +++++++ src/battle_controllers.c | 2 +- src/battle_gfx_sfx_util.c | 4 +- src/pokemon.c | 2 +- src/teachy_tv.c | 2 +- src/trainer_tower.c | 2 +- sym_common.txt | 4 +- 33 files changed, 3154 insertions(+), 11135 deletions(-) delete mode 100644 asm/battle_controller_player.s rename include/{battle_2.h => battle_main.h} (57%) create mode 100644 include/pokemon_special_anim.h create mode 100644 src/battle_controller_player.c diff --git a/asm/battle_2.s b/asm/battle_2.s index 114aeebd7..c87c81841 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4427,8 +4427,8 @@ _08012130: _08012134: .4byte gIntroSlideFlags thumb_func_end sub_8012110 - thumb_func_start dp11b_obj_instanciate -dp11b_obj_instanciate: @ 8012138 + thumb_func_start DoBounceEffect +DoBounceEffect: @ 8012138 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4570,10 +4570,10 @@ _0801223C: _0801224C: .4byte gBattlerSpriteIds _08012250: .4byte gBattleSpritesDataPtr _08012254: .4byte gSprites - thumb_func_end dp11b_obj_instanciate + thumb_func_end DoBounceEffect - thumb_func_start dp11b_obj_free -dp11b_obj_free: @ 8012258 + thumb_func_start EndBounceEffect +EndBounceEffect: @ 8012258 push {r4-r6,lr} lsls r0, 24 lsrs r2, r0, 24 @@ -4660,7 +4660,7 @@ _080122FA: .align 2, 0 _08012300: .4byte gBattleSpritesDataPtr _08012304: .4byte gSprites - thumb_func_end dp11b_obj_free + thumb_func_end EndBounceEffect thumb_func_start SpriteCB_HealthBoxBounce SpriteCB_HealthBoxBounce: @ 8012308 diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 09aaf645c..24500abfd 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -5375,7 +5375,7 @@ _080D6DFC: adds r1, r4 ldrb r0, [r1, 0x13] _080D6E0C: - ldr r1, _080D6EA4 @ =gUnknown_8239FD4 + ldr r1, _080D6EA4 @ =gTrainerBackPicPaletteTable lsls r0, 3 adds r0, r1 ldr r0, [r0] @@ -5451,7 +5451,7 @@ _080D6E86: pop {r0} bx r0 .align 2, 0 -_080D6EA4: .4byte gUnknown_8239FD4 +_080D6EA4: .4byte gTrainerBackPicPaletteTable _080D6EA8: .4byte gSprites _080D6EAC: .4byte gBattlerSpriteIds _080D6EB0: .4byte gActiveBattler diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index d4743e8a4..47230be60 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -101,12 +101,12 @@ sub_80E763C: @ 80E763C movs r1, 0x1 movs r2, 0x7 movs r3, 0x1 - bl dp11b_obj_instanciate + bl DoBounceEffect ldrb r0, [r4] movs r1, 0 movs r2, 0x7 movs r3, 0x1 - bl dp11b_obj_instanciate + bl DoBounceEffect ldr r0, _080E76A4 @ =gMain ldrh r1, [r0, 0x2E] movs r2, 0x1 @@ -329,7 +329,7 @@ _080E782C: ands r0, r1 cmp r0, 0 beq _080E7838 - bl sub_8048A4C + bl SwapHpBarsWithHpText _080E7838: pop {r3} mov r8, r3 @@ -511,7 +511,7 @@ _080E7984: .4byte gDoingBattleAnim thumb_func_start sub_80E7988 sub_80E7988: @ 80E7988 push {lr} - bl sub_802EA10 + bl HandleInputChooseMove ldr r2, _080E79AC @ =gBattleControllerExecFlags ldr r1, _080E79B0 @ =gBitTable ldr r0, _080E79B4 @ =gActiveBattler @@ -562,7 +562,7 @@ sub_80E79B8: @ 80E79B8 bl DestroyTask bl FreeAllWindowBuffers adds r0, r4, 0 - bl sub_81278DC + bl OpenPartyMenuInBattle _080E79F6: pop {r4} pop {r0} @@ -6031,7 +6031,7 @@ _080EA71E: ands r0, r1 cmp r0, 0 beq _080EA770 - ldr r0, _080EA76C @ =gUnknown_83FE6D5 + ldr r0, _080EA76C @ =gText_WhatWillPkmnDo bl BattleStringExpandPlaceholdersToDisplayedString b _080EA776 .align 2, 0 @@ -6042,7 +6042,7 @@ _080EA75C: .4byte gUnknown_83FDA4C _080EA760: .4byte gUnknown_83FE725 _080EA764: .4byte gActionSelectionCursor _080EA768: .4byte gBattleTypeFlags -_080EA76C: .4byte gUnknown_83FE6D5 +_080EA76C: .4byte gText_WhatWillPkmnDo _080EA770: ldr r0, _080EA784 @ =gUnknown_83FE6FA bl BattleStringExpandPlaceholdersToDisplayedString @@ -6108,7 +6108,7 @@ sub_80EA7DC: @ 80EA7DC ands r0, r1 cmp r0, 0 beq _080EA810 - bl sub_8032CB4 + bl InitMoveSelectionsVarsAndStrings ldr r1, _080EA804 @ =gBattlerControllerFuncs ldr r0, _080EA808 @ =gActiveBattler ldrb r0, [r0] @@ -6135,7 +6135,7 @@ _080EA810: .align 2, 0 _080EA824: .4byte gBattleStruct _080EA828: - bl sub_8032CB4 + bl InitMoveSelectionsVarsAndStrings ldr r1, [r4] adds r1, 0x95 ldrb r0, [r1] @@ -6891,7 +6891,7 @@ _080EAD64: bl AllocSpritePalette adds r4, r0, 0 lsls r4, 24 - ldr r1, _080EAEC0 @ =gUnknown_8239FD4 + ldr r1, _080EAEC0 @ =gTrainerBackPicPaletteTable ldr r0, _080EAEC4 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] @@ -6973,7 +6973,7 @@ _080EAEB0: .4byte 0x0000ffd8 _080EAEB4: .4byte StartAnimLinearTranslation _080EAEB8: .4byte sub_80335F8 _080EAEBC: .4byte 0x0000d6f8 -_080EAEC0: .4byte gUnknown_8239FD4 +_080EAEC0: .4byte gTrainerBackPicPaletteTable _080EAEC4: .4byte gSaveBlock2Ptr _080EAEC8: .4byte sub_80EB0A8 _080EAECC: .4byte gTasks @@ -7326,10 +7326,10 @@ sub_80EB1AC: @ 80EB1AC ldr r4, _080EB1CC @ =gActiveBattler ldrb r0, [r4] movs r1, 0x1 - bl dp11b_obj_free + bl EndBounceEffect ldrb r0, [r4] movs r1, 0 - bl dp11b_obj_free + bl EndBounceEffect bl WallyBufferExecCompleted pop {r4} pop {r0} @@ -7410,10 +7410,10 @@ sub_80EB238: @ 80EB238 bgt _080EB260 adds r0, r2, 0 movs r1, 0x1 - bl dp11b_obj_free + bl EndBounceEffect ldrb r0, [r4] movs r1, 0 - bl dp11b_obj_free + bl EndBounceEffect _080EB260: bl WallyBufferExecCompleted pop {r4} diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s deleted file mode 100644 index 4db2fedb2..000000000 --- a/asm/battle_controller_player.s +++ /dev/null @@ -1,11027 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_13 -nullsub_13: @ 802E310 - bx lr - thumb_func_end nullsub_13 - - thumb_func_start SetControllerToPlayer -SetControllerToPlayer: @ 802E314 - ldr r1, _0802E32C @ =gBattlerControllerFuncs - ldr r0, _0802E330 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E334 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r1, _0802E338 @ =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0802E32C: .4byte gBattlerControllerFuncs -_0802E330: .4byte gActiveBattler -_0802E334: .4byte PlayerBufferRunCommand -_0802E338: .4byte gDoingBattleAnim - thumb_func_end SetControllerToPlayer - - thumb_func_start PlayerBufferExecCompleted -PlayerBufferExecCompleted: @ 802E33C - push {r4,lr} - sub sp, 0x4 - ldr r1, _0802E37C @ =gBattlerControllerFuncs - ldr r4, _0802E380 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E384 @ =PlayerBufferRunCommand - str r1, [r0] - ldr r0, _0802E388 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E390 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _0802E38C @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0802E3A2 - .align 2, 0 -_0802E37C: .4byte gBattlerControllerFuncs -_0802E380: .4byte gActiveBattler -_0802E384: .4byte PlayerBufferRunCommand -_0802E388: .4byte gBattleTypeFlags -_0802E38C: .4byte gBattleBufferA -_0802E390: - ldr r2, _0802E3AC @ =gBattleControllerExecFlags - ldr r1, _0802E3B0 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0802E3A2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E3AC: .4byte gBattleControllerExecFlags -_0802E3B0: .4byte gBitTable - thumb_func_end PlayerBufferExecCompleted - - thumb_func_start PlayerBufferRunCommand -PlayerBufferRunCommand: @ 802E3B4 - push {lr} - ldr r2, _0802E3E8 @ =gBattleControllerExecFlags - ldr r1, _0802E3EC @ =gBitTable - ldr r0, _0802E3F0 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802E400 - ldr r0, _0802E3F4 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _0802E3FC - ldr r0, _0802E3F8 @ =gUnknown_825089C - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _0802E400 - .align 2, 0 -_0802E3E8: .4byte gBattleControllerExecFlags -_0802E3EC: .4byte gBitTable -_0802E3F0: .4byte gActiveBattler -_0802E3F4: .4byte gBattleBufferA -_0802E3F8: .4byte gUnknown_825089C -_0802E3FC: - bl PlayerBufferExecCompleted -_0802E400: - pop {r0} - bx r0 - thumb_func_end PlayerBufferRunCommand - - thumb_func_start CompleteOnBankSpritePosX_0 -CompleteOnBankSpritePosX_0: @ 802E404 - push {lr} - ldr r2, _0802E42C @ =gSprites - ldr r1, _0802E430 @ =gBattlerSpriteIds - ldr r0, _0802E434 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0802E426 - bl PlayerBufferExecCompleted -_0802E426: - pop {r0} - bx r0 - .align 2, 0 -_0802E42C: .4byte gSprites -_0802E430: .4byte gBattlerSpriteIds -_0802E434: .4byte gActiveBattler - thumb_func_end CompleteOnBankSpritePosX_0 - - thumb_func_start sub_802E438 -sub_802E438: @ 802E438 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _0802E498 @ =gBattleBufferA - ldr r4, _0802E49C @ =gActiveBattler - ldrb r0, [r4] - lsls r2, r0, 9 - adds r1, r7, 0x2 - adds r1, r2, r1 - ldrb r5, [r1] - adds r1, r7, 0x3 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r5, r1 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldr r0, _0802E4A0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802E4D0 - movs r0, 0x5 - bl PlaySE - ldr r1, _0802E4A4 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0802E4B8 - cmp r0, 0x1 - bgt _0802E4A8 - cmp r0, 0 - beq _0802E4B2 - b _0802E616 - .align 2, 0 -_0802E498: .4byte gBattleBufferA -_0802E49C: .4byte gActiveBattler -_0802E4A0: .4byte gMain -_0802E4A4: .4byte gActionSelectionCursor -_0802E4A8: - cmp r0, 0x2 - beq _0802E4BE - cmp r0, 0x3 - beq _0802E4C4 - b _0802E616 -_0802E4B2: - movs r0, 0x1 - movs r1, 0 - b _0802E610 -_0802E4B8: - movs r0, 0x1 - movs r1, 0x1 - b _0802E610 -_0802E4BE: - movs r0, 0x1 - movs r1, 0x2 - b _0802E610 -_0802E4C4: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - b _0802E616 -_0802E4D0: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802E508 - ldr r5, _0802E504 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0802E4EA - b _0802E634 -_0802E4EA: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802E590 - .align 2, 0 -_0802E504: .4byte gActionSelectionCursor -_0802E508: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802E540 - ldr r5, _0802E53C @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802E522 - b _0802E634 -_0802E522: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _0802E590 - .align 2, 0 -_0802E53C: .4byte gActionSelectionCursor -_0802E540: - movs r0, 0x40 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _0802E560 - ldr r5, _0802E55C @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E634 - b _0802E578 - .align 2, 0 -_0802E55C: .4byte gActionSelectionCursor -_0802E560: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802E5A8 - ldr r5, _0802E5A4 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0802E634 -_0802E578: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_0802E590: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - b _0802E634 - .align 2, 0 -_0802E5A4: .4byte gActionSelectionCursor -_0802E5A8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E628 - ldr r6, _0802E61C @ =gBattleTypeFlags - ldr r0, [r6] - ands r0, r2 - cmp r0, 0 - beq _0802E634 - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0802E634 - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _0802E620 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _0802E624 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802E634 - ldr r0, [r6] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _0802E634 - ldrb r0, [r4] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802E606 - cmp r5, 0xC - bhi _0802E634 - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem -_0802E606: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0xC -_0802E610: - movs r2, 0 - bl BtlController_EmitTwoReturnValues -_0802E616: - bl PlayerBufferExecCompleted - b _0802E634 - .align 2, 0 -_0802E61C: .4byte gBattleTypeFlags -_0802E620: .4byte gAbsentBattlerFlags -_0802E624: .4byte gBitTable -_0802E628: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802E634 - bl sub_8048A4C -_0802E634: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802E438 - - thumb_func_start sub_802E640 -sub_802E640: @ 802E640 - push {r4,lr} - ldr r4, _0802E668 @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - ldr r1, _0802E66C @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E670 @ =sub_802E674 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802E668: .4byte gActiveBattler -_0802E66C: .4byte gBattlerControllerFuncs -_0802E670: .4byte sub_802E674 - thumb_func_end sub_802E640 - - thumb_func_start sub_802E674 -sub_802E674: @ 802E674 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0802E708 @ =gUnknown_8250980 - mov r0, sp - movs r2, 0x4 - bl memcpy - ldr r0, _0802E70C @ =gUnknown_3004FF4 - ldrb r0, [r0] - movs r1, 0x1 - movs r2, 0xF - movs r3, 0x1 - bl dp11b_obj_instanciate - movs r4, 0 - ldr r0, _0802E710 @ =gBattlersCount - ldrb r0, [r0] - cmp r0, 0 - beq _0802E6B6 -_0802E69A: - ldr r0, _0802E70C @ =gUnknown_3004FF4 - ldrb r0, [r0] - cmp r4, r0 - beq _0802E6AC - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0x1 - bl dp11b_obj_free -_0802E6AC: - adds r4, 0x1 - ldr r0, _0802E710 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _0802E69A -_0802E6B6: - ldr r0, _0802E714 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802E72C - movs r0, 0x5 - bl PlaySE - ldr r2, _0802E718 @ =gSprites - ldr r1, _0802E71C @ =gBattlerSpriteIds - ldr r4, _0802E70C @ =gUnknown_3004FF4 - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802E720 @ =sub_8012098 - str r1, [r0] - ldr r1, _0802E724 @ =gMoveSelectionCursor - ldr r0, _0802E728 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldrb r0, [r4] - lsls r0, 8 - orrs r2, r0 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - bl PlayerBufferExecCompleted - b _0802E9DC - .align 2, 0 -_0802E708: .4byte gUnknown_8250980 -_0802E70C: .4byte gUnknown_3004FF4 -_0802E710: .4byte gBattlersCount -_0802E714: .4byte gMain -_0802E718: .4byte gSprites -_0802E71C: .4byte gBattlerSpriteIds -_0802E720: .4byte sub_8012098 -_0802E724: .4byte gMoveSelectionCursor -_0802E728: .4byte gActiveBattler -_0802E72C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E7A0 - movs r0, 0x5 - bl PlaySE - ldr r2, _0802E784 @ =gSprites - ldr r1, _0802E788 @ =gBattlerSpriteIds - ldr r5, _0802E78C @ =gUnknown_3004FF4 - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802E790 @ =sub_8012098 - str r1, [r0] - ldr r1, _0802E794 @ =gBattlerControllerFuncs - ldr r4, _0802E798 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802E79C @ =sub_802EA10 - str r1, [r0] - ldrb r0, [r4] - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl dp11b_obj_instanciate - ldrb r0, [r5] - movs r1, 0x1 - bl dp11b_obj_free - b _0802E9DC - .align 2, 0 -_0802E784: .4byte gSprites -_0802E788: .4byte gBattlerSpriteIds -_0802E78C: .4byte gUnknown_3004FF4 -_0802E790: .4byte sub_8012098 -_0802E794: .4byte gBattlerControllerFuncs -_0802E798: .4byte gActiveBattler -_0802E79C: .4byte sub_802EA10 -_0802E7A0: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _0802E7AA - b _0802E8C4 -_0802E7AA: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802E7DC @ =gSprites - ldr r1, _0802E7E0 @ =gBattlerSpriteIds - ldr r3, _0802E7E4 @ =gUnknown_3004FF4 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802E7E8 @ =sub_8012098 - str r1, [r0] - adds r5, r3, 0 -_0802E7CC: - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802E7F6 - .align 2, 0 -_0802E7DC: .4byte gSprites -_0802E7E0: .4byte gBattlerSpriteIds -_0802E7E4: .4byte gUnknown_3004FF4 -_0802E7E8: .4byte sub_8012098 -_0802E7EC: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802E7FC - mov r2, sp - adds r0, r2, r4 -_0802E7F6: - ldrb r0, [r0] - cmp r1, r0 - bne _0802E7EC -_0802E7FC: - subs r4, 0x1 - cmp r4, 0 - bge _0802E804 - movs r4, 0x4 -_0802E804: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBattlerAtPosition - strb r0, [r5] - ldr r1, _0802E838 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802E7FC - movs r4, 0 - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802E882 - cmp r0, 0x1 - bgt _0802E83C - cmp r0, 0 - beq _0802E846 - b _0802E884 - .align 2, 0 -_0802E838: .4byte gBattlersCount -_0802E83C: - cmp r0, 0x2 - beq _0802E846 - cmp r0, 0x3 - beq _0802E882 - b _0802E884 -_0802E846: - ldr r2, _0802E8A4 @ =gActiveBattler - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802E882 - ldr r1, _0802E8A8 @ =gBattlerPartyIndexes - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802E8AC @ =gPlayerParty - adds r0, r1 - ldr r1, _0802E8B0 @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802E8B4 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E884 -_0802E882: - adds r4, 0x1 -_0802E884: - ldr r0, _0802E8B8 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0802E8BC @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802E8C0 @ =gUnknown_3004FF4 - cmp r1, 0 - beq _0802E89C - movs r4, 0 -_0802E89C: - cmp r4, 0 - beq _0802E7CC - b _0802E9C4 - .align 2, 0 -_0802E8A4: .4byte gActiveBattler -_0802E8A8: .4byte gBattlerPartyIndexes -_0802E8AC: .4byte gPlayerParty -_0802E8B0: .4byte gMoveSelectionCursor -_0802E8B4: .4byte gBattleMoves -_0802E8B8: .4byte gAbsentBattlerFlags -_0802E8BC: .4byte gBitTable -_0802E8C0: .4byte gUnknown_3004FF4 -_0802E8C4: - movs r0, 0x90 - ands r0, r1 - cmp r0, 0 - bne _0802E8CE - b _0802E9DC -_0802E8CE: - movs r0, 0x5 - bl PlaySE - ldr r2, _0802E900 @ =gSprites - ldr r1, _0802E904 @ =gBattlerSpriteIds - ldr r3, _0802E908 @ =gUnknown_3004FF4 - ldrb r0, [r3] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802E90C @ =sub_8012098 - str r1, [r0] - adds r5, r3, 0 -_0802E8F0: - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r1, r0, 24 - movs r4, 0 - mov r0, sp - b _0802E91A - .align 2, 0 -_0802E900: .4byte gSprites -_0802E904: .4byte gBattlerSpriteIds -_0802E908: .4byte gUnknown_3004FF4 -_0802E90C: .4byte sub_8012098 -_0802E910: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0802E920 - mov r2, sp - adds r0, r2, r4 -_0802E91A: - ldrb r0, [r0] - cmp r1, r0 - bne _0802E910 -_0802E920: - adds r4, 0x1 - cmp r4, 0x3 - ble _0802E928 - movs r4, 0 -_0802E928: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl GetBattlerAtPosition - strb r0, [r5] - ldr r1, _0802E95C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - beq _0802E920 - movs r4, 0 - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802E9A6 - cmp r0, 0x1 - bgt _0802E960 - cmp r0, 0 - beq _0802E96A - b _0802E9A8 - .align 2, 0 -_0802E95C: .4byte gBattlersCount -_0802E960: - cmp r0, 0x2 - beq _0802E96A - cmp r0, 0x3 - beq _0802E9A6 - b _0802E9A8 -_0802E96A: - ldr r2, _0802E9E4 @ =gActiveBattler - ldrb r0, [r2] - ldrb r1, [r5] - cmp r0, r1 - bne _0802E9A6 - ldr r1, _0802E9E8 @ =gBattlerPartyIndexes - ldrb r2, [r2] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802E9EC @ =gPlayerParty - adds r0, r1 - ldr r1, _0802E9F0 @ =gMoveSelectionCursor - adds r2, r1 - ldrb r1, [r2] - adds r1, 0xD - bl GetMonData - ldr r2, _0802E9F4 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x6] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802E9A8 -_0802E9A6: - adds r4, 0x1 -_0802E9A8: - ldr r0, _0802E9F8 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0802E9FC @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - ldr r0, _0802EA00 @ =gUnknown_3004FF4 - cmp r1, 0 - beq _0802E9C0 - movs r4, 0 -_0802E9C0: - cmp r4, 0 - beq _0802E8F0 -_0802E9C4: - ldr r2, _0802EA04 @ =gSprites - ldr r1, _0802EA08 @ =gBattlerSpriteIds - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802EA0C @ =sub_8012044 - str r1, [r0] -_0802E9DC: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802E9E4: .4byte gActiveBattler -_0802E9E8: .4byte gBattlerPartyIndexes -_0802E9EC: .4byte gPlayerParty -_0802E9F0: .4byte gMoveSelectionCursor -_0802E9F4: .4byte gBattleMoves -_0802E9F8: .4byte gAbsentBattlerFlags -_0802E9FC: .4byte gBitTable -_0802EA00: .4byte gUnknown_3004FF4 -_0802EA04: .4byte gSprites -_0802EA08: .4byte gBattlerSpriteIds -_0802EA0C: .4byte sub_8012044 - thumb_func_end sub_802E674 - - thumb_func_start sub_802EA10 -sub_802EA10: @ 802EA10 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r0, 0 - mov r8, r0 - ldr r6, _0802EA6C @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 9 - ldr r1, _0802EA70 @ =gUnknown_2022BC8 - adds r7, r0, r1 - bl sub_8033AC8 - ldr r0, _0802EA74 @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802EA3A - b _0802EC10 -_0802EA3A: - movs r0, 0x5 - bl PlaySE - ldr r1, _0802EA78 @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r1, r7, r0 - ldrh r0, [r1] - cmp r0, 0xAE - bne _0802EA7C - ldrb r0, [r7, 0x12] - movs r4, 0 - cmp r0, 0x7 - beq _0802EA8A - ldrb r1, [r7, 0x13] - movs r0, 0x7 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - asrs r4, r0, 31 - movs r0, 0x10 - ands r4, r0 - b _0802EA8A - .align 2, 0 -_0802EA6C: .4byte gActiveBattler -_0802EA70: .4byte gUnknown_2022BC8 -_0802EA74: .4byte gMain -_0802EA78: .4byte gMoveSelectionCursor -_0802EA7C: - ldr r2, _0802EA9C @ =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x6] -_0802EA8A: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _0802EAA8 - ldr r0, _0802EAA0 @ =gUnknown_3004FF4 - ldr r1, _0802EAA4 @ =gActiveBattler - ldrb r1, [r1] - strb r1, [r0] - b _0802EAC2 - .align 2, 0 -_0802EA9C: .4byte gBattleMoves -_0802EAA0: .4byte gUnknown_3004FF4 -_0802EAA4: .4byte gActiveBattler -_0802EAA8: - ldr r0, _0802EAEC @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - adds r1, r0, 0 - movs r2, 0x1 - movs r0, 0x1 - ands r0, r1 - eors r0, r2 - bl GetBattlerAtPosition - ldr r1, _0802EAF0 @ =gUnknown_3004FF4 - strb r0, [r1] -_0802EAC2: - ldr r3, _0802EAF4 @ =gBattleBufferA - ldr r5, _0802EAEC @ =gActiveBattler - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802EAF8 - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _0802EB3A - adds r0, r3, 0x2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802EB3A - movs r0, 0x1 - add r8, r0 - b _0802EB3A - .align 2, 0 -_0802EAEC: .4byte gActiveBattler -_0802EAF0: .4byte gUnknown_3004FF4 -_0802EAF4: .4byte gBattleBufferA -_0802EAF8: - movs r0, 0x7D - ands r0, r4 - cmp r0, 0 - bne _0802EB04 - movs r0, 0x1 - add r8, r0 -_0802EB04: - ldr r0, _0802EB78 @ =gMoveSelectionCursor - adds r0, r2, r0 - adds r1, r7, 0 - adds r1, 0x8 - ldrb r0, [r0] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0802EB36 - movs r0, 0x12 - ands r0, r4 - cmp r0, 0 - bne _0802EB3A - movs r0, 0 - bl CountAliveMonsInBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0802EB3A - ldrb r0, [r5] - bl GetDefaultMoveTarget - ldr r1, _0802EB7C @ =gUnknown_3004FF4 - strb r0, [r1] -_0802EB36: - movs r0, 0 - mov r8, r0 -_0802EB3A: - bl ResetPaletteFadeControl - movs r0, 0xF0 - lsls r0, 12 - ldr r1, _0802EB80 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - mov r0, r8 - cmp r0, 0 - bne _0802EB88 - ldr r1, _0802EB78 @ =gMoveSelectionCursor - ldr r0, _0802EB84 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0802EB7C @ =gUnknown_3004FF4 - ldrb r0, [r0] - lsls r0, 8 - orrs r2, r0 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - bl PlayerBufferExecCompleted - b _0802EDBA - .align 2, 0 -_0802EB78: .4byte gMoveSelectionCursor -_0802EB7C: .4byte gUnknown_3004FF4 -_0802EB80: .4byte 0x00007fff -_0802EB84: .4byte gActiveBattler -_0802EB88: - ldr r1, _0802EBA4 @ =gBattlerControllerFuncs - ldr r2, _0802EBA8 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802EBAC @ =sub_802E674 - str r1, [r0] - movs r0, 0x12 - ands r4, r0 - cmp r4, 0 - beq _0802EBB4 - ldr r1, _0802EBB0 @ =gUnknown_3004FF4 - ldrb r0, [r2] - b _0802EBE4 - .align 2, 0 -_0802EBA4: .4byte gBattlerControllerFuncs -_0802EBA8: .4byte gActiveBattler -_0802EBAC: .4byte sub_802E674 -_0802EBB0: .4byte gUnknown_3004FF4 -_0802EBB4: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _0802EBD4 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _0802EBD8 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802EBDC - movs r0, 0x3 - b _0802EBDE - .align 2, 0 -_0802EBD4: .4byte gAbsentBattlerFlags -_0802EBD8: .4byte gBitTable -_0802EBDC: - movs r0, 0x1 -_0802EBDE: - bl GetBattlerAtPosition - ldr r1, _0802EC00 @ =gUnknown_3004FF4 -_0802EBE4: - strb r0, [r1] - ldr r2, _0802EC04 @ =gSprites - ldr r1, _0802EC08 @ =gBattlerSpriteIds - ldr r0, _0802EC00 @ =gUnknown_3004FF4 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802EC0C @ =sub_8012044 - b _0802EDB8 - .align 2, 0 -_0802EC00: .4byte gUnknown_3004FF4 -_0802EC04: .4byte gSprites -_0802EC08: .4byte gBattlerSpriteIds -_0802EC0C: .4byte sub_8012044 -_0802EC10: - movs r7, 0x2 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0802EC38 - movs r0, 0x5 - bl PlaySE - ldr r2, _0802EC34 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - bl PlayerBufferExecCompleted - bl ResetPaletteFadeControl - b _0802ED2C - .align 2, 0 -_0802EC34: .4byte 0x0000ffff -_0802EC38: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802EC68 - ldr r4, _0802EC64 @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r2, r0, r4 - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802EC52 - b _0802EDBA -_0802EC52: - ldrb r0, [r2] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r6] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x1 - eors r0, r2 - b _0802ED10 - .align 2, 0 -_0802EC64: .4byte gMoveSelectionCursor -_0802EC68: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802ECAC - ldr r4, _0802ECA4 @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r3, r0, r4 - ldrb r2, [r3] - movs r7, 0x1 - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _0802EC84 - b _0802EDBA -_0802EC84: - ldr r1, _0802ECA8 @ =gUnknown_3004FF8 - adds r0, r7, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcc _0802EC92 - b _0802EDBA -_0802EC92: - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r6] - adds r1, r4 - ldrb r0, [r1] - eors r0, r7 - b _0802ED10 - .align 2, 0 -_0802ECA4: .4byte gMoveSelectionCursor -_0802ECA8: .4byte gUnknown_3004FF8 -_0802ECAC: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802ECDC - ldr r4, _0802ECD8 @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r2, r0, r4 - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0802ECC6 - b _0802EDBA -_0802ECC6: - ldrb r0, [r2] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r6] - adds r1, r4 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - b _0802ED10 - .align 2, 0 -_0802ECD8: .4byte gMoveSelectionCursor -_0802ECDC: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802ED4C - ldr r4, _0802ED40 @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r3, r0, r4 - ldrb r2, [r3] - movs r5, 0x2 - adds r0, r7, 0 - ands r0, r2 - cmp r0, 0 - bne _0802EDBA - ldr r1, _0802ED44 @ =gUnknown_3004FF8 - adds r0, r5, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802EDBA - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r6] - adds r1, r4 - ldrb r0, [r1] - eors r0, r5 -_0802ED10: - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r6] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt - bl MoveSelectionDisplayPpNumber - bl MoveSelectionDisplayMoveType -_0802ED2C: - movs r0, 0xF0 - lsls r0, 12 - ldr r1, _0802ED48 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - b _0802EDBA - .align 2, 0 -_0802ED40: .4byte gMoveSelectionCursor -_0802ED44: .4byte gUnknown_3004FF8 -_0802ED48: .4byte 0x00007fff -_0802ED4C: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802EDBA - ldr r0, _0802ED84 @ =gUnknown_3004FF8 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0802EDBA - ldr r0, _0802ED88 @ =gBattleTypeFlags - ldr r5, [r0] - ands r5, r7 - cmp r5, 0 - bne _0802EDBA - ldr r4, _0802ED8C @ =gMoveSelectionCursor - ldrb r0, [r6] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1D - bl MoveSelectionCreateCursorAt - ldrb r0, [r6] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0802ED94 - ldr r0, _0802ED90 @ =gUnknown_3004FF4 - strb r5, [r0] - b _0802ED9C - .align 2, 0 -_0802ED84: .4byte gUnknown_3004FF8 -_0802ED88: .4byte gBattleTypeFlags -_0802ED8C: .4byte gMoveSelectionCursor -_0802ED90: .4byte gUnknown_3004FF4 -_0802ED94: - ldr r1, _0802EDC8 @ =gUnknown_3004FF4 - adds r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_0802ED9C: - ldrb r0, [r0] - movs r1, 0x1B - bl MoveSelectionCreateCursorAt - ldr r0, _0802EDCC @ =gUnknown_83FE7A0 - movs r1, 0xB - bl BattlePutTextOnWindow - ldr r1, _0802EDD0 @ =gBattlerControllerFuncs - ldr r0, _0802EDD4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802EDD8 @ =sub_802EF58 -_0802EDB8: - str r1, [r0] -_0802EDBA: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802EDC8: .4byte gUnknown_3004FF4 -_0802EDCC: .4byte gUnknown_83FE7A0 -_0802EDD0: .4byte gBattlerControllerFuncs -_0802EDD4: .4byte gActiveBattler -_0802EDD8: .4byte sub_802EF58 - thumb_func_end sub_802EA10 - - thumb_func_start sub_802EDDC -sub_802EDDC: @ 802EDDC - push {r4-r7,lr} - movs r7, 0 - ldr r4, _0802EF40 @ =gMain - ldrh r1, [r4, 0x2E] - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0802EDF6 - movs r0, 0x5 - bl PlaySE - movs r7, 0x1 -_0802EDF6: - ldrh r1, [r4, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802EE18 - movs r0, 0x5 - bl PlaySE - ldr r1, _0802EF44 @ =gBattle_BG0_X - movs r0, 0 - strh r0, [r1] - ldr r1, _0802EF48 @ =gBattle_BG0_Y - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - movs r7, 0xFF -_0802EE18: - ldrh r1, [r4, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802EE58 - ldr r5, _0802EF4C @ =gMoveSelectionCursor - ldr r4, _0802EF50 @ =gActiveBattler - ldrb r0, [r4] - adds r2, r0, r5 - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0802EE58 - ldrb r0, [r2] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - eors r0, r2 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt -_0802EE58: - ldr r0, _0802EF40 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802EEA6 - ldr r5, _0802EF4C @ =gMoveSelectionCursor - ldr r4, _0802EF50 @ =gActiveBattler - ldrb r0, [r4] - adds r3, r0, r5 - ldrb r2, [r3] - movs r6, 0x1 - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0802EEA6 - ldr r1, _0802EF54 @ =gUnknown_3004FF8 - adds r0, r6, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802EEA6 - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - eors r0, r6 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt -_0802EEA6: - ldr r0, _0802EF40 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802EEE8 - ldr r5, _0802EF4C @ =gMoveSelectionCursor - ldr r4, _0802EF50 @ =gActiveBattler - ldrb r0, [r4] - adds r2, r0, r5 - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802EEE8 - ldrb r0, [r2] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 - eors r0, r2 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt -_0802EEE8: - ldr r0, _0802EF40 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802EF36 - ldr r5, _0802EF4C @ =gMoveSelectionCursor - ldr r4, _0802EF50 @ =gActiveBattler - ldrb r0, [r4] - adds r3, r0, r5 - ldrb r2, [r3] - movs r6, 0x2 - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _0802EF36 - ldr r1, _0802EF54 @ =gUnknown_3004FF8 - adds r0, r6, 0 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802EF36 - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - eors r0, r6 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt -_0802EF36: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0802EF40: .4byte gMain -_0802EF44: .4byte gBattle_BG0_X -_0802EF48: .4byte gBattle_BG0_Y -_0802EF4C: .4byte gMoveSelectionCursor -_0802EF50: .4byte gActiveBattler -_0802EF54: .4byte gUnknown_3004FF8 - thumb_func_end sub_802EDDC - - thumb_func_start sub_802EF58 -sub_802EF58: @ 802EF58 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r0, _0802F2E4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x5 - ands r0, r1 - cmp r0, 0 - bne _0802EF72 - b _0802F34C -_0802EF72: - movs r0, 0x5 - bl PlaySE - ldr r0, _0802F2E8 @ =gMoveSelectionCursor - mov r10, r0 - ldr r1, _0802F2EC @ =gActiveBattler - mov r8, r1 - ldrb r1, [r1] - adds r2, r1, r0 - ldr r5, _0802F2F0 @ =gUnknown_3004FF4 - ldrb r0, [r2] - ldrb r3, [r5] - cmp r0, r3 - bne _0802EF90 - b _0802F2C8 -_0802EF90: - lsls r1, 9 - ldr r0, _0802F2F4 @ =gUnknown_2022BC8 - adds r1, r0 - mov r9, r1 - ldrb r1, [r2] - lsls r1, 1 - add r1, r9 - ldrh r6, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - ldrb r0, [r5] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r1, r8 - ldrb r0, [r1] - add r0, r10 - ldrb r1, [r0] - mov r7, r9 - adds r7, 0x8 - adds r1, r7, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r0, r7, r0 - strb r6, [r0] - mov r2, r8 - ldrb r0, [r2] - add r0, r10 - ldrb r1, [r0] - mov r2, r9 - adds r2, 0xC - adds r1, r2, r1 - ldrb r6, [r1] - ldrb r0, [r5] - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r5] - adds r2, r0 - strb r6, [r2] - mov r3, r8 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _0802F2F8 @ =gDisableStructs - adds r6, r0, r2 - ldrb r4, [r6, 0x18] - lsls r3, r4, 24 - lsrs r2, r3, 28 - ldr r0, _0802F2FC @ =gBitTable - mov r12, r0 - add r1, r10 - ldrb r0, [r1] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _0802F04A - lsrs r1, r3, 28 - bics r1, r0 - lsls r1, 4 - movs r2, 0xF - adds r0, r2, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r6, 0x18] - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r3, _0802F2F8 @ =gDisableStructs - adds r1, r3 - ldrb r4, [r1, 0x18] - lsrs r3, r4, 4 - ldrb r0, [r5] - lsls r0, 2 - add r0, r12 - ldr r0, [r0] - orrs r0, r3 - lsls r0, 4 - ands r2, r4 - orrs r2, r0 - strb r2, [r1, 0x18] -_0802F04A: - bl sub_8030830 - movs r6, 0 - mov r12, r7 - mov r5, sp - adds r5, 0x18 - str r5, [sp, 0x1C] - ldr r2, _0802F300 @ =gBattleMons - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r4, r0, 0 - adds r4, 0x3B - mov r7, r8 - mov r10, r2 - movs r5, 0x3 -_0802F06E: - mov r1, sp - adds r3, r1, r6 - ldrb r1, [r4] - lsls r2, r6, 1 - adds r0, r5, 0 - lsls r0, r2 - ands r1, r0 - asrs r1, r2 - strb r1, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F06E - ldr r1, _0802F2E8 @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - add r0, sp - ldrb r0, [r0] - ldr r2, [sp, 0x1C] - strb r0, [r2] - ldrb r0, [r7] - adds r0, r1 - ldrb r0, [r0] - mov r3, sp - adds r2, r3, r0 - ldr r1, _0802F2F0 @ =gUnknown_3004FF4 - ldrb r0, [r1] - add r0, sp - ldrb r0, [r0] - movs r3, 0 - strb r0, [r2] - ldrb r0, [r1] - mov r5, sp - adds r1, r5, r0 - ldr r2, [sp, 0x1C] - ldrb r0, [r2] - strb r0, [r1] - strb r3, [r2] - movs r6, 0 - ldr r2, [sp, 0x1C] -_0802F0BE: - mov r3, sp - adds r0, r3, r6 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F0BE - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x3B - ldr r5, [sp, 0x1C] - ldrb r1, [r5] - strb r1, [r0] - movs r6, 0 - adds r4, r7, 0 - movs r3, 0x58 - movs r0, 0x24 - add r0, r10 - mov r8, r0 - mov r2, r9 - mov r7, r10 - adds r7, 0xC - mov r5, r12 -_0802F0F8: - lsls r1, r6, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - adds r1, r7 - ldrh r0, [r2] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r3 - adds r1, r6, r1 - add r1, r8 - adds r0, r5, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F0F8 - ldr r2, _0802F2EC @ =gActiveBattler - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - beq _0802F13A - b _0802F2C8 -_0802F13A: - movs r6, 0 - mov r1, sp - adds r1, 0x4 - str r1, [sp, 0x20] - add r3, sp, 0xC - mov r10, r3 - ldr r5, _0802F304 @ =gBattlerPartyIndexes - mov r9, r5 - mov r8, r2 - movs r7, 0x64 - ldr r5, _0802F308 @ =gPlayerParty - adds r4, r1, 0 -_0802F152: - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0xD - bl GetMonData - strh r0, [r4] - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0x11 - bl GetMonData - mov r3, r10 - adds r1, r3, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F152 - ldr r1, _0802F304 @ =gBattlerPartyIndexes - ldr r0, _0802F2EC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802F308 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - ldr r5, [sp, 0x1C] - strb r0, [r5] - movs r6, 0 - movs r5, 0x3 - ldr r4, [sp, 0x1C] -_0802F1B2: - mov r0, sp - adds r3, r0, r6 - lsls r2, r6, 1 - adds r1, r5, 0 - lsls r1, r2 - ldrb r0, [r4] - ands r0, r1 - asrs r0, r2 - strb r0, [r3] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F1B2 - ldr r4, _0802F2E8 @ =gMoveSelectionCursor - ldr r3, _0802F2EC @ =gActiveBattler - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r1, 1 - ldr r2, [sp, 0x20] - adds r1, r2, r1 - ldrh r6, [r1] - ldr r2, _0802F2F0 @ =gUnknown_3004FF4 - ldrb r0, [r2] - lsls r0, 1 - ldr r5, [sp, 0x20] - adds r0, r5, r0 - ldrh r0, [r0] - movs r5, 0 - strh r0, [r1] - ldrb r0, [r2] - lsls r0, 1 - ldr r1, [sp, 0x20] - adds r0, r1, r0 - strh r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - add r1, r10 - ldrb r6, [r1] - ldrb r0, [r2] - add r0, r10 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - add r0, r10 - strb r6, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - add r0, sp - ldrb r0, [r0] - ldr r1, [sp, 0x1C] - strb r0, [r1] - ldrb r0, [r3] - adds r0, r4 - ldrb r0, [r0] - mov r3, sp - adds r1, r3, r0 - ldrb r0, [r2] - add r0, sp - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - adds r1, r3, r0 - ldr r2, [sp, 0x1C] - ldrb r0, [r2] - strb r0, [r1] - strb r5, [r2] - movs r6, 0 - ldr r2, [sp, 0x1C] -_0802F23E: - mov r3, sp - adds r0, r3, r6 - ldrb r1, [r0] - lsls r0, r6, 1 - lsls r1, r0 - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F23E - movs r6, 0 - ldr r5, _0802F304 @ =gBattlerPartyIndexes - mov r10, r5 - ldr r0, _0802F2EC @ =gActiveBattler - mov r9, r0 - movs r1, 0x64 - mov r8, r1 - ldr r7, _0802F308 @ =gPlayerParty - ldr r5, [sp, 0x20] - adds r5, 0x8 - ldr r4, [sp, 0x20] -_0802F26A: - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0xD - adds r2, r4, 0 - bl SetMonData - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - add r0, r10 - ldrh r0, [r0] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - adds r1, r6, 0 - adds r1, 0x11 - adds r2, r5, 0 - bl SetMonData - adds r5, 0x1 - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0802F26A - ldr r1, _0802F304 @ =gBattlerPartyIndexes - ldr r0, _0802F2EC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802F308 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - ldr r2, [sp, 0x1C] - bl SetMonData -_0802F2C8: - ldr r0, _0802F30C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802F318 - ldr r1, _0802F310 @ =gBattlerControllerFuncs - ldr r2, _0802F2EC @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802F314 @ =sub_80E7988 - b _0802F324 - .align 2, 0 -_0802F2E4: .4byte gMain -_0802F2E8: .4byte gMoveSelectionCursor -_0802F2EC: .4byte gActiveBattler -_0802F2F0: .4byte gUnknown_3004FF4 -_0802F2F4: .4byte gUnknown_2022BC8 -_0802F2F8: .4byte gDisableStructs -_0802F2FC: .4byte gBitTable -_0802F300: .4byte gBattleMons -_0802F304: .4byte gBattlerPartyIndexes -_0802F308: .4byte gPlayerParty -_0802F30C: .4byte gBattleTypeFlags -_0802F310: .4byte gBattlerControllerFuncs -_0802F314: .4byte sub_80E7988 -_0802F318: - ldr r1, _0802F390 @ =gBattlerControllerFuncs - ldr r2, _0802F394 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802F398 @ =sub_802EA10 -_0802F324: - str r1, [r0] - adds r7, r2, 0 - ldr r2, _0802F39C @ =gMoveSelectionCursor - ldrb r0, [r7] - adds r0, r2 - ldr r1, _0802F3A0 @ =gUnknown_3004FF4 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - adds r0, r2 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt - bl MoveSelectionDisplayPpString - bl MoveSelectionDisplayPpNumber - bl MoveSelectionDisplayMoveType -_0802F34C: - ldr r0, _0802F3A4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802F3C8 - movs r0, 0x5 - bl PlaySE - ldr r0, _0802F3A0 @ =gUnknown_3004FF4 - ldrb r0, [r0] - bl MoveSelectionDestroyCursorAt - ldr r1, _0802F39C @ =gMoveSelectionCursor - ldr r4, _0802F394 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt - ldr r0, _0802F3A8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802F3B0 - ldr r0, _0802F390 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0802F3AC @ =sub_80E7988 - b _0802F3BA - .align 2, 0 -_0802F390: .4byte gBattlerControllerFuncs -_0802F394: .4byte gActiveBattler -_0802F398: .4byte sub_802EA10 -_0802F39C: .4byte gMoveSelectionCursor -_0802F3A0: .4byte gUnknown_3004FF4 -_0802F3A4: .4byte gMain -_0802F3A8: .4byte gBattleTypeFlags -_0802F3AC: .4byte sub_80E7988 -_0802F3B0: - ldr r0, _0802F3F8 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0802F3FC @ =sub_802EA10 -_0802F3BA: - str r0, [r1] - bl MoveSelectionDisplayPpString - bl MoveSelectionDisplayPpNumber - bl MoveSelectionDisplayMoveType -_0802F3C8: - ldr r0, _0802F400 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802F454 - ldr r3, _0802F404 @ =gUnknown_3004FF4 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0802F454 - ldr r0, _0802F408 @ =gMoveSelectionCursor - ldr r1, _0802F40C @ =gActiveBattler - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802F410 - ldrb r0, [r1] - movs r1, 0x1D - bl MoveSelectionCreateCursorAt - b _0802F416 - .align 2, 0 -_0802F3F8: .4byte gBattlerControllerFuncs -_0802F3FC: .4byte sub_802EA10 -_0802F400: .4byte gMain -_0802F404: .4byte gUnknown_3004FF4 -_0802F408: .4byte gMoveSelectionCursor -_0802F40C: .4byte gActiveBattler -_0802F410: - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt -_0802F416: - ldr r4, _0802F440 @ =gUnknown_3004FF4 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802F444 @ =gMoveSelectionCursor - ldr r0, _0802F448 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802F44C - adds r0, r1, 0 - movs r1, 0 - bl MoveSelectionCreateCursorAt - b _0802F454 - .align 2, 0 -_0802F440: .4byte gUnknown_3004FF4 -_0802F444: .4byte gMoveSelectionCursor -_0802F448: .4byte gActiveBattler -_0802F44C: - ldrb r0, [r4] - movs r1, 0x1B - bl MoveSelectionCreateCursorAt -_0802F454: - ldr r0, _0802F490 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802F4E8 - ldr r3, _0802F494 @ =gUnknown_3004FF4 - ldrb r2, [r3] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0802F4E8 - ldr r1, _0802F498 @ =gUnknown_3004FF8 - movs r0, 0x1 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802F4E8 - ldr r0, _0802F49C @ =gMoveSelectionCursor - ldr r1, _0802F4A0 @ =gActiveBattler - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802F4A4 - ldrb r0, [r1] - movs r1, 0x1D - bl MoveSelectionCreateCursorAt - b _0802F4AA - .align 2, 0 -_0802F490: .4byte gMain -_0802F494: .4byte gUnknown_3004FF4 -_0802F498: .4byte gUnknown_3004FF8 -_0802F49C: .4byte gMoveSelectionCursor -_0802F4A0: .4byte gActiveBattler -_0802F4A4: - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt -_0802F4AA: - ldr r4, _0802F4D4 @ =gUnknown_3004FF4 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802F4D8 @ =gMoveSelectionCursor - ldr r0, _0802F4DC @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802F4E0 - adds r0, r1, 0 - movs r1, 0 - bl MoveSelectionCreateCursorAt - b _0802F4E8 - .align 2, 0 -_0802F4D4: .4byte gUnknown_3004FF4 -_0802F4D8: .4byte gMoveSelectionCursor -_0802F4DC: .4byte gActiveBattler -_0802F4E0: - ldrb r0, [r4] - movs r1, 0x1B - bl MoveSelectionCreateCursorAt -_0802F4E8: - ldr r0, _0802F518 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802F56C - ldr r3, _0802F51C @ =gUnknown_3004FF4 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0802F56C - ldr r0, _0802F520 @ =gMoveSelectionCursor - ldr r1, _0802F524 @ =gActiveBattler - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - cmp r2, r5 - bne _0802F528 - ldrb r0, [r1] - movs r1, 0x1D - bl MoveSelectionCreateCursorAt - b _0802F52E - .align 2, 0 -_0802F518: .4byte gMain -_0802F51C: .4byte gUnknown_3004FF4 -_0802F520: .4byte gMoveSelectionCursor -_0802F524: .4byte gActiveBattler -_0802F528: - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt -_0802F52E: - ldr r4, _0802F558 @ =gUnknown_3004FF4 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802F55C @ =gMoveSelectionCursor - ldr r0, _0802F560 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802F564 - adds r0, r1, 0 - movs r1, 0 - bl MoveSelectionCreateCursorAt - b _0802F56C - .align 2, 0 -_0802F558: .4byte gUnknown_3004FF4 -_0802F55C: .4byte gMoveSelectionCursor -_0802F560: .4byte gActiveBattler -_0802F564: - ldrb r0, [r4] - movs r1, 0x1B - bl MoveSelectionCreateCursorAt -_0802F56C: - ldr r0, _0802F5A8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802F600 - ldr r3, _0802F5AC @ =gUnknown_3004FF4 - ldrb r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _0802F600 - ldr r1, _0802F5B0 @ =gUnknown_3004FF8 - movs r0, 0x2 - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bcs _0802F600 - ldr r0, _0802F5B4 @ =gMoveSelectionCursor - ldr r1, _0802F5B8 @ =gActiveBattler - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - cmp r2, r0 - bne _0802F5BC - ldrb r0, [r1] - movs r1, 0x1D - bl MoveSelectionCreateCursorAt - b _0802F5C2 - .align 2, 0 -_0802F5A8: .4byte gMain -_0802F5AC: .4byte gUnknown_3004FF4 -_0802F5B0: .4byte gUnknown_3004FF8 -_0802F5B4: .4byte gMoveSelectionCursor -_0802F5B8: .4byte gActiveBattler -_0802F5BC: - ldrb r0, [r3] - bl MoveSelectionDestroyCursorAt -_0802F5C2: - ldr r4, _0802F5EC @ =gUnknown_3004FF4 - ldrb r0, [r4] - movs r1, 0x2 - eors r0, r1 - strb r0, [r4] - movs r0, 0x5 - bl PlaySE - ldr r1, _0802F5F0 @ =gMoveSelectionCursor - ldr r0, _0802F5F4 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _0802F5F8 - adds r0, r1, 0 - movs r1, 0 - bl MoveSelectionCreateCursorAt - b _0802F600 - .align 2, 0 -_0802F5EC: .4byte gUnknown_3004FF4 -_0802F5F0: .4byte gMoveSelectionCursor -_0802F5F4: .4byte gActiveBattler -_0802F5F8: - ldrb r0, [r4] - movs r1, 0x1B - bl MoveSelectionCreateCursorAt -_0802F600: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802EF58 - - thumb_func_start sub_802F610 -sub_802F610: @ 802F610 - push {lr} - ldr r0, _0802F64C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0802F664 - ldr r0, _0802F650 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0802F694 - movs r0, 0x53 - bl m4aSongNumStop - ldr r3, _0802F654 @ =gMain - ldr r0, _0802F658 @ =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802F65C @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - ldr r0, _0802F660 @ =sub_8011A1C - bl SetMainCallback2 - bl FreeAllWindowBuffers - b _0802F694 - .align 2, 0 -_0802F64C: .4byte gWirelessCommType -_0802F650: .4byte gReceivedRemoteLinkPlayers -_0802F654: .4byte gMain -_0802F658: .4byte 0x00000439 -_0802F65C: .4byte gPreBattleCallback1 -_0802F660: .4byte sub_8011A1C -_0802F664: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0802F694 - movs r0, 0x53 - bl m4aSongNumStop - ldr r3, _0802F698 @ =gMain - ldr r0, _0802F69C @ =0x00000439 - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0802F6A0 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r3] - ldr r0, _0802F6A4 @ =sub_8011A1C - bl SetMainCallback2 - bl FreeAllWindowBuffers -_0802F694: - pop {r0} - bx r0 - .align 2, 0 -_0802F698: .4byte gMain -_0802F69C: .4byte 0x00000439 -_0802F6A0: .4byte gPreBattleCallback1 -_0802F6A4: .4byte sub_8011A1C - thumb_func_end sub_802F610 - - thumb_func_start sub_802F6A8 -sub_802F6A8: @ 802F6A8 - push {lr} - ldr r0, _0802F6D0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802F71E - ldr r0, _0802F6D4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802F6FC - ldr r0, _0802F6D8 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0802F6DC - bl sub_800AAC0 - b _0802F6E0 - .align 2, 0 -_0802F6D0: .4byte gPaletteFade -_0802F6D4: .4byte gBattleTypeFlags -_0802F6D8: .4byte gWirelessCommType -_0802F6DC: - bl sub_800AB9C -_0802F6E0: - ldr r1, _0802F6F0 @ =gBattlerControllerFuncs - ldr r0, _0802F6F4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802F6F8 @ =sub_802F610 - str r1, [r0] - b _0802F71E - .align 2, 0 -_0802F6F0: .4byte gBattlerControllerFuncs -_0802F6F4: .4byte gActiveBattler -_0802F6F8: .4byte sub_802F610 -_0802F6FC: - movs r0, 0x53 - bl m4aSongNumStop - ldr r2, _0802F724 @ =gMain - ldr r0, _0802F728 @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _0802F72C @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_0802F71E: - pop {r0} - bx r0 - .align 2, 0 -_0802F724: .4byte gMain -_0802F728: .4byte 0x00000439 -_0802F72C: .4byte gPreBattleCallback1 - thumb_func_end sub_802F6A8 - - thumb_func_start sub_802F730 -sub_802F730: @ 802F730 - push {lr} - ldr r2, _0802F758 @ =gSprites - ldr r1, _0802F75C @ =gBattlerSpriteIds - ldr r0, _0802F760 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802F764 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802F754 - bl PlayerBufferExecCompleted -_0802F754: - pop {r0} - bx r0 - .align 2, 0 -_0802F758: .4byte gSprites -_0802F75C: .4byte gBattlerSpriteIds -_0802F760: .4byte gActiveBattler -_0802F764: .4byte SpriteCallbackDummy - thumb_func_end sub_802F730 - - thumb_func_start sub_802F768 -sub_802F768: @ 802F768 - push {lr} - ldr r2, _0802F790 @ =gSprites - ldr r1, _0802F794 @ =gBattlerSpriteIds - ldr r0, _0802F798 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802F79C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802F78C - bl PlayerBufferExecCompleted -_0802F78C: - pop {r0} - bx r0 - .align 2, 0 -_0802F790: .4byte gSprites -_0802F794: .4byte gBattlerSpriteIds -_0802F798: .4byte gActiveBattler -_0802F79C: .4byte SpriteCallbackDummy - thumb_func_end sub_802F768 - - thumb_func_start sub_802F7A0 -sub_802F7A0: @ 802F7A0 - push {r4-r6,lr} - ldr r6, _0802F7FC @ =gSprites - ldr r5, _0802F800 @ =gBattlerSpriteIds - ldr r4, _0802F804 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, _0802F808 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802F7F4 - ldr r0, _0802F80C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - bl nullsub_16 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl FreeSpriteOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - bl PlayerBufferExecCompleted -_0802F7F4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802F7FC: .4byte gSprites -_0802F800: .4byte gBattlerSpriteIds -_0802F804: .4byte gActiveBattler -_0802F808: .4byte SpriteCallbackDummy -_0802F80C: .4byte gSaveBlock2Ptr - thumb_func_end sub_802F7A0 - - thumb_func_start sub_802F810 -sub_802F810: @ 802F810 - push {r4,lr} - ldr r4, _0802F850 @ =gBattleSpritesDataPtr - ldr r1, [r4] - ldr r3, _0802F854 @ =gActiveBattler - ldrb r0, [r3] - ldr r2, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0802F848 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - bl PlayerBufferExecCompleted -_0802F848: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802F850: .4byte gBattleSpritesDataPtr -_0802F854: .4byte gActiveBattler - thumb_func_end sub_802F810 - - thumb_func_start sub_802F858 -sub_802F858: @ 802F858 - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802F87C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802F8B0 - ldr r0, _0802F89C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802F8B0 -_0802F87C: - ldr r2, _0802F8A0 @ =gSprites - ldr r1, _0802F8A4 @ =gHealthboxSpriteIds - ldr r0, _0802F8A8 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802F8AC @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802F8E6 - b _0802F8E4 - .align 2, 0 -_0802F89C: .4byte gBattleTypeFlags -_0802F8A0: .4byte gSprites -_0802F8A4: .4byte gHealthboxSpriteIds -_0802F8A8: .4byte gActiveBattler -_0802F8AC: .4byte SpriteCallbackDummy -_0802F8B0: - ldr r2, _0802F9B0 @ =gSprites - ldr r5, _0802F9B4 @ =gHealthboxSpriteIds - ldr r0, _0802F9B8 @ =gActiveBattler - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _0802F9BC @ =SpriteCallbackDummy - cmp r4, r0 - bne _0802F8E6 - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0802F8E6 -_0802F8E4: - movs r6, 0x1 -_0802F8E6: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _0802F8F2 - movs r6, 0 -_0802F8F2: - cmp r6, 0 - bne _0802F8F8 - b _0802FA32 -_0802F8F8: - ldr r0, _0802F9C0 @ =gBattleSpritesDataPtr - mov r12, r0 - ldr r0, [r0] - ldr r7, _0802F9B8 @ =gActiveBattler - ldrb r2, [r7] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r3 - ldrb r1, [r4, 0x1] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802F91A - b _0802FA32 -_0802F91A: - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0802F934 - b _0802FA32 -_0802F934: - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - mov r1, r12 - ldr r0, [r1] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - mov r0, r12 - ldr r2, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - mov r1, r12 - ldr r2, [r1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _0802F9C4 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _0802F9C8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802F9D0 - ldr r0, _0802F9CC @ =gMPlayInfo_BGM - bl m4aMPlayContinue - b _0802F9DC - .align 2, 0 -_0802F9B0: .4byte gSprites -_0802F9B4: .4byte gHealthboxSpriteIds -_0802F9B8: .4byte gActiveBattler -_0802F9BC: .4byte SpriteCallbackDummy -_0802F9C0: .4byte gBattleSpritesDataPtr -_0802F9C4: .4byte 0x000027f9 -_0802F9C8: .4byte gBattleTypeFlags -_0802F9CC: .4byte gMPlayInfo_BGM -_0802F9D0: - ldr r0, _0802FA38 @ =gMPlayInfo_BGM - ldr r1, _0802FA3C @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_0802F9DC: - ldr r7, _0802FA40 @ =gBattlerPartyIndexes - ldr r4, _0802FA44 @ =gActiveBattler - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0802FA48 @ =gPlayerParty - adds r0, r5 - bl HandleLowHpMusicChange - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802FA12 - ldrb r0, [r4] - movs r1, 0x2 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - bl HandleLowHpMusicChange -_0802FA12: - ldr r0, _0802FA4C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r4] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _0802FA50 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FA54 @ =sub_802F810 - str r1, [r0] -_0802FA32: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802FA38: .4byte gMPlayInfo_BGM -_0802FA3C: .4byte 0x0000ffff -_0802FA40: .4byte gBattlerPartyIndexes -_0802FA44: .4byte gActiveBattler -_0802FA48: .4byte gPlayerParty -_0802FA4C: .4byte gBattleSpritesDataPtr -_0802FA50: .4byte gBattlerControllerFuncs -_0802FA54: .4byte sub_802F810 - thumb_func_end sub_802F858 - - thumb_func_start sub_802FA58 -sub_802FA58: @ 802FA58 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0802FBCC @ =gBattleSpritesDataPtr - mov r9, r0 - ldr r0, [r0] - ldr r1, _0802FBD0 @ =gActiveBattler - mov r8, r1 - ldrb r2, [r1] - ldr r3, [r0, 0x4] - lsls r5, r2, 1 - adds r0, r5, r2 - lsls r0, 2 - adds r0, r3 - ldrb r4, [r0] - movs r6, 0x8 - adds r0, r6, 0 - ands r0, r4 - cmp r0, 0 - beq _0802FA84 - b _0802FBBE -_0802FA84: - movs r7, 0x2 - adds r1, r2, 0 - eors r1, r7 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0802FA9E - b _0802FBBE -_0802FA9E: - movs r6, 0x80 - adds r0, r6, 0 - ands r0, r4 - cmp r0, 0 - bne _0802FABC - ldr r0, _0802FBD4 @ =gBattlerPartyIndexes - adds r0, r5, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802FBD8 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0802FABC: - mov r2, r9 - ldr r1, [r2] - mov r2, r8 - ldrb r0, [r2] - adds r2, r7, 0 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0802FAF0 - ldr r0, _0802FBD4 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802FBD8 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0802FAF0: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0802FB5C - ldr r0, _0802FBDC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802FB5C - ldr r1, _0802FBE0 @ =gUnknown_3004FFC - mov r2, r8 - ldrb r0, [r2] - eors r0, r7 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802FBE4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _0802FBE8 @ =gHealthboxSpriteIds - mov r1, r8 - ldrb r0, [r1] - adds r1, r7, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802FBD4 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802FBD8 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - mov r2, r8 - ldrb r0, [r2] - eors r0, r7 - bl sub_804BD94 - mov r1, r8 - ldrb r0, [r1] - eors r0, r7 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible -_0802FB5C: - ldr r1, _0802FBE0 @ =gUnknown_3004FFC - ldr r4, _0802FBD0 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0802FBE4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _0802FBE8 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _0802FBD4 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802FBD8 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _0802FBCC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0802FBEC @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FBF0 @ =sub_802F858 - str r1, [r0] -_0802FBBE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802FBCC: .4byte gBattleSpritesDataPtr -_0802FBD0: .4byte gActiveBattler -_0802FBD4: .4byte gBattlerPartyIndexes -_0802FBD8: .4byte gPlayerParty -_0802FBDC: .4byte gBattleTypeFlags -_0802FBE0: .4byte gUnknown_3004FFC -_0802FBE4: .4byte gSprites -_0802FBE8: .4byte gHealthboxSpriteIds -_0802FBEC: .4byte gBattlerControllerFuncs -_0802FBF0: .4byte sub_802F858 - thumb_func_end sub_802FA58 - - thumb_func_start sub_802FBF4 -sub_802FBF4: @ 802FBF4 - push {r4-r6,lr} - ldr r2, _0802FC8C @ =gSprites - ldr r0, _0802FC90 @ =gHealthboxSpriteIds - ldr r6, _0802FC94 @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0802FC98 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802FC84 - ldr r5, _0802FC9C @ =gBattleSpritesDataPtr - ldr r0, [r5] - ldr r1, [r0, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r1 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802FC84 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldr r0, [r5] - ldrb r2, [r6] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0802FCA0 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, [r5] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802FC78 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_0802FC78: - ldr r0, _0802FCA4 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0802FCA8 @ =sub_802FCAC - str r0, [r1] -_0802FC84: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FC8C: .4byte gSprites -_0802FC90: .4byte gHealthboxSpriteIds -_0802FC94: .4byte gActiveBattler -_0802FC98: .4byte SpriteCallbackDummy -_0802FC9C: .4byte gBattleSpritesDataPtr -_0802FCA0: .4byte 0x000027f9 -_0802FCA4: .4byte gBattlerControllerFuncs -_0802FCA8: .4byte sub_802FCAC - thumb_func_end sub_802FBF4 - - thumb_func_start sub_802FCAC -sub_802FCAC: @ 802FCAC - push {r4,lr} - ldr r0, _0802FD00 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r4, _0802FD04 @ =gActiveBattler - ldrb r1, [r4] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0802FCFA - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802FCFA - ldr r0, _0802FD08 @ =gMPlayInfo_BGM - ldr r1, _0802FD0C @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - ldr r2, _0802FD10 @ =gBattlerPartyIndexes - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802FD14 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl PlayerBufferExecCompleted -_0802FCFA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802FD00: .4byte gBattleSpritesDataPtr -_0802FD04: .4byte gActiveBattler -_0802FD08: .4byte gMPlayInfo_BGM -_0802FD0C: .4byte 0x0000ffff -_0802FD10: .4byte gBattlerPartyIndexes -_0802FD14: .4byte gPlayerParty - thumb_func_end sub_802FCAC - - thumb_func_start sub_802FD18 -sub_802FD18: @ 802FD18 - push {r4-r6,lr} - ldr r6, _0802FDCC @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _0802FDD0 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0802FD4A - ldr r0, _0802FDD4 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0802FDD8 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0802FD4A: - ldr r4, _0802FDDC @ =gSprites - ldr r0, _0802FDE0 @ =gUnknown_3004FFC - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _0802FDE4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0802FDC4 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0802FDC4 - adds r0, r3, r4 - bl DestroySprite - ldr r4, _0802FDE8 @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0802FDD4 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0802FDD8 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r5] - bl CopyBattleSpriteInvisibility - ldr r1, _0802FDEC @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FDF0 @ =sub_802FBF4 - str r1, [r0] -_0802FDC4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FDCC: .4byte gBattleSpritesDataPtr -_0802FDD0: .4byte gActiveBattler -_0802FDD4: .4byte gBattlerPartyIndexes -_0802FDD8: .4byte gPlayerParty -_0802FDDC: .4byte gSprites -_0802FDE0: .4byte gUnknown_3004FFC -_0802FDE4: .4byte SpriteCallbackDummy -_0802FDE8: .4byte gHealthboxSpriteIds -_0802FDEC: .4byte gBattlerControllerFuncs -_0802FDF0: .4byte sub_802FBF4 - thumb_func_end sub_802FD18 - - thumb_func_start c3_0802FDF4 -c3_0802FDF4: @ 802FDF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0802FE16 - ldr r0, _0802FE1C @ =gMPlayInfo_BGM - ldr r1, _0802FE20 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - adds r0, r4, 0 - bl DestroyTask -_0802FE16: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802FE1C: .4byte gMPlayInfo_BGM -_0802FE20: .4byte 0x0000ffff - thumb_func_end c3_0802FDF4 - - thumb_func_start CompleteOnHealthbarDone -CompleteOnHealthbarDone: @ 802FE24 - push {r4-r6,lr} - ldr r5, _0802FE64 @ =gActiveBattler - ldrb r0, [r5] - ldr r6, _0802FE68 @ =gHealthboxSpriteIds - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0802FE6C - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _0802FE86 - .align 2, 0 -_0802FE64: .4byte gActiveBattler -_0802FE68: .4byte gHealthboxSpriteIds -_0802FE6C: - ldr r2, _0802FE8C @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802FE90 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl PlayerBufferExecCompleted -_0802FE86: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FE8C: .4byte gBattlerPartyIndexes -_0802FE90: .4byte gPlayerParty - thumb_func_end CompleteOnHealthbarDone - - thumb_func_start sub_802FE94 -sub_802FE94: @ 802FE94 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0802FEA6 - bl PlayerBufferExecCompleted -_0802FEA6: - pop {r0} - bx r0 - thumb_func_end sub_802FE94 - - thumb_func_start sub_802FEAC -sub_802FEAC: @ 802FEAC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _0802FFAC @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0802FEF2 - ldr r1, _0802FFB0 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _0802FEF2 - b _08030008 -_0802FEF2: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _0802FFB4 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _0802FFB8 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _0802FFBC @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _0802FFE0 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _0802FFC0 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802FFC8 - ldr r2, _0802FFB0 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _0802FFA6 - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _0802FFC8 -_0802FFA6: - ldr r0, _0802FFC4 @ =sub_8030238 - b _0803000A - .align 2, 0 -_0802FFAC: .4byte gTasks -_0802FFB0: .4byte gBattlerPartyIndexes -_0802FFB4: .4byte gPlayerParty -_0802FFB8: .4byte gExperienceTables -_0802FFBC: .4byte gBaseStats -_0802FFC0: .4byte gActiveBattler -_0802FFC4: .4byte sub_8030238 -_0802FFC8: - ldr r0, _0802FFD8 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _0802FFDC @ =sub_8030350 - b _0803000C - .align 2, 0 -_0802FFD8: .4byte gTasks -_0802FFDC: .4byte sub_8030350 -_0802FFE0: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _08030000 @ =gBattlerControllerFuncs - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _08030004 @ =sub_802FE94 - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _0803000E - .align 2, 0 -_08030000: .4byte gBattlerControllerFuncs -_08030004: .4byte sub_802FE94 -_08030008: - ldr r0, _08030020 @ =sub_8030024 -_0803000A: - mov r1, r8 -_0803000C: - str r0, [r1] -_0803000E: - 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 -_08030020: .4byte sub_8030024 - thumb_func_end sub_802FEAC - - thumb_func_start sub_8030024 -sub_8030024: @ 8030024 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080300DC @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _080300E0 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _080300E4 @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _080300E8 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _080300EC @ =gHealthboxSpriteIds - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl SetBattleBarStruct - movs r0, 0x1B - bl PlaySE - ldr r0, _080300F0 @ =sub_80300F4 - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080300DC: .4byte gTasks -_080300E0: .4byte gPlayerParty -_080300E4: .4byte gExperienceTables -_080300E8: .4byte gBaseStats -_080300EC: .4byte gHealthboxSpriteIds -_080300F0: .4byte sub_80300F4 - thumb_func_end sub_8030024 - - thumb_func_start sub_80300F4 -sub_80300F4: @ 80300F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08030120 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _08030124 - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _08030220 - .align 2, 0 -_08030120: .4byte gTasks -_08030124: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _080301EC @ =gHealthboxSpriteIds - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _08030220 - movs r0, 0x1B - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _080301F0 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080301F4 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _080301F8 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _08030204 - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _080301FC @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - ldr r0, _08030200 @ =sub_8030238 - str r0, [r6] - b _08030220 - .align 2, 0 -_080301EC: .4byte gHealthboxSpriteIds -_080301F0: .4byte gPlayerParty -_080301F4: .4byte gExperienceTables -_080301F8: .4byte gBaseStats -_080301FC: .4byte gActiveBattler -_08030200: .4byte sub_8030238 -_08030204: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _08030230 @ =gBattlerControllerFuncs - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _08030234 @ =sub_802FE94 - str r1, [r0] - mov r0, r8 - bl DestroyTask -_08030220: - 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 -_08030230: .4byte gBattlerControllerFuncs -_08030234: .4byte sub_802FE94 - thumb_func_end sub_80300F4 - - thumb_func_start sub_8030238 -sub_8030238: @ 8030238 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0803028C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803026C - ldr r1, _08030290 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _0803026C - adds r4, r2, 0 -_0803026C: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl InitAndLaunchSpecialAnimation - ldr r0, _0803028C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _08030294 @ =sub_8030298 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803028C: .4byte gTasks -_08030290: .4byte gBattlerPartyIndexes -_08030294: .4byte sub_8030298 - thumb_func_end sub_8030238 - - thumb_func_start sub_8030298 -sub_8030298: @ 8030298 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08030304 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - ldr r0, _08030308 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803033A - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _0803030C @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08030318 - ldr r1, _08030310 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _08030318 - ldr r0, _08030314 @ =gHealthboxSpriteIds - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl UpdateHealthboxAttribute - b _0803032C - .align 2, 0 -_08030304: .4byte gTasks -_08030308: .4byte gBattleSpritesDataPtr -_0803030C: .4byte gPlayerParty -_08030310: .4byte gBattlerPartyIndexes -_08030314: .4byte gHealthboxSpriteIds -_08030318: - ldr r0, _08030340 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _08030344 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_0803032C: - ldr r0, _08030348 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0803034C @ =sub_8030350 - str r0, [r1] -_0803033A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030340: .4byte gHealthboxSpriteIds -_08030344: .4byte gPlayerParty -_08030348: .4byte gTasks -_0803034C: .4byte sub_8030350 - thumb_func_end sub_8030298 - - thumb_func_start sub_8030350 -sub_8030350: @ 8030350 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08030380 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r0, 0xC - ldrsh r6, [r4, r0] - lsls r0, r6, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08030388 - ldr r0, _08030384 @ =sub_80303A8 - str r0, [r4] - movs r0, 0 - strh r0, [r4, 0x26] - b _08030398 - .align 2, 0 -_08030380: .4byte gTasks -_08030384: .4byte sub_80303A8 -_08030388: - ldr r0, _080303A0 @ =gBattlerControllerFuncs - lsls r1, r6, 2 - adds r1, r0 - ldr r0, _080303A4 @ =sub_802FE94 - str r0, [r1] - adds r0, r5, 0 - bl DestroyTask -_08030398: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080303A0: .4byte gBattlerControllerFuncs -_080303A4: .4byte sub_802FE94 - thumb_func_end sub_8030350 - - thumb_func_start sub_80303A8 -sub_80303A8: @ 80303A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, _080303FC @ =gTasks+0x8 - adds r5, r0, r1 - ldrb r7, [r5, 0x4] - adds r0, r7, 0 - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r6, r1, 31 - ldr r0, _08030400 @ =gBattlerSpriteIds - adds r0, r7, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08030404 @ =gSprites - adds r4, r0, r1 - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0x6 - bls _080303F0 - b _0803051C -_080303F0: - lsls r0, 2 - ldr r1, _08030408 @ =_0803040C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080303FC: .4byte gTasks+0x8 -_08030400: .4byte gBattlerSpriteIds -_08030404: .4byte gSprites -_08030408: .4byte _0803040C - .align 2, 0 -_0803040C: - .4byte _08030428 - .4byte _0803047C - .4byte _08030486 - .4byte _080304C0 - .4byte _080304E0 - .4byte _080304DA - .4byte _080304E8 -_08030428: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0803051C - cmp r6, 0 - bne _0803044C - ldr r1, _08030444 @ =gBattle_BG1_X - ldrh r0, [r1] - strh r0, [r5, 0x1C] - ldr r2, _08030448 @ =gBattle_BG1_Y - b _08030454 - .align 2, 0 -_08030444: .4byte gBattle_BG1_X -_08030448: .4byte gBattle_BG1_Y -_0803044C: - ldr r1, _08030474 @ =gBattle_BG2_X - ldrh r0, [r1] - strh r0, [r5, 0x1C] - ldr r2, _08030478 @ =gBattle_BG2_Y -_08030454: - ldrh r0, [r2] - strh r0, [r5, 0x1A] - ldrh r0, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r0, r3 - negs r0, r0 - adds r0, 0x20 - strh r0, [r1] - ldrh r0, [r4, 0x26] - ldrh r4, [r4, 0x22] - adds r0, r4 - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - b _080304E0 - .align 2, 0 -_08030474: .4byte gBattle_BG2_X -_08030478: .4byte gBattle_BG2_Y -_0803047C: - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8072E48 - b _080304E0 -_08030486: - movs r0, 0x58 - bl PlaySE - bl IsMonGettingExpSentOut - cmp r0, 0 - beq _080304E0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r4, 0x26] - ldrh r4, [r4, 0x22] - adds r1, r4 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _080304BC @ =0x00002710 - movs r2, 0x1 - str r2, [sp] - movs r2, 0 - str r2, [sp, 0x4] - adds r2, r3, 0 - bl sub_811E5B8 - b _080304E0 - .align 2, 0 -_080304BC: .4byte 0x00002710 -_080304C0: - bl sub_811E680 - lsls r0, 24 - cmp r0, 0 - bne _0803051C - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - b _080304E0 -_080304DA: - adds r0, r6, 0 - bl sub_8073128 -_080304E0: - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - b _0803051C -_080304E8: - cmp r6, 0 - bne _08030500 - ldr r1, _080304F8 @ =gBattle_BG1_X - ldrh r0, [r5, 0x1C] - strh r0, [r1] - ldr r1, _080304FC @ =gBattle_BG1_Y - b _08030508 - .align 2, 0 -_080304F8: .4byte gBattle_BG1_X -_080304FC: .4byte gBattle_BG1_Y -_08030500: - ldr r1, _08030528 @ =gBattle_BG2_X - ldrh r0, [r5, 0x1C] - strh r0, [r1] - ldr r1, _0803052C @ =gBattle_BG2_Y -_08030508: - ldrh r0, [r5, 0x1A] - strh r0, [r1] - ldr r0, _08030530 @ =gBattlerControllerFuncs - lsls r1, r7, 2 - adds r1, r0 - ldr r0, _08030534 @ =sub_802FE94 - str r0, [r1] - mov r0, r8 - bl DestroyTask -_0803051C: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030528: .4byte gBattle_BG2_X -_0803052C: .4byte gBattle_BG2_Y -_08030530: .4byte gBattlerControllerFuncs -_08030534: .4byte sub_802FE94 - thumb_func_end sub_80303A8 - - thumb_func_start sub_8030538 -sub_8030538: @ 8030538 - push {r4-r6,lr} - ldr r6, _08030590 @ =gSprites - ldr r5, _08030594 @ =gBattlerSpriteIds - ldr r4, _08030598 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r6 - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - cmp r0, 0xA0 - ble _08030588 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _0803059C @ =gHealthboxSpriteIds - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PlayerBufferExecCompleted -_08030588: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08030590: .4byte gSprites -_08030594: .4byte gBattlerSpriteIds -_08030598: .4byte gActiveBattler -_0803059C: .4byte gHealthboxSpriteIds - thumb_func_end sub_8030538 - - thumb_func_start sub_80305A0 -sub_80305A0: @ 80305A0 - push {r4-r6,lr} - ldr r0, _080305FC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _08030600 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080305F4 - ldr r5, _08030604 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08030608 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _0803060C @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PlayerBufferExecCompleted -_080305F4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080305FC: .4byte gBattleSpritesDataPtr -_08030600: .4byte gActiveBattler -_08030604: .4byte gBattlerSpriteIds -_08030608: .4byte gSprites -_0803060C: .4byte gHealthboxSpriteIds - thumb_func_end sub_80305A0 - - thumb_func_start sub_8030610 -sub_8030610: @ 8030610 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _08030622 - bl PlayerBufferExecCompleted -_08030622: - pop {r0} - bx r0 - thumb_func_end sub_8030610 - - thumb_func_start sub_8030628 -sub_8030628: @ 8030628 - push {r4,lr} - ldr r0, _0803066C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08030666 - ldr r1, _08030670 @ =gBattlerControllerFuncs - ldr r2, _08030674 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030678 @ =sub_8030684 - str r1, [r0] - ldr r3, _0803067C @ =gTasks - ldr r1, _08030680 @ =gUnknown_3004FFC - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldrb r4, [r1, 0x8] - bl DestroyTask - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl sub_81278DC -_08030666: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803066C: .4byte gPaletteFade -_08030670: .4byte gBattlerControllerFuncs -_08030674: .4byte gActiveBattler -_08030678: .4byte sub_8030684 -_0803067C: .4byte gTasks -_08030680: .4byte gUnknown_3004FFC - thumb_func_end sub_8030628 - - thumb_func_start sub_8030684 -sub_8030684: @ 8030684 - push {lr} - ldr r0, _080306B4 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080306B8 @ =BattleMainCB2 - cmp r1, r0 - bne _080306F4 - ldr r0, _080306BC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080306F4 - ldr r0, _080306C0 @ =gUnknown_203B0C0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080306CC - ldr r0, _080306C4 @ =gUnknown_203B0C1 - ldrb r1, [r0] - ldr r2, _080306C8 @ =gUnknown_203B0DC - movs r0, 0x1 - bl BtlController_EmitChosenMonReturnValue - b _080306D6 - .align 2, 0 -_080306B4: .4byte gMain -_080306B8: .4byte BattleMainCB2 -_080306BC: .4byte gPaletteFade -_080306C0: .4byte gUnknown_203B0C0 -_080306C4: .4byte gUnknown_203B0C1 -_080306C8: .4byte gUnknown_203B0DC -_080306CC: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue -_080306D6: - ldr r1, _080306F8 @ =gBattleBufferA - ldr r0, _080306FC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _080306F0 - bl PrintLinkStandbyMsg -_080306F0: - bl PlayerBufferExecCompleted -_080306F4: - pop {r0} - bx r0 - .align 2, 0 -_080306F8: .4byte gBattleBufferA -_080306FC: .4byte gActiveBattler - thumb_func_end sub_8030684 - - thumb_func_start sub_8030700 -sub_8030700: @ 8030700 - push {lr} - ldr r0, _0803072C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08030728 - ldr r1, _08030730 @ =gBattlerControllerFuncs - ldr r0, _08030734 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030738 @ =CompleteWhenChoseItem - str r1, [r0] - bl nullsub_44 - bl FreeAllWindowBuffers - bl sub_8107ECC -_08030728: - pop {r0} - bx r0 - .align 2, 0 -_0803072C: .4byte gPaletteFade -_08030730: .4byte gBattlerControllerFuncs -_08030734: .4byte gActiveBattler -_08030738: .4byte CompleteWhenChoseItem - thumb_func_end sub_8030700 - - thumb_func_start CompleteWhenChoseItem -CompleteWhenChoseItem: @ 803073C - push {lr} - ldr r0, _08030768 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0803076C @ =BattleMainCB2 - cmp r1, r0 - bne _08030762 - ldr r0, _08030770 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08030762 - ldr r0, _08030774 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl PlayerBufferExecCompleted -_08030762: - pop {r0} - bx r0 - .align 2, 0 -_08030768: .4byte gMain -_0803076C: .4byte BattleMainCB2 -_08030770: .4byte gPaletteFade -_08030774: .4byte gSpecialVar_ItemId - thumb_func_end CompleteWhenChoseItem - - thumb_func_start CompleteOnSpecialAnimDone -CompleteOnSpecialAnimDone: @ 8030778 - push {lr} - ldr r0, _080307A8 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - beq _0803079E - ldr r0, _080307AC @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080307B0 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080307A2 -_0803079E: - bl PlayerBufferExecCompleted -_080307A2: - pop {r0} - bx r0 - .align 2, 0 -_080307A8: .4byte gDoingBattleAnim -_080307AC: .4byte gBattleSpritesDataPtr -_080307B0: .4byte gActiveBattler - thumb_func_end CompleteOnSpecialAnimDone - - thumb_func_start DoHitAnimBlinkSpriteEffect -DoHitAnimBlinkSpriteEffect: @ 80307B4 - push {r4,lr} - ldr r1, _080307F0 @ =gBattlerSpriteIds - ldr r0, _080307F4 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080307F8 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _08030800 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _080307FC @ =gDoingBattleAnim - strb r3, [r0] - bl PlayerBufferExecCompleted - b _0803082A - .align 2, 0 -_080307F0: .4byte gBattlerSpriteIds -_080307F4: .4byte gActiveBattler -_080307F8: .4byte gSprites -_080307FC: .4byte gDoingBattleAnim -_08030800: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08030824 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08030824: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_0803082A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DoHitAnimBlinkSpriteEffect - - thumb_func_start sub_8030830 -sub_8030830: @ 8030830 - push {r4-r7,lr} - ldr r0, _08030890 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - ldr r3, _08030894 @ =gUnknown_2022BC8 - ldr r2, _08030898 @ =gUnknown_3004FF8 - movs r0, 0 - strb r0, [r2] - movs r5, 0 - ldr r6, _0803089C @ =gDisplayedStringBattle - adds r4, r1, r3 - adds r7, r2, 0 -_08030848: - lsls r0, r5, 24 - lsrs r0, 24 - bl MoveSelectionDestroyCursorAt - adds r0, r6, 0 - ldr r1, _080308A0 @ =gUnknown_83FE770 - bl StringCopy - ldrh r1, [r4] - movs r0, 0xD - muls r1, r0 - ldr r0, _080308A4 @ =gMoveNames - adds r1, r0 - adds r0, r6, 0 - bl StringAppend - adds r1, r5, 0x3 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl BattlePutTextOnWindow - ldrh r0, [r4] - cmp r0, 0 - beq _08030880 - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] -_08030880: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08030848 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030890: .4byte gActiveBattler -_08030894: .4byte gUnknown_2022BC8 -_08030898: .4byte gUnknown_3004FF8 -_0803089C: .4byte gDisplayedStringBattle -_080308A0: .4byte gUnknown_83FE770 -_080308A4: .4byte gMoveNames - thumb_func_end sub_8030830 - - thumb_func_start MoveSelectionDisplayPpString -MoveSelectionDisplayPpString: @ 80308A8 - push {r4,lr} - ldr r4, _080308C4 @ =gDisplayedStringBattle - ldr r1, _080308C8 @ =gUnknown_83FE766 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - movs r1, 0x7 - bl BattlePutTextOnWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080308C4: .4byte gDisplayedStringBattle -_080308C8: .4byte gUnknown_83FE766 - thumb_func_end MoveSelectionDisplayPpString - - thumb_func_start MoveSelectionDisplayPpNumber -MoveSelectionDisplayPpNumber: @ 80308CC - push {r4-r7,lr} - ldr r5, _08030930 @ =gBattleBufferA - ldr r7, _08030934 @ =gActiveBattler - ldrb r0, [r7] - lsls r0, 9 - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08030928 - bl SetPpNumbersPaletteInMoveSelection - ldrb r1, [r7] - lsls r4, r1, 9 - adds r0, r5, 0x4 - adds r4, r0 - ldr r6, _08030938 @ =gDisplayedStringBattle - ldr r5, _0803093C @ =gMoveSelectionCursor - adds r1, r5 - adds r0, r4, 0 - adds r0, 0x8 - ldrb r1, [r1] - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r1, 0xBA - strb r1, [r0] - adds r0, 0x1 - ldrb r1, [r7] - adds r1, r5 - adds r4, 0xC - ldrb r1, [r1] - adds r4, r1 - ldrb r1, [r4] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - movs r1, 0x9 - bl BattlePutTextOnWindow -_08030928: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030930: .4byte gBattleBufferA -_08030934: .4byte gActiveBattler -_08030938: .4byte gDisplayedStringBattle -_0803093C: .4byte gMoveSelectionCursor - thumb_func_end MoveSelectionDisplayPpNumber - - thumb_func_start MoveSelectionDisplayMoveType -MoveSelectionDisplayMoveType: @ 8030940 - push {r4-r6,lr} - ldr r5, _080309AC @ =gActiveBattler - ldrb r4, [r5] - lsls r4, 9 - ldr r0, _080309B0 @ =gUnknown_2022BC8 - adds r4, r0 - ldr r6, _080309B4 @ =gDisplayedStringBattle - ldr r1, _080309B8 @ =gUnknown_83FE76A - adds r0, r6, 0 - bl StringCopy - adds r3, r0, 0 - movs r0, 0xFC - strb r0, [r3] - adds r3, 0x1 - movs r0, 0x6 - strb r0, [r3] - adds r3, 0x1 - movs r0, 0x1 - strb r0, [r3] - adds r3, 0x1 - ldr r1, _080309BC @ =gUnknown_83FE770 - adds r0, r3, 0 - bl StringCopy - adds r3, r0, 0 - ldr r2, _080309C0 @ =gBattleMoves - ldr r1, _080309C4 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - adds r4, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - lsls r1, r0, 3 - subs r1, r0 - ldr r0, _080309C8 @ =gUnknown_824F1A0 - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - adds r0, r6, 0 - movs r1, 0x8 - bl BattlePutTextOnWindow - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080309AC: .4byte gActiveBattler -_080309B0: .4byte gUnknown_2022BC8 -_080309B4: .4byte gDisplayedStringBattle -_080309B8: .4byte gUnknown_83FE76A -_080309BC: .4byte gUnknown_83FE770 -_080309C0: .4byte gBattleMoves -_080309C4: .4byte gMoveSelectionCursor -_080309C8: .4byte gUnknown_824F1A0 - thumb_func_end MoveSelectionDisplayMoveType - - thumb_func_start MoveSelectionCreateCursorAt -MoveSelectionCreateCursorAt: @ 80309CC - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r1, 24 - lsrs r1, 24 - add r2, sp, 0xC - adds r0, r1, 0x1 - strh r0, [r2] - adds r0, r2, 0 - adds r1, 0x2 - strh r1, [r0, 0x2] - movs r1, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r0, 3 - adds r2, r0 - adds r2, 0x1 - movs r0, 0x2 - ands r3, r0 - adds r3, 0x37 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - thumb_func_end MoveSelectionCreateCursorAt - - thumb_func_start MoveSelectionDestroyCursorAt -MoveSelectionDestroyCursorAt: @ 8030A14 - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0xC - movs r1, 0x20 - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r0, 3 - adds r2, r0 - adds r2, 0x1 - movs r0, 0x2 - ands r3, r0 - adds r3, 0x37 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - thumb_func_end MoveSelectionDestroyCursorAt - - thumb_func_start ActionSelectionCreateCursorAt -ActionSelectionCreateCursorAt: @ 8030A54 - push {r4,lr} - sub sp, 0x10 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0xC - movs r4, 0x1 - strh r4, [r0] - movs r1, 0x2 - strh r1, [r0, 0x2] - adds r0, r3, 0 - ands r0, r4 - lsls r2, r0, 3 - subs r2, r0 - adds r2, 0x10 - lsls r2, 24 - lsrs r2, 24 - ands r3, r1 - adds r3, 0x23 - str r4, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ActionSelectionCreateCursorAt - - thumb_func_start ActionSelectionDestroyCursorAt -ActionSelectionDestroyCursorAt: @ 8030A98 - push {lr} - sub sp, 0x10 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - add r0, sp, 0xC - movs r1, 0x20 - strh r1, [r0] - strh r1, [r0, 0x2] - movs r1, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r0, 3 - subs r2, r0 - adds r2, 0x10 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x2 - ands r3, r0 - adds r3, 0x23 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - thumb_func_end ActionSelectionDestroyCursorAt - - thumb_func_start sub_8030ADC -sub_8030ADC: @ 8030ADC - push {lr} - ldr r0, _08030AE8 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08030AE8: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_8030ADC - - thumb_func_start sub_8030AEC -sub_8030AEC: @ 8030AEC - push {lr} - ldr r0, _08030AF8 @ =ReshowBattleScreenAfterMenu - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08030AF8: .4byte ReshowBattleScreenAfterMenu - thumb_func_end sub_8030AEC - - thumb_func_start CompleteOnFinishedStatusAnimation -CompleteOnFinishedStatusAnimation: @ 8030AFC - push {lr} - ldr r0, _08030B24 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08030B28 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08030B1E - bl PlayerBufferExecCompleted -_08030B1E: - pop {r0} - bx r0 - .align 2, 0 -_08030B24: .4byte gBattleSpritesDataPtr -_08030B28: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation - - thumb_func_start CompleteOnFinishedBattleAnimation -CompleteOnFinishedBattleAnimation: @ 8030B2C - push {lr} - ldr r0, _08030B54 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08030B58 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08030B4E - bl PlayerBufferExecCompleted -_08030B4E: - pop {r0} - bx r0 - .align 2, 0 -_08030B54: .4byte gBattleSpritesDataPtr -_08030B58: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation - - thumb_func_start PrintLinkStandbyMsg -PrintLinkStandbyMsg: @ 8030B5C - push {lr} - ldr r0, _08030B80 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08030B7C - ldr r0, _08030B84 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08030B88 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _08030B8C @ =gUnknown_83FE714 - movs r1, 0 - bl BattlePutTextOnWindow -_08030B7C: - pop {r0} - bx r0 - .align 2, 0 -_08030B80: .4byte gBattleTypeFlags -_08030B84: .4byte gBattle_BG0_X -_08030B88: .4byte gBattle_BG0_Y -_08030B8C: .4byte gUnknown_83FE714 - thumb_func_end PrintLinkStandbyMsg - - thumb_func_start PlayerHandleGetMonData -PlayerHandleGetMonData: @ 8030B90 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _08030BBC @ =gBattleBufferA - ldr r0, _08030BC0 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _08030BC8 - ldr r0, _08030BC4 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl CopyPlayerMonData - adds r6, r0, 0 - b _08030BEA - .align 2, 0 -_08030BBC: .4byte gBattleBufferA -_08030BC0: .4byte gActiveBattler -_08030BC4: .4byte gBattlerPartyIndexes -_08030BC8: - ldrb r4, [r1] - movs r5, 0 -_08030BCC: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08030BE2 - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl CopyPlayerMonData - adds r6, r0 -_08030BE2: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _08030BCC -_08030BEA: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl PlayerBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PlayerHandleGetMonData - - thumb_func_start CopyPlayerMonData -CopyPlayerMonData: @ 8030C04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _08030C38 @ =gBattleBufferA - ldr r3, _08030C3C @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _08030C2E - bl _0803139A -_08030C2E: - lsls r0, 2 - ldr r1, _08030C40 @ =_08030C44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08030C38: .4byte gBattleBufferA -_08030C3C: .4byte gActiveBattler -_08030C40: .4byte _08030C44 - .align 2, 0 -_08030C44: - .4byte _08030D34 - .4byte _08030F58 - .4byte _08030F68 - .4byte _08030F78 - .4byte _08030FE0 - .4byte _08030FE0 - .4byte _08030FE0 - .4byte _08030FE0 - .4byte _08030FFC - .4byte _08031038 - .4byte _08031038 - .4byte _08031038 - .4byte _08031038 - .4byte _0803139A - .4byte _0803139A - .4byte _0803139A - .4byte _0803139A - .4byte _08031054 - .4byte _08031064 - .4byte _08031094 - .4byte _080310A4 - .4byte _080310B4 - .4byte _080310C4 - .4byte _080310D4 - .4byte _080310E4 - .4byte _080310F4 - .4byte _08031104 - .4byte _08031114 - .4byte _08031124 - .4byte _08031134 - .4byte _08031144 - .4byte _08031154 - .4byte _080311A4 - .4byte _080311B4 - .4byte _080311C4 - .4byte _080311D4 - .4byte _080311E4 - .4byte _080311F4 - .4byte _08031204 - .4byte _08031214 - .4byte _08031224 - .4byte _08031258 - .4byte _08031268 - .4byte _08031278 - .4byte _08031288 - .4byte _08031298 - .4byte _080312A8 - .4byte _080312B8 - .4byte _080312C8 - .4byte _080312E8 - .4byte _080312F8 - .4byte _08031308 - .4byte _08031318 - .4byte _08031328 - .4byte _08031338 - .4byte _08031348 - .4byte _08031358 - .4byte _08031368 - .4byte _08031378 - .4byte _08031388 -_08030D34: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08030F48 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_08030D80: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _08030D80 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08030F48 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _08030F4C @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _08030F50 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _08030F54 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_08030F38: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _08030F38 - b _0803139A - .align 2, 0 -_08030F48: .4byte gPlayerParty -_08030F4C: .4byte 0xfffffc1f -_08030F50: .4byte 0xfff07fff -_08030F54: .4byte 0xfffffe0f -_08030F58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08030F64 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - b _080312D2 - .align 2, 0 -_08030F64: .4byte gPlayerParty -_08030F68: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08030F74 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - b _080312D2 - .align 2, 0 -_08030F74: .4byte gPlayerParty -_08030F78: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08030FDC @ =gPlayerParty - adds r4, r1, r0 - mov r8, r9 -_08030F8E: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _08030F8E - movs r0, 0x64 - muls r0, r5 - ldr r1, _08030FDC @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_08030FCC: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _08030FCC - b _0803139A - .align 2, 0 -_08030FDC: .4byte gPlayerParty -_08030FE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08030FF8 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _080312D2 - .align 2, 0 -_08030FF8: .4byte gPlayerParty -_08030FFC: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _08031034 @ =gPlayerParty - mov r8, r2 -_08031008: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _08031008 - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031034 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _0803139A - .align 2, 0 -_08031034: .4byte gPlayerParty -_08031038: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031050 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _08031392 - .align 2, 0 -_08031050: .4byte gPlayerParty -_08031054: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031060 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - b _0803106E - .align 2, 0 -_08031060: .4byte gPlayerParty -_08031064: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031090 @ =gPlayerParty - adds r0, r1 - movs r1, 0x19 -_0803106E: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _0803139A - .align 2, 0 -_08031090: .4byte gPlayerParty -_08031094: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310A0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1A - b _08031392 - .align 2, 0 -_080310A0: .4byte gPlayerParty -_080310A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310B0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1B - b _08031392 - .align 2, 0 -_080310B0: .4byte gPlayerParty -_080310B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310C0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1C - b _08031392 - .align 2, 0 -_080310C0: .4byte gPlayerParty -_080310C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310D0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1D - b _08031392 - .align 2, 0 -_080310D0: .4byte gPlayerParty -_080310D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1E - b _08031392 - .align 2, 0 -_080310E0: .4byte gPlayerParty -_080310E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080310F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1F - b _08031392 - .align 2, 0 -_080310F0: .4byte gPlayerParty -_080310F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031100 @ =gPlayerParty - adds r0, r1 - movs r1, 0x20 - b _08031392 - .align 2, 0 -_08031100: .4byte gPlayerParty -_08031104: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031110 @ =gPlayerParty - adds r0, r1 - movs r1, 0x22 - b _08031392 - .align 2, 0 -_08031110: .4byte gPlayerParty -_08031114: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031120 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - b _08031392 - .align 2, 0 -_08031120: .4byte gPlayerParty -_08031124: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031130 @ =gPlayerParty - adds r0, r1 - movs r1, 0x24 - b _08031392 - .align 2, 0 -_08031130: .4byte gPlayerParty -_08031134: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031140 @ =gPlayerParty - adds r0, r1 - movs r1, 0x25 - b _08031392 - .align 2, 0 -_08031140: .4byte gPlayerParty -_08031144: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031150 @ =gPlayerParty - adds r0, r1 - movs r1, 0x26 - b _08031392 - .align 2, 0 -_08031150: .4byte gPlayerParty -_08031154: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080311A0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _0803139A - .align 2, 0 -_080311A0: .4byte gPlayerParty -_080311A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080311B0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x27 - b _08031392 - .align 2, 0 -_080311B0: .4byte gPlayerParty -_080311B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080311C0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x28 - b _08031392 - .align 2, 0 -_080311C0: .4byte gPlayerParty -_080311C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080311D0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x29 - b _08031392 - .align 2, 0 -_080311D0: .4byte gPlayerParty -_080311D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080311E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2A - b _08031392 - .align 2, 0 -_080311E0: .4byte gPlayerParty -_080311E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080311F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2B - b _08031392 - .align 2, 0 -_080311F0: .4byte gPlayerParty -_080311F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031200 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2C - b _08031392 - .align 2, 0 -_08031200: .4byte gPlayerParty -_08031204: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031210 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - b _0803122E - .align 2, 0 -_08031210: .4byte gPlayerParty -_08031214: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031220 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - b _080312D2 - .align 2, 0 -_08031220: .4byte gPlayerParty -_08031224: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031254 @ =gPlayerParty - adds r0, r1 - movs r1, 0x37 -_0803122E: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _0803139A - .align 2, 0 -_08031254: .4byte gPlayerParty -_08031258: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031264 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - b _08031392 - .align 2, 0 -_08031264: .4byte gPlayerParty -_08031268: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031274 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - b _080312D2 - .align 2, 0 -_08031274: .4byte gPlayerParty -_08031278: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031284 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - b _080312D2 - .align 2, 0 -_08031284: .4byte gPlayerParty -_08031288: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031294 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3B - b _080312D2 - .align 2, 0 -_08031294: .4byte gPlayerParty -_08031298: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080312A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3C - b _080312D2 - .align 2, 0 -_080312A4: .4byte gPlayerParty -_080312A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080312B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3D - b _080312D2 - .align 2, 0 -_080312B4: .4byte gPlayerParty -_080312B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080312C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3E - b _080312D2 - .align 2, 0 -_080312C4: .4byte gPlayerParty -_080312C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080312E4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3F -_080312D2: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _0803139A - .align 2, 0 -_080312E4: .4byte gPlayerParty -_080312E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080312F4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x16 - b _08031392 - .align 2, 0 -_080312F4: .4byte gPlayerParty -_080312F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031304 @ =gPlayerParty - adds r0, r1 - movs r1, 0x17 - b _08031392 - .align 2, 0 -_08031304: .4byte gPlayerParty -_08031308: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031314 @ =gPlayerParty - adds r0, r1 - movs r1, 0x18 - b _08031392 - .align 2, 0 -_08031314: .4byte gPlayerParty -_08031318: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031324 @ =gPlayerParty - adds r0, r1 - movs r1, 0x21 - b _08031392 - .align 2, 0 -_08031324: .4byte gPlayerParty -_08031328: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031334 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2F - b _08031392 - .align 2, 0 -_08031334: .4byte gPlayerParty -_08031338: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031344 @ =gPlayerParty - adds r0, r1 - movs r1, 0x30 - b _08031392 - .align 2, 0 -_08031344: .4byte gPlayerParty -_08031348: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031354 @ =gPlayerParty - adds r0, r1 - movs r1, 0x32 - b _08031392 - .align 2, 0 -_08031354: .4byte gPlayerParty -_08031358: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031364 @ =gPlayerParty - adds r0, r1 - movs r1, 0x33 - b _08031392 - .align 2, 0 -_08031364: .4byte gPlayerParty -_08031368: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031374 @ =gPlayerParty - adds r0, r1 - movs r1, 0x34 - b _08031392 - .align 2, 0 -_08031374: .4byte gPlayerParty -_08031378: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031384 @ =gPlayerParty - adds r0, r1 - movs r1, 0x35 - b _08031392 - .align 2, 0 -_08031384: .4byte gPlayerParty -_08031388: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080313AC @ =gPlayerParty - adds r0, r1 - movs r1, 0x36 -_08031392: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_0803139A: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080313AC: .4byte gPlayerParty - thumb_func_end CopyPlayerMonData - - thumb_func_start PlayerHandleGetRawMonData -PlayerHandleGetRawMonData: @ 80313B0 - push {r4-r7,lr} - sub sp, 0x58 - ldr r2, _08031428 @ =gBattlerPartyIndexes - ldr r5, _0803142C @ =gActiveBattler - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r3, _08031430 @ =gBattleBufferA - lsls r1, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r2, [r0] - ldr r0, _08031434 @ =gPlayerParty - adds r0, r2, r0 - adds r6, r4, r0 - mov r0, sp - adds r4, r0, r2 - movs r2, 0 - adds r0, r3, 0x2 - adds r1, r0 - adds r7, r5, 0 - mov r12, r3 - ldrb r1, [r1] - cmp r2, r1 - bcs _08031406 - adds r3, r0, 0 -_080313EC: - adds r1, r4, r2 - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3 - ldrb r0, [r0] - cmp r2, r0 - bcc _080313EC -_08031406: - ldrb r0, [r7] - lsls r0, 9 - mov r1, r12 - adds r1, 0x2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - adds r2, r4, 0 - bl BtlController_EmitDataTransfer - bl PlayerBufferExecCompleted - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031428: .4byte gBattlerPartyIndexes -_0803142C: .4byte gActiveBattler -_08031430: .4byte gBattleBufferA -_08031434: .4byte gPlayerParty - thumb_func_end PlayerHandleGetRawMonData - - thumb_func_start PlayerHandleSetMonData -PlayerHandleSetMonData: @ 8031438 - push {r4,r5,lr} - ldr r1, _0803145C @ =gBattleBufferA - ldr r0, _08031460 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _08031468 - ldr r0, _08031464 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl SetPlayerMonData - b _08031486 - .align 2, 0 -_0803145C: .4byte gBattleBufferA -_08031460: .4byte gActiveBattler -_08031464: .4byte gBattlerPartyIndexes -_08031468: - ldrb r4, [r1] - movs r5, 0 -_0803146C: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0803147A - adds r0, r5, 0 - bl SetPlayerMonData -_0803147A: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0803146C -_08031486: - bl PlayerBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PlayerHandleSetMonData - - thumb_func_start SetPlayerMonData -SetPlayerMonData: @ 8031490 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080314C8 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r2, _080314CC @ =gUnknown_2022BC7 - adds r3, r0, r2 - adds r6, r3, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r2, 0 - cmp r0, 0x3B - bls _080314BC - bl _08031E56 -_080314BC: - lsls r0, 2 - ldr r1, _080314D0 @ =_080314D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080314C8: .4byte gActiveBattler -_080314CC: .4byte gUnknown_2022BC7 -_080314D0: .4byte _080314D4 - .align 2, 0 -_080314D4: - .4byte _080315C4 - .4byte _0803175C - .4byte _0803177C - .4byte _0803179C - .4byte _080317F4 - .4byte _080317F4 - .4byte _080317F4 - .4byte _080317F4 - .4byte _0803181C - .4byte _08031880 - .4byte _08031880 - .4byte _08031880 - .4byte _08031880 - .4byte _08031E56 - .4byte _08031E56 - .4byte _08031E56 - .4byte _08031E56 - .4byte _080318B0 - .4byte _080318D0 - .4byte _080318F0 - .4byte _08031910 - .4byte _08031930 - .4byte _08031950 - .4byte _08031970 - .4byte _08031990 - .4byte _080319B0 - .4byte _080319D0 - .4byte _080319F0 - .4byte _08031A10 - .4byte _08031A30 - .4byte _08031A50 - .4byte _08031A70 - .4byte _08031AE0 - .4byte _08031B00 - .4byte _08031B20 - .4byte _08031B40 - .4byte _08031B60 - .4byte _08031B80 - .4byte _08031BA0 - .4byte _08031BC0 - .4byte _08031BE0 - .4byte _08031C00 - .4byte _08031C20 - .4byte _08031C40 - .4byte _08031C60 - .4byte _08031C80 - .4byte _08031CA0 - .4byte _08031CC0 - .4byte _08031CE0 - .4byte _08031D00 - .4byte _08031D20 - .4byte _08031D40 - .4byte _08031D60 - .4byte _08031D80 - .4byte _08031DA0 - .4byte _08031DC0 - .4byte _08031DE0 - .4byte _08031E00 - .4byte _08031E20 - .4byte _08031E40 -_080315C4: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08031758 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r6, 0 - bl SetMonData - adds r2, r6, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r6 - mov r10, r0 - adds r0, r6, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r6, 0x2 - str r0, [sp, 0x4] - adds r0, r6, 0x4 - str r0, [sp, 0x8] - adds r0, r6, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r7, r6, 0 - adds r7, 0x24 - adds r4, r6, 0 - adds r4, 0xC -_0803162A: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _0803162A - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08031758 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r6, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r6, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _08031E56 - .align 2, 0 -_08031758: .4byte gPlayerParty -_0803175C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031774 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031778 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xB - bl SetMonData - b _08031E56 - .align 2, 0 -_08031774: .4byte gPlayerParty -_08031778: .4byte gActiveBattler -_0803177C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031794 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031798 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xC - bl SetMonData - b _08031E56 - .align 2, 0 -_08031794: .4byte gPlayerParty -_08031798: .4byte gActiveBattler -_0803179C: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r3 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080317F0 @ =gPlayerParty - adds r7, r1, r0 - adds r6, r3, 0 - adds r6, 0x8 - adds r4, r3, 0 -_080317B6: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080317B6 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080317F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _08031E56 - .align 2, 0 -_080317F0: .4byte gPlayerParty -_080317F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031810 @ =gPlayerParty - adds r0, r1 - ldr r3, _08031814 @ =gBattleBufferA - ldr r1, _08031818 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _08031898 - .align 2, 0 -_08031810: .4byte gPlayerParty -_08031814: .4byte gBattleBufferA -_08031818: .4byte gActiveBattler -_0803181C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08031878 @ =gPlayerParty - adds r4, r0 - ldr r5, _0803187C @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x11 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031878: .4byte gPlayerParty -_0803187C: .4byte gActiveBattler -_08031880: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080318A4 @ =gPlayerParty - adds r0, r1 - ldr r3, _080318A8 @ =gBattleBufferA - ldr r1, _080318AC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_08031898: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _08031E56 - .align 2, 0 -_080318A4: .4byte gPlayerParty -_080318A8: .4byte gBattleBufferA -_080318AC: .4byte gActiveBattler -_080318B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080318C8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080318CC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1 - bl SetMonData - b _08031E56 - .align 2, 0 -_080318C8: .4byte gPlayerParty -_080318CC: .4byte gActiveBattler -_080318D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080318E8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080318EC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x19 - bl SetMonData - b _08031E56 - .align 2, 0 -_080318E8: .4byte gPlayerParty -_080318EC: .4byte gActiveBattler -_080318F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031908 @ =gPlayerParty - adds r0, r1 - ldr r1, _0803190C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1A - bl SetMonData - b _08031E56 - .align 2, 0 -_08031908: .4byte gPlayerParty -_0803190C: .4byte gActiveBattler -_08031910: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031928 @ =gPlayerParty - adds r0, r1 - ldr r1, _0803192C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1B - bl SetMonData - b _08031E56 - .align 2, 0 -_08031928: .4byte gPlayerParty -_0803192C: .4byte gActiveBattler -_08031930: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031948 @ =gPlayerParty - adds r0, r1 - ldr r1, _0803194C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1C - bl SetMonData - b _08031E56 - .align 2, 0 -_08031948: .4byte gPlayerParty -_0803194C: .4byte gActiveBattler -_08031950: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031968 @ =gPlayerParty - adds r0, r1 - ldr r1, _0803196C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1D - bl SetMonData - b _08031E56 - .align 2, 0 -_08031968: .4byte gPlayerParty -_0803196C: .4byte gActiveBattler -_08031970: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031988 @ =gPlayerParty - adds r0, r1 - ldr r1, _0803198C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1E - bl SetMonData - b _08031E56 - .align 2, 0 -_08031988: .4byte gPlayerParty -_0803198C: .4byte gActiveBattler -_08031990: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080319A8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080319AC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1F - bl SetMonData - b _08031E56 - .align 2, 0 -_080319A8: .4byte gPlayerParty -_080319AC: .4byte gActiveBattler -_080319B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080319C8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080319CC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x20 - bl SetMonData - b _08031E56 - .align 2, 0 -_080319C8: .4byte gPlayerParty -_080319CC: .4byte gActiveBattler -_080319D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080319E8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080319EC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x22 - bl SetMonData - b _08031E56 - .align 2, 0 -_080319E8: .4byte gPlayerParty -_080319EC: .4byte gActiveBattler -_080319F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031A08 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031A0C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x23 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031A08: .4byte gPlayerParty -_08031A0C: .4byte gActiveBattler -_08031A10: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031A28 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031A2C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x24 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031A28: .4byte gPlayerParty -_08031A2C: .4byte gActiveBattler -_08031A30: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031A48 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031A4C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x25 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031A48: .4byte gPlayerParty -_08031A4C: .4byte gActiveBattler -_08031A50: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031A68 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031A6C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x26 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031A68: .4byte gPlayerParty -_08031A6C: .4byte gActiveBattler -_08031A70: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08031AD8 @ =gPlayerParty - adds r4, r0 - ldr r5, _08031ADC @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x27 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _08031B90 - .align 2, 0 -_08031AD8: .4byte gPlayerParty -_08031ADC: .4byte gActiveBattler -_08031AE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031AF8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031AFC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x27 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031AF8: .4byte gPlayerParty -_08031AFC: .4byte gActiveBattler -_08031B00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031B18 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031B1C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x28 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031B18: .4byte gPlayerParty -_08031B1C: .4byte gActiveBattler -_08031B20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031B38 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031B3C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x29 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031B38: .4byte gPlayerParty -_08031B3C: .4byte gActiveBattler -_08031B40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031B58 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031B5C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2A - bl SetMonData - b _08031E56 - .align 2, 0 -_08031B58: .4byte gPlayerParty -_08031B5C: .4byte gActiveBattler -_08031B60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031B78 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031B7C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2B - bl SetMonData - b _08031E56 - .align 2, 0 -_08031B78: .4byte gPlayerParty -_08031B7C: .4byte gActiveBattler -_08031B80: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031B98 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031B9C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 -_08031B90: - movs r1, 0x2C - bl SetMonData - b _08031E56 - .align 2, 0 -_08031B98: .4byte gPlayerParty -_08031B9C: .4byte gActiveBattler -_08031BA0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031BB8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031BBC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031BB8: .4byte gPlayerParty -_08031BBC: .4byte gActiveBattler -_08031BC0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031BD8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031BDC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x9 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031BD8: .4byte gPlayerParty -_08031BDC: .4byte gActiveBattler -_08031BE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031BF8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031BFC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x37 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031BF8: .4byte gPlayerParty -_08031BFC: .4byte gActiveBattler -_08031C00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031C18 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031C1C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x38 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031C18: .4byte gPlayerParty -_08031C1C: .4byte gActiveBattler -_08031C20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031C38 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031C3C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x39 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031C38: .4byte gPlayerParty -_08031C3C: .4byte gActiveBattler -_08031C40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031C58 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031C5C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3A - bl SetMonData - b _08031E56 - .align 2, 0 -_08031C58: .4byte gPlayerParty -_08031C5C: .4byte gActiveBattler -_08031C60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031C78 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031C7C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3B - bl SetMonData - b _08031E56 - .align 2, 0 -_08031C78: .4byte gPlayerParty -_08031C7C: .4byte gActiveBattler -_08031C80: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031C98 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031C9C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3C - bl SetMonData - b _08031E56 - .align 2, 0 -_08031C98: .4byte gPlayerParty -_08031C9C: .4byte gActiveBattler -_08031CA0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031CB8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031CBC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3D - bl SetMonData - b _08031E56 - .align 2, 0 -_08031CB8: .4byte gPlayerParty -_08031CBC: .4byte gActiveBattler -_08031CC0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031CD8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031CDC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3E - bl SetMonData - b _08031E56 - .align 2, 0 -_08031CD8: .4byte gPlayerParty -_08031CDC: .4byte gActiveBattler -_08031CE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031CF8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031CFC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3F - bl SetMonData - b _08031E56 - .align 2, 0 -_08031CF8: .4byte gPlayerParty -_08031CFC: .4byte gActiveBattler -_08031D00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031D18 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031D1C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x16 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031D18: .4byte gPlayerParty -_08031D1C: .4byte gActiveBattler -_08031D20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031D38 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031D3C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x17 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031D38: .4byte gPlayerParty -_08031D3C: .4byte gActiveBattler -_08031D40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031D58 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031D5C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x18 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031D58: .4byte gPlayerParty -_08031D5C: .4byte gActiveBattler -_08031D60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031D78 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031D7C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x21 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031D78: .4byte gPlayerParty -_08031D7C: .4byte gActiveBattler -_08031D80: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031D98 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031D9C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2F - bl SetMonData - b _08031E56 - .align 2, 0 -_08031D98: .4byte gPlayerParty -_08031D9C: .4byte gActiveBattler -_08031DA0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031DB8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031DBC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x30 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031DB8: .4byte gPlayerParty -_08031DBC: .4byte gActiveBattler -_08031DC0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031DD8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031DDC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x32 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031DD8: .4byte gPlayerParty -_08031DDC: .4byte gActiveBattler -_08031DE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031DF8 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031DFC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x33 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031DF8: .4byte gPlayerParty -_08031DFC: .4byte gActiveBattler -_08031E00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031E18 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031E1C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x34 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031E18: .4byte gPlayerParty -_08031E1C: .4byte gActiveBattler -_08031E20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031E38 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031E3C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x35 - bl SetMonData - b _08031E56 - .align 2, 0 -_08031E38: .4byte gPlayerParty -_08031E3C: .4byte gActiveBattler -_08031E40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08031E80 @ =gPlayerParty - adds r0, r1 - ldr r1, _08031E84 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x36 - bl SetMonData -_08031E56: - ldr r2, _08031E88 @ =gBattlerPartyIndexes - ldr r0, _08031E84 @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08031E80 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031E80: .4byte gPlayerParty -_08031E84: .4byte gActiveBattler -_08031E88: .4byte gBattlerPartyIndexes - thumb_func_end SetPlayerMonData - - thumb_func_start PlayerHandleSetRawMonData -PlayerHandleSetRawMonData: @ 8031E8C - push {r4-r7,lr} - ldr r1, _08031EF0 @ =gBattlerPartyIndexes - ldr r7, _08031EF4 @ =gActiveBattler - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _08031EF8 @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _08031EFC @ =gPlayerParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _08031EE4 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_08031EC2: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _08031EC2 -_08031EE4: - bl PlayerBufferExecCompleted - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031EF0: .4byte gBattlerPartyIndexes -_08031EF4: .4byte gActiveBattler -_08031EF8: .4byte gBattleBufferA -_08031EFC: .4byte gPlayerParty - thumb_func_end PlayerHandleSetRawMonData - - thumb_func_start PlayerHandleLoadMonSprite -PlayerHandleLoadMonSprite: @ 8031F00 - push {r4,lr} - ldr r2, _08031F4C @ =gBattlerPartyIndexes - ldr r4, _08031F50 @ =gActiveBattler - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08031F54 @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldr r2, _08031F58 @ =gSprites - ldr r0, _08031F5C @ =gBattlerSpriteIds - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldr r1, _08031F60 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08031F64 @ =CompleteOnBankSpritePosX_0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031F4C: .4byte gBattlerPartyIndexes -_08031F50: .4byte gActiveBattler -_08031F54: .4byte gPlayerParty -_08031F58: .4byte gSprites -_08031F5C: .4byte gBattlerSpriteIds -_08031F60: .4byte gBattlerControllerFuncs -_08031F64: .4byte CompleteOnBankSpritePosX_0 - thumb_func_end PlayerHandleLoadMonSprite - - thumb_func_start PlayerHandleSwitchInAnim -PlayerHandleSwitchInAnim: @ 8031F68 - push {r4-r6,lr} - ldr r5, _08031FD4 @ =gActiveBattler - ldrb r0, [r5] - ldr r4, _08031FD8 @ =gBattleBufferA - lsls r1, r0, 9 - adds r6, r4, 0x2 - adds r1, r6 - ldrb r1, [r1] - bl ClearTemporarySpeciesSpriteData - ldr r2, _08031FDC @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r2 - lsls r0, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08031FE0 @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldr r1, _08031FE4 @ =gActionSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldr r1, _08031FE8 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldrb r0, [r5] - lsls r1, r0, 9 - adds r1, r6 - ldrb r1, [r1] - bl sub_8031FF4 - ldr r1, _08031FEC @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08031FF0 @ =sub_802FD18 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031FD4: .4byte gActiveBattler -_08031FD8: .4byte gBattleBufferA -_08031FDC: .4byte gBattlerPartyIndexes -_08031FE0: .4byte gPlayerParty -_08031FE4: .4byte gActionSelectionCursor -_08031FE8: .4byte gMoveSelectionCursor -_08031FEC: .4byte gBattlerControllerFuncs -_08031FF0: .4byte sub_802FD18 - thumb_func_end PlayerHandleSwitchInAnim - - thumb_func_start sub_8031FF4 -sub_8031FF4: @ 8031FF4 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl ClearTemporarySpeciesSpriteData - ldr r0, _08032138 @ =gBattlerPartyIndexes - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _0803213C @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r2] - ldrh r1, [r2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08032140 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08032144 @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _08032148 @ =gUnknown_3004FFC - mov r9, r1 - add r9, r6 - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _0803214C @ =gMultiuseSpriteTemplate - mov r10, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r10 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _08032150 @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _08032154 @ =gSprites - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08032158 @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803215C @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFF - bl DoPokeballSendOutAnimation - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032138: .4byte gBattlerPartyIndexes -_0803213C: .4byte gBattleBufferA -_08032140: .4byte gPlayerParty -_08032144: .4byte sub_8033E3C -_08032148: .4byte gUnknown_3004FFC -_0803214C: .4byte gMultiuseSpriteTemplate -_08032150: .4byte gBattlerSpriteIds -_08032154: .4byte gSprites -_08032158: .4byte gBattleMonForms -_0803215C: .4byte SpriteCallbackDummy - thumb_func_end sub_8031FF4 - - thumb_func_start PlayerHandleReturnPokeToBall -PlayerHandleReturnPokeToBall: @ 8032160 - push {r4-r6,lr} - ldr r1, _08032194 @ =gBattleBufferA - ldr r6, _08032198 @ =gActiveBattler - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _080321A8 - ldr r0, _0803219C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _080321A0 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080321A4 @ =sub_80321F0 - str r1, [r0] - b _080321DE - .align 2, 0 -_08032194: .4byte gBattleBufferA -_08032198: .4byte gActiveBattler -_0803219C: .4byte gBattleSpritesDataPtr -_080321A0: .4byte gBattlerControllerFuncs -_080321A4: .4byte sub_80321F0 -_080321A8: - ldr r5, _080321E4 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080321E8 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080321EC @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PlayerBufferExecCompleted -_080321DE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080321E4: .4byte gBattlerSpriteIds -_080321E8: .4byte gSprites -_080321EC: .4byte gHealthboxSpriteIds - thumb_func_end PlayerHandleReturnPokeToBall - - thumb_func_start sub_80321F0 -sub_80321F0: @ 80321F0 - push {r4-r6,lr} - ldr r6, _08032210 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _08032214 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r4, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _08032218 - cmp r0, 0x1 - beq _08032246 - b _0803226E - .align 2, 0 -_08032210: .4byte gBattleSpritesDataPtr -_08032214: .4byte gActiveBattler -_08032218: - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032232 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_08032232: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _0803226E -_08032246: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0803226E - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl InitAndLaunchSpecialAnimation - ldr r1, _08032274 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032278 @ =sub_80305A0 - str r1, [r0] -_0803226E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032274: .4byte gBattlerControllerFuncs -_08032278: .4byte sub_80305A0 - thumb_func_end sub_80321F0 - - thumb_func_start sub_803227C -sub_803227C: @ 803227C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080322A4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080322AC - ldr r0, _080322A8 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - movs r1, 0x2 - ands r1, r0 - movs r7, 0x20 - cmp r1, 0 - beq _080322AE - movs r7, 0x5A - b _080322AE - .align 2, 0 -_080322A4: .4byte gBattleTypeFlags -_080322A8: .4byte gActiveBattler -_080322AC: - movs r7, 0x50 -_080322AE: - ldr r0, _08032320 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803233C - bl GetMultiplayerId - ldr r5, _08032324 @ =gLinkPlayers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - movs r4, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _08032306 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x1 - beq _08032306 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1] - ands r4, r0 - cmp r4, 0x3 - bne _08032328 -_08032306: - bl GetMultiplayerId - ldr r2, _08032324 @ =gLinkPlayers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x13] - adds r4, r0, 0x2 - b _08032342 - .align 2, 0 -_08032320: .4byte gBattleTypeFlags -_08032324: .4byte gLinkPlayers -_08032328: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r4, [r1, 0x13] - b _08032342 -_0803233C: - ldr r0, _08032400 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r4, [r0, 0x8] -_08032342: - ldr r5, _08032404 @ =gActiveBattler - ldrb r1, [r5] - adds r0, r4, 0 - bl DecompressTrainerBackPalette - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r6, _08032408 @ =gMultiuseSpriteTemplate - mov r8, r7 - ldr r0, _0803240C @ =gTrainerBackPicCoords - lsls r4, 2 - adds r4, r0 - ldrb r0, [r4] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r5] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - mov r1, r8 - adds r2, r4, 0 - bl CreateSprite - ldr r6, _08032410 @ =gBattlerSpriteIds - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _08032414 @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08032418 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0803241C @ =sub_8033EEC - str r1, [r0] - ldr r1, _08032420 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032424 @ =sub_802F730 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032400: .4byte gSaveBlock2Ptr -_08032404: .4byte gActiveBattler -_08032408: .4byte gMultiuseSpriteTemplate -_0803240C: .4byte gTrainerBackPicCoords -_08032410: .4byte gBattlerSpriteIds -_08032414: .4byte gSprites -_08032418: .4byte 0x0000fffe -_0803241C: .4byte sub_8033EEC -_08032420: .4byte gBattlerControllerFuncs -_08032424: .4byte sub_802F730 - thumb_func_end sub_803227C - - thumb_func_start sub_8032428 -sub_8032428: @ 8032428 - push {r4-r6,lr} - ldr r0, _0803249C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080324B8 - bl GetMultiplayerId - ldr r5, _080324A0 @ =gLinkPlayers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - movs r4, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _08032482 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x1 - beq _08032482 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1] - ands r4, r0 - cmp r4, 0x3 - bne _080324A4 -_08032482: - bl GetMultiplayerId - ldr r2, _080324A0 @ =gLinkPlayers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x13] - adds r4, r0, 0x2 - b _080324BE - .align 2, 0 -_0803249C: .4byte gBattleTypeFlags -_080324A0: .4byte gLinkPlayers -_080324A4: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r4, [r1, 0x13] - b _080324BE -_080324B8: - ldr r0, _08032568 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r4, [r0, 0x8] -_080324BE: - ldr r5, _0803256C @ =gActiveBattler - ldrb r1, [r5] - adds r0, r4, 0 - bl DecompressTrainerBackPalette - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _08032570 @ =gMultiuseSpriteTemplate - ldr r1, _08032574 @ =gTrainerBackPicCoords - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r6, _08032578 @ =gBattlerSpriteIds - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _0803257C @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08032580 @ =0x0000ffa0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _08032584 @ =sub_8033EEC - str r1, [r0] - ldr r1, _08032588 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803258C @ =sub_802F768 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032568: .4byte gSaveBlock2Ptr -_0803256C: .4byte gActiveBattler -_08032570: .4byte gMultiuseSpriteTemplate -_08032574: .4byte gTrainerBackPicCoords -_08032578: .4byte gBattlerSpriteIds -_0803257C: .4byte gSprites -_08032580: .4byte 0x0000ffa0 -_08032584: .4byte sub_8033EEC -_08032588: .4byte gBattlerControllerFuncs -_0803258C: .4byte sub_802F768 - thumb_func_end sub_8032428 - - thumb_func_start PlayerHandleTrainerSlideBack -PlayerHandleTrainerSlideBack: @ 8032590 - push {r4-r6,lr} - ldr r5, _08032630 @ =gBattlerSpriteIds - ldr r6, _08032634 @ =gActiveBattler - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08032638 @ =gSprites - adds r0, r4 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0803263C @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08032640 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08032644 @ =SpriteCallbackDummy - bl StoreSpriteCallbackInData6 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, _08032648 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803264C @ =sub_802F7A0 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032630: .4byte gBattlerSpriteIds -_08032634: .4byte gActiveBattler -_08032638: .4byte gSprites -_0803263C: .4byte 0x0000ffd8 -_08032640: .4byte StartAnimLinearTranslation -_08032644: .4byte SpriteCallbackDummy -_08032648: .4byte gBattlerControllerFuncs -_0803264C: .4byte sub_802F7A0 - thumb_func_end PlayerHandleTrainerSlideBack - - thumb_func_start sub_8032650 -sub_8032650: @ 8032650 - push {r4-r6,lr} - ldr r6, _0803269C @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _080326A0 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _080326A4 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032684 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_08032684: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _0803271A - .align 2, 0 -_0803269C: .4byte gBattleSpritesDataPtr -_080326A0: .4byte gActiveBattler -_080326A4: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0803271A - strb r4, [r3, 0x4] - ldr r2, _08032720 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08032724 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _08032728 @ =gSprites - ldr r3, _0803272C @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x30] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x32] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08032730 @ =sub_8012110 - str r1, [r0] - ldr r1, _08032734 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032738 @ =sub_8030538 - str r1, [r0] -_0803271A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032720: .4byte gBattlerPartyIndexes -_08032724: .4byte gPlayerParty -_08032728: .4byte gSprites -_0803272C: .4byte gBattlerSpriteIds -_08032730: .4byte sub_8012110 -_08032734: .4byte gBattlerControllerFuncs -_08032738: .4byte sub_8030538 - thumb_func_end sub_8032650 - - thumb_func_start PlayerHandlePaletteFade -PlayerHandlePaletteFade: @ 803273C - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end PlayerHandlePaletteFade - - thumb_func_start sub_803275C -sub_803275C: @ 803275C - push {r4,r5,lr} - ldr r0, _0803279C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _080327A0 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _080327A4 @ =gActiveBattler - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x3 - bl InitAndLaunchSpecialAnimation - ldr r1, _080327A8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080327AC @ =CompleteOnSpecialAnimDone - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803279C: .4byte gBattleSpritesDataPtr -_080327A0: .4byte gDoingBattleAnim -_080327A4: .4byte gActiveBattler -_080327A8: .4byte gBattlerControllerFuncs -_080327AC: .4byte CompleteOnSpecialAnimDone - thumb_func_end sub_803275C - - thumb_func_start PlayerHandleBallThrowAnim -PlayerHandleBallThrowAnim: @ 80327B0 - push {r4,r5,lr} - ldr r1, _080327F8 @ =gBattleBufferA - ldr r5, _080327FC @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _08032800 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strb r1, [r0, 0x8] - ldr r1, _08032804 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x3 - bl InitAndLaunchSpecialAnimation - ldr r1, _08032808 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803280C @ =CompleteOnSpecialAnimDone - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080327F8: .4byte gBattleBufferA -_080327FC: .4byte gActiveBattler -_08032800: .4byte gBattleSpritesDataPtr -_08032804: .4byte gDoingBattleAnim -_08032808: .4byte gBattlerControllerFuncs -_0803280C: .4byte CompleteOnSpecialAnimDone - thumb_func_end PlayerHandleBallThrowAnim - - thumb_func_start PlayerHandlePause -PlayerHandlePause: @ 8032810 - push {lr} - ldr r1, _08032838 @ =gBattleBufferA - ldr r0, _0803283C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803282E -_08032824: - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08032824 -_0803282E: - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08032838: .4byte gBattleBufferA -_0803283C: .4byte gActiveBattler - thumb_func_end PlayerHandlePause - - thumb_func_start PlayerHandleMoveAnimation -PlayerHandleMoveAnimation: @ 8032840 - push {r4-r6,lr} - ldr r6, _08032924 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _08032852 - b _08032966 -_08032852: - ldr r0, _08032928 @ =gBattleBufferA - mov r12, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _0803292C @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _08032930 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _08032934 @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _08032938 @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _0803293C @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _08032940 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _08032944 @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08032948 - bl PlayerBufferExecCompleted - b _08032966 - .align 2, 0 -_08032924: .4byte gActiveBattler -_08032928: .4byte gBattleBufferA -_0803292C: .4byte gAnimMoveTurn -_08032930: .4byte gAnimMovePower -_08032934: .4byte gAnimMoveDmg -_08032938: .4byte gAnimFriendship -_0803293C: .4byte gWeatherMoveAnim -_08032940: .4byte gAnimDisableStructPtr -_08032944: .4byte gTransformedPersonalities -_08032948: - ldr r0, _0803296C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _08032970 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032974 @ =sub_8032978 - str r1, [r0] -_08032966: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803296C: .4byte gBattleSpritesDataPtr -_08032970: .4byte gBattlerControllerFuncs -_08032974: .4byte sub_8032978 - thumb_func_end PlayerHandleMoveAnimation - - thumb_func_start sub_8032978 -sub_8032978: @ 8032978 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _080329C4 @ =gBattleBufferA - ldr r6, _080329C8 @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r10, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, r2, 0x2 - mov r9, r5 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r7, _080329CC @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _08032A10 - cmp r2, 0x1 - bgt _080329D0 - cmp r2, 0 - beq _080329DA - b _08032AEC - .align 2, 0 -_080329C4: .4byte gBattleBufferA -_080329C8: .4byte gActiveBattler -_080329CC: .4byte gBattleSpritesDataPtr -_080329D0: - cmp r2, 0x2 - beq _08032A3A - cmp r2, 0x3 - beq _08032AB0 - b _08032AEC -_080329DA: - ldr r1, [r5] - lsls r0, r3, 2 - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _080329FC - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r6] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080329FC: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _08032AEC -_08032A10: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08032AEC - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _08032AEC -_08032A3A: - ldr r0, _08032AA0 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08032AA4 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08032AEC - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032A88 - mov r0, r8 - cmp r0, 0x1 - bhi _08032A88 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation - ldr r0, [r7] - ldrb r1, [r6] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_08032A88: - ldr r0, _08032AA8 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _08032AAC @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _08032AEC - .align 2, 0 -_08032AA0: .4byte gAnimScriptCallback -_08032AA4: .4byte gAnimScriptActive -_08032AA8: .4byte gBattleSpritesDataPtr -_08032AAC: .4byte gActiveBattler -_08032AB0: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08032AEC - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r10 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r9 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl PlayerBufferExecCompleted -_08032AEC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8032978 - - thumb_func_start sub_8032AFC -sub_8032AFC: @ 8032AFC - push {r4,lr} - ldr r0, _08032B30 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08032B34 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _08032B38 @ =gActiveBattler - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _08032B3C @ =gUnknown_2022BC6 - adds r4, r0 - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _08032B44 - ldr r0, _08032B40 @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _08032B4C - .align 2, 0 -_08032B30: .4byte gBattle_BG0_X -_08032B34: .4byte gBattle_BG0_Y -_08032B38: .4byte gActiveBattler -_08032B3C: .4byte gUnknown_2022BC6 -_08032B40: .4byte gDisplayedStringBattle -_08032B44: - ldr r0, _08032B60 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_08032B4C: - ldr r1, _08032B64 @ =gBattlerControllerFuncs - ldr r0, _08032B68 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032B6C @ =sub_8030610 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08032B60: .4byte gDisplayedStringBattle -_08032B64: .4byte gBattlerControllerFuncs -_08032B68: .4byte gActiveBattler -_08032B6C: .4byte sub_8030610 - thumb_func_end sub_8032AFC - - thumb_func_start sub_8032B70 -sub_8032B70: @ 8032B70 - push {lr} - ldr r0, _08032B88 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08032B8C - bl sub_8032AFC - b _08032B90 - .align 2, 0 -_08032B88: .4byte gActiveBattler -_08032B8C: - bl PlayerBufferExecCompleted -_08032B90: - pop {r0} - bx r0 - thumb_func_end sub_8032B70 - - thumb_func_start sub_8032B94 -sub_8032B94: @ 8032B94 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08032BBA - ldr r0, _08032BC0 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _08032BC4 @ =gBattle_BG0_Y - movs r0, 0xA0 - strh r0, [r1] - ldr r1, _08032BC8 @ =gBattlerControllerFuncs - ldr r0, _08032BCC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032BD0 @ =sub_802E438 - str r1, [r0] -_08032BBA: - pop {r0} - bx r0 - .align 2, 0 -_08032BC0: .4byte gBattle_BG0_X -_08032BC4: .4byte gBattle_BG0_Y -_08032BC8: .4byte gBattlerControllerFuncs -_08032BCC: .4byte gActiveBattler -_08032BD0: .4byte sub_802E438 - thumb_func_end sub_8032B94 - - thumb_func_start sub_8032BD4 -sub_8032BD4: @ 8032BD4 - push {r4,lr} - ldr r1, _08032C28 @ =gBattlerControllerFuncs - ldr r0, _08032C2C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032C30 @ =sub_8032B94 - str r1, [r0] - ldr r0, _08032C34 @ =gUnknown_83FDA4C - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _08032C38 @ =gUnknown_83FE725 - movs r1, 0x2 - bl BattlePutTextOnWindow - movs r4, 0 -_08032BF6: - lsls r0, r4, 24 - lsrs r0, 24 - bl ActionSelectionDestroyCursorAt - adds r4, 0x1 - cmp r4, 0x3 - ble _08032BF6 - ldr r1, _08032C3C @ =gActionSelectionCursor - ldr r0, _08032C2C @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _08032C40 @ =gUnknown_83FE6D5 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _08032C44 @ =gDisplayedStringBattle - movs r1, 0x1 - bl BattlePutTextOnWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08032C28: .4byte gBattlerControllerFuncs -_08032C2C: .4byte gActiveBattler -_08032C30: .4byte sub_8032B94 -_08032C34: .4byte gUnknown_83FDA4C -_08032C38: .4byte gUnknown_83FE725 -_08032C3C: .4byte gActionSelectionCursor -_08032C40: .4byte gUnknown_83FE6D5 -_08032C44: .4byte gDisplayedStringBattle - thumb_func_end sub_8032BD4 - - thumb_func_start nullsub_14 -nullsub_14: @ 8032C48 - bx lr - thumb_func_end nullsub_14 - - thumb_func_start sub_8032C4C -sub_8032C4C: @ 8032C4C - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08032C76 - ldr r0, _08032C7C @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _08032C80 @ =gBattle_BG0_Y - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08032C84 @ =gBattlerControllerFuncs - ldr r0, _08032C88 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032C8C @ =sub_802EA10 - str r1, [r0] -_08032C76: - pop {r0} - bx r0 - .align 2, 0 -_08032C7C: .4byte gBattle_BG0_X -_08032C80: .4byte gBattle_BG0_Y -_08032C84: .4byte gBattlerControllerFuncs -_08032C88: .4byte gActiveBattler -_08032C8C: .4byte sub_802EA10 - thumb_func_end sub_8032C4C - - thumb_func_start sub_8032C90 -sub_8032C90: @ 8032C90 - push {lr} - bl sub_8032CB4 - ldr r1, _08032CA8 @ =gBattlerControllerFuncs - ldr r0, _08032CAC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032CB0 @ =sub_8032C4C - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08032CA8: .4byte gBattlerControllerFuncs -_08032CAC: .4byte gActiveBattler -_08032CB0: .4byte sub_8032C4C - thumb_func_end sub_8032C90 - - thumb_func_start sub_8032CB4 -sub_8032CB4: @ 8032CB4 - push {lr} - bl sub_8030830 - ldr r1, _08032CE0 @ =gUnknown_3004FF4 - movs r0, 0xFF - strb r0, [r1] - ldr r1, _08032CE4 @ =gMoveSelectionCursor - ldr r0, _08032CE8 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl MoveSelectionCreateCursorAt - bl MoveSelectionDisplayPpString - bl MoveSelectionDisplayPpNumber - bl MoveSelectionDisplayMoveType - pop {r0} - bx r0 - .align 2, 0 -_08032CE0: .4byte gUnknown_3004FF4 -_08032CE4: .4byte gMoveSelectionCursor -_08032CE8: .4byte gActiveBattler - thumb_func_end sub_8032CB4 - - thumb_func_start sub_8032CEC -sub_8032CEC: @ 8032CEC - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08032D38 @ =gBattlerControllerFuncs - ldr r2, _08032D3C @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032D40 @ =sub_8030700 - str r1, [r0] - ldr r1, _08032D44 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _08032D48 @ =gUnknown_203B0DC - ldr r4, _08032D4C @ =gBattleBufferA -_08032D1A: - adds r0, r3, r5 - ldrb r1, [r2] - lsls r1, 9 - adds r1, 0x1 - adds r1, r3, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _08032D1A - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08032D38: .4byte gBattlerControllerFuncs -_08032D3C: .4byte gActiveBattler -_08032D40: .4byte sub_8030700 -_08032D44: .4byte gBattlerInMenuId -_08032D48: .4byte gUnknown_203B0DC -_08032D4C: .4byte gBattleBufferA - thumb_func_end sub_8032CEC - - thumb_func_start sub_8032D50 -sub_8032D50: @ 8032D50 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _08032E00 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _08032E04 @ =gUnknown_3004FFC - ldr r4, _08032E08 @ =gActiveBattler - ldrb r1, [r4] - adds r1, r3 - strb r0, [r1] - ldr r5, _08032E0C @ =gTasks - ldrb r2, [r4] - adds r3, r2, r3 - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldr r5, _08032E10 @ =gBattleBufferA - lsls r2, 9 - adds r6, r5, 0x1 - adds r2, r6 - ldrb r2, [r2] - movs r0, 0xF - ands r0, r2 - strh r0, [r1, 0x8] - ldr r3, _08032E14 @ =gBattleStruct - ldr r1, [r3] - adds r1, 0x49 - ldrb r0, [r4] - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - lsrs r0, 4 - strb r0, [r1] - ldr r2, [r3] - adds r2, 0x8B - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, [r3] - adds r2, 0xAC - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x3 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r2, 0 - ldr r3, _08032E18 @ =gUnknown_203B0DC -_08032DBC: - adds r0, r2, r3 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _08032DBC - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08032E1C @ =gBattlerControllerFuncs - ldr r2, _08032E08 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032E20 @ =sub_8030628 - str r1, [r0] - ldr r1, _08032E24 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032E00: .4byte TaskDummy -_08032E04: .4byte gUnknown_3004FFC -_08032E08: .4byte gActiveBattler -_08032E0C: .4byte gTasks -_08032E10: .4byte gBattleBufferA -_08032E14: .4byte gBattleStruct -_08032E18: .4byte gUnknown_203B0DC -_08032E1C: .4byte gBattlerControllerFuncs -_08032E20: .4byte sub_8030628 -_08032E24: .4byte gBattlerInMenuId - thumb_func_end sub_8032D50 - - thumb_func_start sub_8032E28 -sub_8032E28: @ 8032E28 - push {lr} - sub sp, 0x4 - bl BattleStopLowHpSound - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8032E28 - - thumb_func_start sub_8032E4C -sub_8032E4C: @ 8032E4C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _08032EC4 @ =gBattleBufferA - ldr r0, _08032EC8 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _08032ECC @ =0x00007fff - cmp r7, r0 - beq _08032EDC - ldr r6, _08032ED0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08032ED4 @ =gPlayerParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _08032ED8 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _08032F16 - .align 2, 0 -_08032EC4: .4byte gBattleBufferA -_08032EC8: .4byte gActiveBattler -_08032ECC: .4byte 0x00007fff -_08032ED0: .4byte gBattlerPartyIndexes -_08032ED4: .4byte gPlayerParty -_08032ED8: .4byte gHealthboxSpriteIds -_08032EDC: - ldr r1, _08032F34 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08032F38 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r4, _08032F3C @ =gHealthboxSpriteIds - adds r1, r0, r4 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct - mov r1, r9 - ldrb r0, [r1] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl UpdateHpTextInHealthbox -_08032F16: - ldr r1, _08032F40 @ =gBattlerControllerFuncs - ldr r0, _08032F44 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032F48 @ =CompleteOnHealthbarDone - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032F34: .4byte gBattlerPartyIndexes -_08032F38: .4byte gPlayerParty -_08032F3C: .4byte gHealthboxSpriteIds -_08032F40: .4byte gBattlerControllerFuncs -_08032F44: .4byte gActiveBattler -_08032F48: .4byte CompleteOnHealthbarDone - thumb_func_end sub_8032E4C - - thumb_func_start PlayerHandleExpUpdate -PlayerHandleExpUpdate: @ 8032F4C - push {r4-r7,lr} - ldr r5, _08032F78 @ =gBattleBufferA - ldr r6, _08032F7C @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 9 - adds r1, r5, 0x1 - adds r0, r1 - ldrb r7, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08032F80 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _08032F84 - bl PlayerBufferExecCompleted - b _08032FD0 - .align 2, 0 -_08032F78: .4byte gBattleBufferA -_08032F7C: .4byte gActiveBattler -_08032F80: .4byte gPlayerParty -_08032F84: - movs r0, 0x1 - bl LoadBattleBarGfx - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r6] - lsls r1, 9 - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r0, r5, 0x3 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r0, _08032FD8 @ =sub_802FEAC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08032FDC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r7, [r1, 0x8] - strh r4, [r1, 0xA] - ldrb r0, [r6] - strh r0, [r1, 0xC] - ldr r1, _08032FE0 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032FE4 @ =nullsub_13 - str r1, [r0] -_08032FD0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032FD8: .4byte sub_802FEAC -_08032FDC: .4byte gTasks -_08032FE0: .4byte gBattlerControllerFuncs -_08032FE4: .4byte nullsub_13 - thumb_func_end PlayerHandleExpUpdate - - thumb_func_start sub_8032FE8 -sub_8032FE8: @ 8032FE8 - push {r4,lr} - ldr r4, _08033044 @ =gActiveBattler - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _0803303C - ldr r0, _08033048 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _0803304C @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08033050 @ =gPlayerParty - adds r1, r2 - movs r2, 0x9 - bl UpdateHealthboxAttribute - ldrb r2, [r4] - ldr r0, _08033054 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _08033058 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803305C @ =CompleteOnFinishedStatusAnimation - str r1, [r0] -_0803303C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033044: .4byte gActiveBattler -_08033048: .4byte gHealthboxSpriteIds -_0803304C: .4byte gBattlerPartyIndexes -_08033050: .4byte gPlayerParty -_08033054: .4byte gBattleSpritesDataPtr -_08033058: .4byte gBattlerControllerFuncs -_0803305C: .4byte CompleteOnFinishedStatusAnimation - thumb_func_end sub_8032FE8 - - thumb_func_start sub_8033060 -sub_8033060: @ 8033060 - push {r4,r5,lr} - ldr r5, _080330B8 @ =gActiveBattler - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080330B0 - ldr r4, _080330BC @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl InitAndLaunchChosenStatusAnimation - ldr r1, _080330C0 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080330C4 @ =CompleteOnFinishedStatusAnimation - str r1, [r0] -_080330B0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080330B8: .4byte gActiveBattler -_080330BC: .4byte gBattleBufferA -_080330C0: .4byte gBattlerControllerFuncs -_080330C4: .4byte CompleteOnFinishedStatusAnimation - thumb_func_end sub_8033060 - - thumb_func_start PlayerHandleStatusXor -PlayerHandleStatusXor: @ 80330C8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r0, _08033124 @ =gBattlerPartyIndexes - mov r8, r0 - ldr r4, _08033128 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0803312C @ =gPlayerParty - adds r0, r5 - movs r1, 0x37 - bl GetMonData - ldr r2, _08033130 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - eors r0, r1 - mov r1, sp - strb r0, [r1] - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x37 - mov r2, sp - bl SetMonData - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08033124: .4byte gBattlerPartyIndexes -_08033128: .4byte gActiveBattler -_0803312C: .4byte gPlayerParty -_08033130: .4byte gBattleBufferA - thumb_func_end PlayerHandleStatusXor - - thumb_func_start sub_8033134 -sub_8033134: @ 8033134 - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8033134 - - thumb_func_start PlayerHandleDMA3Transfer -PlayerHandleDMA3Transfer: @ 8033140 - push {r4,r5,lr} - ldr r3, _080331A4 @ =gBattleBufferA - ldr r0, _080331A8 @ =gActiveBattler - ldrb r2, [r0] - lsls r2, 9 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r5, [r0] - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r5, r0 - adds r0, r3, 0x3 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 16 - orrs r5, r0 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldrb r4, [r0] - lsls r4, 24 - adds r0, r3, 0x5 - adds r0, r2, r0 - ldrb r1, [r0] - adds r0, r3, 0x6 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - adds r3, 0x7 - adds r2, r3 - orrs r5, r4 - lsrs r4, r1, 16 - movs r0, 0x80 - lsls r0, 5 - cmp r4, r0 - bhi _080331B0 - ldr r0, _080331AC @ =0x040000d4 - str r2, [r0] - str r5, [r0, 0x4] - lsrs r1, 17 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080331DC - .align 2, 0 -_080331A4: .4byte gBattleBufferA -_080331A8: .4byte gActiveBattler -_080331AC: .4byte 0x040000d4 -_080331B0: - ldr r3, _080331E8 @ =0x040000d4 - str r2, [r3] - str r5, [r3, 0x4] - ldr r0, _080331EC @ =0x80000800 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r2, r0 - adds r5, r0 - ldr r1, _080331F0 @ =0xfffff000 - adds r4, r1 - cmp r4, r0 - bhi _080331B0 - str r2, [r3] - str r5, [r3, 0x4] - lsrs r0, r4, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] -_080331DC: - bl PlayerBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080331E8: .4byte 0x040000d4 -_080331EC: .4byte 0x80000800 -_080331F0: .4byte 0xfffff000 - thumb_func_end PlayerHandleDMA3Transfer - - thumb_func_start PlayerHandlePlayBGM -PlayerHandlePlayBGM: @ 80331F4 - push {lr} - ldr r2, _0803321C @ =gBattleBufferA - ldr r0, _08033220 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayBGM - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803321C: .4byte gBattleBufferA -_08033220: .4byte gActiveBattler - thumb_func_end PlayerHandlePlayBGM - - thumb_func_start sub_8033224 -sub_8033224: @ 8033224 - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8033224 - - thumb_func_start PlayerHandleTwoReturnValues -PlayerHandleTwoReturnValues: @ 8033230 - push {lr} - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PlayerHandleTwoReturnValues - - thumb_func_start PlayerHandleChosenMonReturnValue -PlayerHandleChosenMonReturnValue: @ 8033244 - push {lr} - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PlayerHandleChosenMonReturnValue - - thumb_func_start PlayerHandleOneReturnValue -PlayerHandleOneReturnValue: @ 8033258 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl BtlController_EmitOneReturnValue - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PlayerHandleOneReturnValue - - thumb_func_start PlayerHandleOneReturnValue_Duplicate -PlayerHandleOneReturnValue_Duplicate: @ 803326C - push {lr} - movs r0, 0x1 - movs r1, 0 - bl BtlController_EmitOneReturnValue_Duplicate - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PlayerHandleOneReturnValue_Duplicate - - thumb_func_start PlayerHandleCmd37 -PlayerHandleCmd37: @ 8033280 - push {lr} - ldr r2, _08033298 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08033298: .4byte gUnknown_2022870 - thumb_func_end PlayerHandleCmd37 - - thumb_func_start PlayerHandleCmd38 -PlayerHandleCmd38: @ 803329C - push {lr} - ldr r3, _080332C8 @ =gUnknown_2022870 - ldr r1, _080332CC @ =gBattleBufferA - ldr r0, _080332D0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080332C8: .4byte gUnknown_2022870 -_080332CC: .4byte gBattleBufferA -_080332D0: .4byte gActiveBattler - thumb_func_end PlayerHandleCmd38 - - thumb_func_start PlayerHandleCmd39 -PlayerHandleCmd39: @ 80332D4 - push {lr} - ldr r2, _080332E8 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080332E8: .4byte gUnknown_2022870 - thumb_func_end PlayerHandleCmd39 - - thumb_func_start PlayerHandleCmd40 -PlayerHandleCmd40: @ 80332EC - push {lr} - ldr r3, _08033310 @ =gUnknown_2022870 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08033310: .4byte gUnknown_2022870 - thumb_func_end PlayerHandleCmd40 - - thumb_func_start PlayerHandleHitAnimation -PlayerHandleHitAnimation: @ 8033314 - push {r4,lr} - ldr r3, _0803333C @ =gSprites - ldr r2, _08033340 @ =gBattlerSpriteIds - ldr r4, _08033344 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _08033348 - bl PlayerBufferExecCompleted - b _08033372 - .align 2, 0 -_0803333C: .4byte gSprites -_08033340: .4byte gBattlerSpriteIds -_08033344: .4byte gActiveBattler -_08033348: - ldr r1, _08033378 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _0803337C @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033380 @ =DoHitAnimBlinkSpriteEffect - str r1, [r0] -_08033372: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033378: .4byte gDoingBattleAnim -_0803337C: .4byte gBattlerControllerFuncs -_08033380: .4byte DoHitAnimBlinkSpriteEffect - thumb_func_end PlayerHandleHitAnimation - - thumb_func_start sub_8033384 -sub_8033384: @ 8033384 - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8033384 - - thumb_func_start PlayerHandlePlaySE -PlayerHandlePlaySE: @ 8033390 - push {r4,lr} - ldr r4, _080333CC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _080333A4 - movs r3, 0xC0 -_080333A4: - ldr r2, _080333D0 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080333CC: .4byte gActiveBattler -_080333D0: .4byte gBattleBufferA - thumb_func_end PlayerHandlePlaySE - - thumb_func_start PlayerHandlecmd44 -PlayerHandlecmd44: @ 80333D4 - push {lr} - ldr r2, _080333FC @ =gBattleBufferA - ldr r0, _08033400 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080333FC: .4byte gBattleBufferA -_08033400: .4byte gActiveBattler - thumb_func_end PlayerHandlecmd44 - - thumb_func_start PlayerHandleFaintingCry -PlayerHandleFaintingCry: @ 8033404 - push {lr} - ldr r1, _08033438 @ =gBattlerPartyIndexes - ldr r0, _0803343C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08033440 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - negs r1, r1 - movs r2, 0x5 - bl PlayCry3 - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08033438: .4byte gBattlerPartyIndexes -_0803343C: .4byte gActiveBattler -_08033440: .4byte gPlayerParty - thumb_func_end PlayerHandleFaintingCry - - thumb_func_start PlayerHandleIntroSlide -PlayerHandleIntroSlide: @ 8033444 - push {lr} - ldr r1, _0803346C @ =gBattleBufferA - ldr r0, _08033470 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _08033474 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803346C: .4byte gBattleBufferA -_08033470: .4byte gActiveBattler -_08033474: .4byte gIntroSlideFlags - thumb_func_end PlayerHandleIntroSlide - - thumb_func_start PlayerHandleIntroTrainerBallThrow -PlayerHandleIntroTrainerBallThrow: @ 8033478 - push {r4-r7,lr} - ldr r6, _080335B8 @ =gBattlerSpriteIds - ldr r7, _080335BC @ =gActiveBattler - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080335C0 @ =gSprites - adds r0, r5 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080335C4 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080335C8 @ =sub_80755B8 - str r1, [r0] - ldrb r2, [r7] - adds r0, r2, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x38] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080335CC @ =sub_80335F8 - bl StoreSpriteCallbackInData6 - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080335D0 @ =0x0000d6f8 - bl AllocSpritePalette - adds r4, r0, 0 - lsls r4, 24 - ldr r1, _080335D4 @ =gUnknown_8239FD4 - ldr r0, _080335D8 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - lsrs r4, 20 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - movs r2, 0x20 - bl LoadCompressedPalette - ldrb r0, [r7] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x5] - ldr r0, _080335DC @ =task05_08033660 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080335E0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r7] - strh r0, [r1, 0x8] - ldr r3, _080335E4 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r7] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803359A - ldr r0, _080335E8 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _080335EC @ =Task_HidePartyStatusSummary - str r1, [r0] -_0803359A: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080335F0 @ =gBattlerControllerFuncs - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _080335F4 @ =nullsub_13 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080335B8: .4byte gBattlerSpriteIds -_080335BC: .4byte gActiveBattler -_080335C0: .4byte gSprites -_080335C4: .4byte 0x0000ffd8 -_080335C8: .4byte sub_80755B8 -_080335CC: .4byte sub_80335F8 -_080335D0: .4byte 0x0000d6f8 -_080335D4: .4byte gUnknown_8239FD4 -_080335D8: .4byte gSaveBlock2Ptr -_080335DC: .4byte task05_08033660 -_080335E0: .4byte gTasks -_080335E4: .4byte gBattleSpritesDataPtr -_080335E8: .4byte gBattlerStatusSummaryTaskId -_080335EC: .4byte Task_HidePartyStatusSummary -_080335F0: .4byte gBattlerControllerFuncs -_080335F4: .4byte nullsub_13 - thumb_func_end PlayerHandleIntroTrainerBallThrow - - thumb_func_start sub_80335F8 -sub_80335F8: @ 80335F8 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r4, [r5, 0x38] - lsls r4, 24 - lsrs r4, 24 - bl FreeSpriteOamMatrix - ldrb r0, [r5, 0x5] - lsrs r0, 4 - bl GetSpritePaletteTagByPaletteNum - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl DestroySprite - ldr r1, _08033650 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08033654 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl BattleLoadPlayerMonSpriteGfx - ldr r0, _08033658 @ =gBattlerSpriteIds - adds r4, r0 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803365C @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08033650: .4byte gBattlerPartyIndexes -_08033654: .4byte gPlayerParty -_08033658: .4byte gBattlerSpriteIds -_0803365C: .4byte gSprites - thumb_func_end sub_80335F8 - - thumb_func_start task05_08033660 -task05_08033660: @ 8033660 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08033688 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x1E - bgt _0803368C - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _08033748 - .align 2, 0 -_08033688: .4byte gTasks -_0803368C: - ldr r7, _080336CC @ =gActiveBattler - ldrb r0, [r7] - mov r9, r0 - ldrh r0, [r1, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080336AC - ldr r0, _080336D0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080336DC -_080336AC: - ldr r0, _080336D4 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _080336D8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_8031FF4 - b _08033730 - .align 2, 0 -_080336CC: .4byte gActiveBattler -_080336D0: .4byte gBattleTypeFlags -_080336D4: .4byte gBattleBufferA -_080336D8: .4byte gBattlerPartyIndexes -_080336DC: - ldr r4, _08033754 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r5, _08033758 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_8031FF4 - ldrb r0, [r7] - movs r6, 0x2 - eors r0, r6 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r7] - lsls r0, r1, 1 - adds r0, r5 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0803375C @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldrb r0, [r7] - movs r1, 0 - bl sub_8031FF4 - ldrb r0, [r7] - eors r0, r6 - strb r0, [r7] -_08033730: - ldr r1, _08033760 @ =gBattlerControllerFuncs - ldr r2, _08033764 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033768 @ =sub_802FA58 - str r1, [r0] - mov r3, r9 - strb r3, [r2] - mov r0, r8 - bl DestroyTask -_08033748: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08033754: .4byte gBattleBufferA -_08033758: .4byte gBattlerPartyIndexes -_0803375C: .4byte gPlayerParty -_08033760: .4byte gBattlerControllerFuncs -_08033764: .4byte gActiveBattler -_08033768: .4byte sub_802FA58 - thumb_func_end task05_08033660 - - thumb_func_start PlayerHandleDrawPartyStatusSummary -PlayerHandleDrawPartyStatusSummary: @ 803376C - push {r4-r6,lr} - ldr r1, _08033794 @ =gBattleBufferA - ldr r0, _08033798 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803379C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0803379C - bl PlayerBufferExecCompleted - b _08033810 - .align 2, 0 -_08033794: .4byte gBattleBufferA -_08033798: .4byte gActiveBattler -_0803379C: - ldr r6, _08033818 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _0803381C @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _08033820 @ =gUnknown_2022BC8 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl CreatePartyStatusSummarySprites - ldr r2, _08033824 @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - movs r3, 0 - strb r0, [r1] - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x5] - ldrb r2, [r5] - lsls r0, r2, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _08033804 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x5D - strb r1, [r0, 0x5] -_08033804: - ldr r0, _08033828 @ =gBattlerControllerFuncs - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803382C @ =sub_8033830 - str r0, [r1] -_08033810: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08033818: .4byte gBattleSpritesDataPtr -_0803381C: .4byte gActiveBattler -_08033820: .4byte gUnknown_2022BC8 -_08033824: .4byte gBattlerStatusSummaryTaskId -_08033828: .4byte gBattlerControllerFuncs -_0803382C: .4byte sub_8033830 - thumb_func_end PlayerHandleDrawPartyStatusSummary - - thumb_func_start sub_8033830 -sub_8033830: @ 8033830 - push {r4,lr} - ldr r4, _08033870 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _08033874 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _08033868 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x5] - bl PlayerBufferExecCompleted -_08033868: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033870: .4byte gBattleSpritesDataPtr -_08033874: .4byte gActiveBattler - thumb_func_end sub_8033830 - - thumb_func_start PlayerHandleCmd49 -PlayerHandleCmd49: @ 8033878 - push {lr} - ldr r0, _080338B4 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080338B8 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080338AA - ldr r2, _080338BC @ =gTasks - ldr r0, _080338C0 @ =gBattlerStatusSummaryTaskId - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080338C4 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080338AA: - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080338B4: .4byte gBattleSpritesDataPtr -_080338B8: .4byte gActiveBattler -_080338BC: .4byte gTasks -_080338C0: .4byte gBattlerStatusSummaryTaskId -_080338C4: .4byte Task_HidePartyStatusSummary - thumb_func_end PlayerHandleCmd49 - - thumb_func_start sub_80338C8 -sub_80338C8: @ 80338C8 - push {r4,lr} - ldr r4, _080338E8 @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080338E8: .4byte gActiveBattler - thumb_func_end sub_80338C8 - - thumb_func_start PlayerHandleSpriteInvisibility -PlayerHandleSpriteInvisibility: @ 80338EC - push {r4,lr} - ldr r4, _0803393C @ =gActiveBattler - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _08033932 - ldr r3, _08033940 @ =gSprites - ldr r0, _08033944 @ =gBattlerSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _08033948 @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl CopyBattleSpriteInvisibility -_08033932: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803393C: .4byte gActiveBattler -_08033940: .4byte gSprites -_08033944: .4byte gBattlerSpriteIds -_08033948: .4byte gBattleBufferA - thumb_func_end PlayerHandleSpriteInvisibility - - thumb_func_start PlayerHandleBattleAnimation -PlayerHandleBattleAnimation: @ 803394C - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _08033990 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080339A4 - ldr r5, _08033994 @ =gBattleBufferA - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _08033998 - bl PlayerBufferExecCompleted - b _080339A4 - .align 2, 0 -_08033990: .4byte gActiveBattler -_08033994: .4byte gBattleBufferA -_08033998: - ldr r0, _080339AC @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080339B0 @ =CompleteOnFinishedBattleAnimation - str r0, [r1] -_080339A4: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080339AC: .4byte gBattlerControllerFuncs -_080339B0: .4byte CompleteOnFinishedBattleAnimation - thumb_func_end PlayerHandleBattleAnimation - - thumb_func_start PlayerHandleLinkStandbyMsg -PlayerHandleLinkStandbyMsg: @ 80339B4 - push {r4,lr} - ldr r1, _080339D4 @ =gBattleBufferA - ldr r0, _080339D8 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080339E6 - cmp r0, 0x1 - bgt _080339DC - cmp r0, 0 - beq _080339E2 - b _08033A04 - .align 2, 0 -_080339D4: .4byte gBattleBufferA -_080339D8: .4byte gActiveBattler -_080339DC: - cmp r0, 0x2 - beq _08033A00 - b _08033A04 -_080339E2: - bl PrintLinkStandbyMsg -_080339E6: - ldr r4, _080339FC @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - b _08033A04 - .align 2, 0 -_080339FC: .4byte gActiveBattler -_08033A00: - bl PrintLinkStandbyMsg -_08033A04: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerHandleLinkStandbyMsg - - thumb_func_start PlayerHandleResetActionMoveSelection -PlayerHandleResetActionMoveSelection: @ 8033A10 - push {r4,lr} - ldr r1, _08033A30 @ =gBattleBufferA - ldr r4, _08033A34 @ =gActiveBattler - ldrb r3, [r4] - lsls r0, r3, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0x1 - beq _08033A58 - cmp r2, 0x1 - bgt _08033A38 - cmp r2, 0 - beq _08033A3E - b _08033A68 - .align 2, 0 -_08033A30: .4byte gBattleBufferA -_08033A34: .4byte gActiveBattler -_08033A38: - cmp r2, 0x2 - beq _08033A60 - b _08033A68 -_08033A3E: - ldr r0, _08033A50 @ =gActionSelectionCursor - adds r0, r3, r0 - strb r2, [r0] - ldr r1, _08033A54 @ =gMoveSelectionCursor - ldrb r0, [r4] - adds r0, r1 - strb r2, [r0] - b _08033A68 - .align 2, 0 -_08033A50: .4byte gActionSelectionCursor -_08033A54: .4byte gMoveSelectionCursor -_08033A58: - ldr r0, _08033A5C @ =gActionSelectionCursor - b _08033A62 - .align 2, 0 -_08033A5C: .4byte gActionSelectionCursor -_08033A60: - ldr r0, _08033A74 @ =gMoveSelectionCursor -_08033A62: - adds r0, r3, r0 - movs r1, 0 - strb r1, [r0] -_08033A68: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033A74: .4byte gMoveSelectionCursor - thumb_func_end PlayerHandleResetActionMoveSelection - - thumb_func_start PlayerHandlecmd55 -PlayerHandlecmd55: @ 8033A78 - push {r4,lr} - ldr r2, _08033AB0 @ =gBattleOutcome - ldr r1, _08033AB4 @ =gBattleBufferA - ldr r4, _08033AB8 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl PlayerBufferExecCompleted - ldr r1, _08033ABC @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033AC0 @ =sub_802F6A8 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08033AB0: .4byte gBattleOutcome -_08033AB4: .4byte gBattleBufferA -_08033AB8: .4byte gActiveBattler -_08033ABC: .4byte gBattlerControllerFuncs -_08033AC0: .4byte sub_802F6A8 - thumb_func_end PlayerHandlecmd55 - - thumb_func_start nullsub_15 -nullsub_15: @ 8033AC4 - bx lr - thumb_func_end nullsub_15 - - thumb_func_start sub_8033AC8 -sub_8033AC8: @ 8033AC8 - push {r4-r6,lr} - sub sp, 0x4 - movs r5, 0 - movs r6, 0 - ldr r0, _08033B14 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08033ADE - b _08033DA2 -_08033ADE: - ldr r3, _08033B18 @ =gActiveBattler - ldrb r1, [r3] - lsls r2, r1, 9 - ldr r0, _08033B1C @ =gUnknown_2022BC8 - adds r2, r0 - ldr r0, _08033B20 @ =gMoveSelectionCursor - adds r1, r0 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r2, r0 - ldrh r4, [r0] - cmp r4, 0xAE - bne _08033B24 - ldrb r0, [r2, 0x12] - movs r1, 0 - cmp r0, 0x7 - beq _08033B30 - ldrb r1, [r2, 0x13] - movs r0, 0x7 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - asrs r1, r0, 31 - movs r0, 0x10 - ands r1, r0 - b _08033B30 - .align 2, 0 -_08033B14: .4byte gBattleTypeFlags -_08033B18: .4byte gActiveBattler -_08033B1C: .4byte gUnknown_2022BC8 -_08033B20: .4byte gMoveSelectionCursor -_08033B24: - ldr r1, _08033B40 @ =gBattleMoves - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x6] -_08033B30: - cmp r1, 0x40 - bls _08033B36 - b _08033D92 -_08033B36: - lsls r0, r1, 2 - ldr r1, _08033B44 @ =_08033B48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08033B40: .4byte gBattleMoves -_08033B44: .4byte _08033B48 - .align 2, 0 -_08033B48: - .4byte _08033C4C - .4byte _08033C4C - .4byte _08033C4C - .4byte _08033D92 - .4byte _08033C4C - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033C54 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033C80 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D4C - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033D92 - .4byte _08033C54 -_08033C4C: - movs r5, 0xF0 - lsls r5, 12 - movs r6, 0 - b _08033D92 -_08033C54: - movs r0, 0x1 - bl GetBattlerAtPosition - adds r4, r0, 0 - movs r0, 0x3 - bl GetBattlerAtPosition - ldr r1, _08033C7C @ =gBitTable - lsls r4, 24 - lsrs r4, 22 - adds r4, r1 - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r1, [r4] - ldr r0, [r0] - orrs r1, r0 - lsls r5, r1, 16 - b _08033D90 - .align 2, 0 -_08033C7C: .4byte gBitTable -_08033C80: - cmp r4, 0xDB - beq _08033CEA - cmp r4, 0xDB - bgt _08033CB2 - cmp r4, 0x73 - beq _08033CEA - cmp r4, 0x73 - bgt _08033C9E - cmp r4, 0x71 - beq _08033CEA - cmp r4, 0x71 - bgt _08033CE4 - cmp r4, 0x36 - beq _08033CEA - b _08033D38 -_08033C9E: - cmp r4, 0xC9 - beq _08033CE4 - cmp r4, 0xC9 - bgt _08033CAC - cmp r4, 0xC3 - beq _08033CE4 - b _08033D38 -_08033CAC: - cmp r4, 0xD7 - beq _08033CEA - b _08033D38 -_08033CB2: - movs r0, 0x87 - lsls r0, 1 - cmp r4, r0 - beq _08033D14 - cmp r4, r0 - bgt _08033CC8 - cmp r4, 0xF0 - blt _08033D38 - cmp r4, 0xF1 - ble _08033CE4 - b _08033CD4 -_08033CC8: - movs r0, 0x9C - lsls r0, 1 - cmp r4, r0 - beq _08033CEA - cmp r4, r0 - bgt _08033CDC -_08033CD4: - subs r0, 0xC - cmp r4, r0 - beq _08033CE4 - b _08033D38 -_08033CDC: - movs r0, 0xAD - lsls r0, 1 - cmp r4, r0 - bne _08033D38 -_08033CE4: - movs r5, 0xF0 - lsls r5, 12 - b _08033D90 -_08033CEA: - movs r0, 0 - bl GetBattlerAtPosition - adds r4, r0, 0 - movs r0, 0x2 - bl GetBattlerAtPosition - ldr r1, _08033D10 @ =gBitTable - lsls r4, 24 - lsrs r4, 22 - adds r4, r1 - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r1, [r4] - ldr r0, [r0] - orrs r1, r0 - lsls r5, r1, 16 - b _08033D90 - .align 2, 0 -_08033D10: .4byte gBitTable -_08033D14: - ldrb r0, [r3] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _08033D34 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - b _08033D42 - .align 2, 0 -_08033D34: .4byte gBitTable -_08033D38: - ldr r0, _08033D48 @ =gBitTable - ldrb r1, [r3] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] -_08033D42: - lsls r5, r0, 16 - b _08033D90 - .align 2, 0 -_08033D48: .4byte gBitTable -_08033D4C: - movs r0, 0x1 - bl GetBattlerAtPosition - adds r5, r0, 0 - ldr r0, _08033DAC @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - adds r4, r0, 0 - movs r0, 0x3 - bl GetBattlerAtPosition - ldr r3, _08033DB0 @ =gBitTable - lsls r5, 24 - lsrs r5, 22 - adds r5, r3 - lsls r4, 24 - lsrs r4, 22 - adds r4, r3 - ldr r2, [r5] - ldr r1, [r4] - orrs r2, r1 - lsls r0, 24 - lsrs r0, 22 - adds r0, r3 - ldr r0, [r0] - orrs r2, r0 - lsls r5, r2, 16 -_08033D90: - movs r6, 0x8 -_08033D92: - ldr r0, _08033DB4 @ =0x00007fff - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x8 - adds r2, r6, 0 - movs r3, 0 - bl BeginNormalPaletteFade -_08033DA2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08033DAC: .4byte gActiveBattler -_08033DB0: .4byte gBitTable -_08033DB4: .4byte 0x00007fff - thumb_func_end sub_8033AC8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 35684558a..1857d92c8 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -5191,7 +5191,7 @@ _08158B8E: ldrb r0, [r0] movs r1, 0 bl ActionSelectionCreateCursorAt - ldr r0, _08158BD4 @ =gUnknown_83FE6D5 + ldr r0, _08158BD4 @ =gText_WhatWillPkmnDo bl BattleStringExpandPlaceholdersToDisplayedString ldr r0, _08158BD8 @ =gDisplayedStringBattle movs r1, 0x1 @@ -5204,7 +5204,7 @@ _08158BC4: .4byte sub_8158B20 _08158BC8: .4byte gUnknown_83FDA4C _08158BCC: .4byte gUnknown_83FE725 _08158BD0: .4byte gActionSelectionCursor -_08158BD4: .4byte gUnknown_83FE6D5 +_08158BD4: .4byte gText_WhatWillPkmnDo _08158BD8: .4byte gDisplayedStringBattle _08158BDC: ldr r0, _08158BF0 @ =gBattlerControllerFuncs @@ -5272,7 +5272,7 @@ sub_8158C48: @ 8158C48 lsls r0, 24 cmp r0, 0 bne _08158C74 - bl sub_8032CB4 + bl InitMoveSelectionsVarsAndStrings ldr r0, _08158C6C @ =gBattlerControllerFuncs ldrb r1, [r4] lsls r1, 2 @@ -6198,7 +6198,7 @@ sub_8159304: @ 8159304 bl AllocSpritePalette adds r4, r0, 0 lsls r4, 24 - ldr r0, _08159458 @ =gUnknown_8239FD4 + ldr r0, _08159458 @ =gTrainerBackPicPaletteTable ldr r0, [r0, 0x20] lsrs r4, 20 movs r2, 0x80 @@ -6276,7 +6276,7 @@ _08159448: .4byte 0x0000ffd8 _0815944C: .4byte StartAnimLinearTranslation _08159450: .4byte sub_80335F8 _08159454: .4byte 0x0000d6f8 -_08159458: .4byte gUnknown_8239FD4 +_08159458: .4byte gTrainerBackPicPaletteTable _0815945C: .4byte sub_81595EC _08159460: .4byte gTasks _08159464: .4byte gBattleSpritesDataPtr @@ -6591,10 +6591,10 @@ sub_81596F0: @ 81596F0 ldr r4, _08159710 @ =gActiveBattler ldrb r0, [r4] movs r1, 0x1 - bl dp11b_obj_free + bl EndBounceEffect ldrb r0, [r4] movs r1, 0 - bl dp11b_obj_free + bl EndBounceEffect bl PlayerPartnerBufferExecCompleted pop {r4} pop {r0} @@ -6675,10 +6675,10 @@ sub_815977C: @ 815977C bgt _081597A4 adds r0, r2, 0 movs r1, 0x1 - bl dp11b_obj_free + bl EndBounceEffect ldrb r0, [r4] movs r1, 0 - bl dp11b_obj_free + bl EndBounceEffect _081597A4: bl PlayerPartnerBufferExecCompleted pop {r4} @@ -6765,12 +6765,12 @@ sub_8159824: @ 8159824 movs r1, 0x1 movs r2, 0x7 movs r3, 0x1 - bl dp11b_obj_instanciate + bl DoBounceEffect ldrb r0, [r4] movs r1, 0 movs r2, 0x7 movs r3, 0x1 - bl dp11b_obj_instanciate + bl DoBounceEffect _0815985C: ldr r6, _081598C0 @ =gUnknown_3005EE0 ldrb r2, [r4] diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 3e8044d2a..3de518630 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -1945,8 +1945,8 @@ _08048A44: .4byte 0x060100c0 _08048A48: .4byte 0x04000008 thumb_func_end sub_80487F8 - thumb_func_start sub_8048A4C -sub_8048A4C: @ 8048A4C + thumb_func_start SwapHpBarsWithHpText +SwapHpBarsWithHpText: @ 8048A4C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2277,7 +2277,7 @@ _08048D04: .4byte gEnemyParty _08048D08: .4byte gBattleTypeFlags _08048D0C: .4byte gHealthboxSpriteIds _08048D10: .4byte gBattlersCount - thumb_func_end sub_8048A4C + thumb_func_end SwapHpBarsWithHpText thumb_func_start CreatePartyStatusSummarySprites CreatePartyStatusSummarySprites: @ 8048D14 diff --git a/asm/battle_message.s b/asm/battle_message.s index b4a9e7a51..d3a688507 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -2304,10 +2304,10 @@ _080D8504: ldrb r0, [r0, 0x1] lsls r1, r0, 3 subs r1, r0 - ldr r0, _080D8510 @ =gUnknown_824F1A0 + ldr r0, _080D8510 @ =gTypeNames b _080D8616 .align 2, 0 -_080D8510: .4byte gUnknown_824F1A0 +_080D8510: .4byte gTypeNames _080D8514: ldrb r0, [r4, 0x1] bl GetBattlerSide diff --git a/asm/item_menu.s b/asm/item_menu.s index e85f63872..46fa08f33 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -154,14 +154,14 @@ _08107EC8: .4byte sub_80568A8 thumb_func_start sub_8107ECC sub_8107ECC: @ 8107ECC push {lr} - ldr r2, _08107EDC @ =sub_8030AEC + ldr r2, _08107EDC @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x5 movs r1, 0x3 bl sub_8107DB4 pop {r0} bx r0 .align 2, 0 -_08107EDC: .4byte sub_8030AEC +_08107EDC: .4byte SetCB2ToReshowScreenAfterMenu2 thumb_func_end sub_8107ECC thumb_func_start sub_8107EE0 @@ -6124,14 +6124,14 @@ sub_810AF74: @ 810AF74 movs r0, 0x4 movs r1, 0x1 bl AddBagItem - ldr r2, _0810AF98 @ =sub_8030AEC + ldr r2, _0810AF98 @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x6 movs r1, 0 bl sub_8107DB4 pop {r0} bx r0 .align 2, 0 -_0810AF98: .4byte sub_8030AEC +_0810AF98: .4byte SetCB2ToReshowScreenAfterMenu2 thumb_func_end sub_810AF74 thumb_func_start sub_810AF9C @@ -6348,13 +6348,13 @@ sub_810B108: @ 810B108 .align 2, 0 _0810B15C: .4byte CB2_ReturnToTeachyTV _0810B160: - ldr r2, _0810B168 @ =sub_8030AEC + ldr r2, _0810B168 @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x7 b _0810B170 .align 2, 0 -_0810B168: .4byte sub_8030AEC +_0810B168: .4byte SetCB2ToReshowScreenAfterMenu2 _0810B16C: - ldr r2, _0810B17C @ =sub_8030AEC + ldr r2, _0810B17C @ =SetCB2ToReshowScreenAfterMenu2 movs r0, 0x8 _0810B170: movs r1, 0 @@ -6363,7 +6363,7 @@ _0810B170: pop {r0} bx r0 .align 2, 0 -_0810B17C: .4byte sub_8030AEC +_0810B17C: .4byte SetCB2ToReshowScreenAfterMenu2 thumb_func_end sub_810B108 thumb_func_start sub_810B180 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index a109515d6..f65efc5f7 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -7242,7 +7242,7 @@ _081196EC: lsrs r2, 2 lsls r1, r2, 3 subs r1, r2 - ldr r2, _0811972C @ =gUnknown_824F1A0 + ldr r2, _0811972C @ =gTypeNames adds r1, r2 bl StringCopy ldr r1, _08119730 @ =gUnknown_8458ED0 @@ -7250,7 +7250,7 @@ _081196EC: .align 2, 0 _08119724: .4byte gStringVar1 _08119728: .4byte gStringVar2 -_0811972C: .4byte gUnknown_824F1A0 +_0811972C: .4byte gTypeNames _08119730: .4byte gUnknown_8458ED0 _08119734: ldr r4, _08119774 @ =gStringVar1 @@ -7273,7 +7273,7 @@ _08119734: lsrs r2, 2 lsls r1, r2, 3 subs r1, r2 - ldr r2, _0811977C @ =gUnknown_824F1A0 + ldr r2, _0811977C @ =gTypeNames adds r1, r2 bl StringCopy ldr r1, _08119780 @ =gUnknown_8458F04 @@ -7284,7 +7284,7 @@ _0811976A: .align 2, 0 _08119774: .4byte gStringVar1 _08119778: .4byte gStringVar2 -_0811977C: .4byte gUnknown_824F1A0 +_0811977C: .4byte gTypeNames _08119780: .4byte gUnknown_8458F04 _08119784: adds r0, r6, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index 89c03fcff..c6cdfb567 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -17930,8 +17930,8 @@ _081278D6: bx r1 thumb_func_end sub_81278B4 - thumb_func_start sub_81278DC -sub_81278DC: @ 81278DC + thumb_func_start OpenPartyMenuInBattle +OpenPartyMenuInBattle: @ 81278DC push {r4,lr} sub sp, 0xC lsls r0, 24 @@ -17955,7 +17955,7 @@ sub_81278DC: @ 81278DC str r0, [sp] ldr r0, _08127928 @ =sub_8120C3C str r0, [sp, 0x4] - ldr r0, _0812792C @ =sub_8030ADC + ldr r0, _0812792C @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 adds r2, r4, 0 @@ -17967,7 +17967,7 @@ sub_81278DC: @ 81278DC .align 2, 0 _08127924: .4byte gBattleTypeFlags _08127928: .4byte sub_8120C3C -_0812792C: .4byte sub_8030ADC +_0812792C: .4byte SetCB2ToReshowScreenAfterMenu _08127930: bl sub_81278B4 adds r1, r0, 0 @@ -17977,7 +17977,7 @@ _08127930: str r0, [sp] ldr r0, _08127960 @ =sub_811FB28 str r0, [sp, 0x4] - ldr r0, _08127964 @ =sub_8030ADC + ldr r0, _08127964 @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 adds r2, r4, 0 @@ -17992,8 +17992,8 @@ _08127950: bx r0 .align 2, 0 _08127960: .4byte sub_811FB28 -_08127964: .4byte sub_8030ADC - thumb_func_end sub_81278DC +_08127964: .4byte SetCB2ToReshowScreenAfterMenu + thumb_func_end OpenPartyMenuInBattle thumb_func_start sub_8127968 sub_8127968: @ 8127968 @@ -18007,7 +18007,7 @@ sub_8127968: @ 8127968 str r0, [sp] ldr r0, _0812799C @ =sub_8120EBC str r0, [sp, 0x4] - ldr r0, _081279A0 @ =sub_8030ADC + ldr r0, _081279A0 @ =SetCB2ToReshowScreenAfterMenu str r0, [sp, 0x8] movs r0, 0x1 movs r2, 0 @@ -18020,7 +18020,7 @@ sub_8127968: @ 8127968 bx r0 .align 2, 0 _0812799C: .4byte sub_8120EBC -_081279A0: .4byte sub_8030ADC +_081279A0: .4byte SetCB2ToReshowScreenAfterMenu thumb_func_end sub_8127968 thumb_func_start sub_81279A4 @@ -19046,12 +19046,12 @@ _0812817A: sub_8128184: @ 8128184 push {lr} bl sub_8108CF0 - ldr r0, _08128194 @ =sub_8030ADC + ldr r0, _08128194 @ =SetCB2ToReshowScreenAfterMenu bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_08128194: .4byte sub_8030ADC +_08128194: .4byte SetCB2ToReshowScreenAfterMenu thumb_func_end sub_8128184 thumb_func_start sub_8128198 diff --git a/data/data.s b/data/data.s index 83621f378..cc024364c 100644 --- a/data/data.s +++ b/data/data.s @@ -163,7 +163,7 @@ gTrainerBackPicCoords:: @ 8239F8C gTrainerBackPicTable:: @ 8239FA4 .incbin "baserom.gba", 0x239FA4, 0x30 -gUnknown_8239FD4:: @ 8239FD4 +gTrainerBackPicPaletteTable:: @ 8239FD4 .incbin "baserom.gba", 0x239FD4, 0x30 gEnemyMonElevation:: @ 823A004 @@ -236,7 +236,7 @@ gUnknown_824F048:: @ 824F048 gTypeEffectiveness:: @ 824F050 .incbin "baserom.gba", 0x24F050, 0x150 -gUnknown_824F1A0:: @ 824F1A0 +gTypeNames:: @ 824F1A0 .incbin "baserom.gba", 0x24F1A0, 0x80 gUnknown_824F220:: @ 824F220 @@ -329,11 +329,7 @@ gUnknown_8250888:: @ 8250888 gUnknown_8250892:: @ 8250892 .incbin "baserom.gba", 0x250892, 0xA -gUnknown_825089C:: @ 825089C - .incbin "baserom.gba", 0x25089C, 0xE4 - -gUnknown_8250980:: @ 8250980 - .incbin "baserom.gba", 0x250980, 0xC + .section .rodata.825098C gUnknown_825098C:: @ 825098C .incbin "baserom.gba", 0x25098C, 0x8 diff --git a/data/data_83F5738.s b/data/data_83F5738.s index dc09b0532..2b5b1d1f9 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -387,7 +387,7 @@ gUnknown_83FE6B5:: @ 83FE6B5 gUnknown_83FE6D0:: @ 83FE6D0 .incbin "baserom.gba", 0x3FE6D0, 0x5 -gUnknown_83FE6D5:: @ 83FE6D5 +gText_WhatWillPkmnDo:: @ 83FE6D5 .incbin "baserom.gba", 0x3FE6D5, 0x11 gUnknown_83FE6E6:: @ 83FE6E6 @@ -396,7 +396,7 @@ gUnknown_83FE6E6:: @ 83FE6E6 gUnknown_83FE6FA:: @ 83FE6FA .incbin "baserom.gba", 0x3FE6FA, 0x1A -gUnknown_83FE714:: @ 83FE714 +gText_LinkStandby:: @ 83FE714 .incbin "baserom.gba", 0x3FE714, 0x11 gUnknown_83FE725:: @ 83FE725 @@ -405,10 +405,10 @@ gUnknown_83FE725:: @ 83FE725 gUnknown_83FE747:: @ 83FE747 .incbin "baserom.gba", 0x3FE747, 0x1F -gUnknown_83FE766:: @ 83FE766 +gText_MoveInterfacePP:: @ 83FE766 .incbin "baserom.gba", 0x3FE766, 0x4 -gUnknown_83FE76A:: @ 83FE76A +gText_MoveInterfaceType:: @ 83FE76A .incbin "baserom.gba", 0x3FE76A, 0x6 gUnknown_83FE770:: @ 83FE770 @@ -417,7 +417,7 @@ gUnknown_83FE770:: @ 83FE770 gUnknown_83FE791:: @ 83FE791 .incbin "baserom.gba", 0x3FE791, 0xF -gUnknown_83FE7A0:: @ 83FE7A0 +gText_BattleSwitchWhich:: @ 83FE7A0 .incbin "baserom.gba", 0x3FE7A0, 0x6C gUnknown_83FE80C:: @ 83FE80C diff --git a/include/battle.h b/include/battle.h index e8731ddfb..78b5f4c20 100644 --- a/include/battle.h +++ b/include/battle.h @@ -5,7 +5,7 @@ #include "constants/battle.h" #include "battle_util.h" #include "battle_script_commands.h" -#include "battle_2.h" +#include "battle_main.h" #include "battle_ai_switch_items.h" #include "battle_gfx_sfx_util.h" #include "battle_util2.h" @@ -385,10 +385,6 @@ extern u8 gActiveBattler; extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; -// TODO: move these to constants/battle.h -#define MAX_BATTLERS_COUNT 4 -#define BIT_FLANK 2 - // script's table id to bit #define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) #define AI_SCRIPT_TRY_TO_FAINT (1 << 1) @@ -984,5 +980,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u16 gDynamicBasePower; extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; +extern u8 gMultiUsePlayerCursor; +extern u8 gNumberOfMovesToChoose; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index ef179cdd1..35d144bac 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -133,6 +133,8 @@ u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); u8 GetGhostSpriteDefault_Y(u8 battlerId); +void sub_8072E48(u8 battlerId, u8); +void sub_8073128(u8); // battle_anim_80A9C70.s void LaunchStatusAnimation(u8 bank, u8 statusAnimId); @@ -154,6 +156,8 @@ void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); u8 GetBattlerSpriteSubpriority(u8 battlerId); void StartAnimLinearTranslation(struct Sprite *sprite); +void sub_80755B8(struct Sprite *sprite); +u8 sub_80768B0(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index e49911cf1..4ed292e04 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -82,6 +82,9 @@ enum #define INSTANT_HP_BAR_DROP 32767 +// Special return values in gBattleBufferB from Battle Controller functions. +#define RET_VALUE_LEVELED_UP 11 + struct UnusedControllerStruct { u8 field_0 : 7; @@ -227,17 +230,20 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); void BtlController_EmitCmd55(u8 bufferId, u8 arg1); // player controller +void nullsub_13(void); void SetControllerToPlayer(void); void PlayerHandleGetRawMonData(void); -void sub_80587B0(void); -void sub_805CC00(struct Sprite *sprite); +void sub_80335F8(struct Sprite *sprite); void SetCB2ToReshowScreenAfterMenu(void); void SetCB2ToReshowScreenAfterMenu2(void); void c3_0802FDF4(u8 taskId); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionDestroyCursorAt(u8 cursorPos); void InitMoveSelectionsVarsAndStrings(void); -void nullsub_13(void); +void sub_802F6A8(void); +void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1); +void MoveSelectionDestroyCursorAt(u8 cursorPos); +void HandleInputChooseMove(void); // recorded player controller void SetControllerToRecordedPlayer(void); @@ -262,6 +268,7 @@ void sub_80EB2F4(u8); void sub_80E8570(void); void sub_80E85C0(void); void sub_80E8598(void); +void sub_80E7988(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_2.h b/include/battle_main.h similarity index 57% rename from include/battle_2.h rename to include/battle_main.h index 19f59fc75..f05c08df2 100644 --- a/include/battle_2.h +++ b/include/battle_main.h @@ -1,8 +1,47 @@ -#ifndef GUARD_BATTLE_2_H -#define GUARD_BATTLE_2_H +#ifndef GUARD_BATTLE_MAIN_H +#define GUARD_BATTLE_MAIN_H -#include "global.h" -#include "sprite.h" +struct TrainerMoney +{ + u8 classId; + u8 value; +}; + +struct UnknownPokemonStruct4 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + +#define TYPE_NAME_LENGTH 6 +#define ABILITY_NAME_LENGTH 12 + +// defines for the u8 array gTypeEffectiveness +#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) +#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) +#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) + +// defines for the gTypeEffectiveness multipliers +#define TYPE_MUL_NO_EFFECT 0 +#define TYPE_MUL_NOT_EFFECTIVE 5 +#define TYPE_MUL_NORMAL 10 +#define TYPE_MUL_SUPER_EFFECTIVE 20 + +// special type table Ids +#define TYPE_FORESIGHT 0xFE +#define TYPE_ENDTABLE 0xFF + +// defines for the 'DoBounceEffect' function +#define BOUNCE_MON 0x0 +#define BOUNCE_HEALTHBOX 0x1 void CB2_InitBattle(void); void BattleMainCB2(void); @@ -11,20 +50,20 @@ void sub_8038528(struct Sprite* sprite); void sub_8038A04(void); // unused void VBlankCB_Battle(void); void sub_8038B74(struct Sprite *sprite); -void sub_8038D64(void); +void sub_8011A1C(void); u32 sub_80391E0(u8 arrayId, u8 caseId); u32 sub_80397C4(u32 setId, u32 tableId); void oac_poke_opponent(struct Sprite *sprite); void SpriteCallbackDummy_2(struct Sprite *sprite); void sub_8039934(struct Sprite *sprite); -void sub_8039AD8(struct Sprite *sprite); -void sub_8039B2C(struct Sprite *sprite); +void sub_8012098(struct Sprite *sprite); +void sub_8012044(struct Sprite *sprite); void sub_8039B58(struct Sprite *sprite); void sub_8039BB4(struct Sprite *sprite); void sub_80105DC(struct Sprite *sprite); -void sub_8039C00(struct Sprite *sprite); -void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d); -void dp11b_obj_free(u8 bank, bool8 b); +void sub_8012110(struct Sprite *sprite); +void DoBounceEffect(u8 bank, u8 b, s8 c, s8 d); +void EndBounceEffect(u8 bank, bool8 b); void sub_8039E44(struct Sprite *sprite); void sub_8039E60(struct Sprite *sprite); void sub_8039E84(struct Sprite *sprite); @@ -61,4 +100,4 @@ extern const u8 * const gStatusConditionStringsTable[7][2]; extern const u8 gTypeEffectiveness[336]; -#endif // GUARD_BATTLE_2_H +#endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d4cb75e91..6ff287872 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -61,6 +61,7 @@ void BattleCreateYesNoCursorAt(u8 cursorPosition); void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); +bool32 IsMonGettingExpSentOut(void); extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gUnknown_0831C494[][4]; diff --git a/include/data2.h b/include/data2.h index 4378e8226..1035d78dc 100644 --- a/include/data2.h +++ b/include/data2.h @@ -30,7 +30,7 @@ extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern const struct CompressedSpritePalette gUnknown_8239FD4[]; +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; diff --git a/include/link.h b/include/link.h index d816cfcf9..5f8d8f161 100644 --- a/include/link.h +++ b/include/link.h @@ -192,14 +192,14 @@ void sub_800E0E8(void); bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); -void sub_800ADF8(void); +void sub_800AB9C(void); void sub_800B488(void); void sub_8009734(void); void sub_800A620(void); void sub_8011BD0(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); -void sub_800AC34(void); +void sub_800AAC0(void); void OpenLink(void); bool8 IsLinkMaster(void); void CheckShouldAdvanceLinkState(void); diff --git a/include/party_menu.h b/include/party_menu.h index 3c88f75e0..84d9edb76 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -29,7 +29,9 @@ struct Struct203B0A0 }; extern struct Struct203B0A0 gUnknown_203B0A0; - +extern u8 gUnknown_203B0C0; +extern u8 gUnknown_203B0C1; +extern u8 gUnknown_203B0DC[3]; extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); bool8 FieldCallback_PrepareFadeInFromMenu(void); @@ -64,5 +66,6 @@ u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); void sub_8127CAC(void); void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); +void OpenPartyMenuInBattle(u8 arg); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index d3a7522c9..ae966feb2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -94,6 +94,8 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MAX_LEVEL 100 + #define OT_ID_RANDOM_NO_SHINY 2 #define OT_ID_PRESET 1 #define OT_ID_PLAYER_ID 0 diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h new file mode 100644 index 000000000..4ccccaada --- /dev/null +++ b/include/pokemon_special_anim.h @@ -0,0 +1,9 @@ +#ifndef GUARD_POKEMON_SPECIAL_ANIM_H +#define GUARD_POKEMON_SPECIAL_ANIM_H + +#include "global.h" + +void sub_811E5B8(u16, u16, u16, u16, u16, u16); +bool8 sub_811E680(void); + +#endif // GUARD_POKEMON_SPECIAL_ANIM_H diff --git a/include/strings.h b/include/strings.h index 5197a56f7..2b914dfc8 100644 --- a/include/strings.h +++ b/include/strings.h @@ -213,4 +213,14 @@ extern const u8 gUnknown_83FDA4C[]; extern const u8 gUnknown_83FE747[]; extern const u8 gUnknown_83FE6E6[]; +// battle_controller_player +extern const u8 gText_BattleSwitchWhich[]; +extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfacePP[]; +extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfaceType[]; +extern const u8 gText_LinkStandby[]; +extern const u8 gUnknown_83FE725[]; +extern const u8 gText_WhatWillPkmnDo[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 9d1ed1469..019190be4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -70,7 +70,7 @@ SECTIONS { src/battle_util.o(.text); asm/battle_script_commands.o(.text); src/battle_util2.o(.text); - asm/battle_controller_player.o(.text); + src/battle_controller_player.o(.text); src/battle_gfx_sfx_util.o(.text); src/battle_controller_opponent.o(.text); src/battle_ai_switch_items.o(.text); @@ -382,6 +382,8 @@ SECTIONS { data/data.o(.rodata); src/battle_util.o(.rodata); data/data.o(.rodata.825011C); + src/battle_controller_player.o(.rodata); + data/data.o(.rodata.825098C); src/battle_controller_opponent.o(.rodata); data/data.o(.rodata.8250B20); src/pokemon.o(.rodata); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index c675e45fe..ce1b081e7 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1,6 +1,6 @@ #include "global.h" #include "battle.h" -#include "battle_2.h" +#include "battle_main.h" #include "util.h" #include "item.h" #include "random.h" diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index cd0cc70ad..c925e3af1 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -530,7 +530,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst) moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); } moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); - src = (u8*)(&moveData); + src = (u8 *)(&moveData); for (size = 0; size < sizeof(moveData); ++size) dst[size] = src[size]; break; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c new file mode 100644 index 000000000..efa2b0d95 --- /dev/null +++ b/src/battle_controller_player.c @@ -0,0 +1,2975 @@ +#include "global.h" +#include "bg.h" +#include "data2.h" +#include "item.h" +#include "item_menu.h" +#include "link.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "party_menu.h" +#include "pokeball.h" +#include "pokemon.h" +#include "random.h" +#include "sound.h" +#include "strings.h" +#include "string_util.h" +#include "pokemon_special_anim.h" +#include "task.h" +#include "text.h" +#include "util.h" +#include "window.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "battle_setup.h" +#include "battle_script_commands.h" +#include "reshow_battle_screen.h" +#include "constants/battle_anim.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" + +static void PlayerHandleGetMonData(void); +static void PlayerHandleSetMonData(void); +static void PlayerHandleSetRawMonData(void); +static void PlayerHandleLoadMonSprite(void); +static void PlayerHandleSwitchInAnim(void); +static void PlayerHandleReturnMonToBall(void); +static void PlayerHandleDrawTrainerPic(void); +static void PlayerHandleTrainerSlide(void); +static void PlayerHandleTrainerSlideBack(void); +static void PlayerHandleFaintAnimation(void); +static void PlayerHandlePaletteFade(void); +static void PlayerHandleSuccessBallThrowAnim(void); +static void PlayerHandleBallThrowAnim(void); +static void PlayerHandlePause(void); +static void PlayerHandleMoveAnimation(void); +static void PlayerHandlePrintString(void); +static void PlayerHandlePrintSelectionString(void); +static void PlayerHandleChooseAction(void); +static void PlayerHandleUnknownYesNoBox(void); +static void PlayerHandleChooseMove(void); +static void PlayerHandleChooseItem(void); +static void PlayerHandleChoosePokemon(void); +static void PlayerHandleCmd23(void); +static void PlayerHandleHealthBarUpdate(void); +static void PlayerHandleExpUpdate(void); +static void PlayerHandleStatusIconUpdate(void); +static void PlayerHandleStatusAnimation(void); +static void PlayerHandleStatusXor(void); +static void PlayerHandleDataTransfer(void); +static void PlayerHandleDMA3Transfer(void); +static void PlayerHandlePlayBGM(void); +static void PlayerHandleCmd32(void); +static void PlayerHandleTwoReturnValues(void); +static void PlayerHandleChosenMonReturnValue(void); +static void PlayerHandleOneReturnValue(void); +static void PlayerHandleOneReturnValue_Duplicate(void); +static void PlayerHandleCmd37(void); +static void PlayerHandleCmd38(void); +static void PlayerHandleCmd39(void); +static void PlayerHandleCmd40(void); +static void PlayerHandleHitAnimation(void); +static void PlayerHandleCmd42(void); +static void PlayerHandlePlaySE(void); +static void PlayerHandlePlayFanfare(void); +static void PlayerHandleFaintingCry(void); +static void PlayerHandleIntroSlide(void); +static void PlayerHandleIntroTrainerBallThrow(void); +static void PlayerHandleDrawPartyStatusSummary(void); +static void PlayerHandleHidePartyStatusSummary(void); +static void PlayerHandleEndBounceEffect(void); +static void PlayerHandleSpriteInvisibility(void); +static void PlayerHandleBattleAnimation(void); +static void PlayerHandleLinkStandbyMsg(void); +static void PlayerHandleResetActionMoveSelection(void); +static void PlayerHandleCmd55(void); +static void PlayerCmdEnd(void); + +static void PlayerBufferRunCommand(void); +static void HandleInputChooseTarget(void); +static void MoveSelectionDisplayPpNumber(void); +static void MoveSelectionDisplayPpString(void); +static void MoveSelectionDisplayMoveType(void); +static void MoveSelectionDisplayMoveNames(void); +static void HandleMoveSwitching(void); +static void WaitForMonSelection(void); +static void CompleteWhenChoseItem(void); +static void Task_LaunchLvlUpAnim(u8 taskId); +static void Task_PrepareToGiveExpWithExpBar(u8 taskId); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); +static void Task_UpdateLvlInHealthbox(u8 taskId); +static void PrintLinkStandbyMsg(void); +static u32 CopyPlayerMonData(u8 monId, u8 *dst); +static void SetPlayerMonData(u8 monId); +static void DoSwitchOutAnimation(void); +static void PlayerDoMoveAnimation(void); +static void task05_08033660(u8 taskId); +static void sub_8033AC8(void); +static void sub_802FCAC(void); +static void sub_80300F4(u8 taskId); +static void sub_80303A8(u8 taskId); +static void sub_8031FF4(u8 battlerId, bool8 dontClearSubstituteBit); +static void sub_8033830(void); + +static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + PlayerHandleGetMonData, + PlayerHandleGetRawMonData, + PlayerHandleSetMonData, + PlayerHandleSetRawMonData, + PlayerHandleLoadMonSprite, + PlayerHandleSwitchInAnim, + PlayerHandleReturnMonToBall, + PlayerHandleDrawTrainerPic, + PlayerHandleTrainerSlide, + PlayerHandleTrainerSlideBack, + PlayerHandleFaintAnimation, + PlayerHandlePaletteFade, + PlayerHandleSuccessBallThrowAnim, + PlayerHandleBallThrowAnim, + PlayerHandlePause, + PlayerHandleMoveAnimation, + PlayerHandlePrintString, + PlayerHandlePrintSelectionString, + PlayerHandleChooseAction, + PlayerHandleUnknownYesNoBox, + PlayerHandleChooseMove, + PlayerHandleChooseItem, + PlayerHandleChoosePokemon, + PlayerHandleCmd23, + PlayerHandleHealthBarUpdate, + PlayerHandleExpUpdate, + PlayerHandleStatusIconUpdate, + PlayerHandleStatusAnimation, + PlayerHandleStatusXor, + PlayerHandleDataTransfer, + PlayerHandleDMA3Transfer, + PlayerHandlePlayBGM, + PlayerHandleCmd32, + PlayerHandleTwoReturnValues, + PlayerHandleChosenMonReturnValue, + PlayerHandleOneReturnValue, + PlayerHandleOneReturnValue_Duplicate, + PlayerHandleCmd37, + PlayerHandleCmd38, + PlayerHandleCmd39, + PlayerHandleCmd40, + PlayerHandleHitAnimation, + PlayerHandleCmd42, + PlayerHandlePlaySE, + PlayerHandlePlayFanfare, + PlayerHandleFaintingCry, + PlayerHandleIntroSlide, + PlayerHandleIntroTrainerBallThrow, + PlayerHandleDrawPartyStatusSummary, + PlayerHandleHidePartyStatusSummary, + PlayerHandleEndBounceEffect, + PlayerHandleSpriteInvisibility, + PlayerHandleBattleAnimation, + PlayerHandleLinkStandbyMsg, + PlayerHandleResetActionMoveSelection, + PlayerHandleCmd55, + PlayerCmdEnd, +}; + +static const u8 sTargetIdentities[] = { B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT }; + +// not used +static const u8 gUnknown_8250984[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 }; + +void nullsub_13(void) +{ +} + +void SetControllerToPlayer(void) +{ + gBattlerControllerFuncs[gActiveBattler] = PlayerBufferRunCommand; + gDoingBattleAnim = FALSE; +} + +static void PlayerBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = PlayerBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +static void PlayerBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sPlayerBufferCommands)) + sPlayerBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + PlayerBufferExecCompleted(); + } +} + +static void CompleteOnBattlerSpritePosX_0(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) + PlayerBufferExecCompleted(); +} + +static void HandleInputChooseAction(void) +{ + u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); + DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + switch (gActionSelectionCursor[gActiveBattler]) + { + case 0: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); + break; + case 1: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + break; + case 2: + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + break; + case 3: + BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); + break; + } + PlayerBufferExecCompleted(); + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gActionSelectionCursor[gActiveBattler] & 1) // if is B_ACTION_USE_ITEM or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 1)) // if is B_ACTION_USE_MOVE or B_ACTION_SWITCH + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_UP)) + { + if (gActionSelectionCursor[gActiveBattler] & 2) // if is B_ACTION_SWITCH or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 2)) // if is B_ACTION_USE_MOVE or B_ACTION_USE_ITEM + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(B_BUTTON)) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT + && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBattler][1] == B_ACTION_USE_ITEM) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0); + PlayerBufferExecCompleted(); + } + } + else if (JOY_NEW(START_BUTTON)) + { + SwapHpBarsWithHpText(); + } +} + +static void sub_802E640(void) +{ + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseTarget; +} + +static void HandleInputChooseTarget(void) +{ + s32 i; + u8 identities[4]; + + memcpy(identities, sTargetIdentities, ARRAY_COUNT(sTargetIdentities)); + DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1); + i = 0; + if (gBattlersCount != 0) + { + do + { + if (i != gMultiUsePlayerCursor) + EndBounceEffect(i, BOUNCE_HEALTHBOX); + ++i; + } + while (i < gBattlersCount); + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098; + BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); + EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); + PlayerBufferExecCompleted(); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098; + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove; + DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); + DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); + EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); + } + else if (JOY_NEW(DPAD_LEFT | DPAD_UP)) + { + PlaySE(SE_SELECT); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098; + + do + { + u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor); + + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + if (currSelIdentity == identities[i]) + break; + do + { + if (--i < 0) + i = MAX_BATTLERS_COUNT; // UB: array out of range + gMultiUsePlayerCursor = GetBattlerAtPosition(identities[i]); + } + while (gMultiUsePlayerCursor == gBattlersCount); + i = 0; + switch (GetBattlerPosition(gMultiUsePlayerCursor)) + { + case B_POSITION_PLAYER_LEFT: + case B_POSITION_PLAYER_RIGHT: + if (gActiveBattler != gMultiUsePlayerCursor) + ++i; + else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED) + ++i; + break; + case B_POSITION_OPPONENT_LEFT: + case B_POSITION_OPPONENT_RIGHT: + ++i; + break; + } + if (gAbsentBattlerFlags & gBitTable[gMultiUsePlayerCursor]) + i = 0; + } + while (i == 0); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044; + } + else if (JOY_NEW(DPAD_RIGHT | DPAD_DOWN)) + { + PlaySE(SE_SELECT); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098; + + do + { + u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor); + + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + if (currSelIdentity == identities[i]) + break; + do + { + if (++i > 3) + i = 0; + gMultiUsePlayerCursor = GetBattlerAtPosition(identities[i]); + } + while (gMultiUsePlayerCursor == gBattlersCount); + i = 0; + switch (GetBattlerPosition(gMultiUsePlayerCursor)) + { + case B_POSITION_PLAYER_LEFT: + case B_POSITION_PLAYER_RIGHT: + if (gActiveBattler != gMultiUsePlayerCursor) + ++i; + else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED) + ++i; + break; + case B_POSITION_OPPONENT_LEFT: + case B_POSITION_OPPONENT_RIGHT: + ++i; + break; + } + if (gAbsentBattlerFlags & gBitTable[gMultiUsePlayerCursor]) + i = 0; + } + while (i == 0); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044; + } +} + +void HandleInputChooseMove(void) +{ + bool32 canSelectTarget = FALSE; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + + sub_8033AC8(); + if (JOY_NEW(A_BUTTON)) + { + u8 moveTarget; + + PlaySE(SE_SELECT); + if (moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE) + { + if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST) + moveTarget = MOVE_TARGET_USER; + else + moveTarget = MOVE_TARGET_SELECTED; + } + else + { + moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target; + } + + if (moveTarget & MOVE_TARGET_USER) + gMultiUsePlayerCursor = gActiveBattler; + else + gMultiUsePlayerCursor = GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE); + + if (!gBattleBufferA[gActiveBattler][1]) // not a double battle + { + if (moveTarget & MOVE_TARGET_USER_OR_SELECTED && !gBattleBufferA[gActiveBattler][2]) + ++canSelectTarget; + } + else // double battle + { + if (!(moveTarget & (MOVE_TARGET_RANDOM | MOVE_TARGET_BOTH | MOVE_TARGET_DEPENDS | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER))) + ++canSelectTarget; // either selected or user + if (moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]] == 0) + { + canSelectTarget = FALSE; + } + else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) <= 1) + { + gMultiUsePlayerCursor = GetDefaultMoveTarget(gActiveBattler); + canSelectTarget = FALSE; + } + } + ResetPaletteFadeControl(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + if (!canSelectTarget) + { + BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); + PlayerBufferExecCompleted(); + } + else + { + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseTarget; + if (moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) + gMultiUsePlayerCursor = gActiveBattler; + else if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]) + gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + else + gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044; + } + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, 10, 0xFFFF); + PlayerBufferExecCompleted(); + ResetPaletteFadeControl(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gMoveSelectionCursor[gActiveBattler] & 1) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 1; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gMoveSelectionCursor[gActiveBattler] & 1) + && (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 1; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + } + } + else if (JOY_NEW(DPAD_UP)) + { + if (gMoveSelectionCursor[gActiveBattler] & 2) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 2; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (!(gMoveSelectionCursor[gActiveBattler] & 2) + && (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 2; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + BeginNormalPaletteFade(0xF0000, 0, 0, 0, RGB_WHITE); + } + } + else if (JOY_NEW(SELECT_BUTTON)) + { + if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29); + if (gMoveSelectionCursor[gActiveBattler] != 0) + gMultiUsePlayerCursor = 0; + else + gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1; + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); + BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB); + gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching; + } + } +} + +// not used +static u32 sub_802EDDC(void) +{ + u32 var = 0; + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + var = 1; + } + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0x140; + var = 0xFF; + } + if (JOY_NEW(DPAD_LEFT) && gMoveSelectionCursor[gActiveBattler] & 1) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 1; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + } + if (JOY_NEW(DPAD_RIGHT) && !(gMoveSelectionCursor[gActiveBattler] & 1) + && (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 1; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + } + if (JOY_NEW(DPAD_UP) && gMoveSelectionCursor[gActiveBattler] & 2) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 2; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + } + if (JOY_NEW(DPAD_DOWN) && !(gMoveSelectionCursor[gActiveBattler] & 2) + && (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose) + { + MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]); + gMoveSelectionCursor[gActiveBattler] ^= 2; + PlaySE(SE_SELECT); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + } + return var; +} + +static void HandleMoveSwitching(void) +{ + u8 perMovePPBonuses[4]; + struct ChooseMoveStruct moveStruct; + u8 totalPPBonuses; + + if (JOY_NEW(A_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + + if (gMoveSelectionCursor[gActiveBattler] != gMultiUsePlayerCursor) + { + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + s32 i; + + // swap moves and pp + i = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]; + moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] = moveInfo->moves[gMultiUsePlayerCursor]; + moveInfo->moves[gMultiUsePlayerCursor] = i; + i = moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]]; + moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]] = moveInfo->currentPp[gMultiUsePlayerCursor]; + moveInfo->currentPp[gMultiUsePlayerCursor] = i; + i = moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]]; + moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]] = moveInfo->maxPp[gMultiUsePlayerCursor]; + moveInfo->maxPp[gMultiUsePlayerCursor] = i; + if (gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[gMoveSelectionCursor[gActiveBattler]]) + { + gDisableStructs[gActiveBattler].mimickedMoves &= (~gBitTable[gMoveSelectionCursor[gActiveBattler]]); + gDisableStructs[gActiveBattler].mimickedMoves |= gBitTable[gMultiUsePlayerCursor]; + } + MoveSelectionDisplayMoveNames(); + for (i = 0; i < MAX_MON_MOVES; ++i) + perMovePPBonuses[i] = (gBattleMons[gActiveBattler].ppBonuses & (3 << (i * 2))) >> (i * 2); + + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor]; + perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses; + totalPPBonuses = 0; + for (i = 0; i < MAX_MON_MOVES; ++i) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + + gBattleMons[gActiveBattler].ppBonuses = totalPPBonuses; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + gBattleMons[gActiveBattler].moves[i] = moveInfo->moves[i]; + gBattleMons[gActiveBattler].pp[i] = moveInfo->currentPp[i]; + } + if (!(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + { + for (i = 0; i < MAX_MON_MOVES; ++i) + { + moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i); + moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i); + } + + totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES); + for (i = 0; i < MAX_MON_MOVES; ++i) + perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); + i = moveStruct.moves[gMoveSelectionCursor[gActiveBattler]]; + moveStruct.moves[gMoveSelectionCursor[gActiveBattler]] = moveStruct.moves[gMultiUsePlayerCursor]; + moveStruct.moves[gMultiUsePlayerCursor] = i; + i = moveStruct.currentPp[gMoveSelectionCursor[gActiveBattler]]; + moveStruct.currentPp[gMoveSelectionCursor[gActiveBattler]] = moveStruct.currentPp[gMultiUsePlayerCursor]; + moveStruct.currentPp[gMultiUsePlayerCursor] = i; + totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]]; + perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor]; + perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses; + totalPPBonuses = 0; + for (i = 0; i < MAX_MON_MOVES; ++i) + totalPPBonuses |= perMovePPBonuses[i] << (i * 2); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]); + SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]); + } + SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES, &totalPPBonuses); + } + } + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + gBattlerControllerFuncs[gActiveBattler] = sub_80E7988; + else + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove; + gMoveSelectionCursor[gActiveBattler] = gMultiUsePlayerCursor; + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpString(); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + } + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + gBattlerControllerFuncs[gActiveBattler] = sub_80E7988; + else + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove; + MoveSelectionDisplayPpString(); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); + } + if (JOY_NEW(DPAD_LEFT)) + { + if (gMultiUsePlayerCursor & 1) + { + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29); + else + MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); + gMultiUsePlayerCursor ^= 1; + PlaySE(SE_SELECT); + + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); + else + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); + } + } + if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gMultiUsePlayerCursor & 1) && (gMultiUsePlayerCursor ^ 1) < gNumberOfMovesToChoose) + { + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29); + else + MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); + gMultiUsePlayerCursor ^= 1; + PlaySE(SE_SELECT); + + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); + else + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); + } + } + if (JOY_NEW(DPAD_UP)) + { + if (gMultiUsePlayerCursor & 2) + { + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29); + else + MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); + gMultiUsePlayerCursor ^= 2; + PlaySE(SE_SELECT); + + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); + else + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); + } + } + if (JOY_NEW(DPAD_DOWN)) + { + if (!(gMultiUsePlayerCursor & 2) && (gMultiUsePlayerCursor ^ 2) < gNumberOfMovesToChoose) + { + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29); + else + MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); + gMultiUsePlayerCursor ^= 2; + PlaySE(SE_SELECT); + + if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); + else + MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); + } + } +} + +static void sub_802F610(void) +{ + if (gWirelessCommType == 0) + { + if (gReceivedRemoteLinkPlayers == 0) + { + m4aSongNumStop(SE_T_OOAME); + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(sub_8011A1C); + FreeAllWindowBuffers(); + } + } + else if (IsLinkTaskFinished()) + { + m4aSongNumStop(SE_T_OOAME); + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(sub_8011A1C); + FreeAllWindowBuffers(); + } +} + +void sub_802F6A8(void) +{ + if (!gPaletteFade.active) + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gWirelessCommType == 0) + sub_800AAC0(); + else + sub_800AB9C(); + gBattlerControllerFuncs[gActiveBattler] = sub_802F610; + } + else + { + m4aSongNumStop(SE_T_OOAME); + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +static void CompleteOnBattlerSpriteCallbackDummy2(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + PlayerBufferExecCompleted(); +} + +static void sub_802F7A0(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + nullsub_16(gSaveBlock2Ptr->playerGender); + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + PlayerBufferExecCompleted(); + } +} + +static void sub_802F810(void) +{ + if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + PlayerBufferExecCompleted(); + } +} + +static void sub_802F858(void) +{ + bool8 var = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + var = TRUE; + } + else + { + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + var = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + var = FALSE; + if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlayInfo_BGM); + else + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + if (IsDoubleBattle()) + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3; + gBattlerControllerFuncs[gActiveBattler] = sub_802F810; + } +} + +static void sub_802FA58(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_802F858; + } +} + +static void sub_802FBF4(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattlerControllerFuncs[gActiveBattler] = sub_802FCAC; + } +} + +static void sub_802FCAC(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive + && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlayerBufferExecCompleted(); + } +} + +static void sub_802FD18(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy + && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + CopyBattleSpriteInvisibility(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_802FBF4; + } +} + +void c3_0802FDF4(u8 taskId) +{ + if (!IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + DestroyTask(taskId); + } +} + +static void CompleteOnHealthbarDone(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlayerBufferExecCompleted(); + } +} + +void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + PlayerBufferExecCompleted(); +} + +#define tExpTask_monId data[0] +#define tExpTask_gainedExp data[1] +#define tExpTask_battler data[2] +#define tExpTask_frames data[10] +// TODO: document other used fields + +static void Task_GiveExpToMon(u8 taskId) +{ + u32 monId = (u8)(gTasks[taskId].tExpTask_monId); + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + + if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // Give exp without moving the expbar. + { + struct Pokemon *mon = &gPlayerParty[monId]; + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u32 currExp = GetMonData(mon, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBattler; + + SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + CalculateMonStats(mon); + gainedExp -= nextLvlExp - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + + if (IsDoubleBattle() == TRUE + && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + gTasks[taskId].func = Task_LaunchLvlUpAnim; + else + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; + } + else + { + currExp += gainedExp; + SetMonData(mon, MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar; + } +} + +static void Task_PrepareToGiveExpWithExpBar(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + s32 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + struct Pokemon *mon = &gPlayerParty[monIndex]; + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 exp = GetMonData(mon, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); + PlaySE(SE_U); + gTasks[taskId].func = sub_80300F4; +} + +static void sub_80300F4(u8 taskId) +{ + if (gTasks[taskId].tExpTask_frames < 13) + { + ++gTasks[taskId].tExpTask_frames; + } + else + { + u8 monId = gTasks[taskId].tExpTask_monId; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 newExpPoints; + + newExpPoints = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]); + if (newExpPoints == -1) // The bar has been filled with given exp points. + { + u8 level; + s32 currExp; + u16 species; + s32 expOnNextLvl; + + m4aSongNumStop(SE_U); + level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + if (currExp + gainedExp >= expOnNextLvl) + { + u8 savedActiveBattler; + + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + CalculateMonStats(&gPlayerParty[monId]); + gainedExp -= expOnNextLvl - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + gTasks[taskId].func = Task_LaunchLvlUpAnim; + } + else + { + currExp += gainedExp; + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter; + DestroyTask(taskId); + } + } + } +} + +static void Task_LaunchLvlUpAnim(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + u8 monIndex = gTasks[taskId].tExpTask_monId; + + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + battlerId ^= BIT_FLANK; + InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); + gTasks[taskId].func = Task_UpdateLvlInHealthbox; +} + +static void Task_UpdateLvlInHealthbox(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + + if (!gBattleSpritesDataPtr->healthBoxesData[battlerId].specialAnimActive) + { + u8 monIndex = gTasks[taskId].tExpTask_monId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value. + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + else + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; + } +} + +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId) +{ + u8 monIndex; + s32 battlerId = gTasks[taskId].tExpTask_battler; + + if (IsBattlerSpriteVisible((u8)battlerId) == TRUE) + { + gTasks[taskId].func = sub_80303A8; + gTasks[taskId].data[15] = 0; + } + else + { + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter; + DestroyTask(taskId); + } +} + +static void sub_80303A8(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 battlerId = tExpTask_battler; + u16 v5 = sub_80768B0(battlerId); + u32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER; + struct Sprite *sprite = &gSprites[gBattlerSpriteIds[battlerId]]; + + switch (data[15]) + { + case 0: + if (!IsTextPrinterActive(0)) + { + if (!v6) + { + data[14] = gBattle_BG1_X; + data[13] = gBattle_BG1_Y; + gBattle_BG1_X = -(sprite->pos1.x + sprite->pos2.x) + 32; + gBattle_BG1_Y = -(sprite->pos1.y + sprite->pos2.y) + 32; + } + else + { + data[14] = gBattle_BG2_X; + data[13] = gBattle_BG2_Y; + gBattle_BG2_X = -(sprite->pos1.x + sprite->pos2.x) + 32; + gBattle_BG2_Y = -(sprite->pos1.y + sprite->pos2.y) + 32; + } + ++data[15]; + } + break; + case 1: + { + u32 battlerIdAlt = battlerId; + u32 v6Alt = v6; + + sub_8072E48(battlerIdAlt, v6Alt); + } + ++data[15]; + break; + case 2: + PlaySE(SE_T_KAMI2); + if (IsMonGettingExpSentOut()) + sub_811E5B8(sprite->pos1.x + sprite->pos2.x, + sprite->pos1.y + sprite->pos2.y, + 10000, + 10000, + 1, + 0); + ++data[15]; + break; + case 3: + if (!sub_811E680()) + { + sprite->invisible = FALSE; + ++data[15]; + } + break; + case 5: + sub_8073128(v6); + ++data[15]; + break; + case 4: + ++data[15]; + break; + case 6: + if (!v6) + { + gBattle_BG1_X = data[14]; + gBattle_BG1_Y = data[13]; + } + else + { + gBattle_BG2_X = data[14]; + gBattle_BG2_Y = data[13]; + } + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter; + DestroyTask(taskId); + break; + } +} + +static void sub_8030538(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PlayerBufferExecCompleted(); + } +} + +static void sub_80305A0(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PlayerBufferExecCompleted(); + } +} + +static void CompleteOnInactiveTextPrinter2(void) +{ + if (!IsTextPrinterActive(0)) + PlayerBufferExecCompleted(); +} + +static void OpenPartyMenuToChooseMon(void) +{ + if (!gPaletteFade.active) + { + u8 caseId; + + gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection; + caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; + DestroyTask(gUnknown_3004FFC[gActiveBattler]); + FreeAllWindowBuffers(); + OpenPartyMenuInBattle(caseId); + } +} + +static void WaitForMonSelection(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (gUnknown_203B0C0 == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + else + BtlController_EmitChosenMonReturnValue(1, 6, NULL); + + if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) + PrintLinkStandbyMsg(); + PlayerBufferExecCompleted(); + } +} + +static void OpenBagAndChooseItem(void) +{ + if (!gPaletteFade.active) + { + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem; + nullsub_44(); + FreeAllWindowBuffers(); + sub_8107ECC(); + } +} + +static void CompleteWhenChoseItem(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + PlayerBufferExecCompleted(); + } +} + +static void CompleteOnSpecialAnimDone(void) +{ + if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + PlayerBufferExecCompleted(); +} + +static void DoHitAnimBlinkSpriteEffect(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + PlayerBufferExecCompleted(); + } + else + { + if ((gSprites[spriteId].data[1] % 4) == 0) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +static void MoveSelectionDisplayMoveNames(void) +{ + s32 i; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + gNumberOfMovesToChoose = 0; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + MoveSelectionDestroyCursorAt(i); + StringCopy(gDisplayedStringBattle, gUnknown_83FE770); + StringAppend(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); + BattlePutTextOnWindow(gDisplayedStringBattle, i + 3); + if (moveInfo->moves[i] != MOVE_NONE) + ++gNumberOfMovesToChoose; + } +} + +static void MoveSelectionDisplayPpString(void) +{ + StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP); + BattlePutTextOnWindow(gDisplayedStringBattle, 7); +} + +static void MoveSelectionDisplayPpNumber(void) +{ + u8 *txtPtr; + struct ChooseMoveStruct *moveInfo; + + if (gBattleBufferA[gActiveBattler][2] == TRUE) // check if we didn't want to display pp number + return; + SetPpNumbersPaletteInMoveSelection(); + moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]); + txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); + *txtPtr = CHAR_SLASH; + ConvertIntToDecimalStringN(++txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); + BattlePutTextOnWindow(gDisplayedStringBattle, 9); +} + +static void MoveSelectionDisplayMoveType(void) +{ + u8 *txtPtr; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + + txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); + *txtPtr++ = EXT_CTRL_CODE_BEGIN; + *txtPtr++ = 6; + *txtPtr++ = 1; + txtPtr = StringCopy(txtPtr, gUnknown_83FE770); + StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]); + BattlePutTextOnWindow(gDisplayedStringBattle, 8); +} + +void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) +{ + u16 src[2]; + + src[0] = arg1 + 1; + src[1] = arg1 + 2; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 9 * (cursorPosition & 1) + 1, 55 + (cursorPosition & 2), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void MoveSelectionDestroyCursorAt(u8 cursorPosition) +{ + u16 src[2]; + + src[0] = 32; + src[1] = 32; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 9 * (cursorPosition & 1) + 1, 55 + (cursorPosition & 2), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) +{ + u16 src[2]; + + src[0] = 1; + src[1] = 2; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 7 * (cursorPosition & 1) + 16, 35 + (cursorPosition & 2), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void ActionSelectionDestroyCursorAt(u8 cursorPosition) +{ + u16 src[2]; + + src[0] = 32; + src[1] = 32; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 7 * (cursorPosition & 1) + 16, 35 + (cursorPosition & 2), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void SetCB2ToReshowScreenAfterMenu(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +void SetCB2ToReshowScreenAfterMenu2(void) +{ + SetMainCallback2(ReshowBattleScreenAfterMenu); +} + +static void CompleteOnFinishedStatusAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + PlayerBufferExecCompleted(); +} + +static void CompleteOnFinishedBattleAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + PlayerBufferExecCompleted(); +} + +static void PrintLinkStandbyMsg(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + BattlePutTextOnWindow(gText_LinkStandby, 0); + } +} + +static void PlayerHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + size += CopyPlayerMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyPlayerMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + PlayerBufferExecCompleted(); +} + +static u32 CopyPlayerMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + src = (u8 *)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void PlayerHandleGetRawMonData(void) +{ + struct BattlePokemon battleMon; + u8 *src = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = src[i]; + + BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + SetPlayerMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetPlayerMonData(i); + monToCheck >>= 1; + } + } + PlayerBufferExecCompleted(); +} + +static void SetPlayerMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); +} + +static void PlayerHandleSetRawMonData(void) +{ + u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = gBattleBufferA[gActiveBattler][3 + i]; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleLoadMonSprite(void) +{ + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpritePosX_0; +} + +static void PlayerHandleSwitchInAnim(void) +{ + ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gActionSelectionCursor[gActiveBattler] = 0; + gMoveSelectionCursor[gActiveBattler] = 0; + sub_8031FF4(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerControllerFuncs[gActiveBattler] = sub_802FD18; +} + +static void sub_8031FF4(u8 battlerId, bool8 dontClearSubstituteBit) +{ + u16 species; + + ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit); + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT); +} + +static void PlayerHandleReturnMonToBall(void) +{ + if (gBattleBufferA[gActiveBattler][1] == 0) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PlayerBufferExecCompleted(); + } +} + +static void DoSwitchOutAnimation(void) +{ + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_80305A0; + } + break; + } +} + +static void PlayerHandleDrawTrainerPic(void) +{ + s16 xPos; + u32 trainerPicId; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right. + xPos = 90; + else // First mon, on the left. + xPos = 32; + + } + else + { + xPos = 80; + } + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD) + trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 2; + else + trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 0; + } + else + { + trainerPicId = gSaveBlock2Ptr->playerGender + 0; + } + DecompressTrainerBackPalette(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + xPos, + (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void PlayerHandleTrainerSlide(void) +{ + u32 trainerPicId; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD) + trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 2; + else + trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 0; + } + else + { + trainerPicId = gSaveBlock2Ptr->playerGender + 0; + } + DecompressTrainerBackPalette(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, + 30); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2; +} + +static void PlayerHandleTrainerSlideBack(void) +{ + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + gBattlerControllerFuncs[gActiveBattler] = sub_802F7A0; +} + +static void PlayerHandleFaintAnimation(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110; + gBattlerControllerFuncs[gActiveBattler] = sub_8030538; + } + } +} + +static void PlayerHandlePaletteFade(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleSuccessBallThrowAnim(void) +{ + gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void PlayerHandleBallThrowAnim(void) +{ + u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1]; + + gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void PlayerHandlePause(void) +{ + u8 var = gBattleBufferA[gActiveBattler][1]; + + while (var) + --var; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // Always returns FALSE. + { + PlayerBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation; + } + } +} + +static void PlayerDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + u8 multihit = gBattleBufferA[gActiveBattler][11]; + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + { + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0; + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + PlayerBufferExecCompleted(); + } + break; + } +} + +static void PlayerHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 64); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2; +} + +static void PlayerHandlePrintSelectionString(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + PlayerHandlePrintString(); + else + PlayerBufferExecCompleted(); +} + +static void HandleChooseActionAfterDma3(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction; + } +} + +static void PlayerHandleChooseAction(void) +{ + s32 i; + + gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; + BattlePutTextOnWindow(gUnknown_83FDA4C, 0); + BattlePutTextOnWindow(gUnknown_83FE725, 2); + for (i = 0; i < 4; ++i) + ActionSelectionDestroyCursorAt(i); + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); + BattlePutTextOnWindow(gDisplayedStringBattle, 1); +} + +static void PlayerHandleUnknownYesNoBox(void) +{ +} + +static void HandleChooseMoveAfterDma3(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove; + } +} + +static void PlayerHandleChooseMove(void) +{ + InitMoveSelectionsVarsAndStrings(); + gBattlerControllerFuncs[gActiveBattler] = HandleChooseMoveAfterDma3; +} + +void InitMoveSelectionsVarsAndStrings(void) +{ + MoveSelectionDisplayMoveNames(); + gMultiUsePlayerCursor = 0xFF; + MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); + MoveSelectionDisplayPpString(); + MoveSelectionDisplayPpNumber(); + MoveSelectionDisplayMoveType(); +} + +static void PlayerHandleChooseItem(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; + gBattlerInMenuId = gActiveBattler; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][1 + i]; +} + +static void PlayerHandleChoosePokemon(void) +{ + s32 i; + + gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF; + *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; + *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; + *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; + gBattlerInMenuId = gActiveBattler; +} + +static void PlayerHandleCmd23(void) +{ + BattleStopLowHpSound(); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void PlayerHandleExpUpdate(void) +{ + u8 monId = gBattleBufferA[gActiveBattler][1]; + + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) + { + PlayerBufferExecCompleted(); + } + else + { + s16 expPointsToGive; + u8 taskId; + + LoadBattleBarGfx(1); + GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // Unused return value. + expPointsToGive = T1_READ_16(&gBattleBufferA[gActiveBattler][2]); + taskId = CreateTask(Task_GiveExpToMon, 10); + gTasks[taskId].tExpTask_monId = monId; + gTasks[taskId].tExpTask_gainedExp = expPointsToGive; + gTasks[taskId].tExpTask_battler = gActiveBattler; + gBattlerControllerFuncs[gActiveBattler] = nullsub_13; + } +} + +static void PlayerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 battlerId; + + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); + battlerId = gActiveBattler; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void PlayerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24)); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void PlayerHandleStatusXor(void) +{ + u8 val = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBattler][1]; + + SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS, &val); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleDataTransfer(void) +{ + PlayerBufferExecCompleted(); +} + +static void PlayerHandleDMA3Transfer(void) +{ + u32 dstArg = gBattleBufferA[gActiveBattler][1] + | (gBattleBufferA[gActiveBattler][2] << 8) + | (gBattleBufferA[gActiveBattler][3] << 16) + | (gBattleBufferA[gActiveBattler][4] << 24); + u16 sizeArg = gBattleBufferA[gActiveBattler][5] | (gBattleBufferA[gActiveBattler][6] << 8); + const u8 *src = &gBattleBufferA[gActiveBattler][7]; + u8 *dst = (u8*)(dstArg); + u32 size = sizeArg; + + while (TRUE) + { + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + } + PlayerBufferExecCompleted(); +} + +static void PlayerHandlePlayBGM(void) +{ + PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd32(void) +{ + PlayerBufferExecCompleted(); +} + +static void PlayerHandleTwoReturnValues(void) +{ + BtlController_EmitTwoReturnValues(1, 0, 0); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleChosenMonReturnValue(void) +{ + BtlController_EmitChosenMonReturnValue(1, 0, NULL); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleOneReturnValue(void) +{ + BtlController_EmitOneReturnValue(1, 0); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleOneReturnValue_Duplicate(void) +{ + BtlController_EmitOneReturnValue_Duplicate(1, 0); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd37(void) +{ + gUnknown_2022870.field_0 = 0; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd38(void) +{ + gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1]; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd39(void) +{ + gUnknown_2022870.flag_x80 = 0; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd40(void) +{ + gUnknown_2022870.flag_x80 ^= 1; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + PlayerBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void PlayerHandleCmd42(void) +{ + PlayerBufferExecCompleted(); +} + +static void PlayerHandlePlaySE(void) +{ + s8 pan; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan); + PlayerBufferExecCompleted(); +} + +static void PlayerHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleFaintingCry(void) +{ + PlayCry3(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES), -25, 5); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80755B8; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + paletteNum = AllocSpritePalette(0xD6F8); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; + taskId = CreateTask(task05_08033660, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_13; +} + +void sub_80335F8(struct Sprite *sprite) +{ + u8 battlerId = sprite->data[5]; + + FreeSpriteOamMatrix(sprite); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + DestroySprite(sprite); + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], 0); +} + +static void task05_08033660(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + ++gTasks[taskId].data[1]; + } + else + { + u8 savedActiveBattler = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_8031FF4(gActiveBattler, FALSE); + } + else + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_8031FF4(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + sub_8031FF4(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + } + gBattlerControllerFuncs[gActiveBattler] = sub_802FA58; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); + } +} + +static void PlayerHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + PlayerBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1; + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + if (gBattleBufferA[gActiveBattler][2] != 0) + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D; + gBattlerControllerFuncs[gActiveBattler] = sub_8033830; + } +} + +static void sub_8033830(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + PlayerBufferExecCompleted(); + } +} + +static void PlayerHandleHidePartyStatusSummary(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + PlayerBufferExecCompleted(); +} + +static void PlayerHandleEndBounceEffect(void) +{ + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + PlayerBufferExecCompleted(); +} + +static void PlayerHandleSpriteInvisibility(void) +{ + if (IsBattlerSpritePresent(gActiveBattler)) + { + gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1]; + CopyBattleSpriteInvisibility(gActiveBattler); + } + PlayerBufferExecCompleted(); +} + +static void PlayerHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + PlayerBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; + } +} + +static void PlayerHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBattler][1]) + { + case 0: + PrintLinkStandbyMsg(); + // fall through + case 1: + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + break; + case 2: + PrintLinkStandbyMsg(); + break; + } + PlayerBufferExecCompleted(); +} + +static void PlayerHandleResetActionMoveSelection(void) +{ + switch (gBattleBufferA[gActiveBattler][1]) + { + case RESET_ACTION_MOVE_SELECTION: + gActionSelectionCursor[gActiveBattler] = 0; + gMoveSelectionCursor[gActiveBattler] = 0; + break; + case RESET_ACTION_SELECTION: + gActionSelectionCursor[gActiveBattler] = 0; + break; + case RESET_MOVE_SELECTION: + gMoveSelectionCursor[gActiveBattler] = 0; + break; + } + PlayerBufferExecCompleted(); +} + +static void PlayerHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + PlayerBufferExecCompleted(); + gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8; +} + +static void PlayerCmdEnd(void) +{ +} + +static void sub_8033AC8(void) +{ + u32 bitMask = 0; + u8 startY = 0; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 moveTarget; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); + u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]; + + if (move == MOVE_CURSE) + { + if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST) + moveTarget = MOVE_TARGET_USER; + else + moveTarget = MOVE_TARGET_SELECTED; + } + else + { + moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target; + } + switch (moveTarget) + { + case 0: + case 1: + case 2: + case 4: + bitMask = 0xF0000; + startY = 0; + break; + case 8: + case 64: + bitMask = (gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)] + | gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]) << 16; + startY = 8; + break; + case 16: + switch (move) + { + case MOVE_HAZE: + case MOVE_SANDSTORM: + case MOVE_PERISH_SONG: + case MOVE_RAIN_DANCE: + case MOVE_SUNNY_DAY: + case MOVE_HAIL: + case MOVE_MUD_SPORT: + case MOVE_WATER_SPORT: + bitMask = 0xF0000; + break; + case MOVE_SAFEGUARD: + case MOVE_REFLECT: + case MOVE_LIGHT_SCREEN: + case MOVE_MIST: + case MOVE_HEAL_BELL: + case MOVE_AROMATHERAPY: + bitMask = (gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] + | gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]) << 16; + break; + case MOVE_HELPING_HAND: + bitMask = (gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)]) << 16; + break; + default: + bitMask = (gBitTable[gActiveBattler]) << 16; + break; + } + startY = 8; + break; + case 32: + bitMask = (gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)] + | gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)] + | gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]) << 16; + startY = 8; + break; + } + BeginNormalPaletteFade(bitMask, 8, startY, 0, RGB_WHITE); + } +} diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 509a00824..96790a52d 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1,6 +1,6 @@ #include "global.h" #include "battle.h" -#include "battle_2.h" +#include "battle_main.h" #include "battle_ai_script_commands.h" #include "battle_anim.h" #include "battle_util.h" diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 3789b04c2..315696388 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -12,7 +12,7 @@ #include "util.h" #include "party_menu.h" #include "battle.h" -#include "battle_2.h" +#include "battle_main.h" #include "battle_controllers.h" #include "battle_ai_script_commands.h" #include "battle_anim.h" @@ -450,7 +450,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId) void DecompressTrainerBackPalette(u16 index, u8 palette) { - LoadCompressedPalette(gUnknown_8239FD4[index].data, (palette + 16) * 16, 0x20); + LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20); } void nullsub_16(u8 a1) diff --git a/src/pokemon.c b/src/pokemon.c index 5f26881ab..94cf8f607 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8,7 +8,7 @@ #include "data2.h" #include "string_util.h" #include "battle.h" -#include "battle_2.h" +#include "battle_main.h" #include "item.h" #include "event_data.h" #include "util.h" diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 3594c79a2..fa687fbef 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -23,7 +23,7 @@ #include "event_data.h" #include "load_save.h" #include "battle_transition.h" -#include "battle_2.h" +#include "battle_main.h" #include "battle.h" #include "global.fieldmap.h" #include "teachy_tv.h" diff --git a/src/trainer_tower.c b/src/trainer_tower.c index a1eedf2ac..054a0da2f 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -17,7 +17,7 @@ #include "battle_setup.h" #include "battle_transition.h" #include "battle.h" -#include "battle_2.h" +#include "battle_main.h" #include "overworld.h" #include "item.h" #include "window.h" diff --git a/sym_common.txt b/sym_common.txt index a8a434559..3c9c8f56f 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -123,10 +123,10 @@ gBattlerControllerFuncs: @ 3004FE0 gHealthboxSpriteIds: @ 3004FF0 .space 0x4 -gUnknown_3004FF4: @ 3004FF4 +gMultiUsePlayerCursor: @ 3004FF4 .space 0x4 -gUnknown_3004FF8: @ 3004FF8 +gNumberOfMovesToChoose: @ 3004FF8 .space 0x4 gUnknown_3004FFC: @ 3004FFC From 08e8856f1020ea05f3978a205cf51e8d75b169a6 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 5 Aug 2019 09:25:46 +0800 Subject: [PATCH 018/100] minor issue --- src/battle_ai_script_commands.c | 14 +++++++------- src/battle_ai_switch_items.c | 2 +- src/battle_controller_player.c | 22 +++++++++++----------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index ce1b081e7..b7cf113d4 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -344,12 +344,12 @@ void BattleAI_SetupAIData(void) } else if (!(gBattleTypeFlags & (0x80900)) && (gTrainerBattleOpponent_A != 0x400)) // _080C6ECC { - if(gBattleTypeFlags & (0x80 << 10)) + if (gBattleTypeFlags & (0x80 << 10)) { AI_THINKING_STRUCT->aiFlags = 1; return; } - else if(gBattleTypeFlags & (0x80 << 11)) + else if (gBattleTypeFlags & (0x80 << 11)) { AI_THINKING_STRUCT->aiFlags = 7; return; @@ -1704,22 +1704,22 @@ static void BattleAICmd_frlg_safari(void) { u8 var; - if(gBattleStruct->safariGoNearCounter) + if (gBattleStruct->safariGoNearCounter) { var = gBattleStruct->safariEscapeFactor * 2; - if(var > 20) + if (var > 20) var = 20; } - else if(gBattleStruct->safariPkblThrowCounter != 0) // _080C91DC + else if (gBattleStruct->safariPkblThrowCounter != 0) // _080C91DC { var = gBattleStruct->safariEscapeFactor / 4; - if(var == 0) + if (var == 0) var = 1; } else var = gBattleStruct->safariEscapeFactor; var *= 5; - if((u8)(Random() % 100) < var) + if ((u8)(Random() % 100) < var) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6f059e9a5..22def6ff6 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -38,7 +38,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) s32 i, j; u16 move; - if(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) return FALSE; if (gBattleMons[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)].ability == ABILITY_WONDER_GUARD) { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index efa2b0d95..cdf72e4e1 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1198,7 +1198,7 @@ static void sub_80303A8(u8 taskId) s16 *data = gTasks[taskId].data; u8 battlerId = tExpTask_battler; u16 v5 = sub_80768B0(battlerId); - u32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER; + bool32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER; struct Sprite *sprite = &gSprites[gBattlerSpriteIds[battlerId]]; switch (data[15]) @@ -1226,7 +1226,7 @@ static void sub_80303A8(u8 taskId) case 1: { u32 battlerIdAlt = battlerId; - u32 v6Alt = v6; + bool32 v6Alt = v6; sub_8072E48(battlerIdAlt, v6Alt); } @@ -1407,7 +1407,7 @@ static void MoveSelectionDisplayPpNumber(void) if (gBattleBufferA[gActiveBattler][2] == TRUE) // check if we didn't want to display pp number return; SetPpNumbersPaletteInMoveSelection(); - moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]); + moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); *txtPtr = CHAR_SLASH; ConvertIntToDecimalStringN(++txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); @@ -2919,20 +2919,20 @@ static void sub_8033AC8(void) } switch (moveTarget) { - case 0: - case 1: - case 2: - case 4: + case MOVE_TARGET_SELECTED: + case MOVE_TARGET_DEPENDS: + case MOVE_TARGET_USER_OR_SELECTED: + case MOVE_TARGET_RANDOM: bitMask = 0xF0000; startY = 0; break; - case 8: - case 64: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_OPPONENTS_FIELD: bitMask = (gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)] | gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]) << 16; startY = 8; break; - case 16: + case MOVE_TARGET_USER: switch (move) { case MOVE_HAZE: @@ -2963,7 +2963,7 @@ static void sub_8033AC8(void) } startY = 8; break; - case 32: + case MOVE_TARGET_FOES_AND_ALLY: bitMask = (gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)] | gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)] | gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]) << 16; From 5f6a55e4fda5d038b3864b23136eb7cd9a8bdbcf Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 22 Aug 2019 14:21:56 +0800 Subject: [PATCH 019/100] battle_controller_link_opponent --- asm/battle_controller_link_opponent.s | 6260 ------------------------- asm/battle_controller_link_partner.s | 20 +- asm/battle_message.s | 4 +- asm/battle_script_commands.s | 6 +- asm/pokeball.s | 2 +- data/data.s | 5 - include/battle_main.h | 1 - include/pokemon.h | 2 +- ld_script.txt | 4 +- src/battle_controller_link_opponent.c | 1686 +++++++ src/battle_controller_opponent.c | 2 +- src/battle_controller_player.c | 4 +- src/battle_util.c | 2 +- src/pokemon.c | 4 +- 14 files changed, 1711 insertions(+), 6291 deletions(-) delete mode 100644 asm/battle_controller_link_opponent.s create mode 100644 src/battle_controller_link_opponent.c diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s deleted file mode 100644 index 7aba90e39..000000000 --- a/asm/battle_controller_link_opponent.s +++ /dev/null @@ -1,6260 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_19 -nullsub_19: @ 803A664 - bx lr - thumb_func_end nullsub_19 - - thumb_func_start SetControllerToLinkOpponent -SetControllerToLinkOpponent: @ 803A668 - ldr r1, _0803A678 @ =gBattlerControllerFuncs - ldr r0, _0803A67C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A680 @ =sub_803A684 - str r1, [r0] - bx lr - .align 2, 0 -_0803A678: .4byte gBattlerControllerFuncs -_0803A67C: .4byte gActiveBattler -_0803A680: .4byte sub_803A684 - thumb_func_end SetControllerToLinkOpponent - - thumb_func_start sub_803A684 -sub_803A684: @ 803A684 - push {lr} - ldr r2, _0803A6B8 @ =gBattleControllerExecFlags - ldr r1, _0803A6BC @ =gBitTable - ldr r0, _0803A6C0 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0803A6D0 - ldr r0, _0803A6C4 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _0803A6CC - ldr r0, _0803A6C8 @ =gUnknown_8250B20 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _0803A6D0 - .align 2, 0 -_0803A6B8: .4byte gBattleControllerExecFlags -_0803A6BC: .4byte gBitTable -_0803A6C0: .4byte gActiveBattler -_0803A6C4: .4byte gBattleBufferA -_0803A6C8: .4byte gUnknown_8250B20 -_0803A6CC: - bl RecordedOpponentBufferExecCompleted -_0803A6D0: - pop {r0} - bx r0 - thumb_func_end sub_803A684 - - thumb_func_start sub_803A6D4 -sub_803A6D4: @ 803A6D4 - push {lr} - ldr r2, _0803A6FC @ =gSprites - ldr r1, _0803A700 @ =gBattlerSpriteIds - ldr r0, _0803A704 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0803A708 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803A6F8 - bl RecordedOpponentBufferExecCompleted -_0803A6F8: - pop {r0} - bx r0 - .align 2, 0 -_0803A6FC: .4byte gSprites -_0803A700: .4byte gBattlerSpriteIds -_0803A704: .4byte gActiveBattler -_0803A708: .4byte SpriteCallbackDummy - thumb_func_end sub_803A6D4 - - thumb_func_start sub_803A70C -sub_803A70C: @ 803A70C - push {r4-r6,lr} - ldr r4, _0803A784 @ =gSprites - ldr r6, _0803A788 @ =gBattlerSpriteIds - ldr r5, _0803A78C @ =gActiveBattler - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, [r0] - ldr r0, _0803A790 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803A77C - adds r0, r2, r4 - ldrh r0, [r0, 0x6] - bl FreeTrainerFrontPicPaletteAndTile - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x38] - ldr r2, _0803A794 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _0803A798 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - bl RecordedOpponentBufferExecCompleted -_0803A77C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803A784: .4byte gSprites -_0803A788: .4byte gBattlerSpriteIds -_0803A78C: .4byte gActiveBattler -_0803A790: .4byte SpriteCallbackDummy -_0803A794: .4byte 0x000003ff -_0803A798: .4byte 0xfffffc00 - thumb_func_end sub_803A70C - - thumb_func_start sub_803A79C -sub_803A79C: @ 803A79C - push {r4,lr} - ldr r4, _0803A7DC @ =gBattleSpritesDataPtr - ldr r1, [r4] - ldr r3, _0803A7E0 @ =gActiveBattler - ldrb r0, [r3] - ldr r2, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0803A7D4 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - bl RecordedOpponentBufferExecCompleted -_0803A7D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A7DC: .4byte gBattleSpritesDataPtr -_0803A7E0: .4byte gActiveBattler - thumb_func_end sub_803A79C - - thumb_func_start sub_803A7E4 -sub_803A7E4: @ 803A7E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803A80C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803A840 - ldr r0, _0803A82C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803A840 -_0803A80C: - ldr r2, _0803A830 @ =gSprites - ldr r1, _0803A834 @ =gHealthboxSpriteIds - ldr r0, _0803A838 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0803A83C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803A876 - b _0803A874 - .align 2, 0 -_0803A82C: .4byte gBattleTypeFlags -_0803A830: .4byte gSprites -_0803A834: .4byte gHealthboxSpriteIds -_0803A838: .4byte gActiveBattler -_0803A83C: .4byte SpriteCallbackDummy -_0803A840: - ldr r2, _0803A95C @ =gSprites - ldr r5, _0803A960 @ =gHealthboxSpriteIds - ldr r0, _0803A964 @ =gActiveBattler - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _0803A968 @ =SpriteCallbackDummy - cmp r4, r0 - bne _0803A876 - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0803A876 -_0803A874: - movs r6, 0x1 -_0803A876: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _0803A882 - movs r6, 0 -_0803A882: - cmp r6, 0 - bne _0803A888 - b _0803A9AA -_0803A888: - ldr r0, _0803A964 @ =gActiveBattler - mov r8, r0 - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bne _0803A936 - ldr r7, _0803A96C @ =gBattleSpritesDataPtr - ldr r0, [r7] - mov r1, r8 - ldrb r2, [r1] - ldr r5, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r5 - ldrb r1, [r4, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A9AA - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0803A9AA - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - ldr r0, [r7] - mov r1, r8 - ldrb r2, [r1] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _0803A970 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_0803A936: - ldr r0, _0803A974 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803A97C - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803A988 - ldr r0, _0803A978 @ =gMPlayInfo_BGM - bl m4aMPlayContinue - b _0803A988 - .align 2, 0 -_0803A95C: .4byte gSprites -_0803A960: .4byte gHealthboxSpriteIds -_0803A964: .4byte gActiveBattler -_0803A968: .4byte SpriteCallbackDummy -_0803A96C: .4byte gBattleSpritesDataPtr -_0803A970: .4byte 0x000027f9 -_0803A974: .4byte gBattleTypeFlags -_0803A978: .4byte gMPlayInfo_BGM -_0803A97C: - ldr r0, _0803A9B4 @ =gMPlayInfo_BGM - ldr r1, _0803A9B8 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_0803A988: - ldr r0, _0803A9BC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, _0803A9C0 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _0803A9C4 @ =gBattlerControllerFuncs - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A9C8 @ =sub_803A79C - str r1, [r0] -_0803A9AA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803A9B4: .4byte gMPlayInfo_BGM -_0803A9B8: .4byte 0x0000ffff -_0803A9BC: .4byte gBattleSpritesDataPtr -_0803A9C0: .4byte gActiveBattler -_0803A9C4: .4byte gBattlerControllerFuncs -_0803A9C8: .4byte sub_803A79C - thumb_func_end sub_803A7E4 - - thumb_func_start sub_803A9CC -sub_803A9CC: @ 803A9CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0803ABEC @ =gBattleSpritesDataPtr - mov r8, r0 - ldr r0, [r0] - ldr r7, _0803ABF0 @ =gActiveBattler - ldrb r2, [r7] - ldr r3, [r0, 0x4] - lsls r5, r2, 1 - adds r0, r5, r2 - lsls r0, 2 - adds r0, r3 - ldrb r4, [r0] - movs r6, 0x8 - adds r0, r6, 0 - ands r0, r4 - cmp r0, 0 - beq _0803A9F8 - b _0803ABDC -_0803A9F8: - movs r1, 0x2 - mov r9, r1 - adds r1, r2, 0 - mov r0, r9 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - beq _0803AA1C - b _0803ABDC -_0803AA1C: - movs r6, 0x80 - adds r0, r6, 0 - ands r0, r4 - cmp r0, 0 - bne _0803AA3A - ldr r0, _0803ABF4 @ =gBattlerPartyIndexes - adds r0, r5, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0803ABF8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0803AA3A: - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r7] - mov r2, r9 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0803AA6C - ldr r0, _0803ABF4 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0803ABF8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0803AA6C: - ldr r0, _0803ABFC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803AABA - ldrb r0, [r7] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0803AABA - mov r1, r8 - ldr r0, [r1] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x9] - adds r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0803AAA6 - b _0803ABDC -_0803AAA6: - mov r2, r8 - ldr r0, [r2] - ldrb r1, [r7] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - mov r1, r10 - strb r1, [r0, 0x9] -_0803AABA: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803AB50 - ldr r0, _0803ABFC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803AB50 - ldr r1, _0803AC00 @ =gUnknown_3004FFC - ldr r5, _0803ABF0 @ =gActiveBattler - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803AC04 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r2, _0803AC08 @ =gHealthboxSpriteIds - mov r8, r2 - ldrb r0, [r5] - adds r1, r4, 0 - eors r1, r0 - adds r0, r1, r2 - ldrb r0, [r0] - ldr r2, _0803ABF4 @ =gBattlerPartyIndexes - mov r10, r2 - lsls r1, 1 - add r1, r10 - ldrh r1, [r1] - movs r2, 0x64 - mov r9, r2 - mov r2, r9 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _0803ABF8 @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - eors r0, r4 - bl sub_804BD94 - ldrb r0, [r5] - eors r0, r4 - add r0, r8 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r5] - eors r4, r0 - lsls r0, r4, 1 - add r0, r10 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback -_0803AB50: - ldr r1, _0803AC00 @ =gUnknown_3004FFC - ldr r5, _0803ABF0 @ =gActiveBattler - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803AC04 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _0803AC08 @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0803ABF4 @ =gBattlerPartyIndexes - mov r9, r2 - lsls r1, 1 - add r1, r9 - ldrh r1, [r1] - movs r2, 0x64 - mov r8, r2 - mov r2, r8 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _0803ABF8 @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r4, [r5] - lsls r0, r4, 1 - add r0, r9 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r0, _0803ABEC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0803AC0C @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803AC10 @ =sub_803A7E4 - str r1, [r0] -_0803ABDC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803ABEC: .4byte gBattleSpritesDataPtr -_0803ABF0: .4byte gActiveBattler -_0803ABF4: .4byte gBattlerPartyIndexes -_0803ABF8: .4byte gEnemyParty -_0803ABFC: .4byte gBattleTypeFlags -_0803AC00: .4byte gUnknown_3004FFC -_0803AC04: .4byte gSprites -_0803AC08: .4byte gHealthboxSpriteIds -_0803AC0C: .4byte gBattlerControllerFuncs -_0803AC10: .4byte sub_803A7E4 - thumb_func_end sub_803A9CC - - thumb_func_start sub_803AC14 -sub_803AC14: @ 803AC14 - push {r4-r7,lr} - ldr r2, _0803AC70 @ =gSprites - ldr r0, _0803AC74 @ =gBattlerSpriteIds - ldr r7, _0803AC78 @ =gActiveBattler - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r2, r0, 31 - cmp r2, 0x1 - bne _0803ACC0 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _0803ACC0 - ldr r6, _0803AC7C @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r4, r3, 1 - adds r0, r4, r3 - lsls r0, 2 - adds r1, r0, r1 - ldrb r5, [r1] - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - bne _0803AC88 - ldr r0, _0803AC80 @ =gBattlerPartyIndexes - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0803AC84 @ =gEnemyParty - adds r1, r0 - adds r0, r3, 0 - bl sub_80F1720 - b _0803ACC0 - .align 2, 0 -_0803AC70: .4byte gSprites -_0803AC74: .4byte gBattlerSpriteIds -_0803AC78: .4byte gActiveBattler -_0803AC7C: .4byte gBattleSpritesDataPtr -_0803AC80: .4byte gBattlerPartyIndexes -_0803AC84: .4byte gEnemyParty -_0803AC88: - ldrb r0, [r1, 0x1] - ands r2, r0 - cmp r2, 0 - beq _0803ACC0 - movs r0, 0x7F - ands r0, r5 - strb r0, [r1] - ldr r0, [r6] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0803ACC8 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - bl RecordedOpponentBufferExecCompleted -_0803ACC0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803ACC8: .4byte 0x000027f9 - thumb_func_end sub_803AC14 - - thumb_func_start CompleteOnHealthbarDone_4 -CompleteOnHealthbarDone_4: @ 803ACCC - push {r4-r6,lr} - ldr r6, _0803AD0C @ =gActiveBattler - ldrb r0, [r6] - ldr r5, _0803AD10 @ =gHealthboxSpriteIds - adds r1, r0, r5 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0803AD14 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _0803AD18 - .align 2, 0 -_0803AD0C: .4byte gActiveBattler -_0803AD10: .4byte gHealthboxSpriteIds -_0803AD14: - bl RecordedOpponentBufferExecCompleted -_0803AD18: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end CompleteOnHealthbarDone_4 - - thumb_func_start sub_803AD20 -sub_803AD20: @ 803AD20 - push {lr} - ldr r2, _0803AD54 @ =gSprites - ldr r0, _0803AD58 @ =gBattlerSpriteIds - ldr r1, _0803AD5C @ =gActiveBattler - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0803AD4E - ldr r0, _0803AD60 @ =gHealthboxSpriteIds - adds r0, r3, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl RecordedOpponentBufferExecCompleted -_0803AD4E: - pop {r0} - bx r0 - .align 2, 0 -_0803AD54: .4byte gSprites -_0803AD58: .4byte gBattlerSpriteIds -_0803AD5C: .4byte gActiveBattler -_0803AD60: .4byte gHealthboxSpriteIds - thumb_func_end sub_803AD20 - - thumb_func_start sub_803AD64 -sub_803AD64: @ 803AD64 - push {r4-r6,lr} - ldr r0, _0803ADC4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _0803ADC8 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803ADBE - ldr r5, _0803ADCC @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0803ADD0 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl HideBattlerShadowSprite - ldr r1, _0803ADD4 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl RecordedOpponentBufferExecCompleted -_0803ADBE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803ADC4: .4byte gBattleSpritesDataPtr -_0803ADC8: .4byte gActiveBattler -_0803ADCC: .4byte gBattlerSpriteIds -_0803ADD0: .4byte gSprites -_0803ADD4: .4byte gHealthboxSpriteIds - thumb_func_end sub_803AD64 - - thumb_func_start CompleteOnInactiveTextPrinter_5 -CompleteOnInactiveTextPrinter_5: @ 803ADD8 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0803ADEA - bl RecordedOpponentBufferExecCompleted -_0803ADEA: - pop {r0} - bx r0 - thumb_func_end CompleteOnInactiveTextPrinter_5 - - thumb_func_start DoHitAnimBlinkSpriteEffect_4 -DoHitAnimBlinkSpriteEffect_4: @ 803ADF0 - push {r4,lr} - ldr r1, _0803AE2C @ =gBattlerSpriteIds - ldr r0, _0803AE30 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _0803AE34 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _0803AE3C - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _0803AE38 @ =gDoingBattleAnim - strb r3, [r0] - bl RecordedOpponentBufferExecCompleted - b _0803AE66 - .align 2, 0 -_0803AE2C: .4byte gBattlerSpriteIds -_0803AE30: .4byte gActiveBattler -_0803AE34: .4byte gSprites -_0803AE38: .4byte gDoingBattleAnim -_0803AE3C: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0803AE60 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0803AE60: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_0803AE66: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DoHitAnimBlinkSpriteEffect_4 - - thumb_func_start sub_803AE6C -sub_803AE6C: @ 803AE6C - push {r4,lr} - ldr r2, _0803AEC0 @ =gSprites - ldr r0, _0803AEC4 @ =gHealthboxSpriteIds - ldr r4, _0803AEC8 @ =gActiveBattler - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0803AECC @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803AEB8 - ldr r0, _0803AED0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803AEAC - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_0803AEAC: - ldr r0, _0803AED4 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803AED8 @ =sub_803AEDC - str r0, [r1] -_0803AEB8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803AEC0: .4byte gSprites -_0803AEC4: .4byte gHealthboxSpriteIds -_0803AEC8: .4byte gActiveBattler -_0803AECC: .4byte SpriteCallbackDummy -_0803AED0: .4byte gBattleSpritesDataPtr -_0803AED4: .4byte gBattlerControllerFuncs -_0803AED8: .4byte sub_803AEDC - thumb_func_end sub_803AE6C - - thumb_func_start sub_803AEDC -sub_803AEDC: @ 803AEDC - push {lr} - ldr r0, _0803AF18 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803AF1C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803AF14 - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0803AF14 - ldr r0, _0803AF20 @ =gMPlayInfo_BGM - ldr r1, _0803AF24 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - bl RecordedOpponentBufferExecCompleted -_0803AF14: - pop {r0} - bx r0 - .align 2, 0 -_0803AF18: .4byte gBattleSpritesDataPtr -_0803AF1C: .4byte gActiveBattler -_0803AF20: .4byte gMPlayInfo_BGM -_0803AF24: .4byte 0x0000ffff - thumb_func_end sub_803AEDC - - thumb_func_start sub_803AF28 -sub_803AF28: @ 803AF28 - push {r4,r5,lr} - ldr r3, _0803AFD4 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldr r5, _0803AFD8 @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803AFCC - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldrb r2, [r5] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _0803AFDC @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r1, _0803AFE0 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0803AFE4 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - ldr r4, _0803AFE8 @ =gHealthboxSpriteIds - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _0803AFEC @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0803AFF0 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - bl sub_804BD94 - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r5] - bl CopyBattleSpriteInvisibility - ldr r1, _0803AFF4 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803AFF8 @ =sub_803AE6C - str r1, [r0] -_0803AFCC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803AFD4: .4byte gBattleSpritesDataPtr -_0803AFD8: .4byte gActiveBattler -_0803AFDC: .4byte 0x000027f9 -_0803AFE0: .4byte gBattlerSpriteIds -_0803AFE4: .4byte gSprites -_0803AFE8: .4byte gHealthboxSpriteIds -_0803AFEC: .4byte gBattlerPartyIndexes -_0803AFF0: .4byte gEnemyParty -_0803AFF4: .4byte gBattlerControllerFuncs -_0803AFF8: .4byte sub_803AE6C - thumb_func_end sub_803AF28 - - thumb_func_start sub_803AFFC -sub_803AFFC: @ 803AFFC - push {r4-r6,lr} - ldr r6, _0803B0A0 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _0803B0A4 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _0803B02E - ldr r0, _0803B0A8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0803B0AC @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_0803B02E: - ldr r4, _0803B0B0 @ =gSprites - ldr r0, _0803B0B4 @ =gUnknown_3004FFC - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _0803B0B8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _0803B098 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0803B098 - adds r0, r3, r4 - bl DestroySprite - ldrb r4, [r5] - ldr r1, _0803B0A8 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803B0AC @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r1, _0803B0BC @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803B0C0 @ =sub_803AF28 - str r1, [r0] -_0803B098: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803B0A0: .4byte gBattleSpritesDataPtr -_0803B0A4: .4byte gActiveBattler -_0803B0A8: .4byte gBattlerPartyIndexes -_0803B0AC: .4byte gEnemyParty -_0803B0B0: .4byte gSprites -_0803B0B4: .4byte gUnknown_3004FFC -_0803B0B8: .4byte SpriteCallbackDummy -_0803B0BC: .4byte gBattlerControllerFuncs -_0803B0C0: .4byte sub_803AF28 - thumb_func_end sub_803AFFC - - thumb_func_start CompleteOnFinishedStatusAnimation_5 -CompleteOnFinishedStatusAnimation_5: @ 803B0C4 - push {lr} - ldr r0, _0803B0EC @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803B0F0 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0803B0E6 - bl RecordedOpponentBufferExecCompleted -_0803B0E6: - pop {r0} - bx r0 - .align 2, 0 -_0803B0EC: .4byte gBattleSpritesDataPtr -_0803B0F0: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation_5 - - thumb_func_start CompleteOnFinishedBattleAnimation_5 -CompleteOnFinishedBattleAnimation_5: @ 803B0F4 - push {lr} - ldr r0, _0803B11C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803B120 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0803B116 - bl RecordedOpponentBufferExecCompleted -_0803B116: - pop {r0} - bx r0 - .align 2, 0 -_0803B11C: .4byte gBattleSpritesDataPtr -_0803B120: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation_5 - - thumb_func_start RecordedOpponentBufferExecCompleted -RecordedOpponentBufferExecCompleted: @ 803B124 - push {r4,lr} - sub sp, 0x4 - ldr r1, _0803B164 @ =gBattlerControllerFuncs - ldr r4, _0803B168 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803B16C @ =sub_803A684 - str r1, [r0] - ldr r0, _0803B170 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0803B178 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _0803B174 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _0803B18A - .align 2, 0 -_0803B164: .4byte gBattlerControllerFuncs -_0803B168: .4byte gActiveBattler -_0803B16C: .4byte sub_803A684 -_0803B170: .4byte gBattleTypeFlags -_0803B174: .4byte gBattleBufferA -_0803B178: - ldr r2, _0803B194 @ =gBattleControllerExecFlags - ldr r1, _0803B198 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_0803B18A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803B194: .4byte gBattleControllerExecFlags -_0803B198: .4byte gBitTable - thumb_func_end RecordedOpponentBufferExecCompleted - - thumb_func_start RecordedOpponentHandleGetMonData -RecordedOpponentHandleGetMonData: @ 803B19C - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _0803B1C8 @ =gBattleBufferA - ldr r0, _0803B1CC @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _0803B1D4 - ldr r0, _0803B1D0 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl CopyRecordedOpponentMonData - adds r6, r0, 0 - b _0803B1F6 - .align 2, 0 -_0803B1C8: .4byte gBattleBufferA -_0803B1CC: .4byte gActiveBattler -_0803B1D0: .4byte gBattlerPartyIndexes -_0803B1D4: - ldrb r4, [r1] - movs r5, 0 -_0803B1D8: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0803B1EE - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl CopyRecordedOpponentMonData - adds r6, r0 -_0803B1EE: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _0803B1D8 -_0803B1F6: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl RecordedOpponentBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end RecordedOpponentHandleGetMonData - - thumb_func_start CopyRecordedOpponentMonData -CopyRecordedOpponentMonData: @ 803B210 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _0803B244 @ =gBattleBufferA - ldr r3, _0803B248 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _0803B23A - bl _0803B9A6 -_0803B23A: - lsls r0, 2 - ldr r1, _0803B24C @ =_0803B250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803B244: .4byte gBattleBufferA -_0803B248: .4byte gActiveBattler -_0803B24C: .4byte _0803B250 - .align 2, 0 -_0803B250: - .4byte _0803B340 - .4byte _0803B564 - .4byte _0803B574 - .4byte _0803B584 - .4byte _0803B5EC - .4byte _0803B5EC - .4byte _0803B5EC - .4byte _0803B5EC - .4byte _0803B608 - .4byte _0803B644 - .4byte _0803B644 - .4byte _0803B644 - .4byte _0803B644 - .4byte _0803B9A6 - .4byte _0803B9A6 - .4byte _0803B9A6 - .4byte _0803B9A6 - .4byte _0803B660 - .4byte _0803B670 - .4byte _0803B6A0 - .4byte _0803B6B0 - .4byte _0803B6C0 - .4byte _0803B6D0 - .4byte _0803B6E0 - .4byte _0803B6F0 - .4byte _0803B700 - .4byte _0803B710 - .4byte _0803B720 - .4byte _0803B730 - .4byte _0803B740 - .4byte _0803B750 - .4byte _0803B760 - .4byte _0803B7B0 - .4byte _0803B7C0 - .4byte _0803B7D0 - .4byte _0803B7E0 - .4byte _0803B7F0 - .4byte _0803B800 - .4byte _0803B810 - .4byte _0803B820 - .4byte _0803B830 - .4byte _0803B864 - .4byte _0803B874 - .4byte _0803B884 - .4byte _0803B894 - .4byte _0803B8A4 - .4byte _0803B8B4 - .4byte _0803B8C4 - .4byte _0803B8D4 - .4byte _0803B8F4 - .4byte _0803B904 - .4byte _0803B914 - .4byte _0803B924 - .4byte _0803B934 - .4byte _0803B944 - .4byte _0803B954 - .4byte _0803B964 - .4byte _0803B974 - .4byte _0803B984 - .4byte _0803B994 -_0803B340: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803B554 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_0803B38C: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0803B38C - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803B554 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _0803B558 @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _0803B55C @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _0803B560 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_0803B544: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _0803B544 - b _0803B9A6 - .align 2, 0 -_0803B554: .4byte gEnemyParty -_0803B558: .4byte 0xfffffc1f -_0803B55C: .4byte 0xfff07fff -_0803B560: .4byte 0xfffffe0f -_0803B564: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B570 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - b _0803B8DE - .align 2, 0 -_0803B570: .4byte gEnemyParty -_0803B574: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B580 @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - b _0803B8DE - .align 2, 0 -_0803B580: .4byte gEnemyParty -_0803B584: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0803B5E8 @ =gEnemyParty - adds r4, r1, r0 - mov r8, r9 -_0803B59A: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0803B59A - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B5E8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_0803B5D8: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _0803B5D8 - b _0803B9A6 - .align 2, 0 -_0803B5E8: .4byte gEnemyParty -_0803B5EC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B604 @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _0803B8DE - .align 2, 0 -_0803B604: .4byte gEnemyParty -_0803B608: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _0803B640 @ =gEnemyParty - mov r8, r2 -_0803B614: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _0803B614 - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B640 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _0803B9A6 - .align 2, 0 -_0803B640: .4byte gEnemyParty -_0803B644: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B65C @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _0803B99E - .align 2, 0 -_0803B65C: .4byte gEnemyParty -_0803B660: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B66C @ =gEnemyParty - adds r0, r1 - movs r1, 0x1 - b _0803B67A - .align 2, 0 -_0803B66C: .4byte gEnemyParty -_0803B670: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B69C @ =gEnemyParty - adds r0, r1 - movs r1, 0x19 -_0803B67A: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _0803B9A6 - .align 2, 0 -_0803B69C: .4byte gEnemyParty -_0803B6A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6AC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1A - b _0803B99E - .align 2, 0 -_0803B6AC: .4byte gEnemyParty -_0803B6B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1B - b _0803B99E - .align 2, 0 -_0803B6BC: .4byte gEnemyParty -_0803B6C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6CC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1C - b _0803B99E - .align 2, 0 -_0803B6CC: .4byte gEnemyParty -_0803B6D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6DC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1D - b _0803B99E - .align 2, 0 -_0803B6DC: .4byte gEnemyParty -_0803B6E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6EC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1E - b _0803B99E - .align 2, 0 -_0803B6EC: .4byte gEnemyParty -_0803B6F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B6FC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1F - b _0803B99E - .align 2, 0 -_0803B6FC: .4byte gEnemyParty -_0803B700: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B70C @ =gEnemyParty - adds r0, r1 - movs r1, 0x20 - b _0803B99E - .align 2, 0 -_0803B70C: .4byte gEnemyParty -_0803B710: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B71C @ =gEnemyParty - adds r0, r1 - movs r1, 0x22 - b _0803B99E - .align 2, 0 -_0803B71C: .4byte gEnemyParty -_0803B720: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B72C @ =gEnemyParty - adds r0, r1 - movs r1, 0x23 - b _0803B99E - .align 2, 0 -_0803B72C: .4byte gEnemyParty -_0803B730: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B73C @ =gEnemyParty - adds r0, r1 - movs r1, 0x24 - b _0803B99E - .align 2, 0 -_0803B73C: .4byte gEnemyParty -_0803B740: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B74C @ =gEnemyParty - adds r0, r1 - movs r1, 0x25 - b _0803B99E - .align 2, 0 -_0803B74C: .4byte gEnemyParty -_0803B750: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B75C @ =gEnemyParty - adds r0, r1 - movs r1, 0x26 - b _0803B99E - .align 2, 0 -_0803B75C: .4byte gEnemyParty -_0803B760: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803B7AC @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _0803B9A6 - .align 2, 0 -_0803B7AC: .4byte gEnemyParty -_0803B7B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B7BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x27 - b _0803B99E - .align 2, 0 -_0803B7BC: .4byte gEnemyParty -_0803B7C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B7CC @ =gEnemyParty - adds r0, r1 - movs r1, 0x28 - b _0803B99E - .align 2, 0 -_0803B7CC: .4byte gEnemyParty -_0803B7D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B7DC @ =gEnemyParty - adds r0, r1 - movs r1, 0x29 - b _0803B99E - .align 2, 0 -_0803B7DC: .4byte gEnemyParty -_0803B7E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B7EC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2A - b _0803B99E - .align 2, 0 -_0803B7EC: .4byte gEnemyParty -_0803B7F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B7FC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2B - b _0803B99E - .align 2, 0 -_0803B7FC: .4byte gEnemyParty -_0803B800: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B80C @ =gEnemyParty - adds r0, r1 - movs r1, 0x2C - b _0803B99E - .align 2, 0 -_0803B80C: .4byte gEnemyParty -_0803B810: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B81C @ =gEnemyParty - adds r0, r1 - movs r1, 0 - b _0803B83A - .align 2, 0 -_0803B81C: .4byte gEnemyParty -_0803B820: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B82C @ =gEnemyParty - adds r0, r1 - movs r1, 0x9 - b _0803B8DE - .align 2, 0 -_0803B82C: .4byte gEnemyParty -_0803B830: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B860 @ =gEnemyParty - adds r0, r1 - movs r1, 0x37 -_0803B83A: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _0803B9A6 - .align 2, 0 -_0803B860: .4byte gEnemyParty -_0803B864: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B870 @ =gEnemyParty - adds r0, r1 - movs r1, 0x38 - b _0803B99E - .align 2, 0 -_0803B870: .4byte gEnemyParty -_0803B874: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B880 @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - b _0803B8DE - .align 2, 0 -_0803B880: .4byte gEnemyParty -_0803B884: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B890 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - b _0803B8DE - .align 2, 0 -_0803B890: .4byte gEnemyParty -_0803B894: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B8A0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3B - b _0803B8DE - .align 2, 0 -_0803B8A0: .4byte gEnemyParty -_0803B8A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B8B0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3C - b _0803B8DE - .align 2, 0 -_0803B8B0: .4byte gEnemyParty -_0803B8B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B8C0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3D - b _0803B8DE - .align 2, 0 -_0803B8C0: .4byte gEnemyParty -_0803B8C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B8D0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3E - b _0803B8DE - .align 2, 0 -_0803B8D0: .4byte gEnemyParty -_0803B8D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B8F0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3F -_0803B8DE: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _0803B9A6 - .align 2, 0 -_0803B8F0: .4byte gEnemyParty -_0803B8F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B900 @ =gEnemyParty - adds r0, r1 - movs r1, 0x16 - b _0803B99E - .align 2, 0 -_0803B900: .4byte gEnemyParty -_0803B904: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B910 @ =gEnemyParty - adds r0, r1 - movs r1, 0x17 - b _0803B99E - .align 2, 0 -_0803B910: .4byte gEnemyParty -_0803B914: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B920 @ =gEnemyParty - adds r0, r1 - movs r1, 0x18 - b _0803B99E - .align 2, 0 -_0803B920: .4byte gEnemyParty -_0803B924: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B930 @ =gEnemyParty - adds r0, r1 - movs r1, 0x21 - b _0803B99E - .align 2, 0 -_0803B930: .4byte gEnemyParty -_0803B934: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B940 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2F - b _0803B99E - .align 2, 0 -_0803B940: .4byte gEnemyParty -_0803B944: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B950 @ =gEnemyParty - adds r0, r1 - movs r1, 0x30 - b _0803B99E - .align 2, 0 -_0803B950: .4byte gEnemyParty -_0803B954: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B960 @ =gEnemyParty - adds r0, r1 - movs r1, 0x32 - b _0803B99E - .align 2, 0 -_0803B960: .4byte gEnemyParty -_0803B964: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B970 @ =gEnemyParty - adds r0, r1 - movs r1, 0x33 - b _0803B99E - .align 2, 0 -_0803B970: .4byte gEnemyParty -_0803B974: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B980 @ =gEnemyParty - adds r0, r1 - movs r1, 0x34 - b _0803B99E - .align 2, 0 -_0803B980: .4byte gEnemyParty -_0803B984: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B990 @ =gEnemyParty - adds r0, r1 - movs r1, 0x35 - b _0803B99E - .align 2, 0 -_0803B990: .4byte gEnemyParty -_0803B994: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803B9B8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x36 -_0803B99E: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_0803B9A6: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803B9B8: .4byte gEnemyParty - thumb_func_end CopyRecordedOpponentMonData - - thumb_func_start sub_803B9BC -sub_803B9BC: @ 803B9BC - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803B9BC - - thumb_func_start RecordedOpponentHandleSetMonData -RecordedOpponentHandleSetMonData: @ 803B9C8 - push {r4,r5,lr} - ldr r1, _0803B9EC @ =gBattleBufferA - ldr r0, _0803B9F0 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _0803B9F8 - ldr r0, _0803B9F4 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl SetRecordedOpponentMonData - b _0803BA16 - .align 2, 0 -_0803B9EC: .4byte gBattleBufferA -_0803B9F0: .4byte gActiveBattler -_0803B9F4: .4byte gBattlerPartyIndexes -_0803B9F8: - ldrb r4, [r1] - movs r5, 0 -_0803B9FC: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0803BA0A - adds r0, r5, 0 - bl SetRecordedOpponentMonData -_0803BA0A: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0803B9FC -_0803BA16: - bl RecordedOpponentBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end RecordedOpponentHandleSetMonData - - thumb_func_start SetRecordedOpponentMonData -SetRecordedOpponentMonData: @ 803BA20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x38 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r3, _0803BA58 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - ldr r2, _0803BA5C @ =gUnknown_2022BC7 - adds r4, r0, r2 - adds r7, r4, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r6, r3, 0 - adds r3, r2, 0 - cmp r0, 0x3B - bls _0803BA4E - bl _0803C32C -_0803BA4E: - lsls r0, 2 - ldr r1, _0803BA60 @ =_0803BA64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803BA58: .4byte gActiveBattler -_0803BA5C: .4byte gUnknown_2022BC7 -_0803BA60: .4byte _0803BA64 - .align 2, 0 -_0803BA64: - .4byte _0803BB54 - .4byte _0803BCEC - .4byte _0803BD08 - .4byte _0803BD24 - .4byte _0803BD78 - .4byte _0803BD78 - .4byte _0803BD78 - .4byte _0803BD78 - .4byte _0803BD98 - .4byte _0803BE00 - .4byte _0803BE00 - .4byte _0803BE00 - .4byte _0803BE00 - .4byte _0803C32C - .4byte _0803C32C - .4byte _0803C32C - .4byte _0803C32C - .4byte _0803BE28 - .4byte _0803BE44 - .4byte _0803BE60 - .4byte _0803BE7C - .4byte _0803BE98 - .4byte _0803BEB4 - .4byte _0803BED0 - .4byte _0803BEEC - .4byte _0803BF08 - .4byte _0803BF24 - .4byte _0803BF40 - .4byte _0803BF5C - .4byte _0803BF78 - .4byte _0803BF94 - .4byte _0803BFB0 - .4byte _0803C024 - .4byte _0803C040 - .4byte _0803C05C - .4byte _0803C078 - .4byte _0803C094 - .4byte _0803C0B0 - .4byte _0803C0CC - .4byte _0803C0E8 - .4byte _0803C104 - .4byte _0803C120 - .4byte _0803C13C - .4byte _0803C158 - .4byte _0803C174 - .4byte _0803C190 - .4byte _0803C1AC - .4byte _0803C1C8 - .4byte _0803C1E4 - .4byte _0803C200 - .4byte _0803C21C - .4byte _0803C238 - .4byte _0803C254 - .4byte _0803C270 - .4byte _0803C28C - .4byte _0803C2A8 - .4byte _0803C2C4 - .4byte _0803C2E0 - .4byte _0803C2FC - .4byte _0803C318 -_0803BB54: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803BCE8 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r7, 0 - bl SetMonData - adds r2, r7, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r7 - mov r10, r0 - adds r0, r7, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r7, 0x2 - str r0, [sp, 0x4] - adds r0, r7, 0x4 - str r0, [sp, 0x8] - adds r0, r7, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r6, r7, 0 - adds r6, 0x24 - adds r4, r7, 0 - adds r4, 0xC -_0803BBBA: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _0803BBBA - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803BCE8 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r7, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r7, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BCE8: .4byte gEnemyParty -_0803BCEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BD04 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xB - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BD04: .4byte gEnemyParty -_0803BD08: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BD20 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xC - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BD20: .4byte gEnemyParty -_0803BD24: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r4 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0803BD74 @ =gEnemyParty - adds r7, r1, r0 - adds r6, r4, 0 - adds r6, 0x8 -_0803BD3C: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _0803BD3C - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BD74 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BD74: .4byte gEnemyParty -_0803BD78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BD90 @ =gEnemyParty - adds r0, r1 - ldr r3, _0803BD94 @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _0803BE16 - .align 2, 0 -_0803BD90: .4byte gEnemyParty -_0803BD94: .4byte gBattleBufferA -_0803BD98: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803BDFC @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x11 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BDFC: .4byte gEnemyParty -_0803BE00: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BE20 @ =gEnemyParty - adds r0, r1 - ldr r3, _0803BE24 @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_0803BE16: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BE20: .4byte gEnemyParty -_0803BE24: .4byte gBattleBufferA -_0803BE28: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BE40 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BE40: .4byte gEnemyParty -_0803BE44: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BE5C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x19 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BE5C: .4byte gEnemyParty -_0803BE60: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BE78 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1A - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BE78: .4byte gEnemyParty -_0803BE7C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BE94 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1B - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BE94: .4byte gEnemyParty -_0803BE98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BEB0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1C - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BEB0: .4byte gEnemyParty -_0803BEB4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BECC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1D - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BECC: .4byte gEnemyParty -_0803BED0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BEE8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1E - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BEE8: .4byte gEnemyParty -_0803BEEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF04 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1F - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF04: .4byte gEnemyParty -_0803BF08: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF20 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x20 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF20: .4byte gEnemyParty -_0803BF24: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF3C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x22 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF3C: .4byte gEnemyParty -_0803BF40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF58 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x23 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF58: .4byte gEnemyParty -_0803BF5C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF74 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x24 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF74: .4byte gEnemyParty -_0803BF78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BF90 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x25 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BF90: .4byte gEnemyParty -_0803BF94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803BFAC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x26 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803BFAC: .4byte gEnemyParty -_0803BFB0: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803C020 @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x27 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _0803C0BE - .align 2, 0 -_0803C020: .4byte gEnemyParty -_0803C024: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C03C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x27 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C03C: .4byte gEnemyParty -_0803C040: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C058 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x28 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C058: .4byte gEnemyParty -_0803C05C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C074 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x29 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C074: .4byte gEnemyParty -_0803C078: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C090 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2A - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C090: .4byte gEnemyParty -_0803C094: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C0AC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2B - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C0AC: .4byte gEnemyParty -_0803C0B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C0C8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 -_0803C0BE: - movs r1, 0x2C - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C0C8: .4byte gEnemyParty -_0803C0CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C0E4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C0E4: .4byte gEnemyParty -_0803C0E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C100 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x9 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C100: .4byte gEnemyParty -_0803C104: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C11C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x37 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C11C: .4byte gEnemyParty -_0803C120: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C138 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x38 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C138: .4byte gEnemyParty -_0803C13C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C154 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x39 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C154: .4byte gEnemyParty -_0803C158: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C170 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3A - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C170: .4byte gEnemyParty -_0803C174: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C18C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3B - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C18C: .4byte gEnemyParty -_0803C190: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C1A8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3C - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C1A8: .4byte gEnemyParty -_0803C1AC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C1C4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3D - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C1C4: .4byte gEnemyParty -_0803C1C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C1E0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3E - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C1E0: .4byte gEnemyParty -_0803C1E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C1FC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3F - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C1FC: .4byte gEnemyParty -_0803C200: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C218 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x16 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C218: .4byte gEnemyParty -_0803C21C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C234 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x17 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C234: .4byte gEnemyParty -_0803C238: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C250 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x18 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C250: .4byte gEnemyParty -_0803C254: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C26C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x21 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C26C: .4byte gEnemyParty -_0803C270: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C288 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2F - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C288: .4byte gEnemyParty -_0803C28C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C2A4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x30 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C2A4: .4byte gEnemyParty -_0803C2A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C2C0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x32 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C2C0: .4byte gEnemyParty -_0803C2C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C2DC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x33 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C2DC: .4byte gEnemyParty -_0803C2E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C2F8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x34 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C2F8: .4byte gEnemyParty -_0803C2FC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C314 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x35 - bl SetMonData - b _0803C32C - .align 2, 0 -_0803C314: .4byte gEnemyParty -_0803C318: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803C33C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x36 - bl SetMonData -_0803C32C: - add sp, 0x38 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803C33C: .4byte gEnemyParty - thumb_func_end SetRecordedOpponentMonData - - thumb_func_start RecordedOpponentHandleSetRawMonData -RecordedOpponentHandleSetRawMonData: @ 803C340 - push {r4-r7,lr} - ldr r1, _0803C3A4 @ =gBattlerPartyIndexes - ldr r7, _0803C3A8 @ =gActiveBattler - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _0803C3AC @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _0803C3B0 @ =gEnemyParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _0803C398 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_0803C376: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _0803C376 -_0803C398: - bl RecordedOpponentBufferExecCompleted - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803C3A4: .4byte gBattlerPartyIndexes -_0803C3A8: .4byte gActiveBattler -_0803C3AC: .4byte gBattleBufferA -_0803C3B0: .4byte gEnemyParty - thumb_func_end RecordedOpponentHandleSetRawMonData - - thumb_func_start LinkOpponentHandleLoadPokeSprite -LinkOpponentHandleLoadPokeSprite: @ 803C3B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, _0803C4DC @ =gBattlerPartyIndexes - ldr r6, _0803C4E0 @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x64 - mov r10, r1 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - ldr r1, _0803C4E4 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r1, [r6] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - bl BattleLoadOpponentMonSpriteGfx - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _0803C4E8 @ =gMultiuseSpriteTemplate - mov r8, r0 - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r6] - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _0803C4EC @ =gBattlerSpriteIds - ldrb r1, [r6] - adds r1, r4 - strb r0, [r1] - ldr r5, _0803C4F0 @ =gSprites - ldrb r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0803C4F4 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r2, [r6] - adds r0, r2, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x2E] - ldrb r3, [r6] - adds r0, r3, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r2, [r6] - adds r4, r2, r4 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0803C4F8 @ =gBattleMonForms - adds r2, r1 - ldrb r1, [r2] - bl StartSpriteAnim - ldrb r4, [r6] - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r1, _0803C4FC @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803C500 @ =sub_803AC14 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803C4DC: .4byte gBattlerPartyIndexes -_0803C4E0: .4byte gActiveBattler -_0803C4E4: .4byte gEnemyParty -_0803C4E8: .4byte gMultiuseSpriteTemplate -_0803C4EC: .4byte gBattlerSpriteIds -_0803C4F0: .4byte gSprites -_0803C4F4: .4byte 0x0000ff10 -_0803C4F8: .4byte gBattleMonForms -_0803C4FC: .4byte gBattlerControllerFuncs -_0803C500: .4byte sub_803AC14 - thumb_func_end LinkOpponentHandleLoadPokeSprite - - thumb_func_start LinkOpponentHandleSendOutPoke -LinkOpponentHandleSendOutPoke: @ 803C504 - push {r4,lr} - ldr r1, _0803C53C @ =gBattlerPartyIndexes - ldr r4, _0803C540 @ =gActiveBattler - ldrb r0, [r4] - lsls r2, r0, 1 - adds r2, r1 - ldr r3, _0803C544 @ =gBattleBufferA - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldrb r0, [r4] - lsls r1, r0, 9 - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - bl sub_803C550 - ldr r1, _0803C548 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803C54C @ =sub_803AFFC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803C53C: .4byte gBattlerPartyIndexes -_0803C540: .4byte gActiveBattler -_0803C544: .4byte gBattleBufferA -_0803C548: .4byte gBattlerControllerFuncs -_0803C54C: .4byte sub_803AFFC - thumb_func_end LinkOpponentHandleSendOutPoke - - thumb_func_start sub_803C550 -sub_803C550: @ 803C550 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl ClearTemporarySpeciesSpriteData - ldr r0, _0803C6AC @ =gBattlerPartyIndexes - lsls r4, r6, 1 - adds r4, r0 - ldr r0, _0803C6B0 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0x64 - mov r9, r1 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - ldr r5, _0803C6B4 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _0803C6B8 @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _0803C6BC @ =gUnknown_3004FFC - mov r10, r1 - add r10, r6 - mov r1, r10 - strb r0, [r1] - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r5 - adds r1, r6, 0 - bl BattleLoadOpponentMonSpriteGfx - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _0803C6C0 @ =gMultiuseSpriteTemplate - mov r9, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r9 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _0803C6C4 @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _0803C6C8 @ =gSprites - mov r0, r10 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0803C6CC @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803C6D0 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFE - bl DoPokeballSendOutAnimation - mov r1, r10 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803C6AC: .4byte gBattlerPartyIndexes -_0803C6B0: .4byte gBattleBufferA -_0803C6B4: .4byte gEnemyParty -_0803C6B8: .4byte sub_8033E3C -_0803C6BC: .4byte gUnknown_3004FFC -_0803C6C0: .4byte gMultiuseSpriteTemplate -_0803C6C4: .4byte gBattlerSpriteIds -_0803C6C8: .4byte gSprites -_0803C6CC: .4byte gBattleMonForms -_0803C6D0: .4byte SpriteCallbackDummy - thumb_func_end sub_803C550 - - thumb_func_start LinkOpponentHandleReturnPokeToBall -LinkOpponentHandleReturnPokeToBall: @ 803C6D4 - push {r4-r6,lr} - ldr r1, _0803C708 @ =gBattleBufferA - ldr r6, _0803C70C @ =gActiveBattler - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _0803C71C - ldr r0, _0803C710 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _0803C714 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803C718 @ =sub_803C76C - str r1, [r0] - b _0803C758 - .align 2, 0 -_0803C708: .4byte gBattleBufferA -_0803C70C: .4byte gActiveBattler -_0803C710: .4byte gBattleSpritesDataPtr -_0803C714: .4byte gBattlerControllerFuncs -_0803C718: .4byte sub_803C76C -_0803C71C: - ldr r5, _0803C760 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0803C764 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl HideBattlerShadowSprite - ldr r1, _0803C768 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl RecordedOpponentBufferExecCompleted -_0803C758: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803C760: .4byte gBattlerSpriteIds -_0803C764: .4byte gSprites -_0803C768: .4byte gHealthboxSpriteIds - thumb_func_end LinkOpponentHandleReturnPokeToBall - - thumb_func_start sub_803C76C -sub_803C76C: @ 803C76C - push {r4-r6,lr} - ldr r6, _0803C78C @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _0803C790 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r4, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _0803C794 - cmp r0, 0x1 - beq _0803C7C2 - b _0803C7EA - .align 2, 0 -_0803C78C: .4byte gBattleSpritesDataPtr -_0803C790: .4byte gActiveBattler -_0803C794: - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803C7AE - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_0803C7AE: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _0803C7EA -_0803C7C2: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0803C7EA - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x2 - bl InitAndLaunchSpecialAnimation - ldr r1, _0803C7F0 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803C7F4 @ =sub_803AD64 - str r1, [r0] -_0803C7EA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803C7F0: .4byte gBattlerControllerFuncs -_0803C7F4: .4byte sub_803AD64 - thumb_func_end sub_803C76C - - thumb_func_start sub_803C7F8 -sub_803C7F8: @ 803C7F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0803C884 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803C8C0 - ldr r6, _0803C888 @ =gActiveBattler - ldrb r0, [r6] - bl GetBattlerPosition - movs r1, 0x2 - ands r1, r0 - movs r7, 0xC8 - cmp r1, 0 - beq _0803C820 - movs r7, 0x98 -_0803C820: - ldrb r0, [r6] - bl GetBankMultiplayerId - ldr r5, _0803C88C @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - movs r4, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _0803C866 - ldrb r0, [r6] - bl GetBankMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x1 - beq _0803C866 - ldrb r0, [r6] - bl GetBankMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1] - ands r4, r0 - cmp r4, 0x3 - bne _0803C8A0 -_0803C866: - ldr r4, _0803C88C @ =gLinkPlayers - ldr r0, _0803C888 @ =gActiveBattler - ldrb r0, [r0] - bl GetBankMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _0803C894 - ldr r0, _0803C890 @ =gFacilityClassToPicIndex - adds r0, 0x3D - b _0803C990 - .align 2, 0 -_0803C884: .4byte gBattleTypeFlags -_0803C888: .4byte gActiveBattler -_0803C88C: .4byte gLinkPlayers -_0803C890: .4byte gFacilityClassToPicIndex -_0803C894: - ldr r0, _0803C89C @ =gFacilityClassToPicIndex - adds r0, 0x3A - b _0803C990 - .align 2, 0 -_0803C89C: .4byte gFacilityClassToPicIndex -_0803C8A0: - ldrb r0, [r6] - bl GetBankMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _0803C98C - ldr r0, _0803C8BC @ =gFacilityClassToPicIndex - adds r0, 0x87 - b _0803C990 - .align 2, 0 -_0803C8BC: .4byte gFacilityClassToPicIndex -_0803C8C0: - movs r7, 0xB0 - ldr r0, _0803C8D8 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0xC0 - lsls r0, 4 - cmp r1, r0 - bne _0803C8DC - bl sub_80447AC - lsls r0, 16 - lsrs r0, 16 - b _0803C992 - .align 2, 0 -_0803C8D8: .4byte gTrainerBattleOpponent_A -_0803C8DC: - bl GetMultiplayerId - ldr r6, _0803C954 @ =gLinkPlayers - movs r5, 0x1 - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - movs r4, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _0803C930 - bl GetMultiplayerId - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x1 - beq _0803C930 - bl GetMultiplayerId - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r1] - ands r4, r0 - cmp r4, 0x3 - bne _0803C968 -_0803C930: - ldr r4, _0803C954 @ =gLinkPlayers - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _0803C95C - ldr r0, _0803C958 @ =gFacilityClassToPicIndex - adds r0, 0x3D - b _0803C990 - .align 2, 0 -_0803C954: .4byte gLinkPlayers -_0803C958: .4byte gFacilityClassToPicIndex -_0803C95C: - ldr r0, _0803C964 @ =gFacilityClassToPicIndex - adds r0, 0x3A - b _0803C990 - .align 2, 0 -_0803C964: .4byte gFacilityClassToPicIndex -_0803C968: - bl GetMultiplayerId - eors r0, r5 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _0803C98C - ldr r0, _0803C988 @ =gFacilityClassToPicIndex - adds r0, 0x87 - b _0803C990 - .align 2, 0 -_0803C988: .4byte gFacilityClassToPicIndex -_0803C98C: - ldr r0, _0803CAC8 @ =gFacilityClassToPicIndex - adds r0, 0x86 -_0803C990: - ldrb r0, [r0] -_0803C992: - mov r9, r0 - ldr r0, _0803CACC @ =gActiveBattler - mov r8, r0 - ldrb r1, [r0] - mov r0, r9 - bl DecompressTrainerFrontPic - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r5, _0803CAD0 @ =gMultiuseSpriteTemplate - adds r6, r7, 0 - ldr r1, _0803CAD4 @ =gTrainerFrontPicCoords - mov r2, r9 - lsls r0, r2, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 14 - adds r4, r0 - asrs r4, 16 - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r5, _0803CAD8 @ =gBattlerSpriteIds - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - strb r0, [r1] - ldr r4, _0803CADC @ =gSprites - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0803CAE0 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldr r0, _0803CAE4 @ =gTrainerFrontPicPaletteTable - mov r1, r9 - lsls r6, r1, 3 - adds r0, r6, r0 - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r4 - lsls r0, 4 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0x5] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r1, 0x38] - ldr r0, _0803CAE8 @ =gTrainerFrontPicTable - adds r6, r0 - ldrh r0, [r6, 0x6] - bl GetSpriteTileStartByTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _0803CAEC @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _0803CAF0 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r9 - strh r2, [r0, 0x6] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0803CAF4 @ =sub_8033EEC - str r1, [r0] - ldr r1, _0803CAF8 @ =gBattlerControllerFuncs - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803CAFC @ =sub_803A6D4 - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803CAC8: .4byte gFacilityClassToPicIndex -_0803CACC: .4byte gActiveBattler -_0803CAD0: .4byte gMultiuseSpriteTemplate -_0803CAD4: .4byte gTrainerFrontPicCoords -_0803CAD8: .4byte gBattlerSpriteIds -_0803CADC: .4byte gSprites -_0803CAE0: .4byte 0x0000ff10 -_0803CAE4: .4byte gTrainerFrontPicPaletteTable -_0803CAE8: .4byte gTrainerFrontPicTable -_0803CAEC: .4byte 0x000003ff -_0803CAF0: .4byte 0xfffffc00 -_0803CAF4: .4byte sub_8033EEC -_0803CAF8: .4byte gBattlerControllerFuncs -_0803CAFC: .4byte sub_803A6D4 - thumb_func_end sub_803C7F8 - - thumb_func_start sub_803CB00 -sub_803CB00: @ 803CB00 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CB00 - - thumb_func_start sub_803CB0C -sub_803CB0C: @ 803CB0C - push {r4-r6,lr} - ldr r6, _0803CB9C @ =gBattlerSpriteIds - ldr r4, _0803CBA0 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _0803CBA4 @ =gSprites - adds r0, r5 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803CBA8 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0803CBAC @ =SpriteCallbackDummy - bl StoreSpriteCallbackInData6 - ldr r1, _0803CBB0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803CBB4 @ =sub_803A70C - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803CB9C: .4byte gBattlerSpriteIds -_0803CBA0: .4byte gActiveBattler -_0803CBA4: .4byte gSprites -_0803CBA8: .4byte StartAnimLinearTranslation -_0803CBAC: .4byte SpriteCallbackDummy -_0803CBB0: .4byte gBattlerControllerFuncs -_0803CBB4: .4byte sub_803A70C - thumb_func_end sub_803CB0C - - thumb_func_start sub_803CBB8 -sub_803CBB8: @ 803CBB8 - push {r4-r6,lr} - ldr r6, _0803CC04 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _0803CC08 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _0803CC0C - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803CBEC - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_0803CBEC: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _0803CC48 - .align 2, 0 -_0803CC04: .4byte gBattleSpritesDataPtr -_0803CC08: .4byte gActiveBattler -_0803CC0C: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0803CC48 - strb r0, [r3, 0x4] - movs r0, 0x10 - movs r1, 0x3F - bl PlaySE12WithPanning - ldr r2, _0803CC50 @ =gSprites - ldr r1, _0803CC54 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0803CC58 @ =SpriteCB_FaintOpponentMon - str r1, [r0] - ldr r1, _0803CC5C @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803CC60 @ =sub_803AD20 - str r1, [r0] -_0803CC48: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803CC50: .4byte gSprites -_0803CC54: .4byte gBattlerSpriteIds -_0803CC58: .4byte SpriteCB_FaintOpponentMon -_0803CC5C: .4byte gBattlerControllerFuncs -_0803CC60: .4byte sub_803AD20 - thumb_func_end sub_803CBB8 - - thumb_func_start sub_803CC64 -sub_803CC64: @ 803CC64 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CC64 - - thumb_func_start sub_803CC70 -sub_803CC70: @ 803CC70 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CC70 - - thumb_func_start sub_803CC7C -sub_803CC7C: @ 803CC7C - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CC7C - - thumb_func_start sub_803CC88 -sub_803CC88: @ 803CC88 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CC88 - - thumb_func_start RecordedOpponentHandleMoveAnimation -RecordedOpponentHandleMoveAnimation: @ 803CC94 - push {r4-r6,lr} - ldr r6, _0803CD78 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _0803CCA6 - b _0803CDBA -_0803CCA6: - ldr r0, _0803CD7C @ =gBattleBufferA - mov r12, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _0803CD80 @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _0803CD84 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _0803CD88 @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _0803CD8C @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _0803CD90 @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _0803CD94 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _0803CD98 @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _0803CD9C - bl RecordedOpponentBufferExecCompleted - b _0803CDBA - .align 2, 0 -_0803CD78: .4byte gActiveBattler -_0803CD7C: .4byte gBattleBufferA -_0803CD80: .4byte gAnimMoveTurn -_0803CD84: .4byte gAnimMovePower -_0803CD88: .4byte gAnimMoveDmg -_0803CD8C: .4byte gAnimFriendship -_0803CD90: .4byte gWeatherMoveAnim -_0803CD94: .4byte gAnimDisableStructPtr -_0803CD98: .4byte gTransformedPersonalities -_0803CD9C: - ldr r0, _0803CDC0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _0803CDC4 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803CDC8 @ =RecordedOpponentDoMoveAnimation - str r1, [r0] -_0803CDBA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803CDC0: .4byte gBattleSpritesDataPtr -_0803CDC4: .4byte gBattlerControllerFuncs -_0803CDC8: .4byte RecordedOpponentDoMoveAnimation - thumb_func_end RecordedOpponentHandleMoveAnimation - - thumb_func_start RecordedOpponentDoMoveAnimation -RecordedOpponentDoMoveAnimation: @ 803CDCC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _0803CE18 @ =gBattleBufferA - ldr r6, _0803CE1C @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r10, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, r2, 0x2 - mov r9, r5 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r7, _0803CE20 @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _0803CE64 - cmp r2, 0x1 - bgt _0803CE24 - cmp r2, 0 - beq _0803CE2E - b _0803CF40 - .align 2, 0 -_0803CE18: .4byte gBattleBufferA -_0803CE1C: .4byte gActiveBattler -_0803CE20: .4byte gBattleSpritesDataPtr -_0803CE24: - cmp r2, 0x2 - beq _0803CE8E - cmp r2, 0x3 - beq _0803CF04 - b _0803CF40 -_0803CE2E: - ldr r1, [r5] - lsls r0, r3, 2 - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _0803CE50 - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r6] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_0803CE50: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _0803CF40 -_0803CE64: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0803CF40 - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _0803CF40 -_0803CE8E: - ldr r0, _0803CEF4 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _0803CEF8 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _0803CF40 - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803CEDC - mov r0, r8 - cmp r0, 0x1 - bhi _0803CEDC - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation - ldr r0, [r7] - ldrb r1, [r6] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_0803CEDC: - ldr r0, _0803CEFC @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _0803CF00 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _0803CF40 - .align 2, 0 -_0803CEF4: .4byte gAnimScriptCallback -_0803CEF8: .4byte gAnimScriptActive -_0803CEFC: .4byte gBattleSpritesDataPtr -_0803CF00: .4byte gActiveBattler -_0803CF04: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0803CF40 - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r10 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r9 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl RecordedOpponentBufferExecCompleted -_0803CF40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end RecordedOpponentDoMoveAnimation - - thumb_func_start sub_803CF50 -sub_803CF50: @ 803CF50 - push {r4,lr} - ldr r0, _0803CF84 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _0803CF88 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _0803CF8C @ =gActiveBattler - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _0803CF90 @ =gUnknown_2022BC6 - adds r4, r0 - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _0803CF98 - ldr r0, _0803CF94 @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _0803CFA0 - .align 2, 0 -_0803CF84: .4byte gBattle_BG0_X -_0803CF88: .4byte gBattle_BG0_Y -_0803CF8C: .4byte gActiveBattler -_0803CF90: .4byte gUnknown_2022BC6 -_0803CF94: .4byte gDisplayedStringBattle -_0803CF98: - ldr r0, _0803CFB4 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_0803CFA0: - ldr r1, _0803CFB8 @ =gBattlerControllerFuncs - ldr r0, _0803CFBC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803CFC0 @ =CompleteOnInactiveTextPrinter_5 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803CFB4: .4byte gDisplayedStringBattle -_0803CFB8: .4byte gBattlerControllerFuncs -_0803CFBC: .4byte gActiveBattler -_0803CFC0: .4byte CompleteOnInactiveTextPrinter_5 - thumb_func_end sub_803CF50 - - thumb_func_start sub_803CFC4 -sub_803CFC4: @ 803CFC4 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CFC4 - - thumb_func_start sub_803CFD0 -sub_803CFD0: @ 803CFD0 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CFD0 - - thumb_func_start sub_803CFDC -sub_803CFDC: @ 803CFDC - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CFDC - - thumb_func_start sub_803CFE8 -sub_803CFE8: @ 803CFE8 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CFE8 - - thumb_func_start sub_803CFF4 -sub_803CFF4: @ 803CFF4 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803CFF4 - - thumb_func_start sub_803D000 -sub_803D000: @ 803D000 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D000 - - thumb_func_start sub_803D00C -sub_803D00C: @ 803D00C - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D00C - - thumb_func_start sub_803D018 -sub_803D018: @ 803D018 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _0803D090 @ =gBattleBufferA - ldr r0, _0803D094 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _0803D098 @ =0x00007fff - cmp r7, r0 - beq _0803D0A8 - ldr r6, _0803D09C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _0803D0A0 @ =gEnemyParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _0803D0A4 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _0803D0D2 - .align 2, 0 -_0803D090: .4byte gBattleBufferA -_0803D094: .4byte gActiveBattler -_0803D098: .4byte 0x00007fff -_0803D09C: .4byte gBattlerPartyIndexes -_0803D0A0: .4byte gEnemyParty -_0803D0A4: .4byte gHealthboxSpriteIds -_0803D0A8: - ldr r1, _0803D0F0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803D0F4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _0803D0F8 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct -_0803D0D2: - ldr r1, _0803D0FC @ =gBattlerControllerFuncs - ldr r0, _0803D100 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D104 @ =CompleteOnHealthbarDone_4 - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803D0F0: .4byte gBattlerPartyIndexes -_0803D0F4: .4byte gEnemyParty -_0803D0F8: .4byte gHealthboxSpriteIds -_0803D0FC: .4byte gBattlerControllerFuncs -_0803D100: .4byte gActiveBattler -_0803D104: .4byte CompleteOnHealthbarDone_4 - thumb_func_end sub_803D018 - - thumb_func_start sub_803D108 -sub_803D108: @ 803D108 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D108 - - thumb_func_start sub_803D114 -sub_803D114: @ 803D114 - push {r4,lr} - ldr r4, _0803D170 @ =gActiveBattler - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _0803D168 - ldr r0, _0803D174 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _0803D178 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _0803D17C @ =gEnemyParty - adds r1, r2 - movs r2, 0x9 - bl UpdateHealthboxAttribute - ldrb r2, [r4] - ldr r0, _0803D180 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _0803D184 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D188 @ =CompleteOnFinishedStatusAnimation_5 - str r1, [r0] -_0803D168: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D170: .4byte gActiveBattler -_0803D174: .4byte gHealthboxSpriteIds -_0803D178: .4byte gBattlerPartyIndexes -_0803D17C: .4byte gEnemyParty -_0803D180: .4byte gBattleSpritesDataPtr -_0803D184: .4byte gBattlerControllerFuncs -_0803D188: .4byte CompleteOnFinishedStatusAnimation_5 - thumb_func_end sub_803D114 - - thumb_func_start sub_803D18C -sub_803D18C: @ 803D18C - push {r4,r5,lr} - ldr r5, _0803D1E4 @ =gActiveBattler - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _0803D1DC - ldr r4, _0803D1E8 @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl InitAndLaunchChosenStatusAnimation - ldr r1, _0803D1EC @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D1F0 @ =CompleteOnFinishedStatusAnimation_5 - str r1, [r0] -_0803D1DC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803D1E4: .4byte gActiveBattler -_0803D1E8: .4byte gBattleBufferA -_0803D1EC: .4byte gBattlerControllerFuncs -_0803D1F0: .4byte CompleteOnFinishedStatusAnimation_5 - thumb_func_end sub_803D18C - - thumb_func_start sub_803D1F4 -sub_803D1F4: @ 803D1F4 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D1F4 - - thumb_func_start sub_803D200 -sub_803D200: @ 803D200 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D200 - - thumb_func_start sub_803D20C -sub_803D20C: @ 803D20C - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D20C - - thumb_func_start sub_803D218 -sub_803D218: @ 803D218 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D218 - - thumb_func_start sub_803D224 -sub_803D224: @ 803D224 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D224 - - thumb_func_start sub_803D230 -sub_803D230: @ 803D230 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D230 - - thumb_func_start sub_803D23C -sub_803D23C: @ 803D23C - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D23C - - thumb_func_start sub_803D248 -sub_803D248: @ 803D248 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D248 - - thumb_func_start sub_803D254 -sub_803D254: @ 803D254 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D254 - - thumb_func_start RecordedOpponentHandleCmd37 -RecordedOpponentHandleCmd37: @ 803D260 - push {lr} - ldr r2, _0803D278 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D278: .4byte gUnknown_2022870 - thumb_func_end RecordedOpponentHandleCmd37 - - thumb_func_start RecordedOpponentHandleCmd38 -RecordedOpponentHandleCmd38: @ 803D27C - push {lr} - ldr r3, _0803D2A8 @ =gUnknown_2022870 - ldr r1, _0803D2AC @ =gBattleBufferA - ldr r0, _0803D2B0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D2A8: .4byte gUnknown_2022870 -_0803D2AC: .4byte gBattleBufferA -_0803D2B0: .4byte gActiveBattler - thumb_func_end RecordedOpponentHandleCmd38 - - thumb_func_start RecordedOpponentHandleCmd39 -RecordedOpponentHandleCmd39: @ 803D2B4 - push {lr} - ldr r2, _0803D2C8 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D2C8: .4byte gUnknown_2022870 - thumb_func_end RecordedOpponentHandleCmd39 - - thumb_func_start RecordedOpponentHandleCmd40 -RecordedOpponentHandleCmd40: @ 803D2CC - push {lr} - ldr r3, _0803D2F0 @ =gUnknown_2022870 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D2F0: .4byte gUnknown_2022870 - thumb_func_end RecordedOpponentHandleCmd40 - - thumb_func_start RecordedOpponentHandleHitAnimation -RecordedOpponentHandleHitAnimation: @ 803D2F4 - push {r4,lr} - ldr r3, _0803D31C @ =gSprites - ldr r2, _0803D320 @ =gBattlerSpriteIds - ldr r4, _0803D324 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _0803D328 - bl RecordedOpponentBufferExecCompleted - b _0803D352 - .align 2, 0 -_0803D31C: .4byte gSprites -_0803D320: .4byte gBattlerSpriteIds -_0803D324: .4byte gActiveBattler -_0803D328: - ldr r1, _0803D358 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _0803D35C @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D360 @ =DoHitAnimBlinkSpriteEffect_4 - str r1, [r0] -_0803D352: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D358: .4byte gDoingBattleAnim -_0803D35C: .4byte gBattlerControllerFuncs -_0803D360: .4byte DoHitAnimBlinkSpriteEffect_4 - thumb_func_end RecordedOpponentHandleHitAnimation - - thumb_func_start sub_803D364 -sub_803D364: @ 803D364 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D364 - - thumb_func_start RecordedOpponentHandlePlaySE -RecordedOpponentHandlePlaySE: @ 803D370 - push {r4,lr} - ldr r4, _0803D3AC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _0803D384 - movs r3, 0xC0 -_0803D384: - ldr r2, _0803D3B0 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl RecordedOpponentBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D3AC: .4byte gActiveBattler -_0803D3B0: .4byte gBattleBufferA - thumb_func_end RecordedOpponentHandlePlaySE - - thumb_func_start LinkOpponentHandlePlayFanfare -LinkOpponentHandlePlayFanfare: @ 803D3B4 - push {lr} - ldr r2, _0803D3DC @ =gBattleBufferA - ldr r0, _0803D3E0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D3DC: .4byte gBattleBufferA -_0803D3E0: .4byte gActiveBattler - thumb_func_end LinkOpponentHandlePlayFanfare - - thumb_func_start RecordedOpponentHandleFaintingCry -RecordedOpponentHandleFaintingCry: @ 803D3E4 - push {lr} - ldr r1, _0803D414 @ =gBattlerPartyIndexes - ldr r0, _0803D418 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803D41C @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - movs r2, 0x5 - bl PlayCry3 - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D414: .4byte gBattlerPartyIndexes -_0803D418: .4byte gActiveBattler -_0803D41C: .4byte gEnemyParty - thumb_func_end RecordedOpponentHandleFaintingCry - - thumb_func_start RecordedOpponentHandleIntroSlide -RecordedOpponentHandleIntroSlide: @ 803D420 - push {lr} - ldr r1, _0803D448 @ =gBattleBufferA - ldr r0, _0803D44C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _0803D450 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D448: .4byte gBattleBufferA -_0803D44C: .4byte gActiveBattler -_0803D450: .4byte gIntroSlideFlags - thumb_func_end RecordedOpponentHandleIntroSlide - - thumb_func_start sub_803D454 -sub_803D454: @ 803D454 - push {r4-r6,lr} - ldr r5, _0803D534 @ =gBattlerSpriteIds - ldr r6, _0803D538 @ =gActiveBattler - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0803D53C @ =gSprites - adds r0, r4 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803D540 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0803D544 @ =sub_803D648 - bl StoreSpriteCallbackInData6 - ldr r0, _0803D548 @ =sub_803D564 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _0803D54C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r6] - strh r0, [r1, 0x8] - ldr r3, _0803D550 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803D516 - ldr r0, _0803D554 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _0803D558 @ =Task_HidePartyStatusSummary - str r1, [r0] -_0803D516: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0803D55C @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D560 @ =nullsub_19 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803D534: .4byte gBattlerSpriteIds -_0803D538: .4byte gActiveBattler -_0803D53C: .4byte gSprites -_0803D540: .4byte StartAnimLinearTranslation -_0803D544: .4byte sub_803D648 -_0803D548: .4byte sub_803D564 -_0803D54C: .4byte gTasks -_0803D550: .4byte gBattleSpritesDataPtr -_0803D554: .4byte gBattlerStatusSummaryTaskId -_0803D558: .4byte Task_HidePartyStatusSummary -_0803D55C: .4byte gBattlerControllerFuncs -_0803D560: .4byte nullsub_19 - thumb_func_end sub_803D454 - - thumb_func_start sub_803D564 -sub_803D564: @ 803D564 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r7, _0803D5BC @ =gActiveBattler - ldrb r0, [r7] - mov r9, r0 - ldr r1, _0803D5C0 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803D59E - ldr r0, _0803D5C4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803D5D0 -_0803D59E: - ldr r0, _0803D5C8 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _0803D5CC @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_803C550 - b _0803D610 - .align 2, 0 -_0803D5BC: .4byte gActiveBattler -_0803D5C0: .4byte gTasks -_0803D5C4: .4byte gBattleTypeFlags -_0803D5C8: .4byte gBattleBufferA -_0803D5CC: .4byte gBattlerPartyIndexes -_0803D5D0: - ldr r4, _0803D634 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r6, _0803D638 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_803C550 - ldrb r0, [r7] - movs r5, 0x2 - eors r0, r5 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_803C550 - ldrb r0, [r7] - eors r0, r5 - strb r0, [r7] -_0803D610: - ldr r1, _0803D63C @ =gBattlerControllerFuncs - ldr r2, _0803D640 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D644 @ =sub_803A9CC - str r1, [r0] - mov r0, r9 - strb r0, [r2] - mov r0, r8 - bl DestroyTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803D634: .4byte gBattleBufferA -_0803D638: .4byte gBattlerPartyIndexes -_0803D63C: .4byte gBattlerControllerFuncs -_0803D640: .4byte gActiveBattler -_0803D644: .4byte sub_803A9CC - thumb_func_end sub_803D564 - - thumb_func_start sub_803D648 -sub_803D648: @ 803D648 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x6] - bl FreeTrainerFrontPicPaletteAndTile - ldrh r0, [r4, 0x38] - ldr r1, _0803D674 @ =0x000003ff - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, _0803D678 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D674: .4byte 0x000003ff -_0803D678: .4byte 0xfffffc00 - thumb_func_end sub_803D648 - - thumb_func_start RecordedOpponentHandleDrawPartyStatusSummary -RecordedOpponentHandleDrawPartyStatusSummary: @ 803D67C - push {r4-r7,lr} - ldr r1, _0803D6A4 @ =gBattleBufferA - ldr r0, _0803D6A8 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803D6AC - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0803D6AC - bl RecordedOpponentBufferExecCompleted - b _0803D776 - .align 2, 0 -_0803D6A4: .4byte gBattleBufferA -_0803D6A8: .4byte gActiveBattler -_0803D6AC: - ldr r4, _0803D704 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _0803D708 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldr r1, _0803D70C @ =gBattleBufferA - ldrb r2, [r3] - lsls r0, r2, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r3, 0 - cmp r0, 0 - beq _0803D718 - ldr r0, [r4] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r2, [r3, 0x1] - lsls r1, r2, 26 - lsrs r0, r1, 27 - cmp r0, 0x1 - bhi _0803D710 - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - lsls r0, 1 - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x1] - b _0803D776 - .align 2, 0 -_0803D704: .4byte gBattleSpritesDataPtr -_0803D708: .4byte gActiveBattler -_0803D70C: .4byte gBattleBufferA -_0803D710: - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - strb r0, [r3, 0x1] -_0803D718: - adds r5, r7, 0 - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _0803D77C @ =gUnknown_2022BC8 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl CreatePartyStatusSummarySprites - ldr r2, _0803D780 @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - movs r3, 0 - strb r0, [r1] - ldr r6, _0803D784 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x5] - ldrb r2, [r5] - lsls r0, r2, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0803D76A - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x5D - strb r1, [r0, 0x5] -_0803D76A: - ldr r0, _0803D788 @ =gBattlerControllerFuncs - ldrb r1, [r7] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803D78C @ =sub_803D790 - str r0, [r1] -_0803D776: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803D77C: .4byte gUnknown_2022BC8 -_0803D780: .4byte gBattlerStatusSummaryTaskId -_0803D784: .4byte gBattleSpritesDataPtr -_0803D788: .4byte gBattlerControllerFuncs -_0803D78C: .4byte sub_803D790 - thumb_func_end RecordedOpponentHandleDrawPartyStatusSummary - - thumb_func_start sub_803D790 -sub_803D790: @ 803D790 - push {r4,lr} - ldr r4, _0803D7D0 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _0803D7D4 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _0803D7C8 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x5] - bl RecordedOpponentBufferExecCompleted -_0803D7C8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D7D0: .4byte gBattleSpritesDataPtr -_0803D7D4: .4byte gActiveBattler - thumb_func_end sub_803D790 - - thumb_func_start RecordedOpponentHandleCmd49 -RecordedOpponentHandleCmd49: @ 803D7D8 - push {lr} - ldr r0, _0803D814 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _0803D818 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803D80A - ldr r2, _0803D81C @ =gTasks - ldr r0, _0803D820 @ =gBattlerStatusSummaryTaskId - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _0803D824 @ =Task_HidePartyStatusSummary - str r1, [r0] -_0803D80A: - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_0803D814: .4byte gBattleSpritesDataPtr -_0803D818: .4byte gActiveBattler -_0803D81C: .4byte gTasks -_0803D820: .4byte gBattlerStatusSummaryTaskId -_0803D824: .4byte Task_HidePartyStatusSummary - thumb_func_end RecordedOpponentHandleCmd49 - - thumb_func_start sub_803D828 -sub_803D828: @ 803D828 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D828 - - thumb_func_start RecordedOpponentHandleSpriteInvisibility -RecordedOpponentHandleSpriteInvisibility: @ 803D834 - push {r4,lr} - ldr r4, _0803D884 @ =gActiveBattler - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _0803D87A - ldr r3, _0803D888 @ =gSprites - ldr r0, _0803D88C @ =gBattlerSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _0803D890 @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl CopyBattleSpriteInvisibility -_0803D87A: - bl RecordedOpponentBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803D884: .4byte gActiveBattler -_0803D888: .4byte gSprites -_0803D88C: .4byte gBattlerSpriteIds -_0803D890: .4byte gBattleBufferA - thumb_func_end RecordedOpponentHandleSpriteInvisibility - - thumb_func_start RecordedOpponentHandleBattleAnimation -RecordedOpponentHandleBattleAnimation: @ 803D894 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _0803D8D8 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _0803D8EC - ldr r5, _0803D8DC @ =gBattleBufferA - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _0803D8E0 - bl RecordedOpponentBufferExecCompleted - b _0803D8EC - .align 2, 0 -_0803D8D8: .4byte gActiveBattler -_0803D8DC: .4byte gBattleBufferA -_0803D8E0: - ldr r0, _0803D8F4 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803D8F8 @ =CompleteOnFinishedBattleAnimation_5 - str r0, [r1] -_0803D8EC: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803D8F4: .4byte gBattlerControllerFuncs -_0803D8F8: .4byte CompleteOnFinishedBattleAnimation_5 - thumb_func_end RecordedOpponentHandleBattleAnimation - - thumb_func_start sub_803D8FC -sub_803D8FC: @ 803D8FC - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D8FC - - thumb_func_start sub_803D908 -sub_803D908: @ 803D908 - push {lr} - bl RecordedOpponentBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803D908 - - thumb_func_start RecordedOpponentHandleCmd55 -RecordedOpponentHandleCmd55: @ 803D914 - push {lr} - ldr r1, _0803D930 @ =gBattleBufferA - ldr r0, _0803D934 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0x3 - bne _0803D93C - ldr r0, _0803D938 @ =gBattleOutcome - strb r2, [r0] - b _0803D944 - .align 2, 0 -_0803D930: .4byte gBattleBufferA -_0803D934: .4byte gActiveBattler -_0803D938: .4byte gBattleOutcome -_0803D93C: - ldr r0, _0803D968 @ =gBattleOutcome - movs r1, 0x3 - eors r1, r2 - strb r1, [r0] -_0803D944: - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl RecordedOpponentBufferExecCompleted - ldr r1, _0803D96C @ =gBattlerControllerFuncs - ldr r0, _0803D970 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803D974 @ =sub_802F6A8 - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0803D968: .4byte gBattleOutcome -_0803D96C: .4byte gBattlerControllerFuncs -_0803D970: .4byte gActiveBattler -_0803D974: .4byte sub_802F6A8 - thumb_func_end RecordedOpponentHandleCmd55 - - thumb_func_start nullsub_20 -nullsub_20: @ 803D978 - bx lr - thumb_func_end nullsub_20 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s index 24500abfd..ce445bbb9 100644 --- a/asm/battle_controller_link_partner.s +++ b/asm/battle_controller_link_partner.s @@ -3838,7 +3838,7 @@ sub_80D61C8: @ 80D61C8 movs r7, 0x5A _080D61E2: ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId ldr r5, _080D6244 @ =gLinkPlayers lsls r1, r0, 3 subs r1, r0 @@ -3849,7 +3849,7 @@ _080D61E2: cmp r0, 0x2 beq _080D6228 ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -3860,7 +3860,7 @@ _080D61E2: cmp r0, 0x1 beq _080D6228 ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -3872,7 +3872,7 @@ _080D61E2: _080D6228: ldr r0, _080D6240 @ =gActiveBattler ldrb r0, [r0] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId ldr r2, _080D6244 @ =gLinkPlayers lsls r1, r0, 3 subs r1, r0 @@ -3886,7 +3886,7 @@ _080D6240: .4byte gActiveBattler _080D6244: .4byte gLinkPlayers _080D6248: ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -5314,7 +5314,7 @@ sub_80D6CD4: @ 80D6CD4 lsls r0, 24 lsrs r7, r0, 24 ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId ldr r4, _080D6DF8 @ =gLinkPlayers lsls r1, r0, 3 subs r1, r0 @@ -5325,7 +5325,7 @@ sub_80D6CD4: @ 80D6CD4 cmp r0, 0x2 beq _080D6DC2 ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -5336,7 +5336,7 @@ sub_80D6CD4: @ 80D6CD4 cmp r0, 0x1 beq _080D6DC2 ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -5348,7 +5348,7 @@ sub_80D6CD4: @ 80D6CD4 _080D6DC2: ldr r0, _080D6DE0 @ =gActiveBattler ldrb r0, [r0] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId ldr r2, _080D6DF8 @ =gLinkPlayers lsls r1, r0, 3 subs r1, r0 @@ -5368,7 +5368,7 @@ _080D6DF4: .4byte 0x0000d6f9 _080D6DF8: .4byte gLinkPlayers _080D6DFC: ldrb r0, [r6] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 diff --git a/asm/battle_message.s b/asm/battle_message.s index d3a688507..bd1011f9a 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -1871,7 +1871,7 @@ _080D819C: movs r0, 0x3 _080D81AA: eors r0, r1 - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 @@ -1883,7 +1883,7 @@ _080D81BC: .4byte gLinkPlayers _080D81C0: ldr r0, _080D81D4 @ =gBattleScripting ldrb r0, [r0, 0x17] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId _080D81C8: lsls r1, r0, 3 subs r1, r0 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 3155a9a5d..4bc9cd976 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -13395,7 +13395,7 @@ _08024204: _08024228: movs r5, 0 ldrb r0, [r4] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId @@ -21517,7 +21517,7 @@ _08028336: movs r7, 0 movs r6, 0 ldrb r0, [r5] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId @@ -21662,7 +21662,7 @@ _08028458: lsrs r6, r0, 24 ldr r0, _08028490 @ =gBattlerTarget ldrb r0, [r0] - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId diff --git a/asm/pokeball.s b/asm/pokeball.s index 3bbf3568b..1d01b5c7e 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -132,7 +132,7 @@ _0804AA12: beq _0804AA60 ldr r4, _0804AA5C @ =gLinkPlayers adds r0, r6, 0 - bl GetBankMultiplayerId + bl GetBattlerMultiplayerId lsls r1, r0, 3 subs r1, r0 lsls r1, 2 diff --git a/data/data.s b/data/data.s index cc024364c..3ca955d94 100644 --- a/data/data.s +++ b/data/data.s @@ -346,11 +346,6 @@ gSpriteSheet_EnemyShadow:: @ 8250A0C gSpriteTemplate_EnemyShadow:: @ 8250A1C .incbin "baserom.gba", 0x250A1C, 0x18 - .section .rodata.8250B20 - -gUnknown_8250B20:: @ 8250B20 - .incbin "baserom.gba", 0x250B20, 0xE4 - .section .rodata.8260270 gUnknown_8260270:: @ 8260270 diff --git a/include/battle_main.h b/include/battle_main.h index f05c08df2..86de8f39a 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -68,7 +68,6 @@ void sub_8039E44(struct Sprite *sprite); void sub_8039E60(struct Sprite *sprite); void sub_8039E84(struct Sprite *sprite); void sub_8039E9C(struct Sprite *sprite); -void nullsub_20(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); diff --git a/include/pokemon.h b/include/pokemon.h index ae966feb2..bf30766a0 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -624,7 +624,7 @@ void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); bool8 sub_80435E0(void); bool8 GetLinkTrainerFlankId(u8 linkPlayerId); -s32 GetBankMultiplayerId(u16 a1); +s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); diff --git a/ld_script.txt b/ld_script.txt index 019190be4..aa72bbb9e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -74,7 +74,7 @@ SECTIONS { src/battle_gfx_sfx_util.o(.text); src/battle_controller_opponent.o(.text); src/battle_ai_switch_items.o(.text); - asm/battle_controller_link_opponent.o(.text); + src/battle_controller_link_opponent.o(.text); src/pokemon.o(.text); src/trig.o(.text); src/random.o(.text); @@ -385,7 +385,7 @@ SECTIONS { src/battle_controller_player.o(.rodata); data/data.o(.rodata.825098C); src/battle_controller_opponent.o(.rodata); - data/data.o(.rodata.8250B20); + src/battle_controller_link_opponent.o(.rodata); src/pokemon.o(.rodata); src/trig.o(.rodata); src/util.o(.rodata); diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c new file mode 100644 index 000000000..72d3a42fc --- /dev/null +++ b/src/battle_controller_link_opponent.c @@ -0,0 +1,1686 @@ +#include "global.h" +#include "bg.h" +#include "data2.h" +#include "link.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "pokeball.h" +#include "pokemon.h" +#include "reshow_battle_screen.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" +#include "window.h" +#include "battle.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "constants/battle_anim.h" +#include "constants/songs.h" +#include "constants/facility_trainer_classes.h" + +static void LinkOpponentHandleGetMonData(void); +static void LinkOpponentHandleGetRawMonData(void); +static void LinkOpponentHandleSetMonData(void); +static void LinkOpponentHandleSetRawMonData(void); +static void LinkOpponentHandleLoadMonSprite(void); +static void LinkOpponentHandleSwitchInAnim(void); +static void LinkOpponentHandleReturnMonToBall(void); +static void LinkOpponentHandleDrawTrainerPic(void); +static void LinkOpponentHandleTrainerSlide(void); +static void LinkOpponentHandleTrainerSlideBack(void); +static void LinkOpponentHandleFaintAnimation(void); +static void LinkOpponentHandlePaletteFade(void); +static void LinkOpponentHandleSuccessBallThrowAnim(void); +static void LinkOpponentHandleBallThrowAnim(void); +static void LinkOpponentHandlePause(void); +static void LinkOpponentHandleMoveAnimation(void); +static void LinkOpponentHandlePrintString(void); +static void LinkOpponentHandlePrintSelectionString(void); +static void LinkOpponentHandleChooseAction(void); +static void LinkOpponentHandleUnknownYesNoBox(void); +static void LinkOpponentHandleChooseMove(void); +static void LinkOpponentHandleChooseItem(void); +static void LinkOpponentHandleChoosePokemon(void); +static void LinkOpponentHandleCmd23(void); +static void LinkOpponentHandleHealthBarUpdate(void); +static void LinkOpponentHandleExpUpdate(void); +static void LinkOpponentHandleStatusIconUpdate(void); +static void LinkOpponentHandleStatusAnimation(void); +static void LinkOpponentHandleStatusXor(void); +static void LinkOpponentHandleDataTransfer(void); +static void LinkOpponentHandleDMA3Transfer(void); +static void LinkOpponentHandlePlayBGM(void); +static void LinkOpponentHandleCmd32(void); +static void LinkOpponentHandleTwoReturnValues(void); +static void LinkOpponentHandleChosenMonReturnValue(void); +static void LinkOpponentHandleOneReturnValue(void); +static void LinkOpponentHandleOneReturnValue_Duplicate(void); +static void LinkOpponentHandleCmd37(void); +static void LinkOpponentHandleCmd38(void); +static void LinkOpponentHandleCmd39(void); +static void LinkOpponentHandleCmd40(void); +static void LinkOpponentHandleHitAnimation(void); +static void LinkOpponentHandleCmd42(void); +static void LinkOpponentHandlePlaySE(void); +static void LinkOpponentHandlePlayFanfare(void); +static void LinkOpponentHandleFaintingCry(void); +static void LinkOpponentHandleIntroSlide(void); +static void LinkOpponentHandleIntroTrainerBallThrow(void); +static void LinkOpponentHandleDrawPartyStatusSummary(void); +static void LinkOpponentHandleHidePartyStatusSummary(void); +static void LinkOpponentHandleEndBounceEffect(void); +static void LinkOpponentHandleSpriteInvisibility(void); +static void LinkOpponentHandleBattleAnimation(void); +static void LinkOpponentHandleLinkStandbyMsg(void); +static void LinkOpponentHandleResetActionMoveSelection(void); +static void LinkOpponentHandleCmd55(void); +static void LinkOpponentCmdEnd(void); + +static void LinkOpponentBufferRunCommand(void); +static void LinkOpponentBufferExecCompleted(void); +static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst); +static void SetLinkOpponentMonData(u8 monId); +static void DoSwitchOutAnimation(void); +static void LinkOpponentDoMoveAnimation(void); +static void sub_803AEDC(void); +static void sub_803C550(u8 battlerId, bool8 dontClearSubstituteBit); +static void sub_803D564(u8 taskId); +static void sub_803D648(struct Sprite *sprite); +static void sub_803D790(void); + +static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + LinkOpponentHandleGetMonData, + LinkOpponentHandleGetRawMonData, + LinkOpponentHandleSetMonData, + LinkOpponentHandleSetRawMonData, + LinkOpponentHandleLoadMonSprite, + LinkOpponentHandleSwitchInAnim, + LinkOpponentHandleReturnMonToBall, + LinkOpponentHandleDrawTrainerPic, + LinkOpponentHandleTrainerSlide, + LinkOpponentHandleTrainerSlideBack, + LinkOpponentHandleFaintAnimation, + LinkOpponentHandlePaletteFade, + LinkOpponentHandleSuccessBallThrowAnim, + LinkOpponentHandleBallThrowAnim, + LinkOpponentHandlePause, + LinkOpponentHandleMoveAnimation, + LinkOpponentHandlePrintString, + LinkOpponentHandlePrintSelectionString, + LinkOpponentHandleChooseAction, + LinkOpponentHandleUnknownYesNoBox, + LinkOpponentHandleChooseMove, + LinkOpponentHandleChooseItem, + LinkOpponentHandleChoosePokemon, + LinkOpponentHandleCmd23, + LinkOpponentHandleHealthBarUpdate, + LinkOpponentHandleExpUpdate, + LinkOpponentHandleStatusIconUpdate, + LinkOpponentHandleStatusAnimation, + LinkOpponentHandleStatusXor, + LinkOpponentHandleDataTransfer, + LinkOpponentHandleDMA3Transfer, + LinkOpponentHandlePlayBGM, + LinkOpponentHandleCmd32, + LinkOpponentHandleTwoReturnValues, + LinkOpponentHandleChosenMonReturnValue, + LinkOpponentHandleOneReturnValue, + LinkOpponentHandleOneReturnValue_Duplicate, + LinkOpponentHandleCmd37, + LinkOpponentHandleCmd38, + LinkOpponentHandleCmd39, + LinkOpponentHandleCmd40, + LinkOpponentHandleHitAnimation, + LinkOpponentHandleCmd42, + LinkOpponentHandlePlaySE, + LinkOpponentHandlePlayFanfare, + LinkOpponentHandleFaintingCry, + LinkOpponentHandleIntroSlide, + LinkOpponentHandleIntroTrainerBallThrow, + LinkOpponentHandleDrawPartyStatusSummary, + LinkOpponentHandleHidePartyStatusSummary, + LinkOpponentHandleEndBounceEffect, + LinkOpponentHandleSpriteInvisibility, + LinkOpponentHandleBattleAnimation, + LinkOpponentHandleLinkStandbyMsg, + LinkOpponentHandleResetActionMoveSelection, + LinkOpponentHandleCmd55, + LinkOpponentCmdEnd +}; + + +static void nullsub_19(void) +{ +} + +void SetControllerToLinkOpponent(void) +{ + gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand; +} + +static void LinkOpponentBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkOpponentBufferCommands)) + sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + LinkOpponentBufferExecCompleted(); + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + LinkOpponentBufferExecCompleted(); +} + +static void sub_803A70C(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + FreeTrainerFrontPicPaletteAndTile(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5]; + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + LinkOpponentBufferExecCompleted(); + } +} + +static void sub_803A79C(void) +{ + if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + LinkOpponentBufferExecCompleted(); + } +} + +static void sub_803A7E4(void) +{ + bool8 var = FALSE; + + if (!IsDoubleBattle() || ((IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))) + { + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + var = TRUE; + } + else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == gSprites[gHealthboxSpriteIds[gActiveBattler]].callback) + { + var = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + var = FALSE; + if (var) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 + || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + return; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) + m4aMPlayContinue(&gMPlayInfo_BGM); + } + else + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3; + gBattlerControllerFuncs[gActiveBattler] = sub_803A79C; + } +} + +static void sub_803A9CC(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == 3) + { + if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 1) + return; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + } + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_803A7E4; + } +} + +static void sub_803AC14(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE + && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + { + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + } + else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + LinkOpponentBufferExecCompleted(); + } + } +} + +static void CompleteOnHealthbarDone(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + else + LinkOpponentBufferExecCompleted(); +} + +static void sub_803AD20(void) +{ + if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse) + { + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkOpponentBufferExecCompleted(); + } +} + +static void sub_803AD64(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + HideBattlerShadowSprite(gActiveBattler); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkOpponentBufferExecCompleted(); + } +} + +static void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + LinkOpponentBufferExecCompleted(); +} + +static void DoHitAnimBlinkSpriteEffect(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + LinkOpponentBufferExecCompleted(); + } + else + { + if (!(gSprites[spriteId].data[1] % 4)) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +static void sub_803AE6C(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattlerControllerFuncs[gActiveBattler] = sub_803AEDC; + } +} + +static void sub_803AEDC(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs()) + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); + LinkOpponentBufferExecCompleted(); + } +} + +static void sub_803AF28(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + CopyBattleSpriteInvisibility(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_803AE6C; + } +} + +static void sub_803AFFC(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) + sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + + if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattlerControllerFuncs[gActiveBattler] = sub_803AF28; + } +} + +static void CompleteOnFinishedStatusAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + LinkOpponentBufferExecCompleted(); +} + +static void CompleteOnFinishedBattleAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +static void LinkOpponentHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (!gBattleBufferA[gActiveBattler][2]) + { + size += CopyLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyLinkOpponentMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + LinkOpponentBufferExecCompleted(); +} + +static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gEnemyParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gEnemyParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gEnemyParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gEnemyParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gEnemyParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gEnemyParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + src = (u8*)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gEnemyParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +static void LinkOpponentHandleGetRawMonData(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (!gBattleBufferA[gActiveBattler][2]) + { + SetLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetLinkOpponentMonData(i); + monToCheck >>= 1; + } + } + LinkOpponentBufferExecCompleted(); +} + +static void SetLinkOpponentMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gEnemyParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } +} + +static void LinkOpponentHandleSetRawMonData(void) +{ + u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = gBattleBufferA[gActiveBattler][3 + i]; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleLoadMonSprite(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(gActiveBattler, 2), + GetBattlerSpriteDefault_Y(gActiveBattler), + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattlerControllerFuncs[gActiveBattler] = sub_803AC14; +} + +static void LinkOpponentHandleSwitchInAnim(void) +{ + gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; + sub_803C550(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerControllerFuncs[gActiveBattler] = sub_803AFFC; +} + +static void sub_803C550(u8 battlerId, bool8 dontClearSubstituteBit) +{ + u16 species; + + ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit); + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT); +} + +static void LinkOpponentHandleReturnMonToBall(void) +{ + if (!gBattleBufferA[gActiveBattler][1]) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + HideBattlerShadowSprite(gActiveBattler); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkOpponentBufferExecCompleted(); + } +} + +static void DoSwitchOutAnimation(void) +{ + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_803AD64; + } + break; + } +} + +static void LinkOpponentHandleDrawTrainerPic(void) +{ + s16 xPos; + u32 trainerPicId; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBattlerPosition(gActiveBattler) & BIT_FLANK) // second mon + xPos = 152; + else // first mon + xPos = 200; + if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD) + { + if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != MALE) + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_5]; + else + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_2]; + } + else if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != MALE) + { + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_4]; + } + else + { + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_3]; + } + } + else + { + xPos = 176; + if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + { + trainerPicId = sub_80447AC(); + } + else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_EMERALD) + { + if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE) + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_5]; + else + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_2]; + } + else if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE) + { + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_4]; + } + else + { + trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_3]; + } + } + DecompressTrainerFrontPic(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + xPos, + (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void LinkOpponentHandleTrainerSlide(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleTrainerSlideBack(void) +{ + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); + gBattlerControllerFuncs[gActiveBattler] = sub_803A70C; +} + +static void LinkOpponentHandleFaintAnimation(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; + gBattlerControllerFuncs[gActiveBattler] = sub_803AD20; + } + } +} + +static void LinkOpponentHandlePaletteFade(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleSuccessBallThrowAnim(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleBallThrowAnim(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandlePause(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE + { + LinkOpponentBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation; + } + } +} + +static void LinkOpponentDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + u8 multihit = gBattleBufferA[gActiveBattler][11]; + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + { + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0; + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + LinkOpponentBufferExecCompleted(); + } + break; + } +} + +static void LinkOpponentHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; +} + +static void LinkOpponentHandlePrintSelectionString(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleChooseAction(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleUnknownYesNoBox(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleChooseMove(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleChooseItem(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleChoosePokemon(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd23(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void LinkOpponentHandleExpUpdate(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 battlerId; + + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); + battlerId = gActiveBattler; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void LinkOpponentHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24)); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void LinkOpponentHandleStatusXor(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleDataTransfer(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleDMA3Transfer(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandlePlayBGM(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd32(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleTwoReturnValues(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleChosenMonReturnValue(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleOneReturnValue(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleOneReturnValue_Duplicate(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd37(void) +{ + gUnknown_2022870.field_0 = 0; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd38(void) +{ + gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1]; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd39(void) +{ + gUnknown_2022870.flag_x80 = 0; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd40(void) +{ + gUnknown_2022870.flag_x80 ^= 1; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + LinkOpponentBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void LinkOpponentHandleCmd42(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandlePlaySE(void) +{ + s8 pan; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan); + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleFaintingCry(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry3(species, 25, 5); + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum, taskId; + + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_803D648); + taskId = CreateTask(sub_803D564, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_19; +} + +static void sub_803D564(u8 taskId) +{ + u8 savedActiveBank = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_803C550(gActiveBattler, FALSE); + } + else + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_803C550(gActiveBattler, FALSE); + gActiveBattler = BATTLE_PARTNER(gActiveBattler); + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_803C550(gActiveBattler, FALSE); + gActiveBattler = BATTLE_PARTNER(gActiveBattler); + } + gBattlerControllerFuncs[gActiveBattler] = sub_803A9CC; + gActiveBattler = savedActiveBank; + DestroyTask(taskId); +} + +static void sub_803D648(struct Sprite *sprite) +{ + FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam); + sprite->oam.tileNum = sprite->data[5]; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +static void LinkOpponentHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + LinkOpponentBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1; + + if (gBattleBufferA[gActiveBattler][2]) + { + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2) + { + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E; + return; + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0; + } + } + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + if (gBattleBufferA[gActiveBattler][2]) + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D; + gBattlerControllerFuncs[gActiveBattler] = sub_803D790; + } +} + +static void sub_803D790(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + LinkOpponentBufferExecCompleted(); + } +} + +static void LinkOpponentHandleHidePartyStatusSummary(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleEndBounceEffect(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleSpriteInvisibility(void) +{ + if (IsBattlerSpritePresent(gActiveBattler)) + { + gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1]; + CopyBattleSpriteInvisibility(gActiveBattler); + } + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + LinkOpponentBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; + } +} + +static void LinkOpponentHandleLinkStandbyMsg(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleResetActionMoveSelection(void) +{ + LinkOpponentBufferExecCompleted(); +} + +static void LinkOpponentHandleCmd55(void) +{ + if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW) + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + else + gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + LinkOpponentBufferExecCompleted(); + gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8; +} + +static void LinkOpponentCmdEnd(void) +{ +} diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index c925e3af1..e5288194b 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -178,7 +178,7 @@ static void OpponentBufferRunCommand(void) { if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) { - if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOpponentBufferCommands)) + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sOpponentBufferCommands)) sOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]](); else OpponentBufferExecCompleted(); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index cdf72e4e1..0b1257e1a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -211,7 +211,7 @@ static void PlayerBufferRunCommand(void) { if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) { - if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sPlayerBufferCommands)) + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sPlayerBufferCommands)) sPlayerBufferCommands[gBattleBufferA[gActiveBattler][0]](); else PlayerBufferExecCompleted(); @@ -329,7 +329,7 @@ static void HandleInputChooseTarget(void) s32 i; u8 identities[4]; - memcpy(identities, sTargetIdentities, ARRAY_COUNT(sTargetIdentities)); + memcpy(identities, sTargetIdentities, NELEMS(sTargetIdentities)); DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1); i = 0; if (gBattlersCount != 0) diff --git a/src/battle_util.c b/src/battle_util.c index cf91b122f..83d24f5e1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1482,7 +1482,7 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - playerId = GetBankMultiplayerId(battler); + playerId = GetBattlerMultiplayerId(battler); if (GetBattlerSide(battler) == B_SIDE_PLAYER) party = gPlayerParty; else diff --git a/src/pokemon.c b/src/pokemon.c index 94cf8f607..d840efa91 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6482,7 +6482,7 @@ bool8 GetLinkTrainerFlankId(u8 linkPlayerId) return retVal; } -s32 GetBankMultiplayerId(u16 a1) +s32 GetBattlerMultiplayerId(u16 a1) { s32 id; for (id = 0; id < MAX_LINK_PLAYERS; id++) @@ -7133,7 +7133,7 @@ static bool8 IsShinyOtIdPersonality(u32 otId, u32 personality) u8 *GetTrainerPartnerName(void) { u8 id = GetMultiplayerId(); - return gLinkPlayers[GetBankMultiplayerId(gLinkPlayers[id].id ^ 2)].name; + return gLinkPlayers[GetBattlerMultiplayerId(gLinkPlayers[id].id ^ 2)].name; } u8 GetPlayerPartyHighestLevel(void) From 23b2a0cc9f673363d4a6dc3d0c9e26fe50cce0c1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 23 Aug 2019 02:32:15 +0800 Subject: [PATCH 020/100] battle_controller_link_partner --- asm/battle_controller_link_partner.s | 5929 ------------------------- data/data_83F5738.s | 6 +- include/{data2.h => data.h} | 6 +- ld_script.txt | 5 +- src/battle_controller_link_opponent.c | 4 +- src/battle_controller_link_partner.c | 1599 +++++++ src/battle_controller_opponent.c | 2 +- src/battle_controller_player.c | 2 +- src/battle_controller_safari.c | 2 +- src/battle_gfx_sfx_util.c | 2 +- src/item_pc.c | 2 +- src/pokemon.c | 4 +- src/quest_log.c | 2 +- src/reshow_battle_screen.c | 2 +- src/scrcmd.c | 2 +- src/tm_case.c | 2 +- 16 files changed, 1621 insertions(+), 5950 deletions(-) delete mode 100644 asm/battle_controller_link_partner.s rename include/{data2.h => data.h} (97%) create mode 100644 src/battle_controller_link_partner.c diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s deleted file mode 100644 index ce445bbb9..000000000 --- a/asm/battle_controller_link_partner.s +++ /dev/null @@ -1,5929 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_77 -nullsub_77: @ 80D4200 - bx lr - thumb_func_end nullsub_77 - - thumb_func_start SetControllerToLinkPartner -SetControllerToLinkPartner: @ 80D4204 - ldr r1, _080D4214 @ =gBattlerControllerFuncs - ldr r0, _080D4218 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D421C @ =LinkPartnerBufferRunCommand - str r1, [r0] - bx lr - .align 2, 0 -_080D4214: .4byte gBattlerControllerFuncs -_080D4218: .4byte gActiveBattler -_080D421C: .4byte LinkPartnerBufferRunCommand - thumb_func_end SetControllerToLinkPartner - - thumb_func_start LinkPartnerBufferRunCommand -LinkPartnerBufferRunCommand: @ 80D4220 - push {lr} - ldr r2, _080D4254 @ =gBattleControllerExecFlags - ldr r1, _080D4258 @ =gBitTable - ldr r0, _080D425C @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080D426C - ldr r0, _080D4260 @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _080D4268 - ldr r0, _080D4264 @ =gUnknown_83FB134 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _080D426C - .align 2, 0 -_080D4254: .4byte gBattleControllerExecFlags -_080D4258: .4byte gBitTable -_080D425C: .4byte gActiveBattler -_080D4260: .4byte gBattleBufferA -_080D4264: .4byte gUnknown_83FB134 -_080D4268: - bl sub_80D49E8 -_080D426C: - pop {r0} - bx r0 - thumb_func_end LinkPartnerBufferRunCommand - - thumb_func_start sub_80D4270 -sub_80D4270: @ 80D4270 - push {lr} - ldr r2, _080D4298 @ =gSprites - ldr r1, _080D429C @ =gBattlerSpriteIds - ldr r0, _080D42A0 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080D42A4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080D4294 - bl sub_80D49E8 -_080D4294: - pop {r0} - bx r0 - .align 2, 0 -_080D4298: .4byte gSprites -_080D429C: .4byte gBattlerSpriteIds -_080D42A0: .4byte gActiveBattler -_080D42A4: .4byte SpriteCallbackDummy - thumb_func_end sub_80D4270 - - thumb_func_start sub_80D42A8 -sub_80D42A8: @ 80D42A8 - push {r4-r6,lr} - ldr r6, _080D4300 @ =gSprites - ldr r5, _080D4304 @ =gBattlerSpriteIds - ldr r4, _080D4308 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, _080D430C @ =SpriteCallbackDummy - cmp r1, r0 - bne _080D42F8 - movs r0, 0 - bl nullsub_16 - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl FreeSpriteOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - bl sub_80D49E8 -_080D42F8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4300: .4byte gSprites -_080D4304: .4byte gBattlerSpriteIds -_080D4308: .4byte gActiveBattler -_080D430C: .4byte SpriteCallbackDummy - thumb_func_end sub_80D42A8 - - thumb_func_start sub_80D4310 -sub_80D4310: @ 80D4310 - push {r4,lr} - ldr r4, _080D4350 @ =gBattleSpritesDataPtr - ldr r1, [r4] - ldr r3, _080D4354 @ =gActiveBattler - ldrb r0, [r3] - ldr r2, [r1, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080D4348 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - bl sub_80D49E8 -_080D4348: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4350: .4byte gBattleSpritesDataPtr -_080D4354: .4byte gActiveBattler - thumb_func_end sub_80D4310 - - thumb_func_start sub_80D4358 -sub_80D4358: @ 80D4358 - push {r4-r6,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080D437C - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080D43B0 - ldr r0, _080D439C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D43B0 -_080D437C: - ldr r2, _080D43A0 @ =gSprites - ldr r1, _080D43A4 @ =gHealthboxSpriteIds - ldr r0, _080D43A8 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080D43AC @ =SpriteCallbackDummy - cmp r1, r0 - bne _080D43E8 - b _080D43E6 - .align 2, 0 -_080D439C: .4byte gBattleTypeFlags -_080D43A0: .4byte gSprites -_080D43A4: .4byte gHealthboxSpriteIds -_080D43A8: .4byte gActiveBattler -_080D43AC: .4byte SpriteCallbackDummy -_080D43B0: - ldr r2, _080D4420 @ =gSprites - ldr r5, _080D4424 @ =gHealthboxSpriteIds - ldr r0, _080D4428 @ =gActiveBattler - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r2, 0 - adds r4, 0x1C - adds r0, r4 - ldr r2, [r0] - ldr r0, _080D442C @ =SpriteCallbackDummy - cmp r2, r0 - bne _080D43E8 - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - cmp r0, r2 - bne _080D43E8 -_080D43E6: - movs r6, 0x1 -_080D43E8: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _080D43F4 - movs r6, 0 -_080D43F4: - cmp r6, 0 - beq _080D441A - ldr r0, _080D4430 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, _080D4428 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _080D4434 @ =gBattlerControllerFuncs - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D4438 @ =sub_80D4310 - str r1, [r0] -_080D441A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4420: .4byte gSprites -_080D4424: .4byte gHealthboxSpriteIds -_080D4428: .4byte gActiveBattler -_080D442C: .4byte SpriteCallbackDummy -_080D4430: .4byte gBattleSpritesDataPtr -_080D4434: .4byte gBattlerControllerFuncs -_080D4438: .4byte sub_80D4310 - thumb_func_end sub_80D4358 - - thumb_func_start sub_80D443C -sub_80D443C: @ 80D443C - push {r4-r7,lr} - ldr r0, _080D4568 @ =gBattleSpritesDataPtr - mov r12, r0 - ldr r0, [r0] - ldr r6, _080D456C @ =gActiveBattler - ldrb r2, [r6] - ldr r4, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r1, [r3] - movs r5, 0x8 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080D4460 - b _080D4562 -_080D4460: - movs r7, 0x2 - adds r1, r7, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080D4562 - ldrb r0, [r3, 0x9] - adds r0, 0x1 - strb r0, [r3, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080D4562 - mov r1, r12 - ldr r0, [r1] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x9] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080D4500 - ldr r0, _080D4570 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080D4500 - ldr r1, _080D4574 @ =gUnknown_3004FFC - ldrb r0, [r6] - eors r0, r7 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080D4578 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _080D457C @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r1, r7, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _080D4580 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080D4584 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r6] - eors r0, r7 - bl sub_804BD94 - ldrb r0, [r6] - eors r0, r7 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible -_080D4500: - ldr r1, _080D4574 @ =gUnknown_3004FFC - ldr r4, _080D456C @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080D4578 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _080D457C @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _080D4580 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080D4584 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _080D4568 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080D4588 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D458C @ =sub_80D4358 - str r1, [r0] -_080D4562: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D4568: .4byte gBattleSpritesDataPtr -_080D456C: .4byte gActiveBattler -_080D4570: .4byte gBattleTypeFlags -_080D4574: .4byte gUnknown_3004FFC -_080D4578: .4byte gSprites -_080D457C: .4byte gHealthboxSpriteIds -_080D4580: .4byte gBattlerPartyIndexes -_080D4584: .4byte gPlayerParty -_080D4588: .4byte gBattlerControllerFuncs -_080D458C: .4byte sub_80D4358 - thumb_func_end sub_80D443C - - thumb_func_start sub_80D4590 -sub_80D4590: @ 80D4590 - push {lr} - ldr r2, _080D45C4 @ =gSprites - ldr r1, _080D45C8 @ =gBattlerSpriteIds - ldr r0, _080D45CC @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - bge _080D45BE - movs r2, 0x24 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D45BE - bl sub_80D49E8 -_080D45BE: - pop {r0} - bx r0 - .align 2, 0 -_080D45C4: .4byte gSprites -_080D45C8: .4byte gBattlerSpriteIds -_080D45CC: .4byte gActiveBattler - thumb_func_end sub_80D4590 - - thumb_func_start sub_80D45D0 -sub_80D45D0: @ 80D45D0 - push {r4-r6,lr} - ldr r5, _080D4610 @ =gActiveBattler - ldrb r0, [r5] - ldr r6, _080D4614 @ =gHealthboxSpriteIds - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080D4618 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _080D4632 - .align 2, 0 -_080D4610: .4byte gActiveBattler -_080D4614: .4byte gHealthboxSpriteIds -_080D4618: - ldr r2, _080D4638 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080D463C @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl sub_80D49E8 -_080D4632: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4638: .4byte gBattlerPartyIndexes -_080D463C: .4byte gPlayerParty - thumb_func_end sub_80D45D0 - - thumb_func_start sub_80D4640 -sub_80D4640: @ 80D4640 - push {r4-r6,lr} - ldr r6, _080D4698 @ =gSprites - ldr r5, _080D469C @ =gBattlerSpriteIds - ldr r4, _080D46A0 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r6 - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - cmp r0, 0xA0 - ble _080D4690 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _080D46A4 @ =gHealthboxSpriteIds - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl sub_80D49E8 -_080D4690: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4698: .4byte gSprites -_080D469C: .4byte gBattlerSpriteIds -_080D46A0: .4byte gActiveBattler -_080D46A4: .4byte gHealthboxSpriteIds - thumb_func_end sub_80D4640 - - thumb_func_start sub_80D46A8 -sub_80D46A8: @ 80D46A8 - push {r4-r6,lr} - ldr r0, _080D4704 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _080D4708 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080D46FC - ldr r5, _080D470C @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080D4710 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080D4714 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl sub_80D49E8 -_080D46FC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D4704: .4byte gBattleSpritesDataPtr -_080D4708: .4byte gActiveBattler -_080D470C: .4byte gBattlerSpriteIds -_080D4710: .4byte gSprites -_080D4714: .4byte gHealthboxSpriteIds - thumb_func_end sub_80D46A8 - - thumb_func_start sub_80D4718 -sub_80D4718: @ 80D4718 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080D472A - bl sub_80D49E8 -_080D472A: - pop {r0} - bx r0 - thumb_func_end sub_80D4718 - - thumb_func_start sub_80D4730 -sub_80D4730: @ 80D4730 - push {r4,lr} - ldr r1, _080D476C @ =gBattlerSpriteIds - ldr r0, _080D4770 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080D4774 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _080D477C - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _080D4778 @ =gDoingBattleAnim - strb r3, [r0] - bl sub_80D49E8 - b _080D47A6 - .align 2, 0 -_080D476C: .4byte gBattlerSpriteIds -_080D4770: .4byte gActiveBattler -_080D4774: .4byte gSprites -_080D4778: .4byte gDoingBattleAnim -_080D477C: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080D47A0 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D47A0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080D47A6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D4730 - - thumb_func_start sub_80D47AC -sub_80D47AC: @ 80D47AC - push {r4,lr} - ldr r2, _080D4800 @ =gSprites - ldr r0, _080D4804 @ =gHealthboxSpriteIds - ldr r4, _080D4808 @ =gActiveBattler - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080D480C @ =SpriteCallbackDummy - cmp r1, r0 - bne _080D47F8 - ldr r0, _080D4810 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D47EC - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_080D47EC: - ldr r0, _080D4814 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080D4818 @ =sub_80D481C - str r0, [r1] -_080D47F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4800: .4byte gSprites -_080D4804: .4byte gHealthboxSpriteIds -_080D4808: .4byte gActiveBattler -_080D480C: .4byte SpriteCallbackDummy -_080D4810: .4byte gBattleSpritesDataPtr -_080D4814: .4byte gBattlerControllerFuncs -_080D4818: .4byte sub_80D481C - thumb_func_end sub_80D47AC - - thumb_func_start sub_80D481C -sub_80D481C: @ 80D481C - push {lr} - ldr r0, _080D4844 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080D4848 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080D483E - bl sub_80D49E8 -_080D483E: - pop {r0} - bx r0 - .align 2, 0 -_080D4844: .4byte gBattleSpritesDataPtr -_080D4848: .4byte gActiveBattler - thumb_func_end sub_80D481C - - thumb_func_start sub_80D484C -sub_80D484C: @ 80D484C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r3, _080D4918 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldr r7, _080D491C @ =gActiveBattler - ldrb r1, [r7] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D490E - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldrb r2, [r7] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _080D4920 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _080D4924 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r0, _080D4928 @ =gBattlerPartyIndexes - mov r8, r0 - ldrb r1, [r7] - lsls r0, r1, 1 - add r0, r8 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080D492C @ =gPlayerParty - adds r0, r5 - bl HandleLowHpMusicChange - ldr r1, _080D4930 @ =gBattlerSpriteIds - ldrb r0, [r7] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080D4934 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - ldr r4, _080D4938 @ =gHealthboxSpriteIds - ldrb r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - lsls r1, 1 - add r1, r8 - ldrh r1, [r1] - muls r1, r6 - adds r1, r5 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r7] - bl sub_804BD94 - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldrb r0, [r7] - bl CopyBattleSpriteInvisibility - ldr r1, _080D493C @ =gBattlerControllerFuncs - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D4940 @ =sub_80D47AC - str r1, [r0] -_080D490E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D4918: .4byte gBattleSpritesDataPtr -_080D491C: .4byte gActiveBattler -_080D4920: .4byte 0x000027f9 -_080D4924: .4byte c3_0802FDF4 -_080D4928: .4byte gBattlerPartyIndexes -_080D492C: .4byte gPlayerParty -_080D4930: .4byte gBattlerSpriteIds -_080D4934: .4byte gSprites -_080D4938: .4byte gHealthboxSpriteIds -_080D493C: .4byte gBattlerControllerFuncs -_080D4940: .4byte sub_80D47AC - thumb_func_end sub_80D484C - - thumb_func_start sub_80D4944 -sub_80D4944: @ 80D4944 - push {r4-r6,lr} - ldr r6, _080D49C4 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r4, _080D49C8 @ =gActiveBattler - ldrb r2, [r4] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _080D4976 - ldr r0, _080D49CC @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080D49D0 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_080D4976: - ldr r5, _080D49D4 @ =gSprites - ldr r0, _080D49D8 @ =gUnknown_3004FFC - ldrb r2, [r4] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r5, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _080D49DC @ =SpriteCallbackDummy - cmp r1, r0 - bne _080D49BC - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080D49BC - adds r0, r3, r5 - bl DestroySprite - ldr r1, _080D49E0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D49E4 @ =sub_80D484C - str r1, [r0] -_080D49BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D49C4: .4byte gBattleSpritesDataPtr -_080D49C8: .4byte gActiveBattler -_080D49CC: .4byte gBattlerPartyIndexes -_080D49D0: .4byte gPlayerParty -_080D49D4: .4byte gSprites -_080D49D8: .4byte gUnknown_3004FFC -_080D49DC: .4byte SpriteCallbackDummy -_080D49E0: .4byte gBattlerControllerFuncs -_080D49E4: .4byte sub_80D484C - thumb_func_end sub_80D4944 - - thumb_func_start sub_80D49E8 -sub_80D49E8: @ 80D49E8 - push {r4,lr} - sub sp, 0x4 - ldr r1, _080D4A28 @ =gBattlerControllerFuncs - ldr r4, _080D4A2C @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D4A30 @ =LinkPartnerBufferRunCommand - str r1, [r0] - ldr r0, _080D4A34 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D4A3C - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _080D4A38 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _080D4A4E - .align 2, 0 -_080D4A28: .4byte gBattlerControllerFuncs -_080D4A2C: .4byte gActiveBattler -_080D4A30: .4byte LinkPartnerBufferRunCommand -_080D4A34: .4byte gBattleTypeFlags -_080D4A38: .4byte gBattleBufferA -_080D4A3C: - ldr r2, _080D4A58 @ =gBattleControllerExecFlags - ldr r1, _080D4A5C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_080D4A4E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D4A58: .4byte gBattleControllerExecFlags -_080D4A5C: .4byte gBitTable - thumb_func_end sub_80D49E8 - - thumb_func_start sub_80D4A60 -sub_80D4A60: @ 80D4A60 - push {lr} - ldr r0, _080D4A88 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080D4A8C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080D4A82 - bl sub_80D49E8 -_080D4A82: - pop {r0} - bx r0 - .align 2, 0 -_080D4A88: .4byte gBattleSpritesDataPtr -_080D4A8C: .4byte gActiveBattler - thumb_func_end sub_80D4A60 - - thumb_func_start sub_80D4A90 -sub_80D4A90: @ 80D4A90 - push {lr} - ldr r0, _080D4AB8 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080D4ABC @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080D4AB2 - bl sub_80D49E8 -_080D4AB2: - pop {r0} - bx r0 - .align 2, 0 -_080D4AB8: .4byte gBattleSpritesDataPtr -_080D4ABC: .4byte gActiveBattler - thumb_func_end sub_80D4A90 - - thumb_func_start LinkPartnerHandleGetAttributes -LinkPartnerHandleGetAttributes: @ 80D4AC0 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _080D4AEC @ =gBattleBufferA - ldr r0, _080D4AF0 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080D4AF8 - ldr r0, _080D4AF4 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl dp01_getattr_by_ch1_for_player_pokemon - adds r6, r0, 0 - b _080D4B1A - .align 2, 0 -_080D4AEC: .4byte gBattleBufferA -_080D4AF0: .4byte gActiveBattler -_080D4AF4: .4byte gBattlerPartyIndexes -_080D4AF8: - ldrb r4, [r1] - movs r5, 0 -_080D4AFC: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080D4B12 - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl dp01_getattr_by_ch1_for_player_pokemon - adds r6, r0 -_080D4B12: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _080D4AFC -_080D4B1A: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl sub_80D49E8 - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LinkPartnerHandleGetAttributes - - thumb_func_start dp01_getattr_by_ch1_for_player_pokemon -dp01_getattr_by_ch1_for_player_pokemon: @ 80D4B34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _080D4B68 @ =gBattleBufferA - ldr r3, _080D4B6C @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _080D4B5E - bl _080D52CA -_080D4B5E: - lsls r0, 2 - ldr r1, _080D4B70 @ =_080D4B74 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D4B68: .4byte gBattleBufferA -_080D4B6C: .4byte gActiveBattler -_080D4B70: .4byte _080D4B74 - .align 2, 0 -_080D4B74: - .4byte _080D4C64 - .4byte _080D4E88 - .4byte _080D4E98 - .4byte _080D4EA8 - .4byte _080D4F10 - .4byte _080D4F10 - .4byte _080D4F10 - .4byte _080D4F10 - .4byte _080D4F2C - .4byte _080D4F68 - .4byte _080D4F68 - .4byte _080D4F68 - .4byte _080D4F68 - .4byte _080D52CA - .4byte _080D52CA - .4byte _080D52CA - .4byte _080D52CA - .4byte _080D4F84 - .4byte _080D4F94 - .4byte _080D4FC4 - .4byte _080D4FD4 - .4byte _080D4FE4 - .4byte _080D4FF4 - .4byte _080D5004 - .4byte _080D5014 - .4byte _080D5024 - .4byte _080D5034 - .4byte _080D5044 - .4byte _080D5054 - .4byte _080D5064 - .4byte _080D5074 - .4byte _080D5084 - .4byte _080D50D4 - .4byte _080D50E4 - .4byte _080D50F4 - .4byte _080D5104 - .4byte _080D5114 - .4byte _080D5124 - .4byte _080D5134 - .4byte _080D5144 - .4byte _080D5154 - .4byte _080D5188 - .4byte _080D5198 - .4byte _080D51A8 - .4byte _080D51B8 - .4byte _080D51C8 - .4byte _080D51D8 - .4byte _080D51E8 - .4byte _080D51F8 - .4byte _080D5218 - .4byte _080D5228 - .4byte _080D5238 - .4byte _080D5248 - .4byte _080D5258 - .4byte _080D5268 - .4byte _080D5278 - .4byte _080D5288 - .4byte _080D5298 - .4byte _080D52A8 - .4byte _080D52B8 -_080D4C64: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D4E78 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_080D4CB0: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080D4CB0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D4E78 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _080D4E7C @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _080D4E80 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _080D4E84 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_080D4E68: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _080D4E68 - b _080D52CA - .align 2, 0 -_080D4E78: .4byte gPlayerParty -_080D4E7C: .4byte 0xfffffc1f -_080D4E80: .4byte 0xfff07fff -_080D4E84: .4byte 0xfffffe0f -_080D4E88: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4E94 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - b _080D5202 - .align 2, 0 -_080D4E94: .4byte gPlayerParty -_080D4E98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4EA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - b _080D5202 - .align 2, 0 -_080D4EA4: .4byte gPlayerParty -_080D4EA8: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080D4F0C @ =gPlayerParty - adds r4, r1, r0 - mov r8, r9 -_080D4EBE: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _080D4EBE - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4F0C @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_080D4EFC: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _080D4EFC - b _080D52CA - .align 2, 0 -_080D4F0C: .4byte gPlayerParty -_080D4F10: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4F28 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _080D5202 - .align 2, 0 -_080D4F28: .4byte gPlayerParty -_080D4F2C: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _080D4F64 @ =gPlayerParty - mov r8, r2 -_080D4F38: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _080D4F38 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4F64 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _080D52CA - .align 2, 0 -_080D4F64: .4byte gPlayerParty -_080D4F68: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4F80 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _080D52C2 - .align 2, 0 -_080D4F80: .4byte gPlayerParty -_080D4F84: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4F90 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - b _080D4F9E - .align 2, 0 -_080D4F90: .4byte gPlayerParty -_080D4F94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4FC0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x19 -_080D4F9E: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _080D52CA - .align 2, 0 -_080D4FC0: .4byte gPlayerParty -_080D4FC4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4FD0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1A - b _080D52C2 - .align 2, 0 -_080D4FD0: .4byte gPlayerParty -_080D4FD4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4FE0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1B - b _080D52C2 - .align 2, 0 -_080D4FE0: .4byte gPlayerParty -_080D4FE4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D4FF0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1C - b _080D52C2 - .align 2, 0 -_080D4FF0: .4byte gPlayerParty -_080D4FF4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5000 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1D - b _080D52C2 - .align 2, 0 -_080D5000: .4byte gPlayerParty -_080D5004: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5010 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1E - b _080D52C2 - .align 2, 0 -_080D5010: .4byte gPlayerParty -_080D5014: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5020 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1F - b _080D52C2 - .align 2, 0 -_080D5020: .4byte gPlayerParty -_080D5024: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5030 @ =gPlayerParty - adds r0, r1 - movs r1, 0x20 - b _080D52C2 - .align 2, 0 -_080D5030: .4byte gPlayerParty -_080D5034: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5040 @ =gPlayerParty - adds r0, r1 - movs r1, 0x22 - b _080D52C2 - .align 2, 0 -_080D5040: .4byte gPlayerParty -_080D5044: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5050 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - b _080D52C2 - .align 2, 0 -_080D5050: .4byte gPlayerParty -_080D5054: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5060 @ =gPlayerParty - adds r0, r1 - movs r1, 0x24 - b _080D52C2 - .align 2, 0 -_080D5060: .4byte gPlayerParty -_080D5064: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5070 @ =gPlayerParty - adds r0, r1 - movs r1, 0x25 - b _080D52C2 - .align 2, 0 -_080D5070: .4byte gPlayerParty -_080D5074: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5080 @ =gPlayerParty - adds r0, r1 - movs r1, 0x26 - b _080D52C2 - .align 2, 0 -_080D5080: .4byte gPlayerParty -_080D5084: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D50D0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _080D52CA - .align 2, 0 -_080D50D0: .4byte gPlayerParty -_080D50D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D50E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x27 - b _080D52C2 - .align 2, 0 -_080D50E0: .4byte gPlayerParty -_080D50E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D50F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x28 - b _080D52C2 - .align 2, 0 -_080D50F0: .4byte gPlayerParty -_080D50F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5100 @ =gPlayerParty - adds r0, r1 - movs r1, 0x29 - b _080D52C2 - .align 2, 0 -_080D5100: .4byte gPlayerParty -_080D5104: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5110 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2A - b _080D52C2 - .align 2, 0 -_080D5110: .4byte gPlayerParty -_080D5114: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5120 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2B - b _080D52C2 - .align 2, 0 -_080D5120: .4byte gPlayerParty -_080D5124: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5130 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2C - b _080D52C2 - .align 2, 0 -_080D5130: .4byte gPlayerParty -_080D5134: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5140 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - b _080D515E - .align 2, 0 -_080D5140: .4byte gPlayerParty -_080D5144: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5150 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - b _080D5202 - .align 2, 0 -_080D5150: .4byte gPlayerParty -_080D5154: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5184 @ =gPlayerParty - adds r0, r1 - movs r1, 0x37 -_080D515E: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _080D52CA - .align 2, 0 -_080D5184: .4byte gPlayerParty -_080D5188: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5194 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - b _080D52C2 - .align 2, 0 -_080D5194: .4byte gPlayerParty -_080D5198: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - b _080D5202 - .align 2, 0 -_080D51A4: .4byte gPlayerParty -_080D51A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - b _080D5202 - .align 2, 0 -_080D51B4: .4byte gPlayerParty -_080D51B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3B - b _080D5202 - .align 2, 0 -_080D51C4: .4byte gPlayerParty -_080D51C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3C - b _080D5202 - .align 2, 0 -_080D51D4: .4byte gPlayerParty -_080D51D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51E4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3D - b _080D5202 - .align 2, 0 -_080D51E4: .4byte gPlayerParty -_080D51E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D51F4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3E - b _080D5202 - .align 2, 0 -_080D51F4: .4byte gPlayerParty -_080D51F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5214 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3F -_080D5202: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _080D52CA - .align 2, 0 -_080D5214: .4byte gPlayerParty -_080D5218: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5224 @ =gPlayerParty - adds r0, r1 - movs r1, 0x16 - b _080D52C2 - .align 2, 0 -_080D5224: .4byte gPlayerParty -_080D5228: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5234 @ =gPlayerParty - adds r0, r1 - movs r1, 0x17 - b _080D52C2 - .align 2, 0 -_080D5234: .4byte gPlayerParty -_080D5238: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5244 @ =gPlayerParty - adds r0, r1 - movs r1, 0x18 - b _080D52C2 - .align 2, 0 -_080D5244: .4byte gPlayerParty -_080D5248: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5254 @ =gPlayerParty - adds r0, r1 - movs r1, 0x21 - b _080D52C2 - .align 2, 0 -_080D5254: .4byte gPlayerParty -_080D5258: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5264 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2F - b _080D52C2 - .align 2, 0 -_080D5264: .4byte gPlayerParty -_080D5268: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5274 @ =gPlayerParty - adds r0, r1 - movs r1, 0x30 - b _080D52C2 - .align 2, 0 -_080D5274: .4byte gPlayerParty -_080D5278: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5284 @ =gPlayerParty - adds r0, r1 - movs r1, 0x32 - b _080D52C2 - .align 2, 0 -_080D5284: .4byte gPlayerParty -_080D5288: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5294 @ =gPlayerParty - adds r0, r1 - movs r1, 0x33 - b _080D52C2 - .align 2, 0 -_080D5294: .4byte gPlayerParty -_080D5298: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D52A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x34 - b _080D52C2 - .align 2, 0 -_080D52A4: .4byte gPlayerParty -_080D52A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D52B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x35 - b _080D52C2 - .align 2, 0 -_080D52B4: .4byte gPlayerParty -_080D52B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D52DC @ =gPlayerParty - adds r0, r1 - movs r1, 0x36 -_080D52C2: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_080D52CA: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D52DC: .4byte gPlayerParty - thumb_func_end dp01_getattr_by_ch1_for_player_pokemon - - thumb_func_start sub_80D52E0 -sub_80D52E0: @ 80D52E0 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D52E0 - - thumb_func_start LinkPartnerHandleSetAttributes -LinkPartnerHandleSetAttributes: @ 80D52EC - push {r4,r5,lr} - ldr r1, _080D5310 @ =gBattleBufferA - ldr r0, _080D5314 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080D531C - ldr r0, _080D5318 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl sub_80D5344 - b _080D533A - .align 2, 0 -_080D5310: .4byte gBattleBufferA -_080D5314: .4byte gActiveBattler -_080D5318: .4byte gBattlerPartyIndexes -_080D531C: - ldrb r4, [r1] - movs r5, 0 -_080D5320: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080D532E - adds r0, r5, 0 - bl sub_80D5344 -_080D532E: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080D5320 -_080D533A: - bl sub_80D49E8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end LinkPartnerHandleSetAttributes - - thumb_func_start sub_80D5344 -sub_80D5344: @ 80D5344 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080D537C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r2, _080D5380 @ =gUnknown_2022BC7 - adds r3, r0, r2 - adds r6, r3, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r2, 0 - cmp r0, 0x3B - bls _080D5370 - bl _080D5D0A -_080D5370: - lsls r0, 2 - ldr r1, _080D5384 @ =_080D5388 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080D537C: .4byte gActiveBattler -_080D5380: .4byte gUnknown_2022BC7 -_080D5384: .4byte _080D5388 - .align 2, 0 -_080D5388: - .4byte _080D5478 - .4byte _080D5610 - .4byte _080D5630 - .4byte _080D5650 - .4byte _080D56A8 - .4byte _080D56A8 - .4byte _080D56A8 - .4byte _080D56A8 - .4byte _080D56D0 - .4byte _080D5734 - .4byte _080D5734 - .4byte _080D5734 - .4byte _080D5734 - .4byte _080D5D0A - .4byte _080D5D0A - .4byte _080D5D0A - .4byte _080D5D0A - .4byte _080D5764 - .4byte _080D5784 - .4byte _080D57A4 - .4byte _080D57C4 - .4byte _080D57E4 - .4byte _080D5804 - .4byte _080D5824 - .4byte _080D5844 - .4byte _080D5864 - .4byte _080D5884 - .4byte _080D58A4 - .4byte _080D58C4 - .4byte _080D58E4 - .4byte _080D5904 - .4byte _080D5924 - .4byte _080D5994 - .4byte _080D59B4 - .4byte _080D59D4 - .4byte _080D59F4 - .4byte _080D5A14 - .4byte _080D5A34 - .4byte _080D5A54 - .4byte _080D5A74 - .4byte _080D5A94 - .4byte _080D5AB4 - .4byte _080D5AD4 - .4byte _080D5AF4 - .4byte _080D5B14 - .4byte _080D5B34 - .4byte _080D5B54 - .4byte _080D5B74 - .4byte _080D5B94 - .4byte _080D5BB4 - .4byte _080D5BD4 - .4byte _080D5BF4 - .4byte _080D5C14 - .4byte _080D5C34 - .4byte _080D5C54 - .4byte _080D5C74 - .4byte _080D5C94 - .4byte _080D5CB4 - .4byte _080D5CD4 - .4byte _080D5CF4 -_080D5478: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D560C @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r6, 0 - bl SetMonData - adds r2, r6, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r6 - mov r10, r0 - adds r0, r6, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r6, 0x2 - str r0, [sp, 0x4] - adds r0, r6, 0x4 - str r0, [sp, 0x8] - adds r0, r6, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r7, r6, 0 - adds r7, 0x24 - adds r4, r6, 0 - adds r4, 0xC -_080D54DE: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080D54DE - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D560C @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r6, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r6, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D560C: .4byte gPlayerParty -_080D5610: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5628 @ =gPlayerParty - adds r0, r1 - ldr r1, _080D562C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xB - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5628: .4byte gPlayerParty -_080D562C: .4byte gActiveBattler -_080D5630: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5648 @ =gPlayerParty - adds r0, r1 - ldr r1, _080D564C @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xC - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5648: .4byte gPlayerParty -_080D564C: .4byte gActiveBattler -_080D5650: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r3 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080D56A4 @ =gPlayerParty - adds r7, r1, r0 - adds r6, r3, 0 - adds r6, 0x8 - adds r4, r3, 0 -_080D566A: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080D566A - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D56A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D56A4: .4byte gPlayerParty -_080D56A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D56C4 @ =gPlayerParty - adds r0, r1 - ldr r3, _080D56C8 @ =gBattleBufferA - ldr r1, _080D56CC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _080D574C - .align 2, 0 -_080D56C4: .4byte gPlayerParty -_080D56C8: .4byte gBattleBufferA -_080D56CC: .4byte gActiveBattler -_080D56D0: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D572C @ =gPlayerParty - adds r4, r0 - ldr r5, _080D5730 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x11 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D572C: .4byte gPlayerParty -_080D5730: .4byte gActiveBattler -_080D5734: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5758 @ =gPlayerParty - adds r0, r1 - ldr r3, _080D575C @ =gBattleBufferA - ldr r1, _080D5760 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_080D574C: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5758: .4byte gPlayerParty -_080D575C: .4byte gBattleBufferA -_080D5760: .4byte gActiveBattler -_080D5764: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D577C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5780 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D577C: .4byte gPlayerParty -_080D5780: .4byte gActiveBattler -_080D5784: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D579C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D57A0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x19 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D579C: .4byte gPlayerParty -_080D57A0: .4byte gActiveBattler -_080D57A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D57BC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D57C0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1A - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D57BC: .4byte gPlayerParty -_080D57C0: .4byte gActiveBattler -_080D57C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D57DC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D57E0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1B - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D57DC: .4byte gPlayerParty -_080D57E0: .4byte gActiveBattler -_080D57E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D57FC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5800 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1C - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D57FC: .4byte gPlayerParty -_080D5800: .4byte gActiveBattler -_080D5804: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D581C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5820 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1D - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D581C: .4byte gPlayerParty -_080D5820: .4byte gActiveBattler -_080D5824: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D583C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5840 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1E - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D583C: .4byte gPlayerParty -_080D5840: .4byte gActiveBattler -_080D5844: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D585C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5860 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1F - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D585C: .4byte gPlayerParty -_080D5860: .4byte gActiveBattler -_080D5864: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D587C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5880 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x20 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D587C: .4byte gPlayerParty -_080D5880: .4byte gActiveBattler -_080D5884: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D589C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D58A0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x22 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D589C: .4byte gPlayerParty -_080D58A0: .4byte gActiveBattler -_080D58A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D58BC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D58C0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x23 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D58BC: .4byte gPlayerParty -_080D58C0: .4byte gActiveBattler -_080D58C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D58DC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D58E0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x24 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D58DC: .4byte gPlayerParty -_080D58E0: .4byte gActiveBattler -_080D58E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D58FC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5900 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x25 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D58FC: .4byte gPlayerParty -_080D5900: .4byte gActiveBattler -_080D5904: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D591C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5920 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x26 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D591C: .4byte gPlayerParty -_080D5920: .4byte gActiveBattler -_080D5924: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080D598C @ =gPlayerParty - adds r4, r0 - ldr r5, _080D5990 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x27 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _080D5A44 - .align 2, 0 -_080D598C: .4byte gPlayerParty -_080D5990: .4byte gActiveBattler -_080D5994: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D59AC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D59B0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x27 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D59AC: .4byte gPlayerParty -_080D59B0: .4byte gActiveBattler -_080D59B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D59CC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D59D0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x28 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D59CC: .4byte gPlayerParty -_080D59D0: .4byte gActiveBattler -_080D59D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D59EC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D59F0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x29 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D59EC: .4byte gPlayerParty -_080D59F0: .4byte gActiveBattler -_080D59F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5A0C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5A10 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2A - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5A0C: .4byte gPlayerParty -_080D5A10: .4byte gActiveBattler -_080D5A14: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5A2C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5A30 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2B - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5A2C: .4byte gPlayerParty -_080D5A30: .4byte gActiveBattler -_080D5A34: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5A4C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5A50 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 -_080D5A44: - movs r1, 0x2C - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5A4C: .4byte gPlayerParty -_080D5A50: .4byte gActiveBattler -_080D5A54: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5A6C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5A70 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5A6C: .4byte gPlayerParty -_080D5A70: .4byte gActiveBattler -_080D5A74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5A8C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5A90 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x9 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5A8C: .4byte gPlayerParty -_080D5A90: .4byte gActiveBattler -_080D5A94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5AAC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5AB0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x37 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5AAC: .4byte gPlayerParty -_080D5AB0: .4byte gActiveBattler -_080D5AB4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5ACC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5AD0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x38 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5ACC: .4byte gPlayerParty -_080D5AD0: .4byte gActiveBattler -_080D5AD4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5AEC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5AF0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x39 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5AEC: .4byte gPlayerParty -_080D5AF0: .4byte gActiveBattler -_080D5AF4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5B0C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5B10 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3A - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5B0C: .4byte gPlayerParty -_080D5B10: .4byte gActiveBattler -_080D5B14: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5B2C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5B30 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3B - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5B2C: .4byte gPlayerParty -_080D5B30: .4byte gActiveBattler -_080D5B34: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5B4C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5B50 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3C - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5B4C: .4byte gPlayerParty -_080D5B50: .4byte gActiveBattler -_080D5B54: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5B6C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5B70 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3D - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5B6C: .4byte gPlayerParty -_080D5B70: .4byte gActiveBattler -_080D5B74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5B8C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5B90 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3E - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5B8C: .4byte gPlayerParty -_080D5B90: .4byte gActiveBattler -_080D5B94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5BAC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5BB0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3F - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5BAC: .4byte gPlayerParty -_080D5BB0: .4byte gActiveBattler -_080D5BB4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5BCC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5BD0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x16 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5BCC: .4byte gPlayerParty -_080D5BD0: .4byte gActiveBattler -_080D5BD4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5BEC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5BF0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x17 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5BEC: .4byte gPlayerParty -_080D5BF0: .4byte gActiveBattler -_080D5BF4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5C0C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5C10 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x18 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5C0C: .4byte gPlayerParty -_080D5C10: .4byte gActiveBattler -_080D5C14: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5C2C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5C30 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x21 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5C2C: .4byte gPlayerParty -_080D5C30: .4byte gActiveBattler -_080D5C34: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5C4C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5C50 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2F - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5C4C: .4byte gPlayerParty -_080D5C50: .4byte gActiveBattler -_080D5C54: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5C6C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5C70 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x30 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5C6C: .4byte gPlayerParty -_080D5C70: .4byte gActiveBattler -_080D5C74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5C8C @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5C90 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x32 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5C8C: .4byte gPlayerParty -_080D5C90: .4byte gActiveBattler -_080D5C94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5CAC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5CB0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x33 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5CAC: .4byte gPlayerParty -_080D5CB0: .4byte gActiveBattler -_080D5CB4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5CCC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5CD0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x34 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5CCC: .4byte gPlayerParty -_080D5CD0: .4byte gActiveBattler -_080D5CD4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5CEC @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5CF0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x35 - bl SetMonData - b _080D5D0A - .align 2, 0 -_080D5CEC: .4byte gPlayerParty -_080D5CF0: .4byte gActiveBattler -_080D5CF4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080D5D34 @ =gPlayerParty - adds r0, r1 - ldr r1, _080D5D38 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x36 - bl SetMonData -_080D5D0A: - ldr r2, _080D5D3C @ =gBattlerPartyIndexes - ldr r0, _080D5D38 @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080D5D34 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D5D34: .4byte gPlayerParty -_080D5D38: .4byte gActiveBattler -_080D5D3C: .4byte gBattlerPartyIndexes - thumb_func_end sub_80D5344 - - thumb_func_start LinkPartnerHandlecmd3 -LinkPartnerHandlecmd3: @ 80D5D40 - push {r4-r7,lr} - ldr r1, _080D5DA4 @ =gBattlerPartyIndexes - ldr r7, _080D5DA8 @ =gActiveBattler - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _080D5DAC @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _080D5DB0 @ =gPlayerParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _080D5D98 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_080D5D76: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _080D5D76 -_080D5D98: - bl sub_80D49E8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D5DA4: .4byte gBattlerPartyIndexes -_080D5DA8: .4byte gActiveBattler -_080D5DAC: .4byte gBattleBufferA -_080D5DB0: .4byte gPlayerParty - thumb_func_end LinkPartnerHandlecmd3 - - thumb_func_start LinkPartnerHandleLoadPokeSprite -LinkPartnerHandleLoadPokeSprite: @ 80D5DB4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _080D5EA8 @ =gBattlerPartyIndexes - mov r8, r0 - ldr r6, _080D5EAC @ =gActiveBattler - ldrb r1, [r6] - lsls r0, r1, 1 - add r0, r8 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080D5EB0 @ =gPlayerParty - adds r0, r4 - bl BattleLoadPlayerMonSpriteGfx - ldrb r0, [r6] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080D5EB4 @ =gMultiuseSpriteTemplate - mov r8, r0 - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r6] - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080D5EB8 @ =gBattlerSpriteIds - ldrb r1, [r6] - adds r1, r4 - strb r0, [r1] - ldr r5, _080D5EBC @ =gSprites - ldrb r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080D5EC0 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r2, [r6] - adds r0, r2, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x2E] - ldrb r3, [r6] - adds r0, r3, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r2, [r6] - adds r4, r2, r4 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080D5EC4 @ =gBattleMonForms - adds r2, r1 - ldrb r1, [r2] - bl StartSpriteAnim - ldr r1, _080D5EC8 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D5ECC @ =sub_80D4590 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D5EA8: .4byte gBattlerPartyIndexes -_080D5EAC: .4byte gActiveBattler -_080D5EB0: .4byte gPlayerParty -_080D5EB4: .4byte gMultiuseSpriteTemplate -_080D5EB8: .4byte gBattlerSpriteIds -_080D5EBC: .4byte gSprites -_080D5EC0: .4byte 0x0000ff10 -_080D5EC4: .4byte gBattleMonForms -_080D5EC8: .4byte gBattlerControllerFuncs -_080D5ECC: .4byte sub_80D4590 - thumb_func_end LinkPartnerHandleLoadPokeSprite - - thumb_func_start LinkPartnerHandleSendOutPoke -LinkPartnerHandleSendOutPoke: @ 80D5ED0 - push {r4-r6,lr} - ldr r5, _080D5F28 @ =gActiveBattler - ldrb r0, [r5] - ldr r4, _080D5F2C @ =gBattleBufferA - lsls r1, r0, 9 - adds r6, r4, 0x2 - adds r1, r6 - ldrb r1, [r1] - bl ClearTemporarySpeciesSpriteData - ldr r2, _080D5F30 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r2 - lsls r0, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r0, [r0] - strh r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080D5F34 @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldrb r0, [r5] - lsls r1, r0, 9 - adds r1, r6 - ldrb r1, [r1] - bl sub_80D5F40 - ldr r1, _080D5F38 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D5F3C @ =sub_80D4944 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D5F28: .4byte gActiveBattler -_080D5F2C: .4byte gBattleBufferA -_080D5F30: .4byte gBattlerPartyIndexes -_080D5F34: .4byte gPlayerParty -_080D5F38: .4byte gBattlerControllerFuncs -_080D5F3C: .4byte sub_80D4944 - thumb_func_end LinkPartnerHandleSendOutPoke - - thumb_func_start sub_80D5F40 -sub_80D5F40: @ 80D5F40 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl ClearTemporarySpeciesSpriteData - ldr r0, _080D6084 @ =gBattlerPartyIndexes - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _080D6088 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r2] - ldrh r1, [r2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D608C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080D6090 @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _080D6094 @ =gUnknown_3004FFC - mov r9, r1 - add r9, r6 - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080D6098 @ =gMultiuseSpriteTemplate - mov r10, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r10 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080D609C @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _080D60A0 @ =gSprites - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080D60A4 @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080D60A8 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFF - bl DoPokeballSendOutAnimation - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D6084: .4byte gBattlerPartyIndexes -_080D6088: .4byte gBattleBufferA -_080D608C: .4byte gPlayerParty -_080D6090: .4byte sub_8033E3C -_080D6094: .4byte gUnknown_3004FFC -_080D6098: .4byte gMultiuseSpriteTemplate -_080D609C: .4byte gBattlerSpriteIds -_080D60A0: .4byte gSprites -_080D60A4: .4byte gBattleMonForms -_080D60A8: .4byte SpriteCallbackDummy - thumb_func_end sub_80D5F40 - - thumb_func_start LinkPartnerHandleReturnPokeToBall -LinkPartnerHandleReturnPokeToBall: @ 80D60AC - push {r4-r6,lr} - ldr r1, _080D60E0 @ =gBattleBufferA - ldr r6, _080D60E4 @ =gActiveBattler - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _080D60F4 - ldr r0, _080D60E8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _080D60EC @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D60F0 @ =sub_80D613C - str r1, [r0] - b _080D612A - .align 2, 0 -_080D60E0: .4byte gBattleBufferA -_080D60E4: .4byte gActiveBattler -_080D60E8: .4byte gBattleSpritesDataPtr -_080D60EC: .4byte gBattlerControllerFuncs -_080D60F0: .4byte sub_80D613C -_080D60F4: - ldr r5, _080D6130 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080D6134 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080D6138 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl sub_80D49E8 -_080D612A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D6130: .4byte gBattlerSpriteIds -_080D6134: .4byte gSprites -_080D6138: .4byte gHealthboxSpriteIds - thumb_func_end LinkPartnerHandleReturnPokeToBall - - thumb_func_start sub_80D613C -sub_80D613C: @ 80D613C - push {r4-r6,lr} - ldr r6, _080D615C @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _080D6160 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r4, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _080D6164 - cmp r0, 0x1 - beq _080D6192 - b _080D61BA - .align 2, 0 -_080D615C: .4byte gBattleSpritesDataPtr -_080D6160: .4byte gActiveBattler -_080D6164: - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D617E - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080D617E: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _080D61BA -_080D6192: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D61BA - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl InitAndLaunchSpecialAnimation - ldr r1, _080D61C0 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D61C4 @ =sub_80D46A8 - str r1, [r0] -_080D61BA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D61C0: .4byte gBattlerControllerFuncs -_080D61C4: .4byte sub_80D46A8 - thumb_func_end sub_80D613C - - thumb_func_start sub_80D61C8 -sub_80D61C8: @ 80D61C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r6, _080D6240 @ =gActiveBattler - ldrb r0, [r6] - bl GetBattlerPosition - movs r1, 0x2 - ands r1, r0 - movs r7, 0x20 - cmp r1, 0 - beq _080D61E2 - movs r7, 0x5A -_080D61E2: - ldrb r0, [r6] - bl GetBattlerMultiplayerId - ldr r5, _080D6244 @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - movs r4, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _080D6228 - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r1, [r1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0x1 - beq _080D6228 - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1] - ands r4, r0 - cmp r4, 0x3 - bne _080D6248 -_080D6228: - ldr r0, _080D6240 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerMultiplayerId - ldr r2, _080D6244 @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x13] - adds r4, r0, 0x2 - b _080D6258 - .align 2, 0 -_080D6240: .4byte gActiveBattler -_080D6244: .4byte gLinkPlayers -_080D6248: - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r4, [r1, 0x13] -_080D6258: - ldr r5, _080D6318 @ =gActiveBattler - ldrb r1, [r5] - adds r0, r4, 0 - bl DecompressTrainerBackPalette - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r6, _080D631C @ =gMultiuseSpriteTemplate - mov r8, r7 - ldr r0, _080D6320 @ =gTrainerBackPicCoords - lsls r4, 2 - adds r4, r0 - ldrb r0, [r4] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r5] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - mov r1, r8 - adds r2, r4, 0 - bl CreateSprite - ldr r6, _080D6324 @ =gBattlerSpriteIds - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _080D6328 @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080D632C @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080D6330 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080D6334 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6338 @ =sub_80D4270 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D6318: .4byte gActiveBattler -_080D631C: .4byte gMultiuseSpriteTemplate -_080D6320: .4byte gTrainerBackPicCoords -_080D6324: .4byte gBattlerSpriteIds -_080D6328: .4byte gSprites -_080D632C: .4byte 0x0000fffe -_080D6330: .4byte sub_8033EEC -_080D6334: .4byte gBattlerControllerFuncs -_080D6338: .4byte sub_80D4270 - thumb_func_end sub_80D61C8 - - thumb_func_start sub_80D633C -sub_80D633C: @ 80D633C - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D633C - - thumb_func_start sub_80D6348 -sub_80D6348: @ 80D6348 - push {r4-r6,lr} - ldr r6, _080D63D4 @ =gBattlerSpriteIds - ldr r4, _080D63D8 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080D63DC @ =gSprites - adds r0, r5 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080D63E0 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080D63E4 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080D63E8 @ =SpriteCallbackDummy - bl StoreSpriteCallbackInData6 - ldr r1, _080D63EC @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D63F0 @ =sub_80D42A8 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D63D4: .4byte gBattlerSpriteIds -_080D63D8: .4byte gActiveBattler -_080D63DC: .4byte gSprites -_080D63E0: .4byte 0x0000ffd8 -_080D63E4: .4byte StartAnimLinearTranslation -_080D63E8: .4byte SpriteCallbackDummy -_080D63EC: .4byte gBattlerControllerFuncs -_080D63F0: .4byte sub_80D42A8 - thumb_func_end sub_80D6348 - - thumb_func_start sub_80D63F4 -sub_80D63F4: @ 80D63F4 - push {r4-r6,lr} - ldr r6, _080D6440 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _080D6444 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _080D6448 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D6428 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080D6428: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _080D64BE - .align 2, 0 -_080D6440: .4byte gBattleSpritesDataPtr -_080D6444: .4byte gActiveBattler -_080D6448: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080D64BE - strb r4, [r3, 0x4] - ldr r2, _080D64C4 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080D64C8 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _080D64CC @ =gSprites - ldr r3, _080D64D0 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x30] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x32] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080D64D4 @ =sub_8012110 - str r1, [r0] - ldr r1, _080D64D8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D64DC @ =sub_80D4640 - str r1, [r0] -_080D64BE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D64C4: .4byte gBattlerPartyIndexes -_080D64C8: .4byte gPlayerParty -_080D64CC: .4byte gSprites -_080D64D0: .4byte gBattlerSpriteIds -_080D64D4: .4byte sub_8012110 -_080D64D8: .4byte gBattlerControllerFuncs -_080D64DC: .4byte sub_80D4640 - thumb_func_end sub_80D63F4 - - thumb_func_start sub_80D64E0 -sub_80D64E0: @ 80D64E0 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D64E0 - - thumb_func_start sub_80D64EC -sub_80D64EC: @ 80D64EC - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D64EC - - thumb_func_start sub_80D64F8 -sub_80D64F8: @ 80D64F8 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D64F8 - - thumb_func_start sub_80D6504 -sub_80D6504: @ 80D6504 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6504 - - thumb_func_start sub_80D6510 -sub_80D6510: @ 80D6510 - push {r4-r6,lr} - ldr r6, _080D65F4 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _080D6522 - b _080D6636 -_080D6522: - ldr r0, _080D65F8 @ =gBattleBufferA - mov r12, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _080D65FC @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _080D6600 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _080D6604 @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _080D6608 @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _080D660C @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _080D6610 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _080D6614 @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080D6618 - bl sub_80D49E8 - b _080D6636 - .align 2, 0 -_080D65F4: .4byte gActiveBattler -_080D65F8: .4byte gBattleBufferA -_080D65FC: .4byte gAnimMoveTurn -_080D6600: .4byte gAnimMovePower -_080D6604: .4byte gAnimMoveDmg -_080D6608: .4byte gAnimFriendship -_080D660C: .4byte gWeatherMoveAnim -_080D6610: .4byte gAnimDisableStructPtr -_080D6614: .4byte gTransformedPersonalities -_080D6618: - ldr r0, _080D663C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _080D6640 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6644 @ =sub_80D6648 - str r1, [r0] -_080D6636: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D663C: .4byte gBattleSpritesDataPtr -_080D6640: .4byte gBattlerControllerFuncs -_080D6644: .4byte sub_80D6648 - thumb_func_end sub_80D6510 - - thumb_func_start sub_80D6648 -sub_80D6648: @ 80D6648 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _080D6694 @ =gBattleBufferA - ldr r6, _080D6698 @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r10, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, r2, 0x2 - mov r9, r5 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r7, _080D669C @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _080D66E0 - cmp r2, 0x1 - bgt _080D66A0 - cmp r2, 0 - beq _080D66AA - b _080D67BC - .align 2, 0 -_080D6694: .4byte gBattleBufferA -_080D6698: .4byte gActiveBattler -_080D669C: .4byte gBattleSpritesDataPtr -_080D66A0: - cmp r2, 0x2 - beq _080D670A - cmp r2, 0x3 - beq _080D6780 - b _080D67BC -_080D66AA: - ldr r1, [r5] - lsls r0, r3, 2 - adds r1, r0, r1 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _080D66CC - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r6] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080D66CC: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _080D67BC -_080D66E0: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080D67BC - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _080D67BC -_080D670A: - ldr r0, _080D6770 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080D6774 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080D67BC - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080D6758 - mov r0, r8 - cmp r0, 0x1 - bhi _080D6758 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation - ldr r0, [r7] - ldrb r1, [r6] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_080D6758: - ldr r0, _080D6778 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080D677C @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _080D67BC - .align 2, 0 -_080D6770: .4byte gAnimScriptCallback -_080D6774: .4byte gAnimScriptActive -_080D6778: .4byte gBattleSpritesDataPtr -_080D677C: .4byte gActiveBattler -_080D6780: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080D67BC - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r10 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r9 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl sub_80D49E8 -_080D67BC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D6648 - - thumb_func_start sub_80D67CC -sub_80D67CC: @ 80D67CC - push {r4,lr} - ldr r0, _080D6800 @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080D6804 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080D6808 @ =gActiveBattler - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _080D680C @ =gUnknown_2022BC6 - adds r4, r0 - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _080D6814 - ldr r0, _080D6810 @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _080D681C - .align 2, 0 -_080D6800: .4byte gBattle_BG0_X -_080D6804: .4byte gBattle_BG0_Y -_080D6808: .4byte gActiveBattler -_080D680C: .4byte gUnknown_2022BC6 -_080D6810: .4byte gDisplayedStringBattle -_080D6814: - ldr r0, _080D6830 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_080D681C: - ldr r1, _080D6834 @ =gBattlerControllerFuncs - ldr r0, _080D6838 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D683C @ =sub_80D4718 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6830: .4byte gDisplayedStringBattle -_080D6834: .4byte gBattlerControllerFuncs -_080D6838: .4byte gActiveBattler -_080D683C: .4byte sub_80D4718 - thumb_func_end sub_80D67CC - - thumb_func_start sub_80D6840 -sub_80D6840: @ 80D6840 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6840 - - thumb_func_start sub_80D684C -sub_80D684C: @ 80D684C - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D684C - - thumb_func_start sub_80D6858 -sub_80D6858: @ 80D6858 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6858 - - thumb_func_start sub_80D6864 -sub_80D6864: @ 80D6864 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6864 - - thumb_func_start sub_80D6870 -sub_80D6870: @ 80D6870 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6870 - - thumb_func_start sub_80D687C -sub_80D687C: @ 80D687C - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D687C - - thumb_func_start sub_80D6888 -sub_80D6888: @ 80D6888 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6888 - - thumb_func_start sub_80D6894 -sub_80D6894: @ 80D6894 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _080D690C @ =gBattleBufferA - ldr r0, _080D6910 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _080D6914 @ =0x00007fff - cmp r7, r0 - beq _080D6924 - ldr r6, _080D6918 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080D691C @ =gPlayerParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _080D6920 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _080D694E - .align 2, 0 -_080D690C: .4byte gBattleBufferA -_080D6910: .4byte gActiveBattler -_080D6914: .4byte 0x00007fff -_080D6918: .4byte gBattlerPartyIndexes -_080D691C: .4byte gPlayerParty -_080D6920: .4byte gHealthboxSpriteIds -_080D6924: - ldr r1, _080D696C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D6970 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _080D6974 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct -_080D694E: - ldr r1, _080D6978 @ =gBattlerControllerFuncs - ldr r0, _080D697C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6980 @ =sub_80D45D0 - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D696C: .4byte gBattlerPartyIndexes -_080D6970: .4byte gPlayerParty -_080D6974: .4byte gHealthboxSpriteIds -_080D6978: .4byte gBattlerControllerFuncs -_080D697C: .4byte gActiveBattler -_080D6980: .4byte sub_80D45D0 - thumb_func_end sub_80D6894 - - thumb_func_start sub_80D6984 -sub_80D6984: @ 80D6984 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6984 - - thumb_func_start sub_80D6990 -sub_80D6990: @ 80D6990 - push {r4,lr} - ldr r4, _080D69EC @ =gActiveBattler - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080D69E4 - ldr r0, _080D69F0 @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _080D69F4 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080D69F8 @ =gPlayerParty - adds r1, r2 - movs r2, 0x9 - bl UpdateHealthboxAttribute - ldrb r2, [r4] - ldr r0, _080D69FC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _080D6A00 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6A04 @ =sub_80D4A60 - str r1, [r0] -_080D69E4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D69EC: .4byte gActiveBattler -_080D69F0: .4byte gHealthboxSpriteIds -_080D69F4: .4byte gBattlerPartyIndexes -_080D69F8: .4byte gPlayerParty -_080D69FC: .4byte gBattleSpritesDataPtr -_080D6A00: .4byte gBattlerControllerFuncs -_080D6A04: .4byte sub_80D4A60 - thumb_func_end sub_80D6990 - - thumb_func_start sub_80D6A08 -sub_80D6A08: @ 80D6A08 - push {r4,r5,lr} - ldr r5, _080D6A60 @ =gActiveBattler - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080D6A58 - ldr r4, _080D6A64 @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl InitAndLaunchChosenStatusAnimation - ldr r1, _080D6A68 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6A6C @ =sub_80D4A60 - str r1, [r0] -_080D6A58: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D6A60: .4byte gActiveBattler -_080D6A64: .4byte gBattleBufferA -_080D6A68: .4byte gBattlerControllerFuncs -_080D6A6C: .4byte sub_80D4A60 - thumb_func_end sub_80D6A08 - - thumb_func_start sub_80D6A70 -sub_80D6A70: @ 80D6A70 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6A70 - - thumb_func_start sub_80D6A7C -sub_80D6A7C: @ 80D6A7C - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6A7C - - thumb_func_start sub_80D6A88 -sub_80D6A88: @ 80D6A88 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6A88 - - thumb_func_start sub_80D6A94 -sub_80D6A94: @ 80D6A94 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6A94 - - thumb_func_start sub_80D6AA0 -sub_80D6AA0: @ 80D6AA0 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6AA0 - - thumb_func_start sub_80D6AAC -sub_80D6AAC: @ 80D6AAC - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6AAC - - thumb_func_start sub_80D6AB8 -sub_80D6AB8: @ 80D6AB8 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6AB8 - - thumb_func_start sub_80D6AC4 -sub_80D6AC4: @ 80D6AC4 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6AC4 - - thumb_func_start sub_80D6AD0 -sub_80D6AD0: @ 80D6AD0 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6AD0 - - thumb_func_start LinkPartnerHandlecmd37 -LinkPartnerHandlecmd37: @ 80D6ADC - push {lr} - ldr r2, _080D6AF4 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6AF4: .4byte gUnknown_2022870 - thumb_func_end LinkPartnerHandlecmd37 - - thumb_func_start LinkPartnerHandlecmd38 -LinkPartnerHandlecmd38: @ 80D6AF8 - push {lr} - ldr r3, _080D6B24 @ =gUnknown_2022870 - ldr r1, _080D6B28 @ =gBattleBufferA - ldr r0, _080D6B2C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6B24: .4byte gUnknown_2022870 -_080D6B28: .4byte gBattleBufferA -_080D6B2C: .4byte gActiveBattler - thumb_func_end LinkPartnerHandlecmd38 - - thumb_func_start LinkPartnerHandlecmd39 -LinkPartnerHandlecmd39: @ 80D6B30 - push {lr} - ldr r2, _080D6B44 @ =gUnknown_2022870 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6B44: .4byte gUnknown_2022870 - thumb_func_end LinkPartnerHandlecmd39 - - thumb_func_start LinkPartnerHandlecmd40 -LinkPartnerHandlecmd40: @ 80D6B48 - push {lr} - ldr r3, _080D6B6C @ =gUnknown_2022870 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6B6C: .4byte gUnknown_2022870 - thumb_func_end LinkPartnerHandlecmd40 - - thumb_func_start LinkPartnerHandleHitAnimation -LinkPartnerHandleHitAnimation: @ 80D6B70 - push {r4,lr} - ldr r3, _080D6B98 @ =gSprites - ldr r2, _080D6B9C @ =gBattlerSpriteIds - ldr r4, _080D6BA0 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080D6BA4 - bl sub_80D49E8 - b _080D6BCE - .align 2, 0 -_080D6B98: .4byte gSprites -_080D6B9C: .4byte gBattlerSpriteIds -_080D6BA0: .4byte gActiveBattler -_080D6BA4: - ldr r1, _080D6BD4 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _080D6BD8 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6BDC @ =sub_80D4730 - str r1, [r0] -_080D6BCE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6BD4: .4byte gDoingBattleAnim -_080D6BD8: .4byte gBattlerControllerFuncs -_080D6BDC: .4byte sub_80D4730 - thumb_func_end LinkPartnerHandleHitAnimation - - thumb_func_start sub_80D6BE0 -sub_80D6BE0: @ 80D6BE0 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D6BE0 - - thumb_func_start LinkPartnerHandleEffectivenessSound -LinkPartnerHandleEffectivenessSound: @ 80D6BEC - push {r4,lr} - ldr r4, _080D6C28 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _080D6C00 - movs r3, 0xC0 -_080D6C00: - ldr r2, _080D6C2C @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl sub_80D49E8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D6C28: .4byte gActiveBattler -_080D6C2C: .4byte gBattleBufferA - thumb_func_end LinkPartnerHandleEffectivenessSound - - thumb_func_start LinkPartnerHandlecmd44 -LinkPartnerHandlecmd44: @ 80D6C30 - push {lr} - ldr r2, _080D6C58 @ =gBattleBufferA - ldr r0, _080D6C5C @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6C58: .4byte gBattleBufferA -_080D6C5C: .4byte gActiveBattler - thumb_func_end LinkPartnerHandlecmd44 - - thumb_func_start LinkPartnerHandleFaintingCry -LinkPartnerHandleFaintingCry: @ 80D6C60 - push {lr} - ldr r1, _080D6C94 @ =gBattlerPartyIndexes - ldr r0, _080D6C98 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D6C9C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - negs r1, r1 - movs r2, 0x5 - bl PlayCry3 - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6C94: .4byte gBattlerPartyIndexes -_080D6C98: .4byte gActiveBattler -_080D6C9C: .4byte gPlayerParty - thumb_func_end LinkPartnerHandleFaintingCry - - thumb_func_start LinkPartnerHandleIntroSlide -LinkPartnerHandleIntroSlide: @ 80D6CA0 - push {lr} - ldr r1, _080D6CC8 @ =gBattleBufferA - ldr r0, _080D6CCC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _080D6CD0 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D6CC8: .4byte gBattleBufferA -_080D6CCC: .4byte gActiveBattler -_080D6CD0: .4byte gIntroSlideFlags - thumb_func_end LinkPartnerHandleIntroSlide - - thumb_func_start sub_80D6CD4 -sub_80D6CD4: @ 80D6CD4 - push {r4-r7,lr} - ldr r5, _080D6DDC @ =gBattlerSpriteIds - ldr r6, _080D6DE0 @ =gActiveBattler - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080D6DE4 @ =gSprites - adds r0, r4 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080D6DE8 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080D6DEC @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r2, [r6] - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x38] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080D6DF0 @ =sub_80335F8 - bl StoreSpriteCallbackInData6 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080D6DF4 @ =0x0000d6f9 - bl AllocSpritePalette - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r6] - bl GetBattlerMultiplayerId - ldr r4, _080D6DF8 @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - movs r5, 0xFF - ldrb r0, [r1] - cmp r0, 0x2 - beq _080D6DC2 - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r1, [r1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0x1 - beq _080D6DC2 - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1] - ands r5, r0 - cmp r5, 0x3 - bne _080D6DFC -_080D6DC2: - ldr r0, _080D6DE0 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerMultiplayerId - ldr r2, _080D6DF8 @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x13] - adds r0, 0x2 - b _080D6E0C - .align 2, 0 -_080D6DDC: .4byte gBattlerSpriteIds -_080D6DE0: .4byte gActiveBattler -_080D6DE4: .4byte gSprites -_080D6DE8: .4byte 0x0000ffd8 -_080D6DEC: .4byte StartAnimLinearTranslation -_080D6DF0: .4byte sub_80335F8 -_080D6DF4: .4byte 0x0000d6f9 -_080D6DF8: .4byte gLinkPlayers -_080D6DFC: - ldrb r0, [r6] - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x13] -_080D6E0C: - ldr r1, _080D6EA4 @ =gTrainerBackPicPaletteTable - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - lsls r4, r7, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r2, _080D6EA8 @ =gSprites - ldr r1, _080D6EAC @ =gBattlerSpriteIds - ldr r5, _080D6EB0 @ =gActiveBattler - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x5] - ldr r0, _080D6EB4 @ =sub_80D6ED0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080D6EB8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r5] - strh r0, [r1, 0x8] - ldr r3, _080D6EBC @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D6E86 - ldr r0, _080D6EC0 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _080D6EC4 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080D6E86: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080D6EC8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6ECC @ =nullsub_77 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D6EA4: .4byte gTrainerBackPicPaletteTable -_080D6EA8: .4byte gSprites -_080D6EAC: .4byte gBattlerSpriteIds -_080D6EB0: .4byte gActiveBattler -_080D6EB4: .4byte sub_80D6ED0 -_080D6EB8: .4byte gTasks -_080D6EBC: .4byte gBattleSpritesDataPtr -_080D6EC0: .4byte gBattlerStatusSummaryTaskId -_080D6EC4: .4byte Task_HidePartyStatusSummary -_080D6EC8: .4byte gBattlerControllerFuncs -_080D6ECC: .4byte nullsub_77 - thumb_func_end sub_80D6CD4 - - thumb_func_start sub_80D6ED0 -sub_80D6ED0: @ 80D6ED0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080D6EF8 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x17 - bgt _080D6EFC - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _080D6FB8 - .align 2, 0 -_080D6EF8: .4byte gTasks -_080D6EFC: - ldr r7, _080D6F3C @ =gActiveBattler - ldrb r0, [r7] - mov r9, r0 - ldrh r0, [r1, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080D6F1C - ldr r0, _080D6F40 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080D6F4C -_080D6F1C: - ldr r0, _080D6F44 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _080D6F48 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_80D5F40 - b _080D6FA0 - .align 2, 0 -_080D6F3C: .4byte gActiveBattler -_080D6F40: .4byte gBattleTypeFlags -_080D6F44: .4byte gBattleBufferA -_080D6F48: .4byte gBattlerPartyIndexes -_080D6F4C: - ldr r4, _080D6FC4 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r5, _080D6FC8 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_80D5F40 - ldrb r0, [r7] - movs r6, 0x2 - eors r0, r6 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r7] - lsls r0, r1, 1 - adds r0, r5 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080D6FCC @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldrb r0, [r7] - movs r1, 0 - bl sub_80D5F40 - ldrb r0, [r7] - eors r0, r6 - strb r0, [r7] -_080D6FA0: - ldr r1, _080D6FD0 @ =gBattlerControllerFuncs - ldr r2, _080D6FD4 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D6FD8 @ =sub_80D443C - str r1, [r0] - mov r3, r9 - strb r3, [r2] - mov r0, r8 - bl DestroyTask -_080D6FB8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D6FC4: .4byte gBattleBufferA -_080D6FC8: .4byte gBattlerPartyIndexes -_080D6FCC: .4byte gPlayerParty -_080D6FD0: .4byte gBattlerControllerFuncs -_080D6FD4: .4byte gActiveBattler -_080D6FD8: .4byte sub_80D443C - thumb_func_end sub_80D6ED0 - - thumb_func_start sub_80D6FDC -sub_80D6FDC: @ 80D6FDC - push {r4-r6,lr} - ldr r1, _080D7004 @ =gBattleBufferA - ldr r0, _080D7008 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080D700C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080D700C - bl sub_80D49E8 - b _080D7080 - .align 2, 0 -_080D7004: .4byte gBattleBufferA -_080D7008: .4byte gActiveBattler -_080D700C: - ldr r6, _080D7088 @ =gBattleSpritesDataPtr - ldr r0, [r6] - ldr r5, _080D708C @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _080D7090 @ =gUnknown_2022BC8 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl CreatePartyStatusSummarySprites - ldr r2, _080D7094 @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - movs r3, 0 - strb r0, [r1] - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x5] - ldrb r2, [r5] - lsls r0, r2, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080D7074 - ldr r0, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x5D - strb r1, [r0, 0x5] -_080D7074: - ldr r0, _080D7098 @ =gBattlerControllerFuncs - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, _080D709C @ =sub_80D70A0 - str r0, [r1] -_080D7080: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D7088: .4byte gBattleSpritesDataPtr -_080D708C: .4byte gActiveBattler -_080D7090: .4byte gUnknown_2022BC8 -_080D7094: .4byte gBattlerStatusSummaryTaskId -_080D7098: .4byte gBattlerControllerFuncs -_080D709C: .4byte sub_80D70A0 - thumb_func_end sub_80D6FDC - - thumb_func_start sub_80D70A0 -sub_80D70A0: @ 80D70A0 - push {r4,lr} - ldr r4, _080D70E0 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r3, _080D70E4 @ =gActiveBattler - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _080D70D8 - ldr r0, [r4] - ldrb r1, [r3] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x5] - bl sub_80D49E8 -_080D70D8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D70E0: .4byte gBattleSpritesDataPtr -_080D70E4: .4byte gActiveBattler - thumb_func_end sub_80D70A0 - - thumb_func_start sub_80D70E8 -sub_80D70E8: @ 80D70E8 - push {lr} - ldr r0, _080D7124 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080D7128 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D711A - ldr r2, _080D712C @ =gTasks - ldr r0, _080D7130 @ =gBattlerStatusSummaryTaskId - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080D7134 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080D711A: - bl sub_80D49E8 - pop {r0} - bx r0 - .align 2, 0 -_080D7124: .4byte gBattleSpritesDataPtr -_080D7128: .4byte gActiveBattler -_080D712C: .4byte gTasks -_080D7130: .4byte gBattlerStatusSummaryTaskId -_080D7134: .4byte Task_HidePartyStatusSummary - thumb_func_end sub_80D70E8 - - thumb_func_start sub_80D7138 -sub_80D7138: @ 80D7138 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D7138 - - thumb_func_start LinkPartnerHandleSpriteInvisibility -LinkPartnerHandleSpriteInvisibility: @ 80D7144 - push {r4,lr} - ldr r4, _080D7194 @ =gActiveBattler - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _080D718A - ldr r3, _080D7198 @ =gSprites - ldr r0, _080D719C @ =gBattlerSpriteIds - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _080D71A0 @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl CopyBattleSpriteInvisibility -_080D718A: - bl sub_80D49E8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D7194: .4byte gActiveBattler -_080D7198: .4byte gSprites -_080D719C: .4byte gBattlerSpriteIds -_080D71A0: .4byte gBattleBufferA - thumb_func_end LinkPartnerHandleSpriteInvisibility - - thumb_func_start LinkPartnerHandleBattleAnimation -LinkPartnerHandleBattleAnimation: @ 80D71A4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _080D71E8 @ =gActiveBattler - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080D71FC - ldr r5, _080D71EC @ =gBattleBufferA - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _080D71F0 - bl sub_80D49E8 - b _080D71FC - .align 2, 0 -_080D71E8: .4byte gActiveBattler -_080D71EC: .4byte gBattleBufferA -_080D71F0: - ldr r0, _080D7204 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080D7208 @ =sub_80D4A90 - str r0, [r1] -_080D71FC: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D7204: .4byte gBattlerControllerFuncs -_080D7208: .4byte sub_80D4A90 - thumb_func_end LinkPartnerHandleBattleAnimation - - thumb_func_start sub_80D720C -sub_80D720C: @ 80D720C - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D720C - - thumb_func_start sub_80D7218 -sub_80D7218: @ 80D7218 - push {lr} - bl sub_80D49E8 - pop {r0} - bx r0 - thumb_func_end sub_80D7218 - - thumb_func_start LinkPartnerHandlecmd55 -LinkPartnerHandlecmd55: @ 80D7224 - push {r4,lr} - ldr r2, _080D725C @ =gBattleOutcome - ldr r1, _080D7260 @ =gBattleBufferA - ldr r4, _080D7264 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl sub_80D49E8 - ldr r1, _080D7268 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080D726C @ =sub_802F6A8 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D725C: .4byte gBattleOutcome -_080D7260: .4byte gBattleBufferA -_080D7264: .4byte gActiveBattler -_080D7268: .4byte gBattlerControllerFuncs -_080D726C: .4byte sub_802F6A8 - thumb_func_end LinkPartnerHandlecmd55 - - thumb_func_start nullsub_78 -nullsub_78: @ 80D7270 - bx lr - thumb_func_end nullsub_78 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_83F5738.s b/data/data_83F5738.s index 2b5b1d1f9..20cbed093 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -133,10 +133,10 @@ gUnknown_83F846D:: @ 83F846D gUnknown_83F847D:: @ 83F847D .incbin "baserom.gba", 0x3F847D, 0x323 - .section .rodata.83FB134 + .section .rodata.83FB218 -gUnknown_83FB134:: @ 83FB134 - .incbin "baserom.gba", 0x3FB134, 0xA80 +gUnknown_83FB218:: @ 83FB218 + .incbin "baserom.gba", 0x3FB218, 0x99C BattleText_MistShroud:: @ 83FBBB4 .incbin "baserom.gba", 0x3FBBB4, 0x35 diff --git a/include/data2.h b/include/data.h similarity index 97% rename from include/data2.h rename to include/data.h index 1035d78dc..6479237f2 100644 --- a/include/data2.h +++ b/include/data.h @@ -1,5 +1,5 @@ -#ifndef GUARD_DATA2_H -#define GUARD_DATA2_H +#ifndef GUARD_DATA_H +#define GUARD_DATA_H #include "global.h" #include "constants/species.h" @@ -59,4 +59,4 @@ extern const struct SpriteFrameImage gUnknown_8234788[]; extern const struct SpriteFrameImage gUnknown_82347A8[]; extern const struct SpriteFrameImage gUnknown_82347C8[]; -#endif // GUARD_DATA2_H +#endif // GUARD_DATA_H diff --git a/ld_script.txt b/ld_script.txt index aa72bbb9e..6175679d6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -192,7 +192,7 @@ SECTIONS { src/coins.o(.text); src/fldeff_strength.o(.text); src/battle_transition.o(.text); - asm/battle_controller_link_partner.o(.text); + src/battle_controller_link_partner.o(.text); asm/battle_message.o(.text); src/math_util.o(.text); src/roulette_util.o(.text); @@ -426,7 +426,8 @@ SECTIONS { src/battle_records.o(.rodata); data/data_83F5738.o(.rodata.83F6C90); src/battle_transition.o(.rodata); - data/data_83F5738.o(.rodata.83FB134); + src/battle_controller_link_partner.o(.rodata); + data/data_83F5738.o(.rodata.83FB218); src/save.o(.rodata); data/data_83FECCC.o(.rodata); src/battle_controller_safari.o(.rodata); diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 72d3a42fc..59f8f9741 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "data2.h" +#include "data.h" #include "link.h" #include "main.h" #include "m4a.h" @@ -535,7 +535,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst) moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size); } moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES); - src = (u8*)(&moveData); + src = (u8 *)(&moveData); for (size = 0; size < sizeof(moveData); ++size) dst[size] = src[size]; break; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c new file mode 100644 index 000000000..96130f049 --- /dev/null +++ b/src/battle_controller_link_partner.c @@ -0,0 +1,1599 @@ +#include "global.h" +#include "bg.h" +#include "data.h" +#include "link.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "pokeball.h" +#include "pokemon.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "util.h" +#include "window.h" +#include "battle.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "reshow_battle_screen.h" +#include "constants/battle_anim.h" +#include "constants/songs.h" + +static void LinkPartnerHandleGetMonData(void); +static void LinkPartnerHandleGetRawMonData(void); +static void LinkPartnerHandleSetMonData(void); +static void LinkPartnerHandleSetRawMonData(void); +static void LinkPartnerHandleLoadMonSprite(void); +static void LinkPartnerHandleSwitchInAnim(void); +static void LinkPartnerHandleReturnMonToBall(void); +static void LinkPartnerHandleDrawTrainerPic(void); +static void LinkPartnerHandleTrainerSlide(void); +static void LinkPartnerHandleTrainerSlideBack(void); +static void LinkPartnerHandleFaintAnimation(void); +static void LinkPartnerHandlePaletteFade(void); +static void LinkPartnerHandleSuccessBallThrowAnim(void); +static void LinkPartnerHandleBallThrowAnim(void); +static void LinkPartnerHandlePause(void); +static void LinkPartnerHandleMoveAnimation(void); +static void LinkPartnerHandlePrintString(void); +static void LinkPartnerHandlePrintSelectionString(void); +static void LinkPartnerHandleChooseAction(void); +static void LinkPartnerHandleUnknownYesNoBox(void); +static void LinkPartnerHandleChooseMove(void); +static void LinkPartnerHandleChooseItem(void); +static void LinkPartnerHandleChoosePokemon(void); +static void LinkPartnerHandleCmd23(void); +static void LinkPartnerHandleHealthBarUpdate(void); +static void LinkPartnerHandleExpUpdate(void); +static void LinkPartnerHandleStatusIconUpdate(void); +static void LinkPartnerHandleStatusAnimation(void); +static void LinkPartnerHandleStatusXor(void); +static void LinkPartnerHandleDataTransfer(void); +static void LinkPartnerHandleDMA3Transfer(void); +static void LinkPartnerHandlePlayBGM(void); +static void LinkPartnerHandleCmd32(void); +static void LinkPartnerHandleTwoReturnValues(void); +static void LinkPartnerHandleChosenMonReturnValue(void); +static void LinkPartnerHandleOneReturnValue(void); +static void LinkPartnerHandleOneReturnValue_Duplicate(void); +static void LinkPartnerHandleCmd37(void); +static void LinkPartnerHandleCmd38(void); +static void LinkPartnerHandleCmd39(void); +static void LinkPartnerHandleCmd40(void); +static void LinkPartnerHandleHitAnimation(void); +static void LinkPartnerHandleCmd42(void); +static void LinkPartnerHandlePlaySE(void); +static void LinkPartnerHandlePlayFanfare(void); +static void LinkPartnerHandleFaintingCry(void); +static void LinkPartnerHandleIntroSlide(void); +static void LinkPartnerHandleIntroTrainerBallThrow(void); +static void LinkPartnerHandleDrawPartyStatusSummary(void); +static void LinkPartnerHandleHidePartyStatusSummary(void); +static void LinkPartnerHandleEndBounceEffect(void); +static void LinkPartnerHandleSpriteInvisibility(void); +static void LinkPartnerHandleBattleAnimation(void); +static void LinkPartnerHandleLinkStandbyMsg(void); +static void LinkPartnerHandleResetActionMoveSelection(void); +static void LinkPartnerHandleCmd55(void); +static void LinkPartnerCmdEnd(void); + +static void LinkPartnerBufferRunCommand(void); +static void LinkPartnerBufferExecCompleted(void); +static void sub_80D481C(void); +static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst); +static void SetLinkPartnerMonData(u8 monId); +static void sub_80D5F40(u8 battlerId, bool8 dontClearSubstituteBit); +static void DoSwitchOutAnimation(void); +static void LinkPartnerDoMoveAnimation(void); +static void sub_80D6ED0(u8 taskId); +static void sub_80D70A0(void); + +static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + LinkPartnerHandleGetMonData, + LinkPartnerHandleGetRawMonData, + LinkPartnerHandleSetMonData, + LinkPartnerHandleSetRawMonData, + LinkPartnerHandleLoadMonSprite, + LinkPartnerHandleSwitchInAnim, + LinkPartnerHandleReturnMonToBall, + LinkPartnerHandleDrawTrainerPic, + LinkPartnerHandleTrainerSlide, + LinkPartnerHandleTrainerSlideBack, + LinkPartnerHandleFaintAnimation, + LinkPartnerHandlePaletteFade, + LinkPartnerHandleSuccessBallThrowAnim, + LinkPartnerHandleBallThrowAnim, + LinkPartnerHandlePause, + LinkPartnerHandleMoveAnimation, + LinkPartnerHandlePrintString, + LinkPartnerHandlePrintSelectionString, + LinkPartnerHandleChooseAction, + LinkPartnerHandleUnknownYesNoBox, + LinkPartnerHandleChooseMove, + LinkPartnerHandleChooseItem, + LinkPartnerHandleChoosePokemon, + LinkPartnerHandleCmd23, + LinkPartnerHandleHealthBarUpdate, + LinkPartnerHandleExpUpdate, + LinkPartnerHandleStatusIconUpdate, + LinkPartnerHandleStatusAnimation, + LinkPartnerHandleStatusXor, + LinkPartnerHandleDataTransfer, + LinkPartnerHandleDMA3Transfer, + LinkPartnerHandlePlayBGM, + LinkPartnerHandleCmd32, + LinkPartnerHandleTwoReturnValues, + LinkPartnerHandleChosenMonReturnValue, + LinkPartnerHandleOneReturnValue, + LinkPartnerHandleOneReturnValue_Duplicate, + LinkPartnerHandleCmd37, + LinkPartnerHandleCmd38, + LinkPartnerHandleCmd39, + LinkPartnerHandleCmd40, + LinkPartnerHandleHitAnimation, + LinkPartnerHandleCmd42, + LinkPartnerHandlePlaySE, + LinkPartnerHandlePlayFanfare, + LinkPartnerHandleFaintingCry, + LinkPartnerHandleIntroSlide, + LinkPartnerHandleIntroTrainerBallThrow, + LinkPartnerHandleDrawPartyStatusSummary, + LinkPartnerHandleHidePartyStatusSummary, + LinkPartnerHandleEndBounceEffect, + LinkPartnerHandleSpriteInvisibility, + LinkPartnerHandleBattleAnimation, + LinkPartnerHandleLinkStandbyMsg, + LinkPartnerHandleResetActionMoveSelection, + LinkPartnerHandleCmd55, + LinkPartnerCmdEnd +}; + +static void nullsub_77(void) +{ +} + +void SetControllerToLinkPartner(void) +{ + gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand; +} + +static void LinkPartnerBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkPartnerBufferCommands)) + sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + LinkPartnerBufferExecCompleted(); + } +} + +static void CompleteOnBattlerSpriteCallbackDummy(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + LinkPartnerBufferExecCompleted(); +} + +static void sub_80D42A8(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + nullsub_16(0); + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + LinkPartnerBufferExecCompleted(); + } +} + +static void sub_80D4310(void) +{ + if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + LinkPartnerBufferExecCompleted(); + } +} + +static void sub_80D4358(void) +{ + bool32 var = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + var = TRUE; + } + else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy + && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + { + var = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + var = FALSE; + if (var) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3; + gBattlerControllerFuncs[gActiveBattler] = sub_80D4310; + } +} + +static void sub_80D443C(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 != 1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0; + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_80D4358; + } + } +} + +static void sub_80D4590(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) + LinkPartnerBufferExecCompleted(); +} + +static void CompleteOnHealthbarDone(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + LinkPartnerBufferExecCompleted(); + } +} + +static void sub_80D4640(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkPartnerBufferExecCompleted(); + } +} + +static void sub_80D46A8(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkPartnerBufferExecCompleted(); + } +} + +static void CompleteOnInactiveTextPrinter(void) +{ + if (!IsTextPrinterActive(0)) + LinkPartnerBufferExecCompleted(); +} + +static void DoHitAnimBlinkSpriteEffect(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + LinkPartnerBufferExecCompleted(); + } + else + { + if (!(gSprites[spriteId].data[1] % 4)) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +static void sub_80D47AC(void) +{ + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattlerControllerFuncs[gActiveBattler] = sub_80D481C; + } +} + +static void sub_80D481C(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + LinkPartnerBufferExecCompleted(); +} + +static void sub_80D484C(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + CopyBattleSpriteInvisibility(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_80D47AC; + } +} + +static void sub_80D4944(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + gBattlerControllerFuncs[gActiveBattler] = sub_80D484C; + } +} + +static void LinkPartnerBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +static void CompleteOnFinishedStatusAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + LinkPartnerBufferExecCompleted(); +} + +static void CompleteOnFinishedBattleAnimation(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (!gBattleBufferA[gActiveBattler][2]) + { + size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyLinkPartnerMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + LinkPartnerBufferExecCompleted(); +} + +static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + src = (u8 *)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +static void LinkPartnerHandleGetRawMonData(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (!gBattleBufferA[gActiveBattler][2]) + { + SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetLinkPartnerMonData(i); + monToCheck >>= 1; + } + } + LinkPartnerBufferExecCompleted(); +} + +static void SetLinkPartnerMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); +} + +static void LinkPartnerHandleSetRawMonData(void) +{ + u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + dst[i] = gBattleBufferA[gActiveBattler][3 + i]; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleLoadMonSprite(void) +{ + u16 species; + + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(gActiveBattler, 2), + GetBattlerSpriteDefault_Y(gActiveBattler), + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]); + gBattlerControllerFuncs[gActiveBattler] = sub_80D4590; +} + +static void LinkPartnerHandleSwitchInAnim(void) +{ + ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + sub_80D5F40(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerControllerFuncs[gActiveBattler] = sub_80D4944; +} + +static void sub_80D5F40(u8 battlerId, bool8 dontClearSubstituteBit) +{ + u16 species; + + ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit); + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT); +} + +static void LinkPartnerHandleReturnMonToBall(void) +{ + if (!gBattleBufferA[gActiveBattler][1]) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + LinkPartnerBufferExecCompleted(); + } +} + +static void DoSwitchOutAnimation(void) +{ + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_80D46A8; + } + break; + } +} + +static void LinkPartnerHandleDrawTrainerPic(void) +{ + s16 xPos; + u32 trainerPicId; + + if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right. + xPos = 90; + else // First mon, on the left. + xPos = 32; + if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD) + trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2; + else + trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0; + DecompressTrainerBackPalette(trainerPicId, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void LinkPartnerHandleTrainerSlide(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleTrainerSlideBack(void) +{ + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); + gBattlerControllerFuncs[gActiveBattler] = sub_80D42A8; +} + +static void LinkPartnerHandleFaintAnimation(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110; + gBattlerControllerFuncs[gActiveBattler] = sub_80D4640; + } + } +} + +static void LinkPartnerHandlePaletteFade(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleSuccessBallThrowAnim(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleBallThrowAnim(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandlePause(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE + { + LinkPartnerBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation; + } + } +} + +static void LinkPartnerDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + u8 multihit = gBattleBufferA[gActiveBattler][11]; + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + { + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0; + } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + LinkPartnerBufferExecCompleted(); + } + break; + } +} + +static void LinkPartnerHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; +} + +static void LinkPartnerHandlePrintSelectionString(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleChooseAction(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleUnknownYesNoBox(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleChooseMove(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleChooseItem(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleChoosePokemon(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd23(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void LinkPartnerHandleExpUpdate(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 battlerId; + + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); + battlerId = gActiveBattler; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void LinkPartnerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24)); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + } +} + +static void LinkPartnerHandleStatusXor(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleDataTransfer(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleDMA3Transfer(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandlePlayBGM(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd32(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleTwoReturnValues(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleChosenMonReturnValue(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleOneReturnValue(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleOneReturnValue_Duplicate(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd37(void) +{ + gUnknown_2022870.field_0 = 0; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd38(void) +{ + gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1]; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd39(void) +{ + gUnknown_2022870.flag_x80 = 0; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd40(void) +{ + gUnknown_2022870.flag_x80 ^= 1; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + LinkPartnerBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void LinkPartnerHandleCmd42(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandlePlaySE(void) +{ + s8 pan; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + pan = SOUND_PAN_ATTACKER; + else + pan = SOUND_PAN_TARGET; + PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan); + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry3(species, -25, 5); + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + u32 trainerPicId; + + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + paletteNum = AllocSpritePalette(0xD6F9); + if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD) + trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2; + else + trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0; + LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; + taskId = CreateTask(sub_80D6ED0, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_77; +} + +static void sub_80D6ED0(u8 taskId) +{ + if (gTasks[taskId].data[1] < 24) + { + ++gTasks[taskId].data[1]; + } + else + { + u8 savedActiveBattler = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_80D5F40(gActiveBattler, FALSE); + } + else + { + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_80D5F40(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + sub_80D5F40(gActiveBattler, FALSE); + gActiveBattler ^= BIT_FLANK; + } + gBattlerControllerFuncs[gActiveBattler] = sub_80D443C; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); + } +} + +static void LinkPartnerHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + LinkPartnerBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1; + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + + if (gBattleBufferA[gActiveBattler][2]) + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D; + + gBattlerControllerFuncs[gActiveBattler] = sub_80D70A0; + } +} + +static void sub_80D70A0(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0; + LinkPartnerBufferExecCompleted(); + } +} + +static void LinkPartnerHandleHidePartyStatusSummary(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleEndBounceEffect(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleSpriteInvisibility(void) +{ + if (IsBattlerSpritePresent(gActiveBattler)) + { + gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1]; + CopyBattleSpriteInvisibility(gActiveBattler); + } + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + LinkPartnerBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; + } +} + +static void LinkPartnerHandleLinkStandbyMsg(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleResetActionMoveSelection(void) +{ + LinkPartnerBufferExecCompleted(); +} + +static void LinkPartnerHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + LinkPartnerBufferExecCompleted(); + gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8; +} + +static void LinkPartnerCmdEnd(void) +{ +} diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index e5288194b..794b83b73 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "data2.h" +#include "data.h" #include "item.h" #include "link.h" #include "main.h" diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 0b1257e1a..a628a1280 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "data2.h" +#include "data.h" #include "item.h" #include "item_menu.h" #include "link.h" diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 2246f17bb..df7d4fe02 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -5,7 +5,7 @@ #include "battle_interface.h" #include "battle_message.h" #include "bg.h" -#include "data2.h" +#include "data.h" #include "item_menu.h" #include "link.h" #include "main.h" diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 315696388..912c98410 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -8,7 +8,7 @@ #include "decompress.h" #include "palette.h" #include "sprite.h" -#include "data2.h" +#include "data.h" #include "util.h" #include "party_menu.h" #include "battle.h" diff --git a/src/item_pc.c b/src/item_pc.c index 8f1fd1cbf..ca8c5bb8c 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "data2.h" +#include "data.h" #include "decompress.h" #include "gpu_regs.h" #include "graphics.h" diff --git a/src/pokemon.c b/src/pokemon.c index d840efa91..e21643c51 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5,7 +5,7 @@ #include "random.h" #include "main.h" #include "text.h" -#include "data2.h" +#include "data.h" #include "string_util.h" #include "battle.h" #include "battle_main.h" @@ -13,7 +13,7 @@ #include "event_data.h" #include "util.h" #include "pokemon_storage_system.h" -#include "data2.h" +#include "data.h" #include "battle_gfx_sfx_util.h" #include "battle_controllers.h" #include "evolution_scene.h" diff --git a/src/quest_log.c b/src/quest_log.c index 0d1cb7984..e88285995 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,7 +1,7 @@ #include "global.h" #include "constants/species.h" #include "constants/items.h" -#include "data2.h" +#include "data.h" #include "malloc.h" #include "main.h" #include "task.h" diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index c75e8c583..6dd743176 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -4,7 +4,7 @@ #include "pokemon.h" #include "main.h" #include "link.h" -#include "data2.h" +#include "data.h" #include "sprite.h" #include "text.h" #include "gpu_regs.h" diff --git a/src/scrcmd.c b/src/scrcmd.c index cef1a1eb7..bcf8c231d 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -25,7 +25,7 @@ #include "start_menu.h" #include "script_menu.h" #include "string_util.h" -#include "data2.h" +#include "data.h" #include "field_specials.h" #include "constants/items.h" #include "script_pokemon_util_80A0058.h" diff --git a/src/tm_case.c b/src/tm_case.c index 79e10bcfc..ac737af5d 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -21,7 +21,7 @@ #include "pokemon_storage_system.h" #include "string_util.h" #include "party_menu.h" -#include "data2.h" +#include "data.h" #include "scanline_effect.h" #include "sound.h" #include "strings.h" From 3459fbb9a39d267c4d566e80cbab9a1d334135ab Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 23 Aug 2019 15:54:19 +0800 Subject: [PATCH 021/100] battle_script_commands data decomp --- asm/battle_2.s | 4 +- asm/battle_script_commands.s | 462 ++++----- asm/evolution_scene.s | 16 +- asm/macros/battle_script.inc | 2 +- .../payload/asm/macros/battle_script.inc | 2 +- data/battle_scripts_1.s | 37 +- data/data.s | 51 - graphics/battle_interface/unk_battlebox.pal | 19 + graphics/battle_interface/unk_battlebox.png | Bin 0 -> 170 bytes include/battle_script_commands.h | 2 +- include/battle_scripts.h | 1 + ld_script.txt | 3 +- src/battle_script_commands.c | 877 ++++++++++++++++++ 13 files changed, 1178 insertions(+), 298 deletions(-) create mode 100644 graphics/battle_interface/unk_battlebox.pal create mode 100644 graphics/battle_interface/unk_battlebox.png create mode 100644 src/battle_script_commands.c diff --git a/asm/battle_2.s b/asm/battle_2.s index c87c81841..af4b972ab 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -12250,14 +12250,14 @@ _08016048: cmp r0, 0x1F bne _08016096 adds r0, r2, 0 - bl BankGetTurnOrder + bl GetBattlerTurnOrderNum lsls r0, 24 lsrs r0, 24 ldr r3, [sp] cmp r0, r3 bcs _08016096 ldrb r0, [r4] - bl BankGetTurnOrder + bl GetBattlerTurnOrderNum lsls r0, 24 lsrs r0, 24 str r0, [sp] diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 4bc9cd976..a7a115c1f 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -783,8 +783,8 @@ _0801DDBA: bx r1 thumb_func_end AccuracyCalcHelper - thumb_func_start sub_801DDC4 -sub_801DDC4: @ 801DDC4 + thumb_func_start atk01_accuracycheck +atk01_accuracycheck: @ 801DDC4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1074,7 +1074,7 @@ _0801DFC0: movs r0, 0x32 mov r8, r0 _0801E012: - ldr r1, _0801E108 @ =gUnknown_82504FC + ldr r1, _0801E108 @ =sAccuracyStageRatios lsls r0, r5, 24 asrs r0, 22 adds r0, r1 @@ -1191,7 +1191,7 @@ _0801E0D4: _0801E0FC: .4byte gBattlerAttacker _0801E100: .4byte gBattleMoves _0801E104: .4byte gBattleWeather -_0801E108: .4byte gUnknown_82504FC +_0801E108: .4byte sAccuracyStageRatios _0801E10C: .4byte gBattleMons _0801E110: .4byte gBattlerTarget _0801E114: .4byte gEnigmaBerries @@ -1286,7 +1286,7 @@ _0801E1C2: bx r0 .align 2, 0 _0801E1D4: .4byte gBattleCommunication - thumb_func_end sub_801DDC4 + thumb_func_end atk01_accuracycheck thumb_func_start atk02_attackstring atk02_attackstring: @ 801E1D8 @@ -1563,8 +1563,8 @@ _0801E400: .4byte 0xfffff7ff _0801E404: .4byte gBattlescriptCurrInstr thumb_func_end atk03_ppreduce - thumb_func_start sub_801E408 -sub_801E408: @ 801E408 + thumb_func_start atk04_critcalc +atk04_critcalc: @ 801E408 push {r4-r7,lr} ldr r1, _0801E42C @ =gBattleMons ldr r0, _0801E430 @ =gBattlerAttacker @@ -1714,7 +1714,7 @@ _0801E4F0: cmp r0, 0 bne _0801E580 bl Random - ldr r2, _0801E578 @ =gUnknown_8250530 + ldr r2, _0801E578 @ =sCriticalHitChance lsls r1, r5, 1 adds r1, r2 lsls r0, 16 @@ -1748,7 +1748,7 @@ _0801E55A: _0801E56C: .4byte gBattlerTarget _0801E570: .4byte gStatuses3 _0801E574: .4byte gBattleTypeFlags -_0801E578: .4byte gUnknown_8250530 +_0801E578: .4byte sCriticalHitChance _0801E57C: .4byte gCritMultiplier _0801E580: ldr r1, _0801E594 @ =gCritMultiplier @@ -1765,7 +1765,7 @@ _0801E584: .align 2, 0 _0801E594: .4byte gCritMultiplier _0801E598: .4byte gBattlescriptCurrInstr - thumb_func_end sub_801E408 + thumb_func_end atk04_critcalc thumb_func_start atk05_damagecalc atk05_damagecalc: @ 801E59C @@ -3788,8 +3788,8 @@ _0801F580: .4byte gBattlescriptCurrInstr _0801F584: .4byte gUnknown_81D89F1 thumb_func_end atk09_attackanimation - thumb_func_start sub_801F588 -sub_801F588: @ 801F588 + thumb_func_start atk0A_waitanimation +atk0A_waitanimation: @ 801F588 push {lr} ldr r0, _0801F5A0 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -3805,7 +3805,7 @@ _0801F59A: .align 2, 0 _0801F5A0: .4byte gBattleControllerExecFlags _0801F5A4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_801F588 + thumb_func_end atk0A_waitanimation thumb_func_start atk0B_healthbarupdate atk0B_healthbarupdate: @ 801F5A8 @@ -4979,8 +4979,8 @@ _0801FEE0: .4byte gActiveBattler _0801FEE4: .4byte gBattlerAttacker thumb_func_end atk14_printselectionstringfromtable - thumb_func_start BankGetTurnOrder -BankGetTurnOrder: @ 801FEE8 + thumb_func_start GetBattlerTurnOrderNum +GetBattlerTurnOrderNum: @ 801FEE8 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 @@ -5010,7 +5010,7 @@ _0801FF0E: .align 2, 0 _0801FF18: .4byte gBattlersCount _0801FF1C: .4byte gBattlerByTurnOrder - thumb_func_end BankGetTurnOrder + thumb_func_end GetBattlerTurnOrderNum thumb_func_start SetMoveEffect SetMoveEffect: @ 801FF20 @@ -5180,7 +5180,7 @@ _08020068: bls _08020074 b _080206A2 _08020074: - ldr r1, _080200B8 @ =gUnknown_825053C + ldr r1, _080200B8 @ =sStatusFlagsForMoveEffects ldrb r0, [r6, 0x3] lsls r0, 2 adds r0, r1 @@ -5208,7 +5208,7 @@ _080200A8: .4byte gBattleMons _080200AC: .4byte gHitMarker _080200B0: .4byte gBattleCommunication _080200B4: .4byte gSideStatuses -_080200B8: .4byte gUnknown_825053C +_080200B8: .4byte sStatusFlagsForMoveEffects _080200BC: cmp r0, 0x40 bne _080200C2 @@ -5838,7 +5838,7 @@ _08020578: ldr r0, [r0] adds r0, 0x1 bl BattleScriptPush - ldr r1, _080205BC @ =gUnknown_825053C + ldr r1, _080205BC @ =sStatusFlagsForMoveEffects ldr r0, _080205C0 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -5864,7 +5864,7 @@ _08020578: .align 2, 0 _080205B4: .4byte gMoveResultFlags _080205B8: .4byte gBattlescriptCurrInstr -_080205BC: .4byte gUnknown_825053C +_080205BC: .4byte sStatusFlagsForMoveEffects _080205C0: .4byte gBattleCommunication _080205C4: .4byte gBattleMons _080205C8: .4byte gEffectBattler @@ -5881,7 +5881,7 @@ _080205CC: str r0, [r1] _080205E0: ldr r2, _08020638 @ =gBattlescriptCurrInstr - ldr r1, _0802063C @ =gUnknown_825062C + ldr r1, _0802063C @ =sMoveEffectBS_Ptrs ldr r5, _08020640 @ =gBattleCommunication ldrb r0, [r5, 0x3] lsls r0, 2 @@ -5922,7 +5922,7 @@ _080205E0: _08020630: .4byte gBattleMons _08020634: .4byte gEffectBattler _08020638: .4byte gBattlescriptCurrInstr -_0802063C: .4byte gUnknown_825062C +_0802063C: .4byte sMoveEffectBS_Ptrs _08020640: .4byte gBattleCommunication _08020644: .4byte gActiveBattler _08020648: .4byte gUnknown_2023C30 @@ -5973,7 +5973,7 @@ _080206A2: mov r0, r8 adds r0, 0x50 adds r1, r0 - ldr r2, _080206DC @ =gUnknown_825053C + ldr r2, _080206DC @ =sStatusFlagsForMoveEffects ldrb r3, [r6, 0x3] lsls r0, r3, 2 adds r0, r2 @@ -5995,7 +5995,7 @@ _080206D0: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080206DC: .4byte gUnknown_825053C +_080206DC: .4byte sStatusFlagsForMoveEffects _080206E0: .4byte _080206E4 .align 2, 0 _080206E4: @@ -6095,7 +6095,7 @@ _080207E6: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _08020824 @ =gUnknown_825062C + ldr r1, _08020824 @ =sMoveEffectBS_Ptrs ldr r0, _08020828 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -6104,7 +6104,7 @@ _080207E6: bl _08021108 .align 2, 0 _08020820: .4byte gBattlescriptCurrInstr -_08020824: .4byte gUnknown_825062C +_08020824: .4byte sMoveEffectBS_Ptrs _08020828: .4byte gBattleCommunication _0802082C: mov r0, r9 @@ -6139,7 +6139,7 @@ _08020868: .4byte gBattlescriptCurrInstr _0802086C: .4byte gUnknown_81D9452 _08020870: adds r0, r2, 0 - bl BankGetTurnOrder + bl GetBattlerTurnOrderNum ldr r1, _080208AC @ =gUnknown_2023BE2 lsls r0, 24 lsrs r0, 24 @@ -6155,7 +6155,7 @@ _08020886: mov r0, r8 adds r0, 0x50 adds r2, r0 - ldr r1, _080208B0 @ =gUnknown_825053C + ldr r1, _080208B0 @ =sStatusFlagsForMoveEffects ldr r0, _080208B4 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -6167,7 +6167,7 @@ _08020886: bl _080210EC .align 2, 0 _080208AC: .4byte gUnknown_2023BE2 -_080208B0: .4byte gUnknown_825053C +_080208B0: .4byte sStatusFlagsForMoveEffects _080208B4: .4byte gBattleCommunication _080208B8: mov r3, r9 @@ -6212,7 +6212,7 @@ _080208D4: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _0802092C @ =gUnknown_825062C + ldr r1, _0802092C @ =sMoveEffectBS_Ptrs ldr r0, _08020930 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -6223,7 +6223,7 @@ _080208D4: _08020920: .4byte gUnknown_2023DB8 _08020924: .4byte gCurrentMove _08020928: .4byte gBattlescriptCurrInstr -_0802092C: .4byte gUnknown_825062C +_0802092C: .4byte sMoveEffectBS_Ptrs _08020930: .4byte gBattleCommunication _08020934: ldr r5, _08020984 @ =gBattlerAttacker @@ -6258,7 +6258,7 @@ _0802096C: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _08020998 @ =gUnknown_825062C + ldr r1, _08020998 @ =sMoveEffectBS_Ptrs ldr r0, _0802099C @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -6271,7 +6271,7 @@ _08020988: .4byte gUnknown_2023E7E _0802098C: .4byte gBattleMons _08020990: .4byte 0x0000ffff _08020994: .4byte gBattlescriptCurrInstr -_08020998: .4byte gUnknown_825062C +_08020998: .4byte sMoveEffectBS_Ptrs _0802099C: .4byte gBattleCommunication _080209A0: mov r4, r9 @@ -6390,7 +6390,7 @@ _08020A3C: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _08020AE0 @ =gUnknown_825062C + ldr r1, _08020AE0 @ =sMoveEffectBS_Ptrs ldr r2, _08020AE4 @ =gBattleCommunication ldrb r0, [r2, 0x3] lsls r0, 2 @@ -6430,7 +6430,7 @@ _08020AD0: .4byte gBattleStruct _08020AD4: .4byte gCurrentMove _08020AD8: .4byte gBattlerAttacker _08020ADC: .4byte gBattlescriptCurrInstr -_08020AE0: .4byte gUnknown_825062C +_08020AE0: .4byte sMoveEffectBS_Ptrs _08020AE4: .4byte gBattleCommunication _08020AE8: .4byte gUnknown_83FE664 _08020AEC: @@ -6452,7 +6452,7 @@ _08020B04: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _08020B28 @ =gUnknown_825062C + ldr r1, _08020B28 @ =sMoveEffectBS_Ptrs ldr r0, _08020B2C @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -6463,7 +6463,7 @@ _08020B04: _08020B1C: .4byte gBattleMoveDamage _08020B20: .4byte gUnknown_2023D54 _08020B24: .4byte gBattlescriptCurrInstr -_08020B28: .4byte gUnknown_825062C +_08020B28: .4byte sMoveEffectBS_Ptrs _08020B2C: .4byte gBattleCommunication _08020B30: ldrb r1, [r6, 0x3] @@ -6993,7 +6993,7 @@ _08020F8E: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r1, _08020FB4 @ =gUnknown_825062C + ldr r1, _08020FB4 @ =sMoveEffectBS_Ptrs ldr r0, _08020FB8 @ =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 @@ -7004,7 +7004,7 @@ _08020F8E: _08020FA8: .4byte gBattleMoveDamage _08020FAC: .4byte gUnknown_2023D54 _08020FB0: .4byte gBattlescriptCurrInstr -_08020FB4: .4byte gUnknown_825062C +_08020FB4: .4byte sMoveEffectBS_Ptrs _08020FB8: .4byte gBattleCommunication _08020FBC: mov r4, r9 @@ -7344,7 +7344,7 @@ _08021264: adds r1, 0x50 _0802126E: adds r2, r1 - ldr r1, _0802129C @ =gUnknown_825053C + ldr r1, _0802129C @ =sStatusFlagsForMoveEffects ldrb r0, [r3, 0x3] lsls r0, 2 adds r0, r1 @@ -7365,7 +7365,7 @@ _0802126E: bx r0 .align 2, 0 _08021298: .4byte gBattleMons -_0802129C: .4byte gUnknown_825053C +_0802129C: .4byte sStatusFlagsForMoveEffects _080212A0: .4byte gBattleCommunication _080212A4: .4byte gBattlescriptCurrInstr _080212A8: .4byte gBattleScripting @@ -7723,8 +7723,8 @@ _08021592: bx r0 thumb_func_end atk19_tryfaintmon - thumb_func_start atk1A_faint_animation -atk1A_faint_animation: @ 80215A0 + thumb_func_start atk1A_dofaintanimation +atk1A_dofaintanimation: @ 80215A0 push {r4,r5,lr} ldr r0, _080215D0 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -7751,10 +7751,10 @@ _080215CA: _080215D0: .4byte gBattleControllerExecFlags _080215D4: .4byte gBattlescriptCurrInstr _080215D8: .4byte gActiveBattler - thumb_func_end atk1A_faint_animation + thumb_func_end atk1A_dofaintanimation - thumb_func_start atk1B_faint_effects_clear -atk1B_faint_effects_clear: @ 80215DC + thumb_func_start atk1B_cleareffectsonfaint +atk1B_cleareffectsonfaint: @ 80215DC push {r4-r6,lr} sub sp, 0x4 ldr r0, _08021630 @ =gBattleControllerExecFlags @@ -7799,7 +7799,7 @@ _08021630: .4byte gBattleControllerExecFlags _08021634: .4byte gBattlescriptCurrInstr _08021638: .4byte gActiveBattler _0802163C: .4byte gBattleMons - thumb_func_end atk1B_faint_effects_clear + thumb_func_end atk1B_cleareffectsonfaint thumb_func_start atk1C_jumpifstatus atk1C_jumpifstatus: @ 8021640 @@ -8347,8 +8347,8 @@ _08021A60: bx r0 thumb_func_end atk22_jumpiftype - thumb_func_start sub_8021A68 -sub_8021A68: @ 8021A68 + thumb_func_start atk23_getexp +atk23_getexp: @ 8021A68 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -9476,10 +9476,10 @@ _080223E8: .4byte gBattleControllerExecFlags _080223EC: .4byte gBattleMons _080223F0: .4byte gBattlerFainted _080223F4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8021A68 + thumb_func_end atk23_getexp - thumb_func_start sub_80223F8 -sub_80223F8: @ 80223F8 + thumb_func_start atk24 +atk24: @ 80223F8 push {r4-r7,lr} mov r7, r8 push {r7} @@ -9691,7 +9691,7 @@ _0802258A: bx r0 .align 2, 0 _08022594: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80223F8 + thumb_func_end atk24 thumb_func_start MoveValuesCleanUp MoveValuesCleanUp: @ 8022598 @@ -10641,8 +10641,8 @@ _08022C40: .4byte gBattlescriptCurrInstr _08022C44: .4byte gUnknown_2023E7C thumb_func_end atk39_pause - thumb_func_start sub_8022C48 -sub_8022C48: @ 8022C48 + thumb_func_start atk3A_waitstate +atk3A_waitstate: @ 8022C48 push {lr} ldr r0, _08022C60 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -10658,7 +10658,7 @@ _08022C5A: .align 2, 0 _08022C60: .4byte gBattleControllerExecFlags _08022C64: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8022C48 + thumb_func_end atk3A_waitstate thumb_func_start atk3B_healthbar_update atk3B_healthbar_update: @ 8022C68 @@ -10905,8 +10905,8 @@ _08022E2C: .4byte gBattlerAttacker _08022E30: .4byte gBattleStruct thumb_func_end atk44_endselectionscript - thumb_func_start sub_8022E34 -sub_8022E34: @ 8022E34 + thumb_func_start atk45_playanimation +atk45_playanimation: @ 8022E34 push {r4-r6,lr} ldr r4, _08022E84 @ =gBattlescriptCurrInstr ldr r0, [r4] @@ -10998,7 +10998,7 @@ _08022EEC: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8022E34 + thumb_func_end atk45_playanimation thumb_func_start atk46_playanimation2 atk46_playanimation2: @ 8022EF4 @@ -13042,8 +13042,8 @@ _08023F40: .4byte gBattleStruct _08023F44: .4byte gBitTable thumb_func_end atk4C_getswitchedmondata - thumb_func_start sub_8023F48 -sub_8023F48: @ 8023F48 + thumb_func_start atk4D_switchindataupdate +atk4D_switchindataupdate: @ 8023F48 push {r4-r7,lr} sub sp, 0x58 ldr r0, _080240A0 @ =gBattleControllerExecFlags @@ -13231,10 +13231,10 @@ _080240C4: .4byte gBattleMoves _080240C8: .4byte gCurrentMove _080240CC: .4byte gBattleScripting _080240D0: .4byte gBattleTextBuff1 - thumb_func_end sub_8023F48 + thumb_func_end atk4D_switchindataupdate - thumb_func_start sub_80240D4 -sub_80240D4: @ 80240D4 + thumb_func_start atk4E_switchinanim +atk4E_switchinanim: @ 80240D4 push {r4-r6,lr} ldr r0, _08024168 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -13314,10 +13314,10 @@ _0802417C: .4byte gBattleMons _08024180: .4byte gAbsentBattlerFlags _08024184: .4byte gBitTable _08024188: .4byte gBattlerPartyIndexes - thumb_func_end sub_80240D4 + thumb_func_end atk4E_switchinanim - thumb_func_start sub_802418C -sub_802418C: @ 802418C + thumb_func_start atk4F_jumpifcantswitch +atk4F_jumpifcantswitch: @ 802418C push {r4-r7,lr} mov r7, r8 push {r7} @@ -13573,7 +13573,7 @@ _08024388: bx r0 .align 2, 0 _08024394: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802418C + thumb_func_end atk4F_jumpifcantswitch thumb_func_start sub_8024398 sub_8024398: @ 8024398 @@ -13616,8 +13616,8 @@ _080243E4: .4byte gBattleStruct _080243E8: .4byte gBattlerPartyIndexes thumb_func_end sub_8024398 - thumb_func_start sub_80243EC -sub_80243EC: @ 80243EC + thumb_func_start atk50_openpartyscreen +atk50_openpartyscreen: @ 80243EC push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -14618,10 +14618,10 @@ _08024C2E: _08024C3C: .4byte gActiveBattler _08024C40: .4byte gAbsentBattlerFlags _08024C44: .4byte gBitTable - thumb_func_end sub_80243EC + thumb_func_end atk50_openpartyscreen - thumb_func_start sub_8024C48 -sub_8024C48: @ 8024C48 + thumb_func_start atk51_switchhandleorder +atk51_switchhandleorder: @ 8024C48 push {r4-r7,lr} ldr r0, _08024C74 @ =gBattleControllerExecFlags ldr r0, [r0] @@ -14866,10 +14866,10 @@ _08024E28: .4byte gBattleTextBuff2 _08024E2C: .4byte gActiveBattler _08024E30: .4byte gBattleBufferB _08024E34: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8024C48 + thumb_func_end atk51_switchhandleorder - thumb_func_start sub_8024E38 -sub_8024E38: @ 8024E38 + thumb_func_start atk52_switchineffects +atk52_switchineffects: @ 8024E38 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -15186,10 +15186,10 @@ _080250C6: .align 2, 0 _080250D4: .4byte gBattlersCount _080250D8: .4byte gAbsentBattlerFlags - thumb_func_end sub_8024E38 + thumb_func_end atk52_switchineffects - thumb_func_start atk53_trainer_slide -atk53_trainer_slide: @ 80250DC + thumb_func_start atk53_trainerslidein +atk53_trainerslidein: @ 80250DC push {lr} ldr r0, _080250EC @ =gBattlescriptCurrInstr ldr r0, [r0] @@ -15220,7 +15220,7 @@ _080250F2: .align 2, 0 _08025114: .4byte gActiveBattler _08025118: .4byte gBattlescriptCurrInstr - thumb_func_end atk53_trainer_slide + thumb_func_end atk53_trainerslidein thumb_func_start atk54_playse atk54_playse: @ 802511C @@ -15251,8 +15251,8 @@ _08025150: .4byte gBattlerAttacker _08025154: .4byte gBattlescriptCurrInstr thumb_func_end atk54_playse - thumb_func_start atk55_play_sound -atk55_play_sound: @ 8025158 + thumb_func_start atk55_fanfare +atk55_fanfare: @ 8025158 push {r4,r5,lr} ldr r5, _08025188 @ =gActiveBattler ldr r0, _0802518C @ =gBattlerAttacker @@ -15278,7 +15278,7 @@ atk55_play_sound: @ 8025158 _08025188: .4byte gActiveBattler _0802518C: .4byte gBattlerAttacker _08025190: .4byte gBattlescriptCurrInstr - thumb_func_end atk55_play_sound + thumb_func_end atk55_fanfare thumb_func_start atk56_playfaintcry atk56_playfaintcry: @ 8025194 @@ -15516,8 +15516,8 @@ _08025374: .4byte gBattleTypeFlags _08025378: .4byte gBattlescriptCurrInstr thumb_func_end atk59_handlelearnnewmove - thumb_func_start sub_802537C -sub_802537C: @ 802537C + thumb_func_start atk5A_yesnoboxlearnmove +atk5A_yesnoboxlearnmove: @ 802537C push {r4-r7,lr} mov r7, r8 push {r7} @@ -15556,7 +15556,7 @@ _080253C4: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r0, _080253F0 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow @@ -15566,7 +15566,7 @@ _080253C4: strb r0, [r1, 0x1F] ldr r0, _080253F8 @ =gBattleCommunication strb r4, [r0, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt b _080256D0 .align 2, 0 _080253F0: .4byte gUnknown_83FE791 @@ -15585,10 +15585,10 @@ _080253FC: beq _08025422 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _08025422: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] @@ -15602,10 +15602,10 @@ _08025422: bne _08025448 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _08025448: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] @@ -15625,7 +15625,7 @@ _08025448: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow movs r0, 0x1 negs r0, r0 str r4, [sp] @@ -15888,7 +15888,7 @@ _080256A4: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r1, _080256C0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 @@ -15912,10 +15912,10 @@ _080256D0: bx r0 .align 2, 0 _080256DC: .4byte gBattleControllerExecFlags - thumb_func_end sub_802537C + thumb_func_end atk5A_yesnoboxlearnmove - thumb_func_start sub_80256E0 -sub_80256E0: @ 80256E0 + thumb_func_start atk5B_yesnoboxstoplearningmove +atk5B_yesnoboxstoplearningmove: @ 80256E0 push {r4,r5,lr} sub sp, 0x4 ldr r5, _080256F4 @ =gBattleScripting @@ -15933,7 +15933,7 @@ _080256F8: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r0, _08025720 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow @@ -15942,7 +15942,7 @@ _080256F8: strb r0, [r5, 0x1F] ldr r0, _08025724 @ =gBattleCommunication strb r4, [r0, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt b _0802580E .align 2, 0 _08025720: .4byte gUnknown_83FE791 @@ -15960,10 +15960,10 @@ _08025728: beq _0802574E movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _0802574E: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] @@ -15977,10 +15977,10 @@ _0802574E: bne _08025774 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _08025774: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] @@ -16025,7 +16025,7 @@ _080257C0: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow b _0802580E .align 2, 0 _080257D4: .4byte gBattlescriptCurrInstr @@ -16054,7 +16054,7 @@ _080257D8: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow _0802580E: add sp, 0x4 pop {r4,r5} @@ -16062,10 +16062,10 @@ _0802580E: bx r0 .align 2, 0 _08025818: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80256E0 + thumb_func_end atk5B_yesnoboxstoplearningmove - thumb_func_start sub_802581C -sub_802581C: @ 802581C + thumb_func_start atk5C_hitanimation +atk5C_hitanimation: @ 802581C push {r4,lr} ldr r4, _08025888 @ =gBattlescriptCurrInstr ldr r0, [r4] @@ -16132,10 +16132,10 @@ _080258A6: pop {r4} pop {r0} bx r0 - thumb_func_end sub_802581C + thumb_func_end atk5C_hitanimation - thumb_func_start sub_80258AC -sub_80258AC: @ 80258AC + thumb_func_start atk5D_getmoneyreward +atk5D_getmoneyreward: @ 80258AC push {r4-r7,lr} mov r7, r8 push {r7} @@ -16364,7 +16364,7 @@ _08025A62: bx r0 .align 2, 0 _08025A6C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_80258AC + thumb_func_end atk5D_getmoneyreward thumb_func_start atk5E atk5E: @ 8025A70 @@ -16456,8 +16456,8 @@ _08025B1C: .4byte gUnknown_20233C8 _08025B20: .4byte gUnknown_2023C08 thumb_func_end atk5E - thumb_func_start atk5F -atk5F: @ 8025B24 + thumb_func_start atk5F_swapattackerwithtarget +atk5F_swapattackerwithtarget: @ 8025B24 push {lr} ldr r0, _08025B4C @ =gActiveBattler ldr r2, _08025B50 @ =gBattlerAttacker @@ -16496,7 +16496,7 @@ _08025B62: bx r0 .align 2, 0 _08025B70: .4byte gBattlescriptCurrInstr - thumb_func_end atk5F + thumb_func_end atk5F_swapattackerwithtarget thumb_func_start atk60_incrementgamestat atk60_incrementgamestat: @ 8025B74 @@ -16619,8 +16619,8 @@ _08025C64: .4byte gActiveBattler _08025C68: .4byte gBattlescriptCurrInstr thumb_func_end atk61_drawpartystatussummary - thumb_func_start atk62 -atk62: @ 8025C6C + thumb_func_start atk62_hidepartystatussummary +atk62_hidepartystatussummary: @ 8025C6C push {r4,r5,lr} ldr r5, _08025C94 @ =gBattlescriptCurrInstr ldr r0, [r5] @@ -16641,10 +16641,10 @@ atk62: @ 8025C6C .align 2, 0 _08025C94: .4byte gBattlescriptCurrInstr _08025C98: .4byte gActiveBattler - thumb_func_end atk62 + thumb_func_end atk62_hidepartystatussummary - thumb_func_start atk63_jumptorandomattack -atk63_jumptorandomattack: @ 8025C9C + thumb_func_start atk63_jumptocalledmove +atk63_jumptocalledmove: @ 8025C9C push {r4,lr} ldr r0, _08025CB4 @ =gBattlescriptCurrInstr ldr r1, [r0] @@ -16691,7 +16691,7 @@ _08025CF0: .4byte gCurrentMove _08025CF4: .4byte gCalledMove _08025CF8: .4byte gUnknown_81D65A8 _08025CFC: .4byte gBattleMoves - thumb_func_end atk63_jumptorandomattack + thumb_func_end atk63_jumptocalledmove thumb_func_start atk64_statusanimation atk64_statusanimation: @ 8025D00 @@ -16929,7 +16929,7 @@ _08025EE4: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r0, _08025F08 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow @@ -16937,7 +16937,7 @@ _08025EE4: adds r0, 0x1 strb r0, [r5] strb r4, [r5, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt b _08025F9A .align 2, 0 _08025F08: .4byte gUnknown_83FE791 @@ -16953,10 +16953,10 @@ _08025F0C: beq _08025F30 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r5, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _08025F30: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] @@ -16970,10 +16970,10 @@ _08025F30: bne _08025F56 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _08025F56: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] @@ -17002,7 +17002,7 @@ _08025F7E: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r1, _08025FA4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 @@ -17415,7 +17415,7 @@ _080262B0: movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 - bl sub_802DB7C + bl HandleBattleWindow ldr r1, _08026300 @ =gBattleScripting movs r0, 0x4 strb r0, [r1, 0x1E] @@ -17425,7 +17425,7 @@ _080262F8: .4byte gBattle_BG1_X _080262FC: .4byte gBattle_BG1_Y _08026300: .4byte gBattleScripting _08026304: - bl sub_8026404 + bl DrawLevelUpWindow1 movs r0, 0xC bl PutWindowTilemap movs r0, 0xC @@ -17450,7 +17450,7 @@ _08026330: beq _080263F6 movs r0, 0x5 bl PlaySE - bl sub_8026448 + bl DrawLevelUpWindow2 movs r0, 0xC movs r1, 0x2 bl CopyWindowToVram @@ -17470,7 +17470,7 @@ _08026350: movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 - bl sub_802DB7C + bl HandleBattleWindow _0802636E: ldr r1, _0802637C @ =gBattleScripting ldrb r0, [r1, 0x1E] @@ -17537,8 +17537,8 @@ _080263F6: _08026400: .4byte gBattlescriptCurrInstr thumb_func_end atk6C_drawlvlupbox - thumb_func_start sub_8026404 -sub_8026404: @ 8026404 + thumb_func_start DrawLevelUpWindow1 +DrawLevelUpWindow1: @ 8026404 push {lr} sub sp, 0x14 ldr r0, _0802643C @ =gBattleStruct @@ -17568,10 +17568,10 @@ sub_8026404: @ 8026404 _0802643C: .4byte gBattleStruct _08026440: .4byte gPlayerParty _08026444: .4byte gBattleResources - thumb_func_end sub_8026404 + thumb_func_end DrawLevelUpWindow1 - thumb_func_start sub_8026448 -sub_8026448: @ 8026448 + thumb_func_start DrawLevelUpWindow2 +DrawLevelUpWindow2: @ 8026448 push {lr} sub sp, 0x10 ldr r0, _08026478 @ =gBattleStruct @@ -17596,7 +17596,7 @@ sub_8026448: @ 8026448 .align 2, 0 _08026478: .4byte gBattleStruct _0802647C: .4byte gPlayerParty - thumb_func_end sub_8026448 + thumb_func_end DrawLevelUpWindow2 thumb_func_start sub_8026480 sub_8026480: @ 8026480 @@ -17915,7 +17915,7 @@ PutMonIconOnLvlUpBox: @ 8026688 bl LoadSpriteSheet adds r0, r4, 0 bl LoadSpritePalette - ldr r0, _08026748 @ =gUnknown_82507C8 + ldr r0, _08026748 @ =sSpriteTemplate_MonIconOnLvlUpBox movs r1, 0x80 lsls r1, 1 movs r2, 0xA @@ -17946,7 +17946,7 @@ _08026738: .4byte 0xffff0000 _0802673C: .4byte 0x0000ffff _08026740: .4byte 0xd75a0000 _08026744: .4byte 0x0000d75a -_08026748: .4byte gUnknown_82507C8 +_08026748: .4byte sSpriteTemplate_MonIconOnLvlUpBox _0802674C: .4byte gSprites _08026750: .4byte gBattle_BG2_X thumb_func_end PutMonIconOnLvlUpBox @@ -18397,8 +18397,8 @@ _08026AA8: .4byte gLastUsedItem _08026AAC: .4byte gBattlescriptCurrInstr thumb_func_end atk75_useitemonopponent - thumb_func_start sub_8026AB0 -sub_8026AB0: @ 8026AB0 + thumb_func_start atk76_various +atk76_various: @ 8026AB0 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -18973,7 +18973,7 @@ _08026F56: bx r0 .align 2, 0 _08026F64: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8026AB0 + thumb_func_end atk76_various thumb_func_start atk77_setprotectlike atk77_setprotectlike: @ 8026F68 @@ -19011,7 +19011,7 @@ _08026F98: bne _08026FA8 movs r6, 0 _08026FA8: - ldr r2, _08027048 @ =gUnknown_82507E0 + ldr r2, _08027048 @ =sProtectSuccessRates mov r5, r8 ldrb r1, [r5] lsls r0, r1, 3 @@ -19087,7 +19087,7 @@ _08027038: .4byte gBattlerAttacker _0802703C: .4byte gDisableStructs _08027040: .4byte gUnknown_2023BE2 _08027044: .4byte gBattlersCount -_08027048: .4byte gUnknown_82507E0 +_08027048: .4byte sProtectSuccessRates _0802704C: .4byte gBattleMoves _08027050: .4byte gCurrentMove _08027054: .4byte gProtectStructs @@ -21485,8 +21485,8 @@ _08028304: .4byte gBattlescriptCurrInstr _08028308: .4byte gUnknown_81D8C10 thumb_func_end TryDoForceSwitchOut - thumb_func_start sub_802830C -sub_802830C: @ 802830C + thumb_func_start atk8F_forcerandomswitch +atk8F_forcerandomswitch: @ 802830C push {r4-r7,lr} mov r7, r8 push {r7} @@ -21846,7 +21846,7 @@ _080285F8: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_802830C + thumb_func_end atk8F_forcerandomswitch thumb_func_start atk90_tryconversiontypechange atk90_tryconversiontypechange: @ 8028604 @@ -22718,8 +22718,8 @@ _08028CE8: .4byte gWishFutureKnock _08028CEC: .4byte gBattlescriptCurrInstr thumb_func_end atk95_setsandstorm - thumb_func_start sub_8028CF0 -sub_8028CF0: @ 8028CF0 + thumb_func_start atk96_weatherdamage +atk96_weatherdamage: @ 8028CF0 push {r4,r5,lr} sub sp, 0x4 ldr r0, _08028DBC @ =gBattleTypeFlags @@ -22923,10 +22923,10 @@ _08028E80: .4byte gBattlerAttacker _08028E84: .4byte gAbsentBattlerFlags _08028E88: .4byte gBitTable _08028E8C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028CF0 + thumb_func_end atk96_weatherdamage - thumb_func_start sub_8028E90 -sub_8028E90: @ 8028E90 + thumb_func_start atk97_tryinfatuating +atk97_tryinfatuating: @ 8028E90 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -23126,10 +23126,10 @@ _0802902C: _0802903C: .4byte gBitTable _08029040: .4byte gBattlerAttacker _08029044: .4byte gBattlescriptCurrInstr - thumb_func_end sub_8028E90 + thumb_func_end atk97_tryinfatuating - thumb_func_start sub_8029048 -sub_8029048: @ 8029048 + thumb_func_start atk98_updatestatusicon +atk98_updatestatusicon: @ 8029048 push {r4-r7,lr} ldr r0, _080290B8 @ =gBattleControllerExecFlags ldr r1, [r0] @@ -23307,7 +23307,7 @@ _080291C0: .align 2, 0 _080291C8: .4byte gActiveBattler _080291CC: .4byte gBattleMons - thumb_func_end sub_8029048 + thumb_func_end atk98_updatestatusicon thumb_func_start atk99_setmist atk99_setmist: @ 80291D0 @@ -23738,7 +23738,7 @@ IsMoveUncopyableByMimic: @ 8029530 lsls r0, 16 lsrs r2, r0, 16 movs r3, 0 - ldr r0, _08029570 @ =gUnknown_82507E8 + ldr r0, _08029570 @ =sMovesForbiddenToCopy ldrh r1, [r0] ldr r4, _08029574 @ =0x0000fffe adds r5, r0, 0 @@ -23768,7 +23768,7 @@ _08029558: pop {r1} bx r1 .align 2, 0 -_08029570: .4byte gUnknown_82507E8 +_08029570: .4byte sMovesForbiddenToCopy _08029574: .4byte 0x0000fffe thumb_func_end IsMoveUncopyableByMimic @@ -24013,7 +24013,7 @@ atk9E_metronome: @ 8029754 ldr r7, _080297D4 @ =gCurrentMove movs r6, 0xB1 lsls r6, 1 - ldr r5, _080297D8 @ =gUnknown_82507E8 + ldr r5, _080297D8 @ =sMovesForbiddenToCopy ldr r0, _080297DC @ =gBattlescriptCurrInstr mov r8, r0 _08029766: @@ -24075,7 +24075,7 @@ _08029794: bx r0 .align 2, 0 _080297D4: .4byte gCurrentMove -_080297D8: .4byte gUnknown_82507E8 +_080297D8: .4byte sMovesForbiddenToCopy _080297DC: .4byte gBattlescriptCurrInstr _080297E0: .4byte 0x000001ff _080297E4: .4byte 0x0000ffff @@ -25703,7 +25703,7 @@ atkAC_remaininghptopower: @ 802A470 lsls r0, 24 lsrs r1, r0, 24 movs r3, 0 - ldr r0, _0802A4CC @ =gUnknown_8250810 + ldr r0, _0802A4CC @ =sFlailHpScaleToPowerTable ldrb r2, [r0] cmp r1, r2 ble _0802A4AA @@ -25718,7 +25718,7 @@ _0802A49C: bgt _0802A49C _0802A4AA: ldr r2, _0802A4D0 @ =gDynamicBasePower - ldr r1, _0802A4CC @ =gUnknown_8250810 + ldr r1, _0802A4CC @ =sFlailHpScaleToPowerTable adds r0, r3, 0x1 adds r0, r1 ldrb r0, [r0] @@ -25732,7 +25732,7 @@ _0802A4AA: .align 2, 0 _0802A4C4: .4byte gBattleMons _0802A4C8: .4byte gBattlerAttacker -_0802A4CC: .4byte gUnknown_8250810 +_0802A4CC: .4byte sFlailHpScaleToPowerTable _0802A4D0: .4byte gDynamicBasePower _0802A4D4: .4byte gBattlescriptCurrInstr thumb_func_end atkAC_remaininghptopower @@ -27948,8 +27948,8 @@ _0802B66A: _0802B674: .4byte gBattlescriptCurrInstr thumb_func_end atkC0_recoverbasedonsunlight - thumb_func_start sub_802B678 -sub_802B678: @ 802B678 + thumb_func_start atkC1_hiddenpowercalc +atkC1_hiddenpowercalc: @ 802B678 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -28071,7 +28071,7 @@ _0802B764: .4byte gBattlerAttacker _0802B768: .4byte gDynamicBasePower _0802B76C: .4byte gBattleStruct _0802B770: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802B678 + thumb_func_end atkC1_hiddenpowercalc thumb_func_start atkC2_selectfirstvalidtarget atkC2_selectfirstvalidtarget: @ 802B774 @@ -28921,7 +28921,7 @@ atkCC_callterrainattack: @ 802BE18 ands r0, r1 str r0, [r2] ldr r4, _0802BE70 @ =gCurrentMove - ldr r1, _0802BE74 @ =gUnknown_825081C + ldr r1, _0802BE74 @ =sNaturePowerMoves ldr r0, _0802BE78 @ =gUnknown_2022B50 ldrb r0, [r0] lsls r0, 1 @@ -28956,7 +28956,7 @@ atkCC_callterrainattack: @ 802BE18 _0802BE68: .4byte gHitMarker _0802BE6C: .4byte 0xfffffbff _0802BE70: .4byte gCurrentMove -_0802BE74: .4byte gUnknown_825081C +_0802BE74: .4byte sNaturePowerMoves _0802BE78: .4byte gUnknown_2022B50 _0802BE7C: .4byte gBattlerTarget _0802BE80: .4byte gUnknown_81D65A8 @@ -29269,8 +29269,8 @@ _0802C0D6: _0802C0DC: .4byte gBattlescriptCurrInstr thumb_func_end atkD1_trysethelpinghand - thumb_func_start sub_802C0E0 -sub_802C0E0: @ 802C0E0 + thumb_func_start atkD2_tryswapitems +atkD2_tryswapitems: @ 802C0E0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -29597,7 +29597,7 @@ _0802C37A: bx r0 .align 2, 0 _0802C38C: .4byte gBattleCommunication - thumb_func_end sub_802C0E0 + thumb_func_end atkD2_tryswapitems thumb_func_start atkD3_trycopyability atkD3_trycopyability: @ 802C390 @@ -30108,8 +30108,8 @@ _0802C762: _0802C768: .4byte gBattlescriptCurrInstr thumb_func_end atkDA_tryswapabilities - thumb_func_start atkDB_tryimprision -atkDB_tryimprision: @ 802C76C + thumb_func_start atkDB_tryimprison +atkDB_tryimprison: @ 802C76C push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -30246,7 +30246,7 @@ _0802C864: .4byte gBattlerAttacker _0802C868: .4byte gBattleMons _0802C86C: .4byte gBattlersCount _0802C870: .4byte gBattlescriptCurrInstr - thumb_func_end atkDB_tryimprision + thumb_func_end atkDB_tryimprison thumb_func_start atkDC_trysetgrudge atkDC_trysetgrudge: @ 802C874 @@ -30301,7 +30301,7 @@ atkDD_weightdamagecalculation: @ 802C8CC mov r7, r8 push {r7} movs r5, 0 - ldr r2, _0802C930 @ =gUnknown_8250830 + ldr r2, _0802C930 @ =sWeightToDamageTable ldrh r0, [r2] ldr r1, _0802C934 @ =0x0000ffff cmp r0, r1 @@ -30348,7 +30348,7 @@ _0802C916: strh r1, [r0] b _0802C94A .align 2, 0 -_0802C930: .4byte gUnknown_8250830 +_0802C930: .4byte sWeightToDamageTable _0802C934: .4byte 0x0000ffff _0802C938: .4byte gBattleMons _0802C93C: .4byte gBattlerTarget @@ -30372,8 +30372,8 @@ _0802C95C: .4byte gDynamicBasePower _0802C960: .4byte gBattlescriptCurrInstr thumb_func_end atkDD_weightdamagecalculation - thumb_func_start atkDE_asistattackselect -atkDE_asistattackselect: @ 802C964 + thumb_func_start atkDE_assistattackselect +atkDE_assistattackselect: @ 802C964 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -30450,7 +30450,7 @@ _0802C9E0: adds r1, r5, 0x1 cmp r0, 0 bne _0802CA36 - ldr r0, _0802CA9C @ =gUnknown_82507E8 + ldr r0, _0802CA9C @ =sMovesForbiddenToCopy ldrh r2, [r0] adds r3, r0, 0 cmp r2, r8 @@ -30525,7 +30525,7 @@ _0802CA8C: .4byte gPlayerParty _0802CA90: .4byte gEnemyParty _0802CA94: .4byte gBattlerPartyIndexes _0802CA98: .4byte 0x0000ffff -_0802CA9C: .4byte gUnknown_82507E8 +_0802CA9C: .4byte sMovesForbiddenToCopy _0802CAA0: .4byte gHitMarker _0802CAA4: .4byte 0xfffffbff _0802CAA8: .4byte gCalledMove @@ -30556,7 +30556,7 @@ _0802CACE: bx r0 .align 2, 0 _0802CAE0: .4byte gBattlescriptCurrInstr - thumb_func_end atkDE_asistattackselect + thumb_func_end atkDE_assistattackselect thumb_func_start atkDF_trysetmagiccoat atkDF_trysetmagiccoat: @ 802CAE4 @@ -30986,8 +30986,8 @@ _0802CE40: .4byte gBattleCommunication _0802CE44: .4byte gBattlescriptCurrInstr thumb_func_end atkE4_getsecretpowereffect - thumb_func_start sub_802CE48 -sub_802CE48: @ 802CE48 + thumb_func_start atkE5_pickup +atkE5_pickup: @ 802CE48 push {r4-r7,lr} mov r7, r8 push {r7} @@ -31058,10 +31058,10 @@ _0802CEA2: lsls r0, 16 lsrs r3, r0, 16 movs r2, 0 - ldr r1, _0802CEE4 @ =gUnknown_8250848 + ldr r1, _0802CEE4 @ =sPickupItems b _0802CEF0 .align 2, 0 -_0802CEE4: .4byte gUnknown_8250848 +_0802CEE4: .4byte sPickupItems _0802CEE8: adds r1, 0x4 adds r2, 0x1 @@ -31077,7 +31077,7 @@ _0802CEF6: ldr r1, _0802CF24 @ =gPlayerParty adds r0, r1 lsls r2, 2 - ldr r1, _0802CF28 @ =gUnknown_8250848 + ldr r1, _0802CF28 @ =sPickupItems adds r2, r1 movs r1, 0xC bl SetMonData @@ -31096,9 +31096,9 @@ _0802CF0A: bx r0 .align 2, 0 _0802CF24: .4byte gPlayerParty -_0802CF28: .4byte gUnknown_8250848 +_0802CF28: .4byte sPickupItems _0802CF2C: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802CE48 + thumb_func_end atkE5_pickup thumb_func_start atkE6_docastformchangeanimation atkE6_docastformchangeanimation: @ 802CF30 @@ -31468,7 +31468,7 @@ atkEB_settypetoterrain: @ 802D1F0 movs r0, 0x21 adds r0, r3 mov r12, r0 - ldr r5, _0802D268 @ =gUnknown_8250888 + ldr r5, _0802D268 @ =sTerrainToType ldr r4, _0802D26C @ =gUnknown_2022B50 ldrb r0, [r4] adds r0, r5 @@ -31513,7 +31513,7 @@ atkEB_settypetoterrain: @ 802D1F0 .align 2, 0 _0802D260: .4byte gBattleMons _0802D264: .4byte gBattlerAttacker -_0802D268: .4byte gUnknown_8250888 +_0802D268: .4byte sTerrainToType _0802D26C: .4byte gUnknown_2022B50 _0802D270: .4byte gBattleTextBuff1 _0802D274: .4byte gBattlescriptCurrInstr @@ -31633,8 +31633,8 @@ _0802D35A: _0802D360: .4byte gBattlescriptCurrInstr thumb_func_end atkEC_pursuitrelated - thumb_func_start atkEF_snatchsetbanks -atkEF_snatchsetbanks: @ 802D364 + thumb_func_start atkED_snatchsetbattlers +atkED_snatchsetbattlers: @ 802D364 push {r4,lr} ldr r1, _0802D388 @ =gEffectBattler ldr r3, _0802D38C @ =gBattlerAttacker @@ -31674,7 +31674,7 @@ _0802D39E: .align 2, 0 _0802D3B0: .4byte gBattleScripting _0802D3B4: .4byte gBattlescriptCurrInstr - thumb_func_end atkEF_snatchsetbanks + thumb_func_end atkED_snatchsetbattlers thumb_func_start atkEE_removelightscreenreflect atkEE_removelightscreenreflect: @ 802D3B8 @@ -31738,8 +31738,8 @@ _0802D42C: .4byte gBattleScripting _0802D430: .4byte gBattlescriptCurrInstr thumb_func_end atkEE_removelightscreenreflect - thumb_func_start sub_802D434 -sub_802D434: @ 802D434 + thumb_func_start atkEF_handleballthrow +atkEF_handleballthrow: @ 802D434 push {r4-r6,lr} movs r4, 0 ldr r0, _0802D474 @ =gBattleControllerExecFlags @@ -31969,7 +31969,7 @@ _0802D608: .align 2, 0 _0802D61C: .4byte gBattleResults _0802D620: - ldr r1, _0802D694 @ =gUnknown_8250892 + ldr r1, _0802D694 @ =sBallCatchBonuses ldrh r0, [r2] subs r0, 0x2 adds r0, r1 @@ -32027,7 +32027,7 @@ _0802D67A: strb r1, [r0, 0x5] b _0802D6BC .align 2, 0 -_0802D694: .4byte gUnknown_8250892 +_0802D694: .4byte sBallCatchBonuses _0802D698: .4byte gBattleMons _0802D69C: .4byte gBattlerTarget _0802D6A0: .4byte gLastUsedItem @@ -32186,10 +32186,10 @@ _0802D7EE: _0802D7F4: .4byte gBattleCommunication _0802D7F8: .4byte gBattlescriptCurrInstr _0802D7FC: .4byte gUnknown_81D9A93 - thumb_func_end sub_802D434 + thumb_func_end atkEF_handleballthrow - thumb_func_start sub_802D800 -sub_802D800: @ 802D800 + thumb_func_start atkF0_givecaughtmon +atkF0_givecaughtmon: @ 802D800 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -32334,10 +32334,10 @@ _0802D94C: .4byte gBattlerAttacker _0802D950: .4byte gBattlerPartyIndexes _0802D954: .4byte gEnemyParty _0802D958: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802D800 + thumb_func_end atkF0_givecaughtmon - thumb_func_start sub_802D95C -sub_802D95C: @ 802D95C + thumb_func_start atkF1_trysetcaughtmondexflags +atkF1_trysetcaughtmondexflags: @ 802D95C push {r4,r5,lr} ldr r4, _0802D9AC @ =gEnemyParty adds r0, r4, 0 @@ -32395,10 +32395,10 @@ _0802D9CE: bx r0 .align 2, 0 _0802D9D4: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802D95C + thumb_func_end atkF1_trysetcaughtmondexflags - thumb_func_start sub_802D9D8 -sub_802D9D8: @ 802D9D8 + thumb_func_start atkF2_displaydexinfo +atkF2_displaydexinfo: @ 802D9D8 push {r4,r5,lr} sub sp, 0x18 ldr r0, _0802DA00 @ =gEnemyParty @@ -32585,10 +32585,10 @@ _0802DB6C: .align 2, 0 _0802DB74: .4byte gPaletteFade _0802DB78: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802D9D8 + thumb_func_end atkF2_displaydexinfo - thumb_func_start sub_802DB7C -sub_802DB7C: @ 802DB7C + thumb_func_start HandleBattleWindow +HandleBattleWindow: @ 802DB7C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -32754,10 +32754,10 @@ _0802DCA2: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_802DB7C + thumb_func_end HandleBattleWindow - thumb_func_start sub_802DCB8 -sub_802DCB8: @ 802DCB8 + thumb_func_start BattleCreateYesNoCursorAt +BattleCreateYesNoCursorAt: @ 802DCB8 push {lr} sub sp, 0x10 add r0, sp, 0xC @@ -32787,10 +32787,10 @@ sub_802DCB8: @ 802DCB8 bx r0 .align 2, 0 _0802DCF4: .4byte gBattleCommunication - thumb_func_end sub_802DCB8 + thumb_func_end BattleCreateYesNoCursorAt - thumb_func_start sub_802DCF8 -sub_802DCF8: @ 802DCF8 + thumb_func_start BattleDestroyYesNoCursorAt +BattleDestroyYesNoCursorAt: @ 802DCF8 push {lr} sub sp, 0x10 add r0, sp, 0xC @@ -32821,10 +32821,10 @@ sub_802DCF8: @ 802DCF8 bx r0 .align 2, 0 _0802DD34: .4byte gBattleCommunication - thumb_func_end sub_802DCF8 + thumb_func_end BattleDestroyYesNoCursorAt - thumb_func_start sub_802DD38 -sub_802DD38: @ 802DD38 + thumb_func_start atkF3_trygivecaughtmonnick +atkF3_trygivecaughtmonnick: @ 802DD38 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -32860,7 +32860,7 @@ _0802DD78: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r0, _0802DDA0 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow @@ -32869,7 +32869,7 @@ _0802DD78: adds r0, 0x1 strb r0, [r1] strb r4, [r1, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt b _0802DFA6 .align 2, 0 _0802DDA0: .4byte gUnknown_83FE791 @@ -32886,10 +32886,10 @@ _0802DDA8: beq _0802DDCC movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _0802DDCC: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] @@ -32903,10 +32903,10 @@ _0802DDCC: bne _0802DDF2 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _0802DDF2: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] @@ -33118,7 +33118,7 @@ _0802DFA6: bx r0 .align 2, 0 _0802DFB8: .4byte gBattlescriptCurrInstr - thumb_func_end sub_802DD38 + thumb_func_end atkF3_trygivecaughtmonnick thumb_func_start atkF4_subattackerhpbydmg atkF4_subattackerhpbydmg: @ 802DFBC @@ -33167,18 +33167,18 @@ _0802E00C: .4byte gBattlerAttacker _0802E010: .4byte gBattlescriptCurrInstr thumb_func_end atkF5_removeattackerstatus1 - thumb_func_start sub_802E014 -sub_802E014: @ 802E014 + thumb_func_start atkF6_finishaction +atkF6_finishaction: @ 802E014 ldr r1, _0802E01C @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] bx lr .align 2, 0 _0802E01C: .4byte gCurrentActionFuncId - thumb_func_end sub_802E014 + thumb_func_end atkF6_finishaction - thumb_func_start sub_802E020 -sub_802E020: @ 802E020 + thumb_func_start atkF7_finishturn +atkF7_finishturn: @ 802E020 ldr r1, _0802E030 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] @@ -33191,6 +33191,6 @@ sub_802E020: @ 802E020 _0802E030: .4byte gCurrentActionFuncId _0802E034: .4byte gUnknown_2023BE2 _0802E038: .4byte gBattlersCount - thumb_func_end sub_802E020 + thumb_func_end atkF7_finishturn .align 2, 0 @ Don't pad with nop. diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 06d8a0d64..e86c6d073 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -2286,7 +2286,7 @@ _080CF176: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow ldr r0, _080CF1B4 @ =gUnknown_83FE791 movs r1, 0xE bl BattlePutTextOnWindow @@ -2301,7 +2301,7 @@ _080CF176: strh r0, [r1, 0x14] ldr r0, _080CF1B8 @ =gBattleCommunication strb r2, [r0, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt b _080CF528 .align 2, 0 _080CF1A8: .4byte gUnknown_83FDF3C @@ -2322,10 +2322,10 @@ _080CF1BC: beq _080CF1E2 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _080CF1E2: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] @@ -2339,10 +2339,10 @@ _080CF1E2: bne _080CF208 movs r0, 0x5 bl PlaySE - bl sub_802DCF8 + bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] - bl sub_802DCB8 + bl BattleCreateYesNoCursorAt _080CF208: ldr r0, _080CF244 @ =gMain ldrh r1, [r0, 0x2E] @@ -2356,7 +2356,7 @@ _080CF208: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow movs r0, 0x5 bl PlaySE ldr r0, _080CF248 @ =gBattleCommunication @@ -2409,7 +2409,7 @@ _080CF284: movs r1, 0x8 movs r2, 0x1D movs r3, 0xD - bl sub_802DB7C + bl HandleBattleWindow movs r0, 0x5 bl PlaySE ldr r1, _080CF2AC @ =gTasks diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 5dd1d5a1a..223f191c5 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -538,7 +538,7 @@ .byte \bank_or_side .endm - .macro atk62 bank_or_side + .macro atk62_hidepartystatussummary bank_or_side .byte 0x62 .byte \bank_or_side .endm diff --git a/berry_fix/payload/asm/macros/battle_script.inc b/berry_fix/payload/asm/macros/battle_script.inc index 5dd1d5a1a..223f191c5 100644 --- a/berry_fix/payload/asm/macros/battle_script.inc +++ b/berry_fix/payload/asm/macros/battle_script.inc @@ -538,7 +538,7 @@ .byte \bank_or_side .endm - .macro atk62 bank_or_side + .macro atk62_hidepartystatussummary bank_or_side .byte 0x62 .byte \bank_or_side .endm diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 317a4991f..e084bade7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -313,10 +313,43 @@ gUnknown_81D9192:: @ 81D9192 .incbin "baserom.gba", 0x1D9192, 0xF gUnknown_81D91A1:: @ 81D91A1 - .incbin "baserom.gba", 0x1D91A1, 0x26 + .incbin "baserom.gba", 0x1D91A1, 0x18 + +BattleScript_MoveEffectSleep:: @ 81D91B9 + .incbin "baserom.gba", 0x1D91B9, 0xE BattleScript_YawnMakesAsleep:: @ 81D91C7 - .incbin "baserom.gba", 0x1D91C7, 0xAA + .incbin "baserom.gba", 0x1D91C7, 0xE + +BattleScript_MoveEffectPoison:: @ 81D91D5 + .incbin "baserom.gba", 0x1D91D5, 0xF + +BattleScript_MoveEffectBurn:: @ 81D91E4 + .incbin "baserom.gba", 0x1D91E4, 0xF + +BattleScript_MoveEffectFreeze:: @ 81D91F3 + .incbin "baserom.gba", 0x1D91F3, 0xF + +BattleScript_MoveEffectParalysis:: @ 81D9202 + .incbin "baserom.gba", 0x1D9202, 0xF + +BattleScript_MoveEffectUproar:: @ 81D9211 + .incbin "baserom.gba", 0x1D9211, 0x7 + +BattleScript_MoveEffectToxic:: @ 81D9218 + .incbin "baserom.gba", 0x1D9218, 0xD + +BattleScript_MoveEffectPayDay:: @ 81D9225 + .incbin "baserom.gba", 0x1D9225, 0x7 + +BattleScript_MoveEffectWrap:: @ 81D922C + .incbin "baserom.gba", 0x1D922C, 0x9 + +BattleScript_MoveEffectConfusion:: @ 81D9235 + .incbin "baserom.gba", 0x1D9235, 0xE + +BattleScript_MoveEffectRecoil:: @ 81D9243 + .incbin "baserom.gba", 0x1D9243, 0x2E gUnknown_81D9271:: @ 81D9271 .incbin "baserom.gba", 0x1D9271, 0xE diff --git a/data/data.s b/data/data.s index 3ca955d94..b150bfb4e 100644 --- a/data/data.s +++ b/data/data.s @@ -278,57 +278,6 @@ gStatusConditionString_LoveJpn:: @ 82500C4 gUnknown_82500CC:: @ 82500CC .incbin "baserom.gba", 0x2500CC, 0x38 - .section .rodata.825011C - - .balign 4 -gBattleScriptingCommandsTable:: @ 825011C - .incbin "baserom.gba", 0x25011C, 0x3E0 - -gUnknown_82504FC:: @ 82504FC - .incbin "baserom.gba", 0x2504FC, 0x34 - -gUnknown_8250530:: @ 8250530 - .incbin "baserom.gba", 0x250530, 0xC - -gUnknown_825053C:: @ 825053C - .incbin "baserom.gba", 0x25053C, 0xF0 - -gUnknown_825062C:: @ 825062C - .incbin "baserom.gba", 0x25062C, 0xA4 - -gUnknown_82506D0:: @ 82506D0 - .incbin "baserom.gba", 0x2506D0, 0x20 - -gUnknown_82506F0:: @ 82506F0 - .incbin "baserom.gba", 0x2506F0, 0xD8 - -gUnknown_82507C8:: @ 82507C8 - .incbin "baserom.gba", 0x2507C8, 0x18 - -gUnknown_82507E0:: @ 82507E0 - .incbin "baserom.gba", 0x2507E0, 0x8 - -gUnknown_82507E8:: @ 82507E8 - .incbin "baserom.gba", 0x2507E8, 0x28 - -gUnknown_8250810:: @ 8250810 - .incbin "baserom.gba", 0x250810, 0xC - -gUnknown_825081C:: @ 825081C - .incbin "baserom.gba", 0x25081C, 0x14 - -gUnknown_8250830:: @ 8250830 - .incbin "baserom.gba", 0x250830, 0x18 - -gUnknown_8250848:: @ 8250848 - .incbin "baserom.gba", 0x250848, 0x40 - -gUnknown_8250888:: @ 8250888 - .incbin "baserom.gba", 0x250888, 0xA - -gUnknown_8250892:: @ 8250892 - .incbin "baserom.gba", 0x250892, 0xA - .section .rodata.825098C gUnknown_825098C:: @ 825098C diff --git a/graphics/battle_interface/unk_battlebox.pal b/graphics/battle_interface/unk_battlebox.pal new file mode 100644 index 000000000..862165f3f --- /dev/null +++ b/graphics/battle_interface/unk_battlebox.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +106 90 115 +0 0 0 +213 230 255 +189 205 238 +238 238 255 +106 172 197 +90 139 180 +123 197 205 +0 0 0 +0 0 0 +123 197 255 +0 0 139 +255 131 131 +164 0 0 diff --git a/graphics/battle_interface/unk_battlebox.png b/graphics/battle_interface/unk_battlebox.png new file mode 100644 index 0000000000000000000000000000000000000000..9f136c3af267f3979e6e30133217625d8f4e39e3 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^91IMM3M@bdL#9l_P9Rn2>Eak-(ffAtM$Q8UJS?Vb zPY6glY@XpG@U`uLvzXV!J)9CbJ4>HFd$5#QwEqdCLO|%r*)vn58NN)JXUMm4Pv$*e z{+{0wfzzk&-rkXCA Date: Sat, 24 Aug 2019 09:22:38 +0800 Subject: [PATCH 022/100] battle_script_commands symbol documentation --- asm/battle_1.s | 12 +- asm/battle_2.s | 268 ++++++++-------- asm/battle_anim_utility_funcs.s | 8 +- asm/battle_script_commands.s | 540 ++++++++++++++++---------------- asm/evolution_scene.s | 12 +- asm/field_effect.s | 2 +- asm/field_fadetransition.s | 10 +- asm/field_map_obj.s | 2 +- asm/fldeff_flash.s | 2 +- asm/overworld.s | 10 +- asm/party_menu.s | 18 +- asm/pokemon_summary_screen.s | 4 +- data/battle_scripts_1.s | 104 +++--- data/battle_scripts_2.s | 8 +- data/data.s | 2 +- data/data_83F5738.s | 6 +- include/battle.h | 2 +- src/battle_controllers.c | 2 +- src/battle_script_commands.c | 58 ++-- sym_common.txt | 2 +- sym_ewram.txt | 26 +- 21 files changed, 544 insertions(+), 554 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index 57205b0ab..0b8ad7365 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1274,12 +1274,12 @@ _0800FC08: lsls r0, 24 cmp r0, 0 bne _0800FC20 - ldr r0, _0800FC1C @ =gUnknown_2022B50 + ldr r0, _0800FC1C @ =gBattleTerrain ldrb r0, [r0] bl sub_800F2AC b _0800FC26 .align 2, 0 -_0800FC1C: .4byte gUnknown_2022B50 +_0800FC1C: .4byte gBattleTerrain _0800FC20: movs r0, 0x8 bl sub_800F2AC @@ -1309,12 +1309,12 @@ _0800FC48: ands r0, r1 cmp r0, 0 beq _0800FC60 - ldr r0, _0800FC5C @ =gUnknown_2022B50 + ldr r0, _0800FC5C @ =gBattleTerrain strb r2, [r0] movs r0, 0 b _0800FCAA .align 2, 0 -_0800FC5C: .4byte gUnknown_2022B50 +_0800FC5C: .4byte gBattleTerrain _0800FC60: movs r0, 0x8 ands r1, r0 @@ -1351,13 +1351,13 @@ _0800FC90: lsrs r0, 24 b _0800FCAA _0800FCA6: - ldr r0, _0800FCB0 @ =gUnknown_2022B50 + ldr r0, _0800FCB0 @ =gBattleTerrain ldrb r0, [r0] _0800FCAA: pop {r1} bx r1 .align 2, 0 -_0800FCB0: .4byte gUnknown_2022B50 +_0800FCB0: .4byte gBattleTerrain thumb_func_end sub_800FC2C thumb_func_start sub_800FCB4 diff --git a/asm/battle_2.s b/asm/battle_2.s index af4b972ab..a019e4969 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -158,7 +158,7 @@ _0800FEA6: ldr r0, _0800FF60 @ =gBattle_BG3_Y strh r1, [r0] bl sub_807FC5C - ldr r1, _0800FF64 @ =gUnknown_2022B50 + ldr r1, _0800FF64 @ =gBattleTerrain strb r0, [r1] bl sub_800F34C bl LoadBattleTextboxAndBackground @@ -197,7 +197,7 @@ _0800FF54: .4byte gBattle_BG2_X _0800FF58: .4byte gBattle_BG2_Y _0800FF5C: .4byte gBattle_BG3_X _0800FF60: .4byte gBattle_BG3_Y -_0800FF64: .4byte gUnknown_2022B50 +_0800FF64: .4byte gBattleTerrain _0800FF68: .4byte gReservedSpritePaletteCount _0800FF6C: .4byte VBlankCB_Battle _0800FF70: .4byte gBattleTypeFlags @@ -4843,9 +4843,9 @@ sub_8012434: @ 8012434 bl SpecialStatusesClear movs r2, 0 movs r3, 0 - ldr r0, _080126CC @ =gUnknown_2023DB0 + ldr r0, _080126CC @ =gLastResultingMoves mov r10, r0 - ldr r1, _080126D0 @ =gUnknown_2023DA8 + ldr r1, _080126D0 @ =gLastHitByType mov r12, r1 ldr r0, _080126D4 @ =gLastLandedMoves mov r9, r0 @@ -4853,8 +4853,8 @@ sub_8012434: @ 8012434 mov r8, r1 ldr r4, _080126DC @ =gDisableStructs movs r5, 0 - ldr r7, _080126E0 @ =gUnknown_2023D90 - ldr r6, _080126E4 @ =gUnknown_2023DB8 + ldr r7, _080126E0 @ =gLastPrintedMoves + ldr r6, _080126E4 @ =gLockedMoves _08012464: ldr r0, _080126E8 @ =gStatuses3 adds r0, r5, r0 @@ -4964,14 +4964,14 @@ _08012522: movs r1, 0 ldr r2, _08012720 @ =gBattleScripting strb r0, [r2, 0x1D] - ldr r0, _08012724 @ =gUnknown_2023D72 + ldr r0, _08012724 @ =gMultiHitCounter strb r1, [r0] ldr r2, _08012728 @ =gBattleOutcome strb r1, [r2] ldr r0, _0801272C @ =gBattleControllerExecFlags str r1, [r0] movs r2, 0 - ldr r0, _08012730 @ =gUnknown_2023E7E + ldr r0, _08012730 @ =gPaydayMoney strh r1, [r0] ldr r1, _080126F4 @ =gBattleResources ldr r0, [r1] @@ -4992,7 +4992,7 @@ _0801255C: bge _0801255C movs r2, 0 mov r9, r2 - ldr r0, _08012738 @ =gUnknown_2023E7C + ldr r0, _08012738 @ =gPauseCounterBattle strh r2, [r0] movs r0, 0 ldr r1, _0801273C @ =gBattleMoveDamage @@ -5003,7 +5003,7 @@ _0801255C: ldr r0, _08012720 @ =gBattleScripting strb r1, [r0, 0x18] strb r1, [r0, 0x19] - ldr r2, _08012744 @ =gUnknown_3004FD4 + ldr r2, _08012744 @ =gLeveledUpInBattle strb r1, [r2] ldr r0, _08012748 @ =gAbsentBattlerFlags strb r1, [r0] @@ -5171,13 +5171,13 @@ _080126AE: pop {r0} bx r0 .align 2, 0 -_080126CC: .4byte gUnknown_2023DB0 -_080126D0: .4byte gUnknown_2023DA8 +_080126CC: .4byte gLastResultingMoves +_080126D0: .4byte gLastHitByType _080126D4: .4byte gLastLandedMoves _080126D8: .4byte gLastMoves _080126DC: .4byte gDisableStructs -_080126E0: .4byte gUnknown_2023D90 -_080126E4: .4byte gUnknown_2023DB8 +_080126E0: .4byte gLastPrintedMoves +_080126E4: .4byte gLockedMoves _080126E8: .4byte gStatuses3 _080126EC: .4byte gUnknown_2023DD4 _080126F0: .4byte gLastHitBy @@ -5193,15 +5193,15 @@ _08012714: .4byte gBattleTypeFlags _08012718: .4byte 0x00010002 _0801271C: .4byte gSaveBlock2Ptr _08012720: .4byte gBattleScripting -_08012724: .4byte gUnknown_2023D72 +_08012724: .4byte gMultiHitCounter _08012728: .4byte gBattleOutcome _0801272C: .4byte gBattleControllerExecFlags -_08012730: .4byte gUnknown_2023E7E +_08012730: .4byte gPaydayMoney _08012734: .4byte gBattleCommunication -_08012738: .4byte gUnknown_2023E7C +_08012738: .4byte gPauseCounterBattle _0801273C: .4byte gBattleMoveDamage _08012740: .4byte gIntroSlideFlags -_08012744: .4byte gUnknown_3004FD4 +_08012744: .4byte gLeveledUpInBattle _08012748: .4byte gAbsentBattlerFlags _0801274C: .4byte gBattleStruct _08012750: .4byte gEnemyParty @@ -5210,8 +5210,8 @@ _08012758: .4byte 0x000004fb _0801275C: .4byte gBattleResults thumb_func_end sub_8012434 - thumb_func_start sub_8012760 -sub_8012760: @ 8012760 + thumb_func_start SwitchInClearSetData +SwitchInClearSetData: @ 8012760 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -5590,18 +5590,18 @@ _08012A1A: strh r2, [r0] ldrb r0, [r1] lsls r0, 1 - ldr r1, _08012BB4 @ =gUnknown_2023DA8 + ldr r1, _08012BB4 @ =gLastHitByType adds r0, r1 strh r2, [r0] mov r6, r12 ldrb r0, [r6] lsls r0, 1 - ldr r1, _08012BB8 @ =gUnknown_2023DB0 + ldr r1, _08012BB8 @ =gLastResultingMoves adds r0, r1 strh r2, [r0] ldrb r0, [r6] lsls r0, 1 - ldr r6, _08012BBC @ =gUnknown_2023D90 + ldr r6, _08012BBC @ =gLastPrintedMoves adds r0, r6 strh r2, [r0] mov r1, r12 @@ -5759,12 +5759,12 @@ _08012BA4: .4byte gBattleMoves _08012BA8: .4byte gMoveResultFlags _08012BAC: .4byte gLastMoves _08012BB0: .4byte gLastLandedMoves -_08012BB4: .4byte gUnknown_2023DA8 -_08012BB8: .4byte gUnknown_2023DB0 -_08012BBC: .4byte gUnknown_2023D90 +_08012BB4: .4byte gLastHitByType +_08012BB8: .4byte gLastResultingMoves +_08012BBC: .4byte gLastPrintedMoves _08012BC0: .4byte gLastHitBy _08012BC4: .4byte gBattleResources - thumb_func_end sub_8012760 + thumb_func_end SwitchInClearSetData thumb_func_start sub_8012BC8 sub_8012BC8: @ 8012BC8 @@ -6058,17 +6058,17 @@ _08012CA8: strh r2, [r0] ldrb r0, [r7] lsls r0, 1 - ldr r1, _08012F94 @ =gUnknown_2023DA8 + ldr r1, _08012F94 @ =gLastHitByType adds r0, r1 strh r2, [r0] ldrb r0, [r7] lsls r0, 1 - ldr r1, _08012F98 @ =gUnknown_2023DB0 + ldr r1, _08012F98 @ =gLastResultingMoves adds r0, r1 strh r2, [r0] ldrb r0, [r7] lsls r0, 1 - ldr r1, _08012F9C @ =gUnknown_2023D90 + ldr r1, _08012F9C @ =gLastPrintedMoves adds r0, r1 strh r2, [r0] ldrb r0, [r7] @@ -6251,9 +6251,9 @@ _08012F84: .4byte gBattleStruct _08012F88: .4byte 0xffff1fff _08012F8C: .4byte gLastMoves _08012F90: .4byte gLastLandedMoves -_08012F94: .4byte gUnknown_2023DA8 -_08012F98: .4byte gUnknown_2023DB0 -_08012F9C: .4byte gUnknown_2023D90 +_08012F94: .4byte gLastHitByType +_08012F98: .4byte gLastResultingMoves +_08012F9C: .4byte gLastPrintedMoves _08012FA0: .4byte gLastHitBy _08012FA4: .4byte gBattleResources _08012FA8: .4byte gBaseStats @@ -6329,7 +6329,7 @@ BattleIntroPrepareBackgroundSlide: @ 8013020 bl GetBattlerAtPosition ldr r4, _0801305C @ =gActiveBattler strb r0, [r4] - ldr r0, _08013060 @ =gUnknown_2022B50 + ldr r0, _08013060 @ =gBattleTerrain ldrb r1, [r0] movs r0, 0 bl BtlController_EmitIntroSlide @@ -6348,7 +6348,7 @@ _08013050: .align 2, 0 _08013058: .4byte gBattleControllerExecFlags _0801305C: .4byte gActiveBattler -_08013060: .4byte gUnknown_2022B50 +_08013060: .4byte gBattleTerrain _08013064: .4byte gBattleMainFunc _08013068: .4byte sub_8013070 _0801306C: .4byte gBattleCommunication @@ -7570,7 +7570,7 @@ _08013A22: ldr r1, _08013AE8 @ =gBattleStruct mov r8, r1 movs r7, 0x6 - ldr r6, _08013AF4 @ =gUnknown_2023D7C + ldr r6, _08013AF4 @ =gChosenActionByBattler ldr r2, _08013AF8 @ =gChosenMoveByBattler movs r4, 0xFF movs r3, 0 @@ -7670,7 +7670,7 @@ _08013ADA: _08013AE8: .4byte gBattleStruct _08013AEC: .4byte gBattlersCount _08013AF0: .4byte gBattlerByTurnOrder -_08013AF4: .4byte gUnknown_2023D7C +_08013AF4: .4byte gChosenActionByBattler _08013AF8: .4byte gChosenMoveByBattler _08013AFC: .4byte gAbsentBattlerFlags _08013B00: .4byte gBattleMainFunc @@ -7891,7 +7891,7 @@ _08013CBC: ldrb r0, [r4] cmp r2, r0 bge _08013CF2 - ldr r7, _08013D48 @ =gUnknown_2023D7C + ldr r7, _08013D48 @ =gChosenActionByBattler movs r6, 0xFF movs r5, 0 ldr r3, _08013D4C @ =gChosenMoveByBattler @@ -7945,7 +7945,7 @@ _08013D38: .4byte gBattleStruct _08013D3C: .4byte gBattleMainFunc _08013D40: .4byte gAbsentBattlerFlags _08013D44: .4byte sub_8014040 -_08013D48: .4byte gUnknown_2023D7C +_08013D48: .4byte gChosenActionByBattler _08013D4C: .4byte gChosenMoveByBattler _08013D50: .4byte gUnknown_2023E80 thumb_func_end BattleTurnPassed @@ -8437,7 +8437,7 @@ _08014114: ands r3, r0 cmp r3, 0 beq _0801417C - ldr r0, _08014164 @ =gUnknown_2023D7C + ldr r0, _08014164 @ =gChosenActionByBattler adds r0, r2, r0 movs r1, 0xD strb r1, [r0] @@ -8459,7 +8459,7 @@ _08014154: .4byte gBattleStruct _08014158: .4byte gBattleTypeFlags _0801415C: .4byte gBitTable _08014160: .4byte gBattleCommunication -_08014164: .4byte gUnknown_2023D7C +_08014164: .4byte gChosenActionByBattler _08014168: ldr r0, _08014178 @ =gBattleCommunication ldrb r1, [r4] @@ -8487,7 +8487,7 @@ _0801417C: cmp r1, 0 beq _080141BC _0801419C: - ldr r0, _080141B4 @ =gUnknown_2023D7C + ldr r0, _080141B4 @ =gChosenActionByBattler adds r0, r2, r0 strb r3, [r0] ldr r1, _080141B8 @ =gBattleCommunication @@ -8498,10 +8498,10 @@ _0801419C: bl _08014C4E .align 2, 0 _080141B0: .4byte gBattleMons -_080141B4: .4byte gUnknown_2023D7C +_080141B4: .4byte gChosenActionByBattler _080141B8: .4byte gBattleCommunication _080141BC: - ldr r0, _080141D4 @ =gUnknown_2023D7C + ldr r0, _080141D4 @ =gChosenActionByBattler ldrb r1, [r0] ldr r0, _080141D8 @ =gBattleBufferB ldrb r2, [r0, 0x1] @@ -8512,7 +8512,7 @@ _080141BC: bl BtlController_EmitChooseAction bl _08014B26 .align 2, 0 -_080141D4: .4byte gUnknown_2023D7C +_080141D4: .4byte gChosenActionByBattler _080141D8: .4byte gBattleBufferB _080141DC: ldr r4, _08014234 @ =gBattleControllerExecFlags @@ -8538,7 +8538,7 @@ _080141DC: beq _0801420A bl _08014C4E _0801420A: - ldr r2, _08014240 @ =gUnknown_2023D7C + ldr r2, _08014240 @ =gChosenActionByBattler adds r2, r5, r2 ldr r1, _08014244 @ =gBattleBufferB lsls r0, r5, 9 @@ -8563,7 +8563,7 @@ _08014228: _08014234: .4byte gBattleControllerExecFlags _08014238: .4byte gBitTable _0801423C: .4byte gActiveBattler -_08014240: .4byte gUnknown_2023D7C +_08014240: .4byte gChosenActionByBattler _08014244: .4byte gBattleBufferB _08014248: .4byte _0801424C .align 2, 0 @@ -8947,7 +8947,7 @@ _08014584: mov r8, r0 cmp r1, 0x2 bne _080145B4 - ldr r0, _080145AC @ =gUnknown_2023D7C + ldr r0, _080145AC @ =gChosenActionByBattler ldrb r0, [r0] cmp r0, 0x2 bne _080145B4 @@ -8961,14 +8961,14 @@ _08014584: b _080145D0 .align 2, 0 _080145A8: .4byte gActiveBattler -_080145AC: .4byte gUnknown_2023D7C +_080145AC: .4byte gChosenActionByBattler _080145B0: .4byte gBattleStruct _080145B4: mov r1, r8 ldrb r0, [r1] cmp r0, 0x3 bne _080145F0 - ldr r0, _080145E8 @ =gUnknown_2023D7C + ldr r0, _080145E8 @ =gChosenActionByBattler ldrb r0, [r0, 0x1] cmp r0, 0x2 bne _080145F0 @@ -8991,7 +8991,7 @@ _080145DE: bl BtlController_EmitChoosePokemon b _0801460E .align 2, 0 -_080145E8: .4byte gUnknown_2023D7C +_080145E8: .4byte gChosenActionByBattler _080145EC: .4byte gBattleStruct _080145F0: ldr r2, _08014618 @ =gBattleStruct @@ -9185,7 +9185,7 @@ _08014764: beq _08014790 b _08014C4E _08014790: - ldr r1, _080147B4 @ =gUnknown_2023D7C + ldr r1, _080147B4 @ =gChosenActionByBattler adds r0, r5, r1 ldrb r0, [r0] adds r3, r1, 0 @@ -9202,7 +9202,7 @@ _0801479E: _080147A8: .4byte gBattleControllerExecFlags _080147AC: .4byte gBitTable _080147B0: .4byte gActiveBattler -_080147B4: .4byte gUnknown_2023D7C +_080147B4: .4byte gChosenActionByBattler _080147B8: .4byte _080147BC .align 2, 0 _080147BC: @@ -9805,7 +9805,7 @@ SwapTurnOrder: @ 8014CA4 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 - ldr r2, _08014CD0 @ =gUnknown_2023BDA + ldr r2, _08014CD0 @ =gActionsByTurnOrder adds r4, r0, r2 ldrb r5, [r4] adds r2, r1, r2 @@ -9823,7 +9823,7 @@ SwapTurnOrder: @ 8014CA4 pop {r0} bx r0 .align 2, 0 -_08014CD0: .4byte gUnknown_2023BDA +_08014CD0: .4byte gActionsByTurnOrder _08014CD4: .4byte gBattlerByTurnOrder thumb_func_end SwapTurnOrder @@ -10156,7 +10156,7 @@ _08014F6C: .4byte 0x00000822 _08014F70: .4byte gBattleMons _08014F74: .4byte gUnknown_2023E80 _08014F78: - ldr r0, _08014F98 @ =gUnknown_2023D7C + ldr r0, _08014F98 @ =gChosenActionByBattler mov r3, r9 adds r1, r3, r0 ldrb r1, [r1] @@ -10173,7 +10173,7 @@ _08014F78: movs r3, 0xA5 b _08014FCA .align 2, 0 -_08014F98: .4byte gUnknown_2023D7C +_08014F98: .4byte gChosenActionByBattler _08014F9C: .4byte gProtectStructs _08014FA0: ldr r0, _08014FC0 @ =gBattleStruct @@ -10339,8 +10339,8 @@ sub_80150A8: @ 80150A8 bcc _080150D0 b _080152FA _080150D0: - ldr r7, _08015108 @ =gUnknown_2023BDA - ldr r6, _0801510C @ =gUnknown_2023D7C + ldr r7, _08015108 @ =gActionsByTurnOrder + ldr r6, _0801510C @ =gChosenActionByBattler mov r2, r8 ldr r5, _08015110 @ =gBattlerByTurnOrder _080150D8: @@ -10366,8 +10366,8 @@ _080150D8: _080150FC: .4byte gBattleTypeFlags _08015100: .4byte gActiveBattler _08015104: .4byte gBattlersCount -_08015108: .4byte gUnknown_2023BDA -_0801510C: .4byte gUnknown_2023D7C +_08015108: .4byte gActionsByTurnOrder +_0801510C: .4byte gChosenActionByBattler _08015110: .4byte gBattlerByTurnOrder _08015114: movs r0, 0x2 @@ -10382,7 +10382,7 @@ _08015114: ldrb r2, [r2] cmp r3, r2 bcs _08015174 - ldr r0, _08015160 @ =gUnknown_2023D7C + ldr r0, _08015160 @ =gChosenActionByBattler ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x3 @@ -10407,9 +10407,9 @@ _08015136: .align 2, 0 _08015158: .4byte gActiveBattler _0801515C: .4byte gBattlersCount -_08015160: .4byte gUnknown_2023D7C +_08015160: .4byte gChosenActionByBattler _08015164: - ldr r0, _080151D8 @ =gUnknown_2023D7C + ldr r0, _080151D8 @ =gChosenActionByBattler ldrb r0, [r0] ldr r2, _080151DC @ =gActiveBattler mov r8, r2 @@ -10421,8 +10421,8 @@ _08015172: _08015174: cmp r3, 0x5 bne _080151F8 - ldr r6, _080151E0 @ =gUnknown_2023BDA - ldr r1, _080151D8 @ =gUnknown_2023D7C + ldr r6, _080151E0 @ =gActionsByTurnOrder + ldr r1, _080151D8 @ =gChosenActionByBattler mov r3, r8 ldrb r0, [r3] adds r0, r1 @@ -10473,9 +10473,9 @@ _080151CC: ldr r0, [r7] b _08015304 .align 2, 0 -_080151D8: .4byte gUnknown_2023D7C +_080151D8: .4byte gChosenActionByBattler _080151DC: .4byte gActiveBattler -_080151E0: .4byte gUnknown_2023BDA +_080151E0: .4byte gActionsByTurnOrder _080151E4: .4byte gBattlerByTurnOrder _080151E8: .4byte gBattleMainFunc _080151EC: .4byte CheckFocusPunch_ClearVarsBeforeTurnStarts @@ -10489,9 +10489,9 @@ _080151F8: ldrb r0, [r2] cmp r0, 0 beq _0801523E - ldr r6, _0801528C @ =gUnknown_2023D7C + ldr r6, _0801528C @ =gChosenActionByBattler mov r2, r8 - ldr r5, _08015290 @ =gUnknown_2023BDA + ldr r5, _08015290 @ =gActionsByTurnOrder ldr r4, _08015294 @ =gBattlerByTurnOrder _0801520E: ldrb r0, [r2] @@ -10527,8 +10527,8 @@ _0801523E: ldrb r0, [r7] cmp r0, 0 beq _08015282 - ldr r6, _0801528C @ =gUnknown_2023D7C - ldr r5, _08015290 @ =gUnknown_2023BDA + ldr r6, _0801528C @ =gChosenActionByBattler + ldr r5, _08015290 @ =gActionsByTurnOrder ldr r4, _08015294 @ =gBattlerByTurnOrder _08015252: ldrb r0, [r2] @@ -10561,8 +10561,8 @@ _08015282: b _080152F0 .align 2, 0 _08015288: .4byte gBattlersCount -_0801528C: .4byte gUnknown_2023D7C -_08015290: .4byte gUnknown_2023BDA +_0801528C: .4byte gChosenActionByBattler +_08015290: .4byte gActionsByTurnOrder _08015294: .4byte gBattlerByTurnOrder _08015298: adds r4, r5, 0x1 @@ -10570,7 +10570,7 @@ _08015298: ldrb r1, [r1] cmp r7, r1 bge _080152EE - ldr r6, _08015318 @ =gUnknown_2023BDA + ldr r6, _08015318 @ =gActionsByTurnOrder lsls r2, r5, 24 mov r8, r2 _080152A8: @@ -10634,7 +10634,7 @@ _08015304: pop {r0} bx r0 .align 2, 0 -_08015318: .4byte gUnknown_2023BDA +_08015318: .4byte gActionsByTurnOrder _0801531C: .4byte gBattlerByTurnOrder _08015320: .4byte gBattlersCount _08015324: .4byte gBattleMainFunc @@ -10924,11 +10924,11 @@ _08015550: bcc _080154CC _0801555E: bl TryClearRageStatuses - ldr r1, _080155A0 @ =gUnknown_2023BE2 + ldr r1, _080155A0 @ =gCurrentTurnActionNumber movs r0, 0 strb r0, [r1] ldr r1, _080155A4 @ =gCurrentActionFuncId - ldr r0, _080155A8 @ =gUnknown_2023BDA + ldr r0, _080155A8 @ =gActionsByTurnOrder movs r3, 0 ldrb r0, [r0] strb r0, [r1] @@ -10956,9 +10956,9 @@ _08015598: pop {r0} bx r0 .align 2, 0 -_080155A0: .4byte gUnknown_2023BE2 +_080155A0: .4byte gCurrentTurnActionNumber _080155A4: .4byte gCurrentActionFuncId -_080155A8: .4byte gUnknown_2023BDA +_080155A8: .4byte gActionsByTurnOrder _080155AC: .4byte gDynamicBasePower _080155B0: .4byte gBattleStruct _080155B4: .4byte gBattleMainFunc @@ -10982,7 +10982,7 @@ _080155D8: ldr r5, _08015624 @ =gBattleStruct ldr r0, [r5] adds r0, 0x4B - ldr r4, _08015628 @ =gUnknown_2023BE2 + ldr r4, _08015628 @ =gCurrentTurnActionNumber ldrb r1, [r4] strb r1, [r0] ldr r1, _0801562C @ =gUnknown_8250038 @@ -11015,7 +11015,7 @@ _080155D8: _0801561C: .4byte gBattleOutcome _08015620: .4byte gCurrentActionFuncId _08015624: .4byte gBattleStruct -_08015628: .4byte gUnknown_2023BE2 +_08015628: .4byte gCurrentTurnActionNumber _0801562C: .4byte gUnknown_8250038 _08015630: .4byte gBattlersCount _08015634: .4byte gHitMarker @@ -11492,7 +11492,7 @@ sub_8015A30: @ 8015A30 cmp r0, 0 bne _08015A8E bl ResetSpriteData - ldr r0, _08015A5C @ =gUnknown_3004FD4 + ldr r0, _08015A5C @ =gLeveledUpInBattle ldrb r0, [r0] cmp r0, 0 beq _08015A52 @@ -11506,7 +11506,7 @@ _08015A52: b _08015A70 .align 2, 0 _08015A58: .4byte gPaletteFade -_08015A5C: .4byte gUnknown_3004FD4 +_08015A5C: .4byte gLeveledUpInBattle _08015A60: .4byte gBattleOutcome _08015A64: .4byte gBattleMainFunc _08015A68: .4byte ReturnFromBattleToOverworld @@ -11537,7 +11537,7 @@ _08015A9C: .4byte gBattleTypeFlags thumb_func_start sub_8015AA0 sub_8015AA0: @ 8015AA0 push {r4,r5,lr} - ldr r0, _08015AF4 @ =gUnknown_3004FD4 + ldr r0, _08015AF4 @ =gLeveledUpInBattle ldrb r1, [r0] adds r3, r0, 0 cmp r1, 0 @@ -11579,14 +11579,14 @@ _08015AAE: bl EvolutionScene b _08015B1C .align 2, 0 -_08015AF4: .4byte gUnknown_3004FD4 +_08015AF4: .4byte gLeveledUpInBattle _08015AF8: .4byte gBitTable _08015AFC: .4byte gPlayerParty _08015B00: .4byte gBattleMainFunc _08015B04: .4byte sub_8015B30 _08015B08: adds r5, 0x1 - ldr r3, _08015B24 @ =gUnknown_3004FD4 + ldr r3, _08015B24 @ =gLeveledUpInBattle cmp r5, 0x5 ble _08015AAE ldrb r0, [r3] @@ -11601,7 +11601,7 @@ _08015B1C: pop {r0} bx r0 .align 2, 0 -_08015B24: .4byte gUnknown_3004FD4 +_08015B24: .4byte gLeveledUpInBattle _08015B28: .4byte gBattleMainFunc _08015B2C: .4byte ReturnFromBattleToOverworld thumb_func_end sub_8015AA0 @@ -11799,7 +11799,7 @@ sub_8015CA0: @ 8015CA0 str r0, [sp] ldr r6, _08015CE0 @ =gBattlerAttacker ldr r1, _08015CE4 @ =gBattlerByTurnOrder - ldr r0, _08015CE8 @ =gUnknown_2023BE2 + ldr r0, _08015CE8 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -11823,7 +11823,7 @@ sub_8015CA0: @ 8015CA0 .align 2, 0 _08015CE0: .4byte gBattlerAttacker _08015CE4: .4byte gBattlerByTurnOrder -_08015CE8: .4byte gUnknown_2023BE2 +_08015CE8: .4byte gCurrentTurnActionNumber _08015CEC: .4byte gBattleStruct _08015CF0: .4byte gBitTable _08015CF4: .4byte gCurrentActionFuncId @@ -11839,7 +11839,7 @@ _08015CF8: strb r2, [r0] ldr r0, _08015D74 @ =gMoveResultFlags strb r2, [r0] - ldr r0, _08015D78 @ =gUnknown_2023D72 + ldr r0, _08015D78 @ =gMultiHitCounter strb r2, [r0] ldr r0, _08015D7C @ =gBattleCommunication strb r2, [r0, 0x6] @@ -11889,7 +11889,7 @@ _08015CF8: _08015D6C: .4byte gCritMultiplier _08015D70: .4byte gBattleScripting _08015D74: .4byte gMoveResultFlags -_08015D78: .4byte gUnknown_2023D72 +_08015D78: .4byte gMultiHitCounter _08015D7C: .4byte gBattleCommunication _08015D80: .4byte gCurrMovePos _08015D84: .4byte gChosenMovePos @@ -11921,7 +11921,7 @@ _08015D9C: _08015DC2: ldr r3, _08015DD8 @ =gCurrentMove ldr r2, _08015DDC @ =gChosenMove - ldr r1, _08015DE0 @ =gUnknown_2023DB8 + ldr r1, _08015DE0 @ =gLockedMoves lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] @@ -11932,7 +11932,7 @@ _08015DC2: _08015DD4: .4byte gBattleMons _08015DD8: .4byte gCurrentMove _08015DDC: .4byte gChosenMove -_08015DE0: .4byte gUnknown_2023DB8 +_08015DE0: .4byte gLockedMoves _08015DE4: ldr r3, _08015E38 @ =gDisableStructs mov r12, r3 @@ -12567,7 +12567,7 @@ _0801631A: strb r0, [r5] _0801632C: ldr r4, _08016360 @ =gBattlescriptCurrInstr - ldr r3, _08016364 @ =gUnknown_81D65A8 + ldr r3, _08016364 @ =gBattleScriptsForMoveEffects ldr r2, _08016368 @ =gBattleMoves ldr r0, _0801636C @ =gCurrentMove ldrh r1, [r0] @@ -12594,7 +12594,7 @@ _0801634C: bx r0 .align 2, 0 _08016360: .4byte gBattlescriptCurrInstr -_08016364: .4byte gUnknown_81D65A8 +_08016364: .4byte gBattleScriptsForMoveEffects _08016368: .4byte gBattleMoves _0801636C: .4byte gCurrentMove _08016370: .4byte gCurrentActionFuncId @@ -12605,7 +12605,7 @@ sub_8016374: @ 8016374 push {r4,lr} ldr r3, _080163E0 @ =gBattlerAttacker ldr r1, _080163E4 @ =gBattlerByTurnOrder - ldr r0, _080163E8 @ =gUnknown_2023BE2 + ldr r0, _080163E8 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -12660,7 +12660,7 @@ _080163DA: .align 2, 0 _080163E0: .4byte gBattlerAttacker _080163E4: .4byte gBattlerByTurnOrder -_080163E8: .4byte gUnknown_2023BE2 +_080163E8: .4byte gCurrentTurnActionNumber _080163EC: .4byte gBattle_BG0_X _080163F0: .4byte gBattle_BG0_Y _080163F4: .4byte gActionSelectionCursor @@ -12684,7 +12684,7 @@ sub_8016418: @ 8016418 ldr r4, _08016474 @ =gBattlerAttacker ldr r2, _08016478 @ =gBattlerTarget ldr r1, _0801647C @ =gBattlerByTurnOrder - ldr r0, _08016480 @ =gUnknown_2023BE2 + ldr r0, _08016480 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -12725,7 +12725,7 @@ sub_8016418: @ 8016418 _08016474: .4byte gBattlerAttacker _08016478: .4byte gBattlerTarget _0801647C: .4byte gBattlerByTurnOrder -_08016480: .4byte gUnknown_2023BE2 +_08016480: .4byte gCurrentTurnActionNumber _08016484: .4byte gBattle_BG0_X _08016488: .4byte gBattle_BG0_Y _0801648C: .4byte gLastUsedItem @@ -13055,8 +13055,8 @@ _08016740: .4byte gUnknown_81D99E4 _08016744: .4byte gCurrentActionFuncId thumb_func_end sub_8016418 - thumb_func_start sub_8016748 -sub_8016748: @ 8016748 + thumb_func_start TryRunFromBattle +TryRunFromBattle: @ 8016748 push {r4-r7,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -13208,7 +13208,7 @@ _0801686E: _0801687A: cmp r6, 0 beq _0801688C - ldr r1, _08016898 @ =gUnknown_2023BE2 + ldr r1, _08016898 @ =gCurrentTurnActionNumber ldr r0, _0801689C @ =gBattlersCount ldrb r0, [r0] strb r0, [r1] @@ -13222,17 +13222,17 @@ _0801688C: bx r1 .align 2, 0 _08016894: .4byte gBattleStruct -_08016898: .4byte gUnknown_2023BE2 +_08016898: .4byte gCurrentTurnActionNumber _0801689C: .4byte gBattlersCount _080168A0: .4byte gBattleOutcome - thumb_func_end sub_8016748 + thumb_func_end TryRunFromBattle thumb_func_start sub_80168A4 sub_80168A4: @ 80168A4 push {r4-r6,lr} ldr r4, _080168F4 @ =gBattlerAttacker ldr r1, _080168F8 @ =gBattlerByTurnOrder - ldr r5, _080168FC @ =gUnknown_2023BE2 + ldr r5, _080168FC @ =gCurrentTurnActionNumber ldrb r0, [r5] adds r0, r1 ldrb r0, [r0] @@ -13253,7 +13253,7 @@ sub_80168A4: @ 80168A4 cmp r1, 0 beq _08016938 adds r4, r2, 0 - ldr r6, _0801690C @ =gUnknown_2023D7C + ldr r6, _0801690C @ =gChosenActionByBattler ldr r5, _08016910 @ =gBattleOutcome _080168D8: ldrb r0, [r4] @@ -13272,11 +13272,11 @@ _080168D8: .align 2, 0 _080168F4: .4byte gBattlerAttacker _080168F8: .4byte gBattlerByTurnOrder -_080168FC: .4byte gUnknown_2023BE2 +_080168FC: .4byte gCurrentTurnActionNumber _08016900: .4byte gBattleTypeFlags _08016904: .4byte gBattlersCount _08016908: .4byte gActiveBattler -_0801690C: .4byte gUnknown_2023D7C +_0801690C: .4byte gChosenActionByBattler _08016910: .4byte gBattleOutcome _08016914: ldrb r0, [r4] @@ -13316,7 +13316,7 @@ _0801694C: cmp r0, 0 bne _0801698C ldrb r0, [r4] - bl sub_8016748 + bl TryRunFromBattle lsls r0, 24 cmp r0, 0 bne _080169D8 @@ -13386,7 +13386,7 @@ sub_80169E8: @ 80169E8 push {r4,r5,lr} ldr r2, _08016A44 @ =gBattlerAttacker ldr r1, _08016A48 @ =gBattlerByTurnOrder - ldr r0, _08016A4C @ =gUnknown_2023BE2 + ldr r0, _08016A4C @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -13430,7 +13430,7 @@ sub_80169E8: @ 80169E8 .align 2, 0 _08016A44: .4byte gBattlerAttacker _08016A48: .4byte gBattlerByTurnOrder -_08016A4C: .4byte gUnknown_2023BE2 +_08016A4C: .4byte gCurrentTurnActionNumber _08016A50: .4byte gBattle_BG0_X _08016A54: .4byte gBattle_BG0_Y _08016A58: .4byte gBattleStruct @@ -13487,7 +13487,7 @@ _08016ABC: .4byte gCurrentActionFuncId sub_8016AC0: @ 8016AC0 ldr r2, _08016AF8 @ =gBattlerAttacker ldr r1, _08016AFC @ =gBattlerByTurnOrder - ldr r0, _08016B00 @ =gUnknown_2023BE2 + ldr r0, _08016B00 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -13515,7 +13515,7 @@ sub_8016AC0: @ 8016AC0 .align 2, 0 _08016AF8: .4byte gBattlerAttacker _08016AFC: .4byte gBattlerByTurnOrder -_08016B00: .4byte gUnknown_2023BE2 +_08016B00: .4byte gCurrentTurnActionNumber _08016B04: .4byte gBattle_BG0_X _08016B08: .4byte gBattle_BG0_Y _08016B0C: .4byte gNumSafariBalls @@ -13530,7 +13530,7 @@ sub_8016B20: @ 8016B20 push {r4-r7,lr} ldr r2, _08016B9C @ =gBattlerAttacker ldr r1, _08016BA0 @ =gBattlerByTurnOrder - ldr r0, _08016BA4 @ =gUnknown_2023BE2 + ldr r0, _08016BA4 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -13591,7 +13591,7 @@ _08016B86: .align 2, 0 _08016B9C: .4byte gBattlerAttacker _08016BA0: .4byte gBattlerByTurnOrder -_08016BA4: .4byte gUnknown_2023BE2 +_08016BA4: .4byte gCurrentTurnActionNumber _08016BA8: .4byte gBattle_BG0_X _08016BAC: .4byte gBattle_BG0_Y _08016BB0: .4byte gBattleStruct @@ -13605,7 +13605,7 @@ sub_8016BC0: @ 8016BC0 push {r4-r7,lr} ldr r2, _08016C3C @ =gBattlerAttacker ldr r1, _08016C40 @ =gBattlerByTurnOrder - ldr r0, _08016C44 @ =gUnknown_2023BE2 + ldr r0, _08016C44 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -13666,7 +13666,7 @@ _08016C26: .align 2, 0 _08016C3C: .4byte gBattlerAttacker _08016C40: .4byte gBattlerByTurnOrder -_08016C44: .4byte gUnknown_2023BE2 +_08016C44: .4byte gCurrentTurnActionNumber _08016C48: .4byte gBattle_BG0_X _08016C4C: .4byte gBattle_BG0_Y _08016C50: .4byte gBattleStruct @@ -13680,7 +13680,7 @@ HandleAction_SafriZoneRun: @ 8016C60 push {r4,lr} ldr r2, _08016C88 @ =gBattlerAttacker ldr r1, _08016C8C @ =gBattlerByTurnOrder - ldr r4, _08016C90 @ =gUnknown_2023BE2 + ldr r4, _08016C90 @ =gCurrentTurnActionNumber ldrb r0, [r4] adds r0, r1 ldrb r0, [r0] @@ -13699,7 +13699,7 @@ HandleAction_SafriZoneRun: @ 8016C60 .align 2, 0 _08016C88: .4byte gBattlerAttacker _08016C8C: .4byte gBattlerByTurnOrder -_08016C90: .4byte gUnknown_2023BE2 +_08016C90: .4byte gCurrentTurnActionNumber _08016C94: .4byte gBattlersCount _08016C98: .4byte gBattleOutcome thumb_func_end HandleAction_SafriZoneRun @@ -13708,7 +13708,7 @@ _08016C98: .4byte gBattleOutcome HandleAction_Action9: @ 8016C9C ldr r3, _08016CE8 @ =gBattlerAttacker ldr r1, _08016CEC @ =gBattlerByTurnOrder - ldr r0, _08016CF0 @ =gUnknown_2023BE2 + ldr r0, _08016CF0 @ =gCurrentTurnActionNumber ldrb r0, [r0] adds r0, r1 ldrb r2, [r0] @@ -13739,14 +13739,14 @@ HandleAction_Action9: @ 8016C9C ldr r1, _08016D0C @ =gCurrentActionFuncId movs r0, 0xA strb r0, [r1] - ldr r1, _08016D10 @ =gUnknown_2023BDA + ldr r1, _08016D10 @ =gActionsByTurnOrder movs r0, 0xC strb r0, [r1, 0x1] bx lr .align 2, 0 _08016CE8: .4byte gBattlerAttacker _08016CEC: .4byte gBattlerByTurnOrder -_08016CF0: .4byte gUnknown_2023BE2 +_08016CF0: .4byte gCurrentTurnActionNumber _08016CF4: .4byte gBattle_BG0_X _08016CF8: .4byte gBattle_BG0_Y _08016CFC: .4byte gBattleTextBuff1 @@ -13754,7 +13754,7 @@ _08016D00: .4byte gBattlerPartyIndexes _08016D04: .4byte gBattlescriptCurrInstr _08016D08: .4byte gUnknown_81D9A04 _08016D0C: .4byte gCurrentActionFuncId -_08016D10: .4byte gUnknown_2023BDA +_08016D10: .4byte gActionsByTurnOrder thumb_func_end HandleAction_Action9 thumb_func_start HandleAction_Action11 @@ -13782,12 +13782,12 @@ _08016D38: .4byte gCurrentActionFuncId thumb_func_start HandleAction_NothingIsFainted HandleAction_NothingIsFainted: @ 8016D3C - ldr r1, _08016D5C @ =gUnknown_2023BE2 + ldr r1, _08016D5C @ =gCurrentTurnActionNumber ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldr r3, _08016D60 @ =gCurrentActionFuncId - ldr r2, _08016D64 @ =gUnknown_2023BDA + ldr r2, _08016D64 @ =gActionsByTurnOrder ldrb r0, [r1] adds r0, r2 ldrb r0, [r0] @@ -13799,9 +13799,9 @@ HandleAction_NothingIsFainted: @ 8016D3C str r0, [r2] bx lr .align 2, 0 -_08016D5C: .4byte gUnknown_2023BE2 +_08016D5C: .4byte gCurrentTurnActionNumber _08016D60: .4byte gCurrentActionFuncId -_08016D64: .4byte gUnknown_2023BDA +_08016D64: .4byte gActionsByTurnOrder _08016D68: .4byte gHitMarker _08016D6C: .4byte 0xf1e892af thumb_func_end HandleAction_NothingIsFainted @@ -13809,12 +13809,12 @@ _08016D6C: .4byte 0xf1e892af thumb_func_start HandleAction_ActionFinished HandleAction_ActionFinished: @ 8016D70 push {r4,r5,lr} - ldr r1, _08016DE4 @ =gUnknown_2023BE2 + ldr r1, _08016DE4 @ =gCurrentTurnActionNumber ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldr r3, _08016DE8 @ =gCurrentActionFuncId - ldr r2, _08016DEC @ =gUnknown_2023BDA + ldr r2, _08016DEC @ =gActionsByTurnOrder ldrb r0, [r1] adds r0, r2 ldrb r0, [r0] @@ -13842,7 +13842,7 @@ HandleAction_ActionFinished: @ 8016D70 lsls r0, 1 adds r0, r2 strh r4, [r0] - ldr r2, _08016E10 @ =gUnknown_2023DA8 + ldr r2, _08016E10 @ =gLastHitByType ldrb r0, [r3] lsls r0, 1 adds r0, r2 @@ -13866,9 +13866,9 @@ HandleAction_ActionFinished: @ 8016D70 pop {r0} bx r0 .align 2, 0 -_08016DE4: .4byte gUnknown_2023BE2 +_08016DE4: .4byte gCurrentTurnActionNumber _08016DE8: .4byte gCurrentActionFuncId -_08016DEC: .4byte gUnknown_2023BDA +_08016DEC: .4byte gActionsByTurnOrder _08016DF0: .4byte gHitMarker _08016DF4: .4byte 0xf1e892af _08016DF8: .4byte gCurrentMove @@ -13877,7 +13877,7 @@ _08016E00: .4byte gMoveResultFlags _08016E04: .4byte gBattleScripting _08016E08: .4byte gLastLandedMoves _08016E0C: .4byte gBattlerAttacker -_08016E10: .4byte gUnknown_2023DA8 +_08016E10: .4byte gLastHitByType _08016E14: .4byte gBattleStruct _08016E18: .4byte gDynamicBasePower _08016E1C: .4byte gBattleCommunication diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s index a129795e3..f447bdf45 100644 --- a/asm/battle_anim_utility_funcs.s +++ b/asm/battle_anim_utility_funcs.s @@ -176,7 +176,7 @@ sub_80BA934: @ 80BA934 ldrsh r0, [r0, r1] bl sub_80B9A14 adds r2, r0, 0 - ldr r0, _080BA95C @ =gUnknown_2022B50 + ldr r0, _080BA95C @ =gBattleTerrain ldrb r0, [r0] cmp r0, 0x9 bhi _080BAA0A @@ -187,7 +187,7 @@ sub_80BA934: @ 80BA934 mov pc, r0 .align 2, 0 _080BA958: .4byte gBattleAnimArgs -_080BA95C: .4byte gUnknown_2022B50 +_080BA95C: .4byte gBattleTerrain _080BA960: .4byte _080BA964 .align 2, 0 _080BA964: @@ -2745,7 +2745,7 @@ sub_80BBDF0: @ 80BBDF0 lsls r0, 24 lsrs r0, 24 ldr r2, _080BBE08 @ =gBattleAnimArgs - ldr r1, _080BBE0C @ =gUnknown_2022B50 + ldr r1, _080BBE0C @ =gBattleTerrain ldrb r1, [r1] strh r1, [r2] bl DestroyAnimVisualTask @@ -2753,7 +2753,7 @@ sub_80BBDF0: @ 80BBDF0 bx r0 .align 2, 0 _080BBE08: .4byte gBattleAnimArgs -_080BBE0C: .4byte gUnknown_2022B50 +_080BBE0C: .4byte gBattleTerrain thumb_func_end sub_80BBDF0 thumb_func_start sub_80BBE10 diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index a7a115c1f..6d797fe69 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -45,14 +45,14 @@ _0801D784: orrs r1, r0 str r1, [r2] ldr r1, _0801D7C0 @ =gBattlescriptCurrInstr - ldr r0, _0801D7C4 @ =gUnknown_81D694E + ldr r0, _0801D7C4 @ =BattleScript_MoveEnd b _0801DAFA .align 2, 0 _0801D7B4: .4byte gBattleMons _0801D7B8: .4byte gBattlerAttacker _0801D7BC: .4byte gHitMarker _0801D7C0: .4byte gBattlescriptCurrInstr -_0801D7C4: .4byte gUnknown_81D694E +_0801D7C4: .4byte BattleScript_MoveEnd _0801D7C8: bl AtkCanceller_UnableToUseMove lsls r0, 24 @@ -107,7 +107,7 @@ _0801D7EE: cmp r0, 0 bne _0801D86C ldr r1, _0801D860 @ =gBattlescriptCurrInstr - ldr r0, _0801D864 @ =gUnknown_81D8EA8 + ldr r0, _0801D864 @ =BattleScript_NoPPForMove str r0, [r1] ldr r2, _0801D868 @ =gMoveResultFlags ldrb r0, [r2] @@ -124,7 +124,7 @@ _0801D854: .4byte gHitMarker _0801D858: .4byte gCurrentMove _0801D85C: .4byte 0x00800200 _0801D860: .4byte gBattlescriptCurrInstr -_0801D864: .4byte gUnknown_81D8EA8 +_0801D864: .4byte BattleScript_NoPPForMove _0801D868: .4byte gMoveResultFlags _0801D86C: ldr r0, [r5] @@ -216,7 +216,7 @@ _0801D8C4: strb r0, [r1] bl BattleScriptPushCursor ldr r1, _0801D944 @ =gBattlescriptCurrInstr - ldr r0, _0801D948 @ =gUnknown_81D8FAA + ldr r0, _0801D948 @ =BattleScript_MagicCoatBounce b _0801DAFA .align 2, 0 _0801D928: .4byte gHitMarker @@ -227,7 +227,7 @@ _0801D938: .4byte gCurrentMove _0801D93C: .4byte gBattlerAttacker _0801D940: .4byte 0x00000115 _0801D944: .4byte gBattlescriptCurrInstr -_0801D948: .4byte gUnknown_81D8FAA +_0801D948: .4byte BattleScript_MagicCoatBounce _0801D94C: movs r2, 0 ldr r0, _0801D9C8 @ =gBattlersCount @@ -285,7 +285,7 @@ _0801D98E: strb r0, [r4] bl BattleScriptPushCursor ldr r1, _0801D9E4 @ =gBattlescriptCurrInstr - ldr r0, _0801D9E8 @ =gUnknown_81D938D + ldr r0, _0801D9E8 @ =BattleScript_TookAttack str r0, [r1] mov r1, r8 ldrb r0, [r1] @@ -301,7 +301,7 @@ _0801D9D8: .4byte gCurrentMove _0801D9DC: .4byte gSpecialStatuses _0801D9E0: .4byte gLastUsedAbility _0801D9E4: .4byte gBattlescriptCurrInstr -_0801D9E8: .4byte gUnknown_81D938D +_0801D9E8: .4byte BattleScript_TookAttack _0801D9EC: lsls r0, r2, 4 add r0, r9 @@ -377,7 +377,7 @@ _0801DA5E: adds r0, r1 movs r2, 0 strh r2, [r0] - ldr r1, _0801DAAC @ =gUnknown_2023DA8 + ldr r1, _0801DAAC @ =gLastHitByType ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -394,7 +394,7 @@ _0801DA9C: .4byte gBattlerAttacker _0801DAA0: .4byte gMoveResultFlags _0801DAA4: .4byte gLastLandedMoves _0801DAA8: .4byte gBattlerTarget -_0801DAAC: .4byte gUnknown_2023DA8 +_0801DAAC: .4byte gLastHitByType _0801DAB0: .4byte gBattleCommunication _0801DAB4: ldr r0, _0801DAE0 @ =gBattlerAttacker @@ -415,14 +415,14 @@ _0801DAB4: strb r0, [r1, 0x17] bl BattleScriptPushCursor ldr r1, _0801DAEC @ =gBattlescriptCurrInstr - ldr r0, _0801DAF0 @ =gUnknown_81D8FC2 + ldr r0, _0801DAF0 @ =BattleScript_SnatchedMove b _0801DAFA .align 2, 0 _0801DAE0: .4byte gBattlerAttacker _0801DAE4: .4byte 0x00000121 _0801DAE8: .4byte gBattleScripting _0801DAEC: .4byte gBattlescriptCurrInstr -_0801DAF0: .4byte gUnknown_81D8FC2 +_0801DAF0: .4byte BattleScript_SnatchedMove _0801DAF4: ldr r1, _0801DB0C @ =gBattlescriptCurrInstr ldr r0, [r1] @@ -465,7 +465,7 @@ JumpIfMoveFailed: @ 801DB10 adds r0, r1 movs r2, 0 strh r2, [r0] - ldr r1, _0801DB6C @ =gUnknown_2023DA8 + ldr r1, _0801DB6C @ =gLastHitByType ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -486,7 +486,7 @@ _0801DB5C: .4byte gBattlescriptCurrInstr _0801DB60: .4byte gMoveResultFlags _0801DB64: .4byte gLastLandedMoves _0801DB68: .4byte gBattlerTarget -_0801DB6C: .4byte gUnknown_2023DA8 +_0801DB6C: .4byte gLastHitByType _0801DB70: bl TrySetDestinyBondToHappen ldr r0, _0801DB98 @ =gBattlerTarget @@ -2188,7 +2188,7 @@ _0801E8C0: adds r0, r1 movs r2, 0 strh r2, [r0] - ldr r1, _0801E930 @ =gUnknown_2023DA8 + ldr r1, _0801E930 @ =gLastHitByType ldrb r0, [r4] lsls r0, 1 adds r0, r1 @@ -2209,7 +2209,7 @@ _0801E920: .4byte gBattlerTarget _0801E924: .4byte gLastUsedAbility _0801E928: .4byte gMoveResultFlags _0801E92C: .4byte gLastLandedMoves -_0801E930: .4byte gUnknown_2023DA8 +_0801E930: .4byte gLastHitByType _0801E934: .4byte gBattleCommunication _0801E938: ldr r1, _0801E944 @ =gTypeEffectiveness @@ -2345,7 +2345,7 @@ _0801EA10: adds r0, r1 movs r2, 0 strh r2, [r0] - ldr r1, _0801EAA8 @ =gUnknown_2023DA8 + ldr r1, _0801EAA8 @ =gLastHitByType ldrb r0, [r5] lsls r0, 1 adds r0, r1 @@ -2393,7 +2393,7 @@ _0801EA98: .4byte gMoveResultFlags _0801EA9C: .4byte gBattleMoves _0801EAA0: .4byte gLastUsedAbility _0801EAA4: .4byte gLastLandedMoves -_0801EAA8: .4byte gUnknown_2023DA8 +_0801EAA8: .4byte gLastHitByType _0801EAAC: .4byte gBattleCommunication _0801EAB0: .4byte gProtectStructs _0801EAB4: .4byte gBattlescriptCurrInstr @@ -3662,7 +3662,7 @@ _0801F452: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _0801F498 @ =gUnknown_81D89F1 + ldr r0, _0801F498 @ =BattleScript_Pausex20 str r0, [r4] ldr r1, _0801F49C @ =gBattleScripting ldrb r0, [r1, 0x18] @@ -3677,7 +3677,7 @@ _0801F488: .4byte gBattleControllerExecFlags _0801F48C: .4byte gHitMarker _0801F490: .4byte gCurrentMove _0801F494: .4byte gBattlescriptCurrInstr -_0801F498: .4byte gUnknown_81D89F1 +_0801F498: .4byte BattleScript_Pausex20 _0801F49C: .4byte gBattleScripting _0801F4A0: ldr r2, _0801F53C @ =gBattleMoves @@ -3774,7 +3774,7 @@ _0801F564: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _0801F584 @ =gUnknown_81D89F1 + ldr r0, _0801F584 @ =BattleScript_Pausex20 str r0, [r4] _0801F572: add sp, 0xC @@ -3785,7 +3785,7 @@ _0801F572: bx r0 .align 2, 0 _0801F580: .4byte gBattlescriptCurrInstr -_0801F584: .4byte gUnknown_81D89F1 +_0801F584: .4byte BattleScript_Pausex20 thumb_func_end atk09_attackanimation thumb_func_start atk0A_waitanimation @@ -4012,7 +4012,7 @@ _0801F736: ldrb r0, [r1, 0xA] subs r0, r2 strb r0, [r1, 0xA] - ldr r1, _0801F778 @ =gUnknown_2023D54 + ldr r1, _0801F778 @ =gHpDealt ldr r0, [r6] str r0, [r1] b _0801F7AC @@ -4027,7 +4027,7 @@ _0801F768: .4byte gDisableStructs _0801F76C: .4byte gHitMarker _0801F770: .4byte gBattleMoveDamage _0801F774: .4byte gSpecialStatuses -_0801F778: .4byte gUnknown_2023D54 +_0801F778: .4byte gHpDealt _0801F77C: ldr r0, _0801F7D4 @ =gSpecialStatuses lsls r1, r2, 2 @@ -4040,7 +4040,7 @@ _0801F77C: bne _0801F790 str r5, [r1] _0801F790: - ldr r2, _0801F7D8 @ =gUnknown_2023D54 + ldr r2, _0801F7D8 @ =gHpDealt ldrb r1, [r7] lsls r0, r1, 3 subs r0, r1 @@ -4071,15 +4071,15 @@ _0801F7C0: adds r0, 0x2 str r0, [r4] bl BattleScriptPushCursor - ldr r0, _0801F7E4 @ =gUnknown_81D9526 + ldr r0, _0801F7E4 @ =BattleScript_SubstituteFade str r0, [r4] b _0801FA62 .align 2, 0 _0801F7D4: .4byte gSpecialStatuses -_0801F7D8: .4byte gUnknown_2023D54 +_0801F7D8: .4byte gHpDealt _0801F7DC: .4byte gActiveBattler _0801F7E0: .4byte gBattlescriptCurrInstr -_0801F7E4: .4byte gUnknown_81D9526 +_0801F7E4: .4byte BattleScript_SubstituteFade _0801F7E8: ldr r0, _0801F828 @ =gHitMarker ldr r2, [r0] @@ -4180,7 +4180,7 @@ _0801F8A0: ble _0801F8D0 subs r0, r1 strh r0, [r2, 0x28] - ldr r0, _0801F8CC @ =gUnknown_2023D54 + ldr r0, _0801F8CC @ =gHpDealt str r1, [r0] adds r7, r0, 0 b _0801F8E0 @@ -4188,9 +4188,9 @@ _0801F8A0: _0801F8C0: .4byte gTakenDmgByBattler _0801F8C4: .4byte gBattlerTarget _0801F8C8: .4byte gBattleMons -_0801F8CC: .4byte gUnknown_2023D54 +_0801F8CC: .4byte gHpDealt _0801F8D0: - ldr r2, _0801F954 @ =gUnknown_2023D54 + ldr r2, _0801F954 @ =gHpDealt str r0, [r2] ldrb r0, [r5] muls r0, r3 @@ -4259,7 +4259,7 @@ _0801F908: ldr r2, _0801F968 @ =gBattlerAttacker b _0801F974 .align 2, 0 -_0801F954: .4byte gUnknown_2023D54 +_0801F954: .4byte gHpDealt _0801F958: .4byte gSpecialStatuses _0801F95C: .4byte gCurrentMove _0801F960: .4byte gProtectStructs @@ -4576,7 +4576,7 @@ _0801FBAE: cmp r0, 0x2 bls _0801FBEC _0801FBCE: - ldr r1, _0801FBE8 @ =gUnknown_83FE514 + ldr r1, _0801FBE8 @ =gMissStringIds ldrb r0, [r7, 0x6] lsls r0, 1 adds r0, r1 @@ -4587,7 +4587,7 @@ _0801FBCE: _0801FBDC: .4byte gBattleControllerExecFlags _0801FBE0: .4byte gMoveResultFlags _0801FBE4: .4byte gBattleCommunication -_0801FBE8: .4byte gUnknown_83FE514 +_0801FBE8: .4byte gMissStringIds _0801FBEC: movs r0, 0x1 strb r0, [r7, 0x7] @@ -4653,7 +4653,7 @@ _0801FC38: strb r0, [r6] bl BattleScriptPushCursor ldr r1, _0801FC70 @ =gBattlescriptCurrInstr - ldr r0, _0801FC74 @ =gUnknown_81D9641 + ldr r0, _0801FC74 @ =BattleScript_HangedOnMsg b _0801FD3E .align 2, 0 _0801FC60: .4byte gLastUsedItem @@ -4661,7 +4661,7 @@ _0801FC64: .4byte gBattleMons _0801FC68: .4byte gBattlerTarget _0801FC6C: .4byte gPotentialItemEffectBattler _0801FC70: .4byte gBattlescriptCurrInstr -_0801FC74: .4byte gUnknown_81D9641 +_0801FC74: .4byte BattleScript_HangedOnMsg _0801FC78: adds r2, r6, 0 ldrb r5, [r2] @@ -4686,11 +4686,11 @@ _0801FC88: strb r0, [r2] bl BattleScriptPushCursor ldr r1, _0801FCA8 @ =gBattlescriptCurrInstr - ldr r0, _0801FCAC @ =gUnknown_81D8FE4 + ldr r0, _0801FCAC @ =BattleScript_OneHitKOMsg b _0801FD3E .align 2, 0 _0801FCA8: .4byte gBattlescriptCurrInstr -_0801FCAC: .4byte gUnknown_81D8FE4 +_0801FCAC: .4byte BattleScript_OneHitKOMsg _0801FCB0: movs r0, 0x40 ands r0, r5 @@ -4701,11 +4701,11 @@ _0801FCB0: strb r0, [r2] bl BattleScriptPushCursor ldr r1, _0801FCC8 @ =gBattlescriptCurrInstr - ldr r0, _0801FCCC @ =gUnknown_81D8FDD + ldr r0, _0801FCCC @ =BattleScript_EnduredMsg b _0801FD3E .align 2, 0 _0801FCC8: .4byte gBattlescriptCurrInstr -_0801FCCC: .4byte gUnknown_81D8FDD +_0801FCCC: .4byte BattleScript_EnduredMsg _0801FCD0: movs r0, 0x80 ands r0, r5 @@ -4728,7 +4728,7 @@ _0801FCD0: strb r0, [r6] bl BattleScriptPushCursor ldr r1, _0801FD10 @ =gBattlescriptCurrInstr - ldr r0, _0801FD14 @ =gUnknown_81D9641 + ldr r0, _0801FD14 @ =BattleScript_HangedOnMsg b _0801FD3E .align 2, 0 _0801FD00: .4byte gLastUsedItem @@ -4736,7 +4736,7 @@ _0801FD04: .4byte gBattleMons _0801FD08: .4byte gBattlerTarget _0801FD0C: .4byte gPotentialItemEffectBattler _0801FD10: .4byte gBattlescriptCurrInstr -_0801FD14: .4byte gUnknown_81D9641 +_0801FD14: .4byte BattleScript_HangedOnMsg _0801FD18: movs r0, 0x20 ands r0, r5 @@ -4865,7 +4865,7 @@ _0801FDFC: ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 - ldr r3, _0801FE2C @ =gUnknown_2023E7C + ldr r3, _0801FE2C @ =gPauseCounterBattle ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] @@ -4884,7 +4884,7 @@ _0801FE22: bx r0 .align 2, 0 _0801FE28: .4byte gBattlescriptCurrInstr -_0801FE2C: .4byte gUnknown_2023E7C +_0801FE2C: .4byte gPauseCounterBattle thumb_func_end atk12_waitmessage thumb_func_start atk13_printfromtable @@ -5347,7 +5347,7 @@ _080201A6: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _080201DC @ =gUnknown_81D9438 + ldr r0, _080201DC @ =BattleScript_PSNPrevention _080201C0: str r0, [r4] ldr r2, _080201E0 @ =gHitMarker @@ -5363,7 +5363,7 @@ _080201D2: .align 2, 0 _080201D4: .4byte gLastUsedAbility _080201D8: .4byte gBattlescriptCurrInstr -_080201DC: .4byte gUnknown_81D9438 +_080201DC: .4byte BattleScript_PSNPrevention _080201E0: .4byte gHitMarker _080201E4: mov r1, r9 @@ -5470,12 +5470,12 @@ _0802028A: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _080202B0 @ =gUnknown_81D9420 + ldr r0, _080202B0 @ =BattleScript_BRNPrevention b _080201C0 .align 2, 0 _080202A8: .4byte gLastUsedAbility _080202AC: .4byte gBattlescriptCurrInstr -_080202B0: .4byte gUnknown_81D9420 +_080202B0: .4byte BattleScript_BRNPrevention _080202B4: mov r0, r9 ldrb r1, [r0] @@ -5510,12 +5510,12 @@ _080202EA: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020300 @ =gUnknown_81D9420 + ldr r0, _08020300 @ =BattleScript_BRNPrevention b _080204F4 .align 2, 0 _080202F8: .4byte gHitMarker _080202FC: .4byte gBattlescriptCurrInstr -_08020300: .4byte gUnknown_81D9420 +_08020300: .4byte BattleScript_BRNPrevention _08020304: mov r3, r9 ldrb r0, [r3] @@ -5661,12 +5661,12 @@ _08020402: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020428 @ =gUnknown_81D942C + ldr r0, _08020428 @ =BattleScript_PRLZPrevention b _080201C0 .align 2, 0 _08020420: .4byte gLastUsedAbility _08020424: .4byte gBattlescriptCurrInstr -_08020428: .4byte gUnknown_81D942C +_08020428: .4byte BattleScript_PRLZPrevention _0802042C: mov r0, r8 adds r0, 0x4C @@ -5704,7 +5704,7 @@ _0802045A: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _0802049C @ =gUnknown_81D9438 + ldr r0, _0802049C @ =BattleScript_PSNPrevention str r0, [r4] ldr r2, _080204A0 @ =gHitMarker ldr r1, [r2] @@ -5723,7 +5723,7 @@ _08020484: .align 2, 0 _08020494: .4byte gLastUsedAbility _08020498: .4byte gBattlescriptCurrInstr -_0802049C: .4byte gUnknown_81D9438 +_0802049C: .4byte BattleScript_PSNPrevention _080204A0: .4byte gHitMarker _080204A4: .4byte 0xffffdfff _080204A8: @@ -5765,7 +5765,7 @@ _080204E8: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020508 @ =gUnknown_81D9438 + ldr r0, _08020508 @ =BattleScript_PSNPrevention _080204F4: str r0, [r4] ldr r1, _0802050C @ =gBattleCommunication @@ -5775,7 +5775,7 @@ _080204F4: .align 2, 0 _08020500: .4byte gHitMarker _08020504: .4byte gBattlescriptCurrInstr -_08020508: .4byte gUnknown_81D9438 +_08020508: .4byte BattleScript_PSNPrevention _0802050C: .4byte gBattleCommunication _08020510: mov r3, r9 @@ -6130,17 +6130,17 @@ _0802084C: movs r1, 0x27 bl RecordAbilityBattle ldr r1, _08020868 @ =gBattlescriptCurrInstr - ldr r0, _0802086C @ =gUnknown_81D9452 + ldr r0, _0802086C @ =BattleScript_FlinchPrevention str r0, [r1] bl _0802110A .align 2, 0 _08020864: .4byte gLastUsedAbility _08020868: .4byte gBattlescriptCurrInstr -_0802086C: .4byte gUnknown_81D9452 +_0802086C: .4byte BattleScript_FlinchPrevention _08020870: adds r0, r2, 0 bl GetBattlerTurnOrderNum - ldr r1, _080208AC @ =gUnknown_2023BE2 + ldr r1, _080208AC @ =gCurrentTurnActionNumber lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] @@ -6166,7 +6166,7 @@ _08020886: str r1, [r2] bl _080210EC .align 2, 0 -_080208AC: .4byte gUnknown_2023BE2 +_080208AC: .4byte gCurrentTurnActionNumber _080208B0: .4byte sStatusFlagsForMoveEffects _080208B4: .4byte gBattleCommunication _080208B8: @@ -6188,7 +6188,7 @@ _080208D4: lsls r0, 5 orrs r1, r0 str r1, [r2] - ldr r1, _08020920 @ =gUnknown_2023DB8 + ldr r1, _08020920 @ =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -6220,7 +6220,7 @@ _080208D4: ldr r0, [r0] bl _08021108 .align 2, 0 -_08020920: .4byte gUnknown_2023DB8 +_08020920: .4byte gLockedMoves _08020924: .4byte gCurrentMove _08020928: .4byte gBattlescriptCurrInstr _0802092C: .4byte sMoveEffectBS_Ptrs @@ -6233,7 +6233,7 @@ _08020934: ands r1, r0 cmp r1, 0 bne _0802096C - ldr r4, _08020988 @ =gUnknown_2023E7E + ldr r4, _08020988 @ =gPaydayMoney ldrh r3, [r4] ldr r2, _0802098C @ =gBattleMons ldrb r1, [r5] @@ -6267,7 +6267,7 @@ _0802096C: b _08021108 .align 2, 0 _08020984: .4byte gBattlerAttacker -_08020988: .4byte gUnknown_2023E7E +_08020988: .4byte gPaydayMoney _0802098C: .4byte gBattleMons _08020990: .4byte 0x0000ffff _08020994: .4byte gBattlescriptCurrInstr @@ -6314,7 +6314,7 @@ _080209D8: lsls r1, 5 orrs r0, r1 str r0, [r2] - ldr r1, _08020A14 @ =gUnknown_2023DB8 + ldr r1, _08020A14 @ =gLockedMoves mov r2, r9 ldrb r0, [r2] lsls r0, 1 @@ -6332,7 +6332,7 @@ _080209D8: strb r0, [r1, 0x1] b _080210EC .align 2, 0 -_08020A14: .4byte gUnknown_2023DB8 +_08020A14: .4byte gLockedMoves _08020A18: .4byte gCurrentMove _08020A1C: .4byte gProtectStructs _08020A20: @@ -6398,7 +6398,7 @@ _08020A3C: ldr r0, [r0] str r0, [r4] strb r5, [r2, 0x5] - ldr r3, _08020AE8 @ =gUnknown_83FE664 + ldr r3, _08020AE8 @ =gTrappingMoves ldrh r0, [r3] ldrh r4, [r6] cmp r0, r4 @@ -6432,10 +6432,10 @@ _08020AD8: .4byte gBattlerAttacker _08020ADC: .4byte gBattlescriptCurrInstr _08020AE0: .4byte sMoveEffectBS_Ptrs _08020AE4: .4byte gBattleCommunication -_08020AE8: .4byte gUnknown_83FE664 +_08020AE8: .4byte gTrappingMoves _08020AEC: ldr r1, _08020B1C @ =gBattleMoveDamage - ldr r0, _08020B20 @ =gUnknown_2023D54 + ldr r0, _08020B20 @ =gHpDealt ldr r0, [r0] cmp r0, 0 bge _08020AF8 @@ -6461,7 +6461,7 @@ _08020B04: b _08021108 .align 2, 0 _08020B1C: .4byte gBattleMoveDamage -_08020B20: .4byte gUnknown_2023D54 +_08020B20: .4byte gHpDealt _08020B24: .4byte gBattlescriptCurrInstr _08020B28: .4byte sMoveEffectBS_Ptrs _08020B2C: .4byte gBattleCommunication @@ -6490,12 +6490,12 @@ _08020B4C: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020B70 @ =gUnknown_81D6BD1 + ldr r0, _08020B70 @ =BattleScript_StatUp b _08021108 .align 2, 0 _08020B68: .4byte gBattleScripting _08020B6C: .4byte gBattlescriptCurrInstr -_08020B70: .4byte gUnknown_81D6BD1 +_08020B70: .4byte BattleScript_StatUp _08020B74: movs r0, 0x70 negs r0, r0 @@ -6522,12 +6522,12 @@ _08020B92: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020BB4 @ =gUnknown_81D6C62 + ldr r0, _08020BB4 @ =BattleScript_StatDown b _08021108 .align 2, 0 _08020BAC: .4byte gBattleScripting _08020BB0: .4byte gBattlescriptCurrInstr -_08020BB4: .4byte gUnknown_81D6C62 +_08020BB4: .4byte BattleScript_StatDown _08020BB8: ldrb r1, [r6, 0x3] adds r1, 0xDA @@ -6553,12 +6553,12 @@ _08020BD4: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020BF8 @ =gUnknown_81D6BD1 + ldr r0, _08020BF8 @ =BattleScript_StatUp b _08021108 .align 2, 0 _08020BF0: .4byte gBattleScripting _08020BF4: .4byte gBattlescriptCurrInstr -_08020BF8: .4byte gUnknown_81D6BD1 +_08020BF8: .4byte BattleScript_StatUp _08020BFC: movs r0, 0x60 negs r0, r0 @@ -6585,12 +6585,12 @@ _08020C1A: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020C3C @ =gUnknown_81D6C62 + ldr r0, _08020C3C @ =BattleScript_StatDown b _08021108 .align 2, 0 _08020C34: .4byte gBattleScripting _08020C38: .4byte gBattlescriptCurrInstr -_08020C3C: .4byte gUnknown_81D6C62 +_08020C3C: .4byte BattleScript_StatDown _08020C40: mov r0, r9 ldrb r1, [r0] @@ -6614,7 +6614,7 @@ _08020C40: adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x19] - ldr r1, _08020C80 @ =gUnknown_2023DB8 + ldr r1, _08020C80 @ =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -6624,7 +6624,7 @@ _08020C40: b _080210EC .align 2, 0 _08020C7C: .4byte gDisableStructs -_08020C80: .4byte gUnknown_2023DB8 +_08020C80: .4byte gLockedMoves _08020C84: .4byte gCurrentMove _08020C88: ldr r0, _08020CA4 @ =gBattlerAttacker @@ -6726,7 +6726,7 @@ _08020D26: cmp r0, 0x3C bne _08020D94 ldr r1, _08020D88 @ =gBattlescriptCurrInstr - ldr r0, _08020D8C @ =gUnknown_81D948E + ldr r0, _08020D8C @ =BattleScript_StickyHoldActivates str r0, [r1] ldr r1, _08020D90 @ =gLastUsedAbility ldrb r0, [r7] @@ -6750,7 +6750,7 @@ _08020D7C: .4byte gBattlerPartyIndexes _08020D80: .4byte gBattleMons _08020D84: .4byte gBattlerTarget _08020D88: .4byte gBattlescriptCurrInstr -_08020D8C: .4byte gUnknown_81D948E +_08020D8C: .4byte BattleScript_StickyHoldActivates _08020D90: .4byte gLastUsedAbility _08020D94: ldr r4, _08020E60 @ =gBattlerAttacker @@ -6838,7 +6838,7 @@ _08020DD4: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020E74 @ =gUnknown_81D9271 + ldr r0, _08020E74 @ =BattleScript_ItemSteal str r0, [r4] ldrb r0, [r7] ldr r1, [r5] @@ -6859,7 +6859,7 @@ _08020E64: .4byte gBattleStruct _08020E68: .4byte gLastUsedItem _08020E6C: .4byte gActiveBattler _08020E70: .4byte gBattlescriptCurrInstr -_08020E74: .4byte gUnknown_81D9271 +_08020E74: .4byte BattleScript_ItemSteal _08020E78: ldr r3, _08020EA8 @ =gBattlerTarget ldrb r1, [r3] @@ -6908,21 +6908,21 @@ _08020ED0: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020EE4 @ =gUnknown_81D8D55 + ldr r0, _08020EE4 @ =BattleScript_AllStatsUp b _08021108 .align 2, 0 _08020EE0: .4byte gBattlescriptCurrInstr -_08020EE4: .4byte gUnknown_81D8D55 +_08020EE4: .4byte BattleScript_AllStatsUp _08020EE8: ldr r4, _08020EF8 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020EFC @ =gUnknown_81D8DF1 + ldr r0, _08020EFC @ =BattleScript_RapidSpinAway b _08021108 .align 2, 0 _08020EF8: .4byte gBattlescriptCurrInstr -_08020EFC: .4byte gUnknown_81D8DF1 +_08020EFC: .4byte BattleScript_RapidSpinAway _08020F00: ldr r6, _08020F50 @ =gBattlerTarget ldrb r0, [r6] @@ -6960,26 +6960,26 @@ _08020F1A: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020F5C @ =gUnknown_81D9177 + ldr r0, _08020F5C @ =BattleScript_TargetPRLZHeal b _08021108 .align 2, 0 _08020F50: .4byte gBattlerTarget _08020F54: .4byte gActiveBattler _08020F58: .4byte gBattlescriptCurrInstr -_08020F5C: .4byte gUnknown_81D9177 +_08020F5C: .4byte BattleScript_TargetPRLZHeal _08020F60: ldr r4, _08020F70 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08020F74 @ =gUnknown_81D8F35 + ldr r0, _08020F74 @ =BattleScript_AtkDefDown b _08021108 .align 2, 0 _08020F70: .4byte gBattlescriptCurrInstr -_08020F74: .4byte gUnknown_81D8F35 +_08020F74: .4byte BattleScript_AtkDefDown _08020F78: ldr r4, _08020FA8 @ =gBattleMoveDamage - ldr r0, _08020FAC @ =gUnknown_2023D54 + ldr r0, _08020FAC @ =gHpDealt ldr r0, [r0] movs r1, 0x3 bl __divsi3 @@ -7002,7 +7002,7 @@ _08020F8E: b _08021108 .align 2, 0 _08020FA8: .4byte gBattleMoveDamage -_08020FAC: .4byte gUnknown_2023D54 +_08020FAC: .4byte gHpDealt _08020FB0: .4byte gBattlescriptCurrInstr _08020FB4: .4byte sMoveEffectBS_Ptrs _08020FB8: .4byte gBattleCommunication @@ -7026,7 +7026,7 @@ _08020FD8: lsls r0, 5 orrs r1, r0 str r1, [r2] - ldr r1, _08021010 @ =gUnknown_2023DB8 + ldr r1, _08021010 @ =gLockedMoves mov r2, r9 ldrb r0, [r2] lsls r0, 1 @@ -7050,7 +7050,7 @@ _08021008: str r0, [r2] b _0802110A .align 2, 0 -_08021010: .4byte gUnknown_2023DB8 +_08021010: .4byte gLockedMoves _08021014: .4byte gCurrentMove _08021018: mov r5, r9 @@ -7071,7 +7071,7 @@ _08021018: ldr r0, _0802104C @ =gLastUsedAbility strb r2, [r0] ldr r1, _08021050 @ =gBattlescriptCurrInstr - ldr r0, _08021054 @ =gUnknown_81D948E + ldr r0, _08021054 @ =BattleScript_StickyHoldActivates str r0, [r1] ldrb r0, [r5] movs r1, 0x3C @@ -7080,7 +7080,7 @@ _08021018: .align 2, 0 _0802104C: .4byte gLastUsedAbility _08021050: .4byte gBattlescriptCurrInstr -_08021054: .4byte gUnknown_81D948E +_08021054: .4byte BattleScript_StickyHoldActivates _08021058: ldrh r0, [r1, 0x2E] cmp r0, 0 @@ -7122,7 +7122,7 @@ _08021058: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _080210E4 @ =gUnknown_81D8F86 + ldr r0, _080210E4 @ =BattleScript_KnockedOff str r0, [r4] mov r1, r9 ldrb r0, [r1] @@ -7146,7 +7146,7 @@ _080210D4: .4byte gWishFutureKnock _080210D8: .4byte gBitTable _080210DC: .4byte gBattlerPartyIndexes _080210E0: .4byte gBattlescriptCurrInstr -_080210E4: .4byte gUnknown_81D8F86 +_080210E4: .4byte BattleScript_KnockedOff _080210E8: .4byte gBattleStruct _080210EC: ldr r1, _080210F8 @ =gBattlescriptCurrInstr @@ -7161,7 +7161,7 @@ _080210FC: ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08021120 @ =gUnknown_81D8FEB + ldr r0, _08021120 @ =BattleScript_SAtkDown2 _08021108: str r0, [r4] _0802110A: @@ -7175,7 +7175,7 @@ _0802110A: bx r0 .align 2, 0 _0802111C: .4byte gBattlescriptCurrInstr -_08021120: .4byte gUnknown_81D8FEB +_08021120: .4byte BattleScript_SAtkDown2 thumb_func_end SetMoveEffect thumb_func_start atk15_seteffectwithchance @@ -7443,13 +7443,13 @@ _08021330: ldr r0, _08021350 @ =gBattlerTarget ldrb r0, [r0] mov r9, r0 - ldr r4, _08021354 @ =gUnknown_81D8674 + ldr r4, _08021354 @ =BattleScript_FaintAttacker b _08021368 .align 2, 0 _08021348: .4byte gActiveBattler _0802134C: .4byte gBattlerAttacker _08021350: .4byte gBattlerTarget -_08021354: .4byte gUnknown_81D8674 +_08021354: .4byte BattleScript_FaintAttacker _08021358: ldr r1, _080213D0 @ =gActiveBattler ldr r0, _080213D4 @ =gBattlerTarget @@ -7458,7 +7458,7 @@ _08021358: ldr r0, _080213D8 @ =gBattlerAttacker ldrb r0, [r0] mov r9, r0 - ldr r4, _080213DC @ =gUnknown_81D8684 + ldr r4, _080213DC @ =BattleScript_FaintTarget _08021368: mov r8, r1 ldr r0, _080213E0 @ =gAbsentBattlerFlags @@ -7516,7 +7516,7 @@ _080213C8: _080213D0: .4byte gActiveBattler _080213D4: .4byte gBattlerTarget _080213D8: .4byte gBattlerAttacker -_080213DC: .4byte gUnknown_81D8684 +_080213DC: .4byte BattleScript_FaintTarget _080213E0: .4byte gAbsentBattlerFlags _080213E4: .4byte gBitTable _080213E8: .4byte gBattleMons @@ -7580,7 +7580,7 @@ _0802142C: adds r0, r6 ldrh r0, [r0, 0x28] str r0, [r1] - ldr r0, _08021570 @ =gUnknown_81D8C6C + ldr r0, _08021570 @ =BattleScript_DestinyBondTakesLife str r0, [r4] _0802146A: ldr r1, _08021574 @ =gStatuses3 @@ -7645,7 +7645,7 @@ _08021492: ldr r5, _08021568 @ =gBattlescriptCurrInstr ldr r0, [r5] bl BattleScriptPush - ldr r0, _08021580 @ =gUnknown_81D8FA3 + ldr r0, _08021580 @ =BattleScript_GrudgeTakesPp str r0, [r5] ldr r5, _08021584 @ =gActiveBattler mov r1, r8 @@ -7702,11 +7702,11 @@ _08021560: .4byte gHitMarker _08021564: .4byte gBattleMons _08021568: .4byte gBattlescriptCurrInstr _0802156C: .4byte gBattleMoveDamage -_08021570: .4byte gUnknown_81D8C6C +_08021570: .4byte BattleScript_DestinyBondTakesLife _08021574: .4byte gStatuses3 _08021578: .4byte gBattlerTarget _0802157C: .4byte gCurrentMove -_08021580: .4byte gUnknown_81D8FA3 +_08021580: .4byte BattleScript_GrudgeTakesPp _08021584: .4byte gActiveBattler _08021588: .4byte gBattleTextBuff1 _0802158C: @@ -8538,7 +8538,7 @@ _08021BC2: movs r0, 0x1 strh r0, [r1] _08021C0E: - ldr r5, _08021C34 @ =gUnknown_2023F52 + ldr r5, _08021C34 @ =gExpShareExp adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 @@ -8553,7 +8553,7 @@ _08021C0E: _08021C28: .4byte gBaseStats _08021C2C: .4byte gBattleMons _08021C30: .4byte gBattlerFainted -_08021C34: .4byte gUnknown_2023F52 +_08021C34: .4byte gExpShareExp _08021C38: adds r0, r1, 0 adds r1, r5, 0 @@ -8566,7 +8566,7 @@ _08021C38: movs r0, 0x1 strh r0, [r2] _08021C4E: - ldr r0, _08021C9C @ =gUnknown_2023F52 + ldr r0, _08021C9C @ =gExpShareExp strh r6, [r0] _08021C52: ldr r1, _08021CA0 @ =gBattleScripting @@ -8608,7 +8608,7 @@ _08021C74: ldrb r4, [r0] b _08021CC0 .align 2, 0 -_08021C9C: .4byte gUnknown_2023F52 +_08021C9C: .4byte gExpShareExp _08021CA0: .4byte gBattleScripting _08021CA4: .4byte gBattleStruct _08021CA8: .4byte gBattleControllerExecFlags @@ -8730,7 +8730,7 @@ _08021DA4: _08021DAA: cmp r4, 0x19 bne _08021DBA - ldr r0, _08021E2C @ =gUnknown_2023F52 + ldr r0, _08021E2C @ =gExpShareExp ldrh r1, [r0] mov r2, r9 ldr r0, [r2] @@ -8791,7 +8791,7 @@ _08021DEA: b _08021E42 .align 2, 0 _08021E28: .4byte gBattleMoveDamage -_08021E2C: .4byte gUnknown_2023F52 +_08021E2C: .4byte gExpShareExp _08021E30: .4byte gBattleTypeFlags _08021E34: .4byte gBattleStruct _08021E38: .4byte gPlayerParty @@ -9149,7 +9149,7 @@ _080220DA: negs r0, r0 strb r0, [r4, 0x5] bl BattleScriptPushCursor - ldr r2, _08022338 @ =gUnknown_3004FD4 + ldr r2, _08022338 @ =gLeveledUpInBattle ldr r1, _0802233C @ =gBitTable mov r4, r9 ldr r5, [r4] @@ -9161,7 +9161,7 @@ _080220DA: orrs r0, r1 strb r0, [r2] ldr r1, _08022340 @ =gBattlescriptCurrInstr - ldr r0, _08022344 @ =gUnknown_81D89F5 + ldr r0, _08022344 @ =BattleScript_LevelUp str r0, [r1] ldr r4, _08022348 @ =gBattleMoveDamage ldr r2, _08022320 @ =gBattleBufferB @@ -9388,10 +9388,10 @@ _08022328: .4byte gBattlerPartyIndexes _0802232C: .4byte gPlayerParty _08022330: .4byte gBattleTextBuff1 _08022334: .4byte gBattleTextBuff2 -_08022338: .4byte gUnknown_3004FD4 +_08022338: .4byte gLeveledUpInBattle _0802233C: .4byte gBitTable _08022340: .4byte gBattlescriptCurrInstr -_08022344: .4byte gUnknown_81D89F5 +_08022344: .4byte BattleScript_LevelUp _08022348: .4byte gBattleMoveDamage _0802234C: .4byte gBattleMons _08022350: @@ -9740,7 +9740,7 @@ _080225EC: .4byte gBattlescriptCurrInstr thumb_func_start atk26_setmultihit atk26_setmultihit: @ 80225F0 - ldr r3, _08022600 @ =gUnknown_2023D72 + ldr r3, _08022600 @ =gMultiHitCounter ldr r2, _08022604 @ =gBattlescriptCurrInstr ldr r0, [r2] ldrb r1, [r0, 0x1] @@ -9749,14 +9749,14 @@ atk26_setmultihit: @ 80225F0 str r0, [r2] bx lr .align 2, 0 -_08022600: .4byte gUnknown_2023D72 +_08022600: .4byte gMultiHitCounter _08022604: .4byte gBattlescriptCurrInstr thumb_func_end atk26_setmultihit thumb_func_start atk27_decrementmultihit atk27_decrementmultihit: @ 8022608 push {lr} - ldr r1, _08022624 @ =gUnknown_2023D72 + ldr r1, _08022624 @ =gMultiHitCounter ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -9769,7 +9769,7 @@ atk27_decrementmultihit: @ 8022608 str r0, [r1] b _08022646 .align 2, 0 -_08022624: .4byte gUnknown_2023D72 +_08022624: .4byte gMultiHitCounter _08022628: .4byte gBattlescriptCurrInstr _0802262C: ldr r3, _0802264C @ =gBattlescriptCurrInstr @@ -10620,7 +10620,7 @@ atk39_pause: @ 8022C08 ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 - ldr r3, _08022C44 @ =gUnknown_2023E7C + ldr r3, _08022C44 @ =gPauseCounterBattle ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] @@ -10638,7 +10638,7 @@ _08022C34: .align 2, 0 _08022C3C: .4byte gBattleControllerExecFlags _08022C40: .4byte gBattlescriptCurrInstr -_08022C44: .4byte gUnknown_2023E7C +_08022C44: .4byte gPauseCounterBattle thumb_func_end atk39_pause thumb_func_start atk3A_waitstate @@ -10957,11 +10957,11 @@ _08022E8C: beq _08022EAC adds r0, r2, 0x7 bl BattleScriptPush - ldr r0, _08022EA8 @ =gUnknown_81D89F1 + ldr r0, _08022EA8 @ =BattleScript_Pausex20 b _08022EEC .align 2, 0 _08022EA4: .4byte gHitMarker -_08022EA8: .4byte gUnknown_81D89F1 +_08022EA8: .4byte BattleScript_Pausex20 _08022EAC: adds r0, r5, 0 subs r0, 0xA @@ -11531,7 +11531,7 @@ _080232F0: ldr r0, _08023324 @ =gBattleScripting strb r4, [r0, 0x14] bl MoveValuesCleanUp - ldr r2, _08023328 @ =gUnknown_81D65A8 + ldr r2, _08023328 @ =gBattleScriptsForMoveEffects mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 @@ -11544,13 +11544,13 @@ _080232F0: ldr r0, [r0] bl BattleScriptPush ldr r1, _0802332C @ =gBattlescriptCurrInstr - ldr r0, _08023330 @ =gUnknown_81D96A8 + ldr r0, _08023330 @ =BattleScript_FlushMessageBox bl _08023BFC .align 2, 0 _08023324: .4byte gBattleScripting -_08023328: .4byte gUnknown_81D65A8 +_08023328: .4byte gBattleScriptsForMoveEffects _0802332C: .4byte gBattlescriptCurrInstr -_08023330: .4byte gUnknown_81D96A8 +_08023330: .4byte BattleScript_FlushMessageBox _08023334: ldr r2, _0802334C @ =gBattleMoves ldr r0, _08023350 @ =gCurrentMove @@ -11702,7 +11702,7 @@ _0802346A: strb r0, [r1, 0x19] bl BattleScriptPushCursor ldr r1, _08023498 @ =gBattlescriptCurrInstr - ldr r0, _0802349C @ =gUnknown_81D8C48 + ldr r0, _0802349C @ =BattleScript_RageIsBuilding str r0, [r1] b _080236FC .align 2, 0 @@ -11714,7 +11714,7 @@ _0802348C: .4byte gSpecialStatuses _08023490: .4byte gBattleMoves _08023494: .4byte gCurrentMove _08023498: .4byte gBattlescriptCurrInstr -_0802349C: .4byte gUnknown_81D8C48 +_0802349C: .4byte BattleScript_RageIsBuilding _080234A0: ldr r4, _0802353C @ =gBattleMons ldr r6, _08023540 @ =gBattlerTarget @@ -11791,7 +11791,7 @@ _080234FE: bl MarkBattlerForControllerExec bl BattleScriptPushCursor ldr r1, _08023554 @ =gBattlescriptCurrInstr - ldr r0, _08023558 @ =gUnknown_81D9098 + ldr r0, _08023558 @ =BattleScript_DefrostedViaFireMove str r0, [r1] movs r2, 0x1 mov r10, r2 @@ -11804,7 +11804,7 @@ _08023548: .4byte gSpecialStatuses _0802354C: .4byte gMoveResultFlags _08023550: .4byte gActiveBattler _08023554: .4byte gBattlescriptCurrInstr -_08023558: .4byte gUnknown_81D9098 +_08023558: .4byte BattleScript_DefrostedViaFireMove _0802355C: ldr r0, _0802357C @ =gBattlerTarget ldrb r1, [r0] @@ -12219,7 +12219,7 @@ _0802388A: ands r0, r1 cmp r0, 0 beq _080238A6 - ldr r0, _08023928 @ =gUnknown_2023D90 + ldr r0, _08023928 @ =gLastPrintedMoves mov r2, r9 ldrb r1, [r2] lsls r1, 1 @@ -12276,7 +12276,7 @@ _080238E8: ldr r0, _0802392C @ =gChosenMove ldrh r0, [r0] strh r0, [r1] - ldr r0, _08023944 @ =gUnknown_2023DB0 + ldr r0, _08023944 @ =gLastResultingMoves mov r3, r9 ldrb r1, [r3] lsls r1, 1 @@ -12291,14 +12291,14 @@ _08023918: .4byte gBattlerAttacker _0802391C: .4byte gActiveBattler _08023920: .4byte gBattlerTarget _08023924: .4byte 0xffffefff -_08023928: .4byte gUnknown_2023D90 +_08023928: .4byte gLastPrintedMoves _0802392C: .4byte gChosenMove _08023930: .4byte gAbsentBattlerFlags _08023934: .4byte gBitTable _08023938: .4byte gBattleStruct _0802393C: .4byte gBattleMoves _08023940: .4byte gLastMoves -_08023944: .4byte gUnknown_2023DB0 +_08023944: .4byte gLastResultingMoves _08023948: .4byte gCurrentMove _0802394C: ldr r1, _080239B4 @ =gLastMoves @@ -12306,7 +12306,7 @@ _0802394C: adds r0, r1 ldr r1, _080239B8 @ =0x0000ffff strh r1, [r0] - ldr r1, _080239BC @ =gUnknown_2023DB0 + ldr r1, _080239BC @ =gLastResultingMoves mov r4, r9 ldrb r0, [r4] lsls r0, 1 @@ -12357,7 +12357,7 @@ _08023984: .align 2, 0 _080239B4: .4byte gLastMoves _080239B8: .4byte 0x0000ffff -_080239BC: .4byte gUnknown_2023DB0 +_080239BC: .4byte gLastResultingMoves _080239C0: .4byte gBattlerTarget _080239C4: .4byte gLastHitBy _080239C8: .4byte gMoveResultFlags @@ -12375,7 +12375,7 @@ _080239D4: ldrb r3, [r0, 0x13] cmp r3, 0 beq _08023A04 - ldr r0, _08023A00 @ =gUnknown_2023DA8 + ldr r0, _08023A00 @ =gLastHitByType ldrb r1, [r2] lsls r1, 1 adds r1, r0 @@ -12385,9 +12385,9 @@ _080239D4: .align 2, 0 _080239F8: .4byte gLastLandedMoves _080239FC: .4byte gCurrentMove -_08023A00: .4byte gUnknown_2023DA8 +_08023A00: .4byte gLastHitByType _08023A04: - ldr r0, _08023A1C @ =gUnknown_2023DA8 + ldr r0, _08023A1C @ =gLastHitByType ldrb r2, [r2] lsls r2, 1 adds r2, r0 @@ -12400,7 +12400,7 @@ _08023A04: strh r0, [r2] b _08023A2C .align 2, 0 -_08023A1C: .4byte gUnknown_2023DA8 +_08023A1C: .4byte gLastHitByType _08023A20: ldr r0, _08023A38 @ =gLastLandedMoves ldrb r1, [r2] @@ -13189,7 +13189,7 @@ _08024042: ldr r1, [sp, 0x50] str r1, [r0] _08024068: - bl sub_8012760 + bl SwitchInClearSetData ldr r0, _080240CC @ =gBattleScripting ldr r3, _080240A8 @ =gActiveBattler ldrb r2, [r3] @@ -14992,7 +14992,7 @@ _08024F28: ldrb r0, [r0, 0x1] cmp r0, 0 bne _08024F6C - ldr r0, _08024F68 @ =gUnknown_81D8CBE + ldr r0, _08024F68 @ =BattleScript_SpikesOnTarget str r0, [r6] b _080250C6 .align 2, 0 @@ -15006,21 +15006,21 @@ _08024F58: .4byte gBattleMons _08024F5C: .4byte gSideTimers _08024F60: .4byte gBattleMoveDamage _08024F64: .4byte gBattleScripting -_08024F68: .4byte gUnknown_81D8CBE +_08024F68: .4byte BattleScript_SpikesOnTarget _08024F6C: cmp r0, 0x1 bne _08024F7C - ldr r0, _08024F78 @ =gUnknown_81D8C87 + ldr r0, _08024F78 @ =BattleScript_SpikesOnAttacker str r0, [r6] b _080250C6 .align 2, 0 -_08024F78: .4byte gUnknown_81D8C87 +_08024F78: .4byte BattleScript_SpikesOnAttacker _08024F7C: - ldr r0, _08024F84 @ =gUnknown_81D8CF5 + ldr r0, _08024F84 @ =BattleScript_SpikesOnFaintedBattler str r0, [r6] b _080250C6 .align 2, 0 -_08024F84: .4byte gUnknown_81D8CF5 +_08024F84: .4byte BattleScript_SpikesOnFaintedBattler _08024F88: ldr r1, _08025064 @ =gBattleMons ldr r5, _08025068 @ =gActiveBattler @@ -15076,7 +15076,7 @@ _08024FC4: cmp r4, r3 bge _08025012 ldr r6, _0802507C @ =gBattlerByTurnOrder - ldr r3, _08025080 @ =gUnknown_2023BDA + ldr r3, _08025080 @ =gActionsByTurnOrder movs r2, 0xC adds r1, r0, 0 _08024FFC: @@ -15143,7 +15143,7 @@ _08025070: .4byte gSideStatuses _08025074: .4byte 0x0000fdff _08025078: .4byte gBattlersCount _0802507C: .4byte gBattlerByTurnOrder -_08025080: .4byte gUnknown_2023BDA +_08025080: .4byte gActionsByTurnOrder _08025084: .4byte gBattleStruct _08025088: .4byte gBattlescriptCurrInstr _0802508C: .4byte gHitMarker @@ -15557,7 +15557,7 @@ _080253C4: movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow - ldr r0, _080253F0 @ =gUnknown_83FE791 + ldr r0, _080253F0 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldr r1, _080253F4 @ =gBattleScripting @@ -15569,7 +15569,7 @@ _080253C4: bl BattleCreateYesNoCursorAt b _080256D0 .align 2, 0 -_080253F0: .4byte gUnknown_83FE791 +_080253F0: .4byte gText_BattleYesNoChoice _080253F4: .4byte gBattleScripting _080253F8: .4byte gBattleCommunication _080253FC: @@ -15934,7 +15934,7 @@ _080256F8: movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow - ldr r0, _08025720 @ =gUnknown_83FE791 + ldr r0, _08025720 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldrb r0, [r5, 0x1F] @@ -15945,7 +15945,7 @@ _080256F8: bl BattleCreateYesNoCursorAt b _0802580E .align 2, 0 -_08025720: .4byte gUnknown_83FE791 +_08025720: .4byte gText_BattleYesNoChoice _08025724: .4byte gBattleCommunication _08025728: ldr r0, _080257AC @ =gMain @@ -16237,7 +16237,7 @@ _0802595A: _0802596E: ldrb r5, [r0, 0x2] _08025970: - ldr r0, _080259CC @ =gUnknown_824F220 + ldr r0, _080259CC @ =gTrainerMoneyTable lsls r1, r6, 2 adds r3, r1, r0 ldrb r1, [r3] @@ -16286,7 +16286,7 @@ _080259AA: muls r4, r0 b _080259E8 .align 2, 0 -_080259CC: .4byte gUnknown_824F220 +_080259CC: .4byte gTrainerMoneyTable _080259D0: .4byte gBattleStruct _080259D4: .4byte gBattleTypeFlags _080259D8: .4byte gSaveBlock1Ptr @@ -16670,7 +16670,7 @@ _08025CC0: strh r0, [r2] adds r0, r1, 0 _08025CCE: - ldr r3, _08025CF8 @ =gUnknown_81D65A8 + ldr r3, _08025CF8 @ =gBattleScriptsForMoveEffects ldr r2, _08025CFC @ =gBattleMoves ldrh r1, [r0] lsls r0, r1, 1 @@ -16689,7 +16689,7 @@ _08025CCE: _08025CEC: .4byte gChosenMove _08025CF0: .4byte gCurrentMove _08025CF4: .4byte gCalledMove -_08025CF8: .4byte gUnknown_81D65A8 +_08025CF8: .4byte gBattleScriptsForMoveEffects _08025CFC: .4byte gBattleMoves thumb_func_end atk63_jumptocalledmove @@ -16930,7 +16930,7 @@ _08025EE4: movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow - ldr r0, _08025F08 @ =gUnknown_83FE791 + ldr r0, _08025F08 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldrb r0, [r5] @@ -16940,7 +16940,7 @@ _08025EE4: bl BattleCreateYesNoCursorAt b _08025F9A .align 2, 0 -_08025F08: .4byte gUnknown_83FE791 +_08025F08: .4byte gText_BattleYesNoChoice _08025F0C: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] @@ -17025,7 +17025,7 @@ atk68_cancelallactions: @ 8025FA8 ldrb r0, [r2] cmp r1, r0 bge _08025FC6 - ldr r4, _08025FDC @ =gUnknown_2023BDA + ldr r4, _08025FDC @ =gActionsByTurnOrder movs r3, 0xC _08025FBA: adds r0, r1, r4 @@ -17044,7 +17044,7 @@ _08025FC6: .align 2, 0 _08025FD4: .4byte gBattlersCount _08025FD8: .4byte gBattlescriptCurrInstr -_08025FDC: .4byte gUnknown_2023BDA +_08025FDC: .4byte gActionsByTurnOrder thumb_func_end atk68_cancelallactions thumb_func_start atk69_adjustsetdamage @@ -18145,7 +18145,7 @@ atk72_jumpifplayerran: @ 80268B8 push {lr} ldr r0, _080268E4 @ =gBattlerFainted ldrb r0, [r0] - bl sub_8016748 + bl TryRunFromBattle lsls r0, 24 cmp r0, 0 beq _080268EC @@ -18981,7 +18981,7 @@ atk77_setprotectlike: @ 8026F68 mov r7, r8 push {r7} movs r6, 0x1 - ldr r2, _08027034 @ =gUnknown_2023DB0 + ldr r2, _08027034 @ =gLastResultingMoves ldr r1, _08027038 @ =gBattlerAttacker ldrb r3, [r1] lsls r0, r3, 1 @@ -19002,7 +19002,7 @@ atk77_setprotectlike: @ 8026F68 movs r1, 0 strb r1, [r0, 0x8] _08026F98: - ldr r0, _08027040 @ =gUnknown_2023BE2 + ldr r0, _08027040 @ =gCurrentTurnActionNumber ldrb r1, [r0] ldr r0, _08027044 @ =gBattlersCount ldrb r0, [r0] @@ -19082,10 +19082,10 @@ _0802701E: strb r0, [r1, 0x8] b _0802707E .align 2, 0 -_08027034: .4byte gUnknown_2023DB0 +_08027034: .4byte gLastResultingMoves _08027038: .4byte gBattlerAttacker _0802703C: .4byte gDisableStructs -_08027040: .4byte gUnknown_2023BE2 +_08027040: .4byte gCurrentTurnActionNumber _08027044: .4byte gBattlersCount _08027048: .4byte sProtectSuccessRates _0802704C: .4byte gBattleMoves @@ -19250,7 +19250,7 @@ _0802718C: ldrb r1, [r1] bl RecordAbilityBattle ldr r1, _080271B8 @ =gBattlescriptCurrInstr - ldr r0, _080271BC @ =gUnknown_81D93AF + ldr r0, _080271BC @ =BattleScript_DampStopsExplosion str r0, [r1] _080271A8: pop {r3} @@ -19261,7 +19261,7 @@ _080271A8: .align 2, 0 _080271B4: .4byte gLastUsedAbility _080271B8: .4byte gBattlescriptCurrInstr -_080271BC: .4byte gUnknown_81D93AF +_080271BC: .4byte BattleScript_DampStopsExplosion thumb_func_end atk78_faintifabilitynotdamp thumb_func_start atk79_setatkhptozero @@ -19581,7 +19581,7 @@ _08027426: ldr r1, _0802745C @ =gBattlerTarget strb r0, [r1] ldr r5, _08027460 @ =gBattlescriptCurrInstr - ldr r3, _08027464 @ =gUnknown_81D65A8 + ldr r3, _08027464 @ =gBattleScriptsForMoveEffects ldr r2, _08027468 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 @@ -19600,7 +19600,7 @@ _08027454: .4byte 0xfffffbff _08027458: .4byte gCurrentMove _0802745C: .4byte gBattlerTarget _08027460: .4byte gBattlescriptCurrInstr -_08027464: .4byte gUnknown_81D65A8 +_08027464: .4byte gBattleScriptsForMoveEffects _08027468: .4byte gBattleMoves _0802746C: ldr r2, _0802749C @ =gSpecialStatuses @@ -20562,7 +20562,7 @@ _08027BC4: .4byte gBattlerTarget atk88_negativedamage: @ 8027BC8 push {lr} ldr r2, _08027BF0 @ =gBattleMoveDamage - ldr r0, _08027BF4 @ =gUnknown_2023D54 + ldr r0, _08027BF4 @ =gHpDealt ldr r0, [r0] lsrs r1, r0, 31 adds r0, r1 @@ -20583,7 +20583,7 @@ _08027BE4: bx r0 .align 2, 0 _08027BF0: .4byte gBattleMoveDamage -_08027BF4: .4byte gUnknown_2023D54 +_08027BF4: .4byte gHpDealt _08027BF8: .4byte gBattlescriptCurrInstr thumb_func_end atk88_negativedamage @@ -20716,7 +20716,7 @@ _08027CF0: ldrb r0, [r6] strb r0, [r1, 0x17] ldr r1, _08027D20 @ =gBattlescriptCurrInstr - ldr r0, _08027D24 @ =gUnknown_81D8C3E + ldr r0, _08027D24 @ =BattleScript_MistProtected str r0, [r1] ldrb r1, [r6] lsls r0, r1, 2 @@ -20732,7 +20732,7 @@ _08027CF0: _08027D18: .4byte gBattleScripting _08027D1C: .4byte gActiveBattler _08027D20: .4byte gBattlescriptCurrInstr -_08027D24: .4byte gUnknown_81D8C3E +_08027D24: .4byte BattleScript_MistProtected _08027D28: ldr r0, _08027D4C @ =gCurrentMove ldrh r0, [r0] @@ -20747,7 +20747,7 @@ _08027D28: cmp r0, 0 beq _08027D58 ldr r1, _08027D50 @ =gBattlescriptCurrInstr - ldr r0, _08027D54 @ =gUnknown_81D7DF2 + ldr r0, _08027D54 @ =BattleScript_ButItFailed str r0, [r1] _08027D48: movs r0, 0x1 @@ -20755,7 +20755,7 @@ _08027D48: .align 2, 0 _08027D4C: .4byte gCurrentMove _08027D50: .4byte gBattlescriptCurrInstr -_08027D54: .4byte gUnknown_81D7DF2 +_08027D54: .4byte BattleScript_ButItFailed _08027D58: ldr r2, _08027DA0 @ =gBattleMons ldr r1, _08027DA4 @ =gActiveBattler @@ -20808,7 +20808,7 @@ _08027DB4: ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, _08027E00 @ =gBattlescriptCurrInstr - ldr r0, _08027E04 @ =gUnknown_81D9416 + ldr r0, _08027E04 @ =BattleScript_AbilityNoStatLoss str r0, [r1] ldr r1, _08027E08 @ =gLastUsedAbility ldrb r0, [r2] @@ -20836,7 +20836,7 @@ _08027DB4: _08027DF8: .4byte gBattleScripting _08027DFC: .4byte gActiveBattler _08027E00: .4byte gBattlescriptCurrInstr -_08027E04: .4byte gUnknown_81D9416 +_08027E04: .4byte BattleScript_AbilityNoStatLoss _08027E08: .4byte gLastUsedAbility _08027E0C: ldr r1, _08027E58 @ =gActiveBattler @@ -20862,7 +20862,7 @@ _08027E0C: ldrb r0, [r3] strb r0, [r1, 0x17] ldr r1, _08027E60 @ =gBattlescriptCurrInstr - ldr r0, _08027E64 @ =gUnknown_81D947E + ldr r0, _08027E64 @ =BattleScript_AbilityNoSpecificStatLoss str r0, [r1] ldr r1, _08027E68 @ =gLastUsedAbility ldrb r0, [r3] @@ -20879,7 +20879,7 @@ _08027E0C: _08027E58: .4byte gActiveBattler _08027E5C: .4byte gBattleScripting _08027E60: .4byte gBattlescriptCurrInstr -_08027E64: .4byte gUnknown_81D947E +_08027E64: .4byte BattleScript_AbilityNoSpecificStatLoss _08027E68: .4byte gLastUsedAbility _08027E6C: ldr r4, _08027EBC @ =gActiveBattler @@ -20907,7 +20907,7 @@ _08027E8E: ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, _08027EC4 @ =gBattlescriptCurrInstr - ldr r0, _08027EC8 @ =gUnknown_81D947E + ldr r0, _08027EC8 @ =BattleScript_AbilityNoSpecificStatLoss str r0, [r1] ldr r1, _08027ECC @ =gLastUsedAbility ldrb r0, [r2] @@ -20924,7 +20924,7 @@ _08027E8E: _08027EBC: .4byte gActiveBattler _08027EC0: .4byte gBattleScripting _08027EC4: .4byte gBattlescriptCurrInstr -_08027EC8: .4byte gUnknown_81D947E +_08027EC8: .4byte BattleScript_AbilityNoSpecificStatLoss _08027ECC: .4byte gLastUsedAbility _08027ED0: ldr r3, _08027F5C @ =gActiveBattler @@ -21251,7 +21251,7 @@ atk8B_setbide: @ 8028120 lsls r1, 5 orrs r0, r1 str r0, [r2] - ldr r1, _08028180 @ =gUnknown_2023DB8 + ldr r1, _08028180 @ =gLockedMoves ldrb r0, [r3] lsls r0, 1 adds r0, r1 @@ -21283,7 +21283,7 @@ atk8B_setbide: @ 8028120 .align 2, 0 _08028178: .4byte gBattleMons _0802817C: .4byte gBattlerAttacker -_08028180: .4byte gUnknown_2023DB8 +_08028180: .4byte gLockedMoves _08028184: .4byte gCurrentMove _08028188: .4byte gTakenDmg _0802818C: .4byte gBattlescriptCurrInstr @@ -21330,14 +21330,14 @@ atk8D_setmultihitcounter: @ 80281D0 ldrb r1, [r0, 0x1] cmp r1, 0 beq _080281EC - ldr r0, _080281E8 @ =gUnknown_2023D72 + ldr r0, _080281E8 @ =gMultiHitCounter strb r1, [r0] b _08028206 .align 2, 0 _080281E4: .4byte gBattlescriptCurrInstr -_080281E8: .4byte gUnknown_2023D72 +_080281E8: .4byte gMultiHitCounter _080281EC: - ldr r4, _08028214 @ =gUnknown_2023D72 + ldr r4, _08028214 @ =gMultiHitCounter bl Random movs r5, 0x3 ands r0, r5 @@ -21358,7 +21358,7 @@ _08028206: pop {r0} bx r0 .align 2, 0 -_08028214: .4byte gUnknown_2023D72 +_08028214: .4byte gMultiHitCounter _08028218: .4byte gBattlescriptCurrInstr thumb_func_end atk8D_setmultihitcounter @@ -21471,7 +21471,7 @@ _080282E8: ldrh r0, [r0] strb r0, [r1] ldr r1, _08028304 @ =gBattlescriptCurrInstr - ldr r0, _08028308 @ =gUnknown_81D8C10 + ldr r0, _08028308 @ =BattleScript_SuccessForceOut str r0, [r1] movs r0, 0x1 _080282F6: @@ -21482,7 +21482,7 @@ _080282F6: _080282FC: .4byte gBattleStruct _08028300: .4byte gBattlerPartyIndexes _08028304: .4byte gBattlescriptCurrInstr -_08028308: .4byte gUnknown_81D8C10 +_08028308: .4byte BattleScript_SuccessForceOut thumb_func_end TryDoForceSwitchOut thumb_func_start atk8F_forcerandomswitch @@ -21816,7 +21816,7 @@ _080285AE: adds r0, r1 adds r0, 0x5C strb r5, [r0] - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 cmp r0, 0 bne _080285CC @@ -22077,7 +22077,7 @@ atk91_givepaydaymoney: @ 80287A8 ands r0, r5 cmp r0, 0 bne _08028828 - ldr r1, _08028810 @ =gUnknown_2023E7E + ldr r1, _08028810 @ =gPaydayMoney ldrh r0, [r1] cmp r0, 0 beq _08028828 @@ -22115,17 +22115,17 @@ atk91_givepaydaymoney: @ 80287A8 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush - ldr r0, _08028824 @ =gUnknown_81D911D + ldr r0, _08028824 @ =BattleScript_PrintPayDayMoneyString str r0, [r4] b _08028830 .align 2, 0 _0802880C: .4byte gBattleTypeFlags -_08028810: .4byte gUnknown_2023E7E +_08028810: .4byte gPaydayMoney _08028814: .4byte gBattleStruct _08028818: .4byte gSaveBlock1Ptr _0802881C: .4byte gBattleTextBuff1 _08028820: .4byte gBattlescriptCurrInstr -_08028824: .4byte gUnknown_81D911D +_08028824: .4byte BattleScript_PrintPayDayMoneyString _08028828: ldr r1, _08028838 @ =gBattlescriptCurrInstr ldr r0, [r1] @@ -22328,7 +22328,7 @@ _08028998: ldr r0, _080289E8 @ =gLastUsedAbility strb r4, [r0] ldr r1, _080289EC @ =gBattlescriptCurrInstr - ldr r0, _080289F0 @ =gUnknown_81D93A1 + ldr r0, _080289F0 @ =BattleScript_SturdyPreventsOHKO str r0, [r1] mov r1, r9 ldrb r0, [r1] @@ -22343,7 +22343,7 @@ _080289E0: .4byte gBattleMons _080289E4: .4byte gMoveResultFlags _080289E8: .4byte gLastUsedAbility _080289EC: .4byte gBattlescriptCurrInstr -_080289F0: .4byte gUnknown_81D93A1 +_080289F0: .4byte BattleScript_SturdyPreventsOHKO _080289F4: ldr r1, _08028A68 @ =gStatuses3 lsls r0, r3, 2 @@ -23024,7 +23024,7 @@ _08028F1C: cmp r2, 0xC bne _08028F94 ldr r1, _08028F88 @ =gBattlescriptCurrInstr - ldr r0, _08028F8C @ =gUnknown_81D9444 + ldr r0, _08028F8C @ =BattleScript_ObliviousPreventsAttraction str r0, [r1] ldr r0, _08028F90 @ =gLastUsedAbility strb r2, [r0] @@ -23038,7 +23038,7 @@ _08028F7C: .4byte gEnemyParty _08028F80: .4byte gBattlerTarget _08028F84: .4byte gBattleMons _08028F88: .4byte gBattlescriptCurrInstr -_08028F8C: .4byte gUnknown_81D9444 +_08028F8C: .4byte BattleScript_ObliviousPreventsAttraction _08028F90: .4byte gLastUsedAbility _08028F94: mov r0, r10 @@ -24050,7 +24050,7 @@ _08029794: ldr r1, _080297EC @ =0xfffffbff ands r0, r1 str r0, [r2] - ldr r3, _080297F0 @ =gUnknown_81D65A8 + ldr r3, _080297F0 @ =gBattleScriptsForMoveEffects ldr r2, _080297F4 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 @@ -24081,7 +24081,7 @@ _080297E0: .4byte 0x000001ff _080297E4: .4byte 0x0000ffff _080297E8: .4byte gHitMarker _080297EC: .4byte 0xfffffbff -_080297F0: .4byte gUnknown_81D65A8 +_080297F0: .4byte gBattleScriptsForMoveEffects _080297F4: .4byte gBattleMoves _080297F8: .4byte gBattlerTarget thumb_func_end atk9E_metronome @@ -24933,7 +24933,7 @@ _08029E9C: adds r4, r0, r4 ldr r6, _08029F90 @ =gTypeEffectiveness adds r3, r4, r6 - ldr r1, _08029F94 @ =gUnknown_2023DA8 + ldr r1, _08029F94 @ =gLastHitByType ldr r2, _08029F98 @ =gBattlerAttacker ldrb r5, [r2] lsls r0, r5, 1 @@ -24994,7 +24994,7 @@ _08029F1E: mov r4, r10 ldrb r2, [r4] lsls r0, r2, 1 - ldr r7, _08029F94 @ =gUnknown_2023DA8 + ldr r7, _08029F94 @ =gLastHitByType adds r0, r7 ldrh r0, [r0] cmp r1, r0 @@ -25051,7 +25051,7 @@ _08029F80: bx r0 .align 2, 0 _08029F90: .4byte gTypeEffectiveness -_08029F94: .4byte gUnknown_2023DA8 +_08029F94: .4byte gLastHitByType _08029F98: .4byte gBattlerAttacker _08029F9C: .4byte gBattleMons _08029FA0: .4byte 0x000003e7 @@ -25134,7 +25134,7 @@ atkA8_copymovepermanently: @ 802A004 beq _0802A03C b _0802A190 _0802A03C: - ldr r0, _0802A174 @ =gUnknown_2023D90 + ldr r0, _0802A174 @ =gLastPrintedMoves ldr r2, _0802A178 @ =gBattlerTarget ldrb r1, [r2] lsls r1, 1 @@ -25269,7 +25269,7 @@ _0802A0F2: strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] - ldr r3, _0802A174 @ =gUnknown_2023D90 + ldr r3, _0802A174 @ =gLastPrintedMoves ldr r2, _0802A178 @ =gBattlerTarget ldrb r0, [r2] lsls r0, 1 @@ -25294,7 +25294,7 @@ _0802A164: .4byte gChosenMove _0802A168: .4byte 0x0000ffff _0802A16C: .4byte gBattleMons _0802A170: .4byte gBattlerAttacker -_0802A174: .4byte gUnknown_2023D90 +_0802A174: .4byte gLastPrintedMoves _0802A178: .4byte gBattlerTarget _0802A17C: .4byte gCurrMovePos _0802A180: .4byte gBattleMoves @@ -26593,14 +26593,14 @@ atkB3_rolloutdamagecalculation: @ 802AB8C ldrb r0, [r0] bl CancelMultiTurnMoves ldr r1, _0802ABB8 @ =gBattlescriptCurrInstr - ldr r0, _0802ABBC @ =gUnknown_81D6960 + ldr r0, _0802ABBC @ =BattleScript_MoveMissedPause str r0, [r1] b _0802ACD8 .align 2, 0 _0802ABB0: .4byte gMoveResultFlags _0802ABB4: .4byte gBattlerAttacker _0802ABB8: .4byte gBattlescriptCurrInstr -_0802ABBC: .4byte gUnknown_81D6960 +_0802ABBC: .4byte BattleScript_MoveMissedPause _0802ABC0: ldr r2, _0802ACE4 @ =gBattleMons ldr r1, _0802ACE8 @ =gBattlerAttacker @@ -26652,7 +26652,7 @@ _0802ABC0: ldr r0, [r1] orrs r0, r7 str r0, [r1] - ldr r1, _0802ACF4 @ =gUnknown_2023DB8 + ldr r1, _0802ACF4 @ =gLockedMoves ldrb r0, [r6] lsls r0, 1 adds r0, r1 @@ -26759,7 +26759,7 @@ _0802ACE4: .4byte gBattleMons _0802ACE8: .4byte gBattlerAttacker _0802ACEC: .4byte gDisableStructs _0802ACF0: .4byte gCurrentMove -_0802ACF4: .4byte gUnknown_2023DB8 +_0802ACF4: .4byte gLockedMoves _0802ACF8: .4byte 0xffffefff _0802ACFC: .4byte gDynamicBasePower _0802AD00: .4byte gBattleMoves @@ -26840,7 +26840,7 @@ atkB5_furycuttercalc: @ 802AD70 movs r1, 0 strb r1, [r0, 0x10] ldr r1, _0802ADA4 @ =gBattlescriptCurrInstr - ldr r0, _0802ADA8 @ =gUnknown_81D6960 + ldr r0, _0802ADA8 @ =BattleScript_MoveMissedPause str r0, [r1] b _0802AE04 .align 2, 0 @@ -26848,7 +26848,7 @@ _0802AD98: .4byte gMoveResultFlags _0802AD9C: .4byte gDisableStructs _0802ADA0: .4byte gBattlerAttacker _0802ADA4: .4byte gBattlescriptCurrInstr -_0802ADA8: .4byte gUnknown_81D6960 +_0802ADA8: .4byte BattleScript_MoveMissedPause _0802ADAC: ldr r5, _0802AE0C @ =gDisableStructs ldr r4, _0802AE10 @ =gBattlerAttacker @@ -27027,14 +27027,14 @@ _0802AF06: cmp r4, 0xCB bgt _0802AF24 ldr r1, _0802AF1C @ =gBattlescriptCurrInstr - ldr r0, _0802AF20 @ =gUnknown_81D6930 + ldr r0, _0802AF20 @ =BattleScript_HitFromCritCalc b _0802AF5E .align 2, 0 _0802AF10: .4byte gBattleMoveDamage _0802AF14: .4byte gBattleMons _0802AF18: .4byte gBattlerTarget _0802AF1C: .4byte gBattlescriptCurrInstr -_0802AF20: .4byte gUnknown_81D6930 +_0802AF20: .4byte BattleScript_HitFromCritCalc _0802AF24: ldr r2, _0802AF40 @ =gBattleMons ldr r0, _0802AF44 @ =gBattlerTarget @@ -27047,13 +27047,13 @@ _0802AF24: cmp r1, r0 bne _0802AF50 ldr r1, _0802AF48 @ =gBattlescriptCurrInstr - ldr r0, _0802AF4C @ =gUnknown_81D7DD1 + ldr r0, _0802AF4C @ =BattleScript_AlreadyAtFullHp b _0802AF5E .align 2, 0 _0802AF40: .4byte gBattleMons _0802AF44: .4byte gBattlerTarget _0802AF48: .4byte gBattlescriptCurrInstr -_0802AF4C: .4byte gUnknown_81D7DD1 +_0802AF4C: .4byte BattleScript_AlreadyAtFullHp _0802AF50: ldr r2, _0802AF68 @ =gMoveResultFlags ldrb r1, [r2] @@ -27061,7 +27061,7 @@ _0802AF50: ands r0, r1 strb r0, [r2] ldr r1, _0802AF6C @ =gBattlescriptCurrInstr - ldr r0, _0802AF70 @ =gUnknown_81D7DB7 + ldr r0, _0802AF70 @ =BattleScript_PresentHealTarget _0802AF5E: str r0, [r1] pop {r4} @@ -27070,7 +27070,7 @@ _0802AF5E: .align 2, 0 _0802AF68: .4byte gMoveResultFlags _0802AF6C: .4byte gBattlescriptCurrInstr -_0802AF70: .4byte gUnknown_81D7DB7 +_0802AF70: .4byte BattleScript_PresentHealTarget thumb_func_end atkB7_presentdamagecalculation thumb_func_start atkB8_setsafeguard @@ -27303,7 +27303,7 @@ atkBA_jumpifnopursuitswitchdmg: @ 802B140 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _0802B164 @ =gUnknown_2023D72 + ldr r0, _0802B164 @ =gMultiHitCounter ldrb r0, [r0] cmp r0, 0x1 bne _0802B170 @@ -27316,7 +27316,7 @@ atkBA_jumpifnopursuitswitchdmg: @ 802B140 movs r0, 0x1 b _0802B18A .align 2, 0 -_0802B164: .4byte gUnknown_2023D72 +_0802B164: .4byte gMultiHitCounter _0802B168: .4byte gBattlerAttacker _0802B16C: movs r0, 0 @@ -27338,7 +27338,7 @@ _0802B18A: bl GetBattlerAtPosition ldr r1, _0802B264 @ =gBattlerTarget strb r0, [r1] - ldr r0, _0802B268 @ =gUnknown_2023D7C + ldr r0, _0802B268 @ =gChosenActionByBattler ldr r1, _0802B264 @ =gBattlerTarget ldrb r3, [r1] adds r0, r3, r0 @@ -27403,7 +27403,7 @@ _0802B1A2: bge _0802B22E ldr r6, _0802B294 @ =gBattlerByTurnOrder ldr r5, _0802B264 @ =gBattlerTarget - ldr r4, _0802B298 @ =gUnknown_2023BDA + ldr r4, _0802B298 @ =gActionsByTurnOrder movs r3, 0xB adds r2, r0, 0 _0802B218: @@ -27449,7 +27449,7 @@ _0802B22E: b _0802B2C2 .align 2, 0 _0802B264: .4byte gBattlerTarget -_0802B268: .4byte gUnknown_2023D7C +_0802B268: .4byte gChosenActionByBattler _0802B26C: .4byte gBattlerAttacker _0802B270: .4byte gBattleStruct _0802B274: .4byte gBattleMons @@ -27461,7 +27461,7 @@ _0802B288: .4byte gCurrMovePos _0802B28C: .4byte gChosenMovePos _0802B290: .4byte gHitMarker _0802B294: .4byte gBattlerByTurnOrder -_0802B298: .4byte gUnknown_2023BDA +_0802B298: .4byte gActionsByTurnOrder _0802B29C: .4byte gBattlescriptCurrInstr _0802B2A0: .4byte gBattleScripting _0802B2A4: .4byte 0xfffffbff @@ -27696,7 +27696,7 @@ atkBE_rapidspinfree: @ 802B3F4 strb r0, [r1, 0x4] bl BattleScriptPushCursor ldr r1, _0802B480 @ =gBattlescriptCurrInstr - ldr r0, _0802B484 @ =gUnknown_81D8DF3 + ldr r0, _0802B484 @ =BattleScript_WrapFree b _0802B532 .align 2, 0 _0802B464: .4byte gBattleMons @@ -27707,7 +27707,7 @@ _0802B474: .4byte 0xffff1fff _0802B478: .4byte gBattleStruct _0802B47C: .4byte gBattleTextBuff1 _0802B480: .4byte gBattlescriptCurrInstr -_0802B484: .4byte gUnknown_81D8DF3 +_0802B484: .4byte BattleScript_WrapFree _0802B488: ldr r4, _0802B4BC @ =gStatuses3 lsls r0, r2, 2 @@ -27731,12 +27731,12 @@ _0802B488: str r0, [r1] bl BattleScriptPushCursor ldr r1, _0802B4C0 @ =gBattlescriptCurrInstr - ldr r0, _0802B4C4 @ =gUnknown_81D8E04 + ldr r0, _0802B4C4 @ =BattleScript_LeechSeedFree b _0802B532 .align 2, 0 _0802B4BC: .4byte gStatuses3 _0802B4C0: .4byte gBattlescriptCurrInstr -_0802B4C4: .4byte gUnknown_81D8E04 +_0802B4C4: .4byte BattleScript_LeechSeedFree _0802B4C8: adds r0, r2, 0 bl GetBattlerSide @@ -27771,14 +27771,14 @@ _0802B4C8: strb r4, [r1, 0xA] bl BattleScriptPushCursor ldr r1, _0802B524 @ =gBattlescriptCurrInstr - ldr r0, _0802B528 @ =gUnknown_81D8E0B + ldr r0, _0802B528 @ =BattleScript_SpikesFree b _0802B532 .align 2, 0 _0802B518: .4byte gSideStatuses _0802B51C: .4byte 0x0000ffef _0802B520: .4byte gSideTimers _0802B524: .4byte gBattlescriptCurrInstr -_0802B528: .4byte gUnknown_81D8E0B +_0802B528: .4byte BattleScript_SpikesFree _0802B52C: ldr r1, _0802B53C @ =gBattlescriptCurrInstr ldr r0, [r1] @@ -28922,7 +28922,7 @@ atkCC_callterrainattack: @ 802BE18 str r0, [r2] ldr r4, _0802BE70 @ =gCurrentMove ldr r1, _0802BE74 @ =sNaturePowerMoves - ldr r0, _0802BE78 @ =gUnknown_2022B50 + ldr r0, _0802BE78 @ =gBattleTerrain ldrb r0, [r0] lsls r0, 1 adds r0, r1 @@ -28933,7 +28933,7 @@ atkCC_callterrainattack: @ 802BE18 bl GetMoveTarget ldr r1, _0802BE7C @ =gBattlerTarget strb r0, [r1] - ldr r3, _0802BE80 @ =gUnknown_81D65A8 + ldr r3, _0802BE80 @ =gBattleScriptsForMoveEffects ldr r2, _0802BE84 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 @@ -28957,9 +28957,9 @@ _0802BE68: .4byte gHitMarker _0802BE6C: .4byte 0xfffffbff _0802BE70: .4byte gCurrentMove _0802BE74: .4byte sNaturePowerMoves -_0802BE78: .4byte gUnknown_2022B50 +_0802BE78: .4byte gBattleTerrain _0802BE7C: .4byte gBattlerTarget -_0802BE80: .4byte gUnknown_81D65A8 +_0802BE80: .4byte gBattleScriptsForMoveEffects _0802BE84: .4byte gBattleMoves _0802BE88: .4byte gBattlescriptCurrInstr thumb_func_end atkCC_callterrainattack @@ -29431,7 +29431,7 @@ _0802C224: cmp r0, 0x3C bne _0802C258 ldr r1, _0802C24C @ =gBattlescriptCurrInstr - ldr r0, _0802C250 @ =gUnknown_81D948E + ldr r0, _0802C250 @ =BattleScript_StickyHoldActivates str r0, [r1] ldr r1, _0802C254 @ =gLastUsedAbility ldrb r0, [r7] @@ -29446,7 +29446,7 @@ _0802C224: b _0802C37A .align 2, 0 _0802C24C: .4byte gBattlescriptCurrInstr -_0802C250: .4byte gUnknown_81D948E +_0802C250: .4byte BattleScript_StickyHoldActivates _0802C254: .4byte gLastUsedAbility _0802C258: ldr r3, _0802C344 @ =gBattleStruct @@ -30575,7 +30575,7 @@ atkDF_trysetmagiccoat: @ 802CAE4 movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r0, _0802CB38 @ =gUnknown_2023BE2 + ldr r0, _0802CB38 @ =gCurrentTurnActionNumber ldrb r1, [r0] ldr r0, _0802CB3C @ =gBattlersCount ldrb r0, [r0] @@ -30600,7 +30600,7 @@ atkDF_trysetmagiccoat: @ 802CAE4 _0802CB2C: .4byte gBattlerTarget _0802CB30: .4byte gBattlerAttacker _0802CB34: .4byte gSpecialStatuses -_0802CB38: .4byte gUnknown_2023BE2 +_0802CB38: .4byte gCurrentTurnActionNumber _0802CB3C: .4byte gBattlersCount _0802CB40: .4byte gBattlescriptCurrInstr _0802CB44: @@ -30638,7 +30638,7 @@ atkE0_trysetsnatch: @ 802CB68 movs r2, 0x20 orrs r1, r2 strb r1, [r0] - ldr r0, _0802CBB4 @ =gUnknown_2023BE2 + ldr r0, _0802CBB4 @ =gCurrentTurnActionNumber ldrb r1, [r0] ldr r0, _0802CBB8 @ =gBattlersCount ldrb r0, [r0] @@ -30662,7 +30662,7 @@ atkE0_trysetsnatch: @ 802CB68 .align 2, 0 _0802CBAC: .4byte gSpecialStatuses _0802CBB0: .4byte gBattlerAttacker -_0802CBB4: .4byte gUnknown_2023BE2 +_0802CBB4: .4byte gCurrentTurnActionNumber _0802CBB8: .4byte gBattlersCount _0802CBBC: .4byte gBattlescriptCurrInstr _0802CBC0: @@ -30900,7 +30900,7 @@ _0802CD8A: thumb_func_start atkE4_getsecretpowereffect atkE4_getsecretpowereffect: @ 802CD90 push {lr} - ldr r0, _0802CDA4 @ =gUnknown_2022B50 + ldr r0, _0802CDA4 @ =gBattleTerrain ldrb r0, [r0] cmp r0, 0x7 bhi _0802CE2C @@ -30910,7 +30910,7 @@ atkE4_getsecretpowereffect: @ 802CD90 ldr r0, [r0] mov pc, r0 .align 2, 0 -_0802CDA4: .4byte gUnknown_2022B50 +_0802CDA4: .4byte gBattleTerrain _0802CDA8: .4byte _0802CDAC .align 2, 0 _0802CDAC: @@ -31469,7 +31469,7 @@ atkEB_settypetoterrain: @ 802D1F0 adds r0, r3 mov r12, r0 ldr r5, _0802D268 @ =sTerrainToType - ldr r4, _0802D26C @ =gUnknown_2022B50 + ldr r4, _0802D26C @ =gBattleTerrain ldrb r0, [r4] adds r0, r5 ldrb r2, [r0] @@ -31514,7 +31514,7 @@ atkEB_settypetoterrain: @ 802D1F0 _0802D260: .4byte gBattleMons _0802D264: .4byte gBattlerAttacker _0802D268: .4byte sTerrainToType -_0802D26C: .4byte gUnknown_2022B50 +_0802D26C: .4byte gBattleTerrain _0802D270: .4byte gBattleTextBuff1 _0802D274: .4byte gBattlescriptCurrInstr _0802D278: @@ -31570,7 +31570,7 @@ atkEC_pursuitrelated: @ 802D2A0 ands r1, r0 cmp r1, 0 bne _0802D340 - ldr r0, _0802D328 @ =gUnknown_2023D7C + ldr r0, _0802D328 @ =gChosenActionByBattler adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 @@ -31581,7 +31581,7 @@ atkEC_pursuitrelated: @ 802D2A0 ldrh r2, [r0] cmp r2, 0xE4 bne _0802D340 - ldr r0, _0802D330 @ =gUnknown_2023BDA + ldr r0, _0802D330 @ =gActionsByTurnOrder adds r0, r3, r0 movs r1, 0xB strb r1, [r0] @@ -31605,9 +31605,9 @@ _0802D318: .4byte gActiveBattler _0802D31C: .4byte gBattleTypeFlags _0802D320: .4byte gAbsentBattlerFlags _0802D324: .4byte gBitTable -_0802D328: .4byte gUnknown_2023D7C +_0802D328: .4byte gChosenActionByBattler _0802D32C: .4byte gChosenMoveByBattler -_0802D330: .4byte gUnknown_2023BDA +_0802D330: .4byte gActionsByTurnOrder _0802D334: .4byte gCurrentMove _0802D338: .4byte gBattlescriptCurrInstr _0802D33C: .4byte gBattleScripting @@ -31769,7 +31769,7 @@ _0802D442: ldrb r0, [r5] bl MarkBattlerForControllerExec ldr r1, _0802D488 @ =gBattlescriptCurrInstr - ldr r0, _0802D48C @ =gUnknown_81D9AD1 + ldr r0, _0802D48C @ =BattleScript_GhostBallDodge b _0802D7EC .align 2, 0 _0802D474: .4byte gBattleControllerExecFlags @@ -31778,7 +31778,7 @@ _0802D47C: .4byte gBattlerAttacker _0802D480: .4byte gBattlerTarget _0802D484: .4byte gBattleTypeFlags _0802D488: .4byte gBattlescriptCurrInstr -_0802D48C: .4byte gUnknown_81D9AD1 +_0802D48C: .4byte BattleScript_GhostBallDodge _0802D490: movs r0, 0x8 ands r0, r1 @@ -31790,11 +31790,11 @@ _0802D490: ldrb r0, [r5] bl MarkBattlerForControllerExec ldr r1, _0802D4AC @ =gBattlescriptCurrInstr - ldr r0, _0802D4B0 @ =gUnknown_81D9AC1 + ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock b _0802D7EC .align 2, 0 _0802D4AC: .4byte gBattlescriptCurrInstr -_0802D4B0: .4byte gUnknown_81D9AC1 +_0802D4B0: .4byte BattleScript_TrainerBallBlock _0802D4B4: movs r0, 0x81 lsls r0, 9 @@ -31902,7 +31902,7 @@ _0802D568: _0802D590: .4byte gBattleMons _0802D594: .4byte gBattlerTarget _0802D598: - bl sav1_map_get_light_level + bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 movs r4, 0xA @@ -32053,7 +32053,7 @@ _0802D6BC: ldrb r0, [r0] bl MarkBattlerForControllerExec ldr r1, _0802D708 @ =gBattlescriptCurrInstr - ldr r0, _0802D70C @ =gUnknown_81D9A42 + ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow str r0, [r1] ldr r1, _0802D710 @ =gBattlerPartyIndexes ldr r0, _0802D714 @ =gBattlerTarget @@ -32078,7 +32078,7 @@ _0802D6BC: _0802D700: .4byte gBattleResults _0802D704: .4byte gActiveBattler _0802D708: .4byte gBattlescriptCurrInstr -_0802D70C: .4byte gUnknown_81D9A42 +_0802D70C: .4byte BattleScript_SuccessBallThrow _0802D710: .4byte gBattlerPartyIndexes _0802D714: .4byte gBattlerTarget _0802D718: .4byte gEnemyParty @@ -32130,7 +32130,7 @@ _0802D76C: cmp r4, 0x4 bne _0802D7E4 ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr - ldr r0, _0802D7C4 @ =gUnknown_81D9A42 + ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow str r0, [r1] ldr r1, _0802D7C8 @ =gBattlerPartyIndexes ldr r0, _0802D7CC @ =gBattlerTarget @@ -32159,7 +32159,7 @@ _0802D7AE: _0802D7B8: .4byte gLastUsedItem _0802D7BC: .4byte gActiveBattler _0802D7C0: .4byte gBattlescriptCurrInstr -_0802D7C4: .4byte gUnknown_81D9A42 +_0802D7C4: .4byte BattleScript_SuccessBallThrow _0802D7C8: .4byte gBattlerPartyIndexes _0802D7CC: .4byte gBattlerTarget _0802D7D0: .4byte gEnemyParty @@ -32175,7 +32175,7 @@ _0802D7E4: ldr r0, _0802D7F4 @ =gBattleCommunication strb r4, [r0, 0x5] ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr - ldr r0, _0802D7FC @ =gUnknown_81D9A93 + ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow _0802D7EC: str r0, [r1] _0802D7EE: @@ -32185,7 +32185,7 @@ _0802D7EE: .align 2, 0 _0802D7F4: .4byte gBattleCommunication _0802D7F8: .4byte gBattlescriptCurrInstr -_0802D7FC: .4byte gUnknown_81D9A93 +_0802D7FC: .4byte BattleScript_ShakeBallThrow thumb_func_end atkEF_handleballthrow thumb_func_start atkF0_givecaughtmon @@ -32861,7 +32861,7 @@ _0802DD78: movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow - ldr r0, _0802DDA0 @ =gUnknown_83FE791 + ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldr r1, _0802DDA4 @ =gBattleCommunication @@ -32872,7 +32872,7 @@ _0802DD78: bl BattleCreateYesNoCursorAt b _0802DFA6 .align 2, 0 -_0802DDA0: .4byte gUnknown_83FE791 +_0802DDA0: .4byte gText_BattleYesNoChoice _0802DDA4: .4byte gBattleCommunication _0802DDA8: ldr r0, _0802DE1C @ =gMain @@ -33182,14 +33182,14 @@ atkF7_finishturn: @ 802E020 ldr r1, _0802E030 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] - ldr r1, _0802E034 @ =gUnknown_2023BE2 + ldr r1, _0802E034 @ =gCurrentTurnActionNumber ldr r0, _0802E038 @ =gBattlersCount ldrb r0, [r0] strb r0, [r1] bx lr .align 2, 0 _0802E030: .4byte gCurrentActionFuncId -_0802E034: .4byte gUnknown_2023BE2 +_0802E034: .4byte gCurrentTurnActionNumber _0802E038: .4byte gBattlersCount thumb_func_end atkF7_finishturn diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index e86c6d073..8669270af 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -192,7 +192,7 @@ EvolutionScene: @ 80CDDF4 ldr r0, _080CE09C @ =gBattle_BG3_Y movs r1, 0 strh r1, [r0] - ldr r1, _080CE0A0 @ =gUnknown_2022B50 + ldr r1, _080CE0A0 @ =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl sub_800F34C @@ -409,7 +409,7 @@ _080CE090: .4byte gBattle_BG2_X _080CE094: .4byte gBattle_BG2_Y _080CE098: .4byte gBattle_BG3_X _080CE09C: .4byte gBattle_BG3_Y -_080CE0A0: .4byte gUnknown_2022B50 +_080CE0A0: .4byte gBattleTerrain _080CE0A4: .4byte gReservedSpritePaletteCount _080CE0A8: .4byte gUnknown_2039A20 _080CE0AC: .4byte gStringVar1 @@ -513,7 +513,7 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8 strh r0, [r1] ldr r0, _080CE2AC @ =gBattle_BG3_Y strh r4, [r0] - ldr r1, _080CE2B0 @ =gUnknown_2022B50 + ldr r1, _080CE2B0 @ =gBattleTerrain movs r0, 0x9 strb r0, [r1] bl sub_800F34C @@ -616,7 +616,7 @@ _080CE2A0: .4byte gBattle_BG2_X _080CE2A4: .4byte gBattle_BG2_Y _080CE2A8: .4byte gBattle_BG3_X _080CE2AC: .4byte gBattle_BG3_Y -_080CE2B0: .4byte gUnknown_2022B50 +_080CE2B0: .4byte gBattleTerrain _080CE2B4: .4byte gReservedSpritePaletteCount _080CE2B8: .4byte gMonFrontPicTable _080CE2BC: .4byte gMonSpritesGfxPtr @@ -2287,7 +2287,7 @@ _080CF176: movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow - ldr r0, _080CF1B4 @ =gUnknown_83FE791 + ldr r0, _080CF1B4 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldr r0, _080CF1B0 @ =gTasks @@ -2307,7 +2307,7 @@ _080CF176: _080CF1A8: .4byte gUnknown_83FDF3C _080CF1AC: .4byte gDisplayedStringBattle _080CF1B0: .4byte gTasks -_080CF1B4: .4byte gUnknown_83FE791 +_080CF1B4: .4byte gText_BattleYesNoChoice _080CF1B8: .4byte gBattleCommunication _080CF1BC: ldr r0, _080CF244 @ =gMain diff --git a/asm/field_effect.s b/asm/field_effect.s index 7bd1abe80..2393df6a6 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -5758,7 +5758,7 @@ _08086024: .4byte sub_8085DDC thumb_func_start FldEff_FieldMoveShowMon FldEff_FieldMoveShowMon: @ 8086028 push {r4,lr} - bl sav1_map_get_light_level + bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 bl is_light_level_1_2_3_5_or_6 diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 082aa0103..4b707a46a 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -49,7 +49,7 @@ pal_fill_for_maplights: @ 807DB58 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sav1_map_get_light_level + bl GetCurrentMapType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -88,7 +88,7 @@ sub_807DBAC: @ 807DBAC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sav1_map_get_light_level + bl GetCurrentMapType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -148,7 +148,7 @@ sub_807DC18: @ 807DC18 cmp r0, 0 bne _0807DC58 _0807DC36: - bl sav1_map_get_light_level + bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 ldrb r1, [r4, 0x17] @@ -180,7 +180,7 @@ _0807DC6A: thumb_func_start sub_807DC70 sub_807DC70: @ 807DC70 push {r4,lr} - bl sav1_map_get_light_level + bl GetCurrentMapType adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -475,7 +475,7 @@ sub_807DE78: @ 807DE78 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sav1_map_get_light_level + bl GetCurrentMapType adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 92ef6a6e4..2b16f5e1f 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -666,7 +666,7 @@ _0805E2E0: sub_805E2E8: @ 805E2E8 push {r4,r5,lr} adds r4, r0, 0 - bl sav1_map_get_light_level + bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 bl is_light_level_1_2_3_5_or_6 diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index c25978eb1..4ce45b5c7 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -209,7 +209,7 @@ sub_80C9CE8: @ 80C9CE8 bl get_map_light_from_warp0 lsls r0, 24 lsrs r7, r0, 24 - bl sav1_map_get_light_level + bl GetCurrentMapType lsls r0, 24 lsrs r6, r0, 24 movs r4, 0 diff --git a/asm/overworld.s b/asm/overworld.s index 30f89b4f3..24a840edd 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1228,7 +1228,7 @@ sub_805550C: @ 805550C lsrs r6, r0, 16 lsls r1, 16 lsrs r7, r1, 16 - bl sav1_map_get_light_level + bl GetCurrentMapType adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1911,7 +1911,7 @@ _08055A68: .4byte gUnknown_2031DD4 thumb_func_start sub_8055A6C sub_8055A6C: @ 8055A6C push {r4-r7,lr} - bl sav1_map_get_light_level + bl GetCurrentMapType adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -2884,8 +2884,8 @@ get_map_light_level_from_warp: @ 8056170 bx r1 thumb_func_end get_map_light_level_from_warp - thumb_func_start sav1_map_get_light_level -sav1_map_get_light_level: @ 8056188 + thumb_func_start GetCurrentMapType +GetCurrentMapType: @ 8056188 push {lr} ldr r0, _0805619C @ =gSaveBlock1Ptr ldr r0, [r0] @@ -2897,7 +2897,7 @@ sav1_map_get_light_level: @ 8056188 bx r1 .align 2, 0 _0805619C: .4byte gSaveBlock1Ptr - thumb_func_end sav1_map_get_light_level + thumb_func_end GetCurrentMapType thumb_func_start get_map_light_from_warp0 get_map_light_from_warp0: @ 80561A0 diff --git a/asm/party_menu.s b/asm/party_menu.s index c6cdfb567..e7126dfda 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -2010,8 +2010,8 @@ _0811FA18: .4byte gUnknown_8459FC4 _0811FA1C: .4byte gUnknown_8459FE0 thumb_func_end sub_811F9DC - thumb_func_start sub_811FA20 -sub_811FA20: @ 811FA20 + thumb_func_start IsMultiBattle +IsMultiBattle: @ 811FA20 push {lr} ldr r0, _0811FA34 @ =gBattleTypeFlags ldr r0, [r0] @@ -2028,7 +2028,7 @@ _0811FA38: _0811FA3A: pop {r1} bx r1 - thumb_func_end sub_811FA20 + thumb_func_end IsMultiBattle thumb_func_start sub_811FA40 sub_811FA40: @ 811FA40 @@ -7145,7 +7145,7 @@ party_menu_icon_anim: @ 81221D4 adds r7, r1, 0 adds r4, r2, 0 movs r6, 0x1 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -17916,7 +17916,7 @@ sub_81278B4: @ 81278B4 movs r0, 0 b _081278D6 _081278C4: - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -18169,7 +18169,7 @@ sub_8127AC0: @ 8127AC0 bl GetCursorSelectionMonId lsls r0, 24 lsrs r5, r0, 24 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -18402,7 +18402,7 @@ sub_8127CCC: @ 8127CCC adds r6, r0, 0 lsls r1, 24 lsrs r4, r1, 24 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -18565,7 +18565,7 @@ _08127E00: bl GetBattlerAtPosition lsls r0, 24 lsrs r6, r0, 24 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -18678,7 +18678,7 @@ sub_8127EC4: @ 8127EC4 lsls r2, 24 lsrs r6, r2, 24 movs r7, 0 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 cmp r0, 0 beq _08127F72 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index ce3a4dbc6..3385c3d5c 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -8434,7 +8434,7 @@ sub_8138B4C: @ 8138B4C bl IsUpdateLinkStateCBActive cmp r0, 0 bne _08138B84 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -13244,7 +13244,7 @@ _0813B198: ldrb r0, [r0] cmp r0, 0x1 bne _0813B1C4 - bl sub_811FA20 + bl IsMultiBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index e084bade7..0fd65d2e0 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,39 +1,39 @@ .section script_data, "aw", %progbits -gUnknown_81D65A8:: @ 81D65A8 +gBattleScriptsForMoveEffects:: @ 81D65A8 .incbin "baserom.gba", 0x1D65A8, 0x388 -gUnknown_81D6930:: @ 81D6930 +BattleScript_HitFromCritCalc:: @ 81D6930 .incbin "baserom.gba", 0x1D6930, 0x1E -gUnknown_81D694E:: @ 81D694E +BattleScript_MoveEnd:: @ 81D694E .incbin "baserom.gba", 0x1D694E, 0x12 -gUnknown_81D6960:: @ 81D6960 +BattleScript_MoveMissedPause:: @ 81D6960 .incbin "baserom.gba", 0x1D6960, 0x271 -gUnknown_81D6BD1:: @ 81D6BD1 +BattleScript_StatUp:: @ 81D6BD1 .incbin "baserom.gba", 0x1D6BD1, 0x91 -gUnknown_81D6C62:: @ 81D6C62 +BattleScript_StatDown:: @ 81D6C62 .incbin "baserom.gba", 0x1D6C62, 0x6E0 BattleScript_MoveUsedMustRecharge:: @ 81D7342 .incbin "baserom.gba", 0x1D7342, 0xA75 -gUnknown_81D7DB7:: @ 81D7DB7 +BattleScript_PresentHealTarget:: @ 81D7DB7 .incbin "baserom.gba", 0x1D7DB7, 0x1A -gUnknown_81D7DD1:: @ 81D7DD1 +BattleScript_AlreadyAtFullHp:: @ 81D7DD1 .incbin "baserom.gba", 0x1D7DD1, 0x21 -gUnknown_81D7DF2:: @ 81D7DF2 +BattleScript_ButItFailed:: @ 81D7DF2 .incbin "baserom.gba", 0x1D7DF2, 0x882 -gUnknown_81D8674:: @ 81D8674 +BattleScript_FaintAttacker:: @ 81D8674 .incbin "baserom.gba", 0x1D8674, 0x10 -gUnknown_81D8684:: @ 81D8684 +BattleScript_FaintTarget:: @ 81D8684 .incbin "baserom.gba", 0x1D8684, 0x10 BattleScript_GiveExp:: @ 81D8694 @@ -84,10 +84,10 @@ gUnknown_81D8949:: @ 81D8949 gUnknown_81D894D:: @ 81D894D .incbin "baserom.gba", 0x1D894D, 0xA4 -gUnknown_81D89F1:: @ 81D89F1 +BattleScript_Pausex20:: @ 81D89F1 .incbin "baserom.gba", 0x1D89F1, 0x4 -gUnknown_81D89F5:: @ 81D89F5 +BattleScript_LevelUp:: @ 81D89F5 .incbin "baserom.gba", 0x1D89F5, 0x6F BattleScript_RainContinuesOrEnds:: @ 81D8A64 @@ -126,13 +126,13 @@ BattleScript_BideAttack:: @ 81D8BB4 BattleScript_BideNoEnergyToAttack:: @ 81D8BFC .incbin "baserom.gba", 0x1D8BFC, 0x14 -gUnknown_81D8C10:: @ 81D8C10 +BattleScript_SuccessForceOut:: @ 81D8C10 .incbin "baserom.gba", 0x1D8C10, 0x2E -gUnknown_81D8C3E:: @ 81D8C3E +BattleScript_MistProtected:: @ 81D8C3E .incbin "baserom.gba", 0x1D8C3E, 0xA -gUnknown_81D8C48:: @ 81D8C48 +BattleScript_RageIsBuilding:: @ 81D8C48 .incbin "baserom.gba", 0x1D8C48, 0x7 BattleScript_MoveUsedIsDisabled:: @ 81D8C4F @@ -147,16 +147,16 @@ BattleScript_DisabledNoMore:: @ 81D8C5E BattleScript_EncoredNoMore:: @ 81D8C65 .incbin "baserom.gba", 0x1D8C65, 0x7 -gUnknown_81D8C6C:: @ 81D8C6C +BattleScript_DestinyBondTakesLife:: @ 81D8C6C .incbin "baserom.gba", 0x1D8C6C, 0x1B -gUnknown_81D8C87:: @ 81D8C87 +BattleScript_SpikesOnAttacker:: @ 81D8C87 .incbin "baserom.gba", 0x1D8C87, 0x37 -gUnknown_81D8CBE:: @ 81D8CBE +BattleScript_SpikesOnTarget:: @ 81D8CBE .incbin "baserom.gba", 0x1D8CBE, 0x37 -gUnknown_81D8CF5:: @ 81D8CF5 +BattleScript_SpikesOnFaintedBattler:: @ 81D8CF5 .incbin "baserom.gba", 0x1D8CF5, 0x3E BattleScript_PerishSongTakesLife:: @ 81D8D33 @@ -165,19 +165,19 @@ BattleScript_PerishSongTakesLife:: @ 81D8D33 BattleScript_PerishSongCountGoesDown:: @ 81D8D4E .incbin "baserom.gba", 0x1D8D4E, 0x7 -gUnknown_81D8D55:: @ 81D8D55 +BattleScript_AllStatsUp:: @ 81D8D55 .incbin "baserom.gba", 0x1D8D55, 0x9C -gUnknown_81D8DF1:: @ 81D8DF1 +BattleScript_RapidSpinAway:: @ 81D8DF1 .incbin "baserom.gba", 0x1D8DF1, 0x2 -gUnknown_81D8DF3:: @ 81D8DF3 +BattleScript_WrapFree:: @ 81D8DF3 .incbin "baserom.gba", 0x1D8DF3, 0x11 -gUnknown_81D8E04:: @ 81D8E04 +BattleScript_LeechSeedFree:: @ 81D8E04 .incbin "baserom.gba", 0x1D8E04, 0x7 -gUnknown_81D8E0B:: @ 81D8E0B +BattleScript_SpikesFree:: @ 81D8E0B .incbin "baserom.gba", 0x1D8E0B, 0x7 BattleScript_MonTookFutureAttack:: @ 81D8E12 @@ -189,7 +189,7 @@ BattleScript_NoMovesLeft:: @ 81D8EA0 BattleScript_SelectingMoveWithNoPP:: @ 81D8EA4 .incbin "baserom.gba", 0x1D8EA4, 0x4 -gUnknown_81D8EA8:: @ 81D8EA8 +BattleScript_NoPPForMove:: @ 81D8EA8 .incbin "baserom.gba", 0x1D8EA8, 0xF BattleScript_SelectingTormentedMove:: @ 81D8EB7 @@ -207,10 +207,10 @@ BattleScript_WishComesTrue:: @ 81D8ED5 BattleScript_IngrainTurnHeal:: @ 81D8F0C .incbin "baserom.gba", 0x1D8F0C, 0x29 -gUnknown_81D8F35:: @ 81D8F35 +BattleScript_AtkDefDown:: @ 81D8F35 .incbin "baserom.gba", 0x1D8F35, 0x51 -gUnknown_81D8F86:: @ 81D8F86 +BattleScript_KnockedOff:: @ 81D8F86 .incbin "baserom.gba", 0x1D8F86, 0xE BattleScript_MoveUsedIsImprisoned:: @ 81D8F94 @@ -219,22 +219,22 @@ BattleScript_MoveUsedIsImprisoned:: @ 81D8F94 BattleScript_SelectingImprisonedMove:: @ 81D8F9F .incbin "baserom.gba", 0x1D8F9F, 0x4 -gUnknown_81D8FA3:: @ 81D8FA3 +BattleScript_GrudgeTakesPp:: @ 81D8FA3 .incbin "baserom.gba", 0x1D8FA3, 0x7 -gUnknown_81D8FAA:: @ 81D8FAA +BattleScript_MagicCoatBounce:: @ 81D8FAA .incbin "baserom.gba", 0x1D8FAA, 0x18 -gUnknown_81D8FC2:: @ 81D8FC2 +BattleScript_SnatchedMove:: @ 81D8FC2 .incbin "baserom.gba", 0x1D8FC2, 0x1B -gUnknown_81D8FDD:: @ 81D8FDD +BattleScript_EnduredMsg:: @ 81D8FDD .incbin "baserom.gba", 0x1D8FDD, 0x7 -gUnknown_81D8FE4:: @ 81D8FE4 +BattleScript_OneHitKOMsg:: @ 81D8FE4 .incbin "baserom.gba", 0x1D8FE4, 0x7 -gUnknown_81D8FEB:: @ 81D8FEB +BattleScript_SAtkDown2:: @ 81D8FEB .incbin "baserom.gba", 0x1D8FEB, 0x2A gUnknown_81D9015:: @ 81D9015 @@ -261,7 +261,7 @@ BattleScript_MoveUsedIsFrozen:: @ 81D9080 BattleScript_MoveUsedUnfroze:: @ 81D908D .incbin "baserom.gba", 0x1D908D, 0xB -gUnknown_81D9098:: @ 81D9098 +BattleScript_DefrostedViaFireMove:: @ 81D9098 .incbin "baserom.gba", 0x1D9098, 0x9 BattleScript_MoveUsedIsParalyzed:: @ 81D90A1 @@ -282,7 +282,7 @@ BattleScript_MoveUsedIsConfused:: @ 81D90D3 BattleScript_MoveUsedIsConfusedNoMore:: @ 81D9116 .incbin "baserom.gba", 0x1D9116, 0x7 -gUnknown_81D911D:: @ 81D911D +BattleScript_PrintPayDayMoneyString:: @ 81D911D .incbin "baserom.gba", 0x1D911D, 0x7 BattleScript_WrapTurnDmg:: @ 81D9124 @@ -303,7 +303,7 @@ BattleScript_NightmareTurnDmg:: @ 81D9155 BattleScript_CurseTurnDmg:: @ 81D9166 .incbin "baserom.gba", 0x1D9166, 0x11 -gUnknown_81D9177:: @ 81D9177 +BattleScript_TargetPRLZHeal:: @ 81D9177 .incbin "baserom.gba", 0x1D9177, 0x9 gUnknown_81D9180:: @ 81D9180 @@ -351,7 +351,7 @@ BattleScript_MoveEffectConfusion:: @ 81D9235 BattleScript_MoveEffectRecoil:: @ 81D9243 .incbin "baserom.gba", 0x1D9243, 0x2E -gUnknown_81D9271:: @ 81D9271 +BattleScript_ItemSteal:: @ 81D9271 .incbin "baserom.gba", 0x1D9271, 0xE BattleScript_DrizzleActivates:: @ 81D927F @@ -384,13 +384,13 @@ BattleScript_IntimidateActivates:: @ 81D9310 BattleScript_DroughtActivates:: @ 81D9379 .incbin "baserom.gba", 0x1D9379, 0x14 -gUnknown_81D938D:: @ 81D938D +BattleScript_TookAttack:: @ 81D938D .incbin "baserom.gba", 0x1D938D, 0x14 -gUnknown_81D93A1:: @ 81D93A1 +BattleScript_SturdyPreventsOHKO:: @ 81D93A1 .incbin "baserom.gba", 0x1D93A1, 0xE -gUnknown_81D93AF:: @ 81D93AF +BattleScript_DampStopsExplosion:: @ 81D93AF .incbin "baserom.gba", 0x1D93AF, 0xE BattleScript_MoveHPDrain_PPLoss:: @ 81D93BD @@ -411,31 +411,31 @@ BattleScript_FlashFireBoost_PPLoss:: @ 81D93F6 BattleScript_FlashFireBoost:: @ 81D93F7 .incbin "baserom.gba", 0x1D93F7, 0x1F -gUnknown_81D9416:: @ 81D9416 +BattleScript_AbilityNoStatLoss:: @ 81D9416 .incbin "baserom.gba", 0x1D9416, 0xA -gUnknown_81D9420:: @ 81D9420 +BattleScript_BRNPrevention:: @ 81D9420 .incbin "baserom.gba", 0x1D9420, 0xC -gUnknown_81D942C:: @ 81D942C +BattleScript_PRLZPrevention:: @ 81D942C .incbin "baserom.gba", 0x1D942C, 0xC -gUnknown_81D9438:: @ 81D9438 +BattleScript_PSNPrevention:: @ 81D9438 .incbin "baserom.gba", 0x1D9438, 0xC -gUnknown_81D9444:: @ 81D9444 +BattleScript_ObliviousPreventsAttraction:: @ 81D9444 .incbin "baserom.gba", 0x1D9444, 0xE -gUnknown_81D9452:: @ 81D9452 +BattleScript_FlinchPrevention:: @ 81D9452 .incbin "baserom.gba", 0x1D9452, 0x1C BattleScript_SoundproofProtected:: @ 81D946E .incbin "baserom.gba", 0x1D946E, 0x10 -gUnknown_81D947E:: @ 81D947E +BattleScript_AbilityNoSpecificStatLoss:: @ 81D947E .incbin "baserom.gba", 0x1D947E, 0x10 -gUnknown_81D948E:: @ 81D948E +BattleScript_StickyHoldActivates:: @ 81D948E .incbin "baserom.gba", 0x1D948E, 0xE BattleScript_ColorChangeActivates:: @ 81D949C @@ -471,7 +471,7 @@ BattleScript_IgnoresAndFallsAsleep:: @ 81D9504 BattleScript_IgnoresAndHitsItself:: @ 81D951B .incbin "baserom.gba", 0x1D951B, 0xB -gUnknown_81D9526:: @ 81D9526 +BattleScript_SubstituteFade:: @ 81D9526 .incbin "baserom.gba", 0x1D9526, 0xB BattleScript_BerryCurePrlzEnd2:: @ 81D9531 @@ -537,7 +537,7 @@ BattleScript_ItemHealHP_Ret:: @ 81D9622 BattleScript_SelectingNotAllowedMoveChoiceItem:: @ 81D963D .incbin "baserom.gba", 0x1D963D, 0x4 -gUnknown_81D9641:: @ 81D9641 +BattleScript_HangedOnMsg:: @ 81D9641 .incbin "baserom.gba", 0x1D9641, 0xE BattleScript_BerryConfuseHealEnd2:: @ 81D964F @@ -552,5 +552,5 @@ BattleScript_BerryFocusEnergyEnd2:: @ 81D9694 gUnknown_81D96A4:: @ 81D96A4 .incbin "baserom.gba", 0x1D96A4, 0x4 -gUnknown_81D96A8:: @ 81D96A8 +BattleScript_FlushMessageBox:: @ 81D96A8 .incbin "baserom.gba", 0x1D96A8, 0x4 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index d9cd0829c..c3747cd8d 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -12,17 +12,17 @@ gUnknown_81D99FC:: @ 81D99FC gUnknown_81D9A04:: @ 81D9A04 .incbin "baserom.gba", 0x1D9A04, 0x3E -gUnknown_81D9A42:: @ 81D9A42 +BattleScript_SuccessBallThrow:: @ 81D9A42 .incbin "baserom.gba", 0x1D9A42, 0x46 gUnknown_81D9A88:: @ 81D9A88 .incbin "baserom.gba", 0x1D9A88, 0xB -gUnknown_81D9A93:: @ 81D9A93 +BattleScript_ShakeBallThrow:: @ 81D9A93 .incbin "baserom.gba", 0x1D9A93, 0x2E -gUnknown_81D9AC1:: @ 81D9AC1 +BattleScript_TrainerBallBlock:: @ 81D9AC1 .incbin "baserom.gba", 0x1D9AC1, 0x10 -gUnknown_81D9AD1:: @ 81D9AD1 +BattleScript_GhostBallDodge:: @ 81D9AD1 .incbin "baserom.gba", 0x1D9AD1, 0x123 diff --git a/data/data.s b/data/data.s index b150bfb4e..b88411e4a 100644 --- a/data/data.s +++ b/data/data.s @@ -239,7 +239,7 @@ gTypeEffectiveness:: @ 824F050 gTypeNames:: @ 824F1A0 .incbin "baserom.gba", 0x24F1A0, 0x80 -gUnknown_824F220:: @ 824F220 +gTrainerMoneyTable:: @ 824F220 .incbin "baserom.gba", 0x24F220, 0x8E8 gUnknown_824FB08:: @ 824FB08 diff --git a/data/data_83F5738.s b/data/data_83F5738.s index 20cbed093..1dd697956 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -369,10 +369,10 @@ gUnknown_83FDDEB:: @ 83FDDEB gUnknown_83FDF3C:: @ 83FDF3C .incbin "baserom.gba", 0x3FDF3C, 0x5D8 -gUnknown_83FE514:: @ 83FE514 +gMissStringIds:: @ 83FE514 .incbin "baserom.gba", 0x3FE514, 0x150 -gUnknown_83FE664:: @ 83FE664 +gTrappingMoves:: @ 83FE664 .incbin "baserom.gba", 0x3FE664, 0xE gUnknown_83FE672:: @ 83FE672 @@ -414,7 +414,7 @@ gText_MoveInterfaceType:: @ 83FE76A gUnknown_83FE770:: @ 83FE770 .incbin "baserom.gba", 0x3FE770, 0x21 -gUnknown_83FE791:: @ 83FE791 +gText_BattleYesNoChoice:: @ 83FE791 .incbin "baserom.gba", 0x3FE791, 0xF gText_BattleSwitchWhich:: @ 83FE7A0 diff --git a/include/battle.h b/include/battle.h index 78b5f4c20..e922cc241 100644 --- a/include/battle.h +++ b/include/battle.h @@ -956,7 +956,7 @@ extern u32 gUnknown_2022B54; extern u8 gUnknown_2023DDC; extern u8 gBattlerAttacker; extern u8 gEffectBattler; -extern u8 gUnknown_2023D72; +extern u8 gMultiHitCounter; extern struct BattleScripting gBattleScripting; extern u8 gBattlerFainted; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 96790a52d..5dd60bd64 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -719,7 +719,7 @@ void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 m sBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; sBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; sBattleBuffersTransferData[10] = friendship; - sBattleBuffersTransferData[11] = gUnknown_2023D72; // multihit in pokeem + sBattleBuffersTransferData[11] = gMultiHitCounter; // multihit in pokeem if (WEATHER_HAS_EFFECT2) { sBattleBuffersTransferData[12] = gBattleWeather; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8f2345beb..01ecae958 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -316,7 +316,6 @@ void atkF4_subattackerhpbydmg(void); void atkF5_removeattackerstatus1(void); void atkF6_finishaction(void); void atkF7_finishturn(void); -void atkF8_trainerslideout(void); void (* const gBattleScriptingCommandsTable[])(void) = { @@ -819,40 +818,31 @@ const u16 sWeightToDamageTable[] = 0xFFFF, 0xFFFF }; -const u16 sPickupItems[] = +struct PickupItem { - ITEM_ORAN_BERRY, - ITEM_BURN_HEAL, - ITEM_CHERI_BERRY, - ITEM_MAX_REVIVE, - ITEM_CHESTO_BERRY, - ITEM_MAX_ETHER, - ITEM_PECHA_BERRY, - ITEM_SACRED_ASH, - ITEM_RAWST_BERRY, - ITEM_037, - ITEM_ASPEAR_BERRY, - ITEM_IRON, - ITEM_PERSIM_BERRY, - ITEM_X_ATTACK, - ITEM_TM10, - ITEM_POKE_DOLL, - ITEM_PP_UP, - ITEM_ESCAPE_ROPE, - ITEM_RARE_CANDY, - ITEM_05A, - ITEM_NUGGET, - ITEM_FIRE_STONE, - ITEM_SPELON_BERRY, - ITEM_THUNDER_STONE, - ITEM_PAMTRE_BERRY, - ITEM_WATER_STONE, - ITEM_WATMEL_BERRY, - ITEM_LEAF_STONE, - ITEM_DURIN_BERRY, - ITEM_063, - ITEM_BELUE_BERRY, - ITEM_MASTER_BALL + u16 itemId; + u8 chance; +}; + +const struct PickupItem sPickupItems[] = +{ + { ITEM_ORAN_BERRY, 15 }, + { ITEM_CHERI_BERRY, 25 }, + { ITEM_CHESTO_BERRY, 35 }, + { ITEM_PECHA_BERRY, 45 }, + { ITEM_RAWST_BERRY, 55 }, + { ITEM_ASPEAR_BERRY, 65 }, + { ITEM_PERSIM_BERRY, 75 }, + { ITEM_TM10, 80 }, + { ITEM_PP_UP, 85 }, + { ITEM_RARE_CANDY, 90 }, + { ITEM_NUGGET, 95 }, + { ITEM_SPELON_BERRY, 96 }, + { ITEM_PAMTRE_BERRY, 97 }, + { ITEM_WATMEL_BERRY, 98 }, + { ITEM_DURIN_BERRY, 99 }, + { ITEM_BELUE_BERRY, 1 }, + }; const u8 sTerrainToType[] = diff --git a/sym_common.txt b/sym_common.txt index 3c9c8f56f..a5c25be05 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -114,7 +114,7 @@ gBattleMainFunc: @ 3004F84 gBattleResults: @ 3004F90 .space 0x44 -gUnknown_3004FD4: @ 3004FD4 +gLeveledUpInBattle: @ 3004FD4 .space 0xC gBattlerControllerFuncs: @ 3004FE0 diff --git a/sym_ewram.txt b/sym_ewram.txt index 7505da54b..8b502f86b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -135,7 +135,7 @@ gUnknown_2022AE8: @ 2022AE8 gBattleTypeFlags: @ 2022B4C .space 0x4 -gUnknown_2022B50: @ 2022B50 +gBattleTerrain: @ 2022B50 .space 0x4 gUnknown_2022B54: @ 2022B54 @@ -186,13 +186,13 @@ gBattlerPartyIndexes: @ 2023BCE gBattlerPositions: @ 2023BD6 .space 0x4 -gUnknown_2023BDA: @ 2023BDA +gActionsByTurnOrder: @ 2023BDA .space 0x4 gBattlerByTurnOrder: @ 2023BDE .space 0x4 -gUnknown_2023BE2: @ 2023BE2 +gCurrentTurnActionNumber: @ 2023BE2 .space 0x1 gCurrentActionFuncId: @ 2023BE3 @@ -240,7 +240,7 @@ gCalledMove: @ 2023D4E gBattleMoveDamage: @ 2023D50 .space 0x4 -gUnknown_2023D54: @ 2023D54 +gHpDealt: @ 2023D54 .space 0x4 gTakenDmg: @ 2023D58 @@ -273,19 +273,19 @@ gAbsentBattlerFlags: @ 2023D70 gCritMultiplier: @ 2023D71 .space 0x1 -gUnknown_2023D72: @ 2023D72 +gMultiHitCounter: @ 2023D72 .space 0x2 gBattlescriptCurrInstr: @ 2023D74 .space 0x8 -gUnknown_2023D7C: @ 2023D7C +gChosenActionByBattler: @ 2023D7C .space 0x4 gSelectionBattleScripts: @ 2023D80 .space 0x10 -gUnknown_2023D90: @ 2023D90 +gLastPrintedMoves: @ 2023D90 .space 0x8 gLastMoves: @ 2023D98 @@ -294,13 +294,13 @@ gLastMoves: @ 2023D98 gLastLandedMoves: @ 2023DA0 .space 0x8 -gUnknown_2023DA8: @ 2023DA8 +gLastHitByType: @ 2023DA8 .space 0x8 -gUnknown_2023DB0: @ 2023DB0 +gLastResultingMoves: @ 2023DB0 .space 0x8 -gUnknown_2023DB8: @ 2023DB8 +gLockedMoves: @ 2023DB8 .space 0x8 gLastHitBy: @ 2023DC0 @@ -336,10 +336,10 @@ gStatuses3: @ 2023DFC gDisableStructs: @ 2023E0C .space 0x70 -gUnknown_2023E7C: @ 2023E7C +gPauseCounterBattle: @ 2023E7C .space 0x2 -gUnknown_2023E7E: @ 2023E7E +gPaydayMoney: @ 2023E7E .space 0x2 gUnknown_2023E80: @ 2023E80 @@ -375,7 +375,7 @@ gSentPokesToOpponent: @ 2023F4E gDynamicBasePower: @ 2023F50 .space 0x2 -gUnknown_2023F52: @ 2023F52 +gExpShareExp: @ 2023F52 .space 0x2 gEnigmaBerries: @ 2023F54 From 41a7e6967dd4fd79eb01a45f4d77cf7c2ca11dc1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 25 Aug 2019 06:53:22 +0800 Subject: [PATCH 023/100] thru atk14 --- asm/battle_script_commands.s | 5007 ---------------------------------- include/battle.h | 3 + src/battle_script_commands.c | 1223 +++++++++ 3 files changed, 1226 insertions(+), 5007 deletions(-) diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 6d797fe69..f1d80c4fc 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,5013 +5,6 @@ .text - thumb_func_start atk00_attackcanceler -atk00_attackcanceler: @ 801D760 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, _0801D77C @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0 - beq _0801D784 - ldr r1, _0801D780 @ =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] - b _0801DAFC - .align 2, 0 -_0801D77C: .4byte gBattleOutcome -_0801D780: .4byte gCurrentActionFuncId -_0801D784: - ldr r2, _0801D7B4 @ =gBattleMons - ldr r0, _0801D7B8 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0801D7C8 - ldr r2, _0801D7BC @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _0801D7C8 - movs r0, 0x80 - lsls r0, 12 - orrs r1, r0 - str r1, [r2] - ldr r1, _0801D7C0 @ =gBattlescriptCurrInstr - ldr r0, _0801D7C4 @ =BattleScript_MoveEnd - b _0801DAFA - .align 2, 0 -_0801D7B4: .4byte gBattleMons -_0801D7B8: .4byte gBattlerAttacker -_0801D7BC: .4byte gHitMarker -_0801D7C0: .4byte gBattlescriptCurrInstr -_0801D7C4: .4byte BattleScript_MoveEnd -_0801D7C8: - bl AtkCanceller_UnableToUseMove - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0801D7D6 - b _0801DAFC -_0801D7D6: - ldr r0, _0801D844 @ =gBattlerTarget - ldrb r1, [r0] - str r2, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801D7EE - b _0801DAFC -_0801D7EE: - ldr r4, _0801D848 @ =gBattleMons - ldr r0, _0801D84C @ =gCurrMovePos - ldrb r1, [r0] - ldr r3, _0801D850 @ =gBattlerAttacker - ldrb r2, [r3] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - ldr r5, _0801D854 @ =gHitMarker - cmp r0, 0 - bne _0801D86C - ldr r0, _0801D858 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _0801D86C - ldr r0, [r5] - ldr r1, _0801D85C @ =0x00800200 - ands r0, r1 - cmp r0, 0 - bne _0801D86C - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0801D86C - ldr r1, _0801D860 @ =gBattlescriptCurrInstr - ldr r0, _0801D864 @ =BattleScript_NoPPForMove - str r0, [r1] - ldr r2, _0801D868 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - b _0801DAFC - .align 2, 0 -_0801D844: .4byte gBattlerTarget -_0801D848: .4byte gBattleMons -_0801D84C: .4byte gCurrMovePos -_0801D850: .4byte gBattlerAttacker -_0801D854: .4byte gHitMarker -_0801D858: .4byte gCurrentMove -_0801D85C: .4byte 0x00800200 -_0801D860: .4byte gBattlescriptCurrInstr -_0801D864: .4byte BattleScript_NoPPForMove -_0801D868: .4byte gMoveResultFlags -_0801D86C: - ldr r0, [r5] - ldr r1, _0801D8B0 @ =0xff7fffff - ands r0, r1 - str r0, [r5] - movs r6, 0x80 - lsls r6, 18 - ands r0, r6 - cmp r0, 0 - bne _0801D8C4 - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r4, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _0801D8C4 - bl IsMonDisobedient - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0801D8C4 - cmp r2, 0x2 - bne _0801D8B4 - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - b _0801DAFC - .align 2, 0 -_0801D8B0: .4byte 0xff7fffff -_0801D8B4: - ldr r0, _0801D8C0 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _0801DAFC - .align 2, 0 -_0801D8C0: .4byte gMoveResultFlags -_0801D8C4: - ldr r2, _0801D928 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r2, _0801D92C @ =gProtectStructs - ldr r1, _0801D930 @ =gBattlerTarget - ldrb r3, [r1] - lsls r0, r3, 4 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 27 - mov r8, r1 - mov r9, r2 - cmp r0, 0 - bge _0801D94C - ldr r2, _0801D934 @ =gBattleMoves - ldr r0, _0801D938 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801D94C - ldr r0, _0801D93C @ =gBattlerAttacker - ldrb r0, [r0] - ldr r2, _0801D940 @ =0x00000115 - adds r1, r3, 0 - bl PressurePPLose - mov r0, r8 - ldrb r1, [r0] - lsls r1, 4 - add r1, r9 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl BattleScriptPushCursor - ldr r1, _0801D944 @ =gBattlescriptCurrInstr - ldr r0, _0801D948 @ =BattleScript_MagicCoatBounce - b _0801DAFA - .align 2, 0 -_0801D928: .4byte gHitMarker -_0801D92C: .4byte gProtectStructs -_0801D930: .4byte gBattlerTarget -_0801D934: .4byte gBattleMoves -_0801D938: .4byte gCurrentMove -_0801D93C: .4byte gBattlerAttacker -_0801D940: .4byte 0x00000115 -_0801D944: .4byte gBattlescriptCurrInstr -_0801D948: .4byte BattleScript_MagicCoatBounce -_0801D94C: - movs r2, 0 - ldr r0, _0801D9C8 @ =gBattlersCount - ldrb r0, [r0] - cmp r2, r0 - bge _0801D98E - ldr r6, _0801D9CC @ =gProtectStructs - ldr r1, _0801D9D0 @ =gBattleMoves - mov r12, r1 - adds r5, r0, 0 - ldr r7, _0801D9D4 @ =gBattlerByTurnOrder -_0801D960: - adds r4, r2, r7 - ldrb r3, [r4] - lsls r0, r3, 4 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0801D988 - ldr r0, _0801D9D8 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r1, [r0, 0x8] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801D988 - b _0801DAB4 -_0801D988: - adds r2, 0x1 - cmp r2, r5 - blt _0801D960 -_0801D98E: - ldr r0, _0801D9DC @ =gSpecialStatuses - mov r1, r8 - ldrb r2, [r1] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r3, [r1] - lsls r0, r3, 30 - cmp r0, 0 - bge _0801D9EC - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - strb r0, [r1] - ldr r4, _0801D9E0 @ =gLastUsedAbility - movs r0, 0x1F - strb r0, [r4] - bl BattleScriptPushCursor - ldr r1, _0801D9E4 @ =gBattlescriptCurrInstr - ldr r0, _0801D9E8 @ =BattleScript_TookAttack - str r0, [r1] - mov r1, r8 - ldrb r0, [r1] - ldrb r1, [r4] - bl RecordAbilityBattle - b _0801DAFC - .align 2, 0 -_0801D9C8: .4byte gBattlersCount -_0801D9CC: .4byte gProtectStructs -_0801D9D0: .4byte gBattleMoves -_0801D9D4: .4byte gBattlerByTurnOrder -_0801D9D8: .4byte gCurrentMove -_0801D9DC: .4byte gSpecialStatuses -_0801D9E0: .4byte gLastUsedAbility -_0801D9E4: .4byte gBattlescriptCurrInstr -_0801D9E8: .4byte BattleScript_TookAttack -_0801D9EC: - lsls r0, r2, 4 - add r0, r9 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0801D9FA - b _0801DAF4 -_0801D9FA: - ldr r1, _0801DA90 @ =gBattleMoves - ldr r2, _0801DA94 @ =gCurrentMove - ldrh r3, [r2] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - beq _0801DAF4 - cmp r3, 0xAE - bne _0801DA38 - ldr r2, _0801DA98 @ =gBattleMons - ldr r0, _0801DA9C @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _0801DA38 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _0801DAF4 -_0801DA38: - ldrh r0, [r4] - bl IsTwoTurnsMove - lsls r0, 24 - cmp r0, 0 - beq _0801DA5E - ldr r1, _0801DA98 @ =gBattleMons - ldr r0, _0801DA9C @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _0801DAF4 -_0801DA5E: - ldr r0, _0801DA9C @ =gBattlerAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r2, _0801DAA0 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801DAA4 @ =gLastLandedMoves - ldr r3, _0801DAA8 @ =gBattlerTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801DAAC @ =gLastHitByType - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, _0801DAB0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _0801DAF4 - .align 2, 0 -_0801DA90: .4byte gBattleMoves -_0801DA94: .4byte gCurrentMove -_0801DA98: .4byte gBattleMons -_0801DA9C: .4byte gBattlerAttacker -_0801DAA0: .4byte gMoveResultFlags -_0801DAA4: .4byte gLastLandedMoves -_0801DAA8: .4byte gBattlerTarget -_0801DAAC: .4byte gLastHitByType -_0801DAB0: .4byte gBattleCommunication -_0801DAB4: - ldr r0, _0801DAE0 @ =gBattlerAttacker - ldrb r0, [r0] - ldr r2, _0801DAE4 @ =0x00000121 - adds r1, r3, 0 - bl PressurePPLose - ldrb r1, [r4] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _0801DAE8 @ =gBattleScripting - ldrb r0, [r4] - strb r0, [r1, 0x17] - bl BattleScriptPushCursor - ldr r1, _0801DAEC @ =gBattlescriptCurrInstr - ldr r0, _0801DAF0 @ =BattleScript_SnatchedMove - b _0801DAFA - .align 2, 0 -_0801DAE0: .4byte gBattlerAttacker -_0801DAE4: .4byte 0x00000121 -_0801DAE8: .4byte gBattleScripting -_0801DAEC: .4byte gBattlescriptCurrInstr -_0801DAF0: .4byte BattleScript_SnatchedMove -_0801DAF4: - ldr r1, _0801DB0C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0801DAFA: - str r0, [r1] -_0801DAFC: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801DB0C: .4byte gBattlescriptCurrInstr - thumb_func_end atk00_attackcanceler - - thumb_func_start JumpIfMoveFailed -JumpIfMoveFailed: @ 801DB10 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r1, _0801DB5C @ =gBattlescriptCurrInstr - ldr r5, [r1] - adds r4, r5, r0 - ldr r0, _0801DB60 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801DB70 - ldr r1, _0801DB64 @ =gLastLandedMoves - ldr r3, _0801DB68 @ =gBattlerTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801DB6C @ =gLastHitByType - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldrb r4, [r5, 0x1] - ldrb r0, [r5, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r5, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r5, 0x4] - lsls r0, 24 - orrs r4, r0 - b _0801DB8A - .align 2, 0 -_0801DB5C: .4byte gBattlescriptCurrInstr -_0801DB60: .4byte gMoveResultFlags -_0801DB64: .4byte gLastLandedMoves -_0801DB68: .4byte gBattlerTarget -_0801DB6C: .4byte gLastHitByType -_0801DB70: - bl TrySetDestinyBondToHappen - ldr r0, _0801DB98 @ =gBattlerTarget - ldrb r1, [r0] - str r6, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801DB8E -_0801DB8A: - ldr r0, _0801DB9C @ =gBattlescriptCurrInstr - str r4, [r0] -_0801DB8E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801DB98: .4byte gBattlerTarget -_0801DB9C: .4byte gBattlescriptCurrInstr - thumb_func_end JumpIfMoveFailed - - thumb_func_start atk40_jumpifaffectedbyprotect -atk40_jumpifaffectedbyprotect: @ 801DBA0 - push {lr} - ldr r1, _0801DBE8 @ =gProtectStructs - ldr r0, _0801DBEC @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0801DC00 - ldr r2, _0801DBF0 @ =gBattleMoves - ldr r0, _0801DBF4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801DC00 - ldr r2, _0801DBF8 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x5 - movs r1, 0 - bl JumpIfMoveFailed - ldr r1, _0801DBFC @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - b _0801DC08 - .align 2, 0 -_0801DBE8: .4byte gProtectStructs -_0801DBEC: .4byte gBattlerTarget -_0801DBF0: .4byte gBattleMoves -_0801DBF4: .4byte gCurrentMove -_0801DBF8: .4byte gMoveResultFlags -_0801DBFC: .4byte gBattleCommunication -_0801DC00: - ldr r1, _0801DC0C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0801DC08: - pop {r0} - bx r0 - .align 2, 0 -_0801DC0C: .4byte gBattlescriptCurrInstr - thumb_func_end atk40_jumpifaffectedbyprotect - - thumb_func_start JumpIfMoveAffectedByProtect -JumpIfMoveAffectedByProtect: @ 801DC10 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r4, 0 - ldr r1, _0801DC64 @ =gProtectStructs - ldr r0, _0801DC68 @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _0801DC5C - ldr r2, _0801DC6C @ =gBattleMoves - ldr r0, _0801DC70 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x8] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801DC5C - ldr r2, _0801DC74 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x7 - adds r1, r3, 0 - bl JumpIfMoveFailed - ldr r1, _0801DC78 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x6] - movs r4, 0x1 -_0801DC5C: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801DC64: .4byte gProtectStructs -_0801DC68: .4byte gBattlerTarget -_0801DC6C: .4byte gBattleMoves -_0801DC70: .4byte gCurrentMove -_0801DC74: .4byte gMoveResultFlags -_0801DC78: .4byte gBattleCommunication - thumb_func_end JumpIfMoveAffectedByProtect - - thumb_func_start AccuracyCalcHelper -AccuracyCalcHelper: @ 801DC7C - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r2, _0801DCDC @ =gStatuses3 - ldr r3, _0801DCE0 @ =gBattlerTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - adds r6, r2, 0 - cmp r1, 0 - beq _0801DCAE - ldr r1, _0801DCE4 @ =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _0801DCE8 @ =gBattlerAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - beq _0801DD98 -_0801DCAE: - ldr r0, _0801DCEC @ =gHitMarker - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 9 - ands r1, r2 - adds r2, r0, 0 - cmp r1, 0 - bne _0801DCF4 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801DCF4 -_0801DCCE: - ldr r0, _0801DCF0 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _0801DD98 - .align 2, 0 -_0801DCDC: .4byte gStatuses3 -_0801DCE0: .4byte gBattlerTarget -_0801DCE4: .4byte gDisableStructs -_0801DCE8: .4byte gBattlerAttacker -_0801DCEC: .4byte gHitMarker -_0801DCF0: .4byte gMoveResultFlags -_0801DCF4: - ldr r0, [r2] - ldr r1, _0801DDA4 @ =0xfffeffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 10 - ands r0, r1 - cmp r0, 0 - bne _0801DD16 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0801DCCE -_0801DD16: - ldr r0, [r2] - ldr r1, _0801DDA8 @ =0xfffdffff - ands r0, r1 - str r0, [r2] - movs r1, 0x80 - lsls r1, 11 - ands r0, r1 - cmp r0, 0 - bne _0801DD36 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r0, r1 - cmp r0, 0 - bne _0801DCCE -_0801DD36: - ldr r0, [r2] - ldr r1, _0801DDAC @ =0xfffbffff - ands r0, r1 - str r0, [r2] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - lsls r4, r5, 1 - cmp r0, 0 - bne _0801DD86 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801DD86 - ldr r0, _0801DDB0 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0801DD86 - ldr r0, _0801DDB4 @ =gBattleMoves - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x98 - beq _0801DD98 -_0801DD86: - ldr r1, _0801DDB4 @ =gBattleMoves - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x11 - beq _0801DD98 - cmp r0, 0x4E - bne _0801DDB8 -_0801DD98: - movs r0, 0x7 - adds r1, r5, 0 - bl JumpIfMoveFailed - movs r0, 0x1 - b _0801DDBA - .align 2, 0 -_0801DDA4: .4byte 0xfffeffff -_0801DDA8: .4byte 0xfffdffff -_0801DDAC: .4byte 0xfffbffff -_0801DDB0: .4byte gBattleWeather -_0801DDB4: .4byte gBattleMoves -_0801DDB8: - movs r0, 0 -_0801DDBA: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end AccuracyCalcHelper - - thumb_func_start atk01_accuracycheck -atk01_accuracycheck: @ 801DDC4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _0801DE60 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r6, [r0, 0x5] - ldrb r0, [r0, 0x6] - lsls r0, 8 - orrs r6, r0 - ldr r0, _0801DE64 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801DE48 - movs r0, 0x1 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _0801DE12 - ldr r0, _0801DE68 @ =gBattleMoves - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801DE12 - ldr r0, _0801DE6C @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0801DE56 -_0801DE12: - ldr r0, _0801DE64 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801DE48 - movs r0, 0x2 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _0801DE48 - ldr r0, _0801DE68 @ =gBattleMoves - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801DE48 - ldr r0, _0801DE6C @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0801DE56 -_0801DE48: - ldr r0, _0801DE64 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _0801DE70 -_0801DE56: - movs r0, 0x7 - adds r1, r6, 0 - bl JumpIfMoveFailed - b _0801E1C2 - .align 2, 0 -_0801DE60: .4byte gBattlescriptCurrInstr -_0801DE64: .4byte gBattleTypeFlags -_0801DE68: .4byte gBattleMoves -_0801DE6C: .4byte gBattlerAttacker -_0801DE70: - adds r0, r6, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0801DF0C - ldr r2, _0801DED4 @ =gStatuses3 - ldr r3, _0801DED8 @ =gBattlerTarget - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x18 - ands r1, r0 - cmp r1, 0 - beq _0801DEA8 - ldr r0, _0801DEDC @ =0x0000ffff - cmp r6, r0 - bne _0801DEA8 - ldr r1, _0801DEE0 @ =gDisableStructs - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _0801DEE4 @ =gBattlerAttacker - ldrb r0, [r0, 0x15] - ldrb r1, [r1] - cmp r0, r1 - beq _0801DEFE -_0801DEA8: - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldr r1, _0801DEE8 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _0801DEF0 - ldr r3, _0801DEEC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0801E1C2 - .align 2, 0 -_0801DED4: .4byte gStatuses3 -_0801DED8: .4byte gBattlerTarget -_0801DEDC: .4byte 0x0000ffff -_0801DEE0: .4byte gDisableStructs -_0801DEE4: .4byte gBattlerAttacker -_0801DEE8: .4byte 0x000400c0 -_0801DEEC: .4byte gBattlescriptCurrInstr -_0801DEF0: - movs r0, 0 - bl JumpIfMoveAffectedByProtect - lsls r0, 24 - cmp r0, 0 - beq _0801DEFE - b _0801E1C2 -_0801DEFE: - ldr r1, _0801DF08 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] - b _0801E1C2 - .align 2, 0 -_0801DF08: .4byte gBattlescriptCurrInstr -_0801DF0C: - cmp r6, 0 - bne _0801DF14 - ldr r0, _0801DF2C @ =gCurrentMove - ldrh r6, [r0] -_0801DF14: - ldr r0, _0801DF30 @ =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _0801DF34 - movs r1, 0x3F - mov r10, r1 - mov r2, r10 - ands r2, r0 - mov r10, r2 - b _0801DF42 - .align 2, 0 -_0801DF2C: .4byte gCurrentMove -_0801DF30: .4byte gBattleStruct -_0801DF34: - ldr r1, _0801DF88 @ =gBattleMoves - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - mov r10, r0 -_0801DF42: - adds r0, r6, 0 - bl JumpIfMoveAffectedByProtect - lsls r0, 24 - cmp r0, 0 - beq _0801DF50 - b _0801E1C2 -_0801DF50: - adds r0, r6, 0 - bl AccuracyCalcHelper - lsls r0, 24 - cmp r0, 0 - beq _0801DF5E - b _0801E1C2 -_0801DF5E: - ldr r3, _0801DF8C @ =gBattleMons - ldr r0, _0801DF90 @ =gBattlerTarget - ldrb r0, [r0] - movs r2, 0x58 - adds r4, r0, 0 - muls r4, r2 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801DF98 - ldr r0, _0801DF94 @ =gBattlerAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r5, [r0, 0x1E] - b _0801DFAE - .align 2, 0 -_0801DF88: .4byte gBattleMoves -_0801DF8C: .4byte gBattleMons -_0801DF90: .4byte gBattlerTarget -_0801DF94: .4byte gBattlerAttacker -_0801DF98: - ldr r0, _0801E0FC @ =gBattlerAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - ldrb r0, [r0, 0x1E] - adds r0, 0x6 - adds r1, r4, r3 - ldrb r1, [r1, 0x1F] - subs r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 -_0801DFAE: - lsls r0, r5, 24 - cmp r0, 0 - bge _0801DFB6 - movs r5, 0 -_0801DFB6: - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0xC - ble _0801DFC0 - movs r5, 0xC -_0801DFC0: - ldr r1, _0801E100 @ =gBattleMoves - lsls r4, r6, 1 - adds r0, r4, r6 - lsls r0, 2 - adds r7, r0, r1 - ldrb r3, [r7, 0x3] - mov r8, r3 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - str r4, [sp, 0x4] - cmp r0, 0 - bne _0801E012 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801E012 - ldr r0, _0801E104 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0801E012 - ldrb r0, [r7] - cmp r0, 0x98 - bne _0801E012 - movs r0, 0x32 - mov r8, r0 -_0801E012: - ldr r1, _0801E108 @ =sAccuracyStageRatios - lsls r0, r5, 24 - asrs r0, 22 - adds r0, r1 - ldrb r1, [r0] - mov r4, r8 - muls r4, r1 - ldrb r1, [r0, 0x1] - adds r0, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r7, _0801E10C @ =gBattleMons - ldr r0, _0801E0FC @ =gBattlerAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0xE - bne _0801E050 - lsls r0, r4, 6 - adds r0, r4 - lsls r0, 1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801E050: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0801E0A8 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0801E0A8 - ldr r0, _0801E110 @ =gBattlerTarget - ldrb r0, [r0] - muls r0, r5 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - bne _0801E0A8 - ldr r0, _0801E104 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0801E0A8 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801E0A8: - ldr r2, _0801E10C @ =gBattleMons - ldr r0, _0801E0FC @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r9, r2 - cmp r0, 0x37 - bne _0801E0D4 - mov r1, r10 - cmp r1, 0x8 - bhi _0801E0D4 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801E0D4: - ldr r2, _0801E110 @ =gBattlerTarget - mov r8, r2 - ldrb r2, [r2] - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - mov r3, r9 - adds r1, r0, r3 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801E118 - ldr r1, _0801E114 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r5, [r0, 0x7] - ldrb r2, [r0, 0x1A] - b _0801E134 - .align 2, 0 -_0801E0FC: .4byte gBattlerAttacker -_0801E100: .4byte gBattleMoves -_0801E104: .4byte gBattleWeather -_0801E108: .4byte sAccuracyStageRatios -_0801E10C: .4byte gBattleMons -_0801E110: .4byte gBattlerTarget -_0801E114: .4byte gEnigmaBerries -_0801E118: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - muls r0, r7 - add r0, r9 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r2, r0, 24 -_0801E134: - ldr r0, _0801E198 @ =gPotentialItemEffectBattler - ldr r1, _0801E19C @ =gBattlerTarget - ldrb r1, [r1] - strb r1, [r0] - cmp r5, 0x16 - bne _0801E150 - movs r0, 0x64 - subs r0, r2 - muls r0, r4 - movs r1, 0x64 - bl __divsi3 - lsls r0, 16 - lsrs r4, r0, 16 -_0801E150: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - ble _0801E1BA - ldr r2, _0801E1A0 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0801E1A4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801E1B0 - ldr r1, _0801E1A8 @ =gBattleMoves - ldr r2, [sp, 0x4] - adds r0, r2, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x6] - cmp r0, 0x8 - beq _0801E192 - cmp r0, 0x20 - bne _0801E1B0 -_0801E192: - ldr r1, _0801E1AC @ =gBattleCommunication - movs r0, 0x2 - b _0801E1B4 - .align 2, 0 -_0801E198: .4byte gPotentialItemEffectBattler -_0801E19C: .4byte gBattlerTarget -_0801E1A0: .4byte gMoveResultFlags -_0801E1A4: .4byte gBattleTypeFlags -_0801E1A8: .4byte gBattleMoves -_0801E1AC: .4byte gBattleCommunication -_0801E1B0: - ldr r1, _0801E1D4 @ =gBattleCommunication - movs r0, 0 -_0801E1B4: - strb r0, [r1, 0x6] - bl CheckWonderGuardAndLevitate -_0801E1BA: - movs r0, 0x7 - adds r1, r6, 0 - bl JumpIfMoveFailed -_0801E1C2: - 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 -_0801E1D4: .4byte gBattleCommunication - thumb_func_end atk01_accuracycheck - - thumb_func_start atk02_attackstring -atk02_attackstring: @ 801E1D8 - push {r4,r5,lr} - ldr r0, _0801E218 @ =gBattleControllerExecFlags - ldr r5, [r0] - cmp r5, 0 - bne _0801E210 - ldr r4, _0801E21C @ =gHitMarker - ldr r0, [r4] - movs r1, 0xC0 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - bne _0801E204 - ldr r0, _0801E220 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x4 - bl PrepareStringBattle - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 3 - orrs r0, r1 - str r0, [r4] -_0801E204: - ldr r0, _0801E224 @ =gBattlescriptCurrInstr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, _0801E228 @ =gBattleCommunication - strb r5, [r0, 0x7] -_0801E210: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801E218: .4byte gBattleControllerExecFlags -_0801E21C: .4byte gHitMarker -_0801E220: .4byte gBattlerAttacker -_0801E224: .4byte gBattlescriptCurrInstr -_0801E228: .4byte gBattleCommunication - thumb_func_end atk02_attackstring - - thumb_func_start atk03_ppreduce -atk03_ppreduce: @ 801E22C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0x1 - ldr r0, _0801E27C @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0801E244 - b _0801E3DE -_0801E244: - ldr r1, _0801E280 @ =gSpecialStatuses - ldr r2, _0801E284 @ =gBattlerAttacker - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r4, r0, 31 - mov r9, r2 - cmp r4, 0 - bne _0801E2E6 - ldr r2, _0801E288 @ =gBattleMoves - ldr r0, _0801E28C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x6] - cmp r0, 0x20 - beq _0801E296 - cmp r0, 0x20 - bgt _0801E290 - cmp r0, 0x8 - beq _0801E2AC - b _0801E2C6 - .align 2, 0 -_0801E27C: .4byte gBattleControllerExecFlags -_0801E280: .4byte gSpecialStatuses -_0801E284: .4byte gBattlerAttacker -_0801E288: .4byte gBattleMoves -_0801E28C: .4byte gCurrentMove -_0801E290: - cmp r0, 0x40 - beq _0801E2AC - b _0801E2C6 -_0801E296: - str r4, [sp] - movs r0, 0x12 - adds r1, r3, 0 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0x1 - b _0801E2E6 -_0801E2AC: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x10 - movs r2, 0x2E - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - adds r6, r0 - b _0801E2E6 -_0801E2C6: - ldr r1, _0801E348 @ =gBattlerTarget - mov r2, r9 - ldrb r0, [r2] - ldrb r7, [r1] - cmp r0, r7 - beq _0801E2E6 - ldr r2, _0801E34C @ =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2E - bne _0801E2E6 - adds r6, 0x1 -_0801E2E6: - ldr r0, _0801E350 @ =gHitMarker - ldr r4, [r0] - movs r0, 0xA0 - lsls r0, 4 - ands r4, r0 - cmp r4, 0 - bne _0801E3CC - ldr r2, _0801E34C @ =gBattleMons - ldr r3, _0801E354 @ =gCurrMovePos - ldr r1, _0801E358 @ =gBattlerAttacker - ldrb r5, [r1] - movs r0, 0x58 - mov r8, r0 - mov r0, r8 - muls r0, r5 - ldrb r7, [r3] - adds r0, r7 - movs r7, 0x24 - adds r7, r2 - mov r12, r7 - add r0, r12 - ldrb r0, [r0] - mov r9, r1 - mov r10, r2 - adds r7, r3, 0 - cmp r0, 0 - beq _0801E3CC - ldr r0, _0801E35C @ =gProtectStructs - lsls r1, r5, 4 - adds r1, r0 - ldrb r0, [r1, 0x2] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x2] - mov r1, r9 - ldrb r0, [r1] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldrb r1, [r7] - adds r0, r1 - mov r1, r12 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, r6 - ble _0801E360 - subs r0, r6 - strb r0, [r2] - b _0801E362 - .align 2, 0 -_0801E348: .4byte gBattlerTarget -_0801E34C: .4byte gBattleMons -_0801E350: .4byte gHitMarker -_0801E354: .4byte gCurrMovePos -_0801E358: .4byte gBattlerAttacker -_0801E35C: .4byte gProtectStructs -_0801E360: - strb r4, [r2] -_0801E362: - mov r2, r9 - ldrb r3, [r2] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - mov r1, r10 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0801E3CC - ldr r1, _0801E3F0 @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _0801E3F4 @ =gBitTable - ldrb r0, [r7] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0801E3CC - ldr r0, _0801E3F8 @ =gActiveBattler - strb r3, [r0] - ldrb r1, [r7] - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - mov r2, r10 - adds r2, 0x24 - adds r0, r2 - ldrb r7, [r7] - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - mov r7, r9 - ldrb r0, [r7] - bl MarkBattlerForControllerExec -_0801E3CC: - ldr r2, _0801E3FC @ =gHitMarker - ldr r0, [r2] - ldr r1, _0801E400 @ =0xfffff7ff - ands r0, r1 - str r0, [r2] - ldr r1, _0801E404 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801E3DE: - 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 -_0801E3F0: .4byte gDisableStructs -_0801E3F4: .4byte gBitTable -_0801E3F8: .4byte gActiveBattler -_0801E3FC: .4byte gHitMarker -_0801E400: .4byte 0xfffff7ff -_0801E404: .4byte gBattlescriptCurrInstr - thumb_func_end atk03_ppreduce - - thumb_func_start atk04_critcalc -atk04_critcalc: @ 801E408 - push {r4-r7,lr} - ldr r1, _0801E42C @ =gBattleMons - ldr r0, _0801E430 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - cmp r0, 0xAF - bne _0801E438 - ldr r1, _0801E434 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r6, [r0, 0x7] - b _0801E440 - .align 2, 0 -_0801E42C: .4byte gBattleMons -_0801E430: .4byte gBattlerAttacker -_0801E434: .4byte gEnigmaBerries -_0801E438: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r6, r0, 24 -_0801E440: - ldr r1, _0801E4CC @ =gPotentialItemEffectBattler - ldr r3, _0801E4D0 @ =gBattlerAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r4, _0801E4D4 @ =gBattleMons - ldrb r1, [r3] - movs r0, 0x58 - adds r7, r1, 0 - muls r7, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r7, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - negs r0, r0 - asrs r5, r0, 31 - movs r0, 0x2 - ands r5, r0 - ldr r2, _0801E4D8 @ =gBattleMoves - ldr r0, _0801E4DC @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - mov r12, r3 - cmp r1, 0x2B - bne _0801E480 - adds r5, 0x1 -_0801E480: - adds r0, r5, 0 - cmp r1, 0x4B - bne _0801E488 - adds r0, 0x1 -_0801E488: - cmp r1, 0xC8 - bne _0801E48E - adds r0, 0x1 -_0801E48E: - adds r2, r0, 0 - cmp r1, 0xD1 - bne _0801E496 - adds r2, 0x1 -_0801E496: - movs r1, 0 - cmp r6, 0x3F - bne _0801E4A6 - adds r0, r7, r4 - ldrh r0, [r0] - cmp r0, 0x71 - bne _0801E4A6 - movs r1, 0x1 -_0801E4A6: - lsls r5, r1, 1 - movs r3, 0 - cmp r6, 0x42 - bne _0801E4C0 - mov r0, r12 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x53 - bne _0801E4C0 - movs r3, 0x1 -_0801E4C0: - lsls r1, r3, 1 - cmp r6, 0x29 - bne _0801E4E0 - adds r0, r5, 0x1 - adds r0, r2, r0 - b _0801E4E2 - .align 2, 0 -_0801E4CC: .4byte gPotentialItemEffectBattler -_0801E4D0: .4byte gBattlerAttacker -_0801E4D4: .4byte gBattleMons -_0801E4D8: .4byte gBattleMoves -_0801E4DC: .4byte gCurrentMove -_0801E4E0: - adds r0, r2, r5 -_0801E4E2: - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - adds r5, r0, 0 - cmp r5, 0x4 - bls _0801E4F0 - movs r5, 0x4 -_0801E4F0: - ldr r0, _0801E56C @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x4 - beq _0801E580 - cmp r4, 0x4B - beq _0801E580 - ldr r1, _0801E570 @ =gStatuses3 - mov r2, r12 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - bne _0801E580 - ldr r4, _0801E574 @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - bne _0801E580 - bl Random - ldr r2, _0801E578 @ =sCriticalHitChance - lsls r1, r5, 1 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _0801E580 - ldr r0, [r4] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801E55A - movs r0, 0x1 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - beq _0801E580 -_0801E55A: - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - bne _0801E580 - ldr r1, _0801E57C @ =gCritMultiplier - movs r0, 0x2 - b _0801E584 - .align 2, 0 -_0801E56C: .4byte gBattlerTarget -_0801E570: .4byte gStatuses3 -_0801E574: .4byte gBattleTypeFlags -_0801E578: .4byte sCriticalHitChance -_0801E57C: .4byte gCritMultiplier -_0801E580: - ldr r1, _0801E594 @ =gCritMultiplier - movs r0, 0x1 -_0801E584: - strb r0, [r1] - ldr r1, _0801E598 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801E594: .4byte gCritMultiplier -_0801E598: .4byte gBattlescriptCurrInstr - thumb_func_end atk04_critcalc - - thumb_func_start atk05_damagecalc -atk05_damagecalc: @ 801E59C - push {r4-r7,lr} - sub sp, 0x10 - ldr r4, _0801E654 @ =gSideStatuses - ldr r5, _0801E658 @ =gBattlerTarget - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldr r6, _0801E65C @ =gBattlerAttacker - ldrb r0, [r6] - movs r4, 0x58 - muls r0, r4 - ldr r2, _0801E660 @ =gBattleMons - adds r0, r2 - ldrb r1, [r5] - muls r1, r4 - adds r1, r2 - ldr r7, _0801E664 @ =gCurrentMove - ldrh r2, [r7] - ldr r4, _0801E668 @ =gDynamicBasePower - ldrh r4, [r4] - str r4, [sp] - ldr r4, _0801E66C @ =gBattleStruct - ldr r4, [r4] - ldrb r4, [r4, 0x13] - str r4, [sp, 0x4] - ldrb r4, [r6] - str r4, [sp, 0x8] - ldrb r4, [r5] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, _0801E670 @ =gBattleMoveDamage - ldr r1, _0801E674 @ =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, _0801E678 @ =gBattleScripting - ldrb r0, [r0, 0xE] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, _0801E67C @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _0801E620 - ldr r2, _0801E680 @ =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _0801E620 - lsls r0, r3, 1 - str r0, [r4] -_0801E620: - ldr r1, _0801E684 @ =gProtectStructs - ldr r0, _0801E65C @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _0801E642 - ldr r4, _0801E670 @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801E642: - ldr r1, _0801E688 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801E654: .4byte gSideStatuses -_0801E658: .4byte gBattlerTarget -_0801E65C: .4byte gBattlerAttacker -_0801E660: .4byte gBattleMons -_0801E664: .4byte gCurrentMove -_0801E668: .4byte gDynamicBasePower -_0801E66C: .4byte gBattleStruct -_0801E670: .4byte gBattleMoveDamage -_0801E674: .4byte gCritMultiplier -_0801E678: .4byte gBattleScripting -_0801E67C: .4byte gStatuses3 -_0801E680: .4byte gBattleMoves -_0801E684: .4byte gProtectStructs -_0801E688: .4byte gBattlescriptCurrInstr - thumb_func_end atk05_damagecalc - - thumb_func_start AI_CalcDmg -AI_CalcDmg: @ 801E68C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r5, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _0801E744 @ =gSideStatuses - adds r0, r5, 0 - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x58 - adds r0, r7, 0 - muls r0, r1 - ldr r2, _0801E748 @ =gBattleMons - adds r0, r2 - muls r1, r5 - adds r1, r2 - ldr r2, _0801E74C @ =gCurrentMove - mov r8, r2 - ldrh r2, [r2] - ldr r6, _0801E750 @ =gDynamicBasePower - ldrh r4, [r6] - str r4, [sp] - ldr r4, _0801E754 @ =gBattleStruct - ldr r4, [r4] - ldrb r4, [r4, 0x13] - str r4, [sp, 0x4] - str r7, [sp, 0x8] - str r5, [sp, 0xC] - bl CalculateBaseDamage - ldr r4, _0801E758 @ =gBattleMoveDamage - movs r1, 0 - strh r1, [r6] - ldr r1, _0801E75C @ =gCritMultiplier - ldrb r1, [r1] - muls r1, r0 - ldr r0, _0801E760 @ =gBattleScripting - ldrb r0, [r0, 0xE] - adds r3, r1, 0 - muls r3, r0 - str r3, [r4] - ldr r1, _0801E764 @ =gStatuses3 - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _0801E71A - ldr r2, _0801E768 @ =gBattleMoves - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0xD - bne _0801E71A - lsls r0, r3, 1 - str r0, [r4] -_0801E71A: - ldr r0, _0801E76C @ =gProtectStructs - lsls r1, r7, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 28 - cmp r0, 0 - bge _0801E738 - ldr r4, _0801E758 @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801E738: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801E744: .4byte gSideStatuses -_0801E748: .4byte gBattleMons -_0801E74C: .4byte gCurrentMove -_0801E750: .4byte gDynamicBasePower -_0801E754: .4byte gBattleStruct -_0801E758: .4byte gBattleMoveDamage -_0801E75C: .4byte gCritMultiplier -_0801E760: .4byte gBattleScripting -_0801E764: .4byte gStatuses3 -_0801E768: .4byte gBattleMoves -_0801E76C: .4byte gProtectStructs - thumb_func_end AI_CalcDmg - - thumb_func_start ModulateDmgByType -ModulateDmgByType: @ 801E770 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0801E7A0 @ =gBattleMoveDamage - ldr r0, [r5] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _0801E790 - cmp r4, 0 - beq _0801E790 - movs r0, 0x1 - str r0, [r5] -_0801E790: - cmp r4, 0x5 - beq _0801E7C0 - cmp r4, 0x5 - bgt _0801E7A4 - cmp r4, 0 - beq _0801E7AA - b _0801E842 - .align 2, 0 -_0801E7A0: .4byte gBattleMoveDamage -_0801E7A4: - cmp r4, 0x14 - beq _0801E800 - b _0801E842 -_0801E7AA: - ldr r2, _0801E7BC @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _0801E840 - .align 2, 0 -_0801E7BC: .4byte gMoveResultFlags -_0801E7C0: - ldr r2, _0801E7F0 @ =gBattleMoves - ldr r0, _0801E7F4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801E842 - ldr r2, _0801E7F8 @ =gMoveResultFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801E842 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801E7FC - movs r0, 0xFD - ands r0, r1 - b _0801E840 - .align 2, 0 -_0801E7F0: .4byte gBattleMoves -_0801E7F4: .4byte gCurrentMove -_0801E7F8: .4byte gMoveResultFlags -_0801E7FC: - movs r0, 0x4 - b _0801E83E -_0801E800: - ldr r2, _0801E830 @ =gBattleMoves - ldr r0, _0801E834 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801E842 - ldr r2, _0801E838 @ =gMoveResultFlags - ldrb r1, [r2] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801E842 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801E83C - movs r0, 0xFB - ands r0, r1 - b _0801E840 - .align 2, 0 -_0801E830: .4byte gBattleMoves -_0801E834: .4byte gCurrentMove -_0801E838: .4byte gMoveResultFlags -_0801E83C: - movs r0, 0x2 -_0801E83E: - orrs r0, r1 -_0801E840: - strb r0, [r2] -_0801E842: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ModulateDmgByType - - thumb_func_start atk06_typecalc -atk06_typecalc: @ 801E848 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0 - ldr r1, _0801E870 @ =gCurrentMove - ldrh r0, [r1] - cmp r0, 0xA5 - bne _0801E85C - b _0801EA70 -_0801E85C: - ldr r0, _0801E874 @ =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _0801E878 - movs r1, 0x3F - mov r8, r1 - ands r1, r0 - mov r8, r1 - b _0801E888 - .align 2, 0 -_0801E870: .4byte gCurrentMove -_0801E874: .4byte gBattleStruct -_0801E878: - ldr r2, _0801E910 @ =gBattleMoves - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 -_0801E888: - ldr r2, _0801E914 @ =gBattleMons - ldr r0, _0801E918 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, r8 - beq _0801E8AA - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r8 - bne _0801E8C0 -_0801E8AA: - ldr r4, _0801E91C @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - str r3, [sp, 0x4] - bl __divsi3 - str r0, [r4] - ldr r3, [sp, 0x4] -_0801E8C0: - ldr r2, _0801E920 @ =gBattlerTarget - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r2, 0 - cmp r0, 0x1A - bne _0801E938 - mov r1, r8 - cmp r1, 0x4 - bne _0801E938 - ldr r3, _0801E924 @ =gLastUsedAbility - strb r0, [r3] - ldr r2, _0801E928 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801E92C @ =gLastLandedMoves - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801E930 @ =gLastHitByType - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r0, _0801E934 @ =gBattleCommunication - mov r1, r8 - strb r1, [r0, 0x6] - ldrb r0, [r4] - ldrb r1, [r3] - bl RecordAbilityBattle - b _0801E9D4 - .align 2, 0 -_0801E910: .4byte gBattleMoves -_0801E914: .4byte gBattleMons -_0801E918: .4byte gBattlerAttacker -_0801E91C: .4byte gBattleMoveDamage -_0801E920: .4byte gBattlerTarget -_0801E924: .4byte gLastUsedAbility -_0801E928: .4byte gMoveResultFlags -_0801E92C: .4byte gLastLandedMoves -_0801E930: .4byte gLastHitByType -_0801E934: .4byte gBattleCommunication -_0801E938: - ldr r1, _0801E944 @ =gTypeEffectiveness - adds r0, r3, r1 - ldrb r0, [r0] - adds r2, r1, 0 - b _0801E9B4 - .align 2, 0 -_0801E944: .4byte gTypeEffectiveness -_0801E948: - adds r3, 0x3 - b _0801E9B0 -_0801E94C: - ldr r5, _0801EA84 @ =gTypeEffectiveness - adds r0, r3, r5 - ldrb r0, [r0] - cmp r0, r8 - bne _0801E9A8 - adds r1, r3, 0x1 - adds r1, r5 - ldr r2, _0801EA88 @ =gBattleMons - ldr r7, _0801EA8C @ =gBattlerTarget - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - adds r0, r2 - adds r0, 0x21 - ldrb r4, [r1] - ldrb r0, [r0] - cmp r4, r0 - bne _0801E982 - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r2, [sp] - str r3, [sp, 0x4] - bl ModulateDmgByType - ldr r3, [sp, 0x4] - ldr r2, [sp] -_0801E982: - ldrb r0, [r7] - muls r0, r6 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r4, r1 - bne _0801E9A8 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r4 - beq _0801E9A8 - adds r0, r3, 0x2 - adds r0, r5 - ldrb r0, [r0] - str r3, [sp, 0x4] - bl ModulateDmgByType - ldr r3, [sp, 0x4] -_0801E9A8: - adds r3, 0x3 - ldr r5, _0801EA88 @ =gBattleMons - ldr r4, _0801EA8C @ =gBattlerTarget - ldr r2, _0801EA84 @ =gTypeEffectiveness -_0801E9B0: - adds r0, r3, r2 - ldrb r0, [r0] -_0801E9B4: - cmp r0, 0xFF - beq _0801E9D4 - cmp r0, 0xFE - bne _0801E94C - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801E948 -_0801E9D4: - ldr r2, _0801EA88 @ =gBattleMons - ldr r5, _0801EA8C @ =gBattlerTarget - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _0801EA52 - ldr r0, _0801EA90 @ =gBattlerAttacker - ldrb r0, [r0] - ldr r7, _0801EA94 @ =gCurrentMove - ldrh r1, [r7] - bl AttacksThisTurn - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0801EA52 - ldr r1, _0801EA98 @ =gMoveResultFlags - mov r8, r1 - ldrb r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _0801EA10 - movs r0, 0x6 - ands r0, r4 - cmp r0, 0x6 - bne _0801EA52 -_0801EA10: - ldr r2, _0801EA9C @ =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801EA52 - ldr r3, _0801EAA0 @ =gLastUsedAbility - strb r6, [r3] - movs r0, 0x1 - orrs r0, r4 - mov r1, r8 - strb r0, [r1] - ldr r1, _0801EAA4 @ =gLastLandedMoves - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - strh r2, [r0] - ldr r1, _0801EAA8 @ =gLastHitByType - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - strh r2, [r0] - ldr r1, _0801EAAC @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r5] - ldrb r1, [r3] - bl RecordAbilityBattle -_0801EA52: - ldr r0, _0801EA98 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801EA70 - ldr r2, _0801EAB0 @ =gProtectStructs - ldr r0, _0801EA90 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_0801EA70: - ldr r1, _0801EAB4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801EA84: .4byte gTypeEffectiveness -_0801EA88: .4byte gBattleMons -_0801EA8C: .4byte gBattlerTarget -_0801EA90: .4byte gBattlerAttacker -_0801EA94: .4byte gCurrentMove -_0801EA98: .4byte gMoveResultFlags -_0801EA9C: .4byte gBattleMoves -_0801EAA0: .4byte gLastUsedAbility -_0801EAA4: .4byte gLastLandedMoves -_0801EAA8: .4byte gLastHitByType -_0801EAAC: .4byte gBattleCommunication -_0801EAB0: .4byte gProtectStructs -_0801EAB4: .4byte gBattlescriptCurrInstr - thumb_func_end atk06_typecalc - - thumb_func_start CheckWonderGuardAndLevitate -CheckWonderGuardAndLevitate: @ 801EAB8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r5, 0 - ldr r0, _0801EAF8 @ =gCurrentMove - ldrh r1, [r0] - mov r9, r0 - cmp r1, 0xA5 - bne _0801EAD0 - b _0801ED18 -_0801EAD0: - ldr r2, _0801EAFC @ =gBattleMoves - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0801EAE2 - b _0801ED18 -_0801EAE2: - ldr r0, _0801EB00 @ =gBattleStruct - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0 - beq _0801EB04 - movs r1, 0x3F - mov r12, r1 - mov r2, r12 - ands r2, r0 - mov r12, r2 - b _0801EB08 - .align 2, 0 -_0801EAF8: .4byte gCurrentMove -_0801EAFC: .4byte gBattleMoves -_0801EB00: .4byte gBattleStruct -_0801EB04: - ldrb r1, [r1, 0x2] - mov r12, r1 -_0801EB08: - ldr r2, _0801EB3C @ =gBattleMons - ldr r3, _0801EB40 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r1, [r0] - adds r7, r2, 0 - mov r8, r3 - cmp r1, 0x1A - bne _0801EB4C - mov r0, r12 - cmp r0, 0x4 - bne _0801EB4C - ldr r0, _0801EB44 @ =gLastUsedAbility - strb r1, [r0] - ldr r0, _0801EB48 @ =gBattleCommunication - mov r1, r12 - strb r1, [r0, 0x6] - ldrb r0, [r3] - movs r1, 0x1A - bl RecordAbilityBattle - b _0801ED18 - .align 2, 0 -_0801EB3C: .4byte gBattleMons -_0801EB40: .4byte gBattlerTarget -_0801EB44: .4byte gLastUsedAbility -_0801EB48: .4byte gBattleCommunication -_0801EB4C: - ldr r1, _0801EB58 @ =gTypeEffectiveness - adds r0, r5, r1 - ldrb r0, [r0] - adds r4, r1, 0 - b _0801EC9E - .align 2, 0 -_0801EB58: .4byte gTypeEffectiveness -_0801EB5C: - adds r0, r5, r4 - ldrb r0, [r0] - cmp r0, r12 - beq _0801EB66 - b _0801EC98 -_0801EB66: - adds r2, r5, 0x1 - adds r3, r2, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _0801EBA6 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0801EBA6 - ldr r2, _0801ED24 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801ED28 @ =gProtectStructs - ldr r0, _0801ED2C @ =gBattlerAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_0801EBA6: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801EBEC - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801EBEC - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0801EBEC - ldr r2, _0801ED24 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801ED28 @ =gProtectStructs - ldr r0, _0801ED2C @ =gBattlerAttacker - ldrb r2, [r0] - lsls r2, 4 - adds r2, r1 - ldrb r0, [r2, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1] -_0801EBEC: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _0801EC10 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0801EC10 - movs r0, 0x1 - orrs r6, r0 -_0801EC10: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801EC3E - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801EC3E - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x14 - bne _0801EC3E - movs r0, 0x1 - orrs r6, r0 -_0801EC3E: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x21 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _0801EC66 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0801EC66 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0801EC66: - adds r2, r3, r4 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _0801EC98 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _0801EC98 - adds r0, r5, 0x2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x5 - bne _0801EC98 - movs r0, 0x2 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0801EC98: - adds r5, 0x3 - adds r0, r5, r4 - ldrb r0, [r0] -_0801EC9E: - cmp r0, 0xFF - beq _0801ECC2 - cmp r0, 0xFE - beq _0801ECA8 - b _0801EB5C -_0801ECA8: - mov r2, r8 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801EC98 -_0801ECC2: - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r4, [r0] - cmp r4, 0x19 - bne _0801ED18 - ldr r0, _0801ED2C @ =gBattlerAttacker - ldrb r0, [r0] - mov r2, r9 - ldrh r1, [r2] - bl AttacksThisTurn - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0801ED18 - movs r0, 0x3 - ands r6, r0 - cmp r6, 0x1 - beq _0801ED18 - ldr r2, _0801ED30 @ =gBattleMoves - mov r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0801ED18 - ldr r0, _0801ED34 @ =gLastUsedAbility - strb r4, [r0] - ldr r1, _0801ED38 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x19 - bl RecordAbilityBattle -_0801ED18: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801ED24: .4byte gMoveResultFlags -_0801ED28: .4byte gProtectStructs -_0801ED2C: .4byte gBattlerAttacker -_0801ED30: .4byte gBattleMoves -_0801ED34: .4byte gLastUsedAbility -_0801ED38: .4byte gBattleCommunication - thumb_func_end CheckWonderGuardAndLevitate - - thumb_func_start ModulateDmgByType2 -ModulateDmgByType2: @ 801ED3C - push {r4-r7,lr} - adds r6, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r7, _0801ED70 @ =gBattleMoveDamage - ldr r0, [r7] - muls r0, r4 - movs r1, 0xA - bl __divsi3 - str r0, [r7] - cmp r0, 0 - bne _0801ED62 - cmp r4, 0 - beq _0801ED62 - movs r0, 0x1 - str r0, [r7] -_0801ED62: - cmp r4, 0x5 - beq _0801ED8A - cmp r4, 0x5 - bgt _0801ED74 - cmp r4, 0 - beq _0801ED7A - b _0801EDEE - .align 2, 0 -_0801ED70: .4byte gBattleMoveDamage -_0801ED74: - cmp r4, 0x14 - beq _0801EDBC - b _0801EDEE -_0801ED7A: - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0xFB - ands r0, r1 - movs r1, 0xFD - ands r0, r1 - b _0801EDEC -_0801ED8A: - ldr r0, _0801EDB4 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801EDEE - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801EDEE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801EDB8 - movs r0, 0xFD - ands r0, r1 - b _0801EDEC - .align 2, 0 -_0801EDB4: .4byte gBattleMoves -_0801EDB8: - movs r0, 0x4 - b _0801EDEA -_0801EDBC: - ldr r0, _0801EDE4 @ =gBattleMoves - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801EDEE - ldrb r1, [r6] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801EDEE - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801EDE8 - movs r0, 0xFB - ands r0, r1 - b _0801EDEC - .align 2, 0 -_0801EDE4: .4byte gBattleMoves -_0801EDE8: - movs r0, 0x2 -_0801EDEA: - orrs r0, r1 -_0801EDEC: - strb r0, [r6] -_0801EDEE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ModulateDmgByType2 - - thumb_func_start TypeCalc -TypeCalc: @ 801EDF4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - movs r0, 0 - mov r8, r0 - mov r0, sp - mov r1, r8 - strb r1, [r0] - mov r2, r10 - cmp r2, 0xA5 - bne _0801EE26 - movs r0, 0 - b _0801EFAE -_0801EE26: - ldr r1, _0801EE94 @ =gBattleMoves - mov r3, r10 - lsls r2, r3, 1 - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x8] - ldr r1, _0801EE98 @ =gBattleMons - movs r0, 0x58 - ldr r3, [sp, 0x4] - muls r0, r3 - adds r3, r0, r1 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - str r2, [sp, 0xC] - adds r5, r1, 0 - ldr r1, [sp, 0x8] - cmp r0, r1 - beq _0801EE5A - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _0801EE6C -_0801EE5A: - ldr r4, _0801EE9C @ =gBattleMoveDamage - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - str r0, [r4] - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0801EE6C: - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - bne _0801EEA0 - ldr r3, [sp, 0x8] - cmp r3, 0x4 - bne _0801EEA0 - movs r1, 0x9 - mov r0, sp - ldrb r0, [r0] - orrs r0, r1 - mov r1, sp - strb r0, [r1] - b _0801EF50 - .align 2, 0 -_0801EE94: .4byte gBattleMoves -_0801EE98: .4byte gBattleMons -_0801EE9C: .4byte gBattleMoveDamage -_0801EEA0: - ldr r1, _0801EEBC @ =gTypeEffectiveness - mov r2, r8 - adds r0, r2, r1 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xFF - beq _0801EF50 - cmp r0, 0xFE - bne _0801EEC6 - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - b _0801EF3E - .align 2, 0 -_0801EEBC: .4byte gTypeEffectiveness -_0801EEC0: - movs r0, 0x3 - add r8, r0 - b _0801EF28 -_0801EEC6: - ldr r7, _0801EFC0 @ =gTypeEffectiveness - mov r1, r8 - adds r0, r1, r7 - ldrb r0, [r0] - ldr r2, [sp, 0x8] - cmp r0, r2 - bne _0801EF20 - adds r1, 0x1 - adds r1, r7 - ldr r2, _0801EFC4 @ =gBattleMons - movs r0, 0x58 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r5, r0, r2 - adds r6, r5, 0 - adds r6, 0x21 - ldrb r4, [r1] - ldrb r0, [r6] - cmp r4, r0 - bne _0801EF00 - mov r0, r8 - adds r0, 0x2 - adds r0, r7 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - bl ModulateDmgByType2 -_0801EF00: - adds r0, r5, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r4, r0 - bne _0801EF20 - ldrb r0, [r6] - cmp r0, r4 - beq _0801EF20 - mov r0, r8 - adds r0, 0x2 - adds r0, r7 - ldrb r0, [r0] - mov r1, r10 - mov r2, sp - bl ModulateDmgByType2 -_0801EF20: - movs r1, 0x3 - add r8, r1 - ldr r5, _0801EFC4 @ =gBattleMons - ldr r2, _0801EFC0 @ =gTypeEffectiveness -_0801EF28: - mov r3, r8 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _0801EF50 - cmp r0, 0xFE - bne _0801EEC6 - movs r0, 0x58 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 -_0801EF3E: - adds r1, r5, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _0801EEC0 -_0801EF50: - movs r0, 0x58 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x19 - bne _0801EFAA - mov r0, sp - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801EFAA - ldr r0, [sp, 0x4] - mov r1, r10 - bl AttacksThisTurn - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _0801EFAA - mov r0, sp - ldrb r3, [r0] - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0801EF92 - movs r0, 0x6 - ands r0, r3 - cmp r0, 0x6 - bne _0801EFAA -_0801EF92: - ldr r0, _0801EFC8 @ =gBattleMoves - ldr r1, [sp, 0xC] - add r1, r10 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801EFAA - mov r0, sp - movs r1, 0x1 - orrs r1, r3 - strb r1, [r0] -_0801EFAA: - mov r0, sp - ldrb r0, [r0] -_0801EFAE: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801EFC0: .4byte gTypeEffectiveness -_0801EFC4: .4byte gBattleMons -_0801EFC8: .4byte gBattleMoves - thumb_func_end TypeCalc - - thumb_func_start AI_TypeCalc -AI_TypeCalc: @ 801EFCC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r7, 0 - mov r0, sp - strb r7, [r0] - ldr r2, _0801F008 @ =gBaseStats - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - mov r9, r1 - ldrb r0, [r0, 0x7] - mov r8, r0 - cmp r6, 0xA5 - bne _0801F00C - movs r0, 0 - b _0801F0B0 - .align 2, 0 -_0801F008: .4byte gBaseStats -_0801F00C: - ldr r2, _0801F030 @ =gBattleMoves - lsls r1, r6, 1 - adds r0, r1, r6 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r10, r0 - str r1, [sp, 0x8] - ldr r3, [sp, 0x4] - cmp r3, 0x1A - bne _0801F034 - cmp r0, 0x4 - bne _0801F034 - movs r1, 0x9 - mov r0, sp - strb r1, [r0] - b _0801F07A - .align 2, 0 -_0801F030: .4byte gBattleMoves -_0801F034: - ldr r0, _0801F0C0 @ =gTypeEffectiveness - adds r1, r7, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0801F07A - adds r4, r1, 0 -_0801F040: - ldrb r0, [r4] - cmp r0, 0xFE - beq _0801F06C - cmp r0, r10 - bne _0801F06C - ldrb r5, [r4, 0x1] - cmp r5, r9 - bne _0801F05A - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl ModulateDmgByType2 -_0801F05A: - cmp r5, r8 - bne _0801F06C - cmp r9, r8 - beq _0801F06C - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - mov r2, sp - bl ModulateDmgByType2 -_0801F06C: - adds r4, 0x3 - adds r7, 0x3 - ldr r1, _0801F0C0 @ =gTypeEffectiveness - adds r0, r7, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0801F040 -_0801F07A: - ldr r3, [sp, 0x4] - cmp r3, 0x19 - bne _0801F0AC - mov r0, sp - ldrb r2, [r0] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0801F094 - movs r0, 0x6 - ands r0, r2 - cmp r0, 0x6 - bne _0801F0AC -_0801F094: - ldr r0, _0801F0C4 @ =gBattleMoves - ldr r3, [sp, 0x8] - adds r1, r3, r6 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _0801F0AC - mov r0, sp - movs r1, 0x8 - orrs r1, r2 - strb r1, [r0] -_0801F0AC: - mov r0, sp - ldrb r0, [r0] -_0801F0B0: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801F0C0: .4byte gTypeEffectiveness -_0801F0C4: .4byte gBattleMoves - thumb_func_end AI_TypeCalc - - thumb_func_start Unused_ApplyRandomDmgMultiplier -Unused_ApplyRandomDmgMultiplier: @ 801F0C8 - push {r4,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801F100 @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801F0FA - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801F0FA - movs r0, 0x1 - str r0, [r4] -_0801F0FA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801F100: .4byte gBattleMoveDamage - thumb_func_end Unused_ApplyRandomDmgMultiplier - - thumb_func_start atk07_adjustnormaldamage -atk07_adjustnormaldamage: @ 801F104 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801F15C @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801F136 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801F136 - movs r0, 0x1 - str r0, [r4] -_0801F136: - ldr r7, _0801F160 @ =gBattleMons - ldr r6, _0801F164 @ =gBattlerTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801F16C - ldr r1, _0801F168 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0801F186 - .align 2, 0 -_0801F15C: .4byte gBattleMoveDamage -_0801F160: .4byte gBattleMons -_0801F164: .4byte gBattlerTarget -_0801F168: .4byte gEnigmaBerries -_0801F16C: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0801F186: - ldr r1, _0801F248 @ =gPotentialItemEffectBattler - ldr r5, _0801F24C @ =gBattlerTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0801F1C4 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0801F1C4 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, _0801F250 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0801F1C4: - ldr r2, _0801F254 @ =gBattleMons - ldr r3, _0801F24C @ =gBattlerTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _0801F294 - ldr r2, _0801F258 @ =gBattleMoves - ldr r0, _0801F25C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _0801F216 - ldr r0, _0801F260 @ =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _0801F216 - ldr r0, _0801F250 @ =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801F294 -_0801F216: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, _0801F264 @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0801F294 - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, _0801F260 @ =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0801F26C - ldr r0, _0801F268 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0801F294 - .align 2, 0 -_0801F248: .4byte gPotentialItemEffectBattler -_0801F24C: .4byte gBattlerTarget -_0801F250: .4byte gSpecialStatuses -_0801F254: .4byte gBattleMons -_0801F258: .4byte gBattleMoves -_0801F25C: .4byte gCurrentMove -_0801F260: .4byte gProtectStructs -_0801F264: .4byte gBattleMoveDamage -_0801F268: .4byte gMoveResultFlags -_0801F26C: - ldr r0, _0801F2A4 @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801F294 - ldr r2, _0801F2A8 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801F2AC @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0801F294: - ldr r1, _0801F2B0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801F2A4: .4byte gSpecialStatuses -_0801F2A8: .4byte gMoveResultFlags -_0801F2AC: .4byte gLastUsedItem -_0801F2B0: .4byte gBattlescriptCurrInstr - thumb_func_end atk07_adjustnormaldamage - - thumb_func_start atk08_adjustnormaldamage2 -atk08_adjustnormaldamage2: @ 801F2B4 - push {r4-r7,lr} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - movs r1, 0x64 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0801F30C @ =gBattleMoveDamage - ldr r0, [r4] - cmp r0, 0 - beq _0801F2E6 - muls r0, r1 - str r0, [r4] - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _0801F2E6 - movs r0, 0x1 - str r0, [r4] -_0801F2E6: - ldr r7, _0801F310 @ =gBattleMons - ldr r6, _0801F314 @ =gBattlerTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _0801F31C - ldr r1, _0801F318 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0801F336 - .align 2, 0 -_0801F30C: .4byte gBattleMoveDamage -_0801F310: .4byte gBattleMons -_0801F314: .4byte gBattlerTarget -_0801F318: .4byte gEnigmaBerries -_0801F31C: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0801F336: - ldr r1, _0801F3DC @ =gPotentialItemEffectBattler - ldr r5, _0801F3E0 @ =gBattlerTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0801F374 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0801F374 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, _0801F3E4 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0801F374: - ldr r4, _0801F3E8 @ =gBattleMons - ldr r6, _0801F3E0 @ =gBattlerTarget - ldrb r2, [r6] - movs r7, 0x58 - adds r3, r2, 0 - muls r3, r7 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _0801F420 - ldr r5, _0801F3EC @ =gProtectStructs - lsls r0, r2, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - blt _0801F3B2 - ldr r0, _0801F3E4 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801F420 -_0801F3B2: - adds r0, r3, r4 - ldrh r1, [r0, 0x28] - ldr r2, _0801F3F0 @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0801F420 - subs r0, r1, 0x1 - str r0, [r2] - ldrb r3, [r6] - lsls r0, r3, 4 - adds r0, r5 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _0801F3F8 - ldr r0, _0801F3F4 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0801F420 - .align 2, 0 -_0801F3DC: .4byte gPotentialItemEffectBattler -_0801F3E0: .4byte gBattlerTarget -_0801F3E4: .4byte gSpecialStatuses -_0801F3E8: .4byte gBattleMons -_0801F3EC: .4byte gProtectStructs -_0801F3F0: .4byte gBattleMoveDamage -_0801F3F4: .4byte gMoveResultFlags -_0801F3F8: - ldr r0, _0801F430 @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0801F420 - ldr r2, _0801F434 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0801F438 @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r7 - adds r0, r4 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0801F420: - ldr r1, _0801F43C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801F430: .4byte gSpecialStatuses -_0801F434: .4byte gMoveResultFlags -_0801F438: .4byte gLastUsedItem -_0801F43C: .4byte gBattlescriptCurrInstr - thumb_func_end atk08_adjustnormaldamage2 - - thumb_func_start atk09_attackanimation -atk09_attackanimation: @ 801F440 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - ldr r0, _0801F488 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0801F452 - b _0801F572 -_0801F452: - ldr r0, _0801F48C @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - ldr r3, _0801F490 @ =gCurrentMove - cmp r0, 0 - beq _0801F4A0 - ldrh r0, [r3] - cmp r0, 0x90 - beq _0801F4A0 - cmp r0, 0xA4 - beq _0801F4A0 - ldr r4, _0801F494 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _0801F498 @ =BattleScript_Pausex20 - str r0, [r4] - ldr r1, _0801F49C @ =gBattleScripting - ldrb r0, [r1, 0x18] - adds r0, 0x1 - strb r0, [r1, 0x18] - ldrb r0, [r1, 0x19] - adds r0, 0x1 - strb r0, [r1, 0x19] - b _0801F572 - .align 2, 0 -_0801F488: .4byte gBattleControllerExecFlags -_0801F48C: .4byte gHitMarker -_0801F490: .4byte gCurrentMove -_0801F494: .4byte gBattlescriptCurrInstr -_0801F498: .4byte BattleScript_Pausex20 -_0801F49C: .4byte gBattleScripting -_0801F4A0: - ldr r2, _0801F53C @ =gBattleMoves - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x6] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0801F4C6 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0801F4C6 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0801F4CE -_0801F4C6: - ldr r0, _0801F540 @ =gBattleScripting - ldrb r0, [r0, 0x19] - cmp r0, 0 - bne _0801F530 -_0801F4CE: - ldr r0, _0801F544 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801F564 - ldr r1, _0801F548 @ =gActiveBattler - ldr r0, _0801F54C @ =gBattlerAttacker - mov r8, r0 - ldrb r0, [r0] - strb r0, [r1] - ldrh r1, [r3] - ldr r6, _0801F540 @ =gBattleScripting - ldrb r2, [r6, 0x18] - ldr r0, _0801F550 @ =gBattleMovePower - ldrh r3, [r0] - ldr r0, _0801F554 @ =gBattleMoveDamage - ldr r0, [r0] - str r0, [sp] - ldr r5, _0801F558 @ =gBattleMons - mov r0, r8 - ldrb r4, [r0] - movs r0, 0x58 - muls r0, r4 - adds r0, r5 - adds r0, 0x2B - ldrb r0, [r0] - str r0, [sp, 0x4] - mov r0, r8 - ldrb r4, [r0] - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r4, _0801F55C @ =gDisableStructs - adds r0, r4 - str r0, [sp, 0x8] - movs r0, 0 - bl BtlController_EmitMoveAnimation - ldrb r0, [r6, 0x18] - adds r0, 0x1 - strb r0, [r6, 0x18] - ldrb r0, [r6, 0x19] - adds r0, 0x1 - strb r0, [r6, 0x19] - mov r1, r8 - ldrb r0, [r1] - bl MarkBattlerForControllerExec -_0801F530: - ldr r1, _0801F560 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0801F572 - .align 2, 0 -_0801F53C: .4byte gBattleMoves -_0801F540: .4byte gBattleScripting -_0801F544: .4byte gMoveResultFlags -_0801F548: .4byte gActiveBattler -_0801F54C: .4byte gBattlerAttacker -_0801F550: .4byte gBattleMovePower -_0801F554: .4byte gBattleMoveDamage -_0801F558: .4byte gBattleMons -_0801F55C: .4byte gDisableStructs -_0801F560: .4byte gBattlescriptCurrInstr -_0801F564: - ldr r4, _0801F580 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _0801F584 @ =BattleScript_Pausex20 - str r0, [r4] -_0801F572: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801F580: .4byte gBattlescriptCurrInstr -_0801F584: .4byte BattleScript_Pausex20 - thumb_func_end atk09_attackanimation - - thumb_func_start atk0A_waitanimation -atk0A_waitanimation: @ 801F588 - push {lr} - ldr r0, _0801F5A0 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801F59A - ldr r1, _0801F5A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801F59A: - pop {r0} - bx r0 - .align 2, 0 -_0801F5A0: .4byte gBattleControllerExecFlags -_0801F5A4: .4byte gBattlescriptCurrInstr - thumb_func_end atk0A_waitanimation - - thumb_func_start atk0B_healthbarupdate -atk0B_healthbarupdate: @ 801F5A8 - push {r4,lr} - ldr r0, _0801F60C @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801F66A - ldr r0, _0801F610 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801F662 - ldr r0, _0801F614 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r2, _0801F618 @ =gActiveBattler - strb r0, [r2] - ldr r1, _0801F61C @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0801F628 - ldr r0, _0801F620 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - beq _0801F628 - ldr r0, _0801F624 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - bne _0801F628 - movs r0, 0x80 - adds r1, r2, 0 - bl PrepareStringBattle - b _0801F662 - .align 2, 0 -_0801F60C: .4byte gBattleControllerExecFlags -_0801F610: .4byte gMoveResultFlags -_0801F614: .4byte gBattlescriptCurrInstr -_0801F618: .4byte gActiveBattler -_0801F61C: .4byte gBattleMons -_0801F620: .4byte gDisableStructs -_0801F624: .4byte gHitMarker -_0801F628: - ldr r0, _0801F670 @ =gBattleMoveDamage - ldr r0, [r0] - ldr r1, _0801F674 @ =0x00002710 - cmp r0, r1 - bgt _0801F636 - lsls r0, 16 - lsrs r1, r0, 16 -_0801F636: - movs r0, 0 - bl BtlController_EmitHealthBarUpdate - ldr r4, _0801F678 @ =gActiveBattler - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0801F662 - ldr r0, _0801F670 @ =gBattleMoveDamage - ldr r0, [r0] - cmp r0, 0 - ble _0801F662 - ldr r0, _0801F67C @ =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x5] -_0801F662: - ldr r1, _0801F680 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0801F66A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801F670: .4byte gBattleMoveDamage -_0801F674: .4byte 0x00002710 -_0801F678: .4byte gActiveBattler -_0801F67C: .4byte gBattleResults -_0801F680: .4byte gBattlescriptCurrInstr - thumb_func_end atk0B_healthbarupdate - - thumb_func_start atk0C_datahpupdate -atk0C_datahpupdate: @ 801F684 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _0801F6AC @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0801F692 - b _0801FA62 -_0801F692: - ldr r0, _0801F6B0 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x13] - cmp r1, 0 - beq _0801F6B4 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0801F6B4 - movs r6, 0x3F - ands r6, r1 - b _0801F6C4 - .align 2, 0 -_0801F6AC: .4byte gBattleControllerExecFlags -_0801F6B0: .4byte gBattleStruct -_0801F6B4: - ldr r2, _0801F750 @ =gBattleMoves - ldr r0, _0801F754 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r6, [r0, 0x2] -_0801F6C4: - ldr r0, _0801F758 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0801F6D2 - b _0801FA34 -_0801F6D2: - ldr r0, _0801F75C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r7, _0801F760 @ =gActiveBattler - strb r0, [r7] - ldr r1, _0801F764 @ =gBattleMons - ldrb r2, [r7] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0801F7E8 - ldr r0, _0801F768 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r4, r1, r0 - ldrb r1, [r4, 0xA] - mov r12, r0 - cmp r1, 0 - beq _0801F7E8 - ldr r0, _0801F76C @ =gHitMarker - ldr r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r3, r0 - cmp r3, 0 - bne _0801F7E8 - adds r5, r1, 0 - ldr r6, _0801F770 @ =gBattleMoveDamage - ldr r4, [r6] - cmp r5, r4 - blt _0801F77C - ldr r0, _0801F774 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _0801F736 - str r4, [r1] -_0801F736: - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r12 - ldr r2, [r6] - ldrb r0, [r1, 0xA] - subs r0, r2 - strb r0, [r1, 0xA] - ldr r1, _0801F778 @ =gHpDealt - ldr r0, [r6] - str r0, [r1] - b _0801F7AC - .align 2, 0 -_0801F750: .4byte gBattleMoves -_0801F754: .4byte gCurrentMove -_0801F758: .4byte gMoveResultFlags -_0801F75C: .4byte gBattlescriptCurrInstr -_0801F760: .4byte gActiveBattler -_0801F764: .4byte gBattleMons -_0801F768: .4byte gDisableStructs -_0801F76C: .4byte gHitMarker -_0801F770: .4byte gBattleMoveDamage -_0801F774: .4byte gSpecialStatuses -_0801F778: .4byte gHpDealt -_0801F77C: - ldr r0, _0801F7D4 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _0801F790 - str r5, [r1] -_0801F790: - ldr r2, _0801F7D8 @ =gHpDealt - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - str r0, [r2] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - strb r3, [r0, 0xA] -_0801F7AC: - ldr r0, _0801F7DC @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _0801F7C0 - b _0801FA5A -_0801F7C0: - ldr r4, _0801F7E0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - bl BattleScriptPushCursor - ldr r0, _0801F7E4 @ =BattleScript_SubstituteFade - str r0, [r4] - b _0801FA62 - .align 2, 0 -_0801F7D4: .4byte gSpecialStatuses -_0801F7D8: .4byte gHpDealt -_0801F7DC: .4byte gActiveBattler -_0801F7E0: .4byte gBattlescriptCurrInstr -_0801F7E4: .4byte BattleScript_SubstituteFade -_0801F7E8: - ldr r0, _0801F828 @ =gHitMarker - ldr r2, [r0] - ldr r1, _0801F82C @ =0xfffffeff - ands r2, r1 - str r2, [r0] - ldr r1, _0801F830 @ =gBattleMoveDamage - ldr r5, [r1] - mov r12, r0 - adds r7, r1, 0 - cmp r5, 0 - bge _0801F83C - ldr r4, _0801F834 @ =gBattleMons - ldr r2, _0801F838 @ =gActiveBattler - ldrb r0, [r2] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - adds r1, r4 - ldrh r0, [r1, 0x28] - subs r0, r5 - strh r0, [r1, 0x28] - ldrb r0, [r2] - muls r0, r3 - adds r1, r0, r4 - ldrh r3, [r1, 0x2C] - ldrh r0, [r1, 0x28] - adds r5, r2, 0 - cmp r0, r3 - bhi _0801F824 - b _0801F9FA -_0801F824: - strh r3, [r1, 0x28] - b _0801F9FA - .align 2, 0 -_0801F828: .4byte gHitMarker -_0801F82C: .4byte 0xfffffeff -_0801F830: .4byte gBattleMoveDamage -_0801F834: .4byte gBattleMons -_0801F838: .4byte gActiveBattler -_0801F83C: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _0801F858 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - mov r0, r12 - str r2, [r0] - ldr r5, _0801F854 @ =gActiveBattler - b _0801F8A0 - .align 2, 0 -_0801F854: .4byte gActiveBattler -_0801F858: - ldr r0, _0801F880 @ =gTakenDmg - ldr r2, _0801F884 @ =gActiveBattler - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - adds r0, r5 - str r0, [r1] - ldr r0, _0801F888 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - adds r5, r2, 0 - cmp r0, 0 - bne _0801F894 - ldr r1, _0801F88C @ =gTakenDmgByBattler - ldrb r0, [r5] - adds r0, r1 - ldr r1, _0801F890 @ =gBattlerAttacker - b _0801F89C - .align 2, 0 -_0801F880: .4byte gTakenDmg -_0801F884: .4byte gActiveBattler -_0801F888: .4byte gBattlescriptCurrInstr -_0801F88C: .4byte gTakenDmgByBattler -_0801F890: .4byte gBattlerAttacker -_0801F894: - ldr r1, _0801F8C0 @ =gTakenDmgByBattler - ldrb r0, [r5] - adds r0, r1 - ldr r1, _0801F8C4 @ =gBattlerTarget -_0801F89C: - ldrb r1, [r1] - strb r1, [r0] -_0801F8A0: - ldr r4, _0801F8C8 @ =gBattleMons - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r4 - ldrh r0, [r2, 0x28] - ldr r1, [r7] - cmp r0, r1 - ble _0801F8D0 - subs r0, r1 - strh r0, [r2, 0x28] - ldr r0, _0801F8CC @ =gHpDealt - str r1, [r0] - adds r7, r0, 0 - b _0801F8E0 - .align 2, 0 -_0801F8C0: .4byte gTakenDmgByBattler -_0801F8C4: .4byte gBattlerTarget -_0801F8C8: .4byte gBattleMons -_0801F8CC: .4byte gHpDealt -_0801F8D0: - ldr r2, _0801F954 @ =gHpDealt - str r0, [r2] - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - movs r1, 0 - strh r1, [r0, 0x28] - adds r7, r2, 0 -_0801F8E0: - ldr r2, _0801F958 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0x4 - adds r3, r0, r1 - ldr r0, [r3] - adds r4, r2, 0 - cmp r0, 0 - bne _0801F908 - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801F908 - ldr r0, [r7] - str r0, [r3] -_0801F908: - cmp r6, 0x8 - bhi _0801F990 - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801F98C - ldr r0, _0801F95C @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xDC - beq _0801F98C - ldr r3, _0801F960 @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0x4 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r1 - str r2, [r0] - ldr r0, _0801F964 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0801F96C - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801F968 @ =gBattlerAttacker - b _0801F974 - .align 2, 0 -_0801F954: .4byte gHpDealt -_0801F958: .4byte gSpecialStatuses -_0801F95C: .4byte gCurrentMove -_0801F960: .4byte gProtectStructs -_0801F964: .4byte gBattlescriptCurrInstr -_0801F968: .4byte gBattlerAttacker -_0801F96C: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801F988 @ =gBattlerTarget -_0801F974: - ldrb r1, [r2] - strb r1, [r0, 0xC] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x10] - b _0801F9FA - .align 2, 0 -_0801F988: .4byte gBattlerTarget -_0801F98C: - cmp r6, 0x8 - bls _0801F9FA -_0801F990: - mov r1, r12 - ldr r0, [r1] - movs r1, 0x80 - lsls r1, 13 - ands r0, r1 - cmp r0, 0 - bne _0801F9FA - ldr r3, _0801F9D4 @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r2, [r7] - str r2, [r0] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - str r2, [r0] - ldr r0, _0801F9D8 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0801F9E0 - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801F9DC @ =gBattlerAttacker - b _0801F9E8 - .align 2, 0 -_0801F9D4: .4byte gProtectStructs -_0801F9D8: .4byte gBattlescriptCurrInstr -_0801F9DC: .4byte gBattlerAttacker -_0801F9E0: - ldrb r0, [r5] - lsls r0, 4 - adds r0, r3 - ldr r2, _0801FA28 @ =gBattlerTarget -_0801F9E8: - ldrb r1, [r2] - strb r1, [r0, 0xD] - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r2] - strb r1, [r0, 0x11] -_0801F9FA: - mov r1, r12 - ldr r0, [r1] - ldr r1, _0801FA2C @ =0xffefffff - ands r0, r1 - mov r1, r12 - str r0, [r1] - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - ldr r1, _0801FA30 @ =gUnknown_2023C0C - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r5] - bl MarkBattlerForControllerExec - b _0801FA5A - .align 2, 0 -_0801FA28: .4byte gBattlerTarget -_0801FA2C: .4byte 0xffefffff -_0801FA30: .4byte gUnknown_2023C0C -_0801FA34: - ldr r0, _0801FA6C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _0801FA70 @ =gActiveBattler - strb r0, [r1] - ldr r2, _0801FA74 @ =gSpecialStatuses - ldrb r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r1, r0, r2 - ldr r0, [r1] - cmp r0, 0 - bne _0801FA5A - ldr r0, _0801FA78 @ =0x0000ffff - str r0, [r1] -_0801FA5A: - ldr r1, _0801FA6C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_0801FA62: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801FA6C: .4byte gBattlescriptCurrInstr -_0801FA70: .4byte gActiveBattler -_0801FA74: .4byte gSpecialStatuses -_0801FA78: .4byte 0x0000ffff - thumb_func_end atk0C_datahpupdate - - thumb_func_start atk0D_critmessage -atk0D_critmessage: @ 801FA7C - push {lr} - ldr r0, _0801FAB8 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801FAB2 - ldr r0, _0801FABC @ =gCritMultiplier - ldrb r0, [r0] - cmp r0, 0x2 - bne _0801FAAA - ldr r0, _0801FAC0 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _0801FAAA - ldr r0, _0801FAC4 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0xD9 - bl PrepareStringBattle - ldr r1, _0801FAC8 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_0801FAAA: - ldr r1, _0801FACC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801FAB2: - pop {r0} - bx r0 - .align 2, 0 -_0801FAB8: .4byte gBattleControllerExecFlags -_0801FABC: .4byte gCritMultiplier -_0801FAC0: .4byte gMoveResultFlags -_0801FAC4: .4byte gBattlerAttacker -_0801FAC8: .4byte gBattleCommunication -_0801FACC: .4byte gBattlescriptCurrInstr - thumb_func_end atk0D_critmessage - - thumb_func_start atk0E_effectivenesssound -atk0E_effectivenesssound: @ 801FAD0 - push {r4,lr} - ldr r0, _0801FB08 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801FB90 - ldr r4, _0801FB0C @ =gActiveBattler - ldr r0, _0801FB10 @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _0801FB14 @ =gMoveResultFlags - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0801FB88 - movs r0, 0xFE - ands r0, r2 - cmp r0, 0x10 - beq _0801FB42 - cmp r0, 0x10 - bgt _0801FB1E - cmp r0, 0x4 - beq _0801FB32 - cmp r0, 0x4 - bgt _0801FB18 - cmp r0, 0x2 - beq _0801FB2C - b _0801FB42 - .align 2, 0 -_0801FB08: .4byte gBattleControllerExecFlags -_0801FB0C: .4byte gActiveBattler -_0801FB10: .4byte gBattlerTarget -_0801FB14: .4byte gMoveResultFlags -_0801FB18: - cmp r0, 0x8 - beq _0801FB88 - b _0801FB42 -_0801FB1E: - cmp r0, 0x40 - beq _0801FB42 - cmp r0, 0x40 - bgt _0801FB42 - cmp r0, 0x20 - beq _0801FB88 - b _0801FB42 -_0801FB2C: - movs r0, 0 - movs r1, 0xE - b _0801FB36 -_0801FB32: - movs r0, 0 - movs r1, 0xC -_0801FB36: - bl BtlController_EmitPlaySE - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0801FB88 -_0801FB42: - ldrb r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801FB52 - movs r0, 0 - movs r1, 0xE - b _0801FB5E -_0801FB52: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801FB70 - movs r0, 0 - movs r1, 0xC -_0801FB5E: - bl BtlController_EmitPlaySE - ldr r0, _0801FB6C @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - b _0801FB88 - .align 2, 0 -_0801FB6C: .4byte gActiveBattler -_0801FB70: - movs r0, 0x28 - ands r0, r1 - cmp r0, 0 - bne _0801FB88 - movs r0, 0 - movs r1, 0xD - bl BtlController_EmitPlaySE - ldr r0, _0801FB98 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec -_0801FB88: - ldr r1, _0801FB9C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0801FB90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801FB98: .4byte gActiveBattler -_0801FB9C: .4byte gBattlescriptCurrInstr - thumb_func_end atk0E_effectivenesssound - - thumb_func_start atk0F_resultmessage -atk0F_resultmessage: @ 801FBA0 - push {r4-r7,lr} - movs r3, 0 - ldr r0, _0801FBDC @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0801FBAE - b _0801FD40 -_0801FBAE: - ldr r1, _0801FBE0 @ =gMoveResultFlags - ldrb r2, [r1] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r2 - adds r6, r1, 0 - ldr r7, _0801FBE4 @ =gBattleCommunication - cmp r0, 0 - beq _0801FBEC - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _0801FBCE - ldrb r0, [r7, 0x6] - cmp r0, 0x2 - bls _0801FBEC -_0801FBCE: - ldr r1, _0801FBE8 @ =gMissStringIds - ldrb r0, [r7, 0x6] - lsls r0, 1 - adds r0, r1 - ldrh r3, [r0] - strb r4, [r7, 0x7] - b _0801FD2A - .align 2, 0 -_0801FBDC: .4byte gBattleControllerExecFlags -_0801FBE0: .4byte gMoveResultFlags -_0801FBE4: .4byte gBattleCommunication -_0801FBE8: .4byte gMissStringIds -_0801FBEC: - movs r0, 0x1 - strb r0, [r7, 0x7] - ldrb r5, [r6] - movs r0, 0xFE - ands r0, r5 - cmp r0, 0x10 - beq _0801FC30 - cmp r0, 0x10 - bgt _0801FC12 - cmp r0, 0x4 - beq _0801FC2C - cmp r0, 0x4 - bgt _0801FC0C - cmp r0, 0x2 - beq _0801FC28 - b _0801FC78 -_0801FC0C: - cmp r0, 0x8 - beq _0801FC84 - b _0801FC78 -_0801FC12: - cmp r0, 0x40 - beq _0801FC34 - cmp r0, 0x40 - bgt _0801FC22 - cmp r0, 0x20 - bne _0801FC20 - b _0801FD24 -_0801FC20: - b _0801FC78 -_0801FC22: - cmp r0, 0x80 - beq _0801FC38 - b _0801FC78 -_0801FC28: - movs r3, 0xDE - b _0801FD2E -_0801FC2C: - movs r3, 0xDD - b _0801FD2E -_0801FC30: - movs r3, 0xDA - b _0801FD2E -_0801FC34: - movs r3, 0x99 - b _0801FD2E -_0801FC38: - ldr r4, _0801FC60 @ =gLastUsedItem - ldr r2, _0801FC64 @ =gBattleMons - ldr r3, _0801FC68 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, _0801FC6C @ =gPotentialItemEffectBattler - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl BattleScriptPushCursor - ldr r1, _0801FC70 @ =gBattlescriptCurrInstr - ldr r0, _0801FC74 @ =BattleScript_HangedOnMsg - b _0801FD3E - .align 2, 0 -_0801FC60: .4byte gLastUsedItem -_0801FC64: .4byte gBattleMons -_0801FC68: .4byte gBattlerTarget -_0801FC6C: .4byte gPotentialItemEffectBattler -_0801FC70: .4byte gBattlescriptCurrInstr -_0801FC74: .4byte BattleScript_HangedOnMsg -_0801FC78: - adds r2, r6, 0 - ldrb r5, [r2] - movs r0, 0x8 - ands r0, r5 - cmp r0, 0 - beq _0801FC88 -_0801FC84: - movs r3, 0x1B - b _0801FD2E -_0801FC88: - movs r0, 0x10 - ands r0, r5 - cmp r0, 0 - beq _0801FCB0 - movs r0, 0xEF - ands r0, r5 - movs r1, 0xFD - ands r0, r1 - movs r1, 0xFB - ands r0, r1 - strb r0, [r2] - bl BattleScriptPushCursor - ldr r1, _0801FCA8 @ =gBattlescriptCurrInstr - ldr r0, _0801FCAC @ =BattleScript_OneHitKOMsg - b _0801FD3E - .align 2, 0 -_0801FCA8: .4byte gBattlescriptCurrInstr -_0801FCAC: .4byte BattleScript_OneHitKOMsg -_0801FCB0: - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _0801FCD0 - movs r0, 0x3F - ands r0, r5 - strb r0, [r2] - bl BattleScriptPushCursor - ldr r1, _0801FCC8 @ =gBattlescriptCurrInstr - ldr r0, _0801FCCC @ =BattleScript_EnduredMsg - b _0801FD3E - .align 2, 0 -_0801FCC8: .4byte gBattlescriptCurrInstr -_0801FCCC: .4byte BattleScript_EnduredMsg -_0801FCD0: - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _0801FD18 - ldr r4, _0801FD00 @ =gLastUsedItem - ldr r2, _0801FD04 @ =gBattleMons - ldr r3, _0801FD08 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r4] - ldr r1, _0801FD0C @ =gPotentialItemEffectBattler - ldrb r0, [r3] - strb r0, [r1] - movs r0, 0x3F - ands r0, r5 - strb r0, [r6] - bl BattleScriptPushCursor - ldr r1, _0801FD10 @ =gBattlescriptCurrInstr - ldr r0, _0801FD14 @ =BattleScript_HangedOnMsg - b _0801FD3E - .align 2, 0 -_0801FD00: .4byte gLastUsedItem -_0801FD04: .4byte gBattleMons -_0801FD08: .4byte gBattlerTarget -_0801FD0C: .4byte gPotentialItemEffectBattler -_0801FD10: .4byte gBattlescriptCurrInstr -_0801FD14: .4byte BattleScript_HangedOnMsg -_0801FD18: - movs r0, 0x20 - ands r0, r5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0801FD28 -_0801FD24: - movs r3, 0xE5 - b _0801FD2E -_0801FD28: - strb r0, [r7, 0x7] -_0801FD2A: - cmp r3, 0 - beq _0801FD38 -_0801FD2E: - adds r0, r3, 0 - ldr r1, _0801FD48 @ =gBattlerAttacker - ldrb r1, [r1] - bl PrepareStringBattle -_0801FD38: - ldr r1, _0801FD4C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0801FD3E: - str r0, [r1] -_0801FD40: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801FD48: .4byte gBattlerAttacker -_0801FD4C: .4byte gBattlescriptCurrInstr - thumb_func_end atk0F_resultmessage - - thumb_func_start atk10_printstring -atk10_printstring: @ 801FD50 - push {r4,lr} - ldr r0, _0801FD80 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801FD7A - ldr r4, _0801FD84 @ =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r0, [r1, 0x1] - ldrb r1, [r1, 0x2] - lsls r1, 8 - orrs r0, r1 - ldr r1, _0801FD88 @ =gBattlerAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, _0801FD8C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] -_0801FD7A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801FD80: .4byte gBattleControllerExecFlags -_0801FD84: .4byte gBattlescriptCurrInstr -_0801FD88: .4byte gBattlerAttacker -_0801FD8C: .4byte gBattleCommunication - thumb_func_end atk10_printstring - - thumb_func_start atk11_printselectionstring -atk11_printselectionstring: @ 801FD90 - push {r4,r5,lr} - ldr r5, _0801FDC4 @ =gActiveBattler - ldr r0, _0801FDC8 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _0801FDCC @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl BtlController_EmitPrintSelectionString - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - ldr r1, _0801FDD0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x7] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FDC4: .4byte gActiveBattler -_0801FDC8: .4byte gBattlerAttacker -_0801FDCC: .4byte gBattlescriptCurrInstr -_0801FDD0: .4byte gBattleCommunication - thumb_func_end atk11_printselectionstring - - thumb_func_start atk12_waitmessage -atk12_waitmessage: @ 801FDD4 - push {r4-r6,lr} - ldr r0, _0801FDF0 @ =gBattleControllerExecFlags - ldr r4, [r0] - cmp r4, 0 - bne _0801FE22 - ldr r6, _0801FDF4 @ =gBattleCommunication - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _0801FDFC - ldr r1, _0801FDF8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] - b _0801FE22 - .align 2, 0 -_0801FDF0: .4byte gBattleControllerExecFlags -_0801FDF4: .4byte gBattleCommunication -_0801FDF8: .4byte gBattlescriptCurrInstr -_0801FDFC: - ldr r5, _0801FE28 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, _0801FE2C @ =gPauseCounterBattle - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _0801FE22 - movs r1, 0 - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] - strb r1, [r6, 0x7] -_0801FE22: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801FE28: .4byte gBattlescriptCurrInstr -_0801FE2C: .4byte gPauseCounterBattle - thumb_func_end atk12_waitmessage - - thumb_func_start atk13_printfromtable -atk13_printfromtable: @ 801FE30 - push {r4,r5,lr} - ldr r0, _0801FE74 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801FE6E - ldr r4, _0801FE78 @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r5, _0801FE7C @ =gBattleCommunication - ldrb r0, [r5, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - ldr r1, _0801FE80 @ =gBattlerAttacker - ldrb r1, [r1] - bl PrepareStringBattle - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - movs r0, 0x1 - strb r0, [r5, 0x7] -_0801FE6E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FE74: .4byte gBattleControllerExecFlags -_0801FE78: .4byte gBattlescriptCurrInstr -_0801FE7C: .4byte gBattleCommunication -_0801FE80: .4byte gBattlerAttacker - thumb_func_end atk13_printfromtable - - thumb_func_start atk14_printselectionstringfromtable -atk14_printselectionstringfromtable: @ 801FE84 - push {r4-r6,lr} - ldr r0, _0801FED4 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _0801FECE - ldr r5, _0801FED8 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - ldr r6, _0801FEDC @ =gBattleCommunication - ldrb r0, [r6, 0x5] - lsls r0, 1 - adds r1, r0 - ldr r4, _0801FEE0 @ =gActiveBattler - ldr r0, _0801FEE4 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - ldrh r1, [r1] - movs r0, 0 - bl BtlController_EmitPrintSelectionString - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] - movs r0, 0x1 - strb r0, [r6, 0x7] -_0801FECE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801FED4: .4byte gBattleControllerExecFlags -_0801FED8: .4byte gBattlescriptCurrInstr -_0801FEDC: .4byte gBattleCommunication -_0801FEE0: .4byte gActiveBattler -_0801FEE4: .4byte gBattlerAttacker - thumb_func_end atk14_printselectionstringfromtable - - thumb_func_start GetBattlerTurnOrderNum -GetBattlerTurnOrderNum: @ 801FEE8 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r0, _0801FF18 @ =gBattlersCount - ldrb r3, [r0] - cmp r1, r3 - bge _0801FF0E - ldr r4, _0801FF1C @ =gBattlerByTurnOrder - ldrb r0, [r4] - cmp r0, r2 - beq _0801FF0E -_0801FF00: - adds r1, 0x1 - cmp r1, r3 - bge _0801FF0E - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r2 - bne _0801FF00 -_0801FF0E: - lsls r0, r1, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801FF18: .4byte gBattlersCount -_0801FF1C: .4byte gBattlerByTurnOrder - thumb_func_end GetBattlerTurnOrderNum - thumb_func_start SetMoveEffect SetMoveEffect: @ 801FF20 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index e922cc241..dc5a5ef00 100644 --- a/include/battle.h +++ b/include/battle.h @@ -982,5 +982,8 @@ extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; extern u8 gMultiUsePlayerCursor; extern u8 gNumberOfMovesToChoose; +extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; +extern s32 gHpDealt; +extern u16 gPauseCounterBattle; #endif // GUARD_BATTLE_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 01ecae958..688f9e4a2 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -29,6 +29,7 @@ #include "battle_setup.h" #include "battle_ai_script_commands.h" #include "battle_scripts.h" +#include "battle_string_ids.h" #include "reshow_battle_screen.h" #include "battle_controllers.h" #include "battle_interface.h" @@ -41,6 +42,7 @@ #include "constants/species.h" #include "constants/moves.h" #include "constants/abilities.h" +#include "constants/pokemon.h" #define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) @@ -865,3 +867,1224 @@ const u8 sBallCatchBonuses[] = }; const u32 gUnknown_8250898 = 0xFF7EAE60; + +void atk00_attackcanceler(void) +{ + s32 i; + + if (gBattleOutcome) + { + gCurrentActionFuncId = B_ACTION_FINISHED; + return; + } + if (gBattleMons[gBattlerAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattlescriptCurrInstr = BattleScript_MoveEnd; + return; + } + if (AtkCanceller_UnableToUseMove()) + return; + if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) + return; + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_x800000 | HITMARKER_NO_ATTACKSTRING)) + && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + gBattlescriptCurrInstr = BattleScript_NoPPForMove; + gMoveResultFlags |= MOVE_RESULT_MISSED; + return; + } + gHitMarker &= ~(HITMARKER_x800000); + if (!(gHitMarker & HITMARKER_OBEYS) + && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + { + i = IsMonDisobedient(); + switch (i) + { + case 0: + break; + case 2: + gHitMarker |= HITMARKER_OBEYS; + return; + default: + gMoveResultFlags |= MOVE_RESULT_MISSED; + return; + } + } + gHitMarker |= HITMARKER_OBEYS; + if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) + { + PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); + gProtectStructs[gBattlerTarget].bounceMove = FALSE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; + return; + } + for (i = 0; i < gBattlersCount; ++i) + { + if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + { + PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; + gBattleScripting.battler = gBattlerByTurnOrder[i]; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SnatchedMove; + return; + } + } + if (gSpecialStatuses[gBattlerTarget].lightningRodRedirected) + { + gSpecialStatuses[gBattlerTarget].lightningRodRedirected = FALSE; + gLastUsedAbility = ABILITY_LIGHTNING_ROD; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_TookAttack; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else if (DEFENDER_IS_PROTECTED + && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) + && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)))) + { + CancelMultiTurnMoves(gBattlerAttacker); + gMoveResultFlags |= MOVE_RESULT_MISSED; + gLastLandedMoves[gBattlerTarget] = 0; + gLastHitByType[gBattlerTarget] = 0; + gBattleCommunication[6] = 1; + ++gBattlescriptCurrInstr; + } + else + { + ++gBattlescriptCurrInstr; + } +} + +void JumpIfMoveFailed(u8 adder, u16 move) +{ + const u8 *BS_ptr = gBattlescriptCurrInstr + adder; + + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gLastLandedMoves[gBattlerTarget] = 0; + gLastHitByType[gBattlerTarget] = 0; + BS_ptr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + TrySetDestinyBondToHappen(); + if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, move)) + return; + } + gBattlescriptCurrInstr = BS_ptr; +} + +void atk40_jumpifaffectedbyprotect(void) +{ + if (DEFENDER_IS_PROTECTED) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + JumpIfMoveFailed(5, 0); + gBattleCommunication[6] = 1; + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +bool8 JumpIfMoveAffectedByProtect(u16 move) +{ + bool8 affected = FALSE; + + if (DEFENDER_IS_PROTECTED) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + JumpIfMoveFailed(7, move); + gBattleCommunication[6] = 1; + affected = TRUE; + } + return affected; +} + +bool8 AccuracyCalcHelper(u16 move) +{ + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBattlerTarget] & STATUS3_ON_AIR) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_ON_AIR; + if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBattlerTarget] & STATUS3_UNDERGROUND) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND; + if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBattlerTarget] & STATUS3_UNDERWATER) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + JumpIfMoveFailed(7, move); + return TRUE; + } + gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER; + if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER) + || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW)) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + return FALSE; +} + +void atk01_accuracycheck(void) +{ + u16 move = T2_READ_16(gBattlescriptCurrInstr + 5); + + if ((gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE + && !sub_80EB2E0(1) + && gBattleMoves[move].power != 0 + && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + || (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE + && !sub_80EB2E0(2) + && gBattleMoves[move].power == 0 + && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + || (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)) + { + JumpIfMoveFailed(7, move); + return; + } + if (move == NO_ACC_CALC || move == NO_ACC_CALC_CHECK_LOCK_ON) + { + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == NO_ACC_CALC_CHECK_LOCK_ON && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) + gBattlescriptCurrInstr += 7; + else if (gStatuses3[gBattlerTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else if (!JumpIfMoveAffectedByProtect(0)) + gBattlescriptCurrInstr += 7; + } + else + { + u8 type, moveAcc, holdEffect, param; + s8 buff; + u16 calc; + + if (move == 0) + move = gCurrentMove; + GET_MOVE_TYPE(move, type); + if (JumpIfMoveAffectedByProtect(move) || AccuracyCalcHelper(move)) + return; + if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT) + { + u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC]; + + buff = acc; + } + else + { + u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC]; + + buff = acc + 6 - gBattleMons[gBattlerTarget].statStages[STAT_EVASION]; + } + if (buff < 0) + buff = 0; + if (buff > 0xC) + buff = 0xC; + moveAcc = gBattleMoves[move].accuracy; + // check Thunder on sunny weather + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) + moveAcc = 50; + calc = sAccuracyStageRatios[buff].dividend * moveAcc; + calc /= sAccuracyStageRatios[buff].divisor; + if (gBattleMons[gBattlerAttacker].ability == ABILITY_COMPOUND_EYES) + calc = (calc * 130) / 100; // 1.3 compound eyes boost + if (WEATHER_HAS_EFFECT && gBattleMons[gBattlerTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY) + calc = (calc * 80) / 100; // 1.2 sand veil loss + if (gBattleMons[gBattlerAttacker].ability == ABILITY_HUSTLE && IS_TYPE_PHYSICAL(type)) + calc = (calc * 80) / 100; // 1.2 hustle loss + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + } + gPotentialItemEffectBattler = gBattlerTarget; + + if (holdEffect == HOLD_EFFECT_EVASION_UP) + calc = (calc * (100 - param)) / 100; + // final calculation + if ((Random() % 100 + 1) > calc) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && (gBattleMoves[move].target == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_FOES_AND_ALLY)) + gBattleCommunication[6] = 2; + else + gBattleCommunication[6] = 0; + CheckWonderGuardAndLevitate(); + } + JumpIfMoveFailed(7, move); + } +} + +void atk02_attackstring(void) +{ + if (!gBattleControllerExecFlags) + { + if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED))) + { + PrepareStringBattle(STRINGID_USEDMOVE, gBattlerAttacker); + gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; + } + ++gBattlescriptCurrInstr; + gBattleCommunication[MSG_DISPLAY] = 0; + } +} + + void atk03_ppreduce(void) +{ + s32 ppToDeduct = 1; + + if (!gBattleControllerExecFlags) + { + if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure) + { + switch (gBattleMoves[gCurrentMove].target) + { + case MOVE_TARGET_FOES_AND_ALLY: + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); + break; + case MOVE_TARGET_BOTH: + case MOVE_TARGET_OPPONENTS_FIELD: + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); + break; + default: + if (gBattlerAttacker != gBattlerTarget && gBattleMons[gBattlerTarget].ability == ABILITY_PRESSURE) + ++ppToDeduct; + break; + } + } + if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) + { + gProtectStructs[gBattlerAttacker].notFirstStrike = 1; + + if (gBattleMons[gBattlerAttacker].pp[gCurrMovePos] > ppToDeduct) + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] -= ppToDeduct; + else + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0; + + if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + && !((gDisableStructs[gBattlerAttacker].mimickedMoves) & gBitTable[gCurrMovePos])) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]); + MarkBattlerForControllerExec(gBattlerAttacker); + } + } + gHitMarker &= ~(HITMARKER_NO_PPDEDUCT); + ++gBattlescriptCurrInstr; + } +} + +void atk04_critcalc(void) +{ + u8 holdEffect; + u16 item, critChance; + + item = gBattleMons[gBattlerAttacker].item; + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gBattlerAttacker].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + gPotentialItemEffectBattler = gBattlerAttacker; + critChance = 2 * ((gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0) + + (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) + + (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) + + (holdEffect == HOLD_EFFECT_SCOPE_LENS) + + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD); + if (critChance >= NELEMS(sCriticalHitChance)) + critChance = NELEMS(sCriticalHitChance) - 1; + if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR) + && !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT) + && !(gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL) + && !(Random() % sCriticalHitChance[critChance]) + && (!(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) || sub_80EB2E0(1)) + && !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)) + gCritMultiplier = 2; + else + gCritMultiplier = 1; + ++gBattlescriptCurrInstr; +} + +void atk05_damagecalc(void) +{ + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)]; + + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], + &gBattleMons[gBattlerTarget], + gCurrentMove, + sideStatus, + gDynamicBasePower, + gBattleStruct->dynamicMoveType, + gBattlerAttacker, + gBattlerTarget); + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier; + if (gStatuses3[gBattlerAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[gBattlerAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + ++gBattlescriptCurrInstr; +} + +void AI_CalcDmg(u8 attacker, u8 defender) +{ + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(defender)]; + + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[attacker], + &gBattleMons[defender], + gCurrentMove, + sideStatus, + gDynamicBasePower, + gBattleStruct->dynamicMoveType, + attacker, + defender); + gDynamicBasePower = 0; + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier; + if (gStatuses3[attacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + gBattleMoveDamage *= 2; + if (gProtectStructs[attacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; +} + +void ModulateDmgByType(u8 multiplier) +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier) + gBattleMoveDamage = 1; + switch (multiplier) + { + case TYPE_MUL_NO_EFFECT: + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + break; + case TYPE_MUL_NOT_EFFECTIVE: + if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) + gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + else + gMoveResultFlags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; + } + break; + case TYPE_MUL_SUPER_EFFECTIVE: + if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) + gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + else + gMoveResultFlags |= MOVE_RESULT_SUPER_EFFECTIVE; + } + break; + } +} + +void atk06_typecalc(void) +{ + s32 i = 0; + u8 moveType; + + if (gCurrentMove == MOVE_STRUGGLE) + { + ++gBattlescriptCurrInstr; + return; + } + GET_MOVE_TYPE(gCurrentMove, moveType); + // check stab + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, moveType)) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); + gLastLandedMoves[gBattlerTarget] = 0; + gLastHitByType[gBattlerTarget] = 0; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else + { + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) + { + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1) + ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i)); + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 && + gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2) + ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i)); + } + i += 3; + } + } + if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2 + && (!(gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || ((gMoveResultFlags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gMoveResultFlags |= MOVE_RESULT_MISSED; + gLastLandedMoves[gBattlerTarget] = 0; + gLastHitByType[gBattlerTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) + gProtectStructs[gBattlerAttacker].targetNotAffected = 1; + ++gBattlescriptCurrInstr; +} + +void CheckWonderGuardAndLevitate(void) +{ + u8 flags = 0; + s32 i = 0; + u8 moveType; + + if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) + return; + GET_MOVE_TYPE(gCurrentMove, moveType); + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = ABILITY_LEVITATE; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBattlerTarget, ABILITY_LEVITATE); + return; + } + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) + { + // check no effect + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) + { + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + gProtectStructs[gBattlerAttacker].targetNotAffected = 1; + } + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 && + gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 && + TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) + { + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + gProtectStructs[gBattlerAttacker].targetNotAffected = 1; + } + // check super effective + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 20) + flags |= 1; + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 + && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) + flags |= 1; + // check not very effective + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 5) + flags |= 2; + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 + && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) + flags |= 2; + } + i += 3; + } + if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2) + { + if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBattlerTarget, ABILITY_WONDER_GUARD); + } + } +} + +// same as ModulateDmgByType except different arguments +void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) +{ + gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; + if (gBattleMoveDamage == 0 && multiplier != 0) + gBattleMoveDamage = 1; + switch (multiplier) + { + case TYPE_MUL_NO_EFFECT: + *flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + break; + case TYPE_MUL_NOT_EFFECTIVE: + if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) + { + if (*flags & MOVE_RESULT_SUPER_EFFECTIVE) + *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + else + *flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; + } + break; + case TYPE_MUL_SUPER_EFFECTIVE: + if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) + { + if (*flags & MOVE_RESULT_NOT_VERY_EFFECTIVE) + *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + else + *flags |= MOVE_RESULT_SUPER_EFFECTIVE; + } + break; + } +} + +u8 TypeCalc(u16 move, u8 attacker, u8 defender) +{ + s32 i = 0; + u8 flags = 0; + u8 moveType; + + if (move == MOVE_STRUGGLE) + return 0; + moveType = gBattleMoves[move].type; + // check stab + if (IS_BATTLER_OF_TYPE(attacker, moveType)) + { + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } + + if (gBattleMons[defender].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + flags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); + } + else + { + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + if (gBattleMons[defender].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) + { + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type2 && + gBattleMons[defender].type1 != gBattleMons[defender].type2) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + } + i += 3; + } + } + if (gBattleMons[defender].ability == ABILITY_WONDER_GUARD + && !(flags & MOVE_RESULT_MISSED) + && AttacksThisTurn(attacker, move) == 2 + && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) + && gBattleMoves[move].power) + flags |= MOVE_RESULT_MISSED; + return flags; +} + +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility) +{ + s32 i = 0; + u8 flags = 0; + u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2; + u8 moveType; + + if (move == MOVE_STRUGGLE) + return 0; + moveType = gBattleMoves[move].type; + if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + flags = MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE; + } + else + { + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + i += 3; + continue; + } + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) + { + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == type2 && type1 != type2) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + } + i += 3; + } + } + if (targetAbility == ABILITY_WONDER_GUARD + && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) + && gBattleMoves[move].power) + flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + return flags; +} + +static inline void ApplyRandomDmgMultiplier(void) +{ + u16 rand = Random(); + u16 randPercent = 100 - (rand % 16); + + if (gBattleMoveDamage != 0) + { + gBattleMoveDamage *= randPercent; + gBattleMoveDamage /= 100; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } +} + +void Unused_ApplyRandomDmgMultiplier(void) +{ + ApplyRandomDmgMultiplier(); +} + +void atk07_adjustnormaldamage(void) +{ + u8 holdEffect, param; + + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + } + gPotentialItemEffectBattler = gBattlerTarget; + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + { + RecordItemEffectBattle(gBattlerTarget, holdEffect); + gSpecialStatuses[gBattlerTarget].focusBanded = 1; + } + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) + && (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded) + && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + if (gProtectStructs[gBattlerTarget].endured) + { + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; + } + else if (gSpecialStatuses[gBattlerTarget].focusBanded) + { + gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; + gLastUsedItem = gBattleMons[gBattlerTarget].item; + } + } + ++gBattlescriptCurrInstr; +} + +// The same as 0x7 except it doesn't check for false swipe move effect. +void atk08_adjustnormaldamage2(void) +{ + u8 holdEffect, param; + + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + } + gPotentialItemEffectBattler = gBattlerTarget; + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + { + RecordItemEffectBattle(gBattlerTarget, holdEffect); + gSpecialStatuses[gBattlerTarget].focusBanded = 1; + } + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) + && (gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded) + && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + if (gProtectStructs[gBattlerTarget].endured) + { + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; + } + else if (gSpecialStatuses[gBattlerTarget].focusBanded) + { + gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; + gLastUsedItem = gBattleMons[gBattlerTarget].item; + } + } + ++gBattlescriptCurrInstr; +} + +void atk09_attackanimation(void) +{ + if (!gBattleControllerExecFlags) + { + if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + ++gBattleScripting.animTurn; + ++gBattleScripting.animTargetsHit; + } + else + { + if ((gBattleMoves[gCurrentMove].target & MOVE_TARGET_BOTH + || gBattleMoves[gCurrentMove].target & MOVE_TARGET_FOES_AND_ALLY + || gBattleMoves[gCurrentMove].target & MOVE_TARGET_DEPENDS) + && gBattleScripting.animTargetsHit) + { + ++gBattlescriptCurrInstr; + return; + } + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker]); + ++gBattleScripting.animTurn; + ++gBattleScripting.animTargetsHit; + MarkBattlerForControllerExec(gBattlerAttacker); + ++gBattlescriptCurrInstr; + } + else + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + } + } +} + +void atk0A_waitanimation(void) +{ + if (!gBattleControllerExecFlags) + ++gBattlescriptCurrInstr; +} + +void atk0B_healthbarupdate(void) +{ + if (!gBattleControllerExecFlags) + { + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBattler); + } + else + { + s16 healthValue; + s32 currDmg = gBattleMoveDamage; + s32 maxPossibleDmgValue = 10000; // not present in R/S, ensures that huge damage values don't change sign + + if (currDmg <= maxPossibleDmgValue) + healthValue = currDmg; + else + healthValue = maxPossibleDmgValue; + BtlController_EmitHealthBarUpdate(0, healthValue); + MarkBattlerForControllerExec(gActiveBattler); + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0) + gBattleResults.playerMonWasDamaged = TRUE; + } + } + gBattlescriptCurrInstr += 2; + } +} + +void atk0C_datahpupdate(void) +{ + u32 moveType; + + if (!gBattleControllerExecFlags) + { + if (gBattleStruct->dynamicMoveType == 0) + moveType = gBattleMoves[gCurrentMove].type; + else if (!(gBattleStruct->dynamicMoveType & 0x40)) + moveType = gBattleStruct->dynamicMoveType & 0x3F; + else + moveType = gBattleMoves[gCurrentMove].type; + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage) + { + if (gSpecialStatuses[gActiveBattler].dmg == 0) + gSpecialStatuses[gActiveBattler].dmg = gBattleMoveDamage; + gDisableStructs[gActiveBattler].substituteHP -= gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; + } + else + { + if (gSpecialStatuses[gActiveBattler].dmg == 0) + gSpecialStatuses[gActiveBattler].dmg = gDisableStructs[gActiveBattler].substituteHP; + gHpDealt = gDisableStructs[gActiveBattler].substituteHP; + gDisableStructs[gActiveBattler].substituteHP = 0; + } + // check substitute fading + if (gDisableStructs[gActiveBattler].substituteHP == 0) + { + gBattlescriptCurrInstr += 2; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SubstituteFade; + return; + } + } + else + { + gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE); + if (gBattleMoveDamage < 0) // hp goes up + { + gBattleMons[gActiveBattler].hp -= gBattleMoveDamage; + if (gBattleMons[gActiveBattler].hp > gBattleMons[gActiveBattler].maxHP) + gBattleMons[gActiveBattler].hp = gBattleMons[gActiveBattler].maxHP; + + } + else // hp goes down + { + if (gHitMarker & HITMARKER_x20) + { + gHitMarker &= ~(HITMARKER_x20); + } + else + { + gTakenDmg[gActiveBattler] += gBattleMoveDamage; + if (gBattlescriptCurrInstr[1] == BS_TARGET) + gTakenDmgByBattler[gActiveBattler] = gBattlerAttacker; + else + gTakenDmgByBattler[gActiveBattler] = gBattlerTarget; + } + + if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage) + { + gBattleMons[gActiveBattler].hp -= gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; + } + else + { + gHpDealt = gBattleMons[gActiveBattler].hp; + gBattleMons[gActiveBattler].hp = 0; + } + if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000)) + gSpecialStatuses[gActiveBattler].dmg = gHpDealt; + if (IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + { + gProtectStructs[gActiveBattler].physicalDmg = gHpDealt; + gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt; + if (gBattlescriptCurrInstr[1] == BS_TARGET) + { + gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerAttacker; + gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerAttacker; + } + else + { + gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerTarget; + gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget; + } + } + else if (!IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000)) + { + gProtectStructs[gActiveBattler].specialDmg = gHpDealt; + gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt; + if (gBattlescriptCurrInstr[1] == BS_TARGET) + { + gProtectStructs[gActiveBattler].specialBattlerId = gBattlerAttacker; + gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerAttacker; + } + else + { + gProtectStructs[gActiveBattler].specialBattlerId = gBattlerTarget; + gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerTarget; + } + } + } + gHitMarker &= ~(HITMARKER_x100000); + BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp); + MarkBattlerForControllerExec(gActiveBattler); + } + } + else + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (gSpecialStatuses[gActiveBattler].dmg == 0) + gSpecialStatuses[gActiveBattler].dmg = 0xFFFF; + } + gBattlescriptCurrInstr += 2; + } +} + +void atk0D_critmessage(void) +{ + if (!gBattleControllerExecFlags) + { + if (gCritMultiplier == 2 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + PrepareStringBattle(STRINGID_CRITICALHIT, gBattlerAttacker); + gBattleCommunication[MSG_DISPLAY] = 1; + } + ++gBattlescriptCurrInstr; + } +} + +void atk0E_effectivenesssound(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = gBattlerTarget; + if (!(gMoveResultFlags & MOVE_RESULT_MISSED)) + { + switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED))) + { + case MOVE_RESULT_SUPER_EFFECTIVE: + BtlController_EmitPlaySE(0, SE_KOUKA_H); + MarkBattlerForControllerExec(gActiveBattler); + break; + case MOVE_RESULT_NOT_VERY_EFFECTIVE: + BtlController_EmitPlaySE(0, SE_KOUKA_L); + MarkBattlerForControllerExec(gActiveBattler); + break; + case MOVE_RESULT_DOESNT_AFFECT_FOE: + case MOVE_RESULT_FAILED: + // no sound + break; + case MOVE_RESULT_FOE_ENDURED: + case MOVE_RESULT_ONE_HIT_KO: + case MOVE_RESULT_FOE_HUNG_ON: + default: + if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) + { + BtlController_EmitPlaySE(0, SE_KOUKA_H); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) + { + BtlController_EmitPlaySE(0, SE_KOUKA_L); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED))) + { + BtlController_EmitPlaySE(0, SE_KOUKA_M); + MarkBattlerForControllerExec(gActiveBattler); + } + break; + } + } + ++gBattlescriptCurrInstr; + } +} + +void atk0F_resultmessage(void) +{ + u32 stringId = 0; + + if (!gBattleControllerExecFlags) + { + if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[6] > 2)) + { + stringId = gMissStringIds[gBattleCommunication[6]]; + gBattleCommunication[MSG_DISPLAY] = 1; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 1; + switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED))) + { + case MOVE_RESULT_SUPER_EFFECTIVE: + stringId = STRINGID_SUPEREFFECTIVE; + break; + case MOVE_RESULT_NOT_VERY_EFFECTIVE: + stringId = STRINGID_NOTVERYEFFECTIVE; + break; + case MOVE_RESULT_ONE_HIT_KO: + stringId = STRINGID_ONEHITKO; + break; + case MOVE_RESULT_FOE_ENDURED: + stringId = STRINGID_PKMNENDUREDHIT; + break; + case MOVE_RESULT_FAILED: + stringId = STRINGID_BUTITFAILED; + break; + case MOVE_RESULT_DOESNT_AFFECT_FOE: + stringId = STRINGID_ITDOESNTAFFECT; + break; + case MOVE_RESULT_FOE_HUNG_ON: + gLastUsedItem = gBattleMons[gBattlerTarget].item; + gPotentialItemEffectBattler = gBattlerTarget; + gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + default: + if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) + { + stringId = STRINGID_ITDOESNTAFFECT; + } + else if (gMoveResultFlags & MOVE_RESULT_ONE_HIT_KO) + { + gMoveResultFlags &= ~(MOVE_RESULT_ONE_HIT_KO); + gMoveResultFlags &= ~(MOVE_RESULT_SUPER_EFFECTIVE); + gMoveResultFlags &= ~(MOVE_RESULT_NOT_VERY_EFFECTIVE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; + return; + } + else if (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED) + { + gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_EnduredMsg; + return; + } + else if (gMoveResultFlags & MOVE_RESULT_FOE_HUNG_ON) + { + gLastUsedItem = gBattleMons[gBattlerTarget].item; + gPotentialItemEffectBattler = gBattlerTarget; + gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + return; + } + else if (gMoveResultFlags & MOVE_RESULT_FAILED) + { + stringId = STRINGID_BUTITFAILED; + } + else + { + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + } + if (stringId) + PrepareStringBattle(stringId, gBattlerAttacker); + ++gBattlescriptCurrInstr; + } +} + +void atk10_printstring(void) +{ + if (!gBattleControllerExecFlags) + { + u16 var = T2_READ_16(gBattlescriptCurrInstr + 1); + PrepareStringBattle(var, gBattlerAttacker); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +void atk11_printselectionstring(void) +{ + gActiveBattler = gBattlerAttacker; + BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1)); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 1; +} + +void atk12_waitmessage(void) +{ + if (!gBattleControllerExecFlags) + { + if (!gBattleCommunication[MSG_DISPLAY]) + { + gBattlescriptCurrInstr += 3; + } + else + { + u16 toWait = T2_READ_16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= toWait) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + gBattleCommunication[MSG_DISPLAY] = 0; + } + } + } +} + +void atk13_printfromtable(void) +{ + if (!gBattleControllerExecFlags) + { + const u16 *ptr = (const u16 *) T1_READ_PTR(gBattlescriptCurrInstr + 1); + + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + PrepareStringBattle(*ptr, gBattlerAttacker); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +void atk14_printselectionstringfromtable(void) +{ + if (!gBattleControllerExecFlags) + { + const u16 *ptr = (const u16 *) T1_READ_PTR(gBattlescriptCurrInstr + 1); + + ptr += gBattleCommunication[MULTISTRING_CHOOSER]; + gActiveBattler = gBattlerAttacker; + BtlController_EmitPrintSelectionString(0, *ptr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 5; + gBattleCommunication[MSG_DISPLAY] = 1; + } +} + +u8 GetBattlerTurnOrderNum(u8 battlerId) +{ + s32 i; + + for (i = 0; i < gBattlersCount && gBattlerByTurnOrder[i] != battlerId; ++i); + return i; +} + From 1d8232b919a973b8e58d6431b0fb66ae6459f17a Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 25 Aug 2019 13:09:46 +0800 Subject: [PATCH 024/100] thru atk23 --- asm/battle_2.s | 6 +- asm/battle_script_commands.s | 4466 ---------------------------------- include/battle.h | 16 +- src/battle_script_commands.c | 1226 +++++++++- 4 files changed, 1235 insertions(+), 4479 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index a019e4969..344325ff4 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5766,8 +5766,8 @@ _08012BC0: .4byte gLastHitBy _08012BC4: .4byte gBattleResources thumb_func_end SwitchInClearSetData - thumb_func_start sub_8012BC8 -sub_8012BC8: @ 8012BC8 + thumb_func_start FaintClearSetData +FaintClearSetData: @ 8012BC8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -6257,7 +6257,7 @@ _08012F9C: .4byte gLastPrintedMoves _08012FA0: .4byte gLastHitBy _08012FA4: .4byte gBattleResources _08012FA8: .4byte gBaseStats - thumb_func_end sub_8012BC8 + thumb_func_end FaintClearSetData thumb_func_start BattleIntroGetMonsData BattleIntroGetMonsData: @ 8012FAC diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 8c70f5d8a..1d0282835 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,4472 +5,6 @@ .text - thumb_func_start SetMoveEffect -SetMoveEffect: @ 801FF20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0 - mov r10, r0 - movs r7, 0 - movs r1, 0x1 - str r1, [sp, 0x4] - ldr r1, _0801FF64 @ =gBattleCommunication - ldrb r3, [r1, 0x3] - movs r0, 0x40 - ands r0, r3 - adds r6, r1, 0 - cmp r0, 0 - beq _0801FF78 - ldr r2, _0801FF68 @ =gEffectBattler - ldr r0, _0801FF6C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0xBF - ands r0, r3 - strb r0, [r6, 0x3] - movs r7, 0x40 - ldr r1, _0801FF70 @ =gBattleScripting - ldr r0, _0801FF74 @ =gBattlerTarget - b _0801FF84 - .align 2, 0 -_0801FF64: .4byte gBattleCommunication -_0801FF68: .4byte gEffectBattler -_0801FF6C: .4byte gBattlerAttacker -_0801FF70: .4byte gBattleScripting -_0801FF74: .4byte gBattlerTarget -_0801FF78: - ldr r2, _08020094 @ =gEffectBattler - ldr r0, _08020098 @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r2] - ldr r1, _0802009C @ =gBattleScripting - ldr r0, _080200A0 @ =gBattlerAttacker -_0801FF84: - ldrb r0, [r0] - strb r0, [r1, 0x17] - mov r9, r2 - ldr r0, _080200A4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _0801FFB2 - ldrb r0, [r6, 0x3] - cmp r0, 0x1 - beq _0801FFB2 - mov r2, r9 - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0801FFB2 - bl _080210EC -_0801FFB2: - ldr r3, _080200A8 @ =gBattleMons - ldr r2, _08020094 @ =gEffectBattler - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - mov r9, r2 - cmp r0, 0x13 - bne _0801FFE6 - ldr r0, _080200AC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _0801FFE6 - cmp r4, 0 - bne _0801FFE6 - ldr r0, _080200B0 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0x9 - bhi _0801FFE6 - bl _080210EC -_0801FFE6: - mov r3, r9 - ldrb r0, [r3] - bl GetBattlerPosition - ldr r2, _080200B4 @ =gSideStatuses - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08020020 - ldr r0, _080200AC @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - bne _08020020 - cmp r4, 0 - bne _08020020 - ldr r0, _080200B0 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0x7 - bhi _08020020 - bl _080210EC -_08020020: - ldr r3, _080200A8 @ =gBattleMons - ldr r2, _08020094 @ =gEffectBattler - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - mov r9, r2 - mov r8, r3 - cmp r0, 0 - bne _08020046 - ldr r0, _080200B0 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0xB - beq _08020046 - cmp r0, 0x1F - beq _08020046 - bl _080210EC -_08020046: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - mov r1, r8 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _08020068 - cmp r7, 0x40 - beq _08020068 - bl _080210EC -_08020068: - ldr r0, _080200B0 @ =gBattleCommunication - ldrb r1, [r0, 0x3] - adds r6, r0, 0 - cmp r1, 0x6 - bls _08020074 - b _080206A2 -_08020074: - ldr r1, _080200B8 @ =sStatusFlagsForMoveEffects - ldrb r0, [r6, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x10 - bne _08020084 - b _08020270 -_08020084: - cmp r0, 0x10 - bhi _080200BC - cmp r0, 0x7 - beq _080200D6 - cmp r0, 0x8 - bne _08020092 - b _0802018C -_08020092: - b _08020570 - .align 2, 0 -_08020094: .4byte gEffectBattler -_08020098: .4byte gBattlerTarget -_0802009C: .4byte gBattleScripting -_080200A0: .4byte gBattlerAttacker -_080200A4: .4byte gBattleTypeFlags -_080200A8: .4byte gBattleMons -_080200AC: .4byte gHitMarker -_080200B0: .4byte gBattleCommunication -_080200B4: .4byte gSideStatuses -_080200B8: .4byte sStatusFlagsForMoveEffects -_080200BC: - cmp r0, 0x40 - bne _080200C2 - b _080203E4 -_080200C2: - cmp r0, 0x40 - bhi _080200CE - cmp r0, 0x20 - bne _080200CC - b _08020346 -_080200CC: - b _08020570 -_080200CE: - cmp r0, 0x80 - bne _080200D4 - b _08020440 -_080200D4: - b _08020570 -_080200D6: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - beq _08020138 - ldr r0, _08020130 @ =gActiveBattler - movs r1, 0 - strb r1, [r0] - ldr r1, _08020134 @ =gBattlersCount - ldrb r3, [r1] - adds r7, r0, 0 - mov r12, r1 - cmp r3, 0 - beq _08020144 - mov r4, r8 - ldr r0, [r4, 0x50] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - bne _08020144 - adds r1, r7, 0 - mov r6, r8 - adds r6, 0x50 - movs r5, 0x58 - movs r4, 0x70 -_08020110: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcs _08020144 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _08020110 - b _08020144 - .align 2, 0 -_08020130: .4byte gActiveBattler -_08020134: .4byte gBattlersCount -_08020138: - ldr r0, _08020184 @ =gActiveBattler - ldr r2, _08020188 @ =gBattlersCount - ldrb r1, [r2] - strb r1, [r0] - adds r7, r0, 0 - mov r12, r2 -_08020144: - mov r0, r9 - ldrb r2, [r0] - movs r0, 0x58 - adds r1, r2, 0 - muls r1, r0 - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802015C - b _08020570 -_0802015C: - ldrb r0, [r7] - mov r3, r12 - ldrb r3, [r3] - cmp r0, r3 - beq _08020168 - b _08020570 -_08020168: - mov r4, r8 - adds r0, r1, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - bne _08020176 - b _08020570 -_08020176: - cmp r0, 0xF - bne _0802017C - b _08020570 -_0802017C: - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _08020560 - .align 2, 0 -_08020184: .4byte gActiveBattler -_08020188: .4byte gBattlersCount -_0802018C: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _080201E4 - cmp r4, 0x1 - beq _080201A6 - cmp r5, 0x80 - bne _080201E4 -_080201A6: - ldr r0, _080201D4 @ =gLastUsedAbility - strb r1, [r0] - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x11 - bl RecordAbilityBattle - ldr r4, _080201D8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _080201DC @ =BattleScript_PSNPrevention -_080201C0: - str r0, [r4] - ldr r2, _080201E0 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _080201D2 - b _08020484 -_080201D2: - b _080204A8 - .align 2, 0 -_080201D4: .4byte gLastUsedAbility -_080201D8: .4byte gBattlescriptCurrInstr -_080201DC: .4byte BattleScript_PSNPrevention -_080201E0: .4byte gHitMarker -_080201E4: - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x58 - muls r0, r1 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _08020208 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08020208 - cmp r1, 0x8 - beq _08020208 - cmp r0, 0x8 - bne _08020222 -_08020208: - ldr r0, _0802026C @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08020222 - cmp r4, 0x1 - bne _0802021C - b _080204E8 -_0802021C: - cmp r5, 0x80 - bne _08020222 - b _080204E8 -_08020222: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r1, r0 - mov r4, r8 - adds r3, r1, r4 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r4, [r0] - cmp r4, 0x3 - bne _0802023A - b _08020570 -_0802023A: - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08020244 - b _08020570 -_08020244: - cmp r4, 0x8 - bne _0802024A - b _08020570 -_0802024A: - cmp r0, 0x8 - bne _08020250 - b _08020570 -_08020250: - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802025E - b _08020570 -_0802025E: - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - bne _0802026A - b _08020570 -_0802026A: - b _08020560 - .align 2, 0 -_0802026C: .4byte gHitMarker -_08020270: - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x29 - bne _080202B4 - cmp r4, 0x1 - beq _0802028A - cmp r5, 0x80 - bne _080202B4 -_0802028A: - ldr r0, _080202A8 @ =gLastUsedAbility - strb r1, [r0] - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x29 - bl RecordAbilityBattle - ldr r4, _080202AC @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _080202B0 @ =BattleScript_BRNPrevention - b _080201C0 - .align 2, 0 -_080202A8: .4byte gLastUsedAbility -_080202AC: .4byte gBattlescriptCurrInstr -_080202B0: .4byte BattleScript_BRNPrevention -_080202B4: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - mov r2, r8 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - beq _080202D4 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _08020304 -_080202D4: - ldr r0, _080202F8 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08020304 - cmp r4, 0x1 - beq _080202EA - cmp r5, 0x80 - bne _08020304 -_080202EA: - ldr r4, _080202FC @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020300 @ =BattleScript_BRNPrevention - b _080204F4 - .align 2, 0 -_080202F8: .4byte gHitMarker -_080202FC: .4byte gBattlescriptCurrInstr -_08020300: .4byte BattleScript_BRNPrevention -_08020304: - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x58 - adds r2, r0, 0 - muls r2, r1 - mov r4, r8 - adds r1, r2, r4 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xA - bne _0802031E - b _08020570 -_0802031E: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xA - bne _0802032A - b _08020570 -_0802032A: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x29 - bne _08020336 - b _08020570 -_08020336: - mov r0, r8 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _08020344 - b _08020570 -_08020344: - b _08020560 -_08020346: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08020382 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08020382 - ldr r0, _080203D8 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _08020382 - movs r1, 0 - str r1, [sp, 0x4] -_08020382: - ldr r4, _080203DC @ =gBattleMons - ldr r0, _080203E0 @ =gEffectBattler - ldrb r3, [r0] - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r1, r2, r4 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - bne _0802039C - b _08020570 -_0802039C: - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - bne _080203A8 - b _08020570 -_080203A8: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080203B6 - b _08020570 -_080203B6: - ldr r2, [sp, 0x4] - cmp r2, 0 - bne _080203BE - b _08020570 -_080203BE: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x28 - bne _080203CA - b _08020570 -_080203CA: - adds r0, r3, 0 - bl CancelMultiTurnMoves - movs r3, 0x1 - mov r10, r3 - b _08020570 - .align 2, 0 -_080203D8: .4byte gBattleWeather -_080203DC: .4byte gBattleMons -_080203E0: .4byte gEffectBattler -_080203E4: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - mov r2, r8 - adds r0, r1, r2 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x7 - bne _0802042C - cmp r4, 0x1 - beq _08020402 - cmp r5, 0x80 - beq _08020402 - b _08020570 -_08020402: - ldr r0, _08020420 @ =gLastUsedAbility - strb r2, [r0] - mov r3, r9 - ldrb r0, [r3] - movs r1, 0x7 - bl RecordAbilityBattle - ldr r4, _08020424 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020428 @ =BattleScript_PRLZPrevention - b _080201C0 - .align 2, 0 -_08020420: .4byte gLastUsedAbility -_08020424: .4byte gBattlescriptCurrInstr -_08020428: .4byte BattleScript_PRLZPrevention -_0802042C: - mov r0, r8 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802043A - b _08020570 -_0802043A: - movs r4, 0x1 - mov r10, r4 - b _08020570 -_08020440: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x11 - bne _080204AE - cmp r4, 0x1 - beq _0802045A - cmp r5, 0x80 - bne _080204AE -_0802045A: - ldr r0, _08020494 @ =gLastUsedAbility - strb r1, [r0] - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x11 - bl RecordAbilityBattle - ldr r4, _08020498 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _0802049C @ =BattleScript_PSNPrevention - str r0, [r4] - ldr r2, _080204A0 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _080204A8 -_08020484: - movs r0, 0x1 - strb r0, [r6, 0x5] - ldr r0, _080204A4 @ =0xffffdfff - ands r1, r0 - str r1, [r2] - bl _0802110A - .align 2, 0 -_08020494: .4byte gLastUsedAbility -_08020498: .4byte gBattlescriptCurrInstr -_0802049C: .4byte BattleScript_PSNPrevention -_080204A0: .4byte gHitMarker -_080204A4: .4byte 0xffffdfff -_080204A8: - strb r0, [r6, 0x5] - bl _0802110A -_080204AE: - mov r2, r9 - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0x3 - beq _080204D2 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x3 - beq _080204D2 - cmp r1, 0x8 - beq _080204D2 - cmp r0, 0x8 - bne _08020510 -_080204D2: - ldr r0, _08020500 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08020510 - cmp r4, 0x1 - beq _080204E8 - cmp r5, 0x80 - bne _08020510 -_080204E8: - ldr r4, _08020504 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020508 @ =BattleScript_PSNPrevention -_080204F4: - str r0, [r4] - ldr r1, _0802050C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - bl _0802110A - .align 2, 0 -_08020500: .4byte gHitMarker -_08020504: .4byte gBattlescriptCurrInstr -_08020508: .4byte BattleScript_PSNPrevention -_0802050C: .4byte gBattleCommunication -_08020510: - mov r3, r9 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r2, r8 - adds r2, 0x4C - adds r5, r0, r2 - ldr r4, [r5] - cmp r4, 0 - bne _08020570 - mov r3, r8 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r3, [r0] - cmp r3, 0x3 - beq _08020566 - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _08020566 - cmp r3, 0x8 - beq _08020566 - cmp r0, 0x8 - beq _08020566 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x11 - beq _08020570 - mov r4, r9 - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x9 - negs r2, r2 - ands r0, r2 - str r0, [r1] -_08020560: - movs r0, 0x1 - mov r10, r0 - b _08020570 -_08020566: - ldr r0, _080205B4 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_08020570: - mov r1, r10 - cmp r1, 0x1 - beq _08020578 - b _08020694 -_08020578: - ldr r0, _080205B8 @ =gBattlescriptCurrInstr - ldr r0, [r0] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _080205BC @ =sStatusFlagsForMoveEffects - ldr r0, _080205C0 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - cmp r3, 0x7 - bne _080205CC - bl Random - ldr r2, _080205C4 @ =gBattleMons - ldr r1, _080205C8 @ =gEffectBattler - ldrb r3, [r1] - movs r1, 0x58 - muls r3, r1 - adds r2, 0x4C - adds r3, r2 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - b _080205E0 - .align 2, 0 -_080205B4: .4byte gMoveResultFlags -_080205B8: .4byte gBattlescriptCurrInstr -_080205BC: .4byte sStatusFlagsForMoveEffects -_080205C0: .4byte gBattleCommunication -_080205C4: .4byte gBattleMons -_080205C8: .4byte gEffectBattler -_080205CC: - ldr r2, _08020630 @ =gBattleMons - ldr r0, _08020634 @ =gEffectBattler - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r2, 0x4C - adds r1, r2 - ldr r0, [r1] - orrs r0, r3 - str r0, [r1] -_080205E0: - ldr r2, _08020638 @ =gBattlescriptCurrInstr - ldr r1, _0802063C @ =sMoveEffectBS_Ptrs - ldr r5, _08020640 @ =gBattleCommunication - ldrb r0, [r5, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r4, _08020644 @ =gActiveBattler - ldr r1, _08020634 @ =gEffectBattler - ldrb r0, [r1] - strb r0, [r4] - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - ldr r1, _08020648 @ =gUnknown_2023C30 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r2, _0802064C @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _08020654 - movs r0, 0x1 - strb r0, [r5, 0x5] - ldr r0, _08020650 @ =0xffffdfff - ands r1, r0 - str r1, [r2] - b _08020656 - .align 2, 0 -_08020630: .4byte gBattleMons -_08020634: .4byte gEffectBattler -_08020638: .4byte gBattlescriptCurrInstr -_0802063C: .4byte sMoveEffectBS_Ptrs -_08020640: .4byte gBattleCommunication -_08020644: .4byte gActiveBattler -_08020648: .4byte gUnknown_2023C30 -_0802064C: .4byte gHitMarker -_08020650: .4byte 0xffffdfff -_08020654: - strb r0, [r5, 0x5] -_08020656: - ldr r0, _08020688 @ =gBattleCommunication - ldrb r2, [r0, 0x3] - adds r6, r0, 0 - cmp r2, 0x2 - beq _08020670 - cmp r2, 0x6 - beq _08020670 - cmp r2, 0x5 - beq _08020670 - cmp r2, 0x3 - beq _08020670 - bl _0802110A -_08020670: - ldr r0, _0802068C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xB4 - ldrb r1, [r6, 0x3] - strb r1, [r0] - ldr r2, _08020690 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 7 - bl _08021008 - .align 2, 0 -_08020688: .4byte gBattleCommunication -_0802068C: .4byte gBattleStruct -_08020690: .4byte gHitMarker -_08020694: - mov r2, r10 - cmp r2, 0 - beq _0802069E - bl _0802110A -_0802069E: - bl _080210EC -_080206A2: - mov r3, r9 - ldrb r1, [r3] - movs r0, 0x58 - muls r1, r0 - mov r0, r8 - adds r0, 0x50 - adds r1, r0 - ldr r2, _080206DC @ =sStatusFlagsForMoveEffects - ldrb r3, [r6, 0x3] - lsls r0, r3, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080206C6 - bl _080210EC -_080206C6: - subs r0, r3, 0x7 - cmp r0, 0x34 - bls _080206D0 - bl _0802110A -_080206D0: - lsls r0, 2 - ldr r1, _080206E0 @ =_080206E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080206DC: .4byte sStatusFlagsForMoveEffects -_080206E0: .4byte _080206E4 - .align 2, 0 -_080206E4: - .4byte _080207B8 - .4byte _0802082C - .4byte _080209A0 - .4byte _080208B8 - .4byte _08020934 - .4byte _080209D8 - .4byte _08020A20 - .4byte _08020AEC - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B30 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020B74 - .4byte _08020C40 - .4byte _08020C88 - .4byte _08020CA8 - .4byte _08020E78 - .4byte _08020EB4 - .4byte _08020ED0 - .4byte _08020EE8 - .4byte _08020F00 - .4byte _08020F60 - .4byte _08020F78 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BB8 - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020BFC - .4byte _08020FBC - .4byte _08021018 - .4byte _0802110A - .4byte _0802110A - .4byte _0802110A - .4byte _0802110A - .4byte _080210FC -_080207B8: - mov r4, r9 - ldrb r0, [r4] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - mov r2, r8 - adds r0, r1, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x14 - bne _080207D2 - bl _080210EC -_080207D2: - mov r4, r8 - adds r4, 0x50 - adds r0, r1, r4 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080207E6 - bl _080210EC -_080207E6: - bl Random - mov r3, r9 - ldrb r1, [r3] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, _08020820 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _08020824 @ =sMoveEffectBS_Ptrs - ldr r0, _08020828 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _08021108 - .align 2, 0 -_08020820: .4byte gBattlescriptCurrInstr -_08020824: .4byte sMoveEffectBS_Ptrs -_08020828: .4byte gBattleCommunication -_0802082C: - mov r0, r9 - ldrb r2, [r0] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - add r0, r8 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, 0x27 - bne _08020870 - cmp r4, 0x1 - beq _0802084C - cmp r5, 0x80 - beq _0802084C - bl _080210EC -_0802084C: - ldr r0, _08020864 @ =gLastUsedAbility - strb r1, [r0] - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x27 - bl RecordAbilityBattle - ldr r1, _08020868 @ =gBattlescriptCurrInstr - ldr r0, _0802086C @ =BattleScript_FlinchPrevention - str r0, [r1] - bl _0802110A - .align 2, 0 -_08020864: .4byte gLastUsedAbility -_08020868: .4byte gBattlescriptCurrInstr -_0802086C: .4byte BattleScript_FlinchPrevention -_08020870: - adds r0, r2, 0 - bl GetBattlerTurnOrderNum - ldr r1, _080208AC @ =gCurrentTurnActionNumber - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bhi _08020886 - bl _080210EC -_08020886: - mov r2, r9 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r6 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r1, _080208B0 @ =sStatusFlagsForMoveEffects - ldr r0, _080208B4 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] - bl _080210EC - .align 2, 0 -_080208AC: .4byte gCurrentTurnActionNumber -_080208B0: .4byte sStatusFlagsForMoveEffects -_080208B4: .4byte gBattleCommunication -_080208B8: - mov r3, r9 - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - mov r4, r8 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0x70 - ands r0, r1 - cmp r0, 0 - beq _080208D4 - bl _080210EC -_080208D4: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, _08020920 @ =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _08020924 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r2, r9 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - lsls r1, 4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r4, _08020928 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _0802092C @ =sMoveEffectBS_Ptrs - ldr r0, _08020930 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _08021108 - .align 2, 0 -_08020920: .4byte gLockedMoves -_08020924: .4byte gCurrentMove -_08020928: .4byte gBattlescriptCurrInstr -_0802092C: .4byte sMoveEffectBS_Ptrs -_08020930: .4byte gBattleCommunication -_08020934: - ldr r5, _08020984 @ =gBattlerAttacker - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - bne _0802096C - ldr r4, _08020988 @ =gPaydayMoney - ldrh r3, [r4] - ldr r2, _0802098C @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, r3, r0 - strh r0, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r3, r0 - bls _0802096C - ldr r3, _08020990 @ =0x0000ffff - adds r0, r3, 0 - strh r0, [r4] -_0802096C: - ldr r4, _08020994 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _08020998 @ =sMoveEffectBS_Ptrs - ldr r0, _0802099C @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _08021108 - .align 2, 0 -_08020984: .4byte gBattlerAttacker -_08020988: .4byte gPaydayMoney -_0802098C: .4byte gBattleMons -_08020990: .4byte 0x0000ffff -_08020994: .4byte gBattlescriptCurrInstr -_08020998: .4byte sMoveEffectBS_Ptrs -_0802099C: .4byte gBattleCommunication -_080209A0: - mov r4, r9 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - mov r1, r8 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080209B6 - b _080210EC -_080209B6: - bl Random - ldr r4, _080209D4 @ =gBattleCommunication - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x3 - strb r0, [r4, 0x3] - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - b _0802110A - .align 2, 0 -_080209D4: .4byte gBattleCommunication -_080209D8: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, _08020A14 @ =gLockedMoves - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldr r1, _08020A18 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - ldr r0, _08020A1C @ =gProtectStructs - ldrb r1, [r2] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1, 0x1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x1] - b _080210EC - .align 2, 0 -_08020A14: .4byte gLockedMoves -_08020A18: .4byte gCurrentMove -_08020A1C: .4byte gProtectStructs -_08020A20: - mov r3, r9 - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - mov r4, r8 - adds r4, 0x50 - adds r0, r4 - ldr r5, [r0] - movs r0, 0xE0 - lsls r0, 8 - ands r5, r0 - cmp r5, 0 - beq _08020A3C - b _080210EC -_08020A3C: - bl Random - mov r2, r9 - ldrb r1, [r2] - adds r2, r1, 0 - muls r2, r6 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x3 - lsls r1, 13 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - mov r3, r9 - ldrb r1, [r3] - ldr r2, _08020AD0 @ =gBattleStruct - ldr r0, [r2] - lsls r1, 1 - adds r1, r0 - ldr r6, _08020AD4 @ =gCurrentMove - ldrh r0, [r6] - strb r0, [r1, 0x4] - ldrb r1, [r3] - ldr r0, [r2] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r6] - lsrs r0, 8 - strb r0, [r1, 0x5] - ldrb r1, [r3] - ldr r0, [r2] - adds r1, r0 - ldr r0, _08020AD8 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r1, 0x14] - ldr r4, _08020ADC @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _08020AE0 @ =sMoveEffectBS_Ptrs - ldr r2, _08020AE4 @ =gBattleCommunication - ldrb r0, [r2, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4] - strb r5, [r2, 0x5] - ldr r3, _08020AE8 @ =gTrappingMoves - ldrh r0, [r3] - ldrh r4, [r6] - cmp r0, r4 - bne _08020AAA - b _0802110A -_08020AAA: - adds r1, r2, 0 - adds r2, r6, 0 -_08020AAE: - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _08020ABE - b _0802110A -_08020ABE: - ldrb r0, [r1, 0x5] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - ldrh r4, [r2] - cmp r0, r4 - bne _08020AAE - b _0802110A - .align 2, 0 -_08020AD0: .4byte gBattleStruct -_08020AD4: .4byte gCurrentMove -_08020AD8: .4byte gBattlerAttacker -_08020ADC: .4byte gBattlescriptCurrInstr -_08020AE0: .4byte sMoveEffectBS_Ptrs -_08020AE4: .4byte gBattleCommunication -_08020AE8: .4byte gTrappingMoves -_08020AEC: - ldr r1, _08020B1C @ =gBattleMoveDamage - ldr r0, _08020B20 @ =gHpDealt - ldr r0, [r0] - cmp r0, 0 - bge _08020AF8 - adds r0, 0x3 -_08020AF8: - asrs r0, 2 - str r0, [r1] - cmp r0, 0 - bne _08020B04 - movs r0, 0x1 - str r0, [r1] -_08020B04: - ldr r4, _08020B24 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _08020B28 @ =sMoveEffectBS_Ptrs - ldr r0, _08020B2C @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _08021108 - .align 2, 0 -_08020B1C: .4byte gBattleMoveDamage -_08020B20: .4byte gHpDealt -_08020B24: .4byte gBattlescriptCurrInstr -_08020B28: .4byte sMoveEffectBS_Ptrs -_08020B2C: .4byte gBattleCommunication -_08020B30: - ldrb r1, [r6, 0x3] - adds r1, 0xF2 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x10 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08020B4C - b _080210EC -_08020B4C: - ldr r2, _08020B68 @ =gBattleScripting - ldrb r1, [r6, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, _08020B6C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020B70 @ =BattleScript_StatUp - b _08021108 - .align 2, 0 -_08020B68: .4byte gBattleScripting -_08020B6C: .4byte gBattlescriptCurrInstr -_08020B70: .4byte BattleScript_StatUp -_08020B74: - movs r0, 0x70 - negs r0, r0 - ldrb r1, [r6, 0x3] - adds r1, 0xEB - lsls r1, 24 - lsrs r1, 24 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08020B92 - b _080210EC -_08020B92: - ldr r2, _08020BAC @ =gBattleScripting - ldrb r1, [r6, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, _08020BB0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020BB4 @ =BattleScript_StatDown - b _08021108 - .align 2, 0 -_08020BAC: .4byte gBattleScripting -_08020BB0: .4byte gBattlescriptCurrInstr -_08020BB4: .4byte BattleScript_StatDown -_08020BB8: - ldrb r1, [r6, 0x3] - adds r1, 0xDA - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x20 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08020BD4 - b _080210EC -_08020BD4: - ldr r2, _08020BF0 @ =gBattleScripting - ldrb r1, [r6, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, _08020BF4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020BF8 @ =BattleScript_StatUp - b _08021108 - .align 2, 0 -_08020BF0: .4byte gBattleScripting -_08020BF4: .4byte gBattlescriptCurrInstr -_08020BF8: .4byte BattleScript_StatUp -_08020BFC: - movs r0, 0x60 - negs r0, r0 - ldrb r1, [r6, 0x3] - adds r1, 0xD3 - lsls r1, 24 - lsrs r1, 24 - adds r2, r7, 0 - movs r3, 0 - bl ChangeStatBuffs - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08020C1A - b _080210EC -_08020C1A: - ldr r2, _08020C34 @ =gBattleScripting - ldrb r1, [r6, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x10] - strb r3, [r2, 0x11] - ldr r4, _08020C38 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020C3C @ =BattleScript_StatDown - b _08021108 - .align 2, 0 -_08020C34: .4byte gBattleScripting -_08020C38: .4byte gBattlescriptCurrInstr -_08020C3C: .4byte BattleScript_StatDown -_08020C40: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r2] - ldr r2, _08020C7C @ =gDisableStructs - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x19] - ldr r1, _08020C80 @ =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _08020C84 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - b _080210EC - .align 2, 0 -_08020C7C: .4byte gDisableStructs -_08020C80: .4byte gLockedMoves -_08020C84: .4byte gCurrentMove -_08020C88: - ldr r0, _08020CA4 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 16 -_08020C9E: - orrs r0, r1 - str r0, [r2] - b _080210EC - .align 2, 0 -_08020CA4: .4byte gBattlerAttacker -_08020CA8: - ldr r5, _08020D64 @ =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - beq _08020CB8 - b _080210EC -_08020CB8: - ldr r4, _08020D68 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08020CEA - ldr r0, [r5] - ldr r1, _08020D6C @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _08020D26 - ldr r0, _08020D70 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _08020CEA - b _080210EC -_08020CEA: - ldr r0, _08020D64 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08020D6C @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _08020D26 - ldr r0, _08020D70 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _08020D26 - ldr r0, _08020D74 @ =gWishFutureKnock - adds r0, 0x29 - adds r0, r6, r0 - ldrb r1, [r0] - ldr r3, _08020D78 @ =gBitTable - ldr r2, _08020D7C @ =gBattlerPartyIndexes - ldr r0, _08020D68 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08020D26 - b _080210EC -_08020D26: - ldr r2, _08020D80 @ =gBattleMons - ldr r1, _08020D84 @ =gBattlerTarget - ldrb r0, [r1] - movs r3, 0x58 - muls r0, r3 - adds r4, r0, r2 - ldrh r0, [r4, 0x2E] - adds r7, r1, 0 - mov r8, r2 - cmp r0, 0 - beq _08020D94 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _08020D94 - ldr r1, _08020D88 @ =gBattlescriptCurrInstr - ldr r0, _08020D8C @ =BattleScript_StickyHoldActivates - str r0, [r1] - ldr r1, _08020D90 @ =gLastUsedAbility - ldrb r0, [r7] - muls r0, r3 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _0802110A - .align 2, 0 -_08020D64: .4byte gBattleTypeFlags -_08020D68: .4byte gBattlerAttacker -_08020D6C: .4byte 0x00000902 -_08020D70: .4byte gTrainerBattleOpponent_A -_08020D74: .4byte gWishFutureKnock -_08020D78: .4byte gBitTable -_08020D7C: .4byte gBattlerPartyIndexes -_08020D80: .4byte gBattleMons -_08020D84: .4byte gBattlerTarget -_08020D88: .4byte gBattlescriptCurrInstr -_08020D8C: .4byte BattleScript_StickyHoldActivates -_08020D90: .4byte gLastUsedAbility -_08020D94: - ldr r4, _08020E60 @ =gBattlerAttacker - mov r10, r4 - ldrb r2, [r4] - movs r0, 0x58 - mov r9, r0 - mov r0, r9 - muls r0, r2 - add r0, r8 - ldrh r4, [r0, 0x2E] - cmp r4, 0 - beq _08020DAC - b _080210EC -_08020DAC: - ldrb r0, [r7] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - ldrh r3, [r0, 0x2E] - adds r1, r3, 0 - cmp r1, 0xAF - bne _08020DC0 - b _080210EC -_08020DC0: - adds r0, r3, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _08020DCE - b _080210EC -_08020DCE: - cmp r1, 0 - bne _08020DD4 - b _080210EC -_08020DD4: - ldr r5, _08020E64 @ =gBattleStruct - lsls r0, r2, 1 - adds r0, 0xD0 - ldr r1, [r5] - adds r1, r0 - ldr r2, _08020E68 @ =gLastUsedItem - strh r3, [r1] - strh r3, [r2] - ldrb r0, [r7] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - add r0, r8 - movs r6, 0 - strh r4, [r0, 0x2E] - ldr r4, _08020E6C @ =gActiveBattler - mov r1, r10 - ldrb r0, [r1] - strb r0, [r4] - str r2, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - mov r2, r10 - ldrb r0, [r2] - bl MarkBattlerForControllerExec - ldrb r0, [r7] - strb r0, [r4] - ldrb r0, [r7] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - mov r1, r8 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r7] - bl MarkBattlerForControllerExec - ldr r4, _08020E70 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020E74 @ =BattleScript_ItemSteal - str r0, [r4] - ldrb r0, [r7] - ldr r1, [r5] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r6, [r0] - ldrb r0, [r7] - ldr r1, [r5] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r6, [r0] - b _0802110A - .align 2, 0 -_08020E60: .4byte gBattlerAttacker -_08020E64: .4byte gBattleStruct -_08020E68: .4byte gLastUsedItem -_08020E6C: .4byte gActiveBattler -_08020E70: .4byte gBattlescriptCurrInstr -_08020E74: .4byte BattleScript_ItemSteal -_08020E78: - ldr r3, _08020EA8 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 19 - orrs r0, r1 - str r0, [r2] - ldr r2, _08020EAC @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08020EB0 @ =gBattlerAttacker - ldrb r1, [r1] - strb r1, [r0, 0x14] - b _080210EC - .align 2, 0 -_08020EA8: .4byte gBattlerTarget -_08020EAC: .4byte gDisableStructs -_08020EB0: .4byte gBattlerAttacker -_08020EB4: - ldr r0, _08020ECC @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 20 - b _08020C9E - .align 2, 0 -_08020ECC: .4byte gBattlerTarget -_08020ED0: - ldr r4, _08020EE0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020EE4 @ =BattleScript_AllStatsUp - b _08021108 - .align 2, 0 -_08020EE0: .4byte gBattlescriptCurrInstr -_08020EE4: .4byte BattleScript_AllStatsUp -_08020EE8: - ldr r4, _08020EF8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020EFC @ =BattleScript_RapidSpinAway - b _08021108 - .align 2, 0 -_08020EF8: .4byte gBattlescriptCurrInstr -_08020EFC: .4byte BattleScript_RapidSpinAway -_08020F00: - ldr r6, _08020F50 @ =gBattlerTarget - ldrb r0, [r6] - movs r2, 0x58 - muls r0, r2 - mov r1, r8 - adds r1, 0x4C - adds r5, r0, r1 - ldr r4, [r5] - movs r0, 0x40 - ands r0, r4 - cmp r0, 0 - bne _08020F1A - b _080210EC -_08020F1A: - movs r0, 0x41 - negs r0, r0 - ands r4, r0 - str r4, [r5] - ldr r4, _08020F54 @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r4, _08020F58 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020F5C @ =BattleScript_TargetPRLZHeal - b _08021108 - .align 2, 0 -_08020F50: .4byte gBattlerTarget -_08020F54: .4byte gActiveBattler -_08020F58: .4byte gBattlescriptCurrInstr -_08020F5C: .4byte BattleScript_TargetPRLZHeal -_08020F60: - ldr r4, _08020F70 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08020F74 @ =BattleScript_AtkDefDown - b _08021108 - .align 2, 0 -_08020F70: .4byte gBattlescriptCurrInstr -_08020F74: .4byte BattleScript_AtkDefDown -_08020F78: - ldr r4, _08020FA8 @ =gBattleMoveDamage - ldr r0, _08020FAC @ =gHpDealt - ldr r0, [r0] - movs r1, 0x3 - bl __divsi3 - str r0, [r4] - cmp r0, 0 - bne _08020F8E - movs r0, 0x1 - str r0, [r4] -_08020F8E: - ldr r4, _08020FB0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r1, _08020FB4 @ =sMoveEffectBS_Ptrs - ldr r0, _08020FB8 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - b _08021108 - .align 2, 0 -_08020FA8: .4byte gBattleMoveDamage -_08020FAC: .4byte gHpDealt -_08020FB0: .4byte gBattlescriptCurrInstr -_08020FB4: .4byte sMoveEffectBS_Ptrs -_08020FB8: .4byte gBattleCommunication -_08020FBC: - mov r4, r9 - ldrb r0, [r4] - movs r5, 0x58 - muls r0, r5 - mov r4, r8 - adds r4, 0x50 - adds r2, r0, r4 - ldr r1, [r2] - movs r0, 0xC0 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08020FD8 - b _080210EC -_08020FD8: - movs r0, 0x80 - lsls r0, 5 - orrs r1, r0 - str r1, [r2] - ldr r1, _08021010 @ =gLockedMoves - mov r2, r9 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldr r1, _08021014 @ =gCurrentMove - ldrh r1, [r1] - strh r1, [r0] - bl Random - mov r3, r9 - ldrb r1, [r3] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x1 - ands r1, r0 - adds r1, 0x2 - lsls r1, 10 - ldr r0, [r2] -_08021008: - orrs r0, r1 - str r0, [r2] - b _0802110A - .align 2, 0 -_08021010: .4byte gLockedMoves -_08021014: .4byte gCurrentMove -_08021018: - mov r5, r9 - ldrb r3, [r5] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - mov r2, r8 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0x3C - bne _08021058 - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _080210EC - ldr r0, _0802104C @ =gLastUsedAbility - strb r2, [r0] - ldr r1, _08021050 @ =gBattlescriptCurrInstr - ldr r0, _08021054 @ =BattleScript_StickyHoldActivates - str r0, [r1] - ldrb r0, [r5] - movs r1, 0x3C - bl RecordAbilityBattle - b _0802110A - .align 2, 0 -_0802104C: .4byte gLastUsedAbility -_08021050: .4byte gBattlescriptCurrInstr -_08021054: .4byte BattleScript_StickyHoldActivates -_08021058: - ldrh r0, [r1, 0x2E] - cmp r0, 0 - beq _080210EC - adds r0, r3, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080210D0 @ =gLastUsedItem - mov r3, r9 - ldrb r0, [r3] - muls r0, r4 - add r0, r8 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r3] - muls r0, r4 - add r0, r8 - movs r5, 0 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r2, _080210D4 @ =gWishFutureKnock - adds r2, 0x29 - adds r2, r6, r2 - ldr r3, _080210D8 @ =gBitTable - ldr r1, _080210DC @ =gBattlerPartyIndexes - mov r4, r9 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r4, _080210E0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _080210E4 @ =BattleScript_KnockedOff - str r0, [r4] - mov r1, r9 - ldrb r0, [r1] - ldr r2, _080210E8 @ =gBattleStruct - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r5, [r0] - mov r3, r9 - ldrb r0, [r3] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r5, [r0] - b _0802110A - .align 2, 0 -_080210D0: .4byte gLastUsedItem -_080210D4: .4byte gWishFutureKnock -_080210D8: .4byte gBitTable -_080210DC: .4byte gBattlerPartyIndexes -_080210E0: .4byte gBattlescriptCurrInstr -_080210E4: .4byte BattleScript_KnockedOff -_080210E8: .4byte gBattleStruct -_080210EC: - ldr r1, _080210F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0802110A - .align 2, 0 -_080210F8: .4byte gBattlescriptCurrInstr -_080210FC: - ldr r4, _0802111C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08021120 @ =BattleScript_SAtkDown2 -_08021108: - str r0, [r4] -_0802110A: - 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 -_0802111C: .4byte gBattlescriptCurrInstr -_08021120: .4byte BattleScript_SAtkDown2 - thumb_func_end SetMoveEffect - - thumb_func_start atk15_seteffectwithchance -atk15_seteffectwithchance: @ 8021124 - push {r4,lr} - ldr r2, _08021150 @ =gBattleMons - ldr r0, _08021154 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x20 - bne _08021160 - ldr r2, _08021158 @ =gBattleMoves - ldr r0, _0802115C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsls r4, r0, 1 - b _08021170 - .align 2, 0 -_08021150: .4byte gBattleMons -_08021154: .4byte gBattlerAttacker -_08021158: .4byte gBattleMoves -_0802115C: .4byte gCurrentMove -_08021160: - ldr r2, _08021190 @ =gBattleMoves - ldr r0, _08021194 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r4, [r0, 0x5] -_08021170: - ldr r3, _08021198 @ =gBattleCommunication - ldrb r2, [r3, 0x3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080211A0 - ldr r0, _0802119C @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080211A0 - movs r0, 0x7F - ands r0, r2 - strb r0, [r3, 0x3] - b _080211CE - .align 2, 0 -_08021190: .4byte gBattleMoves -_08021194: .4byte gCurrentMove -_08021198: .4byte gBattleCommunication -_0802119C: .4byte gMoveResultFlags -_080211A0: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bhi _080211EA - ldr r0, _080211D8 @ =gBattleCommunication - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _080211EA - ldr r0, _080211DC @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080211EA - cmp r4, 0x63 - bls _080211E0 -_080211CE: - movs r0, 0 - movs r1, 0x80 - bl SetMoveEffect - b _080211F2 - .align 2, 0 -_080211D8: .4byte gBattleCommunication -_080211DC: .4byte gMoveResultFlags -_080211E0: - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - b _080211F2 -_080211EA: - ldr r1, _08021204 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080211F2: - ldr r0, _08021208 @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x3] - ldr r0, _0802120C @ =gBattleScripting - strb r1, [r0, 0x16] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021204: .4byte gBattlescriptCurrInstr -_08021208: .4byte gBattleCommunication -_0802120C: .4byte gBattleScripting - thumb_func_end atk15_seteffectwithchance - - thumb_func_start atk16_seteffectprimary -atk16_seteffectprimary: @ 8021210 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl SetMoveEffect - pop {r0} - bx r0 - thumb_func_end atk16_seteffectprimary - - thumb_func_start atk17_seteffectsecondary -atk17_seteffectsecondary: @ 8021220 - push {lr} - movs r0, 0 - movs r1, 0 - bl SetMoveEffect - pop {r0} - bx r0 - thumb_func_end atk17_seteffectsecondary - - thumb_func_start atk18_clearstatusfromeffect -atk18_clearstatusfromeffect: @ 8021230 - push {lr} - ldr r0, _08021254 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r2, _08021258 @ =gActiveBattler - strb r0, [r2] - ldr r3, _0802125C @ =gBattleCommunication - ldrb r0, [r3, 0x3] - cmp r0, 0x6 - bhi _08021264 - ldr r1, _08021260 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x4C - b _0802126E - .align 2, 0 -_08021254: .4byte gBattlescriptCurrInstr -_08021258: .4byte gActiveBattler -_0802125C: .4byte gBattleCommunication -_08021260: .4byte gBattleMons -_08021264: - ldr r1, _08021298 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 -_0802126E: - adds r2, r1 - ldr r1, _0802129C @ =sStatusFlagsForMoveEffects - ldrb r0, [r3, 0x3] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r0, _080212A0 @ =gBattleCommunication - movs r2, 0 - strb r2, [r0, 0x3] - ldr r1, _080212A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - ldr r0, _080212A8 @ =gBattleScripting - strb r2, [r0, 0x16] - pop {r0} - bx r0 - .align 2, 0 -_08021298: .4byte gBattleMons -_0802129C: .4byte sStatusFlagsForMoveEffects -_080212A0: .4byte gBattleCommunication -_080212A4: .4byte gBattlescriptCurrInstr -_080212A8: .4byte gBattleScripting - thumb_func_end atk18_clearstatusfromeffect - - thumb_func_start atk19_tryfaintmon -atk19_tryfaintmon: @ 80212AC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, _08021318 @ =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - beq _08021330 - ldrb r0, [r2, 0x1] - bl GetBattlerForBattleScript - ldr r5, _0802131C @ =gActiveBattler - strb r0, [r5] - ldr r2, _08021320 @ =gHitMarker - ldr r1, _08021324 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _080212E4 - b _0802158C -_080212E4: - ldr r1, [r6] - ldrb r4, [r1, 0x3] - ldrb r0, [r1, 0x4] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x5] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x6] - lsls r0, 24 - orrs r4, r0 - bl BattleScriptPop - str r4, [r6] - ldrb r0, [r5] - bl GetBattlerSide - ldr r1, _08021328 @ =gSideStatuses - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, _0802132C @ =0x0000fdff - ands r1, r2 - strh r1, [r0] - b _08021592 - .align 2, 0 -_08021318: .4byte gBattlescriptCurrInstr -_0802131C: .4byte gActiveBattler -_08021320: .4byte gHitMarker -_08021324: .4byte gBitTable -_08021328: .4byte gSideStatuses -_0802132C: .4byte 0x0000fdff -_08021330: - ldrb r0, [r2, 0x1] - cmp r0, 0x1 - bne _08021358 - ldr r1, _08021348 @ =gActiveBattler - ldr r0, _0802134C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _08021350 @ =gBattlerTarget - ldrb r0, [r0] - mov r9, r0 - ldr r4, _08021354 @ =BattleScript_FaintAttacker - b _08021368 - .align 2, 0 -_08021348: .4byte gActiveBattler -_0802134C: .4byte gBattlerAttacker -_08021350: .4byte gBattlerTarget -_08021354: .4byte BattleScript_FaintAttacker -_08021358: - ldr r1, _080213D0 @ =gActiveBattler - ldr r0, _080213D4 @ =gBattlerTarget - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _080213D8 @ =gBattlerAttacker - ldrb r0, [r0] - mov r9, r0 - ldr r4, _080213DC @ =BattleScript_FaintTarget -_08021368: - mov r8, r1 - ldr r0, _080213E0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _080213E4 @ =gBitTable - mov r7, r8 - ldrb r3, [r7] - lsls r0, r3, 2 - adds r0, r2 - ldr r2, [r0] - ands r1, r2 - cmp r1, 0 - beq _08021382 - b _0802158C -_08021382: - ldr r1, _080213E8 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08021392 - b _0802158C -_08021392: - ldr r5, _080213EC @ =gHitMarker - lsls r1, r2, 28 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - ldr r0, [r6] - adds r0, 0x7 - bl BattleScriptPush - str r4, [r6] - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080213F4 - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 15 - orrs r0, r1 - str r0, [r5] - ldr r1, _080213F0 @ =gBattleResults - ldrb r0, [r1] - cmp r0, 0xFE - bhi _080213C8 - adds r0, 0x1 - strb r0, [r1] -_080213C8: - ldrb r0, [r7] - bl AdjustFriendshipOnBattleFaint - b _0802142C - .align 2, 0 -_080213D0: .4byte gActiveBattler -_080213D4: .4byte gBattlerTarget -_080213D8: .4byte gBattlerAttacker -_080213DC: .4byte BattleScript_FaintTarget -_080213E0: .4byte gAbsentBattlerFlags -_080213E4: .4byte gBitTable -_080213E8: .4byte gBattleMons -_080213EC: .4byte gHitMarker -_080213F0: .4byte gBattleResults -_080213F4: - ldr r4, _0802154C @ =gBattleResults - ldrb r0, [r4, 0x1] - cmp r0, 0xFE - bhi _08021400 - adds r0, 0x1 - strb r0, [r4, 0x1] -_08021400: - ldr r1, _08021550 @ =gBattlerPartyIndexes - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021554 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - strh r0, [r4, 0x20] - ldr r0, _08021558 @ =gBattleStruct - ldr r0, [r0] - movs r3, 0xC1 - lsls r3, 1 - adds r1, r0, r3 - ldr r0, _0802155C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r1] -_0802142C: - ldr r2, _08021560 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802146A - ldr r6, _08021564 @ =gBattleMons - ldr r0, _0802155C @ =gBattlerAttacker - ldrb r0, [r0] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0802146A - movs r0, 0x41 - negs r0, r0 - ands r1, r0 - str r1, [r2] - ldr r4, _08021568 @ =gBattlescriptCurrInstr - ldr r0, [r4] - bl BattleScriptPush - ldr r1, _0802156C @ =gBattleMoveDamage - mov r0, r9 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r0, _08021570 @ =BattleScript_DestinyBondTakesLife - str r0, [r4] -_0802146A: - ldr r1, _08021574 @ =gStatuses3 - ldr r6, _08021578 @ =gBattlerTarget - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 7 - ands r0, r1 - cmp r0, 0 - bne _08021482 - b _08021592 -_08021482: - ldr r0, _08021560 @ =gHitMarker - ldr r5, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r5, r0 - cmp r5, 0 - beq _08021492 - b _08021592 -_08021492: - ldr r0, _0802155C @ =gBattlerAttacker - mov r8, r0 - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r6] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08021592 - ldr r1, _08021564 @ =gBattleMons - mov r9, r1 - mov r2, r8 - ldrb r1, [r2] - movs r7, 0x58 - adds r2, r1, 0 - muls r2, r7 - mov r3, r9 - adds r0, r2, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08021592 - ldr r0, _0802157C @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xA5 - beq _08021592 - ldr r0, _08021558 @ =gBattleStruct - ldr r0, [r0] - adds r0, r1, r0 - adds r0, 0x80 - ldrb r4, [r0] - adds r0, r4, r2 - mov r6, r9 - adds r6, 0x24 - adds r0, r6 - strb r5, [r0] - ldr r5, _08021568 @ =gBattlescriptCurrInstr - ldr r0, [r5] - bl BattleScriptPush - ldr r0, _08021580 @ =BattleScript_GrudgeTakesPp - str r0, [r5] - ldr r5, _08021584 @ =gActiveBattler - mov r1, r8 - ldrb r0, [r1] - strb r0, [r5] - adds r1, r4, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r1, _08021588 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r4, 1 - mov r2, r8 - ldrb r0, [r2] - muls r0, r7 - adds r0, r4, r0 - mov r2, r9 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - mov r3, r8 - ldrb r0, [r3] - muls r0, r7 - adds r4, r0 - adds r4, r2 - ldrh r0, [r4] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - b _08021592 - .align 2, 0 -_0802154C: .4byte gBattleResults -_08021550: .4byte gBattlerPartyIndexes -_08021554: .4byte gEnemyParty -_08021558: .4byte gBattleStruct -_0802155C: .4byte gBattlerAttacker -_08021560: .4byte gHitMarker -_08021564: .4byte gBattleMons -_08021568: .4byte gBattlescriptCurrInstr -_0802156C: .4byte gBattleMoveDamage -_08021570: .4byte BattleScript_DestinyBondTakesLife -_08021574: .4byte gStatuses3 -_08021578: .4byte gBattlerTarget -_0802157C: .4byte gCurrentMove -_08021580: .4byte BattleScript_GrudgeTakesPp -_08021584: .4byte gActiveBattler -_08021588: .4byte gBattleTextBuff1 -_0802158C: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_08021592: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk19_tryfaintmon - - thumb_func_start atk1A_dofaintanimation -atk1A_dofaintanimation: @ 80215A0 - push {r4,r5,lr} - ldr r0, _080215D0 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _080215CA - ldr r5, _080215D4 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _080215D8 @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - bl BtlController_EmitFaintAnimation - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_080215CA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080215D0: .4byte gBattleControllerExecFlags -_080215D4: .4byte gBattlescriptCurrInstr -_080215D8: .4byte gActiveBattler - thumb_func_end atk1A_dofaintanimation - - thumb_func_start atk1B_cleareffectsonfaint -atk1B_cleareffectsonfaint: @ 80215DC - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _08021630 @ =gBattleControllerExecFlags - ldr r6, [r0] - cmp r6, 0 - bne _08021628 - ldr r5, _08021634 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08021638 @ =gActiveBattler - strb r0, [r4] - ldr r1, _0802163C @ =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - str r6, [r0] - ldrb r0, [r4] - muls r0, r2 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - bl sub_8012BC8 - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_08021628: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08021630: .4byte gBattleControllerExecFlags -_08021634: .4byte gBattlescriptCurrInstr -_08021638: .4byte gActiveBattler -_0802163C: .4byte gBattleMons - thumb_func_end atk1B_cleareffectsonfaint - - thumb_func_start atk1C_jumpifstatus -atk1C_jumpifstatus: @ 8021640 - push {r4,r5,lr} - ldr r5, _0802169C @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, _080216A0 @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _080216A4 - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _080216A4 - str r3, [r5] - b _080216AC - .align 2, 0 -_0802169C: .4byte gBattlescriptCurrInstr -_080216A0: .4byte gBattleMons -_080216A4: - ldr r1, _080216B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_080216AC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080216B4: .4byte gBattlescriptCurrInstr - thumb_func_end atk1C_jumpifstatus - - thumb_func_start atk1D_jumpifstatus2 -atk1D_jumpifstatus2: @ 80216B8 - push {r4,r5,lr} - ldr r5, _08021714 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r0, 24 - ldr r2, [r5] - ldrb r4, [r2, 0x2] - ldrb r1, [r2, 0x3] - lsls r1, 8 - adds r4, r1 - ldrb r1, [r2, 0x4] - lsls r1, 16 - adds r4, r1 - ldrb r1, [r2, 0x5] - lsls r1, 24 - adds r4, r1 - ldrb r3, [r2, 0x6] - ldrb r1, [r2, 0x7] - lsls r1, 8 - adds r3, r1 - ldrb r1, [r2, 0x8] - lsls r1, 16 - adds r3, r1 - ldrb r1, [r2, 0x9] - lsls r1, 24 - adds r3, r1 - ldr r2, _08021718 @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r1, r0 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - beq _0802171C - adds r0, r1, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0802171C - str r3, [r5] - b _08021724 - .align 2, 0 -_08021714: .4byte gBattlescriptCurrInstr -_08021718: .4byte gBattleMons -_0802171C: - ldr r1, _0802172C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] -_08021724: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802172C: .4byte gBattlescriptCurrInstr - thumb_func_end atk1D_jumpifstatus2 - - thumb_func_start atk1E_jumpifability -atk1E_jumpifability: @ 8021730 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r6, _08021784 @ =gBattlescriptCurrInstr - ldr r2, [r6] - ldrb r5, [r2, 0x2] - mov r8, r5 - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r7, r1, r0 - ldrb r0, [r2, 0x1] - cmp r0, 0x8 - bne _08021790 - ldr r0, _08021788 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xD - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08021804 - ldr r1, _0802178C @ =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _080217EC - .align 2, 0 -_08021784: .4byte gBattlescriptCurrInstr -_08021788: .4byte gBattlerAttacker -_0802178C: .4byte gLastUsedAbility -_08021790: - cmp r0, 0x9 - bne _080217C8 - ldr r0, _080217C0 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r2, r5, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08021804 - ldr r1, _080217C4 @ =gLastUsedAbility - strb r5, [r1] - str r7, [r6] - subs r4, 0x1 - lsls r0, r4, 24 - lsrs r0, 24 - ldrb r1, [r1] - b _080217EC - .align 2, 0 -_080217C0: .4byte gBattlerAttacker -_080217C4: .4byte gLastUsedAbility -_080217C8: - ldrb r0, [r2, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080217F8 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r1, [r0] - cmp r1, r8 - bne _08021804 - ldr r0, _080217FC @ =gLastUsedAbility - strb r1, [r0] - str r7, [r6] - ldrb r1, [r0] - adds r0, r4, 0 -_080217EC: - bl RecordAbilityBattle - ldr r0, _08021800 @ =gBattleScripting - strb r4, [r0, 0x15] - b _0802180A - .align 2, 0 -_080217F8: .4byte gBattleMons -_080217FC: .4byte gLastUsedAbility -_08021800: .4byte gBattleScripting -_08021804: - ldr r0, [r6] - adds r0, 0x7 - str r0, [r6] -_0802180A: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk1E_jumpifability - - thumb_func_start atk1F_jumpifsideaffecting -atk1F_jumpifsideaffecting: @ 8021818 - push {r4-r6,lr} - ldr r0, _08021830 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r4, [r0, 0x1] - cmp r4, 0x1 - bne _08021838 - ldr r0, _08021834 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerPosition - b _08021842 - .align 2, 0 -_08021830: .4byte gBattlescriptCurrInstr -_08021834: .4byte gBattlerAttacker -_08021838: - ldr r0, _08021878 @ =gBattlerTarget - ldrb r0, [r0] - bl GetBattlerPosition - movs r4, 0x1 -_08021842: - ands r4, r0 - ldr r6, _0802187C @ =gBattlescriptCurrInstr - ldr r3, [r6] - ldrb r2, [r3, 0x2] - ldrb r0, [r3, 0x3] - lsls r0, 8 - orrs r2, r0 - ldrb r1, [r3, 0x4] - ldrb r0, [r3, 0x5] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 24 - adds r5, r1, r0 - ldr r1, _08021880 @ =gSideStatuses - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _08021884 - str r5, [r6] - b _0802188A - .align 2, 0 -_08021878: .4byte gBattlerTarget -_0802187C: .4byte gBattlescriptCurrInstr -_08021880: .4byte gSideStatuses -_08021884: - adds r0, r3, 0 - adds r0, 0x8 - str r0, [r6] -_0802188A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk1F_jumpifsideaffecting - - thumb_func_start atk20_jumpifstat -atk20_jumpifstat: @ 8021890 - push {r4,r5,lr} - movs r5, 0 - ldr r4, _080218C4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080218C8 @ =gBattleMons - ldr r3, [r4] - movs r1, 0x58 - muls r0, r1 - ldrb r1, [r3, 0x3] - adds r0, r1 - adds r2, 0x18 - adds r0, r2 - ldrb r2, [r0] - ldrb r0, [r3, 0x2] - cmp r0, 0x5 - bhi _0802194E - lsls r0, 2 - ldr r1, _080218CC @ =_080218D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080218C4: .4byte gBattlescriptCurrInstr -_080218C8: .4byte gBattleMons -_080218CC: .4byte _080218D0 - .align 2, 0 -_080218D0: - .4byte _080218E8 - .4byte _080218F8 - .4byte _08021908 - .4byte _08021918 - .4byte _08021928 - .4byte _0802193C -_080218E8: - ldr r0, _080218F4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bne _0802194E - b _08021948 - .align 2, 0 -_080218F4: .4byte gBattlescriptCurrInstr -_080218F8: - ldr r0, _08021904 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - beq _0802194E - b _08021948 - .align 2, 0 -_08021904: .4byte gBattlescriptCurrInstr -_08021908: - ldr r0, _08021914 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bls _0802194E - b _08021948 - .align 2, 0 -_08021914: .4byte gBattlescriptCurrInstr -_08021918: - ldr r0, _08021924 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r2, r0 - bcs _0802194E - b _08021948 - .align 2, 0 -_08021924: .4byte gBattlescriptCurrInstr -_08021928: - ldr r0, _08021938 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - beq _0802194E - b _08021948 - .align 2, 0 -_08021938: .4byte gBattlescriptCurrInstr -_0802193C: - ldr r0, _08021970 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x4] - ands r2, r0 - cmp r2, 0 - bne _0802194E -_08021948: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0802194E: - cmp r5, 0 - beq _08021974 - ldr r3, _08021970 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - b _0802197C - .align 2, 0 -_08021970: .4byte gBattlescriptCurrInstr -_08021974: - ldr r1, _08021984 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] -_0802197C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08021984: .4byte gBattlescriptCurrInstr - thumb_func_end atk20_jumpifstat - - thumb_func_start atk21_jumpifstatus3condition -atk21_jumpifstatus3condition: @ 8021988 - push {r4-r6,lr} - ldr r4, _080219DC @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r5, _080219E0 @ =gActiveBattler - strb r0, [r5] - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r6, r1, r0 - ldrb r1, [r2, 0x7] - ldrb r0, [r2, 0x8] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0xA] - lsls r0, 24 - adds r3, r1, r0 - ldrb r0, [r2, 0x6] - cmp r0, 0 - beq _080219E8 - ldr r0, _080219E4 @ =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - bne _08021A00 - b _080219F8 - .align 2, 0 -_080219DC: .4byte gBattlescriptCurrInstr -_080219E0: .4byte gActiveBattler -_080219E4: .4byte gStatuses3 -_080219E8: - ldr r0, _080219FC @ =gStatuses3 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - ands r0, r6 - cmp r0, 0 - beq _08021A00 -_080219F8: - str r3, [r4] - b _08021A06 - .align 2, 0 -_080219FC: .4byte gStatuses3 -_08021A00: - adds r0, r2, 0 - adds r0, 0xB - str r0, [r4] -_08021A06: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk21_jumpifstatus3condition - - thumb_func_start atk22_jumpiftype -atk22_jumpiftype: @ 8021A0C - push {r4-r6,lr} - ldr r4, _08021A54 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldrb r5, [r3, 0x2] - ldrb r2, [r3, 0x3] - ldrb r1, [r3, 0x4] - lsls r1, 8 - adds r2, r1 - ldrb r1, [r3, 0x5] - lsls r1, 16 - adds r2, r1 - ldrb r1, [r3, 0x6] - lsls r1, 24 - adds r6, r2, r1 - ldr r2, _08021A58 @ =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r5 - beq _08021A50 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r5 - bne _08021A5C -_08021A50: - str r6, [r4] - b _08021A60 - .align 2, 0 -_08021A54: .4byte gBattlescriptCurrInstr -_08021A58: .4byte gBattleMons -_08021A5C: - adds r0, r3, 0x7 - str r0, [r4] -_08021A60: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk22_jumpiftype - - thumb_func_start atk23_getexp -atk23_getexp: @ 8021A68 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - ldr r0, _08021AB0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x50 - mov r9, r0 - ldr r0, _08021AB4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _08021AB8 @ =gBattlerFainted - strb r0, [r1] - ldr r2, _08021ABC @ =gSentPokesToOpponent - movs r1, 0x2 - ands r1, r0 - lsls r1, 24 - lsrs r1, 25 - adds r1, r2 - ldrb r1, [r1] - mov r8, r1 - ldr r0, _08021AC0 @ =gBattleScripting - ldrb r0, [r0, 0x1C] - cmp r0, 0x6 - bls _08021AA4 - bl _080223DA -_08021AA4: - lsls r0, 2 - ldr r1, _08021AC4 @ =_08021AC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08021AB0: .4byte gBattleStruct -_08021AB4: .4byte gBattlescriptCurrInstr -_08021AB8: .4byte gBattlerFainted -_08021ABC: .4byte gSentPokesToOpponent -_08021AC0: .4byte gBattleScripting -_08021AC4: .4byte _08021AC8 - .align 2, 0 -_08021AC8: - .4byte _08021AE4 - .4byte _08021B50 - .4byte _08021C6A - .4byte _08021F78 - .4byte _0802207C - .4byte _08022368 - .4byte _080223B0 -_08021AE4: - ldr r4, _08021B34 @ =gBattlerFainted - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08021AF8 - bl _080223A4 -_08021AF8: - ldr r0, _08021B38 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08021B3C @ =0x00080982 - ands r0, r1 - cmp r0, 0 - beq _08021B08 - bl _080223A4 -_08021B08: - ldr r1, _08021B40 @ =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - strb r0, [r1, 0x1C] - ldr r0, _08021B44 @ =gBattleStruct - ldr r2, [r0] - adds r2, 0xDF - ldr r3, _08021B48 @ =gBitTable - ldr r1, _08021B4C @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - bl _080223DA - .align 2, 0 -_08021B34: .4byte gBattlerFainted -_08021B38: .4byte gBattleTypeFlags -_08021B3C: .4byte 0x00080982 -_08021B40: .4byte gBattleScripting -_08021B44: .4byte gBattleStruct -_08021B48: .4byte gBitTable -_08021B4C: .4byte gBattlerPartyIndexes -_08021B50: - movs r5, 0 - movs r7, 0 -_08021B54: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08021BA4 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08021BC2 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08021BC2 - ldr r0, _08021BA8 @ =gBitTable - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _08021B88 - adds r5, 0x1 -_08021B88: - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _08021BB4 - ldr r0, _08021BAC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, _08021BB0 @ =0x0000311a - adds r0, r2 - ldrb r4, [r0] - b _08021BBC - .align 2, 0 -_08021BA4: .4byte gPlayerParty -_08021BA8: .4byte gBitTable -_08021BAC: .4byte gSaveBlock1Ptr -_08021BB0: .4byte 0x0000311a -_08021BB4: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_08021BBC: - cmp r4, 0x19 - bne _08021BC2 - adds r6, 0x1 -_08021BC2: - adds r7, 0x1 - cmp r7, 0x5 - ble _08021B54 - ldr r3, _08021C28 @ =gBaseStats - ldr r2, _08021C2C @ =gBattleMons - ldr r0, _08021C30 @ =gBattlerFainted - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x9] - adds r1, 0x2A - ldrb r0, [r1] - muls r0, r2 - movs r1, 0x7 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r6, 0 - beq _08021C38 - lsrs r4, r0, 17 - adds r0, r4, 0 - adds r1, r5, 0 - bl __divsi3 - mov r1, r9 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _08021C0E - movs r0, 0x1 - strh r0, [r1] -_08021C0E: - ldr r5, _08021C34 @ =gExpShareExp - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - bne _08021C52 - movs r0, 0x1 - strh r0, [r5] - b _08021C52 - .align 2, 0 -_08021C28: .4byte gBaseStats -_08021C2C: .4byte gBattleMons -_08021C30: .4byte gBattlerFainted -_08021C34: .4byte gExpShareExp -_08021C38: - adds r0, r1, 0 - adds r1, r5, 0 - bl __divsi3 - mov r2, r9 - strh r0, [r2] - lsls r0, 16 - cmp r0, 0 - bne _08021C4E - movs r0, 0x1 - strh r0, [r2] -_08021C4E: - ldr r0, _08021C9C @ =gExpShareExp - strh r6, [r0] -_08021C52: - ldr r1, _08021CA0 @ =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1, 0x1C] - ldr r1, _08021CA4 @ =gBattleStruct - ldr r0, [r1] - strb r2, [r0, 0x10] - ldr r0, [r1] - adds r0, 0x53 - mov r4, r8 - strb r4, [r0] -_08021C6A: - ldr r0, _08021CA8 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _08021C74 - b _080223DA -_08021C74: - ldr r0, _08021CA4 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021CAC @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _08021CB8 - ldr r0, _08021CB0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08021CB4 @ =0x0000311a - adds r0, r1 - ldrb r4, [r0] - b _08021CC0 - .align 2, 0 -_08021C9C: .4byte gExpShareExp -_08021CA0: .4byte gBattleScripting -_08021CA4: .4byte gBattleStruct -_08021CA8: .4byte gBattleControllerExecFlags -_08021CAC: .4byte gPlayerParty -_08021CB0: .4byte gSaveBlock1Ptr -_08021CB4: .4byte 0x0000311a -_08021CB8: - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 -_08021CC0: - ldr r5, _08021CE0 @ =gBattleStruct - cmp r4, 0x19 - beq _08021CE8 - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x53 - ldrb r0, [r1] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - bne _08021CE8 - lsrs r0, 1 - strb r0, [r1] - ldr r1, _08021CE4 @ =gBattleScripting - b _08021D0C - .align 2, 0 -_08021CE0: .4byte gBattleStruct -_08021CE4: .4byte gBattleScripting -_08021CE8: - ldr r0, [r5] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021D18 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - bne _08021D24 - ldr r1, [r5] - adds r1, 0x53 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - ldr r1, _08021D1C @ =gBattleScripting - movs r2, 0 -_08021D0C: - movs r0, 0x5 - strb r0, [r1, 0x1C] - ldr r0, _08021D20 @ =gBattleMoveDamage - str r2, [r0] - b _080223DA - .align 2, 0 -_08021D18: .4byte gPlayerParty -_08021D1C: .4byte gBattleScripting -_08021D20: .4byte gBattleMoveDamage -_08021D24: - ldr r0, _08021D88 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08021D8C @ =0x00010008 - ands r0, r1 - cmp r0, 0 - bne _08021D52 - ldr r0, _08021D90 @ =gBattleMons - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08021D52 - ldr r0, [r5] - ldrb r0, [r0, 0x12] - cmp r0, 0 - bne _08021D52 - bl BattleStopLowHpSound - ldr r0, _08021D94 @ =0x00000137 - bl PlayBGM - ldr r1, [r5] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] -_08021D52: - ldr r5, _08021D98 @ =gBattleStruct - ldr r0, [r5] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021D9C @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08021D6C - b _08021F4C -_08021D6C: - ldr r0, [r5] - adds r0, 0x53 - ldrb r0, [r0] - movs r3, 0x1 - ands r3, r0 - cmp r3, 0 - beq _08021DA4 - ldr r1, _08021DA0 @ =gBattleMoveDamage - mov r2, r9 - ldrh r0, [r2] - str r0, [r1] - mov r9, r1 - b _08021DAA - .align 2, 0 -_08021D88: .4byte gBattleTypeFlags -_08021D8C: .4byte 0x00010008 -_08021D90: .4byte gBattleMons -_08021D94: .4byte 0x00000137 -_08021D98: .4byte gBattleStruct -_08021D9C: .4byte gPlayerParty -_08021DA0: .4byte gBattleMoveDamage -_08021DA4: - ldr r0, _08021E28 @ =gBattleMoveDamage - str r3, [r0] - mov r9, r0 -_08021DAA: - cmp r4, 0x19 - bne _08021DBA - ldr r0, _08021E2C @ =gExpShareExp - ldrh r1, [r0] - mov r2, r9 - ldr r0, [r2] - adds r0, r1 - str r0, [r2] -_08021DBA: - cmp r4, 0x28 - bne _08021DCE - mov r4, r9 - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] -_08021DCE: - ldr r5, _08021E30 @ =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08021DEA - ldr r4, _08021E28 @ =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] -_08021DEA: - ldr r0, _08021E34 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021E38 @ =gPlayerParty - adds r0, r1 - bl IsTradedMon - lsls r0, 24 - cmp r0, 0 - beq _08021E3C - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - bne _08021E3C - ldr r4, _08021E28 @ =gBattleMoveDamage - ldr r1, [r4] - movs r0, 0x96 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - movs r7, 0xA5 - lsls r7, 1 - mov r9, r4 - b _08021E42 - .align 2, 0 -_08021E28: .4byte gBattleMoveDamage -_08021E2C: .4byte gExpShareExp -_08021E30: .4byte gBattleTypeFlags -_08021E34: .4byte gBattleStruct -_08021E38: .4byte gPlayerParty -_08021E3C: - ldr r7, _08021E78 @ =0x00000149 - ldr r0, _08021E7C @ =gBattleMoveDamage - mov r9, r0 -_08021E42: - ldr r0, _08021E80 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08021EAE - ldr r0, _08021E84 @ =gBattlerPartyIndexes - ldr r1, _08021E88 @ =gBattleStruct - ldr r4, [r1] - ldrh r0, [r0, 0x4] - adds r5, r1, 0 - ldr r3, _08021E8C @ =gBitTable - ldr r2, _08021E90 @ =gAbsentBattlerFlags - ldrb r1, [r4, 0x10] - cmp r0, r1 - bne _08021E94 - ldrb r1, [r2] - ldr r0, [r3, 0x8] - ands r1, r0 - cmp r1, 0 - bne _08021E94 - adds r1, r4, 0 - adds r1, 0x8F - movs r0, 0x2 - strb r0, [r1] - b _08021EB6 - .align 2, 0 -_08021E78: .4byte 0x00000149 -_08021E7C: .4byte gBattleMoveDamage -_08021E80: .4byte gBattleTypeFlags -_08021E84: .4byte gBattlerPartyIndexes -_08021E88: .4byte gBattleStruct -_08021E8C: .4byte gBitTable -_08021E90: .4byte gAbsentBattlerFlags -_08021E94: - ldrb r2, [r2] - ldr r0, [r3] - ands r2, r0 - cmp r2, 0 - bne _08021EA6 - ldr r0, [r5] - adds r0, 0x8F - strb r2, [r0] - b _08021EB6 -_08021EA6: - ldr r0, [r5] - adds r0, 0x8F - movs r1, 0x2 - b _08021EB4 -_08021EAE: - ldr r0, _08021F5C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x8F -_08021EB4: - strb r1, [r0] -_08021EB6: - ldr r1, _08021F60 @ =gBattleTextBuff1 - movs r2, 0 - mov r12, r2 - movs r3, 0xFD - strb r3, [r1] - movs r5, 0x4 - strb r5, [r1, 0x1] - ldr r6, _08021F5C @ =gBattleStruct - ldr r2, [r6] - movs r4, 0x8F - adds r4, r2 - mov r8, r4 - ldrb r0, [r4] - strb r0, [r1, 0x2] - ldrb r0, [r2, 0x10] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08021F64 @ =gBattleTextBuff2 - strb r3, [r1] - mov r0, r12 - strb r0, [r1, 0x1] - strb r7, [r1, 0x2] - movs r4, 0xFF - lsls r4, 8 - ands r7, r4 - asrs r0, r7, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - ldr r1, _08021F68 @ =gBattleTextBuff3 - strb r3, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - mov r0, r9 - ldr r2, [r0] - strb r2, [r1, 0x4] - adds r0, r2, 0 - ands r0, r4 - asrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r2 - asrs r0, 16 - strb r0, [r1, 0x6] - lsrs r2, 24 - strb r2, [r1, 0x7] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x8] - mov r2, r8 - ldrb r1, [r2] - movs r0, 0xD - bl PrepareStringBattle - ldr r0, [r6] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08021F6C @ =gPlayerParty - adds r0, r1 - ldr r3, _08021F70 @ =gBattleMons - ldr r1, _08021F74 @ =gBattlerFainted - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r1, [r1] - bl MonGainEVs -_08021F4C: - ldr r0, _08021F5C @ =gBattleStruct - ldr r1, [r0] - adds r1, 0x53 - ldrb r0, [r1] - lsrs r0, 1 - strb r0, [r1] - b _08022052 - .align 2, 0 -_08021F5C: .4byte gBattleStruct -_08021F60: .4byte gBattleTextBuff1 -_08021F64: .4byte gBattleTextBuff2 -_08021F68: .4byte gBattleTextBuff3 -_08021F6C: .4byte gPlayerParty -_08021F70: .4byte gBattleMons -_08021F74: .4byte gBattlerFainted -_08021F78: - ldr r0, _0802205C @ =gBattleControllerExecFlags - ldr r2, [r0] - cmp r2, 0 - beq _08021F82 - b _080223DA -_08021F82: - ldr r1, _08022060 @ =gBattleBufferB - ldr r7, _08022064 @ =gBattleStruct - ldr r0, [r7] - adds r0, 0x8F - ldrb r0, [r0] - lsls r0, 9 - adds r0, r1 - strb r2, [r0] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08022068 @ =gPlayerParty - adds r0, r5 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08022052 - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _08022052 - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3A - bl GetMonData - ldr r4, _0802206C @ =gBattleResources - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3B - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x2] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3C - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x4] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3D - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x6] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3E - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0x8] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0x3F - bl GetMonData - ldr r1, [r4] - ldr r1, [r1, 0x10] - strh r0, [r1, 0xA] - ldr r4, _08022070 @ =gActiveBattler - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0x8F - ldrb r0, [r0] - strb r0, [r4] - ldrb r1, [r1, 0x10] - ldr r0, _08022074 @ =gBattleMoveDamage - ldrh r2, [r0] - movs r0, 0 - bl BtlController_EmitExpUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08022052: - ldr r1, _08022078 @ =gBattleScripting - ldrb r0, [r1, 0x1C] - adds r0, 0x1 - strb r0, [r1, 0x1C] - b _080223DA - .align 2, 0 -_0802205C: .4byte gBattleControllerExecFlags -_08022060: .4byte gBattleBufferB -_08022064: .4byte gBattleStruct -_08022068: .4byte gPlayerParty -_0802206C: .4byte gBattleResources -_08022070: .4byte gActiveBattler -_08022074: .4byte gBattleMoveDamage -_08022078: .4byte gBattleScripting -_0802207C: - ldr r0, _08022314 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _08022086 - b _080223DA -_08022086: - ldr r1, _08022318 @ =gActiveBattler - ldr r0, _0802231C @ =gBattleStruct - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x8F - ldrb r0, [r0] - strb r0, [r1] - ldr r3, _08022320 @ =gBattleBufferB - ldrb r2, [r1] - lsls r1, r2, 9 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x21 - beq _080220A4 - b _08022350 -_080220A4: - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0xB - beq _080220B0 - b _08022350 -_080220B0: - ldr r0, _08022324 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080220DA - ldr r0, _08022328 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrh r0, [r1] - ldrb r4, [r4, 0x10] - cmp r0, r4 - bne _080220DA - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802232C @ =gPlayerParty - adds r0, r1 - adds r1, r2, 0 - bl HandleLowHpMusicChange -_080220DA: - ldr r1, _08022330 @ =gBattleTextBuff1 - movs r3, 0xFD - strb r3, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r6, _08022318 @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r1, 0x2] - ldr r4, _0802231C @ =gBattleStruct - mov r9, r4 - ldr r2, [r4] - ldrb r0, [r2, 0x10] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, _08022334 @ =gBattleTextBuff2 - strb r3, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - movs r0, 0x3 - strb r0, [r4, 0x3] - ldrb r0, [r2, 0x10] - movs r1, 0x64 - mov r8, r1 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - ldr r7, _0802232C @ =gPlayerParty - adds r0, r7 - movs r1, 0x38 - bl GetMonData - strb r0, [r4, 0x4] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x5] - bl BattleScriptPushCursor - ldr r2, _08022338 @ =gLeveledUpInBattle - ldr r1, _0802233C @ =gBitTable - mov r4, r9 - ldr r5, [r4] - ldrb r0, [r5, 0x10] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r1, _08022340 @ =gBattlescriptCurrInstr - ldr r0, _08022344 @ =BattleScript_LevelUp - str r0, [r1] - ldr r4, _08022348 @ =gBattleMoveDamage - ldr r2, _08022320 @ =gBattleBufferB - ldrb r1, [r6] - lsls r1, 9 - adds r0, r2, 0x2 - adds r0, r1, r0 - ldrb r3, [r0] - adds r2, 0x3 - adds r1, r2 - ldrb r0, [r1] - lsls r0, 8 - orrs r3, r0 - str r3, [r4] - ldrb r0, [r5, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl AdjustFriendship - ldr r1, _08022328 @ =gBattlerPartyIndexes - mov r2, r9 - ldr r0, [r2] - ldrb r2, [r0, 0x10] - ldrh r0, [r1] - cmp r0, r2 - bne _08022246 - ldr r4, _0802234C @ =gBattleMons - ldrh r0, [r4, 0x28] - cmp r0, 0 - beq _08022246 - mov r0, r8 - muls r0, r2 - adds r0, r7 - movs r1, 0x38 - bl GetMonData - adds r1, r4, 0 - adds r1, 0x2A - strb r0, [r1] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x39 - bl GetMonData - strh r0, [r4, 0x28] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3A - bl GetMonData - strh r0, [r4, 0x2C] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3B - bl GetMonData - strh r0, [r4, 0x2] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3C - bl GetMonData - strh r0, [r4, 0x4] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3D - bl GetMonData - strh r0, [r4, 0x6] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3E - bl GetMonData - strh r0, [r4, 0x8] - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0x3F - bl GetMonData - strh r0, [r4, 0xA] -_08022246: - ldr r0, _08022328 @ =gBattlerPartyIndexes - ldr r7, _0802231C @ =gBattleStruct - ldr r1, [r7] - ldrb r2, [r1, 0x10] - ldrh r0, [r0, 0x4] - cmp r0, r2 - beq _08022256 - b _08022356 -_08022256: - ldr r6, _0802234C @ =gBattleMons - movs r4, 0xD8 - adds r4, r6 - mov r8, r4 - ldrh r0, [r4] - cmp r0, 0 - beq _08022356 - ldr r0, _08022324 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08022356 - movs r5, 0x64 - adds r0, r2, 0 - muls r0, r5 - ldr r4, _0802232C @ =gPlayerParty - adds r0, r4 - movs r1, 0x38 - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDA - strb r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - mov r1, r8 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3A - bl GetMonData - adds r1, r6, 0 - adds r1, 0xDC - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3B - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB2 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3C - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB4 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - movs r2, 0xB6 - adds r2, r6 - mov r8, r2 - strh r0, [r2] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3D - bl GetMonData - mov r1, r8 - strh r0, [r1] - ldr r0, [r7] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - movs r1, 0x3E - bl GetMonData - adds r1, r6, 0 - adds r1, 0xB8 - strh r0, [r1] - b _08022356 - .align 2, 0 -_08022314: .4byte gBattleControllerExecFlags -_08022318: .4byte gActiveBattler -_0802231C: .4byte gBattleStruct -_08022320: .4byte gBattleBufferB -_08022324: .4byte gBattleTypeFlags -_08022328: .4byte gBattlerPartyIndexes -_0802232C: .4byte gPlayerParty -_08022330: .4byte gBattleTextBuff1 -_08022334: .4byte gBattleTextBuff2 -_08022338: .4byte gLeveledUpInBattle -_0802233C: .4byte gBitTable -_08022340: .4byte gBattlescriptCurrInstr -_08022344: .4byte BattleScript_LevelUp -_08022348: .4byte gBattleMoveDamage -_0802234C: .4byte gBattleMons -_08022350: - ldr r1, _08022360 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_08022356: - ldr r1, _08022364 @ =gBattleScripting - movs r0, 0x5 - strb r0, [r1, 0x1C] - b _080223DA - .align 2, 0 -_08022360: .4byte gBattleMoveDamage -_08022364: .4byte gBattleScripting -_08022368: - ldr r0, _08022378 @ =gBattleMoveDamage - ldr r0, [r0] - cmp r0, 0 - beq _08022380 - ldr r1, _0802237C @ =gBattleScripting - movs r0, 0x3 - strb r0, [r1, 0x1C] - b _080223DA - .align 2, 0 -_08022378: .4byte gBattleMoveDamage -_0802237C: .4byte gBattleScripting -_08022380: - ldr r2, _0802239C @ =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - ldr r0, [r2] - ldrb r0, [r0, 0x10] - cmp r0, 0x5 - bhi _080223A4 - ldr r1, _080223A0 @ =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0x1C] - b _080223DA - .align 2, 0 -_0802239C: .4byte gBattleStruct -_080223A0: .4byte gBattleScripting -_080223A4: - ldr r1, _080223AC @ =gBattleScripting - movs r0, 0x6 - strb r0, [r1, 0x1C] - b _080223DA - .align 2, 0 -_080223AC: .4byte gBattleScripting -_080223B0: - ldr r0, _080223E8 @ =gBattleControllerExecFlags - ldr r5, [r0] - cmp r5, 0 - bne _080223DA - ldr r4, _080223EC @ =gBattleMons - ldr r2, _080223F0 @ =gBattlerFainted - ldrb r0, [r2] - movs r1, 0x58 - muls r0, r1 - adds r0, r4 - movs r3, 0 - strh r5, [r0, 0x2E] - ldrb r0, [r2] - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - strb r3, [r0] - ldr r1, _080223F4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_080223DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080223E8: .4byte gBattleControllerExecFlags -_080223EC: .4byte gBattleMons -_080223F0: .4byte gBattlerFainted -_080223F4: .4byte gBattlescriptCurrInstr - thumb_func_end atk23_getexp - thumb_func_start atk24 atk24: @ 80223F8 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index dc5a5ef00..fc92417da 100644 --- a/include/battle.h +++ b/include/battle.h @@ -432,12 +432,7 @@ struct BattleCallbacksStack struct StatsArray { - u16 hp; - u16 atk; - u16 def; - u16 spd; - u16 spAtk; - u16 spDef; + u16 stats[NUM_STATS]; }; struct BattleResources @@ -495,7 +490,7 @@ struct BattleStruct u8 turnCountersTracker; u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. u8 moveTarget[MAX_BATTLERS_COUNT]; - u8 expGetterId; + u8 expGetterMonId; u8 field_11; u8 wildVictorySong; u8 dynamicMoveType; @@ -571,7 +566,7 @@ struct BattleStruct u16 castformPalette[MAX_BATTLERS_COUNT][16]; u8 wishPerishSongState; u8 wishPerishSongBattlerId; - u8 field_182; // overworldWeatherDone? + u8 field_182; u8 field_183; u8 field_184[124]; // currently unknown }; // size == 0x200 bytes @@ -985,5 +980,10 @@ extern u8 gNumberOfMovesToChoose; extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; extern s32 gHpDealt; extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; +extern u8 gCurrentTurnActionNumber; +extern u16 gExpShareExp; +extern u8 gLeveledUpInBattle; #endif // GUARD_BATTLE_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 688f9e4a2..405a4136f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -58,7 +58,7 @@ bool8 IsTwoTurnsMove(u16 move); void TrySetDestinyBondToHappen(void); u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. void CheckWonderGuardAndLevitate(void); -u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); +u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr); bool32 IsMonGettingExpSentOut(void); void sub_8026480(void); bool8 sub_80264D0(void); @@ -866,6 +866,7 @@ const u8 sBallCatchBonuses[] = 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; +// not used const u32 gUnknown_8250898 = 0xFF7EAE60; void atk00_attackcanceler(void) @@ -1437,7 +1438,7 @@ void CheckWonderGuardAndLevitate(void) } // same as ModulateDmgByType except different arguments -void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) +void ModulateDmgByType2(u8 multiplier, u16 move, u8 *flags) { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -2088,3 +2089,1224 @@ u8 GetBattlerTurnOrderNum(u8 battlerId) return i; } +void SetMoveEffect(bool8 primary, u8 certain) +{ + bool32 statusChanged = FALSE; + u8 affectsUser = 0; // 0x40 otherwise + bool32 noSunCanFreeze = TRUE; + + if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER) + { + gEffectBattler = gBattlerAttacker; // battlerId that effects get applied on + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER); + affectsUser = MOVE_EFFECT_AFFECTS_USER; + gBattleScripting.battler = gBattlerTarget; // theoretically the attacker + } + else + { + gEffectBattler = gBattlerTarget; + gBattleScripting.battler = gBattlerAttacker; + } + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE + && gBattleCommunication[MOVE_EFFECT_BYTE] != 1 + && GetBattlerSide(gEffectBattler) == B_SIDE_OPPONENT) + { + ++gBattlescriptCurrInstr; + return; + } + if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !primary + && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) + { + ++gBattlescriptCurrInstr; + return; + } + if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !primary + && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) + { + ++gBattlescriptCurrInstr; + return; + } + if (gBattleMons[gEffectBattler].hp == 0 + && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY + && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM) + { + ++gBattlescriptCurrInstr; + return; + } + if (gBattleMons[gEffectBattler].status2 & STATUS2_SUBSTITUTE + && affectsUser != MOVE_EFFECT_AFFECTS_USER) + { + ++gBattlescriptCurrInstr; + return; + } + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change + { + switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + case STATUS1_SLEEP: + // check active uproar + if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF) + for (gActiveBattler = 0; + gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR); + ++gActiveBattler); + else + gActiveBattler = gBattlersCount; + if (gBattleMons[gEffectBattler].status1) + break; + if (gActiveBattler != gBattlersCount) + break; + if (gBattleMons[gEffectBattler].ability == ABILITY_VITAL_SPIRIT) + break; + if (gBattleMons[gEffectBattler].ability == ABILITY_INSOMNIA) + break; + CancelMultiTurnMoves(gEffectBattler); + statusChanged = TRUE; + break; + case STATUS1_POISON: + if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + return; + } + if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL)) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON)) + break; + if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL)) + break; + if (gBattleMons[gEffectBattler].status1) + break; + if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY) + break; + statusChanged = TRUE; + break; + case STATUS1_BURN: + if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + gLastUsedAbility = ABILITY_WATER_VEIL; + RecordAbilityBattle(gEffectBattler, ABILITY_WATER_VEIL); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + return; + } + if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE)) + break; + if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL) + break; + if (gBattleMons[gEffectBattler].status1) + break; + statusChanged = TRUE; + break; + case STATUS1_FREEZE: + if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) + noSunCanFreeze = FALSE; + if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_ICE)) + break; + if (gBattleMons[gEffectBattler].status1) + break; + if (noSunCanFreeze == 0) + break; + if (gBattleMons[gEffectBattler].ability == ABILITY_MAGMA_ARMOR) + break; + CancelMultiTurnMoves(gEffectBattler); + statusChanged = TRUE; + break; + case STATUS1_PARALYSIS: + if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER) + { + if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) + { + gLastUsedAbility = ABILITY_LIMBER; + RecordAbilityBattle(gEffectBattler, ABILITY_LIMBER); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + return; + } + else + break; + } + if (gBattleMons[gEffectBattler].status1) + break; + statusChanged = TRUE; + break; + case STATUS1_TOXIC_POISON: + if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + gLastUsedAbility = ABILITY_IMMUNITY; + RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + return; + } + if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL)) + && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + return; + } + if (gBattleMons[gEffectBattler].status1) + break; + if (!IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) && !IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL)) + { + if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY) + break; + // It's redundant, because at this point we know the status1 value is 0. + gBattleMons[gEffectBattler].status1 &= ~(STATUS1_TOXIC_POISON); + gBattleMons[gEffectBattler].status1 &= ~(STATUS1_POISON); + statusChanged = TRUE; + break; + } + else + { + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + } + break; + } + if (statusChanged == TRUE) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP) + gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2); + else + gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gActiveBattler = gEffectBattler; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + // for synchronize + if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_POISON + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_TOXIC + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_PARALYSIS + || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN) + { + u8 *synchronizeEffect = &gBattleStruct->synchronizeMoveEffect; + *synchronizeEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; + } + return; + } + else if (statusChanged == FALSE) + { + ++gBattlescriptCurrInstr; + return; + } + return; + } + else + { + if (gBattleMons[gEffectBattler].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + { + ++gBattlescriptCurrInstr; + } + else + { + u8 side; + switch (gBattleCommunication[MOVE_EFFECT_BYTE]) + { + case MOVE_EFFECT_CONFUSION: + if (gBattleMons[gEffectBattler].ability == ABILITY_OWN_TEMPO + || gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleMons[gEffectBattler].status2 |= (((Random()) % 0x4)) + 2; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + } + break; + case MOVE_EFFECT_FLINCH: + if (gBattleMons[gEffectBattler].ability == ABILITY_INNER_FOCUS) + { + if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) + { + gLastUsedAbility = ABILITY_INNER_FOCUS; + RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; + } + else + { + ++gBattlescriptCurrInstr; + } + } + else + { + if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) + gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + ++gBattlescriptCurrInstr; + } + break; + case MOVE_EFFECT_UPROAR: + if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR)) + { + gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBattler] = gCurrentMove; + gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 2) << 4; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + } + else + { + ++gBattlescriptCurrInstr; + } + break; + case MOVE_EFFECT_PAYDAY: + if (GET_BATTLER_SIDE(gBattlerAttacker) == B_SIDE_PLAYER) + { + u16 PayDay = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5); + if (PayDay > gPaydayMoney) + gPaydayMoney = 0xFFFF; + } + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case MOVE_EFFECT_TRI_ATTACK: + if (gBattleMons[gEffectBattler].status1) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; + SetMoveEffect(FALSE, 0); + } + break; + case MOVE_EFFECT_CHARGING: + gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBattler] = gCurrentMove; + gProtectStructs[gEffectBattler].chargingTurn = 1; + ++gBattlescriptCurrInstr; + break; + case MOVE_EFFECT_WRAP: + if (gBattleMons[gEffectBattler].status2 & STATUS2_WRAPPED) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 3) << 0xD; + *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 0) = gCurrentMove; + *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 1) = gCurrentMove >> 8; + *(gBattleStruct->wrappedBy + gEffectBattler) = gBattlerAttacker; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; ++gBattleCommunication[MULTISTRING_CHOOSER]) + { + if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) + break; + if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) + break; + } + } + break; + case MOVE_EFFECT_RECOIL_25: // 25% recoil + gBattleMoveDamage = (gHpDealt) / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case MOVE_EFFECT_ATK_PLUS_1: + case MOVE_EFFECT_DEF_PLUS_1: + case MOVE_EFFECT_SPD_PLUS_1: + case MOVE_EFFECT_SP_ATK_PLUS_1: + case MOVE_EFFECT_SP_DEF_PLUS_1: + case MOVE_EFFECT_ACC_PLUS_1: + case MOVE_EFFECT_EVS_PLUS_1: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1), + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_1 + 1, + affectsUser, + NULL)) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + gBattleScripting.animArg2 = 0; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case MOVE_EFFECT_ATK_MINUS_1: + case MOVE_EFFECT_DEF_MINUS_1: + case MOVE_EFFECT_SPD_MINUS_1: + case MOVE_EFFECT_SP_ATK_MINUS_1: + case MOVE_EFFECT_SP_DEF_MINUS_1: + case MOVE_EFFECT_ACC_MINUS_1: + case MOVE_EFFECT_EVS_MINUS_1: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_1 + 1, + affectsUser, + NULL)) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + gBattleScripting.animArg2 = 0; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case MOVE_EFFECT_ATK_PLUS_2: + case MOVE_EFFECT_DEF_PLUS_2: + case MOVE_EFFECT_SPD_PLUS_2: + case MOVE_EFFECT_SP_ATK_PLUS_2: + case MOVE_EFFECT_SP_DEF_PLUS_2: + case MOVE_EFFECT_ACC_PLUS_2: + case MOVE_EFFECT_EVS_PLUS_2: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2), + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_2 + 1, + affectsUser, + NULL)) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + gBattleScripting.animArg2 = 0; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatUp; + } + break; + case MOVE_EFFECT_ATK_MINUS_2: + case MOVE_EFFECT_DEF_MINUS_2: + case MOVE_EFFECT_SPD_MINUS_2: + case MOVE_EFFECT_SP_ATK_MINUS_2: + case MOVE_EFFECT_SP_DEF_MINUS_2: + case MOVE_EFFECT_ACC_MINUS_2: + case MOVE_EFFECT_EVS_MINUS_2: + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE, + gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_2 + 1, + affectsUser, + NULL)) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); + gBattleScripting.animArg2 = 0; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_StatDown; + } + break; + case MOVE_EFFECT_RECHARGE: + gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE; + gDisableStructs[gEffectBattler].rechargeTimer = 2; + gLockedMoves[gEffectBattler] = gCurrentMove; + ++gBattlescriptCurrInstr; + break; + case MOVE_EFFECT_RAGE: + gBattleMons[gBattlerAttacker].status2 |= STATUS2_RAGE; + ++gBattlescriptCurrInstr; + break; + case MOVE_EFFECT_STEAL_ITEM: + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER) + { + ++gBattlescriptCurrInstr; + break; + } + side = GetBattlerSide(gBattlerAttacker); + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & + (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_LINK)) + && gTrainerBattleOpponent_A != 0x400) + { + ++gBattlescriptCurrInstr; + } + else if (!(gBattleTypeFlags & + (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_LINK)) + && gTrainerBattleOpponent_A != 0x400 + && (gWishFutureKnock.knockedOffMons[side] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]])) + { + ++gBattlescriptCurrInstr; + } + else if (gBattleMons[gBattlerTarget].item + && gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD) + { + gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else if (gBattleMons[gBattlerAttacker].item != ITEM_NONE + || gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY + || IS_ITEM_MAIL(gBattleMons[gBattlerTarget].item) + || gBattleMons[gBattlerTarget].item == ITEM_NONE) + { + ++gBattlescriptCurrInstr; + } + else + { + u16 *changedItem = &gBattleStruct->changedItems[gBattlerAttacker]; + gLastUsedItem = *changedItem = gBattleMons[gBattlerTarget].item; + gBattleMons[gBattlerTarget].item = ITEM_NONE; + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBattlerForControllerExec(gBattlerAttacker); + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gBattlerTarget); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerTarget]) + 1) = 0; + } + } + break; + case MOVE_EFFECT_PREVENT_ESCAPE: + gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; + ++gBattlescriptCurrInstr; + break; + case MOVE_EFFECT_NIGHTMARE: + gBattleMons[gBattlerTarget].status2 |= STATUS2_NIGHTMARE; + ++gBattlescriptCurrInstr; + break; + case MOVE_EFFECT_ALL_STATS_UP: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AllStatsUp; + break; + case MOVE_EFFECT_RAPIDSPIN: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + break; + case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts + if (!(gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS)) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS); + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; + } + break; + case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_AtkDefDown; + break; + case MOVE_EFFECT_RECOIL_33: // Double Edge + gBattleMoveDamage = gHpDealt / 3; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + break; + case MOVE_EFFECT_THRASH: + if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE) + { + ++gBattlescriptCurrInstr; + } + else + { + gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gEffectBattler] = gCurrentMove; + gBattleMons[gEffectBattler].status2 |= (((Random() & 1) + 2) << 0xA); + } + break; + case MOVE_EFFECT_KNOCK_OFF: + if (gBattleMons[gEffectBattler].ability == ABILITY_STICKY_HOLD) + { + if (gBattleMons[gEffectBattler].item == ITEM_NONE) + { + ++gBattlescriptCurrInstr; + } + else + { + gLastUsedAbility = ABILITY_STICKY_HOLD; + gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; + RecordAbilityBattle(gEffectBattler, ABILITY_STICKY_HOLD); + } + break; + } + if (gBattleMons[gEffectBattler].item) + { + side = GetBattlerSide(gEffectBattler); + gLastUsedItem = gBattleMons[gEffectBattler].item; + gBattleMons[gEffectBattler].item = ITEM_NONE; + gWishFutureKnock.knockedOffMons[side] |= gBitTable[gBattlerPartyIndexes[gEffectBattler]]; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_KnockedOff; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gEffectBattler]) + 0) = 0; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gEffectBattler]) + 1) = 0; + } + else + { + ++gBattlescriptCurrInstr; + } + break; + case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SAtkDown2; + break; + } + } + } +} + +void atk15_seteffectwithchance(void) +{ + u32 percentChance; + + if (gBattleMons[gBattlerAttacker].ability == ABILITY_SERENE_GRACE) + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + else + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN); + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); + } + else if (Random() % 100 <= percentChance + && gBattleCommunication[MOVE_EFFECT_BYTE] + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + if (percentChance >= 100) + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); + else + SetMoveEffect(0, 0); + } + else + { + ++gBattlescriptCurrInstr; + } + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleScripting.multihitMoveEffect = 0; +} + +void atk16_seteffectprimary(void) +{ + SetMoveEffect(TRUE, 0); +} + +void atk17_seteffectsecondary(void) +{ + SetMoveEffect(FALSE, 0); +} + +void atk18_clearstatusfromeffect(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) + gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + else + gBattleMons[gActiveBattler].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattlescriptCurrInstr += 2; + gBattleScripting.multihitMoveEffect = 0; +} + +void atk19_tryfaintmon(void) +{ + const u8 *BS_ptr; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBattler)) + { + BS_ptr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + BattleScriptPop(); + gBattlescriptCurrInstr = BS_ptr; + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 battlerId; + + if (gBattlescriptCurrInstr[1] == BS_ATTACKER) + { + gActiveBattler = gBattlerAttacker; + battlerId = gBattlerTarget; + BS_ptr = BattleScript_FaintAttacker; + } + else + { + gActiveBattler = gBattlerTarget; + battlerId = gBattlerAttacker; + BS_ptr = BattleScript_FaintTarget; + } + if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]) + && gBattleMons[gActiveBattler].hp == 0) + { + gHitMarker |= HITMARKER_FAINTED(gActiveBattler); + BattleScriptPush(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BS_ptr; + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + ++gBattleResults.playerFaintCounter; + AdjustFriendshipOnBattleFaint(gActiveBattler); + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + ++gBattleResults.opponentFaintCounter; + gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + *(u8 *)(&gBattleStruct->field_182) = gBattlerAttacker; + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) + { + gHitMarker &= ~(HITMARKER_DESTINYBOND); + BattleScriptPush(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[battlerId].hp; + gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife; + } + if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) + && gBattleMons[gBattlerAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBattlerAttacker); + + gBattleMons[gBattlerAttacker].pp[moveIndex] = 0; + BattleScriptPush(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp; + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]); + MarkBattlerForControllerExec(gActiveBattler); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex]) + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } +} + +void atk1A_dofaintanimation(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitFaintAnimation(0); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; + } +} + +void atk1B_cleareffectsonfaint(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + gBattleMons[gActiveBattler].status1 = 0; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + FaintClearSetData(); // Effects like attractions, trapping, etc. + gBattlescriptCurrInstr += 2; + } +} + +void atk1C_jumpifstatus(void) +{ + u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6); + + if (gBattleMons[battlerId].status1 & flags && gBattleMons[battlerId].hp != 0) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 10; +} + +void atk1D_jumpifstatus2(void) +{ + u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6); + + if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp != 0) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 10; +} + +void atk1E_jumpifability(void) +{ + u8 battlerId; + u8 ability = gBattlescriptCurrInstr[2]; + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); + + if (gBattlescriptCurrInstr[1] == BS_ATTACKER_SIDE) + { + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BATTLER_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId - 1, gLastUsedAbility); + gBattleScripting.battlerWithAbility = battlerId - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else if (gBattlescriptCurrInstr[1] == BS_NOT_ATTACKER_SIDE) + { + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId - 1, gLastUsedAbility); + gBattleScripting.battlerWithAbility = battlerId - 1; + } + else + gBattlescriptCurrInstr += 7; + } + else + { + battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (gBattleMons[battlerId].ability == ability) + { + gLastUsedAbility = ability; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId, gLastUsedAbility); + gBattleScripting.battlerWithAbility = battlerId; + } + else + gBattlescriptCurrInstr += 7; + } +} + +void atk1F_jumpifsideaffecting(void) +{ + u8 side; + u16 flags; + const u8 *jumpPtr; + + if (gBattlescriptCurrInstr[1] == BS_ATTACKER) + side = GET_BATTLER_SIDE(gBattlerAttacker); + else + side = GET_BATTLER_SIDE(gBattlerTarget); + + flags = T2_READ_16(gBattlescriptCurrInstr + 2); + jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 4); + + if (gSideStatuses[side] & flags) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 8; +} + +void atk20_jumpifstat(void) +{ + u8 ret = 0; + u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + u8 value = gBattleMons[battlerId].statStages[gBattlescriptCurrInstr[3]]; + + switch (gBattlescriptCurrInstr[2]) + { + case CMP_EQUAL: + if (value == gBattlescriptCurrInstr[4]) + ++ret; + break; + case CMP_NOT_EQUAL: + if (value != gBattlescriptCurrInstr[4]) + ++ret; + break; + case CMP_GREATER_THAN: + if (value > gBattlescriptCurrInstr[4]) + ++ret; + break; + case CMP_LESS_THAN: + if (value < gBattlescriptCurrInstr[4]) + ++ret; + break; + case CMP_COMMON_BITS: + if (value & gBattlescriptCurrInstr[4]) + ++ret; + break; + case CMP_NO_COMMON_BITS: + if (!(value & gBattlescriptCurrInstr[4])) + ++ret; + break; + } + if (ret) + gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 5); + else + gBattlescriptCurrInstr += 9; +} + +void atk21_jumpifstatus3condition(void) +{ + u32 flags; + const u8 *jumpPtr; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + flags = T2_READ_32(gBattlescriptCurrInstr + 2); + jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 7); + if (gBattlescriptCurrInstr[6]) + { + if (gStatuses3[gActiveBattler] & flags) + gBattlescriptCurrInstr += 11; + else + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if (gStatuses3[gActiveBattler] & flags) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 11; + } +} + +void atk22_jumpiftype(void) +{ + u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + u8 type = gBattlescriptCurrInstr[2]; + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); + + if (IS_BATTLER_OF_TYPE(battlerId, type)) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 7; +} + +void atk23_getexp(void) +{ + u16 item; + s32 i; // also used as stringId + u8 holdEffect; + s32 sentIn; + s32 viaExpShare = 0; + u16 *exp = &gBattleStruct->expValue; + + gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1]; + switch (gBattleScripting.atk23_state) + { + case 0: // check if should receive exp at all + if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT + || (gBattleTypeFlags & + (BATTLE_TYPE_LINK + | BATTLE_TYPE_TRAINER_TOWER + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_EREADER_TRAINER))) + { + gBattleScripting.atk23_state = 6; // goto last case + } + else + { + ++gBattleScripting.atk23_state; + gBattleStruct->givenExpMons |= gBitTable[gBattlerPartyIndexes[gBattlerFainted]]; + } + break; + case 1: // calculate experience points to redistribute + { + u16 calculatedExp; + s32 viaSentIn; + + for (viaSentIn = 0, i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + continue; + if (gBitTable[i] & sentIn) + ++viaSentIn; + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + ++viaExpShare; + } + calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7; + if (viaExpShare) // at least one mon is getting exp via exp share + { + *exp = calculatedExp / 2 / viaSentIn; + if (*exp == 0) + *exp = 1; + gExpShareExp = calculatedExp / 2 / viaExpShare; + if (gExpShareExp == 0) + gExpShareExp = 1; + } + else + { + *exp = calculatedExp / viaSentIn; + if (*exp == 0) + *exp = 1; + gExpShareExp = 0; + } + ++gBattleScripting.atk23_state; + gBattleStruct->expGetterMonId = 0; + gBattleStruct->sentInPokes = sentIn; + } + // fall through + case 2: // set exp value to the poke in expgetter_id and print message + if (!gBattleControllerExecFlags) + { + item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + if (holdEffect != HOLD_EFFECT_EXP_SHARE && !(gBattleStruct->sentInPokes & 1)) + { + *(&gBattleStruct->sentInPokes) >>= 1; + gBattleScripting.atk23_state = 5; + gBattleMoveDamage = 0; // used for exp + } + else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) == MAX_LEVEL) + { + *(&gBattleStruct->sentInPokes) >>= 1; + gBattleScripting.atk23_state = 5; + gBattleMoveDamage = 0; // used for exp + } + else + { + // music change in wild battle after fainting a poke + if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_POKEDUDE)) + && gBattleMons[0].hp + && !gBattleStruct->wildVictorySong) + { + BattleStopLowHpSound(); + PlayBGM(BGM_FRLG_KACHI_WILD_POKEMON); + ++gBattleStruct->wildVictorySong; + } + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP)) + { + if (gBattleStruct->sentInPokes & 1) + gBattleMoveDamage = *exp; + else + gBattleMoveDamage = 0; + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + gBattleMoveDamage += gExpShareExp; + if (holdEffect == HOLD_EFFECT_LUCKY_EGG) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId]) + && !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)) + { + gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; + i = STRINGID_ABOOSTED; + } + else + { + i = STRINGID_EMPTYSTRING4; + } + // get exp getter battlerId + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2])) + gBattleStruct->expGetterBattlerId = 2; + else + { + if (!(gAbsentBattlerFlags & gBitTable[0])) + gBattleStruct->expGetterBattlerId = 0; + else + gBattleStruct->expGetterBattlerId = 2; + } + } + else + { + gBattleStruct->expGetterBattlerId = 0; + } + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId); + // buffer 'gained' or 'gained a boosted' + PREPARE_STRING_BUFFER(gBattleTextBuff2, i); + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage); + PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId); + MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBattlerFainted].species); + } + gBattleStruct->sentInPokes >>= 1; + ++gBattleScripting.atk23_state; + } + } + break; + case 3: // Set stats and give exp + if (!gBattleControllerExecFlags) + { + gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0; + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != MAX_LEVEL) + { + gBattleResources->beforeLvlUp->stats[STAT_HP] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleResources->beforeLvlUp->stats[STAT_ATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleResources->beforeLvlUp->stats[STAT_DEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); + gBattleResources->beforeLvlUp->stats[STAT_SPEED] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleResources->beforeLvlUp->stats[STAT_SPATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); + gActiveBattler = gBattleStruct->expGetterBattlerId; + BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage); + MarkBattlerForControllerExec(gActiveBattler); + } + ++gBattleScripting.atk23_state; + } + break; + case 4: // lvl up if necessary + if (!gBattleControllerExecFlags) + { + gActiveBattler = gBattleStruct->expGetterBattlerId; + if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELED_UP) + { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId) + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId); + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL)); + BattleScriptPushCursor(); + gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId]; + gBattlescriptCurrInstr = BattleScript_LevelUp; + gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)); + AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], 0); + // update battle mon structure after level up + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp) + { + gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); + // Why is this duplicated? + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); + } + // What is else if? + if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); + // Duplicated again, but this time there's no Sp Defense + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + } + gBattleScripting.atk23_state = 5; + } + else + { + gBattleMoveDamage = 0; + gBattleScripting.atk23_state = 5; + } + } + break; + case 5: // looper increment + if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp + { + gBattleScripting.atk23_state = 3; + } + else + { + ++gBattleStruct->expGetterMonId; + if (gBattleStruct->expGetterMonId <= 5) + gBattleScripting.atk23_state = 2; // loop again + else + gBattleScripting.atk23_state = 6; // we're done + } + break; + case 6: // increment instruction + if (!gBattleControllerExecFlags) + { + // not sure why gf clears the item and ability here + gBattleMons[gBattlerFainted].item = ITEM_NONE; + gBattleMons[gBattlerFainted].ability = ABILITY_NONE; + gBattlescriptCurrInstr += 2; + } + break; + } +} From db0d8e5bdbc0d043312ac78c5cec0ec53d7f45d6 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 26 Aug 2019 06:48:04 +0800 Subject: [PATCH 025/100] thru sub_8024398 --- asm/battle_script_commands.s | 4138 ------------------------------- include/battle.h | 48 +- include/battle_anim.h | 8 + include/battle_scripts.h | 1 + include/constants/battle_anim.h | 1 + include/party_menu.h | 10 + include/pokemon.h | 2 +- src/battle_gfx_sfx_util.c | 1 + src/battle_script_commands.c | 1196 ++++++++- src/pokemon.c | 4 +- 10 files changed, 1220 insertions(+), 4189 deletions(-) diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 1d0282835..ed848ba78 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,4144 +5,6 @@ .text - thumb_func_start atk24 -atk24: @ 80223F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, _08022534 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0802240A - b _0802258A -_0802240A: - movs r5, 0 -_0802240C: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08022538 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802243C - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0802243C - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_0802243C: - adds r5, 0x1 - cmp r5, 0x5 - ble _0802240C - cmp r6, 0 - bne _08022450 - ldr r0, _0802253C @ =gBattleOutcome - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_08022450: - movs r6, 0 - movs r5, 0 -_08022454: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08022540 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08022484 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08022484 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r0, r6, r0 - lsls r0, 16 - lsrs r6, r0, 16 -_08022484: - adds r5, 0x1 - cmp r5, 0x5 - ble _08022454 - ldr r2, _0802253C @ =gBattleOutcome - cmp r6, 0 - bne _08022498 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08022498: - ldrb r0, [r2] - cmp r0, 0 - bne _08022582 - ldr r0, _08022544 @ =gBattleTypeFlags - ldr r1, [r0] - movs r2, 0x2 - ands r1, r2 - mov r8, r0 - cmp r1, 0 - beq _08022582 - movs r3, 0 - movs r5, 0 - ldr r0, _08022548 @ =gBattlersCount - ldrb r1, [r0] - mov r12, r0 - ldr r7, _0802254C @ =gBattlescriptCurrInstr - cmp r3, r1 - bge _080224E4 - ldr r0, _08022550 @ =gHitMarker - movs r6, 0x80 - lsls r6, 21 - ldr r4, [r0] - adds r2, r1, 0 - ldr r1, _08022554 @ =gSpecialStatuses -_080224C8: - adds r0, r6, 0 - lsls r0, r5 - ands r0, r4 - cmp r0, 0 - beq _080224DC - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _080224DC - adds r3, 0x1 -_080224DC: - adds r1, 0x28 - adds r5, 0x2 - cmp r5, r2 - blt _080224C8 -_080224E4: - movs r2, 0 - movs r5, 0x1 - mov r0, r12 - ldrb r1, [r0] - cmp r5, r1 - bge _0802251E - ldr r0, _08022550 @ =gHitMarker - movs r4, 0x80 - lsls r4, 21 - mov r12, r4 - ldr r6, [r0] - ldr r0, _08022554 @ =gSpecialStatuses - adds r4, r1, 0 - adds r1, r0, 0 - adds r1, 0x14 -_08022502: - mov r0, r12 - lsls r0, r5 - ands r0, r6 - cmp r0, 0 - beq _08022516 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08022516 - adds r2, 0x1 -_08022516: - adds r1, 0x28 - adds r5, 0x2 - cmp r5, r4 - blt _08022502 -_0802251E: - mov r1, r8 - ldr r0, [r1] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08022558 - adds r0, r2, r3 - cmp r0, 0x1 - bgt _08022560 - b _0802257A - .align 2, 0 -_08022534: .4byte gBattleControllerExecFlags -_08022538: .4byte gPlayerParty -_0802253C: .4byte gBattleOutcome -_08022540: .4byte gEnemyParty -_08022544: .4byte gBattleTypeFlags -_08022548: .4byte gBattlersCount -_0802254C: .4byte gBattlescriptCurrInstr -_08022550: .4byte gHitMarker -_08022554: .4byte gSpecialStatuses -_08022558: - cmp r2, 0 - beq _0802257A - cmp r3, 0 - beq _0802257A -_08022560: - ldr r2, [r7] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r7] - b _0802258A -_0802257A: - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _0802258A -_08022582: - ldr r1, _08022594 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802258A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08022594: .4byte gBattlescriptCurrInstr - thumb_func_end atk24 - - thumb_func_start MoveValuesCleanUp -MoveValuesCleanUp: @ 8022598 - ldr r1, _080225C0 @ =gMoveResultFlags - movs r0, 0 - strb r0, [r1] - ldr r0, _080225C4 @ =gBattleScripting - movs r2, 0 - movs r1, 0x1 - strb r1, [r0, 0xE] - ldr r0, _080225C8 @ =gCritMultiplier - strb r1, [r0] - ldr r0, _080225CC @ =gBattleCommunication - strb r2, [r0, 0x3] - strb r2, [r0, 0x6] - ldr r2, _080225D0 @ =gHitMarker - ldr r0, [r2] - subs r1, 0x42 - ands r0, r1 - ldr r1, _080225D4 @ =0xffffbfff - ands r0, r1 - str r0, [r2] - bx lr - .align 2, 0 -_080225C0: .4byte gMoveResultFlags -_080225C4: .4byte gBattleScripting -_080225C8: .4byte gCritMultiplier -_080225CC: .4byte gBattleCommunication -_080225D0: .4byte gHitMarker -_080225D4: .4byte 0xffffbfff - thumb_func_end MoveValuesCleanUp - - thumb_func_start atk25_movevaluescleanup -atk25_movevaluescleanup: @ 80225D8 - push {lr} - bl MoveValuesCleanUp - ldr r1, _080225EC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080225EC: .4byte gBattlescriptCurrInstr - thumb_func_end atk25_movevaluescleanup - - thumb_func_start atk26_setmultihit -atk26_setmultihit: @ 80225F0 - ldr r3, _08022600 @ =gMultiHitCounter - ldr r2, _08022604 @ =gBattlescriptCurrInstr - ldr r0, [r2] - ldrb r1, [r0, 0x1] - strb r1, [r3] - adds r0, 0x2 - str r0, [r2] - bx lr - .align 2, 0 -_08022600: .4byte gMultiHitCounter -_08022604: .4byte gBattlescriptCurrInstr - thumb_func_end atk26_setmultihit - - thumb_func_start atk27_decrementmultihit -atk27_decrementmultihit: @ 8022608 - push {lr} - ldr r1, _08022624 @ =gMultiHitCounter - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0802262C - ldr r1, _08022628 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08022646 - .align 2, 0 -_08022624: .4byte gMultiHitCounter -_08022628: .4byte gBattlescriptCurrInstr -_0802262C: - ldr r3, _0802264C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] -_08022646: - pop {r0} - bx r0 - .align 2, 0 -_0802264C: .4byte gBattlescriptCurrInstr - thumb_func_end atk27_decrementmultihit - - thumb_func_start atk28_goto -atk28_goto: @ 8022650 - ldr r3, _0802266C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .align 2, 0 -_0802266C: .4byte gBattlescriptCurrInstr - thumb_func_end atk28_goto - - thumb_func_start atk29_jumpifbyte -atk29_jumpifbyte: @ 8022670 - push {r4-r6,lr} - ldr r3, _080226B4 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r2, [r1, 0x7] - ldrb r0, [r1, 0x8] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x9] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 24 - adds r2, r0 - adds r1, 0xB - str r1, [r3] - cmp r6, 0x5 - bhi _08022708 - lsls r0, r6, 2 - ldr r1, _080226B8 @ =_080226BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080226B4: .4byte gBattlescriptCurrInstr -_080226B8: .4byte _080226BC - .align 2, 0 -_080226BC: - .4byte _080226D4 - .4byte _080226DC - .4byte _080226E4 - .4byte _080226EC - .4byte _080226F4 - .4byte _080226FE -_080226D4: - ldrb r0, [r5] - cmp r0, r4 - bne _08022708 - b _08022706 -_080226DC: - ldrb r0, [r5] - cmp r0, r4 - beq _08022708 - b _08022706 -_080226E4: - ldrb r0, [r5] - cmp r0, r4 - bls _08022708 - b _08022706 -_080226EC: - ldrb r0, [r5] - cmp r0, r4 - bcs _08022708 - b _08022706 -_080226F4: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _08022708 - b _08022706 -_080226FE: - ldrb r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _08022708 -_08022706: - str r2, [r3] -_08022708: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk29_jumpifbyte - - thumb_func_start atk2A_jumpifhalfword -atk2A_jumpifhalfword: @ 8022710 - push {r4-r6,lr} - ldr r3, _0802275C @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r2, [r1, 0x8] - ldrb r0, [r1, 0x9] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xA] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 24 - adds r2, r0 - adds r1, 0xC - str r1, [r3] - cmp r6, 0x5 - bhi _080227B0 - lsls r0, r6, 2 - ldr r1, _08022760 @ =_08022764 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802275C: .4byte gBattlescriptCurrInstr -_08022760: .4byte _08022764 - .align 2, 0 -_08022764: - .4byte _0802277C - .4byte _08022784 - .4byte _0802278C - .4byte _08022794 - .4byte _0802279C - .4byte _080227A6 -_0802277C: - ldrh r0, [r5] - cmp r0, r4 - bne _080227B0 - b _080227AE -_08022784: - ldrh r0, [r5] - cmp r0, r4 - beq _080227B0 - b _080227AE -_0802278C: - ldrh r0, [r5] - cmp r0, r4 - bls _080227B0 - b _080227AE -_08022794: - ldrh r0, [r5] - cmp r0, r4 - bcs _080227B0 - b _080227AE -_0802279C: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - beq _080227B0 - b _080227AE -_080227A6: - ldrh r0, [r5] - ands r4, r0 - cmp r4, 0 - bne _080227B0 -_080227AE: - str r2, [r3] -_080227B0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2A_jumpifhalfword - - thumb_func_start atk2B_jumpifword -atk2B_jumpifword: @ 80227B8 - push {r4-r6,lr} - ldr r3, _08022810 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r6, [r1, 0x1] - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x6] - ldrb r0, [r1, 0x7] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x8] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x9] - lsls r0, 24 - orrs r4, r0 - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - adds r1, 0xE - str r1, [r3] - cmp r6, 0x5 - bhi _08022864 - lsls r0, r6, 2 - ldr r1, _08022814 @ =_08022818 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022810: .4byte gBattlescriptCurrInstr -_08022814: .4byte _08022818 - .align 2, 0 -_08022818: - .4byte _08022830 - .4byte _08022838 - .4byte _08022840 - .4byte _08022848 - .4byte _08022850 - .4byte _0802285A -_08022830: - ldr r0, [r5] - cmp r0, r4 - bne _08022864 - b _08022862 -_08022838: - ldr r0, [r5] - cmp r0, r4 - beq _08022864 - b _08022862 -_08022840: - ldr r0, [r5] - cmp r0, r4 - bls _08022864 - b _08022862 -_08022848: - ldr r0, [r5] - cmp r0, r4 - bcs _08022864 - b _08022862 -_08022850: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - beq _08022864 - b _08022862 -_0802285A: - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - bne _08022864 -_08022862: - str r2, [r3] -_08022864: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk2B_jumpifword - - thumb_func_start atk2C_jumpifarrayequal -atk2C_jumpifarrayequal: @ 802286C - push {r4-r7,lr} - ldr r2, _080228C4 @ =gBattlescriptCurrInstr - ldr r3, [r2] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r5, r1, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x8] - lsls r0, 24 - adds r4, r1, r0 - ldrb r6, [r3, 0x9] - ldrb r1, [r3, 0xA] - ldrb r0, [r3, 0xB] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0xC] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0xD] - lsls r0, 24 - adds r1, r0 - mov r12, r1 - movs r1, 0 - cmp r1, r6 - bcs _080228E4 - ldrb r0, [r5] - ldrb r7, [r4] - cmp r0, r7 - beq _080228C8 - adds r0, r3, 0 - b _080228E0 - .align 2, 0 -_080228C4: .4byte gBattlescriptCurrInstr -_080228C8: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcs _080228E4 - ldrb r0, [r5] - ldrb r3, [r4] - cmp r0, r3 - beq _080228C8 - ldr r0, [r2] -_080228E0: - adds r0, 0xE - str r0, [r2] -_080228E4: - cmp r1, r6 - bne _080228EC - mov r7, r12 - str r7, [r2] -_080228EC: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2C_jumpifarrayequal - - thumb_func_start atk2D_jumpifarraynotequal -atk2D_jumpifarraynotequal: @ 80228F4 - push {r4-r7,lr} - movs r7, 0 - ldr r3, _08022968 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r5, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r4, r2, r0 - ldrb r6, [r1, 0x9] - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - adds r2, r0 - mov r12, r2 - movs r1, 0 - cmp r7, r6 - bcs _0802295E -_08022942: - ldrb r0, [r5] - ldrb r2, [r4] - cmp r0, r2 - bne _08022950 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08022950: - adds r5, 0x1 - adds r4, 0x1 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r6 - bcc _08022942 -_0802295E: - cmp r7, r6 - beq _0802296C - mov r0, r12 - b _08022970 - .align 2, 0 -_08022968: .4byte gBattlescriptCurrInstr -_0802296C: - ldr r0, [r3] - adds r0, 0xE -_08022970: - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk2D_jumpifarraynotequal - - thumb_func_start atk2E_setbyte -atk2E_setbyte: @ 8022978 - ldr r3, _0802299C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_0802299C: .4byte gBattlescriptCurrInstr - thumb_func_end atk2E_setbyte - - thumb_func_start atk2F_addbyte -atk2F_addbyte: @ 80229A0 - ldr r3, _080229C8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r2, 0x5] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_080229C8: .4byte gBattlescriptCurrInstr - thumb_func_end atk2F_addbyte - - thumb_func_start atk30_subbyte -atk30_subbyte: @ 80229CC - ldr r3, _080229F4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - subs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_080229F4: .4byte gBattlescriptCurrInstr - thumb_func_end atk30_subbyte - - thumb_func_start atk31_copyarray -atk31_copyarray: @ 80229F8 - push {r4-r6,lr} - ldr r3, _08022A48 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0x9] - movs r2, 0 - cmp r2, r4 - bge _08022A3C -_08022A2E: - adds r0, r6, r2 - adds r1, r5, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _08022A2E -_08022A3C: - ldr r0, [r3] - adds r0, 0xA - str r0, [r3] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08022A48: .4byte gBattlescriptCurrInstr - thumb_func_end atk31_copyarray - - thumb_func_start atk32_copyarraywithindex -atk32_copyarraywithindex: @ 8022A4C - push {r4-r7,lr} - ldr r3, _08022AB4 @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - adds r7, r2, r0 - ldrb r2, [r1, 0x5] - ldrb r0, [r1, 0x6] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0x7] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0x8] - lsls r0, 24 - adds r6, r2, r0 - ldrb r2, [r1, 0x9] - ldrb r0, [r1, 0xA] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r1, 0xB] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 24 - adds r5, r2, r0 - ldrb r4, [r1, 0xD] - movs r2, 0 - cmp r2, r4 - bge _08022AA8 -_08022A96: - adds r0, r7, r2 - ldrb r1, [r5] - adds r1, r2, r1 - adds r1, r6, r1 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, r4 - blt _08022A96 -_08022AA8: - ldr r0, [r3] - adds r0, 0xE - str r0, [r3] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08022AB4: .4byte gBattlescriptCurrInstr - thumb_func_end atk32_copyarraywithindex - - thumb_func_start atk33_orbyte -atk33_orbyte: @ 8022AB8 - ldr r3, _08022AE0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r0, [r1] - ldrb r2, [r2, 0x5] - orrs r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_08022AE0: .4byte gBattlescriptCurrInstr - thumb_func_end atk33_orbyte - - thumb_func_start atk34_orhalfword -atk34_orhalfword: @ 8022AE4 - push {r4,lr} - ldr r4, _08022B18 @ =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r2, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r2, r0 - ldrb r1, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrh r0, [r2] - orrs r1, r0 - strh r1, [r2] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022B18: .4byte gBattlescriptCurrInstr - thumb_func_end atk34_orhalfword - - thumb_func_start atk35_orword -atk35_orword: @ 8022B1C - push {r4,lr} - ldr r4, _08022B5C @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022B5C: .4byte gBattlescriptCurrInstr - thumb_func_end atk35_orword - - thumb_func_start atk36_bicbyte -atk36_bicbyte: @ 8022B60 - ldr r3, _08022B88 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r2, 0x5] - ldrb r0, [r1] - bics r0, r2 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x6 - str r0, [r3] - bx lr - .align 2, 0 -_08022B88: .4byte gBattlescriptCurrInstr - thumb_func_end atk36_bicbyte - - thumb_func_start atk37_bichalfword -atk37_bichalfword: @ 8022B8C - push {r4,lr} - ldr r4, _08022BC0 @ =gBattlescriptCurrInstr - ldr r3, [r4] - ldrb r1, [r3, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x4] - lsls r0, 24 - adds r1, r0 - ldrb r2, [r3, 0x5] - ldrb r0, [r3, 0x6] - lsls r0, 8 - orrs r2, r0 - ldrh r0, [r1] - bics r0, r2 - strh r0, [r1] - ldr r0, [r4] - adds r0, 0x7 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022BC0: .4byte gBattlescriptCurrInstr - thumb_func_end atk37_bichalfword - - thumb_func_start atk38_bicword -atk38_bicword: @ 8022BC4 - push {r4,lr} - ldr r4, _08022C04 @ =gBattlescriptCurrInstr - ldr r2, [r4] - ldrb r3, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - adds r3, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - adds r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - adds r3, r0 - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - adds r1, r0 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - ldr r0, [r4] - adds r0, 0x9 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022C04: .4byte gBattlescriptCurrInstr - thumb_func_end atk38_bicword - - thumb_func_start atk39_pause -atk39_pause: @ 8022C08 - push {r4,r5,lr} - ldr r0, _08022C3C @ =gBattleControllerExecFlags - ldr r4, [r0] - cmp r4, 0 - bne _08022C34 - ldr r5, _08022C40 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldr r3, _08022C44 @ =gPauseCounterBattle - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bcc _08022C34 - strh r4, [r3] - adds r0, r2, 0x3 - str r0, [r5] -_08022C34: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08022C3C: .4byte gBattleControllerExecFlags -_08022C40: .4byte gBattlescriptCurrInstr -_08022C44: .4byte gPauseCounterBattle - thumb_func_end atk39_pause - - thumb_func_start atk3A_waitstate -atk3A_waitstate: @ 8022C48 - push {lr} - ldr r0, _08022C60 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08022C5A - ldr r1, _08022C64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08022C5A: - pop {r0} - bx r0 - .align 2, 0 -_08022C60: .4byte gBattleControllerExecFlags -_08022C64: .4byte gBattlescriptCurrInstr - thumb_func_end atk3A_waitstate - - thumb_func_start atk3B_healthbar_update -atk3B_healthbar_update: @ 8022C68 - push {lr} - ldr r0, _08022C7C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08022C88 - ldr r0, _08022C80 @ =gActiveBattler - ldr r1, _08022C84 @ =gBattlerTarget - b _08022C8C - .align 2, 0 -_08022C7C: .4byte gBattlescriptCurrInstr -_08022C80: .4byte gActiveBattler -_08022C84: .4byte gBattlerTarget -_08022C88: - ldr r0, _08022CB0 @ =gActiveBattler - ldr r1, _08022CB4 @ =gBattlerAttacker -_08022C8C: - ldrb r1, [r1] - strb r1, [r0] - ldr r0, _08022CB8 @ =gBattleMoveDamage - ldrh r1, [r0] - movs r0, 0 - bl BtlController_EmitHealthBarUpdate - ldr r0, _08022CB0 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _08022CBC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08022CB0: .4byte gActiveBattler -_08022CB4: .4byte gBattlerAttacker -_08022CB8: .4byte gBattleMoveDamage -_08022CBC: .4byte gBattlescriptCurrInstr - thumb_func_end atk3B_healthbar_update - - thumb_func_start atk3C_return -atk3C_return: @ 8022CC0 - push {lr} - bl BattleScriptPop - pop {r0} - bx r0 - thumb_func_end atk3C_return - - thumb_func_start atk3D_end -atk3D_end: @ 8022CCC - ldr r0, _08022CE0 @ =gMoveResultFlags - movs r1, 0 - strb r1, [r0] - ldr r0, _08022CE4 @ =gActiveBattler - strb r1, [r0] - ldr r1, _08022CE8 @ =gCurrentActionFuncId - movs r0, 0xB - strb r0, [r1] - bx lr - .align 2, 0 -_08022CE0: .4byte gMoveResultFlags -_08022CE4: .4byte gActiveBattler -_08022CE8: .4byte gCurrentActionFuncId - thumb_func_end atk3D_end - - thumb_func_start atk3E_end2 -atk3E_end2: @ 8022CEC - ldr r1, _08022CFC @ =gActiveBattler - movs r0, 0 - strb r0, [r1] - ldr r1, _08022D00 @ =gCurrentActionFuncId - movs r0, 0xB - strb r0, [r1] - bx lr - .align 2, 0 -_08022CFC: .4byte gActiveBattler -_08022D00: .4byte gCurrentActionFuncId - thumb_func_end atk3E_end2 - - thumb_func_start atk3F_end3 -atk3F_end3: @ 8022D04 - push {lr} - bl BattleScriptPop - ldr r3, _08022D38 @ =gBattleResources - ldr r0, [r3] - ldr r0, [r0, 0xC] - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0 - beq _08022D1E - subs r0, 0x1 - strb r0, [r1] -_08022D1E: - ldr r2, _08022D3C @ =gBattleMainFunc - ldr r0, [r3] - ldr r1, [r0, 0xC] - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_08022D38: .4byte gBattleResources -_08022D3C: .4byte gBattleMainFunc - thumb_func_end atk3F_end3 - - thumb_func_start atk41_call -atk41_call: @ 8022D40 - push {r4,lr} - ldr r4, _08022D6C @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x5 - bl BattleScriptPush - ldr r2, [r4] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022D6C: .4byte gBattlescriptCurrInstr - thumb_func_end atk41_call - - thumb_func_start atk42_jumpiftype2 -atk42_jumpiftype2: @ 8022D70 - push {r4,lr} - ldr r4, _08022DB8 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldr r2, _08022DBC @ =gBattleMons - movs r1, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r2, [r3, 0x2] - ldrb r1, [r1] - cmp r2, r1 - beq _08022D9E - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _08022DC0 -_08022D9E: - ldrb r1, [r3, 0x3] - ldrb r0, [r3, 0x4] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r3, 0x5] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r3, 0x6] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08022DC4 - .align 2, 0 -_08022DB8: .4byte gBattlescriptCurrInstr -_08022DBC: .4byte gBattleMons -_08022DC0: - adds r0, r3, 0x7 - str r0, [r4] -_08022DC4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk42_jumpiftype2 - - thumb_func_start atk43_jumpifabilitypresent -atk43_jumpifabilitypresent: @ 8022DCC - push {r4,lr} - sub sp, 0x4 - ldr r4, _08022E04 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x1] - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08022E08 - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08022E0E - .align 2, 0 -_08022E04: .4byte gBattlescriptCurrInstr -_08022E08: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_08022E0E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk43_jumpifabilitypresent - - thumb_func_start atk44_endselectionscript -atk44_endselectionscript: @ 8022E18 - ldr r0, _08022E2C @ =gBattlerAttacker - ldrb r0, [r0] - ldr r1, _08022E30 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x54 - movs r1, 0x1 - strb r1, [r0] - bx lr - .align 2, 0 -_08022E2C: .4byte gBattlerAttacker -_08022E30: .4byte gBattleStruct - thumb_func_end atk44_endselectionscript - - thumb_func_start atk45_playanimation -atk45_playanimation: @ 8022E34 - push {r4-r6,lr} - ldr r4, _08022E84 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r6, _08022E88 @ =gActiveBattler - strb r0, [r6] - ldr r2, [r4] - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x4] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x6] - lsls r0, 24 - adds r3, r1, r0 - ldrb r5, [r2, 0x2] - adds r0, r5, 0 - cmp r0, 0x1 - beq _08022E6E - cmp r0, 0x11 - beq _08022E6E - cmp r0, 0x2 - beq _08022E6E - cmp r0, 0x19 - bne _08022E8C -_08022E6E: - ldr r4, _08022E84 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl BtlController_EmitBattleAnimation - ldr r0, _08022E88 @ =gActiveBattler - ldrb r0, [r0] - b _08022EE4 - .align 2, 0 -_08022E84: .4byte gBattlescriptCurrInstr -_08022E88: .4byte gActiveBattler -_08022E8C: - ldr r0, _08022EA4 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08022EAC - adds r0, r2, 0x7 - bl BattleScriptPush - ldr r0, _08022EA8 @ =BattleScript_Pausex20 - b _08022EEC - .align 2, 0 -_08022EA4: .4byte gHitMarker -_08022EA8: .4byte BattleScript_Pausex20 -_08022EAC: - adds r0, r5, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08022ED8 - ldr r1, _08022ED0 @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08022ED4 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08022ED8 - adds r0, r2, 0x7 - b _08022EEC - .align 2, 0 -_08022ED0: .4byte gStatuses3 -_08022ED4: .4byte 0x000400c0 -_08022ED8: - ldrb r1, [r2, 0x2] - ldrh r2, [r3] - movs r0, 0 - bl BtlController_EmitBattleAnimation - ldrb r0, [r6] -_08022EE4: - bl MarkBattlerForControllerExec - ldr r0, [r4] - adds r0, 0x7 -_08022EEC: - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk45_playanimation - - thumb_func_start atk46_playanimation2 -atk46_playanimation2: @ 8022EF4 - push {r4-r7,lr} - ldr r6, _08022F5C @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r7, _08022F60 @ =gActiveBattler - strb r0, [r7] - ldr r2, [r6] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - adds r3, r1, r0 - ldrb r1, [r2, 0x6] - ldrb r0, [r2, 0x7] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x8] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x9] - lsls r0, 24 - adds r4, r1, r0 - ldrb r5, [r3] - adds r0, r5, 0 - cmp r0, 0x1 - beq _08022F3E - cmp r0, 0x11 - beq _08022F3E - cmp r0, 0x2 - bne _08022F64 -_08022F3E: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl BtlController_EmitBattleAnimation - ldr r0, _08022F60 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _08022F5C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _08022FBA - .align 2, 0 -_08022F5C: .4byte gBattlescriptCurrInstr -_08022F60: .4byte gActiveBattler -_08022F64: - ldr r0, _08022F74 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08022F78 - adds r0, r2, 0 - b _08022FB6 - .align 2, 0 -_08022F74: .4byte gHitMarker -_08022F78: - adds r0, r5, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08022FA4 - ldr r1, _08022F9C @ =gStatuses3 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08022FA0 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08022FA4 - adds r0, r2, 0 - b _08022FB6 - .align 2, 0 -_08022F9C: .4byte gStatuses3 -_08022FA0: .4byte 0x000400c0 -_08022FA4: - ldrb r1, [r3] - ldrh r2, [r4] - movs r0, 0 - bl BtlController_EmitBattleAnimation - ldrb r0, [r7] - bl MarkBattlerForControllerExec - ldr r0, [r6] -_08022FB6: - adds r0, 0xA - str r0, [r6] -_08022FBA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk46_playanimation2 - - thumb_func_start atk47_setgraphicalstatchangevalues -atk47_setgraphicalstatchangevalues: @ 8022FC0 - push {r4,lr} - movs r3, 0 - ldr r1, _08022FDC @ =gBattleScripting - ldrb r0, [r1, 0x1A] - movs r2, 0xF0 - ands r2, r0 - adds r4, r1, 0 - cmp r2, 0x20 - beq _08022FEE - cmp r2, 0x20 - bgt _08022FE0 - cmp r2, 0x10 - beq _08022FEA - b _08022FF8 - .align 2, 0 -_08022FDC: .4byte gBattleScripting -_08022FE0: - cmp r2, 0x90 - beq _08022FF2 - cmp r2, 0xA0 - beq _08022FF6 - b _08022FF8 -_08022FEA: - movs r3, 0xF - b _08022FF8 -_08022FEE: - movs r3, 0x27 - b _08022FF8 -_08022FF2: - movs r3, 0x16 - b _08022FF8 -_08022FF6: - movs r3, 0x2E -_08022FF8: - ldrb r1, [r4, 0x1A] - movs r0, 0xF - ands r0, r1 - adds r0, r3, r0 - subs r0, 0x1 - movs r1, 0 - strb r0, [r4, 0x10] - strb r1, [r4, 0x11] - ldr r1, _08023018 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08023018: .4byte gBattlescriptCurrInstr - thumb_func_end atk47_setgraphicalstatchangevalues - - thumb_func_start atk48_playstatchangeanimation -atk48_playstatchangeanimation: @ 802301C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r3, 0 - ldr r5, _08023090 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - str r3, [sp] - bl GetBattlerForBattleScript - ldr r2, _08023094 @ =gActiveBattler - strb r0, [r2] - ldr r0, [r5] - ldrb r4, [r0, 0x2] - ldrb r1, [r0, 0x3] - movs r0, 0x1 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _08023130 - movs r0, 0x2 - ands r0, r1 - movs r1, 0x15 - cmp r0, 0 - beq _0802305C - movs r1, 0x2D -_0802305C: - cmp r4, 0 - beq _08023104 - movs r0, 0x1 - mov r10, r0 - ldr r0, _08023098 @ =gUnknown_2023BFC - mov r9, r0 - lsls r5, r1, 16 -_0802306A: - adds r0, r4, 0 - mov r1, r10 - ands r0, r1 - cmp r0, 0 - beq _080230F6 - ldr r0, _08023090 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802309C - ldr r0, _08023094 @ =gActiveBattler - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - b _080230E4 - .align 2, 0 -_08023090: .4byte gBattlescriptCurrInstr -_08023094: .4byte gActiveBattler -_08023098: .4byte gUnknown_2023BFC -_0802309C: - ldr r6, _08023120 @ =gActiveBattler - ldrb r0, [r6] - str r3, [sp] - bl GetBattlerPosition - mov r1, r10 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08023124 @ =gSideTimers - adds r0, r1 - ldrb r0, [r0, 0x4] - ldr r3, [sp] - cmp r0, 0 - bne _080230F6 - ldr r0, _08023128 @ =gBattleMons - ldrb r2, [r6] - movs r1, 0x58 - muls r2, r1 - adds r0, r2, r0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1D - beq _080230F6 - cmp r0, 0x49 - beq _080230F6 - cmp r0, 0x33 - bne _080230DA - cmp r7, 0x6 - beq _080230F6 -_080230DA: - cmp r0, 0x34 - bne _080230E2 - cmp r7, 0x1 - beq _080230F6 -_080230E2: - adds r0, r7, r2 -_080230E4: - add r0, r9 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080230F6 - lsrs r0, r5, 16 - mov r8, r0 - adds r3, 0x1 -_080230F6: - lsrs r4, 1 - movs r1, 0x80 - lsls r1, 9 - adds r5, r1 - adds r7, 0x1 - cmp r4, 0 - bne _0802306A -_08023104: - ldr r0, _0802312C @ =gBattlescriptCurrInstr - mov r9, r0 - cmp r3, 0x1 - ble _08023192 - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x39 - mov r8, r1 - cmp r0, 0 - beq _08023192 - movs r0, 0x3A - b _08023190 - .align 2, 0 -_08023120: .4byte gActiveBattler -_08023124: .4byte gSideTimers -_08023128: .4byte gBattleMons -_0802312C: .4byte gBattlescriptCurrInstr -_08023130: - movs r0, 0x2 - ands r0, r1 - movs r1, 0xE - cmp r0, 0 - beq _0802313C - movs r1, 0x26 -_0802313C: - mov r9, r5 - cmp r4, 0 - beq _08023178 - ldr r6, _080231AC @ =gUnknown_2023BFC - adds r5, r2, 0 - lsls r2, r1, 16 -_08023148: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0802316A - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7, r0 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xB - bgt _0802316A - lsrs r1, r2, 16 - mov r8, r1 - adds r3, 0x1 -_0802316A: - lsrs r4, 1 - movs r0, 0x80 - lsls r0, 9 - adds r2, r0 - adds r7, 0x1 - cmp r4, 0 - bne _08023148 -_08023178: - cmp r3, 0x1 - ble _08023192 - mov r1, r9 - ldr r0, [r1] - ldrb r1, [r0, 0x3] - movs r0, 0x2 - ands r0, r1 - movs r1, 0x37 - mov r8, r1 - cmp r0, 0 - beq _08023192 - movs r0, 0x38 -_08023190: - mov r8, r0 -_08023192: - mov r1, r9 - ldr r2, [r1] - ldrb r1, [r2, 0x3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080231B0 - cmp r3, 0x1 - bgt _080231B0 - adds r0, r2, 0x4 - mov r1, r9 - b _080231FE - .align 2, 0 -_080231AC: .4byte gUnknown_2023BFC -_080231B0: - cmp r3, 0 - beq _080231F8 - ldr r4, _080231EC @ =gBattleScripting - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080231F8 - movs r0, 0 - movs r1, 0x1 - mov r2, r8 - str r3, [sp] - bl BtlController_EmitBattleAnimation - ldr r0, _080231F0 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r0, _080231F4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x3] - movs r0, 0x4 - ands r0, r1 - ldr r3, [sp] - cmp r0, 0 - beq _080231E8 - cmp r3, 0x1 - ble _080231E8 - movs r0, 0x1 - strb r0, [r4, 0x1B] -_080231E8: - ldr r1, _080231F4 @ =gBattlescriptCurrInstr - b _080231FA - .align 2, 0 -_080231EC: .4byte gBattleScripting -_080231F0: .4byte gActiveBattler -_080231F4: .4byte gBattlescriptCurrInstr -_080231F8: - mov r1, r9 -_080231FA: - ldr r0, [r1] - adds r0, 0x4 -_080231FE: - 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 - thumb_func_end atk48_playstatchangeanimation - - thumb_func_start atk49_moveend -atk49_moveend: @ 8023210 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r0, 0 - mov r10, r0 - ldr r2, _08023260 @ =gChosenMove - ldrh r1, [r2] - ldr r0, _08023264 @ =0x0000ffff - movs r3, 0 - str r3, [sp, 0x18] - cmp r1, r0 - beq _08023232 - ldrh r2, [r2] - str r2, [sp, 0x18] -_08023232: - ldr r0, _08023268 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r4, [r0, 0x1] - str r4, [sp, 0x10] - ldrb r0, [r0, 0x2] - str r0, [sp, 0x14] - ldr r1, _0802326C @ =gBattleMons - ldr r0, _08023270 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08023278 - ldr r1, _08023274 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x7] - b _08023282 - .align 2, 0 -_08023260: .4byte gChosenMove -_08023264: .4byte 0x0000ffff -_08023268: .4byte gBattlescriptCurrInstr -_0802326C: .4byte gBattleMons -_08023270: .4byte gBattlerAttacker -_08023274: .4byte gEnigmaBerries -_08023278: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 -_08023282: - str r0, [sp, 0x8] - ldr r1, _080232A4 @ =gBattleStruct - ldr r0, _080232A8 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r0, r1, r0 - str r0, [sp, 0xC] - ldrb r0, [r1, 0x13] - cmp r0, 0 - beq _08023334 - movs r5, 0x3F - ands r5, r0 - str r5, [sp, 0x4] - b _08023346 - .align 2, 0 -_080232A4: .4byte gBattleStruct -_080232A8: .4byte gBattlerAttacker -_080232AC: - ldr r4, _080232C0 @ =gActiveBattler - strb r2, [r4] - movs r0, 0 - movs r1, 0x1 - bl BtlController_EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0802379E - .align 2, 0 -_080232C0: .4byte gActiveBattler -_080232C4: - ldr r4, _080232E8 @ =gActiveBattler - strb r2, [r4] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldrb r1, [r6] - lsls r1, 2 - adds r1, r5 - ldr r0, [r1] - ldr r2, _080232EC @ =0xfffbff3f - ands r0, r2 - str r0, [r1] - b _0802379E - .align 2, 0 -_080232E8: .4byte gActiveBattler -_080232EC: .4byte 0xfffbff3f -_080232F0: - strb r2, [r7] - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r0, _08023324 @ =gBattleScripting - strb r4, [r0, 0x14] - bl MoveValuesCleanUp - ldr r2, _08023328 @ =gBattleScriptsForMoveEffects - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - bl BattleScriptPush - ldr r1, _0802332C @ =gBattlescriptCurrInstr - ldr r0, _08023330 @ =BattleScript_FlushMessageBox - bl _08023BFC - .align 2, 0 -_08023324: .4byte gBattleScripting -_08023328: .4byte gBattleScriptsForMoveEffects -_0802332C: .4byte gBattlescriptCurrInstr -_08023330: .4byte BattleScript_FlushMessageBox -_08023334: - ldr r2, _0802334C @ =gBattleMoves - ldr r0, _08023350 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - str r0, [sp, 0x4] -_08023346: - ldr r1, _08023354 @ =gBattleScripting - mov r12, r1 - b _08023362 - .align 2, 0 -_0802334C: .4byte gBattleMoves -_08023350: .4byte gCurrentMove -_08023354: .4byte gBattleScripting -_08023358: - mov r2, r10 - cmp r2, 0 - beq _08023362 - bl _08023BE8 -_08023362: - mov r3, r12 - ldrb r0, [r3, 0x14] - cmp r0, 0x11 - bls _0802336E - bl _08023BB4 -_0802336E: - lsls r0, 2 - ldr r1, _08023378 @ =_0802337C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08023378: .4byte _0802337C - .align 2, 0 -_0802337C: - .4byte _080233C4 - .4byte _080234A0 - .4byte _0802355C - .4byte _08023580 - .4byte _08023598 - .4byte _080235C0 - .4byte _080235E4 - .4byte _0802368C - .4byte _08023702 - .4byte _08023738 - .4byte _080237D8 - .4byte _080236CC - .4byte _080236EC - .4byte _0802381C - .4byte _08023860 - .4byte _08023A40 - .4byte _08023B28 - .4byte _08023BB4 -_080233C4: - ldr r6, _0802347C @ =gBattleMons - ldr r5, _08023480 @ =gBattlerTarget - ldrb r3, [r5] - movs r7, 0x58 - adds r2, r3, 0 - muls r2, r7 - adds r0, r6, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 16 - ands r0, r1 - cmp r0, 0 - bne _080233E4 - b _080237C8 -_080233E4: - adds r0, r2, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080233EE - b _080237C8 -_080233EE: - ldr r0, _08023484 @ =gBattlerAttacker - ldrb r1, [r0] - cmp r1, r3 - bne _080233F8 - b _080237C8 -_080233F8: - adds r0, r1, 0 - bl GetBattlerSide - adds r4, r0, 0 - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _08023410 - b _080237C8 -_08023410: - ldr r0, _08023488 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0802341E - b _080237C8 -_0802341E: - ldr r2, _0802348C @ =gSpecialStatuses - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 2 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08023442 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _08023442 - b _080237C8 -_08023442: - ldr r2, _08023490 @ =gBattleMoves - ldr r0, _08023494 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08023458 - b _080237C8 -_08023458: - adds r0, r3, 0 - muls r0, r7 - adds r1, r0, r6 - ldrb r2, [r1, 0x19] - movs r0, 0x19 - ldrsb r0, [r1, r0] - cmp r0, 0xB - ble _0802346A - b _080237C8 -_0802346A: - adds r0, r2, 0x1 - strb r0, [r1, 0x19] - bl BattleScriptPushCursor - ldr r1, _08023498 @ =gBattlescriptCurrInstr - ldr r0, _0802349C @ =BattleScript_RageIsBuilding - str r0, [r1] - b _080236FC - .align 2, 0 -_0802347C: .4byte gBattleMons -_08023480: .4byte gBattlerTarget -_08023484: .4byte gBattlerAttacker -_08023488: .4byte gMoveResultFlags -_0802348C: .4byte gSpecialStatuses -_08023490: .4byte gBattleMoves -_08023494: .4byte gCurrentMove -_08023498: .4byte gBattlescriptCurrInstr -_0802349C: .4byte BattleScript_RageIsBuilding -_080234A0: - ldr r4, _0802353C @ =gBattleMons - ldr r6, _08023540 @ =gBattlerTarget - ldrb r2, [r6] - movs r5, 0x58 - mov r12, r5 - mov r1, r12 - muls r1, r2 - adds r7, r4, 0 - adds r7, 0x4C - adds r5, r1, r7 - ldr r3, [r5] - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - bne _080234C0 - b _080237C8 -_080234C0: - adds r0, r1, r4 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080234CA - b _080237C8 -_080234CA: - ldr r0, _08023544 @ =gBattlerAttacker - ldrb r0, [r0] - cmp r0, r2 - bne _080234D4 - b _080237C8 -_080234D4: - ldr r0, _08023548 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r0, 0xC - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - bne _080234E8 - b _080237C8 -_080234E8: - ldr r0, _0802354C @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _080234F6 - b _080237C8 -_080234F6: - ldr r0, [sp, 0x4] - cmp r0, 0xA - beq _080234FE - b _080237C8 -_080234FE: - movs r0, 0x21 - negs r0, r0 - ands r3, r0 - str r3, [r5] - ldr r4, _08023550 @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r6] - mov r1, r12 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - bl BattleScriptPushCursor - ldr r1, _08023554 @ =gBattlescriptCurrInstr - ldr r0, _08023558 @ =BattleScript_DefrostedViaFireMove - str r0, [r1] - movs r2, 0x1 - mov r10, r2 - b _080237C8 - .align 2, 0 -_0802353C: .4byte gBattleMons -_08023540: .4byte gBattlerTarget -_08023544: .4byte gBattlerAttacker -_08023548: .4byte gSpecialStatuses -_0802354C: .4byte gMoveResultFlags -_08023550: .4byte gActiveBattler -_08023554: .4byte gBattlescriptCurrInstr -_08023558: .4byte BattleScript_DefrostedViaFireMove -_0802355C: - ldr r0, _0802357C @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _08023576 - b _080237C8 -_08023576: - movs r3, 0x1 - mov r10, r3 - b _080237C8 - .align 2, 0 -_0802357C: .4byte gBattlerTarget -_08023580: - ldr r0, _08023594 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - b _080236F6 - .align 2, 0 -_08023594: .4byte gBattlerTarget -_08023598: - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080235B0 - b _080237C8 -_080235B0: - movs r5, 0x1 - mov r10, r5 - ldr r0, _080235BC @ =gBattleScripting - mov r12, r0 - b _08023BB4 - .align 2, 0 -_080235BC: .4byte gBattleScripting -_080235C0: - ldr r0, _080235E0 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080235DA - b _080237C8 -_080235DA: - movs r1, 0x1 - mov r10, r1 - b _080237C8 - .align 2, 0 -_080235E0: .4byte gBattlerAttacker -_080235E4: - ldr r0, _08023674 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08023628 - ldr r2, [sp, 0x8] - cmp r2, 0x1D - bne _08023628 - ldr r0, _08023678 @ =gChosenMove - ldrh r2, [r0] - adds r3, r0, 0 - cmp r2, 0xA5 - beq _08023628 - ldr r4, [sp, 0xC] - ldrh r1, [r4] - cmp r1, 0 - beq _08023610 - ldr r0, _0802367C @ =0x0000ffff - cmp r1, r0 - bne _08023628 -_08023610: - cmp r2, 0xE2 - bne _08023622 - ldr r0, _08023680 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08023622 - b _08023AFA -_08023622: - ldrh r0, [r3] - ldr r1, [sp, 0xC] - strh r0, [r1] -_08023628: - movs r4, 0 - ldr r2, _08023684 @ =gBattleMons - ldr r3, _08023688 @ =gBattlerAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r0, [r0] - ldr r5, [sp, 0xC] - ldrh r1, [r5] - mov r9, r3 - cmp r0, r1 - beq _08023660 - mov r6, r9 - movs r3, 0x58 - adds r5, r1, 0 -_0802364A: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08023660 - lsls r0, r4, 1 - ldrb r1, [r6] - muls r1, r3 - adds r0, r1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r5 - bne _0802364A -_08023660: - cmp r4, 0x4 - bne _0802366A - movs r0, 0 - ldr r1, [sp, 0xC] - strh r0, [r1] -_0802366A: - mov r2, r12 - ldrb r0, [r2, 0x14] - adds r0, 0x1 - strb r0, [r2, 0x14] - b _08023BB4 - .align 2, 0 -_08023674: .4byte gHitMarker -_08023678: .4byte gChosenMove -_0802367C: .4byte 0x0000ffff -_08023680: .4byte gMoveResultFlags -_08023684: .4byte gBattleMons -_08023688: .4byte gBattlerAttacker -_0802368C: - movs r4, 0 - ldr r0, _080236C0 @ =gBattlersCount - ldrb r3, [r0] - cmp r4, r3 - blt _08023698 - b _08023846 -_08023698: - ldr r7, _080236C4 @ =gBattleStruct - movs r6, 0 - movs r3, 0xD0 - adds r5, r0, 0 - ldr r2, _080236C8 @ =gBattleMons -_080236A2: - ldr r0, [r7] - adds r0, r3 - ldrh r1, [r0] - cmp r1, 0 - beq _080236B0 - strh r1, [r2, 0x2E] - strh r6, [r0] -_080236B0: - adds r3, 0x2 - adds r2, 0x58 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _080236A2 - b _08023846 - .align 2, 0 -_080236C0: .4byte gBattlersCount -_080236C4: .4byte gBattleStruct -_080236C8: .4byte gBattleMons -_080236CC: - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _080237C8 - movs r2, 0x1 - mov r10, r2 - ldr r3, _080236E8 @ =gBattleScripting - mov r12, r3 - b _08023BB4 - .align 2, 0 -_080236E8: .4byte gBattleScripting -_080236EC: - movs r0, 0x4 - movs r1, 0 - movs r2, 0 - bl ItemBattleEffects -_080236F6: - lsls r0, 24 - cmp r0, 0 - beq _080237C8 -_080236FC: - movs r4, 0x1 - mov r10, r4 - b _080237C8 -_08023702: - ldr r1, _08023728 @ =gStatuses3 - ldr r0, _0802372C @ =gBattlerAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08023730 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08023718 - b _08023AFA -_08023718: - ldr r0, _08023734 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08023726 - b _080232AC -_08023726: - b _08023AFA - .align 2, 0 -_08023728: .4byte gStatuses3 -_0802372C: .4byte gBattlerAttacker -_08023730: .4byte 0x000400c0 -_08023734: .4byte gHitMarker -_08023738: - ldr r0, _080237A8 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08023764 - ldr r1, _080237AC @ =gStatuses3 - ldr r0, _080237B0 @ =gBattlerAttacker - ldrb r2, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080237B4 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - beq _08023764 - adds r0, r2, 0 - bl WasUnableToUseMove - lsls r0, 24 - cmp r0, 0 - beq _080237C8 -_08023764: - ldr r4, _080237B8 @ =gActiveBattler - ldr r5, _080237B0 @ =gBattlerAttacker - ldrb r0, [r5] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, _080237AC @ =gStatuses3 - ldrb r2, [r5] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _080237BC @ =0xfffbff3f - ands r0, r1 - str r0, [r2] - ldr r2, _080237C0 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0802379E: - ldr r1, _080237C4 @ =gBattleScripting - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - b _08023BFE - .align 2, 0 -_080237A8: .4byte gMoveResultFlags -_080237AC: .4byte gStatuses3 -_080237B0: .4byte gBattlerAttacker -_080237B4: .4byte 0x000400c0 -_080237B8: .4byte gActiveBattler -_080237BC: .4byte 0xfffbff3f -_080237C0: .4byte gSpecialStatuses -_080237C4: .4byte gBattleScripting -_080237C8: - ldr r1, _080237D4 @ =gBattleScripting - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - mov r12, r1 - b _08023BB4 - .align 2, 0 -_080237D4: .4byte gBattleScripting -_080237D8: - ldr r0, _08023808 @ =gSpecialStatuses - ldr r6, _0802380C @ =gBattlerTarget - ldrb r2, [r6] - lsls r3, r2, 2 - adds r1, r3, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - blt _08023846 - ldr r0, _08023810 @ =gBattlersCount - ldrb r0, [r0] - cmp r2, r0 - bcs _08023846 - ldr r5, _08023814 @ =gStatuses3 - adds r0, r3, r5 - ldr r0, [r0] - ldr r1, _08023818 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08023806 - b _080232C4 -_08023806: - b _08023846 - .align 2, 0 -_08023808: .4byte gSpecialStatuses -_0802380C: .4byte gBattlerTarget -_08023810: .4byte gBattlersCount -_08023814: .4byte gStatuses3 -_08023818: .4byte 0x000400c0 -_0802381C: - movs r4, 0 - ldr r0, _08023850 @ =gBattlersCount - ldrb r2, [r0] - cmp r4, r2 - bge _08023846 - ldr r2, _08023854 @ =gDisableStructs - ldr r5, _08023858 @ =0xfeffffff - adds r3, r0, 0 - ldr r1, _0802385C @ =gUnknown_2023C34 -_0802382E: - ldrb r0, [r2, 0xA] - cmp r0, 0 - bne _0802383A - ldr r0, [r1] - ands r0, r5 - str r0, [r1] -_0802383A: - adds r2, 0x1C - adds r1, 0x58 - adds r4, 0x1 - ldrb r0, [r3] - cmp r4, r0 - blt _0802382E -_08023846: - mov r1, r12 - ldrb r0, [r1, 0x14] - adds r0, 0x1 - strb r0, [r1, 0x14] - b _08023BB4 - .align 2, 0 -_08023850: .4byte gBattlersCount -_08023854: .4byte gDisableStructs -_08023858: .4byte 0xfeffffff -_0802385C: .4byte gUnknown_2023C34 -_08023860: - ldr r1, _08023914 @ =gHitMarker - ldr r3, [r1] - movs r0, 0x80 - lsls r0, 5 - ands r0, r3 - ldr r2, _08023918 @ =gBattlerAttacker - mov r9, r2 - adds r5, r1, 0 - cmp r0, 0 - beq _0802388A - ldr r0, _0802391C @ =gActiveBattler - ldrb r2, [r2] - strb r2, [r0] - ldr r1, _08023920 @ =gBattlerTarget - ldrb r0, [r1] - mov r4, r9 - strb r0, [r4] - strb r2, [r1] - ldr r0, _08023924 @ =0xffffefff - ands r3, r0 - str r3, [r5] -_0802388A: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _080238A6 - ldr r0, _08023928 @ =gLastPrintedMoves - mov r2, r9 - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r0, _0802392C @ =gChosenMove - ldrh r0, [r0] - strh r0, [r1] -_080238A6: - ldr r0, _08023930 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08023934 @ =gBitTable - mov r3, r9 - ldrb r4, [r3] - lsls r0, r4, 2 - adds r0, r2 - ldr r3, [r0] - ands r1, r3 - adds r6, r2, 0 - cmp r1, 0 - beq _080238C0 - b _08023A2C -_080238C0: - ldr r0, _08023938 @ =gBattleStruct - ldr r1, [r0] - adds r1, 0x91 - ldrb r1, [r1] - ands r1, r3 - adds r7, r0, 0 - cmp r1, 0 - beq _080238D2 - b _08023A2C -_080238D2: - ldr r0, _0802393C @ =gBattleMoves - ldr r2, [sp, 0x18] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r1, [r1] - mov r8, r0 - cmp r1, 0x7F - bne _080238E8 - b _08023A2C -_080238E8: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0802394C - ldr r0, _08023940 @ =gLastMoves - lsls r1, r4, 1 - adds r1, r0 - ldr r0, _0802392C @ =gChosenMove - ldrh r0, [r0] - strh r0, [r1] - ldr r0, _08023944 @ =gLastResultingMoves - mov r3, r9 - ldrb r1, [r3] - lsls r1, 1 - adds r1, r0 - ldr r0, _08023948 @ =gCurrentMove - ldrh r0, [r0] - strh r0, [r1] - b _08023966 - .align 2, 0 -_08023914: .4byte gHitMarker -_08023918: .4byte gBattlerAttacker -_0802391C: .4byte gActiveBattler -_08023920: .4byte gBattlerTarget -_08023924: .4byte 0xffffefff -_08023928: .4byte gLastPrintedMoves -_0802392C: .4byte gChosenMove -_08023930: .4byte gAbsentBattlerFlags -_08023934: .4byte gBitTable -_08023938: .4byte gBattleStruct -_0802393C: .4byte gBattleMoves -_08023940: .4byte gLastMoves -_08023944: .4byte gLastResultingMoves -_08023948: .4byte gCurrentMove -_0802394C: - ldr r1, _080239B4 @ =gLastMoves - lsls r0, r4, 1 - adds r0, r1 - ldr r1, _080239B8 @ =0x0000ffff - strh r1, [r0] - ldr r1, _080239BC @ =gLastResultingMoves - mov r4, r9 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - strh r1, [r0] -_08023966: - ldr r2, _080239C0 @ =gBattlerTarget - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - lsls r0, 28 - ldr r1, [r5] - ands r1, r0 - cmp r1, 0 - bne _08023984 - ldr r0, _080239C4 @ =gLastHitBy - adds r0, r3, r0 - mov r3, r9 - ldrb r1, [r3] - strb r1, [r0] -_08023984: - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _08023A20 - ldr r0, _080239C8 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08023A20 - ldr r0, _080239CC @ =gChosenMove - ldrh r3, [r0] - ldr r0, _080239B8 @ =0x0000ffff - cmp r3, r0 - bne _080239D4 - ldr r1, _080239D0 @ =gLastLandedMoves - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r3, [r0] - b _08023A2C - .align 2, 0 -_080239B4: .4byte gLastMoves -_080239B8: .4byte 0x0000ffff -_080239BC: .4byte gLastResultingMoves -_080239C0: .4byte gBattlerTarget -_080239C4: .4byte gLastHitBy -_080239C8: .4byte gMoveResultFlags -_080239CC: .4byte gChosenMove -_080239D0: .4byte gLastLandedMoves -_080239D4: - ldr r0, _080239F8 @ =gLastLandedMoves - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r4, _080239FC @ =gCurrentMove - ldrh r0, [r4] - strh r0, [r1] - ldr r0, [r7] - ldrb r3, [r0, 0x13] - cmp r3, 0 - beq _08023A04 - ldr r0, _08023A00 @ =gLastHitByType - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - movs r0, 0x3F - ands r0, r3 - b _08023A2A - .align 2, 0 -_080239F8: .4byte gLastLandedMoves -_080239FC: .4byte gCurrentMove -_08023A00: .4byte gLastHitByType -_08023A04: - ldr r0, _08023A1C @ =gLastHitByType - ldrb r2, [r2] - lsls r2, 1 - adds r2, r0 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x2] - strh r0, [r2] - b _08023A2C - .align 2, 0 -_08023A1C: .4byte gLastHitByType -_08023A20: - ldr r0, _08023A38 @ =gLastLandedMoves - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldr r0, _08023A3C @ =0x0000ffff -_08023A2A: - strh r0, [r1] -_08023A2C: - mov r4, r12 - ldrb r0, [r4, 0x14] - adds r0, 0x1 - strb r0, [r4, 0x14] - b _08023BB4 - .align 2, 0 -_08023A38: .4byte gLastLandedMoves -_08023A3C: .4byte 0x0000ffff -_08023A40: - ldr r0, _08023B04 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r7, _08023B08 @ =gBitTable - ldr r2, _08023B0C @ =gBattlerAttacker - ldrb r3, [r2] - lsls r0, r3, 2 - adds r0, r7 - ldr r4, [r0] - ands r1, r4 - mov r9, r2 - cmp r1, 0 - bne _08023AFA - ldr r6, _08023B10 @ =gBattleStruct - ldr r5, [r6] - adds r0, r5, 0 - adds r0, 0x91 - ldrb r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _08023AFA - ldr r1, _08023B14 @ =gBattleMoves - ldr r2, [sp, 0x18] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08023AFA - ldr r0, _08023B18 @ =gHitMarker - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 18 - ands r0, r1 - cmp r0, 0 - beq _08023AFA - ldr r4, _08023B1C @ =gBattlerTarget - ldrb r0, [r4] - cmp r3, r0 - beq _08023AFA - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - lsls r0, 28 - ands r1, r0 - cmp r1, 0 - bne _08023AFA - ldr r0, _08023B20 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _08023AFA - lsls r1, r2, 1 - adds r1, r5 - adds r1, 0x98 - ldr r3, _08023B24 @ =gChosenMove - ldrh r0, [r3] - strb r0, [r1] - ldrb r1, [r4] - ldr r0, [r6] - lsls r1, 1 - adds r1, r0 - adds r1, 0x99 - ldrh r0, [r3] - lsrs r0, 8 - strb r0, [r1] - ldrb r0, [r4] - mov r2, r9 - ldrb r1, [r2] - ldr r2, [r6] - lsls r0, 3 - lsls r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0xE0 - ldrh r1, [r3] - strb r1, [r0] - ldrb r1, [r4] - mov r4, r9 - ldrb r0, [r4] - ldr r2, [r6] - lsls r1, 3 - lsls r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0xE1 - ldrh r0, [r3] - lsrs r0, 8 - strb r0, [r1] -_08023AFA: - mov r5, r12 - ldrb r0, [r5, 0x14] - adds r0, 0x1 - strb r0, [r5, 0x14] - b _08023BB4 - .align 2, 0 -_08023B04: .4byte gAbsentBattlerFlags -_08023B08: .4byte gBitTable -_08023B0C: .4byte gBattlerAttacker -_08023B10: .4byte gBattleStruct -_08023B14: .4byte gBattleMoves -_08023B18: .4byte gHitMarker -_08023B1C: .4byte gBattlerTarget -_08023B20: .4byte gMoveResultFlags -_08023B24: .4byte gChosenMove -_08023B28: - ldr r5, _08023C10 @ =gHitMarker - ldr r2, [r5] - movs r0, 0x80 - lsls r0, 12 - ands r0, r2 - cmp r0, 0 - bne _08023BAC - ldr r0, _08023C14 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08023BAC - ldr r1, _08023C18 @ =gProtectStructs - ldr r0, _08023C1C @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r0, 0 - blt _08023BAC - ldr r0, _08023C20 @ =gBattleMoves - mov r9, r0 - ldr r1, _08023C24 @ =gCurrentMove - mov r8, r1 - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r0, [r1, 0x6] - cmp r0, 0x8 - bne _08023BAC - movs r6, 0x80 - lsls r6, 2 - adds r4, r6, 0 - ands r4, r2 - cmp r4, 0 - bne _08023BAC - ldr r7, _08023C28 @ =gBattlerTarget - ldrb r0, [r7] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08023C2C @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08023BA2 - bl _080232F0 -_08023BA2: - ldr r0, [r5] - orrs r0, r6 - str r0, [r5] - ldr r2, _08023C30 @ =gBattleScripting - mov r12, r2 -_08023BAC: - mov r3, r12 - ldrb r0, [r3, 0x14] - adds r0, 0x1 - strb r0, [r3, 0x14] -_08023BB4: - ldr r4, [sp, 0x10] - cmp r4, 0x1 - bne _08023BC6 - mov r5, r10 - cmp r5, 0 - bne _08023BC6 - movs r0, 0x11 - mov r1, r12 - strb r0, [r1, 0x14] -_08023BC6: - ldr r2, [sp, 0x10] - cmp r2, 0x2 - bne _08023BDC - ldr r4, [sp, 0x14] - mov r3, r12 - ldrb r3, [r3, 0x14] - cmp r4, r3 - bne _08023BDC - movs r0, 0x11 - mov r4, r12 - strb r0, [r4, 0x14] -_08023BDC: - mov r5, r12 - ldrb r0, [r5, 0x14] - cmp r0, 0x11 - beq _08023BE8 - bl _08023358 -_08023BE8: - mov r1, r12 - ldrb r0, [r1, 0x14] - cmp r0, 0x11 - bne _08023BFE - mov r2, r10 - cmp r2, 0 - bne _08023BFE - ldr r1, _08023C34 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 -_08023BFC: - str r0, [r1] -_08023BFE: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023C10: .4byte gHitMarker -_08023C14: .4byte gBattleTypeFlags -_08023C18: .4byte gProtectStructs -_08023C1C: .4byte gBattlerAttacker -_08023C20: .4byte gBattleMoves -_08023C24: .4byte gCurrentMove -_08023C28: .4byte gBattlerTarget -_08023C2C: .4byte gBattleMons -_08023C30: .4byte gBattleScripting -_08023C34: .4byte gBattlescriptCurrInstr - thumb_func_end atk49_moveend - - thumb_func_start atk4A_typecalc2 -atk4A_typecalc2: @ 8023C38 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - movs r5, 0 - ldr r2, _08023C9C @ =gBattleMoves - ldr r0, _08023CA0 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x2] - mov r8, r0 - ldr r2, _08023CA4 @ =gBattleMons - ldr r3, _08023CA8 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r2 - adds r7, r3, 0 - cmp r0, 0x1A - bne _08023CCC - mov r1, r8 - cmp r1, 0x4 - bne _08023CCC - ldr r3, _08023CAC @ =gLastUsedAbility - strb r0, [r3] - ldr r2, _08023CB0 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x9 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08023CB4 @ =gLastLandedMoves - ldrb r0, [r7] - lsls r0, 1 - adds r0, r1 - strh r4, [r0] - ldr r0, _08023CB8 @ =gBattleCommunication - mov r2, r8 - strb r2, [r0, 0x6] - ldrb r0, [r7] - ldrb r1, [r3] - bl RecordAbilityBattle - b _08023DAE - .align 2, 0 -_08023C9C: .4byte gBattleMoves -_08023CA0: .4byte gCurrentMove -_08023CA4: .4byte gBattleMons -_08023CA8: .4byte gBattlerTarget -_08023CAC: .4byte gLastUsedAbility -_08023CB0: .4byte gMoveResultFlags -_08023CB4: .4byte gLastLandedMoves -_08023CB8: .4byte gBattleCommunication -_08023CBC: - ldr r0, _08023CC8 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] - b _08023DAE - .align 2, 0 -_08023CC8: .4byte gMoveResultFlags -_08023CCC: - ldr r1, _08023CD8 @ =gTypeEffectiveness - adds r0, r5, r1 - ldrb r0, [r0] - adds r6, r1, 0 - b _08023D8E - .align 2, 0 -_08023CD8: .4byte gTypeEffectiveness -_08023CDC: - adds r0, r5, r6 - ldrb r0, [r0] - cmp r0, r8 - bne _08023D88 - adds r2, r5, 0x1 - adds r3, r2, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x21 - ldrb r1, [r3] - adds r3, r2, 0 - ldrb r0, [r0] - cmp r1, r0 - bne _08023D1A - adds r0, r5, 0x2 - adds r0, r6 - ldrb r1, [r0] - cmp r1, 0 - beq _08023CBC - cmp r1, 0x5 - bne _08023D0E - movs r0, 0x4 - orrs r4, r0 -_08023D0E: - cmp r1, 0x14 - bne _08023D1A - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08023D1A: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _08023D88 - adds r0, 0x21 - ldrb r1, [r0] - cmp r1, r2 - beq _08023D42 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _08023CBC -_08023D42: - cmp r1, r2 - beq _08023D58 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bne _08023D58 - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08023D58: - adds r2, r3, r6 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x22 - ldrb r2, [r2] - ldrb r1, [r1] - cmp r2, r1 - bne _08023D88 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, r2 - beq _08023D88 - adds r0, r5, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x14 - bne _08023D88 - movs r0, 0x2 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08023D88: - adds r5, 0x3 - adds r0, r5, r6 - ldrb r0, [r0] -_08023D8E: - cmp r0, 0xFF - beq _08023DAE - cmp r0, 0xFE - bne _08023CDC - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 22 - ands r0, r1 - cmp r0, 0 - beq _08023D88 -_08023DAE: - ldr r2, _08023E5C @ =gBattleMons - ldr r0, _08023E60 @ =gBattlerTarget - mov r8, r0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x20 - ldrb r6, [r0] - cmp r6, 0x19 - bne _08023E2A - movs r5, 0x29 - ands r5, r4 - cmp r5, 0 - bne _08023E2A - ldr r0, _08023E64 @ =gBattlerAttacker - ldrb r0, [r0] - ldr r7, _08023E68 @ =gCurrentMove - ldrh r1, [r7] - bl AttacksThisTurn - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _08023E2A - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08023DF0 - movs r0, 0x6 - ands r4, r0 - cmp r4, 0x6 - bne _08023E2A -_08023DF0: - ldr r2, _08023E6C @ =gBattleMoves - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _08023E2A - ldr r3, _08023E70 @ =gLastUsedAbility - strb r6, [r3] - ldr r2, _08023E74 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08023E78 @ =gLastLandedMoves - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] - ldr r1, _08023E7C @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x6] - ldrb r0, [r2] - ldrb r1, [r3] - bl RecordAbilityBattle -_08023E2A: - ldr r0, _08023E74 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08023E48 - ldr r2, _08023E80 @ =gProtectStructs - ldr r0, _08023E64 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 4 - adds r1, r2 - ldrb r0, [r1, 0x1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1, 0x1] -_08023E48: - ldr r1, _08023E84 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08023E5C: .4byte gBattleMons -_08023E60: .4byte gBattlerTarget -_08023E64: .4byte gBattlerAttacker -_08023E68: .4byte gCurrentMove -_08023E6C: .4byte gBattleMoves -_08023E70: .4byte gLastUsedAbility -_08023E74: .4byte gMoveResultFlags -_08023E78: .4byte gLastLandedMoves -_08023E7C: .4byte gBattleCommunication -_08023E80: .4byte gProtectStructs -_08023E84: .4byte gBattlescriptCurrInstr - thumb_func_end atk4A_typecalc2 - - thumb_func_start atk4B_returnatktoball -atk4B_returnatktoball: @ 8023E88 - push {r4,lr} - ldr r4, _08023EC4 @ =gActiveBattler - ldr r0, _08023EC8 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, _08023ECC @ =gHitMarker - ldr r1, _08023ED0 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - ands r0, r1 - cmp r0, 0 - bne _08023EB6 - movs r0, 0 - movs r1, 0 - bl BtlController_EmitReturnMonToBall - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08023EB6: - ldr r1, _08023ED4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08023EC4: .4byte gActiveBattler -_08023EC8: .4byte gBattlerAttacker -_08023ECC: .4byte gHitMarker -_08023ED0: .4byte gBitTable -_08023ED4: .4byte gBattlescriptCurrInstr - thumb_func_end atk4B_returnatktoball - - thumb_func_start atk4C_getswitchedmondata -atk4C_getswitchedmondata: @ 8023ED8 - push {r4,r5,lr} - ldr r0, _08023F30 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08023F28 - ldr r5, _08023F34 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08023F38 @ =gActiveBattler - strb r0, [r4] - ldr r3, _08023F3C @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r2, r0, 1 - adds r2, r3 - ldr r1, _08023F40 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - ldrb r0, [r0] - strh r0, [r2] - ldr r1, _08023F44 @ =gBitTable - ldrb r0, [r4] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitGetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_08023F28: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08023F30: .4byte gBattleControllerExecFlags -_08023F34: .4byte gBattlescriptCurrInstr -_08023F38: .4byte gActiveBattler -_08023F3C: .4byte gBattlerPartyIndexes -_08023F40: .4byte gBattleStruct -_08023F44: .4byte gBitTable - thumb_func_end atk4C_getswitchedmondata - - thumb_func_start atk4D_switchindataupdate -atk4D_switchindataupdate: @ 8023F48 - push {r4-r7,lr} - sub sp, 0x58 - ldr r0, _080240A0 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _08023F56 - b _08024098 -_08023F56: - ldr r0, _080240A4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _080240A8 @ =gActiveBattler - strb r0, [r4] - ldr r6, _080240AC @ =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - mov r0, sp - movs r2, 0x58 - bl memcpy - ldrb r0, [r4] - muls r0, r5 - adds r3, r0, r6 - movs r2, 0 - ldr r5, _080240B0 @ =gBattleBufferB - adds r7, r4, 0 -_08023F84: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _08023F84 - ldr r4, _080240AC @ =gBattleMons - ldrb r0, [r7] - movs r6, 0x58 - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r3, _080240B4 @ =gBaseStats - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - ldrb r1, [r7] - muls r1, r6 - adds r1, r4 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080240B8 @ =gWishFutureKnock - adds r0, 0x29 - adds r0, r2, r0 - ldrb r1, [r0] - ldr r3, _080240BC @ =gBitTable - ldr r2, _080240C0 @ =gBattlerPartyIndexes - ldrb r5, [r7] - lsls r0, r5, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - mov r12, r4 - cmp r1, 0 - beq _08024022 - adds r0, r5, 0 - muls r0, r6 - add r0, r12 - movs r1, 0 - strh r1, [r0, 0x2E] -_08024022: - ldr r2, _080240C4 @ =gBattleMoves - ldr r0, _080240C8 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x7F - bne _08024068 - movs r2, 0 - adds r4, r7, 0 - movs r6, 0x58 - mov r5, r12 - adds r5, 0x18 - add r3, sp, 0x18 -_08024042: - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r6 - adds r1, r2, r1 - adds r1, r5 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _08024042 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r12 - adds r1, 0x50 - adds r0, r1 - ldr r1, [sp, 0x50] - str r1, [r0] -_08024068: - bl SwitchInClearSetData - ldr r0, _080240CC @ =gBattleScripting - ldr r3, _080240A8 @ =gActiveBattler - ldrb r2, [r3] - strb r2, [r0, 0x17] - ldr r1, _080240D0 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - ldr r2, _080240C0 @ =gBattlerPartyIndexes - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _080240A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08024098: - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080240A0: .4byte gBattleControllerExecFlags -_080240A4: .4byte gBattlescriptCurrInstr -_080240A8: .4byte gActiveBattler -_080240AC: .4byte gBattleMons -_080240B0: .4byte gBattleBufferB -_080240B4: .4byte gBaseStats -_080240B8: .4byte gWishFutureKnock -_080240BC: .4byte gBitTable -_080240C0: .4byte gBattlerPartyIndexes -_080240C4: .4byte gBattleMoves -_080240C8: .4byte gCurrentMove -_080240CC: .4byte gBattleScripting -_080240D0: .4byte gBattleTextBuff1 - thumb_func_end atk4D_switchindataupdate - - thumb_func_start atk4E_switchinanim -atk4E_switchinanim: @ 80240D4 - push {r4-r6,lr} - ldr r0, _08024168 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08024160 - ldr r0, _0802416C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r6, _08024170 @ =gActiveBattler - strb r0, [r6] - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802412A - ldr r0, _08024174 @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _08024178 @ =0x0001aa02 - ands r0, r1 - cmp r0, 0 - bne _0802412A - ldr r4, _0802417C @ =gBattleMons - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r0, r4 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r6] - muls r1, r5 - adds r4, 0x48 - adds r1, r4 - ldr r2, [r1] - movs r1, 0x2 - bl HandleSetPokedexFlag -_0802412A: - ldr r2, _08024180 @ =gAbsentBattlerFlags - ldr r1, _08024184 @ =gBitTable - ldr r5, _08024170 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldr r1, _08024188 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r0, 1 - adds r0, r1 - ldrb r1, [r0] - ldr r4, _0802416C @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r2, [r0, 0x2] - movs r0, 0 - bl BtlController_EmitSwitchInAnim - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] -_08024160: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08024168: .4byte gBattleControllerExecFlags -_0802416C: .4byte gBattlescriptCurrInstr -_08024170: .4byte gActiveBattler -_08024174: .4byte gBattleTypeFlags -_08024178: .4byte 0x0001aa02 -_0802417C: .4byte gBattleMons -_08024180: .4byte gAbsentBattlerFlags -_08024184: .4byte gBitTable -_08024188: .4byte gBattlerPartyIndexes - thumb_func_end atk4E_switchinanim - - thumb_func_start atk4F_jumpifcantswitch -atk4F_jumpifcantswitch: @ 802418C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _080241F0 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - movs r0, 0x7F - ands r0, r1 - bl GetBattlerForBattleScript - ldr r3, _080241F4 @ =gActiveBattler - strb r0, [r3] - ldr r2, [r4] - ldrb r1, [r2, 0x1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08024204 - ldr r1, _080241F8 @ =gBattleMons - ldrb r3, [r3] - movs r0, 0x58 - muls r0, r3 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080241FC @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _080241D8 - ldr r1, _08024200 @ =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _08024204 -_080241D8: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _08024388 - .align 2, 0 -_080241F0: .4byte gBattlescriptCurrInstr -_080241F4: .4byte gActiveBattler -_080241F8: .4byte gBattleMons -_080241FC: .4byte 0x0400e000 -_08024200: .4byte gStatuses3 -_08024204: - ldr r5, _08024290 @ =gBattleTypeFlags - ldr r0, [r5] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080242A4 - ldr r4, _08024294 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08024298 @ =gPlayerParty - mov r8, r1 - cmp r0, 0x1 - bne _08024228 - ldr r0, _0802429C @ =gEnemyParty - mov r8, r0 -_08024228: - movs r5, 0 - ldrb r0, [r4] - bl GetBattlerMultiplayerId - lsls r0, 24 - lsrs r0, 24 - bl GetLinkTrainerFlankId - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _08024242 - movs r5, 0x3 -_08024242: - adds r6, r5, 0x3 - cmp r5, r6 - bge _0802428A - ldr r7, _080242A0 @ =gBattlerPartyIndexes -_0802424A: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08024284 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08024284 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08024284 - ldr r0, _08024294 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r5 - bne _0802428A -_08024284: - adds r5, 0x1 - cmp r5, r6 - blt _0802424A -_0802428A: - cmp r5, r6 - beq _08024358 - b _08024380 - .align 2, 0 -_08024290: .4byte gBattleTypeFlags -_08024294: .4byte gActiveBattler -_08024298: .4byte gPlayerParty -_0802429C: .4byte gEnemyParty -_080242A0: .4byte gBattlerPartyIndexes -_080242A4: - ldr r0, _080242D4 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _080242E4 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r5] - ands r0, r4 - cmp r0, 0 - beq _080242D8 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - b _080242DA - .align 2, 0 -_080242D4: .4byte gActiveBattler -_080242D8: - adds r6, r7, 0 -_080242DA: - ldr r0, _080242E0 @ =gEnemyParty - mov r8, r0 - b _0802430A - .align 2, 0 -_080242E0: .4byte gEnemyParty -_080242E4: - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r5] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08024304 - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r6, r0, 24 - b _08024306 -_08024304: - adds r6, r7, 0 -_08024306: - ldr r1, _08024374 @ =gPlayerParty - mov r8, r1 -_0802430A: - movs r5, 0 -_0802430C: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802434E - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0802434E - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0802434E - ldr r1, _08024378 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - beq _0802434E - lsls r0, r6, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r5, r0 - bne _08024354 -_0802434E: - adds r5, 0x1 - cmp r5, 0x5 - ble _0802430C -_08024354: - cmp r5, 0x6 - bne _08024380 -_08024358: - ldr r3, _0802437C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08024388 - .align 2, 0 -_08024374: .4byte gPlayerParty -_08024378: .4byte gBattlerPartyIndexes -_0802437C: .4byte gBattlescriptCurrInstr -_08024380: - ldr r1, _08024394 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_08024388: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024394: .4byte gBattlescriptCurrInstr - thumb_func_end atk4F_jumpifcantswitch - - thumb_func_start sub_8024398 -sub_8024398: @ 8024398 - push {r4,r5,lr} - sub sp, 0x4 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r4, _080243E0 @ =gActiveBattler - ldrb r0, [r4] - ldr r5, _080243E4 @ =gBattleStruct - ldr r1, [r5] - adds r1, r0, r1 - adds r1, 0x58 - ldr r3, _080243E8 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x60 - ldr r0, [r5] - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 - movs r3, 0 - bl BtlController_EmitChoosePokemon - ldrb r0, [r4] - bl MarkBattlerForControllerExec - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080243E0: .4byte gActiveBattler -_080243E4: .4byte gBattleStruct -_080243E8: .4byte gBattlerPartyIndexes - thumb_func_end sub_8024398 - thumb_func_start atk50_openpartyscreen atk50_openpartyscreen: @ 80243EC push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index fc92417da..144d0a3bb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -657,52 +657,6 @@ extern struct BattleStruct *gBattleStruct; #define MOVE_EFFECT_AFFECTS_USER 0x40 #define MOVE_EFFECT_CERTAIN 0x80 -// table ids for general animations -#define B_ANIM_CASTFORM_CHANGE 0x0 -#define B_ANIM_STATS_CHANGE 0x1 -#define B_ANIM_SUBSTITUTE_FADE 0x2 -#define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_x4 0x4 -#define B_ANIM_ITEM_KNOCKOFF 0x5 -#define B_ANIM_TURN_TRAP 0x6 -#define B_ANIM_ITEM_EFFECT 0x7 -#define B_ANIM_SMOKEBALL_ESCAPE 0x8 -#define B_ANIM_HANGED_ON 0x9 -#define B_ANIM_RAIN_CONTINUES 0xA -#define B_ANIM_SUN_CONTINUES 0xB -#define B_ANIM_SANDSTORM_CONTINUES 0xC -#define B_ANIM_HAIL_CONTINUES 0xD -#define B_ANIM_LEECH_SEED_DRAIN 0xE -#define B_ANIM_MON_HIT 0xF -#define B_ANIM_ITEM_STEAL 0x10 -#define B_ANIM_SNATCH_MOVE 0x11 -#define B_ANIM_FUTURE_SIGHT_HIT 0x12 -#define B_ANIM_DOOM_DESIRE_HIT 0x13 -#define B_ANIM_x14 0x14 -#define B_ANIM_INGRAIN_HEAL 0x15 -#define B_ANIM_WISH_HEAL 0x16 - -// special animations table -#define B_ANIM_LVL_UP 0x0 -#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 -#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 -#define B_ANIM_BALL_THROW 0x3 -#define B_ANIM_SAFARI_BALL_THROW 0x4 -#define B_ANIM_SUBSTITUTE_TO_MON 0x5 -#define B_ANIM_MON_TO_SUBSTITUTE 0x6 - -// status animation table -#define B_ANIM_STATUS_PSN 0x0 -#define B_ANIM_STATUS_CONFUSION 0x1 -#define B_ANIM_STATUS_BRN 0x2 -#define B_ANIM_STATUS_INFATUATION 0x3 -#define B_ANIM_STATUS_SLP 0x4 -#define B_ANIM_STATUS_PRZ 0x5 -#define B_ANIM_STATUS_FRZ 0x6 -#define B_ANIM_STATUS_CURSED 0x7 -#define B_ANIM_STATUS_NIGHTMARE 0x8 -#define B_ANIM_STATUS_WRAPPED 0x9 - #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE2(n)((n & 0xF0)) #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 @@ -985,5 +939,7 @@ extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; extern u8 gCurrentTurnActionNumber; extern u16 gExpShareExp; extern u8 gLeveledUpInBattle; +extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; +extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 35d144bac..3536e89f4 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -137,6 +137,14 @@ void sub_8072E48(u8 battlerId, u8); void sub_8073128(u8); // battle_anim_80A9C70.s +#define STAT_ANIM_PLUS1 15 +#define STAT_ANIM_PLUS2 39 +#define STAT_ANIM_MINUS1 22 +#define STAT_ANIM_MINUS2 46 +#define STAT_ANIM_MULTIPLE_PLUS1 55 +#define STAT_ANIM_MULTIPLE_PLUS2 56 +#define STAT_ANIM_MULTIPLE_MINUS1 57 +#define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 bank, u8 statusAnimId); // battle_anim_8170478.s diff --git a/include/battle_scripts.h b/include/battle_scripts.h index adbbd7e0c..165b580de 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -223,5 +223,6 @@ extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; +extern const u8 BattleScript_FlushMessageBox[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0a023f0c2..22793032f 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -370,6 +370,7 @@ #define B_ANIM_FOCUS_PUNCH_SETUP 0x14 #define B_ANIM_INGRAIN_HEAL 0x15 #define B_ANIM_WISH_HEAL 0x16 +#define B_ANIM_x19 0x19 // special animations table #define B_ANIM_LVL_UP 0x0 diff --git a/include/party_menu.h b/include/party_menu.h index 84d9edb76..d10d0e48a 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -13,6 +13,16 @@ enum { AILMENT_BRN }; +enum +{ + PARTY_CHOOSE_MON, + PARTY_MUST_CHOOSE_MON, + PARTY_CANT_SWITCH, + PARTY_USE_ITEM_ON, + PARTY_ABILITY_PREVENTS, + PARTY_GIVE_ITEM, +}; + struct Struct203B0A0 { MainCallback exitCallback; diff --git a/include/pokemon.h b/include/pokemon.h index bf30766a0..5ec4443c6 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -623,7 +623,7 @@ 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 GetLinkTrainerFlankId(u8 linkPlayerId); +bool16 GetLinkTrainerFlankId(u8 linkPlayerId); s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 912c98410..55f3876af 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -17,6 +17,7 @@ #include "battle_ai_script_commands.h" #include "battle_anim.h" #include "battle_interface.h" +#include "constants/battle_anim.h" #include "constants/species.h" #include "constants/moves.h" #include "constants/songs.h" diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 405a4136f..aa3ef9504 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -714,7 +714,7 @@ const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battleb const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz"); // not used -const u8 sRubyLevelUpStatBoxStats[] = +static const u8 sRubyLevelUpStatBoxStats[] = { MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED @@ -867,7 +867,7 @@ const u8 sBallCatchBonuses[] = }; // not used -const u32 gUnknown_8250898 = 0xFF7EAE60; +static const u32 gUnknown_8250898 = 0xFF7EAE60; void atk00_attackcanceler(void) { @@ -3310,3 +3310,1195 @@ void atk23_getexp(void) break; } } + +void atk24(void) +{ + u16 HP_count = 0; + s32 i; + + if (!gBattleControllerExecFlags) + { + for (i = 0; i < PARTY_SIZE; ++i) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP); + if (HP_count == 0) + gBattleOutcome |= B_OUTCOME_LOST; + for (HP_count = 0, i = 0; i < PARTY_SIZE; ++i) + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)) + HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP); + if (HP_count == 0) + gBattleOutcome |= B_OUTCOME_WON; + if (gBattleOutcome == 0 && (gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + s32 foundPlayer; + s32 foundOpponent; + + for (foundPlayer = 0, i = 0; i < gBattlersCount; i += 2) + { + u32 *ptr = &gHitMarker; + u32 hitMarkerUnk = 0x10000000; + + ++i; + --i; + if ((hitMarkerUnk << i) & *ptr && !gSpecialStatuses[i].flag40) + ++foundPlayer; + } + for (foundOpponent = 0, i = 1; i < gBattlersCount; i += 2) + { + u32 *ptr = &gHitMarker; + u32 hitMarkerUnk = 0x10000000; + + { + u8 match; + + ++match; + --match; + } + if ((hitMarkerUnk << i) & *ptr && !gSpecialStatuses[i].flag40) + ++foundOpponent; + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (foundOpponent + foundPlayer > 1) + gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + else + { + if (foundOpponent != 0 && foundPlayer != 0) + gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + } + } + else + { + gBattlescriptCurrInstr += 5; + } + } +} + +void MoveValuesCleanUp(void) +{ + gMoveResultFlags = 0; + gBattleScripting.dmgMultiplier = 1; + gCritMultiplier = 1; + gBattleCommunication[MOVE_EFFECT_BYTE] = 0; + gBattleCommunication[6] = 0; + gHitMarker &= ~(HITMARKER_DESTINYBOND); + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); +} + +void atk25_movevaluescleanup(void) +{ + MoveValuesCleanUp(); + gBattlescriptCurrInstr += 1; +} + +void atk26_setmultihit(void) +{ + gMultiHitCounter = gBattlescriptCurrInstr[1]; + gBattlescriptCurrInstr += 2; +} + +void atk27_decrementmultihit(void) +{ + if (--gMultiHitCounter == 0) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); +} + +void atk28_goto(void) +{ + gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); +} + +void atk29_jumpifbyte(void) +{ + u8 caseID = gBattlescriptCurrInstr[1]; + const u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 2); + u8 value = gBattlescriptCurrInstr[6]; + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 7); + + gBattlescriptCurrInstr += 11; + + switch (caseID) + { + case CMP_EQUAL: + if (*memByte == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memByte != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memByte > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memByte < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memByte & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memByte & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2A_jumpifhalfword(void) +{ + u8 caseID = gBattlescriptCurrInstr[1]; + const u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 2); + u16 value = T2_READ_16(gBattlescriptCurrInstr + 6); + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 8); + + gBattlescriptCurrInstr += 12; + switch (caseID) + { + case CMP_EQUAL: + if (*memHword == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memHword != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memHword > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memHword < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memHword & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memHword & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2B_jumpifword(void) +{ + u8 caseID = gBattlescriptCurrInstr[1]; + const u32* memWord = T2_READ_PTR(gBattlescriptCurrInstr + 2); + u32 value = T1_READ_32(gBattlescriptCurrInstr + 6); + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 10); + + gBattlescriptCurrInstr += 14; + switch (caseID) + { + case CMP_EQUAL: + if (*memWord == value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NOT_EQUAL: + if (*memWord != value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_GREATER_THAN: + if (*memWord > value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_LESS_THAN: + if (*memWord < value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_COMMON_BITS: + if (*memWord & value) + gBattlescriptCurrInstr = jumpPtr; + break; + case CMP_NO_COMMON_BITS: + if (!(*memWord & value)) + gBattlescriptCurrInstr = jumpPtr; + break; + } +} + +void atk2C_jumpifarrayequal(void) +{ + const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1); + const u8 *mem2 = T2_READ_PTR(gBattlescriptCurrInstr + 5); + u32 size = gBattlescriptCurrInstr[9]; + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 10); + u8 i; + + for (i = 0; i < size; ++i) + { + if (*mem1 != *mem2) + { + gBattlescriptCurrInstr += 14; + break; + } + ++mem1, ++mem2; + } + if (i == size) + gBattlescriptCurrInstr = jumpPtr; +} + +void atk2D_jumpifarraynotequal(void) +{ + u8 equalBytes = 0; + const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1); + const u8 *mem2 = T2_READ_PTR(gBattlescriptCurrInstr + 5); + u32 size = gBattlescriptCurrInstr[9]; + const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 10); + u8 i; + + for (i = 0; i < size; ++i) + { + if (*mem1 == *mem2) + ++equalBytes; + ++mem1, ++mem2; + } + if (equalBytes != size) + gBattlescriptCurrInstr = jumpPtr; + else + gBattlescriptCurrInstr += 14; +} + +void atk2E_setbyte(void) +{ + u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); + + *memByte = gBattlescriptCurrInstr[5]; + gBattlescriptCurrInstr += 6; +} + +void atk2F_addbyte(void) +{ + u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); + + *memByte += gBattlescriptCurrInstr[5]; + gBattlescriptCurrInstr += 6; +} + +void atk30_subbyte(void) +{ + u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); + + *memByte -= gBattlescriptCurrInstr[5]; + gBattlescriptCurrInstr += 6; +} + +void atk31_copyarray(void) +{ + u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1); + const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5); + s32 size = gBattlescriptCurrInstr[9]; + s32 i; + + for (i = 0; i < size; ++i) + { + dest[i] = src[i]; + } + gBattlescriptCurrInstr += 10; +} + +void atk32_copyarraywithindex(void) +{ + u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1); + const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5); + const u8 *index = T2_READ_PTR(gBattlescriptCurrInstr + 9); + s32 size = gBattlescriptCurrInstr[13]; + s32 i; + + for (i = 0; i < size; ++i) + { + dest[i] = src[i + *index]; + } + gBattlescriptCurrInstr += 14; +} + +void atk33_orbyte(void) +{ + u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); + *memByte |= gBattlescriptCurrInstr[5]; + gBattlescriptCurrInstr += 6; +} + +void atk34_orhalfword(void) +{ + u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1); + u16 val = T2_READ_16(gBattlescriptCurrInstr + 5); + + *memHword |= val; + gBattlescriptCurrInstr += 7; +} + +void atk35_orword(void) +{ + u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1); + u32 val = T2_READ_32(gBattlescriptCurrInstr + 5); + + *memWord |= val; + gBattlescriptCurrInstr += 9; +} + +void atk36_bicbyte(void) +{ + u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); + + *memByte &= ~(gBattlescriptCurrInstr[5]); + gBattlescriptCurrInstr += 6; +} + +void atk37_bichalfword(void) +{ + u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1); + u16 val = T2_READ_16(gBattlescriptCurrInstr + 5); + + *memHword &= ~val; + gBattlescriptCurrInstr += 7; +} + +void atk38_bicword(void) +{ + u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1); + u32 val = T2_READ_32(gBattlescriptCurrInstr + 5); + + *memWord &= ~val; + gBattlescriptCurrInstr += 9; +} + +void atk39_pause(void) +{ + if (!gBattleControllerExecFlags) + { + u16 value = T2_READ_16(gBattlescriptCurrInstr + 1); + + if (++gPauseCounterBattle >= value) + { + gPauseCounterBattle = 0; + gBattlescriptCurrInstr += 3; + } + } +} + +void atk3A_waitstate(void) +{ + if (!gBattleControllerExecFlags) + ++gBattlescriptCurrInstr; +} + +void atk3B_healthbar_update(void) +{ + if (gBattlescriptCurrInstr[1] == BS_TARGET) + gActiveBattler = gBattlerTarget; + else + gActiveBattler = gBattlerAttacker; + BtlController_EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk3C_return(void) +{ + BattleScriptPop(); +} + +void atk3D_end(void) +{ + gMoveResultFlags = 0; + gActiveBattler = 0; + gCurrentActionFuncId = B_ACTION_TRY_FINISH; +} + +void atk3E_end2(void) +{ + gActiveBattler = 0; + gCurrentActionFuncId = B_ACTION_TRY_FINISH; +} + +void atk3F_end3(void) // pops the main function stack +{ + BattleScriptPop(); + if (gBattleResources->battleCallbackStack->size != 0) + gBattleResources->battleCallbackStack->size--; + gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size]; +} + +void atk41_call(void) +{ + BattleScriptPush(gBattlescriptCurrInstr + 5); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); +} + +void atk42_jumpiftype2(void) +{ + u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type1 || gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type2) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; +} + +void atk43_jumpifabilitypresent(void) +{ + if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, gBattlescriptCurrInstr[1], 0, 0)) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atk44_endselectionscript(void) +{ + *(gBattlerAttacker + gBattleStruct->selectionScriptFinished) = TRUE; +} + +void atk45_playanimation(void) +{ + const u16 *argumentPtr; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); + if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE + || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE + || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE + || gBattlescriptCurrInstr[2] == B_ANIM_x19) + { + BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 7; + } + else if (gHitMarker & HITMARKER_NO_ANIMATIONS) + { + BattleScriptPush(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = BattleScript_Pausex20; + } + else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES + || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES) + { + BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 7; + } + else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr += 7; + } + else + { + BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 7; + } +} + +void atk46_playanimation2(void) // animation Id is stored in the first pointer +{ + const u16 *argumentPtr; + const u8 *animationIdPtr; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + animationIdPtr = T2_READ_PTR(gBattlescriptCurrInstr + 2); + argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6); + if (*animationIdPtr == B_ANIM_STATS_CHANGE + || *animationIdPtr == B_ANIM_SNATCH_MOVE + || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE) + { + BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 10; + } + else if (gHitMarker & HITMARKER_NO_ANIMATIONS) + { + gBattlescriptCurrInstr += 10; + } + else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES + || *animationIdPtr == B_ANIM_SUN_CONTINUES + || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES + || *animationIdPtr == B_ANIM_HAIL_CONTINUES) + { + BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 10; + } + else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) + { + gBattlescriptCurrInstr += 10; + } + else + { + BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 10; + } +} + +void atk47_setgraphicalstatchangevalues(void) +{ + u8 value = 0; + + switch (GET_STAT_BUFF_VALUE2(gBattleScripting.statChanger)) + { + case SET_STAT_BUFF_VALUE(1): // +1 + value = STAT_ANIM_PLUS1; + break; + case SET_STAT_BUFF_VALUE(2): // +2 + value = STAT_ANIM_PLUS2; + break; + case SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE: // -1 + value = STAT_ANIM_MINUS1; + break; + case SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE: // -2 + value = STAT_ANIM_MINUS2; + break; + } + gBattleScripting.animArg1 = GET_STAT_BUFF_ID(gBattleScripting.statChanger) + value - 1; + gBattleScripting.animArg2 = 0; + ++gBattlescriptCurrInstr; +} + +void atk48_playstatchangeanimation(void) +{ + u32 currStat = 0; + u16 statAnimId = 0; + s32 changeableStatsCount = 0; + u8 statsToCheck = 0; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + statsToCheck = gBattlescriptCurrInstr[2]; + if (gBattlescriptCurrInstr[3] & ATK48_STAT_NEGATIVE) // goes down + { + s16 startingStatAnimId; + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) + startingStatAnimId = STAT_ANIM_MINUS2 - 1; + else + startingStatAnimId = STAT_ANIM_MINUS1 - 1; + + while (statsToCheck != 0) + { + if (statsToCheck & 1) + { + if (gBattlescriptCurrInstr[3] & ATK48_DONT_CHECK_LOWER) + { + if (gBattleMons[gActiveBattler].statStages[currStat] > 0) + { + statAnimId = startingStatAnimId + currStat; + ++changeableStatsCount; + } + } + else if (!gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer + && gBattleMons[gActiveBattler].ability != ABILITY_CLEAR_BODY + && gBattleMons[gActiveBattler].ability != ABILITY_WHITE_SMOKE + && !(gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE && currStat == STAT_ACC) + && !(gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK)) + { + if (gBattleMons[gActiveBattler].statStages[currStat] > 0) + { + statAnimId = startingStatAnimId + currStat; + ++changeableStatsCount; + } + } + } + statsToCheck >>= 1; + ++currStat; + } + + if (changeableStatsCount > 1) // more than one stat, so the color is gray + { + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) + statAnimId = STAT_ANIM_MULTIPLE_MINUS2; + else + statAnimId = STAT_ANIM_MULTIPLE_MINUS1; + } + } + else // goes up + { + s16 startingStatAnimId; + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) + startingStatAnimId = STAT_ANIM_PLUS2 - 1; + else + startingStatAnimId = STAT_ANIM_PLUS1 - 1; + + while (statsToCheck != 0) + { + if (statsToCheck & 1 && gBattleMons[gActiveBattler].statStages[currStat] < 0xC) + { + statAnimId = startingStatAnimId + currStat; + ++changeableStatsCount; + } + statsToCheck >>= 1; + ++currStat; + } + if (changeableStatsCount > 1) // more than one stat, so the color is gray + { + if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) + statAnimId = STAT_ANIM_MULTIPLE_PLUS2; + else + statAnimId = STAT_ANIM_MULTIPLE_PLUS1; + } + } + if (gBattlescriptCurrInstr[3] & ATK48_ONLY_MULTIPLE && changeableStatsCount < 2) + { + gBattlescriptCurrInstr += 4; + } + else if (changeableStatsCount != 0 && !gBattleScripting.statAnimPlayed) + { + BtlController_EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId); + MarkBattlerForControllerExec(gActiveBattler); + if (gBattlescriptCurrInstr[3] & ATK48_ONLY_MULTIPLE && changeableStatsCount > 1) + gBattleScripting.statAnimPlayed = TRUE; + gBattlescriptCurrInstr += 4; + } + else + { + gBattlescriptCurrInstr += 4; + } +} + +void atk49_moveend(void) +{ + s32 i; + bool32 effect = FALSE; + u8 moveType = 0; + u8 holdEffectAtk = 0; + u16 *choicedMoveAtk = NULL; + u8 arg1, arg2; + u16 originallyUsedMove; + + if (gChosenMove == 0xFFFF) + originallyUsedMove = 0; + else + originallyUsedMove = gChosenMove; + arg1 = gBattlescriptCurrInstr[1]; + arg2 = gBattlescriptCurrInstr[2]; + if (gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY) + holdEffectAtk = gEnigmaBerries[gBattlerAttacker].holdEffect; + else + holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBattlerAttacker].item); + choicedMoveAtk = &gBattleStruct->choicedMove[gBattlerAttacker]; + GET_MOVE_TYPE(gCurrentMove, moveType); + do + { + switch (gBattleScripting.atk49_state) + { + case ATK49_RAGE: // rage check + if (gBattleMons[gBattlerTarget].status2 & STATUS2_RAGE + && gBattleMons[gBattlerTarget].hp != 0 + && gBattlerAttacker != gBattlerTarget + && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && TARGET_TURN_DAMAGED + && gBattleMoves[gCurrentMove].power + && gBattleMons[gBattlerTarget].statStages[STAT_ATK] <= 0xB) + { + ++gBattleMons[gBattlerTarget].statStages[STAT_ATK]; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RageIsBuilding; + effect = TRUE; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_DEFROST: // defrosting check + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE + && gBattleMons[gBattlerTarget].hp != 0 + && gBattlerAttacker != gBattlerTarget + && gSpecialStatuses[gBattlerTarget].specialDmg + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && moveType == TYPE_FIRE) + { + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_FREEZE); + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gActiveBattler); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; + effect = TRUE; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_SYNCHRONIZE_TARGET: // target synchronize + if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBattlerTarget, 0, 0, 0)) + effect = TRUE; + ++gBattleScripting.atk49_state; + break; + case ATK49_MOVE_END_ABILITIES: // Such as abilities activating on contact(Poison Spore, Rough Skin, etc.). + if (AbilityBattleEffects(ABILITYEFFECT_MOVE_END, gBattlerTarget, 0, 0, 0)) + effect = TRUE; + ++gBattleScripting.atk49_state; + break; + case ATK49_STATUS_IMMUNITY_ABILITIES: // status immunities + if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) + effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers + else + ++gBattleScripting.atk49_state; + break; + case ATK49_SYNCHRONIZE_ATTACKER: // attacker synchronize + if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBattlerAttacker, 0, 0, 0)) + effect = TRUE; + ++gBattleScripting.atk49_state; + break; + case ATK49_CHOICE_MOVE: // update choice band move + if (gHitMarker & HITMARKER_OBEYS + && holdEffectAtk == HOLD_EFFECT_CHOICE_BAND + && gChosenMove != MOVE_STRUGGLE + && (*choicedMoveAtk == 0 || *choicedMoveAtk == 0xFFFF)) + { + if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED)) + { + ++gBattleScripting.atk49_state; + break; + } + *choicedMoveAtk = gChosenMove; + } + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk) + break; + } + if (i == MAX_MON_MOVES) + *choicedMoveAtk = 0; + ++gBattleScripting.atk49_state; + break; + case ATK49_CHANGED_ITEMS: // changed held items + for (i = 0; i < gBattlersCount; ++i) + { + u16 *changedItem = &gBattleStruct->changedItems[i]; + + if (*changedItem != 0) + { + gBattleMons[i].item = *changedItem; + *changedItem = 0; + } + } + ++gBattleScripting.atk49_state; + break; + case ATK49_ITEM_EFFECTS_ALL: // item effects for all battlers + if (ItemBattleEffects(ITEMEFFECT_MOVE_END, 0, FALSE)) + effect = TRUE; + else + ++gBattleScripting.atk49_state; + break; + case ATK49_KINGSROCK_SHELLBELL: // king's rock and shell bell + if (ItemBattleEffects(ITEMEFFECT_KINGSROCK_SHELLBELL, 0, FALSE)) + effect = TRUE; + ++gBattleScripting.atk49_state; + break; + case ATK49_ATTACKER_INVISIBLE: // make attacker sprite invisible + if (gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE) + && gHitMarker & HITMARKER_NO_ANIMATIONS) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitSpriteInvisibility(0, TRUE); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattleScripting.atk49_state; + return; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_ATTACKER_VISIBLE: // make attacker sprite visible + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT + || !(gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE)) + || WasUnableToUseMove(gBattlerAttacker)) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitSpriteInvisibility(0, FALSE); + MarkBattlerForControllerExec(gActiveBattler); + gStatuses3[gBattlerAttacker] &= ~(STATUS3_SEMI_INVULNERABLE); + gSpecialStatuses[gBattlerAttacker].restoredBattlerSprite = 1; + ++gBattleScripting.atk49_state; + return; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_TARGET_VISIBLE: // make target sprite visible + if (!gSpecialStatuses[gBattlerTarget].restoredBattlerSprite + && gBattlerTarget < gBattlersCount + && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) + { + gActiveBattler = gBattlerTarget; + BtlController_EmitSpriteInvisibility(0, FALSE); + MarkBattlerForControllerExec(gActiveBattler); + gStatuses3[gBattlerTarget] &= ~(STATUS3_SEMI_INVULNERABLE); + ++gBattleScripting.atk49_state; + return; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_SUBSTITUTE: // update substitute + for (i = 0; i < gBattlersCount; ++i) + { + if (gDisableStructs[i].substituteHP == 0) + gBattleMons[i].status2 &= ~(STATUS2_SUBSTITUTE); + } + ++gBattleScripting.atk49_state; + break; + case ATK49_UPDATE_LAST_MOVES: + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) + { + gActiveBattler = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = gActiveBattler; + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); + } + if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) + { + gLastPrintedMoves[gBattlerAttacker] = gChosenMove; + } + if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) + && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker]) + && gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS) + { + if (gHitMarker & HITMARKER_OBEYS) + { + gLastMoves[gBattlerAttacker] = gChosenMove; + gLastResultingMoves[gBattlerAttacker] = gCurrentMove; + } + else + { + gLastMoves[gBattlerAttacker] = 0xFFFF; + gLastResultingMoves[gBattlerAttacker] = 0xFFFF; + } + + if (!(gHitMarker & HITMARKER_FAINTED(gBattlerTarget))) + gLastHitBy[gBattlerTarget] = gBattlerAttacker; + + if (gHitMarker & HITMARKER_OBEYS && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + if (gChosenMove == 0xFFFF) + { + gLastLandedMoves[gBattlerTarget] = gChosenMove; + } + else + { + gLastLandedMoves[gBattlerTarget] = gCurrentMove; + GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBattlerTarget]); + } + } + else + { + gLastLandedMoves[gBattlerTarget] = 0xFFFF; + } + } + ++gBattleScripting.atk49_state; + break; + case ATK49_MIRROR_MOVE: // mirror move + if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) + && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker]) + && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED + && gHitMarker & HITMARKER_OBEYS + && gBattlerAttacker != gBattlerTarget + && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget)) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + { + u8 target, attacker; + + *(gBattleStruct->lastTakenMove + gBattlerTarget * 2 + 0) = gChosenMove; + *(gBattleStruct->lastTakenMove + gBattlerTarget * 2 + 1) = gChosenMove >> 8; + target = gBattlerTarget; + attacker = gBattlerAttacker; + *(attacker * 2 + target * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = gChosenMove; + target = gBattlerTarget; + attacker = gBattlerAttacker; + *(attacker * 2 + target * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = gChosenMove >> 8; + } + ++gBattleScripting.atk49_state; + break; + case ATK49_NEXT_TARGET: // For moves hitting two opposing Pokemon. + if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) + && gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !gProtectStructs[gBattlerAttacker].chargingTurn + && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH + && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + { + u8 battlerId = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); + if (gBattleMons[battlerId].hp != 0) + { + gBattlerTarget = battlerId; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + gBattleScripting.atk49_state = 0; + MoveValuesCleanUp(); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr = BattleScript_FlushMessageBox; + return; + } + else + { + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + } + ++gBattleScripting.atk49_state; + break; + case ATK49_COUNT: + break; + } + if (arg1 == 1 && effect == FALSE) + gBattleScripting.atk49_state = ATK49_COUNT; + if (arg1 == 2 && arg2 == gBattleScripting.atk49_state) + gBattleScripting.atk49_state = ATK49_COUNT; + } + while (gBattleScripting.atk49_state != ATK49_COUNT && effect == FALSE); + if (gBattleScripting.atk49_state == ATK49_COUNT && effect == FALSE) + gBattlescriptCurrInstr += 3; +} + +void atk4A_typecalc2(void) +{ + u8 flags = 0; + s32 i = 0; + u8 moveType = gBattleMoves[gCurrentMove].type; + + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); + gLastLandedMoves[gBattlerTarget] = 0; + gBattleCommunication[6] = moveType; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else + { + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) + { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) + { + if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT) + { + break; + } + else + { + i += 3; + continue; + } + } + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) + { + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1) + { + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) + { + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + break; + } + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) + { + flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; + } + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) + { + flags |= MOVE_RESULT_SUPER_EFFECTIVE; + } + } + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2) + { + if (gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) + { + gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + break; + } + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 + && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) + { + flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; + } + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 + && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) + { + flags |= MOVE_RESULT_SUPER_EFFECTIVE; + } + } + } + i += 3; + } + } + if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD + && !(flags & MOVE_RESULT_NO_EFFECT) + && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2 + && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gMoveResultFlags |= MOVE_RESULT_MISSED; + gLastLandedMoves[gBattlerTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) + gProtectStructs[gBattlerAttacker].targetNotAffected = 1; + ++gBattlescriptCurrInstr; +} + +void atk4B_returnatktoball(void) +{ + gActiveBattler = gBattlerAttacker; + if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler))) + { + BtlController_EmitReturnMonToBall(0, 0); + MarkBattlerForControllerExec(gActiveBattler); + } + ++gBattlescriptCurrInstr; +} + +void atk4C_getswitchedmondata(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + gBattlerPartyIndexes[gActiveBattler] = *(gBattleStruct->monToSwitchIntoId + gActiveBattler); + BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; + } +} + +void atk4D_switchindataupdate(void) +{ + struct BattlePokemon oldData; + s32 i; + u8 *monData; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + oldData = gBattleMons[gActiveBattler]; + monData = (u8 *)(&gBattleMons[gActiveBattler]); + for (i = 0; i < sizeof(struct BattlePokemon); ++i) + { + monData[i] = gBattleBufferB[gActiveBattler][4 + i]; + } + gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); + // check knocked off item + i = GetBattlerSide(gActiveBattler); + if (gWishFutureKnock.knockedOffMons[i] & gBitTable[gBattlerPartyIndexes[gActiveBattler]]) + gBattleMons[gActiveBattler].item = 0; + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) + { + for (i = 0; i < NUM_BATTLE_STATS; ++i) + { + gBattleMons[gActiveBattler].statStages[i] = oldData.statStages[i]; + } + gBattleMons[gActiveBattler].status2 = oldData.status2; + } + SwitchInClearSetData(); + gBattleScripting.battler = gActiveBattler; + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]); + gBattlescriptCurrInstr += 2; + } +} + +void atk4E_switchinanim(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & + (BATTLE_TYPE_LINK + | BATTLE_TYPE_LEGENDARY + | BATTLE_TYPE_OLDMAN_TUTORIAL + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_GHOST))) + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + gAbsentBattlerFlags &= ~(gBitTable[gActiveBattler]); + BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; + } +} + +void atk4F_jumpifcantswitch(void) +{ + s32 i; + s32 lastMonId; + struct Pokemon *party; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES)); + if (!(gBattlescriptCurrInstr[1] & ATK4F_DONT_CHECK_STATUSES) + && ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + || (gStatuses3[gActiveBattler] & STATUS3_ROOTED))) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + } + else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) + party = gEnemyParty; + else + party = gPlayerParty; + + i = 0; + if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE) + i = 3; + for (lastMonId = i + 3; i < lastMonId; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0 + && gBattlerPartyIndexes[gActiveBattler] != i) + break; + } + if (i == lastMonId) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } + else + { + u8 battlerIn1, battlerIn2; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) + { + battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + battlerIn2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + else + battlerIn2 = battlerIn1; + party = gEnemyParty; + } + else + { + battlerIn1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + battlerIn2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + else + battlerIn2 = battlerIn1; + party = gPlayerParty; + } + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && i != gBattlerPartyIndexes[battlerIn1] + && i != gBattlerPartyIndexes[battlerIn2]) + break; + } + if (i == 6) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + } +} + +void sub_8024398(u8 arg0) +{ + *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler]; + BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]); + MarkBattlerForControllerExec(gActiveBattler); +} diff --git a/src/pokemon.c b/src/pokemon.c index e21643c51..e476ab456 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6465,9 +6465,9 @@ bool8 sub_80435E0(void) return retVal; } -bool8 GetLinkTrainerFlankId(u8 linkPlayerId) +bool16 GetLinkTrainerFlankId(u8 linkPlayerId) { - bool8 retVal = FALSE; + bool16 retVal = FALSE; switch (gLinkPlayers[linkPlayerId].id) { case 0: From 184066d1c106d6dc61621504abe808112b48674e Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 26 Aug 2019 14:38:40 +0800 Subject: [PATCH 026/100] thru atk6B --- asm/battle_script_commands.s | 3695 ----------------------------- asm/evolution_scene.s | 4 +- asm/learn_move.s | 2 +- asm/party_menu.s | 2 +- asm/pokemon_summary_screen.s | 6 +- asm/script_pokemon_util_80BF8FC.s | 2 +- include/battle.h | 3 +- include/battle_main.h | 3 +- include/battle_script_commands.h | 4 +- include/battle_scripts.h | 1 + include/constants/trainers.h | 12 + include/overworld.h | 1 + include/pokemon_summary_screen.h | 36 + include/strings.h | 3 + src/battle_script_commands.c | 1233 ++++++++++ 15 files changed, 1300 insertions(+), 3707 deletions(-) create mode 100644 include/constants/trainers.h create mode 100644 include/pokemon_summary_screen.h diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index ed848ba78..7a0f29fb8 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,3701 +5,6 @@ .text - thumb_func_start atk50_openpartyscreen -atk50_openpartyscreen: @ 80243EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r7, 0 - movs r0, 0 - mov r9, r0 - ldr r6, _08024498 @ =gBattlescriptCurrInstr - ldr r2, [r6] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - mov r8, r1 - ldrb r1, [r2, 0x1] - adds r0, r1, 0 - mov r12, r6 - cmp r0, 0x5 - beq _08024422 - b _080248B8 -_08024422: - ldr r0, _0802449C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r1, r0 - cmp r1, 0x1 - beq _08024510 - ldr r1, _080244A0 @ =gActiveBattler - strb r7, [r1] - ldr r0, _080244A4 @ =gBattlersCount - ldrb r0, [r0] - cmp r7, r0 - bcc _0802443C - b _080248A6 -_0802443C: - ldr r7, _080244A8 @ =gHitMarker - ldr r6, _080244AC @ =gBitTable - adds r4, r1, 0 - ldr r2, _080244B0 @ =gAbsentBattlerFlags - mov r8, r2 -_08024446: - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - ands r0, r1 - cmp r0, 0 - beq _080244E8 - adds r0, r2, 0 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _080244B4 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - mov r2, r8 - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080244F6 - .align 2, 0 -_08024498: .4byte gBattlescriptCurrInstr -_0802449C: .4byte gBattleTypeFlags -_080244A0: .4byte gActiveBattler -_080244A4: .4byte gBattlersCount -_080244A8: .4byte gHitMarker -_080244AC: .4byte gBitTable -_080244B0: .4byte gAbsentBattlerFlags -_080244B4: - ldr r5, _080244E4 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _080244F6 - movs r0, 0x6 - bl sub_8024398 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _080244F6 - .align 2, 0 -_080244E4: .4byte gSpecialStatuses -_080244E8: - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080244F6: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0802450C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08024446 - b _080248A6 - .align 2, 0 -_0802450C: .4byte gBattlersCount -_08024510: - ands r0, r1 - cmp r0, 0 - bne _08024518 - b _080248A6 -_08024518: - ldr r0, _08024570 @ =gHitMarker - mov r8, r0 - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r6, _08024574 @ =gBitTable - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - beq _080245CE - ldr r4, _08024578 @ =gActiveBattler - strb r7, [r4] - movs r0, 0 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _08024580 - ldr r2, _0802457C @ =gAbsentBattlerFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - mov r2, r8 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080245CE - .align 2, 0 -_08024570: .4byte gHitMarker -_08024574: .4byte gBitTable -_08024578: .4byte gActiveBattler -_0802457C: .4byte gAbsentBattlerFlags -_08024580: - ldr r6, _080245B4 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _080245BC - ldr r0, _080245B8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5E - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _080245CE - .align 2, 0 -_080245B4: .4byte gSpecialStatuses -_080245B8: .4byte gBattleStruct -_080245BC: - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec - movs r0, 0x1 - mov r9, r0 -_080245CE: - ldr r6, _08024628 @ =gBitTable - ldr r0, [r6, 0x8] - ands r0, r5 - cmp r0, 0 - beq _0802468C - ldr r0, [r6] - ands r0, r5 - cmp r0, 0 - bne _0802468C - ldr r4, _0802462C @ =gActiveBattler - movs r0, 0x2 - strb r0, [r4] - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _08024638 - ldr r2, _08024630 @ =gAbsentBattlerFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _08024634 @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0802468C - .align 2, 0 -_08024628: .4byte gBitTable -_0802462C: .4byte gActiveBattler -_08024630: .4byte gAbsentBattlerFlags -_08024634: .4byte gHitMarker -_08024638: - ldr r6, _0802466C @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08024674 - ldr r0, _08024670 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5C - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0802468C - .align 2, 0 -_0802466C: .4byte gSpecialStatuses -_08024670: .4byte gBattleStruct -_08024674: - movs r0, 0x1 - mov r1, r9 - ands r0, r1 - cmp r0, 0 - bne _0802468C - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0802468C: - ldr r6, _080246DC @ =gBitTable - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - beq _0802473E - ldr r4, _080246E0 @ =gActiveBattler - movs r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _080246EC - ldr r2, _080246E4 @ =gAbsentBattlerFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _080246E8 @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0802473E - .align 2, 0 -_080246DC: .4byte gBitTable -_080246E0: .4byte gActiveBattler -_080246E4: .4byte gAbsentBattlerFlags -_080246E8: .4byte gHitMarker -_080246EC: - ldr r6, _08024720 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08024728 - ldr r0, _08024724 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5F - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0802473E - .align 2, 0 -_08024720: .4byte gSpecialStatuses -_08024724: .4byte gBattleStruct -_08024728: - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec - movs r0, 0x2 - mov r2, r9 - orrs r2, r0 - mov r9, r2 -_0802473E: - ldr r6, _08024798 @ =gBitTable - ldr r0, [r6, 0xC] - ands r0, r5 - cmp r0, 0 - beq _080247FC - ldr r0, [r6, 0x4] - ands r0, r5 - cmp r0, 0 - bne _080247FC - ldr r4, _0802479C @ =gActiveBattler - movs r0, 0x3 - strb r0, [r4] - movs r0, 0x3 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _080247A8 - ldr r2, _080247A0 @ =gAbsentBattlerFlags - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _080247A4 @ =gHitMarker - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080247FC - .align 2, 0 -_08024798: .4byte gBitTable -_0802479C: .4byte gActiveBattler -_080247A0: .4byte gAbsentBattlerFlags -_080247A4: .4byte gHitMarker -_080247A8: - ldr r6, _080247DC @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _080247E4 - ldr r0, _080247E0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5D - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _080247FC - .align 2, 0 -_080247DC: .4byte gSpecialStatuses -_080247E0: .4byte gBattleStruct -_080247E4: - movs r0, 0x2 - mov r1, r9 - ands r1, r0 - cmp r1, 0 - bne _080247FC - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080247FC: - ldr r1, _0802482C @ =gSpecialStatuses - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08024850 - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _08024850 - cmp r5, 0 - beq _08024850 - ldr r0, _08024830 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r0, _08024834 @ =gBitTable - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _0802483C - ldr r1, _08024838 @ =gActiveBattler - movs r0, 0x2 - strb r0, [r1] - b _08024840 - .align 2, 0 -_0802482C: .4byte gSpecialStatuses -_08024830: .4byte gAbsentBattlerFlags -_08024834: .4byte gBitTable -_08024838: .4byte gActiveBattler -_0802483C: - ldr r0, _08024880 @ =gActiveBattler - strb r1, [r0] -_08024840: - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldr r0, _08024880 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec -_08024850: - ldr r1, _08024884 @ =gSpecialStatuses - ldrb r0, [r1, 0x14] - lsls r0, 25 - cmp r0, 0 - blt _080248A6 - adds r0, r1, 0 - adds r0, 0x3C - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _080248A6 - cmp r5, 0 - beq _080248A6 - ldr r0, _08024888 @ =gAbsentBattlerFlags - ldrb r0, [r0] - ldr r1, _0802488C @ =gBitTable - ldr r1, [r1, 0x4] - ands r0, r1 - cmp r0, 0 - beq _08024890 - ldr r1, _08024880 @ =gActiveBattler - movs r0, 0x3 - b _08024894 - .align 2, 0 -_08024880: .4byte gActiveBattler -_08024884: .4byte gSpecialStatuses -_08024888: .4byte gAbsentBattlerFlags -_0802488C: .4byte gBitTable -_08024890: - ldr r1, _080248B0 @ =gActiveBattler - movs r0, 0x1 -_08024894: - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldr r0, _080248B0 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec -_080248A6: - ldr r1, _080248B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - b _08024C2E - .align 2, 0 -_080248B0: .4byte gActiveBattler -_080248B4: .4byte gBattlescriptCurrInstr -_080248B8: - cmp r0, 0x6 - beq _080248BE - b _08024AAC -_080248BE: - ldr r0, _08024934 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080248CC - b _08024A48 -_080248CC: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - bne _080248D6 - b _08024A48 -_080248D6: - ldr r7, _08024938 @ =gHitMarker - ldr r0, [r7] - lsrs r5, r0, 28 - ldr r4, _0802493C @ =gBitTable - ldr r0, [r4, 0x8] - ands r0, r5 - cmp r0, 0 - beq _0802497E - ldr r0, [r4] - ands r0, r5 - cmp r0, 0 - beq _0802497E - ldr r6, _08024940 @ =gActiveBattler - movs r0, 0x2 - strb r0, [r6] - ldr r0, _08024944 @ =gBattleBufferB - ldrb r1, [r0, 0x1] - movs r0, 0x2 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _0802494C - ldr r2, _08024948 @ =gAbsentBattlerFlags - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r6] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r7] - bics r0, r1 - str r0, [r7] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r6] - bl MarkBattlerForControllerExec - b _0802497E - .align 2, 0 -_08024934: .4byte gBattleTypeFlags -_08024938: .4byte gHitMarker -_0802493C: .4byte gBitTable -_08024940: .4byte gActiveBattler -_08024944: .4byte gBattleBufferB -_08024948: .4byte gAbsentBattlerFlags -_0802494C: - ldr r4, _080249DC @ =gSpecialStatuses - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _0802497E - ldr r0, _080249E0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5C - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_0802497E: - ldr r4, _080249E4 @ =gBitTable - ldr r0, [r4, 0xC] - ands r0, r5 - cmp r0, 0 - beq _08024A2E - ldr r0, [r4, 0x4] - ands r5, r0 - cmp r5, 0 - beq _08024A2E - ldr r5, _080249E8 @ =gActiveBattler - movs r0, 0x3 - strb r0, [r5] - ldr r0, _080249EC @ =gBattleBufferB - ldr r2, _080249F0 @ =0x00000201 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x3 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _080249FC - ldr r2, _080249F4 @ =gAbsentBattlerFlags - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _080249F8 @ =gHitMarker - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - movs r0, 0 - bl BtlController_EmitCmd42 - ldrb r0, [r5] - bl MarkBattlerForControllerExec - b _08024A2E - .align 2, 0 -_080249DC: .4byte gSpecialStatuses -_080249E0: .4byte gBattleStruct -_080249E4: .4byte gBitTable -_080249E8: .4byte gActiveBattler -_080249EC: .4byte gBattleBufferB -_080249F0: .4byte 0x00000201 -_080249F4: .4byte gAbsentBattlerFlags -_080249F8: .4byte gHitMarker -_080249FC: - ldr r4, _08024A3C @ =gSpecialStatuses - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08024A2E - ldr r0, _08024A40 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x5D - ldrb r0, [r0] - bl sub_8024398 - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_08024A2E: - ldr r1, _08024A44 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] - mov r12, r1 - b _08024A4C - .align 2, 0 -_08024A3C: .4byte gSpecialStatuses -_08024A40: .4byte gBattleStruct -_08024A44: .4byte gBattlescriptCurrInstr -_08024A48: - adds r0, r2, 0x6 - str r0, [r6] -_08024A4C: - ldr r0, _08024A9C @ =gHitMarker - ldr r0, [r0] - lsrs r5, r0, 28 - ldr r1, _08024AA0 @ =gBattlerFainted - movs r0, 0 - strb r0, [r1] - ldr r4, _08024AA4 @ =gBitTable - ldr r2, [r4] - ands r2, r5 - ldr r6, _08024AA8 @ =gBattlersCount - cmp r2, 0 - bne _08024A88 - adds r7, r6, 0 - ldrb r0, [r6] - cmp r2, r0 - bcs _08024A88 - adds r3, r1, 0 -_08024A6E: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldrb r2, [r3] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - bne _08024A88 - ldrb r0, [r7] - cmp r2, r0 - bcc _08024A6E -_08024A88: - ldrb r0, [r1] - ldrb r6, [r6] - cmp r0, r6 - beq _08024A92 - b _08024C2E -_08024A92: - mov r1, r8 - mov r2, r12 - str r1, [r2] - b _08024C2E - .align 2, 0 -_08024A9C: .4byte gHitMarker -_08024AA0: .4byte gBattlerFainted -_08024AA4: .4byte gBitTable -_08024AA8: .4byte gBattlersCount -_08024AAC: - movs r0, 0x80 - ands r0, r1 - movs r5, 0x1 - cmp r0, 0 - beq _08024AB8 - movs r5, 0 -_08024AB8: - movs r0, 0x7F - ands r0, r1 - bl GetBattlerForBattleScript - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _08024AE0 @ =gSpecialStatuses - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - bge _08024AE4 - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - b _08024C2E - .align 2, 0 -_08024AE0: .4byte gSpecialStatuses -_08024AE4: - adds r0, r7, 0 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - beq _08024B34 - ldr r2, _08024B24 @ =gActiveBattler - strb r7, [r2] - ldr r3, _08024B28 @ =gAbsentBattlerFlags - ldr r4, _08024B2C @ =gBitTable - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r1, [r3] - orrs r0, r1 - strb r0, [r3] - ldr r3, _08024B30 @ =gHitMarker - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - mov r0, r8 - str r0, [r6] - b _08024C2E - .align 2, 0 -_08024B24: .4byte gActiveBattler -_08024B28: .4byte gAbsentBattlerFlags -_08024B2C: .4byte gBitTable -_08024B30: .4byte gHitMarker -_08024B34: - ldr r4, _08024BD8 @ =gActiveBattler - strb r7, [r4] - ldrb r0, [r4] - ldr r3, _08024BDC @ =gBattleStruct - ldr r1, [r3] - adds r1, r0, r1 - adds r1, 0x58 - ldr r2, _08024BE0 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - ldr r3, [r3] - adds r0, r3 - adds r0, 0x5C - ldrb r2, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - adds r0, 0x60 - adds r3, r0 - str r3, [sp] - movs r0, 0 - adds r1, r5, 0 - movs r3, 0 - bl BtlController_EmitChoosePokemon - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r6] - adds r0, 0x6 - str r0, [r6] - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _08024B94 - ldr r1, _08024BE4 @ =gBattleResults - ldrb r0, [r1, 0x2] - cmp r0, 0xFE - bhi _08024B94 - adds r0, 0x1 - strb r0, [r1, 0x2] -_08024B94: - ldr r0, _08024BE8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08024BF0 - ldr r1, _08024BD8 @ =gActiveBattler - movs r0, 0 - strb r0, [r1] - ldr r0, _08024BEC @ =gBattlersCount - ldrb r0, [r0] - cmp r0, 0 - beq _08024C2E - adds r4, r1, 0 -_08024BB0: - ldrb r0, [r4] - cmp r0, r7 - beq _08024BC4 - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08024BC4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08024BEC @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08024BB0 - b _08024C2E - .align 2, 0 -_08024BD8: .4byte gActiveBattler -_08024BDC: .4byte gBattleStruct -_08024BE0: .4byte gBattlerPartyIndexes -_08024BE4: .4byte gBattleResults -_08024BE8: .4byte gBattleTypeFlags -_08024BEC: .4byte gBattlersCount -_08024BF0: - adds r0, r7, 0 - bl GetBattlerPosition - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r4, _08024C3C @ =gActiveBattler - strb r0, [r4] - ldr r0, _08024C40 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08024C44 @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08024C20 - movs r0, 0x2 - eors r3, r0 - strb r3, [r4] -_08024C20: - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitLinkStandbyMsg - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08024C2E: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024C3C: .4byte gActiveBattler -_08024C40: .4byte gAbsentBattlerFlags -_08024C44: .4byte gBitTable - thumb_func_end atk50_openpartyscreen - - thumb_func_start atk51_switchhandleorder -atk51_switchhandleorder: @ 8024C48 - push {r4-r7,lr} - ldr r0, _08024C74 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _08024C54 - b _08024E16 -_08024C54: - ldr r4, _08024C78 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r7, _08024C7C @ =gActiveBattler - strb r0, [r7] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - beq _08024CC4 - cmp r0, 0x1 - bgt _08024C80 - cmp r0, 0 - beq _08024C86 - b _08024E0E - .align 2, 0 -_08024C74: .4byte gBattleControllerExecFlags -_08024C78: .4byte gBattlescriptCurrInstr -_08024C7C: .4byte gActiveBattler -_08024C80: - cmp r0, 0x2 - beq _08024CE0 - b _08024E0E -_08024C86: - movs r3, 0 - ldr r0, _08024CB8 @ =gBattlersCount - ldrb r1, [r0] - cmp r3, r1 - blt _08024C92 - b _08024E0E -_08024C92: - ldr r6, _08024CBC @ =gBattleStruct - ldr r2, _08024CC0 @ =gBattleBufferB - movs r5, 0x80 - lsls r5, 2 - adds r4, r0, 0 -_08024C9C: - ldrb r0, [r2] - cmp r0, 0x22 - bne _08024CAC - ldr r0, [r6] - adds r0, r3, r0 - adds r0, 0x5C - ldrb r1, [r2, 0x1] - strb r1, [r0] -_08024CAC: - adds r2, r5 - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _08024C9C - b _08024E0E - .align 2, 0 -_08024CB8: .4byte gBattlersCount -_08024CBC: .4byte gBattleStruct -_08024CC0: .4byte gBattleBufferB -_08024CC4: - ldr r0, _08024CDC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08024CD2 - b _08024E0E -_08024CD2: - ldrb r0, [r7] - bl sub_8013F6C - b _08024E0E - .align 2, 0 -_08024CDC: .4byte gBattleTypeFlags -_08024CE0: - ldr r1, _08024DAC @ =gBattleCommunication - ldr r4, _08024DB0 @ =gBattleBufferB - ldrb r0, [r7] - lsls r0, 9 - adds r2, r4, 0x1 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldr r6, _08024DB4 @ =gBattleStruct - ldr r1, [r6] - adds r1, r0, r1 - adds r1, 0x5C - lsls r0, 9 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _08024DB8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08024DBC - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - movs r0, 0xF - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - lsls r0, 9 - adds r5, r4, 0x2 - adds r0, r5 - ldrb r2, [r0] - movs r3, 0xF0 - adds r0, r3, 0 - ands r0, r2 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - ldrb r1, [r7] - ldr r2, [r6] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r0, 0x61 - lsls r1, 9 - adds r4, 0x3 - mov r12, r4 - add r1, r12 - ldrb r1, [r1] - strb r1, [r0] - ldrb r0, [r7] - movs r4, 0x2 - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r2, [r1] - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r7] - eors r0, r4 - ldr r2, [r6] - lsls r1, r0, 1 - adds r1, r0 - adds r1, r2 - adds r1, 0x60 - ldrb r0, [r7] - lsls r0, 9 - adds r0, r5 - ldrb r0, [r0] - ands r3, r0 - lsrs r3, 4 - ldrb r0, [r1] - orrs r3, r0 - strb r3, [r1] - ldrb r0, [r7] - eors r4, r0 - ldr r0, [r6] - lsls r1, r4, 1 - adds r1, r4 - adds r1, r0 - adds r1, 0x62 - ldrb r0, [r7] - lsls r0, 9 - add r0, r12 - ldrb r0, [r0] - strb r0, [r1] - b _08024DC2 - .align 2, 0 -_08024DAC: .4byte gBattleCommunication -_08024DB0: .4byte gBattleBufferB -_08024DB4: .4byte gBattleStruct -_08024DB8: .4byte gBattleTypeFlags -_08024DBC: - ldrb r0, [r7] - bl sub_8013F6C -_08024DC2: - ldr r1, _08024E1C @ =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _08024E20 @ =gBattleMons - ldr r3, _08024E24 @ =gBattlerAttacker - ldrb r0, [r3] - movs r2, 0x58 - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r2, _08024E28 @ =gBattleTextBuff2 - strb r5, [r2] - movs r0, 0x7 - strb r0, [r2, 0x1] - ldr r3, _08024E2C @ =gActiveBattler - ldrb r0, [r3] - strb r0, [r2, 0x2] - ldr r1, _08024E30 @ =gBattleBufferB - ldrb r0, [r3] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r2, 0x4] -_08024E0E: - ldr r1, _08024E34 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] -_08024E16: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08024E1C: .4byte gBattleTextBuff1 -_08024E20: .4byte gBattleMons -_08024E24: .4byte gBattlerAttacker -_08024E28: .4byte gBattleTextBuff2 -_08024E2C: .4byte gActiveBattler -_08024E30: .4byte gBattleBufferB -_08024E34: .4byte gBattlescriptCurrInstr - thumb_func_end atk51_switchhandleorder - - thumb_func_start atk52_switchineffects -atk52_switchineffects: @ 8024E38 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r6, _08024F40 @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08024F44 @ =gActiveBattler - strb r0, [r4] - ldrb r0, [r4] - bl sub_80174B8 - ldr r2, _08024F48 @ =gHitMarker - ldr r1, _08024F4C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - ldr r2, _08024F50 @ =gSpecialStatuses - ldrb r0, [r4] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r4] - bl GetBattlerSide - ldr r5, _08024F54 @ =gSideStatuses - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - bne _08024F88 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08024F88 - ldr r1, _08024F58 @ =gBattleMons - mov r9, r1 - ldrb r2, [r4] - movs r7, 0x58 - adds r0, r2, 0 - muls r0, r7 - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08024F88 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08024F88 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _08024F88 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r2, [r0] - mov r1, r8 - orrs r1, r2 - strh r1, [r0] - ldrb r0, [r4] - bl GetBattlerSide - ldr r2, _08024F5C @ =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0xA] - movs r1, 0x5 - subs r1, r0 - lsls r1, 25 - lsrs r1, 24 - ldr r5, _08024F60 @ =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r7 - add r0, r9 - ldrh r0, [r0, 0x2C] - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _08024F28 - movs r0, 0x1 - str r0, [r5] -_08024F28: - ldr r0, _08024F64 @ =gBattleScripting - ldrb r1, [r4] - strb r1, [r0, 0x17] - bl BattleScriptPushCursor - ldr r0, [r6] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08024F6C - ldr r0, _08024F68 @ =BattleScript_SpikesOnTarget - str r0, [r6] - b _080250C6 - .align 2, 0 -_08024F40: .4byte gBattlescriptCurrInstr -_08024F44: .4byte gActiveBattler -_08024F48: .4byte gHitMarker -_08024F4C: .4byte gBitTable -_08024F50: .4byte gSpecialStatuses -_08024F54: .4byte gSideStatuses -_08024F58: .4byte gBattleMons -_08024F5C: .4byte gSideTimers -_08024F60: .4byte gBattleMoveDamage -_08024F64: .4byte gBattleScripting -_08024F68: .4byte BattleScript_SpikesOnTarget -_08024F6C: - cmp r0, 0x1 - bne _08024F7C - ldr r0, _08024F78 @ =BattleScript_SpikesOnAttacker - str r0, [r6] - b _080250C6 - .align 2, 0 -_08024F78: .4byte BattleScript_SpikesOnAttacker -_08024F7C: - ldr r0, _08024F84 @ =BattleScript_SpikesOnFaintedBattler - str r0, [r6] - b _080250C6 - .align 2, 0 -_08024F84: .4byte BattleScript_SpikesOnFaintedBattler -_08024F88: - ldr r1, _08025064 @ =gBattleMons - ldr r5, _08025068 @ =gActiveBattler - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x36 - bne _08024FAE - ldr r1, _0802506C @ =gDisableStructs - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x18] -_08024FAE: - ldrb r1, [r5] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08024FC4 - b _080250C6 -_08024FC4: - ldrb r1, [r5] - movs r0, 0 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080250C6 - ldrb r0, [r5] - bl GetBattlerSide - ldr r1, _08025070 @ =gSideStatuses - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - ldrh r2, [r0] - ldr r1, _08025074 @ =0x0000fdff - ands r1, r2 - strh r1, [r0] - movs r4, 0 - ldr r0, _08025078 @ =gBattlersCount - ldrb r3, [r0] - cmp r4, r3 - bge _08025012 - ldr r6, _0802507C @ =gBattlerByTurnOrder - ldr r3, _08025080 @ =gActionsByTurnOrder - movs r2, 0xC - adds r1, r0, 0 -_08024FFC: - adds r0, r4, r6 - ldrb r0, [r0] - ldrb r7, [r5] - cmp r0, r7 - bne _0802500A - adds r0, r4, r3 - strb r2, [r0] -_0802500A: - adds r4, 0x1 - ldrb r0, [r1] - cmp r4, r0 - blt _08024FFC -_08025012: - movs r4, 0 - ldr r0, _08025078 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bge _08025046 - ldr r6, _08025084 @ =gBattleStruct - ldr r5, _08025064 @ =gBattleMons -_08025020: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 23 - adds r0, 0xA8 - ldr r1, [r6] - adds r1, r0 - movs r0, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x28] - strh r0, [r1] - adds r4, 0x1 - ldr r0, _08025078 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08025020 -_08025046: - ldr r0, _08025088 @ =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r5, r0, 0 - cmp r1, 0x5 - bne _080250C0 - ldr r0, _0802508C @ =gHitMarker - ldr r0, [r0] - lsrs r4, r0, 28 - ldr r1, _08025090 @ =gBattlerFainted - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r2, _08025094 @ =gBitTable - b _080250A6 - .align 2, 0 -_08025064: .4byte gBattleMons -_08025068: .4byte gActiveBattler -_0802506C: .4byte gDisableStructs -_08025070: .4byte gSideStatuses -_08025074: .4byte 0x0000fdff -_08025078: .4byte gBattlersCount -_0802507C: .4byte gBattlerByTurnOrder -_08025080: .4byte gActionsByTurnOrder -_08025084: .4byte gBattleStruct -_08025088: .4byte gBattlescriptCurrInstr -_0802508C: .4byte gHitMarker -_08025090: .4byte gBattlerFainted -_08025094: .4byte gBitTable -_08025098: - ldr r0, _080250D4 @ =gBattlersCount - ldrb r3, [r1] - ldrb r0, [r0] - cmp r3, r0 - bcs _080250C0 - adds r0, r3, 0x1 - strb r0, [r1] -_080250A6: - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r3, [r0] - adds r0, r4, 0 - ands r0, r3 - cmp r0, 0 - beq _08025098 - ldr r0, _080250D8 @ =gAbsentBattlerFlags - ldrb r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _08025098 -_080250C0: - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_080250C6: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080250D4: .4byte gBattlersCount -_080250D8: .4byte gAbsentBattlerFlags - thumb_func_end atk52_switchineffects - - thumb_func_start atk53_trainerslidein -atk53_trainerslidein: @ 80250DC - push {lr} - ldr r0, _080250EC @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080250F0 - movs r0, 0 - b _080250F2 - .align 2, 0 -_080250EC: .4byte gBattlescriptCurrInstr -_080250F0: - movs r0, 0x1 -_080250F2: - bl GetBattlerAtPosition - ldr r1, _08025114 @ =gActiveBattler - strb r0, [r1] - movs r0, 0 - bl BtlController_EmitTrainerSlide - ldr r0, _08025114 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _08025118 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08025114: .4byte gActiveBattler -_08025118: .4byte gBattlescriptCurrInstr - thumb_func_end atk53_trainerslidein - - thumb_func_start atk54_playse -atk54_playse: @ 802511C - push {r4,r5,lr} - ldr r5, _0802514C @ =gActiveBattler - ldr r0, _08025150 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _08025154 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl BtlController_EmitPlaySE - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802514C: .4byte gActiveBattler -_08025150: .4byte gBattlerAttacker -_08025154: .4byte gBattlescriptCurrInstr - thumb_func_end atk54_playse - - thumb_func_start atk55_fanfare -atk55_fanfare: @ 8025158 - push {r4,r5,lr} - ldr r5, _08025188 @ =gActiveBattler - ldr r0, _0802518C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r4, _08025190 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r1, [r0, 0x1] - ldrb r0, [r0, 0x2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0 - bl BtlController_EmitPlayFanfare - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r0, [r4] - adds r0, 0x3 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025188: .4byte gActiveBattler -_0802518C: .4byte gBattlerAttacker -_08025190: .4byte gBattlescriptCurrInstr - thumb_func_end atk55_fanfare - - thumb_func_start atk56_playfaintcry -atk56_playfaintcry: @ 8025194 - push {r4,r5,lr} - ldr r5, _080251BC @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _080251C0 @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - bl BtlController_EmitFaintingCry - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080251BC: .4byte gBattlescriptCurrInstr -_080251C0: .4byte gActiveBattler - thumb_func_end atk56_playfaintcry - - thumb_func_start atk57 -atk57: @ 80251C4 - push {r4,lr} - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _080251F0 @ =gActiveBattler - strb r0, [r4] - ldr r0, _080251F4 @ =gBattleOutcome - ldrb r1, [r0] - movs r0, 0 - bl BtlController_EmitCmd55 - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _080251F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080251F0: .4byte gActiveBattler -_080251F4: .4byte gBattleOutcome -_080251F8: .4byte gBattlescriptCurrInstr - thumb_func_end atk57 - - thumb_func_start atk58_returntoball -atk58_returntoball: @ 80251FC - push {r4,r5,lr} - ldr r5, _08025228 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _0802522C @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - movs r1, 0x1 - bl BtlController_EmitReturnMonToBall - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025228: .4byte gBattlescriptCurrInstr -_0802522C: .4byte gActiveBattler - thumb_func_end atk58_returntoball - - thumb_func_start atk59_handlelearnnewmove -atk59_handlelearnnewmove: @ 8025230 - push {r4-r7,lr} - ldr r0, _080252A4 @ =gBattlescriptCurrInstr - ldr r2, [r0] - ldrb r6, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r6, r0 - ldrb r4, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x8] - lsls r0, 24 - orrs r4, r0 - ldr r0, _080252A8 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080252AC @ =gPlayerParty - adds r0, r1 - ldrb r1, [r2, 0x9] - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080252B0 @ =0x0000fffe - cmp r5, r0 - bne _0802529A - adds r7, r5, 0 -_0802527E: - ldr r0, _080252A8 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080252AC @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl MonTryLearningNewMove - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r7 - beq _0802527E -_0802529A: - cmp r5, 0 - bne _080252B4 - ldr r0, _080252A4 @ =gBattlescriptCurrInstr - str r4, [r0] - b _0802535C - .align 2, 0 -_080252A4: .4byte gBattlescriptCurrInstr -_080252A8: .4byte gBattleStruct -_080252AC: .4byte gPlayerParty -_080252B0: .4byte 0x0000fffe -_080252B4: - ldr r0, _080252C4 @ =0x0000ffff - cmp r5, r0 - bne _080252CC - ldr r1, _080252C8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0xA - str r0, [r1] - b _0802535C - .align 2, 0 -_080252C4: .4byte 0x0000ffff -_080252C8: .4byte gBattlescriptCurrInstr -_080252CC: - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _08025364 @ =gActiveBattler - strb r0, [r1] - ldr r2, _08025368 @ =gBattlerPartyIndexes - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldr r1, _0802536C @ =gBattleStruct - ldr r1, [r1] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _0802530C - ldr r4, _08025370 @ =gBattleMons - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0802530C - adds r0, r2, r4 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_0802530C: - ldr r0, _08025374 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08025358 - movs r0, 0x2 - bl GetBattlerAtPosition - ldr r1, _08025364 @ =gActiveBattler - strb r0, [r1] - ldr r2, _08025368 @ =gBattlerPartyIndexes - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldr r1, _0802536C @ =gBattleStruct - ldr r1, [r1] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _08025358 - ldr r4, _08025370 @ =gBattleMons - movs r0, 0x58 - adds r2, r3, 0 - muls r2, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08025358 - adds r0, r2, r4 - adds r1, r5, 0 - bl GiveMoveToBattleMon -_08025358: - ldr r0, _08025378 @ =gBattlescriptCurrInstr - str r6, [r0] -_0802535C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025364: .4byte gActiveBattler -_08025368: .4byte gBattlerPartyIndexes -_0802536C: .4byte gBattleStruct -_08025370: .4byte gBattleMons -_08025374: .4byte gBattleTypeFlags -_08025378: .4byte gBattlescriptCurrInstr - thumb_func_end atk59_handlelearnnewmove - - thumb_func_start atk5A_yesnoboxlearnmove -atk5A_yesnoboxlearnmove: @ 802537C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _080253A0 @ =gActiveBattler - movs r1, 0 - strb r1, [r0] - ldr r0, _080253A4 @ =gBattleScripting - ldrb r1, [r0, 0x1F] - adds r2, r0, 0 - cmp r1, 0x5 - bls _08025396 - b _080256D0 -_08025396: - lsls r0, r1, 2 - ldr r1, _080253A8 @ =_080253AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080253A0: .4byte gActiveBattler -_080253A4: .4byte gBattleScripting -_080253A8: .4byte _080253AC - .align 2, 0 -_080253AC: - .4byte _080253C4 - .4byte _080253FC - .4byte _080254A8 - .4byte _08025500 - .4byte _080256A4 - .4byte _080256C4 -_080253C4: - movs r4, 0 - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r0, _080253F0 @ =gText_BattleYesNoChoice - movs r1, 0xE - bl BattlePutTextOnWindow - ldr r1, _080253F4 @ =gBattleScripting - ldrb r0, [r1, 0x1F] - adds r0, 0x1 - strb r0, [r1, 0x1F] - ldr r0, _080253F8 @ =gBattleCommunication - strb r4, [r0, 0x1] - bl BattleCreateYesNoCursorAt - b _080256D0 - .align 2, 0 -_080253F0: .4byte gText_BattleYesNoChoice -_080253F4: .4byte gBattleScripting -_080253F8: .4byte gBattleCommunication -_080253FC: - ldr r0, _08025484 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08025422 - ldr r4, _08025488 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08025422 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_08025422: - ldr r0, _08025484 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08025448 - ldr r4, _08025488 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08025448 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_08025448: - ldr r0, _08025484 @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0802548C - movs r0, 0x5 - bl PlaySE - ldr r0, _08025488 @ =gBattleCommunication - ldrb r4, [r0, 0x1] - cmp r4, 0 - bne _0802549C - str r5, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080254D8 - .align 2, 0 -_08025484: .4byte gMain -_08025488: .4byte gBattleCommunication -_0802548C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08025496 - b _080256D0 -_08025496: - movs r0, 0x5 - bl PlaySE -_0802549C: - ldr r1, _080254A4 @ =gBattleScripting - movs r0, 0x4 - strb r0, [r1, 0x1F] - b _080256D0 - .align 2, 0 -_080254A4: .4byte gBattleScripting -_080254A8: - ldr r0, _080254E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080254B6 - b _080256D0 -_080254B6: - bl FreeAllWindowBuffers - ldr r0, _080254E8 @ =gPlayerParty - ldr r1, _080254EC @ =gBattleStruct - ldr r1, [r1] - ldrb r1, [r1, 0x10] - ldr r2, _080254F0 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080254F4 @ =ReshowBattleScreenAfterMenu - ldr r4, _080254F8 @ =gMoveToLearn - ldrh r4, [r4] - str r4, [sp] - bl sub_8134738 -_080254D8: - ldr r1, _080254FC @ =gBattleScripting - ldrb r0, [r1, 0x1F] - adds r0, 0x1 - strb r0, [r1, 0x1F] - b _080256D0 - .align 2, 0 -_080254E4: .4byte gPaletteFade -_080254E8: .4byte gPlayerParty -_080254EC: .4byte gBattleStruct -_080254F0: .4byte gPlayerPartyCount -_080254F4: .4byte ReshowBattleScreenAfterMenu -_080254F8: .4byte gMoveToLearn -_080254FC: .4byte gBattleScripting -_08025500: - ldr r0, _0802552C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802550E - b _080256D0 -_0802550E: - ldr r0, _08025530 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _08025534 @ =BattleMainCB2 - cmp r1, r0 - beq _0802551A - b _080256D0 -_0802551A: - bl sub_8138B2C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bne _0802553C - ldr r0, _08025538 @ =gBattleScripting - strb r5, [r0, 0x1F] - b _080256D0 - .align 2, 0 -_0802552C: .4byte gPaletteFade -_08025530: .4byte gMain -_08025534: .4byte BattleMainCB2 -_08025538: .4byte gBattleScripting -_0802553C: - ldr r6, _08025578 @ =gBattleStruct - ldr r0, [r6] - ldrb r0, [r0, 0x10] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _0802557C @ =gPlayerParty - adds r0, r7 - adds r1, r5, 0 - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsHMMove2 - cmp r0, 0 - beq _0802558C - ldr r0, _08025580 @ =0x0000013f - ldr r1, _08025584 @ =gActiveBattler - ldrb r1, [r1] - bl PrepareStringBattle - ldr r1, _08025588 @ =gBattleScripting - movs r0, 0x5 - strb r0, [r1, 0x1F] - b _080256D0 - .align 2, 0 -_08025578: .4byte gBattleStruct -_0802557C: .4byte gPlayerParty -_08025580: .4byte 0x0000013f -_08025584: .4byte gActiveBattler -_08025588: .4byte gBattleScripting -_0802558C: - ldr r3, _08025680 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - ldr r1, _08025684 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - strb r4, [r1, 0x2] - lsrs r0, r4, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r0, [r6] - ldrb r0, [r0, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - adds r1, r5, 0 - bl RemoveMonPPBonus - ldr r0, [r6] - ldrb r0, [r0, 0x10] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - ldr r7, _08025688 @ =gMoveToLearn - ldrh r1, [r7] - adds r2, r5, 0 - bl SetMonMoveSlot - ldr r0, _0802568C @ =gBattlerPartyIndexes - ldr r1, [r6] - ldrh r0, [r0] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _08025622 - ldr r4, _08025690 @ =gBattleMons - ldr r0, [r4, 0x50] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08025622 - ldr r0, _08025694 @ =gDisableStructs - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _08025698 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08025622 - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldrh r1, [r7] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot -_08025622: - ldr r0, _0802569C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080256D0 - ldr r2, _0802568C @ =gBattlerPartyIndexes - ldr r0, _080256A0 @ =gBattleStruct - ldr r1, [r0] - ldrh r0, [r2, 0x4] - ldrb r1, [r1, 0x10] - cmp r0, r1 - bne _080256D0 - ldr r4, _08025690 @ =gBattleMons - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080256D0 - ldr r0, _08025694 @ =gDisableStructs - adds r0, 0x50 - ldrb r1, [r0] - lsrs r1, 4 - ldr r2, _08025698 @ =gBitTable - lsls r0, r5, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080256D0 - adds r4, 0xB0 - adds r0, r4, 0 - adds r1, r5, 0 - bl RemoveBattleMonPPBonus - ldr r0, _08025688 @ =gMoveToLearn - ldrh r1, [r0] - adds r0, r4, 0 - adds r2, r5, 0 - bl SetBattleMonMoveSlot - b _080256D0 - .align 2, 0 -_08025680: .4byte gBattlescriptCurrInstr -_08025684: .4byte gBattleTextBuff2 -_08025688: .4byte gMoveToLearn -_0802568C: .4byte gBattlerPartyIndexes -_08025690: .4byte gBattleMons -_08025694: .4byte gDisableStructs -_08025698: .4byte gBitTable -_0802569C: .4byte gBattleTypeFlags -_080256A0: .4byte gBattleStruct -_080256A4: - movs r0, 0x1 - str r0, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r1, _080256C0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _080256D0 - .align 2, 0 -_080256C0: .4byte gBattlescriptCurrInstr -_080256C4: - ldr r0, _080256DC @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _080256D0 - movs r0, 0x2 - strb r0, [r2, 0x1F] -_080256D0: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080256DC: .4byte gBattleControllerExecFlags - thumb_func_end atk5A_yesnoboxlearnmove - - thumb_func_start atk5B_yesnoboxstoplearningmove -atk5B_yesnoboxstoplearningmove: @ 80256E0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _080256F4 @ =gBattleScripting - ldrb r4, [r5, 0x1F] - cmp r4, 0 - beq _080256F8 - cmp r4, 0x1 - beq _08025728 - b _0802580E - .align 2, 0 -_080256F4: .4byte gBattleScripting -_080256F8: - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r0, _08025720 @ =gText_BattleYesNoChoice - movs r1, 0xE - bl BattlePutTextOnWindow - ldrb r0, [r5, 0x1F] - adds r0, 0x1 - strb r0, [r5, 0x1F] - ldr r0, _08025724 @ =gBattleCommunication - strb r4, [r0, 0x1] - bl BattleCreateYesNoCursorAt - b _0802580E - .align 2, 0 -_08025720: .4byte gText_BattleYesNoChoice -_08025724: .4byte gBattleCommunication -_08025728: - ldr r0, _080257AC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802574E - ldr r4, _080257B0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0802574E - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_0802574E: - ldr r0, _080257AC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08025774 - ldr r4, _080257B0 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08025774 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_08025774: - ldr r0, _080257AC @ =gMain - ldrh r1, [r0, 0x2E] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080257D8 - movs r0, 0x5 - bl PlaySE - ldr r0, _080257B0 @ =gBattleCommunication - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080257B8 - ldr r3, _080257B4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080257C0 - .align 2, 0 -_080257AC: .4byte gMain -_080257B0: .4byte gBattleCommunication -_080257B4: .4byte gBattlescriptCurrInstr -_080257B8: - ldr r1, _080257D4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080257C0: - movs r0, 0x1 - str r0, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - b _0802580E - .align 2, 0 -_080257D4: .4byte gBattlescriptCurrInstr -_080257D8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802580E - movs r0, 0x5 - bl PlaySE - ldr r3, _08025818 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow -_0802580E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025818: .4byte gBattlescriptCurrInstr - thumb_func_end atk5B_yesnoboxstoplearningmove - - thumb_func_start atk5C_hitanimation -atk5C_hitanimation: @ 802581C - push {r4,lr} - ldr r4, _08025888 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r2, _0802588C @ =gActiveBattler - strb r0, [r2] - ldr r0, _08025890 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - bne _080258A0 - ldr r0, _08025894 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _0802586E - ldr r1, _08025898 @ =gBattleMons - ldrb r2, [r2] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _0802586E - ldr r0, _0802589C @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _080258A0 -_0802586E: - movs r0, 0 - bl BtlController_EmitHitAnimation - ldr r0, _0802588C @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _08025888 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - b _080258A6 - .align 2, 0 -_08025888: .4byte gBattlescriptCurrInstr -_0802588C: .4byte gActiveBattler -_08025890: .4byte gMoveResultFlags -_08025894: .4byte gHitMarker -_08025898: .4byte gBattleMons -_0802589C: .4byte gDisableStructs -_080258A0: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] -_080258A6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atk5C_hitanimation - - thumb_func_start atk5D_getmoneyreward -atk5D_getmoneyreward: @ 80258AC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - movs r5, 0 - ldr r0, _080258F0 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _080258C0 - b _080259FA -_080258C0: - ldr r0, _080258F4 @ =gTrainerBattleOpponent_A - ldrh r2, [r0] - movs r1, 0x80 - lsls r1, 3 - cmp r2, r1 - bne _08025904 - ldr r0, _080258F8 @ =gBattleResources - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x94 - ldrb r2, [r0] - ldr r0, _080258FC @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r4, r2, 0 - muls r4, r0 - ldr r0, _08025900 @ =gSaveBlock1Ptr - mov r8, r0 - b _080259E8 - .align 2, 0 -_080258F0: .4byte gBattleOutcome -_080258F4: .4byte gTrainerBattleOpponent_A -_080258F8: .4byte gBattleResources -_080258FC: .4byte gBattleStruct -_08025900: .4byte gSaveBlock1Ptr -_08025904: - ldr r2, _08025920 @ =gTrainers - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r3, r0, 3 - adds r4, r3, r2 - ldrb r1, [r4] - cmp r1, 0x1 - beq _0802595A - cmp r1, 0x1 - bgt _08025924 - cmp r1, 0 - beq _0802592E - b _08025970 - .align 2, 0 -_08025920: .4byte gTrainers -_08025924: - cmp r1, 0x2 - beq _08025944 - cmp r1, 0x3 - beq _0802595A - b _08025970 -_0802592E: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _0802596E -_08025944: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - subs r0, 0x8 - b _0802596E -_0802595A: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r3, r0 - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - subs r0, 0x10 -_0802596E: - ldrb r5, [r0, 0x2] -_08025970: - ldr r0, _080259CC @ =gTrainerMoneyTable - lsls r1, r6, 2 - adds r3, r1, r0 - ldrb r1, [r3] - ldr r7, _080259D0 @ =gBattleStruct - mov r12, r0 - lsls r4, r5, 2 - ldr r5, _080259D4 @ =gBattleTypeFlags - ldr r0, _080259D8 @ =gSaveBlock1Ptr - mov r8, r0 - cmp r1, 0xFF - beq _080259AA - ldr r2, _080259DC @ =gTrainers - ldr r0, _080259E0 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r2, [r0, 0x1] - adds r1, r3, 0 -_0802599A: - ldrb r0, [r1] - cmp r0, r2 - beq _080259AA - adds r1, 0x4 - adds r6, 0x1 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0802599A -_080259AA: - ldr r0, [r7] - adds r0, 0x4A - ldrb r0, [r0] - adds r3, r4, 0 - muls r3, r0 - lsls r0, r6, 2 - add r0, r12 - ldrb r2, [r0, 0x1] - ldr r0, [r5] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080259E4 - lsls r0, r2, 1 - adds r4, r3, 0 - muls r4, r0 - b _080259E8 - .align 2, 0 -_080259CC: .4byte gTrainerMoneyTable -_080259D0: .4byte gBattleStruct -_080259D4: .4byte gBattleTypeFlags -_080259D8: .4byte gSaveBlock1Ptr -_080259DC: .4byte gTrainers -_080259E0: .4byte gTrainerBattleOpponent_A -_080259E4: - adds r4, r3, 0 - muls r4, r2 -_080259E8: - mov r1, r8 - ldr r0, [r1] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r4, 0 - bl AddMoney - b _08025A00 -_080259FA: - bl sub_8054C04 - adds r4, r0, 0 -_08025A00: - ldr r1, _08025A40 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0x4 - strb r0, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - strb r4, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r0, r4 - lsrs r0, 8 - strb r0, [r1, 0x5] - movs r0, 0xFF - lsls r0, 16 - ands r0, r4 - lsrs r0, 16 - strb r0, [r1, 0x6] - lsrs r0, r4, 24 - strb r0, [r1, 0x7] - movs r0, 0xFF - strb r0, [r1, 0x8] - cmp r4, 0 - beq _08025A48 - ldr r1, _08025A44 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08025A62 - .align 2, 0 -_08025A40: .4byte gBattleTextBuff1 -_08025A44: .4byte gBattlescriptCurrInstr -_08025A48: - ldr r3, _08025A6C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08025A62: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025A6C: .4byte gBattlescriptCurrInstr - thumb_func_end atk5D_getmoneyreward - - thumb_func_start atk5E -atk5E: @ 8025A70 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _08025A94 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r6, _08025A98 @ =gActiveBattler - strb r0, [r6] - ldr r5, _08025A9C @ =gBattleCommunication - ldrb r0, [r5] - mov r8, r4 - cmp r0, 0 - beq _08025AA0 - cmp r0, 0x1 - beq _08025AB8 - b _08025B0C - .align 2, 0 -_08025A94: .4byte gBattlescriptCurrInstr -_08025A98: .4byte gActiveBattler -_08025A9C: .4byte gBattleCommunication -_08025AA0: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl BtlController_EmitGetMonData - ldrb r0, [r6] - bl MarkBattlerForControllerExec - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08025B0C -_08025AB8: - ldr r0, _08025B18 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08025B0C - ldrb r0, [r6] - lsls r0, 9 - ldr r1, _08025B1C @ =gUnknown_20233C8 - adds r0, r1 - mov r12, r0 - movs r2, 0 - adds r4, r6, 0 - movs r5, 0x58 - ldr r6, _08025B20 @ =gUnknown_2023C08 - adds r7, r6, 0 - subs r7, 0x18 - mov r3, r12 - adds r3, 0xC -_08025ADA: - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r5 - adds r1, r0 - adds r1, r7 - ldrh r0, [r3] - strh r0, [r1] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r2, r1 - adds r1, r6 - mov r0, r12 - adds r0, 0x24 - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r3, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _08025ADA - mov r1, r8 - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08025B0C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025B18: .4byte gBattleControllerExecFlags -_08025B1C: .4byte gUnknown_20233C8 -_08025B20: .4byte gUnknown_2023C08 - thumb_func_end atk5E - - thumb_func_start atk5F_swapattackerwithtarget -atk5F_swapattackerwithtarget: @ 8025B24 - push {lr} - ldr r0, _08025B4C @ =gActiveBattler - ldr r2, _08025B50 @ =gBattlerAttacker - ldrb r3, [r2] - strb r3, [r0] - ldr r1, _08025B54 @ =gBattlerTarget - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - ldr r2, _08025B58 @ =gHitMarker - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08025B60 - ldr r0, _08025B5C @ =0xffffefff - ands r1, r0 - b _08025B62 - .align 2, 0 -_08025B4C: .4byte gActiveBattler -_08025B50: .4byte gBattlerAttacker -_08025B54: .4byte gBattlerTarget -_08025B58: .4byte gHitMarker -_08025B5C: .4byte 0xffffefff -_08025B60: - orrs r1, r3 -_08025B62: - str r1, [r2] - ldr r1, _08025B70 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08025B70: .4byte gBattlescriptCurrInstr - thumb_func_end atk5F_swapattackerwithtarget - - thumb_func_start atk60_incrementgamestat -atk60_incrementgamestat: @ 8025B74 - push {lr} - ldr r0, _08025B9C @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08025B8E - ldr r0, _08025BA0 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl IncrementGameStat -_08025B8E: - ldr r1, _08025BA0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08025B9C: .4byte gBattlerAttacker -_08025BA0: .4byte gBattlescriptCurrInstr - thumb_func_end atk60_incrementgamestat - - thumb_func_start atk61_drawpartystatussummary -atk61_drawpartystatussummary: @ 8025BA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, _08025C08 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08025C58 - ldr r0, _08025C0C @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _08025C10 @ =gActiveBattler - strb r0, [r1] - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - ldr r1, _08025C14 @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _08025BD6 - ldr r0, _08025C18 @ =gPlayerParty - mov r8, r0 -_08025BD6: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_08025BDC: - movs r0, 0x64 - muls r0, r7 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08025C00 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08025C20 -_08025C00: - ldr r0, _08025C1C @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _08025C32 - .align 2, 0 -_08025C08: .4byte gBattleControllerExecFlags -_08025C0C: .4byte gBattlescriptCurrInstr -_08025C10: .4byte gActiveBattler -_08025C14: .4byte gEnemyParty -_08025C18: .4byte gPlayerParty -_08025C1C: .4byte 0x0000ffff -_08025C20: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_08025C32: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _08025BDC - movs r0, 0 - mov r1, sp - movs r2, 0x1 - bl BtlController_EmitDrawPartyStatusSummary - ldr r0, _08025C64 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _08025C68 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08025C58: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08025C64: .4byte gActiveBattler -_08025C68: .4byte gBattlescriptCurrInstr - thumb_func_end atk61_drawpartystatussummary - - thumb_func_start atk62_hidepartystatussummary -atk62_hidepartystatussummary: @ 8025C6C - push {r4,r5,lr} - ldr r5, _08025C94 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08025C98 @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - bl BtlController_EmitHidePartyStatusSummary - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025C94: .4byte gBattlescriptCurrInstr -_08025C98: .4byte gActiveBattler - thumb_func_end atk62_hidepartystatussummary - - thumb_func_start atk63_jumptocalledmove -atk63_jumptocalledmove: @ 8025C9C - push {r4,lr} - ldr r0, _08025CB4 @ =gBattlescriptCurrInstr - ldr r1, [r0] - ldrb r1, [r1, 0x1] - adds r4, r0, 0 - cmp r1, 0 - beq _08025CC0 - ldr r0, _08025CB8 @ =gCurrentMove - ldr r1, _08025CBC @ =gCalledMove - ldrh r1, [r1] - strh r1, [r0] - b _08025CCE - .align 2, 0 -_08025CB4: .4byte gBattlescriptCurrInstr -_08025CB8: .4byte gCurrentMove -_08025CBC: .4byte gCalledMove -_08025CC0: - ldr r2, _08025CEC @ =gChosenMove - ldr r1, _08025CF0 @ =gCurrentMove - ldr r0, _08025CF4 @ =gCalledMove - ldrh r0, [r0] - strh r0, [r1] - strh r0, [r2] - adds r0, r1, 0 -_08025CCE: - ldr r3, _08025CF8 @ =gBattleScriptsForMoveEffects - ldr r2, _08025CFC @ =gBattleMoves - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08025CEC: .4byte gChosenMove -_08025CF0: .4byte gCurrentMove -_08025CF4: .4byte gCalledMove -_08025CF8: .4byte gBattleScriptsForMoveEffects -_08025CFC: .4byte gBattleMoves - thumb_func_end atk63_jumptocalledmove - - thumb_func_start atk64_statusanimation -atk64_statusanimation: @ 8025D00 - push {r4,lr} - ldr r0, _08025D70 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08025D68 - ldr r0, _08025D74 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08025D78 @ =gActiveBattler - strb r0, [r4] - ldr r1, _08025D7C @ =gStatuses3 - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08025D80 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08025D60 - ldr r0, _08025D84 @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _08025D60 - ldr r0, _08025D88 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08025D60 - ldr r1, _08025D8C @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitStatusAnimation - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08025D60: - ldr r1, _08025D74 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] -_08025D68: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08025D70: .4byte gBattleControllerExecFlags -_08025D74: .4byte gBattlescriptCurrInstr -_08025D78: .4byte gActiveBattler -_08025D7C: .4byte gStatuses3 -_08025D80: .4byte 0x000400c0 -_08025D84: .4byte gDisableStructs -_08025D88: .4byte gHitMarker -_08025D8C: .4byte gBattleMons - thumb_func_end atk64_statusanimation - - thumb_func_start atk65_status2animation -atk65_status2animation: @ 8025D90 - push {r4,r5,lr} - ldr r0, _08025E18 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08025E10 - ldr r4, _08025E1C @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r5, _08025E20 @ =gActiveBattler - strb r0, [r5] - ldr r1, [r4] - ldrb r3, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r1, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r1, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r1, _08025E24 @ =gStatuses3 - ldrb r2, [r5] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08025E28 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08025E08 - ldr r0, _08025E2C @ =gDisableStructs - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _08025E08 - ldr r0, _08025E30 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08025E08 - ldr r1, _08025E34 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r2, [r0] - ands r2, r3 - movs r0, 0 - movs r1, 0x1 - bl BtlController_EmitStatusAnimation - ldrb r0, [r5] - bl MarkBattlerForControllerExec -_08025E08: - ldr r1, _08025E1C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x6 - str r0, [r1] -_08025E10: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025E18: .4byte gBattleControllerExecFlags -_08025E1C: .4byte gBattlescriptCurrInstr -_08025E20: .4byte gActiveBattler -_08025E24: .4byte gStatuses3 -_08025E28: .4byte 0x000400c0 -_08025E2C: .4byte gDisableStructs -_08025E30: .4byte gHitMarker -_08025E34: .4byte gBattleMons - thumb_func_end atk65_status2animation - - thumb_func_start atk66_chosenstatusanimation -atk66_chosenstatusanimation: @ 8025E38 - push {r4,r5,lr} - ldr r0, _08025EB0 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - bne _08025EAA - ldr r4, _08025EB4 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r5, _08025EB8 @ =gActiveBattler - strb r0, [r5] - ldr r4, [r4] - ldrb r2, [r4, 0x3] - ldrb r0, [r4, 0x4] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r4, 0x5] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r4, 0x6] - lsls r0, 24 - orrs r2, r0 - ldr r1, _08025EBC @ =gStatuses3 - ldrb r3, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08025EC0 @ =0x000400c0 - ands r0, r1 - cmp r0, 0 - bne _08025EA2 - ldr r0, _08025EC4 @ =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0xA] - cmp r0, 0 - bne _08025EA2 - ldr r0, _08025EC8 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08025EA2 - ldrb r1, [r4, 0x2] - movs r0, 0 - bl BtlController_EmitStatusAnimation - ldrb r0, [r5] - bl MarkBattlerForControllerExec -_08025EA2: - ldr r1, _08025EB4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x7 - str r0, [r1] -_08025EAA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025EB0: .4byte gBattleControllerExecFlags -_08025EB4: .4byte gBattlescriptCurrInstr -_08025EB8: .4byte gActiveBattler -_08025EBC: .4byte gStatuses3 -_08025EC0: .4byte 0x000400c0 -_08025EC4: .4byte gDisableStructs -_08025EC8: .4byte gHitMarker - thumb_func_end atk66_chosenstatusanimation - - thumb_func_start atk67_yesnobox -atk67_yesnobox: @ 8025ECC - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08025EE0 @ =gBattleCommunication - ldrb r4, [r5] - cmp r4, 0 - beq _08025EE4 - cmp r4, 0x1 - beq _08025F0C - b _08025F9A - .align 2, 0 -_08025EE0: .4byte gBattleCommunication -_08025EE4: - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r0, _08025F08 @ =gText_BattleYesNoChoice - movs r1, 0xE - bl BattlePutTextOnWindow - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - strb r4, [r5, 0x1] - bl BattleCreateYesNoCursorAt - b _08025F9A - .align 2, 0 -_08025F08: .4byte gText_BattleYesNoChoice -_08025F0C: - ldr r0, _08025F6C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08025F30 - ldrb r0, [r5, 0x1] - cmp r0, 0 - beq _08025F30 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0 - strb r0, [r5, 0x1] - bl BattleCreateYesNoCursorAt -_08025F30: - ldr r0, _08025F6C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08025F56 - ldr r4, _08025F70 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _08025F56 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_08025F56: - ldr r0, _08025F6C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08025F74 - ldr r0, _08025F70 @ =gBattleCommunication - movs r4, 0x1 - strb r4, [r0, 0x1] - b _08025F7E - .align 2, 0 -_08025F6C: .4byte gMain -_08025F70: .4byte gBattleCommunication -_08025F74: - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08025F9A -_08025F7E: - movs r0, 0x5 - bl PlaySE - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r1, _08025FA4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08025F9A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025FA4: .4byte gBattlescriptCurrInstr - thumb_func_end atk67_yesnobox - - thumb_func_start atk68_cancelallactions -atk68_cancelallactions: @ 8025FA8 - push {r4,r5,lr} - movs r1, 0 - ldr r2, _08025FD4 @ =gBattlersCount - ldr r5, _08025FD8 @ =gBattlescriptCurrInstr - ldrb r0, [r2] - cmp r1, r0 - bge _08025FC6 - ldr r4, _08025FDC @ =gActionsByTurnOrder - movs r3, 0xC -_08025FBA: - adds r0, r1, r4 - strb r3, [r0] - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _08025FBA -_08025FC6: - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08025FD4: .4byte gBattlersCount -_08025FD8: .4byte gBattlescriptCurrInstr -_08025FDC: .4byte gActionsByTurnOrder - thumb_func_end atk68_cancelallactions - - thumb_func_start atk69_adjustsetdamage -atk69_adjustsetdamage: @ 8025FE0 - push {r4-r7,lr} - ldr r7, _08026008 @ =gBattleMons - ldr r6, _0802600C @ =gBattlerTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08026014 - ldr r1, _08026010 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0802602E - .align 2, 0 -_08026008: .4byte gBattleMons -_0802600C: .4byte gBattlerTarget -_08026010: .4byte gEnigmaBerries -_08026014: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0802602E: - ldr r1, _080260F0 @ =gPotentialItemEffectBattler - ldr r5, _080260F4 @ =gBattlerTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _0802606C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _0802606C - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, _080260F8 @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0802606C: - ldr r2, _080260FC @ =gBattleMons - ldr r3, _080260F4 @ =gBattlerTarget - ldrb r4, [r3] - movs r0, 0x58 - muls r0, r4 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 17 - ands r1, r0 - adds r5, r2, 0 - cmp r1, 0 - bne _0802613C - ldr r2, _08026100 @ =gBattleMoves - ldr r0, _08026104 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x65 - beq _080260BE - ldr r0, _08026108 @ =gProtectStructs - lsls r1, r4, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - blt _080260BE - ldr r0, _080260F8 @ =gSpecialStatuses - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0802613C -_080260BE: - ldrb r0, [r3] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - ldrh r1, [r0, 0x28] - ldr r2, _0802610C @ =gBattleMoveDamage - ldr r0, [r2] - cmp r1, r0 - bgt _0802613C - subs r0, r1, 0x1 - str r0, [r2] - ldr r1, _08026108 @ =gProtectStructs - ldrb r3, [r3] - lsls r0, r3, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bge _08026114 - ldr r0, _08026110 @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - b _0802613C - .align 2, 0 -_080260F0: .4byte gPotentialItemEffectBattler -_080260F4: .4byte gBattlerTarget -_080260F8: .4byte gSpecialStatuses -_080260FC: .4byte gBattleMons -_08026100: .4byte gBattleMoves -_08026104: .4byte gCurrentMove -_08026108: .4byte gProtectStructs -_0802610C: .4byte gBattleMoveDamage -_08026110: .4byte gMoveResultFlags -_08026114: - ldr r0, _0802614C @ =gSpecialStatuses - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0802613C - ldr r2, _08026150 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08026154 @ =gLastUsedItem - adds r0, r3, 0 - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2E] - strh r0, [r1] -_0802613C: - ldr r1, _08026158 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802614C: .4byte gSpecialStatuses -_08026150: .4byte gMoveResultFlags -_08026154: .4byte gLastUsedItem -_08026158: .4byte gBattlescriptCurrInstr - thumb_func_end atk69_adjustsetdamage - - thumb_func_start atk6A_removeitem -atk6A_removeitem: @ 802615C - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _080261BC @ =gBattlescriptCurrInstr - ldr r0, [r6] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r5, _080261C0 @ =gActiveBattler - strb r0, [r5] - ldr r1, _080261C4 @ =gBattleStruct - ldrb r4, [r5] - lsls r0, r4, 1 - adds r0, 0xB8 - ldr r1, [r1] - adds r1, r0 - ldr r2, _080261C8 @ =gBattleMons - movs r3, 0x58 - adds r0, r4, 0 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - ldrb r0, [r5] - muls r0, r3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r5] - muls r0, r3 - adds r2, 0x2E - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080261BC: .4byte gBattlescriptCurrInstr -_080261C0: .4byte gActiveBattler -_080261C4: .4byte gBattleStruct -_080261C8: .4byte gBattleMons - thumb_func_end atk6A_removeitem - - thumb_func_start atk6B_atknameinbuff1 -atk6B_atknameinbuff1: @ 80261CC - ldr r1, _080261F8 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x7 - strb r0, [r1, 0x1] - ldr r2, _080261FC @ =gBattlerAttacker - ldrb r0, [r2] - strb r0, [r1, 0x2] - ldr r3, _08026200 @ =gBattlerPartyIndexes - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08026204 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_080261F8: .4byte gBattleTextBuff1 -_080261FC: .4byte gBattlerAttacker -_08026200: .4byte gBattlerPartyIndexes -_08026204: .4byte gBattlescriptCurrInstr - thumb_func_end atk6B_atknameinbuff1 - thumb_func_start atk6C_drawlvlupbox atk6C_drawlvlupbox: @ 8026208 push {r4,lr} diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 8669270af..d88145fde 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -2449,7 +2449,7 @@ _080CF2C2: ldr r4, _080CF308 @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] - bl sub_8134738 + bl ShowSelectMovePokemonSummaryScreen ldrh r0, [r5, 0x14] adds r0, 0x1 strh r0, [r5, 0x14] @@ -3718,7 +3718,7 @@ _080CFDC6: ldr r4, _080CFE2C @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] - bl sub_8134738 + bl ShowSelectMovePokemonSummaryScreen ldrh r0, [r5, 0x14] adds r0, 0x1 strh r0, [r5, 0x14] diff --git a/asm/learn_move.s b/asm/learn_move.s index 6684874bb..a7a5b264d 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -758,7 +758,7 @@ _080E4C7E: adds r5, r4 ldrh r4, [r5] str r4, [sp] - bl sub_8134738 + bl ShowSelectMovePokemonSummaryScreen ldr r1, [r7] movs r0, 0x1C b _080E4ED8 diff --git a/asm/party_menu.s b/asm/party_menu.s index e7126dfda..661dddf60 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -14645,7 +14645,7 @@ sub_8125E4C: @ 8125E4C ldr r3, _08125E80 @ =sub_8125E84 ldrh r4, [r4, 0xE] str r4, [sp] - bl sub_8134738 + bl ShowSelectMovePokemonSummaryScreen add sp, 0x4 pop {r4} pop {r0} diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 3385c3d5c..14577269c 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -270,8 +270,8 @@ _08134730: .4byte 0x00003204 _08134734: .4byte sub_8135C34 thumb_func_end sub_81344F8 - thumb_func_start sub_8134738 -sub_8134738: @ 8134738 + thumb_func_start ShowSelectMovePokemonSummaryScreen +ShowSelectMovePokemonSummaryScreen: @ 8134738 push {r4,r5,lr} sub sp, 0x4 ldr r5, [sp, 0x10] @@ -296,7 +296,7 @@ sub_8134738: @ 8134738 .align 2, 0 _08134764: .4byte gUnknown_203B140 _08134768: .4byte 0x00003260 - thumb_func_end sub_8134738 + thumb_func_end ShowSelectMovePokemonSummaryScreen thumb_func_start sub_813476C sub_813476C: @ 813476C diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s index b5ef5f090..297d09e9a 100644 --- a/asm/script_pokemon_util_80BF8FC.s +++ b/asm/script_pokemon_util_80BF8FC.s @@ -115,7 +115,7 @@ sub_80BF9BC: @ 80BF9BC ldr r3, _080BF9FC @ =CB2_ReturnToField movs r4, 0 str r4, [sp] - bl sub_8134738 + bl ShowSelectMovePokemonSummaryScreen movs r0, 0x3 bl sub_8138B38 ldr r1, _080BFA00 @ =gFieldCallback diff --git a/include/battle.h b/include/battle.h index 144d0a3bb..8abb95333 100644 --- a/include/battle.h +++ b/include/battle.h @@ -264,7 +264,7 @@ struct DisableStruct /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 truantSwitchInHack : 1; + /*0x18*/ u8 truantSwitchInHack : 1; // unused? /*0x18*/ u8 unk18_a_2 : 2; /*0x18*/ u8 mimickedMoves : 4; /*0x19*/ u8 rechargeTimer; @@ -941,5 +941,6 @@ extern u16 gExpShareExp; extern u8 gLeveledUpInBattle; extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; +extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_main.h b/include/battle_main.h index 86de8f39a..27aae9970 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -75,7 +75,7 @@ void sub_803B3AC(void); // unused void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_803BDA0(u8 bank); +void sub_8013F6C(u8 battlerId); void SwapTurnOrder(u8 id1, u8 id2); u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); @@ -98,5 +98,6 @@ extern const u8 gStatusConditionString_LoveJpn[8]; extern const u8 * const gStatusConditionStringsTable[7][2]; extern const u8 gTypeEffectiveness[336]; +extern const struct TrainerMoney gTrainerMoneyTable[]; #endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index c75a029c2..8e5274844 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -56,8 +56,8 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); u8 GetBattlerTurnOrderNum(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); -void BattleDestroyYesNoCursorAt(u8 cursorPosition); -void BattleCreateYesNoCursorAt(u8 cursorPosition); +void BattleDestroyYesNoCursorAt(void); +void BattleCreateYesNoCursorAt(void); void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 165b580de..769c4a84a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -224,5 +224,6 @@ extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_FlushMessageBox[]; +extern const u8 BattleScript_SpikesOnFaintedBattler[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h new file mode 100644 index 000000000..1aad499a1 --- /dev/null +++ b/include/constants/trainers.h @@ -0,0 +1,12 @@ +#ifndef GUARD_TRAINERS_H +#define GUARD_TRAINERS_H + +#define F_TRAINER_FEMALE (1 << 7) + +// All trainer parties specify the IV, level, and species for each Pokémon in the +// party. Some trainer parties also specify held items and custom moves for each +// Pokémon. +#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) +#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) + +#endif // GUARD_TRAINERS_H diff --git a/include/overworld.h b/include/overworld.h index 7c1f34e41..ea877730e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -96,6 +96,7 @@ void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); void ResetInitialPlayerAvatarState(void); void sub_8055D40(u16 mapDataId); void CleanupOverworldWindowsAndTilemaps(void); +u32 sub_8054C04(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h new file mode 100644 index 000000000..7b250b647 --- /dev/null +++ b/include/pokemon_summary_screen.h @@ -0,0 +1,36 @@ +#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H +#define GUARD_POKEMON_SUMMARY_SCREEN_H + +#include "main.h" + +extern u8 gLastViewedMonIndex; + +extern const u8 *const gMoveDescriptionPointers[]; +extern const u8 *const gNatureNamePointers[]; + +void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); +void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); +u8 sub_8138B2C(void); +void SummaryScreen_SetUnknownTaskId(u8 a0); +void SummaryScreen_DestroyUnknownTask(void); + +// The Pokemon Summary Screen can operate in different modes. Certain features, +// such as move re-ordering, are available in the different modes. +enum PokemonSummaryScreenMode +{ + PSS_MODE_NORMAL, + PSS_MODE_UNK1, + PSS_MODE_BOX, + PSS_MODE_SELECT_MOVE, +}; + +enum PokemonSummaryScreenPage +{ + PSS_PAGE_INFO, + PSS_PAGE_SKILLS, + PSS_PAGE_BATTLE_MOVES, + PSS_PAGE_CONTEST_MOVES, +}; + +#endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/strings.h b/include/strings.h index 2b914dfc8..2da65d3e0 100644 --- a/include/strings.h +++ b/include/strings.h @@ -223,4 +223,7 @@ extern const u8 gText_LinkStandby[]; extern const u8 gUnknown_83FE725[]; extern const u8 gText_WhatWillPkmnDo[]; +// battle_script_commands +extern const u8 gText_BattleYesNoChoice[]; + #endif //GUARD_STRINGS_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index aa3ef9504..7816f4f7e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -17,7 +17,9 @@ #include "m4a.h" #include "mail.h" #include "event_data.h" +#include "strings.h" #include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" #include "task.h" #include "naming_screen.h" #include "overworld.h" @@ -43,6 +45,7 @@ #include "constants/moves.h" #include "constants/abilities.h" #include "constants/pokemon.h" +#include "constants/trainers.h" #define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) @@ -4502,3 +4505,1233 @@ void sub_8024398(u8 arg0) BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]); MarkBattlerForControllerExec(gActiveBattler); } + +void atk50_openpartyscreen(void) +{ + u32 flags; + u8 hitmarkerFaintBits; + u8 battlerId; + const u8 *jumpPtr; + + battlerId = 0; + flags = 0; + jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + if (gBattlescriptCurrInstr[1] == 5) + { + if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (gHitMarker & HITMARKER_FAINTED(gActiveBattler)) + { + if (HasNoMonsToSwitch(gActiveBattler, 6, 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(6); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + } + else + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 flag40_0, flag40_1, flag40_2, flag40_3; + + hitmarkerFaintBits = gHitMarker >> 0x1C; + if (gBitTable[0] & hitmarkerFaintBits) + { + gActiveBattler = 0; + if (HasNoMonsToSwitch(0, 6, 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[2]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + else + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + flags |= 1; + } + } + if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits)) + { + gActiveBattler = 2; + if (HasNoMonsToSwitch(2, 6, 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[0]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + else if (!(flags & 1)) + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + if (gBitTable[1] & hitmarkerFaintBits) + { + gActiveBattler = 1; + if (HasNoMonsToSwitch(1, 6, 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[3]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + else + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + flags |= 2; + } + } + if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits)) + { + gActiveBattler = 3; + if (HasNoMonsToSwitch(3, 6, 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[1]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + else if (!(flags & 2)) + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + flag40_0 = gSpecialStatuses[0].flag40; + if (!flag40_0) + { + flag40_2 = gSpecialStatuses[2].flag40; + if (!flag40_2 && hitmarkerFaintBits != 0) + { + if (gAbsentBattlerFlags & gBitTable[0]) + gActiveBattler = 2; + else + gActiveBattler = 0; + + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + + } + flag40_1 = gSpecialStatuses[1].flag40; + if (!flag40_1) + { + flag40_3 = gSpecialStatuses[3].flag40; + if (!flag40_3 && hitmarkerFaintBits != 0) + { + if (gAbsentBattlerFlags & gBitTable[1]) + gActiveBattler = 3; + else + gActiveBattler = 1; + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + } + gBattlescriptCurrInstr += 6; + } + else if (gBattlescriptCurrInstr[1] == 6) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + hitmarkerFaintBits = gHitMarker >> 0x1C; + if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits) + { + gActiveBattler = 2; + if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[0]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + } + if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1]) + { + gActiveBattler = 3; + if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], 6)) + { + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + BtlController_EmitCmd42(0); + MarkBattlerForControllerExec(gActiveBattler); + } + else if (!gSpecialStatuses[gActiveBattler].flag40) + { + sub_8024398(gBattleStruct->monToSwitchIntoId[1]); + gSpecialStatuses[gActiveBattler].flag40 = 1; + } + } + gBattlescriptCurrInstr += 6; + } + else + { + gBattlescriptCurrInstr += 6; + } + } + else + { + gBattlescriptCurrInstr += 6; + } + + hitmarkerFaintBits = gHitMarker >> 0x1C; + + gBattlerFainted = 0; + while (1) + { + if (gBitTable[gBattlerFainted] & hitmarkerFaintBits) + break; + if (gBattlerFainted >= gBattlersCount) + break; + ++gBattlerFainted; + } + + if (gBattlerFainted == gBattlersCount) + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if (gBattlescriptCurrInstr[1] & 0x80) + hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function. + else + hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON; + battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80)); + if (gSpecialStatuses[battlerId].flag40) + { + gBattlescriptCurrInstr += 6; + } + else if (HasNoMonsToSwitch(battlerId, 6, 6)) + { + gActiveBattler = battlerId; + gAbsentBattlerFlags |= gBitTable[gActiveBattler]; + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + gBattlescriptCurrInstr = jumpPtr; + } + else + { + gActiveBattler = battlerId; + *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler]; + BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->field_60[gActiveBattler]); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 6; + if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT && gBattleResults.playerSwitchesCounter < 0xFF) + ++gBattleResults.playerSwitchesCounter; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (gActiveBattler != battlerId) + { + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + } + else + { + gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE); + if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) + gActiveBattler ^= BIT_FLANK; + BtlController_EmitLinkStandbyMsg(0, 2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + } +} + +void atk51_switchhandleorder(void) +{ + s32 i; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + switch (gBattlescriptCurrInstr[2]) + { + case 0: + for (i = 0; i < gBattlersCount; ++i) + if (gBattleBufferB[i][0] == 0x22) + *(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1]; + break; + case 1: + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + sub_8013F6C(gActiveBattler); + break; + case 2: + gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1]; + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1]; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= 0xF; + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0); + *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3]; + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= (0xF0); + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; + *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3]; + } + else + { + sub_8013F6C(gActiveBattler); + } + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species) + PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBattler, gBattleBufferB[gActiveBattler][1]) + break; + } + gBattlescriptCurrInstr += 3; + } +} + +void atk52_switchineffects(void) +{ + s32 i; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + sub_80174B8(gActiveBattler); + gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); + gSpecialStatuses[gActiveBattler].flag40 = 0; + if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) + && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) + && !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_FLYING) + && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE) + { + u8 spikesDmg; + + gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; + spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2; + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleScripting.battler = gActiveBattler; + BattleScriptPushCursor(); + if (gBattlescriptCurrInstr[1] == BS_TARGET) + gBattlescriptCurrInstr = BattleScript_SpikesOnTarget; + else if (gBattlescriptCurrInstr[1] == BS_ATTACKER) + gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker; + else + gBattlescriptCurrInstr = BattleScript_SpikesOnFaintedBattler; + } + else + { + if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT) + gDisableStructs[gActiveBattler].truantCounter = 1; + if (!AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) + && !ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE)) + { + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattlerByTurnOrder[i] == gActiveBattler) + gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER; + } + for (i = 0; i < gBattlersCount; ++i) + { + u16 *hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(i)]; + *hpOnSwitchout = gBattleMons[i].hp; + } + + if (gBattlescriptCurrInstr[1] == 5) + { + u32 hitmarkerFaintBits = gHitMarker >> 0x1C; + + ++gBattlerFainted; + while (TRUE) + { + if (hitmarkerFaintBits & gBitTable[gBattlerFainted] && !(gAbsentBattlerFlags & gBitTable[gBattlerFainted])) + break; + if (gBattlerFainted >= gBattlersCount) + break; + ++gBattlerFainted; + } + } + gBattlescriptCurrInstr += 2; + } + } +} + +void atk53_trainerslidein(void) +{ + if (!gBattlescriptCurrInstr[1]) + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + else + gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + BtlController_EmitTrainerSlide(0); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk54_playse(void) +{ + gActiveBattler = gBattlerAttacker; + BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1)); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; +} + +void atk55_fanfare(void) +{ + gActiveBattler = gBattlerAttacker; + BtlController_EmitPlayFanfare(0, T2_READ_16(gBattlescriptCurrInstr + 1)); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; +} + +void atk56_playfaintcry(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitFaintingCry(0); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk57(void) +{ + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + BtlController_EmitCmd55(0, gBattleOutcome); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 1; +} + +void atk58_returntoball(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitReturnMonToBall(0, 1); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk59_handlelearnnewmove(void) +{ + const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]); + + while (ret == 0xFFFE) + ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0); + if (ret == 0) + { + gBattlescriptCurrInstr = jumpPtr2; + } + else if (ret == 0xFFFF) + { + gBattlescriptCurrInstr += 10; + } + else + { + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId + && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + { + GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId + && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + { + GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); + } + } + gBattlescriptCurrInstr = jumpPtr1; + } +} + +void atk5A_yesnoboxlearnmove(void) +{ + gActiveBattler = 0; + + switch (gBattleScripting.learnMoveState) + { + case 0: + HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); + BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + ++gBattleScripting.learnMoveState; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + break; + case 1: + if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[1] == 0) + { + HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + ++gBattleScripting.learnMoveState; + } + else + { + gBattleScripting.learnMoveState = 4; + } + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gBattleScripting.learnMoveState = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ++gBattleScripting.learnMoveState; + } + break; + case 3: + if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) + { + u8 movePosition = sub_8138B2C(); + + if (movePosition == 4) + { + gBattleScripting.learnMoveState = 4; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition); + + if (IsHMMove2(moveId)) + { + PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBattler); + gBattleScripting.learnMoveState = 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId) + RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition); + SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition); + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId + && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].mimickedMoves & gBitTable[movePosition])) + { + RemoveBattleMonPPBonus(&gBattleMons[0], movePosition); + SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition); + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId + && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].mimickedMoves & gBitTable[movePosition])) + { + RemoveBattleMonPPBonus(&gBattleMons[2], movePosition); + SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition); + } + } + } + } + break; + case 4: + HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); + gBattlescriptCurrInstr += 5; + break; + case 5: + if (!gBattleControllerExecFlags) + { + gBattleScripting.learnMoveState = 2; + } + break; + } +} + +void atk5B_yesnoboxstoplearningmove(void) +{ + switch (gBattleScripting.learnMoveState) + { + case 0: + HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); + BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + ++gBattleScripting.learnMoveState; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + break; + case 1: + if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + if (gBattleCommunication[1] != 0) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; + HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR); + } + break; + } +} + +void atk5C_hitanimation(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gBattlescriptCurrInstr += 2; + } + else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) + || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) + || gDisableStructs[gActiveBattler].substituteHP == 0) + { + BtlController_EmitHitAnimation(0); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; + } + else + { + gBattlescriptCurrInstr += 2; + } +} + +#ifdef NONMATCHING +void atk5D_getmoneyreward(void) +{ + u32 i = 0; + u32 lastMonLevel = 0; + u32 moneyReward = 0; + u32 value; + + // The whole function is using wrong registers. + if (gBattleOutcome == B_OUTCOME_WON) + { + if (gTrainerBattleOpponent_A == 0x400) + { + moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier; + } + else + { + switch (gTrainers[gTrainerBattleOpponent_A].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves; + + lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET: + { + const struct TrainerMonNoItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves; + + lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves; + + lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; + + lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + } + break; + } + for (; gTrainerMoneyTable[i].classId != 0xFF; ++i) + { + if (gTrainerMoneyTable[i].classId == gTrainers[gTrainerBattleOpponent_A].trainerClass) + break; + } + moneyReward = 4 * lastMonLevel; + moneyReward *= gBattleStruct->moneyMultiplier; + value = gTrainerMoneyTable[i].value; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + moneyReward *= (value << 1); + else + moneyReward *= value; + } + AddMoney(&gSaveBlock1Ptr->money, moneyReward); + } + else + { + moneyReward = sub_8054C04(); + } + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward); + if (moneyReward) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); +} +#else +NAKED +void atk5D_getmoneyreward(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + movs r6, 0\n\ + movs r5, 0\n\ + ldr r0, _080258F0 @ =gBattleOutcome\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + beq _080258C0\n\ + b _080259FA\n\ + _080258C0:\n\ + ldr r0, _080258F4 @ =gTrainerBattleOpponent_A\n\ + ldrh r2, [r0]\n\ + movs r1, 0x80\n\ + lsls r1, 3\n\ + cmp r2, r1\n\ + bne _08025904\n\ + ldr r0, _080258F8 @ =gBattleResources\n\ + ldr r0, [r0]\n\ + ldr r0, [r0]\n\ + adds r0, 0x94\n\ + ldrb r2, [r0]\n\ + ldr r0, _080258FC @ =gBattleStruct\n\ + ldr r0, [r0]\n\ + adds r0, 0x4A\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r4, r2, 0\n\ + muls r4, r0\n\ + ldr r0, _08025900 @ =gSaveBlock1Ptr\n\ + mov r8, r0\n\ + b _080259E8\n\ + .align 2, 0\n\ + _080258F0: .4byte gBattleOutcome\n\ + _080258F4: .4byte gTrainerBattleOpponent_A\n\ + _080258F8: .4byte gBattleResources\n\ + _080258FC: .4byte gBattleStruct\n\ + _08025900: .4byte gSaveBlock1Ptr\n\ + _08025904:\n\ + ldr r2, _08025920 @ =gTrainers\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r3, r0, 3\n\ + adds r4, r3, r2\n\ + ldrb r1, [r4]\n\ + cmp r1, 0x1\n\ + beq _0802595A\n\ + cmp r1, 0x1\n\ + bgt _08025924\n\ + cmp r1, 0\n\ + beq _0802592E\n\ + b _08025970\n\ + .align 2, 0\n\ + _08025920: .4byte gTrainers\n\ + _08025924:\n\ + cmp r1, 0x2\n\ + beq _08025944\n\ + cmp r1, 0x3\n\ + beq _0802595A\n\ + b _08025970\n\ + _0802592E:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _0802596E\n\ + _08025944:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + subs r0, 0x8\n\ + b _0802596E\n\ + _0802595A:\n\ + adds r0, r2, 0\n\ + adds r0, 0x24\n\ + adds r0, r3, r0\n\ + ldr r1, [r0]\n\ + adds r0, r4, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + lsls r0, 4\n\ + adds r0, r1\n\ + subs r0, 0x10\n\ + _0802596E:\n\ + ldrb r5, [r0, 0x2]\n\ + _08025970:\n\ + ldr r0, _080259CC @ =gTrainerMoneyTable\n\ + lsls r1, r6, 2\n\ + adds r3, r1, r0\n\ + ldrb r1, [r3]\n\ + ldr r7, _080259D0 @ =gBattleStruct\n\ + mov r12, r0\n\ + lsls r4, r5, 2\n\ + ldr r5, _080259D4 @ =gBattleTypeFlags\n\ + ldr r0, _080259D8 @ =gSaveBlock1Ptr\n\ + mov r8, r0\n\ + cmp r1, 0xFF\n\ + beq _080259AA\n\ + ldr r2, _080259DC @ =gTrainers\n\ + ldr r0, _080259E0 @ =gTrainerBattleOpponent_A\n\ + ldrh r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + ldrb r2, [r0, 0x1]\n\ + adds r1, r3, 0\n\ + _0802599A:\n\ + ldrb r0, [r1]\n\ + cmp r0, r2\n\ + beq _080259AA\n\ + adds r1, 0x4\n\ + adds r6, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0xFF\n\ + bne _0802599A\n\ + _080259AA:\n\ + ldr r0, [r7]\n\ + adds r0, 0x4A\n\ + ldrb r0, [r0]\n\ + adds r3, r4, 0\n\ + muls r3, r0\n\ + lsls r0, r6, 2\n\ + add r0, r12\n\ + ldrb r2, [r0, 0x1]\n\ + ldr r0, [r5]\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080259E4\n\ + lsls r0, r2, 1\n\ + adds r4, r3, 0\n\ + muls r4, r0\n\ + b _080259E8\n\ + .align 2, 0\n\ + _080259CC: .4byte gTrainerMoneyTable\n\ + _080259D0: .4byte gBattleStruct\n\ + _080259D4: .4byte gBattleTypeFlags\n\ + _080259D8: .4byte gSaveBlock1Ptr\n\ + _080259DC: .4byte gTrainers\n\ + _080259E0: .4byte gTrainerBattleOpponent_A\n\ + _080259E4:\n\ + adds r4, r3, 0\n\ + muls r4, r2\n\ + _080259E8:\n\ + mov r1, r8\n\ + ldr r0, [r1]\n\ + movs r1, 0xA4\n\ + lsls r1, 2\n\ + adds r0, r1\n\ + adds r1, r4, 0\n\ + bl AddMoney\n\ + b _08025A00\n\ + _080259FA:\n\ + bl sub_8054C04\n\ + adds r4, r0, 0\n\ + _08025A00:\n\ + ldr r1, _08025A40 @ =gBattleTextBuff1\n\ + movs r0, 0xFD\n\ + strb r0, [r1]\n\ + movs r0, 0x1\n\ + strb r0, [r1, 0x1]\n\ + movs r0, 0x4\n\ + strb r0, [r1, 0x2]\n\ + movs r0, 0x5\n\ + strb r0, [r1, 0x3]\n\ + strb r4, [r1, 0x4]\n\ + movs r0, 0xFF\n\ + lsls r0, 8\n\ + ands r0, r4\n\ + lsrs r0, 8\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0xFF\n\ + lsls r0, 16\n\ + ands r0, r4\n\ + lsrs r0, 16\n\ + strb r0, [r1, 0x6]\n\ + lsrs r0, r4, 24\n\ + strb r0, [r1, 0x7]\n\ + movs r0, 0xFF\n\ + strb r0, [r1, 0x8]\n\ + cmp r4, 0\n\ + beq _08025A48\n\ + ldr r1, _08025A44 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x5\n\ + str r0, [r1]\n\ + b _08025A62\n\ + .align 2, 0\n\ + _08025A40: .4byte gBattleTextBuff1\n\ + _08025A44: .4byte gBattlescriptCurrInstr\n\ + _08025A48:\n\ + ldr r3, _08025A6C @ =gBattlescriptCurrInstr\n\ + ldr r2, [r3]\n\ + ldrb r1, [r2, 0x1]\n\ + ldrb r0, [r2, 0x2]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x3]\n\ + lsls r0, 16\n\ + orrs r1, r0\n\ + ldrb r0, [r2, 0x4]\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + str r1, [r3]\n\ + _08025A62:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ + _08025A6C: .4byte gBattlescriptCurrInstr\n\ + "); +} +#endif + +void atk5E(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + switch (gBattleCommunication[0]) + { + case 0: + BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattleCommunication[0]; + break; + case 1: + if (!gBattleControllerExecFlags) + { + s32 i; + struct BattlePokemon *bufferPoke = (struct BattlePokemon *) &gBattleBufferB[gActiveBattler][4]; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + gBattleMons[gActiveBattler].moves[i] = bufferPoke->moves[i]; + gBattleMons[gActiveBattler].pp[i] = bufferPoke->pp[i]; + } + gBattlescriptCurrInstr += 2; + } + break; + } +} + +void atk5F_swapattackerwithtarget(void) +{ + gActiveBattler = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = gActiveBattler; + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); + else + gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET; + ++gBattlescriptCurrInstr; +} + +void atk60_incrementgamestat(void) +{ + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + IncrementGameStat(gBattlescriptCurrInstr[1]); + gBattlescriptCurrInstr += 2; +} + +void atk61_drawpartystatussummary(void) +{ + s32 i; + struct Pokemon *party; + struct HpAndStatus hpStatuses[PARTY_SIZE]; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatuses[i].hp = 0xFFFF; + hpStatuses[i].status = 0; + } + else + { + hpStatuses[i].hp = GetMonData(&party[i], MON_DATA_HP); + hpStatuses[i].status = GetMonData(&party[i], MON_DATA_STATUS); + } + } + BtlController_EmitDrawPartyStatusSummary(0, hpStatuses, 1); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; + } +} + +void atk62_hidepartystatussummary(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitHidePartyStatusSummary(0); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk63_jumptocalledmove(void) +{ + if (gBattlescriptCurrInstr[1]) + gCurrentMove = gCalledMove; + else + gChosenMove = gCurrentMove = gCalledMove; + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; +} + +void atk64_statusanimation(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBattler].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + } + gBattlescriptCurrInstr += 2; + } +} + +void atk65_status2animation(void) +{ + u32 wantedToAnimate; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + wantedToAnimate = T1_READ_32(gBattlescriptCurrInstr + 2); + if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBattler].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate); + MarkBattlerForControllerExec(gActiveBattler); + } + gBattlescriptCurrInstr += 6; + } +} + +void atk66_chosenstatusanimation(void) +{ + u32 wantedStatus; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + wantedStatus = T1_READ_32(gBattlescriptCurrInstr + 3); + if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) + && gDisableStructs[gActiveBattler].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + { + BtlController_EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus); + MarkBattlerForControllerExec(gActiveBattler); + } + gBattlescriptCurrInstr += 7; + } +} + +void atk67_yesnobox(void) +{ + switch (gBattleCommunication[0]) + { + case 0: + HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); + BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + ++gBattleCommunication[0]; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + break; + case 1: + if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateYesNoCursorAt(); + } + if (JOY_NEW(B_BUTTON)) + { + gBattleCommunication[CURSOR_POSITION] = 1; + PlaySE(SE_SELECT); + HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); + ++gBattlescriptCurrInstr; + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); + ++gBattlescriptCurrInstr; + } + break; + } +} + +void atk68_cancelallactions(void) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER; + ++gBattlescriptCurrInstr; +} + +// The same as 0x7, except there's no random damage multiplier. +void atk69_adjustsetdamage(void) +{ + u8 holdEffect, param; + + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + } + gPotentialItemEffectBattler = gBattlerTarget; + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + { + RecordItemEffectBattle(gBattlerTarget, holdEffect); + gSpecialStatuses[gBattlerTarget].focusBanded = 1; + } + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) + && (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded) + && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + if (gProtectStructs[gBattlerTarget].endured) + { + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; + } + else if (gSpecialStatuses[gBattlerTarget].focusBanded) + { + gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; + gLastUsedItem = gBattleMons[gBattlerTarget].item; + } + } + ++gBattlescriptCurrInstr; +} + +void atk6A_removeitem(void) +{ + u16 *usedHeldItem; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler]; + *usedHeldItem = gBattleMons[gActiveBattler].item; + gBattleMons[gActiveBattler].item = ITEM_NONE; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; +} + +void atk6B_atknameinbuff1(void) +{ + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]) + ++gBattlescriptCurrInstr; +} From 738dac67fc5c2215f8bce55748654372a309036a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Aug 2019 14:54:33 -0400 Subject: [PATCH 027/100] Eliminate `struct TextColor` definition and use --- include/libgcnmultiboot.h | 2 +- include/menu.h | 4 +- include/text.h | 7 - src/bag.c | 6 +- src/battle_records.c | 14 +- src/buy_menu_helpers.c | 22 +- src/daycare.c | 350 ++++++++++----------- src/diploma.c | 8 +- src/fame_checker.c | 20 +- src/help_system.c | 14 +- src/item_pc.c | 4 +- src/list_menu.c | 18 +- src/map_preview_screen.c | 8 +- src/menu.c | 28 +- src/menu2.c | 16 +- src/mevent_8145654.c | 24 +- src/mystery_gift_menu.c | 20 +- src/oak_speech.c | 30 +- src/quest_log.c | 10 +- src/slot_machine.c | 10 +- src/tm_case.c | 6 +- src/trainer_tower.c | 8 +- src/wireless_communication_status_screen.c | 34 +- 23 files changed, 320 insertions(+), 343 deletions(-) diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h index 7d347df05..4a6262d8f 100644 --- a/include/libgcnmultiboot.h +++ b/include/libgcnmultiboot.h @@ -1,4 +1,4 @@ -#ifndef GUARD_LIBGCMMULTIBOOT_H +#ifndef GUARD_LIBGCNMULTIBOOT_H #define GUARD_LIBGCNMULTIBOOT_H struct GcmbStruct diff --git a/include/menu.h b/include/menu.h index 6d8de3274..6f358d34e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -18,8 +18,8 @@ struct MenuAction }; // menu2 -void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str); -void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const u8 * color, s8 speed, const u8 * str); +void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); diff --git a/include/text.h b/include/text.h index 07f6b29c2..0fd586ddd 100644 --- a/include/text.h +++ b/include/text.h @@ -193,13 +193,6 @@ typedef struct { extern TextFlags gTextFlags; -struct __attribute__((packed)) TextColor -{ - u8 fgColor; - u8 bgColor; - u8 shadowColor; -}; - extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; diff --git a/src/bag.c b/src/bag.c index a63f57702..c30bc626d 100644 --- a/src/bag.c +++ b/src/bag.c @@ -14,7 +14,7 @@ extern const u8 gText_DepositItem[]; const u16 gUnknown_8453098[] = INCBIN_U16("data/bag/bag_window_pal.gbapal"); -const struct TextColor gUnknown_84530B8[] = { +const u8 gUnknown_84530B8[][3] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 2}, @@ -229,13 +229,13 @@ void sub_810B858(void) void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx) { - AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_84530B8[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_84530B8[colorIdx], speed, str); } void sub_810B958(const u8 * str) { u32 x = 0x48 - GetStringWidth(1, str, 0); - AddTextPrinterParameterized3(2, 1, x / 2, 1, &gUnknown_84530B8[0], 0, str); + AddTextPrinterParameterized3(2, 1, x / 2, 1, gUnknown_84530B8[0], 0, str); } void sub_810B994(void) diff --git a/src/battle_records.c b/src/battle_records.c index 79f29eb8a..3c2032641 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -58,7 +58,7 @@ static const struct WindowTemplate sWindowTemplates[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct TextColor sTextColor = { +static const u8 sTextColor[3] = { 0, 2, 3 }; @@ -494,7 +494,7 @@ static void PrintTotalRecord(struct LinkBattleRecords * records) } StringExpandPlaceholders(gStringVar4, gString_BattleRecords_TotalRecord); - AddTextPrinterParameterized4(0, 2, 12, 24, 0, 2, &sTextColor, 0, gStringVar4); + AddTextPrinterParameterized4(0, 2, 12, 24, 0, 2, sTextColor, 0, gStringVar4); } static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) @@ -504,7 +504,7 @@ static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) if (record->wins == 0 && record->losses == 0 && record->draws == 0) { - AddTextPrinterParameterized4(0, 2, 0, y, 0, 2, &sTextColor, 0, gString_BattleRecords_7Dashes); + AddTextPrinterParameterized4(0, 2, 0, y, 0, 2, sTextColor, 0, gString_BattleRecords_7Dashes); for (i = 0; i < 3; i++) { if (i == 0) @@ -513,7 +513,7 @@ static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) x = 0x84; else x = 0xB4; - AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gString_BattleRecords_4Dashes); + AddTextPrinterParameterized4(0, 2, x, y, 0, 2, sTextColor, 0, gString_BattleRecords_4Dashes); } } else @@ -541,7 +541,7 @@ static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) x = 0xB4; ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); } - AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gStringVar1); + AddTextPrinterParameterized4(0, 2, x, y, 0, 2, sTextColor, 0, gStringVar1); } } } @@ -554,9 +554,9 @@ static void PrintBattleRecords(void) FillWindowPixelRect(0, PIXEL_FILL(0), 0, 0, 0xD8, 0x90); StringExpandPlaceholders(gStringVar4, gString_BattleRecords_PlayersBattleResults); left = 0xD0 - GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized4(0, 2, left / 2, 4, 0, 2, &sTextColor, 0, gStringVar4); + AddTextPrinterParameterized4(0, 2, left / 2, 4, 0, 2, sTextColor, 0, gStringVar4); PrintTotalRecord(&gSaveBlock2Ptr->linkBattleRecords); - AddTextPrinterParameterized4(0, 2, 0x54, 0x30, 0, 2, &sTextColor, 0, gString_BattleRecords_ColumnHeaders); + AddTextPrinterParameterized4(0, 2, 0x54, 0x30, 0, 2, sTextColor, 0, gString_BattleRecords_ColumnHeaders); for (i = 0; i < LINK_B_RECORDS_COUNT; i++) PrintOpponentBattleRecord(&gSaveBlock2Ptr->linkBattleRecords.entries[i], 0x3D + 14 * i); CommitWindow(0); diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c index 4cdf90e4e..cf8072977 100644 --- a/src/buy_menu_helpers.c +++ b/src/buy_menu_helpers.c @@ -148,23 +148,11 @@ static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplate = .baseBlock = 0xC1, }; -static const struct TextColor sShopBuyMenuTextColors[] = +static const u8 sShopBuyMenuTextColors[][3] = { - { - .fgColor = 0, - .bgColor = 1, - .shadowColor = 2, - }, - { - .fgColor = 0, - .bgColor = 2, - .shadowColor = 3, - }, - { - .fgColor = 0, - .bgColor = 3, - .shadowColor = 2, - }, + {0, 1, 2}, + {0, 2, 3}, + {0, 3, 2} }; void BuyMenuInitWindows(bool32 isSellingTM) @@ -191,7 +179,7 @@ void BuyMenuDrawMoneyBox(void) void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color) { - AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, &sShopBuyMenuTextColors[color], speed, text); + AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, sShopBuyMenuTextColors[color], speed, text); } void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback) diff --git a/src/daycare.c b/src/daycare.c index abc3b23ca..c082b4298 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -63,7 +63,7 @@ struct EggHatchData u8 unused_9; u8 unused_A; u16 species; - struct TextColor textColor; + u8 textColor[3]; }; extern const u8 gText_MaleSymbol4[]; @@ -168,215 +168,215 @@ static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); static const struct OamData sOamData_EggHatch = - { - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, - }; +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; static const union AnimCmd sSpriteAnim_EggHatch0[] = - { - ANIMCMD_FRAME(0, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggHatch1[] = - { - ANIMCMD_FRAME(16, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggHatch2[] = - { - ANIMCMD_FRAME(32, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggHatch3[] = - { - ANIMCMD_FRAME(48, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END +}; static const union AnimCmd *const sSpriteAnimTable_EggHatch[] = - { - sSpriteAnim_EggHatch0, - sSpriteAnim_EggHatch1, - sSpriteAnim_EggHatch2, - sSpriteAnim_EggHatch3, - }; +{ + sSpriteAnim_EggHatch0, + sSpriteAnim_EggHatch1, + sSpriteAnim_EggHatch2, + sSpriteAnim_EggHatch3, +}; static const struct SpriteSheet sEggHatch_Sheet = - { - .data = sEggHatchTiles, - .size = 2048, - .tag = 12345, - }; +{ + .data = sEggHatchTiles, + .size = 2048, + .tag = 12345, +}; static const struct SpriteSheet sEggShards_Sheet = - { - .data = sEggShardTiles, - .size = 128, - .tag = 23456, - }; +{ + .data = sEggShardTiles, + .size = 128, + .tag = 23456, +}; static const struct SpritePalette sEgg_SpritePalette = - { - .data = sEggPalette, - .tag = 54321 - }; +{ + .data = sEggPalette, + .tag = 54321 +}; static const struct SpriteTemplate sSpriteTemplate_EggHatch = - { - .tileTag = 12345, - .paletteTag = 54321, - .oam = &sOamData_EggHatch, - .anims = sSpriteAnimTable_EggHatch, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy - }; +{ + .tileTag = 12345, + .paletteTag = 54321, + .oam = &sOamData_EggHatch, + .anims = sSpriteAnimTable_EggHatch, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; static const struct OamData sOamData_EggShard = - { - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0, - }; +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; static const union AnimCmd sSpriteAnim_EggShard0[] = - { - ANIMCMD_FRAME(0, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggShard1[] = - { - ANIMCMD_FRAME(1, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggShard2[] = - { - ANIMCMD_FRAME(2, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_EggShard3[] = - { - ANIMCMD_FRAME(3, 5), - ANIMCMD_END - }; +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END +}; static const union AnimCmd *const sSpriteAnimTable_EggShard[] = - { - sSpriteAnim_EggShard0, - sSpriteAnim_EggShard1, - sSpriteAnim_EggShard2, - sSpriteAnim_EggShard3, - }; +{ + sSpriteAnim_EggShard0, + sSpriteAnim_EggShard1, + sSpriteAnim_EggShard2, + sSpriteAnim_EggShard3, +}; static const struct SpriteTemplate sSpriteTemplate_EggShard = - { - .tileTag = 23456, - .paletteTag = 54321, - .oam = &sOamData_EggShard, - .anims = sSpriteAnimTable_EggShard, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_EggShard - }; +{ + .tileTag = 23456, + .paletteTag = 54321, + .oam = &sOamData_EggShard, + .anims = sSpriteAnimTable_EggShard, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_EggShard +}; static const struct BgTemplate sBgTemplates_EggHatch[2] = - { - { - .bg = 0, - .charBaseIndex = 2, - .mapBaseIndex = 24, - .screenSize = 3, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 - }, - - { - .bg = 1, - .charBaseIndex = 0, - .mapBaseIndex = 8, - .screenSize = 1, - .paletteMode = 0, - .priority = 2, - .baseTile = 0 - }, - }; - -static const struct WindowTemplate sWinTemplates_EggHatch[2] = - { - { - .bg = 0, - .tilemapLeft = 2, - .tilemapTop = 15, - .width = 26, - .height = 4, - .paletteNum = 0, - .baseBlock = 64 - }, - DUMMY_WIN_TEMPLATE - }; - -static const struct WindowTemplate sYesNoWinTemplate = +{ { .bg = 0, - .tilemapLeft = 21, - .tilemapTop = 9, - .width = 6, + .charBaseIndex = 2, + .mapBaseIndex = 24, + .screenSize = 3, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate sWinTemplates_EggHatch[2] = +{ + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, .height = 4, - .paletteNum = 15, - .baseBlock = 424 - }; + .paletteNum = 0, + .baseBlock = 64 + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sYesNoWinTemplate = +{ + .bg = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 424 +}; static const s16 sEggShardVelocities[][2] = - { - {Q_8_8(-1.5), Q_8_8(-3.75)}, - {Q_8_8(-5), Q_8_8(-3)}, - {Q_8_8(3.5), Q_8_8(-3)}, - {Q_8_8(-4), Q_8_8(-3.75)}, - {Q_8_8(2), Q_8_8(-1.5)}, - {Q_8_8(-0.5), Q_8_8(-6.75)}, - {Q_8_8(5), Q_8_8(-2.25)}, - {Q_8_8(-1.5), Q_8_8(-3.75)}, - {Q_8_8(4.5), Q_8_8(-1.5)}, - {Q_8_8(-1), Q_8_8(-6.75)}, - {Q_8_8(4), Q_8_8(-2.25)}, - {Q_8_8(-3.5), Q_8_8(-3.75)}, - {Q_8_8(1), Q_8_8(-1.5)}, - {Q_8_8(-3.515625), Q_8_8(-6.75)}, - {Q_8_8(4.5), Q_8_8(-2.25)}, - {Q_8_8(-0.5), Q_8_8(-7.5)}, - {Q_8_8(1), Q_8_8(-4.5)}, - {Q_8_8(-2.5), Q_8_8(-2.25)}, - {Q_8_8(2.5), Q_8_8(-7.5)}, - }; +{ + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(-5), Q_8_8(-3)}, + {Q_8_8(3.5), Q_8_8(-3)}, + {Q_8_8(-4), Q_8_8(-3.75)}, + {Q_8_8(2), Q_8_8(-1.5)}, + {Q_8_8(-0.5), Q_8_8(-6.75)}, + {Q_8_8(5), Q_8_8(-2.25)}, + {Q_8_8(-1.5), Q_8_8(-3.75)}, + {Q_8_8(4.5), Q_8_8(-1.5)}, + {Q_8_8(-1), Q_8_8(-6.75)}, + {Q_8_8(4), Q_8_8(-2.25)}, + {Q_8_8(-3.5), Q_8_8(-3.75)}, + {Q_8_8(1), Q_8_8(-1.5)}, + {Q_8_8(-3.515625), Q_8_8(-6.75)}, + {Q_8_8(4.5), Q_8_8(-2.25)}, + {Q_8_8(-0.5), Q_8_8(-7.5)}, + {Q_8_8(1), Q_8_8(-4.5)}, + {Q_8_8(-2.5), Q_8_8(-2.25)}, + {Q_8_8(2.5), Q_8_8(-7.5)}, +}; // code @@ -2202,8 +2202,8 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) { FillWindowPixelBuffer(windowId, 0xFF); - sEggHatchData->textColor.fgColor = 0; - sEggHatchData->textColor.bgColor = 5; - sEggHatchData->textColor.shadowColor = 6; - AddTextPrinterParameterized4(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string); + sEggHatchData->textColor[0] = 0; + sEggHatchData->textColor[1] = 5; + sEggHatchData->textColor[2] = 6; + AddTextPrinterParameterized4(windowId, 3, x, y, 1, 1, sEggHatchData->textColor, speed, string); } diff --git a/src/diploma.c b/src/diploma.c index 7fa140430..afb22400b 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -52,7 +52,7 @@ static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT}      static const u8 gUnknown_84159ED[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}ゲームフリーク"); static const u8 gUnknown_84159FB[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}"); -static const ALIGNED(4) struct TextColor gUnknown_8415A04 = {0, 2, 3}; +static const ALIGNED(4) u8 gUnknown_8415A04[3] = {0, 2, 3}; static const struct BgTemplate gUnknown_8415A08[] = { { @@ -276,10 +276,10 @@ static void DiplomaPrintText(void) FillWindowPixelBuffer(0, 0); DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B60E); width = GetStringWidth(2, arr, -1); - AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, &gUnknown_8415A04, -1, arr); + AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, gUnknown_8415A04, -1, arr); DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B619); width = GetStringWidth(2, arr, -1); - AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, &gUnknown_8415A04, -1, arr); - AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, &gUnknown_8415A04, 0, gUnknown_841B684); + AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, gUnknown_8415A04, -1, arr); + AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, gUnknown_8415A04, 0, gUnknown_841B684); PutWindowTilemap(0); } diff --git a/src/fame_checker.c b/src/fame_checker.c index aa1684981..31bd11b55 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -152,9 +152,9 @@ static const u16 sOakSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845f580 static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); // unused? static const u16 sSilhouettePalette[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); -static const struct TextColor sTextColor_White = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; -static const struct TextColor sTextColor_DkGrey = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, 0x03}; -static const struct TextColor sTextColor_Green = {TEXT_COLOR_TRANSPARENT, 0x06, 0x07}; +static const u8 sTextColor_White[3] = {0, 1, 2}; +static const u8 sTextColor_DkGrey[3] = {0, 2, 3}; +static const u8 sTextColor_Green[3] = {0, 6, 7}; static const u16 sTrainerIdxs[] = { FC_NONTRAINER_START + 0, // OAK @@ -900,7 +900,7 @@ static void PrintUIHelp(u8 state) } width = GetStringWidth(0, src, 0); FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10); - AddTextPrinterParameterized4(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &sTextColor_White, -1, src); + AddTextPrinterParameterized4(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, sTextColor_White, -1, src); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP); } @@ -1213,10 +1213,10 @@ static void UpdateIconDescriptionBox(u8 whichText) gIconDescriptionBoxIsOpen = 1; FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20); width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2; - AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]); + AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]); StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]); width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2; - AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &sTextColor_DkGrey, -1, gStringVar1); + AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, sTextColor_DkGrey, -1, gStringVar1); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); } @@ -1341,14 +1341,14 @@ static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit) u16 who; ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY); who = listY + cursorY; - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].label); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, sTextColor_Green, 0, sListMenuItems[itemIndex].label); if (!onInit) { if (listY < sFameCheckerData->listMenuTopIdx2) sFameCheckerData->listMenuDrawnSelIdx++; else if (listY > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->listMenuDrawnSelIdx--; - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].label); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].label); } sFameCheckerData->listMenuCurIdx = itemIndex; @@ -1546,7 +1546,7 @@ static void PlaceListMenuCursor(bool8 isActive) { u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId); if (isActive == TRUE) - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor); else - AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_White, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_White, 0, gFameCheckerText_ListMenuCursor); } diff --git a/src/help_system.c b/src/help_system.c index 1fd43fffa..2d96ae9d6 100644 --- a/src/help_system.c +++ b/src/help_system.c @@ -25,7 +25,7 @@ struct HelpSystemVideoState /*0x0c*/ u16 savedBg0Hofs; /*0x0e*/ u16 savedBg0Vofs; /*0x10*/ u16 savedBldCnt; - /*0x12*/ struct TextColor savedTextColor; + /*0x12*/ u8 savedTextColor[3]; /*0x15*/ u8 state; }; @@ -171,9 +171,9 @@ void SaveMapTiles(void) void SaveMapTextColors(void) { SaveTextColors( - &sVideoState.savedTextColor.fgColor, - &sVideoState.savedTextColor.bgColor, - &sVideoState.savedTextColor.shadowColor + &sVideoState.savedTextColor[0], + &sVideoState.savedTextColor[1], + &sVideoState.savedTextColor[2] ); } @@ -200,9 +200,9 @@ void RestoreMapTiles(void) void RestoreMapTextColors(void) { RestoreTextColors( - &sVideoState.savedTextColor.fgColor, - &sVideoState.savedTextColor.bgColor, - &sVideoState.savedTextColor.shadowColor + &sVideoState.savedTextColor[0], + &sVideoState.savedTextColor[1], + &sVideoState.savedTextColor[2] ); } diff --git a/src/item_pc.c b/src/item_pc.c index 8f1fd1cbf..3b60a5bee 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -125,7 +125,7 @@ static const struct MenuAction sItemPcSubmenuOptions[] = { {gFameCheckerText_Cancel, {.void_u8 = Task_ItemPcCancel}} }; -static const struct TextColor gUnknown_8453F8C[] = { +static const u8 gUnknown_8453F8C[][3] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 2}, @@ -1111,7 +1111,7 @@ static void unused_ItemPc_AddTextPrinterParameterized(u8 windowId, const u8 * st static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8453F8C[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_8453F8C[colorIdx], speed, str); } static void ItemPc_SetBorderStyleOnWindow(u8 windowId) diff --git a/src/list_menu.c b/src/list_menu.c index 5f2bd02b3..d25eb3faf 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -368,21 +368,21 @@ static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 sc static void ListMenuPrint(struct ListMenu *list, const u8 *str, u8 x, u8 y) { - struct TextColor colors; + u8 colors[3]; if (gListMenuOverride.enabled) { - colors.fgColor = gListMenuOverride.fillValue; - colors.bgColor = gListMenuOverride.cursorPal; - colors.shadowColor = gListMenuOverride.cursorShadowPal; - AddTextPrinterParameterized4(list->template.windowId, gListMenuOverride.fontId, x, y, gListMenuOverride.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str); + colors[0] = gListMenuOverride.fillValue; + colors[1] = gListMenuOverride.cursorPal; + colors[2] = gListMenuOverride.cursorShadowPal; + AddTextPrinterParameterized4(list->template.windowId, gListMenuOverride.fontId, x, y, gListMenuOverride.lettersSpacing, 0, colors, TEXT_SPEED_FF, str); gListMenuOverride.enabled = FALSE; } else { - colors.fgColor = list->template.fillValue; - colors.bgColor = list->template.cursorPal; - colors.shadowColor = list->template.cursorShadowPal; - AddTextPrinterParameterized4(list->template.windowId, list->template.fontId, x, y, list->template.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str); + colors[0] = list->template.fillValue; + colors[1] = list->template.cursorPal; + colors[2] = list->template.cursorShadowPal; + AddTextPrinterParameterized4(list->template.windowId, list->template.fontId, x, y, list->template.lettersSpacing, 0, colors, TEXT_SPEED_FF, str); } } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index b913d5fe8..a17f37802 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -447,14 +447,14 @@ u16 sub_80F8318(u8 mapsec) { u16 windowId; u32 xctr; - struct TextColor color[0]; + u8 color[0]; windowId = AddWindow(&sMapNameWindow); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); - color->fgColor = 1; // Access violation - color->bgColor = 4; // Access violation - color->shadowColor = 3; // Access violation + color[0] = 1; // Access violation + color[1] = 4; // Access violation + color[2] = 3; // Access violation GetMapName(gStringVar4, mapsec, 0); xctr = 104 - GetStringWidth(2, gStringVar4, 0); AddTextPrinterParameterized4(windowId, 2, xctr / 2, 2, 0, 0, color/* Access violation */, -1, gStringVar4); diff --git a/src/menu.c b/src/menu.c index bef442d84..5ba82448c 100644 --- a/src/menu.c +++ b/src/menu.c @@ -41,12 +41,8 @@ static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLef static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum); static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY); -static const struct TextColor gUnknown_8456618 = -{ - .fgColor = 15, - .bgColor = 1, - .shadowColor = 2, -}; +static const u8 gUnknown_8456618[3] = +{15, 1, 2}; void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum) { @@ -205,7 +201,7 @@ void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram) PutWindowTilemap(sTopBarWindowId); FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15)); width = GetStringWidth(0, string, 0); - AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &gUnknown_8456618, 0, string); + AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, gUnknown_8456618, 0, string); if (copyToVram) CopyWindowToVram(sTopBarWindowId, 3); } @@ -213,22 +209,22 @@ void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram) void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 unused, bool8 copyToVram) { - struct TextColor color; + u8 color[3]; s32 fgColor, width; if ( sTopBarWindowId != 0xFF ) { if (fgColorChooser) { - color.fgColor = 0; - color.bgColor = 1; - color.shadowColor = 2; + color[0] = 0; + color[1] = 1; + color[2] = 2; } else { - color.fgColor = 15; - color.bgColor = 1; - color.shadowColor = 2; + color[0] = 15; + color[1] = 1; + color[2] = 2; } PutWindowTilemap(sTopBarWindowId); @@ -236,9 +232,9 @@ void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgCo if (string2) { width = GetStringWidth(0, string2, 0); - AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &color, 0, string2); + AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, color, 0, string2); } - AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, &color, 0, string); + AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, color, 0, string); if (copyToVram) CopyWindowToVram(sTopBarWindowId, 3); } diff --git a/src/menu2.c b/src/menu2.c index 6a3668cfa..6ee1488b1 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -424,7 +424,7 @@ static const u8 gUnknown_845FD54[][5] = { [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} }; -void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str) +void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const u8 * color, s8 speed, const u8 * str) { struct TextPrinterTemplate printer; @@ -438,13 +438,13 @@ void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const stru printer.letterSpacing = GetFontAttribute(fontId, 2); printer.lineSpacing = GetFontAttribute(fontId, 3); printer.unk = 0; - printer.fgColor = color->bgColor; - printer.bgColor = color->fgColor; - printer.shadowColor = color->shadowColor; + printer.fgColor = color[1]; + printer.bgColor = color[0]; + printer.shadowColor = color[2]; AddTextPrinter(&printer, speed, NULL); } -void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str) +void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str) { struct TextPrinterTemplate printer; @@ -458,9 +458,9 @@ void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterS printer.letterSpacing = letterSpacing; printer.lineSpacing = lineSpacing; printer.unk = 0; - printer.fgColor = color->bgColor; - printer.bgColor = color->fgColor; - printer.shadowColor = color->shadowColor; + printer.fgColor = color[1]; + printer.bgColor = color[0]; + printer.shadowColor = color[2]; AddTextPrinter(&printer, speed, NULL); } diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index c67cd1358..85c1dfccb 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -61,7 +61,7 @@ void sub_81461D8(void); extern const struct OamData gOamData_83AC9F8; -const struct TextColor gUnknown_8467068[] = { +const u8 gUnknown_8467068[][3] = { {0, 2, 3}, {0, 1, 2} }; @@ -348,28 +348,28 @@ void sub_8145D18(u8 whichWindow) case 0: { s32 x; - AddTextPrinterParameterized3(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B); + AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B); x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2)); if (x < 0) x = 0; - AddTextPrinterParameterized3(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4); + AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4); if (gUnknown_203F3C8->unk_0000.unk_04 != 0) { - AddTextPrinterParameterized3(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD); + AddTextPrinterParameterized3(windowId, 2, 166, 17, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD); } break; } case 1: for (; sp0C < 4; sp0C++) { - AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]); + AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]); } break; case 2: - AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288); + AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288); if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2) { - AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1); + AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1); } else { @@ -378,11 +378,11 @@ void sub_8145D18(u8 whichWindow) s32 spacing = GetFontAttribute(3, 2); for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++) { - AddTextPrinterParameterized3(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01); + AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01); if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS) { x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing); - AddTextPrinterParameterized3(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42); + AddTextPrinterParameterized3(windowId, 2, x, y, gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42); x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00; } } @@ -471,7 +471,7 @@ void sub_8146980(void); void sub_8146A30(void); void sub_8146B58(void); -const struct TextColor gUnknown_8468038[] = { +const u8 gUnknown_8468038[][3] = { {0, 2, 3}, {0, 1, 2} }; @@ -758,10 +758,10 @@ void sub_8146A30(void) x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2; if (x < 0) x = 0; - AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE); + AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE); for (; i < 10; ++i) { - AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]); + AddTextPrinterParameterized3(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]); } CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3); CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3); diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 9ff96eb23..57bc07f33 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -409,9 +409,9 @@ const u8 *const Unref_08366ED8[] = { gText_ReturnToTitle }; -ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_1 = { 0, 1, 2 }; -ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_1_Copy = { 0, 1, 2 }; -ALIGNED(4) const struct TextColor sMG_Ereader_TextColor_2 = { 1, 2, 3 }; +ALIGNED(4) const u8 sMG_Ereader_TextColor_1[3] = { 0, 1, 2 }; +ALIGNED(4) const u8 sMG_Ereader_TextColor_1_Copy[3] = { 0, 1, 2 }; +ALIGNED(4) const u8 sMG_Ereader_TextColor_2[3] = { 1, 2, 3 }; const u8 gUnknown_8466EF3[] = _("テスト"); const u8 gUnknown_8466EF7[] = _("むげんのチケット"); @@ -538,14 +538,14 @@ void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCance if (!mg_or_ereader) { src = usePickOkCancel == TRUE ? gText_PickOKExit : gText_PickOKCancel; - AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gText_MysteryGift); + AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gText_MysteryGift); width = 222 - GetStringWidth(0, src, 0); - AddTextPrinterParameterized4(0, 0, width, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, src); + AddTextPrinterParameterized4(0, 0, width, 2, 0, 0, sMG_Ereader_TextColor_1, 0, src); } else { - AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift); - AddTextPrinterParameterized4(0, 0, 0x78, 2, 0, 0, &sMG_Ereader_TextColor_1, 0, gJPText_DecideStop); + AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift); + AddTextPrinterParameterized4(0, 0, 0x78, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gJPText_DecideStop); } CopyWindowToVram(0, 2); PutWindowTilemap(0); @@ -596,7 +596,7 @@ void AddTextPrinterToWindow1(const u8 *str) { StringExpandPlaceholders(gStringVar4, str); FillWindowPixelBuffer(1, 0x11); - AddTextPrinterParameterized4(1, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4); + AddTextPrinterParameterized4(1, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(1, 0x001, 0xF); PutWindowTilemap(1); CopyWindowToVram(1, 3); @@ -737,7 +737,7 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 *windowId = AddWindow(&sWindowTemplate_PromptYesOrNo_Width20); } FillWindowPixelBuffer(*windowId, 0x11); - AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4); + AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(*windowId, 0x001, 0x0F); CopyWindowToVram(*windowId, 2); PutWindowTilemap(*windowId); @@ -798,7 +798,7 @@ s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss, } *windowId = AddWindow(&sMysteryGiftMenuWindowTemplate); FillWindowPixelBuffer(*windowId, 0x11); - AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, &sMG_Ereader_TextColor_2, 0, gStringVar4); + AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(*windowId, 0x001, 0x0F); CopyWindowToVram(*windowId, 2); PutWindowTilemap(*windowId); diff --git a/src/oak_speech.c b/src/oak_speech.c index c00335136..04b66f528 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -37,7 +37,7 @@ struct OakSpeechResources u16 unk_0010; u16 unk_0012; u16 unk_0014[4]; - struct TextColor textColor; + u8 textColor[3]; u8 textSpeed; u8 filler_0020[0x1800]; u8 bg2TilemapBuffer[0x400]; @@ -273,11 +273,11 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { }, DUMMY_WIN_TEMPLATE }; -ALIGNED(4) const struct TextColor sTextColor_HelpSystem = { +const u8 sTextColor_HelpSystem[4] = { 0x00, 0x01, 0x02 }; -ALIGNED(4) const struct TextColor sTextColor_OakSpeech = { +const u8 sTextColor_OakSpeech[4] = { 0x00, 0x02, 0x03 }; @@ -576,7 +576,7 @@ static void CreateHelpDocsPage1(void) sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]); PutWindowTilemap(sOakSpeechResources->unk_0014[0]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00); - AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &sTextColor_HelpSystem, 0, gNewGame_HelpDocs1); + AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, sTextColor_HelpSystem, 0, gNewGame_HelpDocs1); CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3); FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16); CopyBgTilemapBufferToVram(1); @@ -598,7 +598,7 @@ static void Task_OakSpeech4(u8 taskId) sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]); PutWindowTilemap(sOakSpeechResources->unk_0014[i]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); - AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]); + AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]); CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); } @@ -730,7 +730,7 @@ static void Task_OakSpeech6(u8 taskId) sOakSpeechResources->unk_0012 = 0; gMain.state = 0; data[15] = 16; - AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]); + AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]); data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xe2, 0x91, 0, 0); gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND; gSprites[data[5]].oam.priority = 0; @@ -790,7 +790,7 @@ static void Task_OakSpeech7(u8 taskId) if (data[15] <= 0) { FillWindowPixelBuffer(data[14], 0x00); - AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]); + AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]); if (sOakSpeechResources->unk_0012 == 0) { ClearTopBarWindow(); @@ -1056,14 +1056,14 @@ static void Task_OakSpeech19(u8 taskId) PutWindowTilemap(gTasks[taskId].data[13]); DrawStdFrameWithCustomTileAndPalette(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14); FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11); - sOakSpeechResources->textColor.fgColor = 1; - sOakSpeechResources->textColor.bgColor = 2; - sOakSpeechResources->textColor.shadowColor = 3; - AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, &sOakSpeechResources->textColor, 0, gText_Boy); - sOakSpeechResources->textColor.fgColor = 1; - sOakSpeechResources->textColor.bgColor = 2; - sOakSpeechResources->textColor.shadowColor = 3; - AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, &sOakSpeechResources->textColor, 0, gText_Girl); + sOakSpeechResources->textColor[0] = 1; + sOakSpeechResources->textColor[1] = 2; + sOakSpeechResources->textColor[2] = 3; + AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->textColor, 0, gText_Boy); + sOakSpeechResources->textColor[0] = 1; + sOakSpeechResources->textColor[1] = 2; + sOakSpeechResources->textColor[2] = 3; + AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->textColor, 0, gText_Girl); Menu_InitCursor(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0); CopyWindowToVram(gTasks[taskId].data[13], 3); gTasks[taskId].func = Task_OakSpeech20; diff --git a/src/quest_log.c b/src/quest_log.c index 0d1cb7984..7a3084d8c 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -410,7 +410,7 @@ const struct WindowTemplate gUnknown_845661C[3] = { { 0, 0, 14, 30, 6, 15, 0x14c } }; -const struct TextColor gUnknown_8456634 = {15, 1, 12}; +const u8 gUnknown_8456634[3] = {15, 1, 12}; const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); @@ -923,7 +923,7 @@ void sub_8111070(u8 a0) StringAppend(gStringVar4, gStringVar1); } - AddTextPrinterParameterized4(gUnknown_203ADFE[0], 2, 2, 2, 1, 2, &gUnknown_8456634, 0, gStringVar4); + AddTextPrinterParameterized4(gUnknown_203ADFE[0], 2, 2, 2, 1, 2, gUnknown_8456634, 0, gStringVar4); PutWindowTilemap(gUnknown_203ADFE[0]); PutWindowTilemap(gUnknown_203ADFE[1]); CopyWindowToVram(gUnknown_203ADFE[0], 2); @@ -1418,7 +1418,7 @@ void sub_8111D10(void) PutWindowTilemap(gUnknown_203ADFE[2]); sub_8111D90(gUnknown_203ADFE[2]); - AddTextPrinterParameterized4(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4); + AddTextPrinterParameterized4(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, gUnknown_8456634, 0, gStringVar4); ScheduleBgCopyTilemapToVram(0); } @@ -2463,13 +2463,13 @@ void sub_8112FD0(void) sub_8112F18(gUnknown_203B020); } -const struct TextColor gUnknown_8456930 = { +const u8 gUnknown_8456930[3] = { 0, 10, 2 }; void sub_8112FE4(const u8 * a0) { - AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, &gUnknown_8456930, -1, a0); + AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0); } void sub_8113018(const u8 * text, u8 mode) diff --git a/src/slot_machine.c b/src/slot_machine.c index 740234d95..28292902f 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -2074,7 +2074,7 @@ static bool32 sub_8141180(u8 a0) static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) { u16 pal; - struct TextColor textColor; + u8 textColor[3]; u32 x; switch (*state) @@ -2125,10 +2125,10 @@ static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) PutWindowTilemap(1); x = 0xEC - GetStringWidth(0, gString_SlotMachineControls, 0); - textColor.fgColor = 15; - textColor.bgColor = 1; - textColor.shadowColor = 2; - AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gString_SlotMachineControls); + textColor[0] = 15; + textColor[1] = 1; + textColor[2] = 2; + AddTextPrinterParameterized3(1, 0, x, 0, textColor, 0, gString_SlotMachineControls); CopyBgTilemapBufferToVram(0); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); diff --git a/src/tm_case.c b/src/tm_case.c index 79e10bcfc..2031234af 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -185,7 +185,7 @@ static const u8 sText_SingleSpace[] = _(" "); static ALIGNED(4) const u16 sPal3Override[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; -static const struct TextColor sTextColors[] = { +static const u8 sTextColors[][3] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 6}, @@ -1317,7 +1317,7 @@ static void InitWindowTemplatesAndPals(void) static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &sTextColors[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str); } static void TMCase_SetWindowBorder1(u8 windowId) @@ -1339,7 +1339,7 @@ static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 static void PrintStringTMCaseOnWindow3(void) { u32 distance = 72 - GetStringWidth(1, gText_TMCase, 0); - AddTextPrinterParameterized3(3, 1, distance / 2, 1, &sTextColors[0], 0, gText_TMCase); + AddTextPrinterParameterized3(3, 1, distance / 2, 1, sTextColors[0], 0, gText_TMCase); } static void DrawMoveInfoUIMarkers(void) diff --git a/src/trainer_tower.c b/src/trainer_tower.c index d80be781d..7194d2271 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -423,7 +423,7 @@ const struct WindowTemplate gUnknown_847A218[] = { const u32 gUnknown_847A228 = 0x70; // unused -const struct TextColor gUnknown_847A22C = {0, 2, 3}; +const u8 gUnknown_847A22C[3] = {0, 2, 3}; void (*const gUnknown_847A230[])(void) = { sub_815DD44, @@ -1433,14 +1433,14 @@ void PrintTrainerTowerRecords(void) sub_815DC8C(); FillWindowPixelRect(0, 0, 0, 0, 0xd8, 0x90); sub_815EC0C(); - AddTextPrinterParameterized3(0, 2, 0x4a, 0, &gUnknown_847A22C, 0, gUnknown_83FE982); + AddTextPrinterParameterized3(0, 2, 0x4a, 0, gUnknown_847A22C, 0, gUnknown_83FE982); for (i = 0; i < 4; i++) { PRINT_TOWER_TIME(sub_815EDDC(&gSaveBlock1Ptr->unkArray[i].unk4)); StringExpandPlaceholders(gStringVar4, gUnknown_83FE998); - AddTextPrinterParameterized3(windowId, 2, 0x18, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gUnknown_83FE9C4[i]); - AddTextPrinterParameterized3(windowId, 2, 0x60, 0x24 + 0x14 * i, &gUnknown_847A22C, 0, gStringVar4); + AddTextPrinterParameterized3(windowId, 2, 0x18, 0x24 + 0x14 * i, gUnknown_847A22C, 0, gUnknown_83FE9C4[i]); + AddTextPrinterParameterized3(windowId, 2, 0x60, 0x24 + 0x14 * i, gUnknown_847A22C, 0, gStringVar4); } PutWindowTilemap(windowId); diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index cc80d37b6..1c355c3ba 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -329,37 +329,37 @@ void sub_814F46C(u8 taskId) void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx) { - struct TextColor textColor; + u8 textColor[3]; switch (palIdx) { case 0: - textColor.fgColor = 0; - textColor.bgColor = 2; - textColor.shadowColor = 3; + textColor[0] = 0; + textColor[1] = 2; + textColor[2] = 3; break; case 1: - textColor.fgColor = 0; - textColor.bgColor = 1; - textColor.shadowColor = 3; + textColor[0] = 0; + textColor[1] = 1; + textColor[2] = 3; break; case 2: - textColor.fgColor = 0; - textColor.bgColor = 4; - textColor.shadowColor = 5; + textColor[0] = 0; + textColor[1] = 4; + textColor[2] = 5; break; case 3: - textColor.fgColor = 0; - textColor.bgColor = 7; - textColor.shadowColor = 6; + textColor[0] = 0; + textColor[1] = 7; + textColor[2] = 6; break; case 4: - textColor.fgColor = 0; - textColor.bgColor = 1; - textColor.shadowColor = 2; + textColor[0] = 0; + textColor[1] = 1; + textColor[2] = 2; break; // default: UB } - AddTextPrinterParameterized4(windowId, fontId,x, y, fontId == 0 ? 0 : 1, 0, &textColor, -1, str); + AddTextPrinterParameterized4(windowId, fontId,x, y, fontId == 0 ? 0 : 1, 0, textColor, -1, str); } u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1) From b5162467692853dabb7765976fc7c0fa679c0f3d Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 08:01:01 +0800 Subject: [PATCH 028/100] thru TryDoForceSwitchOut --- asm/battle_script_commands.s | 4174 -------------------- asm/party_menu.s | 8 +- asm/pokemon_special_anim.s | 22 +- include/battle_script_commands.h | 13 - include/constants/battle_script_commands.h | 23 +- include/party_menu.h | 4 +- include/pokemon_special_anim.h | 3 + include/window.h | 2 +- src/battle_script_commands.c | 1334 ++++++- src/window.c | 2 +- 10 files changed, 1363 insertions(+), 4222 deletions(-) diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 7a0f29fb8..68bff599e 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,4180 +5,6 @@ .text - thumb_func_start atk6C_drawlvlupbox -atk6C_drawlvlupbox: @ 8026208 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08026224 @ =gBattleScripting - ldrb r1, [r0, 0x1E] - adds r4, r0, 0 - cmp r1, 0 - bne _0802622C - bl IsMonGettingExpSentOut - cmp r0, 0 - beq _08026228 - movs r0, 0x3 - b _0802622A - .align 2, 0 -_08026224: .4byte gBattleScripting -_08026228: - movs r0, 0x1 -_0802622A: - strb r0, [r4, 0x1E] -_0802622C: - ldrb r0, [r4, 0x1E] - subs r0, 0x1 - cmp r0, 0x9 - bls _08026236 - b _080263F6 -_08026236: - lsls r0, 2 - ldr r1, _08026240 @ =_08026244 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08026240: .4byte _08026244 - .align 2, 0 -_08026244: - .4byte _0802626C - .4byte _08026298 - .4byte _080262B0 - .4byte _08026304 - .4byte _08026318 - .4byte _08026330 - .4byte _08026318 - .4byte _08026350 - .4byte _08026380 - .4byte _080263C4 -_0802626C: - ldr r1, _08026290 @ =gBattle_BG2_Y - movs r0, 0x60 - strh r0, [r1] - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - bl ShowBg - bl sub_8026480 - ldr r1, _08026294 @ =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0x1E] - b _080263F6 - .align 2, 0 -_08026290: .4byte gBattle_BG2_Y -_08026294: .4byte gBattleScripting -_08026298: - bl sub_80264D0 - lsls r0, 24 - cmp r0, 0 - beq _080262A4 - b _080263F6 -_080262A4: - ldr r1, _080262AC @ =gBattleScripting - movs r0, 0x3 - strb r0, [r1, 0x1E] - b _080263F6 - .align 2, 0 -_080262AC: .4byte gBattleScripting -_080262B0: - ldr r1, _080262F8 @ =gBattle_BG1_X - movs r0, 0 - strh r0, [r1] - ldr r1, _080262FC @ =gBattle_BG1_Y - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x80 - str r0, [sp] - movs r0, 0x12 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0x13 - bl HandleBattleWindow - ldr r1, _08026300 @ =gBattleScripting - movs r0, 0x4 - strb r0, [r1, 0x1E] - b _080263F6 - .align 2, 0 -_080262F8: .4byte gBattle_BG1_X -_080262FC: .4byte gBattle_BG1_Y -_08026300: .4byte gBattleScripting -_08026304: - bl DrawLevelUpWindow1 - movs r0, 0xC - bl PutWindowTilemap - movs r0, 0xC - movs r1, 0x3 - bl CopyWindowToVram - b _0802636E -_08026318: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080263F6 - ldr r0, _0802632C @ =gBattle_BG1_Y - strh r1, [r0] - b _0802636E - .align 2, 0 -_0802632C: .4byte gBattle_BG1_Y -_08026330: - ldr r0, _0802634C @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _080263F6 - movs r0, 0x5 - bl PlaySE - bl DrawLevelUpWindow2 - movs r0, 0xC - movs r1, 0x2 - bl CopyWindowToVram - b _0802636E - .align 2, 0 -_0802634C: .4byte gMain -_08026350: - ldr r0, _08026378 @ =gMain - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _080263F6 - movs r0, 0x5 - bl PlaySE - movs r0, 0x81 - str r0, [sp] - movs r0, 0x12 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0x13 - bl HandleBattleWindow -_0802636E: - ldr r1, _0802637C @ =gBattleScripting - ldrb r0, [r1, 0x1E] - adds r0, 0x1 - strb r0, [r1, 0x1E] - b _080263F6 - .align 2, 0 -_08026378: .4byte gMain -_0802637C: .4byte gBattleScripting -_08026380: - bl sub_8026648 - lsls r0, 24 - cmp r0, 0 - bne _080263F6 - movs r0, 0xD - bl ClearWindowTilemap - movs r0, 0xD - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0xC - bl ClearWindowTilemap - movs r0, 0xC - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0x2 - movs r1, 0x7 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x2 - bl ShowBg - ldr r1, _080263C0 @ =gBattleScripting - movs r0, 0xA - strb r0, [r1, 0x1E] - b _080263F6 - .align 2, 0 -_080263C0: .4byte gBattleScripting -_080263C4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _080263F6 - movs r0, 0 - movs r1, 0x7 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x1 - movs r1, 0x7 - movs r2, 0x1 - bl SetBgAttribute - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r1, _08026400 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_080263F6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08026400: .4byte gBattlescriptCurrInstr - thumb_func_end atk6C_drawlvlupbox - - thumb_func_start DrawLevelUpWindow1 -DrawLevelUpWindow1: @ 8026404 - push {lr} - sub sp, 0x14 - ldr r0, _0802643C @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08026440 @ =gPlayerParty - adds r0, r1 - add r1, sp, 0x8 - bl sub_811D130 - ldr r0, _08026444 @ =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x10] - movs r0, 0xD - str r0, [sp] - movs r0, 0xF - str r0, [sp, 0x4] - movs r0, 0xC - add r2, sp, 0x8 - movs r3, 0xE - bl sub_811E7F0 - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_0802643C: .4byte gBattleStruct -_08026440: .4byte gPlayerParty -_08026444: .4byte gBattleResources - thumb_func_end DrawLevelUpWindow1 - - thumb_func_start DrawLevelUpWindow2 -DrawLevelUpWindow2: @ 8026448 - push {lr} - sub sp, 0x10 - ldr r0, _08026478 @ =gBattleStruct - ldr r0, [r0] - ldrb r1, [r0, 0x10] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802647C @ =gPlayerParty - adds r0, r1 - add r1, sp, 0x4 - bl sub_811D130 - movs r0, 0xF - str r0, [sp] - movs r0, 0xC - add r1, sp, 0x4 - movs r2, 0xE - movs r3, 0xD - bl sub_811E93C - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_08026478: .4byte gBattleStruct -_0802647C: .4byte gPlayerParty - thumb_func_end DrawLevelUpWindow2 - - thumb_func_start sub_8026480 -sub_8026480: @ 8026480 - push {lr} - ldr r1, _080264C0 @ =gBattle_BG2_Y - movs r0, 0 - strh r0, [r1] - ldr r1, _080264C4 @ =gBattle_BG2_X - movs r2, 0xD0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080264C8 @ =gUnknown_82506D0 - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - ldr r1, _080264CC @ =gUnknown_82506F0 - movs r0, 0xD - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - movs r0, 0xD - bl PutWindowTilemap - movs r0, 0xD - movs r1, 0x3 - bl CopyWindowToVram - bl PutMonIconOnLvlUpBox - pop {r0} - bx r0 - .align 2, 0 -_080264C0: .4byte gBattle_BG2_Y -_080264C4: .4byte gBattle_BG2_X -_080264C8: .4byte gUnknown_82506D0 -_080264CC: .4byte gUnknown_82506F0 - thumb_func_end sub_8026480 - - thumb_func_start sub_80264D0 -sub_80264D0: @ 80264D0 - push {r4,r5,lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _080264E0 - movs r0, 0x1 - b _0802651A -_080264E0: - ldr r4, _080264F0 @ =gBattle_BG2_X - ldrh r1, [r4] - movs r5, 0x80 - lsls r5, 2 - cmp r1, r5 - bne _080264F4 - movs r0, 0 - b _0802651A - .align 2, 0 -_080264F0: .4byte gBattle_BG2_X -_080264F4: - movs r0, 0xD0 - lsls r0, 1 - cmp r1, r0 - bne _08026500 - bl PutLevelAndGenderOnLvlUpBox -_08026500: - ldrh r0, [r4] - adds r0, 0x8 - strh r0, [r4] - lsls r0, 16 - ldr r1, _08026520 @ =0x01ff0000 - cmp r0, r1 - bls _08026510 - strh r5, [r4] -_08026510: - ldrh r1, [r4] - eors r1, r5 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_0802651A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08026520: .4byte 0x01ff0000 - thumb_func_end sub_80264D0 - - thumb_func_start PutLevelAndGenderOnLvlUpBox -PutLevelAndGenderOnLvlUpBox: @ 8026524 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r6, _080265F8 @ =gBattleStruct - ldr r0, [r6] - ldrb r0, [r0, 0x10] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080265FC @ =gPlayerParty - adds r0, r4 - movs r1, 0x38 - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, [r6] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - bl GetMonGender - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r6] - ldrb r0, [r0, 0x10] - muls r0, r5 - adds r0, r4 - ldr r6, _08026600 @ =gStringVar4 - adds r1, r6, 0 - bl GetMonNickname - str r6, [sp] - mov r1, sp - movs r4, 0 - movs r0, 0xD - strb r0, [r1, 0x4] - mov r0, sp - strb r4, [r0, 0x5] - movs r5, 0x20 - strb r5, [r0, 0x6] - strb r4, [r0, 0x7] - strb r5, [r0, 0x8] - strb r4, [r0, 0x9] - strb r4, [r0, 0xA] - strb r4, [r0, 0xB] - mov r3, sp - ldrb r2, [r3, 0xC] - movs r1, 0x10 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0xC] - mov r2, sp - movs r0, 0x10 - strb r0, [r2, 0xC] - ldrb r0, [r2, 0xD] - ands r1, r0 - strb r1, [r2, 0xD] - mov r0, sp - strb r5, [r0, 0xD] - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter - movs r0, 0xF9 - strb r0, [r6] - adds r6, 0x1 - movs r0, 0x5 - strb r0, [r6] - adds r6, 0x1 - strb r4, [r6] - adds r6, 0x1 - adds r4, r6, 0 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r6, r0, 0 - movs r1, 0 - movs r2, 0x5 - bl StringFill - adds r6, r4, 0x4 - cmp r7, 0xFF - beq _08026624 - cmp r7, 0 - bne _08026604 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0xC - bl WriteColorChangeControlCode - adds r6, r0, 0 - movs r1, 0x1 - movs r2, 0xD - bl WriteColorChangeControlCode - adds r6, r0, 0 - movs r0, 0xB5 - b _0802661C - .align 2, 0 -_080265F8: .4byte gBattleStruct -_080265FC: .4byte gPlayerParty -_08026600: .4byte gStringVar4 -_08026604: - adds r0, r6, 0 - movs r1, 0 - movs r2, 0xE - bl WriteColorChangeControlCode - adds r6, r0, 0 - movs r1, 0x1 - movs r2, 0xF - bl WriteColorChangeControlCode - adds r6, r0, 0 - movs r0, 0xB6 -_0802661C: - strb r0, [r6] - adds r6, 0x1 - movs r0, 0xFF - strb r0, [r6] -_08026624: - mov r0, sp - movs r1, 0xA - strb r1, [r0, 0x7] - strb r1, [r0, 0x9] - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter - movs r0, 0xD - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PutLevelAndGenderOnLvlUpBox - - thumb_func_start sub_8026648 -sub_8026648: @ 8026648 - push {lr} - ldr r0, _0802665C @ =gBattle_BG2_X - ldrh r1, [r0] - movs r3, 0xD0 - lsls r3, 1 - adds r2, r0, 0 - cmp r1, r3 - bne _08026660 - movs r0, 0 - b _08026684 - .align 2, 0 -_0802665C: .4byte gBattle_BG2_X -_08026660: - ldrh r0, [r2] - adds r1, r0, 0 - subs r1, 0x10 - ldr r0, _08026670 @ =0x0000019f - cmp r1, r0 - bgt _08026674 - strh r3, [r2] - b _08026676 - .align 2, 0 -_08026670: .4byte 0x0000019f -_08026674: - strh r1, [r2] -_08026676: - ldrh r1, [r2] - movs r0, 0xD0 - lsls r0, 1 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_08026684: - pop {r1} - bx r1 - thumb_func_end sub_8026648 - - thumb_func_start PutMonIconOnLvlUpBox -PutMonIconOnLvlUpBox: @ 8026688 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - ldr r0, _08026730 @ =gBattleStruct - mov r8, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x10] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08026734 @ =gPlayerParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1 - bl GetMonIconPtr - str r0, [sp] - ldr r5, _08026738 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r5 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - ldr r1, _0802673C @ =0x0000ffff - ands r0, r1 - ldr r1, _08026740 @ =0xd75a0000 - orrs r0, r1 - str r0, [sp, 0x4] - adds r0, r4, 0 - bl GetValidMonIconPalettePtr - str r0, [sp, 0x8] - add r4, sp, 0x8 - ldr r0, [r4, 0x4] - ands r0, r5 - ldr r1, _08026744 @ =0x0000d75a - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - ldr r0, _08026748 @ =sSpriteTemplate_MonIconOnLvlUpBox - movs r1, 0x80 - lsls r1, 1 - movs r2, 0xA - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0802674C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _08026750 @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r1, 0x30] - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08026730: .4byte gBattleStruct -_08026734: .4byte gPlayerParty -_08026738: .4byte 0xffff0000 -_0802673C: .4byte 0x0000ffff -_08026740: .4byte 0xd75a0000 -_08026744: .4byte 0x0000d75a -_08026748: .4byte sSpriteTemplate_MonIconOnLvlUpBox -_0802674C: .4byte gSprites -_08026750: .4byte gBattle_BG2_X - thumb_func_end PutMonIconOnLvlUpBox - - thumb_func_start SpriteCB_MonIconOnLvlUpBox -SpriteCB_MonIconOnLvlUpBox: @ 8026754 - push {r4,lr} - adds r2, r0, 0 - ldr r0, _08026770 @ =gBattle_BG2_X - ldrh r1, [r2, 0x30] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x24] - lsls r1, 16 - cmp r1, 0 - beq _08026774 - movs r0, 0x1 - strh r0, [r2, 0x2E] - b _08026790 - .align 2, 0 -_08026770: .4byte gBattle_BG2_X -_08026774: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _08026790 - adds r0, r2, 0 - bl DestroySprite - ldr r4, _08026798 @ =0x0000d75a - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_08026790: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08026798: .4byte 0x0000d75a - thumb_func_end SpriteCB_MonIconOnLvlUpBox - - thumb_func_start IsMonGettingExpSentOut -IsMonGettingExpSentOut: @ 802679C - push {lr} - ldr r3, _080267C4 @ =gBattlerPartyIndexes - ldr r0, _080267C8 @ =gBattleStruct - ldr r0, [r0] - ldrh r1, [r3] - ldrb r2, [r0, 0x10] - cmp r1, r2 - beq _080267BE - ldr r0, _080267CC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080267D0 - ldrh r0, [r3, 0x4] - cmp r0, r2 - bne _080267D0 -_080267BE: - movs r0, 0x1 - b _080267D2 - .align 2, 0 -_080267C4: .4byte gBattlerPartyIndexes -_080267C8: .4byte gBattleStruct -_080267CC: .4byte gBattleTypeFlags -_080267D0: - movs r0, 0 -_080267D2: - pop {r1} - bx r1 - thumb_func_end IsMonGettingExpSentOut - - thumb_func_start atk6D_resetsentmonsvalue -atk6D_resetsentmonsvalue: @ 80267D8 - push {lr} - bl ResetSentPokesToOpponentValue - ldr r1, _080267EC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080267EC: .4byte gBattlescriptCurrInstr - thumb_func_end atk6D_resetsentmonsvalue - - thumb_func_start atk6E_setatktoplayer0 -atk6E_setatktoplayer0: @ 80267F0 - push {lr} - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _08026808 @ =gBattlerAttacker - strb r0, [r1] - ldr r1, _0802680C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08026808: .4byte gBattlerAttacker -_0802680C: .4byte gBattlescriptCurrInstr - thumb_func_end atk6E_setatktoplayer0 - - thumb_func_start atk6F_makevisible -atk6F_makevisible: @ 8026810 - push {r4,r5,lr} - ldr r5, _0802683C @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _08026840 @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitSpriteInvisibility - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802683C: .4byte gBattlescriptCurrInstr -_08026840: .4byte gActiveBattler - thumb_func_end atk6F_makevisible - - thumb_func_start atk70_recordlastability -atk70_recordlastability: @ 8026844 - push {r4,lr} - ldr r4, _0802686C @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _08026870 @ =gActiveBattler - strb r0, [r1] - ldrb r0, [r1] - ldr r1, _08026874 @ =gLastUsedAbility - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802686C: .4byte gBattlescriptCurrInstr -_08026870: .4byte gActiveBattler -_08026874: .4byte gLastUsedAbility - thumb_func_end atk70_recordlastability - - thumb_func_start BufferMoveToLearnIntoBattleTextBuff2 -BufferMoveToLearnIntoBattleTextBuff2: @ 8026878 - ldr r2, _08026898 @ =gBattleTextBuff2 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x2 - strb r0, [r2, 0x1] - ldr r0, _0802689C @ =gMoveToLearn - ldrh r1, [r0] - strb r1, [r2, 0x2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - bx lr - .align 2, 0 -_08026898: .4byte gBattleTextBuff2 -_0802689C: .4byte gMoveToLearn - thumb_func_end BufferMoveToLearnIntoBattleTextBuff2 - - thumb_func_start atk71_buffermovetolearn -atk71_buffermovetolearn: @ 80268A0 - push {lr} - bl BufferMoveToLearnIntoBattleTextBuff2 - ldr r1, _080268B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080268B4: .4byte gBattlescriptCurrInstr - thumb_func_end atk71_buffermovetolearn - - thumb_func_start atk72_jumpifplayerran -atk72_jumpifplayerran: @ 80268B8 - push {lr} - ldr r0, _080268E4 @ =gBattlerFainted - ldrb r0, [r0] - bl TryRunFromBattle - lsls r0, 24 - cmp r0, 0 - beq _080268EC - ldr r3, _080268E8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080268F4 - .align 2, 0 -_080268E4: .4byte gBattlerFainted -_080268E8: .4byte gBattlescriptCurrInstr -_080268EC: - ldr r1, _080268F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080268F4: - pop {r0} - bx r0 - .align 2, 0 -_080268F8: .4byte gBattlescriptCurrInstr - thumb_func_end atk72_jumpifplayerran - - thumb_func_start atk73_hpthresholds -atk73_hpthresholds: @ 80268FC - push {r4-r6,lr} - ldr r0, _0802694C @ =gBattleTypeFlags - ldr r4, [r0] - movs r6, 0x1 - ands r4, r6 - cmp r4, 0 - bne _08026992 - ldr r0, _08026950 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _08026954 @ =gActiveBattler - strb r0, [r1] - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08026958 @ =gBattleMons - movs r1, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r5, [r1, 0x28] - movs r0, 0x64 - muls r0, r5 - ldrh r1, [r1, 0x2C] - bl __divsi3 - cmp r0, 0 - bne _0802693A - movs r0, 0x1 -_0802693A: - cmp r0, 0x45 - bgt _08026942 - cmp r5, 0 - bne _08026960 -_08026942: - ldr r0, _0802695C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - strb r4, [r0] - b _08026992 - .align 2, 0 -_0802694C: .4byte gBattleTypeFlags -_08026950: .4byte gBattlescriptCurrInstr -_08026954: .4byte gActiveBattler -_08026958: .4byte gBattleMons -_0802695C: .4byte gBattleStruct -_08026960: - cmp r0, 0x27 - ble _08026974 - ldr r0, _08026970 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - strb r6, [r0] - b _08026992 - .align 2, 0 -_08026970: .4byte gBattleStruct -_08026974: - cmp r0, 0x9 - ble _08026988 - ldr r0, _08026984 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - movs r1, 0x2 - b _08026990 - .align 2, 0 -_08026984: .4byte gBattleStruct -_08026988: - ldr r0, _080269A0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xAD - movs r1, 0x3 -_08026990: - strb r1, [r0] -_08026992: - ldr r1, _080269A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080269A0: .4byte gBattleStruct -_080269A4: .4byte gBattlescriptCurrInstr - thumb_func_end atk73_hpthresholds - - thumb_func_start atk74_hpthresholds2 -atk74_hpthresholds2: @ 80269A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08026A0C @ =gBattleTypeFlags - ldr r7, [r0] - movs r0, 0x1 - mov r8, r0 - ands r7, r0 - cmp r7, 0 - bne _08026A42 - ldr r0, _08026A10 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - adds r4, r0, 0 - ldr r0, _08026A14 @ =gActiveBattler - strb r4, [r0] - movs r0, 0x1 - eors r4, r0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - ldr r1, _08026A18 @ =gBattleStruct - ldr r6, [r1] - lsrs r0, 23 - adds r0, r6 - adds r0, 0xA8 - ldrb r5, [r0] - ldr r1, _08026A1C @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r0, r1 - ldrh r4, [r0, 0x28] - subs r1, r5, r4 - movs r0, 0x64 - muls r0, r1 - adds r1, r5, 0 - bl __divsi3 - adds r1, r0, 0 - cmp r4, r5 - bcc _08026A20 - adds r0, r6, 0 - adds r0, 0xAD - strb r7, [r0] - b _08026A42 - .align 2, 0 -_08026A0C: .4byte gBattleTypeFlags -_08026A10: .4byte gBattlescriptCurrInstr -_08026A14: .4byte gActiveBattler -_08026A18: .4byte gBattleStruct -_08026A1C: .4byte gBattleMons -_08026A20: - cmp r0, 0x1D - bgt _08026A2E - adds r0, r6, 0 - adds r0, 0xAD - mov r1, r8 - strb r1, [r0] - b _08026A42 -_08026A2E: - cmp r1, 0x45 - bgt _08026A3A - adds r1, r6, 0 - adds r1, 0xAD - movs r0, 0x2 - b _08026A40 -_08026A3A: - adds r1, r6, 0 - adds r1, 0xAD - movs r0, 0x3 -_08026A40: - strb r0, [r1] -_08026A42: - ldr r1, _08026A54 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08026A54: .4byte gBattlescriptCurrInstr - thumb_func_end atk74_hpthresholds2 - - thumb_func_start atk75_useitemonopponent -atk75_useitemonopponent: @ 8026A58 - push {lr} - sub sp, 0x4 - ldr r2, _08026A98 @ =gBattlerInMenuId - ldr r1, _08026A9C @ =gBattlerAttacker - ldrb r0, [r1] - strb r0, [r2] - ldr r2, _08026AA0 @ =gBattlerPartyIndexes - ldrb r0, [r1] - lsls r0, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r1, _08026AA4 @ =gEnemyParty - adds r0, r1 - ldr r1, _08026AA8 @ =gLastUsedItem - ldrh r1, [r1] - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - str r3, [sp] - movs r3, 0 - bl PokemonUseItemEffects - ldr r1, _08026AAC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08026A98: .4byte gBattlerInMenuId -_08026A9C: .4byte gBattlerAttacker -_08026AA0: .4byte gBattlerPartyIndexes -_08026AA4: .4byte gEnemyParty -_08026AA8: .4byte gLastUsedItem -_08026AAC: .4byte gBattlescriptCurrInstr - thumb_func_end atk75_useitemonopponent - - thumb_func_start atk76_various -atk76_various: @ 8026AB0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - ldr r4, _08026ADC @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _08026AE0 @ =gActiveBattler - strb r0, [r1] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0xC - bls _08026AD2 - b _08026F4E -_08026AD2: - lsls r0, 2 - ldr r1, _08026AE4 @ =_08026AE8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08026ADC: .4byte gBattlescriptCurrInstr -_08026AE0: .4byte gActiveBattler -_08026AE4: .4byte _08026AE8 - .align 2, 0 -_08026AE8: - .4byte _08026B1C - .4byte _08026B2C - .4byte _08026B8C - .4byte _08026B9C - .4byte _08026BB4 - .4byte _08026BF0 - .4byte _08026C28 - .4byte _08026CB4 - .4byte _08026CF4 - .4byte _08026D50 - .4byte _08026D64 - .4byte _08026DA0 - .4byte _08026F44 -_08026B1C: - ldr r0, _08026B28 @ =gActiveBattler - ldrb r0, [r0] - bl CancelMultiTurnMoves - b _08026F4E - .align 2, 0 -_08026B28: .4byte gActiveBattler -_08026B2C: - ldr r1, _08026B68 @ =gBattlerAttacker - ldr r4, _08026B6C @ =gBattlerTarget - ldrb r0, [r4] - strb r0, [r1] - ldrb r0, [r1] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08026B70 @ =gSideTimers - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r2 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _08026B78 - ldr r1, _08026B74 @ =gBattleMons - ldrb r2, [r2, 0x9] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08026B78 - strb r2, [r4] - b _08026F4E - .align 2, 0 -_08026B68: .4byte gBattlerAttacker -_08026B6C: .4byte gBattlerTarget -_08026B70: .4byte gSideTimers -_08026B74: .4byte gBattleMons -_08026B78: - ldr r0, _08026B84 @ =gBattlerTarget - ldr r1, _08026B88 @ =gActiveBattler - ldrb r1, [r1] - strb r1, [r0] - b _08026F4E - .align 2, 0 -_08026B84: .4byte gBattlerTarget -_08026B88: .4byte gActiveBattler -_08026B8C: - bl IsRunningFromBattleImpossible - ldr r1, _08026B98 @ =gBattleCommunication - strb r0, [r1] - b _08026F4E - .align 2, 0 -_08026B98: .4byte gBattleCommunication -_08026B9C: - ldr r0, _08026BAC @ =gCurrentMove - ldrh r0, [r0] - movs r1, 0 - bl GetMoveTarget - ldr r1, _08026BB0 @ =gBattlerTarget - strb r0, [r1] - b _08026F4E - .align 2, 0 -_08026BAC: .4byte gCurrentMove -_08026BB0: .4byte gBattlerTarget -_08026BB4: - ldr r2, _08026BD4 @ =gHitMarker - ldr r1, _08026BD8 @ =gBitTable - ldr r0, _08026BDC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 28 - ldr r2, [r2] - ands r2, r0 - cmp r2, 0 - beq _08026BE4 - ldr r1, _08026BE0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1] - b _08026F4E - .align 2, 0 -_08026BD4: .4byte gHitMarker -_08026BD8: .4byte gBitTable -_08026BDC: .4byte gActiveBattler -_08026BE0: .4byte gBattleCommunication -_08026BE4: - ldr r0, _08026BEC @ =gBattleCommunication - strb r2, [r0] - b _08026F4E - .align 2, 0 -_08026BEC: .4byte gBattleCommunication -_08026BF0: - ldr r4, _08026C20 @ =gSpecialStatuses - ldr r3, _08026C24 @ =gActiveBattler - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _08026F4E - .align 2, 0 -_08026C20: .4byte gSpecialStatuses -_08026C24: .4byte gActiveBattler -_08026C28: - ldr r4, _08026C4C @ =gBattlerPartyIndexes - ldr r1, _08026C50 @ =gBattleStruct - ldr r0, [r1] - ldrh r3, [r4] - ldrb r2, [r0, 0x10] - adds r5, r1, 0 - cmp r3, r2 - beq _08026C44 - ldrh r0, [r4, 0x4] - cmp r0, r2 - beq _08026C40 - b _08026F4E -_08026C40: - cmp r3, r0 - bne _08026C58 -_08026C44: - ldr r1, _08026C54 @ =gActiveBattler - movs r0, 0 - b _08026C5C - .align 2, 0 -_08026C4C: .4byte gBattlerPartyIndexes -_08026C50: .4byte gBattleStruct -_08026C54: .4byte gActiveBattler -_08026C58: - ldr r1, _08026CAC @ =gActiveBattler - movs r0, 0x2 -_08026C5C: - strb r0, [r1] - mov r8, r1 - mov r0, r8 - ldrb r2, [r0] - lsls r0, r2, 1 - adds r0, 0xC8 - ldr r1, [r5] - adds r3, r1, r0 - movs r7, 0 - ldr r1, _08026CB0 @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r2, [r3] - cmp r0, r2 - beq _08026C9E - mov r5, r8 - movs r4, 0x58 - adds r2, r1, 0 -_08026C86: - adds r7, 0x1 - cmp r7, 0x3 - bgt _08026C9E - lsls r1, r7, 1 - ldrb r0, [r5] - muls r0, r4 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - ldrh r1, [r3] - cmp r0, r1 - bne _08026C86 -_08026C9E: - cmp r7, 0x4 - beq _08026CA4 - b _08026F4E -_08026CA4: - movs r0, 0 - strh r0, [r3] - b _08026F4E - .align 2, 0 -_08026CAC: .4byte gActiveBattler -_08026CB0: .4byte gBattleMons -_08026CB4: - ldr r0, _08026CE4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xB - ands r0, r1 - cmp r0, 0x8 - beq _08026CC2 - b _08026F4E -_08026CC2: - ldr r1, _08026CE8 @ =gBattleMons - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08026CCC - b _08026F4E -_08026CCC: - adds r0, r1, 0 - adds r0, 0x80 - ldrh r0, [r0] - cmp r0, 0 - bne _08026CD8 - b _08026F4E -_08026CD8: - ldr r0, _08026CEC @ =gHitMarker - ldr r1, [r0] - ldr r2, _08026CF0 @ =0xffbfffff - ands r1, r2 - str r1, [r0] - b _08026F4E - .align 2, 0 -_08026CE4: .4byte gBattleTypeFlags -_08026CE8: .4byte gBattleMons -_08026CEC: .4byte gHitMarker -_08026CF0: .4byte 0xffbfffff -_08026CF4: - movs r7, 0 - ldr r2, _08026D3C @ =gBattleCommunication - strb r7, [r2, 0x5] - ldr r1, _08026D40 @ =gActiveBattler - movs r0, 0x1 - strb r0, [r1] - mov r8, r1 - ldr r0, _08026D44 @ =gBattlersCount - mov r4, r8 - ldrb r5, [r0] - ldr r6, _08026D48 @ =gBattleMons - ldr r3, _08026D4C @ =gBitTable -_08026D0C: - ldrb r0, [r4] - cmp r0, r5 - bcs _08026D2A - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08026D2A - ldr r0, [r3] - ldrb r1, [r2, 0x5] - orrs r0, r1 - strb r0, [r2, 0x5] -_08026D2A: - adds r3, 0x4 - ldrb r0, [r4] - adds r0, 0x2 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08026D0C - b _08026F4E - .align 2, 0 -_08026D3C: .4byte gBattleCommunication -_08026D40: .4byte gActiveBattler -_08026D44: .4byte gBattlersCount -_08026D48: .4byte gBattleMons -_08026D4C: .4byte gBitTable -_08026D50: - ldr r4, _08026D5C @ =gActiveBattler - movs r0, 0x1 - strb r0, [r4] - ldr r0, _08026D60 @ =gBattleMons - adds r0, 0x58 - b _08026D7C - .align 2, 0 -_08026D5C: .4byte gActiveBattler -_08026D60: .4byte gBattleMons -_08026D64: - ldr r0, _08026D94 @ =gBattlersCount - ldrb r0, [r0] - cmp r0, 0x3 - bhi _08026D6E - b _08026F4E -_08026D6E: - ldr r4, _08026D98 @ =gActiveBattler - movs r0, 0x3 - strb r0, [r4] - ldr r0, _08026D9C @ =gBattleMons - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 -_08026D7C: - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08026D84 - b _08026F4E -_08026D84: - movs r0, 0 - movs r1, 0 - bl BtlController_EmitReturnMonToBall - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _08026F4E - .align 2, 0 -_08026D94: .4byte gBattlersCount -_08026D98: .4byte gActiveBattler -_08026D9C: .4byte gBattleMons -_08026DA0: - ldr r0, _08026F28 @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x5] - mov r8, r1 - movs r7, 0 - ldr r0, _08026F2C @ =gBattlersCount - mov r12, r0 - ldrb r2, [r0] - cmp r8, r2 - bge _08026DEE - ldr r4, _08026F30 @ =gBattleMons - adds r3, r4, 0 - adds r3, 0x50 - adds r6, r4, 0 - adds r6, 0x20 - movs r5, 0 -_08026DC0: - ldrb r0, [r6] - cmp r0, 0x2B - beq _08026DDE - adds r2, r4, 0 - adds r2, 0x4C - adds r2, r5, r2 - ldr r0, [r2] - movs r1, 0x8 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldr r0, [r3] - ldr r1, _08026F34 @ =0xf7ffffff - ands r0, r1 - str r0, [r3] -_08026DDE: - adds r3, 0x58 - adds r6, 0x58 - adds r5, 0x58 - adds r7, 0x1 - mov r0, r12 - ldrb r0, [r0] - cmp r7, r0 - blt _08026DC0 -_08026DEE: - movs r7, 0 - movs r1, 0xCE - lsls r1, 1 - mov r9, r1 -_08026DF6: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _08026F38 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - str r1, [sp, 0x4] - cmp r5, 0 - beq _08026E4E - cmp r5, r9 - beq _08026E4E - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08026E4E - adds r0, r5, 0 - adds r1, r6, 0 - bl GetAbilityBySpecies - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2B - beq _08026E4E - movs r0, 0x1 - lsls r0, r7 - mov r2, r8 - orrs r2, r0 - mov r8, r2 -_08026E4E: - adds r7, 0x1 - cmp r7, 0x5 - ble _08026DF6 - mov r0, r8 - cmp r0, 0 - beq _08026E88 - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _08026F3C @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - str r0, [sp, 0x4] - mov r1, r8 - lsls r2, r1, 24 - lsrs r2, 24 - add r0, sp, 0x4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _08026F28 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_08026E88: - movs r1, 0 - mov r8, r1 - movs r7, 0 - movs r2, 0xCE - lsls r2, 1 - mov r9, r2 -_08026E94: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _08026F40 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - str r1, [sp, 0x4] - cmp r5, 0 - beq _08026EEC - cmp r5, r9 - beq _08026EEC - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08026EEC - adds r0, r5, 0 - adds r1, r6, 0 - bl GetAbilityBySpecies - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2B - beq _08026EEC - movs r0, 0x1 - lsls r0, r7 - mov r1, r8 - orrs r1, r0 - mov r8, r1 -_08026EEC: - adds r7, 0x1 - cmp r7, 0x5 - ble _08026E94 - mov r2, r8 - cmp r2, 0 - beq _08026F4E - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r4, _08026F3C @ =gActiveBattler - strb r0, [r4] - movs r0, 0 - str r0, [sp, 0x4] - mov r0, r8 - lsls r2, r0, 24 - lsrs r2, 24 - add r1, sp, 0x4 - str r1, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _08026F28 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08026F4E - .align 2, 0 -_08026F28: .4byte gBattleCommunication -_08026F2C: .4byte gBattlersCount -_08026F30: .4byte gBattleMons -_08026F34: .4byte 0xf7ffffff -_08026F38: .4byte gPlayerParty -_08026F3C: .4byte gActiveBattler -_08026F40: .4byte gEnemyParty -_08026F44: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08026F56 -_08026F4E: - ldr r1, _08026F64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x3 - str r0, [r1] -_08026F56: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08026F64: .4byte gBattlescriptCurrInstr - thumb_func_end atk76_various - - thumb_func_start atk77_setprotectlike -atk77_setprotectlike: @ 8026F68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0x1 - ldr r2, _08027034 @ =gLastResultingMoves - ldr r1, _08027038 @ =gBattlerAttacker - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - mov r8, r1 - ldr r7, _0802703C @ =gDisableStructs - cmp r0, 0xB6 - beq _08026F98 - cmp r0, 0xC5 - beq _08026F98 - cmp r0, 0xCB - beq _08026F98 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strb r1, [r0, 0x8] -_08026F98: - ldr r0, _08027040 @ =gCurrentTurnActionNumber - ldrb r1, [r0] - ldr r0, _08027044 @ =gBattlersCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _08026FA8 - movs r6, 0 -_08026FA8: - ldr r2, _08027048 @ =sProtectSuccessRates - mov r5, r8 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r4, [r0, 0x8] - lsls r4, 1 - adds r4, r2 - bl Random - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bcc _0802705C - cmp r6, 0 - beq _0802705C - ldr r4, _0802704C @ =gBattleMoves - ldr r3, _08027050 @ =gCurrentMove - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x6F - bne _08026FF8 - ldr r0, _08027054 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08027058 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_08026FF8: - ldrh r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - cmp r0, 0x74 - bne _0802701E - ldr r0, _08027054 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08027058 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_0802701E: - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - b _0802707E - .align 2, 0 -_08027034: .4byte gLastResultingMoves -_08027038: .4byte gBattlerAttacker -_0802703C: .4byte gDisableStructs -_08027040: .4byte gCurrentTurnActionNumber -_08027044: .4byte gBattlersCount -_08027048: .4byte sProtectSuccessRates -_0802704C: .4byte gBattleMoves -_08027050: .4byte gCurrentMove -_08027054: .4byte gProtectStructs -_08027058: .4byte gBattleCommunication -_0802705C: - ldr r2, _08027090 @ =gDisableStructs - ldr r0, _08027094 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x8] - ldr r1, _08027098 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - ldr r2, _0802709C @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_0802707E: - ldr r1, _080270A0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027090: .4byte gDisableStructs -_08027094: .4byte gBattlerAttacker -_08027098: .4byte gBattleCommunication -_0802709C: .4byte gMoveResultFlags -_080270A0: .4byte gBattlescriptCurrInstr - thumb_func_end atk77_setprotectlike - - thumb_func_start atk78_faintifabilitynotdamp -atk78_faintifabilitynotdamp: @ 80270A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08027160 @ =gBattleControllerExecFlags - ldr r2, [r0] - cmp r2, 0 - bne _080271A8 - ldr r1, _08027164 @ =gBattlerTarget - strb r2, [r1] - ldr r0, _08027168 @ =gBattlersCount - ldrb r3, [r0] - adds r5, r1, 0 - mov r8, r0 - ldr r6, _0802716C @ =gBattleMons - cmp r2, r3 - bcs _080270F0 - adds r0, r6, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080270F0 - adds r2, r3, 0 - adds r4, r6, 0 - movs r3, 0x58 -_080270D4: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r2 - bcs _080270F0 - ldrb r0, [r5] - muls r0, r3 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x6 - bne _080270D4 -_080270F0: - ldrb r0, [r5] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bne _0802718C - ldr r4, _08027170 @ =gActiveBattler - ldr r7, _08027174 @ =gBattlerAttacker - ldrb r0, [r7] - strb r0, [r4] - ldr r2, _08027178 @ =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r6 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, _0802717C @ =0x00007fff - movs r0, 0 - bl BtlController_EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _08027180 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0 - strb r0, [r5] - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0 - beq _080271A8 - adds r3, r5, 0 - ldrb r5, [r7] - ldr r7, _08027184 @ =gBitTable - adds r4, r0, 0 - ldr r6, _08027188 @ =gAbsentBattlerFlags -_0802713C: - ldrb r2, [r3] - cmp r2, r5 - beq _08027152 - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r7 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _080271A8 -_08027152: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _0802713C - b _080271A8 - .align 2, 0 -_08027160: .4byte gBattleControllerExecFlags -_08027164: .4byte gBattlerTarget -_08027168: .4byte gBattlersCount -_0802716C: .4byte gBattleMons -_08027170: .4byte gActiveBattler -_08027174: .4byte gBattlerAttacker -_08027178: .4byte gBattleMoveDamage -_0802717C: .4byte 0x00007fff -_08027180: .4byte gBattlescriptCurrInstr -_08027184: .4byte gBitTable -_08027188: .4byte gAbsentBattlerFlags -_0802718C: - ldr r1, _080271B4 @ =gLastUsedAbility - movs r0, 0x6 - strb r0, [r1] - ldrb r0, [r5] - movs r1, 0x58 - muls r1, r0 - adds r1, r6 - adds r1, 0x20 - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r1, _080271B8 @ =gBattlescriptCurrInstr - ldr r0, _080271BC @ =BattleScript_DampStopsExplosion - str r0, [r1] -_080271A8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080271B4: .4byte gLastUsedAbility -_080271B8: .4byte gBattlescriptCurrInstr -_080271BC: .4byte BattleScript_DampStopsExplosion - thumb_func_end atk78_faintifabilitynotdamp - - thumb_func_start atk79_setatkhptozero -atk79_setatkhptozero: @ 80271C0 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0802720C @ =gBattleControllerExecFlags - ldr r3, [r0] - cmp r3, 0 - bne _08027204 - ldr r4, _08027210 @ =gActiveBattler - ldr r0, _08027214 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r1, _08027218 @ =gBattleMons - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r1 - strh r3, [r0, 0x28] - ldrb r0, [r4] - muls r0, r2 - adds r1, 0x28 - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2A - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _0802721C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08027204: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802720C: .4byte gBattleControllerExecFlags -_08027210: .4byte gActiveBattler -_08027214: .4byte gBattlerAttacker -_08027218: .4byte gBattleMons -_0802721C: .4byte gBattlescriptCurrInstr - thumb_func_end atk79_setatkhptozero - - thumb_func_start atk7A_jumpifnexttargetvalid -atk7A_jumpifnexttargetvalid: @ 8027220 - push {r4-r7,lr} - ldr r3, _08027298 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r4, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r0, _0802729C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - adds r7, r3, 0 - cmp r0, 0 - beq _080272B8 - ldr r0, _080272A0 @ =gBattlerTarget - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, _080272A4 @ =gBattlerAttacker - lsls r1, 24 - lsrs r1, 24 - adds r3, r0, 0 - ldr r6, _080272A8 @ =gAbsentBattlerFlags - ldr r5, _080272AC @ =gBitTable - ldr r0, _080272B0 @ =gBattlersCount - mov r12, r0 - ldrb r0, [r2] - cmp r1, r0 - bne _08027276 -_08027266: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r2] - cmp r0, r1 - beq _08027266 -_08027276: - ldrb r0, [r6] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08027266 - ldrb r0, [r3] - mov r2, r12 - ldrb r2, [r2] - cmp r0, r2 - bcc _080272B4 - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - b _080272BC - .align 2, 0 -_08027298: .4byte gBattlescriptCurrInstr -_0802729C: .4byte gBattleTypeFlags -_080272A0: .4byte gBattlerTarget -_080272A4: .4byte gBattlerAttacker -_080272A8: .4byte gAbsentBattlerFlags -_080272AC: .4byte gBitTable -_080272B0: .4byte gBattlersCount -_080272B4: - str r4, [r7] - b _080272BC -_080272B8: - adds r0, r2, 0x5 - str r0, [r3] -_080272BC: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk7A_jumpifnexttargetvalid - - thumb_func_start atk7B_tryhealhalfhealth -atk7B_tryhealhalfhealth: @ 80272C4 - push {r4-r6,lr} - ldr r4, _08027320 @ =gBattlescriptCurrInstr - ldr r1, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldrb r0, [r1, 0x5] - ldr r3, _08027324 @ =gBattlerTarget - cmp r0, 0x1 - bne _080272EC - ldr r0, _08027328 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r3] -_080272EC: - ldr r1, _0802732C @ =gBattleMoveDamage - ldr r6, _08027330 @ =gBattleMons - ldrb r0, [r3] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _08027306 - movs r0, 0x1 - str r0, [r1] -_08027306: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r3] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _08027334 - str r2, [r4] - b _0802733A - .align 2, 0 -_08027320: .4byte gBattlescriptCurrInstr -_08027324: .4byte gBattlerTarget -_08027328: .4byte gBattlerAttacker -_0802732C: .4byte gBattleMoveDamage -_08027330: .4byte gBattleMons -_08027334: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0802733A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk7B_tryhealhalfhealth - - thumb_func_start atk7C_trymirrormove -atk7C_trymirrormove: @ 8027340 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r2, _080273E0 @ =gBattlersCount - ldr r0, _080273E4 @ =gBattleStruct - mov r10, r0 - movs r1, 0 - add r0, sp, 0x4 -_08027356: - strh r1, [r0] - subs r0, 0x2 - cmp r0, sp - bge _08027356 - movs r1, 0 - mov r8, r1 - movs r5, 0 - ldrb r1, [r2] - cmp r5, r1 - bge _080273AC - ldr r0, _080273E8 @ =gBattlerAttacker - ldrb r6, [r0] - ldr r2, _080273EC @ =0x0000ffff - mov r9, r2 - lsls r4, r6, 3 - mov r2, sp - ldr r0, _080273E4 @ =gBattleStruct - mov r12, r0 - adds r7, r1, 0 -_0802737C: - cmp r5, r6 - beq _080273A4 - mov r1, r12 - ldr r0, [r1] - adds r0, r4, r0 - adds r1, r0, 0 - adds r1, 0xE0 - ldrb r3, [r1] - adds r0, 0xE1 - ldrb r0, [r0] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - beq _080273A4 - cmp r3, r9 - beq _080273A4 - strh r3, [r2] - adds r2, 0x2 - movs r0, 0x1 - add r8, r0 -_080273A4: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, r7 - blt _0802737C -_080273AC: - ldr r1, _080273E8 @ =gBattlerAttacker - ldrb r0, [r1] - mov r2, r10 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r1, r0, 0 - adds r1, 0x98 - ldrb r3, [r1] - adds r0, 0x99 - ldrb r0, [r0] - lsls r0, 8 - orrs r3, r0 - cmp r3, 0 - beq _080273FC - ldr r0, _080273EC @ =0x0000ffff - cmp r3, r0 - beq _080273FC - ldr r2, _080273F0 @ =gHitMarker - ldr r0, [r2] - ldr r1, _080273F4 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _080273F8 @ =gCurrentMove - strh r3, [r4] - b _08027426 - .align 2, 0 -_080273E0: .4byte gBattlersCount -_080273E4: .4byte gBattleStruct -_080273E8: .4byte gBattlerAttacker -_080273EC: .4byte 0x0000ffff -_080273F0: .4byte gHitMarker -_080273F4: .4byte 0xfffffbff -_080273F8: .4byte gCurrentMove -_080273FC: - mov r0, r8 - cmp r0, 0 - beq _0802746C - ldr r2, _08027450 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08027454 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - bl __modsi3 - adds r5, r0, 0 - ldr r4, _08027458 @ =gCurrentMove - lsls r0, r5, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4] -_08027426: - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _0802745C @ =gBattlerTarget - strb r0, [r1] - ldr r5, _08027460 @ =gBattlescriptCurrInstr - ldr r3, _08027464 @ =gBattleScriptsForMoveEffects - ldr r2, _08027468 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - str r0, [r5] - b _0802748A - .align 2, 0 -_08027450: .4byte gHitMarker -_08027454: .4byte 0xfffffbff -_08027458: .4byte gCurrentMove -_0802745C: .4byte gBattlerTarget -_08027460: .4byte gBattlescriptCurrInstr -_08027464: .4byte gBattleScriptsForMoveEffects -_08027468: .4byte gBattleMoves -_0802746C: - ldr r2, _0802749C @ =gSpecialStatuses - ldr r0, _080274A0 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r1, _080274A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0802748A: - 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 -_0802749C: .4byte gSpecialStatuses -_080274A0: .4byte gBattlerAttacker -_080274A4: .4byte gBattlescriptCurrInstr - thumb_func_end atk7C_trymirrormove - - thumb_func_start atk7D_setrain -atk7D_setrain: @ 80274A8 - push {lr} - ldr r2, _080274C8 @ =gBattleWeather - ldrh r0, [r2] - movs r1, 0x7 - ands r1, r0 - cmp r1, 0 - beq _080274D4 - ldr r2, _080274CC @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080274D0 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _080274E4 - .align 2, 0 -_080274C8: .4byte gBattleWeather -_080274CC: .4byte gMoveResultFlags -_080274D0: .4byte gBattleCommunication -_080274D4: - movs r0, 0x1 - strh r0, [r2] - ldr r0, _080274F0 @ =gBattleCommunication - strb r1, [r0, 0x5] - ldr r0, _080274F4 @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_080274E4: - ldr r1, _080274F8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080274F0: .4byte gBattleCommunication -_080274F4: .4byte gWishFutureKnock -_080274F8: .4byte gBattlescriptCurrInstr - thumb_func_end atk7D_setrain - - thumb_func_start atk7E_setreflect -atk7E_setreflect: @ 80274FC - push {r4-r6,lr} - ldr r6, _0802752C @ =gBattlerAttacker - ldrb r0, [r6] - bl GetBattlerPosition - ldr r4, _08027530 @ =gSideStatuses - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0802753C - ldr r2, _08027534 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08027538 @ =gBattleCommunication - movs r0, 0 - b _080275B0 - .align 2, 0 -_0802752C: .4byte gBattlerAttacker -_08027530: .4byte gSideStatuses -_08027534: .4byte gMoveResultFlags -_08027538: .4byte gBattleCommunication -_0802753C: - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r6] - bl GetBattlerPosition - ldr r4, _080275A0 @ =gSideTimers - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0] - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r6] - strb r1, [r0, 0x1] - ldr r0, _080275A4 @ =gBattleTypeFlags - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _080275AC - movs r0, 0x1 - bl CountAliveMonsInBattle - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bne _080275AC - ldr r0, _080275A8 @ =gBattleCommunication - strb r1, [r0, 0x5] - b _080275B2 - .align 2, 0 -_080275A0: .4byte gSideTimers -_080275A4: .4byte gBattleTypeFlags -_080275A8: .4byte gBattleCommunication -_080275AC: - ldr r1, _080275C0 @ =gBattleCommunication - movs r0, 0x1 -_080275B0: - strb r0, [r1, 0x5] -_080275B2: - ldr r1, _080275C4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080275C0: .4byte gBattleCommunication -_080275C4: .4byte gBattlescriptCurrInstr - thumb_func_end atk7E_setreflect - - thumb_func_start atk7F_setseeded -atk7F_setseeded: @ 80275C8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, _08027608 @ =gMoveResultFlags - ldrb r5, [r7] - movs r0, 0x29 - ands r0, r5 - cmp r0, 0 - bne _080275FA - ldr r0, _0802760C @ =gStatuses3 - mov r9, r0 - ldr r1, _08027610 @ =gBattlerTarget - mov r8, r1 - ldrb r4, [r1] - lsls r0, r4, 2 - mov r2, r9 - adds r6, r0, r2 - ldr r2, [r6] - movs r0, 0x4 - mov r12, r0 - adds r3, r2, 0 - ands r3, r0 - cmp r3, 0 - beq _08027618 -_080275FA: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, _08027614 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08027668 - .align 2, 0 -_08027608: .4byte gMoveResultFlags -_0802760C: .4byte gStatuses3 -_08027610: .4byte gBattlerTarget -_08027614: .4byte gBattleCommunication -_08027618: - ldr r1, _08027644 @ =gBattleMons - movs r0, 0x58 - muls r0, r4 - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xC - beq _08027634 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xC - bne _0802764C -_08027634: - movs r0, 0x1 - orrs r0, r5 - strb r0, [r7] - ldr r1, _08027648 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08027668 - .align 2, 0 -_08027644: .4byte gBattleMons -_08027648: .4byte gBattleCommunication -_0802764C: - ldr r0, _0802767C @ =gBattlerAttacker - ldrb r0, [r0] - orrs r2, r0 - str r2, [r6] - mov r2, r8 - ldrb r1, [r2] - lsls r1, 2 - add r1, r9 - ldr r0, [r1] - mov r2, r12 - orrs r0, r2 - str r0, [r1] - ldr r0, _08027680 @ =gBattleCommunication - strb r3, [r0, 0x5] -_08027668: - ldr r1, _08027684 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802767C: .4byte gBattlerAttacker -_08027680: .4byte gBattleCommunication -_08027684: .4byte gBattlescriptCurrInstr - thumb_func_end atk7F_setseeded - - thumb_func_start atk80_manipulatedamage -atk80_manipulatedamage: @ 8027688 - push {r4,lr} - ldr r1, _080276A0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - ldrb r2, [r0, 0x1] - adds r4, r1, 0 - cmp r2, 0x1 - beq _080276B8 - cmp r2, 0x1 - bgt _080276A4 - cmp r2, 0 - beq _080276AA - b _080276F8 - .align 2, 0 -_080276A0: .4byte gBattlescriptCurrInstr -_080276A4: - cmp r2, 0x2 - beq _080276F0 - b _080276F8 -_080276AA: - ldr r1, _080276B4 @ =gBattleMoveDamage - ldr r0, [r1] - negs r0, r0 - b _080276F6 - .align 2, 0 -_080276B4: .4byte gBattleMoveDamage -_080276B8: - ldr r3, _080276E4 @ =gBattleMoveDamage - ldr r0, [r3] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _080276CA - str r2, [r3] -_080276CA: - ldr r2, _080276E8 @ =gBattleMons - ldr r0, _080276EC @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r1, r0, 1 - ldr r0, [r3] - cmp r1, r0 - bge _080276F8 - str r1, [r3] - b _080276F8 - .align 2, 0 -_080276E4: .4byte gBattleMoveDamage -_080276E8: .4byte gBattleMons -_080276EC: .4byte gBattlerTarget -_080276F0: - ldr r1, _08027704 @ =gBattleMoveDamage - ldr r0, [r1] - lsls r0, 1 -_080276F6: - str r0, [r1] -_080276F8: - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08027704: .4byte gBattleMoveDamage - thumb_func_end atk80_manipulatedamage - - thumb_func_start atk81_trysetrest -atk81_trysetrest: @ 8027708 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _08027760 @ =gBattlescriptCurrInstr - mov r12, r0 - ldr r1, [r0] - ldrb r6, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r6, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r6, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r6, r0 - ldr r5, _08027764 @ =gActiveBattler - ldr r2, _08027768 @ =gBattlerTarget - ldr r0, _0802776C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r2] - strb r0, [r5] - ldr r4, _08027770 @ =gBattleMoveDamage - ldr r1, _08027774 @ =gBattleMons - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r0, r1 - ldrh r0, [r0, 0x2C] - negs r0, r0 - str r0, [r4] - ldrb r0, [r2] - adds r4, r0, 0 - muls r4, r3 - adds r0, r4, r1 - ldrh r3, [r0, 0x28] - adds r7, r5, 0 - adds r5, r2, 0 - adds r2, r1, 0 - ldrh r0, [r0, 0x2C] - cmp r3, r0 - bne _08027778 - mov r0, r12 - str r6, [r0] - b _080277C8 - .align 2, 0 -_08027760: .4byte gBattlescriptCurrInstr -_08027764: .4byte gActiveBattler -_08027768: .4byte gBattlerTarget -_0802776C: .4byte gBattlerAttacker -_08027770: .4byte gBattleMoveDamage -_08027774: .4byte gBattleMons -_08027778: - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0xF8 - ands r1, r0 - cmp r1, 0 - beq _08027794 - ldr r1, _08027790 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08027798 - .align 2, 0 -_08027790: .4byte gBattleCommunication -_08027794: - ldr r0, _080277D0 @ =gBattleCommunication - strb r1, [r0, 0x5] -_08027798: - ldrb r0, [r5] - movs r3, 0x58 - muls r0, r3 - adds r2, 0x4C - adds r0, r2 - movs r1, 0x3 - str r1, [r0] - ldrb r0, [r7] - muls r0, r3 - adds r0, r2 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r7] - bl MarkBattlerForControllerExec - ldr r1, _080277D4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_080277C8: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080277D0: .4byte gBattleCommunication -_080277D4: .4byte gBattlescriptCurrInstr - thumb_func_end atk81_trysetrest - - thumb_func_start atk82_jumpifnotfirstturn -atk82_jumpifnotfirstturn: @ 80277D8 - push {r4,r5,lr} - ldr r5, _0802780C @ =gBattlescriptCurrInstr - ldr r4, [r5] - ldrb r3, [r4, 0x1] - ldrb r0, [r4, 0x2] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r4, 0x3] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r4, 0x4] - lsls r0, 24 - orrs r3, r0 - ldr r2, _08027810 @ =gDisableStructs - ldr r0, _08027814 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x16] - cmp r0, 0 - beq _08027818 - adds r0, r4, 0x5 - str r0, [r5] - b _0802781A - .align 2, 0 -_0802780C: .4byte gBattlescriptCurrInstr -_08027810: .4byte gDisableStructs -_08027814: .4byte gBattlerAttacker -_08027818: - str r3, [r5] -_0802781A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atk82_jumpifnotfirstturn - - thumb_func_start atk83_nop -atk83_nop: @ 8027820 - ldr r1, _0802782C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802782C: .4byte gBattlescriptCurrInstr - thumb_func_end atk83_nop - - thumb_func_start UproarWakeUpCheck -UproarWakeUpCheck: @ 8027830 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _08027888 @ =gBattlersCount - ldrb r1, [r0] - mov r8, r0 - cmp r2, r1 - bge _080278A4 - ldr r0, _0802788C @ =gBattleMons - mov r12, r0 - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r5, r0, 0 - adds r5, 0x20 - adds r4, r1, 0 - movs r3, 0 - ldr r6, _08027890 @ =gBattleScripting - ldr r7, _08027894 @ =gBattleCommunication -_0802785C: - mov r0, r12 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _0802789C - ldrb r0, [r5] - cmp r0, 0x2B - beq _0802789C - movs r3, 0 - strb r2, [r6, 0x17] - ldr r1, _08027898 @ =gBattlerTarget - ldrb r0, [r1] - cmp r0, 0xFF - beq _080278BC - cmp r0, r2 - beq _080278B0 - movs r0, 0x1 - strb r0, [r7, 0x5] - b _080278A4 - .align 2, 0 -_08027888: .4byte gBattlersCount -_0802788C: .4byte gBattleMons -_08027890: .4byte gBattleScripting -_08027894: .4byte gBattleCommunication -_08027898: .4byte gBattlerTarget -_0802789C: - adds r3, 0x58 - adds r2, 0x1 - cmp r2, r4 - blt _0802785C -_080278A4: - mov r1, r8 - ldrb r1, [r1] - cmp r2, r1 - beq _080278C0 - movs r0, 0x1 - b _080278C2 -_080278B0: - ldr r0, _080278B8 @ =gBattleCommunication - strb r3, [r0, 0x5] - b _080278A4 - .align 2, 0 -_080278B8: .4byte gBattleCommunication -_080278BC: - strb r2, [r1] - b _080278A4 -_080278C0: - movs r0, 0 -_080278C2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end UproarWakeUpCheck - - thumb_func_start atk84_jumpifcantmakeasleep -atk84_jumpifcantmakeasleep: @ 80278CC - push {r4-r6,lr} - ldr r5, _080278F8 @ =gBattlescriptCurrInstr - ldr r1, [r5] - ldrb r4, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r4, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r4, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r4, r0 - ldr r6, _080278FC @ =gBattlerTarget - ldrb r0, [r6] - bl UproarWakeUpCheck - lsls r0, 24 - cmp r0, 0 - beq _08027900 - str r4, [r5] - b _08027942 - .align 2, 0 -_080278F8: .4byte gBattlescriptCurrInstr -_080278FC: .4byte gBattlerTarget -_08027900: - ldr r1, _08027930 @ =gBattleMons - ldrb r3, [r6] - movs r0, 0x58 - muls r0, r3 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r1, 0xF - beq _08027918 - cmp r1, 0x48 - bne _0802793C -_08027918: - ldr r2, _08027934 @ =gLastUsedAbility - strb r0, [r2] - ldr r1, _08027938 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - str r4, [r5] - ldrb r1, [r2] - adds r0, r3, 0 - bl RecordAbilityBattle - b _08027942 - .align 2, 0 -_08027930: .4byte gBattleMons -_08027934: .4byte gLastUsedAbility -_08027938: .4byte gBattleCommunication -_0802793C: - ldr r0, [r5] - adds r0, 0x5 - str r0, [r5] -_08027942: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end atk84_jumpifcantmakeasleep - - thumb_func_start atk85_stockpile -atk85_stockpile: @ 8027948 - push {r4,r5,lr} - ldr r5, _08027970 @ =gDisableStructs - ldr r4, _08027974 @ =gBattlerAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x9] - cmp r0, 0x3 - bne _08027980 - ldr r2, _08027978 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802797C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080279AA - .align 2, 0 -_08027970: .4byte gDisableStructs -_08027974: .4byte gBattlerAttacker -_08027978: .4byte gMoveResultFlags -_0802797C: .4byte gBattleCommunication -_08027980: - adds r0, 0x1 - movs r3, 0 - strb r0, [r1, 0x9] - ldr r2, _080279B8 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x1] - strb r0, [r2, 0x2] - strb r0, [r2, 0x3] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x9] - strb r0, [r2, 0x4] - movs r0, 0xFF - strb r0, [r2, 0x5] - ldr r0, _080279BC @ =gBattleCommunication - strb r3, [r0, 0x5] -_080279AA: - ldr r1, _080279C0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080279B8: .4byte gBattleTextBuff1 -_080279BC: .4byte gBattleCommunication -_080279C0: .4byte gBattlescriptCurrInstr - thumb_func_end atk85_stockpile - - thumb_func_start atk86_stockpiletobasedamage -atk86_stockpiletobasedamage: @ 80279C4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r3, _080279FC @ =gBattlescriptCurrInstr - ldr r1, [r3] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r7, _08027A00 @ =gDisableStructs - ldr r6, _08027A04 @ =gBattlerAttacker - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _08027A08 - str r2, [r3] - b _08027AAA - .align 2, 0 -_080279FC: .4byte gBattlescriptCurrInstr -_08027A00: .4byte gDisableStructs -_08027A04: .4byte gBattlerAttacker -_08027A08: - ldr r0, _08027AB8 @ =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _08027A90 - ldr r0, _08027ABC @ =gBattleMoveDamage - mov r8, r0 - ldr r4, _08027AC0 @ =gSideStatuses - ldr r5, _08027AC4 @ =gBattlerTarget - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r6] - movs r4, 0x58 - muls r0, r4 - ldr r2, _08027AC8 @ =gBattleMons - adds r0, r2 - ldrb r1, [r5] - muls r1, r4 - adds r1, r2 - ldr r2, _08027ACC @ =gCurrentMove - ldrh r2, [r2] - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - ldrb r4, [r6] - str r4, [sp, 0x8] - ldrb r4, [r5] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r7 - ldrb r1, [r1, 0x9] - adds r3, r0, 0 - muls r3, r1 - mov r1, r8 - str r3, [r1] - ldr r2, _08027AD0 @ =gBattleScripting - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x9] - strb r0, [r2, 0x18] - ldr r1, _08027AD4 @ =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _08027A90 - lsls r0, r3, 4 - subs r0, r3 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_08027A90: - ldr r2, _08027AD8 @ =gDisableStructs - ldr r0, _08027ADC @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x9] - ldr r1, _08027AE0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08027AAA: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027AB8: .4byte gBattleCommunication -_08027ABC: .4byte gBattleMoveDamage -_08027AC0: .4byte gSideStatuses -_08027AC4: .4byte gBattlerTarget -_08027AC8: .4byte gBattleMons -_08027ACC: .4byte gCurrentMove -_08027AD0: .4byte gBattleScripting -_08027AD4: .4byte gProtectStructs -_08027AD8: .4byte gDisableStructs -_08027ADC: .4byte gBattlerAttacker -_08027AE0: .4byte gBattlescriptCurrInstr - thumb_func_end atk86_stockpiletobasedamage - - thumb_func_start atk87_stockpiletohpheal -atk87_stockpiletohpheal: @ 8027AE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _08027B24 @ =gBattlescriptCurrInstr - ldr r1, [r7] - ldrb r2, [r1, 0x1] - ldrb r0, [r1, 0x2] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0x3] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0x4] - lsls r0, 24 - orrs r2, r0 - ldr r0, _08027B28 @ =gDisableStructs - mov r8, r0 - ldr r6, _08027B2C @ =gBattlerAttacker - ldrb r3, [r6] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - mov r1, r8 - adds r4, r0, r1 - ldrb r1, [r4, 0x9] - cmp r1, 0 - bne _08027B34 - str r2, [r7] - ldr r0, _08027B30 @ =gBattleCommunication - strb r1, [r0, 0x5] - b _08027BB0 - .align 2, 0 -_08027B24: .4byte gBattlescriptCurrInstr -_08027B28: .4byte gDisableStructs -_08027B2C: .4byte gBattlerAttacker -_08027B30: .4byte gBattleCommunication -_08027B34: - ldr r1, _08027B58 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, r0, r1 - ldrh r0, [r1, 0x2C] - ldrh r3, [r1, 0x28] - cmp r0, r3 - bne _08027B64 - movs r0, 0 - strb r0, [r4, 0x9] - str r2, [r7] - ldr r1, _08027B5C @ =gBattlerTarget - ldrb r0, [r6] - strb r0, [r1] - ldr r1, _08027B60 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08027BB0 - .align 2, 0 -_08027B58: .4byte gBattleMons -_08027B5C: .4byte gBattlerTarget -_08027B60: .4byte gBattleCommunication -_08027B64: - ldr r5, _08027BBC @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - ldrb r1, [r4, 0x9] - movs r2, 0x3 - subs r2, r1 - movs r4, 0x1 - adds r1, r4, 0 - lsls r1, r2 - bl __divsi3 - str r0, [r5] - cmp r0, 0 - bne _08027B80 - str r4, [r5] -_08027B80: - ldr r0, [r5] - negs r0, r0 - str r0, [r5] - ldr r3, _08027BC0 @ =gBattleScripting - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x9] - movs r2, 0 - strb r0, [r3, 0x18] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - strb r2, [r0, 0x9] - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - ldr r1, _08027BC4 @ =gBattlerTarget - ldrb r0, [r6] - strb r0, [r1] -_08027BB0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08027BBC: .4byte gBattleMoveDamage -_08027BC0: .4byte gBattleScripting -_08027BC4: .4byte gBattlerTarget - thumb_func_end atk87_stockpiletohpheal - - thumb_func_start atk88_negativedamage -atk88_negativedamage: @ 8027BC8 - push {lr} - ldr r2, _08027BF0 @ =gBattleMoveDamage - ldr r0, _08027BF4 @ =gHpDealt - ldr r0, [r0] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - negs r0, r0 - str r0, [r2] - cmp r0, 0 - bne _08027BE4 - movs r0, 0x1 - negs r0, r0 - str r0, [r2] -_08027BE4: - ldr r1, _08027BF8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08027BF0: .4byte gBattleMoveDamage -_08027BF4: .4byte gHpDealt -_08027BF8: .4byte gBattlescriptCurrInstr - thumb_func_end atk88_negativedamage - - thumb_func_start ChangeStatBuffs -ChangeStatBuffs: @ 8027BFC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r3 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0 - mov r9, r0 - mov r10, r0 - movs r0, 0x40 - ands r0, r5 - cmp r0, 0 - beq _08027C30 - ldr r0, _08027C28 @ =gActiveBattler - ldr r1, _08027C2C @ =gBattlerAttacker - b _08027C34 - .align 2, 0 -_08027C28: .4byte gActiveBattler -_08027C2C: .4byte gBattlerAttacker -_08027C30: - ldr r0, _08027CD4 @ =gActiveBattler - ldr r1, _08027CD8 @ =gBattlerTarget -_08027C34: - ldrb r1, [r1] - strb r1, [r0] - movs r0, 0xBF - ands r5, r0 - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _08027C4E - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08027C4E: - movs r0, 0x7F - ands r5, r0 - movs r0, 0x20 - ands r0, r5 - cmp r0, 0 - beq _08027C64 - mov r0, r10 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_08027C64: - movs r0, 0xDF - ands r5, r0 - ldr r1, _08027CDC @ =gBattleTextBuff1 - movs r4, 0 - movs r2, 0xFD - strb r2, [r1] - movs r0, 0x5 - strb r0, [r1, 0x1] - strb r7, [r1, 0x2] - movs r3, 0x1 - negs r3, r3 - mov r12, r3 - movs r0, 0xFF - strb r0, [r1, 0x3] - lsls r0, r6, 24 - cmp r0, 0 - blt _08027C88 - b _08027F6C -_08027C88: - ldr r4, _08027CE0 @ =gSideTimers - ldr r1, _08027CD4 @ =gActiveBattler - ldrb r0, [r1] - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08027D28 - mov r2, r9 - cmp r2, 0 - bne _08027D28 - ldr r0, _08027CE4 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08027D58 - cmp r5, 0x1 - bne _08027D48 - ldr r4, _08027CE8 @ =gSpecialStatuses - ldr r3, _08027CD4 @ =gActiveBattler - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _08027CF0 - ldr r0, _08027CEC @ =gBattlescriptCurrInstr - mov r4, r8 - str r4, [r0] - b _08027D48 - .align 2, 0 -_08027CD4: .4byte gActiveBattler -_08027CD8: .4byte gBattlerTarget -_08027CDC: .4byte gBattleTextBuff1 -_08027CE0: .4byte gSideTimers -_08027CE4: .4byte gCurrentMove -_08027CE8: .4byte gSpecialStatuses -_08027CEC: .4byte gBattlescriptCurrInstr -_08027CF0: - mov r0, r8 - bl BattleScriptPush - ldr r1, _08027D18 @ =gBattleScripting - ldr r6, _08027D1C @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r1, 0x17] - ldr r1, _08027D20 @ =gBattlescriptCurrInstr - ldr r0, _08027D24 @ =BattleScript_MistProtected - str r0, [r1] - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08027D48 - .align 2, 0 -_08027D18: .4byte gBattleScripting -_08027D1C: .4byte gActiveBattler -_08027D20: .4byte gBattlescriptCurrInstr -_08027D24: .4byte BattleScript_MistProtected -_08027D28: - ldr r0, _08027D4C @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08027D58 - mov r0, r10 - cmp r0, 0x1 - beq _08027D58 - movs r0, 0 - bl JumpIfMoveAffectedByProtect - lsls r0, 24 - cmp r0, 0 - beq _08027D58 - ldr r1, _08027D50 @ =gBattlescriptCurrInstr - ldr r0, _08027D54 @ =BattleScript_ButItFailed - str r0, [r1] -_08027D48: - movs r0, 0x1 - b _08028060 - .align 2, 0 -_08027D4C: .4byte gCurrentMove -_08027D50: .4byte gBattlescriptCurrInstr -_08027D54: .4byte BattleScript_ButItFailed -_08027D58: - ldr r2, _08027DA0 @ =gBattleMons - ldr r1, _08027DA4 @ =gActiveBattler - ldrb r3, [r1] - movs r4, 0x58 - adds r0, r3, 0 - muls r0, r4 - adds r0, r2 - adds r0, 0x20 - ldrb r0, [r0] - mov r10, r2 - cmp r0, 0x1D - beq _08027D74 - cmp r0, 0x49 - bne _08027E0C -_08027D74: - mov r0, r9 - cmp r0, 0 - bne _08027E0C - ldr r0, _08027DA8 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xAE - beq _08027E0C - cmp r5, 0x1 - bne _08027D48 - ldr r4, _08027DAC @ =gSpecialStatuses - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - beq _08027DB4 - ldr r0, _08027DB0 @ =gBattlescriptCurrInstr - mov r1, r8 - str r1, [r0] - b _08027D48 - .align 2, 0 -_08027DA0: .4byte gBattleMons -_08027DA4: .4byte gActiveBattler -_08027DA8: .4byte gCurrentMove -_08027DAC: .4byte gSpecialStatuses -_08027DB0: .4byte gBattlescriptCurrInstr -_08027DB4: - mov r0, r8 - bl BattleScriptPush - ldr r1, _08027DF8 @ =gBattleScripting - ldr r2, _08027DFC @ =gActiveBattler - ldrb r0, [r2] - strb r0, [r1, 0x17] - ldr r1, _08027E00 @ =gBattlescriptCurrInstr - ldr r0, _08027E04 @ =BattleScript_AbilityNoStatLoss - str r0, [r1] - ldr r1, _08027E08 @ =gLastUsedAbility - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - ldrb r1, [r1] - bl RecordAbilityBattle - ldr r6, _08027DFC @ =gActiveBattler - ldrb r1, [r6] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08027D48 - .align 2, 0 -_08027DF8: .4byte gBattleScripting -_08027DFC: .4byte gActiveBattler -_08027E00: .4byte gBattlescriptCurrInstr -_08027E04: .4byte BattleScript_AbilityNoStatLoss -_08027E08: .4byte gLastUsedAbility -_08027E0C: - ldr r1, _08027E58 @ =gActiveBattler - ldrb r0, [r1] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x33 - bne _08027E6C - mov r2, r9 - cmp r2, 0 - bne _08027E6C - cmp r7, 0x6 - bne _08027E6C - cmp r5, 0x1 - bne _08027D48 - mov r0, r8 - bl BattleScriptPush - ldr r1, _08027E5C @ =gBattleScripting - ldr r3, _08027E58 @ =gActiveBattler - ldrb r0, [r3] - strb r0, [r1, 0x17] - ldr r1, _08027E60 @ =gBattlescriptCurrInstr - ldr r0, _08027E64 @ =BattleScript_AbilityNoSpecificStatLoss - str r0, [r1] - ldr r1, _08027E68 @ =gLastUsedAbility - ldrb r0, [r3] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r3] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08027D48 - .align 2, 0 -_08027E58: .4byte gActiveBattler -_08027E5C: .4byte gBattleScripting -_08027E60: .4byte gBattlescriptCurrInstr -_08027E64: .4byte BattleScript_AbilityNoSpecificStatLoss -_08027E68: .4byte gLastUsedAbility -_08027E6C: - ldr r4, _08027EBC @ =gActiveBattler - ldrb r0, [r4] - movs r4, 0x58 - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x34 - bne _08027ED0 - mov r0, r9 - cmp r0, 0 - bne _08027ED0 - cmp r7, 0x1 - bne _08027ED0 - cmp r5, 0x1 - beq _08027E8E - b _08027D48 -_08027E8E: - mov r0, r8 - bl BattleScriptPush - ldr r1, _08027EC0 @ =gBattleScripting - ldr r2, _08027EBC @ =gActiveBattler - ldrb r0, [r2] - strb r0, [r1, 0x17] - ldr r1, _08027EC4 @ =gBattlescriptCurrInstr - ldr r0, _08027EC8 @ =BattleScript_AbilityNoSpecificStatLoss - str r0, [r1] - ldr r1, _08027ECC @ =gLastUsedAbility - ldrb r0, [r2] - muls r0, r4 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2] - ldrb r1, [r1] - bl RecordAbilityBattle - b _08027D48 - .align 2, 0 -_08027EBC: .4byte gActiveBattler -_08027EC0: .4byte gBattleScripting -_08027EC4: .4byte gBattlescriptCurrInstr -_08027EC8: .4byte BattleScript_AbilityNoSpecificStatLoss -_08027ECC: .4byte gLastUsedAbility -_08027ED0: - ldr r3, _08027F5C @ =gActiveBattler - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - add r0, r10 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x13 - bne _08027EE8 - cmp r5, 0 - bne _08027EE8 - b _08027D48 -_08027EE8: - lsls r0, r6, 24 - asrs r0, 28 - movs r1, 0x7 - ands r0, r1 - negs r0, r0 - lsls r0, 24 - ldr r3, _08027F60 @ =gBattleTextBuff2 - movs r4, 0 - movs r1, 0xFD - strb r1, [r3] - movs r2, 0x1 - lsrs r6, r0, 24 - asrs r0, 24 - subs r1, 0xFF - cmp r0, r1 - bne _08027F12 - strb r4, [r3, 0x1] - movs r0, 0xD3 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_08027F12: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD4 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r4, _08027F5C @ =gActiveBattler - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - mov r1, r10 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08027FC2 - movs r1, 0 - ldr r0, _08027F64 @ =gBattlerTarget - ldrb r0, [r0] - ldr r3, _08027F68 @ =gBattleCommunication - mov r8, r3 - cmp r0, r2 - bne _08027F56 - movs r1, 0x1 -_08027F56: - mov r4, r8 - strb r1, [r4, 0x5] - b _08027FF0 - .align 2, 0 -_08027F5C: .4byte gActiveBattler -_08027F60: .4byte gBattleTextBuff2 -_08027F64: .4byte gBattlerTarget -_08027F68: .4byte gBattleCommunication -_08027F6C: - asrs r6, r0, 28 - movs r0, 0x7 - ands r6, r0 - ldr r3, _08027FCC @ =gBattleTextBuff2 - strb r2, [r3] - movs r2, 0x1 - cmp r6, 0x2 - bne _08027F86 - strb r4, [r3, 0x1] - movs r0, 0xD1 - strb r0, [r3, 0x2] - strb r4, [r3, 0x3] - movs r2, 0x4 -_08027F86: - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - movs r0, 0xD2 - strb r0, [r1] - adds r2, 0x1 - adds r0, r2, r3 - strb r4, [r0] - adds r2, 0x1 - adds r1, r2, r3 - ldrb r0, [r1] - mov r2, r12 - orrs r0, r2 - strb r0, [r1] - ldr r2, _08027FD0 @ =gBattleMons - ldr r4, _08027FD4 @ =gActiveBattler - ldrb r3, [r4] - movs r0, 0x58 - muls r0, r3 - adds r0, r7, r0 - adds r1, r2, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - mov r10, r2 - cmp r0, 0xC - bne _08027FDC -_08027FC2: - ldr r1, _08027FD8 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - mov r8, r1 - b _08027FF0 - .align 2, 0 -_08027FCC: .4byte gBattleTextBuff2 -_08027FD0: .4byte gBattleMons -_08027FD4: .4byte gActiveBattler -_08027FD8: .4byte gBattleCommunication -_08027FDC: - movs r1, 0 - ldr r0, _08028070 @ =gBattlerTarget - ldrb r0, [r0] - ldr r2, _08028074 @ =gBattleCommunication - mov r8, r2 - cmp r0, r3 - bne _08027FEC - movs r1, 0x1 -_08027FEC: - mov r3, r8 - strb r1, [r3, 0x5] -_08027FF0: - ldr r2, _08028078 @ =gActiveBattler - ldrb r0, [r2] - movs r4, 0x58 - adds r1, r0, 0 - muls r1, r4 - adds r1, r7, r1 - mov r3, r10 - adds r3, 0x18 - adds r1, r3 - lsls r0, r6, 24 - asrs r0, 24 - ldrb r6, [r1] - adds r0, r6 - strb r0, [r1] - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0 - bge _08028020 - movs r0, 0 - strb r0, [r1] -_08028020: - ldr r1, _08028078 @ =gActiveBattler - ldrb r0, [r1] - muls r0, r4 - adds r0, r7, r0 - adds r1, r0, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0xC - ble _08028036 - movs r0, 0xC - strb r0, [r1] -_08028036: - mov r2, r8 - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bne _0802805E - movs r3, 0x1 - ands r3, r5 - cmp r3, 0 - beq _08028050 - ldr r0, _0802807C @ =gMoveResultFlags - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] -_08028050: - mov r4, r8 - ldrb r0, [r4, 0x5] - cmp r0, 0x2 - bne _0802805E - cmp r3, 0 - bne _0802805E - b _08027D48 -_0802805E: - movs r0, 0 -_08028060: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08028070: .4byte gBattlerTarget -_08028074: .4byte gBattleCommunication -_08028078: .4byte gActiveBattler -_0802807C: .4byte gMoveResultFlags - thumb_func_end ChangeStatBuffs - - thumb_func_start atk89_statbuffchange -atk89_statbuffchange: @ 8028080 - push {r4,r5,lr} - ldr r5, _080280C4 @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r3, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r3, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r3, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r3, r0 - ldr r0, _080280C8 @ =gBattleScripting - ldrb r4, [r0, 0x1A] - movs r0, 0xF0 - ands r0, r4 - lsls r0, 24 - asrs r0, 24 - movs r1, 0xF - ands r1, r4 - ldrb r2, [r2, 0x1] - bl ChangeStatBuffs - lsls r0, 24 - cmp r0, 0 - bne _080280BC - ldr r0, [r5] - adds r0, 0x6 - str r0, [r5] -_080280BC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080280C4: .4byte gBattlescriptCurrInstr -_080280C8: .4byte gBattleScripting - thumb_func_end atk89_statbuffchange - - thumb_func_start atk8A_normalisebuffs -atk8A_normalisebuffs: @ 80280CC - push {r4-r7,lr} - movs r2, 0 - ldr r0, _08028114 @ =gBattlersCount - ldrb r1, [r0] - ldr r0, _08028118 @ =gBattlescriptCurrInstr - mov r12, r0 - cmp r2, r1 - bge _08028104 - ldr r0, _0802811C @ =gBattleMons - movs r4, 0x6 - adds r5, r1, 0 - movs r7, 0x58 - adds r6, r0, 0 - adds r6, 0x18 -_080280E8: - adds r3, r2, 0x1 - movs r1, 0x7 - adds r0, r2, 0 - muls r0, r7 - adds r0, r6 - adds r0, 0x7 -_080280F4: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080280F4 - adds r2, r3, 0 - cmp r2, r5 - blt _080280E8 -_08028104: - mov r1, r12 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028114: .4byte gBattlersCount -_08028118: .4byte gBattlescriptCurrInstr -_0802811C: .4byte gBattleMons - thumb_func_end atk8A_normalisebuffs - - thumb_func_start atk8B_setbide -atk8B_setbide: @ 8028120 - push {r4,r5,lr} - ldr r4, _08028178 @ =gBattleMons - ldr r3, _0802817C @ =gBattlerAttacker - ldrb r0, [r3] - movs r5, 0x58 - adds r2, r0, 0 - muls r2, r5 - adds r4, 0x50 - adds r2, r4 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - ldr r1, _08028180 @ =gLockedMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r1 - ldr r1, _08028184 @ =gCurrentMove - ldrh r1, [r1] - movs r2, 0 - strh r1, [r0] - ldr r1, _08028188 @ =gTakenDmg - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - str r2, [r0] - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r1, _0802818C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08028178: .4byte gBattleMons -_0802817C: .4byte gBattlerAttacker -_08028180: .4byte gLockedMoves -_08028184: .4byte gCurrentMove -_08028188: .4byte gTakenDmg -_0802818C: .4byte gBattlescriptCurrInstr - thumb_func_end atk8B_setbide - - thumb_func_start atk8C_confuseifrepeatingattackends -atk8C_confuseifrepeatingattackends: @ 8028190 - push {lr} - ldr r1, _080281C0 @ =gBattleMons - ldr r0, _080281C4 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 4 - ands r0, r1 - cmp r0, 0 - bne _080281B2 - ldr r1, _080281C8 @ =gBattleCommunication - movs r0, 0x75 - strb r0, [r1, 0x3] -_080281B2: - ldr r1, _080281CC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080281C0: .4byte gBattleMons -_080281C4: .4byte gBattlerAttacker -_080281C8: .4byte gBattleCommunication -_080281CC: .4byte gBattlescriptCurrInstr - thumb_func_end atk8C_confuseifrepeatingattackends - - thumb_func_start atk8D_setmultihitcounter -atk8D_setmultihitcounter: @ 80281D0 - push {r4,r5,lr} - ldr r0, _080281E4 @ =gBattlescriptCurrInstr - ldr r0, [r0] - ldrb r1, [r0, 0x1] - cmp r1, 0 - beq _080281EC - ldr r0, _080281E8 @ =gMultiHitCounter - strb r1, [r0] - b _08028206 - .align 2, 0 -_080281E4: .4byte gBattlescriptCurrInstr -_080281E8: .4byte gMultiHitCounter -_080281EC: - ldr r4, _08028214 @ =gMultiHitCounter - bl Random - movs r5, 0x3 - ands r0, r5 - strb r0, [r4] - cmp r0, 0x1 - bls _08028202 - bl Random - ands r0, r5 -_08028202: - adds r0, 0x2 - strb r0, [r4] -_08028206: - ldr r1, _08028218 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08028214: .4byte gMultiHitCounter -_08028218: .4byte gBattlescriptCurrInstr - thumb_func_end atk8D_setmultihitcounter - - thumb_func_start atk8E_initmultihitstring -atk8E_initmultihitstring: @ 802821C - ldr r1, _0802823C @ =gBattleScripting - movs r2, 0 - movs r0, 0xFD - strb r0, [r1, 0x8] - movs r0, 0x1 - strb r0, [r1, 0x9] - strb r0, [r1, 0xA] - strb r0, [r1, 0xB] - strb r2, [r1, 0xC] - movs r0, 0xFF - strb r0, [r1, 0xD] - ldr r1, _08028240 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802823C: .4byte gBattleScripting -_08028240: .4byte gBattlescriptCurrInstr - thumb_func_end atk8E_initmultihitstring - - thumb_func_start TryDoForceSwitchOut -TryDoForceSwitchOut: @ 8028244 - push {r4-r7,lr} - ldr r6, _08028278 @ =gBattleMons - ldr r7, _0802827C @ =gBattlerAttacker - ldrb r0, [r7] - movs r5, 0x58 - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - adds r1, 0x2A - ldr r4, _08028280 @ =gBattlerTarget - ldrb r3, [r4] - adds r0, r3, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _0802828C - ldr r0, _08028284 @ =gBattleStruct - ldr r1, [r0] - adds r1, r3, r1 - adds r1, 0x58 - ldr r2, _08028288 @ =gBattlerPartyIndexes - lsls r0, r3, 1 - b _080282E8 - .align 2, 0 -_08028278: .4byte gBattleMons -_0802827C: .4byte gBattlerAttacker -_08028280: .4byte gBattlerTarget -_08028284: .4byte gBattleStruct -_08028288: .4byte gBattlerPartyIndexes -_0802828C: - bl Random - movs r3, 0xFF - ands r3, r0 - ldrb r0, [r7] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r2, [r0] - ldrb r4, [r4] - adds r0, r4, 0 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r0] - adds r2, r1 - adds r0, r3, 0 - muls r0, r2 - asrs r0, 8 - adds r0, 0x1 - lsrs r1, 2 - cmp r0, r1 - bhi _080282DC - ldr r3, _080282D8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - movs r0, 0 - b _080282F6 - .align 2, 0 -_080282D8: .4byte gBattlescriptCurrInstr -_080282DC: - ldr r0, _080282FC @ =gBattleStruct - ldr r1, [r0] - adds r1, r4, r1 - adds r1, 0x58 - ldr r2, _08028300 @ =gBattlerPartyIndexes - lsls r0, r4, 1 -_080282E8: - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r1, _08028304 @ =gBattlescriptCurrInstr - ldr r0, _08028308 @ =BattleScript_SuccessForceOut - str r0, [r1] - movs r0, 0x1 -_080282F6: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080282FC: .4byte gBattleStruct -_08028300: .4byte gBattlerPartyIndexes -_08028304: .4byte gBattlescriptCurrInstr -_08028308: .4byte BattleScript_SuccessForceOut - thumb_func_end TryDoForceSwitchOut - thumb_func_start atk8F_forcerandomswitch atk8F_forcerandomswitch: @ 802830C push {r4-r7,lr} diff --git a/asm/party_menu.s b/asm/party_menu.s index 661dddf60..44a250e82 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15250,7 +15250,7 @@ sub_8126350: @ 8126350 lsls r2, 2 adds r1, r7, r2 adds r0, r4, 0 - bl sub_811D130 + bl GetMonLevelUpWindowStats ldrb r0, [r6, 0x9] ldr r5, _0812641C @ =gSpecialVar_ItemId ldrh r1, [r5] @@ -15260,7 +15260,7 @@ sub_8126350: @ 8126350 lsls r0, 2 adds r1, r7, r0 adds r0, r4, 0 - bl sub_811D130 + bl GetMonLevelUpWindowStats ldr r1, _08126420 @ =gUnknown_203B0C0 movs r0, 0x1 strb r0, [r1] @@ -15497,7 +15497,7 @@ sub_8126570: @ 8126570 str r1, [sp, 0x4] adds r1, r4, 0 movs r3, 0x1 - bl sub_811E7F0 + bl DrawLevelUpWindowPg1 ldrb r0, [r4, 0x18] movs r1, 0x2 bl CopyWindowToVram @@ -15528,7 +15528,7 @@ sub_81265BC: @ 81265BC str r2, [sp] movs r2, 0x1 movs r3, 0x2 - bl sub_811E93C + bl DrawLevelUpWindowPg2 ldrb r0, [r4, 0x18] movs r1, 0x2 bl CopyWindowToVram diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s index c8906230b..9092a38aa 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 sub_811D130 -sub_811D130: @ 811D130 + thumb_func_start GetMonLevelUpWindowStats +GetMonLevelUpWindowStats: @ 811D130 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -1539,7 +1539,7 @@ sub_811D130: @ 811D130 pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_811D130 + thumb_func_end GetMonLevelUpWindowStats thumb_func_start sub_811D178 sub_811D178: @ 811D178 @@ -2294,7 +2294,7 @@ sub_811D764: @ 811D764 adds r1, r4, 0 adds r2, r5, 0 movs r3, 0x1 - bl sub_811E7F0 + bl DrawLevelUpWindowPg1 movs r0, 0x1 bl PutWindowTilemap movs r0, 0x1 @@ -2316,7 +2316,7 @@ sub_811D7A0: @ 811D7A0 movs r0, 0x1 movs r2, 0x1 movs r3, 0x2 - bl sub_811E93C + bl DrawLevelUpWindowPg2 movs r0, 0x1 movs r1, 0x2 bl CopyWindowToVram @@ -4457,8 +4457,8 @@ _0811E7E8: _0811E7EC: .4byte gTasks thumb_func_end sub_811E7B4 - thumb_func_start sub_811E7F0 -sub_811E7F0: @ 811E7F0 + thumb_func_start DrawLevelUpWindowPg1 +DrawLevelUpWindowPg1: @ 811E7F0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4622,10 +4622,10 @@ _0811E8F4: _0811E930: .4byte gUnknown_8459B48 _0811E934: .4byte gUnknown_841B2E5 _0811E938: .4byte gUnknown_841B2DC - thumb_func_end sub_811E7F0 + thumb_func_end DrawLevelUpWindowPg1 - thumb_func_start sub_811E93C -sub_811E93C: @ 811E93C + thumb_func_start DrawLevelUpWindowPg2 +DrawLevelUpWindowPg2: @ 811E93C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -4755,6 +4755,6 @@ _0811E9C0: bx r0 .align 2, 0 _0811EA40: .4byte gUnknown_8459B48 - thumb_func_end sub_811E93C + thumb_func_end DrawLevelUpWindowPg2 .align 2, 0 @ Don't pad with nop. diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 8e5274844..fa60e301a 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -25,19 +25,6 @@ #define ATK4F_DONT_CHECK_STATUSES 0x80 -#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 -#define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 -#define VARIOUS_GET_MOVE_TARGET 3 -#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 -#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 - #define ATK80_DMG_CHANGE_SIGN 0 #define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 #define ATK80_DMG_DOUBLED 2 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 894bd13b6..32d656673 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -61,28 +61,21 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 +// TODO: documentation // atk76, various #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 #define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_CASE_4 4 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 -#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 -#define VARIOUS_ARENA_PLAYER_MON_LOST 11 -#define VARIOUS_ARENA_BOTH_MONS_LOST 12 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_ARENA_JUDGMENT_STRING 16 -#define VARIOUS_ARENA_WAIT_STRING 17 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_VOLUME_DOWN 21 -#define VARIOUS_VOLUME_UP 22 -#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 +#define VARIOUS_CASE_7 7 +#define VARIOUS_CASE_8 8 +#define VARIOUS_RETURN_OPPONENT_MON1 9 +#define VARIOUS_RETURN_OPPONENT_MON2 10 +#define VARIOUS_CASE_11 11 +#define VARIOUS_CASE_12 12 // atk80, dmg manipulation #define ATK80_DMG_CHANGE_SIGN 0 diff --git a/include/party_menu.h b/include/party_menu.h index d10d0e48a..4c38df658 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -10,7 +10,9 @@ enum { AILMENT_PRZ, AILMENT_SLP, AILMENT_FRZ, - AILMENT_BRN + AILMENT_BRN, + AILMENT_PKRS, + AILMENT_FNT }; enum diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h index 4ccccaada..8dbf0efa4 100644 --- a/include/pokemon_special_anim.h +++ b/include/pokemon_special_anim.h @@ -5,5 +5,8 @@ void sub_811E5B8(u16, u16, u16, u16, u16, u16); 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); #endif // GUARD_POKEMON_SPECIAL_ANIM_H diff --git a/include/window.h b/include/window.h index 30e73dd32..5f3630afb 100644 --- a/include/window.h +++ b/include/window.h @@ -63,7 +63,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); +void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset); void FillWindowPixelBuffer(u8 windowId, u8 fillValue); void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, WindowFunc func); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7816f4f7e..eab99b818 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -18,6 +18,7 @@ #include "mail.h" #include "event_data.h" #include "strings.h" +#include "pokemon_special_anim.h" #include "pokemon_storage_system.h" #include "pokemon_summary_screen.h" #include "task.h" @@ -4207,10 +4208,10 @@ void atk49_moveend(void) *(gBattleStruct->lastTakenMove + gBattlerTarget * 2 + 1) = gChosenMove >> 8; target = gBattlerTarget; attacker = gBattlerAttacker; - *(attacker * 2 + target * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = gChosenMove; + *(attacker * 2 + target * 8 + (gBattleStruct->lastTakenMoveFrom) + 0) = gChosenMove; target = gBattlerTarget; attacker = gBattlerAttacker; - *(attacker * 2 + target * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = gChosenMove >> 8; + *(attacker * 2 + target * 8 + (gBattleStruct->lastTakenMoveFrom) + 1) = gChosenMove >> 8; } ++gBattleScripting.atk49_state; break; @@ -5735,3 +5736,1332 @@ void atk6B_atknameinbuff1(void) PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]) ++gBattlescriptCurrInstr; } + +void atk6C_drawlvlupbox(void) +{ + if (gBattleScripting.atk6C_state == 0) + { + if (IsMonGettingExpSentOut()) + gBattleScripting.atk6C_state = 3; + else + gBattleScripting.atk6C_state = 1; + } + + switch (gBattleScripting.atk6C_state) + { + case 1: + gBattle_BG2_Y = 0x60; + SetBgAttribute(2, BG_ATTR_PRIORITY, 0); + ShowBg(2); + sub_8026480(); + gBattleScripting.atk6C_state = 2; + break; + case 2: + if (!sub_80264D0()) + gBattleScripting.atk6C_state = 3; + break; + case 3: + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0x100; + SetBgAttribute(0, BG_ATTR_PRIORITY, 1); + SetBgAttribute(1, BG_ATTR_PRIORITY, 0); + ShowBg(0); + ShowBg(1); + HandleBattleWindow(18, 7, 0x1D, 0x13, WINDOW_x80); + gBattleScripting.atk6C_state = 4; + break; + case 4: + DrawLevelUpWindow1(); + PutWindowTilemap(12); + CopyWindowToVram(12, 3); + ++gBattleScripting.atk6C_state; + break; + case 5: + case 7: + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG1_Y = 0; + ++gBattleScripting.atk6C_state; + } + break; + case 6: + if (gMain.newKeys) + { + PlaySE(SE_SELECT); + DrawLevelUpWindow2(); + CopyWindowToVram(12, 2); + ++gBattleScripting.atk6C_state; + } + break; + case 8: + if (gMain.newKeys) + { + PlaySE(SE_SELECT); + HandleBattleWindow(18, 7, 0x1D, 0x13, WINDOW_x80 | WINDOW_CLEAR); + ++gBattleScripting.atk6C_state; + } + break; + case 9: + if (!sub_8026648()) + { + ClearWindowTilemap(13); + CopyWindowToVram(13, 1); + ClearWindowTilemap(12); + CopyWindowToVram(12, 1); + SetBgAttribute(2, BG_ATTR_PRIORITY, 2); + ShowBg(2); + gBattleScripting.atk6C_state = 10; + } + break; + case 10: + if (!IsDma3ManagerBusyWithBgCopy()) + { + SetBgAttribute(0, BG_ATTR_PRIORITY, 0); + SetBgAttribute(1, BG_ATTR_PRIORITY, 1); + ShowBg(0); + ShowBg(1); + ++gBattlescriptCurrInstr; + } + break; + } +} + +void DrawLevelUpWindow1(void) +{ + u16 currStats[NUM_STATS]; + + GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); + DrawLevelUpWindowPg1(12, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF); +} + +void DrawLevelUpWindow2(void) +{ + u16 currStats[NUM_STATS]; + + GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats); + DrawLevelUpWindowPg2(12, currStats, 0xE, 0xD, 0xF); +} + +void sub_8026480(void) +{ + gBattle_BG2_Y = 0; + gBattle_BG2_X = 0x1A0; + LoadPalette(gUnknown_82506D0, 0x60, 0x20); + CopyToWindowPixelBuffer(13, gUnknown_82506F0, 0, 0); + PutWindowTilemap(13); + CopyWindowToVram(13, 3); + PutMonIconOnLvlUpBox(); +} + +bool8 sub_80264D0(void) +{ + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + if (gBattle_BG2_X == 0x200) + return FALSE; + if (gBattle_BG2_X == 0x1A0) + PutLevelAndGenderOnLvlUpBox(); + gBattle_BG2_X += 8; + if (gBattle_BG2_X >= 0x200) + gBattle_BG2_X = 0x200; + return (gBattle_BG2_X != 0x200); +} + +void PutLevelAndGenderOnLvlUpBox(void) +{ + u16 monLevel; + u8 monGender; + struct TextPrinterTemplate printerTemplate; + u8 *txtPtr; + u8 *txtPtr2; + + monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterMonId]); + GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4); + printerTemplate.currentChar = gStringVar4; + printerTemplate.windowId = 13; + printerTemplate.fontId = 0; + printerTemplate.x = 32; + printerTemplate.y = 0; + printerTemplate.currentX = 32; + printerTemplate.currentY = 0; + printerTemplate.letterSpacing = 0; + printerTemplate.lineSpacing = 0; + printerTemplate.unk = 0; + printerTemplate.fgColor = TEXT_COLOR_WHITE; + printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT; + printerTemplate.shadowColor = TEXT_COLOR_DARK_GREY; + AddTextPrinter(&printerTemplate, 0xFF, NULL); + txtPtr = gStringVar4; + gStringVar4[0] = 0xF9; + *++txtPtr = 5; + *++txtPtr = 0; + txtPtr2 = txtPtr + 1; + txtPtr = ConvertIntToDecimalStringN(++txtPtr, monLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + txtPtr = StringFill(txtPtr, 0, 5); + txtPtr = txtPtr2 + 4; + if (monGender != MON_GENDERLESS) + { + if (monGender == MON_MALE) + { + txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xC); + txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xD); + *(txtPtr++) = CHAR_MALE; + } + else + { + txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xE); + txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xF); + *(txtPtr++) = CHAR_FEMALE; + } + *(txtPtr++) = EOS; + } + printerTemplate.y = 10; + printerTemplate.currentY = 10; + AddTextPrinter(&printerTemplate, 0xFF, NULL); + CopyWindowToVram(13, 2); +} + +bool8 sub_8026648(void) +{ + if (gBattle_BG2_X == 0x1A0) + return FALSE; + if (gBattle_BG2_X - 16 < 0x1A0) + gBattle_BG2_X = 0x1A0; + else + gBattle_BG2_X -= 16; + return (gBattle_BG2_X != 0x1A0); +} + +#define sDestroy data[0] +#define sSavedLvlUpBoxXPosition data[1] + +void PutMonIconOnLvlUpBox(void) +{ + u8 spriteId; + const u16 *iconPal; + struct SpriteSheet iconSheet; + struct SpritePalette iconPalSheet; + u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPECIES); + u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_PERSONALITY); + const u8 *iconPtr = GetMonIconPtr(species, personality, 1); + + iconSheet.data = iconPtr; + iconSheet.size = 0x200; + iconSheet.tag = MON_ICON_LVLUP_BOX_TAG; + iconPal = GetValidMonIconPalettePtr(species); + iconPalSheet.data = iconPal; + iconPalSheet.tag = MON_ICON_LVLUP_BOX_TAG; + LoadSpriteSheet(&iconSheet); + LoadSpritePalette(&iconPalSheet); + spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0); + gSprites[spriteId].sDestroy = FALSE; + gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X; +} + +void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite) +{ + sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X; + if (sprite->pos2.x != 0) + { + sprite->sDestroy = TRUE; + } + else if (sprite->sDestroy) + { + DestroySprite(sprite); + FreeSpriteTilesByTag(MON_ICON_LVLUP_BOX_TAG); + FreeSpritePaletteByTag(MON_ICON_LVLUP_BOX_TAG); + } +} + +bool32 IsMonGettingExpSentOut(void) +{ + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId) + return TRUE; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId) + return TRUE; + return FALSE; +} + +void atk6D_resetsentmonsvalue(void) +{ + ResetSentPokesToOpponentValue(); + ++gBattlescriptCurrInstr; +} + +void atk6E_setatktoplayer0(void) +{ + gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + ++gBattlescriptCurrInstr; +} + +void atk6F_makevisible(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitSpriteInvisibility(0, FALSE); + MarkBattlerForControllerExec(gActiveBattler); + + gBattlescriptCurrInstr += 2; +} + +void atk70_recordlastability(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + RecordAbilityBattle(gActiveBattler, gLastUsedAbility); + gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for battlerId argument. +} + +void BufferMoveToLearnIntoBattleTextBuff2(void) +{ + PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); +} + +void atk71_buffermovetolearn(void) +{ + BufferMoveToLearnIntoBattleTextBuff2(); + ++gBattlescriptCurrInstr; +} + +void atk72_jumpifplayerran(void) +{ + if (TryRunFromBattle(gBattlerFainted)) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atk73_hpthresholds(void) +{ + u8 opposingBattler; + s32 result; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + opposingBattler = gActiveBattler ^ BIT_SIDE; + + result = gBattleMons[opposingBattler].hp * 100 / gBattleMons[opposingBattler].maxHP; + if (result == 0) + result = 1; + if (result > 69 || !gBattleMons[opposingBattler].hp) + gBattleStruct->hpScale = 0; + else if (result > 39) + gBattleStruct->hpScale = 1; + else if (result > 9) + gBattleStruct->hpScale = 2; + else + gBattleStruct->hpScale = 3; + } + gBattlescriptCurrInstr += 2; +} + +void atk74_hpthresholds2(void) +{ + u8 opposingBattler; + s32 result; + u8 hpSwitchout; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + opposingBattler = gActiveBattler ^ BIT_SIDE; + hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBattlerSide(opposingBattler)); + result = (hpSwitchout - gBattleMons[opposingBattler].hp) * 100 / hpSwitchout; + + if (gBattleMons[opposingBattler].hp >= hpSwitchout) + gBattleStruct->hpScale = 0; + else if (result <= 29) + gBattleStruct->hpScale = 1; + else if (result <= 69) + gBattleStruct->hpScale = 2; + else + gBattleStruct->hpScale = 3; + } + gBattlescriptCurrInstr += 2; +} + +void atk75_useitemonopponent(void) +{ + gBattlerInMenuId = gBattlerAttacker; + PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, 1); + ++gBattlescriptCurrInstr; +} + +void atk76_various(void) +{ + u8 side; + s32 i; + u32 monToCheck, status; + u16 species; + u8 abilityNum; + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + switch (gBattlescriptCurrInstr[2]) + { + case VARIOUS_CANCEL_MULTI_TURN_MOVES: + CancelMultiTurnMoves(gActiveBattler); + break; + case VARIOUS_SET_MAGIC_COAT_TARGET: + gBattlerAttacker = gBattlerTarget; + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + gBattlerTarget = gSideTimers[side].followmeTarget; + else + gBattlerTarget = gActiveBattler; + break; + case VARIOUS_IS_RUNNING_IMPOSSIBLE: + gBattleCommunication[0] = IsRunningFromBattleImpossible(); + break; + case VARIOUS_GET_MOVE_TARGET: + gBattlerTarget = GetMoveTarget(gCurrentMove, 0); + break; + case VARIOUS_CASE_4: + if (gHitMarker & HITMARKER_FAINTED(gActiveBattler)) + gBattleCommunication[0] = 1; + else + gBattleCommunication[0] = 0; + break; + case VARIOUS_RESET_INTIMIDATE_TRACE_BITS: + gSpecialStatuses[gActiveBattler].intimidatedMon = 0; + gSpecialStatuses[gActiveBattler].traced = 0; + break; + case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP: + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId || gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId) + { + u16 *choicedMove; + + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId) + gActiveBattler = 0; + else + gActiveBattler = 2; + choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gActiveBattler].moves[i] == *choicedMove) + break; + } + if (i == MAX_MON_MOVES) + *choicedMove = 0; + } + break; + case VARIOUS_CASE_7: + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE)) + && gBattleTypeFlags & BATTLE_TYPE_TRAINER + && gBattleMons[0].hp != 0 + && gBattleMons[1].hp != 0) + gHitMarker &= ~(HITMARKER_x400000); + break; + case VARIOUS_CASE_8: + i = 0; // redundant + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gActiveBattler = 1; + for (i = 0; gActiveBattler < MAX_BATTLERS_COUNT; gActiveBattler += 2) + { + if (gActiveBattler < gBattlersCount && gBattleMons[gActiveBattler].hp != 0) + gBattleCommunication[MULTISTRING_CHOOSER] |= gBitTable[i]; + ++i; + } + break; + case VARIOUS_RETURN_OPPONENT_MON1: + gActiveBattler = 1; + if (gBattleMons[gActiveBattler].hp != 0) + { + BtlController_EmitReturnMonToBall(0, 0); + MarkBattlerForControllerExec(gActiveBattler); + } + break; + case VARIOUS_RETURN_OPPONENT_MON2: + if (gBattlersCount > 3) + { + gActiveBattler = 3; + if (gBattleMons[gActiveBattler].hp != 0) + { + BtlController_EmitReturnMonToBall(0, 0); + MarkBattlerForControllerExec(gActiveBattler); + } + } + break; + case VARIOUS_CASE_11: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + monToCheck = 0; + for (i = 0; i < gBattlersCount; ++i) + { + if (gBattleMons[i].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[i].status1 &= ~STATUS1_SLEEP; + gBattleMons[i].status2 &= ~STATUS2_NIGHTMARE; + + } + } + for (i = 0; i < PARTY_SIZE; ++i) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + abilityNum = GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM); + status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + if (species != SPECIES_NONE + && species != SPECIES_EGG + && status & AILMENT_FNT + && GetAbilityBySpecies(species, abilityNum) != ABILITY_SOUNDPROOF) + monToCheck |= (1 << i); + } + if (monToCheck) + { + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + status = 0; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, monToCheck, 4, &status); + MarkBattlerForControllerExec(gActiveBattler); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + monToCheck = 0; + for (i = 0; i < PARTY_SIZE; ++i) + { + species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2); + abilityNum = GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM); + status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); + + if (species != SPECIES_NONE + && species != SPECIES_EGG + && status & AILMENT_FNT + && GetAbilityBySpecies(species, abilityNum) != ABILITY_SOUNDPROOF) + monToCheck |= (1 << i); + } + if (monToCheck) + { + gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + status = 0; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, monToCheck, 4, &status); + MarkBattlerForControllerExec(gActiveBattler); + gBattleCommunication[5] = 1; + } + break; + case VARIOUS_CASE_12: + if (!IsFanfareTaskInactive()) + return; + break; + } + gBattlescriptCurrInstr += 3; +} + +void atk77_setprotectlike(void) +{ + bool8 notLastTurn = TRUE; + u16 lastMove = gLastResultingMoves[gBattlerAttacker]; + + if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) + gDisableStructs[gBattlerAttacker].protectUses = 0; + if (gCurrentTurnActionNumber == (gBattlersCount - 1)) + notLastTurn = FALSE; + if (sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= Random() && notLastTurn) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT) + { + gProtectStructs[gBattlerAttacker].protected = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) + { + gProtectStructs[gBattlerAttacker].endured = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + ++gDisableStructs[gBattlerAttacker].protectUses; + } + else + { + gDisableStructs[gBattlerAttacker].protectUses = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gMoveResultFlags |= MOVE_RESULT_MISSED; + } + ++gBattlescriptCurrInstr; +} + +void atk78_faintifabilitynotdamp(void) +{ + if (!gBattleControllerExecFlags) + { + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + { + if (gBattleMons[gBattlerTarget].ability == ABILITY_DAMP) + break; + } + if (gBattlerTarget == gBattlersCount) + { + gActiveBattler = gBattlerAttacker; + gBattleMoveDamage = gBattleMons[gActiveBattler].hp; + BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattlescriptCurrInstr; + + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + break; + } + } + else + { + gLastUsedAbility = ABILITY_DAMP; + RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); + gBattlescriptCurrInstr = BattleScript_DampStopsExplosion; + } + } +} + +void atk79_setatkhptozero(void) +{ + if (!gBattleControllerExecFlags) + { + gActiveBattler = gBattlerAttacker; + gBattleMons[gActiveBattler].hp = 0; + BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattlescriptCurrInstr; + } +} + +void atk7A_jumpifnexttargetvalid(void) +{ + const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (++gBattlerTarget; ; ++gBattlerTarget) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + break; + } + if (gBattlerTarget >= gBattlersCount) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = jumpPtr; + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +void atk7B_tryhealhalfhealth(void) +{ + const u8 *failPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (gBattlescriptCurrInstr[5] == BS_ATTACKER) + gBattlerTarget = gBattlerAttacker; + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = failPtr; + else + gBattlescriptCurrInstr += 6; +} + +#ifdef NONMATCHING +void atk7C_trymirrormove(void) +{ + s32 validMovesCount; + s32 i; + u16 move; + u16 movesArray[4]; + + // incorrect pointer load sequence + // and incorrect sequence of words in data pool + for (i = 0; i < 3; ++i) + movesArray[i] = 0; + for (validMovesCount = 0, i = 0; i < gBattlersCount; ++i) + { + + if (i != gBattlerAttacker) + { + move = *(i * 2 + gBattlerAttacker * 8 + gBattleStruct->lastTakenMoveFrom + 0) + | (*(i * 2 + gBattlerAttacker * 8 + gBattleStruct->lastTakenMoveFrom + 1) << 8); + + if (move != MOVE_NONE && move != 0xFFFF) + { + movesArray[validMovesCount] = move; + ++validMovesCount; + } + } + } + move = *(gBattleStruct->lastTakenMove + gBattlerAttacker * 2 + 0) + | (*(gBattleStruct->lastTakenMove + gBattlerAttacker * 2 + 1) << 8); + if (move != MOVE_NONE && move != 0xFFFF) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = move; + gBattlerTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + } + else if (validMovesCount) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + i = Random() % validMovesCount; + gCurrentMove = movesArray[i]; + gBattlerTarget = GetMoveTarget(gCurrentMove, 0); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + } + else + { + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; + ++gBattlescriptCurrInstr; + } +} +#else +NAKED +void atk7C_trymirrormove(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + ldr r2, _080273E0 @ =gBattlersCount\n\ + ldr r0, _080273E4 @ =gBattleStruct\n\ + mov r10, r0\n\ + movs r1, 0\n\ + add r0, sp, 0x4\n\ + _08027356:\n\ + strh r1, [r0]\n\ + subs r0, 0x2\n\ + cmp r0, sp\n\ + bge _08027356\n\ + movs r1, 0\n\ + mov r8, r1\n\ + movs r5, 0\n\ + ldrb r1, [r2]\n\ + cmp r5, r1\n\ + bge _080273AC\n\ + ldr r0, _080273E8 @ =gBattlerAttacker\n\ + ldrb r6, [r0]\n\ + ldr r2, _080273EC @ =0x0000ffff\n\ + mov r9, r2\n\ + lsls r4, r6, 3\n\ + mov r2, sp\n\ + ldr r0, _080273E4 @ =gBattleStruct\n\ + mov r12, r0\n\ + adds r7, r1, 0\n\ + _0802737C:\n\ + cmp r5, r6\n\ + beq _080273A4\n\ + mov r1, r12\n\ + ldr r0, [r1]\n\ + adds r0, r4, r0\n\ + adds r1, r0, 0\n\ + adds r1, 0xE0\n\ + ldrb r3, [r1]\n\ + adds r0, 0xE1\n\ + ldrb r0, [r0]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + cmp r3, 0\n\ + beq _080273A4\n\ + cmp r3, r9\n\ + beq _080273A4\n\ + strh r3, [r2]\n\ + adds r2, 0x2\n\ + movs r0, 0x1\n\ + add r8, r0\n\ + _080273A4:\n\ + adds r4, 0x2\n\ + adds r5, 0x1\n\ + cmp r5, r7\n\ + blt _0802737C\n\ + _080273AC:\n\ + ldr r1, _080273E8 @ =gBattlerAttacker\n\ + ldrb r0, [r1]\n\ + mov r2, r10\n\ + ldr r1, [r2]\n\ + lsls r0, 1\n\ + adds r0, r1\n\ + adds r1, r0, 0\n\ + adds r1, 0x98\n\ + ldrb r3, [r1]\n\ + adds r0, 0x99\n\ + ldrb r0, [r0]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + cmp r3, 0\n\ + beq _080273FC\n\ + ldr r0, _080273EC @ =0x0000ffff\n\ + cmp r3, r0\n\ + beq _080273FC\n\ + ldr r2, _080273F0 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _080273F4 @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r4, _080273F8 @ =gCurrentMove\n\ + strh r3, [r4]\n\ + b _08027426\n\ + .align 2, 0\n\ + _080273E0: .4byte gBattlersCount\n\ + _080273E4: .4byte gBattleStruct\n\ + _080273E8: .4byte gBattlerAttacker\n\ + _080273EC: .4byte 0x0000ffff\n\ + _080273F0: .4byte gHitMarker\n\ + _080273F4: .4byte 0xfffffbff\n\ + _080273F8: .4byte gCurrentMove\n\ + _080273FC:\n\ + mov r0, r8\n\ + cmp r0, 0\n\ + beq _0802746C\n\ + ldr r2, _08027450 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + ldr r1, _08027454 @ =0xfffffbff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r1, r8\n\ + bl __modsi3\n\ + adds r5, r0, 0\n\ + ldr r4, _08027458 @ =gCurrentMove\n\ + lsls r0, r5, 1\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + strh r0, [r4]\n\ + _08027426:\n\ + ldrh r0, [r4]\n\ + movs r1, 0\n\ + bl GetMoveTarget\n\ + ldr r1, _0802745C @ =gBattlerTarget\n\ + strb r0, [r1]\n\ + ldr r5, _08027460 @ =gBattlescriptCurrInstr\n\ + ldr r3, _08027464 @ =gBattleScriptsForMoveEffects\n\ + ldr r2, _08027468 @ =gBattleMoves\n\ + ldrh r1, [r4]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldr r0, [r0]\n\ + str r0, [r5]\n\ + b _0802748A\n\ + .align 2, 0\n\ + _08027450: .4byte gHitMarker\n\ + _08027454: .4byte 0xfffffbff\n\ + _08027458: .4byte gCurrentMove\n\ + _0802745C: .4byte gBattlerTarget\n\ + _08027460: .4byte gBattlescriptCurrInstr\n\ + _08027464: .4byte gBattleScriptsForMoveEffects\n\ + _08027468: .4byte gBattleMoves\n\ + _0802746C:\n\ + ldr r2, _0802749C @ =gSpecialStatuses\n\ + ldr r0, _080274A0 @ =gBattlerAttacker\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0]\n\ + movs r2, 0x20\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ + ldr r1, _080274A4 @ =gBattlescriptCurrInstr\n\ + ldr r0, [r1]\n\ + adds r0, 0x1\n\ + str r0, [r1]\n\ + _0802748A:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ + _0802749C: .4byte gSpecialStatuses\n\ + _080274A0: .4byte gBattlerAttacker\n\ + _080274A4: .4byte gBattlescriptCurrInstr\n\ + "); +} +#endif + +void atk7D_setrain(void) +{ + if (gBattleWeather & WEATHER_RAIN_ANY) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_RAIN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gWishFutureKnock.weatherDuration = 5; + } + ++gBattlescriptCurrInstr; +} + +void atk7E_setreflect(void) +{ + if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_REFLECT) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_REFLECT; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectTimer = 5; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectBattlerId = gBattlerAttacker; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + ++gBattlescriptCurrInstr; +} + +void atk7F_setseeded(void) +{ + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBattlerTarget] & STATUS3_LEECHSEED) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS)) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gStatuses3[gBattlerTarget] |= gBattlerAttacker; + gStatuses3[gBattlerTarget] |= STATUS3_LEECHSEED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + ++gBattlescriptCurrInstr; +} + +void atk80_manipulatedamage(void) +{ + switch (gBattlescriptCurrInstr[1]) + { + case ATK80_DMG_CHANGE_SIGN: + gBattleMoveDamage *= -1; + break; + case ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP: + gBattleMoveDamage /= 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + break; + case ATK80_DMG_DOUBLED: + gBattleMoveDamage *= 2; + break; + } + gBattlescriptCurrInstr += 2; +} + +void atk81_trysetrest(void) +{ + const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + gActiveBattler = gBattlerTarget = gBattlerAttacker; + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP * (-1); + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + { + gBattlescriptCurrInstr = failJump; + } + else + { + if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS1_SLEEP))) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleMons[gBattlerTarget].status1 = 3; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 5; + } +} + +void atk82_jumpifnotfirstturn(void) +{ + const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBattlerAttacker].isFirstTurn) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = failJump; +} + +void atk83_nop(void) +{ + ++gBattlescriptCurrInstr; +} + +bool8 UproarWakeUpCheck(u8 battlerId) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + { + if (!(gBattleMons[i].status2 & STATUS2_UPROAR) + || gBattleMons[battlerId].ability == ABILITY_SOUNDPROOF) + continue; + gBattleScripting.battler = i; + + if (gBattlerTarget == 0xFF) + gBattlerTarget = i; + else if (gBattlerTarget == i) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + break; + } + if (i == gBattlersCount) + return FALSE; + else + return TRUE; +} + +void atk84_jumpifcantmakeasleep(void) +{ + const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (UproarWakeUpCheck(gBattlerTarget)) + { + gBattlescriptCurrInstr = jumpPtr; + } + else if (gBattleMons[gBattlerTarget].ability == ABILITY_INSOMNIA + || gBattleMons[gBattlerTarget].ability == ABILITY_VITAL_SPIRIT) + { + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else + { + gBattlescriptCurrInstr += 5; + } +} + +void atk85_stockpile(void) +{ + if (gDisableStructs[gBattlerAttacker].stockpileCounter == 3) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + ++gDisableStructs[gBattlerAttacker].stockpileCounter; + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBattlerAttacker].stockpileCounter) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + ++gBattlescriptCurrInstr; +} + +void atk86_stockpiletobasedamage(void) +{ + const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBattlerAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jumpPtr; + } + else + { + if (gBattleCommunication[6] != 1) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, + gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)], 0, + 0, gBattlerAttacker, gBattlerTarget) + * gDisableStructs[gBattlerAttacker].stockpileCounter; + gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; + + if (gProtectStructs[gBattlerAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + } + gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + } +} + +void atk87_stockpiletohpheal(void) +{ + const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + + if (gDisableStructs[gBattlerAttacker].stockpileCounter == 0) + { + gBattlescriptCurrInstr = jumpPtr; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleMons[gBattlerAttacker].maxHP == gBattleMons[gBattlerAttacker].hp) + { + gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr = jumpPtr; + gBattlerTarget = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; + gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + gBattlescriptCurrInstr += 5; + gBattlerTarget = gBattlerAttacker; + } +} + +void atk88_negativedamage(void) +{ + gBattleMoveDamage = -(gHpDealt / 2); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + ++gBattlescriptCurrInstr; +} + +#define STAT_CHANGE_WORKED 0 +#define STAT_CHANGE_DIDNT_WORK 1 + +u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) +{ + bool8 certain = FALSE; + bool8 notProtectAffected = FALSE; + u32 index; + + if (flags & MOVE_EFFECT_AFFECTS_USER) + gActiveBattler = gBattlerAttacker; + else + gActiveBattler = gBattlerTarget; + flags &= ~(MOVE_EFFECT_AFFECTS_USER); + if (flags & MOVE_EFFECT_CERTAIN) + ++certain; + flags &= ~(MOVE_EFFECT_CERTAIN); + if (flags & STAT_CHANGE_NOT_PROTECT_AFFECTED) + ++notProtectAffected; + flags &= ~(STAT_CHANGE_NOT_PROTECT_AFFECTED); + PREPARE_STAT_BUFFER(gBattleTextBuff1, statId) + if (statValue <= -1) // Stat decrease. + { + if (gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer + && !certain && gCurrentMove != MOVE_CURSE) + { + if (flags == STAT_CHANGE_BS_PTR) + { + if (gSpecialStatuses[gActiveBattler].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } + else + { + BattleScriptPush(BS_ptr); + gBattleScripting.battler = gActiveBattler; + gBattlescriptCurrInstr = BattleScript_MistProtected; + gSpecialStatuses[gActiveBattler].statLowered = 1; + } + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gCurrentMove != MOVE_CURSE + && notProtectAffected != TRUE + && JumpIfMoveAffectedByProtect(0)) + { + gBattlescriptCurrInstr = BattleScript_ButItFailed; + return STAT_CHANGE_DIDNT_WORK; + } + else if ((gBattleMons[gActiveBattler].ability == ABILITY_CLEAR_BODY + || gBattleMons[gActiveBattler].ability == ABILITY_WHITE_SMOKE) + && !certain + && gCurrentMove != MOVE_CURSE) + { + if (flags == STAT_CHANGE_BS_PTR) + { + if (gSpecialStatuses[gActiveBattler].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } + else + { + BattleScriptPush(BS_ptr); + gBattleScripting.battler = gActiveBattler; + gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + RecordAbilityBattle(gActiveBattler, gLastUsedAbility); + gSpecialStatuses[gActiveBattler].statLowered = 1; + } + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE + && !certain && statId == STAT_ACC) + { + if (flags == STAT_CHANGE_BS_PTR) + { + BattleScriptPush(BS_ptr); + gBattleScripting.battler = gActiveBattler; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + RecordAbilityBattle(gActiveBattler, gLastUsedAbility); + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER + && !certain && statId == STAT_ATK) + { + if (flags == STAT_CHANGE_BS_PTR) + { + BattleScriptPush(BS_ptr); + gBattleScripting.battler = gActiveBattler; + gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; + gLastUsedAbility = gBattleMons[gActiveBattler].ability; + RecordAbilityBattle(gActiveBattler, gLastUsedAbility); + } + return STAT_CHANGE_DIDNT_WORK; + } + else if (gBattleMons[gActiveBattler].ability == ABILITY_SHIELD_DUST && !flags) + { + return STAT_CHANGE_DIDNT_WORK; + } + else // try to decrease + { + statValue = -GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + index = 1; + if (statValue == -2) + { + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATHARSHLY; + gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8; + index = 4; + } + gBattleTextBuff2[index++] = B_BUFF_STRING; + gBattleTextBuff2[index++] = STRINGID_STATFELL; + gBattleTextBuff2[index++] = STRINGID_STATFELL >> 8; + gBattleTextBuff2[index] = B_BUFF_EOS; + if (gBattleMons[gActiveBattler].statStages[statId] == 0) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler); + } + } + else // stat increase + { + statValue = GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + index = 1; + if (statValue == 2) + { + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; + index = 4; + } + gBattleTextBuff2[index++] = B_BUFF_STRING; + gBattleTextBuff2[index++] = STRINGID_STATROSE; + gBattleTextBuff2[index++] = STRINGID_STATROSE >> 8; + gBattleTextBuff2[index] = B_BUFF_EOS; + if (gBattleMons[gActiveBattler].statStages[statId] == 0xC) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler); + } + gBattleMons[gActiveBattler].statStages[statId] += statValue; + if (gBattleMons[gActiveBattler].statStages[statId] < 0) + gBattleMons[gActiveBattler].statStages[statId] = 0; + if (gBattleMons[gActiveBattler].statStages[statId] > 0xC) + gBattleMons[gActiveBattler].statStages[statId] = 0xC; + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR) + gMoveResultFlags |= MOVE_RESULT_MISSED; + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR)) + return STAT_CHANGE_DIDNT_WORK; + return STAT_CHANGE_WORKED; +} + +void atk89_statbuffchange(void) +{ + const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED) + gBattlescriptCurrInstr += 6; +} + +void atk8A_normalisebuffs(void) // haze +{ + s32 i, j; + + for (i = 0; i < gBattlersCount; ++i) + for (j = 0; j < NUM_BATTLE_STATS; ++j) + gBattleMons[i].statStages[j] = 6; + ++gBattlescriptCurrInstr; +} + +void atk8B_setbide(void) +{ + gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gBattlerAttacker] = gCurrentMove; + gTakenDmg[gBattlerAttacker] = 0; + gBattleMons[gBattlerAttacker].status2 |= (STATUS2_BIDE - 0x100); // 2 turns + ++gBattlescriptCurrInstr; +} + +void atk8C_confuseifrepeatingattackends(void) +{ + if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE)) + gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER); + ++gBattlescriptCurrInstr; +} + +void atk8D_setmultihitcounter(void) +{ + if (gBattlescriptCurrInstr[1]) + { + gMultiHitCounter = gBattlescriptCurrInstr[1]; + } + else + { + gMultiHitCounter = Random() & 3; + if (gMultiHitCounter > 1) + gMultiHitCounter = (Random() & 3) + 2; + else + gMultiHitCounter += 2; + } + gBattlescriptCurrInstr += 2; +} + +void atk8E_initmultihitstring(void) +{ + PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) + ++gBattlescriptCurrInstr; +} + +bool8 TryDoForceSwitchOut(void) +{ + if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + { + *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget]; + } + else + { + u16 random = Random() & 0xFF; + + if ((u32)((random * (gBattleMons[gBattlerAttacker].level + gBattleMons[gBattlerTarget].level) >> 8) + 1) <= (gBattleMons[gBattlerTarget].level / 4)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + return FALSE; + } + *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget]; + } + gBattlescriptCurrInstr = BattleScript_SuccessForceOut; + return TRUE; +} diff --git a/src/window.c b/src/window.c index 5ccd05f35..4aaa6d9b4 100644 --- a/src/window.c +++ b/src/window.c @@ -364,7 +364,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 FillBitmapRect4Bit(&pixelRect, x, y, width, height, fillValue); } -void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset) +void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset) { if (size != 0) CpuCopy16(src, gWindows[windowId].tileData + (0x20 * tileOffset), size); From ca130a8aeb39d05340495766a1f33dc854f6b4a1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 10:27:36 +0800 Subject: [PATCH 029/100] thru atkc0 --- asm/battle_script_commands.s | 6463 -------------------- include/battle.h | 14 +- include/battle_script_commands.h | 4 - include/constants/battle.h | 2 +- include/constants/battle_script_commands.h | 4 +- include/party_menu.h | 2 + src/battle_ai_script_commands.c | 4 +- src/battle_script_commands.c | 1489 ++++- src/battle_util.c | 10 +- 9 files changed, 1500 insertions(+), 6492 deletions(-) diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 68bff599e..5d8648ced 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,6469 +5,6 @@ .text - thumb_func_start atk8F_forcerandomswitch -atk8F_forcerandomswitch: @ 802830C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _080283A4 @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08028320 - b _080285F4 -_08028320: - ldr r5, _080283A8 @ =gBattlerTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - ldr r1, _080283AC @ =gEnemyParty - mov r8, r1 - cmp r0, 0 - bne _08028336 - ldr r0, _080283B0 @ =gPlayerParty - mov r8, r0 -_08028336: - ldr r0, [r4] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080283B4 - movs r7, 0 - movs r6, 0 - ldrb r0, [r5] - bl GetBattlerMultiplayerId - lsls r0, 24 - lsrs r0, 24 - bl GetLinkTrainerFlankId - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _0802835C - movs r6, 0x3 -_0802835C: - adds r5, r6, 0 - adds r0, r5, 0x3 - cmp r5, r0 - bge _080283F4 -_08028364: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08028396 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08028396 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08028396 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_08028396: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0x3 - cmp r5, r0 - blt _08028364 - b _080283F4 - .align 2, 0 -_080283A4: .4byte gBattleTypeFlags -_080283A8: .4byte gBattlerTarget -_080283AC: .4byte gEnemyParty -_080283B0: .4byte gPlayerParty -_080283B4: - movs r7, 0 - movs r5, 0 -_080283B8: - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080283EA - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080283EA - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080283EA - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_080283EA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080283B8 -_080283F4: - cmp r7, 0x1 - bhi _08028404 - ldr r0, _08028438 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _0802841C -_08028404: - cmp r7, 0x2 - bhi _08028440 - ldr r0, _08028438 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08028440 - movs r0, 0x40 - ands r1, r0 - cmp r1, 0 - bne _08028440 -_0802841C: - ldr r3, _0802843C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _080285F8 - .align 2, 0 -_08028438: .4byte gBattleTypeFlags -_0802843C: .4byte gBattlescriptCurrInstr -_08028440: - bl TryDoForceSwitchOut - lsls r0, 24 - cmp r0, 0 - bne _0802844C - b _080285F8 -_0802844C: - ldr r0, _0802848C @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080284F0 -_08028458: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08028490 @ =gBattlerTarget - ldrb r0, [r0] - bl GetBattlerMultiplayerId - lsls r0, 24 - lsrs r0, 24 - bl GetLinkTrainerFlankId - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _08028494 - adds r0, r6, 0x3 - lsls r0, 24 - lsrs r5, r0, 24 - b _08028496 - .align 2, 0 -_0802848C: .4byte gBattleTypeFlags -_08028490: .4byte gBattlerTarget -_08028494: - adds r5, r6, 0 -_08028496: - ldr r4, _080284E8 @ =gBattlerPartyIndexes - ldr r0, _080284EC @ =gBattlerTarget - ldrb r2, [r0] - lsls r1, r2, 1 - adds r1, r4 - lsls r0, r5, 16 - lsrs r3, r0, 16 - ldrh r1, [r1] - cmp r3, r1 - beq _08028458 - movs r0, 0x2 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - cmp r3, r0 - beq _08028458 - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08028458 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _08028458 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08028458 - b _080285AE - .align 2, 0 -_080284E8: .4byte gBattlerPartyIndexes -_080284EC: .4byte gBattlerTarget -_080284F0: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08028560 - ldr r6, _08028558 @ =gBattlerPartyIndexes -_080284FA: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0802855C @ =gBattlerTarget - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r6 - adds r2, r5, 0 - ldrh r0, [r0] - cmp r2, r0 - beq _080284FA - movs r0, 0x2 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r6 - ldrh r0, [r0] - cmp r2, r0 - beq _080284FA - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080284FA - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _080284FA - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080284FA - b _080285AE - .align 2, 0 -_08028558: .4byte gBattlerPartyIndexes -_0802855C: .4byte gBattlerTarget -_08028560: - ldr r6, _080285E8 @ =gBattlerPartyIndexes -_08028562: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080285EC @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - cmp r5, r0 - beq _08028562 - movs r0, 0x64 - muls r0, r5 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08028562 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0x1 - beq _08028562 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08028562 -_080285AE: - ldr r4, _080285EC @ =gBattlerTarget - ldrb r0, [r4] - ldr r1, _080285F0 @ =gBattleStruct - ldr r1, [r1] - adds r0, r1 - adds r0, 0x5C - strb r5, [r0] - bl IsMultiBattle - lsls r0, 24 - cmp r0, 0 - bne _080285CC - ldrb r0, [r4] - bl sub_8013F6C -_080285CC: - ldrb r0, [r4] - adds r1, r5, 0 - movs r2, 0 - bl sub_8127EC4 - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8127EC4 - b _080285F8 - .align 2, 0 -_080285E8: .4byte gBattlerPartyIndexes -_080285EC: .4byte gBattlerTarget -_080285F0: .4byte gBattleStruct -_080285F4: - bl TryDoForceSwitchOut -_080285F8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk8F_forcerandomswitch - - thumb_func_start atk90_tryconversiontypechange -atk90_tryconversiontypechange: @ 8028604 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - ldr r2, _08028698 @ =gBattleMons - ldr r3, _0802869C @ =gBattlerAttacker - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - mov r8, r2 - cmp r0, 0 - beq _08028646 - movs r5, 0x58 - adds r2, r1, 0 -_0802862C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _08028646 - lsls r1, r6, 1 - ldrb r0, [r3] - muls r0, r5 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - cmp r0, 0 - bne _0802862C -_08028646: - movs r3, 0 - cmp r3, r6 - bcs _080286C8 - ldr r0, _080286A0 @ =gBattleMoves - mov r10, r0 - ldr r5, _08028698 @ =gBattleMons - mov r12, r5 - ldr r7, _0802869C @ =gBattlerAttacker - ldrb r0, [r7] - movs r4, 0x58 - adds r5, r0, 0 - muls r5, r4 - movs r0, 0xC - add r0, r12 - mov r9, r0 -_08028664: - lsls r0, r3, 1 - adds r0, r5 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrb r2, [r0, 0x2] - cmp r2, 0x9 - bne _080286A6 - mov r0, r8 - adds r1, r5, r0 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _08028692 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _080286A4 -_08028692: - movs r2, 0x7 - b _080286A6 - .align 2, 0 -_08028698: .4byte gBattleMons -_0802869C: .4byte gBattlerAttacker -_080286A0: .4byte gBattleMoves -_080286A4: - movs r2, 0 -_080286A6: - ldrb r0, [r7] - muls r0, r4 - add r0, r12 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r2, r1 - beq _080286BE - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - bne _080286C8 -_080286BE: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r6 - bcc _08028664 -_080286C8: - cmp r3, r6 - bne _080286EC - ldr r3, _080286E8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08028790 - .align 2, 0 -_080286E8: .4byte gBattlescriptCurrInstr -_080286EC: - movs r7, 0x3 - ldr r5, _08028744 @ =gBattleMoves - mov r9, r5 -_080286F2: - bl Random - adds r3, r0, 0 - ands r3, r7 - cmp r3, r6 - bcs _080286F2 - ldr r4, _08028748 @ =gBattleMons - lsls r1, r3, 1 - ldr r3, _0802874C @ =gBattlerAttacker - ldrb r2, [r3] - movs r0, 0x58 - adds r5, r2, 0 - muls r5, r0 - adds r1, r5 - adds r0, r4, 0 - adds r0, 0xC - adds r1, r0 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldrb r2, [r0, 0x2] - mov r8, r4 - adds r4, r3, 0 - cmp r2, 0x9 - bne _08028752 - mov r0, r8 - adds r2, r5, r0 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x7 - beq _08028740 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x7 - bne _08028750 -_08028740: - movs r2, 0x7 - b _08028752 - .align 2, 0 -_08028744: .4byte gBattleMoves -_08028748: .4byte gBattleMons -_0802874C: .4byte gBattlerAttacker -_08028750: - movs r2, 0 -_08028752: - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - add r0, r8 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r5, [r1] - cmp r2, r5 - beq _080286F2 - adds r0, 0x22 - ldrb r0, [r0] - cmp r2, r0 - beq _080286F2 - strb r2, [r1] - ldrb r0, [r4] - muls r0, r3 - add r0, r8 - adds r0, 0x22 - strb r2, [r0] - ldr r1, _080287A0 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _080287A4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_08028790: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080287A0: .4byte gBattleTextBuff1 -_080287A4: .4byte gBattlescriptCurrInstr - thumb_func_end atk90_tryconversiontypechange - - thumb_func_start atk91_givepaydaymoney -atk91_givepaydaymoney: @ 80287A8 - push {r4,r5,lr} - ldr r0, _0802880C @ =gBattleTypeFlags - ldr r0, [r0] - movs r5, 0x2 - ands r0, r5 - cmp r0, 0 - bne _08028828 - ldr r1, _08028810 @ =gPaydayMoney - ldrh r0, [r1] - cmp r0, 0 - beq _08028828 - adds r1, r0, 0 - ldr r0, _08028814 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x4A - ldrb r0, [r0] - adds r4, r1, 0 - muls r4, r0 - ldr r0, _08028818 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r4, 0 - bl AddMoney - ldr r1, _0802881C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0x5 - strb r0, [r1, 0x3] - strb r4, [r1, 0x4] - movs r0, 0xFF - lsls r0, 8 - ands r4, r0 - lsrs r4, 8 - strb r4, [r1, 0x5] - movs r0, 0xFF - strb r0, [r1, 0x6] - ldr r4, _08028820 @ =gBattlescriptCurrInstr - ldr r0, [r4] - adds r0, 0x1 - bl BattleScriptPush - ldr r0, _08028824 @ =BattleScript_PrintPayDayMoneyString - str r0, [r4] - b _08028830 - .align 2, 0 -_0802880C: .4byte gBattleTypeFlags -_08028810: .4byte gPaydayMoney -_08028814: .4byte gBattleStruct -_08028818: .4byte gSaveBlock1Ptr -_0802881C: .4byte gBattleTextBuff1 -_08028820: .4byte gBattlescriptCurrInstr -_08028824: .4byte BattleScript_PrintPayDayMoneyString -_08028828: - ldr r1, _08028838 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08028830: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08028838: .4byte gBattlescriptCurrInstr - thumb_func_end atk91_givepaydaymoney - - thumb_func_start atk92_setlightscreen -atk92_setlightscreen: @ 802883C - push {r4-r6,lr} - ldr r5, _0802886C @ =gBattlerAttacker - ldrb r0, [r5] - bl GetBattlerPosition - ldr r4, _08028870 @ =gSideStatuses - movs r6, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0802887C - ldr r2, _08028874 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08028878 @ =gBattleCommunication - movs r0, 0 - b _080288F0 - .align 2, 0 -_0802886C: .4byte gBattlerAttacker -_08028870: .4byte gSideStatuses -_08028874: .4byte gMoveResultFlags -_08028878: .4byte gBattleCommunication -_0802887C: - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r5] - bl GetBattlerPosition - ldr r4, _080288E0 @ =gSideTimers - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0, 0x2] - ldrb r0, [r5] - bl GetBattlerPosition - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r5] - strb r1, [r0, 0x3] - ldr r0, _080288E4 @ =gBattleTypeFlags - ldr r0, [r0] - ands r0, r6 - cmp r0, 0 - beq _080288EC - movs r0, 0x1 - bl CountAliveMonsInBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080288EC - ldr r1, _080288E8 @ =gBattleCommunication - movs r0, 0x4 - b _080288F0 - .align 2, 0 -_080288E0: .4byte gSideTimers -_080288E4: .4byte gBattleTypeFlags -_080288E8: .4byte gBattleCommunication -_080288EC: - ldr r1, _08028900 @ =gBattleCommunication - movs r0, 0x3 -_080288F0: - strb r0, [r1, 0x5] - ldr r1, _08028904 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08028900: .4byte gBattleCommunication -_08028904: .4byte gBattlescriptCurrInstr - thumb_func_end atk92_setlightscreen - - thumb_func_start atk93_tryKO -atk93_tryKO: @ 8028908 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r7, _08028934 @ =gBattleMons - ldr r6, _08028938 @ =gBattlerTarget - ldrb r2, [r6] - movs r5, 0x58 - adds r0, r2, 0 - muls r0, r5 - adds r1, r0, r7 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08028940 - ldr r1, _0802893C @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x7] - ldrb r6, [r0, 0x1A] - b _0802895A - .align 2, 0 -_08028934: .4byte gBattleMons -_08028938: .4byte gBattlerTarget -_0802893C: .4byte gEnigmaBerries -_08028940: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7 - ldrh r0, [r0, 0x2E] - bl ItemId_GetHoldEffectParam - lsls r0, 24 - lsrs r6, r0, 24 -_0802895A: - ldr r1, _080289D4 @ =gPotentialItemEffectBattler - ldr r5, _080289D8 @ =gBattlerTarget - ldrb r0, [r5] - strb r0, [r1] - cmp r4, 0x27 - bne _08028998 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcs _08028998 - ldrb r0, [r5] - movs r1, 0x27 - bl RecordItemEffectBattle - ldr r2, _080289DC @ =gSpecialStatuses - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_08028998: - ldr r1, _080289E0 @ =gBattleMons - ldr r2, _080289D8 @ =gBattlerTarget - ldrb r3, [r2] - movs r6, 0x58 - adds r0, r3, 0 - muls r0, r6 - adds r5, r0, r1 - adds r0, r5, 0 - adds r0, 0x20 - ldrb r4, [r0] - mov r8, r1 - mov r9, r2 - cmp r4, 0x5 - bne _080289F4 - ldr r2, _080289E4 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080289E8 @ =gLastUsedAbility - strb r4, [r0] - ldr r1, _080289EC @ =gBattlescriptCurrInstr - ldr r0, _080289F0 @ =BattleScript_SturdyPreventsOHKO - str r0, [r1] - mov r1, r9 - ldrb r0, [r1] - movs r1, 0x5 - bl RecordAbilityBattle - b _08028C48 - .align 2, 0 -_080289D4: .4byte gPotentialItemEffectBattler -_080289D8: .4byte gBattlerTarget -_080289DC: .4byte gSpecialStatuses -_080289E0: .4byte gBattleMons -_080289E4: .4byte gMoveResultFlags -_080289E8: .4byte gLastUsedAbility -_080289EC: .4byte gBattlescriptCurrInstr -_080289F0: .4byte BattleScript_SturdyPreventsOHKO -_080289F4: - ldr r1, _08028A68 @ =gStatuses3 - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x18 - ands r0, r1 - cmp r0, 0 - bne _08028A78 - ldr r1, _08028A6C @ =gBattleMoves - ldr r0, _08028A70 @ =gCurrentMove - ldrh r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r7, _08028A74 @ =gBattlerAttacker - ldrb r0, [r7] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x2A - ldrb r1, [r1] - subs r0, r1 - ldrb r2, [r2, 0x3] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - blt _08028A48 - b _08028BE0 -_08028A48: - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r8 - adds r1, 0x2A - mov r2, r9 - ldrb r0, [r2] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - ldrb r1, [r1] - movs r4, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bcs _08028B0E - b _08028BE0 - .align 2, 0 -_08028A68: .4byte gStatuses3 -_08028A6C: .4byte gBattleMoves -_08028A70: .4byte gCurrentMove -_08028A74: .4byte gBattlerAttacker -_08028A78: - ldr r1, _08028B44 @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldr r1, _08028B48 @ =gBattlerAttacker - ldrb r0, [r0, 0x15] - adds r7, r1, 0 - ldrb r3, [r7] - cmp r0, r3 - bne _08028AA2 - ldrb r0, [r7] - muls r0, r6 - add r0, r8 - adds r0, 0x2A - adds r1, r5, 0 - adds r1, 0x2A - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _08028B1A -_08028AA2: - ldr r1, _08028B4C @ =gBattleMoves - ldr r0, _08028B50 @ =gCurrentMove - ldrh r0, [r0] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldr r6, _08028B54 @ =gBattleMons - ldrb r0, [r7] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r0] - ldr r0, _08028B58 @ =gBattlerTarget - mov r8, r0 - ldrb r0, [r0] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r0, [r0] - subs r1, r0 - ldrb r2, [r2, 0x3] - adds r1, r2 - lsls r1, 16 - lsrs r4, r1, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x1 - cmp r0, r4 - bge _08028B0C - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r5 - adds r1, r6 - adds r1, 0x2A - mov r2, r8 - ldrb r0, [r2] - muls r0, r5 - adds r0, r6 - adds r0, 0x2A - ldrb r1, [r1] - movs r4, 0x1 - ldrb r0, [r0] - cmp r1, r0 - bcs _08028B0E -_08028B0C: - movs r4, 0 -_08028B0E: - ldr r3, _08028B54 @ =gBattleMons - mov r8, r3 - ldr r0, _08028B58 @ =gBattlerTarget - mov r9, r0 - cmp r4, 0 - beq _08028BE0 -_08028B1A: - ldr r0, _08028B5C @ =gProtectStructs - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 30 - cmp r0, 0 - bge _08028B68 - ldr r1, _08028B60 @ =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r8 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, _08028B64 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x40 - b _08028BC6 - .align 2, 0 -_08028B44: .4byte gDisableStructs -_08028B48: .4byte gBattlerAttacker -_08028B4C: .4byte gBattleMoves -_08028B50: .4byte gCurrentMove -_08028B54: .4byte gBattleMons -_08028B58: .4byte gBattlerTarget -_08028B5C: .4byte gProtectStructs -_08028B60: .4byte gBattleMoveDamage -_08028B64: .4byte gMoveResultFlags -_08028B68: - ldr r0, _08028BA4 @ =gSpecialStatuses - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _08028BB4 - ldr r1, _08028BA8 @ =gBattleMoveDamage - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x28] - subs r0, 0x1 - str r0, [r1] - ldr r2, _08028BAC @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08028BB0 @ =gLastUsedItem - mov r2, r9 - ldrb r0, [r2] - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x2E] - strh r0, [r1] - b _08028BCA - .align 2, 0 -_08028BA4: .4byte gSpecialStatuses -_08028BA8: .4byte gBattleMoveDamage -_08028BAC: .4byte gMoveResultFlags -_08028BB0: .4byte gLastUsedItem -_08028BB4: - ldr r1, _08028BD4 @ =gBattleMoveDamage - movs r0, 0x58 - muls r0, r2 - add r0, r8 - ldrh r0, [r0, 0x28] - str r0, [r1] - ldr r2, _08028BD8 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x10 -_08028BC6: - orrs r0, r1 - strb r0, [r2] -_08028BCA: - ldr r1, _08028BDC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08028C48 - .align 2, 0 -_08028BD4: .4byte gBattleMoveDamage -_08028BD8: .4byte gMoveResultFlags -_08028BDC: .4byte gBattlescriptCurrInstr -_08028BE0: - ldr r2, _08028C14 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r3, _08028C18 @ =gBattleMons - ldr r0, _08028C1C @ =gBattlerAttacker - ldrb r0, [r0] - movs r2, 0x58 - adds r1, r0, 0 - muls r1, r2 - adds r1, r3 - adds r1, 0x2A - ldr r0, _08028C20 @ =gBattlerTarget - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x2A - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bcc _08028C28 - ldr r1, _08028C24 @ =gBattleCommunication - movs r0, 0 - b _08028C2C - .align 2, 0 -_08028C14: .4byte gMoveResultFlags -_08028C18: .4byte gBattleMons -_08028C1C: .4byte gBattlerAttacker -_08028C20: .4byte gBattlerTarget -_08028C24: .4byte gBattleCommunication -_08028C28: - ldr r1, _08028C54 @ =gBattleCommunication - movs r0, 0x1 -_08028C2C: - strb r0, [r1, 0x5] - ldr r3, _08028C58 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08028C48: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08028C54: .4byte gBattleCommunication -_08028C58: .4byte gBattlescriptCurrInstr - thumb_func_end atk93_tryKO - - thumb_func_start atk94_damagetohalftargethp -atk94_damagetohalftargethp: @ 8028C5C - push {lr} - ldr r3, _08028C88 @ =gBattleMoveDamage - ldr r2, _08028C8C @ =gBattleMons - ldr r0, _08028C90 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - lsrs r0, 1 - str r0, [r3] - cmp r0, 0 - bne _08028C7A - movs r0, 0x1 - str r0, [r3] -_08028C7A: - ldr r1, _08028C94 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08028C88: .4byte gBattleMoveDamage -_08028C8C: .4byte gBattleMons -_08028C90: .4byte gBattlerTarget -_08028C94: .4byte gBattlescriptCurrInstr - thumb_func_end atk94_damagetohalftargethp - - thumb_func_start atk95_setsandstorm -atk95_setsandstorm: @ 8028C98 - push {lr} - ldr r2, _08028CB8 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08028CC4 - ldr r2, _08028CBC @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _08028CC0 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _08028CD6 - .align 2, 0 -_08028CB8: .4byte gBattleWeather -_08028CBC: .4byte gMoveResultFlags -_08028CC0: .4byte gBattleCommunication -_08028CC4: - movs r0, 0x8 - strh r0, [r2] - ldr r1, _08028CE4 @ =gBattleCommunication - movs r0, 0x3 - strb r0, [r1, 0x5] - ldr r0, _08028CE8 @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_08028CD6: - ldr r1, _08028CEC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08028CE4: .4byte gBattleCommunication -_08028CE8: .4byte gWishFutureKnock -_08028CEC: .4byte gBattlescriptCurrInstr - thumb_func_end atk95_setsandstorm - - thumb_func_start atk96_weatherdamage -atk96_weatherdamage: @ 8028CF0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, _08028DBC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0xA0 - lsls r1, 8 - ands r0, r1 - movs r1, 0x80 - lsls r1, 8 - cmp r0, r1 - bne _08028D18 - ldr r0, _08028DC0 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08028D18 - b _08028E64 -_08028D18: - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08028D32 - b _08028E48 -_08028D32: - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08028D48 - b _08028E48 -_08028D48: - ldr r2, _08028DC4 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x18 - ands r0, r1 - ldr r5, _08028DC0 @ =gBattlerAttacker - adds r4, r2, 0 - cmp r0, 0 - beq _08028DDA - ldr r0, _08028DC8 @ =gBattleMons - ldrb r2, [r5] - movs r1, 0x58 - muls r1, r2 - adds r3, r1, r0 - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08028DD4 - cmp r0, 0x8 - beq _08028DD4 - cmp r0, 0x4 - beq _08028DD4 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08028DD4 - cmp r0, 0x8 - beq _08028DD4 - cmp r0, 0x4 - beq _08028DD4 - adds r0, r3, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x8 - beq _08028DD4 - ldr r0, _08028DCC @ =gStatuses3 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08028DD4 - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08028DD4 - ldr r1, _08028DD0 @ =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08028DDA - movs r0, 0x1 - b _08028DD8 - .align 2, 0 -_08028DBC: .4byte gBattleTypeFlags -_08028DC0: .4byte gBattlerAttacker -_08028DC4: .4byte gBattleWeather -_08028DC8: .4byte gBattleMons -_08028DCC: .4byte gStatuses3 -_08028DD0: .4byte gBattleMoveDamage -_08028DD4: - ldr r1, _08028E30 @ =gBattleMoveDamage - movs r0, 0 -_08028DD8: - str r0, [r1] -_08028DDA: - ldrh r1, [r4] - movs r4, 0x80 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08028E50 - ldr r1, _08028E34 @ =gBattleMons - ldrb r3, [r5] - movs r0, 0x58 - muls r0, r3 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0xF - beq _08028E3C - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xF - beq _08028E3C - ldr r0, _08028E38 @ =gStatuses3 - lsls r1, r3, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _08028E3C - movs r0, 0x80 - lsls r0, 11 - ands r1, r0 - cmp r1, 0 - bne _08028E3C - ldr r1, _08028E30 @ =gBattleMoveDamage - ldrh r0, [r2, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08028E50 - movs r0, 0x1 - str r0, [r1] - b _08028E50 - .align 2, 0 -_08028E30: .4byte gBattleMoveDamage -_08028E34: .4byte gBattleMons -_08028E38: .4byte gStatuses3 -_08028E3C: - ldr r1, _08028E44 @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - b _08028E50 - .align 2, 0 -_08028E44: .4byte gBattleMoveDamage -_08028E48: - ldr r1, _08028E7C @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r5, _08028E80 @ =gBattlerAttacker -_08028E50: - ldr r0, _08028E84 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08028E88 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08028E6A -_08028E64: - ldr r1, _08028E7C @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] -_08028E6A: - ldr r1, _08028E8C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08028E7C: .4byte gBattleMoveDamage -_08028E80: .4byte gBattlerAttacker -_08028E84: .4byte gAbsentBattlerFlags -_08028E88: .4byte gBitTable -_08028E8C: .4byte gBattlescriptCurrInstr - thumb_func_end atk96_weatherdamage - - thumb_func_start atk97_tryinfatuating -atk97_tryinfatuating: @ 8028E90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08028EBC @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08028EC8 - ldr r1, _08028EC0 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08028EC4 @ =gPlayerParty - b _08028ED8 - .align 2, 0 -_08028EBC: .4byte gBattlerAttacker -_08028EC0: .4byte gBattlerPartyIndexes -_08028EC4: .4byte gPlayerParty -_08028EC8: - ldr r1, _08028EFC @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08028F00 @ =gEnemyParty -_08028ED8: - adds r5, r1, r0 - ldr r4, _08028F04 @ =gBattlerTarget - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08028F0C - ldr r1, _08028EFC @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08028F08 @ =gPlayerParty - b _08028F1C - .align 2, 0 -_08028EFC: .4byte gBattlerPartyIndexes -_08028F00: .4byte gEnemyParty -_08028F04: .4byte gBattlerTarget -_08028F08: .4byte gPlayerParty -_08028F0C: - ldr r1, _08028F78 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08028F7C @ =gEnemyParty -_08028F1C: - adds r4, r1, r0 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - mov r9, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r7, r0, 0 - ldr r5, _08028F80 @ =gBattlerTarget - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - ldr r1, _08028F84 @ =gBattleMons - adds r0, r1 - adds r0, 0x20 - ldrb r2, [r0] - cmp r2, 0xC - bne _08028F94 - ldr r1, _08028F88 @ =gBattlescriptCurrInstr - ldr r0, _08028F8C @ =BattleScript_ObliviousPreventsAttraction - str r0, [r1] - ldr r0, _08028F90 @ =gLastUsedAbility - strb r2, [r0] - ldrb r0, [r5] - movs r1, 0xC - bl RecordAbilityBattle - b _0802902C - .align 2, 0 -_08028F78: .4byte gBattlerPartyIndexes -_08028F7C: .4byte gEnemyParty -_08028F80: .4byte gBattlerTarget -_08028F84: .4byte gBattleMons -_08028F88: .4byte gBattlescriptCurrInstr -_08028F8C: .4byte BattleScript_ObliviousPreventsAttraction -_08028F90: .4byte gLastUsedAbility -_08028F94: - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - adds r4, r0, 0 - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08028FE4 - ldrb r0, [r5] - muls r0, r6 - ldr r4, _08029000 @ =gBattleMons - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xF0 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - bne _08028FE4 - mov r0, r10 - mov r1, r9 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08028FE4 - mov r0, r8 - adds r1, r7, 0 - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08029008 -_08028FE4: - ldr r3, _08029004 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802902C - .align 2, 0 -_08029000: .4byte gBattleMons -_08029004: .4byte gBattlescriptCurrInstr -_08029008: - ldrb r0, [r5] - adds r2, r0, 0 - muls r2, r6 - adds r2, r4 - ldr r1, _0802903C @ =gBitTable - ldr r0, _08029040 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r1, _08029044 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802902C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802903C: .4byte gBitTable -_08029040: .4byte gBattlerAttacker -_08029044: .4byte gBattlescriptCurrInstr - thumb_func_end atk97_tryinfatuating - - thumb_func_start atk98_updatestatusicon -atk98_updatestatusicon: @ 8029048 - push {r4-r7,lr} - ldr r0, _080290B8 @ =gBattleControllerExecFlags - ldr r1, [r0] - cmp r1, 0 - beq _08029054 - b _080291C0 -_08029054: - ldr r5, _080290BC @ =gBattlescriptCurrInstr - ldr r2, [r5] - ldrb r0, [r2, 0x1] - cmp r0, 0xD - bne _080290D4 - ldr r2, _080290C0 @ =gActiveBattler - strb r1, [r2] - ldr r0, _080290C4 @ =gBattlersCount - ldrb r0, [r0] - cmp r1, r0 - bcs _08029164 - ldr r7, _080290C8 @ =gBitTable - adds r4, r2, 0 - ldr r5, _080290CC @ =gBattleMons - adds r6, r5, 0 - adds r6, 0x50 -_08029074: - ldr r0, _080290D0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080290A2 - movs r0, 0x58 - muls r2, r0 - adds r0, r5, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r2, r6 - ldr r2, [r2] - movs r0, 0 - bl BtlController_EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080290A2: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080290C4 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08029074 - b _08029164 - .align 2, 0 -_080290B8: .4byte gBattleControllerExecFlags -_080290BC: .4byte gBattlescriptCurrInstr -_080290C0: .4byte gActiveBattler -_080290C4: .4byte gBattlersCount -_080290C8: .4byte gBitTable -_080290CC: .4byte gBattleMons -_080290D0: .4byte gAbsentBattlerFlags -_080290D4: - cmp r0, 0x4 - bne _0802918C - ldr r4, _08029170 @ =gActiveBattler - ldr r5, _08029174 @ =gBattlerAttacker - ldrb r0, [r5] - strb r0, [r4] - ldr r6, _08029178 @ =gAbsentBattlerFlags - ldrb r1, [r6] - ldr r7, _0802917C @ =gBitTable - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08029114 - ldr r3, _08029180 @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl BtlController_EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08029114: - ldr r0, _08029184 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08029164 - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - strb r0, [r4] - ldrb r1, [r6] - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08029164 - ldr r3, _08029180 @ =gBattleMons - movs r0, 0x58 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl BtlController_EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08029164: - ldr r1, _08029188 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x2 - str r0, [r1] - b _080291C0 - .align 2, 0 -_08029170: .4byte gActiveBattler -_08029174: .4byte gBattlerAttacker -_08029178: .4byte gAbsentBattlerFlags -_0802917C: .4byte gBitTable -_08029180: .4byte gBattleMons -_08029184: .4byte gBattleTypeFlags -_08029188: .4byte gBattlescriptCurrInstr -_0802918C: - ldrb r0, [r2, 0x1] - bl GetBattlerForBattleScript - ldr r4, _080291C8 @ =gActiveBattler - strb r0, [r4] - ldr r3, _080291CC @ =gBattleMons - ldrb r1, [r4] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r3, 0 - adds r0, 0x4C - adds r0, r2, r0 - ldr r1, [r0] - adds r3, 0x50 - adds r2, r3 - ldr r2, [r2] - movs r0, 0 - bl BtlController_EmitStatusIconUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] -_080291C0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080291C8: .4byte gActiveBattler -_080291CC: .4byte gBattleMons - thumb_func_end atk98_updatestatusicon - - thumb_func_start atk99_setmist -atk99_setmist: @ 80291D0 - push {r4-r6,lr} - ldr r6, _08029200 @ =gSideTimers - ldr r4, _08029204 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerPosition - movs r5, 0x1 - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08029210 - ldr r2, _08029208 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0802920C @ =gBattleCommunication - strb r5, [r0, 0x5] - b _0802925E - .align 2, 0 -_08029200: .4byte gSideTimers -_08029204: .4byte gBattlerAttacker -_08029208: .4byte gMoveResultFlags -_0802920C: .4byte gBattleCommunication -_08029210: - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strb r1, [r0, 0x4] - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r5, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r4] - strb r1, [r0, 0x5] - ldrb r0, [r4] - bl GetBattlerPosition - ldr r2, _0802926C @ =gSideStatuses - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - movs r3, 0 - orrs r0, r2 - strh r0, [r1] - ldr r0, _08029270 @ =gBattleCommunication - strb r3, [r0, 0x5] -_0802925E: - ldr r1, _08029274 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802926C: .4byte gSideStatuses -_08029270: .4byte gBattleCommunication -_08029274: .4byte gBattlescriptCurrInstr - thumb_func_end atk99_setmist - - thumb_func_start atk9A_setfocusenergy -atk9A_setfocusenergy: @ 8029278 - push {lr} - ldr r1, _080292A8 @ =gBattleMons - ldr r0, _080292AC @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r3, 0x80 - lsls r3, 13 - adds r2, r1, 0 - ands r2, r3 - cmp r2, 0 - beq _080292B8 - ldr r2, _080292B0 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080292B4 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080292C0 - .align 2, 0 -_080292A8: .4byte gBattleMons -_080292AC: .4byte gBattlerAttacker -_080292B0: .4byte gMoveResultFlags -_080292B4: .4byte gBattleCommunication -_080292B8: - orrs r1, r3 - str r1, [r0] - ldr r0, _080292CC @ =gBattleCommunication - strb r2, [r0, 0x5] -_080292C0: - ldr r1, _080292D0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080292CC: .4byte gBattleCommunication -_080292D0: .4byte gBattlescriptCurrInstr - thumb_func_end atk9A_setfocusenergy - - thumb_func_start atk9B_transformdataexecution -atk9B_transformdataexecution: @ 80292D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0802932C @ =gChosenMove - ldr r2, _08029330 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08029334 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r7, _08029338 @ =gBattleMons - ldr r0, _0802933C @ =gBattlerTarget - mov r12, r0 - ldrb r1, [r0] - movs r6, 0x58 - adds r0, r1, 0 - muls r0, r6 - adds r5, r7, 0 - adds r5, 0x50 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x80 - lsls r4, 14 - ands r0, r4 - cmp r0, 0 - bne _0802931A - ldr r0, _08029340 @ =gStatuses3 - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - ldr r0, _08029344 @ =0x000400c0 - ands r2, r0 - cmp r2, 0 - beq _08029350 -_0802931A: - ldr r2, _08029348 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802934C @ =gBattleCommunication - movs r0, 0x1 - b _08029464 - .align 2, 0 -_0802932C: .4byte gChosenMove -_08029330: .4byte 0x0000ffff -_08029334: .4byte gBattlescriptCurrInstr -_08029338: .4byte gBattleMons -_0802933C: .4byte gBattlerTarget -_08029340: .4byte gStatuses3 -_08029344: .4byte 0x000400c0 -_08029348: .4byte gMoveResultFlags -_0802934C: .4byte gBattleCommunication -_08029350: - ldr r3, _08029424 @ =gBattlerAttacker - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r6 - adds r1, r5 - ldr r0, [r1] - orrs r0, r4 - str r0, [r1] - ldr r4, _08029428 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x4] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r12 - ldrb r1, [r2] - muls r1, r6 - adds r2, r7, 0 - adds r2, 0x48 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x18] - movs r0, 0xF - ands r0, r2 - strb r0, [r1, 0x18] - ldr r1, _0802942C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - mov r2, r12 - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r0, [r3] - muls r0, r6 - adds r5, r0, r7 - ldrb r0, [r2] - muls r0, r6 - adds r2, r0, r7 - movs r4, 0 - adds r6, r3, 0 - ldr r0, _08029430 @ =gActiveBattler - mov r8, r0 -_080293E8: - adds r0, r5, r4 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x23 - bls _080293E8 - movs r4, 0 - ldr r7, _08029434 @ =gBattleMoves - ldr r3, _08029438 @ =gUnknown_2023BF0 - adds r5, r3, 0 - adds r5, 0x18 -_08029400: - lsls r1, r4, 1 - ldrb r2, [r6] - movs r0, 0x58 - muls r2, r0 - adds r1, r2 - adds r1, r3 - ldrh r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r1, [r0, 0x4] - cmp r1, 0x4 - bhi _0802943C - adds r0, r4, r2 - adds r0, r5 - b _08029442 - .align 2, 0 -_08029424: .4byte gBattlerAttacker -_08029428: .4byte gDisableStructs -_0802942C: .4byte gBattleTextBuff1 -_08029430: .4byte gActiveBattler -_08029434: .4byte gBattleMoves -_08029438: .4byte gUnknown_2023BF0 -_0802943C: - adds r0, r4, r2 - adds r0, r5 - movs r1, 0x5 -_08029442: - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x3 - ble _08029400 - ldrb r0, [r6] - mov r1, r8 - strb r0, [r1] - movs r0, 0 - movs r1, 0x2 - bl BtlController_EmitResetActionMoveSelection - mov r2, r8 - ldrb r0, [r2] - bl MarkBattlerForControllerExec - ldr r1, _08029470 @ =gBattleCommunication - movs r0, 0 -_08029464: - strb r0, [r1, 0x5] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029470: .4byte gBattleCommunication - thumb_func_end atk9B_transformdataexecution - - thumb_func_start atk9C_setsubstitute -atk9C_setsubstitute: @ 8029474 - push {r4-r7,lr} - ldr r7, _080294A4 @ =gBattleMons - ldr r6, _080294A8 @ =gBattlerAttacker - ldrb r0, [r6] - movs r5, 0x58 - muls r0, r5 - adds r3, r0, r7 - ldrh r0, [r3, 0x2C] - lsrs r1, r0, 2 - adds r2, r1, 0 - cmp r1, 0 - bne _0802948E - movs r2, 0x1 -_0802948E: - ldrh r0, [r3, 0x28] - cmp r0, r2 - bhi _080294B4 - ldr r1, _080294AC @ =gBattleMoveDamage - movs r0, 0 - str r0, [r1] - ldr r1, _080294B0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08029508 - .align 2, 0 -_080294A4: .4byte gBattleMons -_080294A8: .4byte gBattlerAttacker -_080294AC: .4byte gBattleMoveDamage -_080294B0: .4byte gBattleCommunication -_080294B4: - ldr r4, _08029518 @ =gBattleMoveDamage - str r1, [r4] - cmp r1, 0 - bne _080294C0 - movs r0, 0x1 - str r0, [r4] -_080294C0: - ldrb r0, [r6] - adds r2, r0, 0 - muls r2, r5 - adds r3, r7, 0 - adds r3, 0x50 - adds r2, r3 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 17 - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r3 - ldr r0, [r1] - ldr r2, _0802951C @ =0xffff1fff - ands r0, r2 - str r0, [r1] - ldr r2, _08029520 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, [r4] - movs r2, 0 - strb r1, [r0, 0xA] - ldr r0, _08029524 @ =gBattleCommunication - strb r2, [r0, 0x5] - ldr r2, _08029528 @ =gHitMarker - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 1 - orrs r0, r1 - str r0, [r2] -_08029508: - ldr r1, _0802952C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029518: .4byte gBattleMoveDamage -_0802951C: .4byte 0xffff1fff -_08029520: .4byte gDisableStructs -_08029524: .4byte gBattleCommunication -_08029528: .4byte gHitMarker -_0802952C: .4byte gBattlescriptCurrInstr - thumb_func_end atk9C_setsubstitute - - thumb_func_start IsMoveUncopyableByMimic -IsMoveUncopyableByMimic: @ 8029530 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r3, 0 - ldr r0, _08029570 @ =sMovesForbiddenToCopy - ldrh r1, [r0] - ldr r4, _08029574 @ =0x0000fffe - adds r5, r0, 0 - cmp r1, r4 - beq _08029558 - cmp r1, r2 - beq _08029558 - adds r1, r5, 0 -_0802954A: - adds r1, 0x2 - adds r3, 0x1 - ldrh r0, [r1] - cmp r0, r4 - beq _08029558 - cmp r0, r2 - bne _0802954A -_08029558: - lsls r0, r3, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r0, _08029574 @ =0x0000fffe - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08029570: .4byte sMovesForbiddenToCopy -_08029574: .4byte 0x0000fffe - thumb_func_end IsMoveUncopyableByMimic - - thumb_func_start atk9D_mimicattackcopy -atk9D_mimicattackcopy: @ 8029578 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080295F0 @ =gChosenMove - ldr r1, _080295F4 @ =0x0000ffff - adds r7, r1, 0 - strh r7, [r0] - ldr r5, _080295F8 @ =gLastMoves - ldr r6, _080295FC @ =gBattlerTarget - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - bl IsMoveUncopyableByMimic - lsls r0, 24 - cmp r0, 0 - bne _080295D2 - ldr r3, _08029600 @ =gBattleMons - ldr r2, _08029604 @ =gBattlerAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r9, r2 - cmp r1, 0 - bne _080295D2 - ldrb r0, [r6] - lsls r0, 1 - adds r0, r5 - ldrh r1, [r0] - cmp r1, 0 - beq _080295D2 - cmp r1, r7 - bne _0802960C -_080295D2: - ldr r3, _08029608 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08029744 - .align 2, 0 -_080295F0: .4byte gChosenMove -_080295F4: .4byte 0x0000ffff -_080295F8: .4byte gLastMoves -_080295FC: .4byte gBattlerTarget -_08029600: .4byte gBattleMons -_08029604: .4byte gBattlerAttacker -_08029608: .4byte gBattlescriptCurrInstr -_0802960C: - movs r2, 0 - mov r3, r12 - adds r3, 0xC - adds r0, r4, r3 - ldrh r0, [r0] - ldr r4, _0802969C @ =gBattlescriptCurrInstr - mov r10, r4 - cmp r0, r1 - beq _08029646 - mov r8, r3 - adds r7, r5, 0 - adds r5, r6, 0 - mov r4, r9 - movs r3, 0x58 -_08029628: - adds r2, 0x1 - cmp r2, 0x3 - bgt _08029646 - lsls r1, r2, 1 - ldrb r0, [r4] - muls r0, r3 - adds r1, r0 - add r1, r8 - ldrb r0, [r5] - lsls r0, 1 - adds r0, r7 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - bne _08029628 -_08029646: - cmp r2, 0x4 - bne _08029728 - ldr r5, _080296A0 @ =gCurrMovePos - ldrb r1, [r5] - lsls r1, 1 - mov r2, r9 - ldrb r0, [r2] - movs r6, 0x58 - muls r0, r6 - adds r1, r0 - mov r0, r12 - adds r0, 0xC - adds r1, r0 - ldr r2, _080296A4 @ =gLastMoves - ldr r3, _080296A8 @ =gBattlerTarget - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - ldr r4, _080296AC @ =gBattleMoves - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r4, [r0, 0x4] - cmp r4, 0x4 - bhi _080296B0 - mov r1, r9 - ldrb r0, [r1] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - strb r4, [r0] - b _080296C4 - .align 2, 0 -_0802969C: .4byte gBattlescriptCurrInstr -_080296A0: .4byte gCurrMovePos -_080296A4: .4byte gLastMoves -_080296A8: .4byte gBattlerTarget -_080296AC: .4byte gBattleMoves -_080296B0: - mov r4, r9 - ldrb r0, [r4] - muls r0, r6 - ldrb r1, [r5] - adds r0, r1 - mov r1, r12 - adds r1, 0x24 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] -_080296C4: - ldr r1, _0802971C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _08029720 @ =gDisableStructs - mov r2, r9 - ldrb r0, [r2] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r4, [r2, 0x18] - lsrs r3, r4, 4 - ldr r1, _08029724 @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - orrs r1, r3 - lsls r1, 4 - movs r0, 0xF - ands r0, r4 - orrs r0, r1 - strb r0, [r2, 0x18] - mov r4, r10 - ldr r0, [r4] - adds r0, 0x5 - str r0, [r4] - b _08029744 - .align 2, 0 -_0802971C: .4byte gBattleTextBuff1 -_08029720: .4byte gDisableStructs -_08029724: .4byte gBitTable -_08029728: - mov r0, r10 - ldr r2, [r0] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r2, r10 - str r1, [r2] -_08029744: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atk9D_mimicattackcopy - - thumb_func_start atk9E_metronome -atk9E_metronome: @ 8029754 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _080297D4 @ =gCurrentMove - movs r6, 0xB1 - lsls r6, 1 - ldr r5, _080297D8 @ =sMovesForbiddenToCopy - ldr r0, _080297DC @ =gBattlescriptCurrInstr - mov r8, r0 -_08029766: - bl Random - ldr r2, _080297E0 @ =0x000001ff - adds r1, r2, 0 - ands r0, r1 - adds r0, 0x1 - strh r0, [r7] - cmp r0, r6 - bhi _08029766 - movs r0, 0x3 -_0802977A: - subs r0, 0x1 - cmp r0, 0 - bge _0802977A - ldr r4, _080297D4 @ =gCurrentMove - ldrh r2, [r4] - ldr r3, _080297E4 @ =0x0000ffff - subs r0, r5, 0x2 -_08029788: - adds r0, 0x2 - ldrh r1, [r0] - cmp r1, r2 - beq _08029794 - cmp r1, r3 - bne _08029788 -_08029794: - ldr r0, _080297E4 @ =0x0000ffff - cmp r1, r0 - bne _08029766 - ldr r2, _080297E8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _080297EC @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r3, _080297F0 @ =gBattleScriptsForMoveEffects - ldr r2, _080297F4 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - mov r1, r8 - str r0, [r1] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _080297F8 @ =gBattlerTarget - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080297D4: .4byte gCurrentMove -_080297D8: .4byte sMovesForbiddenToCopy -_080297DC: .4byte gBattlescriptCurrInstr -_080297E0: .4byte 0x000001ff -_080297E4: .4byte 0x0000ffff -_080297E8: .4byte gHitMarker -_080297EC: .4byte 0xfffffbff -_080297F0: .4byte gBattleScriptsForMoveEffects -_080297F4: .4byte gBattleMoves -_080297F8: .4byte gBattlerTarget - thumb_func_end atk9E_metronome - - thumb_func_start atk9F_dmgtolevel -atk9F_dmgtolevel: @ 80297FC - ldr r3, _0802981C @ =gBattleMoveDamage - ldr r2, _08029820 @ =gBattleMons - ldr r0, _08029824 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r0, [r0] - str r0, [r3] - ldr r1, _08029828 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802981C: .4byte gBattleMoveDamage -_08029820: .4byte gBattleMons -_08029824: .4byte gBattlerAttacker -_08029828: .4byte gBattlescriptCurrInstr - thumb_func_end atk9F_dmgtolevel - - thumb_func_start atkA0_psywavedamageeffect -atkA0_psywavedamageeffect: @ 802982C - push {r4,lr} - movs r4, 0xF -_08029830: - bl Random - adds r3, r4, 0 - ands r3, r0 - cmp r3, 0xA - bgt _08029830 - lsls r0, r3, 2 - adds r0, r3 - lsls r3, r0, 1 - ldr r4, _08029870 @ =gBattleMoveDamage - ldr r2, _08029874 @ =gBattleMons - ldr r0, _08029878 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - adds r0, r3, 0 - adds r0, 0x32 - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - str r0, [r4] - ldr r1, _0802987C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08029870: .4byte gBattleMoveDamage -_08029874: .4byte gBattleMons -_08029878: .4byte gBattlerAttacker -_0802987C: .4byte gBattlescriptCurrInstr - thumb_func_end atkA0_psywavedamageeffect - - thumb_func_start atkA1_counterdamagecalculator -atkA1_counterdamagecalculator: @ 8029880 - push {r4-r6,lr} - ldr r4, _080298F0 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080298F4 @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xC] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0x4 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _08029934 - cmp r6, r2 - beq _08029934 - ldr r6, _080298F8 @ =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xC] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08029934 - ldr r1, _080298FC @ =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, _08029900 @ =gSideTimers - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08029908 - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08029908 - ldr r0, _08029904 @ =gBattlerTarget - strb r1, [r0] - b _08029918 - .align 2, 0 -_080298F0: .4byte gBattlerAttacker -_080298F4: .4byte gProtectStructs -_080298F8: .4byte gBattleMons -_080298FC: .4byte gBattleMoveDamage -_08029900: .4byte gSideTimers -_08029904: .4byte gBattlerTarget -_08029908: - ldr r2, _08029924 @ =gBattlerTarget - ldr r1, _08029928 @ =gProtectStructs - ldr r0, _0802992C @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xC] - strb r0, [r2] -_08029918: - ldr r1, _08029930 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029964 - .align 2, 0 -_08029924: .4byte gBattlerTarget -_08029928: .4byte gProtectStructs -_0802992C: .4byte gBattlerAttacker -_08029930: .4byte gBattlescriptCurrInstr -_08029934: - ldr r2, _0802996C @ =gSpecialStatuses - ldr r0, _08029970 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _08029974 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029964: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802996C: .4byte gSpecialStatuses -_08029970: .4byte gBattlerAttacker -_08029974: .4byte gBattlescriptCurrInstr - thumb_func_end atkA1_counterdamagecalculator - - thumb_func_start atkA2_mirrorcoatdamagecalculator -atkA2_mirrorcoatdamagecalculator: @ 8029978 - push {r4-r6,lr} - ldr r4, _080299E8 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080299EC @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r5 - ldrb r0, [r0, 0xD] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r3, [r0] - cmp r3, 0 - beq _08029A2C - cmp r6, r2 - beq _08029A2C - ldr r6, _080299F0 @ =gBattleMons - adds r0, r1, r5 - ldrb r0, [r0, 0xD] - movs r4, 0x58 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08029A2C - ldr r1, _080299F4 @ =gBattleMoveDamage - lsls r0, r3, 1 - str r0, [r1] - ldr r1, _080299F8 @ =gSideTimers - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _08029A00 - ldrb r1, [r1, 0x9] - adds r0, r1, 0 - muls r0, r4 - adds r0, r6 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08029A00 - ldr r0, _080299FC @ =gBattlerTarget - strb r1, [r0] - b _08029A10 - .align 2, 0 -_080299E8: .4byte gBattlerAttacker -_080299EC: .4byte gProtectStructs -_080299F0: .4byte gBattleMons -_080299F4: .4byte gBattleMoveDamage -_080299F8: .4byte gSideTimers -_080299FC: .4byte gBattlerTarget -_08029A00: - ldr r2, _08029A1C @ =gBattlerTarget - ldr r1, _08029A20 @ =gProtectStructs - ldr r0, _08029A24 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0xD] - strb r0, [r2] -_08029A10: - ldr r1, _08029A28 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029A5C - .align 2, 0 -_08029A1C: .4byte gBattlerTarget -_08029A20: .4byte gProtectStructs -_08029A24: .4byte gBattlerAttacker -_08029A28: .4byte gBattlescriptCurrInstr -_08029A2C: - ldr r2, _08029A64 @ =gSpecialStatuses - ldr r0, _08029A68 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _08029A6C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029A5C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08029A64: .4byte gSpecialStatuses -_08029A68: .4byte gBattlerAttacker -_08029A6C: .4byte gBattlescriptCurrInstr - thumb_func_end atkA2_mirrorcoatdamagecalculator - - thumb_func_start atkA3_disablelastusedattack -atkA3_disablelastusedattack: @ 8029A70 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0 - ldr r2, _08029B70 @ =gBattleMons - ldr r3, _08029B74 @ =gBattlerTarget - ldrb r1, [r3] - movs r0, 0x58 - muls r0, r1 - adds r7, r2, 0 - adds r7, 0xC - adds r0, r7 - ldr r5, _08029B78 @ =gLastMoves - lsls r1, 1 - adds r1, r5 - ldrh r0, [r0] - mov r9, r2 - adds r6, r3, 0 - ldr r2, _08029B7C @ =gDisableStructs - mov r8, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _08029AC4 - mov r12, r6 - movs r3, 0x58 -_08029AA4: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08029AC4 - lsls r2, r4, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _08029AA4 -_08029AC4: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r0, [r0, 0x4] - cmp r0, 0 - bne _08029B88 - cmp r4, 0x4 - beq _08029B88 - movs r5, 0x58 - adds r0, r1, 0 - muls r0, r5 - adds r0, r4, r0 - mov r1, r9 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08029B88 - ldr r1, _08029B80 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - lsls r2, r4, 1 - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - mov r3, r9 - adds r3, 0xC - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r2, r0 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r8 - muls r1, r5 - adds r2, r1 - adds r2, r3 - ldrh r1, [r2] - strh r1, [r0, 0x4] - bl Random - ldrb r2, [r6] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r8 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x2 - ldrb r3, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r3, [r1, 0xB] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xB] - ldr r1, _08029B84 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029BA2 - .align 2, 0 -_08029B70: .4byte gBattleMons -_08029B74: .4byte gBattlerTarget -_08029B78: .4byte gLastMoves -_08029B7C: .4byte gDisableStructs -_08029B80: .4byte gBattleTextBuff1 -_08029B84: .4byte gBattlescriptCurrInstr -_08029B88: - ldr r3, _08029BB0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029BA2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029BB0: .4byte gBattlescriptCurrInstr - thumb_func_end atkA3_disablelastusedattack - - thumb_func_start atkA4_trysetencore -atkA4_trysetencore: @ 8029BB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r3, _08029CA8 @ =gBattleMons - ldr r4, _08029CAC @ =gBattlerTarget - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r6, r3, 0 - adds r6, 0xC - adds r0, r6 - ldr r2, _08029CB0 @ =gLastMoves - lsls r1, 1 - adds r1, r2 - ldrh r0, [r0] - mov r10, r3 - mov r8, r2 - ldr r2, _08029CB4 @ =gDisableStructs - mov r9, r2 - ldrh r1, [r1] - cmp r0, r1 - beq _08029C0E - mov r12, r4 - adds r7, r6, 0 - mov r6, r8 - movs r3, 0x58 -_08029BEE: - adds r5, 0x1 - cmp r5, 0x3 - bgt _08029C0E - lsls r2, r5, 1 - mov r0, r12 - ldrb r1, [r0] - adds r0, r1, 0 - muls r0, r3 - adds r2, r0 - adds r2, r7 - lsls r1, 1 - adds r1, r6 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _08029BEE -_08029C0E: - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r2, [r0] - cmp r2, 0xA5 - beq _08029C22 - cmp r2, 0xE3 - beq _08029C22 - cmp r2, 0x77 - bne _08029C24 -_08029C22: - movs r5, 0x4 -_08029C24: - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r2, r9 - adds r3, r0, r2 - ldrh r0, [r3, 0x6] - cmp r0, 0 - bne _08029CBC - cmp r5, 0x4 - beq _08029CBC - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - adds r0, r5, r2 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08029CBC - lsls r0, r5, 1 - adds r0, r2 - subs r1, 0x18 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3, 0x6] - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r9 - strb r5, [r0, 0xC] - bl Random - ldrb r2, [r4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r9 - movs r2, 0x3 - ands r2, r0 - adds r2, 0x3 - ldrb r3, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldrb r0, [r4] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r9 - ldrb r3, [r1, 0xE] - lsls r2, r3, 28 - lsrs r2, 24 - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xE] - ldr r1, _08029CB8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029CD6 - .align 2, 0 -_08029CA8: .4byte gBattleMons -_08029CAC: .4byte gBattlerTarget -_08029CB0: .4byte gLastMoves -_08029CB4: .4byte gDisableStructs -_08029CB8: .4byte gBattlescriptCurrInstr -_08029CBC: - ldr r3, _08029CE4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029CD6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029CE4: .4byte gBattlescriptCurrInstr - thumb_func_end atkA4_trysetencore - - thumb_func_start atkA5_painsplitdmgcalc -atkA5_painsplitdmgcalc: @ 8029CE8 - push {r4-r7,lr} - ldr r6, _08029D68 @ =gBattleMons - ldr r0, _08029D6C @ =gBattlerTarget - mov r12, r0 - ldrb r0, [r0] - movs r7, 0x58 - adds r2, r0, 0 - muls r2, r7 - adds r0, r6, 0 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _08029D88 - ldr r5, _08029D70 @ =gBattlerAttacker - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - ldrh r3, [r0, 0x28] - adds r0, r2, r6 - ldrh r1, [r0, 0x28] - adds r3, r1 - asrs r3, 1 - ldr r4, _08029D74 @ =gBattleMoveDamage - subs r1, r3 - str r1, [r4] - ldr r2, _08029D78 @ =gBattleScripting - strb r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - asrs r0, 8 - strb r0, [r2, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - asrs r0, 16 - strb r0, [r2, 0x2] - lsrs r1, 24 - strb r1, [r2, 0x3] - ldrb r0, [r5] - muls r0, r7 - adds r0, r6 - ldrh r0, [r0, 0x28] - subs r0, r3 - str r0, [r4] - ldr r2, _08029D7C @ =gSpecialStatuses - mov r0, r12 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, _08029D80 @ =0x0000ffff - str r1, [r0] - ldr r1, _08029D84 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029DA2 - .align 2, 0 -_08029D68: .4byte gBattleMons -_08029D6C: .4byte gBattlerTarget -_08029D70: .4byte gBattlerAttacker -_08029D74: .4byte gBattleMoveDamage -_08029D78: .4byte gBattleScripting -_08029D7C: .4byte gSpecialStatuses -_08029D80: .4byte 0x0000ffff -_08029D84: .4byte gBattlescriptCurrInstr -_08029D88: - ldr r3, _08029DA8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_08029DA2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029DA8: .4byte gBattlescriptCurrInstr - thumb_func_end atkA5_painsplitdmgcalc - - thumb_func_start atkA6_settypetorandomresistance -atkA6_settypetorandomresistance: @ 8029DAC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08029E14 @ =gLastLandedMoves - ldr r4, _08029E18 @ =gBattlerAttacker - ldrb r0, [r4] - lsls r0, 1 - adds r2, r0, r1 - ldrh r1, [r2] - cmp r1, 0 - beq _08029DF6 - ldr r0, _08029E1C @ =0x0000ffff - cmp r1, r0 - beq _08029DF6 - ldrh r0, [r2] - bl IsTwoTurnsMove - lsls r0, 24 - cmp r0, 0 - beq _08029E94 - ldr r1, _08029E20 @ =gBattleMons - ldr r2, _08029E24 @ =gLastHitBy - ldrb r0, [r4] - adds r0, r2 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _08029E94 -_08029DF6: - ldr r3, _08029E28 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _08029F80 - .align 2, 0 -_08029E14: .4byte gLastLandedMoves -_08029E18: .4byte gBattlerAttacker -_08029E1C: .4byte 0x0000ffff -_08029E20: .4byte gBattleMons -_08029E24: .4byte gLastHitBy -_08029E28: .4byte gBattlescriptCurrInstr -_08029E2C: - mov r0, r12 - strb r5, [r0] - mov r1, r10 - ldrb r0, [r1] - muls r0, r2 - adds r0, r7 - adds r0, 0x22 - strb r5, [r0] - ldr r1, _08029E50 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r5, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _08029E54 @ =gBattlescriptCurrInstr - b _08029E82 - .align 2, 0 -_08029E50: .4byte gBattleTextBuff1 -_08029E54: .4byte gBattlescriptCurrInstr -_08029E58: - mov r0, r8 - adds r0, 0x1 - adds r0, r3 - ldrb r2, [r0] - strb r2, [r4] - mov r4, r10 - ldrb r0, [r4] - muls r0, r6 - ldr r7, _08029E8C @ =gBattleMons - adds r0, r7 - adds r0, 0x22 - strb r2, [r0] - ldr r1, _08029E90 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - strb r2, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - mov r1, r12 -_08029E82: - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _08029F80 - .align 2, 0 -_08029E8C: .4byte gBattleMons -_08029E90: .4byte gBattleTextBuff1 -_08029E94: - movs r4, 0 - mov r8, r4 - movs r7, 0x7F - mov r9, r7 -_08029E9C: - bl Random - mov r4, r9 - ands r4, r0 - cmp r4, 0x70 - bhi _08029E9C - lsls r0, r4, 1 - adds r4, r0, r4 - ldr r6, _08029F90 @ =gTypeEffectiveness - adds r3, r4, r6 - ldr r1, _08029F94 @ =gLastHitByType - ldr r2, _08029F98 @ =gBattlerAttacker - ldrb r5, [r2] - lsls r0, r5, 1 - adds r0, r1 - ldrb r1, [r3] - mov r10, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _08029EF8 - adds r0, r4, 0x2 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08029EF8 - ldr r7, _08029F9C @ =gBattleMons - movs r2, 0x58 - adds r0, r5, 0 - muls r0, r2 - adds r3, r0, r7 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - adds r0, r4, 0x1 - adds r0, r6 - ldrb r5, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r5, 0 - cmp r0, r1 - beq _08029EF8 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - bne _08029E2C -_08029EF8: - movs r7, 0x1 - add r8, r7 - ldr r0, _08029FA0 @ =0x000003e7 - cmp r8, r0 - ble _08029E9C - movs r0, 0 - mov r8, r0 - ldr r1, _08029FA4 @ =gBattlescriptCurrInstr - mov r12, r1 - ldr r3, _08029F90 @ =gTypeEffectiveness - adds r0, r4, 0x1 - adds r0, r3 - mov r9, r0 - adds r5, r3, 0 -_08029F14: - ldrb r1, [r5] - cmp r1, 0xFF - bgt _08029F1E - cmp r1, 0xFE - bge _08029F58 -_08029F1E: - mov r4, r10 - ldrb r2, [r4] - lsls r0, r2, 1 - ldr r7, _08029F94 @ =gLastHitByType - adds r0, r7 - ldrh r0, [r0] - cmp r1, r0 - bne _08029F58 - ldrb r0, [r5, 0x2] - cmp r0, 0x5 - bhi _08029F58 - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - ldr r1, _08029F9C @ =gBattleMons - adds r2, r0, r1 - adds r4, r2, 0 - adds r4, 0x21 - ldrb r0, [r4] - mov r7, r9 - ldrb r1, [r7] - cmp r0, r1 - beq _08029F58 - adds r0, r2, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _08029F58 - b _08029E58 -_08029F58: - adds r5, 0x3 - movs r0, 0x3 - add r8, r0 - ldr r0, _08029FA8 @ =0x0000014f - cmp r8, r0 - bls _08029F14 - mov r1, r12 - ldr r2, [r1] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - mov r4, r12 - str r1, [r4] -_08029F80: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08029F90: .4byte gTypeEffectiveness -_08029F94: .4byte gLastHitByType -_08029F98: .4byte gBattlerAttacker -_08029F9C: .4byte gBattleMons -_08029FA0: .4byte 0x000003e7 -_08029FA4: .4byte gBattlescriptCurrInstr -_08029FA8: .4byte 0x0000014f - thumb_func_end atkA6_settypetorandomresistance - - thumb_func_start atkA7_setalwayshitflag -atkA7_setalwayshitflag: @ 8029FAC - push {r4,lr} - ldr r4, _08029FF0 @ =gStatuses3 - ldr r3, _08029FF4 @ =gBattlerTarget - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x19 - negs r2, r2 - ands r0, r2 - str r0, [r1] - ldrb r1, [r3] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x10 - orrs r0, r2 - str r0, [r1] - ldr r2, _08029FF8 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08029FFC @ =gBattlerAttacker - ldrb r1, [r1] - strb r1, [r0, 0x15] - ldr r1, _0802A000 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08029FF0: .4byte gStatuses3 -_08029FF4: .4byte gBattlerTarget -_08029FF8: .4byte gDisableStructs -_08029FFC: .4byte gBattlerAttacker -_0802A000: .4byte gBattlescriptCurrInstr - thumb_func_end atkA7_setalwayshitflag - - thumb_func_start atkA8_copymovepermanently -atkA8_copymovepermanently: @ 802A004 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, _0802A164 @ =gChosenMove - ldr r1, _0802A168 @ =0x0000ffff - adds r5, r1, 0 - strh r5, [r0] - ldr r3, _0802A16C @ =gBattleMons - ldr r2, _0802A170 @ =gBattlerAttacker - ldrb r1, [r2] - movs r0, 0x58 - adds r4, r1, 0 - muls r4, r0 - adds r0, r3, 0 - adds r0, 0x50 - adds r0, r4, r0 - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 14 - ands r1, r0 - mov r12, r3 - mov r10, r2 - cmp r1, 0 - beq _0802A03C - b _0802A190 -_0802A03C: - ldr r0, _0802A174 @ =gLastPrintedMoves - ldr r2, _0802A178 @ =gBattlerTarget - ldrb r1, [r2] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - mov r9, r0 - mov r8, r2 - cmp r1, 0xA5 - bne _0802A052 - b _0802A190 -_0802A052: - cmp r1, 0 - bne _0802A058 - b _0802A190 -_0802A058: - cmp r1, r5 - bne _0802A05E - b _0802A190 -_0802A05E: - cmp r1, 0xA6 - bne _0802A064 - b _0802A190 -_0802A064: - movs r7, 0 - mov r5, r9 - mov r0, r12 - adds r0, 0xC - adds r1, r4, r0 - mov r3, r8 -_0802A070: - ldrh r2, [r1] - cmp r2, 0xA6 - beq _0802A082 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r2, r0 - beq _0802A08A -_0802A082: - adds r1, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _0802A070 -_0802A08A: - cmp r7, 0x4 - beq _0802A090 - b _0802A190 -_0802A090: - ldr r4, _0802A17C @ =gCurrMovePos - ldrb r1, [r4] - lsls r1, 1 - mov r2, r10 - ldrb r0, [r2] - movs r3, 0x58 - muls r0, r3 - adds r1, r0 - mov r6, r12 - adds r6, 0xC - adds r1, r6 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - strh r0, [r1] - mov r1, r10 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r3 - ldrb r4, [r4] - adds r2, r4 - mov r5, r12 - adds r5, 0x24 - adds r2, r5 - ldr r4, _0802A180 @ =gBattleMoves - mov r1, r8 - ldrb r0, [r1] - lsls r0, 1 - add r0, r9 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x4] - strb r0, [r2] - ldr r1, _0802A184 @ =gActiveBattler - mov r2, r10 - ldrb r0, [r2] - strb r0, [r1] - movs r7, 0 - ldrb r0, [r2] - muls r0, r3 - adds r4, r0, r5 - adds r3, r0, 0 - add r2, sp, 0x4 - add r5, sp, 0xC -_0802A0F2: - adds r0, r3, r6 - ldrh r0, [r0] - strh r0, [r2] - adds r1, r5, r7 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x1 - adds r3, 0x2 - adds r2, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _0802A0F2 - add r2, sp, 0x4 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r12 - adds r0, 0x3B - ldrb r0, [r0] - strb r0, [r2, 0xC] - str r2, [sp] - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0x10 - bl BtlController_EmitSetMonData - ldr r0, _0802A184 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _0802A188 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r3, _0802A174 @ =gLastPrintedMoves - ldr r2, _0802A178 @ =gBattlerTarget - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r2] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802A18C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A1AA - .align 2, 0 -_0802A164: .4byte gChosenMove -_0802A168: .4byte 0x0000ffff -_0802A16C: .4byte gBattleMons -_0802A170: .4byte gBattlerAttacker -_0802A174: .4byte gLastPrintedMoves -_0802A178: .4byte gBattlerTarget -_0802A17C: .4byte gCurrMovePos -_0802A180: .4byte gBattleMoves -_0802A184: .4byte gActiveBattler -_0802A188: .4byte gBattleTextBuff1 -_0802A18C: .4byte gBattlescriptCurrInstr -_0802A190: - ldr r3, _0802A1BC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A1AA: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802A1BC: .4byte gBattlescriptCurrInstr - thumb_func_end atkA8_copymovepermanently - - thumb_func_start IsTwoTurnsMove -IsTwoTurnsMove: @ 802A1C0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0802A1F0 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x91 - beq _0802A1EA - cmp r0, 0x27 - beq _0802A1EA - cmp r0, 0x4B - beq _0802A1EA - cmp r0, 0x97 - beq _0802A1EA - cmp r0, 0x9B - beq _0802A1EA - cmp r0, 0x1A - bne _0802A1F4 -_0802A1EA: - movs r0, 0x1 - b _0802A1F6 - .align 2, 0 -_0802A1F0: .4byte gBattleMoves -_0802A1F4: - movs r0, 0 -_0802A1F6: - pop {r1} - bx r1 - thumb_func_end IsTwoTurnsMove - - thumb_func_start IsInvalidForSleepTalkOrAssist -IsInvalidForSleepTalkOrAssist: @ 802A1FC - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0802A21A - cmp r1, 0xD6 - beq _0802A21A - movs r0, 0x89 - lsls r0, 1 - cmp r1, r0 - beq _0802A21A - cmp r1, 0x77 - beq _0802A21A - cmp r1, 0x76 - bne _0802A21E -_0802A21A: - movs r0, 0x1 - b _0802A220 -_0802A21E: - movs r0, 0 -_0802A220: - pop {r1} - bx r1 - thumb_func_end IsInvalidForSleepTalkOrAssist - - thumb_func_start AttacksThisTurn -AttacksThisTurn: @ 802A224 - push {lr} - lsls r1, 16 - lsrs r2, r1, 16 - ldr r1, _0802A27C @ =gBattleMoves - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x97 - bne _0802A248 - ldr r0, _0802A280 @ =gBattleWeather - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _0802A288 -_0802A248: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x91 - beq _0802A26A - cmp r0, 0x27 - beq _0802A26A - cmp r0, 0x4B - beq _0802A26A - cmp r0, 0x97 - beq _0802A26A - cmp r0, 0x9B - beq _0802A26A - cmp r0, 0x1A - bne _0802A288 -_0802A26A: - ldr r0, _0802A284 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 20 - ands r0, r1 - cmp r0, 0 - beq _0802A288 - movs r0, 0x1 - b _0802A28A - .align 2, 0 -_0802A27C: .4byte gBattleMoves -_0802A280: .4byte gBattleWeather -_0802A284: .4byte gHitMarker -_0802A288: - movs r0, 0x2 -_0802A28A: - pop {r1} - bx r1 - thumb_func_end AttacksThisTurn - - thumb_func_start atkA9_trychoosesleeptalkmove -atkA9_trychoosesleeptalkmove: @ 802A290 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r5, 0 - ldr r0, _0802A320 @ =gBattlerAttacker - mov r9, r0 - movs r1, 0x58 - mov r8, r1 - ldr r7, _0802A324 @ =gUnknown_2023BF0 - movs r0, 0x84 - lsls r0, 1 - mov r10, r0 -_0802A2AE: - lsls r4, r5, 1 - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r0, [r0] - bl IsInvalidForSleepTalkOrAssist - lsls r0, 24 - cmp r0, 0 - bne _0802A2EE - mov r1, r9 - ldrb r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r4, r0 - adds r0, r7 - ldrh r1, [r0] - cmp r1, r10 - beq _0802A2EE - cmp r1, 0xFD - beq _0802A2EE - adds r0, r1, 0 - bl IsTwoTurnsMove - lsls r0, 24 - cmp r0, 0 - beq _0802A2FC -_0802A2EE: - ldr r1, _0802A328 @ =gBitTable - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_0802A2FC: - adds r5, 0x1 - cmp r5, 0x3 - ble _0802A2AE - ldr r0, _0802A320 @ =gBattlerAttacker - ldrb r0, [r0] - adds r1, r6, 0 - movs r2, 0xFD - bl CheckMoveLimitations - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _0802A330 - ldr r1, _0802A32C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802A394 - .align 2, 0 -_0802A320: .4byte gBattlerAttacker -_0802A324: .4byte gUnknown_2023BF0 -_0802A328: .4byte gBitTable -_0802A32C: .4byte gBattlescriptCurrInstr -_0802A330: - movs r7, 0x3 - ldr r4, _0802A3A4 @ =gBitTable -_0802A334: - bl Random - adds r5, r7, 0 - ands r5, r0 - lsls r0, r5, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r6 - cmp r0, 0 - bne _0802A334 - ldr r4, _0802A3A8 @ =gCalledMove - ldr r2, _0802A3AC @ =gBattleMons - lsls r1, r5, 1 - ldr r0, _0802A3B0 @ =gBattlerAttacker - ldrb r3, [r0] - movs r0, 0x58 - muls r0, r3 - adds r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r1] - strh r0, [r4] - ldr r0, _0802A3B4 @ =gCurrMovePos - strb r5, [r0] - ldr r2, _0802A3B8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802A3BC @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _0802A3C0 @ =gBattlerTarget - strb r0, [r1] - ldr r3, _0802A3C4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A394: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802A3A4: .4byte gBitTable -_0802A3A8: .4byte gCalledMove -_0802A3AC: .4byte gBattleMons -_0802A3B0: .4byte gBattlerAttacker -_0802A3B4: .4byte gCurrMovePos -_0802A3B8: .4byte gHitMarker -_0802A3BC: .4byte 0xfffffbff -_0802A3C0: .4byte gBattlerTarget -_0802A3C4: .4byte gBattlescriptCurrInstr - thumb_func_end atkA9_trychoosesleeptalkmove - - thumb_func_start atkAA_setdestinybond -atkAA_setdestinybond: @ 802A3C8 - ldr r1, _0802A3EC @ =gBattleMons - ldr r0, _0802A3F0 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 18 - orrs r0, r1 - str r0, [r2] - ldr r1, _0802A3F4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802A3EC: .4byte gBattleMons -_0802A3F0: .4byte gBattlerAttacker -_0802A3F4: .4byte gBattlescriptCurrInstr - thumb_func_end atkAA_setdestinybond - - thumb_func_start TrySetDestinyBondToHappen -TrySetDestinyBondToHappen: @ 802A3F8 - push {r4,r5,lr} - ldr r0, _0802A448 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0802A44C @ =gBattlerTarget - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0802A450 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0802A442 - cmp r5, r3 - beq _0802A442 - ldr r2, _0802A454 @ =gHitMarker - ldr r1, [r2] - movs r0, 0x80 - lsls r0, 17 - ands r0, r1 - cmp r0, 0 - bne _0802A442 - movs r0, 0x40 - orrs r1, r0 - str r1, [r2] -_0802A442: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802A448: .4byte gBattlerAttacker -_0802A44C: .4byte gBattlerTarget -_0802A450: .4byte gBattleMons -_0802A454: .4byte gHitMarker - thumb_func_end TrySetDestinyBondToHappen - - thumb_func_start atkAB_trysetdestinybondtohappen -atkAB_trysetdestinybondtohappen: @ 802A458 - push {lr} - bl TrySetDestinyBondToHappen - ldr r1, _0802A46C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802A46C: .4byte gBattlescriptCurrInstr - thumb_func_end atkAB_trysetdestinybondtohappen - - thumb_func_start atkAC_remaininghptopower -atkAC_remaininghptopower: @ 802A470 - push {lr} - ldr r2, _0802A4C4 @ =gBattleMons - ldr r0, _0802A4C8 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - movs r2, 0x28 - ldrsh r0, [r1, r2] - movs r2, 0x2C - ldrsh r1, [r1, r2] - movs r2, 0x30 - bl GetScaledHPFraction - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0 - ldr r0, _0802A4CC @ =sFlailHpScaleToPowerTable - ldrb r2, [r0] - cmp r1, r2 - ble _0802A4AA - adds r2, r0, 0 -_0802A49C: - adds r3, 0x2 - cmp r3, 0xB - bgt _0802A4AA - adds r0, r3, r2 - ldrb r0, [r0] - cmp r1, r0 - bgt _0802A49C -_0802A4AA: - ldr r2, _0802A4D0 @ =gDynamicBasePower - ldr r1, _0802A4CC @ =sFlailHpScaleToPowerTable - adds r0, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldr r1, _0802A4D4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802A4C4: .4byte gBattleMons -_0802A4C8: .4byte gBattlerAttacker -_0802A4CC: .4byte sFlailHpScaleToPowerTable -_0802A4D0: .4byte gDynamicBasePower -_0802A4D4: .4byte gBattlescriptCurrInstr - thumb_func_end atkAC_remaininghptopower - - thumb_func_start atkAD_tryspiteppreduce -atkAD_tryspiteppreduce: @ 802A4D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, _0802A658 @ =gLastMoves - ldr r1, _0802A65C @ =gBattlerTarget - ldrb r3, [r1] - lsls r0, r3, 1 - adds r0, r4 - ldrh r2, [r0] - mov r8, r1 - cmp r2, 0 - bne _0802A4F8 - b _0802A680 -_0802A4F8: - ldr r0, _0802A660 @ =0x0000ffff - cmp r2, r0 - bne _0802A500 - b _0802A680 -_0802A500: - movs r7, 0 - ldr r0, _0802A664 @ =gBattleMons - movs r1, 0x58 - muls r1, r3 - adds r3, r0, 0 - adds r3, 0xC - adds r1, r3 - ldrh r1, [r1] - cmp r2, r1 - beq _0802A538 - adds r6, r4, 0 - mov r5, r8 - adds r4, r3, 0 - movs r3, 0x58 -_0802A51C: - adds r7, 0x1 - cmp r7, 0x3 - bgt _0802A538 - ldrb r0, [r5] - lsls r2, r0, 1 - adds r2, r6 - lsls r1, r7, 1 - muls r0, r3 - adds r1, r0 - adds r1, r4 - ldrh r0, [r2] - ldrh r1, [r1] - cmp r0, r1 - bne _0802A51C -_0802A538: - cmp r7, 0x4 - bne _0802A53E - b _0802A680 -_0802A53E: - mov r4, r8 - ldrb r0, [r4] - movs r1, 0x58 - mov r9, r1 - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - ldr r1, _0802A664 @ =gBattleMons - adds r1, 0x24 - mov r10, r1 - add r0, r10 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _0802A55E - b _0802A680 -_0802A55E: - bl Random - movs r1, 0x3 - ands r1, r0 - adds r6, r1, 0x2 - ldrb r0, [r4] - mov r3, r9 - muls r3, r0 - adds r0, r3, 0 - adds r0, r7, r0 - add r0, r10 - ldrb r0, [r0] - cmp r0, r6 - bge _0802A57C - adds r6, r0, 0 -_0802A57C: - ldr r1, _0802A668 @ =gBattleTextBuff1 - movs r5, 0xFD - strb r5, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldr r2, _0802A658 @ =gLastMoves - mov r3, r8 - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1, 0x2] - ldrb r0, [r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r4, _0802A66C @ =gBattleTextBuff2 - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - strb r5, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - strb r6, [r4, 0x4] - subs r0, 0x2 - strb r0, [r4, 0x5] - mov r1, r8 - ldrb r0, [r1] - mov r1, r9 - muls r1, r0 - adds r1, r7, r1 - add r1, r10 - ldrb r0, [r1] - subs r0, r6 - strb r0, [r1] - ldr r4, _0802A670 @ =gActiveBattler - mov r3, r8 - ldrb r0, [r3] - strb r0, [r4] - ldr r1, _0802A674 @ =gDisableStructs - ldrb r3, [r4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _0802A678 @ =gBitTable - lsls r0, r7, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802A630 - mov r2, r9 - muls r2, r3 - ldr r0, _0802A664 @ =gBattleMons - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _0802A630 - adds r1, r7, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - mov r3, r10 - adds r0, r2, r3 - adds r0, r7 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0802A630: - ldr r1, _0802A67C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, _0802A664 @ =gBattleMons - ldr r0, _0802A65C @ =gBattlerTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r0, r7, r0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0802A69A - adds r0, r2, 0 - bl CancelMultiTurnMoves - b _0802A69A - .align 2, 0 -_0802A658: .4byte gLastMoves -_0802A65C: .4byte gBattlerTarget -_0802A660: .4byte 0x0000ffff -_0802A664: .4byte gBattleMons -_0802A668: .4byte gBattleTextBuff1 -_0802A66C: .4byte gBattleTextBuff2 -_0802A670: .4byte gActiveBattler -_0802A674: .4byte gDisableStructs -_0802A678: .4byte gBitTable -_0802A67C: .4byte gBattlescriptCurrInstr -_0802A680: - ldr r3, _0802A6AC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802A69A: - 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 -_0802A6AC: .4byte gBattlescriptCurrInstr - thumb_func_end atkAD_tryspiteppreduce - - thumb_func_start atkAE_healpartystatus -atkAE_healpartystatus: @ 802A6B0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r4, 0 - str r4, [sp, 0x4] - mov r8, r4 - ldr r0, _0802A720 @ =gCurrentMove - ldrh r0, [r0] - cmp r0, 0xD7 - beq _0802A6CC - b _0802A8B6 -_0802A6CC: - ldr r6, _0802A724 @ =gBattleCommunication - mov r0, r8 - strb r0, [r6, 0x5] - ldr r5, _0802A728 @ =gBattlerAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - ldr r1, _0802A72C @ =gEnemyParty - mov r10, r1 - cmp r0, 0 - bne _0802A6E8 - ldr r2, _0802A730 @ =gPlayerParty - mov r10, r2 -_0802A6E8: - ldr r4, _0802A734 @ =gBattleMons - ldrb r3, [r5] - movs r7, 0x58 - adds r2, r3, 0 - muls r2, r7 - adds r0, r2, r4 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _0802A73C - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r2, r0 - mov r1, r8 - str r1, [r0] - ldrb r0, [r5] - adds r2, r0, 0 - muls r2, r7 - adds r0, r4, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _0802A738 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - b _0802A74C - .align 2, 0 -_0802A720: .4byte gCurrentMove -_0802A724: .4byte gBattleCommunication -_0802A728: .4byte gBattlerAttacker -_0802A72C: .4byte gEnemyParty -_0802A730: .4byte gPlayerParty -_0802A734: .4byte gBattleMons -_0802A738: .4byte 0xf7ffffff -_0802A73C: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldrb r0, [r6, 0x5] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r6, 0x5] -_0802A74C: - ldr r7, _0802A7C0 @ =gActiveBattler - ldr r0, _0802A7C4 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerPosition - movs r2, 0x2 - mov r9, r2 - mov r1, r9 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r1, _0802A7C8 @ =gBattleScripting - strb r0, [r1, 0x17] - strb r0, [r7] - ldr r0, _0802A7CC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802A7F2 - ldr r0, _0802A7D0 @ =gAbsentBattlerFlags - ldrb r2, [r0] - ldr r1, _0802A7D4 @ =gBitTable - ldrb r3, [r7] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _0802A7F2 - ldr r5, _0802A7D8 @ =gBattleMons - movs r6, 0x58 - adds r4, r3, 0 - muls r4, r6 - adds r0, r4, r5 - adds r1, r0, 0 - adds r1, 0x20 - ldrb r0, [r1] - cmp r0, 0x2B - beq _0802A7E0 - adds r0, r5, 0 - adds r0, 0x4C - adds r0, r4, r0 - str r2, [r0] - ldrb r0, [r7] - adds r2, r0, 0 - muls r2, r6 - adds r0, r5, 0 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _0802A7DC @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - b _0802A7F2 - .align 2, 0 -_0802A7C0: .4byte gActiveBattler -_0802A7C4: .4byte gBattlerAttacker -_0802A7C8: .4byte gBattleScripting -_0802A7CC: .4byte gBattleTypeFlags -_0802A7D0: .4byte gAbsentBattlerFlags -_0802A7D4: .4byte gBitTable -_0802A7D8: .4byte gBattleMons -_0802A7DC: .4byte 0xf7ffffff -_0802A7E0: - ldrb r1, [r1] - adds r0, r3, 0 - bl RecordAbilityBattle - ldr r1, _0802A838 @ =gBattleCommunication - ldrb r0, [r1, 0x5] - mov r2, r9 - orrs r0, r2 - strb r0, [r1, 0x5] -_0802A7F2: - movs r6, 0 - ldr r7, _0802A83C @ =gBattleMons -_0802A7F6: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - lsls r0, 24 - lsrs r4, r0, 24 - cmp r5, 0 - beq _0802A8AE - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _0802A8AE - ldr r2, _0802A840 @ =gBattlerPartyIndexes - ldr r0, _0802A844 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _0802A848 - movs r0, 0x58 - muls r0, r1 - b _0802A878 - .align 2, 0 -_0802A838: .4byte gBattleCommunication -_0802A83C: .4byte gBattleMons -_0802A840: .4byte gBattlerPartyIndexes -_0802A844: .4byte gBattlerAttacker -_0802A848: - ldr r0, _0802A880 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802A890 - ldr r0, _0802A884 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r6 - bne _0802A890 - ldr r0, _0802A888 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0802A88C @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802A890 - movs r0, 0x58 - muls r0, r3 -_0802A878: - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - b _0802A89C - .align 2, 0 -_0802A880: .4byte gBattleTypeFlags -_0802A884: .4byte gActiveBattler -_0802A888: .4byte gAbsentBattlerFlags -_0802A88C: .4byte gBitTable -_0802A890: - adds r0, r5, 0 - adds r1, r4, 0 - bl GetAbilityBySpecies - lsls r0, 24 - lsrs r0, 24 -_0802A89C: - cmp r0, 0x2B - beq _0802A8AE - movs r0, 0x1 - lsls r0, r6 - mov r1, r8 - orrs r1, r0 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 -_0802A8AE: - adds r6, 0x1 - cmp r6, 0x5 - ble _0802A7F6 - b _0802A934 -_0802A8B6: - ldr r1, _0802A970 @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - movs r2, 0x3F - mov r8, r2 - ldr r3, _0802A974 @ =gBattleMons - ldr r2, _0802A978 @ =gBattlerAttacker - ldrb r0, [r2] - movs r5, 0x58 - muls r0, r5 - movs r1, 0x4C - adds r1, r3 - mov r9, r1 - add r0, r9 - str r4, [r0] - ldrb r0, [r2] - adds r1, r0, 0 - muls r1, r5 - adds r7, r3, 0 - adds r7, 0x50 - adds r1, r7 - ldr r0, [r1] - ldr r6, _0802A97C @ =0xf7ffffff - ands r0, r6 - str r0, [r1] - ldrb r0, [r2] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r4, _0802A980 @ =gActiveBattler - strb r0, [r4] - ldr r0, _0802A984 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802A934 - ldr r0, _0802A988 @ =gAbsentBattlerFlags - ldrb r2, [r0] - ldr r1, _0802A98C @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - ands r2, r0 - cmp r2, 0 - bne _0802A934 - adds r0, r3, 0 - muls r0, r5 - add r0, r9 - str r2, [r0] - ldrb r0, [r4] - adds r1, r0, 0 - muls r1, r5 - adds r1, r7 - ldr r0, [r1] - ands r0, r6 - str r0, [r1] -_0802A934: - mov r2, r8 - cmp r2, 0 - beq _0802A956 - ldr r4, _0802A980 @ =gActiveBattler - ldr r0, _0802A978 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - add r0, sp, 0x4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0802A956: - ldr r1, _0802A990 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - 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 -_0802A970: .4byte gBattleCommunication -_0802A974: .4byte gBattleMons -_0802A978: .4byte gBattlerAttacker -_0802A97C: .4byte 0xf7ffffff -_0802A980: .4byte gActiveBattler -_0802A984: .4byte gBattleTypeFlags -_0802A988: .4byte gAbsentBattlerFlags -_0802A98C: .4byte gBitTable -_0802A990: .4byte gBattlescriptCurrInstr - thumb_func_end atkAE_healpartystatus - - thumb_func_start atkAF_cursetarget -atkAF_cursetarget: @ 802A994 - push {r4,r5,lr} - ldr r5, _0802A9D4 @ =gBattleMons - ldr r0, _0802A9D8 @ =gBattlerTarget - ldrb r0, [r0] - movs r4, 0x58 - adds r1, r0, 0 - muls r1, r4 - adds r0, r5, 0 - adds r0, 0x50 - adds r1, r0 - ldr r2, [r1] - movs r3, 0x80 - lsls r3, 21 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - beq _0802A9E0 - ldr r3, _0802A9DC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802AA04 - .align 2, 0 -_0802A9D4: .4byte gBattleMons -_0802A9D8: .4byte gBattlerTarget -_0802A9DC: .4byte gBattlescriptCurrInstr -_0802A9E0: - orrs r2, r3 - str r2, [r1] - ldr r1, _0802AA0C @ =gBattleMoveDamage - ldr r0, _0802AA10 @ =gBattlerAttacker - ldrb r0, [r0] - muls r0, r4 - adds r0, r5 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _0802A9FC - movs r0, 0x1 - str r0, [r1] -_0802A9FC: - ldr r1, _0802AA14 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802AA04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802AA0C: .4byte gBattleMoveDamage -_0802AA10: .4byte gBattlerAttacker -_0802AA14: .4byte gBattlescriptCurrInstr - thumb_func_end atkAF_cursetarget - - thumb_func_start atkB0_trysetspikes -atkB0_trysetspikes: @ 802AA18 - push {r4,lr} - ldr r4, _0802AA6C @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802AA70 @ =gSideTimers - lsls r2, r0, 1 - adds r0, r2, r0 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0xA] - cmp r0, 0x3 - bne _0802AA7C - ldr r2, _0802AA74 @ =gSpecialStatuses - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r3, _0802AA78 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802AA96 - .align 2, 0 -_0802AA6C: .4byte gBattlerAttacker -_0802AA70: .4byte gSideTimers -_0802AA74: .4byte gSpecialStatuses -_0802AA78: .4byte gBattlescriptCurrInstr -_0802AA7C: - ldr r1, _0802AA9C @ =gSideStatuses - adds r1, r2, r1 - ldrh r2, [r1] - movs r0, 0x10 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r3, 0xA] - adds r0, 0x1 - strb r0, [r3, 0xA] - ldr r1, _0802AAA0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802AA96: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802AA9C: .4byte gSideStatuses -_0802AAA0: .4byte gBattlescriptCurrInstr - thumb_func_end atkB0_trysetspikes - - thumb_func_start atkB1_setforesight -atkB1_setforesight: @ 802AAA4 - ldr r1, _0802AAC8 @ =gBattleMons - ldr r0, _0802AACC @ =gBattlerTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 22 - orrs r0, r1 - str r0, [r2] - ldr r1, _0802AAD0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802AAC8: .4byte gBattleMons -_0802AACC: .4byte gBattlerTarget -_0802AAD0: .4byte gBattlescriptCurrInstr - thumb_func_end atkB1_setforesight - - thumb_func_start atkB2_trysetperishsong -atkB2_trysetperishsong: @ 802AAD4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r3, 0 - ldr r0, _0802AB18 @ =gBattlersCount - adds r7, r0, 0 - ldr r0, _0802AB1C @ =gBattlerAttacker - mov r8, r0 - ldrb r1, [r7] - cmp r6, r1 - bge _0802AB40 - movs r5, 0x20 - ldr r0, _0802AB20 @ =gBattleMons - mov r12, r0 - ldr r0, _0802AB24 @ =gDisableStructs - adds r4, r0, 0 - adds r4, 0xF - ldr r2, _0802AB28 @ =gStatuses3 -_0802AAFC: - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r5 - cmp r0, 0 - bne _0802AB14 - movs r0, 0x58 - muls r0, r3 - add r0, r12 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _0802AB2C -_0802AB14: - adds r6, 0x1 - b _0802AB34 - .align 2, 0 -_0802AB18: .4byte gBattlersCount -_0802AB1C: .4byte gBattlerAttacker -_0802AB20: .4byte gBattleMons -_0802AB24: .4byte gDisableStructs -_0802AB28: .4byte gStatuses3 -_0802AB2C: - orrs r1, r5 - str r1, [r2] - movs r0, 0x33 - strb r0, [r4] -_0802AB34: - adds r4, 0x1C - adds r2, 0x4 - adds r3, 0x1 - ldrb r0, [r7] - cmp r3, r0 - blt _0802AAFC -_0802AB40: - mov r1, r8 - ldrb r0, [r1] - bl PressurePPLoseOnUsingPerishSong - ldr r0, _0802AB6C @ =gBattlersCount - ldrb r0, [r0] - cmp r6, r0 - bne _0802AB74 - ldr r3, _0802AB70 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802AB7C - .align 2, 0 -_0802AB6C: .4byte gBattlersCount -_0802AB70: .4byte gBattlescriptCurrInstr -_0802AB74: - ldr r1, _0802AB88 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802AB7C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802AB88: .4byte gBattlescriptCurrInstr - thumb_func_end atkB2_trysetperishsong - - thumb_func_start atkB3_rolloutdamagecalculation -atkB3_rolloutdamagecalculation: @ 802AB8C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0802ABB0 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0802ABC0 - ldr r0, _0802ABB4 @ =gBattlerAttacker - ldrb r0, [r0] - bl CancelMultiTurnMoves - ldr r1, _0802ABB8 @ =gBattlescriptCurrInstr - ldr r0, _0802ABBC @ =BattleScript_MoveMissedPause - str r0, [r1] - b _0802ACD8 - .align 2, 0 -_0802ABB0: .4byte gMoveResultFlags -_0802ABB4: .4byte gBattlerAttacker -_0802ABB8: .4byte gBattlescriptCurrInstr -_0802ABBC: .4byte BattleScript_MoveMissedPause -_0802ABC0: - ldr r2, _0802ACE4 @ =gBattleMons - ldr r1, _0802ACE8 @ =gBattlerAttacker - ldrb r3, [r1] - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r4, r2, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r7, 0x80 - lsls r7, 5 - ands r0, r7 - adds r6, r1, 0 - mov r9, r2 - ldr r1, _0802ACEC @ =gDisableStructs - mov r12, r1 - ldr r2, _0802ACF0 @ =gCurrentMove - mov r8, r2 - cmp r0, 0 - bne _0802AC32 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x5 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r2, [r0, 0x11] - movs r1, 0xF - ands r1, r2 - movs r2, 0x50 - orrs r1, r2 - strb r1, [r0, 0x11] - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - orrs r0, r7 - str r0, [r1] - ldr r1, _0802ACF4 @ =gLockedMoves - ldrb r0, [r6] - lsls r0, 1 - adds r0, r1 - mov r2, r8 - ldrh r1, [r2] - strh r1, [r0] -_0802AC32: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - add r2, r12 - ldrb r3, [r2, 0x11] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x11] - cmp r1, 0 - bne _0802AC66 - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r5 - adds r1, r4 - ldr r0, [r1] - ldr r2, _0802ACF8 @ =0xffffefff - ands r0, r2 - str r0, [r1] -_0802AC66: - ldr r3, _0802ACFC @ =gDynamicBasePower - ldr r2, _0802AD00 @ =gBattleMoves - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, r12 - adds r4, r0, r1 - ldrb r0, [r4, 0x11] - lsls r0, 28 - lsrs r0, 28 - movs r1, 0x5 - subs r1, r0 - ldr r7, _0802AD04 @ =gBattlescriptCurrInstr - adds r5, r3, 0 - cmp r2, r1 - bge _0802ACB4 - adds r1, r5, 0 - adds r3, r4, 0 - movs r4, 0x5 -_0802ACA0: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x11] - lsls r0, 28 - lsrs r0, 28 - subs r0, r4, r0 - cmp r2, r0 - blt _0802ACA0 -_0802ACB4: - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - mov r1, r9 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 23 - ands r0, r1 - cmp r0, 0 - beq _0802ACD2 - ldrh r0, [r5] - lsls r0, 1 - strh r0, [r5] -_0802ACD2: - ldr r0, [r7] - adds r0, 0x1 - str r0, [r7] -_0802ACD8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802ACE4: .4byte gBattleMons -_0802ACE8: .4byte gBattlerAttacker -_0802ACEC: .4byte gDisableStructs -_0802ACF0: .4byte gCurrentMove -_0802ACF4: .4byte gLockedMoves -_0802ACF8: .4byte 0xffffefff -_0802ACFC: .4byte gDynamicBasePower -_0802AD00: .4byte gBattleMoves -_0802AD04: .4byte gBattlescriptCurrInstr - thumb_func_end atkB3_rolloutdamagecalculation - - thumb_func_start atkB4_jumpifconfusedandstatmaxed -atkB4_jumpifconfusedandstatmaxed: @ 802AD08 - push {r4,r5,lr} - ldr r5, _0802AD58 @ =gBattleMons - ldr r0, _0802AD5C @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r5, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - ldr r4, _0802AD60 @ =gBattlescriptCurrInstr - cmp r0, 0 - beq _0802AD64 - ldr r2, [r4] - ldrb r0, [r2, 0x1] - adds r0, r3 - adds r1, r5, 0 - adds r1, 0x18 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xC - bne _0802AD64 - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0802AD6A - .align 2, 0 -_0802AD58: .4byte gBattleMons -_0802AD5C: .4byte gBattlerTarget -_0802AD60: .4byte gBattlescriptCurrInstr -_0802AD64: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0802AD6A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end atkB4_jumpifconfusedandstatmaxed - - thumb_func_start atkB5_furycuttercalc -atkB5_furycuttercalc: @ 802AD70 - push {r4,r5,lr} - ldr r0, _0802AD98 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0802ADAC - ldr r2, _0802AD9C @ =gDisableStructs - ldr r0, _0802ADA0 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strb r1, [r0, 0x10] - ldr r1, _0802ADA4 @ =gBattlescriptCurrInstr - ldr r0, _0802ADA8 @ =BattleScript_MoveMissedPause - str r0, [r1] - b _0802AE04 - .align 2, 0 -_0802AD98: .4byte gMoveResultFlags -_0802AD9C: .4byte gDisableStructs -_0802ADA0: .4byte gBattlerAttacker -_0802ADA4: .4byte gBattlescriptCurrInstr -_0802ADA8: .4byte BattleScript_MoveMissedPause -_0802ADAC: - ldr r5, _0802AE0C @ =gDisableStructs - ldr r4, _0802AE10 @ =gBattlerAttacker - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1, 0x10] - cmp r0, 0x5 - beq _0802ADC4 - adds r0, 0x1 - strb r0, [r1, 0x10] -_0802ADC4: - ldr r3, _0802AE14 @ =gDynamicBasePower - ldr r2, _0802AE18 @ =gBattleMoves - ldr r0, _0802AE1C @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r3] - movs r2, 0x1 - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r4, _0802AE20 @ =gBattlescriptCurrInstr - ldrb r1, [r0, 0x10] - cmp r2, r1 - bge _0802ADFE - adds r1, r3, 0 - adds r3, r0, 0 -_0802ADF0: - ldrh r0, [r1] - lsls r0, 1 - strh r0, [r1] - adds r2, 0x1 - ldrb r0, [r3, 0x10] - cmp r2, r0 - blt _0802ADF0 -_0802ADFE: - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] -_0802AE04: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802AE0C: .4byte gDisableStructs -_0802AE10: .4byte gBattlerAttacker -_0802AE14: .4byte gDynamicBasePower -_0802AE18: .4byte gBattleMoves -_0802AE1C: .4byte gCurrentMove -_0802AE20: .4byte gBattlescriptCurrInstr - thumb_func_end atkB5_furycuttercalc - - thumb_func_start atkB6_happinesstodamagecalculation -atkB6_happinesstodamagecalculation: @ 802AE24 - push {r4,lr} - ldr r2, _0802AE50 @ =gBattleMoves - ldr r0, _0802AE54 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x79 - bne _0802AE64 - ldr r4, _0802AE58 @ =gDynamicBasePower - ldr r2, _0802AE5C @ =gBattleMons - ldr r0, _0802AE60 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r1, [r0] - b _0802AE7A - .align 2, 0 -_0802AE50: .4byte gBattleMoves -_0802AE54: .4byte gCurrentMove -_0802AE58: .4byte gDynamicBasePower -_0802AE5C: .4byte gBattleMons -_0802AE60: .4byte gBattlerAttacker -_0802AE64: - ldr r4, _0802AE98 @ =gDynamicBasePower - ldr r2, _0802AE9C @ =gBattleMons - ldr r0, _0802AEA0 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2B - ldrb r0, [r0] - movs r1, 0xFF - subs r1, r0 -_0802AE7A: - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - movs r1, 0x19 - bl __divsi3 - strh r0, [r4] - ldr r1, _0802AEA4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802AE98: .4byte gDynamicBasePower -_0802AE9C: .4byte gBattleMons -_0802AEA0: .4byte gBattlerAttacker -_0802AEA4: .4byte gBattlescriptCurrInstr - thumb_func_end atkB6_happinesstodamagecalculation - - thumb_func_start atkB7_presentdamagecalculation -atkB7_presentdamagecalculation: @ 802AEA8 - push {r4,lr} - bl Random - movs r4, 0xFF - ands r4, r0 - cmp r4, 0x65 - bgt _0802AEC4 - ldr r1, _0802AEC0 @ =gDynamicBasePower - movs r0, 0x28 - strh r0, [r1] - b _0802AF06 - .align 2, 0 -_0802AEC0: .4byte gDynamicBasePower -_0802AEC4: - cmp r4, 0xB1 - bgt _0802AED4 - ldr r1, _0802AED0 @ =gDynamicBasePower - movs r0, 0x50 - strh r0, [r1] - b _0802AF06 - .align 2, 0 -_0802AED0: .4byte gDynamicBasePower -_0802AED4: - cmp r4, 0xCB - bgt _0802AEE4 - ldr r1, _0802AEE0 @ =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] - b _0802AF06 - .align 2, 0 -_0802AEE0: .4byte gDynamicBasePower -_0802AEE4: - ldr r3, _0802AF10 @ =gBattleMoveDamage - ldr r2, _0802AF14 @ =gBattleMons - ldr r0, _0802AF18 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r3] - cmp r0, 0 - bne _0802AF00 - movs r0, 0x1 - str r0, [r3] -_0802AF00: - ldr r0, [r3] - negs r0, r0 - str r0, [r3] -_0802AF06: - cmp r4, 0xCB - bgt _0802AF24 - ldr r1, _0802AF1C @ =gBattlescriptCurrInstr - ldr r0, _0802AF20 @ =BattleScript_HitFromCritCalc - b _0802AF5E - .align 2, 0 -_0802AF10: .4byte gBattleMoveDamage -_0802AF14: .4byte gBattleMons -_0802AF18: .4byte gBattlerTarget -_0802AF1C: .4byte gBattlescriptCurrInstr -_0802AF20: .4byte BattleScript_HitFromCritCalc -_0802AF24: - ldr r2, _0802AF40 @ =gBattleMons - ldr r0, _0802AF44 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0, 0x2C] - ldrh r0, [r0, 0x28] - cmp r1, r0 - bne _0802AF50 - ldr r1, _0802AF48 @ =gBattlescriptCurrInstr - ldr r0, _0802AF4C @ =BattleScript_AlreadyAtFullHp - b _0802AF5E - .align 2, 0 -_0802AF40: .4byte gBattleMons -_0802AF44: .4byte gBattlerTarget -_0802AF48: .4byte gBattlescriptCurrInstr -_0802AF4C: .4byte BattleScript_AlreadyAtFullHp -_0802AF50: - ldr r2, _0802AF68 @ =gMoveResultFlags - ldrb r1, [r2] - movs r0, 0xF7 - ands r0, r1 - strb r0, [r2] - ldr r1, _0802AF6C @ =gBattlescriptCurrInstr - ldr r0, _0802AF70 @ =BattleScript_PresentHealTarget -_0802AF5E: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802AF68: .4byte gMoveResultFlags -_0802AF6C: .4byte gBattlescriptCurrInstr -_0802AF70: .4byte BattleScript_PresentHealTarget - thumb_func_end atkB7_presentdamagecalculation - - thumb_func_start atkB8_setsafeguard -atkB8_setsafeguard: @ 802AF74 - push {r4-r7,lr} - ldr r7, _0802AFA8 @ =gBattlerAttacker - ldrb r0, [r7] - bl GetBattlerPosition - ldr r4, _0802AFAC @ =gSideStatuses - movs r6, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r1, [r1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0802AFB8 - ldr r2, _0802AFB0 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802AFB4 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _0802B000 - .align 2, 0 -_0802AFA8: .4byte gBattlerAttacker -_0802AFAC: .4byte gSideStatuses -_0802AFB0: .4byte gMoveResultFlags -_0802AFB4: .4byte gBattleCommunication -_0802AFB8: - ldrb r0, [r7] - bl GetBattlerPosition - adds r1, r6, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r0, [r1] - movs r2, 0x20 - orrs r0, r2 - strh r0, [r1] - ldrb r0, [r7] - bl GetBattlerPosition - ldr r5, _0802B010 @ =gSideTimers - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r4, 0x5 - strb r4, [r0, 0x6] - ldrb r0, [r7] - bl GetBattlerPosition - adds r1, r6, 0 - ands r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r7] - strb r1, [r0, 0x7] - ldr r0, _0802B014 @ =gBattleCommunication - strb r4, [r0, 0x5] -_0802B000: - ldr r1, _0802B018 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B010: .4byte gSideTimers -_0802B014: .4byte gBattleCommunication -_0802B018: .4byte gBattlescriptCurrInstr - thumb_func_end atkB8_setsafeguard - - thumb_func_start atkB9_magnitudedamagecalculation -atkB9_magnitudedamagecalculation: @ 802B01C - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bgt _0802B048 - ldr r1, _0802B044 @ =gDynamicBasePower - movs r0, 0xA - strh r0, [r1] - movs r3, 0x4 - b _0802B0B4 - .align 2, 0 -_0802B044: .4byte gDynamicBasePower -_0802B048: - cmp r3, 0xE - bgt _0802B05C - ldr r1, _0802B058 @ =gDynamicBasePower - movs r0, 0x1E - strh r0, [r1] - movs r3, 0x5 - b _0802B0B4 - .align 2, 0 -_0802B058: .4byte gDynamicBasePower -_0802B05C: - cmp r3, 0x22 - bgt _0802B070 - ldr r1, _0802B06C @ =gDynamicBasePower - movs r0, 0x32 - strh r0, [r1] - movs r3, 0x6 - b _0802B0B4 - .align 2, 0 -_0802B06C: .4byte gDynamicBasePower -_0802B070: - cmp r3, 0x40 - bgt _0802B084 - ldr r1, _0802B080 @ =gDynamicBasePower - movs r0, 0x46 - strh r0, [r1] - movs r3, 0x7 - b _0802B0B4 - .align 2, 0 -_0802B080: .4byte gDynamicBasePower -_0802B084: - cmp r3, 0x54 - bgt _0802B098 - ldr r1, _0802B094 @ =gDynamicBasePower - movs r0, 0x5A - strh r0, [r1] - movs r3, 0x8 - b _0802B0B4 - .align 2, 0 -_0802B094: .4byte gDynamicBasePower -_0802B098: - cmp r3, 0x5E - bgt _0802B0AC - ldr r1, _0802B0A8 @ =gDynamicBasePower - movs r0, 0x6E - strh r0, [r1] - movs r3, 0x9 - b _0802B0B4 - .align 2, 0 -_0802B0A8: .4byte gDynamicBasePower -_0802B0AC: - ldr r1, _0802B120 @ =gDynamicBasePower - movs r0, 0x96 - strh r0, [r1] - movs r3, 0xA -_0802B0B4: - ldr r1, _0802B124 @ =gBattleTextBuff1 - movs r2, 0 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r0, [r1, 0x2] - movs r0, 0x2 - strb r0, [r1, 0x3] - strb r3, [r1, 0x4] - movs r0, 0xFF - strb r0, [r1, 0x5] - ldr r1, _0802B128 @ =gBattlerTarget - strb r2, [r1] - ldr r0, _0802B12C @ =gBattlersCount - ldrb r3, [r0] - adds r6, r1, 0 - ldr r0, _0802B130 @ =gBattlescriptCurrInstr - mov r8, r0 - cmp r2, r3 - bcs _0802B10C - adds r4, r6, 0 - ldr r0, _0802B134 @ =gBattlerAttacker - ldrb r5, [r0] - ldr r1, _0802B138 @ =gBitTable - mov r12, r1 - ldr r7, _0802B13C @ =gAbsentBattlerFlags -_0802B0EA: - ldrb r2, [r4] - cmp r2, r5 - beq _0802B100 - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _0802B10C -_0802B100: - adds r0, r2, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r3 - bcc _0802B0EA -_0802B10C: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B120: .4byte gDynamicBasePower -_0802B124: .4byte gBattleTextBuff1 -_0802B128: .4byte gBattlerTarget -_0802B12C: .4byte gBattlersCount -_0802B130: .4byte gBattlescriptCurrInstr -_0802B134: .4byte gBattlerAttacker -_0802B138: .4byte gBitTable -_0802B13C: .4byte gAbsentBattlerFlags - thumb_func_end atkB9_magnitudedamagecalculation - - thumb_func_start atkBA_jumpifnopursuitswitchdmg -atkBA_jumpifnopursuitswitchdmg: @ 802B140 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0802B164 @ =gMultiHitCounter - ldrb r0, [r0] - cmp r0, 0x1 - bne _0802B170 - ldr r0, _0802B168 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0802B16C - movs r0, 0x1 - b _0802B18A - .align 2, 0 -_0802B164: .4byte gMultiHitCounter -_0802B168: .4byte gBattlerAttacker -_0802B16C: - movs r0, 0 - b _0802B18A -_0802B170: - ldr r0, _0802B184 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0802B188 - movs r0, 0x3 - b _0802B18A - .align 2, 0 -_0802B184: .4byte gBattlerAttacker -_0802B188: - movs r0, 0x2 -_0802B18A: - bl GetBattlerAtPosition - ldr r1, _0802B264 @ =gBattlerTarget - strb r0, [r1] - ldr r0, _0802B268 @ =gChosenActionByBattler - ldr r1, _0802B264 @ =gBattlerTarget - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0802B1A2 - b _0802B2A8 -_0802B1A2: - ldr r5, _0802B26C @ =gBattlerAttacker - ldr r0, _0802B270 @ =gBattleStruct - ldr r1, [r0] - adds r1, r3, r1 - ldrb r2, [r5] - ldrb r1, [r1, 0xC] - cmp r2, r1 - bne _0802B2A8 - ldr r4, _0802B274 @ =gBattleMons - movs r2, 0x58 - adds r0, r3, 0 - muls r0, r2 - adds r1, r4, 0 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r1, 0x27 - ands r0, r1 - cmp r0, 0 - bne _0802B2A8 - ldrb r0, [r5] - muls r0, r2 - adds r0, r4 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _0802B2A8 - ldr r0, _0802B278 @ =gDisableStructs - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - bne _0802B2A8 - ldr r0, _0802B27C @ =gChosenMoveByBattler - lsls r1, r3, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0xE4 - bne _0802B2A8 - movs r1, 0 - ldr r0, _0802B280 @ =gBattlersCount - ldr r2, _0802B284 @ =gCurrentMove - mov r8, r2 - ldr r7, _0802B288 @ =gCurrMovePos - mov r10, r7 - ldr r2, _0802B28C @ =gChosenMovePos - mov r9, r2 - ldr r7, _0802B290 @ =gHitMarker - mov r12, r7 - ldrb r2, [r0] - cmp r1, r2 - bge _0802B22E - ldr r6, _0802B294 @ =gBattlerByTurnOrder - ldr r5, _0802B264 @ =gBattlerTarget - ldr r4, _0802B298 @ =gActionsByTurnOrder - movs r3, 0xB - adds r2, r0, 0 -_0802B218: - adds r0, r1, r6 - ldrb r0, [r0] - ldrb r7, [r5] - cmp r0, r7 - bne _0802B226 - adds r0, r1, r4 - strb r3, [r0] -_0802B226: - adds r1, 0x1 - ldrb r0, [r2] - cmp r1, r0 - blt _0802B218 -_0802B22E: - movs r0, 0xE4 - mov r1, r8 - strh r0, [r1] - ldr r2, _0802B264 @ =gBattlerTarget - ldrb r0, [r2] - ldr r7, _0802B270 @ =gBattleStruct - ldr r1, [r7] - adds r0, r1 - adds r0, 0x80 - ldrb r0, [r0] - mov r1, r9 - strb r0, [r1] - mov r2, r10 - strb r0, [r2] - ldr r7, _0802B29C @ =gBattlescriptCurrInstr - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - movs r0, 0x1 - ldr r1, _0802B2A0 @ =gBattleScripting - strb r0, [r1, 0x18] - mov r2, r12 - ldr r0, [r2] - ldr r1, _0802B2A4 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - b _0802B2C2 - .align 2, 0 -_0802B264: .4byte gBattlerTarget -_0802B268: .4byte gChosenActionByBattler -_0802B26C: .4byte gBattlerAttacker -_0802B270: .4byte gBattleStruct -_0802B274: .4byte gBattleMons -_0802B278: .4byte gDisableStructs -_0802B27C: .4byte gChosenMoveByBattler -_0802B280: .4byte gBattlersCount -_0802B284: .4byte gCurrentMove -_0802B288: .4byte gCurrMovePos -_0802B28C: .4byte gChosenMovePos -_0802B290: .4byte gHitMarker -_0802B294: .4byte gBattlerByTurnOrder -_0802B298: .4byte gActionsByTurnOrder -_0802B29C: .4byte gBattlescriptCurrInstr -_0802B2A0: .4byte gBattleScripting -_0802B2A4: .4byte 0xfffffbff -_0802B2A8: - ldr r3, _0802B2D0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B2C2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B2D0: .4byte gBattlescriptCurrInstr - thumb_func_end atkBA_jumpifnopursuitswitchdmg - - thumb_func_start atkBB_setsunny -atkBB_setsunny: @ 802B2D4 - push {lr} - ldr r2, _0802B2F4 @ =gBattleWeather - ldrh r1, [r2] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0802B300 - ldr r2, _0802B2F8 @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802B2FC @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0802B312 - .align 2, 0 -_0802B2F4: .4byte gBattleWeather -_0802B2F8: .4byte gMoveResultFlags -_0802B2FC: .4byte gBattleCommunication -_0802B300: - movs r0, 0x20 - strh r0, [r2] - ldr r1, _0802B320 @ =gBattleCommunication - movs r0, 0x4 - strb r0, [r1, 0x5] - ldr r0, _0802B324 @ =gWishFutureKnock - adds r0, 0x28 - movs r1, 0x5 - strb r1, [r0] -_0802B312: - ldr r1, _0802B328 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802B320: .4byte gBattleCommunication -_0802B324: .4byte gWishFutureKnock -_0802B328: .4byte gBattlescriptCurrInstr - thumb_func_end atkBB_setsunny - - thumb_func_start atkBC_maxattackhalvehp -atkBC_maxattackhalvehp: @ 802B32C - push {r4,r5,lr} - ldr r5, _0802B378 @ =gBattleMons - ldr r4, _0802B37C @ =gBattlerAttacker - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r2, r0, r5 - ldrh r0, [r2, 0x2C] - lsrs r1, r0, 1 - cmp r1, 0 - bne _0802B344 - movs r1, 0x1 -_0802B344: - movs r0, 0x19 - ldrsb r0, [r2, r0] - cmp r0, 0xB - bgt _0802B388 - ldrh r0, [r2, 0x28] - cmp r0, r1 - bls _0802B388 - movs r0, 0xC - strb r0, [r2, 0x19] - ldr r1, _0802B380 @ =gBattleMoveDamage - ldrb r0, [r4] - muls r0, r3 - adds r0, r5 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _0802B36C - movs r0, 0x1 - str r0, [r1] -_0802B36C: - ldr r1, _0802B384 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802B3A2 - .align 2, 0 -_0802B378: .4byte gBattleMons -_0802B37C: .4byte gBattlerAttacker -_0802B380: .4byte gBattleMoveDamage -_0802B384: .4byte gBattlescriptCurrInstr -_0802B388: - ldr r3, _0802B3A8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B3A2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802B3A8: .4byte gBattlescriptCurrInstr - thumb_func_end atkBC_maxattackhalvehp - - thumb_func_start atkBD_copyfoestats -atkBD_copyfoestats: @ 802B3AC - push {r4-r7,lr} - movs r2, 0 - ldr r7, _0802B3E4 @ =gBattlescriptCurrInstr - ldr r6, _0802B3E8 @ =gBattlerAttacker - movs r4, 0x58 - ldr r3, _0802B3EC @ =gUnknown_2023BFC - ldr r5, _0802B3F0 @ =gBattlerTarget -_0802B3BA: - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r4 - adds r1, r2, r1 - adds r1, r3 - ldrb r0, [r5] - muls r0, r4 - adds r0, r2, r0 - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x7 - ble _0802B3BA - ldr r0, [r7] - adds r0, 0x5 - str r0, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B3E4: .4byte gBattlescriptCurrInstr -_0802B3E8: .4byte gBattlerAttacker -_0802B3EC: .4byte gUnknown_2023BFC -_0802B3F0: .4byte gBattlerTarget - thumb_func_end atkBD_copyfoestats - - thumb_func_start atkBE_rapidspinfree -atkBE_rapidspinfree: @ 802B3F4 - push {r4-r6,lr} - ldr r1, _0802B464 @ =gBattleMons - ldr r5, _0802B468 @ =gBattlerAttacker - ldrb r2, [r5] - movs r6, 0x58 - adds r0, r2, 0 - muls r0, r6 - adds r4, r1, 0 - adds r4, 0x50 - adds r0, r4 - ldr r0, [r0] - movs r1, 0xE0 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0802B488 - ldr r1, _0802B46C @ =gBattleScripting - ldr r3, _0802B470 @ =gBattlerTarget - ldrb r0, [r3] - strb r0, [r1, 0x17] - ldrb r0, [r5] - adds r1, r0, 0 - muls r1, r6 - adds r1, r4 - ldr r0, [r1] - ldr r2, _0802B474 @ =0xffff1fff - ands r0, r2 - str r0, [r1] - ldrb r0, [r5] - ldr r1, _0802B478 @ =gBattleStruct - ldr r2, [r1] - adds r0, r2 - ldrb r0, [r0, 0x14] - strb r0, [r3] - ldr r1, _0802B47C @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r5] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x2] - ldrb r0, [r5] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - bl BattleScriptPushCursor - ldr r1, _0802B480 @ =gBattlescriptCurrInstr - ldr r0, _0802B484 @ =BattleScript_WrapFree - b _0802B532 - .align 2, 0 -_0802B464: .4byte gBattleMons -_0802B468: .4byte gBattlerAttacker -_0802B46C: .4byte gBattleScripting -_0802B470: .4byte gBattlerTarget -_0802B474: .4byte 0xffff1fff -_0802B478: .4byte gBattleStruct -_0802B47C: .4byte gBattleTextBuff1 -_0802B480: .4byte gBattlescriptCurrInstr -_0802B484: .4byte BattleScript_WrapFree -_0802B488: - ldr r4, _0802B4BC @ =gStatuses3 - lsls r0, r2, 2 - adds r3, r0, r4 - ldr r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802B4C8 - movs r0, 0x5 - negs r0, r0 - ands r1, r0 - str r1, [r3] - ldrb r1, [r5] - lsls r1, 2 - adds r1, r4 - ldr r0, [r1] - movs r2, 0x4 - negs r2, r2 - ands r0, r2 - str r0, [r1] - bl BattleScriptPushCursor - ldr r1, _0802B4C0 @ =gBattlescriptCurrInstr - ldr r0, _0802B4C4 @ =BattleScript_LeechSeedFree - b _0802B532 - .align 2, 0 -_0802B4BC: .4byte gStatuses3 -_0802B4C0: .4byte gBattlescriptCurrInstr -_0802B4C4: .4byte BattleScript_LeechSeedFree -_0802B4C8: - adds r0, r2, 0 - bl GetBattlerSide - ldr r4, _0802B518 @ =gSideStatuses - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0802B52C - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - ldrh r2, [r0] - ldr r1, _0802B51C @ =0x0000ffef - ands r1, r2 - movs r4, 0 - strh r1, [r0] - ldrb r0, [r5] - bl GetBattlerSide - ldr r2, _0802B520 @ =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - strb r4, [r1, 0xA] - bl BattleScriptPushCursor - ldr r1, _0802B524 @ =gBattlescriptCurrInstr - ldr r0, _0802B528 @ =BattleScript_SpikesFree - b _0802B532 - .align 2, 0 -_0802B518: .4byte gSideStatuses -_0802B51C: .4byte 0x0000ffef -_0802B520: .4byte gSideTimers -_0802B524: .4byte gBattlescriptCurrInstr -_0802B528: .4byte BattleScript_SpikesFree -_0802B52C: - ldr r1, _0802B53C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 -_0802B532: - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802B53C: .4byte gBattlescriptCurrInstr - thumb_func_end atkBE_rapidspinfree - - thumb_func_start atkBF_setdefensecurlbit -atkBF_setdefensecurlbit: @ 802B540 - ldr r1, _0802B564 @ =gBattleMons - ldr r0, _0802B568 @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r2, r0 - adds r1, 0x50 - adds r2, r1 - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 23 - orrs r0, r1 - str r0, [r2] - ldr r1, _0802B56C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802B564: .4byte gBattleMons -_0802B568: .4byte gBattlerAttacker -_0802B56C: .4byte gBattlescriptCurrInstr - thumb_func_end atkBF_setdefensecurlbit - - thumb_func_start atkC0_recoverbasedonsunlight -atkC0_recoverbasedonsunlight: @ 802B570 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _0802B5DC @ =gBattlerTarget - ldr r5, _0802B5E0 @ =gBattlerAttacker - ldrb r0, [r5] - strb r0, [r1] - ldr r7, _0802B5E4 @ =gBattleMons - ldrb r0, [r5] - movs r6, 0x58 - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - beq _0802B650 - ldr r4, _0802B5E8 @ =gBattleWeather - ldrh r0, [r4] - cmp r0, 0 - beq _0802B5C2 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0802B5C2 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0802B5F0 -_0802B5C2: - ldr r3, _0802B5EC @ =gBattleMoveDamage - ldr r2, _0802B5E4 @ =gBattleMons - ldr r0, _0802B5E0 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r3] - adds r1, r3, 0 - b _0802B62A - .align 2, 0 -_0802B5DC: .4byte gBattlerTarget -_0802B5E0: .4byte gBattlerAttacker -_0802B5E4: .4byte gBattleMons -_0802B5E8: .4byte gBattleWeather -_0802B5EC: .4byte gBattleMoveDamage -_0802B5F0: - ldrh r1, [r4] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0802B61C - ldr r4, _0802B618 @ =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r1, [r0, 0x2C] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1E - bl __divsi3 - str r0, [r4] - adds r1, r4, 0 - b _0802B62A - .align 2, 0 -_0802B618: .4byte gBattleMoveDamage -_0802B61C: - ldr r1, _0802B648 @ =gBattleMoveDamage - ldrb r0, [r5] - muls r0, r6 - adds r0, r7 - ldrh r0, [r0, 0x2C] - lsrs r0, 2 - str r0, [r1] -_0802B62A: - adds r2, r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _0802B636 - movs r0, 0x1 - str r0, [r2] -_0802B636: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r1, _0802B64C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802B66A - .align 2, 0 -_0802B648: .4byte gBattleMoveDamage -_0802B64C: .4byte gBattlescriptCurrInstr -_0802B650: - ldr r3, _0802B674 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802B66A: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B674: .4byte gBattlescriptCurrInstr - thumb_func_end atkC0_recoverbasedonsunlight - thumb_func_start atkC1_hiddenpowercalc atkC1_hiddenpowercalc: @ 802B678 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index 8abb95333..88b440a22 100644 --- a/include/battle.h +++ b/include/battle.h @@ -147,19 +147,6 @@ #define TYPE_FORESIGHT 0xFE #define TYPE_ENDTABLE 0xFF -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_GET_gBank1 3 -#define BS_GET_BANK_0 7 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 - // for battle script commands #define CMP_EQUAL 0x0 #define CMP_NOT_EQUAL 0x1 @@ -942,5 +929,6 @@ extern u8 gLeveledUpInBattle; extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index fa60e301a..d45675ff8 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -14,10 +14,6 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability - #define ATK48_STAT_NEGATIVE 0x1 #define ATK48_STAT_BY_TWO 0x2 #define ATK48_BIT_x4 0x4 diff --git a/include/constants/battle.h b/include/constants/battle.h index f524a7643..b9026262a 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -174,7 +174,7 @@ #define HITMARKER_GRUDGE 0x01000000 #define HITMARKER_OBEYS 0x02000000 #define HITMARKER_x4000000 0x04000000 -#define HITMARKER_x8000000 0x08000000 +#define HITMARKER_CHARGING 0x08000000 #define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C) #define HITMARKER_UNK(battler) (0x10000000 << battler) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 32d656673..3809610ba 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -39,13 +39,13 @@ #define BS_EFFECT_BATTLER 2 #define BS_FAINTED 3 #define BS_BATTLER_0 7 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_updatestatusicon #define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability #define BS_SCRIPTING 10 #define BS_PLAYER1 11 #define BS_OPPONENT1 12 -#define BS_PLAYER2 13 +#define BS_PLAYER2 13 // for atk98_updatestatusicon #define BS_OPPONENT2 14 // atk 01, accuracy calc diff --git a/include/party_menu.h b/include/party_menu.h index 4c38df658..cd2a5bc37 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -79,5 +79,7 @@ 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); +bool8 IsMultiBattle(void); #endif // GUARD_PARTY_MENU_H diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index b7cf113d4..55d135a4e 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1647,7 +1647,7 @@ static void BattleAICmd_if_last_move_did_damage(void) if (gAIScriptPtr[2] == 0) { - if (gDisableStructs[index].disabledMove == 0) + if (gDisableStructs[index].disabledMove == MOVE_NONE) { gAIScriptPtr += 7; return; @@ -1660,7 +1660,7 @@ static void BattleAICmd_if_last_move_did_damage(void) gAIScriptPtr += 7; return; } - else if (gDisableStructs[index].encoredMove != 0) + else if (gDisableStructs[index].encoredMove != MOVE_NONE) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); return; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 9d0c25fce..932e52791 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6279,7 +6279,7 @@ void atk78_faintifabilitynotdamp(void) { if (!gBattleControllerExecFlags) { - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) { if (gBattleMons[gBattlerTarget].ability == ABILITY_DAMP) break; @@ -6292,7 +6292,7 @@ void atk78_faintifabilitynotdamp(void) MarkBattlerForControllerExec(gActiveBattler); ++gBattlescriptCurrInstr; - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++) + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) { if (gBattlerTarget == gBattlerAttacker) continue; @@ -7065,3 +7065,1488 @@ bool8 TryDoForceSwitchOut(void) gBattlescriptCurrInstr = BattleScript_SuccessForceOut; return TRUE; } + +#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_HP)))) + +void atk8F_forcerandomswitch(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + u8 i; + struct Pokemon *party; + u8 valid; + u8 val; + + if (!GetBattlerSide(gBattlerTarget)) + party = gPlayerParty; + else + party = gEnemyParty; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + valid = 0; + val = 0; + if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gBattlerTarget)) == 1) + val = 3; + for (i = val; i < val + 3; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + ++valid; + } + } + else + { + valid = 0; + for (i = 0; i < 6; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&party[i], MON_DATA_IS_EGG) + && GetMonData(&party[i], MON_DATA_HP) != 0) + ++valid; + } + } + + if ((valid < 2 && (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE) + || (valid < 3 && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else if (TryDoForceSwitchOut()) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + do + { + val = Random() % 3; + if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gBattlerTarget)) == 1) + i = val + 3; + else + i = val; + } + while (i == gBattlerPartyIndexes[gBattlerTarget] + || i == gBattlerPartyIndexes[gBattlerTarget ^ 2] + || !MON_CAN_BATTLE(&party[i])); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + i = Random() % 6; + } + while (i == gBattlerPartyIndexes[gBattlerTarget] + || i == gBattlerPartyIndexes[gBattlerTarget ^ 2] + || !MON_CAN_BATTLE(&party[i])); + } + else + { + do + { + i = Random() % 6; + } + while (i == gBattlerPartyIndexes[gBattlerTarget] + || !MON_CAN_BATTLE(&party[i])); + } + } + *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i; + if (!IsMultiBattle()) + sub_8013F6C(gBattlerTarget); + sub_8127EC4(gBattlerTarget, i, 0); + sub_8127EC4(gBattlerTarget ^ 2, i, 1); + } + } + else + { + TryDoForceSwitchOut(); + } +} + +void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type +{ + u8 validMoves = 0; + u8 moveChecked; + u8 moveType; + + while (validMoves < MAX_MON_MOVES) + { + if (gBattleMons[gBattlerAttacker].moves[validMoves] == MOVE_NONE) + break; + ++validMoves; + } + for (moveChecked = 0; moveChecked < validMoves; ++moveChecked) + { + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; + if (moveType == TYPE_MYSTERY) + { + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) + moveType = TYPE_GHOST; + else + moveType = TYPE_NORMAL; + } + if (moveType != gBattleMons[gBattlerAttacker].type1 + && moveType != gBattleMons[gBattlerAttacker].type2) + { + break; + } + } + if (moveChecked == validMoves) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + do + { + while ((moveChecked = Random() & 3) >= validMoves); + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; + if (moveType == TYPE_MYSTERY) + { + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) + moveType = TYPE_GHOST; + else + moveType = TYPE_NORMAL; + } + } + while (moveType == gBattleMons[gBattlerAttacker].type1 + || moveType == gBattleMons[gBattlerAttacker].type2); + SET_BATTLER_TYPE(gBattlerAttacker, moveType); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); + gBattlescriptCurrInstr += 5; + } +} + +void atk91_givepaydaymoney(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney != 0) + { + u32 bonusMoney = gPaydayMoney * gBattleStruct->moneyMultiplier; + + AddMoney(&gSaveBlock1Ptr->money, bonusMoney); + PREPARE_HWORD_NUMBER_BUFFER(gBattleTextBuff1, 5, bonusMoney) + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_PrintPayDayMoneyString; + } + else + { + ++gBattlescriptCurrInstr; + } +} + +void atk92_setlightscreen(void) +{ + if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_LIGHTSCREEN) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_LIGHTSCREEN; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenTimer = 5; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenBattlerId = gBattlerAttacker; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + } + ++gBattlescriptCurrInstr; +} + +void atk93_tryKO(void) +{ + u8 holdEffect, param; + + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) + { + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; + } + else + { + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + } + gPotentialItemEffectBattler = gBattlerTarget; + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + { + RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_FOCUS_BAND); + gSpecialStatuses[gBattlerTarget].focusBanded = 1; + } + + if (gBattleMons[gBattlerTarget].ability == ABILITY_STURDY) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gLastUsedAbility = ABILITY_STURDY; + gBattlescriptCurrInstr = BattleScript_SturdyPreventsOHKO; + RecordAbilityBattle(gBattlerTarget, ABILITY_STURDY); + } + else + { + u16 chance; + + if (!(gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS)) + { + chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level); + if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + chance = TRUE; + else + chance = FALSE; + } + else if (gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker + && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + { + chance = TRUE; + } + else + { + chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level); + if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + chance = TRUE; + else + chance = FALSE; + } + if (chance) + { + if (gProtectStructs[gBattlerTarget].endured) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; + } + else if (gSpecialStatuses[gBattlerTarget].focusBanded) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; + gLastUsedItem = gBattleMons[gBattlerTarget].item; + } + else + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp; + gMoveResultFlags |= MOVE_RESULT_ONE_HIT_KO; + } + gBattlescriptCurrInstr += 5; + } + else + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + } +} + +void atk94_damagetohalftargethp(void) // super fang +{ + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + ++gBattlescriptCurrInstr; +} + +void atk95_setsandstorm(void) +{ + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SANDSTORM_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gWishFutureKnock.weatherDuration = 5; + } + ++gBattlescriptCurrInstr; +} + +void atk96_weatherdamage(void) +{ + if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + && (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)) + { + gBattleMoveDamage = 0; + ++gBattlescriptCurrInstr; + return; + } + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (gBattleMons[gBattlerAttacker].type1 != TYPE_ROCK + && gBattleMons[gBattlerAttacker].type1 != TYPE_STEEL + && gBattleMons[gBattlerAttacker].type1 != TYPE_GROUND + && gBattleMons[gBattlerAttacker].type2 != TYPE_ROCK + && gBattleMons[gBattlerAttacker].type2 != TYPE_STEEL + && gBattleMons[gBattlerAttacker].type2 != TYPE_GROUND + && gBattleMons[gBattlerAttacker].ability != ABILITY_SAND_VEIL + && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND) + && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + if (gBattleWeather & WEATHER_HAIL) + { + if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE) + && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND) + && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER)) + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else + { + gBattleMoveDamage = 0; + } + } + } + else + { + gBattleMoveDamage = 0; + } + if (gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) + gBattleMoveDamage = 0; + ++gBattlescriptCurrInstr; +} + +void atk97_tryinfatuating(void) +{ + struct Pokemon *monAttacker, *monTarget; + u16 speciesAttacker, speciesTarget; + u32 personalityAttacker, personalityTarget; + + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + monAttacker = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]; + else + monAttacker = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]]; + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + monTarget = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]; + else + monTarget = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]; + speciesAttacker = GetMonData(monAttacker, MON_DATA_SPECIES); + personalityAttacker = GetMonData(monAttacker, MON_DATA_PERSONALITY); + speciesTarget = GetMonData(monTarget, MON_DATA_SPECIES); + personalityTarget = GetMonData(monTarget, MON_DATA_PERSONALITY); + if (gBattleMons[gBattlerTarget].ability == ABILITY_OBLIVIOUS) + { + gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction; + gLastUsedAbility = ABILITY_OBLIVIOUS; + RecordAbilityBattle(gBattlerTarget, ABILITY_OBLIVIOUS); + } + else + { + if (GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) + || gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION + || GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS + || GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); + gBattlescriptCurrInstr += 5; + } + } +} + +void atk98_updatestatusicon(void) +{ + if (!gBattleControllerExecFlags) + { + if (gBattlescriptCurrInstr[1] == BS_PLAYER2) + { + for (gActiveBattler = gBattleControllerExecFlags; gActiveBattler < gBattlersCount; ++gActiveBattler) + { + if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + { + BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattlescriptCurrInstr += 2; + } + else if (gBattlescriptCurrInstr[1] == BS_ATTACKER_WITH_PARTNER) + { + gActiveBattler = gBattlerAttacker; + if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + { + BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); + MarkBattlerForControllerExec(gActiveBattler); + } + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + { + BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); + MarkBattlerForControllerExec(gActiveBattler); + } + } + gBattlescriptCurrInstr += 2; + } + else + { + + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 2; + } + } +} + +void atk99_setmist(void) +{ + if (gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer) + { + gMoveResultFlags |= MOVE_RESULT_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer = 5; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistBattlerId = gBattlerAttacker; + gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_MIST; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + ++gBattlescriptCurrInstr; +} + +void atk9A_setfocusenergy(void) +{ + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) + { + gMoveResultFlags |= MOVE_RESULT_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMons[gBattlerAttacker].status2 |= STATUS2_FOCUS_ENERGY; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + ++gBattlescriptCurrInstr; +} + +void atk9B_transformdataexecution(void) +{ + gChosenMove = 0xFFFF; + ++gBattlescriptCurrInstr; + if (gBattleMons[gBattlerTarget].status2 & STATUS2_TRANSFORMED + || gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE) + { + gMoveResultFlags |= MOVE_RESULT_FAILED; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + s32 i; + u8 *battleMonAttacker, *battleMonTarget; + + gBattleMons[gBattlerAttacker].status2 |= STATUS2_TRANSFORMED; + gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; + gDisableStructs[gBattlerAttacker].disableTimer = 0; + gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; + gDisableStructs[gBattlerAttacker].mimickedMoves = 0; + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].species) + battleMonAttacker = (u8 *)(&gBattleMons[gBattlerAttacker]); + battleMonTarget = (u8 *)(&gBattleMons[gBattlerTarget]); + for (i = 0; i < offsetof(struct BattlePokemon, pp); ++i) + battleMonAttacker[i] = battleMonTarget[i]; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].pp < 5) + gBattleMons[gBattlerAttacker].pp[i] = gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].pp; + else + gBattleMons[gBattlerAttacker].pp[i] = 5; + } + gActiveBattler = gBattlerAttacker; + BtlController_EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION); + MarkBattlerForControllerExec(gActiveBattler); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } +} + +void atk9C_setsubstitute(void) +{ + u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4; + + if (gBattleMons[gBattlerAttacker].maxHP / 4 == 0) + hp = 1; + if (gBattleMons[gBattlerAttacker].hp <= hp) + { + gBattleMoveDamage = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else + { + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMons[gBattlerAttacker].status2 |= STATUS2_SUBSTITUTE; + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED); + gDisableStructs[gBattlerAttacker].substituteHP = gBattleMoveDamage; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE; + } + ++gBattlescriptCurrInstr; +} + +bool8 IsMoveUncopyableByMimic(u16 move) +{ + s32 i; + + for (i = 0; sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END && sMovesForbiddenToCopy[i] != move; ++i); + return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); +} + +void atk9D_mimicattackcopy(void) +{ + gChosenMove = 0xFFFF; + if (IsMoveUncopyableByMimic(gLastMoves[gBattlerTarget]) + || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED + || gLastMoves[gBattlerTarget] == 0 + || gLastMoves[gBattlerTarget] == 0xFFFF) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gBattlerAttacker].moves[i] == gLastMoves[gBattlerTarget]) + break; + } + if (i == MAX_MON_MOVES) + { + gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastMoves[gBattlerTarget]; + if (gBattleMoves[gLastMoves[gBattlerTarget]].pp < 5) + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBattlerTarget]].pp; + else + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 5; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget]) + gDisableStructs[gBattlerAttacker].mimickedMoves |= gBitTable[gCurrMovePos]; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + } +} + +void atk9E_metronome(void) +{ + while (1) + { + s32 i; + + gCurrentMove = (Random() & 0x1FF) + 1; + if (gCurrentMove >= MOVES_COUNT) + continue; + for (i = 0; i < MAX_MON_MOVES; ++i); // redundant + i = -1; + while (1) + { + ++i; + if (sMovesForbiddenToCopy[i] == gCurrentMove) + break; + if (sMovesForbiddenToCopy[i] == METRONOME_FORBIDDEN_END) + break; + } + if (sMovesForbiddenToCopy[i] == METRONOME_FORBIDDEN_END) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + gBattlerTarget = GetMoveTarget(gCurrentMove, 0); + return; + } + } +} + +void atk9F_dmgtolevel(void) +{ + gBattleMoveDamage = gBattleMons[gBattlerAttacker].level; + ++gBattlescriptCurrInstr; +} + +void atkA0_psywavedamageeffect(void) +{ + s32 randDamage; + + while ((randDamage = (Random() & 0xF)) > 10); + randDamage *= 10; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100; + ++gBattlescriptCurrInstr; +} + +void atkA1_counterdamagecalculator(void) +{ + u8 sideAttacker = GetBattlerSide(gBattlerAttacker); + u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBattlerId); + + if (gProtectStructs[gBattlerAttacker].physicalDmg + && sideAttacker != sideTarget + && gBattleMons[gProtectStructs[gBattlerAttacker].physicalBattlerId].hp) + { + gBattleMoveDamage = gProtectStructs[gBattlerAttacker].physicalDmg * 2; + + if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp) + gBattlerTarget = gSideTimers[sideTarget].followmeTarget; + else + gBattlerTarget = gProtectStructs[gBattlerAttacker].physicalBattlerId; + + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +// a copy of atkA1 with the physical -> special field changes +void atkA2_mirrorcoatdamagecalculator(void) +{ + u8 sideAttacker = GetBattlerSide(gBattlerAttacker); + u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBattlerId); + + if (gProtectStructs[gBattlerAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBattlerAttacker].specialBattlerId].hp) + { + gBattleMoveDamage = gProtectStructs[gBattlerAttacker].specialDmg * 2; + if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp) + gBattlerTarget = gSideTimers[sideTarget].followmeTarget; + else + gBattlerTarget = gProtectStructs[gBattlerAttacker].specialBattlerId; + gBattlescriptCurrInstr += 5; + } + else + { + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkA3_disablelastusedattack(void) +{ + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) + break; + } + if (gDisableStructs[gBattlerTarget].disabledMove == MOVE_NONE + && i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] != 0) + { + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].moves[i]) + gDisableStructs[gBattlerTarget].disabledMove = gBattleMons[gBattlerTarget].moves[i]; + gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 2; + gDisableStructs[gBattlerTarget].disableTimerStartValue = gDisableStructs[gBattlerTarget].disableTimer; // used to save the random amount of turns? + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkA4_trysetencore(void) +{ + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) + break; + if (gLastMoves[gBattlerTarget] == MOVE_STRUGGLE + || gLastMoves[gBattlerTarget] == MOVE_ENCORE + || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE) + i = 4; + if (gDisableStructs[gBattlerTarget].encoredMove == MOVE_NONE + && i != 4 + && gBattleMons[gBattlerTarget].pp[i] != 0) + { + gDisableStructs[gBattlerTarget].encoredMove = gBattleMons[gBattlerTarget].moves[i]; + gDisableStructs[gBattlerTarget].encoredMovePos = i; + gDisableStructs[gBattlerTarget].encoreTimer = (Random() & 3) + 3; + gDisableStructs[gBattlerTarget].encoreTimerStartValue = gDisableStructs[gBattlerTarget].encoreTimer; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkA5_painsplitdmgcalc(void) +{ + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)) + { + s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2; + s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff; + u8 *storeLoc = (void *)(&gBattleScripting.painSplitHp); + + storeLoc[0] = (painSplitHp); + storeLoc[1] = (painSplitHp & 0x0000FF00) >> 8; + storeLoc[2] = (painSplitHp & 0x00FF0000) >> 16; + storeLoc[3] = (painSplitHp & 0xFF000000) >> 24; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp - hpDiff; + gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkA6_settypetorandomresistance(void) // conversion 2 +{ + if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE + || gLastLandedMoves[gBattlerAttacker] == 0xFFFF) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) + && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + s32 i, j, rands; + + for (rands = 0; rands < 1000; ++rands) + { + while (((i = (Random() & 0x7F)) > sizeof(gTypeEffectiveness) / 3)); + i *= 3; + if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBattlerAttacker] + && TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i))) + { + SET_BATTLER_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i)); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(i)); + + gBattlescriptCurrInstr += 5; + return; + } + } + for (j = 0, rands = 0; rands < sizeof(gTypeEffectiveness); j += 3, rands += 3) + { + switch (TYPE_EFFECT_ATK_TYPE(j)) + { + case TYPE_ENDTABLE: + case TYPE_FORESIGHT: + break; + default: + if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBattlerAttacker] + && TYPE_EFFECT_MULTIPLIER(j) <= 5 + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i))) + { + SET_BATTLER_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(rands)); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(rands)) + + gBattlescriptCurrInstr += 5; + return; + } + break; + } + } + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkA7_setalwayshitflag(void) +{ + gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS); + gStatuses3[gBattlerTarget] |= 0x10; + gDisableStructs[gBattlerTarget].battlerWithSureHit = gBattlerAttacker; + ++gBattlescriptCurrInstr; +} + +void atkA8_copymovepermanently(void) // sketch +{ + gChosenMove = 0xFFFF; + if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + && gLastPrintedMoves[gBattlerTarget] != MOVE_STRUGGLE + && gLastPrintedMoves[gBattlerTarget] != 0 + && gLastPrintedMoves[gBattlerTarget] != 0xFFFF + && gLastPrintedMoves[gBattlerTarget] != MOVE_SKETCH) + { + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gBattlerAttacker].moves[i] == MOVE_SKETCH) + continue; + if (gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget]) + break; + } + if (i != MAX_MON_MOVES) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else // sketch worked + { + struct MovePpInfo movePpData; + + gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBattlerTarget]; + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBattlerTarget]].pp; + gActiveBattler = gBattlerAttacker; + for (i = 0; i < MAX_MON_MOVES; ++i) + { + movePpData.moves[i] = gBattleMons[gBattlerAttacker].moves[i]; + movePpData.pp[i] = gBattleMons[gBattlerAttacker].pp[i]; + } + movePpData.ppBonuses = gBattleMons[gBattlerAttacker].ppBonuses; + BtlController_EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData); + MarkBattlerForControllerExec(gActiveBattler); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBattlerTarget]) + gBattlescriptCurrInstr += 5; + } + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +bool8 IsTwoTurnsMove(u16 move) +{ + if (gBattleMoves[move].effect == EFFECT_SKULL_BASH + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE + || gBattleMoves[move].effect == EFFECT_BIDE) + return TRUE; + else + return FALSE; +} + +bool8 IsInvalidForSleepTalkOrAssist(u16 move) +{ + if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST + || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) + return TRUE; + else + return FALSE; +} + +u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 +{ + // first argument is unused + if (gBattleMoves[move].effect == EFFECT_SOLARBEAM + && (gBattleWeather & WEATHER_SUN_ANY)) + return 2; + if (gBattleMoves[move].effect == EFFECT_SKULL_BASH + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE + || gBattleMoves[move].effect == EFFECT_BIDE) + if ((gHitMarker & HITMARKER_CHARGING)) + return 1; + return 2; +} + +void atkA9_trychoosesleeptalkmove(void) +{ + s32 i; + u8 unusableMovesBits = 0; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (IsInvalidForSleepTalkOrAssist(gBattleMons[gBattlerAttacker].moves[i]) + || gBattleMons[gBattlerAttacker].moves[i] == MOVE_FOCUS_PUNCH + || gBattleMons[gBattlerAttacker].moves[i] == MOVE_UPROAR + || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) + { + unusableMovesBits |= gBitTable[i]; + } + } + unusableMovesBits = CheckMoveLimitations(gBattlerAttacker, unusableMovesBits, ~(MOVE_LIMITATION_PP)); + if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen + { + gBattlescriptCurrInstr += 5; + } + else // at least one move can be chosen + { + u32 movePosition; + + do + movePosition = Random() & 3; + while ((gBitTable[movePosition] & unusableMovesBits)); + gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition]; + gCurrMovePos = movePosition; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlerTarget = GetMoveTarget(gCalledMove, 0); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkAA_setdestinybond(void) +{ + gBattleMons[gBattlerAttacker].status2 |= STATUS2_DESTINY_BOND; + ++gBattlescriptCurrInstr; +} + +void TrySetDestinyBondToHappen(void) +{ + u8 sideAttacker = GetBattlerSide(gBattlerAttacker); + u8 sideTarget = GetBattlerSide(gBattlerTarget); + + if (gBattleMons[gBattlerTarget].status2 & STATUS2_DESTINY_BOND + && sideAttacker != sideTarget + && !(gHitMarker & HITMARKER_GRUDGE)) + gHitMarker |= HITMARKER_DESTINYBOND; +} + +void atkAB_trysetdestinybondtohappen(void) +{ + TrySetDestinyBondToHappen(); + ++gBattlescriptCurrInstr; +} + +void atkAC_remaininghptopower(void) +{ + s32 i; + s32 hpFraction = GetScaledHPFraction(gBattleMons[gBattlerAttacker].hp, gBattleMons[gBattlerAttacker].maxHP, 48); + + for (i = 0; i < (s32)sizeof(sFlailHpScaleToPowerTable); i += 2) + { + if (hpFraction <= sFlailHpScaleToPowerTable[i]) + break; + } + gDynamicBasePower = sFlailHpScaleToPowerTable[i + 1]; + ++gBattlescriptCurrInstr; +} + +void atkAD_tryspiteppreduce(void) +{ + if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != 0xFFFF) + { + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > 1) + { + s32 ppToDeduct = (Random() & 3) + 2; + + if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct) + ppToDeduct = gBattleMons[gBattlerTarget].pp[i]; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget]) + ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1); + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct) + gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct; + gActiveBattler = gBattlerTarget; + if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i]) + && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + { + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); + MarkBattlerForControllerExec(gActiveBattler); + } + gBattlescriptCurrInstr += 5; + if (gBattleMons[gBattlerTarget].pp[i] == 0) + CancelMultiTurnMoves(gBattlerTarget); + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkAE_healpartystatus(void) +{ + u32 zero = 0; + u8 toHeal = 0; + + if (gCurrentMove == MOVE_HEAL_BELL) + { + struct Pokemon *party; + s32 i; + + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + if (gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBattlerAttacker].status1 = 0; + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + } + else + { + RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 1; + } + gActiveBattler = gBattleScripting.battler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + { + if (gBattleMons[gActiveBattler].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gActiveBattler].status1 = 0; + gBattleMons[gActiveBattler].status2 &= ~(STATUS2_NIGHTMARE); + } + else + { + RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); + gBattleCommunication[MULTISTRING_CHOOSER] |= 2; + } + } + for (i = 0; i < PARTY_SIZE; ++i) + { + u16 species = GetMonData(&party[i], MON_DATA_SPECIES2); + u8 abilityNum = GetMonData(&party[i], MON_DATA_ABILITY_NUM); + + if (species != SPECIES_NONE && species != SPECIES_EGG) + { + u8 ability; + + if (gBattlerPartyIndexes[gBattlerAttacker] == i) + ability = gBattleMons[gBattlerAttacker].ability; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattlerPartyIndexes[gActiveBattler] == i + && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + ability = gBattleMons[gActiveBattler].ability; + else + ability = GetAbilityBySpecies(species, abilityNum); + if (ability != ABILITY_SOUNDPROOF) + toHeal |= (1 << i); + } + } + } + else // Aromatherapy + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + toHeal = 0x3F; + gBattleMons[gBattlerAttacker].status1 = 0; + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])) + { + gBattleMons[gActiveBattler].status1 = 0; + gBattleMons[gActiveBattler].status2 &= ~(STATUS2_NIGHTMARE); + } + + } + if (toHeal) + { + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero); + MarkBattlerForControllerExec(gActiveBattler); + } + ++gBattlescriptCurrInstr; +} + +void atkAF_cursetarget(void) +{ + if (gBattleMons[gBattlerTarget].status2 & STATUS2_CURSED) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_CURSED; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } +} + +void atkB0_trysetspikes(void) +{ + u8 targetSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + + if (gSideTimers[targetSide].spikesAmount == 3) + { + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gSideStatuses[targetSide] |= SIDE_STATUS_SPIKES; + ++gSideTimers[targetSide].spikesAmount; + gBattlescriptCurrInstr += 5; + } +} + +void atkB1_setforesight(void) +{ + gBattleMons[gBattlerTarget].status2 |= STATUS2_FORESIGHT; + ++gBattlescriptCurrInstr; +} + +void atkB2_trysetperishsong(void) +{ + s32 i; + s32 notAffectedCount = 0; + + for (i = 0; i < gBattlersCount; ++i) + { + if (gStatuses3[i] & STATUS3_PERISH_SONG + || gBattleMons[i].ability == ABILITY_SOUNDPROOF) + { + ++notAffectedCount; + } + else + { + gStatuses3[i] |= STATUS3_PERISH_SONG; + gDisableStructs[i].perishSongTimer = 3; + gDisableStructs[i].perishSongTimerStartValue = 3; + } + } + PressurePPLoseOnUsingPerishSong(gBattlerAttacker); + if (notAffectedCount == gBattlersCount) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atkB3_rolloutdamagecalculation(void) +{ + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + CancelMultiTurnMoves(gBattlerAttacker); + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; + } + else + { + s32 i; + + if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit + { + gDisableStructs[gBattlerAttacker].rolloutTimer = 5; + gDisableStructs[gBattlerAttacker].rolloutTimerStartValue = 5; + gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS; + gLockedMoves[gBattlerAttacker] = gCurrentMove; + } + if (--gDisableStructs[gBattlerAttacker].rolloutTimer == 0) // last hit + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + for (i = 1; i < (5 - gDisableStructs[gBattlerAttacker].rolloutTimer); ++i) + gDynamicBasePower *= 2; + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_DEFENSE_CURL) + gDynamicBasePower *= 2; + ++gBattlescriptCurrInstr; + } +} + +void atkB4_jumpifconfusedandstatmaxed(void) +{ + if (gBattleMons[gBattlerTarget].status2 & STATUS2_CONFUSION + && gBattleMons[gBattlerTarget].statStages[gBattlescriptCurrInstr[1]] == 12) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atkB5_furycuttercalc(void) +{ + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gDisableStructs[gBattlerAttacker].furyCutterCounter = 0; + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; + } + else + { + s32 i; + + if (gDisableStructs[gBattlerAttacker].furyCutterCounter != 5) + ++gDisableStructs[gBattlerAttacker].furyCutterCounter; + gDynamicBasePower = gBattleMoves[gCurrentMove].power; + + for (i = 1; i < gDisableStructs[gBattlerAttacker].furyCutterCounter; ++i) + gDynamicBasePower *= 2; + ++gBattlescriptCurrInstr; + } +} + +void atkB6_happinesstodamagecalculation(void) +{ + if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) + gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25; + else // EFFECT_FRUSTRATION + gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25; + ++gBattlescriptCurrInstr; +} + +void atkB7_presentdamagecalculation(void) +{ + s32 rand = Random() & 0xFF; + + if (rand < 102) + { + gDynamicBasePower = 40; + } + else if (rand < 178) + { + gDynamicBasePower = 80; + } + else if (rand < 204) + { + gDynamicBasePower = 120; + } + else + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + if (rand < 204) + { + gBattlescriptCurrInstr = BattleScript_HitFromCritCalc; + } + else if (gBattleMons[gBattlerTarget].maxHP == gBattleMons[gBattlerTarget].hp) + { + gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp; + } + else + { + gMoveResultFlags &= ~(MOVE_RESULT_DOESNT_AFFECT_FOE); + gBattlescriptCurrInstr = BattleScript_PresentHealTarget; + } +} + +void atkB8_setsafeguard(void) +{ + if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_SAFEGUARD) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardTimer = 5; + gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardBattlerId = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + ++gBattlescriptCurrInstr; +} + +void atkB9_magnitudedamagecalculation(void) +{ + s32 magnitude = Random() % 100; + + if (magnitude < 5) + { + gDynamicBasePower = 10; + magnitude = 4; + } + else if (magnitude < 15) + { + gDynamicBasePower = 30; + magnitude = 5; + } + else if (magnitude < 35) + { + gDynamicBasePower = 50; + magnitude = 6; + } + else if (magnitude < 65) + { + gDynamicBasePower = 70; + magnitude = 7; + } + else if (magnitude < 85) + { + gDynamicBasePower = 90; + magnitude = 8; + } + else if (magnitude < 95) + { + gDynamicBasePower = 110; + magnitude = 9; + } + else + { + gDynamicBasePower = 150; + magnitude = 10; + } + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 2, magnitude) + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) // a valid target was found + break; + } + ++gBattlescriptCurrInstr; +} + +void atkBA_jumpifnopursuitswitchdmg(void) +{ + if (gMultiHitCounter == 1) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + } + else + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + else + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + if (gChosenActionByBattler[gBattlerTarget] == B_ACTION_USE_MOVE + && gBattlerAttacker == *(gBattleStruct->moveTarget + gBattlerTarget) + && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) + && gBattleMons[gBattlerAttacker].hp + && !gDisableStructs[gBattlerTarget].truantCounter + && gChosenMoveByBattler[gBattlerTarget] == MOVE_PURSUIT) + { + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + if (gBattlerByTurnOrder[i] == gBattlerTarget) + gActionsByTurnOrder[i] = 11; + gCurrentMove = MOVE_PURSUIT; + gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerTarget); + gBattlescriptCurrInstr += 5; + gBattleScripting.animTurn = 1; + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkBB_setsunny(void) +{ + if (gBattleWeather & WEATHER_SUN_ANY) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_SUN_TEMPORARY; + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gWishFutureKnock.weatherDuration = 5; + } + ++gBattlescriptCurrInstr; +} + +void atkBC_maxattackhalvehp(void) // belly drum +{ + u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2; + + if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) + halfHp = 1; + if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < 12 + && gBattleMons[gBattlerAttacker].hp > halfHp) + { + gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = 12; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkBD_copyfoestats(void) // psych up +{ + s32 i; + + for (i = 0; i < NUM_BATTLE_STATS; ++i) + gBattleMons[gBattlerAttacker].statStages[i] = gBattleMons[gBattlerTarget].statStages[i]; + gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter. +} + +void atkBE_rapidspinfree(void) +{ + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_WRAPPED) + { + gBattleScripting.battler = gBattlerTarget; + gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED); + gBattlerTarget = *(gBattleStruct->wrappedBy + gBattlerAttacker); + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; + gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gBattlerAttacker * 2 + 0); + gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gBattlerAttacker * 2 + 1); + gBattleTextBuff1[4] = B_BUFF_EOS; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WrapFree; + } + else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED) + { + gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED); + gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BATTLER); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_LeechSeedFree; + } + else if (gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES) + { + gSideStatuses[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideTimers[GetBattlerSide(gBattlerAttacker)].spikesAmount = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SpikesFree; + } + else + { + ++gBattlescriptCurrInstr; + } +} + +void atkBF_setdefensecurlbit(void) +{ + gBattleMons[gBattlerAttacker].status2 |= STATUS2_DEFENSE_CURL; + ++gBattlescriptCurrInstr; +} + +void atkC0_recoverbasedonsunlight(void) +{ + gBattlerTarget = gBattlerAttacker; + if (gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP) + { + if (gBattleWeather == 0 || !WEATHER_HAS_EFFECT) + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + else if (gBattleWeather & WEATHER_SUN_ANY) + gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + else // not sunny weather + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} diff --git a/src/battle_util.c b/src/battle_util.c index 83d24f5e1..5e86425a9 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -926,12 +926,12 @@ u8 DoBattlerEndTurnEffects(void) } if (i == MAX_MON_MOVES) // pokemon does not have the disabled move anymore { - gDisableStructs[gActiveBattler].disabledMove = 0; + gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE; gDisableStructs[gActiveBattler].disableTimer = 0; } else if (--gDisableStructs[gActiveBattler].disableTimer == 0) // disable ends { - gDisableStructs[gActiveBattler].disabledMove = 0; + gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE; BattleScriptExecute(BattleScript_DisabledNoMore); ++effect; } @@ -943,13 +943,13 @@ u8 DoBattlerEndTurnEffects(void) { if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore { - gDisableStructs[gActiveBattler].encoredMove = 0; + gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE; gDisableStructs[gActiveBattler].encoreTimer = 0; } else if (--gDisableStructs[gActiveBattler].encoreTimer == 0 || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) { - gDisableStructs[gActiveBattler].encoredMove = 0; + gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE; gDisableStructs[gActiveBattler].encoreTimer = 0; BattleScriptExecute(BattleScript_EncoredNoMore); ++effect; @@ -1307,7 +1307,7 @@ u8 AtkCanceller_UnableToUseMove(void) ++gBattleStruct->atkCancellerTracker; break; case CANCELLER_DISABLED: // disabled move - if (gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != 0) + if (gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE) { gProtectStructs[gBattlerAttacker].usedDisabledMove = 1; gBattleScripting.battler = gBattlerAttacker; From f4b4f5dd0c698bad4e9b10b712c15f5c448a0203 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 12:00:08 +0800 Subject: [PATCH 030/100] thru atkee --- asm/battle_script_commands.s | 3790 ---------------------------------- include/battle.h | 3 +- include/constants/battle.h | 15 +- src/battle_script_commands.c | 897 +++++++- 4 files changed, 912 insertions(+), 3793 deletions(-) diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 5d8648ced..00d3e49c7 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -5,3796 +5,6 @@ .text - thumb_func_start atkC1_hiddenpowercalc -atkC1_hiddenpowercalc: @ 802B678 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _0802B760 @ =gBattleMons - ldr r0, _0802B764 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrb r0, [r1, 0x14] - mov r9, r0 - mov r7, r9 - lsls r7, 27 - adds r0, r7, 0 - lsrs r0, 27 - mov r9, r0 - movs r4, 0x2 - mov r2, r9 - ands r2, r4 - asrs r2, 1 - ldrh r7, [r1, 0x14] - mov r8, r7 - mov r0, r8 - lsls r0, 22 - lsrs r0, 27 - mov r8, r0 - ands r0, r4 - orrs r2, r0 - ldrb r6, [r1, 0x15] - lsls r6, 25 - lsrs r6, 27 - adds r0, r6, 0 - ands r0, r4 - lsls r0, 1 - orrs r2, r0 - ldr r5, [r1, 0x14] - lsls r5, 12 - lsrs r5, 27 - adds r0, r5, 0 - ands r0, r4 - lsls r0, 2 - orrs r2, r0 - ldrh r3, [r1, 0x16] - lsls r3, 23 - lsrs r3, 27 - adds r0, r3, 0 - ands r0, r4 - lsls r0, 3 - orrs r2, r0 - ldrb r1, [r1, 0x17] - lsls r1, 26 - lsrs r1, 27 - adds r0, r1, 0 - ands r0, r4 - lsls r0, 4 - orrs r2, r0 - movs r0, 0x1 - adds r4, r0, 0 - mov r7, r9 - ands r4, r7 - mov r7, r8 - ands r7, r0 - lsls r7, 1 - orrs r4, r7 - ands r6, r0 - lsls r6, 2 - orrs r4, r6 - ands r5, r0 - lsls r5, 3 - orrs r4, r5 - ands r3, r0 - lsls r3, 4 - orrs r4, r3 - ands r1, r0 - lsls r1, 5 - orrs r4, r1 - ldr r5, _0802B768 @ =gDynamicBasePower - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - movs r1, 0x3F - bl __divsi3 - adds r0, 0x1E - strh r0, [r5] - ldr r6, _0802B76C @ =gBattleStruct - ldr r5, [r6] - lsls r0, r4, 4 - subs r0, r4 - movs r1, 0x3F - bl __divsi3 - adds r0, 0x1 - strb r0, [r5, 0x13] - ldr r1, [r6] - ldrb r0, [r1, 0x13] - cmp r0, 0x8 - bls _0802B742 - adds r0, 0x1 - strb r0, [r1, 0x13] -_0802B742: - ldr r2, [r6] - ldrb r0, [r2, 0x13] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r2, 0x13] - ldr r1, _0802B770 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B760: .4byte gBattleMons -_0802B764: .4byte gBattlerAttacker -_0802B768: .4byte gDynamicBasePower -_0802B76C: .4byte gBattleStruct -_0802B770: .4byte gBattlescriptCurrInstr - thumb_func_end atkC1_hiddenpowercalc - - thumb_func_start atkC2_selectfirstvalidtarget -atkC2_selectfirstvalidtarget: @ 802B774 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0802B7D0 @ =gBattlerTarget - movs r1, 0 - strb r1, [r0] - ldr r1, _0802B7D4 @ =gBattlersCount - ldrb r1, [r1] - adds r6, r0, 0 - ldr r0, _0802B7D8 @ =gBattlescriptCurrInstr - mov r8, r0 - cmp r1, 0 - beq _0802B7BE - adds r3, r6, 0 - ldr r0, _0802B7DC @ =gBattlerAttacker - ldrb r5, [r0] - ldr r0, _0802B7E0 @ =gBitTable - mov r12, r0 - adds r4, r1, 0 - ldr r7, _0802B7E4 @ =gAbsentBattlerFlags -_0802B79C: - ldrb r2, [r3] - cmp r2, r5 - beq _0802B7B2 - ldrb r0, [r7] - ldrb r1, [r6] - lsls r1, 2 - add r1, r12 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - beq _0802B7BE -_0802B7B2: - adds r0, r2, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcc _0802B79C -_0802B7BE: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802B7D0: .4byte gBattlerTarget -_0802B7D4: .4byte gBattlersCount -_0802B7D8: .4byte gBattlescriptCurrInstr -_0802B7DC: .4byte gBattlerAttacker -_0802B7E0: .4byte gBitTable -_0802B7E4: .4byte gAbsentBattlerFlags - thumb_func_end atkC2_selectfirstvalidtarget - - thumb_func_start atkC3_trysetfutureattack -atkC3_trysetfutureattack: @ 802B7E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r0, _0802B820 @ =gWishFutureKnock - mov r8, r0 - ldr r7, _0802B824 @ =gBattlerTarget - ldrb r1, [r7] - adds r0, r1, r0 - ldrb r6, [r0] - cmp r6, 0 - beq _0802B82C - ldr r3, _0802B828 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802B8F6 - .align 2, 0 -_0802B820: .4byte gWishFutureKnock -_0802B824: .4byte gBattlerTarget -_0802B828: .4byte gBattlescriptCurrInstr -_0802B82C: - lsls r1, 1 - mov r0, r8 - adds r0, 0x18 - adds r1, r0 - ldr r2, _0802B8CC @ =gCurrentMove - mov r9, r2 - ldrh r0, [r2] - strh r0, [r1] - mov r0, r8 - adds r0, 0x4 - ldrb r4, [r7] - adds r0, r4 - ldr r5, _0802B8D0 @ =gBattlerAttacker - ldrb r1, [r5] - strb r1, [r0] - ldrb r0, [r7] - add r0, r8 - movs r1, 0x3 - strb r1, [r0] - ldr r4, _0802B8D4 @ =gSideStatuses - ldrb r0, [r7] - bl GetBattlerPosition - movs r1, 0x1 - mov r10, r1 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - ldrb r0, [r5] - movs r4, 0x58 - muls r0, r4 - ldr r2, _0802B8D8 @ =gBattleMons - adds r0, r2 - ldrb r1, [r7] - muls r1, r4 - adds r1, r2 - mov r4, r9 - ldrh r2, [r4] - str r6, [sp] - str r6, [sp, 0x4] - ldrb r4, [r5] - str r4, [sp, 0x8] - ldrb r4, [r7] - str r4, [sp, 0xC] - bl CalculateBaseDamage - ldrb r1, [r7] - lsls r1, 2 - mov r2, r8 - adds r2, 0x8 - adds r1, r2 - str r0, [r1] - ldr r1, _0802B8DC @ =gProtectStructs - ldrb r0, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _0802B8BA - ldrb r4, [r7] - lsls r4, 2 - adds r4, r2 - ldr r1, [r4] - lsls r0, r1, 4 - subs r0, r1 - movs r1, 0xA - bl __divsi3 - str r0, [r4] -_0802B8BA: - mov r0, r9 - ldrh r1, [r0] - ldr r0, _0802B8E0 @ =0x00000161 - cmp r1, r0 - bne _0802B8E8 - ldr r0, _0802B8E4 @ =gBattleCommunication - mov r1, r10 - strb r1, [r0, 0x5] - b _0802B8EE - .align 2, 0 -_0802B8CC: .4byte gCurrentMove -_0802B8D0: .4byte gBattlerAttacker -_0802B8D4: .4byte gSideStatuses -_0802B8D8: .4byte gBattleMons -_0802B8DC: .4byte gProtectStructs -_0802B8E0: .4byte 0x00000161 -_0802B8E4: .4byte gBattleCommunication -_0802B8E8: - ldr r1, _0802B908 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] -_0802B8EE: - ldr r1, _0802B90C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802B8F6: - 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 -_0802B908: .4byte gBattleCommunication -_0802B90C: .4byte gBattlescriptCurrInstr - thumb_func_end atkC3_trysetfutureattack - - thumb_func_start atkC4_trydobeatup -atkC4_trydobeatup: @ 802B910 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0802B954 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldr r7, _0802B958 @ =gEnemyParty - cmp r0, 0 - bne _0802B92A - ldr r7, _0802B95C @ =gPlayerParty -_0802B92A: - ldr r2, _0802B960 @ =gBattleMons - ldr r0, _0802B964 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0802B96C - ldr r3, _0802B968 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _0802BB08 - .align 2, 0 -_0802B954: .4byte gBattlerAttacker -_0802B958: .4byte gEnemyParty -_0802B95C: .4byte gPlayerParty -_0802B960: .4byte gBattleMons -_0802B964: .4byte gBattlerTarget -_0802B968: .4byte gBattlescriptCurrInstr -_0802B96C: - ldr r6, _0802BAA8 @ =gBattleCommunication - ldrb r0, [r6] - mov r8, r0 - cmp r0, 0x5 - bls _0802B978 - b _0802BAD4 -_0802B978: - adds r4, r6, 0 - movs r5, 0x64 -_0802B97C: - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0802B9C0 - ldrb r0, [r6] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0802B9C0 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0802B9C0 - ldrb r0, [r4] - muls r0, r5 - adds r0, r7, r0 - movs r1, 0x37 - bl GetMonData - cmp r0, 0 - beq _0802B9D0 -_0802B9C0: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - adds r6, r4, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bls _0802B97C -_0802B9D0: - ldr r1, _0802BAA8 @ =gBattleCommunication - mov r9, r1 - ldrb r2, [r1] - cmp r2, 0x5 - bhi _0802BAD4 - ldr r1, _0802BAAC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r6, _0802BAB0 @ =gBattlerAttacker - ldrb r0, [r6] - strb r0, [r1, 0x2] - strb r2, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802BAB4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x9 - str r0, [r1] - ldr r2, _0802BAB8 @ =gBattleMoveDamage - mov r8, r2 - ldr r5, _0802BABC @ =gBaseStats - mov r1, r9 - ldrb r0, [r1] - movs r4, 0x64 - muls r0, r4 - adds r0, r7, r0 - movs r1, 0xB - bl GetMonData - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r3, [r1, 0x1] - mov r2, r8 - str r3, [r2] - ldr r2, _0802BAC0 @ =gBattleMoves - ldr r0, _0802BAC4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - muls r0, r3 - mov r1, r8 - str r0, [r1] - mov r2, r9 - ldrb r0, [r2] - muls r0, r4 - adds r0, r7, r0 - movs r1, 0x38 - bl GetMonData - lsls r0, 1 - movs r1, 0x5 - bl __udivsi3 - adds r0, 0x2 - mov r2, r8 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - ldr r3, _0802BAC8 @ =gBattleMons - ldr r1, _0802BACC @ =gBattlerTarget - ldrb r2, [r1] - movs r1, 0x58 - muls r1, r2 - adds r1, r3 - ldrh r2, [r1] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - adds r1, r5 - ldrb r1, [r1, 0x2] - bl __divsi3 - mov r1, r8 - str r0, [r1] - movs r1, 0x32 - bl __divsi3 - adds r2, r0, 0x2 - mov r0, r8 - str r2, [r0] - ldr r1, _0802BAD0 @ =gProtectStructs - ldrb r0, [r6] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - bge _0802BA9C - lsls r0, r2, 4 - subs r0, r2 - movs r1, 0xA - bl __divsi3 - mov r1, r8 - str r0, [r1] -_0802BA9C: - mov r2, r9 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _0802BB0E - .align 2, 0 -_0802BAA8: .4byte gBattleCommunication -_0802BAAC: .4byte gBattleTextBuff1 -_0802BAB0: .4byte gBattlerAttacker -_0802BAB4: .4byte gBattlescriptCurrInstr -_0802BAB8: .4byte gBattleMoveDamage -_0802BABC: .4byte gBaseStats -_0802BAC0: .4byte gBattleMoves -_0802BAC4: .4byte gCurrentMove -_0802BAC8: .4byte gBattleMons -_0802BACC: .4byte gBattlerTarget -_0802BAD0: .4byte gProtectStructs -_0802BAD4: - mov r0, r8 - cmp r0, 0 - beq _0802BAF4 - ldr r3, _0802BAF0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - b _0802BB08 - .align 2, 0 -_0802BAF0: .4byte gBattlescriptCurrInstr -_0802BAF4: - ldr r3, _0802BB1C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x5] - ldrb r0, [r2, 0x6] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x7] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x8] -_0802BB08: - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802BB0E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802BB1C: .4byte gBattlescriptCurrInstr - thumb_func_end atkC4_trydobeatup - - thumb_func_start atkC5_setsemiinvulnerablebit -atkC5_setsemiinvulnerablebit: @ 802BB20 - push {lr} - ldr r0, _0802BB34 @ =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _0802BB60 - cmp r1, 0x5B - bgt _0802BB38 - cmp r1, 0x13 - beq _0802BB44 - b _0802BB8C - .align 2, 0 -_0802BB34: .4byte gCurrentMove -_0802BB38: - ldr r0, _0802BB54 @ =0x00000123 - cmp r1, r0 - beq _0802BB78 - adds r0, 0x31 - cmp r1, r0 - bne _0802BB8C -_0802BB44: - ldr r2, _0802BB58 @ =gStatuses3 - ldr r0, _0802BB5C @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x40 - b _0802BB88 - .align 2, 0 -_0802BB54: .4byte 0x00000123 -_0802BB58: .4byte gStatuses3 -_0802BB5C: .4byte gBattlerAttacker -_0802BB60: - ldr r2, _0802BB70 @ =gStatuses3 - ldr r0, _0802BB74 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - b _0802BB88 - .align 2, 0 -_0802BB70: .4byte gStatuses3 -_0802BB74: .4byte gBattlerAttacker -_0802BB78: - ldr r2, _0802BB98 @ =gStatuses3 - ldr r0, _0802BB9C @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 11 -_0802BB88: - orrs r0, r2 - str r0, [r1] -_0802BB8C: - ldr r1, _0802BBA0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802BB98: .4byte gStatuses3 -_0802BB9C: .4byte gBattlerAttacker -_0802BBA0: .4byte gBattlescriptCurrInstr - thumb_func_end atkC5_setsemiinvulnerablebit - - thumb_func_start atkC6_clearsemiinvulnerablebit -atkC6_clearsemiinvulnerablebit: @ 802BBA4 - push {lr} - ldr r0, _0802BBB8 @ =gCurrentMove - ldrh r1, [r0] - cmp r1, 0x5B - beq _0802BBE8 - cmp r1, 0x5B - bgt _0802BBBC - cmp r1, 0x13 - beq _0802BBC8 - b _0802BC16 - .align 2, 0 -_0802BBB8: .4byte gCurrentMove -_0802BBBC: - ldr r0, _0802BBDC @ =0x00000123 - cmp r1, r0 - beq _0802BC04 - adds r0, 0x31 - cmp r1, r0 - bne _0802BC16 -_0802BBC8: - ldr r2, _0802BBE0 @ =gStatuses3 - ldr r0, _0802BBE4 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x41 - negs r2, r2 - b _0802BC12 - .align 2, 0 -_0802BBDC: .4byte 0x00000123 -_0802BBE0: .4byte gStatuses3 -_0802BBE4: .4byte gBattlerAttacker -_0802BBE8: - ldr r2, _0802BBFC @ =gStatuses3 - ldr r0, _0802BC00 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x81 - negs r2, r2 - b _0802BC12 - .align 2, 0 -_0802BBFC: .4byte gStatuses3 -_0802BC00: .4byte gBattlerAttacker -_0802BC04: - ldr r2, _0802BC24 @ =gStatuses3 - ldr r0, _0802BC28 @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - ldr r2, _0802BC2C @ =0xfffbffff -_0802BC12: - ands r0, r2 - str r0, [r1] -_0802BC16: - ldr r1, _0802BC30 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802BC24: .4byte gStatuses3 -_0802BC28: .4byte gBattlerAttacker -_0802BC2C: .4byte 0xfffbffff -_0802BC30: .4byte gBattlescriptCurrInstr - thumb_func_end atkC6_clearsemiinvulnerablebit - - thumb_func_start atkC7_setminimize -atkC7_setminimize: @ 802BC34 - push {lr} - ldr r0, _0802BC64 @ =gHitMarker - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 18 - ands r0, r1 - cmp r0, 0 - beq _0802BC58 - ldr r2, _0802BC68 @ =gStatuses3 - ldr r0, _0802BC6C @ =gBattlerAttacker - ldrb r1, [r0] - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 1 - orrs r0, r2 - str r0, [r1] -_0802BC58: - ldr r1, _0802BC70 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802BC64: .4byte gHitMarker -_0802BC68: .4byte gStatuses3 -_0802BC6C: .4byte gBattlerAttacker -_0802BC70: .4byte gBattlescriptCurrInstr - thumb_func_end atkC7_setminimize - - thumb_func_start atkC8_sethail -atkC8_sethail: @ 802BC74 - push {lr} - ldr r3, _0802BC98 @ =gBattleWeather - ldrh r1, [r3] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0802BCA4 - ldr r2, _0802BC9C @ =gMoveResultFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802BCA0 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _0802BCB2 - .align 2, 0 -_0802BC98: .4byte gBattleWeather -_0802BC9C: .4byte gMoveResultFlags -_0802BCA0: .4byte gBattleCommunication -_0802BCA4: - strh r2, [r3] - ldr r0, _0802BCC0 @ =gBattleCommunication - movs r1, 0x5 - strb r1, [r0, 0x5] - ldr r0, _0802BCC4 @ =gWishFutureKnock - adds r0, 0x28 - strb r1, [r0] -_0802BCB2: - ldr r1, _0802BCC8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802BCC0: .4byte gBattleCommunication -_0802BCC4: .4byte gWishFutureKnock -_0802BCC8: .4byte gBattlescriptCurrInstr - thumb_func_end atkC8_sethail - - thumb_func_start atkC9_jumpifattackandspecialattackcannotfall -atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC - push {r4,lr} - ldr r2, _0802BD10 @ =gBattleMons - ldr r0, _0802BD14 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r1, r0, r2 - movs r0, 0x19 - ldrsb r0, [r1, r0] - adds r3, r2, 0 - cmp r0, 0 - bne _0802BD20 - movs r0, 0x1C - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _0802BD20 - ldr r0, _0802BD18 @ =gBattleCommunication - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - beq _0802BD20 - ldr r3, _0802BD1C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802BD4C - .align 2, 0 -_0802BD10: .4byte gBattleMons -_0802BD14: .4byte gBattlerTarget -_0802BD18: .4byte gBattleCommunication -_0802BD1C: .4byte gBattlescriptCurrInstr -_0802BD20: - ldr r4, _0802BD54 @ =gActiveBattler - ldr r0, _0802BD58 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r4] - ldr r2, _0802BD5C @ =gBattleMoveDamage - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - str r0, [r2] - ldr r1, _0802BD60 @ =0x00007fff - movs r0, 0 - bl BtlController_EmitHealthBarUpdate - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _0802BD64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802BD4C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802BD54: .4byte gActiveBattler -_0802BD58: .4byte gBattlerAttacker -_0802BD5C: .4byte gBattleMoveDamage -_0802BD60: .4byte 0x00007fff -_0802BD64: .4byte gBattlescriptCurrInstr - thumb_func_end atkC9_jumpifattackandspecialattackcannotfall - - thumb_func_start atkCA_setforcedtarget -atkCA_setforcedtarget: @ 802BD68 - push {r4,r5,lr} - ldr r4, _0802BDA8 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerSide - ldr r5, _0802BDAC @ =gSideTimers - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - strb r0, [r1, 0x8] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r4] - strb r0, [r1, 0x9] - ldr r1, _0802BDB0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802BDA8: .4byte gBattlerAttacker -_0802BDAC: .4byte gSideTimers -_0802BDB0: .4byte gBattlescriptCurrInstr - thumb_func_end atkCA_setforcedtarget - - thumb_func_start atkCB_setcharge -atkCB_setcharge: @ 802BDB4 - push {r4,lr} - ldr r0, _0802BE08 @ =gStatuses3 - ldr r3, _0802BE0C @ =gBattlerAttacker - ldrb r1, [r3] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 2 - orrs r0, r2 - str r0, [r1] - ldr r4, _0802BE10 @ =gDisableStructs - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0x10 - negs r1, r1 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x12] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x12] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x12] - ldr r1, _0802BE14 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802BE08: .4byte gStatuses3 -_0802BE0C: .4byte gBattlerAttacker -_0802BE10: .4byte gDisableStructs -_0802BE14: .4byte gBattlescriptCurrInstr - thumb_func_end atkCB_setcharge - - thumb_func_start atkCC_callterrainattack -atkCC_callterrainattack: @ 802BE18 - push {r4,lr} - ldr r2, _0802BE68 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802BE6C @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _0802BE70 @ =gCurrentMove - ldr r1, _0802BE74 @ =sNaturePowerMoves - ldr r0, _0802BE78 @ =gBattleTerrain - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _0802BE7C @ =gBattlerTarget - strb r0, [r1] - ldr r3, _0802BE80 @ =gBattleScriptsForMoveEffects - ldr r2, _0802BE84 @ =gBattleMoves - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - bl BattleScriptPush - ldr r1, _0802BE88 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802BE68: .4byte gHitMarker -_0802BE6C: .4byte 0xfffffbff -_0802BE70: .4byte gCurrentMove -_0802BE74: .4byte sNaturePowerMoves -_0802BE78: .4byte gBattleTerrain -_0802BE7C: .4byte gBattlerTarget -_0802BE80: .4byte gBattleScriptsForMoveEffects -_0802BE84: .4byte gBattleMoves -_0802BE88: .4byte gBattlescriptCurrInstr - thumb_func_end atkCC_callterrainattack - - thumb_func_start atkCD_cureifburnedparalysedorpoisoned -atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _0802BED8 @ =gBattleMons - ldr r3, _0802BEDC @ =gBattlerAttacker - ldrb r0, [r3] - movs r6, 0x58 - muls r0, r6 - adds r5, r1, 0 - adds r5, 0x4C - adds r2, r0, r5 - ldr r0, [r2] - movs r1, 0xD8 - ands r0, r1 - cmp r0, 0 - beq _0802BEE8 - movs r0, 0 - str r0, [r2] - ldr r1, _0802BEE0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r4, _0802BEE4 @ =gActiveBattler - ldrb r0, [r3] - strb r0, [r4] - ldrb r0, [r4] - muls r0, r6 - adds r0, r5 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _0802BF02 - .align 2, 0 -_0802BED8: .4byte gBattleMons -_0802BEDC: .4byte gBattlerAttacker -_0802BEE0: .4byte gBattlescriptCurrInstr -_0802BEE4: .4byte gActiveBattler -_0802BEE8: - ldr r3, _0802BF0C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802BF02: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802BF0C: .4byte gBattlescriptCurrInstr - thumb_func_end atkCD_cureifburnedparalysedorpoisoned - - thumb_func_start atkCE_settorment -atkCE_settorment: @ 802BF10 - push {lr} - ldr r1, _0802BF48 @ =gBattleMons - ldr r0, _0802BF4C @ =gBattlerTarget - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 24 - cmp r1, 0 - bge _0802BF54 - ldr r3, _0802BF50 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802BF60 - .align 2, 0 -_0802BF48: .4byte gBattleMons -_0802BF4C: .4byte gBattlerTarget -_0802BF50: .4byte gBattlescriptCurrInstr -_0802BF54: - orrs r1, r2 - str r1, [r0] - ldr r1, _0802BF64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802BF60: - pop {r0} - bx r0 - .align 2, 0 -_0802BF64: .4byte gBattlescriptCurrInstr - thumb_func_end atkCE_settorment - - thumb_func_start atkCF_jumpifnodamage -atkCF_jumpifnodamage: @ 802BF68 - push {lr} - ldr r2, _0802BF94 @ =gProtectStructs - ldr r0, _0802BF98 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r1, r0, 4 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - bne _0802BF88 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802BFA0 -_0802BF88: - ldr r1, _0802BF9C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802BFBA - .align 2, 0 -_0802BF94: .4byte gProtectStructs -_0802BF98: .4byte gBattlerAttacker -_0802BF9C: .4byte gBattlescriptCurrInstr -_0802BFA0: - ldr r3, _0802BFC0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802BFBA: - pop {r0} - bx r0 - .align 2, 0 -_0802BFC0: .4byte gBattlescriptCurrInstr - thumb_func_end atkCF_jumpifnodamage - - thumb_func_start atkD0_settaunt -atkD0_settaunt: @ 802BFC4 - push {r4,lr} - ldr r4, _0802C008 @ =gDisableStructs - ldr r3, _0802C00C @ =gBattlerTarget - ldrb r0, [r3] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r2, r1, r4 - ldrb r1, [r2, 0x13] - lsls r0, r1, 28 - cmp r0, 0 - bne _0802C014 - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x13] - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0, 0x13] - movs r1, 0xF - ands r1, r2 - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0, 0x13] - ldr r1, _0802C010 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802C02E - .align 2, 0 -_0802C008: .4byte gDisableStructs -_0802C00C: .4byte gBattlerTarget -_0802C010: .4byte gBattlescriptCurrInstr -_0802C014: - ldr r3, _0802C034 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802C02E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C034: .4byte gBattlescriptCurrInstr - thumb_func_end atkD0_settaunt - - thumb_func_start atkD1_trysethelpinghand -atkD1_trysethelpinghand: @ 802C038 - push {r4,lr} - ldr r4, _0802C0A0 @ =gBattlerAttacker - ldrb r0, [r4] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r3, _0802C0A4 @ =gBattlerTarget - strb r0, [r3] - ldr r0, _0802C0A8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802C0BC - ldr r0, _0802C0AC @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0802C0B0 @ =gBitTable - ldrb r3, [r3] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802C0BC - ldr r1, _0802C0B4 @ =gProtectStructs - ldrb r0, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 28 - cmp r0, 0 - blt _0802C0BC - lsls r0, r3, 4 - adds r2, r0, r1 - ldrb r1, [r2] - lsls r0, r1, 28 - cmp r0, 0 - blt _0802C0BC - movs r0, 0x8 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0802C0B8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802C0D6 - .align 2, 0 -_0802C0A0: .4byte gBattlerAttacker -_0802C0A4: .4byte gBattlerTarget -_0802C0A8: .4byte gBattleTypeFlags -_0802C0AC: .4byte gAbsentBattlerFlags -_0802C0B0: .4byte gBitTable -_0802C0B4: .4byte gProtectStructs -_0802C0B8: .4byte gBattlescriptCurrInstr -_0802C0BC: - ldr r3, _0802C0DC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802C0D6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C0DC: .4byte gBattlescriptCurrInstr - thumb_func_end atkD1_trysethelpinghand - - thumb_func_start atkD2_tryswapitems -atkD2_tryswapitems: @ 802C0E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, _0802C1FC @ =gBattleTypeFlags - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 12 - ands r0, r1 - cmp r0, 0 - bne _0802C1DE - ldr r0, _0802C200 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0802C120 - ldr r0, [r4] - ldr r1, _0802C204 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0802C120 - ldr r0, _0802C208 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _0802C1DE -_0802C120: - ldr r6, _0802C200 @ =gBattlerAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - lsrs r4, r0, 24 - ldr r7, _0802C20C @ =gBattlerTarget - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0802C1FC @ =gBattleTypeFlags - ldr r0, [r0] - ldr r1, _0802C204 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - bne _0802C18A - ldr r0, _0802C208 @ =gTrainerBattleOpponent_A - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _0802C18A - ldr r0, _0802C210 @ =gWishFutureKnock - adds r2, r0, 0 - adds r2, 0x29 - adds r0, r4, r2 - ldrb r1, [r0] - ldr r4, _0802C214 @ =gBitTable - ldr r3, _0802C218 @ =gBattlerPartyIndexes - ldrb r0, [r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802C1DE - adds r0, r5, r2 - ldrb r1, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802C1DE -_0802C18A: - ldr r0, _0802C21C @ =gBattleMons - mov r8, r0 - ldr r1, _0802C200 @ =gBattlerAttacker - ldrb r4, [r1] - movs r5, 0x58 - adds r0, r4, 0 - muls r0, r5 - add r0, r8 - mov r9, r0 - ldrh r3, [r0, 0x2E] - adds r1, r3, 0 - cmp r1, 0 - bne _0802C1B2 - ldr r0, _0802C20C @ =gBattlerTarget - ldrb r0, [r0] - muls r0, r5 - add r0, r8 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - beq _0802C1DE -_0802C1B2: - cmp r1, 0xAF - beq _0802C1DE - ldr r7, _0802C20C @ =gBattlerTarget - ldrb r0, [r7] - muls r0, r5 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0x2E] - cmp r2, 0xAF - beq _0802C1DE - adds r0, r3, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bls _0802C1DE - adds r0, r2, 0 - subs r0, 0x79 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bhi _0802C224 -_0802C1DE: - ldr r3, _0802C220 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C37A - .align 2, 0 -_0802C1FC: .4byte gBattleTypeFlags -_0802C200: .4byte gBattlerAttacker -_0802C204: .4byte 0x00000902 -_0802C208: .4byte gTrainerBattleOpponent_A -_0802C20C: .4byte gBattlerTarget -_0802C210: .4byte gWishFutureKnock -_0802C214: .4byte gBitTable -_0802C218: .4byte gBattlerPartyIndexes -_0802C21C: .4byte gBattleMons -_0802C220: .4byte gBattlescriptCurrInstr -_0802C224: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x3C - bne _0802C258 - ldr r1, _0802C24C @ =gBattlescriptCurrInstr - ldr r0, _0802C250 @ =BattleScript_StickyHoldActivates - str r0, [r1] - ldr r1, _0802C254 @ =gLastUsedAbility - ldrb r0, [r7] - muls r0, r5 - add r0, r8 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - ldrb r1, [r1] - bl RecordAbilityBattle - b _0802C37A - .align 2, 0 -_0802C24C: .4byte gBattlescriptCurrInstr -_0802C250: .4byte BattleScript_StickyHoldActivates -_0802C254: .4byte gLastUsedAbility -_0802C258: - ldr r3, _0802C344 @ =gBattleStruct - mov r10, r3 - lsls r0, r4, 1 - adds r0, 0xD0 - ldr r1, [r3] - adds r6, r1, r0 - mov r0, r9 - ldrh r0, [r0, 0x2E] - mov r9, r0 - strh r2, [r6] - ldr r1, _0802C348 @ =gBattlerAttacker - ldrb r0, [r1] - muls r0, r5 - add r0, r8 - movs r1, 0 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - muls r0, r5 - add r0, r8 - mov r2, r9 - strh r2, [r0, 0x2E] - ldr r4, _0802C34C @ =gActiveBattler - ldr r3, _0802C348 @ =gBattlerAttacker - ldrb r0, [r3] - strb r0, [r4] - str r6, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldr r1, _0802C348 @ =gBattlerAttacker - ldrb r0, [r1] - bl MarkBattlerForControllerExec - ldrb r0, [r7] - strb r0, [r4] - ldrb r0, [r7] - muls r0, r5 - mov r1, r8 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r7] - bl MarkBattlerForControllerExec - ldrb r0, [r7] - mov r2, r10 - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - movs r3, 0 - strb r3, [r0] - ldrb r0, [r7] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - strb r3, [r0] - ldr r1, _0802C348 @ =gBattlerAttacker - ldrb r0, [r1] - ldr r1, [r2] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC8 - strb r3, [r0] - ldr r2, _0802C348 @ =gBattlerAttacker - ldrb r0, [r2] - mov r3, r10 - ldr r1, [r3] - lsls r0, 1 - adds r0, r1 - adds r0, 0xC9 - movs r1, 0 - strb r1, [r0] - ldr r1, _0802C350 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r1, _0802C354 @ =gBattleTextBuff1 - movs r3, 0xFD - strb r3, [r1] - movs r2, 0xA - strb r2, [r1, 0x1] - ldrh r0, [r6] - strb r0, [r1, 0x2] - ldrh r0, [r6] - lsrs r0, 8 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802C358 @ =gBattleTextBuff2 - strb r3, [r1] - strb r2, [r1, 0x1] - mov r2, r9 - strb r2, [r1, 0x2] - mov r3, r9 - lsrs r0, r3, 8 - strb r0, [r1, 0x3] - movs r0, 0x1 - negs r0, r0 - strb r0, [r1, 0x4] - cmp r3, 0 - beq _0802C360 - ldrh r0, [r6] - cmp r0, 0 - beq _0802C374 - ldr r1, _0802C35C @ =gBattleCommunication - movs r0, 0x2 - b _0802C378 - .align 2, 0 -_0802C344: .4byte gBattleStruct -_0802C348: .4byte gBattlerAttacker -_0802C34C: .4byte gActiveBattler -_0802C350: .4byte gBattlescriptCurrInstr -_0802C354: .4byte gBattleTextBuff1 -_0802C358: .4byte gBattleTextBuff2 -_0802C35C: .4byte gBattleCommunication -_0802C360: - ldrh r0, [r6] - cmp r0, 0 - beq _0802C374 - ldr r0, _0802C370 @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x5] - b _0802C37A - .align 2, 0 -_0802C370: .4byte gBattleCommunication -_0802C374: - ldr r1, _0802C38C @ =gBattleCommunication - movs r0, 0x1 -_0802C378: - strb r0, [r1, 0x5] -_0802C37A: - 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 -_0802C38C: .4byte gBattleCommunication - thumb_func_end atkD2_tryswapitems - - thumb_func_start atkD3_trycopyability -atkD3_trycopyability: @ 802C390 - push {r4,lr} - ldr r3, _0802C3D0 @ =gBattleMons - ldr r4, _0802C3D4 @ =gBattlerTarget - ldrb r0, [r4] - movs r2, 0x58 - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r1, 0 - cmp r0, 0 - beq _0802C3E4 - cmp r0, 0x19 - beq _0802C3E4 - ldr r0, _0802C3D8 @ =gBattlerAttacker - ldrb r0, [r0] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - strb r1, [r0] - ldr r1, _0802C3DC @ =gLastUsedAbility - ldrb r0, [r4] - muls r0, r2 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _0802C3E0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802C3FE - .align 2, 0 -_0802C3D0: .4byte gBattleMons -_0802C3D4: .4byte gBattlerTarget -_0802C3D8: .4byte gBattlerAttacker -_0802C3DC: .4byte gLastUsedAbility -_0802C3E0: .4byte gBattlescriptCurrInstr -_0802C3E4: - ldr r3, _0802C404 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802C3FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C404: .4byte gBattlescriptCurrInstr - thumb_func_end atkD3_trycopyability - - thumb_func_start atkD4_trywish -atkD4_trywish: @ 802C408 - push {r4-r7,lr} - ldr r7, _0802C41C @ =gBattlescriptCurrInstr - ldr r2, [r7] - ldrb r3, [r2, 0x1] - cmp r3, 0 - beq _0802C420 - cmp r3, 0x1 - beq _0802C458 - b _0802C4D4 - .align 2, 0 -_0802C41C: .4byte gBattlescriptCurrInstr -_0802C420: - ldr r1, _0802C44C @ =gWishFutureKnock - ldr r4, _0802C450 @ =gBattlerAttacker - adds r0, r1, 0 - adds r0, 0x20 - ldrb r5, [r4] - adds r3, r0, r5 - ldrb r0, [r3] - cmp r0, 0 - bne _0802C4A4 - movs r0, 0x2 - strb r0, [r3] - ldrb r0, [r4] - adds r1, 0x24 - adds r1, r0, r1 - ldr r2, _0802C454 @ =gBattlerPartyIndexes - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x6 - b _0802C4D2 - .align 2, 0 -_0802C44C: .4byte gWishFutureKnock -_0802C450: .4byte gBattlerAttacker -_0802C454: .4byte gBattlerPartyIndexes -_0802C458: - ldr r1, _0802C4BC @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x4 - strb r0, [r1, 0x1] - ldr r4, _0802C4C0 @ =gBattlerTarget - ldrb r0, [r4] - strb r0, [r1, 0x2] - ldr r0, _0802C4C4 @ =gWishFutureKnock - adds r0, 0x24 - ldrb r5, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _0802C4C8 @ =gBattleMoveDamage - ldr r6, _0802C4CC @ =gBattleMons - ldrb r0, [r4] - movs r5, 0x58 - muls r0, r5 - adds r0, r6 - ldrh r0, [r0, 0x2C] - lsrs r0, 1 - str r0, [r1] - cmp r0, 0 - bne _0802C490 - str r3, [r1] -_0802C490: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldrb r0, [r4] - muls r0, r5 - adds r0, r6 - ldrh r1, [r0, 0x28] - ldrh r0, [r0, 0x2C] - cmp r1, r0 - bne _0802C4D0 -_0802C4A4: - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r7] - b _0802C4D4 - .align 2, 0 -_0802C4BC: .4byte gBattleTextBuff1 -_0802C4C0: .4byte gBattlerTarget -_0802C4C4: .4byte gWishFutureKnock -_0802C4C8: .4byte gBattleMoveDamage -_0802C4CC: .4byte gBattleMons -_0802C4D0: - adds r0, r2, 0x6 -_0802C4D2: - str r0, [r7] -_0802C4D4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end atkD4_trywish - - thumb_func_start atkD5_trysetroots -atkD5_trysetroots: @ 802C4DC - push {lr} - ldr r1, _0802C514 @ =gStatuses3 - ldr r0, _0802C518 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0802C520 - ldr r3, _0802C51C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C52C - .align 2, 0 -_0802C514: .4byte gStatuses3 -_0802C518: .4byte gBattlerAttacker -_0802C51C: .4byte gBattlescriptCurrInstr -_0802C520: - orrs r1, r3 - str r1, [r2] - ldr r1, _0802C530 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802C52C: - pop {r0} - bx r0 - .align 2, 0 -_0802C530: .4byte gBattlescriptCurrInstr - thumb_func_end atkD5_trysetroots - - thumb_func_start atkD6_doubledamagedealtifdamaged -atkD6_doubledamagedealtifdamaged: @ 802C534 - push {lr} - ldr r3, _0802C580 @ =gProtectStructs - ldr r0, _0802C584 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r2, r0, 4 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802C554 - adds r0, r2, r3 - ldr r1, _0802C588 @ =gBattlerTarget - ldrb r0, [r0, 0xC] - ldrb r1, [r1] - cmp r0, r1 - beq _0802C56C -_0802C554: - adds r0, r3, 0 - adds r0, 0x8 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0802C572 - adds r0, r2, r3 - ldr r1, _0802C588 @ =gBattlerTarget - ldrb r0, [r0, 0xD] - ldrb r1, [r1] - cmp r0, r1 - bne _0802C572 -_0802C56C: - ldr r1, _0802C58C @ =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0xE] -_0802C572: - ldr r1, _0802C590 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802C580: .4byte gProtectStructs -_0802C584: .4byte gBattlerAttacker -_0802C588: .4byte gBattlerTarget -_0802C58C: .4byte gBattleScripting -_0802C590: .4byte gBattlescriptCurrInstr - thumb_func_end atkD6_doubledamagedealtifdamaged - - thumb_func_start atkD7_setyawn -atkD7_setyawn: @ 802C594 - push {r4,lr} - ldr r1, _0802C5D8 @ =gStatuses3 - ldr r0, _0802C5DC @ =gBattlerTarget - ldrb r3, [r0] - lsls r0, r3, 2 - adds r4, r0, r1 - ldr r2, [r4] - movs r0, 0xC0 - lsls r0, 5 - ands r0, r2 - cmp r0, 0 - bne _0802C5BC - ldr r1, _0802C5E0 @ =gBattleMons - movs r0, 0x58 - muls r0, r3 - adds r1, 0x4C - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0802C5E8 -_0802C5BC: - ldr r3, _0802C5E4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C5F8 - .align 2, 0 -_0802C5D8: .4byte gStatuses3 -_0802C5DC: .4byte gBattlerTarget -_0802C5E0: .4byte gBattleMons -_0802C5E4: .4byte gBattlescriptCurrInstr -_0802C5E8: - movs r0, 0x80 - lsls r0, 5 - orrs r2, r0 - str r2, [r4] - ldr r1, _0802C600 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802C5F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C600: .4byte gBattlescriptCurrInstr - thumb_func_end atkD7_setyawn - - thumb_func_start atkD8_setdamagetohealthdifference -atkD8_setdamagetohealthdifference: @ 802C604 - push {lr} - ldr r2, _0802C640 @ =gBattleMons - ldr r0, _0802C644 @ =gBattlerTarget - ldrb r0, [r0] - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - ldr r0, _0802C648 @ =gBattlerAttacker - ldrb r0, [r0] - muls r0, r1 - adds r1, r0, r2 - ldrh r0, [r3, 0x28] - ldrh r2, [r1, 0x28] - cmp r0, r2 - bhi _0802C650 - ldr r3, _0802C64C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C662 - .align 2, 0 -_0802C640: .4byte gBattleMons -_0802C644: .4byte gBattlerTarget -_0802C648: .4byte gBattlerAttacker -_0802C64C: .4byte gBattlescriptCurrInstr -_0802C650: - ldr r2, _0802C668 @ =gBattleMoveDamage - ldrh r0, [r3, 0x28] - ldrh r1, [r1, 0x28] - subs r0, r1 - str r0, [r2] - ldr r1, _0802C66C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802C662: - pop {r0} - bx r0 - .align 2, 0 -_0802C668: .4byte gBattleMoveDamage -_0802C66C: .4byte gBattlescriptCurrInstr - thumb_func_end atkD8_setdamagetohealthdifference - - thumb_func_start atkD9_scaledamagebyhealthratio -atkD9_scaledamagebyhealthratio: @ 802C670 - push {r4,lr} - ldr r4, _0802C6BC @ =gDynamicBasePower - ldrh r0, [r4] - cmp r0, 0 - bne _0802C6AC - ldr r2, _0802C6C0 @ =gBattleMoves - ldr r0, _0802C6C4 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r3, [r0, 0x1] - ldr r2, _0802C6C8 @ =gBattleMons - ldr r0, _0802C6CC @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldrh r0, [r1, 0x28] - muls r0, r3 - ldrh r1, [r1, 0x2C] - bl __divsi3 - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - bne _0802C6AC - movs r0, 0x1 - strh r0, [r4] -_0802C6AC: - ldr r1, _0802C6D0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802C6BC: .4byte gDynamicBasePower -_0802C6C0: .4byte gBattleMoves -_0802C6C4: .4byte gCurrentMove -_0802C6C8: .4byte gBattleMons -_0802C6CC: .4byte gBattlerAttacker -_0802C6D0: .4byte gBattlescriptCurrInstr - thumb_func_end atkD9_scaledamagebyhealthratio - - thumb_func_start atkDA_tryswapabilities -atkDA_tryswapabilities: @ 802C6D4 - push {r4-r6,lr} - ldr r5, _0802C738 @ =gBattleMons - ldr r0, _0802C73C @ =gBattlerAttacker - ldrb r0, [r0] - movs r4, 0x58 - muls r0, r4 - adds r0, r5 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r1, [r2] - cmp r1, 0 - bne _0802C6FC - ldr r0, _0802C740 @ =gBattlerTarget - ldrb r0, [r0] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0802C71C -_0802C6FC: - cmp r1, 0x19 - beq _0802C71C - ldr r6, _0802C740 @ =gBattlerTarget - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - ldrb r3, [r0] - cmp r3, 0x19 - beq _0802C71C - ldr r0, _0802C744 @ =gMoveResultFlags - ldrb r1, [r0] - movs r0, 0x29 - ands r0, r1 - cmp r0, 0 - beq _0802C74C -_0802C71C: - ldr r3, _0802C748 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C762 - .align 2, 0 -_0802C738: .4byte gBattleMons -_0802C73C: .4byte gBattlerAttacker -_0802C740: .4byte gBattlerTarget -_0802C744: .4byte gMoveResultFlags -_0802C748: .4byte gBattlescriptCurrInstr -_0802C74C: - ldrb r1, [r2] - strb r3, [r2] - ldrb r0, [r6] - muls r0, r4 - adds r0, r5 - adds r0, 0x20 - strb r1, [r0] - ldr r1, _0802C768 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802C762: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802C768: .4byte gBattlescriptCurrInstr - thumb_func_end atkDA_tryswapabilities - - thumb_func_start atkDB_tryimprison -atkDB_tryimprison: @ 802C76C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r1, _0802C78C @ =gStatuses3 - ldr r4, _0802C790 @ =gBattlerAttacker - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _0802C7BC - b _0802C83E - .align 2, 0 -_0802C78C: .4byte gStatuses3 -_0802C790: .4byte gBattlerAttacker -_0802C794: - ldr r0, _0802C7B4 @ =gStatuses3 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 6 - orrs r0, r2 - str r0, [r1] - ldr r1, _0802C7B8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802C836 - .align 2, 0 -_0802C7B4: .4byte gStatuses3 -_0802C7B8: .4byte gBattlescriptCurrInstr -_0802C7BC: - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - bl PressurePPLoseOnUsingImprison - movs r6, 0 - b _0802C82E -_0802C7D2: - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r8, r0 - beq _0802C828 - movs r4, 0 - ldr r7, _0802C864 @ =gBattlerAttacker - mov r9, r7 - ldr r0, _0802C868 @ =gBattleMons - mov r12, r0 - mov r1, r9 - ldrb r0, [r1] - mov r2, r12 - adds r2, 0xC - movs r1, 0x58 - muls r0, r1 - adds r3, r0, r2 - adds r5, r6, 0 - muls r5, r1 -_0802C7FC: - movs r2, 0 - ldrh r1, [r3] - mov r0, r12 - adds r0, 0xC - adds r0, r5, r0 -_0802C806: - ldrh r7, [r0] - cmp r1, r7 - bne _0802C810 - cmp r1, 0 - bne _0802C818 -_0802C810: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _0802C806 -_0802C818: - cmp r2, 0x4 - bne _0802C824 - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _0802C7FC -_0802C824: - cmp r4, 0x4 - bne _0802C794 -_0802C828: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0802C82E: - ldr r0, _0802C86C @ =gBattlersCount - ldrb r0, [r0] - cmp r6, r0 - bcc _0802C7D2 -_0802C836: - ldr r0, _0802C86C @ =gBattlersCount - ldrb r0, [r0] - cmp r6, r0 - bne _0802C858 -_0802C83E: - ldr r3, _0802C870 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802C858: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802C864: .4byte gBattlerAttacker -_0802C868: .4byte gBattleMons -_0802C86C: .4byte gBattlersCount -_0802C870: .4byte gBattlescriptCurrInstr - thumb_func_end atkDB_tryimprison - - thumb_func_start atkDC_trysetgrudge -atkDC_trysetgrudge: @ 802C874 - push {lr} - ldr r1, _0802C8AC @ =gStatuses3 - ldr r0, _0802C8B0 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 7 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0802C8B8 - ldr r3, _0802C8B4 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802C8C4 - .align 2, 0 -_0802C8AC: .4byte gStatuses3 -_0802C8B0: .4byte gBattlerAttacker -_0802C8B4: .4byte gBattlescriptCurrInstr -_0802C8B8: - orrs r1, r3 - str r1, [r2] - ldr r1, _0802C8C8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802C8C4: - pop {r0} - bx r0 - .align 2, 0 -_0802C8C8: .4byte gBattlescriptCurrInstr - thumb_func_end atkDC_trysetgrudge - - thumb_func_start atkDD_weightdamagecalculation -atkDD_weightdamagecalculation: @ 802C8CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 - ldr r2, _0802C930 @ =sWeightToDamageTable - ldrh r0, [r2] - ldr r1, _0802C934 @ =0x0000ffff - cmp r0, r1 - beq _0802C944 - adds r6, r2, 0 - ldr r0, _0802C938 @ =gBattleMons - mov r8, r0 - adds r7, r1, 0 - adds r4, r6, 0 -_0802C8E8: - ldr r0, _0802C93C @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - add r0, r8 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetPokedexHeightWeight - ldrh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0802C916 - adds r4, 0x4 - adds r5, 0x2 - ldrh r0, [r4] - cmp r0, r7 - bne _0802C8E8 -_0802C916: - lsls r0, r5, 1 - adds r0, r6 - ldrh r1, [r0] - ldr r0, _0802C934 @ =0x0000ffff - cmp r1, r0 - beq _0802C944 - ldr r0, _0802C940 @ =gDynamicBasePower - adds r1, r5, 0x1 - lsls r1, 1 - adds r1, r6 - ldrh r1, [r1] - strh r1, [r0] - b _0802C94A - .align 2, 0 -_0802C930: .4byte sWeightToDamageTable -_0802C934: .4byte 0x0000ffff -_0802C938: .4byte gBattleMons -_0802C93C: .4byte gBattlerTarget -_0802C940: .4byte gDynamicBasePower -_0802C944: - ldr r1, _0802C95C @ =gDynamicBasePower - movs r0, 0x78 - strh r0, [r1] -_0802C94A: - ldr r1, _0802C960 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802C95C: .4byte gDynamicBasePower -_0802C960: .4byte gBattlescriptCurrInstr - thumb_func_end atkDD_weightdamagecalculation - - thumb_func_start atkDE_assistattackselect -atkDE_assistattackselect: @ 802C964 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r10, r0 - ldr r0, _0802CA84 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x18 - str r0, [sp, 0x4] - ldr r0, _0802CA88 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerPosition - movs r1, 0x1 - ands r1, r0 - ldr r0, _0802CA8C @ =gPlayerParty - str r0, [sp] - cmp r1, 0 - beq _0802C994 - ldr r1, _0802CA90 @ =gEnemyParty - str r1, [sp] -_0802C994: - movs r2, 0 -_0802C996: - ldr r1, _0802CA94 @ =gBattlerPartyIndexes - ldr r0, _0802CA88 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - adds r1, r2, 0x1 - str r1, [sp, 0x8] - ldrh r0, [r0] - cmp r2, r0 - beq _0802CA3C - movs r0, 0x64 - adds r6, r2, 0 - muls r6, r0 - ldr r0, [sp] - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _0802CA3C - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0802CA3C - movs r5, 0 - ldr r1, _0802CA98 @ =0x0000ffff - mov r8, r1 - mov r9, r6 - mov r1, r10 - lsls r0, r1, 1 - ldr r1, [sp, 0x4] - adds r6, r0, r1 -_0802C9E0: - movs r7, 0 - adds r1, r5, 0 - adds r1, 0xD - ldr r0, [sp] - add r0, r9 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl IsInvalidForSleepTalkOrAssist - lsls r0, 24 - adds r1, r5, 0x1 - cmp r0, 0 - bne _0802CA36 - ldr r0, _0802CA9C @ =sMovesForbiddenToCopy - ldrh r2, [r0] - adds r3, r0, 0 - cmp r2, r8 - beq _0802CA2A - cmp r4, r2 - beq _0802CA20 - ldr r5, _0802CA98 @ =0x0000ffff - adds r2, r3, 0 -_0802CA12: - adds r2, 0x2 - adds r7, 0x1 - ldrh r0, [r2] - cmp r0, r5 - beq _0802CA2A - cmp r4, r0 - bne _0802CA12 -_0802CA20: - lsls r0, r7, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r8 - bne _0802CA36 -_0802CA2A: - cmp r4, 0 - beq _0802CA36 - strh r4, [r6] - adds r6, 0x2 - movs r0, 0x1 - add r10, r0 -_0802CA36: - adds r5, r1, 0 - cmp r5, 0x3 - ble _0802C9E0 -_0802CA3C: - ldr r2, [sp, 0x8] - cmp r2, 0x5 - ble _0802C996 - mov r1, r10 - cmp r1, 0 - beq _0802CAB4 - ldr r2, _0802CAA0 @ =gHitMarker - ldr r0, [r2] - ldr r1, _0802CAA4 @ =0xfffffbff - ands r0, r1 - str r0, [r2] - ldr r4, _0802CAA8 @ =gCalledMove - bl Random - movs r1, 0xFF - ands r1, r0 - mov r0, r10 - muls r0, r1 - asrs r0, 8 - lsls r0, 1 - ldr r1, [sp, 0x4] - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0 - bl GetMoveTarget - ldr r1, _0802CAAC @ =gBattlerTarget - strb r0, [r1] - ldr r1, _0802CAB0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802CACE - .align 2, 0 -_0802CA84: .4byte gBattleStruct -_0802CA88: .4byte gBattlerAttacker -_0802CA8C: .4byte gPlayerParty -_0802CA90: .4byte gEnemyParty -_0802CA94: .4byte gBattlerPartyIndexes -_0802CA98: .4byte 0x0000ffff -_0802CA9C: .4byte sMovesForbiddenToCopy -_0802CAA0: .4byte gHitMarker -_0802CAA4: .4byte 0xfffffbff -_0802CAA8: .4byte gCalledMove -_0802CAAC: .4byte gBattlerTarget -_0802CAB0: .4byte gBattlescriptCurrInstr -_0802CAB4: - ldr r3, _0802CAE0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802CACE: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802CAE0: .4byte gBattlescriptCurrInstr - thumb_func_end atkDE_assistattackselect - - thumb_func_start atkDF_trysetmagiccoat -atkDF_trysetmagiccoat: @ 802CAE4 - push {lr} - ldr r1, _0802CB2C @ =gBattlerTarget - ldr r3, _0802CB30 @ =gBattlerAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, _0802CB34 @ =gSpecialStatuses - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0802CB38 @ =gCurrentTurnActionNumber - ldrb r1, [r0] - ldr r0, _0802CB3C @ =gBattlersCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0802CB44 - ldr r3, _0802CB40 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802CB5C - .align 2, 0 -_0802CB2C: .4byte gBattlerTarget -_0802CB30: .4byte gBattlerAttacker -_0802CB34: .4byte gSpecialStatuses -_0802CB38: .4byte gCurrentTurnActionNumber -_0802CB3C: .4byte gBattlersCount -_0802CB40: .4byte gBattlescriptCurrInstr -_0802CB44: - ldr r0, _0802CB60 @ =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x10 - orrs r0, r2 - strb r0, [r1] - ldr r1, _0802CB64 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802CB5C: - pop {r0} - bx r0 - .align 2, 0 -_0802CB60: .4byte gProtectStructs -_0802CB64: .4byte gBattlescriptCurrInstr - thumb_func_end atkDF_trysetmagiccoat - - thumb_func_start atkE0_trysetsnatch -atkE0_trysetsnatch: @ 802CB68 - push {lr} - ldr r2, _0802CBAC @ =gSpecialStatuses - ldr r3, _0802CBB0 @ =gBattlerAttacker - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0802CBB4 @ =gCurrentTurnActionNumber - ldrb r1, [r0] - ldr r0, _0802CBB8 @ =gBattlersCount - ldrb r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0802CBC0 - ldr r3, _0802CBBC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802CBD6 - .align 2, 0 -_0802CBAC: .4byte gSpecialStatuses -_0802CBB0: .4byte gBattlerAttacker -_0802CBB4: .4byte gCurrentTurnActionNumber -_0802CBB8: .4byte gBattlersCount -_0802CBBC: .4byte gBattlescriptCurrInstr -_0802CBC0: - ldr r0, _0802CBDC @ =gProtectStructs - ldrb r1, [r3] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - ldr r1, _0802CBE0 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802CBD6: - pop {r0} - bx r0 - .align 2, 0 -_0802CBDC: .4byte gProtectStructs -_0802CBE0: .4byte gBattlescriptCurrInstr - thumb_func_end atkE0_trysetsnatch - - thumb_func_start atkE1_trygetintimidatetarget -atkE1_trygetintimidatetarget: @ 802CBE4 - push {r4-r6,lr} - ldr r4, _0802CC88 @ =gBattleScripting - ldr r0, _0802CC8C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0xD8 - ldrb r0, [r0] - strb r0, [r4, 0x17] - ldrb r0, [r4, 0x17] - bl GetBattlerSide - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _0802CC90 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x9 - strb r0, [r2, 0x1] - ldr r3, _0802CC94 @ =gBattleMons - ldrb r1, [r4, 0x17] - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2, 0x2] - movs r0, 0xFF - strb r0, [r2, 0x3] - ldr r2, _0802CC98 @ =gBattlerTarget - ldr r1, _0802CC9C @ =gBattlersCount - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bcs _0802CC6A - adds r4, r2, 0 - ldr r6, _0802CCA0 @ =gBitTable -_0802CC2A: - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, r5 - beq _0802CC4C - ldr r0, _0802CCA4 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - ldr r2, _0802CC9C @ =gBattlersCount - cmp r1, 0 - beq _0802CC60 -_0802CC4C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0802CC9C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - adds r2, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bcc _0802CC2A -_0802CC60: - ldr r0, _0802CC98 @ =gBattlerTarget - ldrb r0, [r0] - ldrb r2, [r2] - cmp r0, r2 - bcc _0802CCAC -_0802CC6A: - ldr r3, _0802CCA8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802CCB4 - .align 2, 0 -_0802CC88: .4byte gBattleScripting -_0802CC8C: .4byte gBattleStruct -_0802CC90: .4byte gBattleTextBuff1 -_0802CC94: .4byte gBattleMons -_0802CC98: .4byte gBattlerTarget -_0802CC9C: .4byte gBattlersCount -_0802CCA0: .4byte gBitTable -_0802CCA4: .4byte gAbsentBattlerFlags -_0802CCA8: .4byte gBattlescriptCurrInstr -_0802CCAC: - ldr r1, _0802CCBC @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802CCB4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802CCBC: .4byte gBattlescriptCurrInstr - thumb_func_end atkE1_trygetintimidatetarget - - thumb_func_start atkE2_switchoutabilities -atkE2_switchoutabilities: @ 802CCC0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _0802CD28 @ =gBattlescriptCurrInstr - ldr r0, [r5] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r4, _0802CD2C @ =gActiveBattler - strb r0, [r4] - ldr r3, _0802CD30 @ =gBattleMons - ldrb r0, [r4] - movs r6, 0x58 - adds r1, r0, 0 - muls r1, r6 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1E - bne _0802CD1A - adds r3, 0x4C - adds r1, r3 - movs r0, 0 - str r0, [r1] - ldr r2, _0802CD34 @ =gBitTable - ldrb r1, [r4] - ldr r0, _0802CD38 @ =gBattleStruct - ldr r0, [r0] - adds r0, r1, r0 - adds r0, 0x58 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0] - adds r0, r1, 0 - muls r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_0802CD1A: - ldr r0, [r5] - adds r0, 0x2 - str r0, [r5] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802CD28: .4byte gBattlescriptCurrInstr -_0802CD2C: .4byte gActiveBattler -_0802CD30: .4byte gBattleMons -_0802CD34: .4byte gBitTable -_0802CD38: .4byte gBattleStruct - thumb_func_end atkE2_switchoutabilities - - thumb_func_start atkE3_jumpifhasnohp -atkE3_jumpifhasnohp: @ 802CD3C - push {r4,lr} - ldr r4, _0802CD78 @ =gBattlescriptCurrInstr - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl GetBattlerForBattleScript - ldr r1, _0802CD7C @ =gActiveBattler - strb r0, [r1] - ldr r2, _0802CD80 @ =gBattleMons - ldrb r1, [r1] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _0802CD84 - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x5] - lsls r0, 24 - orrs r1, r0 - str r1, [r4] - b _0802CD8A - .align 2, 0 -_0802CD78: .4byte gBattlescriptCurrInstr -_0802CD7C: .4byte gActiveBattler -_0802CD80: .4byte gBattleMons -_0802CD84: - ldr r0, [r4] - adds r0, 0x6 - str r0, [r4] -_0802CD8A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end atkE3_jumpifhasnohp - - thumb_func_start atkE4_getsecretpowereffect -atkE4_getsecretpowereffect: @ 802CD90 - push {lr} - ldr r0, _0802CDA4 @ =gBattleTerrain - ldrb r0, [r0] - cmp r0, 0x7 - bhi _0802CE2C - lsls r0, 2 - ldr r1, _0802CDA8 @ =_0802CDAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802CDA4: .4byte gBattleTerrain -_0802CDA8: .4byte _0802CDAC - .align 2, 0 -_0802CDAC: - .4byte _0802CDCC - .4byte _0802CDD8 - .4byte _0802CDE4 - .4byte _0802CDF0 - .4byte _0802CDFC - .4byte _0802CE08 - .4byte _0802CE14 - .4byte _0802CE20 -_0802CDCC: - ldr r1, _0802CDD4 @ =gBattleCommunication - movs r0, 0x2 - b _0802CE30 - .align 2, 0 -_0802CDD4: .4byte gBattleCommunication -_0802CDD8: - ldr r1, _0802CDE0 @ =gBattleCommunication - movs r0, 0x1 - b _0802CE30 - .align 2, 0 -_0802CDE0: .4byte gBattleCommunication -_0802CDE4: - ldr r1, _0802CDEC @ =gBattleCommunication - movs r0, 0x1B - b _0802CE30 - .align 2, 0 -_0802CDEC: .4byte gBattleCommunication -_0802CDF0: - ldr r1, _0802CDF8 @ =gBattleCommunication - movs r0, 0x17 - b _0802CE30 - .align 2, 0 -_0802CDF8: .4byte gBattleCommunication -_0802CDFC: - ldr r1, _0802CE04 @ =gBattleCommunication - movs r0, 0x16 - b _0802CE30 - .align 2, 0 -_0802CE04: .4byte gBattleCommunication -_0802CE08: - ldr r1, _0802CE10 @ =gBattleCommunication - movs r0, 0x18 - b _0802CE30 - .align 2, 0 -_0802CE10: .4byte gBattleCommunication -_0802CE14: - ldr r1, _0802CE1C @ =gBattleCommunication - movs r0, 0x7 - b _0802CE30 - .align 2, 0 -_0802CE1C: .4byte gBattleCommunication -_0802CE20: - ldr r1, _0802CE28 @ =gBattleCommunication - movs r0, 0x8 - b _0802CE30 - .align 2, 0 -_0802CE28: .4byte gBattleCommunication -_0802CE2C: - ldr r1, _0802CE40 @ =gBattleCommunication - movs r0, 0x5 -_0802CE30: - strb r0, [r1, 0x3] - ldr r1, _0802CE44 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0802CE40: .4byte gBattleCommunication -_0802CE44: .4byte gBattlescriptCurrInstr - thumb_func_end atkE4_getsecretpowereffect - - thumb_func_start atkE5_pickup -atkE5_pickup: @ 802CE48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - ldr r0, _0802CE90 @ =gBaseStats - mov r8, r0 -_0802CE54: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _0802CE94 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - cmp r0, 0 - beq _0802CE98 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x17] - b _0802CEA2 - .align 2, 0 -_0802CE90: .4byte gBaseStats -_0802CE94: .4byte gPlayerParty -_0802CE98: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x16] -_0802CEA2: - adds r4, r7, 0x1 - cmp r0, 0x35 - bne _0802CF0A - cmp r5, 0 - beq _0802CF0A - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - beq _0802CF0A - cmp r6, 0 - bne _0802CF0A - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _0802CF0A - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r1, _0802CEE4 @ =sPickupItems - b _0802CEF0 - .align 2, 0 -_0802CEE4: .4byte sPickupItems -_0802CEE8: - adds r1, 0x4 - adds r2, 0x1 - cmp r2, 0xE - bhi _0802CEF6 -_0802CEF0: - ldrb r0, [r1, 0x2] - cmp r0, r3 - ble _0802CEE8 -_0802CEF6: - movs r0, 0x64 - muls r0, r7 - ldr r1, _0802CF24 @ =gPlayerParty - adds r0, r1 - lsls r2, 2 - ldr r1, _0802CF28 @ =sPickupItems - adds r2, r1 - movs r1, 0xC - bl SetMonData -_0802CF0A: - adds r7, r4, 0 - cmp r7, 0x5 - ble _0802CE54 - ldr r1, _0802CF2C @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802CF24: .4byte gPlayerParty -_0802CF28: .4byte sPickupItems -_0802CF2C: .4byte gBattlescriptCurrInstr - thumb_func_end atkE5_pickup - - thumb_func_start atkE6_docastformchangeanimation -atkE6_docastformchangeanimation: @ 802CF30 - push {r4,lr} - ldr r4, _0802CF84 @ =gActiveBattler - ldr r0, _0802CF88 @ =gBattleScripting - ldrb r0, [r0, 0x17] - strb r0, [r4] - ldr r1, _0802CF8C @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - ldr r3, _0802CF90 @ =gBattleStruct - cmp r0, 0 - beq _0802CF60 - ldr r0, [r3] - adds r0, 0x7F - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] -_0802CF60: - ldr r0, [r3] - adds r0, 0x7F - ldrb r2, [r0] - movs r0, 0 - movs r1, 0 - bl BtlController_EmitBattleAnimation - ldrb r0, [r4] - bl MarkBattlerForControllerExec - ldr r1, _0802CF94 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802CF84: .4byte gActiveBattler -_0802CF88: .4byte gBattleScripting -_0802CF8C: .4byte gBattleMons -_0802CF90: .4byte gBattleStruct -_0802CF94: .4byte gBattlescriptCurrInstr - thumb_func_end atkE6_docastformchangeanimation - - thumb_func_start atkE7_trycastformdatachange -atkE7_trycastformdatachange: @ 802CF98 - push {r4,lr} - ldr r1, _0802CFC8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _0802CFCC @ =gBattleScripting - ldrb r0, [r0, 0x17] - bl CastformDataTypeChange - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0802CFC2 - ldr r0, _0802CFD0 @ =BattleScript_CastformChange - bl BattleScriptPushCursorAndCallback - ldr r0, _0802CFD4 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x7F - subs r1, r4, 0x1 - strb r1, [r0] -_0802CFC2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802CFC8: .4byte gBattlescriptCurrInstr -_0802CFCC: .4byte gBattleScripting -_0802CFD0: .4byte BattleScript_CastformChange -_0802CFD4: .4byte gBattleStruct - thumb_func_end atkE7_trycastformdatachange - - thumb_func_start atkE8_settypebasedhalvers -atkE8_settypebasedhalvers: @ 802CFD8 - push {r4,lr} - movs r4, 0 - ldr r2, _0802D014 @ =gBattleMoves - ldr r0, _0802D018 @ =gCurrentMove - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xC9 - bne _0802D028 - ldr r1, _0802D01C @ =gStatuses3 - ldr r0, _0802D020 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _0802D04C - orrs r1, r3 - str r1, [r2] - ldr r0, _0802D024 @ =gBattleCommunication - strb r4, [r0, 0x5] - b _0802D050 - .align 2, 0 -_0802D014: .4byte gBattleMoves -_0802D018: .4byte gCurrentMove -_0802D01C: .4byte gStatuses3 -_0802D020: .4byte gBattlerAttacker -_0802D024: .4byte gBattleCommunication -_0802D028: - ldr r1, _0802D05C @ =gStatuses3 - ldr r0, _0802D060 @ =gBattlerAttacker - ldrb r0, [r0] - lsls r0, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r3, 0x80 - lsls r3, 10 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _0802D04C - orrs r1, r3 - str r1, [r2] - ldr r1, _0802D064 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - movs r4, 0x1 -_0802D04C: - cmp r4, 0 - beq _0802D06C -_0802D050: - ldr r1, _0802D068 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802D086 - .align 2, 0 -_0802D05C: .4byte gStatuses3 -_0802D060: .4byte gBattlerAttacker -_0802D064: .4byte gBattleCommunication -_0802D068: .4byte gBattlescriptCurrInstr -_0802D06C: - ldr r3, _0802D08C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802D086: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D08C: .4byte gBattlescriptCurrInstr - thumb_func_end atkE8_settypebasedhalvers - - thumb_func_start atkE9_setweatherballtype -atkE9_setweatherballtype: @ 802D090 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0xD - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0802D130 - str r0, [sp] - movs r0, 0x13 - movs r1, 0 - movs r2, 0x4D - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _0802D130 - ldr r2, _0802D0E0 @ =gBattleWeather - ldrb r0, [r2] - cmp r0, 0 - beq _0802D0CE - ldr r1, _0802D0E4 @ =gBattleScripting - movs r0, 0x2 - strb r0, [r1, 0xE] -_0802D0CE: - ldrh r1, [r2] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0802D0EC - ldr r0, _0802D0E8 @ =gBattleStruct - ldr r1, [r0] - movs r0, 0x8B - b _0802D12E - .align 2, 0 -_0802D0E0: .4byte gBattleWeather -_0802D0E4: .4byte gBattleScripting -_0802D0E8: .4byte gBattleStruct -_0802D0EC: - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _0802D100 - ldr r0, _0802D0FC @ =gBattleStruct - ldr r1, [r0] - movs r0, 0x85 - b _0802D12E - .align 2, 0 -_0802D0FC: .4byte gBattleStruct -_0802D100: - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _0802D114 - ldr r0, _0802D110 @ =gBattleStruct - ldr r1, [r0] - movs r0, 0x8A - b _0802D12E - .align 2, 0 -_0802D110: .4byte gBattleStruct -_0802D114: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802D128 - ldr r0, _0802D124 @ =gBattleStruct - ldr r1, [r0] - movs r0, 0x8F - b _0802D12E - .align 2, 0 -_0802D124: .4byte gBattleStruct -_0802D128: - ldr r0, _0802D140 @ =gBattleStruct - ldr r1, [r0] - movs r0, 0x80 -_0802D12E: - strb r0, [r1, 0x13] -_0802D130: - ldr r1, _0802D144 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0802D140: .4byte gBattleStruct -_0802D144: .4byte gBattlescriptCurrInstr - thumb_func_end atkE9_setweatherballtype - - thumb_func_start atkEA_tryrecycleitem -atkEA_tryrecycleitem: @ 802D148 - push {r4-r7,lr} - sub sp, 0x4 - ldr r7, _0802D1B0 @ =gActiveBattler - ldr r0, _0802D1B4 @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r7] - ldr r1, _0802D1B8 @ =gBattleStruct - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, 0xB8 - ldr r1, [r1] - adds r6, r1, r0 - ldrh r5, [r6] - cmp r5, 0 - beq _0802D1C8 - ldr r4, _0802D1BC @ =gBattleMons - movs r3, 0x58 - adds r0, r2, 0 - muls r0, r3 - adds r0, r4 - ldrh r0, [r0, 0x2E] - cmp r0, 0 - bne _0802D1C8 - ldr r1, _0802D1C0 @ =gLastUsedItem - strh r5, [r1] - strh r0, [r6] - ldrb r0, [r7] - muls r0, r3 - adds r0, r4 - ldrh r1, [r1] - strh r1, [r0, 0x2E] - ldrb r0, [r7] - muls r0, r3 - adds r1, r4, 0 - adds r1, 0x2E - adds r0, r1 - str r0, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl BtlController_EmitSetMonData - ldrb r0, [r7] - bl MarkBattlerForControllerExec - ldr r1, _0802D1C4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802D1E2 - .align 2, 0 -_0802D1B0: .4byte gActiveBattler -_0802D1B4: .4byte gBattlerAttacker -_0802D1B8: .4byte gBattleStruct -_0802D1BC: .4byte gBattleMons -_0802D1C0: .4byte gLastUsedItem -_0802D1C4: .4byte gBattlescriptCurrInstr -_0802D1C8: - ldr r3, _0802D1EC @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802D1E2: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D1EC: .4byte gBattlescriptCurrInstr - thumb_func_end atkEA_tryrecycleitem - - thumb_func_start atkEB_settypetoterrain -atkEB_settypetoterrain: @ 802D1F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0802D260 @ =gBattleMons - mov r8, r0 - ldr r7, _0802D264 @ =gBattlerAttacker - ldrb r0, [r7] - movs r6, 0x58 - muls r0, r6 - mov r1, r8 - adds r3, r0, r1 - movs r0, 0x21 - adds r0, r3 - mov r12, r0 - ldr r5, _0802D268 @ =sTerrainToType - ldr r4, _0802D26C @ =gBattleTerrain - ldrb r0, [r4] - adds r0, r5 - ldrb r2, [r0] - mov r1, r12 - ldrb r0, [r1] - adds r1, r2, 0 - cmp r0, r1 - beq _0802D278 - adds r0, r3, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, r1 - beq _0802D278 - mov r0, r12 - strb r2, [r0] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r6 - add r1, r8 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - adds r1, 0x22 - strb r0, [r1] - ldr r1, _0802D270 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x3 - strb r0, [r1, 0x1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r1, _0802D274 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802D292 - .align 2, 0 -_0802D260: .4byte gBattleMons -_0802D264: .4byte gBattlerAttacker -_0802D268: .4byte sTerrainToType -_0802D26C: .4byte gBattleTerrain -_0802D270: .4byte gBattleTextBuff1 -_0802D274: .4byte gBattlescriptCurrInstr -_0802D278: - ldr r3, _0802D29C @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802D292: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D29C: .4byte gBattlescriptCurrInstr - thumb_func_end atkEB_settypetoterrain - - thumb_func_start atkEC_pursuitrelated -atkEC_pursuitrelated: @ 802D2A0 - push {r4-r6,lr} - ldr r5, _0802D314 @ =gBattlerAttacker - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x2 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r4, _0802D318 @ =gActiveBattler - strb r0, [r4] - ldr r0, _0802D31C @ =gBattleTypeFlags - ldr r0, [r0] - movs r6, 0x1 - ands r0, r6 - cmp r0, 0 - beq _0802D340 - ldr r0, _0802D320 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _0802D324 @ =gBitTable - ldrb r3, [r4] - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _0802D340 - ldr r0, _0802D328 @ =gChosenActionByBattler - adds r0, r3, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _0802D340 - ldr r1, _0802D32C @ =gChosenMoveByBattler - lsls r0, r3, 1 - adds r0, r1 - ldrh r2, [r0] - cmp r2, 0xE4 - bne _0802D340 - ldr r0, _0802D330 @ =gActionsByTurnOrder - adds r0, r3, r0 - movs r1, 0xB - strb r1, [r0] - ldr r0, _0802D334 @ =gCurrentMove - strh r2, [r0] - ldr r1, _0802D338 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - ldr r0, _0802D33C @ =gBattleScripting - strb r6, [r0, 0x18] - ldrb r1, [r5] - adds r0, 0x20 - strb r1, [r0] - ldrb r0, [r4] - strb r0, [r5] - b _0802D35A - .align 2, 0 -_0802D314: .4byte gBattlerAttacker -_0802D318: .4byte gActiveBattler -_0802D31C: .4byte gBattleTypeFlags -_0802D320: .4byte gAbsentBattlerFlags -_0802D324: .4byte gBitTable -_0802D328: .4byte gChosenActionByBattler -_0802D32C: .4byte gChosenMoveByBattler -_0802D330: .4byte gActionsByTurnOrder -_0802D334: .4byte gCurrentMove -_0802D338: .4byte gBattlescriptCurrInstr -_0802D33C: .4byte gBattleScripting -_0802D340: - ldr r3, _0802D360 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802D35A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D360: .4byte gBattlescriptCurrInstr - thumb_func_end atkEC_pursuitrelated - - thumb_func_start atkED_snatchsetbattlers -atkED_snatchsetbattlers: @ 802D364 - push {r4,lr} - ldr r1, _0802D388 @ =gEffectBattler - ldr r3, _0802D38C @ =gBattlerAttacker - ldrb r0, [r3] - strb r0, [r1] - ldr r2, _0802D390 @ =gBattlerTarget - lsls r0, 24 - lsrs r0, 24 - adds r4, r1, 0 - ldrb r1, [r2] - cmp r0, r1 - bne _0802D398 - ldr r1, _0802D394 @ =gBattleScripting - ldrb r0, [r1, 0x17] - strb r0, [r2] - strb r0, [r3] - b _0802D39E - .align 2, 0 -_0802D388: .4byte gEffectBattler -_0802D38C: .4byte gBattlerAttacker -_0802D390: .4byte gBattlerTarget -_0802D394: .4byte gBattleScripting -_0802D398: - ldr r1, _0802D3B0 @ =gBattleScripting - ldrb r0, [r1, 0x17] - strb r0, [r2] -_0802D39E: - ldrb r0, [r4] - strb r0, [r1, 0x17] - ldr r1, _0802D3B4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D3B0: .4byte gBattleScripting -_0802D3B4: .4byte gBattlescriptCurrInstr - thumb_func_end atkED_snatchsetbattlers - - thumb_func_start atkEE_removelightscreenreflect -atkEE_removelightscreenreflect: @ 802D3B8 - push {r4,lr} - ldr r0, _0802D400 @ =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0802D404 @ =gSideTimers - lsls r3, r0, 1 - adds r0, r3, r0 - lsls r0, 2 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _0802D3E0 - ldrb r1, [r4, 0x2] - cmp r1, 0 - beq _0802D418 -_0802D3E0: - ldr r2, _0802D408 @ =gSideStatuses - adds r2, r3, r2 - ldrh r1, [r2] - ldr r0, _0802D40C @ =0x0000fffe - ands r0, r1 - movs r3, 0 - ldr r1, _0802D410 @ =0x0000fffd - ands r0, r1 - strh r0, [r2] - strb r3, [r4] - strb r3, [r4, 0x2] - ldr r1, _0802D414 @ =gBattleScripting - movs r0, 0x1 - strb r0, [r1, 0x18] - strb r0, [r1, 0x19] - b _0802D41E - .align 2, 0 -_0802D400: .4byte gBattlerAttacker -_0802D404: .4byte gSideTimers -_0802D408: .4byte gSideStatuses -_0802D40C: .4byte 0x0000fffe -_0802D410: .4byte 0x0000fffd -_0802D414: .4byte gBattleScripting -_0802D418: - ldr r0, _0802D42C @ =gBattleScripting - strb r1, [r0, 0x18] - strb r1, [r0, 0x19] -_0802D41E: - ldr r1, _0802D430 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802D42C: .4byte gBattleScripting -_0802D430: .4byte gBattlescriptCurrInstr - thumb_func_end atkEE_removelightscreenreflect - thumb_func_start atkEF_handleballthrow atkEF_handleballthrow: @ 802D434 push {r4-r6,lr} diff --git a/include/battle.h b/include/battle.h index 88b440a22..2420a406c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -347,7 +347,7 @@ struct WishFutureKnock s32 futureSightDmg[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; u8 wishCounter[MAX_BATTLERS_COUNT]; - u8 wishUserID[MAX_BATTLERS_COUNT]; + u8 wishMonId[MAX_BATTLERS_COUNT]; u8 weatherDuration; u8 knockedOffMons[2]; }; @@ -930,5 +930,6 @@ extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; +extern u8 gBattleTerrain; #endif // GUARD_BATTLE_H diff --git a/include/constants/battle.h b/include/constants/battle.h index b9026262a..c36330306 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -212,7 +212,7 @@ #define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT) #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY (WEATHER_HAIL) -#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUNNY_ANY | WEATHER_HAIL_ANY) +#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY) // Move Effects #define MOVE_EFFECT_SLEEP 0x1 @@ -281,4 +281,17 @@ #define MOVE_EFFECT_AFFECTS_USER 0x40 #define MOVE_EFFECT_CERTAIN 0x80 +// Battle terrain defines for gBattleTerrain. +#define BATTLE_TERRAIN_GRASS 0 +#define BATTLE_TERRAIN_LONG_GRASS 1 +#define BATTLE_TERRAIN_SAND 2 +#define BATTLE_TERRAIN_UNDERWATER 3 +#define BATTLE_TERRAIN_WATER 4 +#define BATTLE_TERRAIN_POND 5 +#define BATTLE_TERRAIN_MOUNTAIN 6 +#define BATTLE_TERRAIN_CAVE 7 +#define BATTLE_TERRAIN_BUILDING 8 +#define BATTLE_TERRAIN_PLAIN 9 + + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 932e52791..fb4681158 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -72,7 +72,7 @@ bool8 sub_8026648(void); void PutMonIconOnLvlUpBox(void); void PutLevelAndGenderOnLvlUpBox(void); -void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite); +void SpriteCB_MonIconOnLvlUpBox(struct Sprite *sprite); void atk00_attackcanceler(void); void atk01_accuracycheck(void); @@ -8550,3 +8550,898 @@ void atkC0_recoverbasedonsunlight(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } } + +void atkC1_hiddenpowercalc(void) +{ + s32 powerBits, typeBits; + + powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1) + | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0) + | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1) + | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2) + | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3) + | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4); + typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0) + | ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1) + | ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2) + | ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3) + | ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4) + | ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5); + gDynamicBasePower = (40 * powerBits) / 63 + 30; + gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1; + if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY) + ++gBattleStruct->dynamicMoveType; + gBattleStruct->dynamicMoveType |= 0xC0; + ++gBattlescriptCurrInstr; +} + +void atkC2_selectfirstvalidtarget(void) +{ + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) + { + if (gBattlerTarget == gBattlerAttacker) + continue; + if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + break; + } + ++gBattlescriptCurrInstr; +} + +void atkC3_trysetfutureattack(void) +{ + if (gWishFutureKnock.futureSightCounter[gBattlerTarget] != 0) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gWishFutureKnock.futureSightMove[gBattlerTarget] = gCurrentMove; + gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker; + gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3; + gWishFutureKnock.futureSightDmg[gBattlerTarget] = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], + &gBattleMons[gBattlerTarget], + gCurrentMove, + gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)], + 0, + 0, + gBattlerAttacker, + gBattlerTarget); + if (gProtectStructs[gBattlerAttacker].helpingHand) + gWishFutureKnock.futureSightDmg[gBattlerTarget] = gWishFutureKnock.futureSightDmg[gBattlerTarget] * 15 / 10; + if (gCurrentMove == MOVE_DOOM_DESIRE) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr += 5; + } +} + +void atkC4_trydobeatup(void) +{ + struct Pokemon *party; + + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + if (gBattleMons[gBattlerTarget].hp == 0) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + u8 beforeLoop = gBattleCommunication[0]; + + for (;gBattleCommunication[0] < 6; ++gBattleCommunication[0]) + { + if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) + && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG + && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS)) + break; + } + if (gBattleCommunication[0] < 6) + { + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattleCommunication[0]) + gBattlescriptCurrInstr += 9; + gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; + gBattleMoveDamage *= gBattleMoves[gCurrentMove].power; + gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2); + gBattleMoveDamage /= gBaseStats[gBattleMons[gBattlerTarget].species].baseDefense; + gBattleMoveDamage = (gBattleMoveDamage / 50) + 2; + if (gProtectStructs[gBattlerAttacker].helpingHand) + gBattleMoveDamage = gBattleMoveDamage * 15 / 10; + ++gBattleCommunication[0]; + } + else if (beforeLoop != 0) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 5); + } +} + +void atkC5_setsemiinvulnerablebit(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBattlerAttacker] |= STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBattlerAttacker] |= STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBattlerAttacker] |= STATUS3_UNDERWATER; + break; + } + ++gBattlescriptCurrInstr; +} + +void atkC6_clearsemiinvulnerablebit(void) +{ + switch (gCurrentMove) + { + case MOVE_FLY: + case MOVE_BOUNCE: + gStatuses3[gBattlerAttacker] &= ~STATUS3_ON_AIR; + break; + case MOVE_DIG: + gStatuses3[gBattlerAttacker] &= ~STATUS3_UNDERGROUND; + break; + case MOVE_DIVE: + gStatuses3[gBattlerAttacker] &= ~STATUS3_UNDERWATER; + break; + } + ++gBattlescriptCurrInstr; +} + +void atkC7_setminimize(void) +{ + if (gHitMarker & HITMARKER_OBEYS) + gStatuses3[gBattlerAttacker] |= STATUS3_MINIMIZED; + ++gBattlescriptCurrInstr; +} + +void atkC8_sethail(void) +{ + if (gBattleWeather & WEATHER_HAIL_ANY) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else + { + gBattleWeather = WEATHER_HAIL; + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + gWishFutureKnock.weatherDuration = 5; + } + ++gBattlescriptCurrInstr; +} + +void atkC9_jumpifattackandspecialattackcannotfall(void) // memento +{ + if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == 0 + && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == 0 + && gBattleCommunication[6] != 1) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gActiveBattler = gBattlerAttacker; + gBattleMoveDamage = gBattleMons[gActiveBattler].hp; + BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 5; + } +} + +void atkCA_setforcedtarget(void) // follow me +{ + gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTimer = 1; + gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTarget = gBattlerAttacker; + ++gBattlescriptCurrInstr; +} + +void atkCB_setcharge(void) +{ + gStatuses3[gBattlerAttacker] |= STATUS3_CHARGED_UP; + gDisableStructs[gBattlerAttacker].chargeTimer = 2; + gDisableStructs[gBattlerAttacker].chargeTimerStartValue = 2; + ++gBattlescriptCurrInstr; +} + +void atkCC_callterrainattack(void) // nature power +{ + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCurrentMove = sNaturePowerMoves[gBattleTerrain]; + gBattlerTarget = GetMoveTarget(gCurrentMove, 0); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + ++gBattlescriptCurrInstr; +} + +void atkCD_cureifburnedparalysedorpoisoned(void) // refresh +{ + if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) + { + gBattleMons[gBattlerAttacker].status1 = 0; + gBattlescriptCurrInstr += 5; + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkCE_settorment(void) +{ + if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gBattlescriptCurrInstr += 5; + } +} + +void atkCF_jumpifnodamage(void) +{ + if (gProtectStructs[gBattlerAttacker].physicalDmg || gProtectStructs[gBattlerAttacker].specialDmg) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); +} + +void atkD0_settaunt(void) +{ + if (gDisableStructs[gBattlerTarget].tauntTimer == 0) + { + gDisableStructs[gBattlerTarget].tauntTimer = 2; + gDisableStructs[gBattlerTarget].tauntTimer2 = 2; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkD1_trysethelpinghand(void) +{ + gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget]) + && !gProtectStructs[gBattlerAttacker].helpingHand + && !gProtectStructs[gBattlerTarget].helpingHand) + { + gProtectStructs[gBattlerTarget].helpingHand = 1; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkD2_tryswapitems(void) // trick +{ + // opponent can't swap items with player in regular battles + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER + || (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) + && gTrainerBattleOpponent_A != 0x400)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + u8 sideAttacker = GetBattlerSide(gBattlerAttacker); + u8 sideTarget = GetBattlerSide(gBattlerTarget); + + // you can't swap items if they were knocked off in regular battles + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) + && gTrainerBattleOpponent_A != 0x400 + && (gWishFutureKnock.knockedOffMons[sideAttacker] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]] + || gWishFutureKnock.knockedOffMons[sideTarget] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]])) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + // can't swap if two pokemon don't have an item + // or if either of them is an enigma berry or a mail + else if ((gBattleMons[gBattlerAttacker].item == 0 && gBattleMons[gBattlerTarget].item == 0) + || gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY + || gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY + || IS_ITEM_MAIL(gBattleMons[gBattlerAttacker].item) + || IS_ITEM_MAIL(gBattleMons[gBattlerTarget].item)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + // check if ability prevents swapping + else if (gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD) + { + gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + // took a while, but all checks passed and items can be safely swapped + else + { + u16 oldItemAtk, *newItemAtk; + + newItemAtk = &gBattleStruct->changedItems[gBattlerAttacker]; + oldItemAtk = gBattleMons[gBattlerAttacker].item; + *newItemAtk = gBattleMons[gBattlerTarget].item; + gBattleMons[gBattlerAttacker].item = 0; + gBattleMons[gBattlerTarget].item = oldItemAtk; + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk); + MarkBattlerForControllerExec(gBattlerAttacker); + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gBattlerTarget); + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerTarget]) + 1) = 0; + + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerAttacker]) + 0) = 0; + *(u8 *)((u8 *)(&gBattleStruct->choicedMove[gBattlerAttacker]) + 1) = 0; + gBattlescriptCurrInstr += 5; + PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk) + PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk) + if (oldItemAtk != ITEM_NONE && *newItemAtk != ITEM_NONE) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; // attacker's item -> <- target's item + else if (oldItemAtk == ITEM_NONE && *newItemAtk != ITEM_NONE) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; // nothing -> <- target's item + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; // attacker's item -> <- nothing + } + } +} + +void atkD3_trycopyability(void) // role play +{ + if (gBattleMons[gBattlerTarget].ability != ABILITY_NONE && gBattleMons[gBattlerTarget].ability != ABILITY_WONDER_GUARD) + { + gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability; + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkD4_trywish(void) +{ + switch (gBattlescriptCurrInstr[1]) + { + case 0: // use wish + if (gWishFutureKnock.wishCounter[gBattlerAttacker] == 0) + { + gWishFutureKnock.wishCounter[gBattlerAttacker] = 2; + gWishFutureKnock.wishMonId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker]; + gBattlescriptCurrInstr += 6; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + } + break; + case 1: // heal effect + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishMonId[gBattlerTarget]) + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; + break; + } +} + +void atkD5_trysetroots(void) // ingrain +{ + if (gStatuses3[gBattlerAttacker] & STATUS3_ROOTED) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBattlerAttacker] |= STATUS3_ROOTED; + gBattlescriptCurrInstr += 5; + } +} + +void atkD6_doubledamagedealtifdamaged(void) +{ + if ((gProtectStructs[gBattlerAttacker].physicalDmg != 0 + && gProtectStructs[gBattlerAttacker].physicalBattlerId == gBattlerTarget) + || (gProtectStructs[gBattlerAttacker].specialDmg != 0 + && gProtectStructs[gBattlerAttacker].specialBattlerId == gBattlerTarget)) + { + gBattleScripting.dmgMultiplier = 2; + } + ++gBattlescriptCurrInstr; +} + +void atkD7_setyawn(void) +{ + if (gStatuses3[gBattlerTarget] & STATUS3_YAWN + || gBattleMons[gBattlerTarget].status1 & STATUS1_ANY) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBattlerTarget] |= 0x1000; + gBattlescriptCurrInstr += 5; + } +} + +void atkD8_setdamagetohealthdifference(void) +{ + if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - gBattleMons[gBattlerAttacker].hp; + gBattlescriptCurrInstr += 5; + } +} + +void atkD9_scaledamagebyhealthratio(void) +{ + if (gDynamicBasePower == 0) + { + u8 power = gBattleMoves[gCurrentMove].power; + + gDynamicBasePower = gBattleMons[gBattlerAttacker].hp * power / gBattleMons[gBattlerAttacker].maxHP; + if (gDynamicBasePower == 0) + gDynamicBasePower = 1; + } + ++gBattlescriptCurrInstr; +} + +void atkDA_tryswapabilities(void) // skill swap +{ + if ((gBattleMons[gBattlerAttacker].ability == 0 + && gBattleMons[gBattlerTarget].ability == 0) + || gBattleMons[gBattlerAttacker].ability == ABILITY_WONDER_GUARD + || gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD + || gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + u8 abilityAtk = gBattleMons[gBattlerAttacker].ability; + + gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability; + gBattleMons[gBattlerTarget].ability = abilityAtk; + + gBattlescriptCurrInstr += 5; + } +} + +void atkDB_tryimprison(void) +{ + if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + u8 battlerId, sideAttacker; + + sideAttacker = GetBattlerSide(gBattlerAttacker); + PressurePPLoseOnUsingImprison(gBattlerAttacker); + for (battlerId = 0; battlerId < gBattlersCount; ++battlerId) + { + if (sideAttacker != GetBattlerSide(battlerId)) + { + s32 attackerMoveId; + + for (attackerMoveId = 0; attackerMoveId < MAX_MON_MOVES; ++attackerMoveId) + { + s32 i; + + for (i = 0; i < MAX_MON_MOVES; ++i) + { + if (gBattleMons[gBattlerAttacker].moves[attackerMoveId] == gBattleMons[battlerId].moves[i] + && gBattleMons[gBattlerAttacker].moves[attackerMoveId] != MOVE_NONE) + break; + } + if (i != MAX_MON_MOVES) + break; + } + if (attackerMoveId != MAX_MON_MOVES) + { + gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISONED_OTHERS; + gBattlescriptCurrInstr += 5; + break; + } + } + } + if (battlerId == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkDC_trysetgrudge(void) +{ + if (gStatuses3[gBattlerAttacker] & STATUS3_GRUDGE) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gStatuses3[gBattlerAttacker] |= STATUS3_GRUDGE; + gBattlescriptCurrInstr += 5; + } +} + +void atkDD_weightdamagecalculation(void) +{ + s32 i; + + for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2) + { + if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), 1)) + break; + } + if (sWeightToDamageTable[i] != 0xFFFF) + gDynamicBasePower = sWeightToDamageTable[i + 1]; + else + gDynamicBasePower = 120; + ++gBattlescriptCurrInstr; +} + +void atkDE_assistattackselect(void) +{ + s32 chooseableMovesNo = 0; + struct Pokemon *party; + s32 monId, moveId; + u16 *movesArray = gBattleStruct->assistPossibleMoves; + + if (GET_BATTLER_SIDE(gBattlerAttacker) != B_SIDE_PLAYER) + party = gEnemyParty; + else + party = gPlayerParty; + for (monId = 0; monId < PARTY_SIZE; ++monId) + { + if (monId == gBattlerPartyIndexes[gBattlerAttacker] + || GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_EGG) + continue; + for (moveId = 0; moveId < MAX_MON_MOVES; ++moveId) + { + s32 i = 0; + u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); + + if (IsInvalidForSleepTalkOrAssist(move)) + continue; + for (; sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != sMovesForbiddenToCopy[i]; ++i); + if (sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END || move == MOVE_NONE) + continue; + movesArray[chooseableMovesNo] = move; + ++chooseableMovesNo; + } + } + if (chooseableMovesNo) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gCalledMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8]; + gBattlerTarget = GetMoveTarget(gCalledMove, 0); + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkDF_trysetmagiccoat(void) +{ + gBattlerTarget = gBattlerAttacker; + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; + if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gProtectStructs[gBattlerAttacker].bounceMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +void atkE0_trysetsnatch(void) // snatch +{ + gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; + if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + gProtectStructs[gBattlerAttacker].stealMove = 1; + gBattlescriptCurrInstr += 5; + } +} + +void atkE1_trygetintimidatetarget(void) +{ + u8 side; + + gBattleScripting.battler = gBattleStruct->intimidateBattler; + side = GetBattlerSide(gBattleScripting.battler); + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability) + for (;gBattlerTarget < gBattlersCount; ++gBattlerTarget) + { + if (GetBattlerSide(gBattlerTarget) == side) + continue; + if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + break; + } + if (gBattlerTarget >= gBattlersCount) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + else + gBattlescriptCurrInstr += 5; +} + +void atkE2_switchoutabilities(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + switch (gBattleMons[gActiveBattler].ability) + { + case ABILITY_NATURAL_CURE: + gBattleMons[gActiveBattler].status1 = 0; + BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1); + MarkBattlerForControllerExec(gActiveBattler); + break; + } + gBattlescriptCurrInstr += 2; +} + +void atkE3_jumpifhasnohp(void) +{ + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattleMons[gActiveBattler].hp == 0) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); + else + gBattlescriptCurrInstr += 6; +} + +void atkE4_getsecretpowereffect(void) +{ + switch (gBattleTerrain) + { + case BATTLE_TERRAIN_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_POISON; + break; + case BATTLE_TERRAIN_LONG_GRASS: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SLEEP; + break; + case BATTLE_TERRAIN_SAND: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ACC_MINUS_1; + break; + case BATTLE_TERRAIN_UNDERWATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_DEF_MINUS_1; + break; + case BATTLE_TERRAIN_WATER: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ATK_MINUS_1; + break; + case BATTLE_TERRAIN_POND: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1; + break; + case BATTLE_TERRAIN_MOUNTAIN: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION; + break; + case BATTLE_TERRAIN_CAVE: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; + break; + default: + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_PARALYSIS; + break; + } + ++gBattlescriptCurrInstr; +} + +void atkE5_pickup(void) +{ + s32 i; + u32 j; + u16 species, heldItem; + u32 ability; + + for (i = 0; i < PARTY_SIZE; ++i) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM) != ABILITY_NONE) + ability = gBaseStats[species].abilities[1]; + else + ability = gBaseStats[species].abilities[0]; + if (ability == ABILITY_PICKUP && species != SPECIES_NONE && species != SPECIES_EGG && heldItem == ITEM_NONE && !(Random() % 10)) + { + s32 random = Random() % 100; + + for (j = 0; j < 15; ++j) + if (sPickupItems[j].chance > random) + break; + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[j]); + } + } + ++gBattlescriptCurrInstr; +} + +void atkE6_docastformchangeanimation(void) +{ + gActiveBattler = gBattleScripting.battler; + if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) + *(&gBattleStruct->formToChangeInto) |= 0x80; + BtlController_EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto); + MarkBattlerForControllerExec(gActiveBattler); + ++gBattlescriptCurrInstr; +} + +void atkE7_trycastformdatachange(void) +{ + u8 form; + + ++gBattlescriptCurrInstr; + form = CastformDataTypeChange(gBattleScripting.battler); + if (form) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + *(&gBattleStruct->formToChangeInto) = form - 1; + } +} + +void atkE8_settypebasedhalvers(void) // water and mud sport +{ + bool8 worked = FALSE; + + if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT) + { + if (!(gStatuses3[gBattlerAttacker] & STATUS3_MUDSPORT)) + { + gStatuses3[gBattlerAttacker] |= STATUS3_MUDSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + worked = TRUE; + } + } + else // water sport + { + if (!(gStatuses3[gBattlerAttacker] & STATUS3_WATERSPORT)) + { + gStatuses3[gBattlerAttacker] |= STATUS3_WATERSPORT; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + worked = TRUE; + } + } + if (worked) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); +} + +void atkE9_setweatherballtype(void) +{ + if (WEATHER_HAS_EFFECT) + { + if (gBattleWeather & WEATHER_ANY) + gBattleScripting.dmgMultiplier = 2; + if (gBattleWeather & WEATHER_RAIN_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | 0x80; + else if (gBattleWeather & WEATHER_SANDSTORM_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | 0x80; + else if (gBattleWeather & WEATHER_SUN_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | 0x80; + else if (gBattleWeather & WEATHER_HAIL_ANY) + *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | 0x80; + else + *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | 0x80; + } + ++gBattlescriptCurrInstr; +} + +void atkEA_tryrecycleitem(void) +{ + u16 *usedHeldItem; + + gActiveBattler = gBattlerAttacker; + usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler]; + if (*usedHeldItem != ITEM_NONE && gBattleMons[gActiveBattler].item == ITEM_NONE) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gActiveBattler].item = gLastUsedItem; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkEB_settypetoterrain(void) +{ + if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain])) + { + SET_BATTLER_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain]); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, sTerrainToType[gBattleTerrain]); + gBattlescriptCurrInstr += 5; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkEC_pursuitrelated(void) +{ + gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]) + && gChosenActionByBattler[gActiveBattler] == 0 + && gChosenMoveByBattler[gActiveBattler] == MOVE_PURSUIT) + { + gActionsByTurnOrder[gActiveBattler] = 11; + gCurrentMove = MOVE_PURSUIT; + gBattlescriptCurrInstr += 5; + gBattleScripting.animTurn = 1; + gBattleScripting.field_20 = gBattlerAttacker; + gBattlerAttacker = gActiveBattler; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +} + +void atkED_snatchsetbattlers(void) +{ + gEffectBattler = gBattlerAttacker; + if (gBattlerAttacker == gBattlerTarget) + gBattlerAttacker = gBattlerTarget = gBattleScripting.battler; + else + gBattlerTarget = gBattleScripting.battler; + gBattleScripting.battler = gEffectBattler; + ++gBattlescriptCurrInstr; +} + +void atkEE_removelightscreenreflect(void) // brick break +{ + u8 opposingSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + + if (gSideTimers[opposingSide].reflectTimer || gSideTimers[opposingSide].lightscreenTimer) + { + gSideStatuses[opposingSide] &= ~(SIDE_STATUS_REFLECT); + gSideStatuses[opposingSide] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideTimers[opposingSide].reflectTimer = 0; + gSideTimers[opposingSide].lightscreenTimer = 0; + gBattleScripting.animTurn = 1; + gBattleScripting.animTargetsHit = 1; + } + else + { + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + } + ++gBattlescriptCurrInstr; +} From b2343076db0cefc087f3941b6941dcba7b1e3364 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 15:10:23 +0800 Subject: [PATCH 031/100] remaining stuff of battle_script_commands --- asm/battle_script_commands.s | 1463 ---------------------------- include/battle.h | 1 + include/battle_bg.h | 6 + include/battle_controllers.h | 1 + include/battle_script_commands.h | 19 +- include/battle_scripts.h | 2 + include/field_specials.h | 1 + include/overworld.h | 1 + include/pokedex.h | 2 + include/trainer_pokemon_sprites.h | 1 + ld_script.txt | 1 - src/battle_script_commands.c | 1491 ++++++++++++++++++----------- 12 files changed, 973 insertions(+), 2016 deletions(-) delete mode 100644 asm/battle_script_commands.s create mode 100644 include/battle_bg.h diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s deleted file mode 100644 index 00d3e49c7..000000000 --- a/asm/battle_script_commands.s +++ /dev/null @@ -1,1463 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start atkEF_handleballthrow -atkEF_handleballthrow: @ 802D434 - push {r4-r6,lr} - movs r4, 0 - ldr r0, _0802D474 @ =gBattleControllerExecFlags - ldr r0, [r0] - cmp r0, 0 - beq _0802D442 - b _0802D7EE -_0802D442: - ldr r5, _0802D478 @ =gActiveBattler - ldr r0, _0802D47C @ =gBattlerAttacker - ldrb r0, [r0] - strb r0, [r5] - ldr r6, _0802D480 @ =gBattlerTarget - movs r1, 0x1 - eors r0, r1 - strb r0, [r6] - ldr r0, _0802D484 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0802D490 - movs r0, 0 - movs r1, 0x6 - bl BtlController_EmitBallThrowAnim - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r1, _0802D488 @ =gBattlescriptCurrInstr - ldr r0, _0802D48C @ =BattleScript_GhostBallDodge - b _0802D7EC - .align 2, 0 -_0802D474: .4byte gBattleControllerExecFlags -_0802D478: .4byte gActiveBattler -_0802D47C: .4byte gBattlerAttacker -_0802D480: .4byte gBattlerTarget -_0802D484: .4byte gBattleTypeFlags -_0802D488: .4byte gBattlescriptCurrInstr -_0802D48C: .4byte BattleScript_GhostBallDodge -_0802D490: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0802D4B4 - movs r0, 0 - movs r1, 0x5 - bl BtlController_EmitBallThrowAnim - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r1, _0802D4AC @ =gBattlescriptCurrInstr - ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock - b _0802D7EC - .align 2, 0 -_0802D4AC: .4byte gBattlescriptCurrInstr -_0802D4B0: .4byte BattleScript_TrainerBallBlock -_0802D4B4: - movs r0, 0x81 - lsls r0, 9 - ands r1, r0 - cmp r1, 0 - beq _0802D4DC - movs r0, 0 - movs r1, 0x4 - bl BtlController_EmitBallThrowAnim - ldrb r0, [r5] - bl MarkBattlerForControllerExec - ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr - ldr r0, _0802D4D8 @ =gUnknown_81D9A88 - b _0802D7EC - .align 2, 0 -_0802D4D4: .4byte gBattlescriptCurrInstr -_0802D4D8: .4byte gUnknown_81D9A88 -_0802D4DC: - ldr r0, _0802D500 @ =gLastUsedItem - ldrh r0, [r0] - cmp r0, 0x5 - bne _0802D508 - ldr r0, _0802D504 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x7C - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 8 - subs r0, r1 - movs r1, 0x64 - bl __divsi3 - lsls r0, 24 - lsrs r5, r0, 24 - b _0802D520 - .align 2, 0 -_0802D500: .4byte gLastUsedItem -_0802D504: .4byte gBattleStruct -_0802D508: - ldr r3, _0802D53C @ =gBaseStats - ldr r2, _0802D540 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r5, [r0, 0x8] -_0802D520: - ldr r2, _0802D544 @ =gLastUsedItem - ldrh r0, [r2] - cmp r0, 0x5 - bhi _0802D52A - b _0802D620 -_0802D52A: - subs r0, 0x6 - cmp r0, 0x6 - bls _0802D532 - b _0802D62A -_0802D532: - lsls r0, 2 - ldr r1, _0802D548 @ =_0802D54C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802D53C: .4byte gBaseStats -_0802D540: .4byte gBattleMons -_0802D544: .4byte gLastUsedItem -_0802D548: .4byte _0802D54C - .align 2, 0 -_0802D54C: - .4byte _0802D568 - .4byte _0802D598 - .4byte _0802D5AA - .4byte _0802D5D8 - .4byte _0802D608 - .4byte _0802D5CA - .4byte _0802D5CA -_0802D568: - ldr r2, _0802D590 @ =gBattleMons - ldr r0, _0802D594 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r1, 0xB - beq _0802D5FC - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0xB - beq _0802D5FC - cmp r1, 0x6 - beq _0802D5FC - cmp r0, 0x6 - beq _0802D5FC - b _0802D5CA - .align 2, 0 -_0802D590: .4byte gBattleMons -_0802D594: .4byte gBattlerTarget -_0802D598: - bl GetCurrentMapType - lsls r0, 24 - lsrs r0, 24 - movs r4, 0xA - cmp r0, 0x5 - bne _0802D62A - movs r4, 0x23 - b _0802D62A -_0802D5AA: - ldr r2, _0802D5D0 @ =gBattleMons - ldr r0, _0802D5D4 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x2A - ldrb r1, [r0] - cmp r1, 0x27 - bhi _0802D5CA - movs r0, 0x28 - subs r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bhi _0802D62A -_0802D5CA: - movs r4, 0xA - b _0802D62A - .align 2, 0 -_0802D5D0: .4byte gBattleMons -_0802D5D4: .4byte gBattlerTarget -_0802D5D8: - ldr r2, _0802D600 @ =gBattleMons - ldr r0, _0802D604 @ =gBattlerTarget - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - movs r4, 0xA - cmp r0, 0 - beq _0802D62A -_0802D5FC: - movs r4, 0x1E - b _0802D62A - .align 2, 0 -_0802D600: .4byte gBattleMons -_0802D604: .4byte gBattlerTarget -_0802D608: - ldr r0, _0802D61C @ =gBattleResults - ldrb r0, [r0, 0x13] - adds r0, 0xA - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x28 - bls _0802D62A - movs r4, 0x28 - b _0802D62A - .align 2, 0 -_0802D61C: .4byte gBattleResults -_0802D620: - ldr r1, _0802D694 @ =sBallCatchBonuses - ldrh r0, [r2] - subs r0, 0x2 - adds r0, r1 - ldrb r4, [r0] -_0802D62A: - adds r0, r5, 0 - muls r0, r4 - movs r1, 0xA - bl __divsi3 - ldr r5, _0802D698 @ =gBattleMons - ldr r1, _0802D69C @ =gBattlerTarget - ldrb r2, [r1] - movs r1, 0x58 - adds r4, r2, 0 - muls r4, r1 - adds r3, r4, r5 - ldrh r2, [r3, 0x2C] - lsls r1, r2, 1 - adds r1, r2 - ldrh r2, [r3, 0x28] - lsls r2, 1 - subs r2, r1, r2 - muls r0, r2 - bl __divsi3 - adds r6, r0, 0 - adds r5, 0x4C - adds r4, r5 - ldr r4, [r4] - movs r0, 0x27 - ands r0, r4 - cmp r0, 0 - beq _0802D666 - lsls r6, 1 -_0802D666: - movs r0, 0xD8 - ands r4, r0 - cmp r4, 0 - beq _0802D67A - lsls r0, r6, 4 - subs r0, r6 - movs r1, 0xA - bl __udivsi3 - adds r6, r0, 0 -_0802D67A: - ldr r1, _0802D6A0 @ =gLastUsedItem - ldrh r0, [r1] - cmp r0, 0x5 - beq _0802D6BC - cmp r0, 0x1 - bne _0802D6A8 - ldr r0, _0802D6A4 @ =gBattleResults - ldrb r1, [r0, 0x5] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x5] - b _0802D6BC - .align 2, 0 -_0802D694: .4byte sBallCatchBonuses -_0802D698: .4byte gBattleMons -_0802D69C: .4byte gBattlerTarget -_0802D6A0: .4byte gLastUsedItem -_0802D6A4: .4byte gBattleResults -_0802D6A8: - ldr r0, _0802D700 @ =gBattleResults - ldrh r1, [r1] - adds r0, r1 - adds r1, r0, 0 - adds r1, 0x34 - ldrb r0, [r1] - cmp r0, 0xFE - bhi _0802D6BC - adds r0, 0x1 - strb r0, [r1] -_0802D6BC: - cmp r6, 0xFE - bls _0802D720 - movs r0, 0 - movs r1, 0x4 - bl BtlController_EmitBallThrowAnim - ldr r0, _0802D704 @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - ldr r1, _0802D708 @ =gBattlescriptCurrInstr - ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow - str r0, [r1] - ldr r1, _0802D710 @ =gBattlerPartyIndexes - ldr r0, _0802D714 @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802D718 @ =gEnemyParty - adds r0, r1 - ldr r2, _0802D71C @ =gLastUsedItem - movs r1, 0x26 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _0802D7AE - b _0802D7D8 - .align 2, 0 -_0802D700: .4byte gBattleResults -_0802D704: .4byte gActiveBattler -_0802D708: .4byte gBattlescriptCurrInstr -_0802D70C: .4byte BattleScript_SuccessBallThrow -_0802D710: .4byte gBattlerPartyIndexes -_0802D714: .4byte gBattlerTarget -_0802D718: .4byte gEnemyParty -_0802D71C: .4byte gLastUsedItem -_0802D720: - movs r0, 0xFF - lsls r0, 16 - adds r1, r6, 0 - bl __udivsi3 - bl Sqrt - lsls r0, 16 - lsrs r0, 16 - bl Sqrt - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _0802D748 @ =0x000ffff0 - adds r1, r6, 0 - bl __udivsi3 - adds r6, r0, 0 - movs r4, 0 - b _0802D752 - .align 2, 0 -_0802D748: .4byte 0x000ffff0 -_0802D74C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0802D752: - cmp r4, 0x3 - bhi _0802D762 - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r6 - bcc _0802D74C -_0802D762: - ldr r5, _0802D7B8 @ =gLastUsedItem - ldrh r0, [r5] - cmp r0, 0x1 - bne _0802D76C - movs r4, 0x4 -_0802D76C: - movs r0, 0 - adds r1, r4, 0 - bl BtlController_EmitBallThrowAnim - ldr r0, _0802D7BC @ =gActiveBattler - ldrb r0, [r0] - bl MarkBattlerForControllerExec - cmp r4, 0x4 - bne _0802D7E4 - ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr - ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow - str r0, [r1] - ldr r1, _0802D7C8 @ =gBattlerPartyIndexes - ldr r0, _0802D7CC @ =gBattlerTarget - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802D7D0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x26 - adds r2, r5, 0 - bl SetMonData - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0802D7D8 -_0802D7AE: - ldr r1, _0802D7D4 @ =gBattleCommunication - movs r0, 0 - strb r0, [r1, 0x5] - b _0802D7EE - .align 2, 0 -_0802D7B8: .4byte gLastUsedItem -_0802D7BC: .4byte gActiveBattler -_0802D7C0: .4byte gBattlescriptCurrInstr -_0802D7C4: .4byte BattleScript_SuccessBallThrow -_0802D7C8: .4byte gBattlerPartyIndexes -_0802D7CC: .4byte gBattlerTarget -_0802D7D0: .4byte gEnemyParty -_0802D7D4: .4byte gBattleCommunication -_0802D7D8: - ldr r1, _0802D7E0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _0802D7EE - .align 2, 0 -_0802D7E0: .4byte gBattleCommunication -_0802D7E4: - ldr r0, _0802D7F4 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr - ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow -_0802D7EC: - str r0, [r1] -_0802D7EE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802D7F4: .4byte gBattleCommunication -_0802D7F8: .4byte gBattlescriptCurrInstr -_0802D7FC: .4byte BattleScript_ShakeBallThrow - thumb_func_end atkEF_handleballthrow - - thumb_func_start atkF0_givecaughtmon -atkF0_givecaughtmon: @ 802D800 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0802D870 @ =gBattlerPartyIndexes - mov r9, r0 - ldr r5, _0802D874 @ =gBattlerAttacker - ldrb r0, [r5] - movs r6, 0x1 - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - movs r7, 0x64 - muls r0, r7 - ldr r1, _0802D878 @ =gEnemyParty - mov r8, r1 - add r0, r8 - bl GiveMonToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0802D8EA - bl sub_80CC7B4 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0802D88C - ldr r0, _0802D87C @ =gBattleCommunication - strb r1, [r0, 0x5] - ldr r4, _0802D880 @ =gStringVar1 - ldr r0, _0802D884 @ =0x00004037 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5] - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - add r0, r8 - ldr r2, _0802D888 @ =gStringVar2 - movs r1, 0x2 - bl GetMonData - b _0802D8D6 - .align 2, 0 -_0802D870: .4byte gBattlerPartyIndexes -_0802D874: .4byte gBattlerAttacker -_0802D878: .4byte gEnemyParty -_0802D87C: .4byte gBattleCommunication -_0802D880: .4byte gStringVar1 -_0802D884: .4byte 0x00004037 -_0802D888: .4byte gStringVar2 -_0802D88C: - ldr r4, _0802D92C @ =gStringVar1 - ldr r0, _0802D930 @ =0x00004037 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5] - eors r0, r6 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - muls r0, r7 - add r0, r8 - ldr r2, _0802D934 @ =gStringVar2 - movs r1, 0x2 - bl GetMonData - ldr r4, _0802D938 @ =gStringVar3 - bl get_unknown_box_id - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _0802D93C @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] -_0802D8D6: - ldr r0, _0802D940 @ =0x00000834 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0802D8EA - ldr r1, _0802D93C @ =gBattleCommunication - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] -_0802D8EA: - ldr r2, _0802D944 @ =gBattleResults - ldr r3, _0802D948 @ =gBattleMons - ldr r0, _0802D94C @ =gBattlerAttacker - ldrb r0, [r0] - movs r1, 0x1 - eors r1, r0 - movs r0, 0x58 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r2, 0x28] - ldr r0, _0802D950 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802D954 @ =gEnemyParty - adds r0, r1 - adds r2, 0x2A - movs r1, 0x2 - bl GetMonData - ldr r1, _0802D958 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D92C: .4byte gStringVar1 -_0802D930: .4byte 0x00004037 -_0802D934: .4byte gStringVar2 -_0802D938: .4byte gStringVar3 -_0802D93C: .4byte gBattleCommunication -_0802D940: .4byte 0x00000834 -_0802D944: .4byte gBattleResults -_0802D948: .4byte gBattleMons -_0802D94C: .4byte gBattlerAttacker -_0802D950: .4byte gBattlerPartyIndexes -_0802D954: .4byte gEnemyParty -_0802D958: .4byte gBattlescriptCurrInstr - thumb_func_end atkF0_givecaughtmon - - thumb_func_start atkF1_trysetcaughtmondexflags -atkF1_trysetcaughtmondexflags: @ 802D95C - push {r4,r5,lr} - ldr r4, _0802D9AC @ =gEnemyParty - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _0802D9B4 - ldr r3, _0802D9B0 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] - b _0802D9CE - .align 2, 0 -_0802D9AC: .4byte gEnemyParty -_0802D9B0: .4byte gBattlescriptCurrInstr -_0802D9B4: - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - adds r2, r4, 0 - bl HandleSetPokedexFlag - ldr r1, _0802D9D4 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] -_0802D9CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802D9D4: .4byte gBattlescriptCurrInstr - thumb_func_end atkF1_trysetcaughtmondexflags - - thumb_func_start atkF2_displaydexinfo -atkF2_displaydexinfo: @ 802D9D8 - push {r4,r5,lr} - sub sp, 0x18 - ldr r0, _0802DA00 @ =gEnemyParty - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _0802DA04 @ =gBattleCommunication - ldrb r0, [r0] - cmp r0, 0x5 - bls _0802D9F4 - b _0802DB6C -_0802D9F4: - lsls r0, 2 - ldr r1, _0802DA08 @ =_0802DA0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802DA00: .4byte gEnemyParty -_0802DA04: .4byte gBattleCommunication -_0802DA08: .4byte _0802DA0C - .align 2, 0 -_0802DA0C: - .4byte _0802DA24 - .4byte _0802DA3C - .4byte _0802DA64 - .4byte _0802DAC8 - .4byte _0802DAE0 - .4byte _0802DB58 -_0802DA24: - movs r0, 0x1 - negs r0, r0 - ldr r1, _0802DA38 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0802DB34 - .align 2, 0 -_0802DA38: .4byte 0x00007fff -_0802DA3C: - ldr r0, _0802DA5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802DA4A - b _0802DB6C -_0802DA4A: - bl FreeAllWindowBuffers - adds r0, r5, 0 - bl sub_8106B60 - ldr r1, _0802DA60 @ =gBattleCommunication - strb r0, [r1, 0x1] - b _0802DB36 - .align 2, 0 -_0802DA5C: .4byte gPaletteFade -_0802DA60: .4byte gBattleCommunication -_0802DA64: - ldr r0, _0802DAAC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802DA72 - b _0802DB6C -_0802DA72: - ldr r0, _0802DAB0 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802DAB4 @ =BattleMainCB2 - cmp r1, r0 - bne _0802DB6C - ldr r2, _0802DAB8 @ =gTasks - ldr r4, _0802DABC @ =gBattleCommunication - ldrb r1, [r4, 0x1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _0802DB6C - str r0, [sp, 0x10] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0802DAC0 @ =0x05006000 - add r0, sp, 0x10 - bl CpuSet - ldr r0, _0802DAC4 @ =VBlankCB_Battle - bl SetVBlankCallback - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0802DB6C - .align 2, 0 -_0802DAAC: .4byte gPaletteFade -_0802DAB0: .4byte gMain -_0802DAB4: .4byte BattleMainCB2 -_0802DAB8: .4byte gTasks -_0802DABC: .4byte gBattleCommunication -_0802DAC0: .4byte 0x05006000 -_0802DAC4: .4byte VBlankCB_Battle -_0802DAC8: - bl sub_800F34C - bl LoadBattleTextboxAndBackground - ldr r1, _0802DADC @ =gBattle_BG3_X - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - b _0802DB34 - .align 2, 0 -_0802DADC: .4byte gBattle_BG3_X -_0802DAE0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0802DB6C - ldr r0, _0802DB40 @ =gBattleMons - adds r1, r0, 0 - adds r1, 0xAC - ldr r1, [r1] - adds r0, 0xA0 - ldr r2, [r0] - movs r0, 0x78 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - ldr r0, _0802DB44 @ =0x0000ffff - str r0, [sp, 0xC] - adds r0, r5, 0 - movs r3, 0x1 - bl CreateMonPicSprite_HandleDeoxys - str r4, [sp, 0x14] - add r0, sp, 0x14 - ldr r1, _0802DB48 @ =gPlttBufferFaded - ldr r2, _0802DB4C @ =0x05000080 - bl CpuSet - ldr r0, _0802DB50 @ =0x0001ffff - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg -_0802DB34: - ldr r1, _0802DB54 @ =gBattleCommunication -_0802DB36: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0802DB6C - .align 2, 0 -_0802DB40: .4byte gBattleMons -_0802DB44: .4byte 0x0000ffff -_0802DB48: .4byte gPlttBufferFaded -_0802DB4C: .4byte 0x05000080 -_0802DB50: .4byte 0x0001ffff -_0802DB54: .4byte gBattleCommunication -_0802DB58: - ldr r0, _0802DB74 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DB6C - ldr r1, _0802DB78 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0802DB6C: - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802DB74: .4byte gPaletteFade -_0802DB78: .4byte gBattlescriptCurrInstr - thumb_func_end atkF2_displaydexinfo - - thumb_func_start HandleBattleWindow -HandleBattleWindow: @ 802DB7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, [sp, 0x40] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x10] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x14] - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - movs r1, 0 - add r0, sp, 0xC - strh r1, [r0] - ldr r6, [sp, 0x10] - cmp r6, r3 - ble _0802DBB6 - b _0802DCA2 -_0802DBB6: - mov r4, r8 - adds r0, r6, 0x1 - str r0, [sp, 0x18] - ldr r2, [sp, 0x1C] - cmp r4, r2 - bgt _0802DC98 - add r5, sp, 0xC - lsls r7, r6, 24 - mov r9, r7 -_0802DBC8: - ldr r0, [sp, 0x10] - cmp r6, r0 - bne _0802DBF4 - cmp r4, r8 - bne _0802DBDC - ldr r0, _0802DBD8 @ =0x00001022 - b _0802DC3E - .align 2, 0 -_0802DBD8: .4byte 0x00001022 -_0802DBDC: - ldr r2, [sp, 0x1C] - cmp r4, r2 - bne _0802DBEC - ldr r0, _0802DBE8 @ =0x00001024 - b _0802DC3E - .align 2, 0 -_0802DBE8: .4byte 0x00001024 -_0802DBEC: - ldr r0, _0802DBF0 @ =0x00001023 - b _0802DC3E - .align 2, 0 -_0802DBF0: .4byte 0x00001023 -_0802DBF4: - ldr r7, [sp, 0x14] - cmp r6, r7 - bne _0802DC20 - cmp r4, r8 - bne _0802DC08 - ldr r0, _0802DC04 @ =0x00001028 - b _0802DC3E - .align 2, 0 -_0802DC04: .4byte 0x00001028 -_0802DC08: - ldr r0, [sp, 0x1C] - cmp r4, r0 - bne _0802DC18 - ldr r0, _0802DC14 @ =0x0000102a - b _0802DC3E - .align 2, 0 -_0802DC14: .4byte 0x0000102a -_0802DC18: - ldr r0, _0802DC1C @ =0x00001029 - b _0802DC3E - .align 2, 0 -_0802DC1C: .4byte 0x00001029 -_0802DC20: - cmp r4, r8 - bne _0802DC2C - ldr r0, _0802DC28 @ =0x00001025 - b _0802DC3E - .align 2, 0 -_0802DC28: .4byte 0x00001025 -_0802DC2C: - ldr r2, [sp, 0x1C] - cmp r4, r2 - bne _0802DC3C - ldr r0, _0802DC38 @ =0x00001027 - b _0802DC3E - .align 2, 0 -_0802DC38: .4byte 0x00001027 -_0802DC3C: - ldr r0, _0802DC74 @ =0x00001026 -_0802DC3E: - strh r0, [r5] - movs r1, 0x1 - mov r0, r10 - ands r0, r1 - cmp r0, 0 - beq _0802DC4E - movs r0, 0 - strh r0, [r5] -_0802DC4E: - movs r0, 0x80 - mov r7, r10 - ands r0, r7 - cmp r0, 0 - beq _0802DC78 - lsls r2, r4, 24 - lsrs r2, 24 - str r1, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x1 - add r1, sp, 0xC - mov r7, r9 - lsrs r3, r7, 24 - bl CopyToBgTilemapBufferRect_ChangePalette - b _0802DC90 - .align 2, 0 -_0802DC74: .4byte 0x00001026 -_0802DC78: - lsls r2, r4, 24 - lsrs r2, 24 - str r1, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - mov r7, r9 - lsrs r3, r7, 24 - bl CopyToBgTilemapBufferRect_ChangePalette -_0802DC90: - adds r4, 0x1 - ldr r0, [sp, 0x1C] - cmp r4, r0 - ble _0802DBC8 -_0802DC98: - ldr r6, [sp, 0x18] - ldr r2, [sp, 0x14] - cmp r6, r2 - bgt _0802DCA2 - b _0802DBB6 -_0802DCA2: - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end HandleBattleWindow - - thumb_func_start BattleCreateYesNoCursorAt -BattleCreateYesNoCursorAt: @ 802DCB8 - push {lr} - sub sp, 0x10 - add r0, sp, 0xC - movs r2, 0x1 - strh r2, [r0] - movs r1, 0x2 - strh r1, [r0, 0x2] - ldr r0, _0802DCF4 @ =gBattleCommunication - ldrb r3, [r0, 0x1] - lsls r3, 25 - movs r0, 0x90 - lsls r0, 20 - adds r3, r0 - lsrs r3, 24 - str r2, [sp] - str r1, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - movs r2, 0x18 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0802DCF4: .4byte gBattleCommunication - thumb_func_end BattleCreateYesNoCursorAt - - thumb_func_start BattleDestroyYesNoCursorAt -BattleDestroyYesNoCursorAt: @ 802DCF8 - push {lr} - sub sp, 0x10 - add r0, sp, 0xC - movs r1, 0x20 - strh r1, [r0] - strh r1, [r0, 0x2] - ldr r0, _0802DD34 @ =gBattleCommunication - ldrb r3, [r0, 0x1] - lsls r3, 25 - movs r0, 0x90 - lsls r0, 20 - adds r3, r0 - lsrs r3, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - add r1, sp, 0xC - movs r2, 0x18 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0802DD34: .4byte gBattleCommunication - thumb_func_end BattleDestroyYesNoCursorAt - - thumb_func_start atkF3_trygivecaughtmonnick -atkF3_trygivecaughtmonnick: @ 802DD38 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _0802DD5C @ =gBattleCommunication - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x4 - bls _0802DD50 - b _0802DFA6 -_0802DD50: - lsls r0, r1, 2 - ldr r1, _0802DD60 @ =_0802DD64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802DD5C: .4byte gBattleCommunication -_0802DD60: .4byte _0802DD64 - .align 2, 0 -_0802DD64: - .4byte _0802DD78 - .4byte _0802DDA8 - .4byte _0802DE40 - .4byte _0802DF18 - .4byte _0802DF70 -_0802DD78: - movs r4, 0 - str r4, [sp] - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl HandleBattleWindow - ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice - movs r1, 0xE - bl BattlePutTextOnWindow - ldr r1, _0802DDA4 @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - strb r4, [r1, 0x1] - bl BattleCreateYesNoCursorAt - b _0802DFA6 - .align 2, 0 -_0802DDA0: .4byte gText_BattleYesNoChoice -_0802DDA4: .4byte gBattleCommunication -_0802DDA8: - ldr r0, _0802DE1C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802DDCC - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0802DDCC - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_0802DDCC: - ldr r0, _0802DE1C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802DDF2 - ldr r4, _0802DE20 @ =gBattleCommunication - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _0802DDF2 - movs r0, 0x5 - bl PlaySE - bl BattleDestroyYesNoCursorAt - movs r0, 0x1 - strb r0, [r4, 0x1] - bl BattleCreateYesNoCursorAt -_0802DDF2: - ldr r0, _0802DE1C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0802DE24 - movs r0, 0x5 - bl PlaySE - ldr r1, _0802DE20 @ =gBattleCommunication - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0802DE36 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x3 - bl BeginFastPaletteFade - b _0802DFA6 - .align 2, 0 -_0802DE1C: .4byte gMain -_0802DE20: .4byte gBattleCommunication -_0802DE24: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0802DE2E - b _0802DFA6 -_0802DE2E: - movs r0, 0x5 - bl PlaySE - ldr r1, _0802DE3C @ =gBattleCommunication -_0802DE36: - movs r0, 0x4 - strb r0, [r1] - b _0802DFA6 - .align 2, 0 -_0802DE3C: .4byte gBattleCommunication -_0802DE40: - ldr r0, _0802DEFC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0802DE4E - b _0802DFA6 -_0802DE4E: - ldr r7, _0802DF00 @ =gBattlerPartyIndexes - ldr r0, _0802DF04 @ =gBattlerAttacker - mov r10, r0 - ldrb r0, [r0] - movs r4, 0x1 - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x64 - mov r9, r1 - mov r2, r9 - muls r2, r0 - adds r0, r2, 0 - ldr r1, _0802DF08 @ =gEnemyParty - mov r8, r1 - add r0, r8 - ldr r1, _0802DF0C @ =gBattleStruct - ldr r2, [r1] - adds r2, 0x6D - movs r1, 0x2 - bl GetMonData - bl FreeAllWindowBuffers - mov r2, r10 - ldrb r0, [r2] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0xB - bl GetMonData - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - mov r2, r10 - ldrb r0, [r2] - eors r0, r4 - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - bl GetMonGender - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - mov r2, r10 - ldrb r0, [r2] - eors r4, r0 - lsls r4, 1 - adds r4, r7 - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0 - movs r2, 0 - bl GetMonData - ldr r2, _0802DF0C @ =gBattleStruct - ldr r1, [r2] - adds r1, 0x6D - str r0, [sp] - ldr r0, _0802DF10 @ =BattleMainCB2 - str r0, [sp, 0x4] - movs r0, 0x2 - adds r2, r6, 0 - adds r3, r5, 0 - bl DoNamingScreen - ldr r1, _0802DF14 @ =gBattleCommunication - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0802DFA6 - .align 2, 0 -_0802DEFC: .4byte gPaletteFade -_0802DF00: .4byte gBattlerPartyIndexes -_0802DF04: .4byte gBattlerAttacker -_0802DF08: .4byte gEnemyParty -_0802DF0C: .4byte gBattleStruct -_0802DF10: .4byte BattleMainCB2 -_0802DF14: .4byte gBattleCommunication -_0802DF18: - ldr r0, _0802DF54 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0802DF58 @ =BattleMainCB2 - cmp r1, r0 - bne _0802DFA6 - ldr r0, _0802DF5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0802DFA6 - ldr r2, _0802DF60 @ =gBattlerPartyIndexes - ldr r0, _0802DF64 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x1 - eors r0, r1 - lsls r0, 1 - adds r0, r2 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0802DF68 @ =gEnemyParty - adds r0, r1 - ldr r1, _0802DF6C @ =gBattleStruct - ldr r2, [r1] - adds r2, 0x6D - movs r1, 0x2 - bl SetMonData - b _0802DF8C - .align 2, 0 -_0802DF54: .4byte gMain -_0802DF58: .4byte BattleMainCB2 -_0802DF5C: .4byte gPaletteFade -_0802DF60: .4byte gBattlerPartyIndexes -_0802DF64: .4byte gBattlerAttacker -_0802DF68: .4byte gEnemyParty -_0802DF6C: .4byte gBattleStruct -_0802DF70: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0802DF8C - ldr r1, _0802DF88 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x5 - str r0, [r1] - b _0802DFA6 - .align 2, 0 -_0802DF88: .4byte gBattlescriptCurrInstr -_0802DF8C: - ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr - ldr r2, [r3] - ldrb r1, [r2, 0x1] - ldrb r0, [r2, 0x2] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r2, 0x4] - lsls r0, 24 - orrs r1, r0 - str r1, [r3] -_0802DFA6: - 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 -_0802DFB8: .4byte gBattlescriptCurrInstr - thumb_func_end atkF3_trygivecaughtmonnick - - thumb_func_start atkF4_subattackerhpbydmg -atkF4_subattackerhpbydmg: @ 802DFBC - ldr r2, _0802DFDC @ =gBattleMons - ldr r0, _0802DFE0 @ =gBattlerAttacker - ldrb r1, [r0] - movs r0, 0x58 - muls r1, r0 - adds r1, r2 - ldr r0, _0802DFE4 @ =gBattleMoveDamage - ldr r2, [r0] - ldrh r0, [r1, 0x28] - subs r0, r2 - strh r0, [r1, 0x28] - ldr r1, _0802DFE8 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802DFDC: .4byte gBattleMons -_0802DFE0: .4byte gBattlerAttacker -_0802DFE4: .4byte gBattleMoveDamage -_0802DFE8: .4byte gBattlescriptCurrInstr - thumb_func_end atkF4_subattackerhpbydmg - - thumb_func_start atkF5_removeattackerstatus1 -atkF5_removeattackerstatus1: @ 802DFEC - ldr r1, _0802E008 @ =gBattleMons - ldr r0, _0802E00C @ =gBattlerAttacker - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldr r1, _0802E010 @ =gBattlescriptCurrInstr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bx lr - .align 2, 0 -_0802E008: .4byte gBattleMons -_0802E00C: .4byte gBattlerAttacker -_0802E010: .4byte gBattlescriptCurrInstr - thumb_func_end atkF5_removeattackerstatus1 - - thumb_func_start atkF6_finishaction -atkF6_finishaction: @ 802E014 - ldr r1, _0802E01C @ =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] - bx lr - .align 2, 0 -_0802E01C: .4byte gCurrentActionFuncId - thumb_func_end atkF6_finishaction - - thumb_func_start atkF7_finishturn -atkF7_finishturn: @ 802E020 - ldr r1, _0802E030 @ =gCurrentActionFuncId - movs r0, 0xC - strb r0, [r1] - ldr r1, _0802E034 @ =gCurrentTurnActionNumber - ldr r0, _0802E038 @ =gBattlersCount - ldrb r0, [r0] - strb r0, [r1] - bx lr - .align 2, 0 -_0802E030: .4byte gCurrentActionFuncId -_0802E034: .4byte gCurrentTurnActionNumber -_0802E038: .4byte gBattlersCount - thumb_func_end atkF7_finishturn - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle.h b/include/battle.h index 2420a406c..1f7fc5bf6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -9,6 +9,7 @@ #include "battle_ai_switch_items.h" #include "battle_gfx_sfx_util.h" #include "battle_util2.h" +#include "battle_bg.h" /* Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. diff --git a/include/battle_bg.h b/include/battle_bg.h new file mode 100644 index 000000000..6bf90a104 --- /dev/null +++ b/include/battle_bg.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_BG_H +#define GUARD_BATTLE_BG_H + +void sub_800F34C(void); + +#endif // GUARD_BATTLE_BG_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 4ed292e04..3ee67eac8 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -77,6 +77,7 @@ enum #define BALL_3_SHAKES_FAIL 3 #define BALL_3_SHAKES_SUCCESS 4 #define BALL_TRAINER_BLOCK 5 +#define BALL_GHOST_DODGE 6 #define RET_VALUE_LEVELLED_UP 11 diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d45675ff8..3f2699064 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -34,19 +34,18 @@ #define WINDOW_CLEAR 0x1 #define WINDOW_x80 0x80 -void AI_CalcDmg(u8 bankAtk, u8 bankDef); -u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); -u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); -u8 GetBattlerTurnOrderNum(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); -void BattleDestroyYesNoCursorAt(void); -void BattleCreateYesNoCursorAt(void); -void BufferMoveToLearnIntoBattleTextBuff2(void); -void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); -bool8 UproarWakeUpCheck(u8 bank); +bool8 UproarWakeUpCheck(u8 battlerId); +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); +u8 TypeCalc(u16 move, u8 attacker, u8 defender); +void AI_CalcDmg(u8 attacker, u8 defender); bool32 IsMonGettingExpSentOut(void); +void BattleCreateYesNoCursorAt(void); +void BattleDestroyYesNoCursorAt(void); +void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); +u8 GetBattlerTurnOrderNum(u8 battlerId); +void BufferMoveToLearnIntoBattleTextBuff2(void); extern void (* const gBattleScriptingCommandsTable[])(void); -extern const u8 gUnknown_0831C494[][4]; #endif // GUARD_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 769c4a84a..a13a8c097 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -225,5 +225,7 @@ extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; +extern const u8 BattleScript_GhostBallDodge[]; +extern const u8 gUnknown_81D9A88[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/field_specials.h b/include/field_specials.h index a82cb20a2..9a85a8b49 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -13,5 +13,6 @@ void nullsub_61(void); u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); +bool8 sub_80CC7B4(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/overworld.h b/include/overworld.h index ea877730e..8f15f5a85 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -119,5 +119,6 @@ bool8 is_light_level_8_or_9(u8 mapType); bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); +u8 GetCurrentMapType(void); #endif //GUARD_ROM4_H diff --git a/include/pokedex.h b/include/pokedex.h index 718d2e853..a08d4ed26 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -45,4 +45,6 @@ u16 GetNationalPokedexCount(u8); u16 sub_80C0844(u8); u16 GetKantoPokedexCount(u8); +u32 sub_8106B60(u16 species); + #endif // GUARD_POKEDEX_H diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 2a520715f..833268d48 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -14,5 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); +u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/ld_script.txt b/ld_script.txt index 77e31190e..a4cd0d557 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -69,7 +69,6 @@ SECTIONS { asm/battle_2.o(.text); src/battle_util.o(.text); src/battle_script_commands.o(.text); - asm/battle_script_commands.o(.text); src/battle_util2.o(.text); src/battle_controller_player.o(.text); src/battle_gfx_sfx_util.o(.text); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fb4681158..ac8b87ace 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -25,6 +25,7 @@ #include "naming_screen.h" #include "overworld.h" #include "party_menu.h" +#include "trainer_pokemon_sprites.h" #include "field_specials.h" #include "battle.h" #include "battle_message.h" @@ -58,270 +59,269 @@ struct StatFractions extern const u8 *const gBattleScriptsForMoveEffects[]; -bool8 IsTwoTurnsMove(u16 move); -void TrySetDestinyBondToHappen(void); -u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. -void CheckWonderGuardAndLevitate(void); -u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr); -bool32 IsMonGettingExpSentOut(void); -void sub_8026480(void); -bool8 sub_80264D0(void); -void DrawLevelUpWindow1(void); -void DrawLevelUpWindow2(void); -bool8 sub_8026648(void); -void PutMonIconOnLvlUpBox(void); -void PutLevelAndGenderOnLvlUpBox(void); +static bool8 IsTwoTurnsMove(u16 move); +static void TrySetDestinyBondToHappen(void); +static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. +static void CheckWonderGuardAndLevitate(void); +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr); +static void sub_8026480(void); +static bool8 sub_80264D0(void); +static void DrawLevelUpWindow1(void); +static void DrawLevelUpWindow2(void); +static bool8 sub_8026648(void); +static void PutMonIconOnLvlUpBox(void); +static void PutLevelAndGenderOnLvlUpBox(void); -void SpriteCB_MonIconOnLvlUpBox(struct Sprite *sprite); +static void SpriteCB_MonIconOnLvlUpBox(struct Sprite *sprite); -void atk00_attackcanceler(void); -void atk01_accuracycheck(void); -void atk02_attackstring(void); -void atk03_ppreduce(void); -void atk04_critcalc(void); -void atk05_damagecalc(void); -void atk06_typecalc(void); -void atk07_adjustnormaldamage(void); -void atk08_adjustnormaldamage2(void); -void atk09_attackanimation(void); -void atk0A_waitanimation(void); -void atk0B_healthbarupdate(void); -void atk0C_datahpupdate(void); -void atk0D_critmessage(void); -void atk0E_effectivenesssound(void); -void atk0F_resultmessage(void); -void atk10_printstring(void); -void atk11_printselectionstring(void); -void atk12_waitmessage(void); -void atk13_printfromtable(void); -void atk14_printselectionstringfromtable(void); -void atk15_seteffectwithchance(void); -void atk16_seteffectprimary(void); -void atk17_seteffectsecondary(void); -void atk18_clearstatusfromeffect(void); -void atk19_tryfaintmon(void); -void atk1A_dofaintanimation(void); -void atk1B_cleareffectsonfaint(void); -void atk1C_jumpifstatus(void); -void atk1D_jumpifstatus2(void); -void atk1E_jumpifability(void); -void atk1F_jumpifsideaffecting(void); -void atk20_jumpifstat(void); -void atk21_jumpifstatus3condition(void); -void atk22_jumpiftype(void); -void atk23_getexp(void); -void atk24(void); -void atk25_movevaluescleanup(void); -void atk26_setmultihit(void); -void atk27_decrementmultihit(void); -void atk28_goto(void); -void atk29_jumpifbyte(void); -void atk2A_jumpifhalfword(void); -void atk2B_jumpifword(void); -void atk2C_jumpifarrayequal(void); -void atk2D_jumpifarraynotequal(void); -void atk2E_setbyte(void); -void atk2F_addbyte(void); -void atk30_subbyte(void); -void atk31_copyarray(void); -void atk32_copyarraywithindex(void); -void atk33_orbyte(void); -void atk34_orhalfword(void); -void atk35_orword(void); -void atk36_bicbyte(void); -void atk37_bichalfword(void); -void atk38_bicword(void); -void atk39_pause(void); -void atk3A_waitstate(void); -void atk3B_healthbar_update(void); -void atk3C_return(void); -void atk3D_end(void); -void atk3E_end2(void); -void atk3F_end3(void); -void atk40_jumpifaffectedbyprotect(void); -void atk41_call(void); -void atk42_jumpiftype2(void); -void atk43_jumpifabilitypresent(void); -void atk44_endselectionscript(void); -void atk45_playanimation(void); -void atk46_playanimation2(void); -void atk47_setgraphicalstatchangevalues(void); -void atk48_playstatchangeanimation(void); -void atk49_moveend(void); -void atk4A_typecalc2(void); -void atk4B_returnatktoball(void); -void atk4C_getswitchedmondata(void); -void atk4D_switchindataupdate(void); -void atk4E_switchinanim(void); -void atk4F_jumpifcantswitch(void); -void atk50_openpartyscreen(void); -void atk51_switchhandleorder(void); -void atk52_switchineffects(void); -void atk53_trainerslidein(void); -void atk54_playse(void); -void atk55_fanfare(void); -void atk56_playfaintcry(void); -void atk57(void); -void atk58_returntoball(void); -void atk59_handlelearnnewmove(void); -void atk5A_yesnoboxlearnmove(void); -void atk5B_yesnoboxstoplearningmove(void); -void atk5C_hitanimation(void); -void atk5D_getmoneyreward(void); -void atk5E(void); -void atk5F_swapattackerwithtarget(void); -void atk60_incrementgamestat(void); -void atk61_drawpartystatussummary(void); -void atk62_hidepartystatussummary(void); -void atk63_jumptocalledmove(void); -void atk64_statusanimation(void); -void atk65_status2animation(void); -void atk66_chosenstatusanimation(void); -void atk67_yesnobox(void); -void atk68_cancelallactions(void); -void atk69_adjustsetdamage(void); -void atk6A_removeitem(void); -void atk6B_atknameinbuff1(void); -void atk6C_drawlvlupbox(void); -void atk6D_resetsentmonsvalue(void); -void atk6E_setatktoplayer0(void); -void atk6F_makevisible(void); -void atk70_recordlastability(void); -void atk71_buffermovetolearn(void); -void atk72_jumpifplayerran(void); -void atk73_hpthresholds(void); -void atk74_hpthresholds2(void); -void atk75_useitemonopponent(void); -void atk76_various(void); -void atk77_setprotectlike(void); -void atk78_faintifabilitynotdamp(void); -void atk79_setatkhptozero(void); -void atk7A_jumpifnexttargetvalid(void); -void atk7B_tryhealhalfhealth(void); -void atk7C_trymirrormove(void); -void atk7D_setrain(void); -void atk7E_setreflect(void); -void atk7F_setseeded(void); -void atk80_manipulatedamage(void); -void atk81_trysetrest(void); -void atk82_jumpifnotfirstturn(void); -void atk83_nop(void); -void atk84_jumpifcantmakeasleep(void); -void atk85_stockpile(void); -void atk86_stockpiletobasedamage(void); -void atk87_stockpiletohpheal(void); -void atk88_negativedamage(void); -void atk89_statbuffchange(void); -void atk8A_normalisebuffs(void); -void atk8B_setbide(void); -void atk8C_confuseifrepeatingattackends(void); -void atk8D_setmultihitcounter(void); -void atk8E_initmultihitstring(void); -void atk8F_forcerandomswitch(void); -void atk90_tryconversiontypechange(void); -void atk91_givepaydaymoney(void); -void atk92_setlightscreen(void); -void atk93_tryKO(void); -void atk94_damagetohalftargethp(void); -void atk95_setsandstorm(void); -void atk96_weatherdamage(void); -void atk97_tryinfatuating(void); -void atk98_updatestatusicon(void); -void atk99_setmist(void); -void atk9A_setfocusenergy(void); -void atk9B_transformdataexecution(void); -void atk9C_setsubstitute(void); -void atk9D_mimicattackcopy(void); -void atk9E_metronome(void); -void atk9F_dmgtolevel(void); -void atkA0_psywavedamageeffect(void); -void atkA1_counterdamagecalculator(void); -void atkA2_mirrorcoatdamagecalculator(void); -void atkA3_disablelastusedattack(void); -void atkA4_trysetencore(void); -void atkA5_painsplitdmgcalc(void); -void atkA6_settypetorandomresistance(void); -void atkA7_setalwayshitflag(void); -void atkA8_copymovepermanently(void); -void atkA9_trychoosesleeptalkmove(void); -void atkAA_setdestinybond(void); -void atkAB_trysetdestinybondtohappen(void); -void atkAC_remaininghptopower(void); -void atkAD_tryspiteppreduce(void); -void atkAE_healpartystatus(void); -void atkAF_cursetarget(void); -void atkB0_trysetspikes(void); -void atkB1_setforesight(void); -void atkB2_trysetperishsong(void); -void atkB3_rolloutdamagecalculation(void); -void atkB4_jumpifconfusedandstatmaxed(void); -void atkB5_furycuttercalc(void); -void atkB6_happinesstodamagecalculation(void); -void atkB7_presentdamagecalculation(void); -void atkB8_setsafeguard(void); -void atkB9_magnitudedamagecalculation(void); -void atkBA_jumpifnopursuitswitchdmg(void); -void atkBB_setsunny(void); -void atkBC_maxattackhalvehp(void); -void atkBD_copyfoestats(void); -void atkBE_rapidspinfree(void); -void atkBF_setdefensecurlbit(void); -void atkC0_recoverbasedonsunlight(void); -void atkC1_hiddenpowercalc(void); -void atkC2_selectfirstvalidtarget(void); -void atkC3_trysetfutureattack(void); -void atkC4_trydobeatup(void); -void atkC5_setsemiinvulnerablebit(void); -void atkC6_clearsemiinvulnerablebit(void); -void atkC7_setminimize(void); -void atkC8_sethail(void); -void atkC9_jumpifattackandspecialattackcannotfall(void); -void atkCA_setforcedtarget(void); -void atkCB_setcharge(void); -void atkCC_callterrainattack(void); -void atkCD_cureifburnedparalysedorpoisoned(void); -void atkCE_settorment(void); -void atkCF_jumpifnodamage(void); -void atkD0_settaunt(void); -void atkD1_trysethelpinghand(void); -void atkD2_tryswapitems(void); -void atkD3_trycopyability(void); -void atkD4_trywish(void); -void atkD5_trysetroots(void); -void atkD6_doubledamagedealtifdamaged(void); -void atkD7_setyawn(void); -void atkD8_setdamagetohealthdifference(void); -void atkD9_scaledamagebyhealthratio(void); -void atkDA_tryswapabilities(void); -void atkDB_tryimprison(void); -void atkDC_trysetgrudge(void); -void atkDD_weightdamagecalculation(void); -void atkDE_assistattackselect(void); -void atkDF_trysetmagiccoat(void); -void atkE0_trysetsnatch(void); -void atkE1_trygetintimidatetarget(void); -void atkE2_switchoutabilities(void); -void atkE3_jumpifhasnohp(void); -void atkE4_getsecretpowereffect(void); -void atkE5_pickup(void); -void atkE6_docastformchangeanimation(void); -void atkE7_trycastformdatachange(void); -void atkE8_settypebasedhalvers(void); -void atkE9_setweatherballtype(void); -void atkEA_tryrecycleitem(void); -void atkEB_settypetoterrain(void); -void atkEC_pursuitrelated(void); -void atkED_snatchsetbattlers(void); -void atkEE_removelightscreenreflect(void); -void atkEF_handleballthrow(void); -void atkF0_givecaughtmon(void); -void atkF1_trysetcaughtmondexflags(void); -void atkF2_displaydexinfo(void); -void atkF3_trygivecaughtmonnick(void); -void atkF4_subattackerhpbydmg(void); -void atkF5_removeattackerstatus1(void); -void atkF6_finishaction(void); -void atkF7_finishturn(void); +static void atk00_attackcanceler(void); +static void atk01_accuracycheck(void); +static void atk02_attackstring(void); +static void atk03_ppreduce(void); +static void atk04_critcalc(void); +static void atk05_damagecalc(void); +static void atk06_typecalc(void); +static void atk07_adjustnormaldamage(void); +static void atk08_adjustnormaldamage2(void); +static void atk09_attackanimation(void); +static void atk0A_waitanimation(void); +static void atk0B_healthbarupdate(void); +static void atk0C_datahpupdate(void); +static void atk0D_critmessage(void); +static void atk0E_effectivenesssound(void); +static void atk0F_resultmessage(void); +static void atk10_printstring(void); +static void atk11_printselectionstring(void); +static void atk12_waitmessage(void); +static void atk13_printfromtable(void); +static void atk14_printselectionstringfromtable(void); +static void atk15_seteffectwithchance(void); +static void atk16_seteffectprimary(void); +static void atk17_seteffectsecondary(void); +static void atk18_clearstatusfromeffect(void); +static void atk19_tryfaintmon(void); +static void atk1A_dofaintanimation(void); +static void atk1B_cleareffectsonfaint(void); +static void atk1C_jumpifstatus(void); +static void atk1D_jumpifstatus2(void); +static void atk1E_jumpifability(void); +static void atk1F_jumpifsideaffecting(void); +static void atk20_jumpifstat(void); +static void atk21_jumpifstatus3condition(void); +static void atk22_jumpiftype(void); +static void atk23_getexp(void); +static void atk24(void); +static void atk25_movevaluescleanup(void); +static void atk26_setmultihit(void); +static void atk27_decrementmultihit(void); +static void atk28_goto(void); +static void atk29_jumpifbyte(void); +static void atk2A_jumpifhalfword(void); +static void atk2B_jumpifword(void); +static void atk2C_jumpifarrayequal(void); +static void atk2D_jumpifarraynotequal(void); +static void atk2E_setbyte(void); +static void atk2F_addbyte(void); +static void atk30_subbyte(void); +static void atk31_copyarray(void); +static void atk32_copyarraywithindex(void); +static void atk33_orbyte(void); +static void atk34_orhalfword(void); +static void atk35_orword(void); +static void atk36_bicbyte(void); +static void atk37_bichalfword(void); +static void atk38_bicword(void); +static void atk39_pause(void); +static void atk3A_waitstate(void); +static void atk3B_healthbar_update(void); +static void atk3C_return(void); +static void atk3D_end(void); +static void atk3E_end2(void); +static void atk3F_end3(void); +static void atk40_jumpifaffectedbyprotect(void); +static void atk41_call(void); +static void atk42_jumpiftype2(void); +static void atk43_jumpifabilitypresent(void); +static void atk44_endselectionscript(void); +static void atk45_playanimation(void); +static void atk46_playanimation2(void); +static void atk47_setgraphicalstatchangevalues(void); +static void atk48_playstatchangeanimation(void); +static void atk49_moveend(void); +static void atk4A_typecalc2(void); +static void atk4B_returnatktoball(void); +static void atk4C_getswitchedmondata(void); +static void atk4D_switchindataupdate(void); +static void atk4E_switchinanim(void); +static void atk4F_jumpifcantswitch(void); +static void atk50_openpartyscreen(void); +static void atk51_switchhandleorder(void); +static void atk52_switchineffects(void); +static void atk53_trainerslidein(void); +static void atk54_playse(void); +static void atk55_fanfare(void); +static void atk56_playfaintcry(void); +static void atk57(void); +static void atk58_returntoball(void); +static void atk59_handlelearnnewmove(void); +static void atk5A_yesnoboxlearnmove(void); +static void atk5B_yesnoboxstoplearningmove(void); +static void atk5C_hitanimation(void); +static void atk5D_getmoneyreward(void); +static void atk5E(void); +static void atk5F_swapattackerwithtarget(void); +static void atk60_incrementgamestat(void); +static void atk61_drawpartystatussummary(void); +static void atk62_hidepartystatussummary(void); +static void atk63_jumptocalledmove(void); +static void atk64_statusanimation(void); +static void atk65_status2animation(void); +static void atk66_chosenstatusanimation(void); +static void atk67_yesnobox(void); +static void atk68_cancelallactions(void); +static void atk69_adjustsetdamage(void); +static void atk6A_removeitem(void); +static void atk6B_atknameinbuff1(void); +static void atk6C_drawlvlupbox(void); +static void atk6D_resetsentmonsvalue(void); +static void atk6E_setatktoplayer0(void); +static void atk6F_makevisible(void); +static void atk70_recordlastability(void); +static void atk71_buffermovetolearn(void); +static void atk72_jumpifplayerran(void); +static void atk73_hpthresholds(void); +static void atk74_hpthresholds2(void); +static void atk75_useitemonopponent(void); +static void atk76_various(void); +static void atk77_setprotectlike(void); +static void atk78_faintifabilitynotdamp(void); +static void atk79_setatkhptozero(void); +static void atk7A_jumpifnexttargetvalid(void); +static void atk7B_tryhealhalfhealth(void); +static void atk7C_trymirrormove(void); +static void atk7D_setrain(void); +static void atk7E_setreflect(void); +static void atk7F_setseeded(void); +static void atk80_manipulatedamage(void); +static void atk81_trysetrest(void); +static void atk82_jumpifnotfirstturn(void); +static void atk83_nop(void); +static void atk84_jumpifcantmakeasleep(void); +static void atk85_stockpile(void); +static void atk86_stockpiletobasedamage(void); +static void atk87_stockpiletohpheal(void); +static void atk88_negativedamage(void); +static void atk89_statbuffchange(void); +static void atk8A_normalisebuffs(void); +static void atk8B_setbide(void); +static void atk8C_confuseifrepeatingattackends(void); +static void atk8D_setmultihitcounter(void); +static void atk8E_initmultihitstring(void); +static void atk8F_forcerandomswitch(void); +static void atk90_tryconversiontypechange(void); +static void atk91_givepaydaymoney(void); +static void atk92_setlightscreen(void); +static void atk93_tryKO(void); +static void atk94_damagetohalftargethp(void); +static void atk95_setsandstorm(void); +static void atk96_weatherdamage(void); +static void atk97_tryinfatuating(void); +static void atk98_updatestatusicon(void); +static void atk99_setmist(void); +static void atk9A_setfocusenergy(void); +static void atk9B_transformdataexecution(void); +static void atk9C_setsubstitute(void); +static void atk9D_mimicattackcopy(void); +static void atk9E_metronome(void); +static void atk9F_dmgtolevel(void); +static void atkA0_psywavedamageeffect(void); +static void atkA1_counterdamagecalculator(void); +static void atkA2_mirrorcoatdamagecalculator(void); +static void atkA3_disablelastusedattack(void); +static void atkA4_trysetencore(void); +static void atkA5_painsplitdmgcalc(void); +static void atkA6_settypetorandomresistance(void); +static void atkA7_setalwayshitflag(void); +static void atkA8_copymovepermanently(void); +static void atkA9_trychoosesleeptalkmove(void); +static void atkAA_setdestinybond(void); +static void atkAB_trysetdestinybondtohappen(void); +static void atkAC_remaininghptopower(void); +static void atkAD_tryspiteppreduce(void); +static void atkAE_healpartystatus(void); +static void atkAF_cursetarget(void); +static void atkB0_trysetspikes(void); +static void atkB1_setforesight(void); +static void atkB2_trysetperishsong(void); +static void atkB3_rolloutdamagecalculation(void); +static void atkB4_jumpifconfusedandstatmaxed(void); +static void atkB5_furycuttercalc(void); +static void atkB6_happinesstodamagecalculation(void); +static void atkB7_presentdamagecalculation(void); +static void atkB8_setsafeguard(void); +static void atkB9_magnitudedamagecalculation(void); +static void atkBA_jumpifnopursuitswitchdmg(void); +static void atkBB_setsunny(void); +static void atkBC_maxattackhalvehp(void); +static void atkBD_copyfoestats(void); +static void atkBE_rapidspinfree(void); +static void atkBF_setdefensecurlbit(void); +static void atkC0_recoverbasedonsunlight(void); +static void atkC1_hiddenpowercalc(void); +static void atkC2_selectfirstvalidtarget(void); +static void atkC3_trysetfutureattack(void); +static void atkC4_trydobeatup(void); +static void atkC5_setsemiinvulnerablebit(void); +static void atkC6_clearsemiinvulnerablebit(void); +static void atkC7_setminimize(void); +static void atkC8_sethail(void); +static void atkC9_jumpifattackandspecialattackcannotfall(void); +static void atkCA_setforcedtarget(void); +static void atkCB_setcharge(void); +static void atkCC_callterrainattack(void); +static void atkCD_cureifburnedparalysedorpoisoned(void); +static void atkCE_settorment(void); +static void atkCF_jumpifnodamage(void); +static void atkD0_settaunt(void); +static void atkD1_trysethelpinghand(void); +static void atkD2_tryswapitems(void); +static void atkD3_trycopyability(void); +static void atkD4_trywish(void); +static void atkD5_trysetroots(void); +static void atkD6_doubledamagedealtifdamaged(void); +static void atkD7_setyawn(void); +static void atkD8_setdamagetohealthdifference(void); +static void atkD9_scaledamagebyhealthratio(void); +static void atkDA_tryswapabilities(void); +static void atkDB_tryimprison(void); +static void atkDC_trysetgrudge(void); +static void atkDD_weightdamagecalculation(void); +static void atkDE_assistattackselect(void); +static void atkDF_trysetmagiccoat(void); +static void atkE0_trysetsnatch(void); +static void atkE1_trygetintimidatetarget(void); +static void atkE2_switchoutabilities(void); +static void atkE3_jumpifhasnohp(void); +static void atkE4_getsecretpowereffect(void); +static void atkE5_pickup(void); +static void atkE6_docastformchangeanimation(void); +static void atkE7_trycastformdatachange(void); +static void atkE8_settypebasedhalvers(void); +static void atkE9_setweatherballtype(void); +static void atkEA_tryrecycleitem(void); +static void atkEB_settypetoterrain(void); +static void atkEC_pursuitrelated(void); +static void atkED_snatchsetbattlers(void); +static void atkEE_removelightscreenreflect(void); +static void atkEF_handleballthrow(void); +static void atkF0_givecaughtmon(void); +static void atkF1_trysetcaughtmondexflags(void); +static void atkF2_displaydexinfo(void); +static void atkF3_trygivecaughtmonnick(void); +static void atkF4_subattackerhpbydmg(void); +static void atkF5_removeattackerstatus1(void); +static void atkF6_finishaction(void); +static void atkF7_finishturn(void); void (* const gBattleScriptingCommandsTable[])(void) = { @@ -575,7 +575,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkF7_finishturn, }; -const struct StatFractions sAccuracyStageRatios[] = +static const struct StatFractions sAccuracyStageRatios[] = { { 33, 100 }, // -6 { 36, 100 }, // -5 @@ -593,9 +593,9 @@ const struct StatFractions sAccuracyStageRatios[] = }; // The chance is 1/N for each stage. -const u16 sCriticalHitChance[] = { 16, 8, 4, 3, 2 }; +static const u16 sCriticalHitChance[] = { 16, 8, 4, 3, 2 }; -const u32 sStatusFlagsForMoveEffects[] = +static const u32 sStatusFlagsForMoveEffects[] = { 0x00000000, STATUS1_SLEEP, @@ -659,7 +659,7 @@ const u32 sStatusFlagsForMoveEffects[] = 0x00000000 }; -const u8 *const sMoveEffectBS_Ptrs[] = +static const u8 *const sMoveEffectBS_Ptrs[] = { [0] = BattleScript_MoveEffectSleep, [MOVE_EFFECT_SLEEP] = BattleScript_MoveEffectSleep, @@ -714,8 +714,8 @@ static const struct WindowTemplate sUnusedWinTemplate = .baseBlock = 0x3F, }; -const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); -const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz"); +static const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); +static const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz"); // not used static const u8 sRubyLevelUpStatBoxStats[] = @@ -724,7 +724,7 @@ static const u8 sRubyLevelUpStatBoxStats[] = MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED }; -const struct OamData sOamData_MonIconOnLvlUpBox = +static const struct OamData sOamData_MonIconOnLvlUpBox = { .y = 0, .affineMode = 0, @@ -743,7 +743,7 @@ const struct OamData sOamData_MonIconOnLvlUpBox = #define MON_ICON_LVLUP_BOX_TAG 0xD75A -const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox = +static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox = { .tileTag = MON_ICON_LVLUP_BOX_TAG, .paletteTag = MON_ICON_LVLUP_BOX_TAG, @@ -754,7 +754,7 @@ const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox = .callback = SpriteCB_MonIconOnLvlUpBox }; -const u16 sProtectSuccessRates[] = +static const u16 sProtectSuccessRates[] = { USHRT_MAX, USHRT_MAX / 2, @@ -766,7 +766,7 @@ const u16 sProtectSuccessRates[] = #define METRONOME_FORBIDDEN_END 0xFFFF #define ASSIST_FORBIDDEN_END 0xFFFF -const u16 sMovesForbiddenToCopy[] = +static const u16 sMovesForbiddenToCopy[] = { MOVE_METRONOME, MOVE_STRUGGLE, @@ -790,7 +790,7 @@ const u16 sMovesForbiddenToCopy[] = METRONOME_FORBIDDEN_END }; -const u8 sFlailHpScaleToPowerTable[] = +static const u8 sFlailHpScaleToPowerTable[] = { 1, 200, 4, 150, @@ -800,7 +800,7 @@ const u8 sFlailHpScaleToPowerTable[] = 48, 20 }; -const u16 sNaturePowerMoves[] = +static const u16 sNaturePowerMoves[] = { MOVE_STUN_SPORE, MOVE_RAZOR_LEAF, @@ -814,7 +814,7 @@ const u16 sNaturePowerMoves[] = MOVE_SWIFT }; -const u16 sWeightToDamageTable[] = +static const u16 sWeightToDamageTable[] = { 100, 20, 250, 40, @@ -830,7 +830,7 @@ struct PickupItem u8 chance; }; -const struct PickupItem sPickupItems[] = +static const struct PickupItem sPickupItems[] = { { ITEM_ORAN_BERRY, 15 }, { ITEM_CHERI_BERRY, 25 }, @@ -851,7 +851,7 @@ const struct PickupItem sPickupItems[] = }; -const u8 sTerrainToType[] = +static const u8 sTerrainToType[] = { TYPE_GRASS, // tall grass TYPE_GRASS, // long grass @@ -865,7 +865,7 @@ const u8 sTerrainToType[] = TYPE_NORMAL, // plain }; -const u8 sBallCatchBonuses[] = +static const u8 sBallCatchBonuses[] = { 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; @@ -873,7 +873,7 @@ const u8 sBallCatchBonuses[] = // not used static const u32 gUnknown_8250898 = 0xFF7EAE60; -void atk00_attackcanceler(void) +static void atk00_attackcanceler(void) { s32 i; @@ -962,7 +962,7 @@ void atk00_attackcanceler(void) } } -void JumpIfMoveFailed(u8 adder, u16 move) +static void JumpIfMoveFailed(u8 adder, u16 move) { const u8 *BS_ptr = gBattlescriptCurrInstr + adder; @@ -981,7 +981,7 @@ void JumpIfMoveFailed(u8 adder, u16 move) gBattlescriptCurrInstr = BS_ptr; } -void atk40_jumpifaffectedbyprotect(void) +static void atk40_jumpifaffectedbyprotect(void) { if (DEFENDER_IS_PROTECTED) { @@ -995,7 +995,7 @@ void atk40_jumpifaffectedbyprotect(void) } } -bool8 JumpIfMoveAffectedByProtect(u16 move) +static bool8 JumpIfMoveAffectedByProtect(u16 move) { bool8 affected = FALSE; @@ -1009,7 +1009,7 @@ bool8 JumpIfMoveAffectedByProtect(u16 move) return affected; } -bool8 AccuracyCalcHelper(u16 move) +static bool8 AccuracyCalcHelper(u16 move) { if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) { @@ -1046,7 +1046,7 @@ bool8 AccuracyCalcHelper(u16 move) return FALSE; } -void atk01_accuracycheck(void) +static void atk01_accuracycheck(void) { u16 move = T2_READ_16(gBattlescriptCurrInstr + 5); @@ -1140,7 +1140,7 @@ void atk01_accuracycheck(void) } } -void atk02_attackstring(void) +static void atk02_attackstring(void) { if (!gBattleControllerExecFlags) { @@ -1154,7 +1154,7 @@ void atk02_attackstring(void) } } - void atk03_ppreduce(void) + static void atk03_ppreduce(void) { s32 ppToDeduct = 1; @@ -1199,7 +1199,7 @@ void atk02_attackstring(void) } } -void atk04_critcalc(void) +static void atk04_critcalc(void) { u8 holdEffect; u16 item, critChance; @@ -1232,7 +1232,7 @@ void atk04_critcalc(void) ++gBattlescriptCurrInstr; } -void atk05_damagecalc(void) +static void atk05_damagecalc(void) { u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)]; @@ -1305,7 +1305,7 @@ void ModulateDmgByType(u8 multiplier) } } -void atk06_typecalc(void) +static void atk06_typecalc(void) { s32 i = 0; u8 moveType; @@ -1372,7 +1372,7 @@ void atk06_typecalc(void) ++gBattlescriptCurrInstr; } -void CheckWonderGuardAndLevitate(void) +static void CheckWonderGuardAndLevitate(void) { u8 flags = 0; s32 i = 0; @@ -1442,7 +1442,7 @@ void CheckWonderGuardAndLevitate(void) } // same as ModulateDmgByType except different arguments -void ModulateDmgByType2(u8 multiplier, u16 move, u8 *flags) +static void ModulateDmgByType2(u8 multiplier, u16 move, u8 *flags) { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -1585,12 +1585,12 @@ static inline void ApplyRandomDmgMultiplier(void) } } -void Unused_ApplyRandomDmgMultiplier(void) +static void Unused_ApplyRandomDmgMultiplier(void) { ApplyRandomDmgMultiplier(); } -void atk07_adjustnormaldamage(void) +static void atk07_adjustnormaldamage(void) { u8 holdEffect, param; @@ -1630,7 +1630,7 @@ void atk07_adjustnormaldamage(void) } // The same as 0x7 except it doesn't check for false swipe move effect. -void atk08_adjustnormaldamage2(void) +static void atk08_adjustnormaldamage2(void) { u8 holdEffect, param; @@ -1669,7 +1669,7 @@ void atk08_adjustnormaldamage2(void) ++gBattlescriptCurrInstr; } -void atk09_attackanimation(void) +static void atk09_attackanimation(void) { if (!gBattleControllerExecFlags) { @@ -1708,13 +1708,13 @@ void atk09_attackanimation(void) } } -void atk0A_waitanimation(void) +static void atk0A_waitanimation(void) { if (!gBattleControllerExecFlags) ++gBattlescriptCurrInstr; } -void atk0B_healthbarupdate(void) +static void atk0B_healthbarupdate(void) { if (!gBattleControllerExecFlags) { @@ -1746,7 +1746,7 @@ void atk0B_healthbarupdate(void) } } -void atk0C_datahpupdate(void) +static void atk0C_datahpupdate(void) { u32 moveType; @@ -1869,7 +1869,7 @@ void atk0C_datahpupdate(void) } } -void atk0D_critmessage(void) +static void atk0D_critmessage(void) { if (!gBattleControllerExecFlags) { @@ -1882,7 +1882,7 @@ void atk0D_critmessage(void) } } -void atk0E_effectivenesssound(void) +static void atk0E_effectivenesssound(void) { if (!gBattleControllerExecFlags) { @@ -1929,7 +1929,7 @@ void atk0E_effectivenesssound(void) } } -void atk0F_resultmessage(void) +static void atk0F_resultmessage(void) { u32 stringId = 0; @@ -2016,7 +2016,7 @@ void atk0F_resultmessage(void) } } -void atk10_printstring(void) +static void atk10_printstring(void) { if (!gBattleControllerExecFlags) { @@ -2027,7 +2027,7 @@ void atk10_printstring(void) } } -void atk11_printselectionstring(void) +static void atk11_printselectionstring(void) { gActiveBattler = gBattlerAttacker; BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1)); @@ -2036,7 +2036,7 @@ void atk11_printselectionstring(void) gBattleCommunication[MSG_DISPLAY] = 1; } -void atk12_waitmessage(void) +static void atk12_waitmessage(void) { if (!gBattleControllerExecFlags) { @@ -2057,7 +2057,7 @@ void atk12_waitmessage(void) } } -void atk13_printfromtable(void) +static void atk13_printfromtable(void) { if (!gBattleControllerExecFlags) { @@ -2070,7 +2070,7 @@ void atk13_printfromtable(void) } } -void atk14_printselectionstringfromtable(void) +static void atk14_printselectionstringfromtable(void) { if (!gBattleControllerExecFlags) { @@ -2736,7 +2736,7 @@ void SetMoveEffect(bool8 primary, u8 certain) } } -void atk15_seteffectwithchance(void) +static void atk15_seteffectwithchance(void) { u32 percentChance; @@ -2767,17 +2767,17 @@ void atk15_seteffectwithchance(void) gBattleScripting.multihitMoveEffect = 0; } -void atk16_seteffectprimary(void) +static void atk16_seteffectprimary(void) { SetMoveEffect(TRUE, 0); } -void atk17_seteffectsecondary(void) +static void atk17_seteffectsecondary(void) { SetMoveEffect(FALSE, 0); } -void atk18_clearstatusfromeffect(void) +static void atk18_clearstatusfromeffect(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); @@ -2790,7 +2790,7 @@ void atk18_clearstatusfromeffect(void) gBattleScripting.multihitMoveEffect = 0; } -void atk19_tryfaintmon(void) +static void atk19_tryfaintmon(void) { const u8 *BS_ptr; @@ -2876,7 +2876,7 @@ void atk19_tryfaintmon(void) } } -void atk1A_dofaintanimation(void) +static void atk1A_dofaintanimation(void) { if (!gBattleControllerExecFlags) { @@ -2887,7 +2887,7 @@ void atk1A_dofaintanimation(void) } } -void atk1B_cleareffectsonfaint(void) +static void atk1B_cleareffectsonfaint(void) { if (!gBattleControllerExecFlags) { @@ -2900,7 +2900,7 @@ void atk1B_cleareffectsonfaint(void) } } -void atk1C_jumpifstatus(void) +static void atk1C_jumpifstatus(void) { u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); @@ -2912,7 +2912,7 @@ void atk1C_jumpifstatus(void) gBattlescriptCurrInstr += 10; } -void atk1D_jumpifstatus2(void) +static void atk1D_jumpifstatus2(void) { u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); @@ -2924,7 +2924,7 @@ void atk1D_jumpifstatus2(void) gBattlescriptCurrInstr += 10; } -void atk1E_jumpifability(void) +static void atk1E_jumpifability(void) { u8 battlerId; u8 ability = gBattlescriptCurrInstr[2]; @@ -2971,7 +2971,7 @@ void atk1E_jumpifability(void) } } -void atk1F_jumpifsideaffecting(void) +static void atk1F_jumpifsideaffecting(void) { u8 side; u16 flags; @@ -2991,7 +2991,7 @@ void atk1F_jumpifsideaffecting(void) gBattlescriptCurrInstr += 8; } -void atk20_jumpifstat(void) +static void atk20_jumpifstat(void) { u8 ret = 0; u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); @@ -3030,7 +3030,7 @@ void atk20_jumpifstat(void) gBattlescriptCurrInstr += 9; } -void atk21_jumpifstatus3condition(void) +static void atk21_jumpifstatus3condition(void) { u32 flags; const u8 *jumpPtr; @@ -3054,7 +3054,7 @@ void atk21_jumpifstatus3condition(void) } } -void atk22_jumpiftype(void) +static void atk22_jumpiftype(void) { u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); u8 type = gBattlescriptCurrInstr[2]; @@ -3066,7 +3066,7 @@ void atk22_jumpiftype(void) gBattlescriptCurrInstr += 7; } -void atk23_getexp(void) +static void atk23_getexp(void) { u16 item; s32 i; // also used as stringId @@ -3315,7 +3315,7 @@ void atk23_getexp(void) } } -void atk24(void) +static void atk24(void) { u16 HP_count = 0; s32 i; @@ -3383,7 +3383,7 @@ void atk24(void) } } -void MoveValuesCleanUp(void) +static void MoveValuesCleanUp(void) { gMoveResultFlags = 0; gBattleScripting.dmgMultiplier = 1; @@ -3394,19 +3394,19 @@ void MoveValuesCleanUp(void) gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); } -void atk25_movevaluescleanup(void) +static void atk25_movevaluescleanup(void) { MoveValuesCleanUp(); gBattlescriptCurrInstr += 1; } -void atk26_setmultihit(void) +static void atk26_setmultihit(void) { gMultiHitCounter = gBattlescriptCurrInstr[1]; gBattlescriptCurrInstr += 2; } -void atk27_decrementmultihit(void) +static void atk27_decrementmultihit(void) { if (--gMultiHitCounter == 0) gBattlescriptCurrInstr += 5; @@ -3414,12 +3414,12 @@ void atk27_decrementmultihit(void) gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); } -void atk28_goto(void) +static void atk28_goto(void) { gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1); } -void atk29_jumpifbyte(void) +static void atk29_jumpifbyte(void) { u8 caseID = gBattlescriptCurrInstr[1]; const u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 2); @@ -3457,7 +3457,7 @@ void atk29_jumpifbyte(void) } } -void atk2A_jumpifhalfword(void) +static void atk2A_jumpifhalfword(void) { u8 caseID = gBattlescriptCurrInstr[1]; const u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 2); @@ -3494,7 +3494,7 @@ void atk2A_jumpifhalfword(void) } } -void atk2B_jumpifword(void) +static void atk2B_jumpifword(void) { u8 caseID = gBattlescriptCurrInstr[1]; const u32* memWord = T2_READ_PTR(gBattlescriptCurrInstr + 2); @@ -3531,7 +3531,7 @@ void atk2B_jumpifword(void) } } -void atk2C_jumpifarrayequal(void) +static void atk2C_jumpifarrayequal(void) { const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1); const u8 *mem2 = T2_READ_PTR(gBattlescriptCurrInstr + 5); @@ -3552,7 +3552,7 @@ void atk2C_jumpifarrayequal(void) gBattlescriptCurrInstr = jumpPtr; } -void atk2D_jumpifarraynotequal(void) +static void atk2D_jumpifarraynotequal(void) { u8 equalBytes = 0; const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1); @@ -3573,7 +3573,7 @@ void atk2D_jumpifarraynotequal(void) gBattlescriptCurrInstr += 14; } -void atk2E_setbyte(void) +static void atk2E_setbyte(void) { u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); @@ -3581,7 +3581,7 @@ void atk2E_setbyte(void) gBattlescriptCurrInstr += 6; } -void atk2F_addbyte(void) +static void atk2F_addbyte(void) { u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); @@ -3589,7 +3589,7 @@ void atk2F_addbyte(void) gBattlescriptCurrInstr += 6; } -void atk30_subbyte(void) +static void atk30_subbyte(void) { u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); @@ -3597,7 +3597,7 @@ void atk30_subbyte(void) gBattlescriptCurrInstr += 6; } -void atk31_copyarray(void) +static void atk31_copyarray(void) { u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1); const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5); @@ -3611,7 +3611,7 @@ void atk31_copyarray(void) gBattlescriptCurrInstr += 10; } -void atk32_copyarraywithindex(void) +static void atk32_copyarraywithindex(void) { u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1); const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5); @@ -3626,14 +3626,14 @@ void atk32_copyarraywithindex(void) gBattlescriptCurrInstr += 14; } -void atk33_orbyte(void) +static void atk33_orbyte(void) { u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); *memByte |= gBattlescriptCurrInstr[5]; gBattlescriptCurrInstr += 6; } -void atk34_orhalfword(void) +static void atk34_orhalfword(void) { u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1); u16 val = T2_READ_16(gBattlescriptCurrInstr + 5); @@ -3642,7 +3642,7 @@ void atk34_orhalfword(void) gBattlescriptCurrInstr += 7; } -void atk35_orword(void) +static void atk35_orword(void) { u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1); u32 val = T2_READ_32(gBattlescriptCurrInstr + 5); @@ -3651,7 +3651,7 @@ void atk35_orword(void) gBattlescriptCurrInstr += 9; } -void atk36_bicbyte(void) +static void atk36_bicbyte(void) { u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1); @@ -3659,7 +3659,7 @@ void atk36_bicbyte(void) gBattlescriptCurrInstr += 6; } -void atk37_bichalfword(void) +static void atk37_bichalfword(void) { u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1); u16 val = T2_READ_16(gBattlescriptCurrInstr + 5); @@ -3668,7 +3668,7 @@ void atk37_bichalfword(void) gBattlescriptCurrInstr += 7; } -void atk38_bicword(void) +static void atk38_bicword(void) { u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1); u32 val = T2_READ_32(gBattlescriptCurrInstr + 5); @@ -3677,7 +3677,7 @@ void atk38_bicword(void) gBattlescriptCurrInstr += 9; } -void atk39_pause(void) +static void atk39_pause(void) { if (!gBattleControllerExecFlags) { @@ -3691,13 +3691,13 @@ void atk39_pause(void) } } -void atk3A_waitstate(void) +static void atk3A_waitstate(void) { if (!gBattleControllerExecFlags) ++gBattlescriptCurrInstr; } -void atk3B_healthbar_update(void) +static void atk3B_healthbar_update(void) { if (gBattlescriptCurrInstr[1] == BS_TARGET) gActiveBattler = gBattlerTarget; @@ -3708,25 +3708,25 @@ void atk3B_healthbar_update(void) gBattlescriptCurrInstr += 2; } -void atk3C_return(void) +static void atk3C_return(void) { BattleScriptPop(); } -void atk3D_end(void) +static void atk3D_end(void) { gMoveResultFlags = 0; gActiveBattler = 0; gCurrentActionFuncId = B_ACTION_TRY_FINISH; } -void atk3E_end2(void) +static void atk3E_end2(void) { gActiveBattler = 0; gCurrentActionFuncId = B_ACTION_TRY_FINISH; } -void atk3F_end3(void) // pops the main function stack +static void atk3F_end3(void) // pops the main function stack { BattleScriptPop(); if (gBattleResources->battleCallbackStack->size != 0) @@ -3734,13 +3734,13 @@ void atk3F_end3(void) // pops the main function stack gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size]; } -void atk41_call(void) +static void atk41_call(void) { BattleScriptPush(gBattlescriptCurrInstr + 5); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -void atk42_jumpiftype2(void) +static void atk42_jumpiftype2(void) { u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); @@ -3750,7 +3750,7 @@ void atk42_jumpiftype2(void) gBattlescriptCurrInstr += 7; } -void atk43_jumpifabilitypresent(void) +static void atk43_jumpifabilitypresent(void) { if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, gBattlescriptCurrInstr[1], 0, 0)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); @@ -3758,12 +3758,12 @@ void atk43_jumpifabilitypresent(void) gBattlescriptCurrInstr += 6; } -void atk44_endselectionscript(void) +static void atk44_endselectionscript(void) { *(gBattlerAttacker + gBattleStruct->selectionScriptFinished) = TRUE; } -void atk45_playanimation(void) +static void atk45_playanimation(void) { const u16 *argumentPtr; @@ -3804,7 +3804,7 @@ void atk45_playanimation(void) } } -void atk46_playanimation2(void) // animation Id is stored in the first pointer +static void atk46_playanimation2(void) // animation Id is stored in the first pointer { const u16 *argumentPtr; const u8 *animationIdPtr; @@ -3845,7 +3845,7 @@ void atk46_playanimation2(void) // animation Id is stored in the first pointer } } -void atk47_setgraphicalstatchangevalues(void) +static void atk47_setgraphicalstatchangevalues(void) { u8 value = 0; @@ -3869,7 +3869,7 @@ void atk47_setgraphicalstatchangevalues(void) ++gBattlescriptCurrInstr; } -void atk48_playstatchangeanimation(void) +static void atk48_playstatchangeanimation(void) { u32 currStat = 0; u16 statAnimId = 0; @@ -3967,7 +3967,7 @@ void atk48_playstatchangeanimation(void) } } -void atk49_moveend(void) +static void atk49_moveend(void) { s32 i; bool32 effect = FALSE; @@ -4253,7 +4253,7 @@ void atk49_moveend(void) gBattlescriptCurrInstr += 3; } -void atk4A_typecalc2(void) +static void atk4A_typecalc2(void) { u8 flags = 0; s32 i = 0; @@ -4345,7 +4345,7 @@ void atk4A_typecalc2(void) ++gBattlescriptCurrInstr; } -void atk4B_returnatktoball(void) +static void atk4B_returnatktoball(void) { gActiveBattler = gBattlerAttacker; if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler))) @@ -4356,7 +4356,7 @@ void atk4B_returnatktoball(void) ++gBattlescriptCurrInstr; } -void atk4C_getswitchedmondata(void) +static void atk4C_getswitchedmondata(void) { if (!gBattleControllerExecFlags) { @@ -4368,7 +4368,7 @@ void atk4C_getswitchedmondata(void) } } -void atk4D_switchindataupdate(void) +static void atk4D_switchindataupdate(void) { struct BattlePokemon oldData; s32 i; @@ -4405,7 +4405,7 @@ void atk4D_switchindataupdate(void) } } -void atk4E_switchinanim(void) +static void atk4E_switchinanim(void) { if (!gBattleControllerExecFlags) { @@ -4426,7 +4426,7 @@ void atk4E_switchinanim(void) } } -void atk4F_jumpifcantswitch(void) +static void atk4F_jumpifcantswitch(void) { s32 i; s32 lastMonId; @@ -4500,14 +4500,14 @@ void atk4F_jumpifcantswitch(void) } } -void sub_8024398(u8 arg0) +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]); MarkBattlerForControllerExec(gActiveBattler); } -void atk50_openpartyscreen(void) +static void atk50_openpartyscreen(void) { u32 flags; u8 hitmarkerFaintBits; @@ -4786,7 +4786,7 @@ void atk50_openpartyscreen(void) } } -void atk51_switchhandleorder(void) +static void atk51_switchhandleorder(void) { s32 i; @@ -4829,7 +4829,7 @@ void atk51_switchhandleorder(void) } } -void atk52_switchineffects(void) +static void atk52_switchineffects(void) { s32 i; @@ -4897,7 +4897,7 @@ void atk52_switchineffects(void) } } -void atk53_trainerslidein(void) +static void atk53_trainerslidein(void) { if (!gBattlescriptCurrInstr[1]) gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); @@ -4908,7 +4908,7 @@ void atk53_trainerslidein(void) gBattlescriptCurrInstr += 2; } -void atk54_playse(void) +static void atk54_playse(void) { gActiveBattler = gBattlerAttacker; BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1)); @@ -4916,7 +4916,7 @@ void atk54_playse(void) gBattlescriptCurrInstr += 3; } -void atk55_fanfare(void) +static void atk55_fanfare(void) { gActiveBattler = gBattlerAttacker; BtlController_EmitPlayFanfare(0, T2_READ_16(gBattlescriptCurrInstr + 1)); @@ -4924,7 +4924,7 @@ void atk55_fanfare(void) gBattlescriptCurrInstr += 3; } -void atk56_playfaintcry(void) +static void atk56_playfaintcry(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitFaintingCry(0); @@ -4932,7 +4932,7 @@ void atk56_playfaintcry(void) gBattlescriptCurrInstr += 2; } -void atk57(void) +static void atk57(void) { gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); BtlController_EmitCmd55(0, gBattleOutcome); @@ -4940,7 +4940,7 @@ void atk57(void) gBattlescriptCurrInstr += 1; } -void atk58_returntoball(void) +static void atk58_returntoball(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitReturnMonToBall(0, 1); @@ -4948,7 +4948,7 @@ void atk58_returntoball(void) gBattlescriptCurrInstr += 2; } -void atk59_handlelearnnewmove(void) +static void atk59_handlelearnnewmove(void) { const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1); const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); @@ -4985,7 +4985,7 @@ void atk59_handlelearnnewmove(void) } } -void atk5A_yesnoboxlearnmove(void) +static void atk5A_yesnoboxlearnmove(void) { gActiveBattler = 0; @@ -5097,7 +5097,7 @@ void atk5A_yesnoboxlearnmove(void) } } -void atk5B_yesnoboxstoplearningmove(void) +static void atk5B_yesnoboxstoplearningmove(void) { switch (gBattleScripting.learnMoveState) { @@ -5143,7 +5143,7 @@ void atk5B_yesnoboxstoplearningmove(void) } } -void atk5C_hitanimation(void) +static void atk5C_hitanimation(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) @@ -5165,7 +5165,7 @@ void atk5C_hitanimation(void) } #ifdef NONMATCHING -void atk5D_getmoneyreward(void) +static void atk5D_getmoneyreward(void) { u32 i = 0; u32 lastMonLevel = 0; @@ -5239,7 +5239,7 @@ void atk5D_getmoneyreward(void) } #else NAKED -void atk5D_getmoneyreward(void) +static void atk5D_getmoneyreward(void) { asm_unified("\n\ push {r4-r7,lr}\n\ @@ -5474,7 +5474,7 @@ void atk5D_getmoneyreward(void) } #endif -void atk5E(void) +static void atk5E(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); @@ -5502,7 +5502,7 @@ void atk5E(void) } } -void atk5F_swapattackerwithtarget(void) +static void atk5F_swapattackerwithtarget(void) { gActiveBattler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; @@ -5514,14 +5514,14 @@ void atk5F_swapattackerwithtarget(void) ++gBattlescriptCurrInstr; } -void atk60_incrementgamestat(void) +static void atk60_incrementgamestat(void) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) IncrementGameStat(gBattlescriptCurrInstr[1]); gBattlescriptCurrInstr += 2; } -void atk61_drawpartystatussummary(void) +static void atk61_drawpartystatussummary(void) { s32 i; struct Pokemon *party; @@ -5556,7 +5556,7 @@ void atk61_drawpartystatussummary(void) } } -void atk62_hidepartystatussummary(void) +static void atk62_hidepartystatussummary(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitHidePartyStatusSummary(0); @@ -5564,7 +5564,7 @@ void atk62_hidepartystatussummary(void) gBattlescriptCurrInstr += 2; } -void atk63_jumptocalledmove(void) +static void atk63_jumptocalledmove(void) { if (gBattlescriptCurrInstr[1]) gCurrentMove = gCalledMove; @@ -5573,7 +5573,7 @@ void atk63_jumptocalledmove(void) gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; } -void atk64_statusanimation(void) +static void atk64_statusanimation(void) { if (!gBattleControllerExecFlags) { @@ -5589,7 +5589,7 @@ void atk64_statusanimation(void) } } -void atk65_status2animation(void) +static void atk65_status2animation(void) { u32 wantedToAnimate; @@ -5608,7 +5608,7 @@ void atk65_status2animation(void) } } -void atk66_chosenstatusanimation(void) +static void atk66_chosenstatusanimation(void) { u32 wantedStatus; @@ -5627,7 +5627,7 @@ void atk66_chosenstatusanimation(void) } } -void atk67_yesnobox(void) +static void atk67_yesnobox(void) { switch (gBattleCommunication[0]) { @@ -5670,7 +5670,7 @@ void atk67_yesnobox(void) } } -void atk68_cancelallactions(void) +static void atk68_cancelallactions(void) { s32 i; @@ -5680,7 +5680,7 @@ void atk68_cancelallactions(void) } // The same as 0x7, except there's no random damage multiplier. -void atk69_adjustsetdamage(void) +static void atk69_adjustsetdamage(void) { u8 holdEffect, param; @@ -5718,7 +5718,7 @@ void atk69_adjustsetdamage(void) ++gBattlescriptCurrInstr; } -void atk6A_removeitem(void) +static void atk6A_removeitem(void) { u16 *usedHeldItem; @@ -5731,13 +5731,13 @@ void atk6A_removeitem(void) gBattlescriptCurrInstr += 2; } -void atk6B_atknameinbuff1(void) +static void atk6B_atknameinbuff1(void) { PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]) ++gBattlescriptCurrInstr; } -void atk6C_drawlvlupbox(void) +static void atk6C_drawlvlupbox(void) { if (gBattleScripting.atk6C_state == 0) { @@ -5826,7 +5826,7 @@ void atk6C_drawlvlupbox(void) } } -void DrawLevelUpWindow1(void) +static void DrawLevelUpWindow1(void) { u16 currStats[NUM_STATS]; @@ -5834,7 +5834,7 @@ void DrawLevelUpWindow1(void) DrawLevelUpWindowPg1(12, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF); } -void DrawLevelUpWindow2(void) +static void DrawLevelUpWindow2(void) { u16 currStats[NUM_STATS]; @@ -5842,7 +5842,7 @@ void DrawLevelUpWindow2(void) DrawLevelUpWindowPg2(12, currStats, 0xE, 0xD, 0xF); } -void sub_8026480(void) +static void sub_8026480(void) { gBattle_BG2_Y = 0; gBattle_BG2_X = 0x1A0; @@ -5853,7 +5853,7 @@ void sub_8026480(void) PutMonIconOnLvlUpBox(); } -bool8 sub_80264D0(void) +static bool8 sub_80264D0(void) { if (IsDma3ManagerBusyWithBgCopy()) return TRUE; @@ -5867,7 +5867,7 @@ bool8 sub_80264D0(void) return (gBattle_BG2_X != 0x200); } -void PutLevelAndGenderOnLvlUpBox(void) +static void PutLevelAndGenderOnLvlUpBox(void) { u16 monLevel; u8 monGender; @@ -5922,7 +5922,7 @@ void PutLevelAndGenderOnLvlUpBox(void) CopyWindowToVram(13, 2); } -bool8 sub_8026648(void) +static bool8 sub_8026648(void) { if (gBattle_BG2_X == 0x1A0) return FALSE; @@ -5936,7 +5936,7 @@ bool8 sub_8026648(void) #define sDestroy data[0] #define sSavedLvlUpBoxXPosition data[1] -void PutMonIconOnLvlUpBox(void) +static void PutMonIconOnLvlUpBox(void) { u8 spriteId; const u16 *iconPal; @@ -5959,7 +5959,7 @@ void PutMonIconOnLvlUpBox(void) gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X; } -void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite) +static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite) { sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X; if (sprite->pos2.x != 0) @@ -5983,19 +5983,19 @@ bool32 IsMonGettingExpSentOut(void) return FALSE; } -void atk6D_resetsentmonsvalue(void) +static void atk6D_resetsentmonsvalue(void) { ResetSentPokesToOpponentValue(); ++gBattlescriptCurrInstr; } -void atk6E_setatktoplayer0(void) +static void atk6E_setatktoplayer0(void) { gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); ++gBattlescriptCurrInstr; } -void atk6F_makevisible(void) +static void atk6F_makevisible(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitSpriteInvisibility(0, FALSE); @@ -6004,7 +6004,7 @@ void atk6F_makevisible(void) gBattlescriptCurrInstr += 2; } -void atk70_recordlastability(void) +static void atk70_recordlastability(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); RecordAbilityBattle(gActiveBattler, gLastUsedAbility); @@ -6016,13 +6016,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void) PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); } -void atk71_buffermovetolearn(void) +static void atk71_buffermovetolearn(void) { BufferMoveToLearnIntoBattleTextBuff2(); ++gBattlescriptCurrInstr; } -void atk72_jumpifplayerran(void) +static void atk72_jumpifplayerran(void) { if (TryRunFromBattle(gBattlerFainted)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6030,7 +6030,7 @@ void atk72_jumpifplayerran(void) gBattlescriptCurrInstr += 5; } -void atk73_hpthresholds(void) +static void atk73_hpthresholds(void) { u8 opposingBattler; s32 result; @@ -6055,7 +6055,7 @@ void atk73_hpthresholds(void) gBattlescriptCurrInstr += 2; } -void atk74_hpthresholds2(void) +static void atk74_hpthresholds2(void) { u8 opposingBattler; s32 result; @@ -6080,14 +6080,14 @@ void atk74_hpthresholds2(void) gBattlescriptCurrInstr += 2; } -void atk75_useitemonopponent(void) +static void atk75_useitemonopponent(void) { gBattlerInMenuId = gBattlerAttacker; PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, 1); ++gBattlescriptCurrInstr; } -void atk76_various(void) +static void atk76_various(void) { u8 side; s32 i; @@ -6243,7 +6243,7 @@ void atk76_various(void) gBattlescriptCurrInstr += 3; } -void atk77_setprotectlike(void) +static void atk77_setprotectlike(void) { bool8 notLastTurn = TRUE; u16 lastMove = gLastResultingMoves[gBattlerAttacker]; @@ -6275,7 +6275,7 @@ void atk77_setprotectlike(void) ++gBattlescriptCurrInstr; } -void atk78_faintifabilitynotdamp(void) +static void atk78_faintifabilitynotdamp(void) { if (!gBattleControllerExecFlags) { @@ -6309,7 +6309,7 @@ void atk78_faintifabilitynotdamp(void) } } -void atk79_setatkhptozero(void) +static void atk79_setatkhptozero(void) { if (!gBattleControllerExecFlags) { @@ -6321,7 +6321,7 @@ void atk79_setatkhptozero(void) } } -void atk7A_jumpifnexttargetvalid(void) +static void atk7A_jumpifnexttargetvalid(void) { const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6345,7 +6345,7 @@ void atk7A_jumpifnexttargetvalid(void) } } -void atk7B_tryhealhalfhealth(void) +static void atk7B_tryhealhalfhealth(void) { const u8 *failPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6362,7 +6362,7 @@ void atk7B_tryhealhalfhealth(void) } #ifdef NONMATCHING -void atk7C_trymirrormove(void) +static void atk7C_trymirrormove(void) { s32 validMovesCount; s32 i; @@ -6413,7 +6413,7 @@ void atk7C_trymirrormove(void) } #else NAKED -void atk7C_trymirrormove(void) +static void atk7C_trymirrormove(void) { asm_unified("\n\ push {r4-r7,lr}\n\ @@ -6589,7 +6589,7 @@ void atk7C_trymirrormove(void) } #endif -void atk7D_setrain(void) +static void atk7D_setrain(void) { if (gBattleWeather & WEATHER_RAIN_ANY) { @@ -6605,7 +6605,7 @@ void atk7D_setrain(void) ++gBattlescriptCurrInstr; } -void atk7E_setreflect(void) +static void atk7E_setreflect(void) { if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_REFLECT) { @@ -6626,7 +6626,7 @@ void atk7E_setreflect(void) ++gBattlescriptCurrInstr; } -void atk7F_setseeded(void) +static void atk7F_setseeded(void) { if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBattlerTarget] & STATUS3_LEECHSEED) { @@ -6647,7 +6647,7 @@ void atk7F_setseeded(void) ++gBattlescriptCurrInstr; } -void atk80_manipulatedamage(void) +static void atk80_manipulatedamage(void) { switch (gBattlescriptCurrInstr[1]) { @@ -6668,7 +6668,7 @@ void atk80_manipulatedamage(void) gBattlescriptCurrInstr += 2; } -void atk81_trysetrest(void) +static void atk81_trysetrest(void) { const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6691,7 +6691,7 @@ void atk81_trysetrest(void) } } -void atk82_jumpifnotfirstturn(void) +static void atk82_jumpifnotfirstturn(void) { const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6701,7 +6701,7 @@ void atk82_jumpifnotfirstturn(void) gBattlescriptCurrInstr = failJump; } -void atk83_nop(void) +static void atk83_nop(void) { ++gBattlescriptCurrInstr; } @@ -6731,7 +6731,7 @@ bool8 UproarWakeUpCheck(u8 battlerId) return TRUE; } -void atk84_jumpifcantmakeasleep(void) +static void atk84_jumpifcantmakeasleep(void) { const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6753,7 +6753,7 @@ void atk84_jumpifcantmakeasleep(void) } } -void atk85_stockpile(void) +static void atk85_stockpile(void) { if (gDisableStructs[gBattlerAttacker].stockpileCounter == 3) { @@ -6769,7 +6769,7 @@ void atk85_stockpile(void) ++gBattlescriptCurrInstr; } -void atk86_stockpiletobasedamage(void) +static void atk86_stockpiletobasedamage(void) { const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6795,7 +6795,7 @@ void atk86_stockpiletobasedamage(void) } } -void atk87_stockpiletohpheal(void) +static void atk87_stockpiletohpheal(void) { const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -6824,7 +6824,7 @@ void atk87_stockpiletohpheal(void) } } -void atk88_negativedamage(void) +static void atk88_negativedamage(void) { gBattleMoveDamage = -(gHpDealt / 2); if (gBattleMoveDamage == 0) @@ -6835,7 +6835,7 @@ void atk88_negativedamage(void) #define STAT_CHANGE_WORKED 0 #define STAT_CHANGE_DIDNT_WORK 1 -u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) { bool8 certain = FALSE; bool8 notProtectAffected = FALSE; @@ -6989,14 +6989,14 @@ u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) return STAT_CHANGE_WORKED; } -void atk89_statbuffchange(void) +static void atk89_statbuffchange(void) { const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2); if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED) gBattlescriptCurrInstr += 6; } -void atk8A_normalisebuffs(void) // haze +static void atk8A_normalisebuffs(void) // haze { s32 i, j; @@ -7006,7 +7006,7 @@ void atk8A_normalisebuffs(void) // haze ++gBattlescriptCurrInstr; } -void atk8B_setbide(void) +static void atk8B_setbide(void) { gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gBattlerAttacker] = gCurrentMove; @@ -7015,14 +7015,14 @@ void atk8B_setbide(void) ++gBattlescriptCurrInstr; } -void atk8C_confuseifrepeatingattackends(void) +static void atk8C_confuseifrepeatingattackends(void) { if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE)) gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER); ++gBattlescriptCurrInstr; } -void atk8D_setmultihitcounter(void) +static void atk8D_setmultihitcounter(void) { if (gBattlescriptCurrInstr[1]) { @@ -7039,13 +7039,13 @@ void atk8D_setmultihitcounter(void) gBattlescriptCurrInstr += 2; } -void atk8E_initmultihitstring(void) +static void atk8E_initmultihitstring(void) { PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) ++gBattlescriptCurrInstr; } -bool8 TryDoForceSwitchOut(void) +static bool8 TryDoForceSwitchOut(void) { if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) { @@ -7068,7 +7068,7 @@ bool8 TryDoForceSwitchOut(void) #define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_HP)))) -void atk8F_forcerandomswitch(void) +static void atk8F_forcerandomswitch(void) { if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { @@ -7163,7 +7163,7 @@ void atk8F_forcerandomswitch(void) } } -void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type +static void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type { u8 validMoves = 0; u8 moveChecked; @@ -7217,7 +7217,7 @@ void atk90_tryconversiontypechange(void) // randomly changes user's type to one } } -void atk91_givepaydaymoney(void) +static void atk91_givepaydaymoney(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney != 0) { @@ -7234,7 +7234,7 @@ void atk91_givepaydaymoney(void) } } -void atk92_setlightscreen(void) +static void atk92_setlightscreen(void) { if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_LIGHTSCREEN) { @@ -7254,7 +7254,7 @@ void atk92_setlightscreen(void) ++gBattlescriptCurrInstr; } -void atk93_tryKO(void) +static void atk93_tryKO(void) { u8 holdEffect, param; @@ -7339,7 +7339,7 @@ void atk93_tryKO(void) } } -void atk94_damagetohalftargethp(void) // super fang +static void atk94_damagetohalftargethp(void) // super fang { gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2; if (gBattleMoveDamage == 0) @@ -7347,7 +7347,7 @@ void atk94_damagetohalftargethp(void) // super fang ++gBattlescriptCurrInstr; } -void atk95_setsandstorm(void) +static void atk95_setsandstorm(void) { if (gBattleWeather & WEATHER_SANDSTORM_ANY) { @@ -7363,7 +7363,7 @@ void atk95_setsandstorm(void) ++gBattlescriptCurrInstr; } -void atk96_weatherdamage(void) +static void atk96_weatherdamage(void) { if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) && (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)) @@ -7420,7 +7420,7 @@ void atk96_weatherdamage(void) ++gBattlescriptCurrInstr; } -void atk97_tryinfatuating(void) +static void atk97_tryinfatuating(void) { struct Pokemon *monAttacker, *monTarget; u16 speciesAttacker, speciesTarget; @@ -7461,7 +7461,7 @@ void atk97_tryinfatuating(void) } } -void atk98_updatestatusicon(void) +static void atk98_updatestatusicon(void) { if (!gBattleControllerExecFlags) { @@ -7507,7 +7507,7 @@ void atk98_updatestatusicon(void) } } -void atk99_setmist(void) +static void atk99_setmist(void) { if (gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer) { @@ -7524,7 +7524,7 @@ void atk99_setmist(void) ++gBattlescriptCurrInstr; } -void atk9A_setfocusenergy(void) +static void atk9A_setfocusenergy(void) { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) { @@ -7539,7 +7539,7 @@ void atk9A_setfocusenergy(void) ++gBattlescriptCurrInstr; } -void atk9B_transformdataexecution(void) +static void atk9B_transformdataexecution(void) { gChosenMove = 0xFFFF; ++gBattlescriptCurrInstr; @@ -7578,7 +7578,7 @@ void atk9B_transformdataexecution(void) } } -void atk9C_setsubstitute(void) +static void atk9C_setsubstitute(void) { u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4; @@ -7603,7 +7603,7 @@ void atk9C_setsubstitute(void) ++gBattlescriptCurrInstr; } -bool8 IsMoveUncopyableByMimic(u16 move) +static bool8 IsMoveUncopyableByMimic(u16 move) { s32 i; @@ -7611,7 +7611,7 @@ bool8 IsMoveUncopyableByMimic(u16 move) return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END); } -void atk9D_mimicattackcopy(void) +static void atk9D_mimicattackcopy(void) { gChosenMove = 0xFFFF; if (IsMoveUncopyableByMimic(gLastMoves[gBattlerTarget]) @@ -7648,7 +7648,7 @@ void atk9D_mimicattackcopy(void) } } -void atk9E_metronome(void) +static void atk9E_metronome(void) { while (1) { @@ -7677,13 +7677,13 @@ void atk9E_metronome(void) } } -void atk9F_dmgtolevel(void) +static void atk9F_dmgtolevel(void) { gBattleMoveDamage = gBattleMons[gBattlerAttacker].level; ++gBattlescriptCurrInstr; } -void atkA0_psywavedamageeffect(void) +static void atkA0_psywavedamageeffect(void) { s32 randDamage; @@ -7693,7 +7693,7 @@ void atkA0_psywavedamageeffect(void) ++gBattlescriptCurrInstr; } -void atkA1_counterdamagecalculator(void) +static void atkA1_counterdamagecalculator(void) { u8 sideAttacker = GetBattlerSide(gBattlerAttacker); u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBattlerId); @@ -7719,7 +7719,7 @@ void atkA1_counterdamagecalculator(void) } // a copy of atkA1 with the physical -> special field changes -void atkA2_mirrorcoatdamagecalculator(void) +static void atkA2_mirrorcoatdamagecalculator(void) { u8 sideAttacker = GetBattlerSide(gBattlerAttacker); u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBattlerId); @@ -7740,7 +7740,7 @@ void atkA2_mirrorcoatdamagecalculator(void) } } -void atkA3_disablelastusedattack(void) +static void atkA3_disablelastusedattack(void) { s32 i; @@ -7764,7 +7764,7 @@ void atkA3_disablelastusedattack(void) } } -void atkA4_trysetencore(void) +static void atkA4_trysetencore(void) { s32 i; @@ -7791,7 +7791,7 @@ void atkA4_trysetencore(void) } } -void atkA5_painsplitdmgcalc(void) +static void atkA5_painsplitdmgcalc(void) { if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)) { @@ -7813,7 +7813,7 @@ void atkA5_painsplitdmgcalc(void) } } -void atkA6_settypetorandomresistance(void) // conversion 2 +static void atkA6_settypetorandomresistance(void) // conversion 2 { if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE || gLastLandedMoves[gBattlerAttacker] == 0xFFFF) @@ -7869,7 +7869,7 @@ void atkA6_settypetorandomresistance(void) // conversion 2 } } -void atkA7_setalwayshitflag(void) +static void atkA7_setalwayshitflag(void) { gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS); gStatuses3[gBattlerTarget] |= 0x10; @@ -7877,7 +7877,7 @@ void atkA7_setalwayshitflag(void) ++gBattlescriptCurrInstr; } -void atkA8_copymovepermanently(void) // sketch +static void atkA8_copymovepermanently(void) // sketch { gChosenMove = 0xFFFF; if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) @@ -7924,7 +7924,7 @@ void atkA8_copymovepermanently(void) // sketch } } -bool8 IsTwoTurnsMove(u16 move) +static bool8 IsTwoTurnsMove(u16 move) { if (gBattleMoves[move].effect == EFFECT_SKULL_BASH || gBattleMoves[move].effect == EFFECT_RAZOR_WIND @@ -7937,7 +7937,7 @@ bool8 IsTwoTurnsMove(u16 move) return FALSE; } -bool8 IsInvalidForSleepTalkOrAssist(u16 move) +static bool8 IsInvalidForSleepTalkOrAssist(u16 move) { if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) @@ -7946,7 +7946,7 @@ bool8 IsInvalidForSleepTalkOrAssist(u16 move) return FALSE; } -u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 +static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 { // first argument is unused if (gBattleMoves[move].effect == EFFECT_SOLARBEAM @@ -7963,7 +7963,7 @@ u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging return 2; } -void atkA9_trychoosesleeptalkmove(void) +static void atkA9_trychoosesleeptalkmove(void) { s32 i; u8 unusableMovesBits = 0; @@ -7998,13 +7998,13 @@ void atkA9_trychoosesleeptalkmove(void) } } -void atkAA_setdestinybond(void) +static void atkAA_setdestinybond(void) { gBattleMons[gBattlerAttacker].status2 |= STATUS2_DESTINY_BOND; ++gBattlescriptCurrInstr; } -void TrySetDestinyBondToHappen(void) +static void TrySetDestinyBondToHappen(void) { u8 sideAttacker = GetBattlerSide(gBattlerAttacker); u8 sideTarget = GetBattlerSide(gBattlerTarget); @@ -8015,13 +8015,13 @@ void TrySetDestinyBondToHappen(void) gHitMarker |= HITMARKER_DESTINYBOND; } -void atkAB_trysetdestinybondtohappen(void) +static void atkAB_trysetdestinybondtohappen(void) { TrySetDestinyBondToHappen(); ++gBattlescriptCurrInstr; } -void atkAC_remaininghptopower(void) +static void atkAC_remaininghptopower(void) { s32 i; s32 hpFraction = GetScaledHPFraction(gBattleMons[gBattlerAttacker].hp, gBattleMons[gBattlerAttacker].maxHP, 48); @@ -8035,7 +8035,7 @@ void atkAC_remaininghptopower(void) ++gBattlescriptCurrInstr; } -void atkAD_tryspiteppreduce(void) +static void atkAD_tryspiteppreduce(void) { if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != 0xFFFF) { @@ -8076,7 +8076,7 @@ void atkAD_tryspiteppreduce(void) } } -void atkAE_healpartystatus(void) +static void atkAE_healpartystatus(void) { u32 zero = 0; u8 toHeal = 0; @@ -8162,7 +8162,7 @@ void atkAE_healpartystatus(void) ++gBattlescriptCurrInstr; } -void atkAF_cursetarget(void) +static void atkAF_cursetarget(void) { if (gBattleMons[gBattlerTarget].status2 & STATUS2_CURSED) { @@ -8178,7 +8178,7 @@ void atkAF_cursetarget(void) } } -void atkB0_trysetspikes(void) +static void atkB0_trysetspikes(void) { u8 targetSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; @@ -8195,13 +8195,13 @@ void atkB0_trysetspikes(void) } } -void atkB1_setforesight(void) +static void atkB1_setforesight(void) { gBattleMons[gBattlerTarget].status2 |= STATUS2_FORESIGHT; ++gBattlescriptCurrInstr; } -void atkB2_trysetperishsong(void) +static void atkB2_trysetperishsong(void) { s32 i; s32 notAffectedCount = 0; @@ -8227,7 +8227,7 @@ void atkB2_trysetperishsong(void) gBattlescriptCurrInstr += 5; } -void atkB3_rolloutdamagecalculation(void) +static void atkB3_rolloutdamagecalculation(void) { if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) { @@ -8256,7 +8256,7 @@ void atkB3_rolloutdamagecalculation(void) } } -void atkB4_jumpifconfusedandstatmaxed(void) +static void atkB4_jumpifconfusedandstatmaxed(void) { if (gBattleMons[gBattlerTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBattlerTarget].statStages[gBattlescriptCurrInstr[1]] == 12) @@ -8265,7 +8265,7 @@ void atkB4_jumpifconfusedandstatmaxed(void) gBattlescriptCurrInstr += 6; } -void atkB5_furycuttercalc(void) +static void atkB5_furycuttercalc(void) { if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) { @@ -8286,7 +8286,7 @@ void atkB5_furycuttercalc(void) } } -void atkB6_happinesstodamagecalculation(void) +static void atkB6_happinesstodamagecalculation(void) { if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25; @@ -8295,7 +8295,7 @@ void atkB6_happinesstodamagecalculation(void) ++gBattlescriptCurrInstr; } -void atkB7_presentdamagecalculation(void) +static void atkB7_presentdamagecalculation(void) { s32 rand = Random() & 0xFF; @@ -8333,7 +8333,7 @@ void atkB7_presentdamagecalculation(void) } } -void atkB8_setsafeguard(void) +static void atkB8_setsafeguard(void) { if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_SAFEGUARD) { @@ -8350,7 +8350,7 @@ void atkB8_setsafeguard(void) ++gBattlescriptCurrInstr; } -void atkB9_magnitudedamagecalculation(void) +static void atkB9_magnitudedamagecalculation(void) { s32 magnitude = Random() % 100; @@ -8400,7 +8400,7 @@ void atkB9_magnitudedamagecalculation(void) ++gBattlescriptCurrInstr; } -void atkBA_jumpifnopursuitswitchdmg(void) +static void atkBA_jumpifnopursuitswitchdmg(void) { if (gMultiHitCounter == 1) { @@ -8440,7 +8440,7 @@ void atkBA_jumpifnopursuitswitchdmg(void) } } -void atkBB_setsunny(void) +static void atkBB_setsunny(void) { if (gBattleWeather & WEATHER_SUN_ANY) { @@ -8456,7 +8456,7 @@ void atkBB_setsunny(void) ++gBattlescriptCurrInstr; } -void atkBC_maxattackhalvehp(void) // belly drum +static void atkBC_maxattackhalvehp(void) // belly drum { u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2; @@ -8477,7 +8477,7 @@ void atkBC_maxattackhalvehp(void) // belly drum } } -void atkBD_copyfoestats(void) // psych up +static void atkBD_copyfoestats(void) // psych up { s32 i; @@ -8486,7 +8486,7 @@ void atkBD_copyfoestats(void) // psych up gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter. } -void atkBE_rapidspinfree(void) +static void atkBE_rapidspinfree(void) { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_WRAPPED) { @@ -8521,13 +8521,13 @@ void atkBE_rapidspinfree(void) } } -void atkBF_setdefensecurlbit(void) +static void atkBF_setdefensecurlbit(void) { gBattleMons[gBattlerAttacker].status2 |= STATUS2_DEFENSE_CURL; ++gBattlescriptCurrInstr; } -void atkC0_recoverbasedonsunlight(void) +static void atkC0_recoverbasedonsunlight(void) { gBattlerTarget = gBattlerAttacker; if (gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP) @@ -8551,7 +8551,7 @@ void atkC0_recoverbasedonsunlight(void) } } -void atkC1_hiddenpowercalc(void) +static void atkC1_hiddenpowercalc(void) { s32 powerBits, typeBits; @@ -8575,7 +8575,7 @@ void atkC1_hiddenpowercalc(void) ++gBattlescriptCurrInstr; } -void atkC2_selectfirstvalidtarget(void) +static void atkC2_selectfirstvalidtarget(void) { for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) { @@ -8587,7 +8587,7 @@ void atkC2_selectfirstvalidtarget(void) ++gBattlescriptCurrInstr; } -void atkC3_trysetfutureattack(void) +static void atkC3_trysetfutureattack(void) { if (gWishFutureKnock.futureSightCounter[gBattlerTarget] != 0) { @@ -8616,7 +8616,7 @@ void atkC3_trysetfutureattack(void) } } -void atkC4_trydobeatup(void) +static void atkC4_trydobeatup(void) { struct Pokemon *party; @@ -8660,7 +8660,7 @@ void atkC4_trydobeatup(void) } } -void atkC5_setsemiinvulnerablebit(void) +static void atkC5_setsemiinvulnerablebit(void) { switch (gCurrentMove) { @@ -8678,7 +8678,7 @@ void atkC5_setsemiinvulnerablebit(void) ++gBattlescriptCurrInstr; } -void atkC6_clearsemiinvulnerablebit(void) +static void atkC6_clearsemiinvulnerablebit(void) { switch (gCurrentMove) { @@ -8696,14 +8696,14 @@ void atkC6_clearsemiinvulnerablebit(void) ++gBattlescriptCurrInstr; } -void atkC7_setminimize(void) +static void atkC7_setminimize(void) { if (gHitMarker & HITMARKER_OBEYS) gStatuses3[gBattlerAttacker] |= STATUS3_MINIMIZED; ++gBattlescriptCurrInstr; } -void atkC8_sethail(void) +static void atkC8_sethail(void) { if (gBattleWeather & WEATHER_HAIL_ANY) { @@ -8719,7 +8719,7 @@ void atkC8_sethail(void) ++gBattlescriptCurrInstr; } -void atkC9_jumpifattackandspecialattackcannotfall(void) // memento +static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento { if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == 0 && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == 0 @@ -8737,14 +8737,14 @@ void atkC9_jumpifattackandspecialattackcannotfall(void) // memento } } -void atkCA_setforcedtarget(void) // follow me +static void atkCA_setforcedtarget(void) // follow me { gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTimer = 1; gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTarget = gBattlerAttacker; ++gBattlescriptCurrInstr; } -void atkCB_setcharge(void) +static void atkCB_setcharge(void) { gStatuses3[gBattlerAttacker] |= STATUS3_CHARGED_UP; gDisableStructs[gBattlerAttacker].chargeTimer = 2; @@ -8752,7 +8752,7 @@ void atkCB_setcharge(void) ++gBattlescriptCurrInstr; } -void atkCC_callterrainattack(void) // nature power +static void atkCC_callterrainattack(void) // nature power { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = sNaturePowerMoves[gBattleTerrain]; @@ -8761,7 +8761,7 @@ void atkCC_callterrainattack(void) // nature power ++gBattlescriptCurrInstr; } -void atkCD_cureifburnedparalysedorpoisoned(void) // refresh +static void atkCD_cureifburnedparalysedorpoisoned(void) // refresh { if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) { @@ -8777,7 +8777,7 @@ void atkCD_cureifburnedparalysedorpoisoned(void) // refresh } } -void atkCE_settorment(void) +static void atkCE_settorment(void) { if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) { @@ -8790,7 +8790,7 @@ void atkCE_settorment(void) } } -void atkCF_jumpifnodamage(void) +static void atkCF_jumpifnodamage(void) { if (gProtectStructs[gBattlerAttacker].physicalDmg || gProtectStructs[gBattlerAttacker].specialDmg) gBattlescriptCurrInstr += 5; @@ -8798,7 +8798,7 @@ void atkCF_jumpifnodamage(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -void atkD0_settaunt(void) +static void atkD0_settaunt(void) { if (gDisableStructs[gBattlerTarget].tauntTimer == 0) { @@ -8812,7 +8812,7 @@ void atkD0_settaunt(void) } } -void atkD1_trysethelpinghand(void) +static void atkD1_trysethelpinghand(void) { gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE @@ -8829,7 +8829,7 @@ void atkD1_trysethelpinghand(void) } } -void atkD2_tryswapitems(void) // trick +static void atkD2_tryswapitems(void) // trick { // opponent can't swap items with player in regular battles if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER @@ -8903,7 +8903,7 @@ void atkD2_tryswapitems(void) // trick } } -void atkD3_trycopyability(void) // role play +static void atkD3_trycopyability(void) // role play { if (gBattleMons[gBattlerTarget].ability != ABILITY_NONE && gBattleMons[gBattlerTarget].ability != ABILITY_WONDER_GUARD) { @@ -8917,7 +8917,7 @@ void atkD3_trycopyability(void) // role play } } -void atkD4_trywish(void) +static void atkD4_trywish(void) { switch (gBattlescriptCurrInstr[1]) { @@ -8947,7 +8947,7 @@ void atkD4_trywish(void) } } -void atkD5_trysetroots(void) // ingrain +static void atkD5_trysetroots(void) // ingrain { if (gStatuses3[gBattlerAttacker] & STATUS3_ROOTED) { @@ -8960,7 +8960,7 @@ void atkD5_trysetroots(void) // ingrain } } -void atkD6_doubledamagedealtifdamaged(void) +static void atkD6_doubledamagedealtifdamaged(void) { if ((gProtectStructs[gBattlerAttacker].physicalDmg != 0 && gProtectStructs[gBattlerAttacker].physicalBattlerId == gBattlerTarget) @@ -8972,7 +8972,7 @@ void atkD6_doubledamagedealtifdamaged(void) ++gBattlescriptCurrInstr; } -void atkD7_setyawn(void) +static void atkD7_setyawn(void) { if (gStatuses3[gBattlerTarget] & STATUS3_YAWN || gBattleMons[gBattlerTarget].status1 & STATUS1_ANY) @@ -8986,7 +8986,7 @@ void atkD7_setyawn(void) } } -void atkD8_setdamagetohealthdifference(void) +static void atkD8_setdamagetohealthdifference(void) { if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp) { @@ -8999,7 +8999,7 @@ void atkD8_setdamagetohealthdifference(void) } } -void atkD9_scaledamagebyhealthratio(void) +static void atkD9_scaledamagebyhealthratio(void) { if (gDynamicBasePower == 0) { @@ -9012,7 +9012,7 @@ void atkD9_scaledamagebyhealthratio(void) ++gBattlescriptCurrInstr; } -void atkDA_tryswapabilities(void) // skill swap +static void atkDA_tryswapabilities(void) // skill swap { if ((gBattleMons[gBattlerAttacker].ability == 0 && gBattleMons[gBattlerTarget].ability == 0) @@ -9033,7 +9033,7 @@ void atkDA_tryswapabilities(void) // skill swap } } -void atkDB_tryimprison(void) +static void atkDB_tryimprison(void) { if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) { @@ -9077,7 +9077,7 @@ void atkDB_tryimprison(void) } } -void atkDC_trysetgrudge(void) +static void atkDC_trysetgrudge(void) { if (gStatuses3[gBattlerAttacker] & STATUS3_GRUDGE) { @@ -9090,7 +9090,7 @@ void atkDC_trysetgrudge(void) } } -void atkDD_weightdamagecalculation(void) +static void atkDD_weightdamagecalculation(void) { s32 i; @@ -9106,7 +9106,7 @@ void atkDD_weightdamagecalculation(void) ++gBattlescriptCurrInstr; } -void atkDE_assistattackselect(void) +static void atkDE_assistattackselect(void) { s32 chooseableMovesNo = 0; struct Pokemon *party; @@ -9150,7 +9150,7 @@ void atkDE_assistattackselect(void) } } -void atkDF_trysetmagiccoat(void) +static void atkDF_trysetmagiccoat(void) { gBattlerTarget = gBattlerAttacker; gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; @@ -9165,7 +9165,7 @@ void atkDF_trysetmagiccoat(void) } } -void atkE0_trysetsnatch(void) // snatch +static void atkE0_trysetsnatch(void) // snatch { gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn @@ -9179,7 +9179,7 @@ void atkE0_trysetsnatch(void) // snatch } } -void atkE1_trygetintimidatetarget(void) +static void atkE1_trygetintimidatetarget(void) { u8 side; @@ -9199,7 +9199,7 @@ void atkE1_trygetintimidatetarget(void) gBattlescriptCurrInstr += 5; } -void atkE2_switchoutabilities(void) +static void atkE2_switchoutabilities(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); switch (gBattleMons[gActiveBattler].ability) @@ -9213,7 +9213,7 @@ void atkE2_switchoutabilities(void) gBattlescriptCurrInstr += 2; } -void atkE3_jumpifhasnohp(void) +static void atkE3_jumpifhasnohp(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); @@ -9223,7 +9223,7 @@ void atkE3_jumpifhasnohp(void) gBattlescriptCurrInstr += 6; } -void atkE4_getsecretpowereffect(void) +static void atkE4_getsecretpowereffect(void) { switch (gBattleTerrain) { @@ -9258,7 +9258,7 @@ void atkE4_getsecretpowereffect(void) ++gBattlescriptCurrInstr; } -void atkE5_pickup(void) +static void atkE5_pickup(void) { s32 i; u32 j; @@ -9286,7 +9286,7 @@ void atkE5_pickup(void) ++gBattlescriptCurrInstr; } -void atkE6_docastformchangeanimation(void) +static void atkE6_docastformchangeanimation(void) { gActiveBattler = gBattleScripting.battler; if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) @@ -9296,7 +9296,7 @@ void atkE6_docastformchangeanimation(void) ++gBattlescriptCurrInstr; } -void atkE7_trycastformdatachange(void) +static void atkE7_trycastformdatachange(void) { u8 form; @@ -9309,7 +9309,7 @@ void atkE7_trycastformdatachange(void) } } -void atkE8_settypebasedhalvers(void) // water and mud sport +static void atkE8_settypebasedhalvers(void) // water and mud sport { bool8 worked = FALSE; @@ -9337,7 +9337,7 @@ void atkE8_settypebasedhalvers(void) // water and mud sport gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -void atkE9_setweatherballtype(void) +static void atkE9_setweatherballtype(void) { if (WEATHER_HAS_EFFECT) { @@ -9357,7 +9357,7 @@ void atkE9_setweatherballtype(void) ++gBattlescriptCurrInstr; } -void atkEA_tryrecycleitem(void) +static void atkEA_tryrecycleitem(void) { u16 *usedHeldItem; @@ -9378,7 +9378,7 @@ void atkEA_tryrecycleitem(void) } } -void atkEB_settypetoterrain(void) +static void atkEB_settypetoterrain(void) { if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain])) { @@ -9392,7 +9392,7 @@ void atkEB_settypetoterrain(void) } } -void atkEC_pursuitrelated(void) +static void atkEC_pursuitrelated(void) { gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); @@ -9414,7 +9414,7 @@ void atkEC_pursuitrelated(void) } } -void atkED_snatchsetbattlers(void) +static void atkED_snatchsetbattlers(void) { gEffectBattler = gBattlerAttacker; if (gBattlerAttacker == gBattlerTarget) @@ -9425,7 +9425,7 @@ void atkED_snatchsetbattlers(void) ++gBattlescriptCurrInstr; } -void atkEE_removelightscreenreflect(void) // brick break +static void atkEE_removelightscreenreflect(void) // brick break { u8 opposingSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; @@ -9445,3 +9445,410 @@ void atkEE_removelightscreenreflect(void) // brick break } ++gBattlescriptCurrInstr; } + +static void atkEF_handleballthrow(void) +{ + u8 ballMultiplier = 0; + + if (!gBattleControllerExecFlags) + { + gActiveBattler = gBattlerAttacker; + gBattlerTarget = gBattlerAttacker ^ BIT_SIDE; + if (gBattleTypeFlags & BATTLE_TYPE_GHOST) + { + BtlController_EmitBallThrowAnim(0, BALL_GHOST_DODGE); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = BattleScript_GhostBallDodge; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + BtlController_EmitBallThrowAnim(0, BALL_TRAINER_BLOCK); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = BattleScript_TrainerBallBlock; + } + else if (gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_OLDMAN_TUTORIAL)) + { + BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = gUnknown_81D9A88; + } + else + { + u32 odds; + u8 catchRate; + + if (gLastUsedItem == ITEM_SAFARI_BALL) + catchRate = gBattleStruct->safariCatchFactor * 1275 / 100; + else + catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate; + + if (gLastUsedItem > ITEM_SAFARI_BALL) + { + switch (gLastUsedItem) + { + case ITEM_NET_BALL: + if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) + ballMultiplier = 30; + else + ballMultiplier = 10; + break; + case ITEM_DIVE_BALL: + if (GetCurrentMapType() == MAP_TYPE_UNDERWATER) + ballMultiplier = 35; + else + ballMultiplier = 10; + break; + case ITEM_NEST_BALL: + if (gBattleMons[gBattlerTarget].level < 40) + { + ballMultiplier = 40 - gBattleMons[gBattlerTarget].level; + if (ballMultiplier <= 9) + ballMultiplier = 10; + } + else + { + ballMultiplier = 10; + } + break; + case ITEM_REPEAT_BALL: + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) + ballMultiplier = 30; + else + ballMultiplier = 10; + break; + case ITEM_TIMER_BALL: + ballMultiplier = gBattleResults.battleTurnCounter + 10; + if (ballMultiplier > 40) + ballMultiplier = 40; + break; + case ITEM_LUXURY_BALL: + case ITEM_PREMIER_BALL: + ballMultiplier = 10; + break; + } + } + else + ballMultiplier = sBallCatchBonuses[gLastUsedItem - 2]; + odds = (catchRate * ballMultiplier / 10) + * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2) + / (3 * gBattleMons[gBattlerTarget].maxHP); + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) + odds *= 2; + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) + odds = (odds * 15) / 10; + if (gLastUsedItem != ITEM_SAFARI_BALL) + { + if (gLastUsedItem == ITEM_MASTER_BALL) + { + gBattleResults.usedMasterBall = TRUE; + } + else + { + if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF) + gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++; + } + } + if (odds > 254) // mon caught + { + BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS); + MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else // mon may be caught, calculate shakes + { + u8 shakes; + + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; + for (shakes = 0; shakes < 4 && Random() < odds; ++shakes); + if (gLastUsedItem == ITEM_MASTER_BALL) + shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check? + BtlController_EmitBallThrowAnim(0, shakes); + MarkBattlerForControllerExec(gActiveBattler); + if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above + { + gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; + SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem); + if (CalculatePlayerPartyCount() == 6) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else // not caught + { + gBattleCommunication[MULTISTRING_CHOOSER] = shakes; + gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; + } + } + } + } +} + +static void atkF0_givecaughtmon(void) +{ + if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY) + { + if (!sub_80CC7B4()) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_0x4037))); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + } + else + { + StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_0x4037))); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id())); + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC)) + ++gBattleCommunication[MULTISTRING_CHOOSER]; + } + gBattleResults.caughtMonSpecies = gBattleMons[gBattlerAttacker ^ BIT_SIDE].species; + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick); + ++gBattlescriptCurrInstr; +} + +static void atkF1_trysetcaughtmondexflags(void) +{ + u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL); + + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality); + gBattlescriptCurrInstr += 5; + } +} + +static void atkF2_displaydexinfo(void) +{ + u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); + + switch (gBattleCommunication[0]) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITE); + ++gBattleCommunication[0]; + break; + case 1: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + gBattleCommunication[TASK_ID] = sub_8106B60(species); + ++gBattleCommunication[0]; + } + break; + case 2: + if (!gPaletteFade.active + && gMain.callback2 == BattleMainCB2 + && !gTasks[gBattleCommunication[TASK_ID]].isActive) + { + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + SetVBlankCallback(VBlankCB_Battle); + ++gBattleCommunication[0]; + } + break; + case 3: + sub_800F34C(); + LoadBattleTextboxAndBackground(); + gBattle_BG3_X = 0x100; + ++gBattleCommunication[0]; + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + { + CreateMonPicSprite_HandleDeoxys(species, + gBattleMons[B_POSITION_OPPONENT_LEFT].otId, + gBattleMons[B_POSITION_OPPONENT_LEFT].personality, + TRUE, + 120, + 64, + 0, + 0xFFFF); + CpuFill32(0, gPlttBufferFaded, BG_PLTT_SIZE); + BeginNormalPaletteFade(0x1FFFF, 0, 0x10, 0, RGB_BLACK); + ShowBg(0); + ShowBg(3); + ++gBattleCommunication[0]; + } + break; + case 5: + if (!gPaletteFade.active) + ++gBattlescriptCurrInstr; + break; + } +} + +void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags) +{ + s32 destY, destX; + u16 var = 0; + + for (destY = yStart; destY <= yEnd; ++destY) + { + for (destX = xStart; destX <= xEnd; ++destX) + { + if (destY == yStart) + { + if (destX == xStart) + var = 0x1022; + else if (destX == xEnd) + var = 0x1024; + else + var = 0x1023; + } + else if (destY == yEnd) + { + if (destX == xStart) + var = 0x1028; + else if (destX == xEnd) + var = 0x102A; + else + var = 0x1029; + } + else + { + if (destX == xStart) + var = 0x1025; + else if (destX == xEnd) + var = 0x1027; + else + var = 0x1026; + } + if (flags & WINDOW_CLEAR) + var = 0; + if (flags & WINDOW_x80) + CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11); + else + CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11); + } + } + CopyBgTilemapBufferToVram(1); +} + +void BattleCreateYesNoCursorAt(void) +{ + u16 src[2]; + + src[0] = 1; + src[1] = 2; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x18, 9 + (2 * gBattleCommunication[1]), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +void BattleDestroyYesNoCursorAt(void) +{ + u16 src[2]; + + src[0] = 32; + src[1] = 32; + CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x18, 9 + (2 * gBattleCommunication[1]), 1, 2, 0x11); + CopyBgTilemapBufferToVram(0); +} + +static void atkF3_trygivecaughtmonnick(void) +{ + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); + BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + break; + case 1: + if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 0; + BattleCreateYesNoCursorAt(); + } + if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + { + PlaySE(SE_SELECT); + BattleDestroyYesNoCursorAt(); + gBattleCommunication[CURSOR_POSITION] = 1; + BattleCreateYesNoCursorAt(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gBattleCommunication[CURSOR_POSITION] == 0) + { + ++gBattleCommunication[MULTIUSE_STATE]; + BeginFastPaletteFade(3); + } + else + { + gBattleCommunication[MULTIUSE_STATE] = 4; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gBattleCommunication[MULTIUSE_STATE] = 4; + } + break; + case 2: + if (!gPaletteFade.active) + { + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + FreeAllWindowBuffers(); + DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick, + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES), + GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]), + GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL), + BattleMainCB2); + ++gBattleCommunication[MULTIUSE_STATE]; + } + break; + case 3: + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + break; + case 4: + if (CalculatePlayerPartyCount() == PARTY_SIZE) + gBattlescriptCurrInstr += 5; + else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + break; + } +} + +static void atkF4_subattackerhpbydmg(void) +{ + gBattleMons[gBattlerAttacker].hp -= gBattleMoveDamage; + ++gBattlescriptCurrInstr; +} + +static void atkF5_removeattackerstatus1(void) +{ + gBattleMons[gBattlerAttacker].status1 = 0; + ++gBattlescriptCurrInstr; +} + +static void atkF6_finishaction(void) +{ + gCurrentActionFuncId = B_ACTION_FINISHED; +} + +static void atkF7_finishturn(void) +{ + gCurrentActionFuncId = B_ACTION_FINISHED; + gCurrentTurnActionNumber = gBattlersCount; +} From c2c210401a024cb3c158b450a77925162e25d7bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Aug 2019 10:54:30 -0400 Subject: [PATCH 032/100] Simplify berry_fix includes --- berry_fix/payload/asm/crt0.s | 5 +- berry_fix/payload/asm/libagbsyscall.s | 4 +- berry_fix/payload/asm/macros.inc | 155 -- berry_fix/payload/asm/macros/asm.inc | 17 - .../payload/asm/macros/battle_ai_script.inc | 554 ------- berry_fix/payload/asm/macros/battle_anim.inc | 266 --- .../payload/asm/macros/battle_script.inc | 1228 -------------- .../payload/asm/macros/contest_ai_script.inc | 506 ------ berry_fix/payload/asm/macros/ec.inc | 8 - berry_fix/payload/asm/macros/event.inc | 1433 ----------------- .../asm/macros/field_effect_script.inc | 42 - berry_fix/payload/asm/macros/m4a.inc | 13 - berry_fix/payload/asm/macros/map.inc | 84 - berry_fix/payload/asm/macros/movement.inc | 120 -- berry_fix/payload/asm/macros/music_voice.inc | 125 -- berry_fix/payload/asm/macros/pokemon_data.inc | 57 - 16 files changed, 4 insertions(+), 4613 deletions(-) delete mode 100644 berry_fix/payload/asm/macros.inc delete mode 100644 berry_fix/payload/asm/macros/asm.inc delete mode 100644 berry_fix/payload/asm/macros/battle_ai_script.inc delete mode 100644 berry_fix/payload/asm/macros/battle_anim.inc delete mode 100644 berry_fix/payload/asm/macros/battle_script.inc delete mode 100644 berry_fix/payload/asm/macros/contest_ai_script.inc delete mode 100644 berry_fix/payload/asm/macros/ec.inc delete mode 100644 berry_fix/payload/asm/macros/event.inc delete mode 100644 berry_fix/payload/asm/macros/field_effect_script.inc delete mode 100644 berry_fix/payload/asm/macros/m4a.inc delete mode 100644 berry_fix/payload/asm/macros/map.inc delete mode 100644 berry_fix/payload/asm/macros/movement.inc delete mode 100644 berry_fix/payload/asm/macros/music_voice.inc delete mode 100644 berry_fix/payload/asm/macros/pokemon_data.inc diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s index 73da8a38f..edbb83328 100644 --- a/berry_fix/payload/asm/crt0.s +++ b/berry_fix/payload/asm/crt0.s @@ -1,6 +1,5 @@ - .include "../../asm/macros/asm.inc" - .include "../../asm/macros/function.inc" - .include "../../constants/gba_constants.inc" + .include "asm/macros/function.inc" + .include "constants/gba_constants.inc" .syntax unified diff --git a/berry_fix/payload/asm/libagbsyscall.s b/berry_fix/payload/asm/libagbsyscall.s index 0368c7e70..e20f370d0 100644 --- a/berry_fix/payload/asm/libagbsyscall.s +++ b/berry_fix/payload/asm/libagbsyscall.s @@ -1,5 +1,5 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "asm/macros/function.inc" + .include "constants/gba_constants.inc" .syntax unified diff --git a/berry_fix/payload/asm/macros.inc b/berry_fix/payload/asm/macros.inc deleted file mode 100644 index e6813d319..000000000 --- a/berry_fix/payload/asm/macros.inc +++ /dev/null @@ -1,155 +0,0 @@ - .include "asm/macros/asm.inc" - .include "asm/macros/function.inc" - .include "asm/macros/movement.inc" - .include "asm/macros/pokemon_data.inc" - .include "asm/macros/ec.inc" - .include "asm/macros/map.inc" - .include "asm/macros/m4a.inc" - - .macro region_map_location x, y, width, height, name - .byte \x - .byte \y - .byte \width - .byte \height - .4byte gMapName_\name - .endm - - .macro obj_tiles address, uncompressed_size, tag - .4byte \address - .2byte \uncompressed_size - .2byte \tag - .endm - - .macro null_obj_tiles - obj_tiles 0, 0, 0 - .endm - - .macro obj_pal address, tag - .4byte \address - .2byte \tag - .2byte 0 @ padding - .endm - - .macro null_obj_pal - obj_pal 0, 0 - .endm - - .macro paired_pals tag, address - .2byte \tag - .2byte 0 @ padding - .4byte \address - .endm - -@ For object animation frames. - .macro obj_frame_tiles address, uncompressed_size - .4byte \address - .2byte \uncompressed_size - .2byte 0 @ padding - .endm - - .macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback - .2byte \tile_tag - .2byte \pal_tag - .4byte \oam - .4byte \anims - .4byte \images - .4byte \affine_anims - .4byte \callback - .endm - -@ Berry trees have a table defining the palette slot used for each of their 5 -@ stages. However, the first 2 stages always use the same slots regardless of -@ the type of tree and the slots of the last 3 stages always equal each other. - .macro berry_tree_palette_slot_table slot - .byte 3, 4, \slot, \slot, \slot - .endm - - .macro subsprite x, y, priority, tile_num_offset, size - .2byte \x - .2byte \y - .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size - .2byte 0 @ padding - .endm - - .macro obj_image_anim_frame pic_id, duration, flags = 0 - .2byte \pic_id - .byte (\flags) | (\duration) - .byte 0 @ padding - .endm - - .macro obj_image_anim_loop count - .2byte 0xfffd - .byte \count - .byte 0 @ padding - .endm - - .macro obj_image_anim_jump target_index - .2byte 0xfffe - .byte \target_index - .byte 0 @ padding - .endm - - .macro obj_image_anim_end - .2byte 0xffff - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration - .2byte \delta_x_scale - .2byte \delta_y_scale - .byte \delta_angle - .byte \duration - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_loop count - .2byte 0x7ffd - .2byte \count - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_jump target_index - .2byte 0x7ffe - .2byte \target_index - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_end unknown=0 - .2byte 0x7fff - .2byte \unknown - .fill 4 @ padding - .endm - - .macro credits_entry number, text - .4byte \number - .4byte \text - .endm - - .macro door_anim_frame unknown, offset - .byte \unknown - .byte 0 @ padding - .2byte \offset - .endm - - .macro door_anim_gfx metatile_num, unknown, tile_addr, palette_addr - .2byte \metatile_num - .2byte \unknown - .4byte \tile_addr - .4byte \palette_addr - .endm - - .macro trainer_eye_trainer opp_1, opp_2, opp_3, opp_4, opp_5, map_name - .2byte OPPONENT_\opp_1 - .2byte OPPONENT_\opp_2 - .2byte OPPONENT_\opp_3 - .2byte OPPONENT_\opp_4 - .2byte OPPONENT_\opp_5 - .2byte GROUP_\map_name - .2byte MAP_\map_name - .space 2 - .endm - - .macro window_template bg, top, left, height, width, palno, baseBlock - .byte \bg, \top, \left, \height, \width, \palno - .2byte \baseBlock - .endm diff --git a/berry_fix/payload/asm/macros/asm.inc b/berry_fix/payload/asm/macros/asm.inc deleted file mode 100644 index 26b2707ca..000000000 --- a/berry_fix/payload/asm/macros/asm.inc +++ /dev/null @@ -1,17 +0,0 @@ - .ifndef GUARD_ASM_MACROS_ASM_INC - .set GUARD_ASM_MACROS_ASM_INC, 1 - - .macro inc x - .set \x, \x + 1 - .endm - - .macro enum_start x=0 - .set __enum__, \x - .endm - - .macro enum constant - .equiv \constant, __enum__ - inc __enum__ - .endm - - .endif @ GUARD_ASM_MACROS_ASM_INC diff --git a/berry_fix/payload/asm/macros/battle_ai_script.inc b/berry_fix/payload/asm/macros/battle_ai_script.inc deleted file mode 100644 index 679e30340..000000000 --- a/berry_fix/payload/asm/macros/battle_ai_script.inc +++ /dev/null @@ -1,554 +0,0 @@ - .macro if_random_less_than percent, address - .byte 0x00 - .byte \percent - .4byte \address - .endm - - @ unused - .macro if_random_greater_than percent, address - .byte 0x01 - .byte \percent - .4byte \address - .endm - - @ unused - .macro if_random_equal address - .byte 0x02 - .4byte \address - .endm - - @ unused - .macro if_random_not_equal address - .byte 0x03 - .4byte \address - .endm - - .macro score score - .byte 0x04 - .byte \score - .endm - - .macro if_hp_less_than target, percent, address - .byte 0x05 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_more_than target, percent, address - .byte 0x06 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_equal target, percent, address - .byte 0x07 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_not_equal target, percent, address - .byte 0x08 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_status target, status, address - .byte 0x09 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status target, status, address - .byte 0x0a - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status2 target, status, address - .byte 0x0b - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status2 target, status, address - .byte 0x0c - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status3 target, status, address - .byte 0x0d - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status3 target, status, address - .byte 0x0e - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status4 target, status, address - .byte 0x0f - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status4 target, status, address - .byte 0x10 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_less_than value, address - .byte 0x11 - .byte \value - .4byte \address - .endm - - .macro if_more_than value, address - .byte 0x12 - .byte \value - .4byte \address - .endm - - .macro if_equal value, address - .byte 0x13 - .byte \value - .4byte \address - .endm - - .macro if_not_equal value, address - .byte 0x14 - .byte \value - .4byte \address - .endm - - .macro if_less_than_32 value, address - .byte 0x15 - .4byte \value - .4byte \address - .endm - - .macro if_more_than_32 value, address - .byte 0x16 - .4byte \value - .4byte \address - .endm - - .macro if_equal_32 value, address - .byte 0x17 - .4byte \value - .4byte \address - .endm - - .macro if_not_equal_32 value, address - .byte 0x18 - .4byte \value - .4byte \address - .endm - - .macro if_move move, address - .byte 0x19 - .2byte \move - .4byte \address - .endm - - .macro if_not_move move, address - .byte 0x1a - .2byte \move - .4byte \address - .endm - - .macro if_in_bytes list, address - .byte 0x1b - .4byte \list - .4byte \address - .endm - - .macro if_not_in_bytes list, address - .byte 0x1c - .4byte \list - .4byte \address - .endm - - .macro if_in_words list, address - .byte 0x1d - .4byte \list - .4byte \address - .endm - - .macro if_not_in_words list, address - .byte 0x1e - .4byte \list - .4byte \address - .endm - - .macro if_user_can_damage address - .byte 0x1f - .4byte \address - .endm - - .macro if_user_cant_damage address - .byte 0x20 - .4byte \address - .endm - - .macro get_turn_count - .byte 0x21 - .endm - - .macro get_type byte - .byte 0x22 - .byte \byte - .endm - - @ unused - .macro get_move_power - .byte 0x23 - .endm - - .macro is_most_powerful_move - .byte 0x24 - .endm - - .macro get_move target - .byte 0x25 - .byte \target - .endm - - .macro if_arg_equal type, address - .byte 0x26 - .byte \type - .4byte \address - .endm - - @ unused - .macro if_arg_not_equal type, address - .byte 0x27 - .byte \type - .4byte \address - .endm - - .macro if_would_go_first target, address - .byte 0x28 - .byte \target - .4byte \address - .endm - - .macro if_would_not_go_first target, address - .byte 0x29 - .byte \target - .4byte \address - .endm - - @ nullsub - .macro ai_2a - .byte 0x2a - .endm - - @ nullsub - .macro ai_2b - .byte 0x2b - .endm - - .macro count_alive_pokemon target - .byte 0x2c - .byte \target - .endm - - @ unused - .macro get_considered_move - .byte 0x2d - .endm - - .macro get_effect - .byte 0x2e - .endm - - .macro get_ability target - .byte 0x2f - .byte \target - .endm - - @ unused - .macro get_highest_possible_damage - .byte 0x30 - .endm - - .macro if_damage_bonus value, address - .byte 0x31 - .byte \value - .4byte \address - .endm - - @ nullsub - .macro ai_32 - .byte 0x32 - .endm - - @ nullsub - .macro ai_33 - .byte 0x33 - .endm - - .macro if_status_in_party target, status, address - .byte 0x34 - .byte \target - .4byte \status - .4byte \address - .endm - - @ bugged - .macro if_status_not_in_party target, status, address - .byte 0x35 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro get_weather - .byte 0x36 - .endm - - .macro if_effect byte, address - .byte 0x37 - .byte \byte - .4byte \address - .endm - - .macro if_not_effect byte, address - .byte 0x38 - .byte \byte - .4byte \address - .endm - - .macro if_stat_level_less_than target, stat, level, address - .byte 0x39 - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_more_than target, stat, level, address - .byte 0x3a - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_equal target, stat, level, address - .byte 0x3b - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_not_equal target, stat, level, address - .byte 0x3c - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_can_faint address - .byte 0x3d - .4byte \address - .endm - - .macro if_cant_faint address - .byte 0x3e - .4byte \address - .endm - - @ unused - .macro if_has_move, target, move, address - .byte 0x3f - .byte \target - .2byte \move - .4byte \address - .endm - - @ unused - .macro if_dont_have_move, target, move, address - .byte 0x40 - .byte \target - .2byte \move - .4byte \address - .endm - - .macro if_move_effect target, effect, address - .byte 0x41 - .byte \target - .byte \effect - .4byte \address - .endm - - .macro if_not_move_effect target, effect, address - .byte 0x42 - .byte \target - .byte \effect - .4byte \address - .endm - - .macro if_last_move_did_damage target, byte, address - .byte 0x43 - .byte \target - .byte \byte - .4byte \address - .endm - - .macro if_encored target, address - .byte 0x44 - .byte \target - .4byte \address - .endm - - .macro flee - .byte 0x45 - .endm - - .macro if_random_100 address - .byte 0x46 - .4byte \address - .endm - - .macro watch - .byte 0x47 - .endm - - .macro get_hold_effect target - .byte 0x48 - .byte \target - .endm - - .macro get_gender target - .byte 0x49 - .byte \target - .endm - - .macro is_first_turn target - .byte 0x4a - .byte \target - .endm - - .macro get_stockpile_count target - .byte 0x4b - .byte \target - .endm - - .macro is_double_battle - .byte 0x4c - .endm - - .macro get_item target - .byte 0x4d - .byte \target - .endm - - .macro get_move_type_from_result - .byte 0x4e - .endm - - .macro get_move_power_from_result - .byte 0x4f - .endm - - .macro get_move_effect_from_result - .byte 0x50 - .endm - - .macro get_protect_count target - .byte 0x51 - .byte \target - .endm - - @ nullsub - .macro ai_52 - .byte 0x52 - .endm - - @ nullsub - .macro ai_53 - .byte 0x53 - .endm - - @ nullsub - .macro ai_54 - .byte 0x54 - .endm - - @ nullsub - .macro ai_55 - .byte 0x55 - .endm - - @ nullsub - .macro ai_56 - .byte 0x56 - .endm - - @ nullsub - .macro ai_57 - .byte 0x57 - .endm - - @ unused - .macro call address - .byte 0x58 - .4byte \address - .endm - - .macro jump address - .byte 0x59 - .4byte \address - .endm - - .macro end - .byte 0x5a - .endm - - .macro if_level_cond cond, address - .byte 0x5b - .byte \cond - .4byte \address - .endm - - .macro if_user_higher_level address - if_level_cond 0, \address - .endm - - .macro if_target_higher_level address - if_level_cond 1, \address - .endm - - .macro if_equal_levels address - if_level_cond 2, \address - .endm - - @ unused - .macro if_taunted address - .byte 0x5c - .4byte \address - .endm - - .macro if_not_taunted address - .byte 0x5d - .4byte \address - .endm diff --git a/berry_fix/payload/asm/macros/battle_anim.inc b/berry_fix/payload/asm/macros/battle_anim.inc deleted file mode 100644 index 4ff845032..000000000 --- a/berry_fix/payload/asm/macros/battle_anim.inc +++ /dev/null @@ -1,266 +0,0 @@ - .macro loadsprite id - .byte 0x00 - .2byte \id - .endm - - .macro unloadsprite id - .byte 0x01 - .2byte \id - .endm - - .macro sprite template, priority, argv:vararg - .byte 0x02 - .4byte \template - .byte \priority - .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 -.Lsprite_\@_1: - .2byte \argv -.Lsprite_\@_2: - .endm - - .macro createtask addr, priority, argv:vararg - .byte 0x03 - .4byte \addr - .byte \priority - .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2 -.Lcreatetask_\@_1: - .2byte \argv -.Lcreatetask_\@_2: - .endm - - .macro pause delay - .byte 0x04 - .byte \delay - .endm - - .macro wait - .byte 0x05 - .endm - - .macro hang1 - .byte 0x06 - .endm - - .macro hang2 - .byte 0x07 - .endm - - .macro end - .byte 0x08 - .endm - - .macro playse id - .byte 0x09 - .2byte \id - .endm - - .macro monbg which - .byte 0x0A - .byte \which - .endm - - .macro clearmonbg which - .byte 0x0B - .byte \which - .endm - - .macro setalpha eva, evb - .byte 0x0C - .2byte ((\evb) << 8) | (\eva) - .endm - - .macro blendoff - .byte 0x0D - .endm - - .macro call addr - .byte 0x0E - .4byte \addr - .endm - - .macro ret - .byte 0x0F - .endm - - .macro setvar var_num, value - .byte 0x10 - .byte \var_num - .2byte \value - .endm - - .macro ifelse addr1, addr2 - .byte 0x11 - .4byte \addr1 - .4byte \addr2 - .endm - - .macro jumpif cond, addr - .byte 0x12 - .byte \cond - .4byte \addr - .endm - - .macro jump addr - .byte 0x13 - .4byte \addr - .endm - - .macro fadetobg id - .byte 0x14 - .byte \id - .endm - - .macro restorebg - .byte 0x15 - .endm - - .macro waitbgfadeout - .byte 0x16 - .endm - - .macro waitbgfadein - .byte 0x17 - .endm - - .macro changebg id - .byte 0x18 - .byte \id - .endm - - .macro panse_19 id, pan - .byte 0x19 - .2byte \id - .byte \pan - .endm - - .macro setpan pan - .byte 0x1A - .byte \pan - .endm - - .macro panse_1B id, pan_start, pan_end, step, delay - .byte 0x1B - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro panse_1C id, pan, delay, count - .byte 0x1C - .2byte \id - .byte \pan - .byte \delay - .byte \count - .endm - - .macro panse_1D id, pan, count - .byte 0x1D - .2byte \id - .byte \pan - .byte \count - .endm - - .macro setbldcnt bldcnt - .byte 0x1E - .2byte \bldcnt - .endm - - .macro createtask_1F addr, argv:vararg - .byte 0x1F - .4byte \addr - .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2 -.Lcreatetask_1F_\@_1: - .2byte \argv -.Lcreatetask_1F_\@_2: - .endm - - .macro waitsound - .byte 0x20 - .endm - - .macro jumpvareq var_num, value, addr - .byte 0x21 - .byte \var_num - .2byte \value - .4byte \addr - .endm - - .macro monbg_22 unk - .byte 0x22 - .byte \unk - .endm - - .macro clearmonbg_23 unk - .byte 0x23 - .byte \unk - .endm - - .macro jumpunkcond addr - .byte 0x24 - .4byte \addr - .endm - - .macro fadetobg_25 a, b, c - .byte 0x25 - .byte \a - .byte \b - .byte \c - .endm - - .macro panse_26 id, pan_start, pan_end, step, delay - .byte 0x26 - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro panse_27 id, pan_start, pan_end, step, delay - .byte 0x27 - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro monbgprio_28 unk - .byte 0x28 - .byte \unk - .endm - - .macro monbgprio_29 - .byte 0x29 - .endm - - .macro monbgprio_2A unk - .byte 0x2A - .byte \unk - .endm - - .macro invisible side - .byte 0x2B - .byte \side - .endm - - .macro visible side - .byte 0x2C - .byte \side - .endm - - .macro doublebattle_2D unk - .byte 0x2D - .byte \unk - .endm - - .macro doublebattle_2E unk - .byte 0x2E - .byte \unk - .endm - - .macro stopsound - .byte 0x2F - .endm diff --git a/berry_fix/payload/asm/macros/battle_script.inc b/berry_fix/payload/asm/macros/battle_script.inc deleted file mode 100644 index 5dd1d5a1a..000000000 --- a/berry_fix/payload/asm/macros/battle_script.inc +++ /dev/null @@ -1,1228 +0,0 @@ -@ 0 == -@ 1 != -@ 2 < -@ 3 > -@ 4 &= - - .macro calculatedamage - critical - atk5 - atk6 - atk7 - .endm - - - .macro attackcanceler - .byte 0x00 - .endm - - .macro accuracycheck address, param1 - .byte 0x01 - .4byte \address - .2byte \param1 - .endm - - .macro attackstring - .byte 0x02 - .endm - - .macro ppreduce - .byte 0x03 - .endm - - .macro critcalc - .byte 0x04 - .endm - - .macro atk5 - .byte 0x05 - .endm - - .macro atk6 - .byte 0x06 - .endm - - .macro atk7 - .byte 0x07 - .endm - - .macro atk8 - .byte 0x08 - .endm - - .macro attackanimation - .byte 0x09 - .endm - - .macro waitanimation - .byte 0x0a - .endm - - .macro graphicalhpupdate bank - .byte 0x0b - .byte \bank - .endm - - .macro datahpupdate bank - .byte 0x0c - .byte \bank - .endm - - .macro critmessage - .byte 0x0d - .endm - - .macro missmessage - .byte 0x0e - .endm - - .macro resultmessage - .byte 0x0f - .endm - - .macro printstring string - .byte 0x10 - .2byte \string - .endm - - .macro printstring2 string - .byte 0x11 - .2byte \string - .endm - - .macro waitmessage delay - .byte 0x12 - .2byte \delay - .endm - - .macro printfromtable table - .byte 0x13 - .4byte \table - .endm - - .macro printfromtable2 table - .byte 0x14 - .4byte \table - .endm - - .macro seteffectwithchancetarget - .byte 0x15 - .endm - - .macro seteffecttarget - .byte 0x16 - .endm - - .macro seteffectuser - .byte 0x17 - .endm - - .macro clearstatus bank - .byte 0x18 - .byte \bank - .endm - - .macro faintpokemon bank, param2, param3 - .byte 0x19 - .byte \bank - .byte \param2 - .4byte \param3 - .endm - - .macro atk1a param1 - .byte 0x1a - .byte \param1 - .endm - - .macro atk1b bank - .byte 0x1b - .byte \bank - .endm - - .macro jumpifstatus bank, status, address - .byte 0x1c - .byte \bank - .4byte \status - .4byte \address - .endm - - .macro jumpifsecondarytstatus bank, status, address - .byte 0x1d - .byte \bank - .4byte \status - .4byte \address - .endm - - .macro jumpifability bank, ability, address - .byte 0x1e - .byte \bank - .byte \ability - .4byte \address - .endm - - .macro jumpifhalverset bank, status, address - .byte 0x1f - .byte \bank - .2byte \status - .4byte \address - .endm - - .macro jumpifstat bank, flag, quantity, statid, address - .byte 0x20 - .byte \bank - .byte \flag - .byte \quantity - .byte \statid - .4byte \address - .endm - - .macro jumpifspecialstatusflag bank, mask, status, address - .byte 0x21 - .byte \bank - .4byte \mask - .byte \status - .4byte \address - .endm - - .macro jumpiftype bank, type, address - .byte 0x22 - .byte \bank - .byte \type - .4byte \address - .endm - - .macro atk23 bank - .byte 0x23 - .byte \bank - .endm - - .macro atk24 address - .byte 0x24 - .4byte \address - .endm - - .macro atk25 - .byte 0x25 - .endm - - .macro atk26 param1 - .byte 0x26 - .byte \param1 - .endm - - .macro atk27 address - .byte 0x27 - .4byte \address - .endm - - .macro jump address - .byte 0x28 - .4byte \address - .endm - - .macro jumpifbyte ifflag, checkaddr, compare, address - .byte 0x29 - .byte \ifflag - .4byte \checkaddr - .byte \compare - .4byte \address - .endm - - .macro jumpifhalfword ifflag, checkaddr, compare, address - .byte 0x2a - .byte \ifflag - .4byte \checkaddr - .2byte \compare - .4byte \address - .endm - - .macro jumpifword ifflag, checkaddr, compare, address - .byte 0x2b - .byte \ifflag - .4byte \checkaddr - .4byte \compare - .4byte \address - .endm - - .macro jumpifarrayequal mem1, mem2, size, address - .byte 0x2c - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address - .endm - - .macro jumpifarraynotequal mem1, mem2, size, address - .byte 0x2d - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address - .endm - - .macro setbyte pointer, value - .byte 0x2e - .4byte \pointer - .byte \value - .endm - - .macro addbyte pointer, value - .byte 0x2f - .4byte \pointer - .byte \value - .endm - - .macro subtractbyte pointer, value - .byte 0x30 - .4byte \pointer - .byte \value - .endm - - .macro copyarray destination, source, size - .byte 0x31 - .4byte \destination - .4byte \source - .byte \size - .endm - - .macro atk32 param1, param2, param3, byte - .byte 0x32 - .4byte \param1 - .4byte \param2 - .4byte \param3 - .byte \byte - .endm - - .macro orbyte pointer, value - .byte 0x33 - .4byte \pointer - .byte \value - .endm - - .macro orhalfword pointer, value - .byte 0x34 - .4byte \pointer - .2byte \value - .endm - - .macro orword pointer, value - .byte 0x35 - .4byte \pointer - .4byte \value - .endm - - .macro bicbyte pointer, value - .byte 0x36 - .4byte \pointer - .byte \value - .endm - - .macro bichalfword pointer, value - .byte 0x37 - .4byte \pointer - .2byte \value - .endm - - .macro bicword pointer, value - .byte 0x38 - .4byte \pointer - .4byte \value - .endm - - .macro pause pause_duration - .byte 0x39 - .2byte \pause_duration - .endm - - .macro waitstateatk - .byte 0x3a - .endm - - .macro somethinghealatk3b bank - .byte 0x3b - .byte \bank - .endm - - .macro return - .byte 0x3c - .endm - - .macro end - .byte 0x3d - .endm - - .macro end2 - .byte 0x3e - .endm - - .macro end3 - .byte 0x3f - .endm - - .macro atk40 address - .byte 0x40 - .4byte \address - .endm - - .macro callatk address - .byte 0x41 - .4byte \address - .endm - - .macro jumpiftype2 bank, type, address - .byte 0x42 - .byte \bank - .byte \type - .4byte \address - .endm - - .macro jumpifabilitypresent ability, address - .byte 0x43 - .byte \ability - .4byte \address - .endm - - .macro atk44 - .byte 0x44 - .endm - - .macro playanimation bank, animation, var_address - .byte 0x45 - .byte \bank - .byte \animation - .4byte \var_address - .endm - - .macro atk46 bank, address, int - .byte 0x46 - .byte \bank - .4byte \address - .4byte \int - .endm - - .macro atk47 - .byte 0x47 - .endm - - .macro playstatchangeanimation bank, color, byte - .byte 0x48 - .byte \bank - .byte \color - .byte \byte - .endm - - .macro atk49 byte1, byte2 - .byte 0x49 - .byte \byte1 - .byte \byte2 - .endm - - .macro damagecalc2 - .byte 0x4a - .endm - - .macro atk4b - .byte 0x4b - .endm - - .macro switch1 bank - .byte 0x4c - .byte \bank - .endm - - .macro switch2 bank - .byte 0x4d - .byte \bank - .endm - - .macro switch3 bank, byte - .byte 0x4e - .byte \bank - .byte \byte - .endm - - .macro jumpifcannotswitch bank, address - .byte 0x4f - .byte \bank - .4byte \address - .endm - - .macro openpartyscreen bank, address - .byte 0x50 - .byte \bank - .4byte \address - .endm - - .macro atk51 bank, param2 - .byte 0x51 - .byte \bank - .byte \param2 - .endm - - .macro atk52 bank - .byte 0x52 - .byte \bank - .endm - - .macro atk53 bank - .byte 0x53 - .byte \bank - .endm - - .macro atk54 word - .byte 0x54 - .2byte \word - .endm - - .macro atk55 int - .byte 0x55 - .4byte \int - .endm - - .macro atk56 bank_or_side - .byte 0x56 - .byte \bank_or_side - .endm - - .macro atk57 - .byte 0x57 - .endm - - .macro atk58 bank - .byte 0x58 - .byte \bank - .endm - - .macro checkiflearnmoveinbattle param1, param2, bank_maybe - .byte 0x59 - .4byte \param1 - .4byte \param2 - .byte \bank_maybe - .endm - - .macro atk5a address - .byte 0x5a - .4byte \address - .endm - - .macro atk5b address - .byte 0x5b - .4byte \address - .endm - - .macro atk5c bank - .byte 0x5c - .byte \bank - .endm - - .macro atk5d - .byte 0x5d - .endm - - .macro atk5e bank - .byte 0x5e - .byte \bank - .endm - - .macro atk5f - .byte 0x5f - .endm - - .macro atk60 byte - .byte 0x60 - .byte \byte - .endm - - .macro atk61 bank_or_side - .byte 0x61 - .byte \bank_or_side - .endm - - .macro atk62 bank_or_side - .byte 0x62 - .byte \bank_or_side - .endm - - .macro jumptoattack bank - .byte 0x63 - .byte \bank - .endm - - .macro statusanimation bank - .byte 0x64 - .byte \bank - .endm - - .macro atk65 bank_or_side, address - .byte 0x65 - .byte \bank_or_side - .4byte \address - .endm - - .macro atk66 bank_or_side, bank_or_side2, address - .byte 0x66 - .byte \bank_or_side - .byte \bank_or_side2 - .4byte \address - .endm - - .macro atk67 - .byte 0x67 - .endm - - .macro atk68 - .byte 0x68 - .endm - - .macro atk69 - .byte 0x69 - .endm - - .macro removeitem bank - .byte 0x6a - .byte \bank - .endm - - .macro atk6b - .byte 0x6b - .endm - - .macro atk6c - .byte 0x6c - .endm - - .macro atk6d - .byte 0x6d - .endm - - .macro atk6e - .byte 0x6e - .endm - - .macro atk6f bank - .byte 0x6f - .byte \bank - .endm - - .macro atk70 bank - .byte 0x70 - .byte \bank - .endm - - .macro atk71 - .byte 0x71 - .endm - - .macro atk72 address - .byte 0x72 - .4byte \address - .endm - - .macro atk73 bank - .byte 0x73 - .byte \bank - .endm - - .macro atk74 bank - .byte 0x74 - .byte \bank - .endm - - .macro atk75 - .byte 0x75 - .endm - - .macro atk76 bank, byte - .byte 0x76 - .byte \bank - .byte \byte - .endm - - .macro setprotect - .byte 0x77 - .endm - - .macro faintifabilitynotdamp - .byte 0x78 - .endm - - .macro setuserhptozero - .byte 0x79 - .endm - - .macro jumpwhiletargetvalid address - .byte 0x7a - .4byte \address - .endm - - .macro setdamageasrestorehalfmaxhp address, byte - .byte 0x7b - .4byte \address - .byte \byte - .endm - - .macro jumptolastusedattack - .byte 0x7c - .endm - - .macro setrain - .byte 0x7d - .endm - - .macro setreflect - .byte 0x7e - .endm - - .macro setleechseed - .byte 0x7f - .endm - - .macro manipulatedamage id - .byte 0x80 - .byte \id - .endm - - .macro setrest address - .byte 0x81 - .4byte \address - .endm - - .macro jumpifnotfirstturn address - .byte 0x82 - .4byte \address - .endm - - .macro nop3 - .byte 0x83 - .endm - - .macro jumpifcannotsleep address - .byte 0x84 - .4byte \address - .endm - - .macro stockpile - .byte 0x85 - .endm - - .macro stockpiletobasedamage address - .byte 0x86 - .4byte \address - .endm - - .macro stockpiletohprecovery address - .byte 0x87 - .4byte \address - .endm - - .macro negativedamage - .byte 0x88 - .endm - - .macro statbuffchange target, address - .byte 0x89 - .byte \target - .4byte \address - .endm - - .macro normalisebuffs - .byte 0x8a - .endm - - .macro setbide - .byte 0x8b - .endm - - .macro confuseifrepeatingattackends - .byte 0x8c - .endm - - .macro setloopcounter count - .byte 0x8d - .byte \count - .endm - - .macro atk8e - .byte 0x8e - .endm - - .macro forcerandomswitch address - .byte 0x8f - .4byte \address - .endm - - .macro changetypestoenemyattacktype address - .byte 0x90 - .4byte \address - .endm - - .macro givemoney - .byte 0x91 - .endm - - .macro setlightscreen - .byte 0x92 - .endm - - .macro koplussomethings address - .byte 0x93 - .4byte \address - .endm - - .macro gethalfcurrentenemyhp - .byte 0x94 - .endm - - .macro setsandstorm - .byte 0x95 - .endm - - .macro weatherdamage - .byte 0x96 - .endm - - .macro tryinfatuatetarget address - .byte 0x97 - .4byte \address - .endm - - .macro atk98 byte - .byte 0x98 - .byte \byte - .endm - - .macro setmisteffect - .byte 0x99 - .endm - - .macro setincreasedcriticalchance - .byte 0x9a - .endm - - .macro transformdataexecution - .byte 0x9b - .endm - - .macro setsubstituteeffect - .byte 0x9c - .endm - - .macro copyattack address - .byte 0x9d - .4byte \address - .endm - - .macro metronomeeffect - .byte 0x9e - .endm - - .macro nightshadedamageeffect - .byte 0x9f - .endm - - .macro psywavedamageeffect - .byte 0xa0 - .endm - - .macro counterdamagecalculator address - .byte 0xa1 - .4byte \address - .endm - - .macro mirrorcoatdamagecalculator address - .byte 0xa2 - .4byte \address - .endm - - .macro disablelastusedattack address - .byte 0xa3 - .4byte \address - .endm - - .macro setencore address - .byte 0xa4 - .4byte \address - .endm - - .macro painsplitdamagecalculator address - .byte 0xa5 - .4byte \address - .endm - - .macro settypetorandomresistance address - .byte 0xa6 - .4byte \address - .endm - - .macro setalwayshitflag - .byte 0xa7 - .endm - - .macro copymovepermanently address - .byte 0xa8 - .4byte \address - .endm - - .macro selectrandommovefromusermoves address - .byte 0xa9 - .4byte \address - .endm - - .macro destinybondeffect - .byte 0xaa - .endm - - .macro atkab - .byte 0xab - .endm - - .macro remaininghptopower - .byte 0xac - .endm - - .macro reducepprandom address - .byte 0xad - .4byte \address - .endm - - .macro clearstatusifnotsoundproofed - .byte 0xae - .endm - - .macro cursetarget address - .byte 0xaf - .4byte \address - .endm - - .macro setspikes address - .byte 0xb0 - .4byte \address - .endm - - .macro setforesight - .byte 0xb1 - .endm - - .macro setperishsong address - .byte 0xb2 - .4byte \address - .endm - - .macro rolloutdamagecalculation - .byte 0xb3 - .endm - - .macro jumpifconfusedandattackmaxed bank, address - .byte 0xb4 - .byte \bank - .4byte \address - .endm - - .macro furycutterdamagecalculation - .byte 0xb5 - .endm - - .macro happinesstodamagecalculation - .byte 0xb6 - .endm - - .macro presentdamagecalculation - .byte 0xb7 - .endm - - .macro setsafeguard - .byte 0xb8 - .endm - - .macro magnitudedamagecalculation - .byte 0xb9 - .endm - - .macro atkba address - .byte 0xba - .4byte \address - .endm - - .macro setsunny - .byte 0xbb - .endm - - .macro maxattackhalvehp address - .byte 0xbc - .4byte \address - .endm - - .macro copyfoestats address - .byte 0xbd - .4byte \address - .endm - - .macro breakfree - .byte 0xbe - .endm - - .macro setcurled - .byte 0xbf - .endm - - .macro recoverbasedonsunlight address - .byte 0xc0 - .4byte \address - .endm - - .macro hiddenpowerdamagecalculation - .byte 0xc1 - .endm - - .macro selectnexttarget - .byte 0xc2 - .endm - - .macro setfutureattack address - .byte 0xc3 - .4byte \address - .endm - - .macro beatupcalculation address1, address2 - .byte 0xc4 - .4byte \address1 - .4byte \address2 - .endm - - .macro hidepreattack - .byte 0xc5 - .endm - - .macro unhidepostattack - .byte 0xc6 - .endm - - .macro setminimize - .byte 0xc7 - .endm - - .macro sethail - .byte 0xc8 - .endm - - .macro jumpifattackandspecialattackcannotfall address - .byte 0xc9 - .4byte \address - .endm - - .macro setforcedtarget - .byte 0xca - .endm - - .macro setcharge - .byte 0xcb - .endm - - .macro callterrainattack - .byte 0xcc - .endm - - .macro cureifburnedparalysedorpoisoned address - .byte 0xcd - .4byte \address - .endm - - .macro settorment address - .byte 0xce - .4byte \address - .endm - - .macro jumpifnodamage address - .byte 0xcf - .4byte \address - .endm - - .macro settaunt address - .byte 0xd0 - .4byte \address - .endm - - .macro sethelpinghand address - .byte 0xd1 - .4byte \address - .endm - - .macro itemswap address - .byte 0xd2 - .4byte \address - .endm - - .macro copyability address - .byte 0xd3 - .4byte \address - .endm - - .macro atkd4 byte, address - .byte 0xd4 - .byte \byte - .4byte \address - .endm - - .macro setroots address - .byte 0xd5 - .4byte \address - .endm - - .macro doubledamagedealtifdamaged - .byte 0xd6 - .endm - - .macro setyawn address - .byte 0xd7 - .4byte \address - .endm - - .macro setdamagetohealthdifference address - .byte 0xd8 - .4byte \address - .endm - - .macro scaledamagebyhealthratio - .byte 0xd9 - .endm - - .macro abilityswap address - .byte 0xda - .4byte \address - .endm - - .macro imprisoneffect address - .byte 0xdb - .4byte \address - .endm - - .macro setgrudge address - .byte 0xdc - .4byte \address - .endm - - .macro weightdamagecalculation - .byte 0xdd - .endm - - .macro assistattackselect address - .byte 0xde - .4byte \address - .endm - - .macro setmagiccoat address - .byte 0xdf - .4byte \address - .endm - - .macro setstealstatchange address - .byte 0xe0 - .4byte \address - .endm - - .macro atke1 address - .byte 0xe1 - .4byte \address - .endm - - .macro atke2 bank - .byte 0xe2 - .byte \bank - .endm - - .macro jumpiffainted bank, address - .byte 0xe3 - .byte \bank - .4byte \address - .endm - - .macro naturepowereffect - .byte 0xe4 - .endm - - .macro pickupitemcalculation - .byte 0xe5 - .endm - - .macro actualcastformswitch - .byte 0xe6 - .endm - - .macro castformswitch - .byte 0xe7 - .endm - - .macro settypebasedhalvers address - .byte 0xe8 - .4byte \address - .endm - - .macro seteffectbyweather - .byte 0xe9 - .endm - - .macro recycleitem address - .byte 0xea - .4byte \address - .endm - - .macro settypetoterrain address - .byte 0xeb - .4byte \address - .endm - - .macro pursuitwhenswitched address - .byte 0xec - .4byte \address - .endm - - .macro snatchmove - .byte 0xed - .endm - - .macro removereflectlightscreen - .byte 0xee - .endm - - .macro pokemoncatchfunction - .byte 0xef - .endm - - .macro catchpoke - .byte 0xf0 - .endm - - .macro capturesomethingf1 address - .byte 0xf1 - .4byte \address - .endm - - .macro capturesomethingf2 - .byte 0xf2 - .endm - - .macro capturesomethingf3 address - .byte 0xf3 - .4byte \address - .endm - - .macro removehp - .byte 0xf4 - .endm - - .macro curestatusfirstword - .byte 0xf5 - .endm - - .macro atkf6 - .byte 0xf6 - .endm - - .macro activesidesomething - .byte 0xf7 - .endm - - .macro atkf8 bank - .byte 0xf8 - .byte \bank - .endm diff --git a/berry_fix/payload/asm/macros/contest_ai_script.inc b/berry_fix/payload/asm/macros/contest_ai_script.inc deleted file mode 100644 index 05d70e351..000000000 --- a/berry_fix/payload/asm/macros/contest_ai_script.inc +++ /dev/null @@ -1,506 +0,0 @@ -@ Add a positive/negative value to the score of the move being evaluated. - - .macro score score - .byte 0x00 - .byte \score - .endm - -@ turn (AKA "Appeal No.") - - .macro get_turn - .byte 0x01 - .endm - - .macro if_turn_less_than param, addr - .byte 0x02 - .byte \param - .4byte \addr - .endm - - .macro if_turn_more_than param, addr - .byte 0x03 - .byte \param - .4byte \addr - .endm - - .macro if_turn_eq param, addr - .byte 0x04 - .byte \param - .4byte \addr - .endm - - .macro if_turn_not_eq param, addr - .byte 0x05 - .byte \param - .4byte \addr - .endm - -@ audience excitement - - .macro get_excitement - .byte 0x06 - .endm - - .macro if_excitement_less_than param, addr - .byte 0x07 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_more_than param, addr - .byte 0x08 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_eq param, addr - .byte 0x09 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_not_eq param, addr - .byte 0x0A - .byte \param - .4byte \addr - .endm - -@ the order that the user goes in the current turn - - .macro get_user_order - .byte 0x0B - .endm - - .macro if_user_order_less_than param addr - .byte 0x0C - .byte \param - .4byte \addr - .endm - - .macro if_user_order_more_than param addr - .byte 0x0D - .byte \param - .4byte \addr - .endm - - .macro if_user_order_eq param addr - .byte 0x0E - .byte \param - .4byte \addr - .endm - - .macro if_user_order_not_eq param addr - .byte 0x0F - .byte \param - .4byte \addr - .endm - -@ user condition - - .macro get_user_condition - .byte 0x10 - .endm - - .macro if_user_condition_less_than param, addr - .byte 0x11 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_more_than param, addr - .byte 0x12 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_eq param, addr - .byte 0x13 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_not_eq param, addr - .byte 0x14 - .byte \param - .4byte \addr - .endm - -@ 15 -@ 16 -@ 17 -@ 18 -@ 19 -@ 1A -@ 1B -@ 1C -@ 1D -@ 1E - -@ contest type - - .macro get_contest_type - .byte 0x1F - .endm - - .macro if_contest_type_eq param, addr - .byte 0x20 - .byte \param - .4byte \addr - .endm - - .macro if_contest_type_not_eq param, addr - .byte 0x21 - .byte \param - .4byte \addr - .endm - -@ move excitement (change in excitement due to move) - - .macro get_move_excitement - .byte 0x22 - .endm - - .macro if_move_excitement_less_than param, addr - .byte 0x23 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_more_than param, addr - .byte 0x24 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_eq param, addr - .byte 0x25 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_not_eq param, addr - .byte 0x26 - .byte \param - .4byte \addr - .endm - -@ move effect - - .macro get_effect - .byte 0x27 - .endm - - .macro if_effect_eq param, addr - .byte 0x28 - .byte \param - .4byte \addr - .endm - - .macro if_effect_not_eq param, addr - .byte 0x29 - .byte \param - .4byte \addr - .endm - -@ move effect type - - .macro get_effect_type - .byte 0x2A - .endm - - .macro if_effect_type_eq param, addr - .byte 0x2B - .byte \param - .4byte \addr - .endm - - .macro if_effect_type_not_eq param, addr - .byte 0x2C - .byte \param - .4byte \addr - .endm - -@ whether the current move is the most appealing in the user's moveset - - .macro check_most_appealing_move - .byte 0x2D - .endm - - .macro if_most_appealing_move addr - .byte 0x2E - .4byte \addr - .endm - -@ 2F -@ 30 -@ 31 -@ 32 -@ 33 -@ 34 -@ 35 -@ 36 -@ 37 -@ 38 -@ 39 -@ 3A - -@ number of times current move has been used - - .macro get_move_used_count - .byte 0x3B - .endm - - .macro if_move_used_count_less_than param, addr - .byte 0x3C - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_more_than param, addr - .byte 0x3D - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_eq param, addr - .byte 0x3E - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_not_eq param, addr - .byte 0x3F - .byte \param - .4byte \addr - .endm - -@ whether the current move is a combo starter (with another move in the moveset) - - .macro check_combo_starter - .byte 0x40 - .endm - - .macro if_combo_starter addr - .byte 0x41 - .4byte \addr - .endm - - .macro if_not_combo_starter addr - .byte 0x42 - .4byte \addr - .endm - -@ whether the current move is a combo finisher (with another move in the moveset) - - .macro check_combo_finisher - .byte 0x43 - .endm - - .macro if_combo_finisher addr - .byte 0x44 - .4byte \addr - .endm - - .macro if_not_combo_finisher addr - .byte 0x45 - .4byte \addr - .endm - -@ whether the current move would finish a combo - - .macro check_would_finish_combo - .byte 0x46 - .endm - - .macro if_would_finish_combo addr - .byte 0x47 - .4byte \addr - .endm - - .macro if_would_not_finish_combo addr - .byte 0x48 - .4byte \addr - .endm - -@ condition of mon (indexed by order) - - .macro get_condition mon - .byte 0x49 - .byte \mon - .endm - - .macro if_condition_less_than mon, value, addr - .byte 0x4A - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_more_than mon, value, addr - .byte 0x4B - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_eq mon, value, addr - .byte 0x4C - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_not_eq mon, value, addr - .byte 0x4D - .byte \mon - .byte \value - .4byte \addr - .endm - -@ whether the mon used a combo starter move -@ Even though this value is always 1 or 0 (i.e. TRUE/FALSE), -@ there are less-than and greater-than comparison operations for some reason. - - .macro get_used_combo_starter mon - .byte 0x4E - .byte \mon - .endm - - .macro if_used_combo_starter_less_than mon, value, addr - .byte 0x4F - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_used_combo_starter_more_than mon, value, addr - .byte 0x50 - .byte \mon - .byte \value - .4byte \addr - .endm - - - .macro if_used_combo_starter_eq mon, value, addr - .byte 0x51 - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_used_combo_starter_not_eq mon, value, addr - .byte 0x52 - .byte \mon - .byte \value - .4byte \addr - .endm - -@ whether the mon can make an appeal - - .macro check_can_participate mon - .byte 0x53 - .byte \mon - .endm - - .macro if_can_participate mon, addr - .byte 0x54 - .byte \mon - .4byte \addr - .endm - - .macro if_cannot_participate mon, addr - .byte 0x55 - .byte \mon - .4byte \addr - .endm - -@ 56 -@ 57 - - .macro contest_58 param addr - .byte 0x58 - .byte \param - .4byte \addr - .endm - -@ 59 -@ 5A -@ 5B -@ 5C -@ 5D -@ 5E -@ 5F -@ 60 -@ 61 -@ 62 -@ 63 -@ 64 -@ 65 -@ 66 -@ 67 -@ 68 -@ 69 -@ 6A -@ 6B -@ 6C -@ 6D -@ 6E -@ 6F -@ 70 -@ 71 -@ 72 -@ 73 -@ 74 -@ 75 -@ 76 -@ 77 -@ 78 -@ 79 -@ 7A -@ 7B -@ 7C - - .macro if_random param addr - .byte 0x7D - .byte \param - .4byte \addr - .endm - -@ 7E - - .macro jump addr - .byte 0x7F - .4byte \addr - .endm - - .macro call addr - .byte 0x80 - .4byte \addr - .endm - - .macro end - .byte 0x81 - .endm - - .macro check_user_has_exciting_move - .byte 0x82 - .endm - - .macro if_user_has_exciting_move addr - .byte 0x83 - .4byte \addr - .endm - - .macro if_user_doesnt_have_exciting_move addr - .byte 0x84 - .4byte \addr - .endm - -@ 85 -@ 86 - - .macro if_effect_in_user_moveset param addr - .byte 0x87 - .2byte \param - .4byte \addr - .endm diff --git a/berry_fix/payload/asm/macros/ec.inc b/berry_fix/payload/asm/macros/ec.inc deleted file mode 100644 index d3fd45c2f..000000000 --- a/berry_fix/payload/asm/macros/ec.inc +++ /dev/null @@ -1,8 +0,0 @@ - - .macro ec_duplicates count - .2byte 0xff00 + \count - .endm - - .macro ec_words_by_letter label - .2byte (gEasyChatWordsByLetter_\label - gEasyChatWordsAlphabetized) / 2 - .endm diff --git a/berry_fix/payload/asm/macros/event.inc b/berry_fix/payload/asm/macros/event.inc deleted file mode 100644 index d805aecb5..000000000 --- a/berry_fix/payload/asm/macros/event.inc +++ /dev/null @@ -1,1433 +0,0 @@ - @ Does nothing. - .macro nop - .byte 0x00 - .endm - - @ Does nothing. - .macro nop1 - .byte 0x01 - .endm - - @ Terminates script execution. - .macro end - .byte 0x02 - .endm - - @ Jumps back to after the last-executed call statement, and continues script execution from there. - .macro return - .byte 0x03 - .endm - - @ Jumps to destination and continues script execution from there. The location of the calling script is remembered and can be returned to later. - .macro call destination - .byte 0x04 - .4byte \destination - .endm - - @ Jumps to destination and continues script execution from there. - .macro goto destination - .byte 0x05 - .4byte \destination - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there. - .macro goto_if condition, destination - .byte 0x06 - .byte \condition - .4byte \destination - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), calls destination. - .macro call_if condition, destination - .byte 0x07 - .byte \condition - .4byte \destination - .endm - - @ Jumps to the standard function at index function. - .macro gotostd function - .byte 0x08 - .byte \function - .endm - - @ Calls the standard function at index function. - .macro callstd function - .byte 0x09 - .byte \function - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function. - .macro gotostd_if condition, function - .byte 0x0a - .byte \condition - .byte \function - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function. - .macro callstd_if condition, function - .byte 0x0b - .byte \condition - .byte \function - .endm - - @ Executes a script stored in a default RAM location. - .macro gotoram - .byte 0x0c - .endm - - @ Terminates script execution and "resets the script RAM". - .macro killscript - .byte 0x0d - .endm - - @ Sets mystery event status - .macro setmysteryeventstatus value - .byte 0x0e - .byte \value - .endm - - @ Sets the specified script bank to immediate value. - .macro loadword destination, value - .byte 0x0f - .byte \destination - .4byte \value - .endm - - @ Sets the specified script bank to immediate value. - .macro loadbyte destination, value - .byte 0x10 - .byte \destination - .byte \value - .endm - - @ Sets the byte at offset to value. - .macro writebytetoaddr value, offset - .byte 0x11 - .byte \value - .4byte \offset - .endm - - @ Copies the byte value at source into the specified script bank. - .macro loadbytefromaddr destination, source - .byte 0x12 - .byte \destination - .4byte \source - .endm - - @ Not sure. Judging from XSE's description I think it takes the least-significant byte in bank source and writes it to destination. - .macro setptrbyte source, destination - .byte 0x13 - .byte \source - .4byte \destination - .endm - - @ Copies the contents of bank source into bank destination. - .macro copylocal destination, source - .byte 0x14 - .byte \destination - .byte \source - .endm - - @ Copies the byte at source to destination, replacing whatever byte was previously there. - .macro copybyte destination, source - .byte 0x15 - .4byte \destination - .4byte \source - .endm - - @ Changes the value of destination to value. - .macro setvar destination, value - .byte 0x16 - .2byte \destination - .2byte \value - .endm - - @ Changes the value of destination by adding value to it. Overflow is not prevented (0xFFFF + 1 = 0x0000). - .macro addvar destination, value - .byte 0x17 - .2byte \destination - .2byte \value - .endm - - @ Changes the value of destination by subtracting value to it. Overflow is not prevented (0x0000 - 1 = 0xFFFF). - .macro subvar destination, value - .byte 0x18 - .2byte \destination - .2byte \value - .endm - - @ Copies the value of source into destination. - .macro copyvar destination, source - .byte 0x19 - .2byte \destination - .2byte \source - .endm - - @ If source is not a variable, then this function acts like setvar. Otherwise, it acts like copyvar. - .macro setorcopyvar destination, source - .byte 0x1a - .2byte \destination - .2byte \source - .endm - - @ Compares the values of script banks a and b, after forcing the values to bytes. - .macro compare_local_to_local byte1, byte2 - .byte 0x1b - .byte \byte1 - .byte \byte2 - .endm - - @ Compares the least-significant byte of the value of script bank a to a fixed byte value (b). - .macro compare_local_to_value a, b - .byte 0x1c - .byte \a - .byte \b - .endm - - @ Compares the least-significant byte of the value of script bank a to the byte located at offset b. - .macro compare_local_to_addr a, b - .byte 0x1d - .byte \a - .4byte \b - .endm - - @ Compares the byte located at offset a to the least-significant byte of the value of script bank b. - .macro compare_addr_to_local a, b - .byte 0x1e - .4byte \a - .byte \b - .endm - - @ Compares the byte located at offset a to a fixed byte value (b). - .macro compare_addr_to_value a, b - .byte 0x1f - .4byte \a - .byte \b - .endm - - @ Compares the byte located at offset a to the byte located at offset b. - .macro compare_addr_to_addr a, b - .byte 0x20 - .4byte \a - .4byte \b - .endm - - @ Compares the value of `var` to a fixed word value (b). - .macro compare_var_to_value var, value - .byte 0x21 - .2byte \var - .2byte \value - .endm - - @ Compares the value of `var` to the value of `var2`. - .macro compare_var_to_var var1, var2 - .byte 0x22 - .2byte \var1 - .2byte \var2 - .endm - - @ Generic compare macro which attempts to deduce argument types based on their values - @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers - .macro compare arg1, arg2 - .if ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && ((\arg2 >> 12) == 4 || (\arg2 >> 12) == 8) - compare_var_to_var \arg1, \arg2 - .elseif ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && (\arg2 >= 0 && \arg2 <= 0xFFFF) - compare_var_to_value \arg1, \arg2 - .else - .error "Invalid arguments for 'compare'" - .endif - .endm - - @ Calls the native C function stored at `func`. - .macro callnative func - .byte 0x23 - .4byte \func - .endm - - @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. - .macro gotonative func - .byte 0x24 - .4byte \func - .endm - - @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. - .macro special function - .byte 0x25 - .2byte SPECIAL_\function - .endm - - @ Calls a special function. That function's output (if any) will be written to the variable you specify. - .macro specialvar output, function - .byte 0x26 - .2byte \output - .2byte SPECIAL_\function - .endm - - @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). - .macro waitstate - .byte 0x27 - .endm - - @ Blocks script execution for time (frames? milliseconds?). - .macro delay time - .byte 0x28 - .2byte \time - .endm - - @ Sets a to 1. - .macro setflag a - .byte 0x29 - .2byte \a - .endm - - @ Sets a to 0. - .macro clearflag a - .byte 0x2a - .2byte \a - .endm - - @ Compares a to 1. - .macro checkflag a - .byte 0x2b - .2byte \a - .endm - - @ In FireRed, this command is a nop. - .macro initclock hour minute - .byte 0x2c - .endm - - @ In FireRed, this command is a nop. - .macro dodailyevents - .byte 0x2d - .endm - - @ Resets the values of variables 0x8000, 0x8001, and 0x8002. - .macro gettime - .byte 0x2e - .endm - - @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. - .macro playse sound_number - .byte 0x2f - .2byte \sound_number - .endm - - @ Blocks script execution until the currently-playing sound (triggered by sound) finishes playing. - .macro waitse - .byte 0x30 - .endm - - @ Plays the specified (fanfare_number) fanfare. - .macro playfanfare fanfare_number - .byte 0x31 - .2byte \fanfare_number - .endm - - @ Blocks script execution until all currently-playing fanfares finish. - .macro waitfanfare - .byte 0x32 - .endm - - @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. - .macro playbgm song_number, unknown - .byte 0x33 - .2byte \song_number - .byte \unknown - .endm - - @ Plays the specified (song_number) song. - .macro savebgm song_number - .byte 0x34 - .2byte \song_number - .endm - - @ Crossfades the currently-playing song into the map's default song. - .macro fadedefaultbgm - .byte 0x35 - .endm - - @ Crossfades the currently-playng song into the specified (song_number) song. - .macro fadenewbgm song_number - .byte 0x36 - .2byte \song_number - .endm - - @ Fades out the currently-playing song. - .macro fadeoutbgm speed - .byte 0x37 - .byte \speed - .endm - - @ Fades the currently-playing song back in. - .macro fadeinbgm speed - .byte 0x38 - .byte \speed - .endm - - @ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF, then the player will instead be sent to (X, Y) on the map. - .macro warp map, warp, X, Y - .byte 0x39 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp that does not play a sound effect. - .macro warpsilent map, warp, X, Y - .byte 0x3a - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp that uses "a walking effect". - .macro warpdoor map, warp, X, Y - .byte 0x3b - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Warps the player to another map using a hole animation. - .macro warphole map - .byte 0x3c - map \map - .endm - - @ Clone of warp that uses a teleport effect. It is apparently only used in R/S/E.[source] - .macro warpteleport map, warp, X, Y - .byte 0x3d - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp. Used by an (unused?) Safari Zone script to return the player to the gatehouse and end the Safari Game. - .macro setwarp map, warp, X, Y - .byte 0x3e - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Sets a default warp place. If a warp tries to send the player to Warp 127 on Map 127.127, they will instead be sent here. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). - .macro setdynamicwarp map, warp, X, Y - .byte 0x3f - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp3, except that this writes data to different offsets... - .macro setdivewarp map, warp, X, Y - .byte 0x40 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp3, except that this writes data to different offsets... - .macro setholewarp map, warp, X, Y - .byte 0x41 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Retrieves the player's zero-indexed X- and Y-coordinates in the map, and stores them in the specified variables. - .macro getplayerxy X, Y - .byte 0x42 - .2byte \X - .2byte \Y - .endm - - @ Retrieves the number of Pokmon in the player's party, and stores that number in variable 0x800D (LASTRESULT). - .macro countpokemon - .byte 0x43 - .endm - - @ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and variable 0x800D (LASTRESULT) will be set to 0x0001; otherwise, LASTRESULT is set to 0x0000. - .macro additem index, quantity - .byte 0x44 - .2byte \index - .2byte \quantity - .endm - - @ Removes quantity of item index from the player's Bag. - .macro removeitem index, quantity - .byte 0x45 - .2byte \index - .2byte \quantity - .endm - - @ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. - .macro checkitemspace index, quantity - .byte 0x46 - .2byte \index - .2byte \quantity - .endm - - @ Checks if the player has quantity or more of item index in their Bag. Sets variable 0x800D (LASTRESULT) to 0x0001 if the player has enough of the item, or 0x0000 if they have fewer than quantity of the item. - .macro checkitem index, quantity - .byte 0x47 - .2byte \index - .2byte \quantity - .endm - - @ Checks which Bag pocket the specified (index) item belongs in, and writes the value to variable 0x800D (LASTRESULT). This script is used to show the name of the proper Bag pocket when the player receives an item via callstd (simplified to giveitem in XSE). - .macro checkitemtype index - .byte 0x48 - .2byte \index - .endm - - @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. - .macro givepcitem index, quantity - .byte 0x49 - .2byte \index - .2byte \quantity - .endm - - @ Checks for quantity amount of item index in the player's PC. Both arguments can be variables. - .macro checkpcitem index, quantity - .byte 0x4a - .2byte \index - .2byte \quantity - .endm - - @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro adddecor decoration - .byte 0x4b - .2byte \decoration - .endm - - @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro removedecor decoration - .byte 0x4c - .2byte \decoration - .endm - - @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro hasdecor decoration - .byte 0x4d - .2byte \decoration - .endm - - @ In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro checkdecor decoration - .byte 0x4e - .2byte \decoration - .endm - - @ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open. - @ This command in fact uses variables to access the Person event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Person event 3 will have the movements at @move1 applied to them. Thank you Shiny Quagsire for bringing this to my attention. - .macro applymovement index, movements, mapGroup, mapNum - .ifb \mapGroup - .byte 0x4f - .2byte \index - .4byte \movements - .else - .byte 0x50 - .2byte \index - .4byte \movements - .byte \mapGroup - .byte \mapNum - .endif - .endm - - @ Blocks script execution until the movements being applied to the specified (index) Person event finish. If the specified Person event is 0x0000, then the command will block script execution until all Person events affected by applymovement finish their movements. If the specified Person event is not currently being manipulated with applymovement, then this command does nothing. - .macro waitmovement index, mapBank, mapNum - .ifb \mapBank - .byte 0x51 - .2byte \index - .else - .byte 0x52 - .2byte \index - .byte \mapBank - .byte \mapNum - .endif - .endm - - @ Attempts to hide the specified (local_ID, a local ID) Person event on the specified map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing. - @ If no map is specified, then the current map is used - .macro removeobject localId, mapGroup, mapNum - .ifb \mapGroup - .byte 0x53 - .2byte \localId - .else - .byte 0x54 - .2byte \localId - .byte \mapGroup - .byte \mapNum - .endif - .endm - - .macro addobject localId, mapGroup, mapNum - .ifb \mapGroup - .byte 0x55 - .2byte \localId - .else - .byte 0x56 - .2byte \localId - .byte \mapGroup - .byte \mapNum - .endif - .endm - - @ Sets the specified (index) Object's position on the current map. - .macro setobjectxy index, x, y - .byte 0x57 - .2byte \index - .2byte \x - .2byte \y - .endm - - .macro showobject index, map - .byte 0x58 - .2byte \index - map \map - .endm - - .macro hideobject index, map - .byte 0x59 - .2byte \index - map \map - .endm - - @ If the script was called by an Object, then that Object will turn to face toward the metatile that the player is standing on. - .macro faceplayer - .byte 0x5a - .endm - - .macro turnobject index, direction - .byte 0x5b - .2byte \index - .byte \direction - .endm - - @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. - .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 - .byte 0x5c - .byte \type - .2byte \trainer - .2byte \word - .if \type == 0 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 1 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 2 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 3 - .4byte \pointer1 @ text - .elseif \type == 4 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 5 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 6 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .elseif \type == 7 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 8 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .endif - .endm - - - @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. - .macro battlebegin - .byte 0x5d - .endm - - .macro ontrainerbattleend - .byte 0x5e - .endm - - .macro ontrainerbattleendgoto - .byte 0x5f - .endm - - @ Compares Flag (trainer + 0x500) to 1. (If the flag is set, then the trainer has been defeated by the player.) - .macro checktrainerflag trainer - .byte 0x60 - .2byte \trainer - .endm - - @ Sets Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro settrainerflag trainer - .byte 0x61 - .2byte \trainer - .endm - - @ Clears Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.) - .macro cleartrainerflag trainer - .byte 0x62 - .2byte \trainer - .endm - - .macro setobjectxyperm index, x, y - .byte 0x63 - .2byte \index - .2byte \x - .2byte \y - .endm - - .macro moveobjectoffscreen index - .byte 0x64 - .2byte \index - .endm - - .macro setobjectmovementtype word, byte - .byte 0x65 - .2byte \word - .byte \byte - .endm - - @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. - .macro waitmessage - .byte 0x66 - .endm - - @ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as a pointer to the text. (You can use loadpointer to place a string pointer in a script bank.) - .macro message text - .byte 0x67 - .4byte \text - .endm - - @ Holds the current message box open until the player presses a key. The message box is then closed. - .macro closemessage - .byte 0x68 - .endm - - @ Ceases movement for all Objects on-screen. - .macro lockall - .byte 0x69 - .endm - - @ If the script was called by an Object, then that Object's movement will cease. - .macro lock - .byte 0x6a - .endm - - @ Resumes normal movement for all Objects on-screen, and closes any standard message boxes that are still open. - .macro releaseall - .byte 0x6b - .endm - - @ If the script was called by an Object, then that Object's movement will resume. This command also closes any standard message boxes that are still open. - .macro release - .byte 0x6c - .endm - - @ Blocks script execution until the player presses any key. - .macro waitbuttonpress - .byte 0x6d - .endm - - @ Displays a YES/NO multichoice box at the specified coordinates, and blocks script execution until the user makes a selection. Their selection is stored in variable 0x800D (LASTRESULT); 0x0000 for "NO" or if the user pressed B, and 0x0001 for "YES". - .macro yesnobox x, y - .byte 0x6e - .byte \x - .byte \y - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoice x, y, list, b - .byte 0x6f - .byte \x - .byte \y - .byte \list - .byte \b - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoicedefault x, y, list, default, b - .byte 0x70 - .byte \x - .byte \y - .byte \list - .byte \default - .byte \b - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. - .macro multichoicegrid x, y, list, per_row, B - .byte 0x71 - .byte \x - .byte \y - .byte \list - .byte \per_row - .byte \B - .endm - - .macro drawbox - .byte 0x72 - .endm - - .macro erasebox byte1, byte2, byte3, byte4 - .byte 0x73 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 - .endm - - .macro drawboxtext - .byte 0x74 - .endm - - @ Displays a box containing the front sprite for the specified (species) Pokemon species. - .macro drawmonpic species, x, y - .byte 0x75 - .2byte \species - .byte \x - .byte \y - .endm - - @ Hides all boxes displayed with drawmonpic. - .macro erasemonpic - .byte 0x76 - .endm - - @ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.) - .macro drawcontestwinner a - .byte 0x77 - .byte \a - .endm - - @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. - .macro braillemessage text - .byte 0x78 - .4byte \text - .endm - - @ Gives the player one of the specified (species) Pokmon at level level holding item. The unknown arguments should all be zeroes. - .macro givepoke species, level, item, unknown1, unknown2, unknown3 - .byte 0x79 - .2byte \species - .byte \level - .2byte \item - .4byte \unknown1 - .4byte \unknown2 - .byte \unknown3 - .endm - - .macro giveegg species - .byte 0x7a - .2byte \species - .endm - - .macro setpokemove byte1, byte2, word - .byte 0x7b - .byte \byte1 - .byte \byte2 - .2byte \word - .endm - - @ Checks if at least one Pokémon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the first Pokémon that knows the move. If not, LASTRESULT is set to 0x0006. Variable 0x8004 is also set to this Pokémon's species. - .macro checkpartymove index - .byte 0x7c - .2byte \index - .endm - - @ Writes the name of the Pokemon at index species to the specified buffer. - .macro getspeciesname out, species - .byte 0x7d - .byte \out - .2byte \species - .endm - - @ Writes the name of the species of the first Pokémon in the player's party to the specified buffer. - .macro getfirstpartypokename out - .byte 0x7e - .byte \out - .endm - - @ Writes the nickname of the Pokemon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. - .macro getpartypokename out, slot - .byte 0x7f - .byte \out - .2byte \slot - .endm - - @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. - .macro getitemname out, item - .byte 0x80 - .byte \out - .2byte \item - .endm - - @ Writes the name of the decoration at index decoration to the specified buffer. In FireRed, this command is a nop. - .macro getdecorname out, decoration - .byte 0x81 - .byte \out - .2byte \decoration - .endm - - @ Writes the name of the move at index move to the specified buffer. - .macro getmovename out, move - .byte 0x82 - .byte \out - .2byte \move - .endm - - @ Converts the value of input to a decimal string, and writes that string to the specified buffer. - .macro getnumberstring out, input - .byte 0x83 - .byte \out - .2byte \input - .endm - - @ Writes the standard string identified by index to the specified buffer. This command has no protections in place at all, so specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption. - .macro getstdstring out, index - .byte 0x84 - .byte \out - .2byte \index - .endm - - @ Copies the string at offset to the specified buffer. - .macro getstring out, offset - .byte 0x85 - .byte \out - .4byte \offset - .endm - - @ Opens the Pokemart system, offering the specified products for sale. - .macro pokemart products - .byte 0x86 - .4byte \products - .endm - - @ Apparent clone of pokemart. - .macro pokemartdecor products - .byte 0x87 - .4byte \products - .endm - - @ Apparent clone of pokemart. - .macro pokemartbp products - .byte 0x88 - .4byte \products - .endm - - @ Starts up the slot machine minigame. - .macro playslotmachine word - .byte 0x89 - .2byte \word - .endm - - @ In FireRed, this command is a nop. - .macro plantberrytree - .byte 0x8a - .endm - - @ In FireRed, this command sets the byte at 0x03000EA8 to 0x01. I do not know what that means. - .macro choosecontestpkmn - .byte 0x8b - .endm - - @ In FireRed, this command is a nop. - .macro startcontest - .byte 0x8c - .endm - - @ In FireRed, this command is a nop. - .macro showcontestresults - .byte 0x8d - .endm - - @ In FireRed, this command is a nop. - .macro contestlinktransfer - .byte 0x8e - .endm - - @ Stores a random integer between 0 and limit in variable 0x800D (LASTRESULT). - .macro random limit - .byte 0x8f - .2byte \limit - .endm - - @ If check is 0x00, this command adds value to the player's money. - .macro givemoney value, check - .byte 0x90 - .4byte \value - .byte \check - .endm - - @ If check is 0x00, this command subtracts value from the player's money. - .macro takemoney value, check - .byte 0x91 - .4byte \value - .byte \check - .endm - - @ If check is 0x00, this command will check if the player has value or more money; script variable 0x800D (LASTRESULT) is set to 0x0001 if the player has enough money, or 0x0000 if the do not. - .macro checkmoney value, check - .byte 0x92 - .4byte \value - .byte \check - .endm - - @ Spawns a secondary box showing how much money the player has. - .macro showmoneybox x, y, check - .byte 0x93 - .byte \x - .byte \y - .byte \check - .endm - - @ Hides the secondary box spawned by showmoney. - .macro hidemoneybox - .byte 0x94 - .endm - - @ Updates the secondary box spawned by showmoney. Consumes but does not use arguments. - .macro updatemoneybox x, y, check - .byte 0x95 - .byte \x - .byte \y - .byte \check - .endm - - @ In FireRed, this command is a nop. - .macro getpricereduction - .byte 0x96 - .endm - - @ Fades the screen to black or back, using the specified effect. Effect 0x00 fades in, and effect 0x01 fades out. I don't know if other effects exist. - .macro fadescreen effect - .byte 0x97 - .byte \effect - .endm - - @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. Other modes may exist. - .macro fadescreenspeed effect, speed - .byte 0x98 - .byte \effect - .byte \speed - .endm - - .macro setflashradius word - .byte 0x99 - .2byte \word - .endm - - .macro animateflash byte - .byte 0x9a - .byte \byte - .endm - - .macro messageautoscroll pointer - .byte 0x9b - .4byte \pointer - .endm - - @ Executes the specified field move animation. - .macro dofieldeffect animation - .byte 0x9c - .2byte \animation - .endm - - @ Sets up the field effect argument argument with the value value. - .macro setfieldeffectarg argument, param - .byte 0x9d - .byte \argument - .2byte \param - .endm - - @ Blocks script execution until all playing field move animations complete. - .macro waitfieldeffect animation - .byte 0x9e - .2byte \animation - .endm - - @ Sets which healing place the player will return to if all of the Pokemon in their party faint. - .macro setrespawn flightspot - .byte 0x9f - .2byte \flightspot - .endm - - @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. - .macro checkplayergender - .byte 0xa0 - .endm - - @ Plays the specified (species) Pokemon's cry. You can use waitcry to block script execution until the sound finishes. - .macro playmoncry species, effect - .byte 0xa1 - .2byte \species - .2byte \effect - .endm - - @ Changes the metatile at (x, y) on the current map. - .macro setmetatile x, y, metatile_number, tile_attrib - .byte 0xa2 - .2byte \x - .2byte \y - .2byte \metatile_number - .2byte \tile_attrib - .endm - - @ Queues a weather change to the default weather for the map. - .macro resetweather - .byte 0xa3 - .endm - - @ Queues a weather change to type weather. - .macro setweather type - .byte 0xa4 - .2byte \type - .endm - - @ Executes the weather change queued with resetweather or setweather. The current weather will smoothly fade into the queued weather. - .macro doweather - .byte 0xa5 - .endm - - @ This command manages cases in which maps have tiles that change state when stepped on (specifically, cracked/breakable floors). - .macro setstepcallback subroutine - .byte 0xa6 - .byte \subroutine - .endm - - .macro setmaplayoutindex index - .byte 0xa7 - .2byte \index - .endm - - .macro setobjectpriority index, map, priority - .byte 0xa8 - .2byte \index - map \map - .byte \priority - .endm - - .macro resetobjectpriority index, map - .byte 0xa9 - .2byte \index - map \map - .endm - - .macro createvobject sprite, byte2, x, y, elevation, direction - .byte 0xaa - .byte \sprite - .byte \byte2 - .2byte \x - .2byte \y - .byte \elevation - .byte \direction - .endm - - .macro turnvobject index, direction - .byte 0xab - .byte \index - .byte \direction - .endm - - @ Opens the door metatile at (X, Y) with an animation. - .macro opendoor x, y - .byte 0xac - .2byte \x - .2byte \y - .endm - - @ Closes the door metatile at (X, Y) with an animation. - .macro closedoor x, y - .byte 0xad - .2byte \x - .2byte \y - .endm - - @ Waits for the door animation started with opendoor or closedoor to finish. - .macro waitdooranim - .byte 0xae - .endm - - @ Sets the door tile at (x, y) to be open without an animation. - .macro setdooropen x, y - .byte 0xaf - .2byte \x - .2byte \y - .endm - - @ Sets the door tile at (x, y) to be closed without an animation. - .macro setdoorclosed2 x, y - .byte 0xb0 - .2byte \x - .2byte \y - .endm - - @ In Emerald, this command consumes its parameters and does nothing. In FireRed, this command is a nop. - .macro addelevmenuitem a, b, c, d - .byte 0xb1 - .byte \a - .2byte \b - .2byte \c - .2byte \d - .endm - - @ In FireRed and Emerald, this command is a nop. - .macro showelevmenu - .byte 0xb2 - .endm - - .macro checkcoins out - .byte 0xb3 - .2byte \out - .endm - - .macro givecoins count - .byte 0xb4 - .2byte \count - .endm - - .macro takecoins word - .byte 0xb5 - .2byte \word - .endm - - @ Prepares to start a wild battle against a species at Level level holding item. Running this command will not affect normal wild battles. You start the prepared battle with dowildbattle. - .macro setwildbattle species, level, item - .byte 0xb6 - .2byte \species - .byte \level - .2byte \item - .endm - - @ Starts a wild battle against the Pokemon generated by setwildbattle. Blocks script execution until the battle finishes. - .macro dowildbattle - .byte 0xb7 - .endm - - .macro setvaddress long, word - .byte 0xb8 - .4byte \long - .2byte \word - .endm - - .macro vgoto pointer - .byte 0xb9 - .4byte \pointer - .endm - - .macro vcall pointer - .byte 0xba - .4byte \pointer - .endm - - .macro vgoto_if byte, pointer - .byte 0xbb - .byte \byte - .4byte \pointer - .endm - - .macro vcall_if byte, pointer - .byte 0xbc - .byte \byte - .4byte \pointer - .endm - - .macro vmessage pointer - .byte 0xbd - .4byte \pointer - .endm - - .macro vloadptr pointer - .byte 0xbe - .4byte \pointer - .endm - - .macro vbufferstring byte, pointer - .byte 0xbf - .byte \byte - .4byte \pointer - .endm - - @ Spawns a secondary box showing how many Coins the player has. - .macro showcoinsbox x, y - .byte 0xc0 - .byte \x - .byte \y - .endm - - @ Hides the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. - .macro hidecoinsbox x, y - .byte 0xc1 - .byte \x - .byte \y - .endm - - @ Updates the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. - .macro updatecoinsbox x, y - .byte 0xc2 - .byte \x - .byte \y - .endm - - @ Increases the value of the specified game stat by 1. The stat's value will not be allowed to exceed 0x00FFFFFF. - .macro incrementgamestat stat - .byte 0xc3 - .byte \stat - .endm - - @ Sets the destination that using an Escape Rope or Dig will take the player to. - .macro setescapewarp map, warp, x, y - .byte 0xc4 - map \map - .byte \warp - .2byte \x - .2byte \y - .endm - - @ Blocks script execution until cry finishes. - .macro waitmoncry - .byte 0xc5 - .endm - - @ Writes the name of the specified (box) PC box to the specified buffer. - .macro bufferboxname out, box - .byte 0xc6 - .byte \out - .2byte \box - .endm - - @ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text, 0xFF resets the color to the default for the current OW's gender, and all other values produce black text. - .macro textcolor color - .byte 0xc7 - .byte \color - .endm - - @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. - .macro loadhelp pointer - .byte 0xc8 - .4byte \pointer - .endm - - @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. - .macro unloadhelp - .byte 0xc9 - .endm - - @ After using this command, all standard message boxes will use the signpost frame. - .macro signmsg - .byte 0xca - .endm - - @ Ends the effects of signmsg, returning message box frames to normal. - .macro normalmsg - .byte 0xcb - .endm - - @ Compares the value of a hidden variable to a dword. - .macro comparehiddenvar a, value - .byte 0xcc - .byte \a - .4byte \value - .endm - - @ Makes the Pokemon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle. - .macro setmonobedient slot - .byte 0xcd - .2byte \slot - .endm - - @ Checks if the Pokemon in the specified slot of the player's party is obedient. If the Pokemon is disobedient, 0x0001 is written to script variable 0x800D (LASTRESULT). If the Pokemon is obedient (or if the specified slot is empty or invalid), 0x0000 is written. - .macro checkmonobedience slot - .byte 0xce - .2byte \slot - .endm - - @ Depending on factors I haven't managed to understand yet, this command may cause script execution to jump to the offset specified by the pointer at 0x020375C0. - .macro execram - .byte 0xcf - .endm - - @ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot. - .macro setworldmapflag worldmapflag - .byte 0xd0 - .2byte \worldmapflag - .endm - - @ Clone of warpteleport? It is apparently only used in FR/LG, and only with specials.[source] - .macro warpteleport2 map, warp, x, y - .byte 0xd1 - map \map - .byte \warp - .2byte \x - .2byte \y - .endm - - @ Changes the location where the player caught the Pokemon in the specified slot of their party. - .macro setmonmetlocation slot, location - .byte 0xd2 - .2byte \slot - .byte \location - .endm - - .macro getbraillestringwidth pointer - .byte 0xd3 - .4byte \pointer - .endm - - .macro bufferitemnameplural out, item, quantity - .byte 0xd4 - .byte \out - .2byte \item - .2byte \quantity - .endm - - -@ Supplementary - - .macro goto_if_eq dest - goto_if 1, \dest - .endm - - .macro switch var - copyvar 0x8000, \var - .endm - - .macro case condition, dest - compare_var_to_value 0x8000, \condition - goto_if_eq \dest - .endm - - .macro msgbox text, type=4 - loadword 0, \text - callstd \type - .endm - - @ Message box types - MSGBOX_YESNO = 5 - - YES = 1 - NO = 0 - - .macro giveitem item, amount=1, function=0 - setorcopyvar 0x8000, \item - setorcopyvar 0x8001, \amount - callstd \function - .endm diff --git a/berry_fix/payload/asm/macros/field_effect_script.inc b/berry_fix/payload/asm/macros/field_effect_script.inc deleted file mode 100644 index d5895b0ef..000000000 --- a/berry_fix/payload/asm/macros/field_effect_script.inc +++ /dev/null @@ -1,42 +0,0 @@ - .macro loadtiles address - .byte 0 - .4byte \address - .endm - - .macro loadfadedpal address - .byte 1 - .4byte \address - .endm - - .macro loadpal address - .byte 2 - .4byte \address - .endm - - .macro callnative address - .byte 3 - .4byte \address - .endm - - .macro end - .byte 4 - .endm - - .macro loadgfx_callnative tiles_address, palette_address, function_address - .byte 5 - .4byte \tiles_address - .4byte \palette_address - .4byte \function_address - .endm - - .macro loadtiles_callnative tiles_address, function_address - .byte 6 - .4byte \tiles_address - .4byte \function_address - .endm - - .macro loadfadedpal_callnative palette_address, function_address - .byte 7 - .4byte \palette_address - .4byte \function_address - .endm diff --git a/berry_fix/payload/asm/macros/m4a.inc b/berry_fix/payload/asm/macros/m4a.inc deleted file mode 100644 index 6c5abc09b..000000000 --- a/berry_fix/payload/asm/macros/m4a.inc +++ /dev/null @@ -1,13 +0,0 @@ - .macro song label, music_player, unknown - .4byte \label - .2byte \music_player - .2byte \unknown - .endm - - .macro music_player info_struct, track_struct, unknown_1, unknown_2 - .4byte \info_struct - .4byte \track_struct - .byte \unknown_1 - .space 1 - .2byte \unknown_2 - .endm diff --git a/berry_fix/payload/asm/macros/map.inc b/berry_fix/payload/asm/macros/map.inc deleted file mode 100644 index 9c68e8414..000000000 --- a/berry_fix/payload/asm/macros/map.inc +++ /dev/null @@ -1,84 +0,0 @@ - .macro map map_id - .byte \map_id >> 8 @ map group - .byte \map_id & 0xFF @ map num - .endm - - .macro map_script type, address - .byte \type - .4byte \address - .endm - - .macro map_script_2 word1, word2, address - .2byte \word1 - .2byte \word2 - .4byte \address - .endm - - .macro object_event byte1, word1, byte2, byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10, byte11, byte12, byte13, byte14, script, word2, byte15, byte16 - .byte \byte1 - .2byte \word1 - .byte \byte2, \byte3, \byte4, \byte5, \byte6, \byte7, \byte8, \byte9, \byte10, \byte11, \byte12, \byte13, \byte14 - .4byte \script - .2byte \word2 - .byte \byte15, \byte16 - inc _num_npcs - .endm - - .macro warp_def x, y, byte, warp, map_id - .2byte \x, \y - .byte \byte, \warp - .byte \map_id & 0xFF @ map num - .byte \map_id >> 8 @ map group - inc _num_warps - .endm - - .macro coord_event x, y, byte1, byte2, word1, word2, word3, script - .2byte \x, \y - .byte \byte1, \byte2 - .2byte \word1, \word2, \word3 - .4byte \script - inc _num_traps - .endm - - .macro bg_event x, y, byte, kind, word, arg6, arg7, arg8 - .2byte \x, \y - .byte \byte, \kind - .2byte \word - .if \kind < 5 - .4byte \arg6 - .else - .2byte \arg6 - .byte \arg7, \arg8 - .endif - inc _num_signs - .endm - - .macro map_events npcs, warps, traps, signs - .byte _num_npcs, _num_warps, _num_traps, _num_signs - .4byte \npcs, \warps, \traps, \signs - reset_map_events - .endm - - .macro reset_map_events - .set _num_npcs, 0 - .set _num_warps, 0 - .set _num_traps, 0 - .set _num_signs, 0 - .endm - - reset_map_events - - - .equiv connection_down, 1 - .equiv connection_up, 2 - .equiv connection_left, 3 - .equiv connection_right, 4 - .equiv connection_dive, 5 - .equiv connection_emerge, 6 - - .macro connection direction, offset, map, filler - .4byte connection_\direction - .4byte \offset - map \map - .space 2 - .endm diff --git a/berry_fix/payload/asm/macros/movement.inc b/berry_fix/payload/asm/macros/movement.inc deleted file mode 100644 index 909b24916..000000000 --- a/berry_fix/payload/asm/macros/movement.inc +++ /dev/null @@ -1,120 +0,0 @@ - .macro create_movement name - enum _\name - .macro \name - .byte _\name - .endm - .endm - - enum_start - create_movement step_00 - create_movement step_01 - create_movement step_02 - create_movement step_03 - create_movement slow_step_down - create_movement slow_step_up - create_movement slow_step_left - create_movement slow_step_right - create_movement step_down - create_movement step_up - create_movement step_left - create_movement step_right - create_movement fast_step_down - create_movement fast_step_up - create_movement fast_step_left - create_movement fast_step_right - create_movement step_10 - create_movement step_11 - create_movement step_12 - create_movement step_13 - create_movement step_14 - create_movement step_15 - create_movement step_16 - create_movement step_17 - create_movement step_18 - create_movement step_19 - create_movement step_1a - create_movement step_1b - create_movement step_1c - create_movement step_1d - create_movement step_1e - create_movement step_1f - create_movement step_20 - create_movement step_21 - create_movement step_22 - create_movement step_23 - create_movement step_24 - create_movement step_25 - create_movement step_26 - create_movement step_27 - create_movement step_28 - create_movement step_29 - create_movement step_2a - create_movement step_2b - create_movement step_2c - create_movement step_2d - create_movement step_2e - create_movement step_2f - create_movement step_30 - create_movement step_31 - create_movement step_32 - create_movement step_33 - create_movement step_34 - create_movement step_35 - create_movement step_36 - create_movement step_37 - create_movement step_38 - create_movement step_39 - create_movement step_3a - create_movement step_3b - create_movement step_3c - create_movement step_3d - create_movement step_3e - create_movement step_3f - create_movement step_40 - create_movement step_41 - create_movement step_42 - create_movement step_43 - create_movement step_44 - create_movement step_45 - create_movement step_46 - create_movement step_47 - create_movement step_48 - create_movement step_49 - create_movement step_4a - create_movement step_4b - create_movement step_4c - create_movement step_4d - create_movement step_4e - create_movement step_4f - create_movement step_50 - create_movement step_51 - create_movement step_52 - create_movement step_53 - create_movement step_54 - create_movement step_55 - create_movement step_56 - create_movement step_57 - create_movement step_58 - create_movement step_59 - create_movement step_5a - create_movement step_5b - create_movement step_5c - create_movement step_5d - create_movement step_5e - create_movement step_5f - create_movement step_60 - create_movement step_61 - create_movement step_62 - create_movement step_63 - create_movement step_64 - create_movement step_65 - - enum_start 0x91 - create_movement step_91 - create_movement step_92 - - enum_start 0x96 - create_movement step_96 - - enum_start 0xfe - create_movement step_end diff --git a/berry_fix/payload/asm/macros/music_voice.inc b/berry_fix/payload/asm/macros/music_voice.inc deleted file mode 100644 index b7a9e7f8d..000000000 --- a/berry_fix/payload/asm/macros/music_voice.inc +++ /dev/null @@ -1,125 +0,0 @@ - .macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 0 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 8 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 16 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte \base_midi_key - .byte 0 - .if \pan != 0 - .byte (0x80 | \pan) - .else - .byte 0 - .endif - .4byte \sample_data_pointer - .byte \attack - .byte \decay - .byte \sustain - .byte \release - .endm - - .macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release - _voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release - _voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release - .byte \type, 60, 0 - .byte \sweep - .byte (\duty_cycle & 0x3) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_square_2 duty_cycle, attack, decay, sustain, release - _voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro voice_square_2_alt duty_cycle, attack, decay, sustain, release - _voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .byte (\duty_cycle & 0x3) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release - _voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release - _voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release - .endm - - .macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .4byte \wave_samples_pointer - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_noise period, attack, decay, sustain, release - _voice_noise 4, \period, \attack, \decay, \sustain, \release - .endm - - .macro voice_noise_alt period, attack, decay, sustain, release - _voice_noise 12, \period, \attack, \decay, \sustain, \release - .endm - - .macro _voice_noise type, period, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .byte (\period & 0x1) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_keysplit voice_group_pointer, keysplit_table_pointer - .byte 0x40, 0, 0, 0 - .4byte \voice_group_pointer - .4byte \keysplit_table_pointer - .endm - - .macro voice_keysplit_all voice_group_pointer - .byte 0x80, 0, 0, 0 - .4byte \voice_group_pointer - .4byte 0 - .endm - - .macro cry sample - .byte 0x20, 60, 0, 0 - .4byte \sample - .byte 0xff, 0, 0xff, 0 - .endm - - .macro cry2 sample - .byte 0x30, 60, 0, 0 - .4byte \sample - .byte 0xff, 0, 0xff, 0 - .endm diff --git a/berry_fix/payload/asm/macros/pokemon_data.inc b/berry_fix/payload/asm/macros/pokemon_data.inc deleted file mode 100644 index b0a5f22e3..000000000 --- a/berry_fix/payload/asm/macros/pokemon_data.inc +++ /dev/null @@ -1,57 +0,0 @@ - .macro pokedex_entry pokemon_name, height, weight, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset - .2byte \height @ in decimeters - .2byte \weight @ in hectograms - .4byte DexDescription_\pokemon_name\()_1 - .4byte DexDescription_\pokemon_name\()_2 - .2byte 0 @ unused - .2byte \pokemon_scale - .2byte \pokemon_offset - .2byte \trainer_scale - .2byte \trainer_offset - .2byte 0 @ padding - .endm - - .macro base_stats hp, attack, defense, speed, sp_attack, sp_defense - .byte \hp - .byte \attack - .byte \defense - .byte \speed - .byte \sp_attack - .byte \sp_defense - .endm - - .macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense - .2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp - .endm - - .macro level_up_move level, move - .2byte (\level << 9) | \move - .endm - - .macro evo_entry method, parameter, target_species - .2byte \method - .2byte \parameter - .2byte \target_species - .2byte 0 @ padding - .endm - - .macro empty_evo_entries count - .fill 8 * \count, 1, 0 - .endm - - .macro egg_moves_begin species - .2byte 20000 + \species - .endm - -@ If the min level equals the max level, only one level argument is needed. - .macro wild_mon species, min_level, max_level - .byte \min_level - - .ifb \max_level - .byte \min_level - .else - .byte \max_level - .endif - - .2byte SPECIES_\species - .endm From 2bd15329e07a23d3515dc1c9c9e5d8f75d3be429 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 23:40:52 +0800 Subject: [PATCH 033/100] minor fixes and remove unnecessary NONMATCHING --- data/data.s | 17 --- data/smokescreen.s | 17 +++ include/battle_controllers.h | 2 +- include/constants/battle.h | 1 - ld_script.txt | 2 +- src/battle_ai_script_commands.c | 12 +- src/battle_ai_switch_items.c | 190 +++++++++----------------- src/battle_controller_link_opponent.c | 6 +- src/battle_controller_player.c | 14 +- src/battle_controller_safari.c | 2 +- src/battle_controllers.c | 20 ++- src/battle_gfx_sfx_util.c | 6 +- src/battle_script_commands.c | 142 ++++++++----------- src/battle_util.c | 5 +- src/data/items.json | 2 +- 15 files changed, 168 insertions(+), 270 deletions(-) create mode 100644 data/smokescreen.s diff --git a/data/data.s b/data/data.s index b88411e4a..eb755739a 100644 --- a/data/data.s +++ b/data/data.s @@ -278,23 +278,6 @@ gStatusConditionString_LoveJpn:: @ 82500C4 gUnknown_82500CC:: @ 82500CC .incbin "baserom.gba", 0x2500CC, 0x38 - .section .rodata.825098C - -gUnknown_825098C:: @ 825098C - .incbin "baserom.gba", 0x25098C, 0x8 - -gUnknown_8250994:: @ 8250994 - .incbin "baserom.gba", 0x250994, 0x60 - -gUnknown_82509F4:: @ 82509F4 - .incbin "baserom.gba", 0x2509F4, 0x18 - -gSpriteSheet_EnemyShadow:: @ 8250A0C - .incbin "baserom.gba", 0x250A0C, 0x10 - -gSpriteTemplate_EnemyShadow:: @ 8250A1C - .incbin "baserom.gba", 0x250A1C, 0x18 - .section .rodata.8260270 gUnknown_8260270:: @ 8260270 diff --git a/data/smokescreen.s b/data/smokescreen.s new file mode 100644 index 000000000..17d611d3c --- /dev/null +++ b/data/smokescreen.s @@ -0,0 +1,17 @@ + .section .rodata + .balign 4 + +gUnknown_825098C:: @ 825098C + .incbin "baserom.gba", 0x25098C, 0x8 + +gUnknown_8250994:: @ 8250994 + .incbin "baserom.gba", 0x250994, 0x60 + +gUnknown_82509F4:: @ 82509F4 + .incbin "baserom.gba", 0x2509F4, 0x18 + +gSpriteSheet_EnemyShadow:: @ 8250A0C + .incbin "baserom.gba", 0x250A0C, 0x10 + +gSpriteTemplate_EnemyShadow:: @ 8250A1C + .incbin "baserom.gba", 0x250A1C, 0x18 diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 3ee67eac8..6da4ca240 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -81,7 +81,7 @@ enum #define RET_VALUE_LEVELLED_UP 11 -#define INSTANT_HP_BAR_DROP 32767 +#define INSTANT_HP_BAR_DROP 0x7FFF // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 diff --git a/include/constants/battle.h b/include/constants/battle.h index c36330306..a0099d23f 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -293,5 +293,4 @@ #define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 - #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/ld_script.txt b/ld_script.txt index a4cd0d557..ca862eb17 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -383,7 +383,7 @@ SECTIONS { src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); src/battle_controller_player.o(.rodata); - data/data.o(.rodata.825098C); + data/smokescreen.o(.rodata); src/battle_controller_opponent.o(.rodata); src/battle_controller_link_opponent.o(.rodata); src/pokemon.o(.rodata); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 55d135a4e..c57825b4f 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -21,8 +21,8 @@ #define AI_ACTION_UNK7 0x0040 #define AI_ACTION_UNK8 0x0080 -#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gBattleResources->ai)) -#define BATTLE_HISTORY ((struct BattleHistory *)(gBattleResources->battleHistory)) +#define AI_THINKING_STRUCT (gBattleResources->ai) +#define BATTLE_HISTORY (gBattleResources->battleHistory) // AI states enum @@ -1808,14 +1808,8 @@ static void BattleAICmd_get_used_held_item(void) battlerId = gBattlerAttacker; else battlerId = gBattlerTarget; - // This is likely a leftover from Ruby's code and its ugly ewram access. - #ifdef NONMATCHING - AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[battlerId]; - #else - AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + offsetof(struct BattleStruct, usedHeldItems) + (battlerId * 2)); - #endif // NONMATCHING - + AI_THINKING_STRUCT->funcResult = ((u8 *)gBattleStruct->usedHeldItems)[battlerId * 2]; gAIScriptPtr += 2; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 22def6ff6..5d642bda9 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -19,7 +19,7 @@ static bool8 ShouldUseItem(void); static bool8 ShouldSwitchIfPerishSong(void) { if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG - && gDisableStructs[gActiveBattler].perishSongTimer == 0) + && gDisableStructs[gActiveBattler].perishSongTimer == 0) { *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE; BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); @@ -55,17 +55,13 @@ static bool8 ShouldSwitchIfWonderGuard(void) // Find a Pokemon in the party that has a super effective move. for (i = 0; i < PARTY_SIZE; ++i) { - if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - continue; - if (i == gBattlerPartyIndexes[gActiveBattler]) + if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0 + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG + || i == gBattlerPartyIndexes[gActiveBattler]) continue; GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); // Unused return value. - GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM); // Unused return value. - + GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM); // Unused return value. for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), j = 0; j < MAX_MON_MOVES; ++j) { move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); @@ -91,13 +87,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) u8 absorbingTypeAbility; s32 i; - if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3) + if ((HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3) + || (gLastLandedMoves[gActiveBattler] == MOVE_NONE)) return FALSE; - if (gLastLandedMoves[gActiveBattler] == MOVE_NONE) - return FALSE; - if (gLastLandedMoves[gActiveBattler] == 0xFFFF) - return FALSE; - if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + if (gLastLandedMoves[gActiveBattler] == 0xFFFF + || gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -127,19 +121,13 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) u16 species; u8 monAbility; - if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - continue; - if (i == gBattlerPartyIndexes[battlerIn1]) - continue; - if (i == gBattlerPartyIndexes[battlerIn2]) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if ((GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + || (i == gBattlerPartyIndexes[battlerIn1]) + || (i == gBattlerPartyIndexes[battlerIn2]) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))) continue; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); if (GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM) != ABILITY_NONE) @@ -159,11 +147,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) static bool8 ShouldSwitchIfNaturalCure(void) { - if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)) - return FALSE; - if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE) - return FALSE; - if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2) + if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) + || (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE) + || (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2)) return FALSE; if ((gLastLandedMoves[gActiveBattler] == MOVE_NONE || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1) { @@ -177,9 +163,8 @@ static bool8 ShouldSwitchIfNaturalCure(void) BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); return TRUE; } - if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1)) - return TRUE; - if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1)) + if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1) + || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1)) return TRUE; if (Random() & 1) { @@ -209,9 +194,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability); if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE) { - if (noRng) - return TRUE; - if (Random() % 10 != 0) + if (noRng || (Random() % 10)) return TRUE; } } @@ -261,11 +244,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) if (gLastLandedMoves[gActiveBattler] == 0) return FALSE; - if (gLastLandedMoves[gActiveBattler] == 0xFFFF) - return FALSE; - if (gLastHitBy[gActiveBattler] == 0xFF) - return FALSE; - if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + if ((gLastLandedMoves[gActiveBattler] == 0xFFFF) + || (gLastHitBy[gActiveBattler] == 0xFF) + || (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -280,25 +261,18 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) battlerIn1 = gActiveBattler; battlerIn2 = gActiveBattler; } - for (i = 0; i < PARTY_SIZE; ++i) { u16 species; u8 monAbility; - if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - continue; - if (i == gBattlerPartyIndexes[battlerIn1]) - continue; - if (i == gBattlerPartyIndexes[battlerIn2]) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if ((GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + || (i == gBattlerPartyIndexes[battlerIn1]) + || (i == gBattlerPartyIndexes[battlerIn2]) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))) continue; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); if (GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM) != ABILITY_NONE) @@ -333,21 +307,14 @@ static bool8 ShouldSwitch(void) s32 i; s32 availableToSwitch; - if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) - return FALSE; - if (gStatuses3[gActiveBattler] & STATUS3_ROOTED) - return FALSE; - if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0)) - return FALSE; - if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0)) + if ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + || (gStatuses3[gActiveBattler] & STATUS3_ROOTED) + || AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0) + || AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0)) return FALSE; // misses the flying or levitate check if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0)) - { - if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL) + if ((gBattleMons[gActiveBattler].type1 == TYPE_STEEL) || (gBattleMons[gActiveBattler].type2 == TYPE_STEEL)) return FALSE; - if (gBattleMons[gActiveBattler].type2 == TYPE_STEEL) - return FALSE; - } availableToSwitch = 0; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -364,38 +331,28 @@ static bool8 ShouldSwitch(void) } for (i = 0; i < PARTY_SIZE; ++i) { - if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - continue; - if (i == gBattlerPartyIndexes[battlerIn1]) - continue; - if (i == gBattlerPartyIndexes[battlerIn2]) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if ((GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) + || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + || (i == gBattlerPartyIndexes[battlerIn1]) + || (i == gBattlerPartyIndexes[battlerIn2]) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))) continue; ++availableToSwitch; } if (!availableToSwitch) return FALSE; - if (ShouldSwitchIfPerishSong()) + if (ShouldSwitchIfPerishSong() + || ShouldSwitchIfWonderGuard() + || FindMonThatAbsorbsOpponentsMove() + || ShouldSwitchIfNaturalCure()) return TRUE; - if (ShouldSwitchIfWonderGuard()) - return TRUE; - if (FindMonThatAbsorbsOpponentsMove()) - return TRUE; - if (ShouldSwitchIfNaturalCure()) - return TRUE; - if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) - return FALSE; - if (AreStatsRaised()) + if (HasSuperEffectiveMoveAgainstOpponents(FALSE) + || AreStatsRaised()) return FALSE; if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2) - || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3)) + || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3)) return TRUE; return FALSE; } @@ -423,20 +380,14 @@ void AI_TrySwitchOrUseItem(void) battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battlerIn2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - for (monToSwitchId = 0; monToSwitchId < PARTY_SIZE; ++monToSwitchId) { - if (GetMonData(&gEnemyParty[monToSwitchId], MON_DATA_HP) == 0) - continue; - if (monToSwitchId == gBattlerPartyIndexes[battlerIn1]) - continue; - if (monToSwitchId == gBattlerPartyIndexes[battlerIn2]) - continue; - if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) - continue; - if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) - continue; - break; + if ((!GetMonData(&gEnemyParty[monToSwitchId], MON_DATA_HP) == 0) + && (monToSwitchId != gBattlerPartyIndexes[battlerIn1]) + && (monToSwitchId != gBattlerPartyIndexes[battlerIn2]) + && (monToSwitchId != *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + && (monToSwitchId != *(gBattleStruct->monToSwitchIntoId + battlerIn2))) + break; } } *(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = monToSwitchId; @@ -568,17 +519,12 @@ u8 GetMostSuitableMonToSwitchInto(void) // If we couldn't find the best mon in terms of typing, find the one that deals most damage. for (i = 0; i < PARTY_SIZE; ++i) { - if ((u16)(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)) == SPECIES_NONE) - continue; - if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - continue; - if (gBattlerPartyIndexes[battlerIn1] == i) - continue; - if (gBattlerPartyIndexes[battlerIn2] == i) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) - continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (((u16)(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)) == SPECIES_NONE) + || (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + || (gBattlerPartyIndexes[battlerIn1] == i) + || (gBattlerPartyIndexes[battlerIn2] == i) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))) continue; for (j = 0; j < MAX_MON_MOVES; ++j) { @@ -636,9 +582,7 @@ static bool8 ShouldUseItem(void) if (i && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1) continue; item = gBattleResources->battleHistory->trainerItems[i]; - if (item == ITEM_NONE) - continue; - if (gItemEffectTable[item - ITEM_POTION] == NULL) + if (item == ITEM_NONE || gItemEffectTable[item - ITEM_POTION] == NULL) continue; if (item == ITEM_ENIGMA_BERRY) itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect; @@ -656,9 +600,7 @@ static bool8 ShouldUseItem(void) break; case AI_ITEM_HEAL_HP: paramOffset = GetItemEffectParamOffset(item, 4, 4); - if (paramOffset == 0) - break; - if (gBattleMons[gActiveBattler].hp == 0) + if (paramOffset == 0 || gBattleMons[gActiveBattler].hp == 0) break; if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4 || gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > itemEffects[paramOffset]) shouldUse = TRUE; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 59f8f9741..7df93e170 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1149,8 +1149,8 @@ static void LinkOpponentHandleDrawTrainerPic(void) trainerPicId = sub_80447AC(); } else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_RUBY - || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE - || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_EMERALD) + || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE + || (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_EMERALD) { if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE) trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_5]; @@ -1272,7 +1272,7 @@ static void LinkOpponentDoMoveAnimation(void) { case 0: if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute - && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) { gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a628a1280..b0cd92c2e 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -668,7 +668,6 @@ static void HandleMoveSwitching(void) MoveSelectionDisplayMoveNames(); for (i = 0; i < MAX_MON_MOVES; ++i) perMovePPBonuses[i] = (gBattleMons[gActiveBattler].ppBonuses & (3 << (i * 2))) >> (i * 2); - totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]]; perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor]; perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses; @@ -746,7 +745,6 @@ static void HandleMoveSwitching(void) MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); gMultiUsePlayerCursor ^= 1; PlaySE(SE_SELECT); - if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); else @@ -763,7 +761,6 @@ static void HandleMoveSwitching(void) MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); gMultiUsePlayerCursor ^= 1; PlaySE(SE_SELECT); - if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); else @@ -780,7 +777,6 @@ static void HandleMoveSwitching(void) MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); gMultiUsePlayerCursor ^= 2; PlaySE(SE_SELECT); - if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); else @@ -797,7 +793,6 @@ static void HandleMoveSwitching(void) MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); gMultiUsePlayerCursor ^= 2; PlaySE(SE_SELECT); - if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler]) MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0); else @@ -981,7 +976,7 @@ static void sub_802FD18(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy - && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) + && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)) { DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], @@ -1057,7 +1052,6 @@ static void Task_GiveExpToMon(u8 taskId) gActiveBattler = battlerId; BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); gActiveBattler = savedActiveBattler; - if (IsDoubleBattle() == TRUE && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) gTasks[taskId].func = Task_LaunchLvlUpAnim; @@ -2261,7 +2255,7 @@ static void PlayerHandleFaintAnimation(void) { if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++; + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; } else { @@ -2345,7 +2339,7 @@ static void PlayerDoMoveAnimation(void) { case 0: if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute - && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) + && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8) { gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1; InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); @@ -2587,7 +2581,7 @@ static void PlayerHandleDMA3Transfer(void) | (gBattleBufferA[gActiveBattler][4] << 24); u16 sizeArg = gBattleBufferA[gActiveBattler][5] | (gBattleBufferA[gActiveBattler][6] << 8); const u8 *src = &gBattleBufferA[gActiveBattler][7]; - u8 *dst = (u8*)(dstArg); + u8 *dst = (u8 *)(dstArg); u32 size = sizeArg; while (TRUE) diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index df7d4fe02..4b5153c7c 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -414,7 +414,7 @@ static void SafariHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (sub_80D89B0(*stringId)) BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 5dd60bd64..544af1006 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -193,7 +193,6 @@ static void InitLinkBtlControllers(void) multiplayerId = GetMultiplayerId(); if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) gBattleMainFunc = BeginBattleIntro; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) { switch (gLinkPlayers[i].id) @@ -383,7 +382,7 @@ enum LINK_BUFF_SIZE_HI, LINK_BUFF_ABSENT_BATTLER_FLAGS, LINK_BUFF_EFFECT_BATTLER, - LINK_BUFF_DATA, + LINK_BUFF_DATA }; void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data) @@ -602,7 +601,7 @@ static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, voi sBattleBuffersTransferData[1] = monId; sBattleBuffersTransferData[2] = bytes; for (i = 0; i < bytes; ++i) - sBattleBuffersTransferData[3 + i] = *(u8*)(data++); + sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3); } @@ -702,7 +701,7 @@ static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) sBattleBuffersTransferData[0] = CONTROLLER_PAUSE; sBattleBuffersTransferData[1] = toWait; for (i = 0; i < toWait * 3; ++i) - sBattleBuffersTransferData[2 + i] = *(u8*)(data++); + sBattleBuffersTransferData[2 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2); } @@ -775,7 +774,6 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID) sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; sBattleBuffersTransferData[2] = stringID; sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8; - stringInfo = (struct BattleMsgData*)(&sBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; stringInfo->originallyUsedMove = gChosenMove; @@ -820,7 +818,7 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN sBattleBuffersTransferData[2] = NoPpNumber; sBattleBuffersTransferData[3] = 0; for (i = 0; i < sizeof(*movePpData); ++i) - sBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i); + sBattleBuffersTransferData[4 + i] = *((u8 *)(movePpData) + i); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); } @@ -917,7 +915,7 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data) sBattleBuffersTransferData[2] = size; sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8; for (i = 0; i < size; ++i) - sBattleBuffersTransferData[4 + i] = *(u8*)(data++); + sBattleBuffersTransferData[4 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4); } @@ -934,7 +932,7 @@ static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, voi sBattleBuffersTransferData[5] = size; sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8; for (i = 0; i < size; ++i) - sBattleBuffersTransferData[7 + i] = *(u8*)(data++); + sBattleBuffersTransferData[7 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7); } @@ -947,7 +945,7 @@ static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbD sBattleBuffersTransferData[1] = songId; sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; for (i = 0; i < songId; ++i) - sBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++); + sBattleBuffersTransferData[3 + i] = *(u8 *)(unusedDumbDataParameter++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3); } @@ -960,7 +958,7 @@ static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) sBattleBuffersTransferData[1] = size; sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8; for (i = 0; i < size; ++i) - sBattleBuffersTransferData[3 + i] = *(u8*)(data++); + sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); } @@ -1110,7 +1108,7 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h sBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7; sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i) - sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); + sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus)); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4); } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 55f3876af..a47baea99 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -220,13 +220,13 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de return TRUE; } else if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute - && !ShouldAnimBeDoneRegardlessOfSubsitute(tableId)) + && !ShouldAnimBeDoneRegardlessOfSubsitute(tableId)) { return TRUE; } else if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute - && tableId == B_ANIM_SUBSTITUTE_FADE - && gSprites[gBattlerSpriteIds[activeBattler]].invisible) + && tableId == B_ANIM_SUBSTITUTE_FADE + && gSprites[gBattlerSpriteIds[activeBattler]].invisible) { LoadBattleMonGfxAndAnimate(activeBattler, TRUE, gBattlerSpriteIds[activeBattler]); ClearBehindSubstituteBit(activeBattler); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ac8b87ace..f84ff4d4a 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -51,12 +51,6 @@ #define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) -struct StatFractions -{ - u8 dividend; - u8 divisor; -}; - extern const u8 *const gBattleScriptsForMoveEffects[]; static bool8 IsTwoTurnsMove(u16 move); @@ -575,6 +569,12 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkF7_finishturn, }; +struct StatFractions +{ + u8 dividend; + u8 divisor; +}; + static const struct StatFractions sAccuracyStageRatios[] = { { 33, 100 }, // -6 @@ -1078,7 +1078,7 @@ static void atk01_accuracycheck(void) s8 buff; u16 calc; - if (move == 0) + if (move == MOVE_NONE) move = gCurrentMove; GET_MOVE_TYPE(move, type); if (JumpIfMoveAffectedByProtect(move) || AccuracyCalcHelper(move)) @@ -2021,6 +2021,7 @@ static void atk10_printstring(void) if (!gBattleControllerExecFlags) { u16 var = T2_READ_16(gBattlescriptCurrInstr + 1); + PrepareStringBattle(var, gBattlerAttacker); gBattlescriptCurrInstr += 3; gBattleCommunication[MSG_DISPLAY] = 1; @@ -2047,6 +2048,7 @@ static void atk12_waitmessage(void) else { u16 toWait = T2_READ_16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= toWait) { gPauseCounterBattle = 0; @@ -2360,12 +2362,10 @@ void SetMoveEffect(bool8 primary, u8 certain) *synchronizeEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; } - return; } else if (statusChanged == FALSE) { ++gBattlescriptCurrInstr; - return; } return; } @@ -2378,6 +2378,7 @@ void SetMoveEffect(bool8 primary, u8 certain) else { u8 side; + switch (gBattleCommunication[MOVE_EFFECT_BYTE]) { case MOVE_EFFECT_CONFUSION: @@ -2471,9 +2472,7 @@ void SetMoveEffect(bool8 primary, u8 certain) gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; ++gBattleCommunication[MULTISTRING_CHOOSER]) { - if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) - break; - if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) + if (gBattleCommunication[MULTISTRING_CHOOSER] > 4 || gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) break; } } @@ -3103,17 +3102,18 @@ static void atk23_getexp(void) for (viaSentIn = 0, i = 0; i < PARTY_SIZE; ++i) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) - continue; - if (gBitTable[i] & sentIn) - ++viaSentIn; - item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - if (item == ITEM_ENIGMA_BERRY) - holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; - else - holdEffect = ItemId_GetHoldEffect(item); - if (holdEffect == HOLD_EFFECT_EXP_SHARE) - ++viaExpShare; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) + { + if (gBitTable[i] & sentIn) + ++viaSentIn; + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + holdEffect = ItemId_GetHoldEffect(item); + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + ++viaExpShare; + } } calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7; if (viaExpShare) // at least one mon is getting exp via exp share @@ -3497,7 +3497,7 @@ static void atk2A_jumpifhalfword(void) static void atk2B_jumpifword(void) { u8 caseID = gBattlescriptCurrInstr[1]; - const u32* memWord = T2_READ_PTR(gBattlescriptCurrInstr + 2); + const u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 2); u32 value = T1_READ_32(gBattlescriptCurrInstr + 6); const u8 *jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 10); @@ -3978,7 +3978,7 @@ static void atk49_moveend(void) u16 originallyUsedMove; if (gChosenMove == 0xFFFF) - originallyUsedMove = 0; + originallyUsedMove = MOVE_NONE; else originallyUsedMove = gChosenMove; arg1 = gBattlescriptCurrInstr[1]; @@ -5539,7 +5539,7 @@ static void atk61_drawpartystatussummary(void) for (i = 0; i < PARTY_SIZE; ++i) { if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) + || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) { hpStatuses[i].hp = 0xFFFF; hpStatuses[i].status = 0; @@ -5579,8 +5579,8 @@ static void atk64_statusanimation(void) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) - && gDisableStructs[gActiveBattler].substituteHP == 0 - && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + && gDisableStructs[gActiveBattler].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -5598,8 +5598,8 @@ static void atk65_status2animation(void) gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); wantedToAnimate = T1_READ_32(gBattlescriptCurrInstr + 2); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) - && gDisableStructs[gActiveBattler].substituteHP == 0 - && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + && gDisableStructs[gActiveBattler].substituteHP == 0 + && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate); MarkBattlerForControllerExec(gActiveBattler); @@ -6142,7 +6142,7 @@ static void atk76_various(void) break; } if (i == MAX_MON_MOVES) - *choicedMove = 0; + *choicedMove = MOVE_NONE; } break; case VARIOUS_CASE_7: @@ -6280,10 +6280,8 @@ static void atk78_faintifabilitynotdamp(void) if (!gBattleControllerExecFlags) { for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) - { if (gBattleMons[gBattlerTarget].ability == ABILITY_DAMP) break; - } if (gBattlerTarget == gBattlersCount) { gActiveBattler = gBattlerAttacker; @@ -6293,12 +6291,8 @@ static void atk78_faintifabilitynotdamp(void) ++gBattlescriptCurrInstr; for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + if (gBattlerTarget != gBattlerAttacker && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) break; - } } else { @@ -6328,12 +6322,8 @@ static void atk7A_jumpifnexttargetvalid(void) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { for (++gBattlerTarget; ; ++gBattlerTarget) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + if (gBattlerTarget != gBattlerAttacker && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) break; - } if (gBattlerTarget >= gBattlersCount) gBattlescriptCurrInstr += 5; else @@ -6380,12 +6370,8 @@ static void atk7C_trymirrormove(void) { move = *(i * 2 + gBattlerAttacker * 8 + gBattleStruct->lastTakenMoveFrom + 0) | (*(i * 2 + gBattlerAttacker * 8 + gBattleStruct->lastTakenMoveFrom + 1) << 8); - if (move != MOVE_NONE && move != 0xFFFF) - { - movesArray[validMovesCount] = move; - ++validMovesCount; - } + movesArray[validMovesCount++] = move; } } move = *(gBattleStruct->lastTakenMove + gBattlerAttacker * 2 + 0) @@ -7889,12 +7875,8 @@ static void atkA8_copymovepermanently(void) // sketch s32 i; for (i = 0; i < MAX_MON_MOVES; ++i) - { - if (gBattleMons[gBattlerAttacker].moves[i] == MOVE_SKETCH) - continue; - if (gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget]) + if (gBattleMons[gBattlerAttacker].moves[i] != MOVE_SKETCH && gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget]) break; - } if (i != MAX_MON_MOVES) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -7927,11 +7909,11 @@ static void atkA8_copymovepermanently(void) // sketch static bool8 IsTwoTurnsMove(u16 move) { if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_RAZOR_WIND - || gBattleMoves[move].effect == EFFECT_SKY_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE) + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE + || gBattleMoves[move].effect == EFFECT_BIDE) return TRUE; else return FALSE; @@ -7939,8 +7921,8 @@ static bool8 IsTwoTurnsMove(u16 move) static bool8 IsInvalidForSleepTalkOrAssist(u16 move) { - if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST - || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) + if (move == MOVE_NONE || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST + || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME) return TRUE; else return FALSE; @@ -7953,11 +7935,11 @@ static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a c && (gBattleWeather & WEATHER_SUN_ANY)) return 2; if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_RAZOR_WIND - || gBattleMoves[move].effect == EFFECT_SKY_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE) + || gBattleMoves[move].effect == EFFECT_RAZOR_WIND + || gBattleMoves[move].effect == EFFECT_SKY_ATTACK + || gBattleMoves[move].effect == EFFECT_SOLARBEAM + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE + || gBattleMoves[move].effect == EFFECT_BIDE) if ((gHitMarker & HITMARKER_CHARGING)) return 1; return 2; @@ -8056,7 +8038,7 @@ static void atkAD_tryspiteppreduce(void) gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct; gActiveBattler = gBattlerTarget; if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i]) - && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) { BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); MarkBattlerForControllerExec(gActiveBattler); @@ -8391,12 +8373,8 @@ static void atkB9_magnitudedamagecalculation(void) } PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 2, magnitude) for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) // a valid target was found + if (gBattlerTarget != gBattlerAttacker && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) // a valid target was found break; - } ++gBattlescriptCurrInstr; } @@ -8578,12 +8556,8 @@ static void atkC1_hiddenpowercalc(void) static void atkC2_selectfirstvalidtarget(void) { for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget) - { - if (gBattlerTarget == gBattlerAttacker) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + if (gBattlerTarget != gBattlerAttacker && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) break; - } ++gBattlescriptCurrInstr; } @@ -9058,7 +9032,7 @@ static void atkDB_tryimprison(void) for (i = 0; i < MAX_MON_MOVES; ++i) { if (gBattleMons[gBattlerAttacker].moves[attackerMoveId] == gBattleMons[battlerId].moves[i] - && gBattleMons[gBattlerAttacker].moves[attackerMoveId] != MOVE_NONE) + && gBattleMons[gBattlerAttacker].moves[attackerMoveId] != MOVE_NONE) break; } if (i != MAX_MON_MOVES) @@ -9187,12 +9161,8 @@ static void atkE1_trygetintimidatetarget(void) side = GetBattlerSide(gBattleScripting.battler); PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability) for (;gBattlerTarget < gBattlersCount; ++gBattlerTarget) - { - if (GetBattlerSide(gBattlerTarget) == side) - continue; - if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) + if (GetBattlerSide(gBattlerTarget) != side && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) break; - } if (gBattlerTarget >= gBattlersCount) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else @@ -9768,21 +9738,21 @@ static void atkF3_trygivecaughtmonnick(void) BattleCreateYesNoCursorAt(); break; case 1: - if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0) + if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0) { PlaySE(SE_SELECT); BattleDestroyYesNoCursorAt(); gBattleCommunication[CURSOR_POSITION] = 0; BattleCreateYesNoCursorAt(); } - if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0) + if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0) { PlaySE(SE_SELECT); BattleDestroyYesNoCursorAt(); gBattleCommunication[CURSOR_POSITION] = 1; BattleCreateYesNoCursorAt(); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if (gBattleCommunication[CURSOR_POSITION] == 0) @@ -9795,7 +9765,7 @@ static void atkF3_trygivecaughtmonnick(void) gBattleCommunication[MULTIUSE_STATE] = 4; } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); gBattleCommunication[MULTIUSE_STATE] = 4; diff --git a/src/battle_util.c b/src/battle_util.c index 5e86425a9..b8360758c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -240,6 +240,7 @@ void sub_8017434(u8 battler) if (GetBattlerSide(battler) == B_SIDE_OPPONENT) { u8 flank = ((battler & BIT_FLANK) >> 1); + gSentPokesToOpponent[flank] = 0; for (i = 0; i < gBattlersCount; i += 2) if (!(gAbsentBattlerFlags & gBitTable[i])) @@ -283,7 +284,7 @@ u8 TrySetCantSelectMoveBattleScript(void) u8 holdEffect; u8 limitations = 0; u16 move = gBattleMons[gActiveBattler].moves[gBattleBufferB[gActiveBattler][2]]; - u16* choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; + u16 *choicedMove = &gBattleStruct->choicedMove[gActiveBattler]; if (gDisableStructs[gActiveBattler].disabledMove == move && move != MOVE_NONE) { @@ -444,7 +445,7 @@ u8 DoFieldEndTurnEffects(void) SwapTurnOrder(i, j); } { - u8* var = &gBattleStruct->turnCountersTracker; + u8 *var = &gBattleStruct->turnCountersTracker; ++*var; gBattleStruct->turnSideTracker = 0; diff --git a/src/data/items.json b/src/data/items.json index b976e4c3e..48d614a80 100644 --- a/src/data/items.json +++ b/src/data/items.json @@ -6059,4 +6059,4 @@ "secondaryId": 0 } ] -} \ No newline at end of file +} From 22d5dceb3c8f1cd613d52c437e9c3889b0f7a01a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Aug 2019 14:31:05 -0400 Subject: [PATCH 034/100] Compensate for misconfigured IDE indents --- berry_fix/payload/asm/libagbsyscall.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/berry_fix/payload/asm/libagbsyscall.s b/berry_fix/payload/asm/libagbsyscall.s index e20f370d0..ea8ef3e89 100644 --- a/berry_fix/payload/asm/libagbsyscall.s +++ b/berry_fix/payload/asm/libagbsyscall.s @@ -1,5 +1,5 @@ .include "asm/macros/function.inc" - .include "constants/gba_constants.inc" + .include "constants/gba_constants.inc" .syntax unified From 1e8b809ff231a255837dbf711d976895354062e1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Aug 2019 14:41:27 -0400 Subject: [PATCH 035/100] Minor aesthetic fix in menu.c --- src/menu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/menu.c b/src/menu.c index 5ba82448c..b8a68145c 100644 --- a/src/menu.c +++ b/src/menu.c @@ -41,8 +41,7 @@ static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLef static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum); static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY); -static const u8 gUnknown_8456618[3] = -{15, 1, 2}; +static const u8 gUnknown_8456618[3] = {15, 1, 2}; void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum) { From 2599dac8ac8c12268fca902910bfe1aab40a68ca Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 29 Aug 2019 03:26:11 +0800 Subject: [PATCH 036/100] address review changes --- src/battle_util2.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/battle_util2.c b/src/battle_util2.c index 6a3f3525b..d940d8508 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -12,12 +12,10 @@ void AllocateBattleResources(void) InitTrainerTowerBattleStruct(); if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { - void **ptr = gUnknown_3005EE0; - s32 i = 3; - - do - *ptr++ = AllocZeroed(8); - while (--i >= 0); + s32 i; + + for (i = 0; i < 4; ++i) + gUnknown_3005EE0[i] = AllocZeroed(8); } gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); gBattleResources = AllocZeroed(sizeof(*gBattleResources)); @@ -43,16 +41,12 @@ void FreeBattleResources(void) FreeTrainerTowerBattleStruct(); if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { - void **ptr = gUnknown_3005EE0; - void *nullPtr = NULL; - s32 i = 3; - - do + s32 i; + + for (i = 0; i < 4; ++i) { - Free(*ptr); - *ptr++ = nullPtr; + FREE_AND_SET_NULL(gUnknown_3005EE0[i]); } - while (--i >= 0); } if (gBattleResources != NULL) { From a26299645a5f4164e8b881c045ad7fbabb88942f Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 30 Aug 2019 03:05:21 +0800 Subject: [PATCH 037/100] real match RenderText --- include/text.h | 48 +- src/braille_text.c | 86 ++-- src/text.c | 1184 +++++++++++++------------------------------- src/text_printer.c | 60 +-- 4 files changed, 449 insertions(+), 929 deletions(-) diff --git a/include/text.h b/include/text.h index 0fd586ddd..c4199190f 100644 --- a/include/text.h +++ b/include/text.h @@ -83,7 +83,16 @@ #define TEXT_COLOR_DARK_GREY 0x2 // battle placeholders are located in battle_message.h - +#define EXT_CTRL_CODE_COLOR 0x1 +#define EXT_CTRL_CODE_HIGHLIGHT 0x2 +#define EXT_CTRL_CODE_SHADOW 0x3 +// +#define EXT_CTRL_CODE_UNKNOWN_7 0x7 +// +#define EXT_CTRL_CODE_CLEAR 0x11 +// +#define EXT_CTRL_CODE_CLEAR_TO 0x13 +#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14 #define EXT_CTRL_CODE_JPN 0x15 #define EXT_CTRL_CODE_ENG 0x16 @@ -105,18 +114,13 @@ enum struct TextPrinterSubStruct { - u8 font_type:4; // 0x14 - u8 font_type_upper:1; + u8 glyphId:4; // 0x14 + bool8 hasPrintBeenSpedUp:1; u8 font_type_5:3; - u8 field_1:5; - u8 field_1_upmid:2; - u8 field_1_top:1; - u8 frames_visible_counter; - u8 field_3; - u8 field_4; // 0x18 - u8 field_5; - u8 field_6; - u8 active; + u8 downArrowDelay:5; + u8 downArrowYPosIdx:2; + u8 hasGlyphIdBeenSet:1; + u8 autoScrollDelay; }; struct TextPrinterTemplate // TODO: Better name @@ -138,18 +142,15 @@ struct TextPrinterTemplate // TODO: Better name struct TextPrinter { - struct TextPrinterTemplate subPrinter; - + struct TextPrinterTemplate printerTemplate; void (*callback)(struct TextPrinterTemplate *, u16); // 0x10 - - union { + union __attribute__((packed)) { struct TextPrinterSubStruct sub; - - u8 sub_fields[8]; - } sub_union; - + u8 fields[7]; + } subUnion; + u8 active; u8 state; // 0x1C - u8 text_speed; + u8 textSpeed; u8 delayCounter; u8 scrollDistance; u8 minLetterSpacing; // 0x20 @@ -173,13 +174,13 @@ extern const struct FontInfo *gFonts; struct GlyphWidthFunc { - u32 font_id; + u32 fontId; s32 (*func)(u16 glyphId, bool32 isJapanese); }; struct KeypadIcon { - u16 tile_offset; + u16 tileOffset; u8 width; u8 height; }; @@ -262,5 +263,6 @@ s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese); void sub_80062B0(struct Sprite *sprite); u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority); void sub_8006398(u8 spriteId); +s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese); #endif // GUARD_TEXT_H diff --git a/src/braille_text.c b/src/braille_text.c index 047fcab08..c95cf64b2 100644 --- a/src/braille_text.c +++ b/src/braille_text.c @@ -17,20 +17,20 @@ u16 Font6Func(struct TextPrinter *textPrinter) u16 char_; struct TextPrinterSubStruct *sub; - sub = &textPrinter->sub_union.sub; + sub = &textPrinter->subUnion.sub; switch (textPrinter->state) { case 0: - if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper) + if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->hasPrintBeenSpedUp) { textPrinter->delayCounter = 0; } - if (textPrinter->delayCounter && textPrinter->text_speed) + if (textPrinter->delayCounter && textPrinter->textSpeed) { textPrinter->delayCounter --; if (gTextFlags.canABSpeedUpPrint && gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub->font_type_upper = TRUE; + sub->hasPrintBeenSpedUp = TRUE; textPrinter->delayCounter = 0; } return 3; @@ -41,62 +41,62 @@ u16 Font6Func(struct TextPrinter *textPrinter) } else { - textPrinter->delayCounter = textPrinter->text_speed; + textPrinter->delayCounter = textPrinter->textSpeed; } - char_ = *textPrinter->subPrinter.currentChar++; + char_ = *textPrinter->printerTemplate.currentChar++; switch (char_) { case EOS: return 1; case CHAR_NEWLINE: - textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; - textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentY += gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing; return 2; case PLACEHOLDER_BEGIN: - textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.currentChar++; return 2; case EXT_CTRL_CODE_BEGIN: - char_ = *textPrinter->subPrinter.currentChar++; + char_ = *textPrinter->printerTemplate.currentChar++; switch (char_) { case 1: - textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar++; - GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); return 2; case 2: - textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.currentChar++; - GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); return 2; case 3: - textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.currentChar++; - GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); return 2; case 4: - textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.currentChar; - textPrinter->subPrinter.bgColor = *++textPrinter->subPrinter.currentChar; - textPrinter->subPrinter.shadowColor = *++textPrinter->subPrinter.currentChar; - textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.bgColor = *++textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.shadowColor = *++textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; - GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor); + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); return 2; case 5: - textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.currentChar++; return 2; case 6: - sub->font_type = *textPrinter->subPrinter.currentChar; - textPrinter->subPrinter.currentChar++; + sub->glyphId = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; return 2; case 7: return 2; case 8: - textPrinter->delayCounter = *textPrinter->subPrinter.currentChar++; + textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar++; textPrinter->state = 6; return 2; case 9: textPrinter->state = 1; if (gTextFlags.autoScroll) { - sub->frames_visible_counter = 0; + sub->autoScrollDelay = 0; } return 3; case 10: @@ -104,19 +104,19 @@ u16 Font6Func(struct TextPrinter *textPrinter) return 3; case 11: case 16: - textPrinter->subPrinter.currentChar += 2; + textPrinter->printerTemplate.currentChar += 2; return 2; case 12: - char_ = *++textPrinter->subPrinter.currentChar; + char_ = *++textPrinter->printerTemplate.currentChar; break; case 13: - textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar++; return 2; case 14: - textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++; return 2; case 15: - FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor)); + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); return 2; } break; @@ -129,15 +129,15 @@ u16 Font6Func(struct TextPrinter *textPrinter) TextPrinterInitDownArrowCounters(textPrinter); return 3; case 0xF9: - char_ = *textPrinter->subPrinter.currentChar++| 0x100; + char_ = *textPrinter->printerTemplate.currentChar++| 0x100; break; case 0xF8: - textPrinter->subPrinter.currentChar++; + textPrinter->printerTemplate.currentChar++; return 0; } DecompressGlyphFont6(char_); CopyGlyphToWindow(textPrinter); - textPrinter->subPrinter.currentX += gGlyphInfo[0x80] + textPrinter->subPrinter.letterSpacing; + textPrinter->printerTemplate.currentX += gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing; return 0; case 1: if (TextPrinterWait(textPrinter)) @@ -148,9 +148,9 @@ u16 Font6Func(struct TextPrinter *textPrinter) case 2: if (TextPrinterWaitWithDownArrow(textPrinter)) { - FillWindowPixelBuffer(textPrinter->subPrinter.windowId, PIXEL_FILL(textPrinter->subPrinter.bgColor)); - textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; - textPrinter->subPrinter.currentY = textPrinter->subPrinter.y; + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y; textPrinter->state = 0; } return 3; @@ -158,8 +158,8 @@ u16 Font6Func(struct TextPrinter *textPrinter) if (TextPrinterWaitWithDownArrow(textPrinter)) { TextPrinterClearDownArrow(textPrinter); - textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing; - textPrinter->subPrinter.currentX = textPrinter->subPrinter.x; + textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing; + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; textPrinter->state = 4; } return 3; @@ -168,15 +168,15 @@ u16 Font6Func(struct TextPrinter *textPrinter) { if (textPrinter->scrollDistance < gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed]) { - ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->subPrinter.bgColor)); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance = 0; } else { - ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->subPrinter.bgColor)); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance -= gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed]; } - CopyWindowToVram(textPrinter->subPrinter.windowId, 2); + CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); } else { @@ -216,7 +216,7 @@ static void DecompressGlyphFont6(u16 glyph) gGlyphInfo[0x81] = 0x10; } -u32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese) +s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese) { return 0x10; } diff --git a/src/text.c b/src/text.c index d36a448ad..5b88e9f75 100644 --- a/src/text.c +++ b/src/text.c @@ -6,19 +6,18 @@ #include "text.h" #include "sprite.h" #include "blit.h" +#include "sound.h" +#include "m4a.h" +#include "quest_log.h" +#include "window.h" +#include "graphics.h" +#include "dynamic_placeholder_text_util.h" extern u8 gGlyphInfo[0x90]; -extern u8 gUnknown_203ADFA; -extern u16 gTMCaseMainWindowPalette[]; extern const struct OamData gOamData_83AC9D0; -extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -extern void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); -extern u8 GetKeypadIconWidth(u8 keypadIconId); -extern void CopyWindowToVram(u8 windowId, u8 mode); -extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); -extern void PlaySE(u16 songNum); -extern u8* DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 a1); +static void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese); +static void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese); TextFlags gTextFlags; @@ -378,107 +377,107 @@ const u16 gFont9JapaneseGlyphs[] = INCBIN_U16("data/graphics/fonts/font9_jap.fwj u16 Font0Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 0; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 0; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } u16 Font1Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 1; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 1; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } u16 Font2Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 2; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 2; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } u16 Font3Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 3; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 3; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } u16 Font4Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 4; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 4; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } u16 Font5Func(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; - if (subStruct->field_1_top == 0) + if (subStruct->hasGlyphIdBeenSet == 0) { - textPrinter->sub_union.sub.font_type = 5; - subStruct->field_1_top = 1; + textPrinter->subUnion.sub.glyphId = 5; + subStruct->hasGlyphIdBeenSet = 1; } return RenderText(textPrinter); } void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; if (gTextFlags.autoScroll == 1) - subStruct->frames_visible_counter = 0; + subStruct->autoScrollDelay = 0; else { - subStruct->field_1_upmid = 0; - subStruct->field_1 = 0; + subStruct->downArrowYPosIdx = 0; + subStruct->downArrowDelay = 0; } } void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; const u8 *arrowTiles; if (gTextFlags.autoScroll == 0) { - if (subStruct->field_1 != 0) + if (subStruct->downArrowDelay != 0) { - subStruct->field_1 = ((*(u32*)&textPrinter->sub_union.sub) << 19 >> 27) - 1; // convoluted way of getting field_1, necessary to match + subStruct->downArrowDelay = ((*(u32*)&textPrinter->subUnion.sub) << 19 >> 27) - 1; // convoluted way of getting field_1, necessary to match } else { FillWindowPixelRect( - textPrinter->subPrinter.windowId, - textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor, - textPrinter->subPrinter.currentX, - textPrinter->subPrinter.currentY, + textPrinter->printerTemplate.windowId, + textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor, + textPrinter->printerTemplate.currentX, + textPrinter->printerTemplate.currentY, 10, 12); @@ -494,20 +493,20 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter) } BlitBitmapRectToWindow( - textPrinter->subPrinter.windowId, + textPrinter->printerTemplate.windowId, arrowTiles, - gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->field_1_upmid but again, stupidly retrieved + gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->downArrowYPosIdx but again, stupidly retrieved 0, 0x80, 0x10, - textPrinter->subPrinter.currentX, - textPrinter->subPrinter.currentY, + textPrinter->printerTemplate.currentX, + textPrinter->printerTemplate.currentY, 10, 12); - CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2); + CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2); - subStruct->field_1 = 0x8; - subStruct->field_1_upmid = (*(u32*)subStruct << 17 >> 30) + 1; + subStruct->downArrowDelay = 0x8; + subStruct->downArrowYPosIdx = (*(u32*)subStruct << 17 >> 30) + 1; } } } @@ -515,27 +514,27 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter) void TextPrinterClearDownArrow(struct TextPrinter *textPrinter) { FillWindowPixelRect( - textPrinter->subPrinter.windowId, - textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor, - textPrinter->subPrinter.currentX, - textPrinter->subPrinter.currentY, + textPrinter->printerTemplate.windowId, + textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor, + textPrinter->printerTemplate.currentX, + textPrinter->printerTemplate.currentY, 10, 12); - CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2); + CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2); } bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter) { - struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub; + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; u8 delay = (gUnknown_203ADFA == 2) ? 50 : 120; - if (subStruct->frames_visible_counter == delay) + if (subStruct->autoScrollDelay == delay) { return TRUE; } else { - subStruct->frames_visible_counter++; + subStruct->autoScrollDelay++; return FALSE; } } @@ -550,7 +549,7 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter) else { TextPrinterDrawDownArrow(textPrinter); - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + if (JOY_NEW(A_BUTTON | B_BUTTON)) { result = TRUE; PlaySE(5); @@ -568,7 +567,7 @@ bool16 TextPrinterWait(struct TextPrinter *textPrinter) } else { - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + if (JOY_NEW(A_BUTTON | B_BUTTON)) { result = TRUE; PlaySE(5); @@ -619,772 +618,291 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c } } -__attribute__((naked)) u16 RenderText(struct TextPrinter *textPrinter) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r6, r0, 0\n\ - adds r4, r6, 0\n\ - adds r4, 0x14\n\ - ldrb r0, [r6, 0x1C]\n\ - cmp r0, 0x6\n\ - bls _080057A0\n\ - b _08005D68\n\ -_080057A0:\n\ - lsls r0, 2\n\ - ldr r1, _080057AC @ =_080057B0\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080057AC: .4byte _080057B0\n\ - .align 2, 0\n\ -_080057B0:\n\ - .4byte _080057CC\n\ - .4byte _08005C58\n\ - .4byte _08005C6C\n\ - .4byte _08005C98\n\ - .4byte _08005CD0\n\ - .4byte _08005D44\n\ - .4byte _08005D56\n\ -_080057CC:\n\ - ldr r2, _08005820 @ =gMain\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080057E6\n\ - ldrb r1, [r4]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080057E6\n\ - movs r0, 0\n\ - strb r0, [r6, 0x1E]\n\ -_080057E6:\n\ - ldrb r1, [r6, 0x1E]\n\ - cmp r1, 0\n\ - beq _08005828\n\ - ldrb r0, [r6, 0x1D]\n\ - cmp r0, 0\n\ - beq _08005828\n\ - subs r0, r1, 0x1\n\ - strb r0, [r6, 0x1E]\n\ - ldr r0, _08005824 @ =gTextFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08005804\n\ - b _08005B30\n\ -_08005804:\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08005810\n\ - b _08005B30\n\ -_08005810:\n\ - ldrb r0, [r4]\n\ - movs r1, 0x10\n\ - orrs r0, r1\n\ - strb r0, [r4]\n\ - movs r0, 0\n\ - strb r0, [r6, 0x1E]\n\ - b _08005B30\n\ - .align 2, 0\n\ -_08005820: .4byte gMain\n\ -_08005824: .4byte gTextFlags\n\ -_08005828:\n\ - ldr r2, _08005838 @ =gTextFlags\n\ - ldrb r1, [r2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0800583C\n\ - movs r0, 0x1\n\ - b _0800583E\n\ - .align 2, 0\n\ -_08005838: .4byte gTextFlags\n\ -_0800583C:\n\ - ldrb r0, [r6, 0x1D]\n\ -_0800583E:\n\ - strb r0, [r6, 0x1E]\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - adds r0, r3, 0\n\ - subs r0, 0xF8\n\ - cmp r0, 0x7\n\ - bls _08005852\n\ - b _08005B6C\n\ -_08005852:\n\ - lsls r0, 2\n\ - ldr r1, _0800585C @ =_08005860\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0800585C: .4byte _08005860\n\ - .align 2, 0\n\ -_08005860:\n\ - .4byte _08005B46\n\ - .4byte _08005B34\n\ - .4byte _08005B26\n\ - .4byte _08005B22\n\ - .4byte _080058AC\n\ - .4byte _080058A8\n\ - .4byte _08005880\n\ - .4byte _08005D68\n\ -_08005880:\n\ - ldrb r0, [r6, 0x6]\n\ - strb r0, [r6, 0x8]\n\ - ldrb r1, [r6, 0x5]\n\ - ldr r0, _080058A4 @ =gFonts\n\ - ldr r2, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r1, [r6, 0xB]\n\ - ldrb r0, [r0, 0x5]\n\ - adds r1, r0\n\ - ldrb r0, [r6, 0x9]\n\ - adds r0, r1\n\ - strb r0, [r6, 0x9]\n\ -_0800589E:\n\ - movs r0, 0x2\n\ - b _08005D6A\n\ - .align 2, 0\n\ -_080058A4: .4byte gFonts\n\ -_080058A8:\n\ - ldr r0, [r6]\n\ - b _08005B0A\n\ -_080058AC:\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - subs r0, r3, 0x1\n\ - cmp r0, 0x17\n\ - bls _080058BC\n\ - b _08005B6C\n\ -_080058BC:\n\ - lsls r0, 2\n\ - ldr r1, _080058C8 @ =_080058CC\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080058C8: .4byte _080058CC\n\ - .align 2, 0\n\ -_080058CC:\n\ - .4byte _0800592C\n\ - .4byte _0800594E\n\ - .4byte _08005972\n\ - .4byte _0800598C\n\ - .4byte _080059D8\n\ - .4byte _080059DC\n\ - .4byte _0800589E\n\ - .4byte _080059F4\n\ - .4byte _08005A04\n\ - .4byte _08005A1A\n\ - .4byte _08005A1E\n\ - .4byte _08005A66\n\ - .4byte _08005A70\n\ - .4byte _08005A78\n\ - .4byte _08005A84\n\ - .4byte _08005A4C\n\ - .4byte _08005AB0\n\ - .4byte _08005ACC\n\ - .4byte _08005ADC\n\ - .4byte _08005B00\n\ - .4byte _08005B10\n\ - .4byte _08005B18\n\ - .4byte _08005A96\n\ - .4byte _08005AA4\n\ -_0800592C:\n\ - ldr r2, [r6]\n\ - ldrb r1, [r2]\n\ - lsls r1, 4\n\ - ldrb r3, [r6, 0xC]\n\ - movs r0, 0xF\n\ - ands r0, r3\n\ - orrs r0, r1\n\ - strb r0, [r6, 0xC]\n\ - adds r2, 0x1\n\ - str r2, [r6]\n\ - lsls r0, 24\n\ - lsrs r0, 28\n\ - ldrb r2, [r6, 0xD]\n\ - lsls r1, r2, 28\n\ - lsrs r1, 28\n\ - lsrs r2, 4\n\ - b _080059D2\n\ -_0800594E:\n\ - ldr r1, [r6]\n\ - ldrb r2, [r1]\n\ - movs r0, 0xF\n\ - ands r0, r2\n\ - ldrb r3, [r6, 0xD]\n\ - movs r2, 0x10\n\ - negs r2, r2\n\ - ands r2, r3\n\ - orrs r2, r0\n\ - strb r2, [r6, 0xD]\n\ - adds r1, 0x1\n\ - str r1, [r6]\n\ - ldrb r0, [r6, 0xC]\n\ - lsrs r0, 4\n\ - lsls r1, r2, 28\n\ - lsrs r1, 28\n\ - lsrs r2, 4\n\ - b _080059D2\n\ -_08005972:\n\ - ldr r1, [r6]\n\ - ldrb r0, [r1]\n\ - lsls r0, 4\n\ - ldrb r3, [r6, 0xD]\n\ - movs r2, 0xF\n\ - ands r2, r3\n\ - orrs r2, r0\n\ - strb r2, [r6, 0xD]\n\ - adds r1, 0x1\n\ - str r1, [r6]\n\ - ldrb r0, [r6, 0xC]\n\ - lsrs r0, 4\n\ - b _080059CA\n\ -_0800598C:\n\ - ldr r3, [r6]\n\ - ldrb r1, [r3]\n\ - lsls r1, 4\n\ - ldrb r4, [r6, 0xC]\n\ - movs r2, 0xF\n\ - adds r0, r2, 0\n\ - ands r0, r4\n\ - orrs r0, r1\n\ - strb r0, [r6, 0xC]\n\ - adds r5, r3, 0x1\n\ - str r5, [r6]\n\ - ldrb r3, [r3, 0x1]\n\ - adds r1, r2, 0\n\ - ands r1, r3\n\ - ldrb r4, [r6, 0xD]\n\ - movs r3, 0x10\n\ - negs r3, r3\n\ - ands r3, r4\n\ - orrs r3, r1\n\ - strb r3, [r6, 0xD]\n\ - adds r4, r5, 0x1\n\ - str r4, [r6]\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r1, 4\n\ - ands r2, r3\n\ - orrs r2, r1\n\ - strb r2, [r6, 0xD]\n\ - adds r4, 0x1\n\ - str r4, [r6]\n\ - lsls r0, 24\n\ - lsrs r0, 28\n\ -_080059CA:\n\ - lsls r1, r2, 28\n\ - lsrs r1, 28\n\ - lsls r2, 24\n\ - lsrs r2, 28\n\ -_080059D2:\n\ - bl GenerateFontHalfRowLookupTable\n\ - b _0800589E\n\ -_080059D8:\n\ - ldr r0, [r6]\n\ - b _08005B0A\n\ -_080059DC:\n\ - ldr r0, [r6]\n\ - ldrb r0, [r0]\n\ - movs r1, 0xF\n\ - ands r1, r0\n\ - ldrb r2, [r4]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4]\n\ - ldr r0, [r6]\n\ - b _08005B0A\n\ -_080059F4:\n\ - ldr r0, [r6]\n\ - ldrb r1, [r0]\n\ - strb r1, [r6, 0x1E]\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - movs r0, 0x6\n\ - strb r0, [r6, 0x1C]\n\ - b _0800589E\n\ -_08005A04:\n\ - movs r0, 0x1\n\ - strb r0, [r6, 0x1C]\n\ - ldrb r1, [r2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08005A14\n\ - b _08005B30\n\ -_08005A14:\n\ - movs r0, 0\n\ - strb r0, [r4, 0x2]\n\ - b _08005B30\n\ -_08005A1A:\n\ - movs r0, 0x5\n\ - b _08005D52\n\ -_08005A1E:\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - adds r1, r0, 0x1\n\ - str r1, [r6]\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 8\n\ - orrs r3, r0\n\ - adds r1, 0x1\n\ - str r1, [r6]\n\ - ldr r0, _08005A48 @ =gUnknown_203ADFA\n\ - ldrb r0, [r0]\n\ - subs r0, 0x2\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bhi _08005A40\n\ - b _0800589E\n\ -_08005A40:\n\ - adds r0, r3, 0\n\ - bl PlayBGM\n\ - b _0800589E\n\ - .align 2, 0\n\ -_08005A48: .4byte gUnknown_203ADFA\n\ -_08005A4C:\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - adds r1, r0, 0x1\n\ - str r1, [r6]\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 8\n\ - orrs r3, r0\n\ - adds r1, 0x1\n\ - str r1, [r6]\n\ - adds r0, r3, 0\n\ - bl PlaySE\n\ - b _0800589E\n\ -_08005A66:\n\ - ldr r1, [r6]\n\ - adds r0, r1, 0x1\n\ - str r0, [r6]\n\ - ldrb r3, [r1, 0x1]\n\ - b _08005B6C\n\ -_08005A70:\n\ - ldr r1, [r6]\n\ - ldrb r0, [r1]\n\ - ldrb r2, [r6, 0x6]\n\ - b _08005AD2\n\ -_08005A78:\n\ - ldr r1, [r6]\n\ - ldrb r0, [r1]\n\ - ldrb r3, [r6, 0x7]\n\ - adds r0, r3\n\ - strb r0, [r6, 0x9]\n\ - b _08005AD6\n\ -_08005A84:\n\ - ldrb r0, [r6, 0x4]\n\ - ldrb r2, [r6, 0xD]\n\ - lsls r2, 28\n\ - lsrs r1, r2, 4\n\ - orrs r1, r2\n\ - lsrs r1, 24\n\ - bl FillWindowPixelBuffer\n\ - b _0800589E\n\ -_08005A96:\n\ - ldr r0, _08005AA0 @ =gMPlayInfo_BGM\n\ - bl m4aMPlayStop\n\ - b _0800589E\n\ - .align 2, 0\n\ -_08005AA0: .4byte gMPlayInfo_BGM\n\ -_08005AA4:\n\ - ldr r0, _08005AAC @ =gMPlayInfo_BGM\n\ - bl m4aMPlayContinue\n\ - b _0800589E\n\ - .align 2, 0\n\ -_08005AAC: .4byte gMPlayInfo_BGM\n\ -_08005AB0:\n\ - ldr r0, [r6]\n\ - ldrb r4, [r0]\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - cmp r4, 0\n\ - bgt _08005ABE\n\ - b _0800589E\n\ -_08005ABE:\n\ - adds r0, r6, 0\n\ - adds r1, r4, 0\n\ - bl ClearTextSpan\n\ - ldrb r0, [r6, 0x8]\n\ - adds r0, r4\n\ - b _08005C4E\n\ -_08005ACC:\n\ - ldr r1, [r6]\n\ - ldrb r0, [r6, 0x6]\n\ - ldrb r2, [r1]\n\ -_08005AD2:\n\ - adds r0, r2\n\ - strb r0, [r6, 0x8]\n\ -_08005AD6:\n\ - adds r1, 0x1\n\ - str r1, [r6]\n\ - b _0800589E\n\ -_08005ADC:\n\ - ldr r0, [r6]\n\ - ldrb r2, [r0]\n\ - ldrb r1, [r6, 0x6]\n\ - adds r2, r1\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - ldrb r0, [r6, 0x8]\n\ - subs r4, r2, r0\n\ - cmp r4, 0\n\ - bgt _08005AF2\n\ - b _0800589E\n\ -_08005AF2:\n\ - adds r0, r6, 0\n\ - adds r1, r4, 0\n\ - bl ClearTextSpan\n\ - ldrb r0, [r6, 0x8]\n\ - adds r0, r4\n\ - b _08005C4E\n\ -_08005B00:\n\ - ldr r0, [r6]\n\ - ldrb r2, [r0]\n\ - adds r1, r6, 0\n\ - adds r1, 0x20\n\ - strb r2, [r1]\n\ -_08005B0A:\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - b _0800589E\n\ -_08005B10:\n\ - adds r1, r6, 0\n\ - adds r1, 0x21\n\ - movs r0, 0x1\n\ - b _08005B1E\n\ -_08005B18:\n\ - adds r1, r6, 0\n\ - adds r1, 0x21\n\ - movs r0, 0\n\ -_08005B1E:\n\ - strb r0, [r1]\n\ - b _0800589E\n\ -_08005B22:\n\ - movs r0, 0x2\n\ - b _08005B28\n\ -_08005B26:\n\ - movs r0, 0x3\n\ -_08005B28:\n\ - strb r0, [r6, 0x1C]\n\ - adds r0, r6, 0\n\ - bl TextPrinterInitDownArrowCounters\n\ -_08005B30:\n\ - movs r0, 0x3\n\ - b _08005D6A\n\ -_08005B34:\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - movs r2, 0x80\n\ - lsls r2, 1\n\ - adds r1, r2, 0\n\ - orrs r3, r1\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - b _08005B6C\n\ -_08005B46:\n\ - ldr r0, [r6]\n\ - ldrb r3, [r0]\n\ - adds r0, 0x1\n\ - str r0, [r6]\n\ - ldrb r0, [r6, 0x4]\n\ - adds r1, r3, 0\n\ - ldrb r2, [r6, 0x8]\n\ - ldrb r3, [r6, 0x9]\n\ - bl DrawKeypadIcon\n\ - ldr r1, _08005B68 @ =gGlyphInfo\n\ - adds r1, 0x80\n\ - strb r0, [r1]\n\ - ldrb r3, [r6, 0xA]\n\ - adds r0, r3\n\ - b _08005C4A\n\ - .align 2, 0\n\ -_08005B68: .4byte gGlyphInfo\n\ -_08005B6C:\n\ - ldr r0, [r4]\n\ - lsls r0, 28\n\ - lsrs r0, 28\n\ - cmp r0, 0x5\n\ - bhi _08005BEE\n\ - lsls r0, 2\n\ - ldr r1, _08005B80 @ =_08005B84\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08005B80: .4byte _08005B84\n\ - .align 2, 0\n\ -_08005B84:\n\ - .4byte _08005B9C\n\ - .4byte _08005BAA\n\ - .4byte _08005BB8\n\ - .4byte _08005BC6\n\ - .4byte _08005BD4\n\ - .4byte _08005BE2\n\ -_08005B9C:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont0\n\ - b _08005BEE\n\ -_08005BAA:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont1\n\ - b _08005BEE\n\ -_08005BB8:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont2\n\ - b _08005BEE\n\ -_08005BC6:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont3\n\ - b _08005BEE\n\ -_08005BD4:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont4\n\ - b _08005BEE\n\ -_08005BE2:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl DecompressGlyphFont5\n\ -_08005BEE:\n\ - adds r0, r6, 0\n\ - bl CopyGlyphToWindow\n\ - adds r2, r6, 0\n\ - adds r2, 0x20\n\ - ldrb r0, [r2]\n\ - cmp r0, 0\n\ - beq _08005C28\n\ - ldr r1, _08005C24 @ =gGlyphInfo\n\ - adds r1, 0x80\n\ - ldrb r0, [r1]\n\ - ldrb r3, [r6, 0x8]\n\ - adds r0, r3\n\ - strb r0, [r6, 0x8]\n\ - ldrb r2, [r2]\n\ - ldrb r0, [r1]\n\ - subs r4, r2, r0\n\ - cmp r4, 0\n\ - ble _08005C50\n\ - adds r0, r6, 0\n\ - adds r1, r4, 0\n\ - bl ClearTextSpan\n\ - ldrb r0, [r6, 0x8]\n\ - adds r0, r4\n\ - b _08005C4E\n\ - .align 2, 0\n\ -_08005C24: .4byte gGlyphInfo\n\ -_08005C28:\n\ - adds r0, r6, 0\n\ - adds r0, 0x21\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08005C44\n\ - ldr r0, _08005C40 @ =gGlyphInfo\n\ - adds r0, 0x80\n\ - ldrb r1, [r6, 0xA]\n\ - ldrb r0, [r0]\n\ - adds r1, r0\n\ - ldrb r0, [r6, 0x8]\n\ - b _08005C4C\n\ - .align 2, 0\n\ -_08005C40: .4byte gGlyphInfo\n\ -_08005C44:\n\ - ldr r0, _08005C54 @ =gGlyphInfo\n\ - adds r0, 0x80\n\ - ldrb r0, [r0]\n\ -_08005C4A:\n\ - ldrb r1, [r6, 0x8]\n\ -_08005C4C:\n\ - adds r0, r1\n\ -_08005C4E:\n\ - strb r0, [r6, 0x8]\n\ -_08005C50:\n\ - movs r0, 0\n\ - b _08005D6A\n\ - .align 2, 0\n\ -_08005C54: .4byte gGlyphInfo\n\ -_08005C58:\n\ - adds r0, r6, 0\n\ - bl TextPrinterWait\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _08005C66\n\ - b _08005B30\n\ -_08005C66:\n\ - movs r0, 0\n\ - strb r0, [r6, 0x1C]\n\ - b _08005B30\n\ -_08005C6C:\n\ - adds r0, r6, 0\n\ - bl TextPrinterWaitWithDownArrow\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _08005C7A\n\ - b _08005B30\n\ -_08005C7A:\n\ - ldrb r0, [r6, 0x4]\n\ - ldrb r2, [r6, 0xD]\n\ - lsls r2, 28\n\ - lsrs r1, r2, 4\n\ - orrs r1, r2\n\ - lsrs r1, 24\n\ - bl FillWindowPixelBuffer\n\ - ldrb r0, [r6, 0x6]\n\ - movs r1, 0\n\ - strb r0, [r6, 0x8]\n\ - ldrb r0, [r6, 0x7]\n\ - strb r0, [r6, 0x9]\n\ - strb r1, [r6, 0x1C]\n\ - b _08005B30\n\ -_08005C98:\n\ - adds r0, r6, 0\n\ - bl TextPrinterWaitWithDownArrow\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _08005CA6\n\ - b _08005B30\n\ -_08005CA6:\n\ - adds r0, r6, 0\n\ - bl TextPrinterClearDownArrow\n\ - ldrb r1, [r6, 0x5]\n\ - ldr r0, _08005CCC @ =gFonts\n\ - ldr r2, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r1, [r6, 0xB]\n\ - ldrb r0, [r0, 0x5]\n\ - adds r1, r0\n\ - strb r1, [r6, 0x1F]\n\ - ldrb r0, [r6, 0x6]\n\ - strb r0, [r6, 0x8]\n\ - movs r0, 0x4\n\ - strb r0, [r6, 0x1C]\n\ - b _08005B30\n\ - .align 2, 0\n\ -_08005CCC: .4byte gFonts\n\ -_08005CD0:\n\ - ldrb r2, [r6, 0x1F]\n\ - cmp r2, 0\n\ - beq _08005D40\n\ - ldr r4, _08005D04 @ =gWindowVerticalScrollSpeeds\n\ - ldr r5, _08005D08 @ =gSaveBlock2Ptr\n\ - ldr r0, [r5]\n\ - ldrb r0, [r0, 0x14]\n\ - lsls r1, r0, 29\n\ - lsrs r0, r1, 29\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r2, r0\n\ - bcs _08005D0C\n\ - ldrb r0, [r6, 0x4]\n\ - ldrb r1, [r6, 0xD]\n\ - lsls r1, 28\n\ - lsrs r3, r1, 4\n\ - orrs r3, r1\n\ - lsrs r3, 24\n\ - movs r1, 0\n\ - bl ScrollWindow\n\ - movs r0, 0\n\ - strb r0, [r6, 0x1F]\n\ - b _08005D36\n\ - .align 2, 0\n\ -_08005D04: .4byte gWindowVerticalScrollSpeeds\n\ -_08005D08: .4byte gSaveBlock2Ptr\n\ -_08005D0C:\n\ - ldrb r0, [r6, 0x4]\n\ - lsrs r1, 29\n\ - adds r1, r4\n\ - ldrb r2, [r1]\n\ - ldrb r1, [r6, 0xD]\n\ - lsls r1, 28\n\ - lsrs r3, r1, 4\n\ - orrs r3, r1\n\ - lsrs r3, 24\n\ - movs r1, 0\n\ - bl ScrollWindow\n\ - ldr r0, [r5]\n\ - ldrb r0, [r0, 0x14]\n\ - lsls r0, 29\n\ - lsrs r0, 29\n\ - adds r0, r4\n\ - ldrb r1, [r6, 0x1F]\n\ - ldrb r0, [r0]\n\ - subs r1, r0\n\ - strb r1, [r6, 0x1F]\n\ -_08005D36:\n\ - ldrb r0, [r6, 0x4]\n\ - movs r1, 0x2\n\ - bl CopyWindowToVram\n\ - b _08005B30\n\ -_08005D40:\n\ - strb r2, [r6, 0x1C]\n\ - b _08005B30\n\ -_08005D44:\n\ - bl IsSEPlaying\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - beq _08005D52\n\ - b _08005B30\n\ -_08005D52:\n\ - strb r0, [r6, 0x1C]\n\ - b _08005B30\n\ -_08005D56:\n\ - ldrb r0, [r6, 0x1E]\n\ - adds r1, r0, 0\n\ - cmp r1, 0\n\ - beq _08005D64\n\ - subs r0, 0x1\n\ - strb r0, [r6, 0x1E]\n\ - b _08005B30\n\ -_08005D64:\n\ - strb r1, [r6, 0x1C]\n\ - b _08005B30\n\ -_08005D68:\n\ - movs r0, 0x1\n\ -_08005D6A:\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); + struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub; + u16 currChar; + s32 width; + s32 widthHelper; + + switch (textPrinter->state) + { + case 0: + if (JOY_HELD(A_BUTTON | B_BUTTON) && subStruct->hasPrintBeenSpedUp) + textPrinter->delayCounter = 0; + + if (textPrinter->delayCounter && textPrinter->textSpeed) + { + textPrinter->delayCounter--; + if (gTextFlags.canABSpeedUpPrint && JOY_NEW(A_BUTTON | B_BUTTON)) + { + subStruct->hasPrintBeenSpedUp = TRUE; + textPrinter->delayCounter = 0; + } + return 3; + } + + if (gTextFlags.autoScroll) + textPrinter->delayCounter = 1; + else + textPrinter->delayCounter = textPrinter->textSpeed; + + currChar = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + + switch (currChar) + { + case CHAR_NEWLINE: + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentY += gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing; + return 2; + case PLACEHOLDER_BEGIN: + textPrinter->printerTemplate.currentChar++; + return 2; + case EXT_CTRL_CODE_BEGIN: + currChar = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + switch (currChar) + { + case 1: + textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); + return 2; + case 2: + textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); + return 2; + case 3: + textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); + return 2; + case 4: + textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor); + return 2; + case 5: + textPrinter->printerTemplate.currentChar++; + return 2; + case 6: + subStruct->glyphId = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + return 2; + case EXT_CTRL_CODE_UNKNOWN_7: + return 2; + case 8: + textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + textPrinter->state = 6; + return 2; + case 9: + textPrinter->state = 1; + if (gTextFlags.autoScroll) + subStruct->autoScrollDelay = 0; + return 3; + case 10: + textPrinter->state = 5; + return 3; + case 11: + currChar = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + currChar |= *textPrinter->printerTemplate.currentChar << 8; + textPrinter->printerTemplate.currentChar++; + if ((u8)(gUnknown_203ADFA - 2u) > 1) + PlayBGM(currChar); + return 2; + case 16: + currChar = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + currChar |= (*textPrinter->printerTemplate.currentChar << 8); + textPrinter->printerTemplate.currentChar++; + PlaySE(currChar); + return 2; + case 12: + textPrinter->printerTemplate.currentChar++; + currChar = *textPrinter->printerTemplate.currentChar; + break; + case 13: + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + return 2; + case 14: + textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + return 2; + case 15: + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); + return 2; + case 23: + m4aMPlayStop(&gMPlayInfo_BGM); + return 2; + case 24: + m4aMPlayContinue(&gMPlayInfo_BGM); + return 2; + case EXT_CTRL_CODE_CLEAR: + width = *textPrinter->printerTemplate.currentChar; + textPrinter->printerTemplate.currentChar++; + if (width > 0) + { + ClearTextSpan(textPrinter, width); + textPrinter->printerTemplate.currentX += width; + return 0; + } + return 2; + case 18: + textPrinter->printerTemplate.currentX = *textPrinter->printerTemplate.currentChar + textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentChar++; + return 2; + case EXT_CTRL_CODE_CLEAR_TO: + { + widthHelper = *textPrinter->printerTemplate.currentChar; + widthHelper += textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentChar++; + width = widthHelper - textPrinter->printerTemplate.currentX; + if (width > 0) + { + ClearTextSpan(textPrinter, width); + textPrinter->printerTemplate.currentX += width; + return 0; + } + } + return 2; + case EXT_CTRL_CODE_MIN_LETTER_SPACING: + textPrinter->minLetterSpacing = *textPrinter->printerTemplate.currentChar++; + return 2; + case EXT_CTRL_CODE_JPN: + textPrinter->japanese = 1; + return 2; + case EXT_CTRL_CODE_ENG: + textPrinter->japanese = 0; + return 2; + } + break; + case CHAR_PROMPT_CLEAR: + textPrinter->state = 2; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case CHAR_PROMPT_SCROLL: + textPrinter->state = 3; + TextPrinterInitDownArrowCounters(textPrinter); + return 3; + case CHAR_EXTRA_EMOJI: + currChar = *textPrinter->printerTemplate.currentChar | 0x100; + textPrinter->printerTemplate.currentChar++; + break; + case CHAR_KEYPAD_ICON: + currChar = *textPrinter->printerTemplate.currentChar++; + gGlyphInfo[0x80] = DrawKeypadIcon(textPrinter->printerTemplate.windowId, currChar, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY); + textPrinter->printerTemplate.currentX += gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing; + return 0; + case EOS: + return 1; + } + + switch (subStruct->glyphId) + { + case 0: + DecompressGlyphFont0(currChar, textPrinter->japanese); + break; + case 1: + DecompressGlyphFont1(currChar, textPrinter->japanese); + break; + case 2: + DecompressGlyphFont2(currChar, textPrinter->japanese); + break; + case 3: + DecompressGlyphFont3(currChar, textPrinter->japanese); + break; + case 4: + DecompressGlyphFont4(currChar, textPrinter->japanese); + break; + case 5: + DecompressGlyphFont5(currChar, textPrinter->japanese); + } + + CopyGlyphToWindow(textPrinter); + + if (textPrinter->minLetterSpacing) + { + textPrinter->printerTemplate.currentX += gGlyphInfo[0x80]; + width = textPrinter->minLetterSpacing - gGlyphInfo[0x80]; + if (width > 0) + { + ClearTextSpan(textPrinter, width); + textPrinter->printerTemplate.currentX += width; + } + } + else + { + if (textPrinter->japanese) + textPrinter->printerTemplate.currentX += (gGlyphInfo[0x80] + textPrinter->printerTemplate.letterSpacing); + else + textPrinter->printerTemplate.currentX += gGlyphInfo[0x80]; + } + return 0; + case 1: + if (TextPrinterWait(textPrinter)) + textPrinter->state = 0; + return 3; + case 2: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; + textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y; + textPrinter->state = 0; + } + return 3; + case 3: + if (TextPrinterWaitWithDownArrow(textPrinter)) + { + TextPrinterClearDownArrow(textPrinter); + textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing; + textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; + textPrinter->state = 4; + } + return 3; + case 4: + if (textPrinter->scrollDistance) + { + + if (textPrinter->scrollDistance < gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed]) + { + ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); + textPrinter->scrollDistance = 0; + } + else + { + ScrollWindow(textPrinter->printerTemplate.windowId, 0, gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor)); + textPrinter->scrollDistance -= gWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed]; + } + CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); + } + else + { + textPrinter->state = 0; + } + return 3; + case 5: + if (!IsSEPlaying()) + textPrinter->state = 0; + return 3; + case 6: + if (textPrinter->delayCounter != 0) + textPrinter->delayCounter--; + else + textPrinter->state = 0; + return 3; + } + + return 1; } s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) @@ -1484,7 +1002,7 @@ s32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) for (i = 0; i < 7; ++i) { - if (glyphId == gGlyphWidthFuncs[i].font_id) + if (glyphId == gGlyphWidthFuncs[i].fontId) return *gGlyphWidthFuncs[i].func; } @@ -1498,7 +1016,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) s32 (*func)(u16 glyphId, bool32 isJapanese); int localLetterSpacing; register u32 lineWidth asm("r5"); - u8 *bufferPointer; + const u8 *bufferPointer; int glyphWidth; u32 width; @@ -1516,7 +1034,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) width = 0; lineWidth = 0; - bufferPointer = 0; + bufferPointer = NULL; while (*str != 0xFF) { @@ -1559,7 +1077,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) } lineWidth += glyphWidth; } - bufferPointer = 0; + bufferPointer = NULL; break; case 0xFC: switch (*++str) @@ -1813,7 +1331,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y) { BlitBitmapRectToWindow( windowId, - gKeypadIconTiles + (gKeypadIcons[keypadIconId].tile_offset * 0x20), + gKeypadIconTiles + (gKeypadIcons[keypadIconId].tileOffset * 0x20), 0, 0, 0x80, @@ -1827,7 +1345,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y) u8 GetKeypadIconTileOffset(u8 keypadIconId) { - return gKeypadIcons[keypadIconId].tile_offset; + return gKeypadIcons[keypadIconId].tileOffset; } u8 GetKeypadIconWidth(u8 keypadIconId) @@ -1976,7 +1494,7 @@ s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese) } } -void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese) +static void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese) { const u16* glyphs; int i; @@ -2019,7 +1537,7 @@ s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese) return gFont2LatinGlyphWidths[glyphId]; } -void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese) +static void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese) { const u16* glyphs; int i; diff --git a/src/text_printer.c b/src/text_printer.c index 6c124b448..28377b55a 100644 --- a/src/text_printer.c +++ b/src/text_printer.c @@ -45,27 +45,27 @@ void DeactivateAllTextPrinters (void) { int printer; for (printer = 0; printer < NUM_TEXT_PRINTERS; ++printer) - sTextPrinters[printer].sub_union.sub.active = 0; + sTextPrinters[printer].active = 0; } u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) { - struct TextPrinterTemplate subPrinter; + struct TextPrinterTemplate printerTemplate; - subPrinter.currentChar = str; - subPrinter.windowId = windowId; - subPrinter.fontId = fontId; - subPrinter.x = x; - subPrinter.y = y; - subPrinter.currentX = x; - subPrinter.currentY = y; - subPrinter.letterSpacing = gFonts[fontId].letterSpacing; - subPrinter.lineSpacing = gFonts[fontId].lineSpacing; - subPrinter.unk = gFonts[fontId].unk; - subPrinter.fgColor = gFonts[fontId].fgColor; - subPrinter.bgColor = gFonts[fontId].bgColor; - subPrinter.shadowColor = gFonts[fontId].shadowColor; - return AddTextPrinter(&subPrinter, speed, callback); + printerTemplate.currentChar = str; + printerTemplate.windowId = windowId; + printerTemplate.fontId = fontId; + printerTemplate.x = x; + printerTemplate.y = y; + printerTemplate.currentX = x; + printerTemplate.currentY = y; + printerTemplate.letterSpacing = gFonts[fontId].letterSpacing; + printerTemplate.lineSpacing = gFonts[fontId].lineSpacing; + printerTemplate.unk = gFonts[fontId].unk; + printerTemplate.fgColor = gFonts[fontId].fgColor; + printerTemplate.bgColor = gFonts[fontId].bgColor; + printerTemplate.shadowColor = gFonts[fontId].shadowColor; + return AddTextPrinter(&printerTemplate, speed, callback); } bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) @@ -76,18 +76,18 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void if (!gFonts) return FALSE; - sTempTextPrinter.sub_union.sub.active = 1; + sTempTextPrinter.active = 1; sTempTextPrinter.state = 0; - sTempTextPrinter.text_speed = speed; + sTempTextPrinter.textSpeed = speed; sTempTextPrinter.delayCounter = 0; sTempTextPrinter.scrollDistance = 0; for (i = 0; i < 7; ++i) { - sTempTextPrinter.sub_union.sub_fields[i] = 0; + sTempTextPrinter.subUnion.fields[i] = 0; } - sTempTextPrinter.subPrinter = *textSubPrinter; + sTempTextPrinter.printerTemplate = *textSubPrinter; sTempTextPrinter.callback = callback; sTempTextPrinter.minLetterSpacing = 0; sTempTextPrinter.japanese = 0; @@ -95,12 +95,12 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void GenerateFontHalfRowLookupTable(textSubPrinter->fgColor, textSubPrinter->bgColor, textSubPrinter->shadowColor); if (speed != TEXT_SPEED_FF && speed != 0x0) { - --sTempTextPrinter.text_speed; + --sTempTextPrinter.textSpeed; sTextPrinters[textSubPrinter->windowId] = sTempTextPrinter; } else { - sTempTextPrinter.text_speed = 0; + sTempTextPrinter.textSpeed = 0; for (j = 0; j < 0x400; ++j) { if ((u32)RenderFont(&sTempTextPrinter) == 1) @@ -108,8 +108,8 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void } if (speed != TEXT_SPEED_FF) - CopyWindowToVram(sTempTextPrinter.subPrinter.windowId, 2); - sTextPrinters[textSubPrinter->windowId].sub_union.sub.active = 0; + CopyWindowToVram(sTempTextPrinter.printerTemplate.windowId, 2); + sTextPrinters[textSubPrinter->windowId].active = 0; } return TRUE; } @@ -121,18 +121,18 @@ void RunTextPrinters(void) for (i = 0; i < 0x20; ++i) { - if (sTextPrinters[i].sub_union.sub.active != 0) + if (sTextPrinters[i].active != 0) { temp = RenderFont(&sTextPrinters[i]); switch (temp) { case 0: - CopyWindowToVram(sTextPrinters[i].subPrinter.windowId, 2); + CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, 2); case 3: if (sTextPrinters[i].callback != 0) - sTextPrinters[i].callback(&sTextPrinters[i].subPrinter, temp); + sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp); break; case 1: - sTextPrinters[i].sub_union.sub.active = 0; + sTextPrinters[i].active = 0; break; } } @@ -141,7 +141,7 @@ void RunTextPrinters(void) bool16 IsTextPrinterActive(u8 id) { - return sTextPrinters[id].sub_union.sub.active; + return sTextPrinters[id].active; } u32 RenderFont(struct TextPrinter *textPrinter) @@ -149,7 +149,7 @@ u32 RenderFont(struct TextPrinter *textPrinter) u32 ret; while (TRUE) { - ret = gFonts[textPrinter->subPrinter.fontId].fontFunction(textPrinter); + ret = gFonts[textPrinter->printerTemplate.fontId].fontFunction(textPrinter); if (ret != 2) return ret; } From d9d90b5a9fdb6d3dc0645b10444e02efab08d82e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Sep 2019 12:53:35 -0400 Subject: [PATCH 038/100] Suppress CLion complaints about mach-o sections --- include/gba/defines.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/gba/defines.h b/include/gba/defines.h index 3932a8542..c0eec12b1 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -6,8 +6,13 @@ #define TRUE 1 #define FALSE 0 +#if defined(__APPLE__) +#define IWRAM_DATA __attribute__((section("__DATA,iwram_data"))) +#define EWRAM_DATA __attribute__((section("__DATA,ewram_data"))) +#else #define IWRAM_DATA __attribute__((section("iwram_data"))) #define EWRAM_DATA __attribute__((section("ewram_data"))) +#endif #define ALIGNED(n) __attribute__((aligned(n))) From a26b6576c1ad8bb1574d63e7cf823dc15d7eb27f Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 21 Sep 2019 13:26:33 +0800 Subject: [PATCH 039/100] sub_812E768 --- src/menu2.c | 323 +++++++++++----------------------------------------- 1 file changed, 69 insertions(+), 254 deletions(-) diff --git a/src/menu2.c b/src/menu2.c index 6ee1488b1..c6d5ab094 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -1,5 +1,6 @@ #include "global.h" #include "text.h" +#include "blit.h" #include "gpu_regs.h" #include "task.h" #include "wild_encounter.h" @@ -502,261 +503,75 @@ void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y) } } -// Yeah, no, I'm not bothering with this -NAKED -static void sub_812E768(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7) +static void sub_812E768(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x28\n" - "\tstr r0, [sp]\n" - "\tstr r1, [sp, 0x4]\n" - "\tldr r0, [sp, 0x48]\n" - "\tldr r4, [sp, 0x4C]\n" - "\tldr r1, [sp, 0x50]\n" - "\tldr r5, [sp, 0x54]\n" - "\tlsls r2, 16\n" - "\tlsrs r2, 16\n" - "\tstr r2, [sp, 0x8]\n" - "\tlsls r3, 16\n" - "\tlsrs r3, 16\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tstr r0, [sp, 0xC]\n" - "\tlsls r4, 16\n" - "\tlsrs r4, 16\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tlsls r5, 16\n" - "\tlsrs r5, 16\n" - "\tldr r2, [sp, 0x4]\n" - "\tldrh r0, [r2, 0x4]\n" - "\tldr r2, [sp, 0xC]\n" - "\tsubs r0, r2\n" - "\tldr r2, [sp, 0x8]\n" - "\tadds r2, r1, r2\n" - "\tstr r2, [sp, 0x10]\n" - "\tcmp r0, r1\n" - "\tbge _0812E7B4\n" - "\tldr r1, [sp, 0x8]\n" - "\tadds r0, r1\n" - "\tstr r0, [sp, 0x10]\n" - "_0812E7B4:\n" - "\tldr r2, [sp, 0x4]\n" - "\tldrh r1, [r2, 0x6]\n" - "\tsubs r0, r1, r4\n" - "\tcmp r0, r5\n" - "\tbge _0812E7C6\n" - "\tadds r0, r3, r1\n" - "\tsubs r0, r4\n" - "\tstr r0, [sp, 0x14]\n" - "\tb _0812E7CA\n" - "_0812E7C6:\n" - "\tadds r5, r3, r5\n" - "\tstr r5, [sp, 0x14]\n" - "_0812E7CA:\n" - "\tldr r0, [sp]\n" - "\tldrh r1, [r0, 0x4]\n" - "\tmovs r2, 0x7\n" - "\tadds r0, r1, 0\n" - "\tands r0, r2\n" - "\tadds r1, r0\n" - "\tasrs r1, 3\n" - "\tstr r1, [sp, 0x18]\n" - "\tldr r0, [sp, 0x4]\n" - "\tldrh r1, [r0, 0x4]\n" - "\tadds r0, r1, 0\n" - "\tands r0, r2\n" - "\tadds r1, r0\n" - "\tasrs r1, 3\n" - "\tstr r1, [sp, 0x1C]\n" - "\tmov r12, r3\n" - "\tmov r8, r4\n" - "\tldr r1, [sp, 0x14]\n" - "\tcmp r12, r1\n" - "\tblt _0812E7F4\n" - "\tb _0812E932\n" - "_0812E7F4:\n" - "\tldr r5, [sp, 0x8]\n" - "\tldr r6, [sp, 0xC]\n" - "\tmov r2, r12\n" - "\tadds r2, 0x1\n" - "\tstr r2, [sp, 0x20]\n" - "\tmov r0, r8\n" - "\tadds r0, 0x1\n" - "\tstr r0, [sp, 0x24]\n" - "\tldr r1, [sp, 0x10]\n" - "\tcmp r5, r1\n" - "\tblt _0812E80C\n" - "\tb _0812E922\n" - "_0812E80C:\n" - "\tmovs r7, 0x1\n" - "\tmovs r2, 0xF0\n" - "\tmov r10, r2\n" - "\tmovs r0, 0xF\n" - "\tmov r9, r0\n" - "_0812E816:\n" - "\tasrs r0, r5, 1\n" - "\tmovs r1, 0x3\n" - "\tands r0, r1\n" - "\tldr r2, [sp]\n" - "\tldr r1, [r2]\n" - "\tadds r1, r0\n" - "\tasrs r0, r5, 3\n" - "\tlsls r0, 5\n" - "\tadds r1, r0\n" - "\tmov r2, r12\n" - "\tasrs r0, r2, 3\n" - "\tldr r2, [sp, 0x18]\n" - "\tmuls r0, r2\n" - "\tlsls r0, 5\n" - "\tadds r1, r0\n" - "\tmov r2, r12\n" - "\tlsls r0, r2, 29\n" - "\tlsrs r0, 27\n" - "\tadds r3, r1, r0\n" - "\tasrs r0, r6, 1\n" - "\tmovs r1, 0x3\n" - "\tands r0, r1\n" - "\tldr r2, [sp, 0x4]\n" - "\tldr r1, [r2]\n" - "\tadds r1, r0\n" - "\tasrs r0, r6, 3\n" - "\tlsls r0, 5\n" - "\tadds r1, r0\n" - "\tmov r2, r8\n" - "\tasrs r0, r2, 3\n" - "\tldr r2, [sp, 0x1C]\n" - "\tmuls r0, r2\n" - "\tlsls r0, 5\n" - "\tadds r1, r0\n" - "\tmov r2, r8\n" - "\tlsls r0, r2, 29\n" - "\tlsrs r0, 27\n" - "\tadds r4, r1, r0\n" - "\tadds r0, r4, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E8C2\n" - "\tsubs r4, 0x1\n" - "\tadds r0, r6, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E89A\n" - "\tldrh r0, [r4]\n" - "\tldr r2, _0812E88C @ =0x00000fff\n" - "\tands r2, r0\n" - "\tadds r0, r5, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E890\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r10\n" - "\tands r0, r1\n" - "\tlsls r0, 8\n" - "\tb _0812E912\n" - "\t.align 2, 0\n" - "_0812E88C: .4byte 0x00000fff\n" - "_0812E890:\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r9\n" - "\tands r0, r1\n" - "\tlsls r0, 12\n" - "\tb _0812E912\n" - "_0812E89A:\n" - "\tldrh r0, [r4]\n" - "\tldr r2, _0812E8B4 @ =0x0000f0ff\n" - "\tands r2, r0\n" - "\tadds r0, r5, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E8B8\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r10\n" - "\tands r0, r1\n" - "\tlsls r0, 4\n" - "\tb _0812E912\n" - "\t.align 2, 0\n" - "_0812E8B4: .4byte 0x0000f0ff\n" - "_0812E8B8:\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r9\n" - "\tands r0, r1\n" - "\tlsls r0, 8\n" - "\tb _0812E912\n" - "_0812E8C2:\n" - "\tadds r0, r6, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E8EE\n" - "\tldrh r0, [r4]\n" - "\tldr r2, _0812E8E0 @ =0x0000ff0f\n" - "\tands r2, r0\n" - "\tadds r0, r5, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E8E4\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r10\n" - "\tb _0812E910\n" - "\t.align 2, 0\n" - "_0812E8E0: .4byte 0x0000ff0f\n" - "_0812E8E4:\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r9\n" - "\tands r0, r1\n" - "\tlsls r0, 4\n" - "\tb _0812E912\n" - "_0812E8EE:\n" - "\tldrh r0, [r4]\n" - "\tldr r2, _0812E908 @ =0x0000fff0\n" - "\tands r2, r0\n" - "\tadds r0, r5, 0\n" - "\tands r0, r7\n" - "\tcmp r0, 0\n" - "\tbeq _0812E90C\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r10\n" - "\tands r0, r1\n" - "\tlsrs r0, 4\n" - "\tb _0812E912\n" - "\t.align 2, 0\n" - "_0812E908: .4byte 0x0000fff0\n" - "_0812E90C:\n" - "\tldrb r1, [r3]\n" - "\tmov r0, r9\n" - "_0812E910:\n" - "\tands r0, r1\n" - "_0812E912:\n" - "\torrs r2, r0\n" - "\tstrh r2, [r4]\n" - "\tadds r5, 0x1\n" - "\tadds r6, 0x1\n" - "\tldr r0, [sp, 0x10]\n" - "\tcmp r5, r0\n" - "\tbge _0812E922\n" - "\tb _0812E816\n" - "_0812E922:\n" - "\tldr r1, [sp, 0x20]\n" - "\tmov r12, r1\n" - "\tldr r2, [sp, 0x24]\n" - "\tmov r8, r2\n" - "\tldr r0, [sp, 0x14]\n" - "\tcmp r12, r0\n" - "\tbge _0812E932\n" - "\tb _0812E7F4\n" - "_0812E932:\n" - "\tadd sp, 0x28\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); + s32 loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY; + u16 toOrr; + const u8 *pixelsSrc; + u16 *pixelsDst; + + if (dst->width - dstX < width) + xEnd = dst->width - dstX + srcX; + else + xEnd = width + srcX; + + if (dst->height - dstY < height) + yEnd = srcY + dst->height - dstY; + else + yEnd = srcY + height; + multiplierSrcY = (src->width + (src->width & 7)) >> 3; + multiplierDstY = (dst->width + (dst->width & 7)) >> 3; + for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++) + { + for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++) + { + #ifndef NONMATCHING + asm("":::"r4"); + #endif + pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B); + pixelsDst = (u16 *)(dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B)); + + if ((uintptr_t)pixelsDst & 0x1) + { + pixelsDst = (void *)pixelsDst - 1; + if (loopDstX & 0x1) + { + toOrr = *pixelsDst & 0x0fff; + if (loopSrcX & 0x1) + *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8); + else + *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12); + } + else + { + toOrr = *pixelsDst & 0xf0ff; + if (loopSrcX & 0x1) + *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4); + else + *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8); + } + } + else + { + if (loopDstX & 1) + { + toOrr = *pixelsDst & 0xff0f; + if (loopSrcX & 1) + *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0); + else + *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4); + } + else + { + toOrr = *pixelsDst & 0xfff0; + if (loopSrcX & 1) + *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4); + else + *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0); + } + } + } + } } #define tEvA data[0] From 29e641bc1cad5eb840bb92d2913ede219a8e072c Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 24 Sep 2019 23:13:20 +0800 Subject: [PATCH 040/100] PokemonUseItemEffects2 --- include/pokemon.h | 2 +- src/pokemon.c | 463 ++++++++++------------------------------------ 2 files changed, 102 insertions(+), 363 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 9dd5850b4..16921b99a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -608,7 +608,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 *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); -bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects2(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); diff --git a/src/pokemon.c b/src/pokemon.c index 6f1df249f..1a70f3bd3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4407,25 +4407,28 @@ static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, #ifdef NONMATCHING /* - * This is nonmatching due to the compiler's insistence on avoiding the u8 cast - * when loading gMain.inBattle. If it weren't for this absent cast, differing - * the function would be a lot easier. + * This is nonmatching due to: + * 1) the compiler's insistence on avoiding the u8 cast when loading gMain.inBattle + * 2) niche difference in the first loop + * 3) tail merge (there're still logical differences inside switch which are not noticed? ) */ -bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e) -{ // BEGIN +bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) +{ u32 data; + s32 tmp; s32 cmdIndex; bool8 retVal = TRUE; const u8 *itemEffect; - u8 sp24 = 6; - u32 sp28; - s8 sp2C = 0; - u8 sp34 = 4; + u8 r10 = 6; + u32 i; + s32 sp18 = 0; + u8 battlerId = 4; u16 heldItem; - u8 r10; - s32 r4; + u8 curEffect; + u32 curMoveId; - heldItem = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); + heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL); + // you have to write as such, because otherwise gMain.inBattle will lose its u8 cast if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) @@ -4437,41 +4440,30 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m { /*holdEffect = */ItemId_GetHoldEffect(heldItem); } - gPotentialItemEffectBattler = gBattlerInMenuId; - - // grr. the original asm also u8 masks after loading the bitmask, despite - // the fact that is a useless operation. what's going on here? Something - // dumb I bet like dead code. if (gMain.inBattle) { gActiveBattler = gBattlerInMenuId; - if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - cmdIndex = 0; - else - cmdIndex = 1; - while (cmdIndex < gBattlersCount) + for (cmdIndex = GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER; + cmdIndex < gBattlersCount; + cmdIndex += 2) // for/while seems to be identical here { - if (gBattlerPartyIndexes[cmdIndex] == partyIndex) + if (gBattlerPartyIndexes[cmdIndex] == partyIndex) // why is gBattlerPartyIndexes reloaded? { - sp34 = cmdIndex; + battlerId = cmdIndex; break; } - cmdIndex += 2; } } else { gActiveBattler = 0; - sp34 = 4; + battlerId = 4; } - - // _08042504 if (!IS_POKEMON_ITEM(item)) return TRUE; if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY) return TRUE; - if (item == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) @@ -4483,457 +4475,204 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m { itemEffect = gItemEffectTable[item - 13]; } - for (cmdIndex = 0; cmdIndex < 6; cmdIndex++) { switch (cmdIndex) { // status healing effects case 0: - if ((itemEffect[cmdIndex] & 0x80) - && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_INFATUATION)) - { - //gBattleMons[sp34].status2 &= ~STATUS2_INFATUATION; + if (itemEffect[cmdIndex] & 0x80 + && gMain.inBattle + && battlerId != 4 + && gBattleMons[battlerId].status2 & STATUS2_INFATUATION) retVal = FALSE; - } - if ((itemEffect[cmdIndex] & 0x30) + if (itemEffect[cmdIndex] & 0x30 && !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY)) - { - //gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY; retVal = FALSE; - } if ((itemEffect[cmdIndex] & 0xF) && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12) - { - //gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF; - //if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12) - // gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12; retVal = FALSE; - } break; // in-battle stat boosting effects? case 1: if ((itemEffect[cmdIndex] & 0xF0) && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12) - { - //gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4; - //if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12) - // gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12; retVal = FALSE; - } if ((itemEffect[cmdIndex] & 0xF) && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12) - { - //gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF; - //if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12) - // gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12; retVal = FALSE; - } break; // more stat boosting effects? case 2: if ((itemEffect[cmdIndex] & 0xF0) && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12) - { - //gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4; - //if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12) - // gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12; retVal = FALSE; - } if ((itemEffect[cmdIndex] & 0xF) && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12) - { - //gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF; - //if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12) - // gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12; retVal = FALSE; - } break; case 3: if ((itemEffect[cmdIndex] & 0x80) && gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0) - { - //gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5; retVal = FALSE; - } if ((itemEffect[cmdIndex] & 0x40) // raise level - && GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100) - { - //data = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1]; - //SetMonData(pkmn, MON_DATA_EXP, &data); - //CalculateMonStats(pkmn); + && GetMonData(mon, MON_DATA_LEVEL, NULL) != 100) retVal = FALSE; - } if ((itemEffect[cmdIndex] & 0x20) - && sub_8042BE8(pkmn, partyIndex, 7, sp34) == 0) - { - //if (sp34 != 4) - // gBattleMons[sp34].status2 &= ~STATUS2_NIGHTMARE; + && sub_8042BE8(mon, partyIndex, 7, battlerId)) retVal = FALSE; - } - if ((itemEffect[cmdIndex] & 0x10) && sub_8042BE8(pkmn, partyIndex, 0xF88, sp34) == 0) + if ((itemEffect[cmdIndex] & 0x10) && sub_8042BE8(mon, partyIndex, 0xF88, battlerId)) retVal = FALSE; - if ((itemEffect[cmdIndex] & 8) && sub_8042BE8(pkmn, partyIndex, 16, sp34) == 0) + if ((itemEffect[cmdIndex] & 8) && sub_8042BE8(mon, partyIndex, 16, battlerId)) retVal = FALSE; - if ((itemEffect[cmdIndex] & 4) && sub_8042BE8(pkmn, partyIndex, 32, sp34) == 0) + if ((itemEffect[cmdIndex] & 4) && sub_8042BE8(mon, partyIndex, 32, battlerId)) retVal = FALSE; - if ((itemEffect[cmdIndex] & 2) && sub_8042BE8(pkmn, partyIndex, 64, sp34) == 0) + if ((itemEffect[cmdIndex] & 2) && sub_8042BE8(mon, partyIndex, 64, battlerId)) retVal = FALSE; - if ((itemEffect[cmdIndex] & 1) // heal confusion - && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_CONFUSION)) - { - //gBattleMons[sp34].status2 &= ~STATUS2_CONFUSION; + if (itemEffect[cmdIndex] & 1 // heal confusion + && gMain.inBattle && battlerId != 4 && (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)) retVal = FALSE; - } break; // EV, HP, and PP raising effects case 4: - r10 = itemEffect[cmdIndex]; - if (r10 & 0x20) + curEffect = itemEffect[cmdIndex]; + if (curEffect & 0x20) { - r10 &= ~0x20; - data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); - sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); - if (data < 3 && sp28 > 4) - { - //data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex]; - //SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); - // - //data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28; - //data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; - //SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + curEffect &= ~0x20; + data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + i = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + if (data < 3 && i > 4) retVal = FALSE; - } } - sp28 = 0; - while (r10 != 0) // _080428C0 + i = 0; + while (curEffect) // _080428C0 { - if (r10 & 1) + if (curEffect & 1) { - u16 evCount; - u16 targetSpecies; - s32 r5; - - switch (sp28) + switch (i) { case 0: case 1: - evCount = GetMonEVCount(pkmn); - if (evCount >= 510) + if (GetMonEVCount(mon) >= 510) return TRUE; - data = GetMonData(pkmn, sGetMonDataEVConstants[sp28], NULL); + data = GetMonData(mon, sGetMonDataEVConstants[i], NULL); if (data < 100) { - //if (data + itemEffect[sp24] > 100) - // r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24]; - //else - // r4 = itemEffect[sp24]; - //if (evCount + r4 > 510) - // r4 += 510 - (evCount + r4); - //data += r4; - //SetMonData(pkmn, sGetMonDataEVConstants[sp28], &data); - //CalculateMonStats(pkmn); - sp24++; + r10++; retVal = FALSE; } break; case 2: // revive? - if (r10 & 0x10) + if (curEffect & 0x10) { - if (GetMonData(pkmn, MON_DATA_HP, NULL) != 0) + if (GetMonData(mon, MON_DATA_HP, NULL) != 0) { - sp24++; + r10++; break; } - /* - if (gMain.inBattle) - { - if (sp34 != 4) - { - gAbsentBattlerFlags &= ~gBitTable[sp34]; - CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34])); - if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255) - gBattleResults.unk4++; - } - else - { - gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2]; - if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255) - gBattleResults.unk4++; - } - } - */ } else { - if (GetMonData(pkmn, MON_DATA_HP, NULL) == 0) + if (GetMonData(mon, MON_DATA_HP, NULL) == 0) { - sp24++; + r10++; break; } } - /* - data = itemEffect[sp24++]; - switch (data) - { - case 0xFF: - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); - break; - case 0xFE: - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2; - if (data == 0) - data = 1; - break; - case 0xFD: - data = gBattleScripting.field_23; - break; - } - */ - if (GetMonData(pkmn, MON_DATA_MAX_HP, NULL) != GetMonData(pkmn, MON_DATA_HP, NULL)) - { - /* - if (e == 0) - { - data = GetMonData(pkmn, MON_DATA_HP, NULL) + data; - if (data > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); - SetMonData(pkmn, MON_DATA_HP, &data); - if (gMain.inBattle && sp34 != 4) - { - gBattleMons[sp34].hp = data; - if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == 0) - { - if (gBattleResults.unk3 < 255) - gBattleResults.unk3++; - // I have to re-use this variable to match. - r5 = gActiveBattler; - gActiveBattler = sp34; - BtlController_EmitGetMonData(0, 0, 0); - MarkBufferBankForExecution(gActiveBattler); - gActiveBattler = r5; - } - } - } - else - { - gBattleMoveDamage = -data; - } - */ + if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL)) retVal = FALSE; - } - sp24++; - r10 &= 0xEF; + r10++; + curEffect &= 0xEF; break; case 3: - if (!(r10 & 2)) + if (!(curEffect & 2)) { - for (r5 = 0; r5 < 4; r5++) + for (tmp = 0; tmp < MAX_MON_MOVES; tmp++) { - data = GetMonData(pkmn, MON_DATA_PP1 + r5, NULL); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) - { - /* - data += itemEffect[sp24]; - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) - { - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5); - } - SetMonData(pkmn, MON_DATA_PP1 + r5, &data); - if (gMain.inBattle - && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) - gBattleMons[sp34].pp[r5] = data; - */ + data = GetMonData(mon, MON_DATA_PP1 + tmp, NULL); + curMoveId = GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL); + if (data != CalculatePPWithBonus(curMoveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp)) retVal = FALSE; - } } + r10++; } else // _080429FA { - data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) + data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL); + curMoveId = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL); + if (data != CalculatePPWithBonus(curMoveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex)) { - /* - data += itemEffect[sp24++]; - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) - { - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); - } - SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); - if (gMain.inBattle - && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) - gBattleMons[sp34].pp[moveIndex] = data; - */ - sp24++; + r10++; retVal = FALSE; } } break; case 7: - { - targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, item); - - if (targetSpecies != SPECIES_NONE) - { - //BeginEvolutionScene(pkmn, targetSpecies, 0, partyIndex); - return FALSE; - } - } + if (GetEvolutionTargetSpecies(mon, 2, item) != SPECIES_NONE) + return FALSE; break; } } - sp28++; - r10 >>= 1; + i++; + curEffect >>= 1; } break; case 5: - r10 = itemEffect[cmdIndex]; - sp28 = 0; - while (r10 != 0) + curEffect = itemEffect[cmdIndex]; + i = 0; + while (curEffect) { - if (r10 & 1) + if (curEffect & 1) { - u16 evCount; - - switch (sp28) + switch (i) { case 0: case 1: case 2: case 3: - evCount = GetMonEVCount(pkmn); - if (evCount >= 510) + if (GetMonEVCount(mon) >= 510) return TRUE; - data = GetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], NULL); + data = GetMonData(mon, sGetMonDataEVConstants[i + 2], NULL); if (data < 100) { - /* - if (data + itemEffect[sp24] > 100) - r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24]; - else - r4 = itemEffect[sp24]; - if (evCount + r4 > 510) - r4 += 510 - (evCount + r4); - data += r4; - SetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], &data); - CalculateMonStats(pkmn); - */ retVal = FALSE; - sp24++; + r10++; } break; case 4: - data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); - r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); - if (data < 3) - { - if (r4 <= 4) - break; - /* - - data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); - data &= gPPUpSetMask[moveIndex]; - data += gPPUpAddMask[moveIndex] * 3; - - SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); - data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4; - data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; - SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); - */ + data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + tmp = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + if (data < 3 && tmp > 4) retVal = FALSE; - } break; case 5: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0) - { - sp2C = itemEffect[sp24]; - /* - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) - friendship += 150 * sp2C / 100; - else - friendship += sp2C; - if (sp2C > 0) - { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) - friendship++; - } - if (friendship < 0) - friendship = 0; - if (friendship > 255) - friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); - */ - } - sp24++; + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 + && retVal == FALSE + && sp18 == 0) + sp18 = itemEffect[r10]; + r10++; break; case 6: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 200 - && retVal == 0 && sp2C == 0) - { - sp2C = itemEffect[sp24]; - /* - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) - friendship += 150 * sp2C / 100; - else - friendship += sp2C; - if (sp2C > 0) - { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) - friendship++; - } - if (friendship < 0) - friendship = 0; - if (friendship > 255) - friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); - */ - } - sp24++; + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 100 + && GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 200 + && retVal == FALSE + && sp18 == 0) + sp18 = itemEffect[r10]; + r10++; break; - case 7: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0) - { - sp2C = itemEffect[sp24]; - /* - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) - friendship += 150 * sp2C / 100; - else - friendship += sp2C; - if (sp2C > 0) - { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) - friendship++; - } - if (friendship < 0) - friendship = 0; - if (friendship > 255) - friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); - */ - } - sp24++; + case 7:\ + + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 + && retVal == FALSE + && sp18 == 0) + sp18 = itemEffect[r10]; + r10++; break; } } - sp28++; - r10 >>= 1; + i++; + curEffect >>= 1; } break; } @@ -4942,7 +4681,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 m } #else __attribute__((naked)) -bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e) +bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ From 7f6d86a8bf2afe349135d502debc2237bafafff5 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 25 Sep 2019 01:43:50 +0800 Subject: [PATCH 041/100] arg name consistency --- include/pokemon.h | 2 +- src/pokemon.c | 150 +++++++++++++++++++++++----------------------- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 16921b99a..9354cae89 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -607,7 +607,7 @@ u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex); 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 *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); diff --git a/src/pokemon.c b/src/pokemon.c index 1a70f3bd3..fd4b23c6f 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3884,7 +3884,7 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, return PokemonUseItemEffects(mon, item, partyIndex, moveIndex, 0); } -bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e) +bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e) { u32 data; s32 friendship; @@ -3900,7 +3900,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo u8 r10; u32 r4; - heldItem = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); + heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL); if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) @@ -4024,27 +4024,27 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo retVal = FALSE; } if ((itemEffect[cmdIndex] & 0x40) // raise level - && GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100) + && GetMonData(mon, MON_DATA_LEVEL, NULL) != 100) { - data = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1]; - SetMonData(pkmn, MON_DATA_EXP, &data); - CalculateMonStats(pkmn); + data = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + SetMonData(mon, MON_DATA_EXP, &data); + CalculateMonStats(mon); retVal = FALSE; } if ((itemEffect[cmdIndex] & 0x20) - && HealStatusConditions(pkmn, partyIndex, 7, sp34) == 0) + && HealStatusConditions(mon, partyIndex, 7, sp34) == 0) { if (sp34 != 4) gBattleMons[sp34].status2 &= ~STATUS2_NIGHTMARE; retVal = FALSE; } - if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(pkmn, partyIndex, 0xF88, sp34) == 0) + if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(mon, partyIndex, 0xF88, sp34) == 0) retVal = FALSE; - if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(pkmn, partyIndex, 16, sp34) == 0) + if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(mon, partyIndex, 16, sp34) == 0) retVal = FALSE; - if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(pkmn, partyIndex, 32, sp34) == 0) + if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(mon, partyIndex, 32, sp34) == 0) retVal = FALSE; - if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(pkmn, partyIndex, 64, sp34) == 0) + if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(mon, partyIndex, 64, sp34) == 0) retVal = FALSE; if ((itemEffect[cmdIndex] & 1) // heal confusion && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_CONFUSION)) @@ -4059,16 +4059,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo if (r10 & 0x20) { r10 &= ~0x20; - data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); - sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); + data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + sp28 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); if (data < 3 && sp28 > 4) { - data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex]; - SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); + data = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex]; + SetMonData(mon, MON_DATA_PP_BONUSES, &data); - data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28; - data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; - SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28; + data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL) + data; + SetMonData(mon, MON_DATA_PP1 + moveIndex, &data); retVal = FALSE; } } @@ -4084,10 +4084,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { case 0: case 1: - evCount = GetMonEVCount(pkmn); + evCount = GetMonEVCount(mon); if (evCount >= 510) return TRUE; - data = GetMonData(pkmn, sGetMonDataEVConstants[sp28], NULL); + data = GetMonData(mon, sGetMonDataEVConstants[sp28], NULL); if (data < 100) { if (data + itemEffect[sp24] > 100) @@ -4097,8 +4097,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo if (evCount + r4 > 510) r4 += 510 - (evCount + r4); data += r4; - SetMonData(pkmn, sGetMonDataEVConstants[sp28], &data); - CalculateMonStats(pkmn); + SetMonData(mon, sGetMonDataEVConstants[sp28], &data); + CalculateMonStats(mon); sp24++; retVal = FALSE; } @@ -4107,7 +4107,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo // revive? if (r10 & 0x10) { - if (GetMonData(pkmn, MON_DATA_HP, NULL) != 0) + if (GetMonData(mon, MON_DATA_HP, NULL) != 0) { sp24++; break; @@ -4131,7 +4131,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo } else { - if (GetMonData(pkmn, MON_DATA_HP, NULL) == 0) + if (GetMonData(mon, MON_DATA_HP, NULL) == 0) { sp24++; break; @@ -4141,10 +4141,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo switch (data) { case 0xFF: - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); + data = GetMonData(mon, MON_DATA_MAX_HP, NULL) - GetMonData(mon, MON_DATA_HP, NULL); break; case 0xFE: - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2; + data = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 2; if (data == 0) data = 1; break; @@ -4152,14 +4152,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo data = gBattleScripting.field_23; break; } - if (GetMonData(pkmn, MON_DATA_MAX_HP, NULL) != GetMonData(pkmn, MON_DATA_HP, NULL)) + if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL)) { if (e == 0) { - data = GetMonData(pkmn, MON_DATA_HP, NULL) + data; - if (data > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) - data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); - SetMonData(pkmn, MON_DATA_HP, &data); + data = GetMonData(mon, MON_DATA_HP, NULL) + data; + if (data > GetMonData(mon, MON_DATA_MAX_HP, NULL)) + data = GetMonData(mon, MON_DATA_MAX_HP, NULL); + SetMonData(mon, MON_DATA_HP, &data); if (gMain.inBattle && sp34 != 4) { gBattleMons[sp34].hp = data; @@ -4191,18 +4191,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { u16 r4; - data = GetMonData(pkmn, MON_DATA_PP1 + r5, NULL); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + data = GetMonData(mon, MON_DATA_PP1 + r5, NULL); + r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL); + if (data != CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5)) { data += itemEffect[sp24]; - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL); + if (data > CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5)) { - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5); + r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL); + data = CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5); } - SetMonData(pkmn, MON_DATA_PP1 + r5, &data); + SetMonData(mon, MON_DATA_PP1 + r5, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) @@ -4216,18 +4216,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo { u16 r4; - data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) + data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL); + r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL); + if (data != CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex)) { data += itemEffect[sp24++]; - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) + r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL); + if (data > CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex)) { - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); - data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); + r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL); + data = CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); } - SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + SetMonData(mon, MON_DATA_PP1 + moveIndex, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) @@ -4238,11 +4238,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo break; case 7: { - u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, item); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item); if (targetSpecies != SPECIES_NONE) { - BeginEvolutionScene(pkmn, targetSpecies, 0, partyIndex); + BeginEvolutionScene(mon, targetSpecies, 0, partyIndex); return FALSE; } } @@ -4268,10 +4268,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo case 1: case 2: case 3: - evCount = GetMonEVCount(pkmn); + evCount = GetMonEVCount(mon); if (evCount >= 510) return TRUE; - data = GetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], NULL); + data = GetMonData(mon, sGetMonDataEVConstants[sp28 + 2], NULL); if (data < 100) { if (data + itemEffect[sp24] > 100) @@ -4281,98 +4281,98 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo if (evCount + r4 > 510) r4 += 510 - (evCount + r4); data += r4; - SetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], &data); - CalculateMonStats(pkmn); + SetMonData(mon, sGetMonDataEVConstants[sp28 + 2], &data); + CalculateMonStats(mon); retVal = FALSE; sp24++; } break; case 4: - data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); if (data < 3) { - r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); - data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); + r4 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + data = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); data &= gPPUpSetMask[moveIndex]; data += gPPUpAddMask[moveIndex] * 3; - SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); - data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4; - data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; - SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + SetMonData(mon, MON_DATA_PP_BONUSES, &data); + data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4; + data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL) + data; + SetMonData(mon, MON_DATA_PP1 + moveIndex, &data); retVal = FALSE; } break; case 5: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0) + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0) { sp2C = itemEffect[sp24]; - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL); if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) friendship += 150 * sp2C / 100; else friendship += sp2C; if (sp2C > 0) { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) + if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) friendship = 0; if (friendship > 255) friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } sp24++; break; case 6: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 200 + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 200 && retVal == 0 && sp2C == 0) { sp2C = itemEffect[sp24]; - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL); if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) friendship += 150 * sp2C / 100; else friendship += sp2C; if (sp2C > 0) { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) + if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) friendship = 0; if (friendship > 255) friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } sp24++; break; case 7: - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0) + if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0) { sp2C = itemEffect[sp24]; - friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL); if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) friendship += 150 * sp2C / 100; else friendship += sp2C; if (sp2C > 0) { - if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11) friendship++; - if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) + if (GetMonData(mon, MON_DATA_MET_LOCATION, NULL) == GetCurrentRegionMapSectionId()) friendship++; } if (friendship < 0) friendship = 0; if (friendship > 255) friendship = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } sp24++; break; From 89c98f2ab74e6097fd85b05b64965c10c9941b5b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Sep 2019 14:00:30 -0400 Subject: [PATCH 042/100] Start credits (nonmatching sub_80F3BD0) --- asm/credits.s | 966 --------------------------------- data/credits.s | 70 +++ data/data_83FECCC.s | 66 --- include/credits.h | 6 + include/field_weather.h | 1 + include/overworld.h | 3 + include/strings.h | 3 + ld_script.txt | 3 + src/credits.c | 1116 +++++++++++++++++++++++++++++++++++++++ 9 files changed, 1202 insertions(+), 1032 deletions(-) create mode 100644 data/credits.s create mode 100644 include/credits.h create mode 100644 src/credits.c diff --git a/asm/credits.s b/asm/credits.s index e52275e77..960ea86a5 100644 --- a/asm/credits.s +++ b/asm/credits.s @@ -5,972 +5,6 @@ .text - thumb_func_start sub_80F39B4 -sub_80F39B4: @ 80F39B4 - push {r4,lr} - ldr r4, _080F39E0 @ =gUnknown_203AB40 - movs r0, 0x20 - bl AllocZeroed - str r0, [r4] - bl ResetTasks - ldr r1, [r4] - movs r0, 0xFF - strb r0, [r1, 0x2] - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0x1D] - bl ResetSpriteData - ldr r0, _080F39E4 @ =sub_80F39E8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F39E0: .4byte gUnknown_203AB40 -_080F39E4: .4byte sub_80F39E8 - thumb_func_end sub_80F39B4 - - thumb_func_start sub_80F39E8 -sub_80F39E8: @ 80F39E8 - push {lr} - bl sub_80F3BD0 - adds r1, r0, 0 - cmp r1, 0x1 - beq _080F3A16 - cmp r1, 0x1 - bgt _080F39FE - cmp r1, 0 - beq _080F3A04 - b _080F3A68 -_080F39FE: - cmp r1, 0x2 - beq _080F3A4C - b _080F3A68 -_080F3A04: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - b _080F3A68 -_080F3A16: - ldr r0, _080F3A28 @ =gUnknown_203AB40 - ldr r0, [r0] - ldrb r0, [r0, 0x1D] - ands r1, r0 - cmp r1, 0 - beq _080F3A2C - bl sub_80574A4 - b _080F3A3C - .align 2, 0 -_080F3A28: .4byte gUnknown_203AB40 -_080F3A2C: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade -_080F3A3C: - ldr r0, _080F3A48 @ =gUnknown_203AB40 - ldr r1, [r0] - ldrb r0, [r1, 0x1D] - adds r0, 0x1 - strb r0, [r1, 0x1D] - b _080F3A68 - .align 2, 0 -_080F3A48: .4byte gUnknown_203AB40 -_080F3A4C: - movs r0, 0x80 - lsls r0, 7 - bl FlagClear - ldr r1, _080F3A6C @ =gUnknown_2031DD8 - movs r0, 0 - strb r0, [r1] - ldr r0, _080F3A70 @ =gUnknown_203AB40 - ldr r0, [r0] - bl Free - movs r0, 0xFF - bl SoftReset -_080F3A68: - pop {r0} - bx r0 - .align 2, 0 -_080F3A6C: .4byte gUnknown_2031DD8 -_080F3A70: .4byte gUnknown_203AB40 - thumb_func_end sub_80F39E8 - - thumb_func_start sub_80F3A74 -sub_80F3A74: @ 80F3A74 - push {lr} - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080F3AA0 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0xE - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_080F3AA0: .4byte 0x00001f3f - thumb_func_end sub_80F3A74 - - thumb_func_start sub_80F3AA4 -sub_80F3AA4: @ 80F3AA4 - push {lr} - movs r0, 0x50 - movs r1, 0xCE - bl SetGpuReg - movs r1, 0x82 - lsls r1, 3 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0xA - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80F3AA4 - - thumb_func_start sub_80F3AC4 -sub_80F3AC4: @ 80F3AC4 - push {r4,lr} - ldr r0, _080F3AFC @ =gUnknown_8410E08 - bl AddWindow - ldr r4, _080F3B00 @ =gUnknown_203AB40 - ldr r1, [r4] - strb r0, [r1, 0xA] - ldr r0, [r4] - ldrb r0, [r0, 0xA] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl PutWindowTilemap - ldr r0, [r4] - ldrb r0, [r0, 0xA] - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0xB] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3AFC: .4byte gUnknown_8410E08 -_080F3B00: .4byte gUnknown_203AB40 - thumb_func_end sub_80F3AC4 - - thumb_func_start sub_80F3B04 -sub_80F3B04: @ 80F3B04 - push {r4,lr} - ldr r4, _080F3B28 @ =gUnknown_203AB40 - ldr r1, [r4] - ldrb r0, [r1, 0xB] - cmp r0, 0 - beq _080F3B20 - ldrb r0, [r1, 0xA] - bl RemoveWindow - bl CleanupOverworldWindowsAndTilemaps - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0xB] -_080F3B20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3B28: .4byte gUnknown_203AB40 - thumb_func_end sub_80F3B04 - - thumb_func_start sub_80F3B2C -sub_80F3B2C: @ 80F3B2C - push {r4,r5,lr} - ldr r5, _080F3B40 @ =gUnknown_203AB40 - ldr r0, [r5] - ldrb r4, [r0, 0x1] - cmp r4, 0 - beq _080F3B44 - cmp r4, 0x1 - beq _080F3B5E -_080F3B3C: - movs r0, 0 - b _080F3BB0 - .align 2, 0 -_080F3B40: .4byte gUnknown_203AB40 -_080F3B44: - movs r0, 0x80 - lsls r0, 7 - bl FlagSet - ldr r1, _080F3BB8 @ =gUnknown_2031DD8 - movs r0, 0x2 - strb r0, [r1] - ldr r0, [r5] - strb r4, [r0, 0x1C] - ldr r1, [r5] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] -_080F3B5E: - ldr r0, _080F3BBC @ =gUnknown_203AB40 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x1C - ldr r2, _080F3BC0 @ =gUnknown_8414588 - ldrb r1, [r1, 0x9] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 - bl sub_805750C - cmp r0, 0 - beq _080F3B3C - bl sub_80F3AC4 - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, _080F3BC4 @ =0x0000247c - movs r0, 0x44 - bl SetGpuReg - bl sub_80F3A74 - bl sub_80F3AA4 - movs r0, 0xF0 - bl Menu_LoadStdPalAt - ldr r0, _080F3BC8 @ =gPlttBufferUnfaded - movs r2, 0xFF - lsls r2, 1 - adds r0, r2 - movs r1, 0 - strh r1, [r0] - ldr r0, _080F3BCC @ =gPlttBufferFaded - adds r0, r2 - strh r1, [r0] - movs r0, 0x1 -_080F3BB0: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F3BB8: .4byte gUnknown_2031DD8 -_080F3BBC: .4byte gUnknown_203AB40 -_080F3BC0: .4byte gUnknown_8414588 -_080F3BC4: .4byte 0x0000247c -_080F3BC8: .4byte gPlttBufferUnfaded -_080F3BCC: .4byte gPlttBufferFaded - thumb_func_end sub_80F3B2C - - thumb_func_start sub_80F3BD0 -sub_80F3BD0: @ 80F3BD0 - push {r4-r7,lr} - sub sp, 0x24 - ldr r1, _080F3BEC @ =gUnknown_203AB40 - ldr r0, [r1] - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x12 - bls _080F3BE2 - b _080F4180 -_080F3BE2: - lsls r0, 2 - ldr r1, _080F3BF0 @ =_080F3BF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F3BEC: .4byte gUnknown_203AB40 -_080F3BF0: .4byte _080F3BF4 - .align 2, 0 -_080F3BF4: - .4byte _080F3C40 - .4byte _080F3C64 - .4byte _080F3C98 - .4byte _080F3CEE - .4byte _080F3D0A - .4byte _080F3D48 - .4byte _080F3D6A - .4byte _080F3EB4 - .4byte _080F3F24 - .4byte _080F3F84 - .4byte _080F3FC4 - .4byte _080F3FF0 - .4byte _080F400A - .4byte _080F4084 - .4byte _080F40B8 - .4byte _080F40D0 - .4byte _080F4100 - .4byte _080F4118 - .4byte _080F4170 -_080F3C40: - bl sub_80F3A74 - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, _080F3C5C @ =0x00004f51 - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080F3C60 @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x1 - b _080F413C - .align 2, 0 -_080F3C5C: .4byte 0x00004f51 -_080F3C60: .4byte gUnknown_203AB40 -_080F3C64: - bl sub_80F3AA4 - bl sub_80F3AC4 - movs r0, 0xF0 - bl Menu_LoadStdPalAt - ldr r0, _080F3C8C @ =gPlttBufferUnfaded - movs r2, 0xFF - lsls r2, 1 - adds r0, r2 - movs r1, 0 - strh r1, [r0] - ldr r0, _080F3C90 @ =gPlttBufferFaded - adds r0, r2 - strh r1, [r0] - ldr r0, _080F3C94 @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x2 - b _080F413C - .align 2, 0 -_080F3C8C: .4byte gPlttBufferUnfaded -_080F3C90: .4byte gPlttBufferFaded -_080F3C94: .4byte gUnknown_203AB40 -_080F3C98: - movs r0, 0x44 - bl GetGpuReg - add r1, sp, 0x14 - lsls r0, 16 - lsrs r0, 24 - strh r0, [r1] - movs r0, 0x44 - bl GetGpuReg - add r2, sp, 0x14 - movs r1, 0xFF - ands r1, r0 - strh r1, [r2, 0x2] - adds r0, r2, 0 - ldrh r0, [r0] - cmp r0, 0x24 - bne _080F3CCC - ldr r0, _080F3CC8 @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x4] - movs r0, 0x3 - b _080F413C - .align 2, 0 -_080F3CC8: .4byte gUnknown_203AB40 -_080F3CCC: - add r1, sp, 0x14 - subs r0, 0x1 - strh r0, [r1] - adds r2, r1, 0 - adds r0, r1, 0 - ldrh r1, [r0, 0x2] - adds r1, 0x1 - strh r1, [r2, 0x2] - ldrh r0, [r0] - lsls r0, 8 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - b _080F3D06 -_080F3CEE: - ldr r1, [r7] - ldrh r0, [r1, 0x4] - cmp r0, 0 - bne _080F3D52 - movs r0, 0 - bl sub_80F4930 - ldr r0, [r7] - movs r1, 0x64 - strh r1, [r0, 0x4] - movs r1, 0x4 - strb r1, [r0] -_080F3D06: - movs r0, 0 - b _080F4182 -_080F3D0A: - ldr r1, [r7] - ldrh r0, [r1, 0x4] - adds r2, r0, 0 - cmp r2, 0 - bne _080F3D52 - movs r0, 0xB4 - lsls r0, 1 - strh r0, [r1, 0x4] - ldrb r0, [r1, 0xA] - movs r1, 0x1 - str r1, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - ldr r1, _080F3D40 @ =gUnknown_8410E00 - str r1, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _080F3D44 @ =gUnknown_841D198 - str r1, [sp, 0x10] - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x29 - bl AddTextPrinterParameterized4 - ldr r1, [r7] - movs r0, 0x5 - b _080F413C - .align 2, 0 -_080F3D40: .4byte gUnknown_8410E00 -_080F3D44: .4byte gUnknown_841D198 -_080F3D48: - ldr r1, [r7] - ldrh r0, [r1, 0x4] - adds r4, r0, 0 - cmp r4, 0 - beq _080F3D58 -_080F3D52: - subs r0, 0x1 - strh r0, [r1, 0x4] - b _080F3D06 -_080F3D58: - bl sub_80F3B04 - ldr r0, [r7] - movs r1, 0x6 - strb r1, [r0] - ldr r0, [r7] - strh r4, [r0, 0x4] - strh r4, [r0, 0x6] - b _080F3D06 -_080F3D6A: - ldr r2, [r7] - ldrh r0, [r2, 0x4] - cmp r0, 0 - beq _080F3D7A - subs r0, 0x1 - strh r0, [r2, 0x4] - ldrb r0, [r2, 0x8] - b _080F4182 -_080F3D7A: - ldr r1, _080F3D94 @ =gUnknown_8410CF4 - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x5 - bls _080F3D8A - b _080F3E94 -_080F3D8A: - lsls r0, 2 - ldr r1, _080F3D98 @ =_080F3D9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F3D94: .4byte gUnknown_8410CF4 -_080F3D98: .4byte _080F3D9C - .align 2, 0 -_080F3D9C: - .4byte _080F3DB4 - .4byte _080F3DE0 - .4byte _080F3E10 - .4byte _080F3E30 - .4byte _080F3E58 - .4byte _080F3E8C -_080F3DB4: - movs r0, 0x80 - lsls r0, 8 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r4, _080F3DDC @ =gUnknown_203AB40 - ldr r1, [r4] - movs r0, 0x7 - strb r0, [r1] - ldr r0, [r4] - ldrb r0, [r0, 0xA] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r4] - ldrb r0, [r0, 0x8] - b _080F4182 - .align 2, 0 -_080F3DDC: .4byte gUnknown_203AB40 -_080F3DE0: - ldr r2, _080F3E04 @ =gUnknown_203AB40 - ldr r1, [r2] - movs r0, 0xA - strb r0, [r1] - ldr r2, [r2] - ldr r1, _080F3E08 @ =gUnknown_8410CF4 - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strb r0, [r2, 0x9] - ldr r2, _080F3E0C @ =0x3fffffff - movs r0, 0x1 - movs r1, 0 - bl sub_807A944 - b _080F3E94 - .align 2, 0 -_080F3E04: .4byte gUnknown_203AB40 -_080F3E08: .4byte gUnknown_8410CF4 -_080F3E0C: .4byte 0x3fffffff -_080F3E10: - ldr r2, _080F3E28 @ =gUnknown_203AB40 - ldr r1, [r2] - movs r0, 0xC - strb r0, [r1] - ldr r2, [r2] - ldr r1, _080F3E2C @ =gUnknown_8410CF4 - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strb r0, [r2, 0x9] - b _080F3E94 - .align 2, 0 -_080F3E28: .4byte gUnknown_203AB40 -_080F3E2C: .4byte gUnknown_8410CF4 -_080F3E30: - ldr r2, _080F3E50 @ =gUnknown_203AB40 - ldr r1, [r2] - movs r0, 0xD - strb r0, [r1] - ldr r2, [r2] - ldr r1, _080F3E54 @ =gUnknown_8410CF4 - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strb r0, [r2, 0x9] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - b _080F3E94 - .align 2, 0 -_080F3E50: .4byte gUnknown_203AB40 -_080F3E54: .4byte gUnknown_8410CF4 -_080F3E58: - ldr r2, _080F3E84 @ =gUnknown_203AB40 - ldr r1, [r2] - movs r3, 0 - movs r0, 0xF - strb r0, [r1] - ldr r2, [r2] - ldr r1, _080F3E88 @ =gUnknown_8410CF4 - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x1] - strb r0, [r2, 0x9] - movs r0, 0x1 - negs r0, r0 - str r3, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080F3E94 - .align 2, 0 -_080F3E84: .4byte gUnknown_203AB40 -_080F3E88: .4byte gUnknown_8410CF4 -_080F3E8C: - ldr r0, _080F3EAC @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x11 - strb r0, [r1] -_080F3E94: - ldr r0, _080F3EAC @ =gUnknown_203AB40 - ldr r1, [r0] - ldr r2, _080F3EB0 @ =gUnknown_8410CF4 - ldrh r0, [r1, 0x6] - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2] - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - adds r0, 0x1 - strh r0, [r1, 0x6] - b _080F3D06 - .align 2, 0 -_080F3EAC: .4byte gUnknown_203AB40 -_080F3EB0: .4byte gUnknown_8410CF4 -_080F3EB4: - ldr r0, _080F3F14 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080F3FBA - add r3, sp, 0x14 - ldr r5, _080F3F18 @ =gUnknown_84145BC - ldr r4, _080F3F1C @ =gUnknown_8410CF4 - ldr r2, [r7] - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x8] - strh r0, [r3] - ldrb r0, [r2, 0xA] - str r6, [sp] - str r6, [sp, 0x4] - ldr r1, _080F3F20 @ =gUnknown_8410E00 - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - ldrh r1, [r2, 0x6] - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0x6 - bl AddTextPrinterParameterized4 - ldr r1, [r7] - movs r0, 0x8 - b _080F3FB8 - .align 2, 0 -_080F3F14: .4byte gPaletteFade -_080F3F18: .4byte gUnknown_84145BC -_080F3F1C: .4byte gUnknown_8410CF4 -_080F3F20: .4byte gUnknown_8410E00 -_080F3F24: - add r4, sp, 0x14 - ldr r3, _080F3F78 @ =gUnknown_84145BC - ldr r5, _080F3F7C @ =gUnknown_8410CF4 - ldr r2, [r7] - ldrh r0, [r2, 0x6] - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x8] - movs r1, 0 - strh r0, [r4] - ldrb r0, [r2, 0xA] - str r1, [sp] - str r1, [sp, 0x4] - ldr r1, _080F3F80 @ =gUnknown_8410E04 - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - ldrh r1, [r2, 0x6] - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, 0x4 - adds r1, r3 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x8 - movs r3, 0x6 - bl AddTextPrinterParameterized4 - ldr r1, [r7] - movs r0, 0x9 - b _080F3FB8 - .align 2, 0 -_080F3F78: .4byte gUnknown_84145BC -_080F3F7C: .4byte gUnknown_8410CF4 -_080F3F80: .4byte gUnknown_8410E04 -_080F3F84: - ldr r0, [r7] - ldrb r0, [r0, 0xA] - movs r1, 0x2 - bl CopyWindowToVram - ldr r1, [r7] - ldr r2, _080F3FC0 @ =gUnknown_8410CF4 - ldrh r0, [r1, 0x6] - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2] - movs r2, 0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - adds r0, 0x1 - strh r0, [r1, 0x6] - movs r0, 0x80 - lsls r0, 8 - str r2, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r7] - movs r0, 0x6 -_080F3FB8: - strb r0, [r1] -_080F3FBA: - ldr r0, [r7] - ldrb r0, [r0, 0x8] - b _080F4182 - .align 2, 0 -_080F3FC0: .4byte gUnknown_8410CF4 -_080F3FC4: - ldr r0, _080F3FE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080F3FD6 - b _080F3D06 -_080F3FD6: - bl sub_80F3B04 - ldr r1, _080F3FEC @ =gUnknown_203AB40 - ldr r0, [r1] - strb r4, [r0, 0x1] - ldr r1, [r1] - movs r0, 0xB - b _080F413C - .align 2, 0 -_080F3FE8: .4byte gPaletteFade -_080F3FEC: .4byte gUnknown_203AB40 -_080F3FF0: - ldr r0, [r7] - ldrb r0, [r0, 0x9] - bl sub_80F3B2C - cmp r0, 0 - bne _080F3FFE - b _080F3D06 -_080F3FFE: - ldr r1, [r7] - movs r0, 0x1 - strb r0, [r1, 0x8] - ldr r1, [r7] - movs r0, 0x6 - b _080F413C -_080F400A: - ldr r0, _080F4050 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080F401C - b _080F3D06 -_080F401C: - bl sub_80F3B04 - ldr r1, _080F4054 @ =gUnknown_203AB40 - ldr r0, [r1] - strb r4, [r0, 0x1] - adds r4, r1, 0 -_080F4028: - ldr r0, [r4] - ldrb r0, [r0, 0x9] - bl sub_80F3B2C - cmp r0, 0 - beq _080F4028 - ldr r0, _080F4054 @ =gUnknown_203AB40 - ldr r0, [r0] - ldrb r0, [r0, 0x9] - cmp r0, 0x6 - beq _080F4058 - cmp r0, 0x6 - ble _080F404A - cmp r0, 0x9 - beq _080F405E - cmp r0, 0xC - beq _080F4064 -_080F404A: - add r1, sp, 0x14 - movs r0, 0x1 - b _080F4068 - .align 2, 0 -_080F4050: .4byte gPaletteFade -_080F4054: .4byte gUnknown_203AB40 -_080F4058: - add r1, sp, 0x14 - movs r0, 0x2 - b _080F4068 -_080F405E: - add r1, sp, 0x14 - movs r0, 0x3 - b _080F4068 -_080F4064: - add r1, sp, 0x14 - movs r0, 0x4 -_080F4068: - strh r0, [r1] - add r0, sp, 0x14 - ldrb r0, [r0] - bl sub_80F4930 - ldr r2, _080F4080 @ =gUnknown_203AB40 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x8] - ldr r1, [r2] - movs r0, 0x6 - b _080F413C - .align 2, 0 -_080F4080: .4byte gUnknown_203AB40 -_080F4084: - ldr r0, _080F40B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080F4096 - b _080F3D06 -_080F4096: - bl sub_80F48D0 - bl sub_80F3B04 - ldr r1, _080F40B4 @ =gUnknown_203AB40 - ldr r0, [r1] - strb r4, [r0, 0x1] - ldr r0, [r1] - strb r4, [r0, 0x8] - ldr r1, [r1] - movs r0, 0xE - b _080F413C - .align 2, 0 -_080F40B0: .4byte gPaletteFade -_080F40B4: .4byte gUnknown_203AB40 -_080F40B8: - bl sub_80F4328 - cmp r0, 0 - bne _080F40C2 - b _080F3D06 -_080F40C2: - ldr r0, _080F40CC @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x6 - b _080F413C - .align 2, 0 -_080F40CC: .4byte gUnknown_203AB40 -_080F40D0: - ldr r0, _080F40F8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080F40E2 - b _080F3D06 -_080F40E2: - bl sub_80F3B04 - ldr r1, _080F40FC @ =gUnknown_203AB40 - ldr r0, [r1] - strb r4, [r0, 0x1] - ldr r0, [r1] - strb r4, [r0, 0x8] - ldr r1, [r1] - movs r0, 0x10 - b _080F413C - .align 2, 0 -_080F40F8: .4byte gPaletteFade -_080F40FC: .4byte gUnknown_203AB40 -_080F4100: - bl sub_80F4674 - cmp r0, 0 - bne _080F410A - b _080F3D06 -_080F410A: - ldr r0, _080F4114 @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x6 - b _080F413C - .align 2, 0 -_080F4114: .4byte gUnknown_203AB40 -_080F4118: - ldr r0, _080F4140 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F414C - movs r0, 0x1 - negs r0, r0 - ldr r1, _080F4144 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080F4148 @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x12 -_080F413C: - strb r0, [r1] - b _080F3D06 - .align 2, 0 -_080F4140: .4byte gMain -_080F4144: .4byte 0x00007fff -_080F4148: .4byte gUnknown_203AB40 -_080F414C: - ldr r1, [r7] - ldrh r0, [r1, 0x4] - cmp r0, 0 - beq _080F4156 - b _080F3D52 -_080F4156: - movs r0, 0x12 - strb r0, [r1] - subs r0, 0x13 - ldr r1, _080F416C @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080F3D06 - .align 2, 0 -_080F416C: .4byte 0x00007fff -_080F4170: - ldr r0, _080F418C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F4180 - bl sub_80F3B04 -_080F4180: - movs r0, 0x2 -_080F4182: - add sp, 0x24 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F418C: .4byte gPaletteFade - thumb_func_end sub_80F3BD0 - thumb_func_start sub_80F4190 sub_80F4190: @ 80F4190 push {lr} diff --git a/data/credits.s b/data/credits.s new file mode 100644 index 000000000..ba4a254e5 --- /dev/null +++ b/data/credits.s @@ -0,0 +1,70 @@ + .section .rodata + .align 2, 0 + +gUnknown_8410CF4:: @ 8410CF4 + .incbin "baserom.gba", 0x410CF4, 0x10C + +gUnknown_8410E00:: @ 8410E00 + .incbin "baserom.gba", 0x410E00, 0x4 + +gUnknown_8410E04:: @ 8410E04 + .incbin "baserom.gba", 0x410E04, 0x4 + +gUnknown_8410E08:: @ 8410E08 + .incbin "baserom.gba", 0x410E08, 0x8 + +gUnknown_8410E10:: @ 8410E10 + .incbin "baserom.gba", 0x410E10, 0x20 + +gUnknown_8410E30:: @ 8410E30 + .incbin "baserom.gba", 0x410E30, 0xDC8 + +gUnknown_8411BF8:: @ 8411BF8 + .incbin "baserom.gba", 0x411BF8, 0x20 + +gUnknown_8411C18:: @ 8411C18 + .incbin "baserom.gba", 0x411C18, 0xD88 + +gUnknown_84129A0:: @ 84129A0 + .incbin "baserom.gba", 0x4129A0, 0x20 + +gUnknown_84129C0:: @ 84129C0 + .incbin "baserom.gba", 0x4129C0, 0x958 + +gUnknown_8413318:: @ 8413318 + .incbin "baserom.gba", 0x413318, 0x20 + +gUnknown_8413338:: @ 8413338 + .incbin "baserom.gba", 0x413338, 0x51C + +gUnknown_8413854:: @ 8413854 + .incbin "baserom.gba", 0x413854, 0x20 + +gUnknown_8413874:: @ 8413874 + .incbin "baserom.gba", 0x413874, 0x524 + +gUnknown_8413D98:: @ 8413D98 + .incbin "baserom.gba", 0x413D98, 0x20 + +gUnknown_8413DB8:: @ 8413DB8 + .incbin "baserom.gba", 0x413DB8, 0x564 + +gUnknown_841431C:: @ 841431C + .incbin "baserom.gba", 0x41431C, 0x48 + +gUnknown_8414364:: @ 8414364 + .incbin "baserom.gba", 0x414364, 0x54 + +gUnknown_84143B8:: @ 84143B8 + .incbin "baserom.gba", 0x4143B8, 0x18 + +gUnknown_84143D0:: @ 84143D0 + .incbin "baserom.gba", 0x4143D0, 0x1B8 + +gUnknown_8414588:: @ 8414588 + .incbin "baserom.gba", 0x414588, 0x34 + +gUnknown_84145BC:: @ 84145BC + .incbin "baserom.gba", 0x4145BC, 0x204 + + .align 2, 0 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 2107a7c0f..26609158f 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -281,72 +281,6 @@ gUnknown_84105B4:: @ 84105B4 gUnknown_8410CDC:: @ 8410CDC .incbin "baserom.gba", 0x410CDC, 0x18 -gUnknown_8410CF4:: @ 8410CF4 - .incbin "baserom.gba", 0x410CF4, 0x10C - -gUnknown_8410E00:: @ 8410E00 - .incbin "baserom.gba", 0x410E00, 0x4 - -gUnknown_8410E04:: @ 8410E04 - .incbin "baserom.gba", 0x410E04, 0x4 - -gUnknown_8410E08:: @ 8410E08 - .incbin "baserom.gba", 0x410E08, 0x8 - -gUnknown_8410E10:: @ 8410E10 - .incbin "baserom.gba", 0x410E10, 0x20 - -gUnknown_8410E30:: @ 8410E30 - .incbin "baserom.gba", 0x410E30, 0xDC8 - -gUnknown_8411BF8:: @ 8411BF8 - .incbin "baserom.gba", 0x411BF8, 0x20 - -gUnknown_8411C18:: @ 8411C18 - .incbin "baserom.gba", 0x411C18, 0xD88 - -gUnknown_84129A0:: @ 84129A0 - .incbin "baserom.gba", 0x4129A0, 0x20 - -gUnknown_84129C0:: @ 84129C0 - .incbin "baserom.gba", 0x4129C0, 0x958 - -gUnknown_8413318:: @ 8413318 - .incbin "baserom.gba", 0x413318, 0x20 - -gUnknown_8413338:: @ 8413338 - .incbin "baserom.gba", 0x413338, 0x51C - -gUnknown_8413854:: @ 8413854 - .incbin "baserom.gba", 0x413854, 0x20 - -gUnknown_8413874:: @ 8413874 - .incbin "baserom.gba", 0x413874, 0x524 - -gUnknown_8413D98:: @ 8413D98 - .incbin "baserom.gba", 0x413D98, 0x20 - -gUnknown_8413DB8:: @ 8413DB8 - .incbin "baserom.gba", 0x413DB8, 0x564 - -gUnknown_841431C:: @ 841431C - .incbin "baserom.gba", 0x41431C, 0x48 - -gUnknown_8414364:: @ 8414364 - .incbin "baserom.gba", 0x414364, 0x54 - -gUnknown_84143B8:: @ 84143B8 - .incbin "baserom.gba", 0x4143B8, 0x18 - -gUnknown_84143D0:: @ 84143D0 - .incbin "baserom.gba", 0x4143D0, 0x1B8 - -gUnknown_8414588:: @ 8414588 - .incbin "baserom.gba", 0x414588, 0x34 - -gUnknown_84145BC:: @ 84145BC - .incbin "baserom.gba", 0x4145BC, 0x204 - @ strings .section .rodata.841EE44 diff --git a/include/credits.h b/include/credits.h new file mode 100644 index 000000000..c8a19bbeb --- /dev/null +++ b/include/credits.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CREDITS_H +#define GUARD_CREDITS_H + + + +#endif //GUARD_CREDITS_H diff --git a/include/field_weather.h b/include/field_weather.h index c3ecd4fa6..3e544b106 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,5 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); +void sub_807A944(u8, u8, u32); #endif // GUARD_WEATHER_H diff --git a/include/overworld.h b/include/overworld.h index 7c1f34e41..3d973d844 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -119,4 +119,7 @@ bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); +void sub_80574A4(void); +bool32 sub_805750C(u8 *, const char *, u8); + #endif //GUARD_ROM4_H diff --git a/include/strings.h b/include/strings.h index 97c120ff3..951ab264c 100644 --- a/include/strings.h +++ b/include/strings.h @@ -208,4 +208,7 @@ extern const u8 gString_OutOfCoins[]; extern const u8 gString_QuitPlaying[]; extern const u8 gString_SlotMachineControls[]; +// credits +extern const u8 gUnknown_841D198[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 053ee4abc..17ff0d063 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -212,6 +212,7 @@ SECTIONS { src/intro.o(.text); asm/battle_anim_special.o(.text); asm/hall_of_fame.o(.text); + src/credits.o(.text); asm/credits.o(.text); src/diploma.o(.text); asm/save_failed_screen.o(.text); @@ -424,6 +425,8 @@ SECTIONS { data/data_83FECCC.o(.rodata); src/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); + src/credits.o(.rodata); + data/credits.o(.rodata); src/diploma.o(.rodata); data/strings.o(.rodata); data/data_83FECCC.o(.rodata.841EE44); diff --git a/src/credits.c b/src/credits.c new file mode 100644 index 000000000..0329bf7c3 --- /dev/null +++ b/src/credits.c @@ -0,0 +1,1116 @@ +#include "global.h" +#include "malloc.h" +#include "palette.h" +#include "gpu_regs.h" +#include "task.h" +#include "overworld.h" +#include "event_data.h" +#include "window.h" +#include "new_menu_helpers.h" +#include "menu.h" +#include "strings.h" +#include "field_weather.h" + +struct CreditsResources +{ + u8 unk_00; + u8 unk_01; + u8 unk_02; + u16 unk_04; + u16 unk_06; + u8 unk_08; + u8 unk_09; + u8 unk_0A; + bool8 unk_0B; + u8 filler_0C[16]; + u8 unk_1C; + u8 unk_1D; +}; + +struct UnkStruct_8410CF4 +{ + u8 unk0; + u8 unk1; + u16 unk2; +}; + +struct UnkStruct_84145BC +{ + const u8 * unk_0; + const u8 * unk_4; + u8 unk_8; +}; + +EWRAM_DATA struct CreditsResources * gUnknown_203AB40 = NULL; + +void sub_80F39E8(void); +s32 sub_80F3BD0(void); +bool32 sub_80F4328(void); +bool32 sub_80F4674(void); +void sub_80F48D0(void); +void sub_80F4930(u8 a0); + +/* +const ALIGNED(4) u8 gUnknown_8410E00[3] = {0, 5, 2}; +const ALIGNED(4) u8 gUnknown_8410E04[3] = {0, 1, 2}; + +const struct WindowTemplate gUnknown_8410E08 = { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 4, + .width = 30, + .height = 12, + .paletteNum = 15, + .baseBlock = 0x008 +}; + */ + +extern const struct UnkStruct_8410CF4 gUnknown_8410CF4[]; +extern const u8 gUnknown_8410E00[3]; +extern const u8 gUnknown_8410E04[3]; +extern const struct WindowTemplate gUnknown_8410E08; + +extern const char * gUnknown_8414588[]; +extern const struct UnkStruct_84145BC gUnknown_84145BC[]; + +void sub_80F39B4(void) +{ + gUnknown_203AB40 = AllocZeroed(sizeof(*gUnknown_203AB40)); + ResetTasks(); + gUnknown_203AB40->unk_02 = 0xFF; + gUnknown_203AB40->unk_1D = 0; + ResetSpriteData(); + SetMainCallback2(sub_80F39E8); +} + +void sub_80F39E8(void) +{ + switch (sub_80F3BD0()) + { + case 0: + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + break; + case 1: + if (gUnknown_203AB40->unk_1D & 1) + { + sub_80574A4(); + } + else + { + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + } + gUnknown_203AB40->unk_1D++; + break; + case 2: + FlagClear(0x4000); + gUnknown_2031DD8 = 0; + Free(gUnknown_203AB40); + SoftReset(RESET_ALL); + // noreturn + } +} + +void sub_80F3A74(void) +{ + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuReg(REG_OFFSET_WININ, 0x1F3F); + SetGpuReg(REG_OFFSET_WINOUT, 0x000E); +} + +void sub_80F3AA4(void) +{ + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4)); + SetGpuReg(REG_OFFSET_BLDY, 10); +} + +void sub_80F3AC4(void) +{ + gUnknown_203AB40->unk_0A = AddWindow(&gUnknown_8410E08); + FillWindowPixelBuffer(gUnknown_203AB40->unk_0A, PIXEL_FILL(0)); + PutWindowTilemap(gUnknown_203AB40->unk_0A); + CopyWindowToVram(gUnknown_203AB40->unk_0A, 3); + gUnknown_203AB40->unk_0B = TRUE; +} + +void sub_80F3B04(void) +{ + if (gUnknown_203AB40->unk_0B) + { + RemoveWindow(gUnknown_203AB40->unk_0A); + CleanupOverworldWindowsAndTilemaps(); + gUnknown_203AB40->unk_0B = FALSE; + } +} + +bool32 sub_80F3B2C(UNUSED u8 unused) +{ + switch (gUnknown_203AB40->unk_01) + { + case 0: + FlagSet(0x4000); + gUnknown_2031DD8 = 2; + gUnknown_203AB40->unk_1C = 0; + gUnknown_203AB40->unk_01++; + // fallthrough + case 1: + if (!sub_805750C(&gUnknown_203AB40->unk_1C, gUnknown_8414588[gUnknown_203AB40->unk_09], 0)) + return FALSE; + sub_80F3AC4(); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_WIN0V, 0x247C); + sub_80F3A74(); + sub_80F3AA4(); + Menu_LoadStdPalAt(0xF0); + gPlttBufferUnfaded[0xFF] = RGB_BLACK; + gPlttBufferFaded[0xFF] = RGB_BLACK; + return TRUE; + default: + return FALSE; + } +} + +#ifdef NONMATCHING +s32 sub_80F3BD0(void) +{ + u16 win0v[2]; + + switch (gUnknown_203AB40->unk_00) + { + case 0: + sub_80F3A74(); + SetGpuReg(REG_OFFSET_WIN0H, 0x40); + SetGpuReg(REG_OFFSET_WIN0V, 0x4F51); + gUnknown_203AB40->unk_00 = 1; + return 0; + case 1: + sub_80F3AA4(); + sub_80F3AC4(); + Menu_LoadStdPalAt(0xF0); + gPlttBufferUnfaded[0xFF] = RGB_BLACK; + gPlttBufferFaded[0xFF] = RGB_BLACK; + gUnknown_203AB40->unk_00 = 2; + return 0; + case 2: + win0v[0] = GetGpuReg(REG_OFFSET_WIN0V) >> 8; + win0v[1] = GetGpuReg(REG_OFFSET_WIN0V) & 0xFF; + if (win0v[0] == 0x24) + { + gUnknown_203AB40->unk_04 = 0; + gUnknown_203AB40->unk_00 = 3; + } + else + { + win0v[0]--; + win0v[1]++; + SetGpuReg(REG_OFFSET_WIN0V, win0v[1] + (win0v[0] << 8)); + } + return 0; + case 3: + if (gUnknown_203AB40->unk_04 == 0) + { + sub_80F4930(0); + gUnknown_203AB40->unk_04 = 100; + gUnknown_203AB40->unk_00 = 4; + } + else + { + gUnknown_203AB40->unk_04--; + } + return 0; + case 4: + if (gUnknown_203AB40->unk_04 == 0) + { + gUnknown_203AB40->unk_04 = 360; + AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 0x08, 0x29, 1, 2, gUnknown_8410E00, 0, gUnknown_841D198); + gUnknown_203AB40->unk_00 = 5; + } + else + { + gUnknown_203AB40->unk_04--; + } + return 0; + case 5: + if (gUnknown_203AB40->unk_04 == 0) + { + sub_80F3B04(); + gUnknown_203AB40->unk_00 = 6; + gUnknown_203AB40->unk_04 = 0; + gUnknown_203AB40->unk_06 = 0; + } + else + { + gUnknown_203AB40->unk_04--; + } + return 0; + case 6: + if (gUnknown_203AB40->unk_04 != 0) + { + gUnknown_203AB40->unk_04--; + return gUnknown_203AB40->unk_08; + } + else + { + switch (gUnknown_203AB40->unk_06) + { + case 0: + BeginNormalPaletteFade(0x00008000, 0, 0, 16, RGB_BLACK); + gUnknown_203AB40->unk_00 = 7; + FillWindowPixelBuffer(gUnknown_203AB40->unk_0A, PIXEL_FILL(0)); + return gUnknown_203AB40->unk_08; + case 1: + gUnknown_203AB40->unk_00 = 10; + gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + sub_807A944(1, 0, 0x3FFFFFFF); + break; + case 2: + gUnknown_203AB40->unk_00 = 12; + gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + break; + case 3: + gUnknown_203AB40->unk_00 = 13; + gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + fade_screen(1, 0); + break; + case 4: + gUnknown_203AB40->unk_00 = 15; + gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, RGB_BLACK); + break; + case 5: + gUnknown_203AB40->unk_00 = 17; + break; + } + gUnknown_203AB40->unk_04 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk2; + gUnknown_203AB40->unk_06++; + } + return 0; + case 7: + if (!gPaletteFade.active) + { + win0v[0] = gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_8; // unused + AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 2, 6, 0, 0, gUnknown_8410E00, -1, gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_0); + gUnknown_203AB40->unk_00 = 8; + } + return gUnknown_203AB40->unk_08; + case 8: + win0v[0] = gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_8; + AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 2, 6, 0, 0, gUnknown_8410E00, -1, gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_4); + gUnknown_203AB40->unk_00 = 9; + return gUnknown_203AB40->unk_08; + case 9: + CopyWindowToVram(gUnknown_203AB40->unk_0A, 2); + gUnknown_203AB40->unk_04 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk2; + gUnknown_203AB40->unk_06++; + BeginNormalPaletteFade(0x00008000, 0, 16, 0, RGB_BLACK); + gUnknown_203AB40->unk_00 = 6; + return gUnknown_203AB40->unk_08; + case 10: + if (!gPaletteFade.active) + { + sub_80F3B04(); + gUnknown_203AB40->unk_01 = 0; + gUnknown_203AB40->unk_00 = 11; + } + return 0; + case 11: + if (sub_80F3B2C(gUnknown_203AB40->unk_09)) + { + gUnknown_203AB40->unk_08 = 1; + gUnknown_203AB40->unk_00 = 6; + } + return 0; + case 12: + if (!gPaletteFade.active) + { + sub_80F3B04(); + gUnknown_203AB40->unk_01 = 0; + while (sub_80F3B2C(gUnknown_203AB40->unk_09)) + {} + switch (gUnknown_203AB40->unk_09) + { + default: + win0v[0] = 1; + break; + case 6: + win0v[0] = 2; + break; + case 9: + win0v[0] = 3; + break; + case 12: + win0v[0] = 4; + break; + } + sub_80F4930(win0v[0]); + gUnknown_203AB40->unk_08 = 1; + gUnknown_203AB40->unk_00 = 6; + } + return 0; + case 13: + if (!gPaletteFade.active) + { + sub_80F48D0(); + sub_80F3B04(); + gUnknown_203AB40->unk_01 = 0; + gUnknown_203AB40->unk_08 = 0; + gUnknown_203AB40->unk_00 = 14; + } + return 0; + case 14: + if (sub_80F4328()) + { + gUnknown_203AB40->unk_00 = 6; + } + return 0; + case 15: + if (!gPaletteFade.active) + { + sub_80F3B04(); + gUnknown_203AB40->unk_01 = 0; + gUnknown_203AB40->unk_08 = 0; + gUnknown_203AB40->unk_00 = 16; + } + return 0; + case 16: + if (sub_80F4674()) + { + gUnknown_203AB40->unk_00 = 6; + } + return 0; + case 17: + if (JOY_NEW(A_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE); + gUnknown_203AB40->unk_00 = 18; + } + else if (gUnknown_203AB40->unk_04 == 0) + { + gUnknown_203AB40->unk_00 = 18; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE); + } + else + gUnknown_203AB40->unk_04--; + return 0; + case 18: + if (!gPaletteFade.active) + sub_80F3B04(); + default: + return 2; + } +} +#else +NAKED +s32 sub_80F3BD0(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x24\n" + "\tldr r1, _080F3BEC @ =gUnknown_203AB40\n" + "\tldr r0, [r1]\n" + "\tldrb r0, [r0]\n" + "\tadds r7, r1, 0\n" + "\tcmp r0, 0x12\n" + "\tbls _080F3BE2\n" + "\tb _080F4180_default_return2\n" + "_080F3BE2:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080F3BF0 @ =_080F3BF4\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080F3BEC: .4byte gUnknown_203AB40\n" + "_080F3BF0: .4byte _080F3BF4\n" + "\t.align 2, 0\n" + "_080F3BF4:\n" + "\t.4byte _080F3C40_case00\n" + "\t.4byte _080F3C64_case01\n" + "\t.4byte _080F3C98_case02\n" + "\t.4byte _080F3CEE_case03\n" + "\t.4byte _080F3D0A_case04\n" + "\t.4byte _080F3D48_case05\n" + "\t.4byte _080F3D6A_case06\n" + "\t.4byte _080F3EB4_case07\n" + "\t.4byte _080F3F24_case08\n" + "\t.4byte _080F3F84_case09\n" + "\t.4byte _080F3FC4_case0A\n" + "\t.4byte _080F3FF0_case0B\n" + "\t.4byte _080F400A_case0C\n" + "\t.4byte _080F4084_case0D\n" + "\t.4byte _080F40B8_case0E\n" + "\t.4byte _080F40D0_case0F\n" + "\t.4byte _080F4100_case10\n" + "\t.4byte _080F4118_case11\n" + "\t.4byte _080F4170_case12\n" + "_080F3C40_case00:\n" + "\tbl sub_80F3A74\n" + "\tmovs r0, 0x40\n" + "\tmovs r1, 0xF0\n" + "\tbl SetGpuReg\n" + "\tldr r1, _080F3C5C @ =0x00004f51\n" + "\tmovs r0, 0x44\n" + "\tbl SetGpuReg\n" + "\tldr r0, _080F3C60 @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F3C5C: .4byte 0x00004f51\n" + "_080F3C60: .4byte gUnknown_203AB40\n" + "_080F3C64_case01:\n" + "\tbl sub_80F3AA4\n" + "\tbl sub_80F3AC4\n" + "\tmovs r0, 0xF0\n" + "\tbl Menu_LoadStdPalAt\n" + "\tldr r0, _080F3C8C @ =gPlttBufferUnfaded\n" + "\tmovs r2, 0xFF\n" + "\tlsls r2, 1\n" + "\tadds r0, r2\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r0]\n" + "\tldr r0, _080F3C90 @ =gPlttBufferFaded\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tldr r0, _080F3C94 @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x2\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F3C8C: .4byte gPlttBufferUnfaded\n" + "_080F3C90: .4byte gPlttBufferFaded\n" + "_080F3C94: .4byte gUnknown_203AB40\n" + "_080F3C98_case02:\n" + "\tmovs r0, 0x44\n" + "\tbl GetGpuReg\n" + "\tadd r1, sp, 0x14\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 24\n" + "\tstrh r0, [r1]\n" + "\tmovs r0, 0x44\n" + "\tbl GetGpuReg\n" + "\tadd r2, sp, 0x14\n" + "\tmovs r1, 0xFF\n" + "\tands r1, r0\n" + "\tstrh r1, [r2, 0x2]\n" + "\tadds r0, r2, 0\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0x24\n" + "\tbne _080F3CCC\n" + "\tldr r0, _080F3CC8 @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1, 0x4]\n" + "\tmovs r0, 0x3\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F3CC8: .4byte gUnknown_203AB40\n" + "_080F3CCC:\n" + "\tadd r1, sp, 0x14\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r1]\n" + "\tadds r2, r1, 0\n" + "\tadds r0, r1, 0\n" + "\tldrh r1, [r0, 0x2]\n" + "\tadds r1, 0x1\n" + "\tstrh r1, [r2, 0x2]\n" + "\tldrh r0, [r0]\n" + "\tlsls r0, 8\n" + "\tadds r1, r0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tmovs r0, 0x44\n" + "\tbl SetGpuReg\n" + "\tb _080F3D06_return0\n" + "_080F3CEE_case03:\n" + "\tldr r1, [r7]\n" + "\tldrh r0, [r1, 0x4]\n" + "\tcmp r0, 0\n" + "\tbne _080F3D52_decfield4_return0\n" + "\tmovs r0, 0\n" + "\tbl sub_80F4930\n" + "\tldr r0, [r7]\n" + "\tmovs r1, 0x64\n" + "\tstrh r1, [r0, 0x4]\n" + "\tmovs r1, 0x4\n" + "\tstrb r1, [r0]\n" + "_080F3D06_return0:\n" + "\tmovs r0, 0\n" + "\tb _080F4182_return\n" + "_080F3D0A_case04:\n" + "\tldr r1, [r7]\n" + "\tldrh r0, [r1, 0x4]\n" + "\tadds r2, r0, 0\n" + "\tcmp r2, 0\n" + "\tbne _080F3D52_decfield4_return0\n" + "\tmovs r0, 0xB4\n" + "\tlsls r0, 1\n" + "\tstrh r0, [r1, 0x4]\n" + "\tldrb r0, [r1, 0xA]\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x2\n" + "\tstr r1, [sp, 0x4]\n" + "\tldr r1, _080F3D40 @ =gUnknown_8410E00\n" + "\tstr r1, [sp, 0x8]\n" + "\tstr r2, [sp, 0xC]\n" + "\tldr r1, _080F3D44 @ =gUnknown_841D198\n" + "\tstr r1, [sp, 0x10]\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x8\n" + "\tmovs r3, 0x29\n" + "\tbl AddTextPrinterParameterized4\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x5\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F3D40: .4byte gUnknown_8410E00\n" + "_080F3D44: .4byte gUnknown_841D198\n" + "_080F3D48_case05:\n" + "\tldr r1, [r7]\n" + "\tldrh r0, [r1, 0x4]\n" + "\tadds r4, r0, 0\n" + "\tcmp r4, 0\n" + "\tbeq _080F3D58\n" + "_080F3D52_decfield4_return0:\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r1, 0x4]\n" + "\tb _080F3D06_return0\n" + "_080F3D58:\n" + "\tbl sub_80F3B04\n" + "\tldr r0, [r7]\n" + "\tmovs r1, 0x6\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r7]\n" + "\tstrh r4, [r0, 0x4]\n" + "\tstrh r4, [r0, 0x6]\n" + "\tb _080F3D06_return0\n" + "_080F3D6A_case06:\n" + "\tldr r2, [r7]\n" + "\tldrh r0, [r2, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _080F3D7A\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r2, 0x4]\n" + "\tldrb r0, [r2, 0x8]\n" + "\tb _080F4182_return\n" + "_080F3D7A:\n" + "\tldr r1, _080F3D94 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x5\n" + "\tbls _080F3D8A\n" + "\tb _080F3E94\n" + "_080F3D8A:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080F3D98 @ =_080F3D9C\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080F3D94: .4byte gUnknown_8410CF4\n" + "_080F3D98: .4byte _080F3D9C\n" + "\t.align 2, 0\n" + "_080F3D9C:\n" + "\t.4byte _080F3DB4\n" + "\t.4byte _080F3DE0\n" + "\t.4byte _080F3E10\n" + "\t.4byte _080F3E30\n" + "\t.4byte _080F3E58\n" + "\t.4byte _080F3E8C\n" + "_080F3DB4:\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 8\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r4, _080F3DDC @ =gUnknown_203AB40\n" + "\tldr r1, [r4]\n" + "\tmovs r0, 0x7\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tmovs r1, 0\n" + "\tbl FillWindowPixelBuffer\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0x8]\n" + "\tb _080F4182_return\n" + "\t.align 2, 0\n" + "_080F3DDC: .4byte gUnknown_203AB40\n" + "_080F3DE0:\n" + "\tldr r2, _080F3E04 @ =gUnknown_203AB40\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0xA\n" + "\tstrb r0, [r1]\n" + "\tldr r2, [r2]\n" + "\tldr r1, _080F3E08 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x1]\n" + "\tstrb r0, [r2, 0x9]\n" + "\tldr r2, _080F3E0C @ =0x3fffffff\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0\n" + "\tbl sub_807A944\n" + "\tb _080F3E94\n" + "\t.align 2, 0\n" + "_080F3E04: .4byte gUnknown_203AB40\n" + "_080F3E08: .4byte gUnknown_8410CF4\n" + "_080F3E0C: .4byte 0x3fffffff\n" + "_080F3E10:\n" + "\tldr r2, _080F3E28 @ =gUnknown_203AB40\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0xC\n" + "\tstrb r0, [r1]\n" + "\tldr r2, [r2]\n" + "\tldr r1, _080F3E2C @ =gUnknown_8410CF4\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x1]\n" + "\tstrb r0, [r2, 0x9]\n" + "\tb _080F3E94\n" + "\t.align 2, 0\n" + "_080F3E28: .4byte gUnknown_203AB40\n" + "_080F3E2C: .4byte gUnknown_8410CF4\n" + "_080F3E30:\n" + "\tldr r2, _080F3E50 @ =gUnknown_203AB40\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0xD\n" + "\tstrb r0, [r1]\n" + "\tldr r2, [r2]\n" + "\tldr r1, _080F3E54 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x1]\n" + "\tstrb r0, [r2, 0x9]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0\n" + "\tbl fade_screen\n" + "\tb _080F3E94\n" + "\t.align 2, 0\n" + "_080F3E50: .4byte gUnknown_203AB40\n" + "_080F3E54: .4byte gUnknown_8410CF4\n" + "_080F3E58:\n" + "\tldr r2, _080F3E84 @ =gUnknown_203AB40\n" + "\tldr r1, [r2]\n" + "\tmovs r3, 0\n" + "\tmovs r0, 0xF\n" + "\tstrb r0, [r1]\n" + "\tldr r2, [r2]\n" + "\tldr r1, _080F3E88 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x1]\n" + "\tstrb r0, [r2, 0x9]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r3, [sp]\n" + "\tmovs r1, 0x4\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tb _080F3E94\n" + "\t.align 2, 0\n" + "_080F3E84: .4byte gUnknown_203AB40\n" + "_080F3E88: .4byte gUnknown_8410CF4\n" + "_080F3E8C:\n" + "\tldr r0, _080F3EAC @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x11\n" + "\tstrb r0, [r1]\n" + "_080F3E94:\n" + "\tldr r0, _080F3EAC @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tldr r2, _080F3EB0 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r1, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldrh r0, [r0, 0x2]\n" + "\tstrh r0, [r1, 0x4]\n" + "\tldrh r0, [r1, 0x6]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r1, 0x6]\n" + "\tb _080F3D06_return0\n" + "\t.align 2, 0\n" + "_080F3EAC: .4byte gUnknown_203AB40\n" + "_080F3EB0: .4byte gUnknown_8410CF4\n" + "_080F3EB4_case07:\n" + "\tldr r0, _080F3F14 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tcmp r6, 0\n" + "\tbne _080F3FBA_returnfield8\n" + "\tadd r3, sp, 0x14\n" + "\tldr r5, _080F3F18 @ =gUnknown_84145BC\n" + "\tldr r4, _080F3F1C @ =gUnknown_8410CF4\n" + "\tldr r2, [r7]\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r4\n" + "\tldrb r1, [r0, 0x1]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tldrb r0, [r0, 0x8]\n" + "\tstrh r0, [r3]\n" + "\tldrb r0, [r2, 0xA]\n" + "\tstr r6, [sp]\n" + "\tstr r6, [sp, 0x4]\n" + "\tldr r1, _080F3F20 @ =gUnknown_8410E00\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x1\n" + "\tnegs r1, r1\n" + "\tstr r1, [sp, 0xC]\n" + "\tldrh r1, [r2, 0x6]\n" + "\tlsls r1, 2\n" + "\tadds r1, r4\n" + "\tldrb r2, [r1, 0x1]\n" + "\tlsls r1, r2, 1\n" + "\tadds r1, r2\n" + "\tlsls r1, 2\n" + "\tadds r1, r5\n" + "\tldr r1, [r1]\n" + "\tstr r1, [sp, 0x10]\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x2\n" + "\tmovs r3, 0x6\n" + "\tbl AddTextPrinterParameterized4\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x8\n" + "\tb _080F3FB8_setfield0_returnfield8\n" + "\t.align 2, 0\n" + "_080F3F14: .4byte gPaletteFade\n" + "_080F3F18: .4byte gUnknown_84145BC\n" + "_080F3F1C: .4byte gUnknown_8410CF4\n" + "_080F3F20: .4byte gUnknown_8410E00\n" + "_080F3F24_case08:\n" + "\tadd r4, sp, 0x14\n" + "\tldr r3, _080F3F78 @ =gUnknown_84145BC\n" + "\tldr r5, _080F3F7C @ =gUnknown_8410CF4\n" + "\tldr r2, [r7]\n" + "\tldrh r0, [r2, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tldrb r1, [r0, 0x1]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0, 0x8]\n" + "\tmovs r1, 0\n" + "\tstrh r0, [r4]\n" + "\tldrb r0, [r2, 0xA]\n" + "\tstr r1, [sp]\n" + "\tstr r1, [sp, 0x4]\n" + "\tldr r1, _080F3F80 @ =gUnknown_8410E04\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x1\n" + "\tnegs r1, r1\n" + "\tstr r1, [sp, 0xC]\n" + "\tldrh r1, [r2, 0x6]\n" + "\tlsls r1, 2\n" + "\tadds r1, r5\n" + "\tldrb r2, [r1, 0x1]\n" + "\tlsls r1, r2, 1\n" + "\tadds r1, r2\n" + "\tlsls r1, 2\n" + "\tadds r3, 0x4\n" + "\tadds r1, r3\n" + "\tldr r1, [r1]\n" + "\tstr r1, [sp, 0x10]\n" + "\tmovs r1, 0x2\n" + "\tmovs r2, 0x8\n" + "\tmovs r3, 0x6\n" + "\tbl AddTextPrinterParameterized4\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x9\n" + "\tb _080F3FB8_setfield0_returnfield8\n" + "\t.align 2, 0\n" + "_080F3F78: .4byte gUnknown_84145BC\n" + "_080F3F7C: .4byte gUnknown_8410CF4\n" + "_080F3F80: .4byte gUnknown_8410E04\n" + "_080F3F84_case09:\n" + "\tldr r0, [r7]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tmovs r1, 0x2\n" + "\tbl CopyWindowToVram\n" + "\tldr r1, [r7]\n" + "\tldr r2, _080F3FC0 @ =gUnknown_8410CF4\n" + "\tldrh r0, [r1, 0x6]\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldrh r0, [r0, 0x2]\n" + "\tmovs r2, 0\n" + "\tstrh r0, [r1, 0x4]\n" + "\tldrh r0, [r1, 0x6]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r1, 0x6]\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 8\n" + "\tstr r2, [sp]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x6\n" + "_080F3FB8_setfield0_returnfield8:\n" + "\tstrb r0, [r1]\n" + "_080F3FBA_returnfield8:\n" + "\tldr r0, [r7]\n" + "\tldrb r0, [r0, 0x8]\n" + "\tb _080F4182_return\n" + "\t.align 2, 0\n" + "_080F3FC0: .4byte gUnknown_8410CF4\n" + "_080F3FC4_case0A:\n" + "\tldr r0, _080F3FE8 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080F3FD6\n" + "\tb _080F3D06_return0\n" + "_080F3FD6:\n" + "\tbl sub_80F3B04\n" + "\tldr r1, _080F3FEC @ =gUnknown_203AB40\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x1]\n" + "\tldr r1, [r1]\n" + "\tmovs r0, 0xB\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F3FE8: .4byte gPaletteFade\n" + "_080F3FEC: .4byte gUnknown_203AB40\n" + "_080F3FF0_case0B:\n" + "\tldr r0, [r7]\n" + "\tldrb r0, [r0, 0x9]\n" + "\tbl sub_80F3B2C\n" + "\tcmp r0, 0\n" + "\tbne _080F3FFE\n" + "\tb _080F3D06_return0\n" + "_080F3FFE:\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1, 0x8]\n" + "\tldr r1, [r7]\n" + "\tmovs r0, 0x6\n" + "\tb _080F413C_setfield0_return0\n" + "_080F400A_case0C:\n" + "\tldr r0, _080F4050 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080F401C\n" + "\tb _080F3D06_return0\n" + "_080F401C:\n" + "\tbl sub_80F3B04\n" + "\tldr r1, _080F4054 @ =gUnknown_203AB40\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x1]\n" + "\tadds r4, r1, 0\n" + "_080F4028:\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0x9]\n" + "\tbl sub_80F3B2C\n" + "\tcmp r0, 0\n" + "\tbeq _080F4028\n" + "\tldr r0, _080F4054 @ =gUnknown_203AB40\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x9]\n" + "\tcmp r0, 0x6\n" + "\tbeq _080F4058\n" + "\tcmp r0, 0x6\n" + "\tble _080F404A\n" + "\tcmp r0, 0x9\n" + "\tbeq _080F405E\n" + "\tcmp r0, 0xC\n" + "\tbeq _080F4064\n" + "_080F404A:\n" + "\tadd r1, sp, 0x14\n" + "\tmovs r0, 0x1\n" + "\tb _080F4068\n" + "\t.align 2, 0\n" + "_080F4050: .4byte gPaletteFade\n" + "_080F4054: .4byte gUnknown_203AB40\n" + "_080F4058:\n" + "\tadd r1, sp, 0x14\n" + "\tmovs r0, 0x2\n" + "\tb _080F4068\n" + "_080F405E:\n" + "\tadd r1, sp, 0x14\n" + "\tmovs r0, 0x3\n" + "\tb _080F4068\n" + "_080F4064:\n" + "\tadd r1, sp, 0x14\n" + "\tmovs r0, 0x4\n" + "_080F4068:\n" + "\tstrh r0, [r1]\n" + "\tadd r0, sp, 0x14\n" + "\tldrb r0, [r0]\n" + "\tbl sub_80F4930\n" + "\tldr r2, _080F4080 @ =gUnknown_203AB40\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1, 0x8]\n" + "\tldr r1, [r2]\n" + "\tmovs r0, 0x6\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F4080: .4byte gUnknown_203AB40\n" + "_080F4084_case0D:\n" + "\tldr r0, _080F40B0 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080F4096\n" + "\tb _080F3D06_return0\n" + "_080F4096:\n" + "\tbl sub_80F48D0\n" + "\tbl sub_80F3B04\n" + "\tldr r1, _080F40B4 @ =gUnknown_203AB40\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x1]\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x8]\n" + "\tldr r1, [r1]\n" + "\tmovs r0, 0xE\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F40B0: .4byte gPaletteFade\n" + "_080F40B4: .4byte gUnknown_203AB40\n" + "_080F40B8_case0E:\n" + "\tbl sub_80F4328\n" + "\tcmp r0, 0\n" + "\tbne _080F40C2\n" + "\tb _080F3D06_return0\n" + "_080F40C2:\n" + "\tldr r0, _080F40CC @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x6\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F40CC: .4byte gUnknown_203AB40\n" + "_080F40D0_case0F:\n" + "\tldr r0, _080F40F8 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080F40E2\n" + "\tb _080F3D06_return0\n" + "_080F40E2:\n" + "\tbl sub_80F3B04\n" + "\tldr r1, _080F40FC @ =gUnknown_203AB40\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x1]\n" + "\tldr r0, [r1]\n" + "\tstrb r4, [r0, 0x8]\n" + "\tldr r1, [r1]\n" + "\tmovs r0, 0x10\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F40F8: .4byte gPaletteFade\n" + "_080F40FC: .4byte gUnknown_203AB40\n" + "_080F4100_case10:\n" + "\tbl sub_80F4674\n" + "\tcmp r0, 0\n" + "\tbne _080F410A\n" + "\tb _080F3D06_return0\n" + "_080F410A:\n" + "\tldr r0, _080F4114 @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x6\n" + "\tb _080F413C_setfield0_return0\n" + "\t.align 2, 0\n" + "_080F4114: .4byte gUnknown_203AB40\n" + "_080F4118_case11:\n" + "\tldr r0, _080F4140 @ =gMain\n" + "\tldrh r1, [r0, 0x2E]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080F414C\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tldr r1, _080F4144 @ =0x00007fff\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r0, _080F4148 @ =gUnknown_203AB40\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x12\n" + "_080F413C_setfield0_return0:\n" + "\tstrb r0, [r1]\n" + "\tb _080F3D06_return0\n" + "\t.align 2, 0\n" + "_080F4140: .4byte gMain\n" + "_080F4144: .4byte 0x00007fff\n" + "_080F4148: .4byte gUnknown_203AB40\n" + "_080F414C:\n" + "\tldr r1, [r7]\n" + "\tldrh r0, [r1, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _080F4156\n" + "\tb _080F3D52_decfield4_return0\n" + "_080F4156:\n" + "\tmovs r0, 0x12\n" + "\tstrb r0, [r1]\n" + "\tsubs r0, 0x13\n" + "\tldr r1, _080F416C @ =0x00007fff\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tb _080F3D06_return0\n" + "\t.align 2, 0\n" + "_080F416C: .4byte 0x00007fff\n" + "_080F4170_case12:\n" + "\tldr r0, _080F418C @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080F4180_default_return2\n" + "\tbl sub_80F3B04\n" + "_080F4180_default_return2:\n" + "\tmovs r0, 0x2\n" + "_080F4182_return:\n" + "\tadd sp, 0x24\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_080F418C: .4byte gPaletteFade"); +} +#endif //NONMATCHING From 7f0c7528f732c650736b97e623c933ddaed00774 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Sep 2019 14:00:40 -0400 Subject: [PATCH 043/100] Finish credits decomp and data dump --- asm/credits.s | 1256 ------------------ baserom.ips | Bin 2055522 -> 2017986 bytes data/credits.s | 70 - data/credits/unk_840C630.pal | 19 + data/credits/unk_840C650.png | Bin 0 -> 1499 bytes data/credits/unk_840CA54.bin | Bin 0 -> 1024 bytes data/credits/unk_840CB8C.bin | Bin 0 -> 3200 bytes data/credits/unk_840D228.bin | Bin 0 -> 4992 bytes data/credits/unk_840E158.bin | Bin 0 -> 3200 bytes data/credits/unk_840E904.bin | Bin 0 -> 3840 bytes data/credits/unk_840F240.bin | Bin 0 -> 3200 bytes data/credits/unk_840F944.bin | Bin 0 -> 3840 bytes data/credits/unk_8410198.bin | Bin 0 -> 3200 bytes data/credits/unk_84105B4.bin | Bin 0 -> 4608 bytes data/credits/unk_8410B20.bin | Bin 0 -> 2048 bytes data/credits/unk_8410B20.png | Bin 0 -> 218 bytes data/credits/unk_8410E10.pal | 19 + data/credits/unk_8410E30.png | Bin 0 -> 2105 bytes data/credits/unk_8411BF8.pal | 19 + data/credits/unk_8411C18.png | Bin 0 -> 2083 bytes data/credits/unk_84129A0.pal | 19 + data/credits/unk_84129C0.png | Bin 0 -> 1162 bytes data/credits/unk_8413318.pal | 19 + data/credits/unk_8413338.png | Bin 0 -> 624 bytes data/credits/unk_8413854.pal | 19 + data/credits/unk_8413874.png | Bin 0 -> 632 bytes data/credits/unk_8413D98.pal | 19 + data/credits/unk_8413DB8.png | Bin 0 -> 786 bytes data/data_83FECCC.s | 53 - data/graphics.s | 15 +- data/maps/IndigoPlateau_Exterior/scripts.inc | 2 +- data/specials.inc | 2 +- data/strings.s | 333 +++-- graphics/credits/blastoise.pal | 19 + graphics/credits/charizard.pal | 19 + graphics/credits/pikachu.pal | 19 + graphics/credits/unk_8EAAB98.png | Bin 0 -> 1217 bytes graphics/credits/unk_8EAB30C.bin | Bin 0 -> 1280 bytes graphics/credits/unk_8EAE548.bin | Bin 0 -> 2048 bytes graphics/credits/unk_8EAE548.png | Bin 0 -> 908 bytes graphics/credits/venusaur.pal | 19 + graphics_file_rules.mk | 4 + include/graphics.h | 8 + include/overworld.h | 9 +- include/strings.h | 88 +- include/trainer_pokemon_sprites.h | 1 + ld_script.txt | 2 - src/credits.c | 954 ++++++++++++- 48 files changed, 1479 insertions(+), 1527 deletions(-) delete mode 100644 asm/credits.s delete mode 100644 data/credits.s create mode 100644 data/credits/unk_840C630.pal create mode 100644 data/credits/unk_840C650.png create mode 100644 data/credits/unk_840CA54.bin create mode 100644 data/credits/unk_840CB8C.bin create mode 100644 data/credits/unk_840D228.bin create mode 100644 data/credits/unk_840E158.bin create mode 100644 data/credits/unk_840E904.bin create mode 100644 data/credits/unk_840F240.bin create mode 100644 data/credits/unk_840F944.bin create mode 100644 data/credits/unk_8410198.bin create mode 100644 data/credits/unk_84105B4.bin create mode 100644 data/credits/unk_8410B20.bin create mode 100644 data/credits/unk_8410B20.png create mode 100644 data/credits/unk_8410E10.pal create mode 100644 data/credits/unk_8410E30.png create mode 100644 data/credits/unk_8411BF8.pal create mode 100644 data/credits/unk_8411C18.png create mode 100644 data/credits/unk_84129A0.pal create mode 100644 data/credits/unk_84129C0.png create mode 100644 data/credits/unk_8413318.pal create mode 100644 data/credits/unk_8413338.png create mode 100644 data/credits/unk_8413854.pal create mode 100644 data/credits/unk_8413874.png create mode 100644 data/credits/unk_8413D98.pal create mode 100644 data/credits/unk_8413DB8.png create mode 100644 graphics/credits/blastoise.pal create mode 100644 graphics/credits/charizard.pal create mode 100644 graphics/credits/pikachu.pal create mode 100644 graphics/credits/unk_8EAAB98.png create mode 100644 graphics/credits/unk_8EAB30C.bin create mode 100644 graphics/credits/unk_8EAE548.bin create mode 100644 graphics/credits/unk_8EAE548.png create mode 100644 graphics/credits/venusaur.pal diff --git a/asm/credits.s b/asm/credits.s deleted file mode 100644 index 960ea86a5..000000000 --- a/asm/credits.s +++ /dev/null @@ -1,1256 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F4190 -sub_80F4190: @ 80F4190 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80F4190 - - thumb_func_start sub_80F41A4 -sub_80F41A4: @ 80F41A4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _080F4200 - cmp r4, 0x1 - bgt _080F41BA - cmp r4, 0 - beq _080F41C4 - b _080F42C2 -_080F41BA: - cmp r4, 0x2 - beq _080F4240 - cmp r4, 0x3 - beq _080F4288 - b _080F42C2 -_080F41C4: - ldr r0, _080F41F4 @ =gUnknown_840C5B0 - bl InitWindows - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xA - str r0, [sp] - str r4, [sp, 0x4] - movs r0, 0x6 - movs r1, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_810C228 - ldr r1, _080F41F8 @ =gUnknown_840CB8C - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r1, _080F41FC @ =gUnknown_840D228 - b _080F4270 - .align 2, 0 -_080F41F4: .4byte gUnknown_840C5B0 -_080F41F8: .4byte gUnknown_840CB8C -_080F41FC: .4byte gUnknown_840D228 -_080F4200: - ldr r0, _080F4234 @ =gUnknown_840C5D0 - bl InitWindows - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xA - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_810C228 - ldr r1, _080F4238 @ =gUnknown_840E158 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r1, _080F423C @ =gUnknown_840E904 - b _080F4270 - .align 2, 0 -_080F4234: .4byte gUnknown_840C5D0 -_080F4238: .4byte gUnknown_840E158 -_080F423C: .4byte gUnknown_840E904 -_080F4240: - ldr r0, _080F427C @ =gUnknown_840C5F0 - bl InitWindows - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xA - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x9 - movs r1, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_810C228 - ldr r1, _080F4280 @ =gUnknown_840F240 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r1, _080F4284 @ =gUnknown_840F944 -_080F4270: - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - b _080F42C2 - .align 2, 0 -_080F427C: .4byte gUnknown_840C5F0 -_080F4280: .4byte gUnknown_840F240 -_080F4284: .4byte gUnknown_840F944 -_080F4288: - ldr r0, _080F42E4 @ =gUnknown_840C610 - bl InitWindows - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0xA - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x19 - movs r1, 0x8 - movs r2, 0 - movs r3, 0x1 - bl sub_810C228 - ldr r1, _080F42E8 @ =gUnknown_8410198 - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer - ldr r1, _080F42EC @ =gUnknown_84105B4 - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToWindowPixelBuffer -_080F42C2: - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x2 - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F42E4: .4byte gUnknown_840C610 -_080F42E8: .4byte gUnknown_8410198 -_080F42EC: .4byte gUnknown_84105B4 - thumb_func_end sub_80F41A4 - - thumb_func_start sub_80F42F0 -sub_80F42F0: @ 80F42F0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080F4314 - cmp r0, 0x1 - bgt _080F4306 - cmp r0, 0 - beq _080F4310 - b _080F4320 -_080F4306: - cmp r1, 0x2 - beq _080F4318 - cmp r1, 0x3 - beq _080F431C - b _080F4320 -_080F4310: - movs r0, 0x6 - b _080F4322 -_080F4314: - movs r0, 0x3 - b _080F4322 -_080F4318: - movs r0, 0x9 - b _080F4322 -_080F431C: - movs r0, 0x19 - b _080F4322 -_080F4320: - movs r0, 0 -_080F4322: - pop {r1} - bx r1 - thumb_func_end sub_80F42F0 - - thumb_func_start sub_80F4328 -sub_80F4328: @ 80F4328 - push {r4-r6,lr} - sub sp, 0x10 - ldr r1, _080F4344 @ =gUnknown_203AB40 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - adds r4, r1, 0 - cmp r0, 0x9 - bls _080F433A - b _080F4668 -_080F433A: - lsls r0, 2 - ldr r1, _080F4348 @ =_080F434C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F4344: .4byte gUnknown_203AB40 -_080F4348: .4byte _080F434C - .align 2, 0 -_080F434C: - .4byte _080F4374 - .4byte _080F44CC - .4byte _080F4504 - .4byte _080F4530 - .4byte _080F453A - .4byte _080F4558 - .4byte _080F4582 - .4byte _080F45D6 - .4byte _080F460E - .4byte _080F4638 -_080F4374: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r1, 0xC0 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - movs r0, 0x1 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080F44A8 @ =gUnknown_840C5A4 - movs r0, 0x1 - movs r2, 0x3 - bl InitBgsFromTemplates - movs r0, 0x80 - lsls r0, 4 - bl Alloc - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r6, _080F44AC @ =gUnknown_203AB40 - ldr r1, [r6] - movs r4, 0 - strh r4, [r1, 0xC] - strh r4, [r1, 0xE] - movs r2, 0x80 - lsls r2, 8 - movs r0, 0x50 - str r0, [sp] - movs r3, 0xC - ldrsh r0, [r1, r3] - str r0, [sp, 0x4] - movs r3, 0xC - ldrsh r0, [r1, r3] - str r0, [sp, 0x8] - str r4, [sp, 0xC] - movs r0, 0x2 - adds r1, r2, 0 - movs r3, 0x78 - bl SetBgAffine - ldr r1, _080F44B0 @ =gUnknown_8EAAB98 - movs r5, 0x80 - lsls r5, 6 - str r4, [sp] - movs r0, 0x1 - adds r2, r5, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, _080F44B4 @ =gUnknown_840C650 - str r4, [sp] - movs r0, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, _080F44B8 @ =gUnknown_8EAB30C - movs r2, 0xA0 - lsls r2, 3 - movs r4, 0x1 - str r4, [sp] - movs r0, 0x1 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, _080F44BC @ =gUnknown_840CA54 - movs r2, 0x80 - lsls r2, 3 - str r4, [sp] - movs r0, 0x2 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, [r6] - ldrb r0, [r0, 0x9] - lsls r0, 5 - ldr r1, _080F44C0 @ =gUnknown_8EAAB18 - adds r0, r1 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080F44C4 @ =gUnknown_840C630 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r6] - ldrb r0, [r0, 0x9] - bl sub_80F41A4 - ldr r0, _080F44C8 @ =sub_80F4190 - bl SetVBlankCallback - movs r0, 0x1 - bl EnableInterrupts - ldr r1, [r6] - b _080F4630 - .align 2, 0 -_080F44A8: .4byte gUnknown_840C5A4 -_080F44AC: .4byte gUnknown_203AB40 -_080F44B0: .4byte gUnknown_8EAAB98 -_080F44B4: .4byte gUnknown_840C650 -_080F44B8: .4byte gUnknown_8EAB30C -_080F44BC: .4byte gUnknown_840CA54 -_080F44C0: .4byte gUnknown_8EAAB18 -_080F44C4: .4byte gUnknown_840C630 -_080F44C8: .4byte sub_80F4190 -_080F44CC: - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _080F4500 @ =gUnknown_203AB40 - ldr r1, [r0] - b _080F4630 - .align 2, 0 -_080F4500: .4byte gUnknown_203AB40 -_080F4504: - movs r0, 0x2 - bl ShowBg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080F452C @ =gUnknown_203AB40 - ldr r1, [r0] - movs r0, 0x28 - strh r0, [r1, 0xC] - b _080F4630 - .align 2, 0 -_080F452C: .4byte gUnknown_203AB40 -_080F4530: - ldr r1, [r4] - ldrh r0, [r1, 0xC] - cmp r0, 0 - bne _080F45DE - b _080F4630 -_080F453A: - ldr r0, _080F4554 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080F4548 - b _080F4668 -_080F4548: - ldr r1, [r4] - movs r0, 0x8 - strh r0, [r1, 0xC] - movs r0, 0x1 - strh r0, [r1, 0xE] - b _080F4630 - .align 2, 0 -_080F4554: .4byte gPaletteFade -_080F4558: - ldr r1, [r4] - ldrh r0, [r1, 0xC] - cmp r0, 0 - bne _080F45DE - ldrh r0, [r1, 0xE] - cmp r0, 0x2 - bhi _080F4630 - lsls r0, 24 - lsrs r0, 24 - bl PutWindowTilemap - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r4] - movs r0, 0x4 - strh r0, [r1, 0xC] - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - b _080F4668 -_080F4582: - ldr r3, [r4] - ldrh r0, [r3, 0xC] - cmp r0, 0xFF - bhi _080F45B2 - adds r0, 0x10 - movs r1, 0 - strh r0, [r3, 0xC] - movs r2, 0x80 - lsls r2, 8 - movs r0, 0x50 - str r0, [sp] - movs r4, 0xC - ldrsh r0, [r3, r4] - str r0, [sp, 0x4] - movs r4, 0xC - ldrsh r0, [r3, r4] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - movs r0, 0x2 - adds r1, r2, 0 - movs r3, 0x78 - bl SetBgAffine - b _080F4668 -_080F45B2: - movs r2, 0x80 - lsls r2, 8 - movs r0, 0x50 - str r0, [sp] - adds r0, 0xB0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - movs r0, 0x2 - adds r1, r2, 0 - movs r3, 0x78 - bl SetBgAffine - ldr r1, [r4] - movs r0, 0x20 - strh r0, [r1, 0xC] - b _080F4630 -_080F45D6: - ldr r1, [r4] - ldrh r0, [r1, 0xC] - cmp r0, 0 - beq _080F45E4 -_080F45DE: - subs r0, 0x1 - strh r0, [r1, 0xC] - b _080F4668 -_080F45E4: - movs r0, 0x2 - bl HideBg - movs r0, 0x1 - bl ShowBg - ldr r0, [r4] - ldrb r0, [r0, 0x9] - bl sub_80F42F0 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 - ldr r1, [r4] - movs r0, 0x80 - strh r0, [r1, 0xC] - b _080F4630 -_080F460E: - ldr r2, [r4] - ldrh r0, [r2, 0xC] - adds r1, r0, 0 - cmp r1, 0 - beq _080F461E - subs r0, 0x1 - strh r0, [r2, 0xC] - b _080F4668 -_080F461E: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r4] -_080F4630: - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _080F4668 -_080F4638: - ldr r0, _080F4660 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080F4668 - bl FreeAllWindowBuffers - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - ldr r0, _080F4664 @ =gUnknown_203AB40 - ldr r0, [r0] - strb r4, [r0, 0x1] - movs r0, 0x1 - b _080F466A - .align 2, 0 -_080F4660: .4byte gPaletteFade -_080F4664: .4byte gUnknown_203AB40 -_080F4668: - movs r0, 0 -_080F466A: - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F4328 - - thumb_func_start sub_80F4674 -sub_80F4674: @ 80F4674 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _080F4690 @ =gUnknown_203AB40 - ldr r2, [r6] - ldrb r5, [r2, 0x1] - cmp r5, 0x1 - bne _080F4684 - b _080F4784 -_080F4684: - cmp r5, 0x1 - bgt _080F4694 - cmp r5, 0 - beq _080F46A0 - b _080F47EC - .align 2, 0 -_080F4690: .4byte gUnknown_203AB40 -_080F4694: - cmp r5, 0x2 - beq _080F478E - cmp r5, 0x3 - bne _080F469E - b _080F47D0 -_080F469E: - b _080F47EC -_080F46A0: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r1, 0xC0 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - movs r0, 0x1 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080F4778 @ =gUnknown_840C5A4 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r4, _080F477C @ =gUnknown_8410CDC - ldr r0, [r6] - ldrb r1, [r0, 0x9] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 6 - str r5, [sp] - movs r0, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, [r6] - ldrb r1, [r0, 0x9] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0x4 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 4 - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, [r6] - ldrb r1, [r0, 0x9] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, 0x8 - adds r0, r4 - ldr r0, [r0] - movs r2, 0x80 - lsls r2, 2 - movs r1, 0 - bl LoadPalette - ldr r0, _080F4780 @ =sub_80F4190 - bl SetVBlankCallback - movs r0, 0x1 - bl EnableInterrupts - ldr r1, [r6] - b _080F47C2 - .align 2, 0 -_080F4778: .4byte gUnknown_840C5A4 -_080F477C: .4byte gUnknown_8410CDC -_080F4780: .4byte sub_80F4190 -_080F4784: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [r6] - b _080F47C2 -_080F478E: - movs r0, 0 - bl ShowBg - ldr r0, [r6] - ldrb r1, [r0, 0x9] - cmp r1, 0 - beq _080F47AE - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - b _080F47BE -_080F47AE: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080F47BE: - ldr r0, _080F47CC @ =gUnknown_203AB40 - ldr r1, [r0] -_080F47C2: - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _080F47EC - .align 2, 0 -_080F47CC: .4byte gUnknown_203AB40 -_080F47D0: - ldr r0, _080F47E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080F47EC - strb r0, [r2, 0x1] - movs r0, 0x1 - b _080F47EE - .align 2, 0 -_080F47E8: .4byte gPaletteFade -_080F47EC: - movs r0, 0 -_080F47EE: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F4674 - - thumb_func_start sub_80F47F8 -sub_80F47F8: @ 80F47F8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080F481C @ =gTasks+0x8 - adds r3, r1, r0 - ldrb r0, [r3] - cmp r0, 0x1 - beq _080F4820 - cmp r0, 0x1 - ble _080F48C2 - cmp r0, 0x2 - beq _080F484C - cmp r0, 0x3 - beq _080F4896 - b _080F48C2 - .align 2, 0 -_080F481C: .4byte gTasks+0x8 -_080F4820: - ldr r4, _080F4848 @ =gSprites - ldrb r0, [r3, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r2, [r1, 0x20] - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0xD0 - beq _080F4890 - subs r0, r2, 0x1 - strh r0, [r1, 0x20] - ldrb r1, [r3, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - b _080F48BC - .align 2, 0 -_080F4848: .4byte gSprites -_080F484C: - ldr r0, _080F4888 @ =gUnknown_203AB40 - ldr r0, [r0] - ldrb r1, [r0, 0x1D] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F48C2 - ldr r4, _080F488C @ =gSprites - ldrb r0, [r3, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r2, [r1, 0x22] - movs r5, 0x22 - ldrsh r0, [r1, r5] - cmp r0, 0x50 - beq _080F4890 - subs r0, r2, 0x1 - strh r0, [r1, 0x22] - ldrb r1, [r3, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x1 - strh r1, [r0, 0x22] - b _080F48C2 - .align 2, 0 -_080F4888: .4byte gUnknown_203AB40 -_080F488C: .4byte gSprites -_080F4890: - movs r0, 0 - strb r0, [r3] - b _080F48C2 -_080F4896: - ldr r0, _080F48C8 @ =gUnknown_203AB40 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xF - bne _080F48C2 - ldr r2, _080F48CC @ =gSprites - ldrb r1, [r3, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] - ldrb r1, [r3, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_080F48BC: - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] -_080F48C2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F48C8: .4byte gUnknown_203AB40 -_080F48CC: .4byte gSprites - thumb_func_end sub_80F47F8 - - thumb_func_start sub_80F48D0 -sub_80F48D0: @ 80F48D0 - push {r4-r6,lr} - ldr r6, _080F4924 @ =gUnknown_203AB40 - ldr r1, [r6] - ldrb r0, [r1, 0x2] - cmp r0, 0xFF - beq _080F491E - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080F4928 @ =gTasks+0x8 - adds r4, r0 - ldrh r0, [r4, 0x2] - bl FreeSpriteTilesByTag - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080F492C @ =gSprites - adds r0, r5 - bl DestroySprite - ldrh r0, [r4, 0x8] - bl FreeSpriteTilesByTag - ldrb r1, [r4, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - ldr r0, [r6] - ldrb r0, [r0, 0x2] - bl DestroyTask - ldr r1, [r6] - movs r0, 0xFF - strb r0, [r1, 0x2] -_080F491E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F4924: .4byte gUnknown_203AB40 -_080F4928: .4byte gTasks+0x8 -_080F492C: .4byte gSprites - thumb_func_end sub_80F48D0 - - thumb_func_start sub_80F4930 -sub_80F4930: @ 80F4930 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _080F4988 @ =gUnknown_203AB40 - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0xFF - beq _080F494A - b _080F4BDE -_080F494A: - ldr r0, _080F498C @ =sub_80F47F8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _080F4990 @ =gTasks+0x8 - adds r6, r1, r2 - ldr r1, [r4] - strb r0, [r1, 0x2] - ldr r1, _080F4994 @ =gUnknown_841431C - lsls r2, r7, 1 - adds r0, r2, r7 - lsls r0, 1 - adds r1, 0x4 - adds r0, r1 - ldrh r0, [r0] - mov r8, r2 - cmp r0, 0x1 - beq _080F4998 - cmp r0, 0x1 - ble _080F4980 - cmp r0, 0x2 - beq _080F49A2 -_080F4980: - movs r4, 0xD0 - movs r0, 0x50 - mov r9, r0 - b _080F49A8 - .align 2, 0 -_080F4988: .4byte gUnknown_203AB40 -_080F498C: .4byte sub_80F47F8 -_080F4990: .4byte gTasks+0x8 -_080F4994: .4byte gUnknown_841431C -_080F4998: - movs r4, 0x88 - lsls r4, 1 - movs r2, 0x50 - mov r9, r2 - b _080F49A8 -_080F49A2: - movs r4, 0xD0 - movs r3, 0xA0 - mov r9, r3 -_080F49A8: - ldr r2, _080F49D0 @ =gUnknown_841431C - mov r5, r8 - adds r1, r5, r7 - lsls r1, 1 - adds r0, r2, 0x4 - adds r0, r1, r0 - ldrh r0, [r0] - strb r0, [r6] - movs r0, 0x80 - lsls r0, 6 - strh r0, [r6, 0x2] - ldr r0, _080F49D4 @ =0x0000ffff - strh r0, [r6, 0x4] - adds r1, r2 - ldrh r0, [r1] - cmp r0, 0 - beq _080F49D8 - cmp r0, 0x1 - beq _080F4A4C - b _080F4A6C - .align 2, 0 -_080F49D0: .4byte gUnknown_841431C -_080F49D4: .4byte 0x0000ffff -_080F49D8: - ldr r0, _080F4A0C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080F4A20 - ldr r0, _080F4A10 @ =gUnknown_8410E30 - str r0, [sp, 0x18] - ldr r1, _080F4A14 @ =0xffff0000 - add r0, sp, 0x18 - ldr r3, [r0, 0x4] - ands r3, r1 - movs r1, 0xC0 - lsls r1, 6 - orrs r3, r1 - str r3, [r0, 0x4] - ldrh r2, [r6, 0x2] - lsls r2, 16 - ldr r1, _080F4A18 @ =0x0000ffff - ands r1, r3 - orrs r1, r2 - str r1, [r0, 0x4] - bl LoadCompressedSpriteSheet - ldr r0, _080F4A1C @ =gUnknown_8410E10 - b _080F4A36 - .align 2, 0 -_080F4A0C: .4byte gSaveBlock2Ptr -_080F4A10: .4byte gUnknown_8410E30 -_080F4A14: .4byte 0xffff0000 -_080F4A18: .4byte 0x0000ffff -_080F4A1C: .4byte gUnknown_8410E10 -_080F4A20: - ldr r0, _080F4A44 @ =gUnknown_8411C18 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x2] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4A48 @ =gUnknown_8411BF8 -_080F4A36: - movs r1, 0xF8 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - b _080F4A6C - .align 2, 0 -_080F4A44: .4byte gUnknown_8411C18 -_080F4A48: .4byte gUnknown_8411BF8 -_080F4A4C: - ldr r0, _080F4AD8 @ =gUnknown_84129C0 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x2] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4ADC @ =gUnknown_84129A0 - movs r1, 0xF8 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette -_080F4A6C: - mov r1, sp - ldr r0, _080F4AE0 @ =gUnknown_8414364 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - mov r1, sp - ldrh r0, [r6, 0x2] - movs r5, 0 - strh r0, [r1] - lsls r4, 16 - asrs r1, r4, 16 - mov r2, r9 - mov r0, sp - movs r3, 0 - bl CreateSprite - strb r0, [r6, 0x1] - ldr r3, _080F4AE4 @ =gSprites - ldrb r1, [r6, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0x5] - movs r2, 0xF0 - orrs r1, r2 - strb r1, [r0, 0x5] - ldrb r1, [r6, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x43 - strb r5, [r0] - ldr r0, _080F4AE8 @ =0x00002001 - strh r0, [r6, 0x8] - ldr r0, _080F4AEC @ =0x0000ffff - strh r0, [r6, 0xA] - ldr r1, _080F4AF0 @ =gUnknown_841431C - mov r2, r8 - adds r0, r2, r7 - lsls r0, 1 - adds r1, 0x2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F4B20 - cmp r0, 0x1 - bgt _080F4AF4 - cmp r0, 0 - beq _080F4AFE - b _080F4BA0 - .align 2, 0 -_080F4AD8: .4byte gUnknown_84129C0 -_080F4ADC: .4byte gUnknown_84129A0 -_080F4AE0: .4byte gUnknown_8414364 -_080F4AE4: .4byte gSprites -_080F4AE8: .4byte 0x00002001 -_080F4AEC: .4byte 0x0000ffff -_080F4AF0: .4byte gUnknown_841431C -_080F4AF4: - cmp r0, 0x2 - beq _080F4B54 - cmp r0, 0x3 - beq _080F4B74 - b _080F4BA0 -_080F4AFE: - ldr r0, _080F4B18 @ =gUnknown_8413338 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x8] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4B1C @ =gUnknown_8413318 - b _080F4B8A - .align 2, 0 -_080F4B18: .4byte gUnknown_8413338 -_080F4B1C: .4byte gUnknown_8413318 -_080F4B20: - ldr r0, _080F4B48 @ =gUnknown_8413338 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x8] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4B4C @ =gUnknown_8413318 - movs r1, 0xF0 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - mov r1, sp - ldr r0, _080F4B50 @ =gUnknown_84143D0 - b _080F4B98 - .align 2, 0 -_080F4B48: .4byte gUnknown_8413338 -_080F4B4C: .4byte gUnknown_8413318 -_080F4B50: .4byte gUnknown_84143D0 -_080F4B54: - ldr r0, _080F4B6C @ =gUnknown_8413874 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x8] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4B70 @ =gUnknown_8413854 - b _080F4B8A - .align 2, 0 -_080F4B6C: .4byte gUnknown_8413874 -_080F4B70: .4byte gUnknown_8413854 -_080F4B74: - ldr r0, _080F4BEC @ =gUnknown_8413DB8 - str r0, [sp, 0x18] - add r0, sp, 0x18 - movs r1, 0xC0 - lsls r1, 6 - strh r1, [r0, 0x4] - ldrh r1, [r6, 0x8] - strh r1, [r0, 0x6] - bl LoadCompressedSpriteSheet - ldr r0, _080F4BF0 @ =gUnknown_8413D98 -_080F4B8A: - movs r1, 0xF0 - lsls r1, 1 - movs r2, 0x20 - bl LoadPalette - mov r1, sp - ldr r0, _080F4BF4 @ =gUnknown_84143B8 -_080F4B98: - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} -_080F4BA0: - mov r1, sp - ldrh r0, [r6, 0x8] - strh r0, [r1] - asrs r1, r4, 16 - mov r2, r9 - adds r2, 0x26 - mov r0, sp - movs r3, 0 - bl CreateSprite - strb r0, [r6, 0x6] - ldr r3, _080F4BF8 @ =gSprites - ldrb r1, [r6, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x5] - movs r1, 0xF - ands r1, r2 - movs r2, 0xE0 - orrs r1, r2 - strb r1, [r0, 0x5] - ldrb r1, [r6, 0x6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x43 - movs r1, 0x1 - strb r1, [r0] -_080F4BDE: - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F4BEC: .4byte gUnknown_8413DB8 -_080F4BF0: .4byte gUnknown_8413D98 -_080F4BF4: .4byte gUnknown_84143B8 -_080F4BF8: .4byte gSprites - thumb_func_end sub_80F4930 - - .align 2, 0 @ Don't pad with nop. diff --git a/baserom.ips b/baserom.ips index c4f49efb2d541ef90472ba6b9ec00fb93cdb628f..6450180676ffe8b84993159db60340408c454a39 100644 GIT binary patch delta 135 zcmaE~tM<^;>V_7^7N!>F7M2#)7Pc1l7LFFq7OocV7M?Ao{ delta 34649 zcmaI8349ZE`ak}B@=2TYpqWVv<>--2fGVg>I|V#xN(T{98jhhLC`D+h;!0bD!Bv>3 zbP4Nz*SG>D0s<>uLBL}@AVmv`ZtVcAy2}Ec9)hqUolXyK+W9{zy8HdU{;$`s(@7?i zna}xrp7;AXCI{C)`{TZq{?%l)X*FGKULCVKcC}@-b#>h8_|*xk6aO|~W}PXp`qNo; z10IW&bpUvV1?U@%2MMuOYrGX8J|;ds{yu;>nm8c-JuvXA{=fg<_c4j_|F7@k&GCu< zukYi`v5EZ`RR23?K$gsa1MUXUNp$lP!|40%P@fh(0>eE{&u`u0eM5gom)+UA%h1WT zd_ATAGFfj4eqngZ8h)pz{(1uM!7IFPfAI3QYR^V}Yf$!B3@jmEH#)QRBE8se>Aynn zD6!~UAM3x%&_6ZwFZ6G8%YkvaMc;$_Q7q)fc3`QVjz?p#5S{ox-+tGD+KPeOu)63K z@&~Iw__oWV=TCd;z%HZn+IQS{1$vpjFDPRfFB|ysHtv@0=c>sY^j5jE`mG;y%lj64 z<_`yq(+7JZdRdp$U9Xd_30Pit^vZl}$fq8Qo~^eSddrzwtTn$gRqt<(@q^rht&i5* zS)?D;%Zw{R^kc0YTyo_Q9(`e4jcfg)Gc(%M&ddWHHyVkT_uoXSQ~!#M`0#_ChoX(@ znQhcsF6^zfY?;(xxiC`SuP-rb=a-ZWg&Ch2M8ZyVpOl)yMxqN64KoN1N2yg5B(r@BpXCZ#gI*tUic$y^Ld0 zrq4&2%J09ceEv^I-OOV`A0maf&f)1G}j2l{K%k6x26 zeAa)}H&H44^gWxtwXq0`HD>9P3_U-Xuj54GX6VoMm#WU!Q%m-sWXaLf(L(S5=O16) z-&~DOQRB<~H{gl>t*8IseZqhl@&T$}2`8n>Kui?OF@%g7eao!}^$1NzeldH_D=o{VE;8$ZVsHA2XY_O+(`Ud; zk&xd%``k*yqz|ip|EI)(RtG^n$M_SgYu};H>V^%}hC}0N(Cwf?ZPQL@*dK|6Baw*T z%?^Nu@Br8a5j7M(8HwzJ{ky`E{o(M*fxEVZg15&3-Gn2&>tr14tKSR*4o5br`Xl9J zfNodxZ7_V-37{Z1?DI49B*6aq0btp$C~z34p6mH413=MBqVpv;kX>&=RoG2;eG9Sk zAQnW}HBW4)7eTC_Cw@Fn6q%1jQ702;iXxm;o7IyIEo#b1Y%mRC701ny0T8TlQ_$dW zL}^iLW~iXnOi|Ut^=boHf$j&Y9#@o`)Xm^OLS}SqK`q<@^l&5&B5OeQM3kmDVq!8- zwFC)qHSC{zs3DRxS8RyDM_vk%{k1@u0;LJykmA8^ZwB#DQ`}Yt#tD+rFhH6f)JsN9u6^$zdQ0r{L9bp?Ww~e;pbf z-5$z($qFzOLT62n_`ifN8tPe>gOby|WUPatP*SX!C_v>y9{T)s9JYViUtlPC^m>U* z?bT3^7c8U;8>ZC4Qw*I5!N^2NX_zZ`Xx@U6f>6MNi5K#Ce5)-XjoF35%$dAUIumXI zS~!#Sgjj(QYj8qNg7`5+;>1IdO*m~ek(ppUt{zqf!Eu!g+z)HYY22q#xuIkncxg_) zNj@%<+krOV8Q1=Lpp)jo*COnKL$7$~&p_Yh3qhC|dR3UY^$JX$xcBGDGmpOpb0%)BiSr(*F~vbm8c zLla@w%$cy0`FJ%w24W~gb}Etk;)qL)&_72aO-Xwrku9cYAhw*;Pv6YY!)~h70iDwh zw_+;?H@z^am4w`}tu$Q@(iCw{jJSSl5MDSEM@Bs_t_{}6DFVAz*{ zmIPQALqGV8C4(U{j6A<@7#<8A#bl?Np(sDwgl^H z!Vpw;nC_}GO$i=f#O#eg&AX9E&Av#DA7rg25~{1I1gN`3g1Tp=2Bxl3${8+6&q|dD zKtPhek+OhFqqurVItY{ln&tOq9*+ZY^OgZ=uzA1fE3(2tLkcJ#ZVrVGCdL7*@2lGy z(&}cu4g)vC{hMQQ<2G}lxThoO&;K2$k^v1Ypdc_7M}qu(!1TLzUyZqV`*zmcI4sOI zlDq`PqcC(|0()RzV%nK+zwKl$*u3#7q&DmdTZ+ReTNuia1F`SM{2YEQ91dHiO*;Xx zyBsufGK^BaZ%d?7+B=$LC5)D&eL%ywJQ4;+MrW}JI+3!nNETOF$#GmTv#^qp2UX%9 z#Fkhft0@k$ln_|64l2=g&K-2(f};`cV2y)r`$tEUW%lNh1A+BzW_G!FLhjKd|VLHdM2gh=d2-zeF8wohzsgCmdnuFy(xj{t#k4anEzm>S-J3kR|7$eJz+<1Lgy6TH8wO zC6r0VL5xJ=6s2aEn?}Mwtv*G066j)I4MZ02WDl@xgxNW4CwX;ecxO01{8l*3kSDQPsDW=m+5T;VvfY%hOL;FrZ74#}QURfNfI^k`PByFU zu6&(*;U;mqy}AOsBnJ_v$%y^XfK4CVurutjo4(%l8bHIo&FZfDxQG=|7^Odwh@-PJ zp%-etZD2qdMqc?K0pR}k5OY2O`aayAnAog#>?cbZs;Y!-R2vXyJT!)dbe3foZt~Fk zB9Iu_475HD$o{4#*gx-Z=L?Fg?}knLPrz2#i8Z<@?Dx|J^})sUp)YXaenj;AZTr{u z`Al_#=~;xsa2OhPemie}cpifKx1zWc(LAYML?DlKP*WJDe+(26Nv!eG1cVQ!4%o6s zo53^;X2r3ve;6W)$}aSKanNK|Z9LrQXa5jl*)5@T7G4Q8&ig*D@jA3@e&u}g<}J#- z$SrC%g<|i+CA;!nv0cwAMtnBQP1uAnDWQy;rfA!!O&>ri?d zm_$UBptogj{6hfmGE{`+;vfiOHy(nsK=(fS5LxJHnkYn3(=G~#gr^Wh1(?V`B_gw% zVSV!i@C==?ZvZ?sBhus>`_W1GdhCqI*H0FH+}l~?CTys4i(@@=>D?SUA}EK+Q^H<& zaX-Ac9^#SO%$&l`#-i^=(2T2CtWzQ%s!xfV_!Yt|O5tXhICJMFLD;!3Nf16pxzu0y z=oes*A67}80zrm8Ru9zleXWPS9}dqsOo|jQHA|6`<+L0%w*K&!U%va$#2^=rj`n^$ zGgnR(g$Vq+o;=CmKwBq{S$F_w+Qga2F9#hMGxKX@jCsb_3cqmBiLoDpa=<4ZP@bFt z2NY$Nl6GJ$q_GReD(sVIB4F_`UnVCrw8?J4kvhcCEpAE{&P5@KnS%5n%6S+XEATv@ z=SM{?)`E%r0w5P6T>wGgCl==M6Kf%rp@n1k(5r}b$QFKXIS!8F`$?I&QxIm}f2c5Z z=43E$1^RjwB-Bk7CMN$i0-HgJYzZBz!3h?XnuvHvQA{&MrD@_!*#7S5aM+8}Ot-|P zFx0(wC$#_xZ;As)_%#RJ5`IlSu0Xi{_~Cu^$5n5{K{wO6brA?UYU&|Y3Dwlki&2z$ zqB3#V!^p|zl7;iciFxKJe%fF<>!G}LJU?iV;$HYQ(1c-ME6T9gK?js!sK?04G)Vj4 zfKQ3kpEoO!VNa$3Wg}3(;DgA41t07q2NrDKcOdOcx>TO<5sn$aEaIQ_t|@s|>^rk! zUYhk$GWo?>#x60}4=anjEs5PO*|n~ zP;*4_@Fp}Zl$~+V6oC^1L~-3@)I%3u7ef~|ukVAp&Fhcsy$<_5^_H5NeGU8G+h-nB zqp)9*vMCEW60*nOYiuBJ`o+055ki!7TWJ0p?3k@!$3c-)Z{9Q<_{ z!n^i|PrSE347aoXKV@vsdnrA0Zj;k!V3+eC}DT|Z=lLeMa?_i`jQMrjlGLI0XycVTj<`#w?l#@~q)=ti3 zlipPaz{&7{6KZ4^Y)_Uq#Uz$&ie1Wq zccg^W@B0A!VcU9Gr9@6nS(zm+;U2_?wN_Biie6Tb?lB1mg-0&Dj+1 z-ee1f;$HFO%{I7AkO^K< zPcA2Vn$GF=FZ^jSdh&1GLHhy41_B$QitG(}1EEkA7QZnB-t{4Gl{FN?C1}RQIW&a4 zdk90ZDQg|GL$D(hnhk3q5D)`@I&`QC4%N$x|Ncp-IGfCSP7 z5=`=gsXh?+OpyYpd89R=P_bm$7!sGQA;rubb{-d+!^DN^Hp3#tx;BJX+@tdBz*=j- z3jw%X6}Y+MT*kk29_AXAY7k#rUnO=G&&c0y&tutHkyTTxbAW=<{kEtjCGnRrG}+c zRstl%9LMHzxAQzB6DAhYC*-vQ+nCN4BsUg-;5=5C_rftAk^{$Fx%N~ZoZK-sg_9aV zO(*H?T83KCNZjd-6^$xbUWChPdVBLRvfBF-f~aK`&ZJy^);fjamnKV5{J z>GMTVDn{_+mllh>tMXovIhC7dXV7<4St8kKknnuY^Sqr;mLaVRfl?$=E-#A9#=%gJ z%w%59Yp9RtM1 zak8l8B()2&cbAs4hYN=|KQ3jC#68AO^1`Y&{6uB zXui7OG4%6f1_BoXkWB-#E^y)q$1gFiG$$uQ86=@smP5)Qag`Qq(E(>YjNrLkJ{K%= zlA$Aq`3pRgTMpKEC~(>tS2ED0D1kgA@-Plxxsnx?aFRg-b{lbLb1__ZCf7yw8j$o0 zjCr4sO2$6r>CUp8hd+Z;47s2WabsPncY`#2b97lYY!#d_1rA9nfcSFs<Z3cp40; z#G-HVppN{%F4*{WwE=EWa>ym&E~d}XkB)|21No%bZbY@Fpep|x}2tFXPW{6YyF=B0Wvu7_Zn2_v!wv) zzr?^Y@Ukv2%|604xz7*^eP+Li% z&@(_$`6$ZVH8oF)F=CAv+6#m0V3>PvwcFvKe@7pbpX?4j7YKwDDRxaj2}#UdBs1Ve zCAk8gMQtB&#H@vNfjp2mMm10qRt_)Y^3g0ZzvTQjNTT088Rh0Tbl&b4$q-w=nBQ8^9WIiw9RR|=@ z)&z=~;xz#iPI91z1lHCmfsLP$&ublXJP1`Q0^*9;W0rDMRm0(J@GSFCsRFP;*gn*a zn*M{E%qK`iAuHOWX#+eIy=c$?#qA8u0H(2BYtuCBK{M*@c5SyG;!bG0<=u^17>4fN zje1^F{qDiL&SkJeS=4H6nyT(Tp~k7<_GX4QtHcG`n!sSTLP`z8O)G)E4d@P~ta+uH z8m=It*5Zx%V%30jOqEzrwMLa?(^)jSAX!3;(N zeL{AinE_U2*NGDhJrQQp;Y2vsbwX>_nBC{Flc`$x9HdI&-?NAvAZ4ZI@OSNgR8I^APSRE#W7$>ESfN!^q_(d_i9DOdR;=Vq9G8V! z4E^(d))fWtV=FaiW2LqXNjmGu;E2NWu8QeI9Ff)B+}udA-02#5#6Da*s~z(LSt(U& z12~RpTa}K!YjnFoqiT^MT_u4277H0?fn(&p2g_Z(Oc>(W=>>i|IR}SvB|I+hsD2Qc z@`PO11Q0lGxZvb?MsOB@AymE?fZ48bfr(t@Z2YcL7@oUSfC+p-ir^BuV+xXm?#tj} z;Z7fVAm9i;oS6dFyjn6Jjn@;hbNf&UvbK*x@OAQ+;S!)sxd|hkkhoPGm|!Te!4Q1E z$Mqo$NrnuD@-xuLb=#dx49w<}5j)vzK4o?$k4lKk3Iyz272M?HX55s;@iUQ+V5Li$ zGBl;^QWVrI@OyM4EVVmxmvZ)RKt?-`<14%0>i!goi4$Vced@?W-(#2Ew4E(-kX+tV zKyJ+uIJPhau`fA=t0+i;N`oCP83hR5mkNXep(_9rgsw_KNH)-IkjEAd7X&~2Qy9lf z!qekSOQoD#ULYd{g5eY)M-aT^{t3tjB(h1)BeR9Yh3{K(GTDNOF6ZY3tG2b0PU3pu zrflA@8M%D2Gv80>CDw&fz0^Ztb}ruOdI26m&%Mh|Ty}=zohHV~jmw2(`?%y}drr>S z z2kG?COD_V+wpB`CCogyYC3^aL^yS7@LL{mD(!{Q4oWn@5zzT!D*(J}2eu-;=0o(t! zby|rRk*WH9>@S9Vo(zErV`>Zyrh(TghQ#%dGIxCll+ANQWpiM*za$MkMs@Sh{0Z&- zSgiUqGS@yAT^PjYb3ZPcW6%Pc19##+C!~CgSR5fyERM_#c;)=nSS`kcpaeZcA|gE^ z91WG!1?7^mO$fa;sUduI%+dcDZRr2%4#o#U??l1VT1>3#0b;Q|-VmDHOz8GdJ!5vq z1BrwJuvb}&;P`AYgjQHKZeAM@(H;sMLSUS|+D%1SoGrqY`WnCEwogk9L!37sF4QQ8 z=3#6B6m(jly>_S;0pV-O_;gv72y+irDfROL82_0YKp&K-{1aE_k~$`TBTUA258PO{ z3E0h!HS@@6drfFIBgJfXOj?_QL|TQsX)yfNm7cJ7sGRF(Vpz;gdChz*}($Zk@ml3n2w&EXSx<|Z^r3A#>qqlW{N1KQi$Rn6Sotl~IX zurhU(wn|;q=BCN2`Zl=IS@K7c#Dv3ba62-e-O$#YzP&MhJNn*!UnYgmHD{ElAY))M z9Byt4r<`bSBQ3k&xm}GT)Rl0TB*A^nV7uE$p%{YeE9(ycZ1Db($ zqYWyKY1*m^RlTXP4YJaKwyWuk+I9?VlG@e`scJ@Z>e*G=!x?a&28Ad&kwz4*47FKn zZp;ALx>O@?!#LAl5QYyj7R|8?CV{yTu2g*S$~S5s*}%}8EzUA?-rvUMtN{lj5ff}b z5oY{kDuc!?8n|#`d%t-rnXg;L9B$h^lrG5Ffi=?m)pj~b4d*sD(j`DOq)+KVGB=}=IGt+yDqywd zmF!t<6-XjI%W6i6~YI<`Jx9yClldrLLm>9JQP`$ zOVym5C5z>9vxt|S0j5(W7<6Q8EIKOQ!(1l}QSeAa-WH&XFBtwjKjWsD${c=777WQk zzfZC~pXWQX`8$7KEkbPrN(>9cJVBrG}K7R45oO zWL~L3BH5$@L5xwHW#lop{Mks`zCOLUE<@5X`(7rUNpL?R#f}r@ zaXjgPk0d8l7FaLwOS8aqKW7f+E;ao-m3kO(;$rH|bulT%aJ!u^WUmkB(gZG-yal2K<5n%d%8w4vdN$2N{H(`k^I1!SvOAik3|3B zwk*>Wrlj-28aFYrSz>$+YW6R4Zd}zsqCO4`(nn+d|JnLe{rs5KXTNdoZ2y}~4BHJC zaxHpJ{$X&Sqkjpq(HjM=N$9;javgE?`Vp`lRg|uyhZS(Ps0!P5Sn)e@TG5_8qA1Ma zXs%R~hOh1Hk?Yy)k!&zn?Ys??4%E-rjU+g4fMG*-Wp1+yz37r`&ummn)V2af{%(RG zn4M%@XtJGM7t&vU-c1BE(zq*5C~yPK#7=ZVydRHp0Fn{9bxhcDvrZN|ZD3?}VnVUu zv>C>2-9~(e*3}IZ`8k)tySnxM;qViel|x^-o1)2LK=g#)I5$ zL=_uS@lN3E*lQ>PuG0thBJzaU5S}m#K(BN%(K+5mNCb4h&FcZW$U{9pcFYH{Ykaq8 zppeS*J^8uwg&q$2gr4pmLCA)#dj+mbH1MJe=+2*C>NAP+eZEB+PeXBp0nf)-ZUJdJ1W_ z=0JDG_i7Kv@v_ikq8&V{6ztXc@qD-1iwAvbev#TSz6gqT_{>Fnd^pojyk&dBcNNGJ zZ(YThr5V%fY!2F)6z!mcusnO$K{mUbXog{++2m;h`lEV}@3t;5mSh`K^@|-=P4DP~ zPun}r4^WzVF|N;ikxA|;l_bNe$$}uGlVr7*7WjOV$w(!n)A9 zlxM0#Fv#boWxg0Al-U+4r=36@IU6v>ebJumgNwPWa#Yh4KjF_S=Z_pwGEALE&a+(# z;Dt(lOJ|eXu3CHhqKOKnu#wGme*oNrRQ&a1sGq*u*U4I|V1 zw+~q<8He4q^=UGCvga9+Ev#EANt3IQa4rPeg^a;PG&^f!JFDN1N2!jyAPBp{u2x<+?Nj*Op<#Z0Nd}@8KMLvmppw zMOI-)mq5`i6SnRNhhKx(*9?P0`aL=k)vXm>#C1W{Fk6te1f4ZPsNxgVuzf+^1}n%9QKtz^7cFyiRG7mrOFf z#g6i^BQe8_Oq*0v7EE!F4U>JL$*5k0MZR^9dz0Zxm(SO8)F)uU!WBi4eHSm{;*oKc z#Vh0i)63a$oT6OEaA-ErlIsIs_E1&WaTTWTA^A9BxfmqfI?M+7n6_|7@5Ouc8}7@f z555&vZ=;6?VeV>dqK=6Ycd6JbMeXQo>P^u!m7(YcM7kX1%?7xn5zeX?>Fg^T;K(zT3ENHjkZ-sS^2&S13H4+Xh8b){3+w(8`?*WBA zd$|QufL3miNzGK~u zR+d3VYVF#y9pumC)5UxDh zaI|XW30e{&99)N1<-FFak>AtHetY7y%70R?9IAwll>r@^Km@XQb7C zwOLi@(T-;2Xp3_w83awLdL8w`dC+=Qr76>?KyNauWM;C)O~z4&L-muE_DtZuQ#&%g zQ{~nwt}PUjeI@4LyCV(_2F@w;CY} zfh8r>gASr16oYl6!moM0VcqmL>^C@VkilI6tmb~m&vn{aEQhzV9O4X`7o0uU#eto7 zajeX9-2I)9)a{IFuK8W(kQ<*Vp%>l1&jgx{W2kq2h~X~23kgMTZigL-Tz953H(zHv zk=A5)@}PH_klz?aGxQjYrWxc@Bfs0QBcw63d%lO3T8)lo)sbe*7q@{)WJoE(me1ky zF?81Nmdj-ZERm!urBc~NR6-jjN6XX^|XP<|zc+1o8$si9Q-M~<(2irUuhknrp z0d(JFl;kBokV^CUMSj$wd`hWc2r#opP3dmwE3z29%7gc^E*#M802wz+6v%`eQGDba-af5axz2VUCB1A{i>eB=9D0>LweLuK3oc8wZ&hz| zJIKAw>elua)l)<)zI8s|hUx)`aFS^*LO6OIN+bs*T#;ZDg%Te3Z3w}r4NP{BV3tIR z6Q>s4WqEd=@3hnBGY!{#z7&@DSU91{pbARn7lY8_knc zDMQ#vesV7hzL1bISqR_@(b*Lar-%eO?Ug76pw`fp=vyd+9S%*F zZQ<8?dTimVMLnJF?#)q?5ddXwyeW6pMduKjOzasBC)FjSqVGu0JjLu1`Xk zRGvW>vC_yDTZ~h6GBlCO7qJeJ@#jn%YrL%S`vPSq*sq|4fa6 zzM@4wqHPrft#9jJUivcmBtt{8Z^LBnZPTCUg;-aJq4X=Hf9|+ zZcT1#YC62&aF)Tk)ZQ*|&}r(;yp8r=S2bGs3o=X77>Wq5UU^t2tvOkyH)0F*OcoU| z%c7aYWjaT3U8cTF=0(HuBGM79uT3>NI{j9;DwAziS?4LLI=PPaUZ}FJD@Wgvmw-LH zQ|)727;5!s8V7fbHtcamHoS^YO^Q4Jz}{{w35A&7nLpLab;yN5C3~+Rqro7p(b5bU z|I<9^r)q9CjF$6509y9m;wDM`m{bE&9=kw z>%MT%CNdYcnLq4wMi;`V!7ZJSdk8)`r%#WXt+(Hp1)VI)ANB_LuBJ>PEu?7(K7)0h zWVIk4F*;kK7E?FNb{i~fYhbb**+9O~Y=#z--N|)ukcnnSs$t|nLPPgAi_yFfG z)gNr2nbqF+l42~u|7HhdS{q1atCpmv^e4H?@1b}Cy_byzQ!_vbnz8p5swKel>R6ut zfoFLBd!VP9)g%VfY7oFNkc#s|asdfOJai&aybx{wwEw}`0&BDT)ot$+jqFs_=|1$O z4o9_lD~BG`2f0>F<$^9xEYRsbK=`Mnv55cjqd>Q1`u#+V1t0fl>5H|Q-cp}9f*Dgz z-hqK*$S59Sc^{CmeBo)H&n1KRdT1fU0?Q06OoDjyEyY6NX-uj$NE*a;x_%qX{>S`s zZU=kPs127?pHrx5XGDY_?W}Y7dxrH&>c)qYX+HZVrjDO>Pp5Iq*iffjM4oxW6;ndA{M1*ajFp;HTmMR3`2W~wmrbh4ej%}?O8Cdj9g z(0Mn{4D@ur9hR&?-^Ho_okl--sztXikkB4rA8F{P4?jhxI0vsciAg}8*6a^^DM@_< z%t@_3faCc>4M{Bi|70A<>Ky%FaX655A^A&&rrNM69@>fqCT*DThRi5>dS!8KX7bC- z7}Y(voIJuNv-uv&Q(!^mMY2wVNK$5<@srcOB=i!T0h{j(ioWSa(f&{#_?l+iT(D)P1s^(lWTB}5=#Ygi?~{S`r#!T) zKfs9UG1^5h=9k$2^E@V3J*6ipVK5LJ3Xj@4FzU`~R#V$m)j^Z=vDF0&Z4TKVUH2lI zlpMt7;u^zsgs8&(P=X$^??&YE-=p7rXd%x#2xGw~6i)kzFA1|IPz$_-oB)R)7XR7J zGIT!o-$Bl`4R39BTcEWyO?wJ_s(O!0RUZT%Q$u(p=H@)q0{3_`eKANcftz0H zK7u0iJOI+NeBY8K<wp6!ovqJ!@ZQ_ zwMR<8wtNJxk9ifv0z2131ux255;ji|l8T~|aJpbFV~Mu$Z1kmb3Tl6oS8mxxt}xFc znILT|$U^O@g6adPCXl}h!c?G%t(qV(?qH@Mxbx66prtgbnV-?D4&eDxZQ4l&m-i~qcm!!-{2O6G zhP-g(0X`g2TyN~d1my^(1~c>r4E)fjK6Y46L*iKBbP1Q4eEV3RA63;Ebn;J3LWO)9 z78c&d^NW9)p1+_-V~t!4np~)7F1u}*>Sx0L1|pw+W$}&Ga$|1%t5bO1SMtW4JkuK9 ziPiCPYs4Dip$6#ZJNd!TdZ%+K_i5f&iiux{Pe7oDke^nFs)V6m@iWNmm{Oj95+6Ul z+f7Tte#}beBlQpPxgXWP(49>AMa*nr1Ey4A)s8$$|bY(^8^_!QzVBJ4eMAZZdB_(6m zXO8&hrzDK6wT?MTUb6hp!inQg@it%UsqsA%E^n=F`zswJzh3me)4I`1qv^#@Jal{6rlp3=Ah=+1Ym`qRCBzb52K*@uV;j{owqcaO zU{Z7%-GYylC%-T2Sr_z7e`c$9YisQuX82H`Q}*anjH^JmrAg z))Ltf7ZU>siE+`pU~BcwpC&m+{wg^6{gvlO!`)Fy`t4)?yAjNThP zJ;QmYcwZczi^p>b-vKe>=S2KG06!<;=NSBK!_OG{0ATSZEYuW>C+&DL8PBEQMHc)# z5VHpd;hu{7VBC@75i6b_g4Yej>xSXIQ3#L2b7@luq~o43g^+msoQc;vaChR)Meof6 zl7Q!L#`|2j4@b882sYQ0h$lzj1vlY768Eed7n?DYz>E@xDPE@jZpL6u{oOTZB-*TS z_U;SL%qes4v^m2Mp1u3ek9HL7m;d?17b7mG$=N4HM!jwB8!-Fu=nRWoOFTgThJ#ZZ z0SNBHgZK90Q>Xia5PCO^PbdTgz>rU*UI0wYseb^Kyi!7mqC8;qeDy%^z7`nepf>-1 zmjC4&k`;YT*@J}*Uk4sU#{%?s{_U1%-4+M(-gH*zF?bl>og(MDx`kYD^{}~xMFwVR z88)F{#~<~ScQD1_RA)m6MpMnU4)wuKm6hA{B_Cw}w}O914*^GFx2p$h;wE5d%w;3l zJqGATH?cdo9+I59@!fNaVB5QkMgP9}r2tn&A3Tn%5Au6_dTya?z;M31{WPogn(zHV zReeA&J^(6v@qu);NHI0Gf2I7;XX0AKsqmm~Z-s^^P z-DkkX<;544i_0#>EyJKK&`X*rZGIozYT)|%m8D$&Z*|yz9iPqseEOh7+~%gUytK3w zX3ff-wLJRlqjbSfmsl}wg4Xp#N&45i1cqKhN@%@gpic}-*X1R@6&78K(XG$a;oKkX zMHO?(@X2Msl|s_&B|y=0N9TZEJmCVI6>T6o=tWfR7eFj6wH1?6(I%CaUeu@kR?dym z@D)?gdJ0M`FBc9&7ymC9jXAo=chR`M1ZYq*`hy!^PkJ3M_9(E!=gx;IxPAd zIs@5SVqCg5>00WrOV_0S*XkUNCd;1`92@SYpI*}~*DOhxkB81tmklOe>+x4#OA*3< z)bW{kCG_t6BBs08sJ>R%W4SgpL+#anUy#ZBM7HV|j5L{z-z%dTC(+h>W(@}y!5 zWhe?|pRv4?EHrl$8Vh+0z3@5oyUMcCPy(J{e{Wc9@+IRsK6-?uU%JsPWXBWu*l(mu z19W8QXusft0&y`HOK16Psb@bz(;<3-rZ}6Xay>ZmhO71)R zFAG>LnSHa*-e>W4-e>6Da_!`pwGUjExX|7&f%nf^`~l#TD+Z)|&a5%~Q3X8B;> zd}}G}{T+r0eGnf!nJ-w+%B=Nl=3|XE!)m#R|3&Gb<{fQp=WIX7SX;DFdc}>>|1;}$ zjnt599*=WWW-xLOz+S&)&7N#C;G-0Pd8S-ZZXxH7!)GgOOSrEdfEKQ>Q{}odpd+{Y zx>1OcPow9ClDPkp&5+C5;gn_?+-D3aLmly-^^A2!tG$$rD#!*U=i#H<>VeK`pm0i> z^;*#-5fzZ-XVLNxu?83s64|!d-PZVvWiMD3md+~m6qz`+rbAR&GNH#Bm^lw zW#cAR@zUdQ4_~}&?FeKV7i{+Q-%7fH9RFVXXl3$}QnVJ1`;7U%C4r;hTVfpT@fi<9 zVCQxB;UN}W4<33Y^|xuR-n*XOEMK~2thr|Sk9sih+uttuRT|zWS1(;Fz7~t=iDlP> zN!JXu7;kuhIaQ1rv1iRS{FSX?{~KS>S5Sg9|C_PjCo_6M_YMc);BU?@INJ?w$b%Ys z++*Y!!2N%XeG7aORoeG6nL`sOkV(@vEiIiiX#tnjhNgm7lF~?7LE8dp@!B9Xczc&B zLREBA6#;$seJNfjpzjv1K=%R&yQpQiRao);C>9nJ6>7k$=oaXtX`4cT^ZifKBD&xH zeqX02XOcN{ZgZZ?d2XXQ5!WE#f*gMB=J)*@Hb<$d_Wl3xmb`y~%Cp})?YF&m6y_#% zP5Z-jP4rct+J3ux=74`U<(#c2bQO))(%Z%zKe zNoRTJ`Cl)6@7JeXf*7dy@Y+E_F51E;0vBy3s5K{_xANqwp?zWQrE?Y7^BMDOp^76> z3-Eqe{n>a4tY$TWat}vGKB7--plmEnxsGXJKD_`YH7vIhP`wWFm5xQNE>gklLEo5 z_UyQ}ei#i9&|0Dc7iB}5A6WoyOj=p}wl8F}tAEnHd5V73hP6drI_3BK6WVA#P|f*; z0QEL#UP>gR2sZY!0aaw+hdamhTrC1cq+m%1f&sb_rx=le(w9MaeuKw$ZW3nP(x)`( zQ)@vuo{2;oTc6wf{#8L9QQB|8L-O}Qd?_f#cR=z`PO zLuX3*23Yw^xCIa&&3WIq0eX}rmWu`phP%c}wHI_{)gY91Yw!nBg5!cyS#_?Ja>TsjvgErN0g!tuUA&(rj!C)esj2AKbR(|!vqoCLo4*{z?BHk_mZ>fxsW z>QSZ8d%p%X_fs8px;z0eBWDg9+S^OMGV&SlI}vPWU&+DKRM2+#qOHvx6jlFZnfGW? z^t1E=I%}uI9MaV_O$Pk{`Jg!cfRUJ>A7L90*AAUv^xO8FZ?{p=tzEY88J?dTK2Irr zqe0(m&^H*(HGxR*QstLc(D{z7($GKoBDC|a4uf%nyaa-0S?Qcv=>T$&Bf#{52P;e` z^jDF7B0#o}s`x^`AQ?y1Nd{wi-2=nmc$kN+S)5vcSX`=FOp;Toc`HUN0u_e9SBur& zJ!zjRa!m~%s_@0bz=BlLDGl`EZ*^$yduxnfkiC!kIXDhb4E~>wh-wCp_cHd}cF$vD z7sAoA&&w&`EnnH@E$2gGB!hn6u3{c+OxNb9q+$pV%jdgA#Y%ah(|Dn-9 z&#%O^Zh0C5{z#f!i9knD|iDr-_!%SVY0{O zO!k;O$)=tjvU{lC(*tuP?9)7+3$MP3ClS^g@6_Url(WL6X2$-Jc!TO`+% zv5M@gQ+3W&M#4rP+;St;R2cfi#tgeKaxJMaPZ4CvqIz#Blv^HBsZ(3N+4$}{ z+H73+NAUNIFWOGYdcV^4`?#Lu3HPjb75ybQNxH&#~IZ7zX{ z2`{x%3Lo+}7inXLb`0+B2I#I%ZFFhP}F~0;jjv zEo3DHcY9S=`{_QZ#{(rg4Cki)bul*LsTCG&mO_fA^&}H#9x=)FTDn zGeck@=s9DFoY9A|9o{kheCv)Vm9+M_oJA#0uiX+ks1G1Tx{4#EMtvj$7Y3d2CIg^ z&PSTDl2)xum`|&w%^wzKA86K9KKfHRj0(It-d?fZL7~bMvE}K9*R8fzh(1#jHg5SE zcE94WPeSz4d-dEc_3Ov!!&~0fYxjuye==!;7V&ZV_{L(+$%L;}>^tr^S)xX6O4BDF znr>RfzJ)W2o|9h12I?m_Yf_8!cii+Rz`T+BNM_Zrk}l2M_36b;bHX7Cuvz+{Q~GEa z2cR1{j40L5q{J&!qgCItG-`~pW`jIhd#GBv;)eLZql4oosZ@C*#a@^v{QxWFZr4!R z4FE5pf^N4R=0PDqID|W0XU>H8oPu4-uIa5a_8~gbo(&{(Lr42)Q~T+cr^x}+HwL-K zAfGqLN7GZ(aAPqaH6ld!LWA9R`(RTdUmL0n8@h~hz_}NVg{kFPDeQCsio?dponifn zB4bpMhyBXQe44p<#a^GEX#rYXV5Bg zfU26GGa8Mno(m9z{wCt8E9A5dPx4oP8C!vLFG=5 z%jlH9ixfxZ#;drD-^@F}y$0{9Y2cyn?E?e9vVXkkY(u=5cu@6;Z^+}px9X!@Y-QrW zFSyr#d5+!3!Pf#6WW~ALvC)*KQwc{CIucGMTZZYmC%Maz*!Q8wUTC=^e2r+}C+k3` zI~kppqmO!N#0a7TH=hQkFC#X^a28s$0EhV#aXaNRy2<7w?}$7bGbOa9eFrQb@UZJl z<7b2OiElJ78yu*Z+kNP&FN<78hplG>737EY=SKdmTb~F4qWg5Ot>ja>1+48E-c>^9 zCw5Jrk>57MjSWF~pDR3tHySz$(`1uD4t!;hgTsK^y9`(xvhhoU9K-8riGP}wc#-#3 z#OEvi`5NsY86qIF3Qc&9{Q$PKiJEM5fs>{p_{~839VVC4=5aaU99#tz5QHkTvMLr! zx*L?BBBvb*AB5dOk5`xIefzBTADE_rr9Ifn-!*A_*20Pk-NEvk?H`oNU_#fN73@U9 zs#YUCm3Gw7QK{#>R0+Na+ZUnD$b?|>p^*o;Mje`eB^gVWtu(Hj*00ja{wHE_`L4t> zjzmi=gO3>a{bKuIgCf5mKCHm=#Zg6Sh(z1OQtBz|czD~VWiK=r`%uMeVn zBkxgTn0~M-Fze#*NoF?Wi=@ttAKivS=lV%=K9rf)IUcrFh7v{ z0r%$vs9)T0333JM7nuKokSPtKeqjDhmry_FMpzg9d))uQoRj19rH~8wj6A&>(&a=W z|Mu=VVK`g|SU#`h9+k6E-n{(uA?Y!seAXKo~>;kgd45e8krcMbFyO-m!;X2`6a&~HR2=l-Siy<(`5uH}+G59V)hy)jar!xY|nn{0G{ zg|?5vjH7cY^!vP3xp8nDn$#&yD@iJ#mz`oy@YGgl%4=%E)znE?+wh?axD0U4KtE_p zBOy@B%9RmxpL4Uxw9f^T(k5W76>W(UZG3+hJqPbbTDyy!fe)2ipz?WE1mW23S5`5Ic=sF!HvBSR5D z3v;juZW;0SBmC@P)M6{wp)_nkfSS$g)@`B2^}@BIVSQrbIc!Gd%_Lh-;z!zaPvhg% zC~tn8Hg8_<#z+H?{aBx4Go;tkB<4>SOeWaI?y;Xe`JVDQyH&A}|C%^!(1%UCR z8W!VDV@tU9oLO(-`g7~*8;RBH`9?i&v_vGQ`{e*(E}t{;B|hv1T*80-2eXZqKn$Gl``9S!&N?SxNfi9ag9j*` z60qdrfTM-H%5(Jq2w@}@yf_9y0|0bclMs?}3vW~f01d!T8|U?008hMYqHz7$m*qq( zg#P#tI3Fkf1fvpfjSvtXM*QPw!~(c5IO+vFtz&{*#&t=;rZ=U2>ZmMZ{pT;s#xe2H z4hlIh>)OBtu?jE^&QypkZcRo|eeYVU zG;=1z@To~DrqN~IZ1*UiL}|I!tU1}FOYvRjlk#PHf_!%CogixymAk#(U*!tRM~6LI zu3JV)N!g~{+?gqF)g8-+pz+QL%J>P&tY#%|g3_UMDq(9hTdtOjDY@A;<@>rjOo>XQ zK~Zya9lv$2_en}bvGbPB4U%HlRLD^7a$sd&Ysz&*Hmr9`*|L(s6<~NrCxt0$s()(R z$jo~88**kn9L4l^AD6<=zSl`*_*}$ubS;h-x{}pJN0}P1^{DgsY;_U0qRdOxi*v)! zn=(~q>eXR>VmsHmw{vf9t_|vsMV#h^gJG_zqP7VcK}~vtr-XTZ_8ao#iZGwWH@d`? zFt>N$<4s-t(H^y)Ps5K+u4ZS;$?B&6ncp1dG-{!a%4Kn{IA(F~{%x2SquFq<+TNq0 zt@xD)57!s2k*}K#q%MHOlw@Au!qw@O(O8Kn`r@7(MWVMFdh9u+OYAIlg@+j}% z(MnNG6txA%@*ee#4i7GiBlaOM<&C#S`Kc(ns(X5-=;h3rf!w4o2P+Q?Hb2T=dISBy z5&w+FtI*W#9kv4X<1ZQ(@mw!!_~v!-yI8YV*E`CyhTb8*I&9n(5VcJ?obYbKU&DO* zQGKr0mOGQY;&KOif-J?9!uc~?3?JWqJVK)HQI0vz%{CQv?U5Ft$OIZ4u0Qap?3yJW zRE^7m7A}fY1fo{aRIosuxeyQWO%;WcDxVLsNJa<#?fpmCR`7MFtYM;XyFL`jc2 zBwq3KFeqw;D~ef;tl;z2FjB54@urFoCl*V*i%Yp#ZKh5<#09RCcg25;RT{>)P_=}6 z>O))Pg8H`E#-V|&!tCs_za#lCkC`>9ZNwc#gFmWIC}hO}n0$_4dQ?lg#ybDo_uuEY zE??(Jt$VKSUjJ-=DI)C4BA}1|8vha{gY*dW;9oMSrlwSC$?#XFJK+5>cZH@_OKb63 zi8_0&;;5;4`~E;pedExz2&+n41W1lwKD4g*ZF+MBy;*l``da8b)+poGD6^Ejyfya` zs{;s!X*@+c1yItcB`qKN1w?X1_3ecW_;=PAMAq$-Ha=fdvwYRo1{QHcmp>;;;D6u<9^!{_aqw#lD6hW{ zT#|TX8|3!q7Pvb2_w(+a!b_V)dCvU;BY)8?@k&`Gg!NQ$+wBUWDA zBi8lh^#;XKjPPIt$Y2R&J`yWf|H13Bd$s_8>6P5#5(BZf>n@19HFd8jW`0wN0TOv2rH?CE&I1Xgo(uxC4vRhUiY@$Y z%3Hn;lM}~NN;gw$Tmex$D1H-1=%v{G^`;Ny>jMX3;P@j^{1F_NF1&U@$1`Vy(W8>#+`r3_p-5*wA;d&^ za)0$Gr~)$yaCuBqS5!+Ez#2lz?6WJ5RJ>cGbZoowKMwoR|1fSSrY-QVsXKN7V&bN# zGCm69btNy#FQ<@7cgu%Mn*=ZlSlnlYsm`sPl4W13$*kCYAD_xQ^NEu1iF-GkWHJtP z?UX8;q{`C!kCjfchBrL>%YDa`NbA--w@Er`3<}VU4v;uz&NUrLtFT;y$4(tvhD8#CX>q|JDQm)f zBhS0gCYNY(NxV0>5a!=>`9K`^^vC*d^460h@mu6Jp)1>n2DweKhj4j%l--U!CBn@`ghr~|m&bz6M- zMQs1gRI!Zr8()QVkVoS1yiDz6D$OlW`5|7QI%6$F!M;T+8+P+!t;uLb99q};FiJFo z@hdk_xa!6x?*`~uC}=S0nu zph8~6yUu)~BJ6@#Jo_qtnKuiDB0B}Af%=2-M$xVS2mr0X$aC5Rv{7698fGWLKRlB$ zC(M_jLt>0AQQVDpXF)bH>jJ^UKd<$?fLwmGGRhb6lE5NR&~Ok9^~CNNtSHVA2nu-H zEFSD6xWVqz^e#;9B95-biwT5=yE!ism2lCXz>g8W>W)ecZ@H@3&9?-=$COI5!L9Y+ z8O)9qLm7;sN35jl14^90%2;7AiH;Ff8J`ePT=oq=w7`}Ie+F_R)grYZ!6=*DNEbP_ zZACC1$KMUeeFNv`Gwp^EOJX;*z^WR522kpF9X{l>h(SghaMFTw97$9}1NkykvT2~A zCy;Obd8H^Re&6x4-!Fm+{{q(%>4Dgw#9&~|O&4MZL}a)w2Ac)ZycEC*^qTzV1;k7w zi!ez4=DL_81JsS;x|pk<-w#`C1ScH4jxRs!0KU>t(o^8yRgj4SiO_z$TV>Ozs}%TTsL42;~n_v z_3!b>44y*6IK;p*OvA~&NGp*xA$^SWJ(A%j6hNAWbT8892k|=+>LvO|p&+`7e)Q zhLFVXe?b26z`3El&|pOpOPJ>43HmV z($WKu|JUQwf3u=&_qfGNx85`S=4lh&OndrCsjPOKDA1r*TKKSL-C^mU#K+%m|14`} z>K{!3sYk@KGysIHLJLuUVs2tez>3!{lKqp`|(|9Gv1CRC?+JWvUwV>?)#S(h=}OQU+NlD1~6q)b9oiWa(a7hWTRXiq8Bh*zq# zHY!EHee(&{OVyq~k^zx`;jOHAtk1V_v)w%2A?2H8 z=+@1Nb~|@C?ZtIl%o&b6dAu?nMip_J^EdwD**77W+>zWFOb!d7d}#I2WHN>+O3_dtOu)TBpyTkx2`Cl9#8pdUmk- z9_ec7+HaakhH@(O3jE$ansDT)!>5%5)1lpOd}Z2138$?If0lL!9SPZAw@VGD9b+p> z;LeAC)89a?0#9>?QArfdilYvJi2Em1S?h@D9w>ew#bgSYlp%GkNu@~@NlPiqDh0}| zW2>d4McBpux40uVpPKadrWUI#e|-G;oRS%yPp;mM?p$n`5dMZs-$BPBt^Hluv99W2 zr70u@CrmCpnEjopI7lW(LZE~aChSeR>#3tZnF1&>_*fr@75W1`hbPV{FVeD?EDf!P zupoZCQfxk&viF%_vtb=c{pLdwjMK88bYfd7>l$_ki`wS4XP~S)G=VHA&q2$7h0X?UCBehY7OR{RbjaW* z<%7HR#floF?XX=y8S{Y)!g=UKS z%y(?(S9jhNb<1OnsTp5|LO=9$^+uLhOdUS?;xBj#`jC*Q>e5u6kResYADj4`sr$Wf zrb0kExvX2w?dU@2$uOqXt>|oDOQ|wXO+4Emb`L4DuDEz#*A>xGGQZtOnM%iPUAN)P zmU-uCKKJ|`AxBzzM|x-8o9WTp_1uv>x6*REyu>QcTLlI5AePb~F-|u3{_`+A3HG}Y z_$X#EU%v2%L_WIn?3Lls(JVPDG0RN*O&$Eo&buO{q@_+aCyhAKGhc^YTUpOtk;(dB zTT&jdJY$ucQ`O3ZjGVmWv7ve~6s*p{qnG2M37eRif7mLuxPe6qu62YG73G;V0^`O!ces zvak9)lk+pK*fMsXO4c#IZs%!_gx<+7vF3G87WJcA*B?fv2C%xpTUx=H!Ld{aj-22Z z3k(FV(*VYJD1#e`o+Yp$j7dypI($-AOI>~~?lVymgzsQ2Qz(`2u7)&l+UX2|hAb?V zr7%inW|qWE%%^BBw`8SkF#2St9E5rrBbefGbVY!!AU2MTWn)+_u^eV+HkR#RR&j#^ z?;V4F+X*L>tBEGkB)W#KCAyYf!zQtbjIL${%*pau+63kh<=ybUq$$v{mo0nS}Rd6MPHH;U_qU@P??{*c=9f;&SF? zv)L?`Fq4(BQgMTiXfEAD^Ju=Xv-aa9GxtK!N%ygP*#csIR>kJCc{00)&4oc8%2PEx zL=Phn9X&#eX$j0^5P9}7dW=2FsD>?Ji`gRqCM{wQvxiu<=Bjl|we%D{P0tW5qi1P3 zt-zbK@K&tn*h*q6*mCwPTSn{|_B4Bn)xwe4E!EL#dV%OgdWl{p2o~#UEkT>jXf3N} zYuL+-UScn@7uag%s}ton&};NM(Hrz8y+v;mZ4A&R+Khv3VjJ1p>@8w%vNzc4>@^45 zAa2-7+lbzw?Jz(4Gtpo065n?TZnN*PciB$%7e;?(JJ@#i4olm{wuQ$e ze<%8g_R`0APZ9ku`mkcX0mvp6Cbqfqlz-)7j1N&t)Uo2sV5;OJu{sycVA5l!3k3Xl!9grQ7Kax)VDVb_cti zsQ?o;nq{&K<{O225g~CrUZ0KEL0?6Ag5i9C9;63Z-~nRyvpjYcyHaMqWaHT{L|M9y zuBRIa9&?kyl0HsLvB9P%*i!a5BNv;@Ze%ww<$8AAaqz4E{B~S!KVA0s|8&9MFcfeE zqk^~#{sxIcstG2U;3KltkX2sIdAeihO(se+A>tYW+74^cWNVfw#2Z4PPca!%$dL## zbyhJSrzuuR8K&ixpMU!lUf+zd`E{l9#+h7eaWYAeq=eCO$&TD?_PUU09e{)ngF zf3_5EwP&qq2d%#`J;{}YwQwnMsO~^Rh+aD8-er}cu`bQD>Ul%uYVwBMu-bTSDqZPV z1?{x;T19XDO0`OKv7r-~=`RlXY>Rs}{n8rY)@h2d_L##+!LqlqOG=v$S|!PqUfs;o z8_KTSUfLX@haG=2ot2(5{cc`J>MK32s%K5Mvg^Kr%m0m`(!f+@rm1m( zcf0kqYPzn&`lWRYZQ%5^dz7iTaGNy|SYiw%a%;VHzjch9{_qstuYGR!S3EyRj}|s; z2xK<|URW^qxZ?*`1HxQBjJMCU1Z&^YP1#GgI7WohSIfJlBs%U2tv1bj&F#z2-+m8V z1bS<;O#y`1os?eaN`I%4)2Y&~>^zg&9WX_TT=T6L9kS`ldv>{v)(ZOEnXLvIDAANW z@68V@yIr*^eZsqgNx?B5vf4G59IO5pY z&4=9MXn2xmryc)Ic7ybi6P3v>ZYty1g|>wc-%a|mLSA-4`C#>2#rUlH+I5dWA^QVf z9V6?W3ex|mkOT(~ru11Wld5d@nUYK%>1G4EnAJd)zaU~BNwS`oNVWN?j)mPNw&R5EwU@ACim4IWk&%}jarwQWJZ+WL|kQzW-kW(VaJmfxDX3Y(Yo^5nkcQ4eqG z2^IxzFbB6)Dy3XWPp+?d=3)1g=4yF%LvC%qWO1y>t+g5pU8d0J7biTTelcYUAI)C4 z*VUqIHN6|;7eerddoyTlfM1Zb%=(NqQGv6EkrJmY);~JUrzFnFoS1Z8Iiifr>7#q? zPa_~uL)lq(FzDD3T0NSUH|Uq};5G7slrIWhib@~s%=V3T*ONI!zHKha*FPlnHQ(78 yFD`U|6#tuO79!k)x!(JikrRG)W=)Cl5OGezrMcpo`T@p50oK^rusO?~{eJ;xsEoV- diff --git a/data/credits.s b/data/credits.s deleted file mode 100644 index ba4a254e5..000000000 --- a/data/credits.s +++ /dev/null @@ -1,70 +0,0 @@ - .section .rodata - .align 2, 0 - -gUnknown_8410CF4:: @ 8410CF4 - .incbin "baserom.gba", 0x410CF4, 0x10C - -gUnknown_8410E00:: @ 8410E00 - .incbin "baserom.gba", 0x410E00, 0x4 - -gUnknown_8410E04:: @ 8410E04 - .incbin "baserom.gba", 0x410E04, 0x4 - -gUnknown_8410E08:: @ 8410E08 - .incbin "baserom.gba", 0x410E08, 0x8 - -gUnknown_8410E10:: @ 8410E10 - .incbin "baserom.gba", 0x410E10, 0x20 - -gUnknown_8410E30:: @ 8410E30 - .incbin "baserom.gba", 0x410E30, 0xDC8 - -gUnknown_8411BF8:: @ 8411BF8 - .incbin "baserom.gba", 0x411BF8, 0x20 - -gUnknown_8411C18:: @ 8411C18 - .incbin "baserom.gba", 0x411C18, 0xD88 - -gUnknown_84129A0:: @ 84129A0 - .incbin "baserom.gba", 0x4129A0, 0x20 - -gUnknown_84129C0:: @ 84129C0 - .incbin "baserom.gba", 0x4129C0, 0x958 - -gUnknown_8413318:: @ 8413318 - .incbin "baserom.gba", 0x413318, 0x20 - -gUnknown_8413338:: @ 8413338 - .incbin "baserom.gba", 0x413338, 0x51C - -gUnknown_8413854:: @ 8413854 - .incbin "baserom.gba", 0x413854, 0x20 - -gUnknown_8413874:: @ 8413874 - .incbin "baserom.gba", 0x413874, 0x524 - -gUnknown_8413D98:: @ 8413D98 - .incbin "baserom.gba", 0x413D98, 0x20 - -gUnknown_8413DB8:: @ 8413DB8 - .incbin "baserom.gba", 0x413DB8, 0x564 - -gUnknown_841431C:: @ 841431C - .incbin "baserom.gba", 0x41431C, 0x48 - -gUnknown_8414364:: @ 8414364 - .incbin "baserom.gba", 0x414364, 0x54 - -gUnknown_84143B8:: @ 84143B8 - .incbin "baserom.gba", 0x4143B8, 0x18 - -gUnknown_84143D0:: @ 84143D0 - .incbin "baserom.gba", 0x4143D0, 0x1B8 - -gUnknown_8414588:: @ 8414588 - .incbin "baserom.gba", 0x414588, 0x34 - -gUnknown_84145BC:: @ 84145BC - .incbin "baserom.gba", 0x4145BC, 0x204 - - .align 2, 0 diff --git a/data/credits/unk_840C630.pal b/data/credits/unk_840C630.pal new file mode 100644 index 000000000..01f113381 --- /dev/null +++ b/data/credits/unk_840C630.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 +255 255 255 diff --git a/data/credits/unk_840C650.png b/data/credits/unk_840C650.png new file mode 100644 index 0000000000000000000000000000000000000000..9afadd699dfcaa90b80df815de8e6eb0015cdcf6 GIT binary patch literal 1499 zcmeAS@N?(olHy`uVBq!ia0vp^4nW+%!3-pO;^#*&FfcO&_=LCuxzCcKt~v(oRq$HF z;8o0EXvrY)zd7k>lGhY3%OpbuLkWTZ3>-@s7(ix>g3%Bd^daz{6tM3}(RKy~rfHro zjv*P1PiI^#dTqer^7H@vXJxM}uIcUOP@kKbf4W0XHlUxtZir#!S9x7(cW(6Yb2G7sPI%qkxnlMyxvt49L+1k68EoCR0*b%-9 zoosi+eZHn1%4gV9H|w8I!yVJlXTN&xSf#b?E=Pgox>=eE3PxGS8dQs%N{<7{T&2Fy zd*``gOrP3nIYcyAUJagWBHhHLby>5ldoSx633i+3>F*_(W1l56yj^~}hR{ZhI>WyI;-|wI@7aGn{&r58Fte1)PGL!h^4n5OJk8Ie9qzAp zYv6i#l5s)51xt)t-kNK#g6!s*HQPS8m|*#stD~ABYc@*)TyKyQ5Ivy3lc_@Z;iS`gjcsQd zc1=lOkUk`ot+tSHBlCe`=7=vmT$AQ>uMuRnnefK+Kzhg<)dRYox{(Yqz9nb19Imx^ kzhg98EZM-jWj)Iu=8eKp*{Zi*bAs}mr>mdKI;Vst0IQp9-~a#s literal 0 HcmV?d00001 diff --git a/data/credits/unk_840CA54.bin b/data/credits/unk_840CA54.bin new file mode 100644 index 0000000000000000000000000000000000000000..a127ba9caca22e3424fc7d20a5ec49ca523afd3a GIT binary patch literal 1024 zcmdsy$5ui?5JbBXbI!5@BLZ$g#YEPvfS>~I5DbVJQUBeVId9Gk13w_McwP5aZ5~nI zJlBAGkU0 zx6Dr_-(a87q6TbgB&tB9wWtH1H4>G|Fezp3057kK|EK%|MpGDB literal 0 HcmV?d00001 diff --git a/data/credits/unk_840CB8C.bin b/data/credits/unk_840CB8C.bin new file mode 100644 index 0000000000000000000000000000000000000000..3dd1c74a0691f4e76cfd5e9d7ec40fd99c7faf86 GIT binary patch literal 3200 zcmeH|v2WW(6vm$i4@4{=Tmq*~7A_j>PSk%8Y6!9vFmDL#r3jj>ixv%;yaWci2rV*P zOvT6;1{_i#K%^s!)_{Q0Jf(Do0t$8U7QiTy%o%F;d!%H`jvaIe(4|lM@!j!A-raZa z-Vyz8|Dgi;Iei=Yb^J6>lnRwnWxJ_S9@Z#QMuvq_{Ui!i5{5<8m9y_#sBGa96&Cfg zfQD+z%(kB`*UsKJr=H`X=rut9d7mkWlB`CF)-(hc7? zT|v>h$TK0bb@6;%i09%QYx+VI=8Y-xeN&JD9Y7;hqfT5w?}tk7n|Rfj_?9ul%%A`g zU`AS-00VgmO+R#r_Q6nDr0@Zy#}*{u=Fb~6%9FK0uGU1ZFy<*3djj|idQ3FX76?cT z#uo0@1PYkah5B-*yxwPwrQWLcbC zI;u(enm3_QX;fZa&vRX`;kx)A+gaUic)ss?zE^U?_eETjfJAISLE^cx#6WEc5i1{s zkr`?l8K{zA94A;PZvp5=Q!4!se-IAj02(D3SjRL3B^+awUf36wF0DRB@ zZbjox({t~7-kop1gHFu-Kfx8S2sRhsZQ6Wc6J7V*iUxdR70lCB5BNk^=gD0a?ke0o zQ3p%Fe4KCq|HQrFHRVs9zy0xMvv+XQA3eO?+>WhpUd9&1svzuP4HXAXjNJDzR-OU& zH3=!PR$5um$S7<_rN%v_x`;fu6UzdGVlb@GDZ=tLo(5&ZcqWb}Qk^(i6|p7}wPf4R zmTVm_?a@_;dn$`VmD9$WU1%B_rCN16X&h2VBZgAMQfD-MA@8a9iBfT2#h7xeWE!_9 zU1?K#ubro@b|qB1eXo7K@jh0h#c>o2_B-JMSJBG0*GV!5F_3URK6oShgp!nt5f_%IAZoT#tiq7qevA?SBitKD0M zPRs3fAA}RQtd{Gn#W_~5*PT|&fz33w+PK|`7l`&>Okyd)$ry=SxKVy8Q)o8y$uTrad!WO_i&7tIgr0IW316E zGfjlEt};ZAN^wb%$vc3s#t2+TMQE4`nqYdJS8~VC!H>1E^_H@4ZF&hvR1Y8X_26 zq%>IJPt9?DOdV-;(0Hof>66tmXsqVJfea3}Ng}V#7@y4n?ra}gbcB72{};7?0Iox@ AQUCw| literal 0 HcmV?d00001 diff --git a/data/credits/unk_840D228.bin b/data/credits/unk_840D228.bin new file mode 100644 index 0000000000000000000000000000000000000000..f6c336c0173740a2131c8f559cdfd20ee6fd366c GIT binary patch literal 4992 zcmeI0&u<&Y6~|u>JuD;w-irX6%!P*vM$i*woqE&qVB``&909hNgKB_49VG`}c<7(d z%et)&YmyRtuo2CQff+*uxU&n0N+f{XVX$h^1GQZFP@sSSCqCt1Ahq*-OH!ihC@9+e zIHV8y?9A+s`SG1MZ-yfJL2M7TYN9KxQSDbuB405%)7LFEwov095gwA(nv@D>k?K(E z&zY=#o*R9C@%jsXf6T=vKgZG)AEWM!*n=!*@V%VYN@?w9M<|JMMeB9&e#KYsyJp8U zm78@jC$4m*d@NJDi?oNF&Y+SRnk7%q(%lL;B&wiAA1&e5|81oGr8+?7Io5k`HuZm~ z_5`HvyT>0v_1Q|x)qYNeItTyvd!!%sBK>ftsdr`)erMW}Bq6C(M(dsUB>5s;Khw{r z^Tu@H=aY|!l7J#5DRSj#*b&^g`G6v?o-{*4g>{mQnx!l5%)iL*MWnM>I;|O^9kBNo z@C4t^o+K{wd6Yz^c{IkPw@i~Yu8mPBs5%G@3Wh@p%KiUf3b=2Wfxg_g2)+jbDI>R64rEz0dqTKnAwnSpk`%Zq?Sg|b z!q3o%8KkTnvCb32fRZe#H7Uq~IAM(^WO8P5)IZ{Ba7?q|yk*{Zj>>;Cj=p|YzyJKC z-q3yE*BoplKy8Cb#nb6TOH378|D5rdCS${VU?0l(Dr}&tkaw+Bu?xf_3=dW;r8VHf zb#knXfrpGl<`HN9XNy9}T~3KYLD6cF0>N1JYSBU$gs_kR>l_rV6xLWAd>b+DqmxO7 zo#+{Of%$|VM!aU4fajSYwv*^*jimqOc9J-r;~@IDUaVAo;5dV%4NW|yVio$exUUCE z(x4FrC2)V%SVJ6*Ocz94=mMK-XKUXk+GYfr6=b{MHpU6sx1sTPa7AkYgDePZf%!)X zSjEDJLS|_B(J>X6WiRvLvKm$vpT>ua%j$4_X?N7dn^&HhZLoi9tpL1+{|10_b)izT;aS*~YUyOKdWZy3}$TkACFClF1O z&4d6xy*K8Glzr%_Cm`;q_#6-UON_@jTEpA7i?$Su6?kA(SPBCTAvVJr7jN9@fLyV} z%yn**4)u-YLtVJTTifEU?o>oauP=ABUeUSEV$NJ!)aLp>kydJGh}Q%&M0a@l517UX zXuNt(^bXNgYs>=D1*=dfEKGr{z#rzCXz7*e&S}+f4t%AA_LVr$x+L_lSVAwirJP_O-@u`W zX}eelFj+H5K1gZE2Lmm`LEj4piAt$sZFLpdeuzXnepuGJEHu2DQuA}pKFy}&jC|~Yc17TYk8fuhh8W5 zDc0OmW=OPx30Q$otSBZ!D^Ga^TxFeEbHuW%Q1mKpGT2~XSd@gDmz$$}`*q*9PlmpY zus{g9WCsd!3aB04vP$7CQLGWY3wW<|RFX)XdpsqjDv7_hh1gIVPFuCZfFp@gNMLzi zyK<=muUL=8>7l<+u4y6eK<~2RVI9h<;6wb`2V; znptzJl~tRFfOYkU zkHB4dO`GysYv^7x*HkaZe1LfP8;mY~3|Qlp-HR-vTw*W>--De+((}3^#0;D#us17L zskU+)dyqz4n~yP4HUoLQ6Ue3v0(GzIzg?{&sVZoS>>0mLHJ;B`tNAIoJRzUY|0=I= z{bUT1ixzA5LEOi*Vt!-8R&YUQA8UUffnXn-!nX2jO4p6BZV;Bz8!@@N^HC*wSgFt# zAo}3(_?&chR(dQ|T#+GtENAIsEM|!v>;$s1vW&#B?!=|WafFHZcT*Sq4xITsdWvp^IEI96U+D&h$zvT} z&*vTc`X5I@8V~UvMjZ1077#AA?)jmXJ*`>e;TSI9Ykck?O|IiK)A%lN(Z;m>6$Pdb zG_p-(B}>UnS?Hky62HpPyjC$#-8xRJM#%d(Vs#4E0`HX?VR#gYFBRygePFj;vNv6N zx#`nON0Sp_1oRT5-G>QAv!@4|l|e-yr91LNp%){KL1)F=bImgoDY(#+3?TV1U?f*o9RYF$x$!ZXi;2>O8pn4EuZ?-)UA_&7?cfS|MRiIAeP=(>15&km{-dYbn{`OhB z`z&tT*ag@VV*dNMdkb@SL);F+-jlP#(60Z=#5~rzHIMbGKoBhNymJ2e73g5Kn1ZN@ z-FtgAP+_3HJ5=hwkCcKi>a43&RVpQkYLHc{5w5CI;(H}~vD`oH{yPlAeQ*Fijk|H< z8Df^-b`jGCngozxcn>sW9Iv;#cZBGQ@Dz?7e5a3R9c-uY>`55nxWfBNg|Td_IFxoQ z^id9IV(s}*srfx@NBP6gWOM-qG zjLdF8joFP4!_)ZDK`(x|*E>`PYHCok8bIN;YQ~4q=)S1L6(R0#3emiMQ#g&!D$d4c zqqcEd$j7~|d>nU0BYpxN3ZYb^(N>j8TOl)5sJd#e7psHsaC}yyD+^RpiRQrBmc%9* z_DLF-$QmJLH$hEyWZn#F)-s2JqTf4M0(~u-kRLGb*pf~3$7W<;=UVHr>7X_=olf6G z=}sp)j*Ol;jxVw_P5XLewC)VGj>hMfa}AA5TfIkXGKCph;2SUiw53x~4O-F4W`oL& zn=-0xM$tuW9GOmZG3BDsXsC*mazo10XBd~#HJR;e-Ouzj3a#WoOR7y@Q<|Y@N1K#d zn_b;E13ZpQ7JE0;ZVY{JyR@-E51cTxw0dSKM*Yq*W~`yb%p{7|CALm+C^}<(bOgB! zNlZzRgtQtS%}7MnI>Tv!8!E@cp=B7+%rGkEhUVOKE?OXEqKlM_KBrWsWIk2kyuK#H zZYzppYTTiND5Bp)=k$5@h$jn2oF^lYjxKaM(k2bvjjG)YObU{Wc8}g>i%MJ z$G^eL3x3Z3v7GdO`~`g|hH?wS;fr=IRFISzs)=z-r}%`h+gZ zN!ceqm;JK;Qr+-h)_p%Y@%?4GvgrE=%P(>1-!1LPLXrEB$zNLW{eu6>ZlG3>IGbe% z>#zL2oasXmp0%9S$YSMx!(Kq6udXlg$)w1WQ~h4+g7+Rzd9ZT{gfD_Zj#FNjg`5kG zT*f^lgvUz7q+3cR-9jN*M}Irku_<=NUDSO%$Z6iq^m*%jyTGBX1^Rk35=$<5ajk~5 zeZlKHA2C+?#AEf6OT9Ysh*HMpCLZ%9E|d7i10mM%-RGa+KZCyv9Ld+}Bvrs6B@p7& zfA!h7rR|Ts^O|+S?6Ymg-@{K;@jwb288pEsajqghe1J6`2wCC{99oH|2*<=%2~gl} ziP!Q)o5LOwEP)%zgKfm)EHI?913ev{ETYWW9Gqj!z3Z~_-HG>G9=%nk|J~sQT$b%W p>atXq#Kn2M%aQ!iJbzl7ls{wcD>>g-X0qUr3Et9o%Bk08`4x#6F_QoQ literal 0 HcmV?d00001 diff --git a/data/credits/unk_840E904.bin b/data/credits/unk_840E904.bin new file mode 100644 index 0000000000000000000000000000000000000000..4887c1e7e79f412ecbdb51fc6b8c4455212a820d GIT binary patch literal 3840 zcmd5;O=u%W8m&1Pofh1ZKwyxFN?MegkxGM(K~{l}5e#Kn*pQR$tA3)CC%cwe7BMA~ ztFfE-;!~i(x($=Tx*FC@AEJ}NPz`-D7*sH`vrKNiuOvHTCo>QhhV18l_5bsI?^Tsd z$S1QpRz7^Vx)4OTEcSNVXxun({o|(akJb8JzgQsTVzW-%m(RuE#o5Nj znYHchS$|zD)DPSyrn=3h>py>fFg`mw5Zh-P>TW)!ljefJ2EH#YeBXTuxEJ^LpAEJ9 z{Low=W4F100nNMl|G#<5C8Tu({~CnU4+uGMN!^{p65_hAY%(vRaOSF){!qF8-x}_2 z?C5x?ggaE{u2SoB2(c~@`Kz&==Dyg9BC+|^f5!g#rtiP<&wbx-igQbiK(~xu^af(% zeBi&@RKCBV{7oTz^kBaWJO2nP0q)Vo4`?}_`LPL+$L_k_cj0)p&TzqXvHuW$9VrDr zl=_#i>gWD<_j$J(TI}A#{r*3tj6lhuI|Oz~OT`G058QYftGlr~O$HZZGVuMn^2c@c zlUrAonP2V9#i6ukat_z3G<4mk5;RL>a@>^CZ+z4E`_`7&U0V}7+gsug(=lLxGQ|2^=X5a4nMfKyPbj*iq=4MD8>>3d7DwT1c_E}29D32vJLxfbg^KSu&dZWD?!Ar6 zM(e(wn*NQ}4p?~#8e((o5~X%gmhERMEM&p_4^`0q#T!#3i2{Ib6x#tC;cQp;6?aj%|gkPJ{(zTI4Udx1$EHo@(EHaE;r@Rpa z@t`Yg34l9ZI9kFD%K#3plAhuoX)l=Iz5!+rNQ2u<2MlHPwC|W;&$%{zxn~Mg%M#lw zlvsf>MoWyrwGbEWno_3?pXn1J{yI?V^CwDCHc%aKY?+=yy|A6SPIoXN<-}=$(kzB& zryx4$>vWJwL7Uhm_Gz_EpU~?)Lfew0E#J6f6Tp`D0Q;uhv(~-x?}~Dj<+8k7s&bwH z*ecJnMZUsXD+yLDG6s$*D*_3YV_BqCR!wkLt@1LEWJR6@0uwhuCT_0#anr3N467w1FPACjHHN$#1`bV`EG;;+ zQ~;rtQ+&S~Xts5SG3zX>R%Wcq;U|B?s`-DgC!cqU>~R4-1q?~VzhLb3GGn{90LSqe z;@LQ@CF9_tSVSNQBAMWMj$=kJAV#yLSe&vL)|sQ$CDnZUcYJ=N!JhRuw|H<7s!5ih zWygU#i4tp9WiDDJg{Vqe%SGH7>k2rn!jmdrnIXyY{A-5B3JB_g<9*KaQJ!CP})pGlc z{X0U%O7Y&>Qa12|@eYAS5QyUVz^rr-N;26%dxa%%X;+{VP82pqn5c6E#R~`uVeo2- z#**MaN#py;Y&?p8*_QDyB}wiRlKjmtEH{h%3!I`#B8s{dw$D11E@Pbkv0q^j9X?Caxh3Kq z>lW})JV>Q34tfd~Xfewed0omaM)|lsGc_xIo^o1(2B_eczI96MbyT38B%HLcZ~1-L ywiNKGttF#n$k72+ACy);xJ{qhoBv^bS-@FZe2tkOe21fD=TU^{mJ!{j2<5-SV<8Oy literal 0 HcmV?d00001 diff --git a/data/credits/unk_840F240.bin b/data/credits/unk_840F240.bin new file mode 100644 index 0000000000000000000000000000000000000000..285a468b66b8e0a7293768217a1f18399522d304 GIT binary patch literal 3200 zcmd6pO>f&a7{>`L=L&MMYXvdqMX7aOopnS9U+R;3HHxJSmP-#SD)iEP3B!YO$;Bv8 zUHU~B8@-!$(gFnr*pw_e25ea3{&eClU7D@M&~5~N;KLW`A^&{%LdgF(>Hl_Y+WI2? zF)K|;N-M;pl#r7fgmjlH(q-4`36b@Vg*%kOK0Owz5u7Ncx#bZTD$79?P=7PO?*E@$ze#CYIcK}#QsUXr zuHq6H7*oX^3h@T2bVr~+9t;Yt6CDKkBnW)uqoI^WG|0C~D9SUfhk?^P3(n4(D4MEr z#aI>cc{m@3;Y^2nd%=^Z+_CRQ-`Q@fsMvSamQ7VjS0rVvnv{AoismGWURn{1P81(z zojA@xwGqeukDZt}whO4iN?p3Bd353C-oo|sgvyF&VnFlKH@=> z^9PSEc*uDW@CQM#3*#evdtTT6z104@b87Fj21m7-p3`|_PW90oDs*B$XUz8vTKkCZ zw?ZJ?2NG*4r5A5D! zyZ52V^EzV(VHmFYf%Ez$3j}$J))|KYXx3Z!Ja&sW%c!-_mWap$4tqFdA3XLYCzRX6l7#7lzT01zj zjP5rLMyI1E(5wConz7ceVOR&@&maR~xCgB`N5-)SBZl<84)uJNL0gaVwnwA-l(L9> zrWUMHuP?WH{jr-3$2QHBrc`Sj%h{|(SKkaYV_AcBGKPH}$MLH;K16n?bsVE_%wiL7 z3v&2!L828?silcB(EL&VG z>n+hg_z7WZq~b;Cr z#G^-rSOVdJCFoxuS!Y3BLB9-C55bW|Y6jdK#lOEj{!#rC4CDijMW5g@NDYWrA@zZf zN!c%yl7_KCDmjp2jXvR1Xa}7Rke84|HFmiw>kP-l<8q7UsA_}g9O&0J5!#9%U;8nD zWMa(}7yR6SJ1v6m2oBH;`T%wx9K(Ab{^b~VmMV+dH^fka1fnIiA@09pp@s%|{(kt2 z3fNynVDEj#`{v>-OmXKrxO=g8FVYbA?F2gDy&~OQ%1qls%dxZ6cJtIX?-5x5lY@-N zf?BH7*4np~Y7f7<_6(`!IByfB;1iJde%Jmr{3;wQP(mvxqM;cfLy6~##85S4Qe%~1 zIk0Z%3dX>s!k$P^VFC(+QP88rPYuQiMVWqu_`5oz^~}Cbp1M^h#hD9lA6)~RCZ1c> XsnKG+W|v1+_3{3@vMQH*{Js4Lt9A+q literal 0 HcmV?d00001 diff --git a/data/credits/unk_840F944.bin b/data/credits/unk_840F944.bin new file mode 100644 index 0000000000000000000000000000000000000000..ba2cdab77ce99ea4c6dc1c56d26676f36c060e5b GIT binary patch literal 3840 zcmeH}O>g5i8prtwMxdJO#t_p>FEPg2%bwg0I4N9UR+r6OdvRz?fg+b8MlYMsuz-<5 zx#UozKy}F%p>1rjM^kcU76S}mQMTm{V8asor(crHv@__-0(_6Jq?CPd*MW=(8TGZccdZSTl!e)~YljfIB4nHqQf3ZO zmeky~@B00L67yRh$RXI@G18jsQ>q^tL#M{nL56xpeWNM$Z(k5^M{d9esO)dC^?No# z{cyvGVJg=$I%E$HUGF(#E`!~GK4Z^i&2li4F@%Vf9AvQ^Bx`9P%TTG6N|UiJlpIz( zS$sfcr9zDvSmD%tOVSGaL1p_ts6s21W@szdJo!)g0!hF&?_q>->e%M+GXn zikB{_xAUKKLc)-PaNfaR0A`)&a{C?>B{&58ohXNq+at}Nh);p z<JwH`RLA z)x;3P`NzW2;G}uM$wV{=ITe`qr0zG@%>BI+ZumduYA;X9z!dVyk=1Am^nz|rk2yqq zczpaL6c3t@(YWIi)SKW`h$9qpAsXf-dV$3&6D$_y>Z7^oR87#JrqiH7_!0H}7sh|l zmwsQWT#n654&-2^^}tAJdZ5mHWok^RDlPEa9ea7d&x#rwiLXsVjY#n>=QVI7*ppOFVPZ9En_sMIbA7omt?B-k94Jd~?mMfYM z3OY-a;@EJ7ELGW0lQL7~KZ`g$FJg6-CMtjqq9eq`H=Oe}VrxSSWqS=I3b+ZvXW}A6 z*9+VKzJ=kQx5W>`zq&&F*AwDHEyNy$%+xxSNjY|7c}Q>MA$zV?tdHaYCkH^s~G2M#=OkSZLwy5zjOgpyXe_uD>YNC!D7O%Gau zyWEQUVWO%t$OD;_LRwS*Mt-77Iklv~?sZ6-3{TU+@Vt=Y^ZwXe8B;;3*fIH6v)yhT zHQTNBQ3rZ8pkXWAXlFIVM!mBO_-)PVc+ZZg2>D)vhkvtqZPS2pXJ>8EYPY8YmC~8g zlqI?XU0$=i6vj8=qMoS?}7NscXuvBa1hSB80Z-M$saQEBfpEia3 zI^^=a9m>K+~micS0`==o zS5_~?D83<+3MCavCzP^^$7TrsiuJ+Z8?1~jZlTY7>a@aNX^g^HEMBr#q$Ra#r( z*qCHYNb=@kY2$%T5s=pK`8H`;#yfOb!daxotTd%A36|OE;ZV9}2yNjYQr2%Zd%n5# z_wB(`GkNbL-#PH@2mS8ri9MrZ8kLnQv>VTgzpkkpm=~!8%ePjNqN({h&gv3Bc!~))6 zbz~GL8}D!6bBSA=rj<%n%1}=J_?_Rc`o8ZjuE_1RDkir#c#)jo`%rO>B_Eg4Ps?1j z?5TcN)o(Bvmx+`=4UsYelJO|GLUWB)v1L`V;TWp38%NHnEVn~h-gjmB(8cn(t77Te z^VWFS4kFGSt~uxSVQIWIcep0O?H`^Qe{mRw>$d8*v8IbuN~1w~n%1ft2-A?_(qp}8 zf-5wV)*>EpXs%hKRs@%IW8~e9`H`)xvPg+RHwmE1yq7B4(N^#Xdg%kk?>X0DP8K^l z`O(t}88V4z5jyJJMvWGC8ICZ9325JLs$G_(aZ}SVlo0jknd--{dURYErjcoNifIR1 zhEME0E;Nq%BHI<&bzCdwZ)+Thve9tS27l1sW9}>X(D077g1MnV=dtSNH#o-)=A*Y( zh?*8frzi?7ir4z-?E)>HFxr^uq+j4YsBf^mn;RO1EkD}!ex%-SswWdY1-!%7Oz>6@ z>H1pGof+rM0ZdcxIp^9h2+loqF7+%v-_YqKm+h=h;K(kU+c{IMhEiIzsyeimV++ee z2)u9GJi5fpE4k=H)*e~*2g{FFd?I#&*A(TD1hUj0pv5fngW5{MAiH^;LYHu?=2tx>H6Ob6+ymZNs^=Z!D=P+@u8>d{s$2Iiyl+a7n*Eos^j zt$|Lp3=w5_CNc_%gfNpZON8rRX@w*!Ry94jNa*va>`H!cfX^=vza3ZxGjsgFcfFr> zP;S?P3o)5@w{9^;3pqA>p48XrjNx!NWe(pd`&L=E)u7cPHOVTgLEB&eyu^R21_P13 Umt+vw|5(drzvq(%B)f6@1x_A+ga7~l literal 0 HcmV?d00001 diff --git a/data/credits/unk_84105B4.bin b/data/credits/unk_84105B4.bin new file mode 100644 index 0000000000000000000000000000000000000000..d173e611e30a682d8c04d4d2ceeb5967a9ba8ecb GIT binary patch literal 4608 zcmeH~v2qhJ5QeuQr5@rkp-kbuT#+GHV1)`?07pmW1}CZ*zf?M>q{9pqLz7fMD~}k< z?y}Fozp~Hduua1_0VX^5XQf+NvOevtFGTltPvA}n2$A@em4k?k{k8W=W+i@qV-tZI zfrmtO2G@aOI3|~UtF!FOUWdPSn7ceT^%mU-%*J~me+`KtID#WMx@GuSGK{gTE*+qj zi42_gN4wrXI=2W)ow`5=_ z8Lno3tz~rWMyp?-R#jw^mYx4{OY9!n#ipWq0NV*r#u{8oxg`hqbp^s zQtnUuR z7P0J-^{;J&wr(}EtIrQP3@@M&htY`X1N8BNDIBsghjlssbjAJ8SIqF-g;@28U*O!% znBNw-@o26gd?RJdqsyoK?(#;?Yi;3E2x(tJ@c6vmcm<)^7@n81%MZusmTqKme)i0 zGt)W*rbt$}s6w-+LNh8jG?L)dB4prDuhb`t$aI6JcI7ug5o=y=&q7JGkGc|i3*P%! zD>UmV8*Fg-=uJiNc>kWXQV>sX6^&YiY?-a;YtuU*yat&bz!?9 z7%^C7z<3s&li5ttd*?sTd*w)jKEnf)B#X<2{(&u#`vGq{K^S+`qC`n`!l2F)u4MtU z_;(21jfQfE`2}w;y^81r?Yh9=(0l-Mlbsr>s(C%fGZ2~k$K`}wn3QWvh@OG!zcBro NzDtw4{sO<>{14H7C*A-6 literal 0 HcmV?d00001 diff --git a/data/credits/unk_8410B20.bin b/data/credits/unk_8410B20.bin new file mode 100644 index 0000000000000000000000000000000000000000..eea1940eee91d2cc3d392659d9a6209e1c89189a GIT binary patch literal 2048 zcmeH`-3q`U2!&5u_G|C|x>F<=U5&Q8saS{XBe4ny+YYgPIwe>qXXCg literal 0 HcmV?d00001 diff --git a/data/credits/unk_8410B20.png b/data/credits/unk_8410B20.png new file mode 100644 index 0000000000000000000000000000000000000000..19ce2f796b3844aa2370e505c147c713ade7fadb GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^1whQf!VDxY?@zk|qznRlLR^6~I#5uMu(UJ`3JS`~ z%4%-zo-=33mMurmp1t?%+5i9lHGcOB0X3w0x;TbNOr1L6Ag_ZWhjZk?)wiu1H~-b1 z9@Q#;QFxNT!jFMX9E*=Il+F7kwBXt)<{NJ_#W}helCrISXWieDA-AMA|3c(>%gBKG z4V&f_Z+dWPb~Mxd(m54VHpea4mHM2?U*XQA97+ETM;Fwc7hel0 literal 0 HcmV?d00001 diff --git a/data/credits/unk_8410E10.pal b/data/credits/unk_8410E10.pal new file mode 100644 index 000000000..5667181bd --- /dev/null +++ b/data/credits/unk_8410E10.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +57 57 123 +172 123 65 +255 197 148 +222 148 115 +123 65 65 +82 106 156 +57 57 123 +115 164 197 +123 123 131 +238 238 255 +180 180 213 +255 106 74 +197 57 57 +255 222 90 +213 180 74 +0 0 0 diff --git a/data/credits/unk_8410E30.png b/data/credits/unk_8410E30.png new file mode 100644 index 0000000000000000000000000000000000000000..ec065cdb6f6fde088939ded5e1431f3e80e88155 GIT binary patch literal 2105 zcmV-92*&q`P)~sJUcugpt5isDqJ1Dx0K4a%o&BP2L;c zU7T><+XHk-9DuKo1kJ}cvwz=@?;FQi#J@+Ow$2OQYCo)T<8QXx?T2TKVELroPE%%< zKeTcLe>52ekkjKJA=R;<-EBdGq&t$G_Ja=ajAx#HEB3@E4< z8Npkhme)p_9(Uf5Nk9 z>%MJ`+H;&?U5(Pa=i0i;s;rChn%++D_dmO~EutXHRo6R*d*&b^m_a>-D=m z`!yfBuJ^71l z<^&TEa2bTZ3mKRjH$*`~3zmGpc{4#c6VR&!K{f#ac`CyoP)0ya5{99Q;5bQvP|66J z0p zP`X{MQwk3XFz)HAFH;H+#L(4)+wJq7!2|noz>nXhGdv)#DOCT*hzFd&-~oBj4IVVP z`wsCS-l4}G9r}%g6J#+IR#Q%hx1|y6nQ`k%mVA}WiuYt+cPs+m$I1)ETO`T0We%wR zL4+yvq~Y6+Hbem;#yF0H=HXll;e%iR*&FyrbTB7?1Xxmc6Zq|`!5nZc;pgyoViL@+ z0A>hHF^l&g!Or|KjDt{_kA1HZ+Db3N!%P6h*)qNqB3(S!TF#Lc;mZWJ5C=L_5m#@& zJ{+lx6Tl<0WjnNg#h$>QYEYy#vO(cs zgW~tPNDzpL+ecgK;x5skz_@h+U-c*gF>x{u$OeUp*5^SqA_!zAc%n9^RD%Lz`E)1; zRD;3@+JBPUWP`%Y(UEH{5DPPz?&lS$8gE*`pg2wUv>SYnp6Oz%4Z@uhr=W zMd6Or9^0U(N^g)gW_)1{;SQXo2G<;b#fcCEJCp#kG+#gt5vGL!gc1#iV-0;^m^~=6 z6pn>{kR(AEfWV$2#1=*jd=b{{ZzG_T2_TFL{a@8>b0FsEI7Wtv<{{{X02#;%LC&nt z0{j6Nv^ft!7-Q@k2I2o zUwGQzVFVhElI>s!2?FkAIk}W2P9TzDX~Mm(ca#0eK0^mf*qpF_ZU2T~-)A1bU1SH% zwDkcl0tI!QJe8BgRQ`zeF91G3KzECf4uA}pc9PB@gK8eK{zaxWD{wSCJbZ5405z;0U1j z-}>#*Nnb@aJSfOJQ2Yn)9(@%0(dhpCN(<$Zc8b|y>og3ainOqj))!iO(aCA1hEht) z$+#%~K(0<7oo=a15P0(fQFPt)Hy^e8@a)%I*OCJ3v3S(JTTAcvhwk?+rvhWzdU*b2 z=jw?|@tA0(pY)z~dn59;fa?DV`WHjXGG7Rcf8nkYDW3ZmLsDS;i(nu&sVU6%2EYUQ z-o@rXY~J<6%MgtNBOtod0;~I82t(th)xW^;M8P*_sGv6g;=4G$57k?bLuD(_*uL1u z+L{GWmMs3o%pE~*0$qUlukO1^jO~rF9~c{9-oHqahH+?S2`v7_i_H_6ecYMEjTzr8 zMb>cx53~PgwyL+}$1gV}*!_z}%(HQo5pn|bFIduC_!o=#@5h2bOniI% zixS;`Fa)BVw`qG~Mj)I$Vf+iuouR&6=P2r|AMtAjDNw}6MqY$5ob@d z`f78^+7llQ<+Q-q6U*(t%IywkPoRJCl(r{k{zZ@OKfLrWi1FHr2FB9lw>0Blc+3V% zQF-oPkaY+B3&rhBETDgZ0@lAkcVdSUI5WYRD}Ixifc7sy5RU`Kzrf9rKIdN;fzS9C z09q3$^0a?}TRd3*0tKvpfhU^tFD7x!`xoOz&gM%$XLqK!u^@|cc5hC2fzT5_3>bkv jnEK&=+P`4mWWE00tmM=C{RTp4DcRpadw3tc_vX!;_xsN8JB-caYecVipKAWjX21V21^lkx z?{B6=2Yn5EP5^)C_a9Qg#Yg>z!{J{x(RuRY;c#>F(;nKvCbT}tLwpG4zqt?u0dX1r zm+nFygeYMNQ3HS=gmCOI2v(LbU`;qH0d%qAA;5VdXTSp1g&pW2;4eB0z7#?awvEn$ z=VRz1SU^|n!Utkm!G)r$Rrx?v*MU$N@XAKhX{8EZ?hEmc#Iq%)uy)1{I^r3Akvc}g zJxZ-0Kmjh?_54MWpo=+nPX48mB-!`O?V)h<(cky%(dZLnyH(5bt>Nh3i9PzvIMt@3 z^6j-hy-2Ps{u2RG0EUCTt!4X~&&g#3;HRqel!h^MHL@i$$`?o~Rg|s+{Iu-(4 z%|%00qo{Mqca7OUS9Kx0#e?W5)7jrMAWAk^CD~sOb@u;_X&AWAJQ|IZ&i)^nx+tJv zG`a%W{~y@?hvW{xl|^%Mhl_#aK0JZ!znGe{vo*Z2Rb+p~e{1YxZFu8xol0QNQX;D$i@g9ph)l6g8#42r(Id3v>WG zmT2bbB#NjhOna}B9kA(#uXo9u&hy@b66rGSm1JC8M9yO#UoYkgM8~NDA%K|z2^GSe zDG=MX5#&sPtN>z8CNl+M17YsrWr4!R$_Hl(BtVbDS%D(Jt1(=SmvX9yqClaDQcO{x zUL3vovmD6Amx5aQ;ccy?riz}Q175Eu69?$HtmjKo|Vm=!2MU?lt4 z?j1WPGl7BVhfug{f7JrRHm@bGWyepphHrtuFe}QYqXs)$!|((L^1;sb+AdmN@M{(T zu;H-GV7XSH0xEf?mds|^m18nVy0hxRbL1ffKueg)?R&^ODM*m9@c0+)R-XVG+4Xkk zkx>Kz;DK(H*Q3@~W+esy2L-ddo=%OxIVn9RrPQ~|xK@^yNrA)Evm#T39Ts{Nv(We&)gZW-_kx^%%+k1jmS3k&~GF_#BA=KjS?K#jkbm-rXeGXKK4 zRpMU=my!NORCheezlfr@g~Xc~dv!m8j70bs)(`hPg7PnX_vYV(_Ae68*xtxeHBu)w z2n?ftabAQh-+lK4^)GzKWm^O181*ljPRa&j=lBHkFRU7~24i;z_b)tVWo}iaxPJjV z*U7R=MB-}-NX#DAS^$nu0q|_NnM8M-UMdk}R0W_}cVw$YyI zBhE7ZERLgl%uYi-mJgo!9gBH$`_sq@T(11x;GD^jwOu#1rL2G(@Js>9bIY>1Ay=^b^vhqlEXy|*nYCLTh;yr za@gM3e)4!&_!oE0r>z1&HQ=^R?wTJEU#U#LT2G>uaZiAJaA8GV4zI3nn8tvu?{O)w zX7FY@H31+WQvCsfT<#c46#ChL9{`YV2hPu`7Zz$VH0!nEH^U@GvwrGdprs^-&NX*_ zTqD~n?f4emK}^1uU+hgbNZ^-`O1^4%{^%k7;?Jj>pO+|;=hR7F5Oe=x9^Y`x6^M>g z1wsMe9{-|B`xmirX#ZkXf1vz}xbEOzJ{ARvw}tcw|Kgp4XzT=pe_{Q6|Ikr{f8k$y z=g>LA{fkDXBIO*R{)MhTs4!Qkf8jed_Ei`bE^_j*O$0Q3Nse-5JnYS4I)U&N(1rU=pxv%|4B#C2`j9%o8kt8t(BFLkL== zu&C@SjCPqlu~G8nWTjo=U-a(8q{h%XhXg?95JxrBI_Fn3@INXn{0EY3hL7Tdc|rgH N002ovPDHLkV1hyS{RRL4 literal 0 HcmV?d00001 diff --git a/data/credits/unk_84129A0.pal b/data/credits/unk_84129A0.pal new file mode 100644 index 000000000..ac601cddf --- /dev/null +++ b/data/credits/unk_84129A0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +49 49 49 +255 222 205 +238 180 148 +197 139 106 +106 74 74 +222 164 74 +197 123 8 +49 65 82 +205 139 255 +115 82 131 +156 106 172 +106 123 131 +197 205 180 +238 74 24 +255 255 255 +0 0 0 diff --git a/data/credits/unk_84129C0.png b/data/credits/unk_84129C0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9c61c888420f37af6894127e3870e6e21d0ed1 GIT binary patch literal 1162 zcmV;51a$L&uo88$tg@pAe*m#PTEtcoU4EhPG-*`=sNX*q7zLzc8WJ&%deC z?~~u1?KJoC?~bubMq@xEEyg(as872c|HLJLo51%u=K%z|p|7HkYFt}9?5jL1aMM%e zRfRd80q3FL_xlL26u|p_;13XxUqHX(duWUm5FGd}8iI8=KMgKA5U~54UmpJc4lHn^ zhPc{yb|Jtd=e>RB4GgeTezfnrO91oJR_lPsGj{iF58miiM5Ec5$~Uttn^7f3SvHEO z60@`Vww+jr6Utw(eA{meYZRcjGNmrk3> zpUg8oYTHpXc6McJ@un$nwc5>SEcYDek#lVZT5~DCyK%I z0-Fve@%vv;Lwq%fKO+G#iO&TI{Id;MlEAGHB2K3mSSCW8r%#Cr>GU>D2p~|s@FfQF3L?P|%NF9VA54O3C_6K{fZ3aqz_97=yc1#%$Z-T`c2Fss9Z;P3)>ayI?|7Wc092iyEwZE1ga_1yegt^MJXPXSQ+ zL(?-3!8ZN?ucY>eJZgU^qV@+3)cuFL|4_lG_b)29e}Put(jS_Cf(t4A!5g6^q40;} zmmdJ2@CWOKYtCzbK;Np`AJ#za59@eM{Gm$y2fTO}{RjN8>i)w$i+ca!|J}a;q4zJ) z9JcvGW1Bzps&@VX-R;sJ;PHmiAJFjz?GNa9gZ2k>yg~Z|INq@F2Y9@p^apUfVdD?z zdDZ?<0+sNGy8loBb^qaBMZJIV(DpCDB)9p4RW*M=QJo+0bp?#l>d^O;s5{u07*qoM6N<$g2ACSdH?_b literal 0 HcmV?d00001 diff --git a/data/credits/unk_8413318.pal b/data/credits/unk_8413318.pal new file mode 100644 index 000000000..284b70b77 --- /dev/null +++ b/data/credits/unk_8413318.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +131 197 0 +74 139 0 +32 115 0 +0 82 0 +106 172 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/data/credits/unk_8413338.png b/data/credits/unk_8413338.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa79c06adff1041bbb4b6a28804ce8eb7169f4b GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0vp^4h#&83@pq**2j!oQy^s!;1l8sq??a2cy%)<6f-ac zF=VX)3g83tIXo5s%0PSw;2}lH_eY zcLm@1ujTw%ebTjAUFVK{iDsR3VZn#1%u}^qrQK$K_;+E{)P!rh0+$!>ZL2%6zx`5* z-hb)41`XOrt9$%+zUeADyS8ul)M;X}(&b^V4Q9B%VwkhFR7Q4D>jhR*1{t2D+003O zQ<#1j{t!8>G9z-$@`Ep~*{yK<{@pz`J7RC|-|1i5uj>kJwQA>Ia)zUiUuCnwqxzo? zx?9p+o;5F@-0pUkLw|RnU$Ck%@)s$c4f8!DJ z&-MqxuObpyp6DgDz4|giBCrT(Zv5KMKQ}y=zjnIr)YJ1n9WGr{x~?=||H7}>c;`b| zb9X&3l1OrKIiV)6@RRRh^NU+nN7y&-&v^dJZ&Kv9U_JTA&hoj8+jL+3X213MTF7l_ z8|4bS7PgY~m*3vYcL*M0zqqyZjQy4Sy7$E2-l^N3F|GEd#qpmHvfP%uYWK2B>`63H z`^mv^^+V7}^$qGGNiDAu@_GIS|4`VqrEk7|l-ri)-3K_HfHXb-u+Ts$baFk1U1H3k viGmY$d)OtuW>fyrUNP;#PlbPuC60fYjEgVdwft-91xhBKu6{1-oD!M<)%Ffr literal 0 HcmV?d00001 diff --git a/data/credits/unk_8413854.pal b/data/credits/unk_8413854.pal new file mode 100644 index 000000000..46d4f48dd --- /dev/null +++ b/data/credits/unk_8413854.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 180 98 +172 164 74 +156 148 49 +123 115 24 +222 213 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 0 255 diff --git a/data/credits/unk_8413874.png b/data/credits/unk_8413874.png new file mode 100644 index 0000000000000000000000000000000000000000..18e34725f85b8703a824444ea39c9b6fc3dc46d4 GIT binary patch literal 632 zcmeAS@N?(olHy`uVBq!ia0vp^4h#&83@pq**2j!oQy^s!;1l8sq|w0MElF#Zc+Ht& zSY0e}?`ku$?0<&;Ta4as1qv~i1o;IsI6S+N24sKpba4#HXnZ@FWxzlrF5$dpld%Jb4(e%rtp3%1q2a&3%JV9Pir+!>yAg}vAL zf$#)AueX0~SK0gTs5qzS=aly7ugM>UySnCQRRYi6bk`HwI`7rj>0gh$PLnvb?Qg#TnBz0OprW2v&VI!qk@&9ln#6iOZucFAJ<47`7-cs4-!ks})R$myka}~Iyxxw$hD*-w zDoeu;S}`78th}K;(*A%Iqqn)0QpofFKOI*Y^!_oKtNiZg!KW83n*JV`l6tys!`m`_ zLGSYxN?)6Q&;6~pM(=>&4d(CSm*$!O;Cs+v{)17^_Cxd1-D_1|{mEH%J^q^T`q_yZ z(chb0-56(FYBoMy@h{;}{}I80N{>_XEe_p(!dkcE%1pzsZ{qyt<&8R%>aT-uRpov%o|k_2yRmM&0z|!peFe}D%QG#k znAUA;wwPG)oWc-f(6L$V6kvb;${qF-g^~W6Fn1dVQr+=*8AaqlK50pYYUHx3v IIVCg!0PG|h2mk;8 literal 0 HcmV?d00001 diff --git a/data/credits/unk_8413D98.pal b/data/credits/unk_8413D98.pal new file mode 100644 index 000000000..a3476d0d4 --- /dev/null +++ b/data/credits/unk_8413D98.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +131 197 0 +74 139 0 +32 115 0 +0 82 0 +106 172 0 +189 180 98 +172 164 74 +156 148 49 +123 115 24 +222 213 131 +222 222 222 +205 205 205 +189 189 189 +238 238 238 +131 131 131 diff --git a/data/credits/unk_8413DB8.png b/data/credits/unk_8413DB8.png new file mode 100644 index 0000000000000000000000000000000000000000..5b10bd69994fb0ff99691e46bc79374b48487027 GIT binary patch literal 786 zcmV+t1MU2YP)%7l0HSu+V>HYSNE{?mX0* zDoQ_czZ}x(gl6s`2~88!E@y-4r&|-tH6Dymr-RzTWV8z*ORgC-QTyF=w%^YeV}pFe z54D@!ICfU)utv1_W1ej+n%4~yI3>;FIB<$P-IE9-R4dGK@4(u6C za*Zh6W+)Vt0uuFcp?s-3?8#%RQonv!Z#?d*s#u@p1O3zY!B+_%4Ef<1AHa8-5qN0` ze2DB%Ie-xbK0tu8s+(7t575QUE8;_-%m4TQ(u|nWQcFfuK2&Y2&+~zd!;DbI5!UMi zBP1UN>ARH?9C2%w!S_%2K+|}T5Ay;0`P#Jnu1@$s-79Q8PmGfrpTc;LGk-e|gQ5;{*BsVMUTWALN;2rch1T=afqQ z`eD8CxT~sSeIFlipcAw|{9mc{cH`8fhlgjGWKPZ}10yJhJ?Q|!h%6r@Blt3}A7IT> z=EL0|7?k-Cf47JVMWx;)jHrC5+E}0D!?NdhZ^1YV?yQ&KH2j#c1s}eyW QZvX%Q07*qoM6N<$f?;QHRsaA1 literal 0 HcmV?d00001 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 26609158f..4406ca318 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -230,59 +230,6 @@ gUnknown_840C39C:: @ 840C39C gUnknown_840C3BC:: @ 840C3BC .incbin "baserom.gba", 0x40C3BC, 0x1E8 -gUnknown_840C5A4:: @ 840C5A4 - .incbin "baserom.gba", 0x40C5A4, 0xC - -gUnknown_840C5B0:: @ 840C5B0 - .incbin "baserom.gba", 0x40C5B0, 0x20 - -gUnknown_840C5D0:: @ 840C5D0 - .incbin "baserom.gba", 0x40C5D0, 0x20 - -gUnknown_840C5F0:: @ 840C5F0 - .incbin "baserom.gba", 0x40C5F0, 0x20 - -gUnknown_840C610:: @ 840C610 - .incbin "baserom.gba", 0x40C610, 0x20 - -gUnknown_840C630:: @ 840C630 - .incbin "baserom.gba", 0x40C630, 0x20 - -gUnknown_840C650:: @ 840C650 - .incbin "baserom.gba", 0x40C650, 0x404 - -gUnknown_840CA54:: @ 840CA54 - .incbin "baserom.gba", 0x40CA54, 0x138 - -gUnknown_840CB8C:: @ 840CB8C - .incbin "baserom.gba", 0x40CB8C, 0x69C - -gUnknown_840D228:: @ 840D228 - .incbin "baserom.gba", 0x40D228, 0xF30 - -gUnknown_840E158:: @ 840E158 - .incbin "baserom.gba", 0x40E158, 0x7AC - -gUnknown_840E904:: @ 840E904 - .incbin "baserom.gba", 0x40E904, 0x93C - -gUnknown_840F240:: @ 840F240 - .incbin "baserom.gba", 0x40F240, 0x704 - -gUnknown_840F944:: @ 840F944 - .incbin "baserom.gba", 0x40F944, 0x854 - -gUnknown_8410198:: @ 8410198 - .incbin "baserom.gba", 0x410198, 0x41C - -gUnknown_84105B4:: @ 84105B4 - .incbin "baserom.gba", 0x4105B4, 0x728 - -gUnknown_8410CDC:: @ 8410CDC - .incbin "baserom.gba", 0x410CDC, 0x18 - - @ strings - .section .rodata.841EE44 .align 2 gUnknown_841EE44:: @ 841EE44 diff --git a/data/graphics.s b/data/graphics.s index 4b00c1c4b..02d111874 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16344,13 +16344,16 @@ gUnknown_8EAAA6C:: @ 8EAAA6C .incbin "baserom.gba", 0xEAAA6C, 0xAC gUnknown_8EAAB18:: @ 8EAAB18 - .incbin "baserom.gba", 0xEAAB18, 0x80 @UNKNOWN + .incbin "graphics/credits/charizard.gbapal" + .incbin "graphics/credits/venusaur.gbapal" + .incbin "graphics/credits/blastoise.gbapal" + .incbin "graphics/credits/pikachu.gbapal" gUnknown_8EAAB98:: @ 8EAAB98 - .incbin "baserom.gba", 0xEAAB98, 0x774 + .incbin "graphics/credits/unk_8EAAB98.4bpp.lz" gUnknown_8EAB30C:: @ 8EAB30C - .incbin "baserom.gba", 0xEAB30C, 0x3B8 + .incbin "graphics/credits/unk_8EAB30C.bin.lz" @ title_screen gGraphics_TitleScreen_PokemonFireRedLogoPals:: @ 8EAB6C4 @@ -16387,13 +16390,13 @@ gGraphics_TitleScreen_BlankObjTiles:: @ 8EAE4A8 .incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz" gUnknown_8EAE528:: @ 8EAE528 - .incbin "baserom.gba", 0xEAE528, 0x20 @UNKNOWN + .incbin "graphics/credits/unk_8EAE548.gbapal" gUnknown_8EAE548:: @ 8EAE548 - .incbin "baserom.gba", 0xEAE548, 0x3B8 + .incbin "graphics/credits/unk_8EAE548.4bpp.lz" gUnknown_8EAE900:: @ 8EAE900 - .incbin "baserom.gba", 0xEAE900, 0x100 + .incbin "graphics/credits/unk_8EAE548.bin.lz" gUnknown_8EAEA00:: @ 8EAEA00 .incbin "baserom.gba", 0xEAEA00, 0x20 @UNKNOWN diff --git a/data/maps/IndigoPlateau_Exterior/scripts.inc b/data/maps/IndigoPlateau_Exterior/scripts.inc index 873224926..8e7705650 100644 --- a/data/maps/IndigoPlateau_Exterior/scripts.inc +++ b/data/maps/IndigoPlateau_Exterior/scripts.inc @@ -59,7 +59,7 @@ EventScript_167264:: @ 8167264 setvar VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 0 removeobject 1 removeobject 2 - special sub_80F39B4 + special Special_Credits waitstate releaseall end diff --git a/data/specials.inc b/data/specials.inc index cdd41f50d..2070469e7 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -430,7 +430,7 @@ gSpecials:: @ 815FD60 def_special sub_814EA7C def_special sub_80CCB94 def_special sub_80CCCF8 - def_special sub_80F39B4 + def_special Special_Credits def_special sub_8153810 def_special sub_809D764 def_special sub_809D8C0 diff --git a/data/strings.s b/data/strings.s index 4f6b40d85..7f9cede93 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3323,260 +3323,345 @@ gUnknown_841D18D:: @ 841D18D gUnknown_841D198:: @ 841D198 .string "Pokémon FireRed Version\nStaff$" -gUnknown_841D1B6:: @ 0x841D1B6 - .string " Pokémon LeafGreen Version\nStaff$" + .align 2 +gUnknown_841D1B8:: @ 0x841D1B6 + .string "Pokémon LeafGreen Version\nStaff$" + .align 2 gUnknown_841D1D8:: @ 0x841D1D8 .string "\n\nDirector\n\n\n\n$" -gUnknown_841D1E7:: @ 0x841D1E7 - .string " \n\n\nJunichi Masuda\n\n\n$" + .align 2 +gUnknown_841D1E8:: @ 0x841D1E7 + .string "\n\n\nJunichi Masuda\n\n\n$" -gUnknown_841D1FD:: @ 0x841D1FD - .string " \nArt Director\n\nBattle Director\n\n\n$" + .align 2 +gUnknown_841D200:: @ 0x841D1FD + .string "\nArt Director\n\nBattle Director\n\n\n$" -gUnknown_841D222:: @ 0x841D222 - .string " \n\nKen Sugimori\n\nShigeki Morimoto\n\n$" + .align 2 +gUnknown_841D224:: @ 0x841D222 + .string "\n\nKen Sugimori\n\nShigeki Morimoto\n\n$" -gUnknown_841D247:: @ 0x841D247 - .string " Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$" + .align 2 +gUnknown_841D248:: @ 0x841D247 + .string "Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$" -gUnknown_841D281:: @ 0x841D281 - .string " \nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$" + .align 2 +gUnknown_841D284:: @ 0x841D281 + .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$" -gUnknown_841D2B1:: @ 0x841D2B1 - .string " Programmers\n\n\n\n\n$" + .align 2 +gUnknown_841D2B4:: @ 0x841D2B1 + .string "Programmers\n\n\n\n\n$" -gUnknown_841D2C5:: @ 0x841D2C5 - .string " \nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$" + .align 2 +gUnknown_841D2C8:: @ 0x841D2C5 + .string "\nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$" -gUnknown_841D312:: @ 0x841D312 - .string " System Programmers\n\n\n\n\n\n$" + .align 2 +gUnknown_841D314:: @ 0x841D312 + .string "System Programmers\n\n\n\n\n\n$" -gUnknown_841D32D:: @ 0x841D32D - .string " \nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$" + .align 2 +gUnknown_841D330:: @ 0x841D32D + .string "\nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$" -gUnknown_841D36D:: @ 0x841D36D - .string " Graphic Designers\n\n\n\n\n\n$" + .align 2 +gUnknown_841D370:: @ 0x841D36D + .string "Graphic Designers\n\n\n\n\n\n$" + .align 2 gUnknown_841D388:: @ 0x841D388 .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$" -gUnknown_841D3BE:: @ 0x841D3BE - .string " \nGraphic Designers\n\n\n\n\n$" + .align 2 +gUnknown_841D3C0:: @ 0x841D3BE + .string "\nGraphic Designers\n\n\n\n\n$" + .align 2 gUnknown_841D3D8:: @ 0x841D3D8 .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$" -gUnknown_841D3FB:: @ 0x841D3FB - .string " \nMusic Composition\n\n\n\n\n$" + .align 2 +gUnknown_841D3FC:: @ 0x841D3FB + .string "\nMusic Composition\n\n\n\n\n$" + .align 2 gUnknown_841D414:: @ 0x841D414 .string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$" + .align 2 gUnknown_841D434:: @ 0x841D434 .string "\n\nSound Effects\n\n\n\n$" + .align 2 gUnknown_841D448:: @ 0x841D448 .string "\n\n\nGo Ichinose\n\n\n$" -gUnknown_841D45A:: @ 0x841D45A - .string " \nGame Designers\n\n\n\n\n$" + .align 2 +gUnknown_841D45C:: @ 0x841D45A + .string "\nGame Designers\n\n\n\n\n$" -gUnknown_841D471:: @ 0x841D471 - .string " \n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$" + .align 2 +gUnknown_841D474:: @ 0x841D471 + .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$" -gUnknown_841D4A1:: @ 0x841D4A1 - .string " \nGame Designers\n\n\n\n\n$" + .align 2 +gUnknown_841D4A4:: @ 0x841D4A1 + .string "\nGame Designers\n\n\n\n\n$" -gUnknown_841D4B9:: @ 0x841D4B9 - .string " \n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$" + .align 2 +gUnknown_841D4BC:: @ 0x841D4B9 + .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$" -gUnknown_841D4ED:: @ 0x841D4ED - .string " \nGame Scenario\n\n\n\n\n$" + .align 2 +gUnknown_841D4F0:: @ 0x841D4ED + .string "\nGame Scenario\n\n\n\n\n$" + .align 2 gUnknown_841D504:: @ 0x841D504 .string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$" + .align 2 gUnknown_841D524:: @ 0x841D524 .string "\nScript Designer\n\nMap Designer\n\n\n$" -gUnknown_841D546:: @ 0x841D546 - .string " \n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$" + .align 2 +gUnknown_841D548:: @ 0x841D546 + .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$" -gUnknown_841D56B:: @ 0x841D56B - .string " \nParametric Designers\n\n\n\n\n$" + .align 2 +gUnknown_841D56C:: @ 0x841D56B + .string "\nParametric Designers\n\n\n\n\n$" -gUnknown_841D587:: @ 0x841D587 - .string " \n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$" + .align 2 +gUnknown_841D588:: @ 0x841D587 + .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$" -gUnknown_841D5B7:: @ 0x841D5B7 - .string " \n\nPOKéDEX Text\n\n\n\n$" + .align 2 +gUnknown_841D5B8:: @ 0x841D5B7 + .string "\n\nPOKéDEX Text\n\n\n\n$" -gUnknown_841D5CB:: @ 0x841D5CB - .string " \n\n\nKenji Matsushima\n\n\n$" + .align 2 +gUnknown_841D5CC:: @ 0x841D5CB + .string "\n\n\nKenji Matsushima\n\n\n$" -gUnknown_841D5E3:: @ 0x841D5E3 - .string " POKéMON Designers\n\n\n\n\n\n$" + .align 2 +gUnknown_841D5E4:: @ 0x841D5E3 + .string "POKéMON Designers\n\n\n\n\n\n$" + .align 2 gUnknown_841D5FC:: @ 0x841D5FC .string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$" + .align 2 gUnknown_841D640:: @ 0x841D640 .string "POKéMON Designers\n\n\n\n\n\n$" + .align 2 gUnknown_841D658:: @ 0x841D658 .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$" -gUnknown_841D697:: @ 0x841D697 - .string " POKéMON Designers\n\n\n\n\n\n$" + .align 2 +gUnknown_841D698:: @ 0x841D697 + .string "POKéMON Designers\n\n\n\n\n\n$" + .align 2 gUnknown_841D6B0:: @ 0x841D6B0 .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$" -gUnknown_841D6E9:: @ 0x841D6E9 - .string " Supporting Programmers\n\n\n\n$" + .align 2 +gUnknown_841D6EC:: @ 0x841D6E9 + .string "Supporting Programmers\n\n\n\n$" -gUnknown_841D707:: @ 0x841D707 - .string " \nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$" + .align 2 +gUnknown_841D708:: @ 0x841D707 + .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$" + .align 2 gUnknown_841D74C:: @ 0x841D74C .string "\n\nNCL Product Testing\n\n\n\n$" -gUnknown_841D766:: @ 0x841D766 - .string " \n\n\nNCL Super Mario Club\n\n\n$" + .align 2 +gUnknown_841D768:: @ 0x841D766 + .string "\n\n\nNCL Super Mario Club\n\n\n$" -gUnknown_841D783:: @ 0x841D783 - .string " Special Thanks\n\n\n\n\n\n$" + .align 2 +gUnknown_841D784:: @ 0x841D783 + .string "Special Thanks\n\n\n\n\n\n$" -gUnknown_841D799:: @ 0x841D799 - .string " \nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$" + .align 2 +gUnknown_841D79C:: @ 0x841D799 + .string "\nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$" -gUnknown_841D7DB:: @ 0x841D7DB - .string " Special Thanks\n\n\n\n\n\n$" + .align 2 +gUnknown_841D7DC:: @ 0x841D7DB + .string "Special Thanks\n\n\n\n\n\n$" -gUnknown_841D7F1:: @ 0x841D7F1 - .string " \nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$" + .align 2 +gUnknown_841D7F4:: @ 0x841D7F1 + .string "\nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$" -gUnknown_841D833:: @ 0x841D833 - .string " Special Thanks\n\n\n\n\n\n$" + .align 2 +gUnknown_841D834:: @ 0x841D833 + .string "Special Thanks\n\n\n\n\n\n$" -gUnknown_841D849:: @ 0x841D849 - .string " \nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$" + .align 2 +gUnknown_841D84C:: @ 0x841D849 + .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$" + .align 2 gUnknown_841D894:: @ 0x841D894 .string "\n\nBraille Code Check\n\n\n\n$" -gUnknown_841D8AD:: @ 0x841D8AD - .string " \n\n\nJapan Braille Library\n\n\n$" + .align 2 +gUnknown_841D8B0:: @ 0x841D8AD + .string "\n\n\nJapan Braille Library\n\n\n$" + .align 2 gUnknown_841D8CC:: @ 0x841D8CC .string "Information Supervisors\n\n\n\n\n\n$" -gUnknown_841D8EA:: @ 0x841D8EA - .string " \nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$" + .align 2 +gUnknown_841D8EC:: @ 0x841D8EA + .string "\nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$" -gUnknown_841D935:: @ 0x841D935 - .string " Coordinators\n\n\n\n\n\n$" + .align 2 +gUnknown_841D938:: @ 0x841D935 + .string "Coordinators\n\n\n\n\n\n$" -gUnknown_841D94B:: @ 0x841D94B - .string " \nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$" + .align 2 +gUnknown_841D94C:: @ 0x841D94B + .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$" -gUnknown_841D98A:: @ 0x841D98A - .string " \nTask Managers\n\n\n\n\n$" + .align 2 +gUnknown_841D98C:: @ 0x841D98A + .string "\nTask Managers\n\n\n\n\n$" + .align 2 gUnknown_841D9A0:: @ 0x841D9A0 .string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$" + .align 2 gUnknown_841D9C4:: @ 0x841D9C4 .string "\nProducers\n\n\n\n\n$" + .align 2 gUnknown_841D9D4:: @ 0x841D9D4 .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$" -gUnknown_841DA06:: @ 0x841DA06 - .string " \n\nExecutive Director\n\n\n\n$" + .align 2 +gUnknown_841DA08:: @ 0x841DA06 + .string "\n\nExecutive Director\n\n\n\n$" -gUnknown_841DA21:: @ 0x841DA21 - .string " \n\n\nSatoshi Tajiri\n\n\n$" + .align 2 +gUnknown_841DA24:: @ 0x841DA21 + .string "\n\n\nSatoshi Tajiri\n\n\n$" -gUnknown_841DA39:: @ 0x841DA39 - .string " \n\nExecutive Producer\n\n\n\n$" + .align 2 +gUnknown_841DA3C:: @ 0x841DA39 + .string "\n\nExecutive Producer\n\n\n\n$" -gUnknown_841DA55:: @ 0x841DA55 - .string " \n\n\nSatoru Iwata\n\n\n$" + .align 2 +gUnknown_841DA58:: @ 0x841DA55 + .string "\n\n\nSatoru Iwata\n\n\n$" -gUnknown_841DA6B:: @ 0x841DA6B - .string " \n\nExecutive Producer\n\n\n\n$" + .align 2 +gUnknown_841DA6C:: @ 0x841DA6B + .string "\n\nExecutive Producer\n\n\n\n$" -gUnknown_841DA85:: @ 0x841DA85 - .string " \n\n\nTsunekaz Ishihara\n\n\n$" + .align 2 +gUnknown_841DA88:: @ 0x841DA85 + .string "\n\n\nTsunekaz Ishihara\n\n\n$" + .align 2 gUnknown_841DAA0:: @ 0x841DAA0 .string "\nEnglish Version Coordinators\n\n\n\n\n$" -gUnknown_841DAC3:: @ 0x841DAC3 - .string " \n\nHiro Nakamura\nSeth McMahill\n\n\n$" + .align 2 +gUnknown_841DAC4:: @ 0x841DAC3 + .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$" -gUnknown_841DAE5:: @ 0x841DAE5 - .string " \nTranslator\n\nText Editor\n\n\n$" + .align 2 +gUnknown_841DAE8:: @ 0x841DAE5 + .string "\nTranslator\n\nText Editor\n\n\n$" + .align 2 gUnknown_841DB04:: @ 0x841DB04 .string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$" + .align 2 gUnknown_841DB28:: @ 0x841DB28 .string "Programmers\n\n\n\n\n\n$" -gUnknown_841DB3A:: @ 0x841DB3A - .string " \nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$" + .align 2 +gUnknown_841DB3C:: @ 0x841DB3A + .string "\nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$" -gUnknown_841DB7B:: @ 0x841DB7B - .string " \nEnvironment を Tool Programmers\n\n\n\n\n$" + .align 2 +gUnknown_841DB7C:: @ 0x841DB7B + .string "\nEnvironment を Tool Programmers\n\n\n\n\n$" -gUnknown_841DBA1:: @ 0x841DBA1 - .string " \n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$" + .align 2 +gUnknown_841DBA4:: @ 0x841DBA1 + .string "\n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$" -gUnknown_841DBDA:: @ 0x841DBDA - .string " NOA Product Testing\n\n\n\n\n\n$" + .align 2 +gUnknown_841DBDC:: @ 0x841DBDA + .string "NOA Product Testing\n\n\n\n\n\n$" -gUnknown_841DBF6:: @ 0x841DBF6 - .string " \nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$" + .align 2 +gUnknown_841DBF8:: @ 0x841DBF6 + .string "\nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$" -gUnknown_841DC29:: @ 0x841DC29 - .string " Braille Code Check\n\n\n\n\n\n$" + .align 2 +gUnknown_841DC2C:: @ 0x841DC29 + .string "Braille Code Check\n\n\n\n\n\n$" -gUnknown_841DC45:: @ 0x841DC45 - .string " \nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$" + .align 2 +gUnknown_841DC48:: @ 0x841DC45 + .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$" + .align 2 gUnknown_841DCAC:: @ 0x841DCAC .string "\nBraille Code Check\n\n\n\n\n$" -gUnknown_841DCC5:: @ 0x841DCC5 - .string " \n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$" + .align 2 +gUnknown_841DCC8:: @ 0x841DCC5 + .string "\n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$" -gUnknown_841DD05:: @ 0x841DD05 - .string " Special Thanks\n\n\n\n\n\n$" + .align 2 +gUnknown_841DD08:: @ 0x841DD05 + .string "Special Thanks\n\n\n\n\n\n$" -gUnknown_841DD1D:: @ 0x841DD1D - .string " \nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$" + .align 2 +gUnknown_841DD20:: @ 0x841DD1D + .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$" + .align 2 gUnknown_841DD64:: @ 0x841DD64 .string "Special Thanks\n\n\n\n\n\n$" -gUnknown_841DD79:: @ 0x841DD79 - .string " \nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$" + .align 2 +gUnknown_841DD7C:: @ 0x841DD79 + .string "\nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$" -gUnknown_841DDC6:: @ 0x841DDC6 - .string " \nBraille Code Check\n\n\n\n\n$" + .align 2 +gUnknown_841DDC8:: @ 0x841DDC6 + .string "\nBraille Code Check\n\n\n\n\n$" -gUnknown_841DDE1:: @ 0x841DDE1 - .string " \n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$" + .align 2 +gUnknown_841DDE4:: @ 0x841DDE1 + .string "\n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$" -gUnknown_841DE21:: @ 0x841DE21 - .string " \n\nGraphic Designer\n\n\n\n$" + .align 2 +gUnknown_841DE24:: @ 0x841DE21 + .string "\n\nGraphic Designer\n\n\n\n$" -gUnknown_841DE3B:: @ 0x841DE3B - .string " \n\n\nAkira Kinashi\n\n\n$" + .align 2 +gUnknown_841DE3C:: @ 0x841DE3B + .string "\n\n\nAkira Kinashi\n\n\n$" gJPText_MysteryGift:: @ 841DE50 .string "$" diff --git a/graphics/credits/blastoise.pal b/graphics/credits/blastoise.pal new file mode 100644 index 000000000..c2b4afe7c --- /dev/null +++ b/graphics/credits/blastoise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +148 197 246 +131 180 246 +106 164 246 +90 148 255 +57 98 164 +24 49 82 +172 222 246 +131 172 197 +98 131 148 +65 82 98 +32 41 49 +16 98 255 +8 65 164 +0 32 82 +0 0 0 diff --git a/graphics/credits/charizard.pal b/graphics/credits/charizard.pal new file mode 100644 index 000000000..9ad2a106e --- /dev/null +++ b/graphics/credits/charizard.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +230 98 90 +213 65 82 +189 32 74 +172 0 74 +115 0 49 +57 0 24 +255 131 98 +197 98 74 +148 74 57 +98 49 32 +49 24 16 +255 0 8 +164 0 0 +82 0 0 +0 0 0 diff --git a/graphics/credits/pikachu.pal b/graphics/credits/pikachu.pal new file mode 100644 index 000000000..32aaf1904 --- /dev/null +++ b/graphics/credits/pikachu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 230 57 +255 213 41 +255 189 16 +255 172 0 +164 115 0 +82 57 0 +255 255 82 +213 213 65 +180 180 57 +148 148 41 +106 106 32 +255 90 0 +164 57 0 +82 24 0 +0 0 0 diff --git a/graphics/credits/unk_8EAAB98.png b/graphics/credits/unk_8EAAB98.png new file mode 100644 index 0000000000000000000000000000000000000000..b1389a64a7abc304993b0dc6368aac5b93600f6f GIT binary patch literal 1217 zcmV;y1U~zTP)f6zPt+5vElghM1eXztwjylmdw zCIY(f%LD}TH|N_T#qhHT;%;;wyLJRnxDbM{?X&sIej!{41k3&C{P8$_*b*0l42u1G z>VA{@%YHd`NQ6;_1*EjmKAY!n-Uk<6dP0DJWwbx`JqJ9EZ#EO*fB>ryKIxu(GpgXG zH+uj`_I-~4tI`D&Lh%1vj{&|GCLIBwh4ww|fCeD|OKjh>FJ69X0MFkDd-_dFWnc*? zUuLO?rgg&XOZSqs6($3e0(o=fDiNAHP^75u_W6N#lnBM2d6DGq1z;*R=2=;$#22;P z=^w>FQPP-%Z1PMMn;5F8T~1*3jYFO*a1i$QlWzhLCmp6hIb9|5^A%2Ae%d3?a>De^ zpRZ7Z=yO9=5mWZC@chz5Oa$z}KDnRmwb{4D4y69$^LLgmi~M1k?!(%#u+J>|fs;NwK{H;HHrtYsMia3H)^hxSm0M8eSlZl7|D zCzq!wg5&_V&j6^wn8X5EK|;F=@2KnF$-@iJE= z(MJFs2p@ojHUeIA1RvOeoCUtr`zlBh7!jChEF@4OumG!61wMi^cEAE;4Wk6m0SoZn z5DByhEI`8m(B1?@4aYjxk_b26u{}`@FPa2s>(7(0wU9RRKUVHrW3G{{|3~p4*`| zjU4d&P$7|0{xqPIfVsiMhBE_v>1T&Cn@|{F-9Iv+&?$`r4*l$u)|i0jer{4_)A|mG zU{C7|!1K8F?{+qTE^Pwv?90qv+UVjc0P8p;Q~+Dvc_k$mEI_%z5CES^1HiX960m*{ zpyV<6paa-8PpTLY2B6$%Vt`QxVypWpfTE%e;M;vA1|7f;9Mu4EUKpehd3>H8f|7!u_0%BJWD6c?J3>H9M!c+p}H4t#Y1jvi1N`Sly zlP;J5a2Zzz0M~({o^1fQkmNzw0CXi<1wfawT@?Ub3*Tx0@M8K_0l-(|w+aBhobMh7 fDE~ds%>w=aP6agUn8BH=00000NkvXXu0mjf4|Nl^ literal 0 HcmV?d00001 diff --git a/graphics/credits/unk_8EAB30C.bin b/graphics/credits/unk_8EAB30C.bin new file mode 100644 index 0000000000000000000000000000000000000000..c072a95644a69fe12d712c4e72f0f1ab6a556839 GIT binary patch literal 1280 zcmaLWM_9-K0EY2bUdjp~v+RuQ8L~$j2ifaTWR(LMsT{1Ln?$%t=8YuWka?4lx@B`i zLN{&>o`3K4dw$0c{?&>QS|e>}ODJKqqn%-f+SWE|YeQ`1-#MTzbR~jrbf*WA^rRQP z>1{828fg!^+sz2O+9l8rU?77S%n*hW!!U+3f)NgPm@y7@h=U#EKnDc+ag1jI6Pd(h zrZAN_rZLSpr#i*SPI96X9PhY5KZm)@V?GO5$RZM0Od^RcHo-+Mbb<4o=UnFm`X!{Y zlw~Yu1uI#_YSysE)vj`-D_rg}mzwI5K%YiB8`ww&o7l`2wz7?FZgq>B-DHLv-C(+D zfqn-&$z~V3*~4CP*hen8?lZ@|?s2!f%yy?c0{sCFa)`qmp@2e;a*QI1JmyggE%1nk zJ>)?T1p4C?bAl31a*9$;bB42=^^B)2^^_+q@r1=55A^3K<2>bD;3Ai}%oVP3)hk~1 zk{7*Tx#unOT%f9dCQfDsNip4J*9vwLpKDd)%j*2R!5vk9opV zp8CYcKJuXttoFY5yc_7BQNwdy@RC>5@|rs8skhG8*80kqzVNvyx}eHc+Uqu z@`=xU;ftUB3C%^bjGtK_?mp^UthmC&sn_mMxw5J0d z=|ni4Ng|mPQcO0<&W78`j&`tp3;%~c^ratBMAM(OtYbavUFTZ+8*P;R>}#JE{YYXN z#c0MbmQ1qP&UUlRbgW|>?I>d%*`lA$4C0x|EM}8OKKt2kzIo1emNSiahSUG^e*hg< BuHgUx literal 0 HcmV?d00001 diff --git a/graphics/credits/unk_8EAE548.bin b/graphics/credits/unk_8EAE548.bin new file mode 100644 index 0000000000000000000000000000000000000000..8830b60c3266993a6d24fb5035edbbdf3a2f0404 GIT binary patch literal 2048 ucmZQ%U?dwd00H^B89~}d^-~Z6qv1E2en#^j`5`cxe@62U`Kf1k)L#G;Ap^kx literal 0 HcmV?d00001 diff --git a/graphics/credits/unk_8EAE548.png b/graphics/credits/unk_8EAE548.png new file mode 100644 index 0000000000000000000000000000000000000000..297827436c4897a0fee81cce7941444fb5b6ce92 GIT binary patch literal 908 zcmV;719SX|P)mD2m9UwX;HSaQ6@4ie!@Qimx8PE zGOvMui(&ZYH7_eKppR;JZk784k~sml1=tY|IpJ3c3&0jW-BQ8{91$%g_&s2fL7-Db zuKgA;F0t-@0WMdx{DhX={E|NR7jdr2_Q22W4X|iEsFRk(z#X1y(cqc)Vv_9Xo9>ce zX>j$Qfw%{#VoInlfHw4?4Q?{EPf|Ag6oNN5(@EPl4rhKwy-2W)NgJ#d;S-66X4ymU{An`YFH9@_k)H|3Lm4&jv`Bj z>>lqixyAtjyavfWfV~V(33R>nF=NS;G@gkz!srhqxMz~2LJlZpQ8V?0IrNCBMCFv# zwSbg>EXsx~5(Q6yc}hSL5+dE7 zRWTF|7o(a7u(l72 zE1*}^x>jpomP56`DkzGc$&NJ@!L}R%sEZRARWTHh>%mMH9ZlNcYckqg=Y%Zm0rEnp zfD+UkWRHM1yMKtoa*zYU9%{OXJ~9&H3K*%h0d9?4?KiAn5Fea81{>L~kc z@M}<}n}0VIjE6eg`h61dPzzkg-}9Hp1e&p@326CaqVOQD-pF`lFOrJ1;eRnu9Ed)F zKDTpI_KV7x*T??W6+k0=Sf~Ze!Epsb8SD=xe-4fh3GuWe+rQu1F!0lfM$QiT2J|^x ix`3`RdI4^I->!darY)owcg)lP0000unk_01) + { + case 0: + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ResetBgsAndClearDma3BusyFlags(1); + InitBgsFromTemplates(1, gUnknown_840C5A4, NELEMS(gUnknown_840C5A4)); + SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + gUnknown_203AB40->unk_0C = 0; + gUnknown_203AB40->unk_0E = 0; + SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0); + DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAAB98, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840C650, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAB30C, 0x500, 0, 1); + DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840CA54, 0x400, 0, 1); + LoadPalette(gUnknown_8EAAB18[gUnknown_203AB40->unk_09], 0, 0x20); + LoadPalette(gUnknown_840C630, 0xF0, 0x20); + sub_80F41A4(gUnknown_203AB40->unk_09); + SetVBlankCallback(sub_80F4190); + EnableInterrupts(INTR_FLAG_VBLANK); + gUnknown_203AB40->unk_01++; + break; + case 1: + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, PIXEL_FILL(1)); + PutWindowTilemap(0); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + gUnknown_203AB40->unk_01++; + break; + case 2: + ShowBg(2); + ShowBg(0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gUnknown_203AB40->unk_0C = 0x28; + gUnknown_203AB40->unk_01++; + break; + case 3: + if (gUnknown_203AB40->unk_0C != 0) + gUnknown_203AB40->unk_0C--; + else + gUnknown_203AB40->unk_01++; + break; + case 4: + if (!gPaletteFade.active) + { + gUnknown_203AB40->unk_0C = 8; + gUnknown_203AB40->unk_0E = 1; + gUnknown_203AB40->unk_01++; + } + break; + case 5: + if (gUnknown_203AB40->unk_0C != 0) + gUnknown_203AB40->unk_0C--; + else + { + if (gUnknown_203AB40->unk_0E < 3) + { + PutWindowTilemap(gUnknown_203AB40->unk_0E); + CopyBgTilemapBufferToVram(0); + gUnknown_203AB40->unk_0C = 4; + gUnknown_203AB40->unk_0E++; + } + else + gUnknown_203AB40->unk_01++; + } + break; + case 6: + if (gUnknown_203AB40->unk_0C < 256) + { + gUnknown_203AB40->unk_0C += 16; + SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0); + } + else + { + SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, 0x100, 0x100, 0); + gUnknown_203AB40->unk_0C = 32; + gUnknown_203AB40->unk_01++; + } + break; + case 7: + if (gUnknown_203AB40->unk_0C != 0) + gUnknown_203AB40->unk_0C--; + else + { + HideBg(2); + ShowBg(1); + PlayCry2(sub_80F42F0(gUnknown_203AB40->unk_09), 0, 125, 10); + gUnknown_203AB40->unk_0C = 128; + gUnknown_203AB40->unk_01++; + } + break; + case 8: + if (gUnknown_203AB40->unk_0C != 0) + gUnknown_203AB40->unk_0C--; + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gUnknown_203AB40->unk_01++; + } + break; + case 9: + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(0)); + gUnknown_203AB40->unk_01 = 0; + return TRUE; + } + break; + } + return FALSE; +} + +bool32 sub_80F4674(void) +{ + switch (gUnknown_203AB40->unk_01) + { + case 0: + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ResetBgsAndClearDma3BusyFlags(1); + InitBgsFromTemplates(0, gUnknown_840C5A4, 1); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].tiles, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].map, 0x800, 0, 1); + LoadPalette(gUnknown_8410CDC[gUnknown_203AB40->unk_09].palette, 0x00, 0x200); + SetVBlankCallback(sub_80F4190); + EnableInterrupts(INTR_FLAG_VBLANK); + gUnknown_203AB40->unk_01++; + break; + case 1: + CopyBgTilemapBufferToVram(0); + gUnknown_203AB40->unk_01++; + break; + case 2: + ShowBg(0); + if (gUnknown_203AB40->unk_09 != 0) + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK); + else + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gUnknown_203AB40->unk_01++; + break; + case 3: + if (!gPaletteFade.active) + { + gUnknown_203AB40->unk_01 = 0; + return TRUE; + } + break; + } + return FALSE; +} + +void sub_80F47F8(u8 taskId) +{ + struct CreditsTaskData * data = (void *)gTasks[taskId].data; + switch (data->field_00) + { + case 0: + break; + case 1: + if (gSprites[data->field_01].pos1.x != 0xD0) + { + gSprites[data->field_01].pos1.x--; + gSprites[data->field_06].pos1.x--; + } + else + { + data->field_00 = 0; + } + break; + case 2: + if (gUnknown_203AB40->unk_1D & 1) + { + if (gSprites[data->field_01].pos1.y != 0x50) + { + gSprites[data->field_01].pos1.y--; + gSprites[data->field_06].pos1.y--; + } + else + { + data->field_00 = 0; + } + } + break; + case 3: + if (gUnknown_203AB40->unk_00 == 15) + { + gSprites[data->field_01].pos1.x--; + gSprites[data->field_06].pos1.x--; + } + break; + } +} + +void sub_80F48D0(void) +{ + if (gUnknown_203AB40->unk_02 != 0xFF) + { + struct CreditsTaskData * data = (void *)gTasks[gUnknown_203AB40->unk_02].data; + FreeSpriteTilesByTag(data->field_02); + DestroySprite(&gSprites[data->field_01]); + FreeSpriteTilesByTag(data->field_08); + DestroySprite(&gSprites[data->field_06]); + DestroyTask(gUnknown_203AB40->unk_02); + gUnknown_203AB40->unk_02 = 0xFF; + } +} + +void sub_80F4930(u8 a0) +{ + u8 taskId; + struct CreditsTaskData * data; + s32 r4, r9; + struct SpriteTemplate sp00; + struct CompressedSpriteSheet sp18; + + if (gUnknown_203AB40->unk_02 == 0xFF) + { + taskId = CreateTask(sub_80F47F8, 0); + data = (void *)gTasks[taskId].data; + gUnknown_203AB40->unk_02 = taskId; + switch (gUnknown_841431C[a0][2]) + { + default: + case 0: + r4 = 0xd0; + r9 = 0x50; + break; + case 1: + r4 = 0x110; + r9 = 0x50; + break; + case 2: + r4 = 0xd0; + r9 = 0xa0; + break; + } + data->field_00 = gUnknown_841431C[a0][2]; + data->field_02 = 0x2000; + data->field_04 = 0xFFFF; + switch (gUnknown_841431C[a0][0]) + { + case 0: + // Player + if (gSaveBlock2Ptr->playerGender == MALE) + { + sp18.data = gUnknown_8410E30; + sp18.size = 0x3000; + sp18.tag = data->field_02; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8410E10, 0x1F0, 0x20); + } + else + { + sp18.data = gUnknown_8411C18; + sp18.size = 0x3000; + sp18.tag = data->field_02; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8411BF8, 0x1F0, 0x20); + } + break; + case 1: + // Rival + sp18.data = gUnknown_84129C0; + sp18.size = 0x3000; + sp18.tag = data->field_02; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_84129A0, 0x1F0, 0x20); + break; + } + sp00 = gUnknown_8414364; + sp00.tileTag = data->field_02; + data->field_01 = CreateSprite(&sp00, r4, r9, 0); + gSprites[data->field_01].oam.paletteNum = 0xF; + gSprites[data->field_01].subpriority = 0; + + data->field_08 = 0x2001; + data->field_0A = 0xFFFF; + switch (gUnknown_841431C[a0][1]) + { + case 0: + sp18.data = gUnknown_8413338; + sp18.size = 0x3000; + sp18.tag = data->field_08; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8413318, 0x1E0, 0x20); + sp00 = gUnknown_84143B8; + break; + case 1: + sp18.data = gUnknown_8413338; + sp18.size = 0x3000; + sp18.tag = data->field_08; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8413318, 0x1E0, 0x20); + sp00 = gUnknown_84143D0; + break; + case 2: + sp18.data = gUnknown_8413874; + sp18.size = 0x3000; + sp18.tag = data->field_08; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8413854, 0x1E0, 0x20); + sp00 = gUnknown_84143B8; + break; + case 3: + sp18.data = gUnknown_8413DB8; + sp18.size = 0x3000; + sp18.tag = data->field_08; + LoadCompressedSpriteSheet(&sp18); + LoadPalette(gUnknown_8413D98, 0x1E0, 0x20); + sp00 = gUnknown_84143B8; + break; + } + sp00.tileTag = data->field_08; + data->field_06 = CreateSprite(&sp00, r4, r9 + 0x26, 0); + gSprites[data->field_06].oam.paletteNum = 0xE; + gSprites[data->field_06].subpriority = 1; + } +} From 932d153f5eac6c68d762f6a1f62576cef23850fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Sep 2019 14:00:46 -0400 Subject: [PATCH 044/100] Cryptic unreferenced LZ file --- data/credits/unk_840DC0C.bin | Bin 0 -> 2048 bytes src/credits.c | 87 ++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 43 deletions(-) create mode 100644 data/credits/unk_840DC0C.bin diff --git a/data/credits/unk_840DC0C.bin b/data/credits/unk_840DC0C.bin new file mode 100644 index 0000000000000000000000000000000000000000..a52ea8056c691c615d10b2b747adb78f0ff9057a GIT binary patch literal 2048 zcmcIkL1-IC6#YIJ1^X70B43@vNC)e*VAz091%dbA)TB4}kDO2kf&)$a*tdU%`Tx&h4a&QnmZjMG#)PDM0itp~q7heZl zwPx}2eU2C_HNfQWs5iQ*Qr-Yi{dpLx77SP9ypqu;cPNrCx1wmY-}rIJK{f{j1<6z^_gUv*~PT-DMeb-0C_jQeUl#4Vb#FB>3HcqDt!M9OXs zWD8G9qD6ipvYF1#W)Gla0ptzHUX_mGczU!G+q-cVZ^}U*YezgAa%3vx&^Cma*xAW( zYQ#OUey?{wxNimb)&=TK(x989=_KCCvW0jj?skO?0xMePR@4>NYLY$_DWa5R>G5fn zDJeHGc^7#@4tqKIePRntU>lRPl-iS-P5}_S6>6YO@nx?jke+6reO&)h3~;2wcF^iE za#7D~Xjwdsu}Y2O-RaIkW@M!kGjmRE2`BUjA#rK4J@t$B^ebv)Ra(!C8q54TvuYkI z{A#l8czYU8cNex7;)S9iEasI7V;;RErSZulD;Aa^48tJAa0#738%Al(J2fV@;TI-8 zbCSCEb3zL;DZ8dc9g-MDA||OlXP;)Jbb<}DC##bbEecQV(^m-|!aMzQZwJ~wLarh& zn^R*bmBC`Y4vV+YvKr*;3_6qoR4FSH>UoqF87;WXTk{!RtK!_DK6OmSsvEai^-snq z%A!lWy7Ud_BH)~^1)P>cjw{slOf3cx3VjEzg3{_wlomE{@vMR`E?mla_Y3sd(0+g2 zB$YQ`lJKHT2<|~B_8iR&f|w*s9{xdAbDatbtC#=|nFB&hB$*?`EoiNHJ+488;N3>% z9e~$o0O6afA&$?O=`#aC&=#hu*_4#0Oz?NdOmAt_EM#!;M*5PPMQd<1uH6Y}~dIm45? zKv#@$K~`%(YQNN9o3MgB|NVUE8jgpc8!52Yyj58y)NK3JRf F{~NvG=kx#o literal 0 HcmV?d00001 diff --git a/src/credits.c b/src/credits.c index fff0a502b..b740d6067 100644 --- a/src/credits.c +++ b/src/credits.c @@ -220,6 +220,7 @@ const u32 gUnknown_840C650[] = INCBIN_U32("data/credits/unk_840C650.8bpp.lz"); const u32 gUnknown_840CA54[] = INCBIN_U32("data/credits/unk_840CA54.bin.lz"); const u32 gUnknown_840CB8C[] = INCBIN_U32("data/credits/unk_840CB8C.bin.lz"); const u32 gUnknown_840D228[] = INCBIN_U32("data/credits/unk_840D228.bin.lz"); +const u32 gUnknown_840DC0C[] = INCBIN_U32("data/credits/unk_840DC0C.bin.lz"); const u32 gUnknown_840E158[] = INCBIN_U32("data/credits/unk_840E158.bin.lz"); const u32 gUnknown_840E904[] = INCBIN_U32("data/credits/unk_840E904.bin.lz"); const u32 gUnknown_840F240[] = INCBIN_U32("data/credits/unk_840F240.bin.lz"); @@ -549,49 +550,49 @@ const struct CreditsOverworldCmd *const gUnknown_8414588[] = { }; const struct UnkStruct_84145BC gUnknown_84145BC[] = { - { gUnknown_841D1D8, gUnknown_841D1E8, 0 }, - { gUnknown_841D200, gUnknown_841D224, 0 }, - { gUnknown_841D248, gUnknown_841D284, 0 }, - { gUnknown_841D2B4, gUnknown_841D2C8, 0 }, - { gUnknown_841D314, gUnknown_841D330, 1 }, - { gUnknown_841D370, gUnknown_841D388, 1 }, - { gUnknown_841D3C0, gUnknown_841D3D8, 1 }, - { gUnknown_841D3FC, gUnknown_841D414, 1 }, - { gUnknown_841D434, gUnknown_841D448, 0 }, - { gUnknown_841D45C, gUnknown_841D474, 0 }, - { gUnknown_841D4A4, gUnknown_841D4BC, 0 }, - { gUnknown_841D4F0, gUnknown_841D504, 1 }, - { gUnknown_841D524, gUnknown_841D548, 0 }, - { gUnknown_841D56C, gUnknown_841D588, 0 }, - { gUnknown_841D5B8, gUnknown_841D5CC, 0 }, - { gUnknown_841D5E4, gUnknown_841D5FC, 1 }, - { gUnknown_841D640, gUnknown_841D658, 0 }, - { gUnknown_841D698, gUnknown_841D6B0, 1 }, - { gUnknown_841D6EC, gUnknown_841D708, 0 }, - { gUnknown_841D74C, gUnknown_841D768, 0 }, - { gUnknown_841D784, gUnknown_841D79C, 0 }, - { gUnknown_841D7DC, gUnknown_841D7F4, 0 }, - { gUnknown_841D834, gUnknown_841D84C, 0 }, - { gUnknown_841D894, gUnknown_841D8B0, 0 }, - { gUnknown_841D8CC, gUnknown_841D8EC, 0 }, - { gUnknown_841D938, gUnknown_841D94C, 0 }, - { gUnknown_841D98C, gUnknown_841D9A0, 1 }, - { gUnknown_841D9C4, gUnknown_841D9D4, 0 }, - { gUnknown_841DA08, gUnknown_841DA24, 0 }, - { gUnknown_841DA3C, gUnknown_841DA58, 0 }, - { gUnknown_841DA6C, gUnknown_841DA88, 0 }, - { gUnknown_841DAA0, gUnknown_841DAC4, 0 }, - { gUnknown_841DAE8, gUnknown_841DB04, 0 }, - { gUnknown_841DB28, gUnknown_841DB3C, 0 }, - { gUnknown_841DB7C, gUnknown_841DBA4, 1 }, - { gUnknown_841DBDC, gUnknown_841DBF8, 1 }, - { gUnknown_841DC2C, gUnknown_841DC48, 1 }, - { gUnknown_841DCAC, gUnknown_841DCC8, 1 }, - { gUnknown_841DD08, gUnknown_841DD20, 0 }, - { gUnknown_841DD64, gUnknown_841DD7C, 0 }, - { gUnknown_841DDC8, gUnknown_841DDE4, 0 }, - { gUnknown_841DE24, gUnknown_841DE3C, 0 }, - { gUnknown_84161CD, gUnknown_84161CD, 0 } + { gUnknown_841D1D8, gUnknown_841D1E8, FALSE }, + { gUnknown_841D200, gUnknown_841D224, FALSE }, + { gUnknown_841D248, gUnknown_841D284, FALSE }, + { gUnknown_841D2B4, gUnknown_841D2C8, FALSE }, + { gUnknown_841D314, gUnknown_841D330, TRUE }, + { gUnknown_841D370, gUnknown_841D388, TRUE }, + { gUnknown_841D3C0, gUnknown_841D3D8, TRUE }, + { gUnknown_841D3FC, gUnknown_841D414, TRUE }, + { gUnknown_841D434, gUnknown_841D448, FALSE }, + { gUnknown_841D45C, gUnknown_841D474, FALSE }, + { gUnknown_841D4A4, gUnknown_841D4BC, FALSE }, + { gUnknown_841D4F0, gUnknown_841D504, TRUE }, + { gUnknown_841D524, gUnknown_841D548, FALSE }, + { gUnknown_841D56C, gUnknown_841D588, FALSE }, + { gUnknown_841D5B8, gUnknown_841D5CC, FALSE }, + { gUnknown_841D5E4, gUnknown_841D5FC, TRUE }, + { gUnknown_841D640, gUnknown_841D658, FALSE }, + { gUnknown_841D698, gUnknown_841D6B0, TRUE }, + { gUnknown_841D6EC, gUnknown_841D708, FALSE }, + { gUnknown_841D74C, gUnknown_841D768, FALSE }, + { gUnknown_841D784, gUnknown_841D79C, FALSE }, + { gUnknown_841D7DC, gUnknown_841D7F4, FALSE }, + { gUnknown_841D834, gUnknown_841D84C, FALSE }, + { gUnknown_841D894, gUnknown_841D8B0, FALSE }, + { gUnknown_841D8CC, gUnknown_841D8EC, FALSE }, + { gUnknown_841D938, gUnknown_841D94C, FALSE }, + { gUnknown_841D98C, gUnknown_841D9A0, TRUE }, + { gUnknown_841D9C4, gUnknown_841D9D4, FALSE }, + { gUnknown_841DA08, gUnknown_841DA24, FALSE }, + { gUnknown_841DA3C, gUnknown_841DA58, FALSE }, + { gUnknown_841DA6C, gUnknown_841DA88, FALSE }, + { gUnknown_841DAA0, gUnknown_841DAC4, FALSE }, + { gUnknown_841DAE8, gUnknown_841DB04, FALSE }, + { gUnknown_841DB28, gUnknown_841DB3C, FALSE }, + { gUnknown_841DB7C, gUnknown_841DBA4, TRUE }, + { gUnknown_841DBDC, gUnknown_841DBF8, TRUE }, + { gUnknown_841DC2C, gUnknown_841DC48, TRUE }, + { gUnknown_841DCAC, gUnknown_841DCC8, TRUE }, + { gUnknown_841DD08, gUnknown_841DD20, FALSE }, + { gUnknown_841DD64, gUnknown_841DD7C, FALSE }, + { gUnknown_841DDC8, gUnknown_841DDE4, FALSE }, + { gUnknown_841DE24, gUnknown_841DE3C, FALSE }, + { gUnknown_84161CD, gUnknown_84161CD, FALSE } }; void Special_Credits(void) From d66767ed9a5eb714b98a4e4dc22728606414c39c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 11:09:28 -0400 Subject: [PATCH 045/100] Documentation and cleanup --- asm/field_weather.s | 6 +- asm/hall_of_fame.s | 10 +- asm/overworld.s | 26 +- asm/pokedex_screen.s | 2 +- asm/post_battle_event_funcs.s | 6 +- data/graphics.s | 12 +- .../maps/PokemonLeague_HallOfFame/scripts.inc | 2 +- data/specials.inc | 2 +- data/strings.s | 4 +- include/credits.h | 6 - include/field_weather.h | 2 +- include/graphics.h | 12 +- include/overworld.h | 17 +- include/strings.h | 4 +- include/trainer_pokemon_sprites.h | 2 +- src/credits.c | 1259 +++++++++-------- src/quest_log.c | 4 +- src/sound.c | 4 +- src/trainer_pokemon_sprites.c | 2 +- sym_ewram.txt | 5 +- 20 files changed, 714 insertions(+), 673 deletions(-) delete mode 100644 include/credits.h diff --git a/asm/field_weather.s b/asm/field_weather.s index ac24101a7..bdb31a434 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1737,8 +1737,8 @@ _0807A93C: .4byte 0x000006ca _0807A940: .4byte 0x000006cb thumb_func_end fade_screen - thumb_func_start sub_807A944 -sub_807A944: @ 807A944 + thumb_func_start FieldWeather_StartFadingOutCreditsMap +FieldWeather_StartFadingOutCreditsMap: @ 807A944 push {r4-r6,lr} sub sp, 0x4 adds r6, r2, 0 @@ -1887,7 +1887,7 @@ _0807AA60: .4byte gUnknown_2037F34 _0807AA64: .4byte 0x000006c6 _0807AA68: .4byte 0x000006ca _0807AA6C: .4byte 0x000006cb - thumb_func_end sub_807A944 + thumb_func_end FieldWeather_StartFadingOutCreditsMap thumb_func_start sub_807AA70 sub_807AA70: @ 807AA70 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 19ff62664..5b28e21d5 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -138,7 +138,7 @@ _080F1EC4: bne _080F1EF0 ldr r0, _080F1EEC @ =sub_80F1DC0 bl SetMainCallback2 - movs r0, 0x8F + movs r0, 0x8F @ BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME >> 1 lsls r0, 1 bl PlayBGM movs r0, 0 @@ -1448,15 +1448,15 @@ sub_80F2934: @ 80F2934 movs r0, 0x80 lsls r0, 7 bl FlagSet - ldr r1, _080F2974 @ =gUnknown_2031DD8 + ldr r1, _080F2974 @ =gDisableMapMusicChangeOnMapLoad movs r0, 0x2 strb r0, [r1] movs r2, 0x1 negs r2, r2 movs r0, 0x6 str r0, [sp] - movs r0, 0x3 - movs r1, 0x9 + movs r0, 0x3 @ MAP_GROUP(INDIGO_PLATEAU_EXTERIOR) + movs r1, 0x9 @ MAP_NUM(INDIGO_PLATEAU_EXTERIOR) movs r3, 0xB bl Overworld_SetWarpDestination bl DoWarp @@ -1466,7 +1466,7 @@ sub_80F2934: @ 80F2934 bx r0 .align 2, 0 _080F2970: .4byte 0x00004085 -_080F2974: .4byte gUnknown_2031DD8 +_080F2974: .4byte gDisableMapMusicChangeOnMapLoad thumb_func_end sub_80F2934 thumb_func_start sub_80F2978 diff --git a/asm/overworld.s b/asm/overworld.s index b2bce4b48..811ee5c04 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -2382,14 +2382,14 @@ sub_8055DB8: @ 8055DB8 Overworld_PlaySpecialMapMusic: @ 8055DC4 push {r4,r5,lr} sub sp, 0x4 - ldr r0, _08055DD8 @ =gUnknown_2031DD8 + ldr r0, _08055DD8 @ =gDisableMapMusicChangeOnMapLoad ldrb r0, [r0] cmp r0, 0x1 bne _08055DDC bl StopMapMusic b _08055E6C .align 2, 0 -_08055DD8: .4byte gUnknown_2031DD8 +_08055DD8: .4byte gDisableMapMusicChangeOnMapLoad _08055DDC: cmp r0, 0x2 beq _08055E6C @@ -2488,14 +2488,14 @@ _08055E90: .4byte gSaveBlock1Ptr thumb_func_start sub_8055E94 sub_8055E94: @ 8055E94 push {r4-r6,lr} - ldr r0, _08055EA4 @ =gUnknown_2031DD8 + ldr r0, _08055EA4 @ =gDisableMapMusicChangeOnMapLoad ldrb r0, [r0] cmp r0, 0x1 bne _08055EA8 bl StopMapMusic b _08055F14 .align 2, 0 -_08055EA4: .4byte gUnknown_2031DD8 +_08055EA4: .4byte gDisableMapMusicChangeOnMapLoad _08055EA8: cmp r0, 0x2 beq _08055F14 @@ -2701,7 +2701,7 @@ _08056014: adds r0, 0x32 lsls r0, 24 lsrs r2, r0, 24 - ldr r0, _08056050 @ =gUnknown_2031DD8 + ldr r0, _08056050 @ =gDisableMapMusicChangeOnMapLoad ldrb r0, [r0] cmp r0, 0x1 bne _08056054 @@ -2709,7 +2709,7 @@ _08056014: b _0805606A .align 2, 0 _0805604C: .4byte gUnknown_2031DDC -_08056050: .4byte gUnknown_2031DD8 +_08056050: .4byte gDisableMapMusicChangeOnMapLoad _08056054: cmp r0, 0x2 beq _0805606A @@ -5158,8 +5158,8 @@ _0805749A: _080574A0: .4byte sub_8056534 thumb_func_end sub_8057430 - thumb_func_start sub_80574A4 -sub_80574A4: @ 80574A4 + thumb_func_start Overworld_CreditsMainCB +Overworld_CreditsMainCB: @ 80574A4 push {r4,lr} ldr r0, _080574E8 @ =gPaletteFade ldrb r0, [r0, 0x7] @@ -5187,7 +5187,7 @@ _080574E0: bx r0 .align 2, 0 _080574E8: .4byte gPaletteFade - thumb_func_end sub_80574A4 + thumb_func_end Overworld_CreditsMainCB thumb_func_start sub_80574EC sub_80574EC: @ 80574EC @@ -5209,8 +5209,8 @@ _08057506: bx r1 thumb_func_end sub_80574EC - thumb_func_start sub_805750C -sub_805750C: @ 805750C + thumb_func_start Overworld_DoScrollSceneForCredits +Overworld_DoScrollSceneForCredits: @ 805750C push {lr} ldr r3, _08057520 @ =gUnknown_2031DE4 str r1, [r3] @@ -5223,7 +5223,7 @@ sub_805750C: @ 805750C .align 2, 0 _08057520: .4byte gUnknown_2031DE4 _08057524: .4byte gUnknown_2036E28 - thumb_func_end sub_805750C + thumb_func_end Overworld_DoScrollSceneForCredits thumb_func_start sub_8057528 sub_8057528: @ 8057528 @@ -5451,7 +5451,7 @@ _08057712: ldr r2, _08057738 @ =0x3fffffff movs r0, 0 movs r1, 0 - bl sub_807A944 + bl FieldWeather_StartFadingOutCreditsMap _0805772A: ldrb r0, [r4] adds r0, 0x1 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index b9c18d201..9394675c6 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -4491,7 +4491,7 @@ sub_81049FC: @ 81049FC adds r0, r5, 0 movs r1, 0x8 movs r3, 0x1 - bl sub_810C228 + bl LoadMonPicForCredits add sp, 0x8 pop {r4-r6} pop {r0} diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s index 264ca380d..20455093a 100644 --- a/asm/post_battle_event_funcs.s +++ b/asm/post_battle_event_funcs.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80CA2E4 -sub_80CA2E4: @ 80CA2E4 + thumb_func_start Special_HallOfFame +Special_HallOfFame: @ 80CA2E4 push {r4-r7,lr} sub sp, 0x4 bl sp000_heal_pokemon @@ -104,7 +104,7 @@ _080CA3B4: .4byte gSaveBlock2Ptr _080CA3B8: .4byte gPlayerParty _080CA3BC: .4byte 0x0000083b _080CA3C0: .4byte CB2_DoHallOfFameScreen - thumb_func_end sub_80CA2E4 + thumb_func_end Special_HallOfFame thumb_func_start sub_80CA3C4 sub_80CA3C4: @ 80CA3C4 diff --git a/data/graphics.s b/data/graphics.s index 02d111874..b79fa4a74 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16343,16 +16343,16 @@ gUnknown_8EAAA10:: @ 8EAAA10 gUnknown_8EAAA6C:: @ 8EAAA6C .incbin "baserom.gba", 0xEAAA6C, 0xAC -gUnknown_8EAAB18:: @ 8EAAB18 +gCreditsMonBackdropPals:: @ 8EAAB18 .incbin "graphics/credits/charizard.gbapal" .incbin "graphics/credits/venusaur.gbapal" .incbin "graphics/credits/blastoise.gbapal" .incbin "graphics/credits/pikachu.gbapal" -gUnknown_8EAAB98:: @ 8EAAB98 +gCreditsPokeballBgGfxTiles:: @ 8EAAB98 .incbin "graphics/credits/unk_8EAAB98.4bpp.lz" -gUnknown_8EAB30C:: @ 8EAB30C +gCreditsPokeballBgGfxMap:: @ 8EAB30C .incbin "graphics/credits/unk_8EAB30C.bin.lz" @ title_screen @@ -16389,13 +16389,13 @@ gGraphics_TitleScreen_FirePals:: @ 8EAE488 gGraphics_TitleScreen_BlankObjTiles:: @ 8EAE4A8 .incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz" -gUnknown_8EAE528:: @ 8EAE528 +gCreditsAllRightsReservedGfxPal:: @ 8EAE528 .incbin "graphics/credits/unk_8EAE548.gbapal" -gUnknown_8EAE548:: @ 8EAE548 +gCreditsAllRightsReservedGfxTiles:: @ 8EAE548 .incbin "graphics/credits/unk_8EAE548.4bpp.lz" -gUnknown_8EAE900:: @ 8EAE900 +gCreditsAllRightsReservedGfxMap:: @ 8EAE900 .incbin "graphics/credits/unk_8EAE548.bin.lz" gUnknown_8EAEA00:: @ 8EAEA00 diff --git a/data/maps/PokemonLeague_HallOfFame/scripts.inc b/data/maps/PokemonLeague_HallOfFame/scripts.inc index faadadcda..11df46047 100644 --- a/data/maps/PokemonLeague_HallOfFame/scripts.inc +++ b/data/maps/PokemonLeague_HallOfFame/scripts.inc @@ -37,7 +37,7 @@ EventScript_162D70:: @ 8162D70 call EventScript_1A651A setrespawn SPAWN_PALLET_TOWN fadescreenspeed 1, 24 - special sub_80CA2E4 + special Special_HallOfFame waitstate releaseall end diff --git a/data/specials.inc b/data/specials.inc index 2070469e7..5905d825f 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -281,7 +281,7 @@ gSpecials:: @ 815FD60 def_special nullsub_75 def_special nullsub_61 def_special DoSoftReset - def_special sub_80CA2E4 + def_special Special_HallOfFame def_special sub_80CB498 def_special nullsub_75 def_special SpawnScriptFieldObject diff --git a/data/strings.s b/data/strings.s index 7f9cede93..02eefcef8 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3320,11 +3320,11 @@ gUnknown_841D18D:: @ 841D18D .string "ROOFTOP$" .align 2 -gUnknown_841D198:: @ 841D198 +gString_PokemonFireRed_Staff:: @ 841D198 .string "Pokémon FireRed Version\nStaff$" .align 2 -gUnknown_841D1B8:: @ 0x841D1B6 +gString_PokemonLeafGreen_Staff:: @ 0x841D1B6 .string "Pokémon LeafGreen Version\nStaff$" .align 2 diff --git a/include/credits.h b/include/credits.h deleted file mode 100644 index c8a19bbeb..000000000 --- a/include/credits.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_CREDITS_H -#define GUARD_CREDITS_H - - - -#endif //GUARD_CREDITS_H diff --git a/include/field_weather.h b/include/field_weather.h index 3e544b106..794472f43 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,6 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); -void sub_807A944(u8, u8, u32); +void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32); #endif // GUARD_WEATHER_H diff --git a/include/graphics.h b/include/graphics.h index 50daf7661..6139869c9 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -975,11 +975,11 @@ extern const u16 gGraphics_TitleScreen_FirePals[]; extern const u8 gGraphics_TitleScreen_BlankObjTiles[]; // credits -extern const u32 gUnknown_8EAAB98[]; -extern const u32 gUnknown_8EAB30C[]; -extern const u16 gUnknown_8EAAB18[][16]; -extern const u16 gUnknown_8EAE528[]; -extern const u8 gUnknown_8EAE548[]; -extern const u8 gUnknown_8EAE900[]; +extern const u32 gCreditsPokeballBgGfxTiles[]; +extern const u32 gCreditsPokeballBgGfxMap[]; +extern const u16 gCreditsMonBackdropPals[][16]; +extern const u16 gCreditsAllRightsReservedGfxPal[]; +extern const u8 gCreditsAllRightsReservedGfxTiles[]; +extern const u8 gCreditsAllRightsReservedGfxMap[]; #endif //GUARD_GRAPHICS_H diff --git a/include/overworld.h b/include/overworld.h index f27a4dbd3..472ebf544 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,5 +1,5 @@ -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H +#ifndef GUARD_OVERWORLD_H +#define GUARD_OVERWORLD_H #include "global.h" #include "main.h" @@ -30,6 +30,11 @@ struct CreditsOverworldCmd u16 unk_4; }; +/* gDisableMapMusicChangeOnMapLoad */ +#define MUSIC_DISABLE_OFF 0 +#define MUSIC_DISABLE_STOP 1 +#define MUSIC_DISABLE_KEEP 2 + extern struct UCoords32 gDirectionToVectors[]; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; @@ -104,7 +109,7 @@ void ResetInitialPlayerAvatarState(void); void sub_8055D40(u16 mapDataId); void CleanupOverworldWindowsAndTilemaps(void); -extern u8 gUnknown_2031DD8; +extern u8 gDisableMapMusicChangeOnMapLoad; extern u8 gUnknown_2036E28; extern void (*gFieldCallback)(void); @@ -126,7 +131,7 @@ bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); -void sub_80574A4(void); -bool32 sub_805750C(u8 *, const struct CreditsOverworldCmd *, u8); +void Overworld_CreditsMainCB(void); +bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); -#endif //GUARD_ROM4_H +#endif //GUARD_OVERWORLD_H diff --git a/include/strings.h b/include/strings.h index 001f08f61..9f521a65e 100644 --- a/include/strings.h +++ b/include/strings.h @@ -210,8 +210,8 @@ extern const u8 gString_SlotMachineControls[]; // credits extern const u8 gUnknown_84161CD[]; -extern const u8 gUnknown_841D198[]; // FR -extern const u8 gUnknown_841D1B8[]; // LG +extern const u8 gString_PokemonFireRed_Staff[]; // FR +extern const u8 gString_PokemonLeafGreen_Staff[]; // LG extern const u8 gUnknown_841D1D8[]; extern const u8 gUnknown_841D1E8[]; extern const u8 gUnknown_841D200[]; diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index dfd716176..db32623bf 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -14,6 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); -u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); +u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/src/credits.c b/src/credits.c index b740d6067..146f647e7 100644 --- a/src/credits.c +++ b/src/credits.c @@ -11,41 +11,92 @@ #include "decompress.h" #include "graphics.h" #include "strings.h" +#include "menu.h" +#include "field_weather.h" #include "trainer_pokemon_sprites.h" #include "sound.h" #include "constants/species.h" #include "constants/maps.h" +#if defined(FIRERED) +#define TITLE_TEXT gString_PokemonFireRed_Staff +asm(".set TITLE_TEXT, gString_PokemonFireRed_Staff"); +#elif defined(LEAFGREEN) +#define TITLE_TEXT gString_PokemonLeafGreen_Staff +asm(".set TITLE_TEXT, gString_PokemonLeafGreen_Staff"); +#endif + +enum CreditsSceneIdx +{ + CREDITSSCENE_INIT_WIN0 = 0, + CREDITSSCENE_SETUP_DARKEN_EFFECT, + CREDITSSCENE_OPEN_WIN0, + CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO, + CREDITSSCENE_PRINT_TITLE_STAFF, + CREDITSSCENE_WAIT_TITLE_STAFF, + CREDITSSCENE_EXEC_CMD, + CREDITSSCENE_PRINT_ADDPRINTER1, + CREDITSSCENE_PRINT_ADDPRINTER2, + CREDITSSCENE_PRINT_DELAY, + CREDITSSCENE_MAPNEXT_DESTROYWINDOW, + CREDITSSCENE_MAPNEXT_LOADMAP, + CREDITSSCENE_MAP_LOADMAP_CREATESPRITES, + CREDITSSCENE_MON_DESTROY_ASSETS, + CREDITSSCENE_MON_SHOW, + CREDITSSCENE_THEEND_DESTROY_ASSETS, + CREDITSSCENE_THEEND_SHOW, + CREDITSSCENE_WAITBUTTON, + CREDITSSCENE_TERMINATE, +}; + +enum CreditsScrCmd +{ + CREDITSSCRCMD_PRINT = 0, + CREDITSSCRCMD_MAPNEXT, + CREDITSSCRCMD_MAP, + CREDITSSCRCMD_MON, + CREDITSSCRCMD_THEENDGFX, + CREDITSSCRCMD_WAITBUTTON +}; + +enum CreditsMon +{ + CREDITSMON_CHARIZARD = 0, + CREDITSMON_VENUSAUR, + CREDITSMON_BLASTOISE, + CREDITSMON_PIKACHU +}; + struct CreditsResources { - u8 unk_00; - u8 unk_01; - u8 unk_02; - u16 unk_04; - u16 unk_06; - u8 unk_08; - u8 unk_09; - u8 unk_0A; - bool8 unk_0B; - u16 unk_0C; + u8 mainseqno; + u8 subseqno; + u8 taskId; + u16 timer; + u16 scrcmdidx; + u8 canSpeedThrough; + u8 whichMon; + u8 windowId; + bool8 windowIsActive; + u16 creditsMonTimer; u16 unk_0E; u8 filler_10[12]; - u8 unk_1C; + u8 ovwldseqno; u8 unk_1D; }; -struct UnkStruct_8410CF4 +struct CreditsScrcmd { - u8 unk0; - u8 unk1; - u16 unk2; + u8 cmd; + u8 param; + u16 duration; }; -struct UnkStruct_84145BC +struct CreditsTextHeader { const u8 * unk_0; const u8 * unk_4; - u8 unk_8; + bool8 unk_8; }; struct CompressedGraphicsHeader @@ -57,25 +108,25 @@ struct CompressedGraphicsHeader struct CreditsTaskData { - u8 field_00; - u8 field_01; - u16 field_02; + u8 spriteMoveCmd; + u8 playerSpriteId; + u16 playerTilesTag; u16 field_04; - u8 field_06; - u16 field_08; + u8 groundSpriteId; + u16 groundTilesTag; u16 field_0A; }; -EWRAM_DATA struct CreditsResources * gUnknown_203AB40 = NULL; +static EWRAM_DATA struct CreditsResources * sCreditsMgr = NULL; -void sub_80F39E8(void); -s32 sub_80F3BD0(void); -bool32 sub_80F4328(void); -bool32 sub_80F4674(void); -void sub_80F48D0(void); -void sub_80F4930(u8 a0); +static void CB2_Credits(void); +static s32 RollCredits(void); +static bool32 DoCreditsMonScene(void); +static bool32 DoCopyrightOrTheEndGfxScene(void); +static void DestroyPlayerOrRivalSprite(void); +static void LoadPlayerOrRivalSprite(u8 a0); -const struct BgTemplate gUnknown_840C5A4[] = { +static const struct BgTemplate sBgTemplates_MonSceneOrTheEnd[] = { { .bg = 0, .charBaseIndex = 0, @@ -103,7 +154,7 @@ const struct BgTemplate gUnknown_840C5A4[] = { } }; -const struct WindowTemplate gUnknown_840C5B0[] = { +static const struct WindowTemplate sWindowTemplates_Charizard[] = { { .bg = 0x00, .tilemapLeft = 0x0b, @@ -131,7 +182,7 @@ const struct WindowTemplate gUnknown_840C5B0[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_840C5D0[] = { +static const struct WindowTemplate sWindowTemplates_Venusaur[] = { { .bg = 0x00, .tilemapLeft = 0x0b, @@ -159,7 +210,7 @@ const struct WindowTemplate gUnknown_840C5D0[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_840C5F0[] = { +static const struct WindowTemplate sWindowTemplates_Blastoise[] = { { .bg = 0x00, .tilemapLeft = 0x0b, @@ -187,7 +238,7 @@ const struct WindowTemplate gUnknown_840C5F0[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_840C610[] = { +static const struct WindowTemplate sWindowTemplates_Pikachu[] = { { .bg = 0x00, .tilemapLeft = 0x0b, @@ -215,111 +266,111 @@ const struct WindowTemplate gUnknown_840C610[] = { }, DUMMY_WIN_TEMPLATE }; -const u16 gUnknown_840C630[] = INCBIN_U16("data/credits/unk_840C630.gbapal"); -const u32 gUnknown_840C650[] = INCBIN_U32("data/credits/unk_840C650.8bpp.lz"); -const u32 gUnknown_840CA54[] = INCBIN_U32("data/credits/unk_840CA54.bin.lz"); -const u32 gUnknown_840CB8C[] = INCBIN_U32("data/credits/unk_840CB8C.bin.lz"); -const u32 gUnknown_840D228[] = INCBIN_U32("data/credits/unk_840D228.bin.lz"); -const u32 gUnknown_840DC0C[] = INCBIN_U32("data/credits/unk_840DC0C.bin.lz"); -const u32 gUnknown_840E158[] = INCBIN_U32("data/credits/unk_840E158.bin.lz"); -const u32 gUnknown_840E904[] = INCBIN_U32("data/credits/unk_840E904.bin.lz"); -const u32 gUnknown_840F240[] = INCBIN_U32("data/credits/unk_840F240.bin.lz"); -const u32 gUnknown_840F944[] = INCBIN_U32("data/credits/unk_840F944.bin.lz"); -const u32 gUnknown_8410198[] = INCBIN_U32("data/credits/unk_8410198.bin.lz"); -const u32 gUnknown_84105B4[] = INCBIN_U32("data/credits/unk_84105B4.bin.lz"); +static const u16 sPalette_OneBlackThenAllWhite[] = INCBIN_U16("data/credits/unk_840C630.gbapal"); +static const u32 sAffineCircleGfx[] = INCBIN_U32("data/credits/unk_840C650.8bpp.lz"); +static const u32 sAffineCircleMap[] = INCBIN_U32("data/credits/unk_840CA54.bin.lz"); +static const u32 sWindow1Map_Charizard[] = INCBIN_U32("data/credits/unk_840CB8C.bin.lz"); +static const u32 sWindow2Map_Charizard[] = INCBIN_U32("data/credits/unk_840D228.bin.lz"); +static const u32 sUnusedTilemap[] = INCBIN_U32("data/credits/unk_840DC0C.bin.lz"); +static const u32 sWindow1Map_Venusaur[] = INCBIN_U32("data/credits/unk_840E158.bin.lz"); +static const u32 sWindow2Map_Venusaur[] = INCBIN_U32("data/credits/unk_840E904.bin.lz"); +static const u32 sWindow1Map_Blastoise[] = INCBIN_U32("data/credits/unk_840F240.bin.lz"); +static const u32 sWindow2Map_Blastoise[] = INCBIN_U32("data/credits/unk_840F944.bin.lz"); +static const u32 sWindow1Map_Pikachu[] = INCBIN_U32("data/credits/unk_8410198.bin.lz"); +static const u32 sWindow2Map_Pikachu[] = INCBIN_U32("data/credits/unk_84105B4.bin.lz"); -const u32 filler_8410AFC = 0xF0; +static const u32 filler_8410AFC = 0xF0; -const u16 gUnknown_8410B00[] = INCBIN_U16("data/credits/unk_8410B20.gbapal"); -const u8 gUnknown_8410B20[] = INCBIN_U8("data/credits/unk_8410B20.4bpp.lz"); -const u8 gUnknown_8410B94[] = INCBIN_U8("data/credits/unk_8410B20.bin.lz"); +static const u16 sTheEndGfxPal[] = INCBIN_U16("data/credits/unk_8410B20.gbapal"); +static const u8 sTheEndGfxTiles[] = INCBIN_U8("data/credits/unk_8410B20.4bpp.lz"); +static const u8 sTheEndGfxMap[] = INCBIN_U8("data/credits/unk_8410B20.bin.lz"); -const struct CompressedGraphicsHeader gUnknown_8410CDC[] = { +static const struct CompressedGraphicsHeader sCopyrightOrTheEndGfxHeaders[] = { { - .tiles = gUnknown_8EAE548, - .map = gUnknown_8EAE900, - .palette = gUnknown_8EAE528 + .tiles = gCreditsAllRightsReservedGfxTiles, + .map = gCreditsAllRightsReservedGfxMap, + .palette = gCreditsAllRightsReservedGfxPal }, { - .tiles = gUnknown_8410B20, - .map = gUnknown_8410B94, - .palette = gUnknown_8410B00 + .tiles = sTheEndGfxTiles, + .map = sTheEndGfxMap, + .palette = sTheEndGfxPal } }; -const struct UnkStruct_8410CF4 gUnknown_8410CF4[] = { - { 1, 0, 16 }, - { 0, 0, 300 }, - { 0, 1, 300 }, - { 0, 2, 300 }, - { 0, 42, 60 }, - { 1, 1, 0 }, - { 0, 3, 211 }, - { 0, 4, 211 }, - { 0, 5, 211 }, - { 1, 2, 0 }, - { 0, 6, 211 }, - { 0, 7, 210 }, - { 0, 8, 210 }, - { 3, 0, 0 }, - { 2, 3, 16 }, - { 0, 9, 211 }, - { 0, 10, 210 }, - { 0, 11, 210 }, - { 1, 4, 16 }, - { 0, 12, 211 }, - { 0, 13, 210 }, - { 0, 14, 210 }, - { 1, 5, 16 }, - { 0, 15, 211 }, - { 0, 16, 210 }, - { 0, 17, 210 }, - { 3, 1, 0 }, - { 2, 6, 16 }, - { 0, 18, 211 }, - { 0, 19, 210 }, - { 0, 20, 210 }, - { 1, 7, 16 }, - { 0, 21, 221 }, - { 0, 22, 221 }, - { 0, 23, 221 }, - { 0, 24, 221 }, - { 0, 42, 51 }, - { 1, 8, 16 }, - { 0, 25, 211 }, - { 0, 26, 210 }, - { 0, 27, 210 }, - { 3, 2, 0 }, - { 2, 9, 16 }, - { 0, 28, 331 }, - { 0, 29, 331 }, - { 0, 30, 331 }, - { 1, 10, 16 }, - { 0, 31, 221 }, - { 0, 32, 221 }, - { 0, 33, 221 }, - { 0, 34, 221 }, - { 0, 42, 52 }, - { 1, 11, 16 }, - { 0, 41, 210 }, - { 0, 35, 210 }, - { 0, 36, 211 }, - { 3, 3, 0 }, - { 2, 12, 16 }, - { 0, 37, 221 }, - { 0, 40, 221 }, - { 0, 38, 221 }, - { 0, 39, 221 }, - { 0, 42, 52 }, - { 4, 0, 224 }, - { 4, 1, 240 }, - { 5, 0, 600 } +static const struct CreditsScrcmd sCreditsScript[] = { + { CREDITSSCRCMD_MAPNEXT, 0, 16 }, + { CREDITSSCRCMD_PRINT, 0, 300 }, + { CREDITSSCRCMD_PRINT, 1, 300 }, + { CREDITSSCRCMD_PRINT, 2, 300 }, + { CREDITSSCRCMD_PRINT, 42, 60 }, + { CREDITSSCRCMD_MAPNEXT, 1, 0 }, + { CREDITSSCRCMD_PRINT, 3, 211 }, + { CREDITSSCRCMD_PRINT, 4, 211 }, + { CREDITSSCRCMD_PRINT, 5, 211 }, + { CREDITSSCRCMD_MAPNEXT, 2, 0 }, + { CREDITSSCRCMD_PRINT, 6, 211 }, + { CREDITSSCRCMD_PRINT, 7, 210 }, + { CREDITSSCRCMD_PRINT, 8, 210 }, + { CREDITSSCRCMD_MON, 0, 0 }, + { CREDITSSCRCMD_MAP, 3, 16 }, + { CREDITSSCRCMD_PRINT, 9, 211 }, + { CREDITSSCRCMD_PRINT, 10, 210 }, + { CREDITSSCRCMD_PRINT, 11, 210 }, + { CREDITSSCRCMD_MAPNEXT, 4, 16 }, + { CREDITSSCRCMD_PRINT, 12, 211 }, + { CREDITSSCRCMD_PRINT, 13, 210 }, + { CREDITSSCRCMD_PRINT, 14, 210 }, + { CREDITSSCRCMD_MAPNEXT, 5, 16 }, + { CREDITSSCRCMD_PRINT, 15, 211 }, + { CREDITSSCRCMD_PRINT, 16, 210 }, + { CREDITSSCRCMD_PRINT, 17, 210 }, + { CREDITSSCRCMD_MON, 1, 0 }, + { CREDITSSCRCMD_MAP, 6, 16 }, + { CREDITSSCRCMD_PRINT, 18, 211 }, + { CREDITSSCRCMD_PRINT, 19, 210 }, + { CREDITSSCRCMD_PRINT, 20, 210 }, + { CREDITSSCRCMD_MAPNEXT, 7, 16 }, + { CREDITSSCRCMD_PRINT, 21, 221 }, + { CREDITSSCRCMD_PRINT, 22, 221 }, + { CREDITSSCRCMD_PRINT, 23, 221 }, + { CREDITSSCRCMD_PRINT, 24, 221 }, + { CREDITSSCRCMD_PRINT, 42, 51 }, + { CREDITSSCRCMD_MAPNEXT, 8, 16 }, + { CREDITSSCRCMD_PRINT, 25, 211 }, + { CREDITSSCRCMD_PRINT, 26, 210 }, + { CREDITSSCRCMD_PRINT, 27, 210 }, + { CREDITSSCRCMD_MON, 2, 0 }, + { CREDITSSCRCMD_MAP, 9, 16 }, + { CREDITSSCRCMD_PRINT, 28, 331 }, + { CREDITSSCRCMD_PRINT, 29, 331 }, + { CREDITSSCRCMD_PRINT, 30, 331 }, + { CREDITSSCRCMD_MAPNEXT, 10, 16 }, + { CREDITSSCRCMD_PRINT, 31, 221 }, + { CREDITSSCRCMD_PRINT, 32, 221 }, + { CREDITSSCRCMD_PRINT, 33, 221 }, + { CREDITSSCRCMD_PRINT, 34, 221 }, + { CREDITSSCRCMD_PRINT, 42, 52 }, + { CREDITSSCRCMD_MAPNEXT, 11, 16 }, + { CREDITSSCRCMD_PRINT, 41, 210 }, + { CREDITSSCRCMD_PRINT, 35, 210 }, + { CREDITSSCRCMD_PRINT, 36, 211 }, + { CREDITSSCRCMD_MON, 3, 0 }, + { CREDITSSCRCMD_MAP, 12, 16 }, + { CREDITSSCRCMD_PRINT, 37, 221 }, + { CREDITSSCRCMD_PRINT, 40, 221 }, + { CREDITSSCRCMD_PRINT, 38, 221 }, + { CREDITSSCRCMD_PRINT, 39, 221 }, + { CREDITSSCRCMD_PRINT, 42, 52 }, + { CREDITSSCRCMD_THEENDGFX, 0, 224 }, + { CREDITSSCRCMD_THEENDGFX, 1, 240 }, + { CREDITSSCRCMD_WAITBUTTON, 0, 600 } }; -const ALIGNED(4) u8 gUnknown_8410FFC[3] = {0, 1, 2}; -const ALIGNED(4) u8 gUnknown_8410E00[3] = {0, 5, 2}; -const ALIGNED(4) u8 gUnknown_8410E04[3] = {0, 1, 2}; +static const ALIGNED(4) u8 sTextColor_Unused[3] = {0, 1, 2}; +static const ALIGNED(4) u8 sTextColor_Header[3] = {0, 5, 2}; +static const ALIGNED(4) u8 sTextColor_Regular[3] = {0, 1, 2}; -const struct WindowTemplate gUnknown_8410E08 = { +static const struct WindowTemplate sCreditsWindowTemplate = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 4, @@ -329,20 +380,20 @@ const struct WindowTemplate gUnknown_8410E08 = { .baseBlock = 0x008 }; -const u16 gUnknown_8410E10[] = INCBIN_U16("data/credits/unk_8410E10.gbapal"); -const u32 gUnknown_8410E30[] = INCBIN_U32("data/credits/unk_8410E30.4bpp.lz"); -const u16 gUnknown_8411BF8[] = INCBIN_U16("data/credits/unk_8411BF8.gbapal"); -const u32 gUnknown_8411C18[] = INCBIN_U32("data/credits/unk_8411C18.4bpp.lz"); -const u16 gUnknown_84129A0[] = INCBIN_U16("data/credits/unk_84129A0.gbapal"); -const u32 gUnknown_84129C0[] = INCBIN_U32("data/credits/unk_84129C0.4bpp.lz"); -const u16 gUnknown_8413318[] = INCBIN_U16("data/credits/unk_8413318.gbapal"); -const u32 gUnknown_8413338[] = INCBIN_U32("data/credits/unk_8413338.4bpp.lz"); -const u16 gUnknown_8413854[] = INCBIN_U16("data/credits/unk_8413854.gbapal"); -const u32 gUnknown_8413874[] = INCBIN_U32("data/credits/unk_8413874.4bpp.lz"); -const u16 gUnknown_8413D98[] = INCBIN_U16("data/credits/unk_8413D98.gbapal"); -const u32 gUnknown_8413DB8[] = INCBIN_U32("data/credits/unk_8413DB8.4bpp.lz"); +static const u16 sMalePlayerSpritePal[] = INCBIN_U16("data/credits/unk_8410E10.gbapal"); +static const u32 sMalePlayerSpriteGfx[] = INCBIN_U32("data/credits/unk_8410E30.4bpp.lz"); +static const u16 sFemalePlayerSpritePal[] = INCBIN_U16("data/credits/unk_8411BF8.gbapal"); +static const u32 sFemalePlayerSpriteGfx[] = INCBIN_U32("data/credits/unk_8411C18.4bpp.lz"); +static const u16 sRivalSpritePal[] = INCBIN_U16("data/credits/unk_84129A0.gbapal"); +static const u32 sRivalSpriteGfx[] = INCBIN_U32("data/credits/unk_84129C0.4bpp.lz"); +static const u16 sGroundSpritePal_Grass[] = INCBIN_U16("data/credits/unk_8413318.gbapal"); +static const u32 sGroundSpriteGfx_Grass[] = INCBIN_U32("data/credits/unk_8413338.4bpp.lz"); +static const u16 sGroundSpritePal_Dirt[] = INCBIN_U16("data/credits/unk_8413854.gbapal"); +static const u32 sGroundSpriteGfx_Dirt[] = INCBIN_U32("data/credits/unk_8413874.4bpp.lz"); +static const u16 sGroundSpritePal_City[] = INCBIN_U16("data/credits/unk_8413D98.gbapal"); +static const u32 sGroundSpriteGfx_City[] = INCBIN_U32("data/credits/unk_8413DB8.4bpp.lz"); -const u16 gUnknown_841431C[][3] = { +static const u16 sPlayerRivalSpriteParams[][3] = { { 0, 3, 1 }, { 0, 2, 0 }, { 0, 3, 0 }, @@ -350,7 +401,7 @@ const u16 gUnknown_841431C[][3] = { { 0, 0, 3 } }; -const struct OamData gOamData_841433C = { +static const struct OamData sOamData_PlayerOrRival = { .affineMode = ST_OAM_AFFINE_OFF, .mosaic = FALSE, .objMode = ST_OAM_OBJ_NORMAL, @@ -362,7 +413,7 @@ const struct OamData gOamData_841433C = { .paletteNum = 15 }; -const union AnimCmd gAnimCmds_8414344[] = { +const union AnimCmd sAnimCmds_PlayerOrRival[] = { ANIMCMD_FRAME(0x000, 8), ANIMCMD_FRAME(0x040, 8), ANIMCMD_FRAME(0x080, 8), @@ -372,18 +423,18 @@ const union AnimCmd gAnimCmds_8414344[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd *const gAnimCmdTable_8414360[] = { - gAnimCmds_8414344 +const union AnimCmd *const sAnimCmdTable_PlayerOrRival[] = { + sAnimCmds_PlayerOrRival }; -const struct SpriteTemplate gUnknown_8414364 = { - .oam = &gOamData_841433C, - .anims = gAnimCmdTable_8414360, +static const struct SpriteTemplate sPlayerOrRivalSpriteTemplate = { + .oam = &sOamData_PlayerOrRival, + .anims = sAnimCmdTable_PlayerOrRival, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -const struct OamData gOamData_841437C = { +static const struct OamData sOamData_Ground = { .affineMode = ST_OAM_AFFINE_OFF, .mosaic = FALSE, .objMode = ST_OAM_OBJ_NORMAL, @@ -395,7 +446,7 @@ const struct OamData gOamData_841437C = { .paletteNum = 14 }; -const union AnimCmd gAnimCmds_8414384[] = { +const union AnimCmd sAnimCmds_GroundRunning[] = { ANIMCMD_FRAME(0x00, 8), ANIMCMD_FRAME(0x20, 8), ANIMCMD_FRAME(0x40, 8), @@ -407,149 +458,141 @@ const union AnimCmd gAnimCmds_8414384[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd gAnimCmds_84143A8[] = { +const union AnimCmd sAnimCmds_GroundStatic[] = { ANIMCMD_FRAME(0x00, 8), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gAnimCmdTable_84143B0[] = { - gAnimCmds_8414384 +const union AnimCmd *const sAnimCmdTable_GroundRunning[] = { + sAnimCmds_GroundRunning }; -const union AnimCmd *const gAnimCmdTable_84143B4[] = { - gAnimCmds_84143A8 +const union AnimCmd *const sAnimCmdTable_GroundStatic[] = { + sAnimCmds_GroundStatic }; -const struct SpriteTemplate gUnknown_84143B8 = { - .oam = &gOamData_841437C, - .anims = gAnimCmdTable_84143B0, +static const struct SpriteTemplate sGroundSpriteTemplate_Running = { + .oam = &sOamData_Ground, + .anims = sAnimCmdTable_GroundRunning, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_84143D0 = { - .oam = &gOamData_841437C, - .anims = gAnimCmdTable_84143B4, +static const struct SpriteTemplate sGroundSpriteTemplate_Static = { + .oam = &sOamData_Ground, + .anims = sAnimCmdTable_GroundStatic, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -const struct CreditsOverworldCmd gUnknown_84143E8[] = { +static const struct CreditsOverworldCmd sOverworldCmd_Route23[] = { { 0x00fe, MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23) }, { 0x000b, 0x006b, 0x0001 }, { 0x0000, 0x0001, 0x0500 }, // Scroll down { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414408[] = { +static const struct CreditsOverworldCmd sOverworldCmd_ViridianCity[] = { { 0x00fe, MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY) }, { 0x001e, 0x0022, 0x0001 }, { 0x0000, 0xffff, 0x0500 }, // Scroll up { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414428[] = { +static const struct CreditsOverworldCmd sOverworldCmd_PewterCity[] = { { 0x00fe, MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY) }, { 0x0014, 0x001a, 0x0001 }, { 0x0000, 0xffff, 0x0500 }, // Scroll up { 0x00fd, 0x00fd, 0x00fd } }; -// Charizard - -const struct CreditsOverworldCmd gUnknown_8414448[] = { +static const struct CreditsOverworldCmd sOverworldCmd_CeruleanCity[] = { { 0x00fe, MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY) }, { 0x0008, 0x0006, 0x0001 }, { 0x0001, 0x0001, 0x0500 }, // Scroll right and down { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414468[] = { +static const struct CreditsOverworldCmd sOverworldCmd_Route25[] = { { 0x00fe, MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) }, { 0x0019, 0x0006, 0x0001 }, { 0x0001, 0x0000, 0x0500 }, // Scroll right { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414488[] = { +static const struct CreditsOverworldCmd sOverworldCmd_VermilionCity[] = { { 0x00fe, MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY) }, { 0x0009, 0x0007, 0x0001 }, { 0x0001, 0x0001, 0x0500 }, // Scroll right and down { 0x00fd, 0x00fd, 0x00fd } }; -// Venusaur - -const struct CreditsOverworldCmd gUnknown_84144A8[] = { +static const struct CreditsOverworldCmd sOverworldCmd_Route10[] = { { 0x00fe, MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) }, { 0x000b, 0x0044, 0x0001 }, { 0x0000, 0x0001, 0x0500 }, // Scroll down { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_84144C8[] = { +static const struct CreditsOverworldCmd sOverworldCmd_CeladonCity[] = { { 0x00fe, MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY) }, { 0x0030, 0x0010, 0x0001 }, { 0xffff, 0x0000, 0x0500 }, // Scroll left { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_84144E8[] = { +static const struct CreditsOverworldCmd sOverworldCmd_SaffronCity[] = { { 0x00fe, MAP_GROUP(SAFFRON_CITY_DUPLICATE), MAP_NUM(SAFFRON_CITY_DUPLICATE) }, { 0x0027, 0x0005, 0x0001 }, { 0x0000, 0x0001, 0x0500 }, // Scroll down { 0x00fd, 0x00fd, 0x00fd } }; -// Blastoise - -const struct CreditsOverworldCmd gUnknown_8414508[] = { +static const struct CreditsOverworldCmd sOverworldCmd_Route17[] = { { 0x00fe, MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) }, { 0x0007, 0x002b, 0x0001 }, { 0x0000, 0x0001, 0x0500 }, // Scroll down { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414528[] = { +static const struct CreditsOverworldCmd sOverworldCmd_FuchsiaCity[] = { { 0x00fe, MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY) }, { 0x001c, 0x0005, 0x0001 }, { 0x0000, 0x0001, 0x0500 }, // Scroll down { 0x00fd, 0x00fd, 0x00fd } }; -const struct CreditsOverworldCmd gUnknown_8414548[] = { +static const struct CreditsOverworldCmd sOverworldCmd_CinnabarIsland[] = { { 0x00fe, MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND) }, { 0x000d, 0x0011, 0x0001 }, { 0x0000, 0xffff, 0x0500 }, // Scroll up { 0x00fd, 0x00fd, 0x00fd } }; -// Pikachu - -const struct CreditsOverworldCmd gUnknown_8414568[] = { +static const struct CreditsOverworldCmd sOverworldCmd_Route21[] = { { 0x00fe, MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) }, { 0x0008, 0x0014, 0x0001 }, { 0x0000, 0xffff, 0x0500 }, // Scroll up { 0x00fd, 0x00fd, 0x00fd }, }; -const struct CreditsOverworldCmd *const gUnknown_8414588[] = { - gUnknown_84143E8, - gUnknown_8414408, - gUnknown_8414428, - gUnknown_8414448, - gUnknown_8414468, - gUnknown_8414488, - gUnknown_84144A8, - gUnknown_84144C8, - gUnknown_84144E8, - gUnknown_8414508, - gUnknown_8414528, - gUnknown_8414548, - gUnknown_8414568 +static const struct CreditsOverworldCmd *const sOverworldMapScenes[] = { + sOverworldCmd_Route23, + sOverworldCmd_ViridianCity, + sOverworldCmd_PewterCity, + sOverworldCmd_CeruleanCity, + sOverworldCmd_Route25, + sOverworldCmd_VermilionCity, + sOverworldCmd_Route10, + sOverworldCmd_CeladonCity, + sOverworldCmd_SaffronCity, + sOverworldCmd_Route17, + sOverworldCmd_FuchsiaCity, + sOverworldCmd_CinnabarIsland, + sOverworldCmd_Route21 }; -const struct UnkStruct_84145BC gUnknown_84145BC[] = { +static const struct CreditsTextHeader sCreditsTexts[] = { { gUnknown_841D1D8, gUnknown_841D1E8, FALSE }, { gUnknown_841D200, gUnknown_841D224, FALSE }, { gUnknown_841D248, gUnknown_841D284, FALSE }, @@ -597,17 +640,17 @@ const struct UnkStruct_84145BC gUnknown_84145BC[] = { void Special_Credits(void) { - gUnknown_203AB40 = AllocZeroed(sizeof(*gUnknown_203AB40)); + sCreditsMgr = AllocZeroed(sizeof(*sCreditsMgr)); ResetTasks(); - gUnknown_203AB40->unk_02 = 0xFF; - gUnknown_203AB40->unk_1D = 0; + sCreditsMgr->taskId = 0xFF; + sCreditsMgr->unk_1D = 0; ResetSpriteData(); - SetMainCallback2(sub_80F39E8); + SetMainCallback2(CB2_Credits); } -void sub_80F39E8(void) +static void CB2_Credits(void) { - switch (sub_80F3BD0()) + switch (RollCredits()) { case 0: RunTasks(); @@ -616,9 +659,9 @@ void sub_80F39E8(void) UpdatePaletteFade(); break; case 1: - if (gUnknown_203AB40->unk_1D & 1) + if (sCreditsMgr->unk_1D & 1) { - sub_80574A4(); + Overworld_CreditsMainCB(); } else { @@ -627,18 +670,18 @@ void sub_80F39E8(void) BuildOamBuffer(); UpdatePaletteFade(); } - gUnknown_203AB40->unk_1D++; + sCreditsMgr->unk_1D++; break; case 2: FlagClear(0x4000); - gUnknown_2031DD8 = 0; - Free(gUnknown_203AB40); + gDisableMapMusicChangeOnMapLoad = MUSIC_DISABLE_OFF; + Free(sCreditsMgr); SoftReset(RESET_ALL); // noreturn } } -void sub_80F3A74(void) +static void SwitchWin1OffWin0On(void) { ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); @@ -646,50 +689,50 @@ void sub_80F3A74(void) SetGpuReg(REG_OFFSET_WINOUT, 0x000E); } -void sub_80F3AA4(void) +static void InitBgDarkenEffect(void) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4)); SetGpuReg(REG_OFFSET_BLDY, 10); } -void sub_80F3AC4(void) +static void CreateCreditsWindow(void) { - gUnknown_203AB40->unk_0A = AddWindow(&gUnknown_8410E08); - FillWindowPixelBuffer(gUnknown_203AB40->unk_0A, PIXEL_FILL(0)); - PutWindowTilemap(gUnknown_203AB40->unk_0A); - CopyWindowToVram(gUnknown_203AB40->unk_0A, 3); - gUnknown_203AB40->unk_0B = TRUE; + sCreditsMgr->windowId = AddWindow(&sCreditsWindowTemplate); + FillWindowPixelBuffer(sCreditsMgr->windowId, PIXEL_FILL(0)); + PutWindowTilemap(sCreditsMgr->windowId); + CopyWindowToVram(sCreditsMgr->windowId, 3); + sCreditsMgr->windowIsActive = TRUE; } -void sub_80F3B04(void) +static void DestroyCreditsWindow(void) { - if (gUnknown_203AB40->unk_0B) + if (sCreditsMgr->windowIsActive) { - RemoveWindow(gUnknown_203AB40->unk_0A); + RemoveWindow(sCreditsMgr->windowId); CleanupOverworldWindowsAndTilemaps(); - gUnknown_203AB40->unk_0B = FALSE; + sCreditsMgr->windowIsActive = FALSE; } } -bool32 sub_80F3B2C(UNUSED u8 unused) +static bool32 DoOverworldMapScrollScene(UNUSED u8 unused) { - switch (gUnknown_203AB40->unk_01) + switch (sCreditsMgr->subseqno) { case 0: FlagSet(0x4000); - gUnknown_2031DD8 = 2; - gUnknown_203AB40->unk_1C = 0; - gUnknown_203AB40->unk_01++; + gDisableMapMusicChangeOnMapLoad = MUSIC_DISABLE_KEEP; + sCreditsMgr->ovwldseqno = 0; + sCreditsMgr->subseqno++; // fallthrough case 1: - if (!sub_805750C(&gUnknown_203AB40->unk_1C, gUnknown_8414588[gUnknown_203AB40->unk_09], 0)) + if (!Overworld_DoScrollSceneForCredits(&sCreditsMgr->ovwldseqno, sOverworldMapScenes[sCreditsMgr->whichMon], 0)) return FALSE; - sub_80F3AC4(); + CreateCreditsWindow(); SetGpuReg(REG_OFFSET_WIN0H, 0xF0); SetGpuReg(REG_OFFSET_WIN0V, 0x247C); - sub_80F3A74(); - sub_80F3AA4(); + SwitchWin1OffWin0On(); + InitBgDarkenEffect(); Menu_LoadStdPalAt(0xF0); gPlttBufferUnfaded[0xFF] = RGB_BLACK; gPlttBufferFaded[0xFF] = RGB_BLACK; @@ -700,33 +743,33 @@ bool32 sub_80F3B2C(UNUSED u8 unused) } #ifdef NONMATCHING -s32 sub_80F3BD0(void) +static s32 RollCredits(void) { - u16 win0v[2]; + u16 win0v[8]; - switch (gUnknown_203AB40->unk_00) + switch (sCreditsMgr->mainseqno) { - case 0: - sub_80F3A74(); + case CREDITSSCENE_INIT_WIN0: + SwitchWin1OffWin0On(); SetGpuReg(REG_OFFSET_WIN0H, 0x40); SetGpuReg(REG_OFFSET_WIN0V, 0x4F51); - gUnknown_203AB40->unk_00 = 1; + sCreditsMgr->mainseqno = CREDITSSCENE_SETUP_DARKEN_EFFECT; return 0; - case 1: - sub_80F3AA4(); - sub_80F3AC4(); + case CREDITSSCENE_SETUP_DARKEN_EFFECT: + InitBgDarkenEffect(); + CreateCreditsWindow(); Menu_LoadStdPalAt(0xF0); gPlttBufferUnfaded[0xFF] = RGB_BLACK; gPlttBufferFaded[0xFF] = RGB_BLACK; - gUnknown_203AB40->unk_00 = 2; + sCreditsMgr->mainseqno = CREDITSSCENE_OPEN_WIN0; return 0; - case 2: + case CREDITSSCENE_OPEN_WIN0: win0v[0] = GetGpuReg(REG_OFFSET_WIN0V) >> 8; win0v[1] = GetGpuReg(REG_OFFSET_WIN0V) & 0xFF; if (win0v[0] == 0x24) { - gUnknown_203AB40->unk_04 = 0; - gUnknown_203AB40->unk_00 = 3; + sCreditsMgr->timer = 0; + sCreditsMgr->mainseqno = CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO; } else { @@ -735,128 +778,128 @@ s32 sub_80F3BD0(void) SetGpuReg(REG_OFFSET_WIN0V, win0v[1] + (win0v[0] << 8)); } return 0; - case 3: - if (gUnknown_203AB40->unk_04 == 0) + case CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO: + if (sCreditsMgr->timer != 0) { - sub_80F4930(0); - gUnknown_203AB40->unk_04 = 100; - gUnknown_203AB40->unk_00 = 4; + LoadPlayerOrRivalSprite(0); + sCreditsMgr->timer = 100; + sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_TITLE_STAFF; } else { - gUnknown_203AB40->unk_04--; + sCreditsMgr->timer--; } return 0; - case 4: - if (gUnknown_203AB40->unk_04 == 0) + case CREDITSSCENE_PRINT_TITLE_STAFF: + if (sCreditsMgr->timer == 0) { - gUnknown_203AB40->unk_04 = 360; - AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 0x08, 0x29, 1, 2, gUnknown_8410E00, 0, gUnknown_841D198); - gUnknown_203AB40->unk_00 = 5; + sCreditsMgr->timer = 360; + AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 0x08, 0x29, 1, 2, sTextColor_Header, 0, TITLE_TEXT); + sCreditsMgr->mainseqno = CREDITSSCENE_WAIT_TITLE_STAFF; } else { - gUnknown_203AB40->unk_04--; + sCreditsMgr->timer--; } return 0; - case 5: - if (gUnknown_203AB40->unk_04 == 0) + case CREDITSSCENE_WAIT_TITLE_STAFF: + if (sCreditsMgr->timer != 0) { - sub_80F3B04(); - gUnknown_203AB40->unk_00 = 6; - gUnknown_203AB40->unk_04 = 0; - gUnknown_203AB40->unk_06 = 0; + sCreditsMgr->timer--; } else { - gUnknown_203AB40->unk_04--; + DestroyCreditsWindow(); + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; + sCreditsMgr->timer = 0; + sCreditsMgr->scrcmdidx = 0; } return 0; - case 6: - if (gUnknown_203AB40->unk_04 != 0) + case CREDITSSCENE_EXEC_CMD: + if (sCreditsMgr->timer != 0) { - gUnknown_203AB40->unk_04--; - return gUnknown_203AB40->unk_08; + sCreditsMgr->timer--; + return sCreditsMgr->canSpeedThrough; } else { - switch (gUnknown_203AB40->unk_06) + switch (sCreditsScript[sCreditsMgr->scrcmdidx].cmd) { - case 0: + case CREDITSSCRCMD_PRINT: BeginNormalPaletteFade(0x00008000, 0, 0, 16, RGB_BLACK); - gUnknown_203AB40->unk_00 = 7; - FillWindowPixelBuffer(gUnknown_203AB40->unk_0A, PIXEL_FILL(0)); - return gUnknown_203AB40->unk_08; - case 1: - gUnknown_203AB40->unk_00 = 10; - gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; - sub_807A944(1, 0, 0x3FFFFFFF); + sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_ADDPRINTER1; + FillWindowPixelBuffer(sCreditsMgr->windowId, PIXEL_FILL(0)); + return sCreditsMgr->canSpeedThrough; + case CREDITSSCRCMD_MAPNEXT: + sCreditsMgr->mainseqno = CREDITSSCENE_MAPNEXT_DESTROYWINDOW; + sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; + FieldWeather_StartFadingOutCreditsMap(1, 0, 0x3FFFFFFF); break; - case 2: - gUnknown_203AB40->unk_00 = 12; - gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + case CREDITSSCRCMD_MAP: + sCreditsMgr->mainseqno = CREDITSSCENE_MAP_LOADMAP_CREATESPRITES; + sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; break; - case 3: - gUnknown_203AB40->unk_00 = 13; - gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + case CREDITSSCRCMD_MON: + sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS; + sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; fade_screen(1, 0); break; - case 4: - gUnknown_203AB40->unk_00 = 15; - gUnknown_203AB40->unk_09 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1; + case CREDITSSCRCMD_THEENDGFX: + sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS; + sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 16, RGB_BLACK); break; - case 5: - gUnknown_203AB40->unk_00 = 17; + case CREDITSSCRCMD_WAITBUTTON: + sCreditsMgr->mainseqno = CREDITSSCENE_WAITBUTTON; break; } - gUnknown_203AB40->unk_04 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk2; - gUnknown_203AB40->unk_06++; + sCreditsMgr->timer = sCreditsScript[sCreditsMgr->scrcmdidx].duration; + sCreditsMgr->scrcmdidx++; + return 0; } - return 0; - case 7: + case CREDITSSCENE_PRINT_ADDPRINTER1: if (!gPaletteFade.active) { - win0v[0] = gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_8; // unused - AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 2, 6, 0, 0, gUnknown_8410E00, -1, gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_0); - gUnknown_203AB40->unk_00 = 8; + win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8; // unused + AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_0); + sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_ADDPRINTER2; } - return gUnknown_203AB40->unk_08; - case 8: - win0v[0] = gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_8; - AddTextPrinterParameterized4(gUnknown_203AB40->unk_0A, 1, 2, 6, 0, 0, gUnknown_8410E00, -1, gUnknown_84145BC[gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk1].unk_4); - gUnknown_203AB40->unk_00 = 9; - return gUnknown_203AB40->unk_08; - case 9: - CopyWindowToVram(gUnknown_203AB40->unk_0A, 2); - gUnknown_203AB40->unk_04 = gUnknown_8410CF4[gUnknown_203AB40->unk_06].unk2; - gUnknown_203AB40->unk_06++; + return sCreditsMgr->canSpeedThrough; + case CREDITSSCENE_PRINT_ADDPRINTER2: + win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8; + AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_4); + sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_DELAY; + return sCreditsMgr->canSpeedThrough; + case CREDITSSCENE_PRINT_DELAY: + CopyWindowToVram(sCreditsMgr->windowId, 2); + sCreditsMgr->timer = sCreditsScript[sCreditsMgr->scrcmdidx].duration; + sCreditsMgr->scrcmdidx++; BeginNormalPaletteFade(0x00008000, 0, 16, 0, RGB_BLACK); - gUnknown_203AB40->unk_00 = 6; - return gUnknown_203AB40->unk_08; - case 10: + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; + return sCreditsMgr->canSpeedThrough; + case CREDITSSCENE_MAPNEXT_DESTROYWINDOW: if (!gPaletteFade.active) { - sub_80F3B04(); - gUnknown_203AB40->unk_01 = 0; - gUnknown_203AB40->unk_00 = 11; + DestroyCreditsWindow(); + sCreditsMgr->subseqno = 0; + sCreditsMgr->mainseqno = CREDITSSCENE_MAPNEXT_LOADMAP; } return 0; - case 11: - if (sub_80F3B2C(gUnknown_203AB40->unk_09)) + case CREDITSSCENE_MAPNEXT_LOADMAP: + if (DoOverworldMapScrollScene(sCreditsMgr->whichMon)) { - gUnknown_203AB40->unk_08 = 1; - gUnknown_203AB40->unk_00 = 6; + sCreditsMgr->canSpeedThrough = 1; + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; } return 0; - case 12: + case CREDITSSCENE_MAP_LOADMAP_CREATESPRITES: if (!gPaletteFade.active) { - sub_80F3B04(); - gUnknown_203AB40->unk_01 = 0; - while (sub_80F3B2C(gUnknown_203AB40->unk_09)) + DestroyCreditsWindow(); + sCreditsMgr->subseqno = 0; + while (DoOverworldMapScrollScene(sCreditsMgr->whichMon)) {} - switch (gUnknown_203AB40->unk_09) + switch (sCreditsMgr->whichMon) { default: win0v[0] = 1; @@ -871,70 +914,70 @@ s32 sub_80F3BD0(void) win0v[0] = 4; break; } - sub_80F4930(win0v[0]); - gUnknown_203AB40->unk_08 = 1; - gUnknown_203AB40->unk_00 = 6; + LoadPlayerOrRivalSprite(win0v[0]); + sCreditsMgr->canSpeedThrough = 1; + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; } return 0; - case 13: + case CREDITSSCENE_MON_DESTROY_ASSETS: if (!gPaletteFade.active) { - sub_80F48D0(); - sub_80F3B04(); - gUnknown_203AB40->unk_01 = 0; - gUnknown_203AB40->unk_08 = 0; - gUnknown_203AB40->unk_00 = 14; + DestroyPlayerOrRivalSprite(); + DestroyCreditsWindow(); + sCreditsMgr->subseqno = 0; + sCreditsMgr->canSpeedThrough = 0; + sCreditsMgr->mainseqno = CREDITSSCENE_MON_SHOW; } return 0; - case 14: - if (sub_80F4328()) + case CREDITSSCENE_MON_SHOW: + if (DoCreditsMonScene()) { - gUnknown_203AB40->unk_00 = 6; + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; } return 0; - case 15: + case CREDITSSCENE_THEEND_DESTROY_ASSETS: if (!gPaletteFade.active) { - sub_80F3B04(); - gUnknown_203AB40->unk_01 = 0; - gUnknown_203AB40->unk_08 = 0; - gUnknown_203AB40->unk_00 = 16; + DestroyCreditsWindow(); + sCreditsMgr->subseqno = 0; + sCreditsMgr->canSpeedThrough = 0; + sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_SHOW; } return 0; - case 16: - if (sub_80F4674()) + case CREDITSSCENE_THEEND_SHOW: + if (DoCopyrightOrTheEndGfxScene()) { - gUnknown_203AB40->unk_00 = 6; + sCreditsMgr->mainseqno = CREDITSSCENE_EXEC_CMD; } return 0; - case 17: + case CREDITSSCENE_WAITBUTTON: if (JOY_NEW(A_BUTTON)) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE); - gUnknown_203AB40->unk_00 = 18; + sCreditsMgr->mainseqno = CREDITSSCENE_TERMINATE; } - else if (gUnknown_203AB40->unk_04 == 0) + else if (sCreditsMgr->timer == 0) { - gUnknown_203AB40->unk_00 = 18; + sCreditsMgr->mainseqno = CREDITSSCENE_TERMINATE; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_WHITE); } else - gUnknown_203AB40->unk_04--; + sCreditsMgr->timer--; return 0; - case 18: + case CREDITSSCENE_TERMINATE: if (!gPaletteFade.active) - sub_80F3B04(); - default: - return 2; + DestroyCreditsWindow(); + break; } + return 2; } #else NAKED -s32 sub_80F3BD0(void) +static s32 RollCredits(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tsub sp, 0x24\n" - "\tldr r1, _080F3BEC @ =gUnknown_203AB40\n" + "\tldr r1, _080F3BEC @ =sCreditsMgr\n" "\tldr r0, [r1]\n" "\tldrb r0, [r0]\n" "\tadds r7, r1, 0\n" @@ -948,7 +991,7 @@ s32 sub_80F3BD0(void) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080F3BEC: .4byte gUnknown_203AB40\n" + "_080F3BEC: .4byte sCreditsMgr\n" "_080F3BF0: .4byte _080F3BF4\n" "\t.align 2, 0\n" "_080F3BF4:\n" @@ -972,23 +1015,23 @@ s32 sub_80F3BD0(void) "\t.4byte _080F4118_case11\n" "\t.4byte _080F4170_case12\n" "_080F3C40_case00:\n" - "\tbl sub_80F3A74\n" + "\tbl SwitchWin1OffWin0On\n" "\tmovs r0, 0x40\n" "\tmovs r1, 0xF0\n" "\tbl SetGpuReg\n" "\tldr r1, _080F3C5C @ =0x00004f51\n" "\tmovs r0, 0x44\n" "\tbl SetGpuReg\n" - "\tldr r0, _080F3C60 @ =gUnknown_203AB40\n" + "\tldr r0, _080F3C60 @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x1\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" "_080F3C5C: .4byte 0x00004f51\n" - "_080F3C60: .4byte gUnknown_203AB40\n" + "_080F3C60: .4byte sCreditsMgr\n" "_080F3C64_case01:\n" - "\tbl sub_80F3AA4\n" - "\tbl sub_80F3AC4\n" + "\tbl InitBgDarkenEffect\n" + "\tbl CreateCreditsWindow\n" "\tmovs r0, 0xF0\n" "\tbl Menu_LoadStdPalAt\n" "\tldr r0, _080F3C8C @ =gPlttBufferUnfaded\n" @@ -1000,14 +1043,14 @@ s32 sub_80F3BD0(void) "\tldr r0, _080F3C90 @ =gPlttBufferFaded\n" "\tadds r0, r2\n" "\tstrh r1, [r0]\n" - "\tldr r0, _080F3C94 @ =gUnknown_203AB40\n" + "\tldr r0, _080F3C94 @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x2\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" "_080F3C8C: .4byte gPlttBufferUnfaded\n" "_080F3C90: .4byte gPlttBufferFaded\n" - "_080F3C94: .4byte gUnknown_203AB40\n" + "_080F3C94: .4byte sCreditsMgr\n" "_080F3C98_case02:\n" "\tmovs r0, 0x44\n" "\tbl GetGpuReg\n" @@ -1025,14 +1068,14 @@ s32 sub_80F3BD0(void) "\tldrh r0, [r0]\n" "\tcmp r0, 0x24\n" "\tbne _080F3CCC\n" - "\tldr r0, _080F3CC8 @ =gUnknown_203AB40\n" + "\tldr r0, _080F3CC8 @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0\n" "\tstrh r0, [r1, 0x4]\n" "\tmovs r0, 0x3\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" - "_080F3CC8: .4byte gUnknown_203AB40\n" + "_080F3CC8: .4byte sCreditsMgr\n" "_080F3CCC:\n" "\tadd r1, sp, 0x14\n" "\tsubs r0, 0x1\n" @@ -1056,7 +1099,7 @@ s32 sub_80F3BD0(void) "\tcmp r0, 0\n" "\tbne _080F3D52_decfield4_return0\n" "\tmovs r0, 0\n" - "\tbl sub_80F4930\n" + "\tbl LoadPlayerOrRivalSprite\n" "\tldr r0, [r7]\n" "\tmovs r1, 0x64\n" "\tstrh r1, [r0, 0x4]\n" @@ -1079,10 +1122,10 @@ s32 sub_80F3BD0(void) "\tstr r1, [sp]\n" "\tmovs r1, 0x2\n" "\tstr r1, [sp, 0x4]\n" - "\tldr r1, _080F3D40 @ =gUnknown_8410E00\n" + "\tldr r1, _080F3D40 @ =sTextColor_Header\n" "\tstr r1, [sp, 0x8]\n" "\tstr r2, [sp, 0xC]\n" - "\tldr r1, _080F3D44 @ =gUnknown_841D198\n" + "\tldr r1, _080F3D44 @ =TITLE_TEXT\n" "\tstr r1, [sp, 0x10]\n" "\tmovs r1, 0x1\n" "\tmovs r2, 0x8\n" @@ -1092,8 +1135,8 @@ s32 sub_80F3BD0(void) "\tmovs r0, 0x5\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" - "_080F3D40: .4byte gUnknown_8410E00\n" - "_080F3D44: .4byte gUnknown_841D198\n" + "_080F3D40: .4byte sTextColor_Header\n" + "_080F3D44: .4byte TITLE_TEXT\n" "_080F3D48_case05:\n" "\tldr r1, [r7]\n" "\tldrh r0, [r1, 0x4]\n" @@ -1105,7 +1148,7 @@ s32 sub_80F3BD0(void) "\tstrh r0, [r1, 0x4]\n" "\tb _080F3D06_return0\n" "_080F3D58:\n" - "\tbl sub_80F3B04\n" + "\tbl DestroyCreditsWindow\n" "\tldr r0, [r7]\n" "\tmovs r1, 0x6\n" "\tstrb r1, [r0]\n" @@ -1123,7 +1166,7 @@ s32 sub_80F3BD0(void) "\tldrb r0, [r2, 0x8]\n" "\tb _080F4182_return\n" "_080F3D7A:\n" - "\tldr r1, _080F3D94 @ =gUnknown_8410CF4\n" + "\tldr r1, _080F3D94 @ =sCreditsScript\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r1\n" @@ -1138,7 +1181,7 @@ s32 sub_80F3BD0(void) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080F3D94: .4byte gUnknown_8410CF4\n" + "_080F3D94: .4byte sCreditsScript\n" "_080F3D98: .4byte _080F3D9C\n" "\t.align 2, 0\n" "_080F3D9C:\n" @@ -1156,7 +1199,7 @@ s32 sub_80F3BD0(void) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r4, _080F3DDC @ =gUnknown_203AB40\n" + "\tldr r4, _080F3DDC @ =sCreditsMgr\n" "\tldr r1, [r4]\n" "\tmovs r0, 0x7\n" "\tstrb r0, [r1]\n" @@ -1168,14 +1211,14 @@ s32 sub_80F3BD0(void) "\tldrb r0, [r0, 0x8]\n" "\tb _080F4182_return\n" "\t.align 2, 0\n" - "_080F3DDC: .4byte gUnknown_203AB40\n" + "_080F3DDC: .4byte sCreditsMgr\n" "_080F3DE0:\n" - "\tldr r2, _080F3E04 @ =gUnknown_203AB40\n" + "\tldr r2, _080F3E04 @ =sCreditsMgr\n" "\tldr r1, [r2]\n" "\tmovs r0, 0xA\n" "\tstrb r0, [r1]\n" "\tldr r2, [r2]\n" - "\tldr r1, _080F3E08 @ =gUnknown_8410CF4\n" + "\tldr r1, _080F3E08 @ =sCreditsScript\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r1\n" @@ -1184,19 +1227,19 @@ s32 sub_80F3BD0(void) "\tldr r2, _080F3E0C @ =0x3fffffff\n" "\tmovs r0, 0x1\n" "\tmovs r1, 0\n" - "\tbl sub_807A944\n" + "\tbl FieldWeather_StartFadingOutCreditsMap\n" "\tb _080F3E94\n" "\t.align 2, 0\n" - "_080F3E04: .4byte gUnknown_203AB40\n" - "_080F3E08: .4byte gUnknown_8410CF4\n" + "_080F3E04: .4byte sCreditsMgr\n" + "_080F3E08: .4byte sCreditsScript\n" "_080F3E0C: .4byte 0x3fffffff\n" "_080F3E10:\n" - "\tldr r2, _080F3E28 @ =gUnknown_203AB40\n" + "\tldr r2, _080F3E28 @ =sCreditsMgr\n" "\tldr r1, [r2]\n" "\tmovs r0, 0xC\n" "\tstrb r0, [r1]\n" "\tldr r2, [r2]\n" - "\tldr r1, _080F3E2C @ =gUnknown_8410CF4\n" + "\tldr r1, _080F3E2C @ =sCreditsScript\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r1\n" @@ -1204,15 +1247,15 @@ s32 sub_80F3BD0(void) "\tstrb r0, [r2, 0x9]\n" "\tb _080F3E94\n" "\t.align 2, 0\n" - "_080F3E28: .4byte gUnknown_203AB40\n" - "_080F3E2C: .4byte gUnknown_8410CF4\n" + "_080F3E28: .4byte sCreditsMgr\n" + "_080F3E2C: .4byte sCreditsScript\n" "_080F3E30:\n" - "\tldr r2, _080F3E50 @ =gUnknown_203AB40\n" + "\tldr r2, _080F3E50 @ =sCreditsMgr\n" "\tldr r1, [r2]\n" "\tmovs r0, 0xD\n" "\tstrb r0, [r1]\n" "\tldr r2, [r2]\n" - "\tldr r1, _080F3E54 @ =gUnknown_8410CF4\n" + "\tldr r1, _080F3E54 @ =sCreditsScript\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r1\n" @@ -1223,16 +1266,16 @@ s32 sub_80F3BD0(void) "\tbl fade_screen\n" "\tb _080F3E94\n" "\t.align 2, 0\n" - "_080F3E50: .4byte gUnknown_203AB40\n" - "_080F3E54: .4byte gUnknown_8410CF4\n" + "_080F3E50: .4byte sCreditsMgr\n" + "_080F3E54: .4byte sCreditsScript\n" "_080F3E58:\n" - "\tldr r2, _080F3E84 @ =gUnknown_203AB40\n" + "\tldr r2, _080F3E84 @ =sCreditsMgr\n" "\tldr r1, [r2]\n" "\tmovs r3, 0\n" "\tmovs r0, 0xF\n" "\tstrb r0, [r1]\n" "\tldr r2, [r2]\n" - "\tldr r1, _080F3E88 @ =gUnknown_8410CF4\n" + "\tldr r1, _080F3E88 @ =sCreditsScript\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r1\n" @@ -1247,17 +1290,17 @@ s32 sub_80F3BD0(void) "\tbl BeginNormalPaletteFade\n" "\tb _080F3E94\n" "\t.align 2, 0\n" - "_080F3E84: .4byte gUnknown_203AB40\n" - "_080F3E88: .4byte gUnknown_8410CF4\n" + "_080F3E84: .4byte sCreditsMgr\n" + "_080F3E88: .4byte sCreditsScript\n" "_080F3E8C:\n" - "\tldr r0, _080F3EAC @ =gUnknown_203AB40\n" + "\tldr r0, _080F3EAC @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x11\n" "\tstrb r0, [r1]\n" "_080F3E94:\n" - "\tldr r0, _080F3EAC @ =gUnknown_203AB40\n" + "\tldr r0, _080F3EAC @ =sCreditsMgr\n" "\tldr r1, [r0]\n" - "\tldr r2, _080F3EB0 @ =gUnknown_8410CF4\n" + "\tldr r2, _080F3EB0 @ =sCreditsScript\n" "\tldrh r0, [r1, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r2\n" @@ -1268,8 +1311,8 @@ s32 sub_80F3BD0(void) "\tstrh r0, [r1, 0x6]\n" "\tb _080F3D06_return0\n" "\t.align 2, 0\n" - "_080F3EAC: .4byte gUnknown_203AB40\n" - "_080F3EB0: .4byte gUnknown_8410CF4\n" + "_080F3EAC: .4byte sCreditsMgr\n" + "_080F3EB0: .4byte sCreditsScript\n" "_080F3EB4_case07:\n" "\tldr r0, _080F3F14 @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -1280,8 +1323,8 @@ s32 sub_80F3BD0(void) "\tcmp r6, 0\n" "\tbne _080F3FBA_returnfield8\n" "\tadd r3, sp, 0x14\n" - "\tldr r5, _080F3F18 @ =gUnknown_84145BC\n" - "\tldr r4, _080F3F1C @ =gUnknown_8410CF4\n" + "\tldr r5, _080F3F18 @ =sCreditsTexts\n" + "\tldr r4, _080F3F1C @ =sCreditsScript\n" "\tldr r2, [r7]\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" @@ -1296,7 +1339,7 @@ s32 sub_80F3BD0(void) "\tldrb r0, [r2, 0xA]\n" "\tstr r6, [sp]\n" "\tstr r6, [sp, 0x4]\n" - "\tldr r1, _080F3F20 @ =gUnknown_8410E00\n" + "\tldr r1, _080F3F20 @ =sTextColor_Header\n" "\tstr r1, [sp, 0x8]\n" "\tmovs r1, 0x1\n" "\tnegs r1, r1\n" @@ -1320,13 +1363,13 @@ s32 sub_80F3BD0(void) "\tb _080F3FB8_setfield0_returnfield8\n" "\t.align 2, 0\n" "_080F3F14: .4byte gPaletteFade\n" - "_080F3F18: .4byte gUnknown_84145BC\n" - "_080F3F1C: .4byte gUnknown_8410CF4\n" - "_080F3F20: .4byte gUnknown_8410E00\n" + "_080F3F18: .4byte sCreditsTexts\n" + "_080F3F1C: .4byte sCreditsScript\n" + "_080F3F20: .4byte sTextColor_Header\n" "_080F3F24_case08:\n" "\tadd r4, sp, 0x14\n" - "\tldr r3, _080F3F78 @ =gUnknown_84145BC\n" - "\tldr r5, _080F3F7C @ =gUnknown_8410CF4\n" + "\tldr r3, _080F3F78 @ =sCreditsTexts\n" + "\tldr r5, _080F3F7C @ =sCreditsScript\n" "\tldr r2, [r7]\n" "\tldrh r0, [r2, 0x6]\n" "\tlsls r0, 2\n" @@ -1342,7 +1385,7 @@ s32 sub_80F3BD0(void) "\tldrb r0, [r2, 0xA]\n" "\tstr r1, [sp]\n" "\tstr r1, [sp, 0x4]\n" - "\tldr r1, _080F3F80 @ =gUnknown_8410E04\n" + "\tldr r1, _080F3F80 @ =sTextColor_Regular\n" "\tstr r1, [sp, 0x8]\n" "\tmovs r1, 0x1\n" "\tnegs r1, r1\n" @@ -1366,16 +1409,16 @@ s32 sub_80F3BD0(void) "\tmovs r0, 0x9\n" "\tb _080F3FB8_setfield0_returnfield8\n" "\t.align 2, 0\n" - "_080F3F78: .4byte gUnknown_84145BC\n" - "_080F3F7C: .4byte gUnknown_8410CF4\n" - "_080F3F80: .4byte gUnknown_8410E04\n" + "_080F3F78: .4byte sCreditsTexts\n" + "_080F3F7C: .4byte sCreditsScript\n" + "_080F3F80: .4byte sTextColor_Regular\n" "_080F3F84_case09:\n" "\tldr r0, [r7]\n" "\tldrb r0, [r0, 0xA]\n" "\tmovs r1, 0x2\n" "\tbl CopyWindowToVram\n" "\tldr r1, [r7]\n" - "\tldr r2, _080F3FC0 @ =gUnknown_8410CF4\n" + "\tldr r2, _080F3FC0 @ =sCreditsScript\n" "\tldrh r0, [r1, 0x6]\n" "\tlsls r0, 2\n" "\tadds r0, r2\n" @@ -1401,7 +1444,7 @@ s32 sub_80F3BD0(void) "\tldrb r0, [r0, 0x8]\n" "\tb _080F4182_return\n" "\t.align 2, 0\n" - "_080F3FC0: .4byte gUnknown_8410CF4\n" + "_080F3FC0: .4byte sCreditsScript\n" "_080F3FC4_case0A:\n" "\tldr r0, _080F3FE8 @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -1413,8 +1456,8 @@ s32 sub_80F3BD0(void) "\tbeq _080F3FD6\n" "\tb _080F3D06_return0\n" "_080F3FD6:\n" - "\tbl sub_80F3B04\n" - "\tldr r1, _080F3FEC @ =gUnknown_203AB40\n" + "\tbl DestroyCreditsWindow\n" + "\tldr r1, _080F3FEC @ =sCreditsMgr\n" "\tldr r0, [r1]\n" "\tstrb r4, [r0, 0x1]\n" "\tldr r1, [r1]\n" @@ -1422,11 +1465,11 @@ s32 sub_80F3BD0(void) "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" "_080F3FE8: .4byte gPaletteFade\n" - "_080F3FEC: .4byte gUnknown_203AB40\n" + "_080F3FEC: .4byte sCreditsMgr\n" "_080F3FF0_case0B:\n" "\tldr r0, [r7]\n" "\tldrb r0, [r0, 0x9]\n" - "\tbl sub_80F3B2C\n" + "\tbl DoOverworldMapScrollScene\n" "\tcmp r0, 0\n" "\tbne _080F3FFE\n" "\tb _080F3D06_return0\n" @@ -1448,18 +1491,18 @@ s32 sub_80F3BD0(void) "\tbeq _080F401C\n" "\tb _080F3D06_return0\n" "_080F401C:\n" - "\tbl sub_80F3B04\n" - "\tldr r1, _080F4054 @ =gUnknown_203AB40\n" + "\tbl DestroyCreditsWindow\n" + "\tldr r1, _080F4054 @ =sCreditsMgr\n" "\tldr r0, [r1]\n" "\tstrb r4, [r0, 0x1]\n" "\tadds r4, r1, 0\n" "_080F4028:\n" "\tldr r0, [r4]\n" "\tldrb r0, [r0, 0x9]\n" - "\tbl sub_80F3B2C\n" + "\tbl DoOverworldMapScrollScene\n" "\tcmp r0, 0\n" "\tbeq _080F4028\n" - "\tldr r0, _080F4054 @ =gUnknown_203AB40\n" + "\tldr r0, _080F4054 @ =sCreditsMgr\n" "\tldr r0, [r0]\n" "\tldrb r0, [r0, 0x9]\n" "\tcmp r0, 0x6\n" @@ -1476,7 +1519,7 @@ s32 sub_80F3BD0(void) "\tb _080F4068\n" "\t.align 2, 0\n" "_080F4050: .4byte gPaletteFade\n" - "_080F4054: .4byte gUnknown_203AB40\n" + "_080F4054: .4byte sCreditsMgr\n" "_080F4058:\n" "\tadd r1, sp, 0x14\n" "\tmovs r0, 0x2\n" @@ -1492,8 +1535,8 @@ s32 sub_80F3BD0(void) "\tstrh r0, [r1]\n" "\tadd r0, sp, 0x14\n" "\tldrb r0, [r0]\n" - "\tbl sub_80F4930\n" - "\tldr r2, _080F4080 @ =gUnknown_203AB40\n" + "\tbl LoadPlayerOrRivalSprite\n" + "\tldr r2, _080F4080 @ =sCreditsMgr\n" "\tldr r1, [r2]\n" "\tmovs r0, 0x1\n" "\tstrb r0, [r1, 0x8]\n" @@ -1501,7 +1544,7 @@ s32 sub_80F3BD0(void) "\tmovs r0, 0x6\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" - "_080F4080: .4byte gUnknown_203AB40\n" + "_080F4080: .4byte sCreditsMgr\n" "_080F4084_case0D:\n" "\tldr r0, _080F40B0 @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -1513,9 +1556,9 @@ s32 sub_80F3BD0(void) "\tbeq _080F4096\n" "\tb _080F3D06_return0\n" "_080F4096:\n" - "\tbl sub_80F48D0\n" - "\tbl sub_80F3B04\n" - "\tldr r1, _080F40B4 @ =gUnknown_203AB40\n" + "\tbl DestroyPlayerOrRivalSprite\n" + "\tbl DestroyCreditsWindow\n" + "\tldr r1, _080F40B4 @ =sCreditsMgr\n" "\tldr r0, [r1]\n" "\tstrb r4, [r0, 0x1]\n" "\tldr r0, [r1]\n" @@ -1525,19 +1568,19 @@ s32 sub_80F3BD0(void) "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" "_080F40B0: .4byte gPaletteFade\n" - "_080F40B4: .4byte gUnknown_203AB40\n" + "_080F40B4: .4byte sCreditsMgr\n" "_080F40B8_case0E:\n" - "\tbl sub_80F4328\n" + "\tbl DoCreditsMonScene\n" "\tcmp r0, 0\n" "\tbne _080F40C2\n" "\tb _080F3D06_return0\n" "_080F40C2:\n" - "\tldr r0, _080F40CC @ =gUnknown_203AB40\n" + "\tldr r0, _080F40CC @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x6\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" - "_080F40CC: .4byte gUnknown_203AB40\n" + "_080F40CC: .4byte sCreditsMgr\n" "_080F40D0_case0F:\n" "\tldr r0, _080F40F8 @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -1549,8 +1592,8 @@ s32 sub_80F3BD0(void) "\tbeq _080F40E2\n" "\tb _080F3D06_return0\n" "_080F40E2:\n" - "\tbl sub_80F3B04\n" - "\tldr r1, _080F40FC @ =gUnknown_203AB40\n" + "\tbl DestroyCreditsWindow\n" + "\tldr r1, _080F40FC @ =sCreditsMgr\n" "\tldr r0, [r1]\n" "\tstrb r4, [r0, 0x1]\n" "\tldr r0, [r1]\n" @@ -1560,19 +1603,19 @@ s32 sub_80F3BD0(void) "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" "_080F40F8: .4byte gPaletteFade\n" - "_080F40FC: .4byte gUnknown_203AB40\n" + "_080F40FC: .4byte sCreditsMgr\n" "_080F4100_case10:\n" - "\tbl sub_80F4674\n" + "\tbl DoCopyrightOrTheEndGfxScene\n" "\tcmp r0, 0\n" "\tbne _080F410A\n" "\tb _080F3D06_return0\n" "_080F410A:\n" - "\tldr r0, _080F4114 @ =gUnknown_203AB40\n" + "\tldr r0, _080F4114 @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x6\n" "\tb _080F413C_setfield0_return0\n" "\t.align 2, 0\n" - "_080F4114: .4byte gUnknown_203AB40\n" + "_080F4114: .4byte sCreditsMgr\n" "_080F4118_case11:\n" "\tldr r0, _080F4140 @ =gMain\n" "\tldrh r1, [r0, 0x2E]\n" @@ -1588,7 +1631,7 @@ s32 sub_80F3BD0(void) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _080F4148 @ =gUnknown_203AB40\n" + "\tldr r0, _080F4148 @ =sCreditsMgr\n" "\tldr r1, [r0]\n" "\tmovs r0, 0x12\n" "_080F413C_setfield0_return0:\n" @@ -1597,7 +1640,7 @@ s32 sub_80F3BD0(void) "\t.align 2, 0\n" "_080F4140: .4byte gMain\n" "_080F4144: .4byte 0x00007fff\n" - "_080F4148: .4byte gUnknown_203AB40\n" + "_080F4148: .4byte sCreditsMgr\n" "_080F414C:\n" "\tldr r1, [r7]\n" "\tldrh r0, [r1, 0x4]\n" @@ -1624,7 +1667,7 @@ s32 sub_80F3BD0(void) "\tands r0, r1\n" "\tcmp r0, 0\n" "\tbne _080F4180_default_return2\n" - "\tbl sub_80F3B04\n" + "\tbl DestroyCreditsWindow\n" "_080F4180_default_return2:\n" "\tmovs r0, 0x2\n" "_080F4182_return:\n" @@ -1637,44 +1680,44 @@ s32 sub_80F3BD0(void) } #endif //NONMATCHING -void sub_80F4190(void) +static void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_80F41A4(u8 a0) +static void LoadCreditsMonPic(u8 whichMon) { - switch (a0) + switch (whichMon) { - case 0: - InitWindows(gUnknown_840C5B0); + case CREDITSMON_CHARIZARD: + InitWindows(sWindowTemplates_Charizard); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - sub_810C228(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0); - CopyToWindowPixelBuffer(1, (const void *)gUnknown_840CB8C, 0, 0); - CopyToWindowPixelBuffer(2, (const void *)gUnknown_840D228, 0, 0); + LoadMonPicForCredits(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0); + CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Charizard, 0, 0); + CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Charizard, 0, 0); break; - case 1: - InitWindows(gUnknown_840C5D0); + case CREDITSMON_VENUSAUR: + InitWindows(sWindowTemplates_Venusaur); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - sub_810C228(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0); - CopyToWindowPixelBuffer(1, (const void *)gUnknown_840E158, 0, 0); - CopyToWindowPixelBuffer(2, (const void *)gUnknown_840E904, 0, 0); + LoadMonPicForCredits(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0); + CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Venusaur, 0, 0); + CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Venusaur, 0, 0); break; - case 2: - InitWindows(gUnknown_840C5F0); + case CREDITSMON_BLASTOISE: + InitWindows(sWindowTemplates_Blastoise); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - sub_810C228(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0); - CopyToWindowPixelBuffer(1, (const void *)gUnknown_840F240, 0, 0); - CopyToWindowPixelBuffer(2, (const void *)gUnknown_840F944, 0, 0); + LoadMonPicForCredits(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0); + CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Blastoise, 0, 0); + CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Blastoise, 0, 0); break; - case 3: - InitWindows(gUnknown_840C610); + case CREDITSMON_PIKACHU: + InitWindows(sWindowTemplates_Pikachu); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - sub_810C228(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0); - CopyToWindowPixelBuffer(1, (const void *)gUnknown_8410198, 0, 0); - CopyToWindowPixelBuffer(2, (const void *)gUnknown_84105B4, 0, 0); + LoadMonPicForCredits(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0); + CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Pikachu, 0, 0); + CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Pikachu, 0, 0); break; } CopyWindowToVram(0, 2); @@ -1682,26 +1725,26 @@ void sub_80F41A4(u8 a0) CopyWindowToVram(2, 2); } -u16 sub_80F42F0(u8 a0) +static u16 GetCreditsMonSpecies(u8 whichMon) { - switch (a0) + switch (whichMon) { - case 0: + case CREDITSMON_CHARIZARD: return SPECIES_CHARIZARD; - case 1: + case CREDITSMON_VENUSAUR: return SPECIES_VENUSAUR; - case 2: + case CREDITSMON_BLASTOISE: return SPECIES_BLASTOISE; - case 3: + case CREDITSMON_PIKACHU: return SPECIES_PIKACHU; default: return SPECIES_NONE; } } -bool32 sub_80F4328(void) +static bool32 DoCreditsMonScene(void) { - switch (gUnknown_203AB40->unk_01) + switch (sCreditsMgr->subseqno) { case 0: SetVBlankCallback(NULL); @@ -1716,25 +1759,25 @@ bool32 sub_80F4328(void) ResetSpriteData(); ResetTasks(); ResetBgsAndClearDma3BusyFlags(1); - InitBgsFromTemplates(1, gUnknown_840C5A4, NELEMS(gUnknown_840C5A4)); + InitBgsFromTemplates(1, sBgTemplates_MonSceneOrTheEnd, NELEMS(sBgTemplates_MonSceneOrTheEnd)); SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); ChangeBgY(1, 0, 0); - gUnknown_203AB40->unk_0C = 0; - gUnknown_203AB40->unk_0E = 0; - SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0); - DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAAB98, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840C650, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8EAB30C, 0x500, 0, 1); - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_840CA54, 0x400, 0, 1); - LoadPalette(gUnknown_8EAAB18[gUnknown_203AB40->unk_09], 0, 0x20); - LoadPalette(gUnknown_840C630, 0xF0, 0x20); - sub_80F41A4(gUnknown_203AB40->unk_09); - SetVBlankCallback(sub_80F4190); + sCreditsMgr->creditsMonTimer = 0; + sCreditsMgr->unk_0E = 0; + SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, sCreditsMgr->creditsMonTimer, sCreditsMgr->creditsMonTimer, 0); + DecompressAndLoadBgGfxUsingHeap(1, gCreditsPokeballBgGfxTiles, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, sAffineCircleGfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, gCreditsPokeballBgGfxMap, 0x500, 0, 1); + DecompressAndLoadBgGfxUsingHeap(2, sAffineCircleMap, 0x400, 0, 1); + LoadPalette(gCreditsMonBackdropPals[sCreditsMgr->whichMon], 0, 0x20); + LoadPalette(sPalette_OneBlackThenAllWhite, 0xF0, 0x20); + LoadCreditsMonPic(sCreditsMgr->whichMon); + SetVBlankCallback(VBlankCB); EnableInterrupts(INTR_FLAG_VBLANK); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 1: FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, PIXEL_FILL(1)); @@ -1742,77 +1785,77 @@ bool32 sub_80F4328(void) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 2: ShowBg(2); ShowBg(0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); - gUnknown_203AB40->unk_0C = 0x28; - gUnknown_203AB40->unk_01++; + sCreditsMgr->creditsMonTimer = 40; + sCreditsMgr->subseqno++; break; case 3: - if (gUnknown_203AB40->unk_0C != 0) - gUnknown_203AB40->unk_0C--; + if (sCreditsMgr->creditsMonTimer != 0) + sCreditsMgr->creditsMonTimer--; else - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 4: if (!gPaletteFade.active) { - gUnknown_203AB40->unk_0C = 8; - gUnknown_203AB40->unk_0E = 1; - gUnknown_203AB40->unk_01++; + sCreditsMgr->creditsMonTimer = 8; + sCreditsMgr->unk_0E = 1; + sCreditsMgr->subseqno++; } break; case 5: - if (gUnknown_203AB40->unk_0C != 0) - gUnknown_203AB40->unk_0C--; + if (sCreditsMgr->creditsMonTimer != 0) + sCreditsMgr->creditsMonTimer--; else { - if (gUnknown_203AB40->unk_0E < 3) + if (sCreditsMgr->unk_0E < 3) { - PutWindowTilemap(gUnknown_203AB40->unk_0E); + PutWindowTilemap(sCreditsMgr->unk_0E); CopyBgTilemapBufferToVram(0); - gUnknown_203AB40->unk_0C = 4; - gUnknown_203AB40->unk_0E++; + sCreditsMgr->creditsMonTimer = 4; + sCreditsMgr->unk_0E++; } else - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; } break; case 6: - if (gUnknown_203AB40->unk_0C < 256) + if (sCreditsMgr->creditsMonTimer < 256) { - gUnknown_203AB40->unk_0C += 16; - SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, gUnknown_203AB40->unk_0C, gUnknown_203AB40->unk_0C, 0); + sCreditsMgr->creditsMonTimer += 16; + SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, sCreditsMgr->creditsMonTimer, sCreditsMgr->creditsMonTimer, 0); } else { SetBgAffine(2, 0x8000, 0x8000, 0x78, 0x50, 0x100, 0x100, 0); - gUnknown_203AB40->unk_0C = 32; - gUnknown_203AB40->unk_01++; + sCreditsMgr->creditsMonTimer = 32; + sCreditsMgr->subseqno++; } break; case 7: - if (gUnknown_203AB40->unk_0C != 0) - gUnknown_203AB40->unk_0C--; + if (sCreditsMgr->creditsMonTimer != 0) + sCreditsMgr->creditsMonTimer--; else { HideBg(2); ShowBg(1); - PlayCry2(sub_80F42F0(gUnknown_203AB40->unk_09), 0, 125, 10); - gUnknown_203AB40->unk_0C = 128; - gUnknown_203AB40->unk_01++; + PlayCry2(GetCreditsMonSpecies(sCreditsMgr->whichMon), 0, 125, 10); + sCreditsMgr->creditsMonTimer = 128; + sCreditsMgr->subseqno++; } break; case 8: - if (gUnknown_203AB40->unk_0C != 0) - gUnknown_203AB40->unk_0C--; + if (sCreditsMgr->creditsMonTimer != 0) + sCreditsMgr->creditsMonTimer--; else { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; } break; case 9: @@ -1820,7 +1863,7 @@ bool32 sub_80F4328(void) { FreeAllWindowBuffers(); Free(GetBgTilemapBuffer(0)); - gUnknown_203AB40->unk_01 = 0; + sCreditsMgr->subseqno = 0; return TRUE; } break; @@ -1828,9 +1871,9 @@ bool32 sub_80F4328(void) return FALSE; } -bool32 sub_80F4674(void) +static bool32 DoCopyrightOrTheEndGfxScene(void) { - switch (gUnknown_203AB40->unk_01) + switch (sCreditsMgr->subseqno) { case 0: SetVBlankCallback(NULL); @@ -1845,32 +1888,32 @@ bool32 sub_80F4674(void) ResetSpriteData(); ResetTasks(); ResetBgsAndClearDma3BusyFlags(1); - InitBgsFromTemplates(0, gUnknown_840C5A4, 1); + InitBgsFromTemplates(0, sBgTemplates_MonSceneOrTheEnd, 1); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); - DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].tiles, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(0, gUnknown_8410CDC[gUnknown_203AB40->unk_09].map, 0x800, 0, 1); - LoadPalette(gUnknown_8410CDC[gUnknown_203AB40->unk_09].palette, 0x00, 0x200); - SetVBlankCallback(sub_80F4190); + DecompressAndLoadBgGfxUsingHeap(0, sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].tiles, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(0, sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].map, 0x800, 0, 1); + LoadPalette(sCopyrightOrTheEndGfxHeaders[sCreditsMgr->whichMon].palette, 0x00, 0x200); + SetVBlankCallback(VBlankCB); EnableInterrupts(INTR_FLAG_VBLANK); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 1: CopyBgTilemapBufferToVram(0); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 2: ShowBg(0); - if (gUnknown_203AB40->unk_09 != 0) + if (sCreditsMgr->whichMon != 0) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK); else BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); - gUnknown_203AB40->unk_01++; + sCreditsMgr->subseqno++; break; case 3: if (!gPaletteFade.active) { - gUnknown_203AB40->unk_01 = 0; + sCreditsMgr->subseqno = 0; return TRUE; } break; @@ -1878,170 +1921,170 @@ bool32 sub_80F4674(void) return FALSE; } -void sub_80F47F8(u8 taskId) +static void Task_MovePlayerAndGroundSprites(u8 taskId) { struct CreditsTaskData * data = (void *)gTasks[taskId].data; - switch (data->field_00) + switch (data->spriteMoveCmd) { case 0: break; case 1: - if (gSprites[data->field_01].pos1.x != 0xD0) + if (gSprites[data->playerSpriteId].pos1.x != 0xD0) { - gSprites[data->field_01].pos1.x--; - gSprites[data->field_06].pos1.x--; + gSprites[data->playerSpriteId].pos1.x--; + gSprites[data->groundSpriteId].pos1.x--; } else { - data->field_00 = 0; + data->spriteMoveCmd = 0; } break; case 2: - if (gUnknown_203AB40->unk_1D & 1) + if (sCreditsMgr->unk_1D & 1) { - if (gSprites[data->field_01].pos1.y != 0x50) + if (gSprites[data->playerSpriteId].pos1.y != 0x50) { - gSprites[data->field_01].pos1.y--; - gSprites[data->field_06].pos1.y--; + gSprites[data->playerSpriteId].pos1.y--; + gSprites[data->groundSpriteId].pos1.y--; } else { - data->field_00 = 0; + data->spriteMoveCmd = 0; } } break; case 3: - if (gUnknown_203AB40->unk_00 == 15) + if (sCreditsMgr->mainseqno == 15) { - gSprites[data->field_01].pos1.x--; - gSprites[data->field_06].pos1.x--; + gSprites[data->playerSpriteId].pos1.x--; + gSprites[data->groundSpriteId].pos1.x--; } break; } } -void sub_80F48D0(void) +static void DestroyPlayerOrRivalSprite(void) { - if (gUnknown_203AB40->unk_02 != 0xFF) + if (sCreditsMgr->taskId != 0xFF) { - struct CreditsTaskData * data = (void *)gTasks[gUnknown_203AB40->unk_02].data; - FreeSpriteTilesByTag(data->field_02); - DestroySprite(&gSprites[data->field_01]); - FreeSpriteTilesByTag(data->field_08); - DestroySprite(&gSprites[data->field_06]); - DestroyTask(gUnknown_203AB40->unk_02); - gUnknown_203AB40->unk_02 = 0xFF; + struct CreditsTaskData * data = (void *)gTasks[sCreditsMgr->taskId].data; + FreeSpriteTilesByTag(data->playerTilesTag); + DestroySprite(&gSprites[data->playerSpriteId]); + FreeSpriteTilesByTag(data->groundTilesTag); + DestroySprite(&gSprites[data->groundSpriteId]); + DestroyTask(sCreditsMgr->taskId); + sCreditsMgr->taskId = 0xFF; } } -void sub_80F4930(u8 a0) +static void LoadPlayerOrRivalSprite(u8 whichScene) { u8 taskId; struct CreditsTaskData * data; - s32 r4, r9; - struct SpriteTemplate sp00; - struct CompressedSpriteSheet sp18; + s32 x, y; + struct SpriteTemplate sprTemplate; + struct CompressedSpriteSheet sprSheet; - if (gUnknown_203AB40->unk_02 == 0xFF) + if (sCreditsMgr->taskId == 0xFF) { - taskId = CreateTask(sub_80F47F8, 0); + taskId = CreateTask(Task_MovePlayerAndGroundSprites, 0); data = (void *)gTasks[taskId].data; - gUnknown_203AB40->unk_02 = taskId; - switch (gUnknown_841431C[a0][2]) + sCreditsMgr->taskId = taskId; + switch (sPlayerRivalSpriteParams[whichScene][2]) { default: case 0: - r4 = 0xd0; - r9 = 0x50; + x = 0xd0; + y = 0x50; break; case 1: - r4 = 0x110; - r9 = 0x50; + x = 0x110; + y = 0x50; break; case 2: - r4 = 0xd0; - r9 = 0xa0; + x = 0xd0; + y = 0xa0; break; } - data->field_00 = gUnknown_841431C[a0][2]; - data->field_02 = 0x2000; + data->spriteMoveCmd = sPlayerRivalSpriteParams[whichScene][2]; + data->playerTilesTag = 0x2000; data->field_04 = 0xFFFF; - switch (gUnknown_841431C[a0][0]) + switch (sPlayerRivalSpriteParams[whichScene][0]) { case 0: // Player if (gSaveBlock2Ptr->playerGender == MALE) { - sp18.data = gUnknown_8410E30; - sp18.size = 0x3000; - sp18.tag = data->field_02; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8410E10, 0x1F0, 0x20); + sprSheet.data = sMalePlayerSpriteGfx; + sprSheet.size = 0x3000; + sprSheet.tag = data->playerTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sMalePlayerSpritePal, 0x1F0, 0x20); } else { - sp18.data = gUnknown_8411C18; - sp18.size = 0x3000; - sp18.tag = data->field_02; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8411BF8, 0x1F0, 0x20); + sprSheet.data = sFemalePlayerSpriteGfx; + sprSheet.size = 0x3000; + sprSheet.tag = data->playerTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sFemalePlayerSpritePal, 0x1F0, 0x20); } break; case 1: // Rival - sp18.data = gUnknown_84129C0; - sp18.size = 0x3000; - sp18.tag = data->field_02; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_84129A0, 0x1F0, 0x20); + sprSheet.data = sRivalSpriteGfx; + sprSheet.size = 0x3000; + sprSheet.tag = data->playerTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sRivalSpritePal, 0x1F0, 0x20); break; } - sp00 = gUnknown_8414364; - sp00.tileTag = data->field_02; - data->field_01 = CreateSprite(&sp00, r4, r9, 0); - gSprites[data->field_01].oam.paletteNum = 0xF; - gSprites[data->field_01].subpriority = 0; + sprTemplate = sPlayerOrRivalSpriteTemplate; + sprTemplate.tileTag = data->playerTilesTag; + data->playerSpriteId = CreateSprite(&sprTemplate, x, y, 0); + gSprites[data->playerSpriteId].oam.paletteNum = 0xF; + gSprites[data->playerSpriteId].subpriority = 0; - data->field_08 = 0x2001; + data->groundTilesTag = 0x2001; data->field_0A = 0xFFFF; - switch (gUnknown_841431C[a0][1]) + switch (sPlayerRivalSpriteParams[whichScene][1]) { case 0: - sp18.data = gUnknown_8413338; - sp18.size = 0x3000; - sp18.tag = data->field_08; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8413318, 0x1E0, 0x20); - sp00 = gUnknown_84143B8; + sprSheet.data = sGroundSpriteGfx_Grass; + sprSheet.size = 0x3000; + sprSheet.tag = data->groundTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sGroundSpritePal_Grass, 0x1E0, 0x20); + sprTemplate = sGroundSpriteTemplate_Running; break; case 1: - sp18.data = gUnknown_8413338; - sp18.size = 0x3000; - sp18.tag = data->field_08; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8413318, 0x1E0, 0x20); - sp00 = gUnknown_84143D0; + sprSheet.data = sGroundSpriteGfx_Grass; + sprSheet.size = 0x3000; + sprSheet.tag = data->groundTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sGroundSpritePal_Grass, 0x1E0, 0x20); + sprTemplate = sGroundSpriteTemplate_Static; break; case 2: - sp18.data = gUnknown_8413874; - sp18.size = 0x3000; - sp18.tag = data->field_08; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8413854, 0x1E0, 0x20); - sp00 = gUnknown_84143B8; + sprSheet.data = sGroundSpriteGfx_Dirt; + sprSheet.size = 0x3000; + sprSheet.tag = data->groundTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sGroundSpritePal_Dirt, 0x1E0, 0x20); + sprTemplate = sGroundSpriteTemplate_Running; break; case 3: - sp18.data = gUnknown_8413DB8; - sp18.size = 0x3000; - sp18.tag = data->field_08; - LoadCompressedSpriteSheet(&sp18); - LoadPalette(gUnknown_8413D98, 0x1E0, 0x20); - sp00 = gUnknown_84143B8; + sprSheet.data = sGroundSpriteGfx_City; + sprSheet.size = 0x3000; + sprSheet.tag = data->groundTilesTag; + LoadCompressedSpriteSheet(&sprSheet); + LoadPalette(sGroundSpritePal_City, 0x1E0, 0x20); + sprTemplate = sGroundSpriteTemplate_Running; break; } - sp00.tileTag = data->field_08; - data->field_06 = CreateSprite(&sp00, r4, r9 + 0x26, 0); - gSprites[data->field_06].oam.paletteNum = 0xE; - gSprites[data->field_06].subpriority = 1; + sprTemplate.tileTag = data->groundTilesTag; + data->groundSpriteId = CreateSprite(&sprTemplate, x, y + 0x26, 0); + gSprites[data->groundSpriteId].oam.paletteNum = 0xE; + gSprites[data->groundSpriteId].subpriority = 1; } } diff --git a/src/quest_log.c b/src/quest_log.c index 7a3084d8c..303cdeb42 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -871,7 +871,7 @@ void sub_8110F90(u8 unused) gSaveBlock1Ptr->location.mapNum = 19; gSaveBlock1Ptr->location.warpId = -1; gUnknown_203ADF8 = 0; - gUnknown_2031DD8 = 1; + gDisableMapMusicChangeOnMapLoad = 1; sub_8082740(1); sub_8111368(); } @@ -1567,7 +1567,7 @@ void sub_81120AC(u8 taskId) switch (data[0]) { case 0: - gUnknown_2031DD8 = 0; + gDisableMapMusicChangeOnMapLoad = 0; Overworld_PlaySpecialMapMusic(); sub_811229C(); FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8); diff --git a/src/sound.c b/src/sound.c index dc4b9f604..41b9f5b7d 100644 --- a/src/sound.c +++ b/src/sound.c @@ -15,7 +15,7 @@ struct Fanfare }; // TODO: what are these -extern u8 gUnknown_2031DD8; +extern u8 gDisableMapMusicChangeOnMapLoad; extern u8 gUnknown_203ADFA; extern u8 gUnknown_203F174; @@ -571,7 +571,7 @@ void PlayBGM(u16 songNum) void PlaySE(u16 songNum) { - if(gUnknown_2031DD8 == 0 && gUnknown_203ADFA != 2) + if(gDisableMapMusicChangeOnMapLoad == 0 && gUnknown_203ADFA != 2) m4aSongNumStart(songNum); } diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 25a8d4515..ee457a6df 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -278,7 +278,7 @@ u16 FreeAndDestroyMonPicSprite(u16 spriteId) return FreeAndDestroyPicSpriteInternal(spriteId); } -u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { return sub_810C0C0(species, otId, personality, isFrontPic, 0, 0, paletteSlot, windowId, FALSE); } diff --git a/sym_ewram.txt b/sym_ewram.txt index f6540358e..645b96031 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -529,7 +529,7 @@ gUnknown_2031DCC: @ 2031DCC gUnknown_2031DD4: @ 2031DD4 .space 0x4 -gUnknown_2031DD8: @ 2031DD8 +gDisableMapMusicChangeOnMapLoad: @ 2031DD8 .space 0x2 gUnknown_2031DDA: @ 2031DDA @@ -1099,8 +1099,7 @@ gUnknown_203AB38: @ 203AB38 gUnknown_203AB3C: @ 203AB3C .space 0x4 -gUnknown_203AB40: @ 203AB40 - .space 0x4 + .include "src/credits.o" gUnknown_203AB44: @ 203AB44 .space 0x4 From b843deb1e436a5b172f1c9ba60cb60344f0df938 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 11:14:54 -0400 Subject: [PATCH 046/100] Fix address comments on word-aligned strings --- data/strings.s | 124 ++++++++++++++++++++++++------------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/data/strings.s b/data/strings.s index 02eefcef8..67c286052 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3324,7 +3324,7 @@ gString_PokemonFireRed_Staff:: @ 841D198 .string "Pokémon FireRed Version\nStaff$" .align 2 -gString_PokemonLeafGreen_Staff:: @ 0x841D1B6 +gString_PokemonLeafGreen_Staff:: @ 0x841D1B8 .string "Pokémon LeafGreen Version\nStaff$" .align 2 @@ -3332,43 +3332,43 @@ gUnknown_841D1D8:: @ 0x841D1D8 .string "\n\nDirector\n\n\n\n$" .align 2 -gUnknown_841D1E8:: @ 0x841D1E7 +gUnknown_841D1E8:: @ 0x841D1E8 .string "\n\n\nJunichi Masuda\n\n\n$" .align 2 -gUnknown_841D200:: @ 0x841D1FD +gUnknown_841D200:: @ 0x841D200 .string "\nArt Director\n\nBattle Director\n\n\n$" .align 2 -gUnknown_841D224:: @ 0x841D222 +gUnknown_841D224:: @ 0x841D224 .string "\n\nKen Sugimori\n\nShigeki Morimoto\n\n$" .align 2 -gUnknown_841D248:: @ 0x841D247 +gUnknown_841D248:: @ 0x841D248 .string "Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$" .align 2 -gUnknown_841D284:: @ 0x841D281 +gUnknown_841D284:: @ 0x841D284 .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$" .align 2 -gUnknown_841D2B4:: @ 0x841D2B1 +gUnknown_841D2B4:: @ 0x841D2B4 .string "Programmers\n\n\n\n\n$" .align 2 -gUnknown_841D2C8:: @ 0x841D2C5 +gUnknown_841D2C8:: @ 0x841D2C8 .string "\nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$" .align 2 -gUnknown_841D314:: @ 0x841D312 +gUnknown_841D314:: @ 0x841D314 .string "System Programmers\n\n\n\n\n\n$" .align 2 -gUnknown_841D330:: @ 0x841D32D +gUnknown_841D330:: @ 0x841D330 .string "\nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$" .align 2 -gUnknown_841D370:: @ 0x841D36D +gUnknown_841D370:: @ 0x841D370 .string "Graphic Designers\n\n\n\n\n\n$" .align 2 @@ -3376,7 +3376,7 @@ gUnknown_841D388:: @ 0x841D388 .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$" .align 2 -gUnknown_841D3C0:: @ 0x841D3BE +gUnknown_841D3C0:: @ 0x841D3C0 .string "\nGraphic Designers\n\n\n\n\n$" .align 2 @@ -3384,7 +3384,7 @@ gUnknown_841D3D8:: @ 0x841D3D8 .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$" .align 2 -gUnknown_841D3FC:: @ 0x841D3FB +gUnknown_841D3FC:: @ 0x841D3FC .string "\nMusic Composition\n\n\n\n\n$" .align 2 @@ -3400,23 +3400,23 @@ gUnknown_841D448:: @ 0x841D448 .string "\n\n\nGo Ichinose\n\n\n$" .align 2 -gUnknown_841D45C:: @ 0x841D45A +gUnknown_841D45C:: @ 0x841D45C .string "\nGame Designers\n\n\n\n\n$" .align 2 -gUnknown_841D474:: @ 0x841D471 +gUnknown_841D474:: @ 0x841D474 .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$" .align 2 -gUnknown_841D4A4:: @ 0x841D4A1 +gUnknown_841D4A4:: @ 0x841D4A4 .string "\nGame Designers\n\n\n\n\n$" .align 2 -gUnknown_841D4BC:: @ 0x841D4B9 +gUnknown_841D4BC:: @ 0x841D4BC .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$" .align 2 -gUnknown_841D4F0:: @ 0x841D4ED +gUnknown_841D4F0:: @ 0x841D4F0 .string "\nGame Scenario\n\n\n\n\n$" .align 2 @@ -3428,27 +3428,27 @@ gUnknown_841D524:: @ 0x841D524 .string "\nScript Designer\n\nMap Designer\n\n\n$" .align 2 -gUnknown_841D548:: @ 0x841D546 +gUnknown_841D548:: @ 0x841D548 .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$" .align 2 -gUnknown_841D56C:: @ 0x841D56B +gUnknown_841D56C:: @ 0x841D56C .string "\nParametric Designers\n\n\n\n\n$" .align 2 -gUnknown_841D588:: @ 0x841D587 +gUnknown_841D588:: @ 0x841D588 .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$" .align 2 -gUnknown_841D5B8:: @ 0x841D5B7 +gUnknown_841D5B8:: @ 0x841D5B8 .string "\n\nPOKéDEX Text\n\n\n\n$" .align 2 -gUnknown_841D5CC:: @ 0x841D5CB +gUnknown_841D5CC:: @ 0x841D5CC .string "\n\n\nKenji Matsushima\n\n\n$" .align 2 -gUnknown_841D5E4:: @ 0x841D5E3 +gUnknown_841D5E4:: @ 0x841D5E4 .string "POKéMON Designers\n\n\n\n\n\n$" .align 2 @@ -3464,7 +3464,7 @@ gUnknown_841D658:: @ 0x841D658 .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$" .align 2 -gUnknown_841D698:: @ 0x841D697 +gUnknown_841D698:: @ 0x841D698 .string "POKéMON Designers\n\n\n\n\n\n$" .align 2 @@ -3472,11 +3472,11 @@ gUnknown_841D6B0:: @ 0x841D6B0 .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$" .align 2 -gUnknown_841D6EC:: @ 0x841D6E9 +gUnknown_841D6EC:: @ 0x841D6EC .string "Supporting Programmers\n\n\n\n$" .align 2 -gUnknown_841D708:: @ 0x841D707 +gUnknown_841D708:: @ 0x841D708 .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$" .align 2 @@ -3484,31 +3484,31 @@ gUnknown_841D74C:: @ 0x841D74C .string "\n\nNCL Product Testing\n\n\n\n$" .align 2 -gUnknown_841D768:: @ 0x841D766 +gUnknown_841D768:: @ 0x841D768 .string "\n\n\nNCL Super Mario Club\n\n\n$" .align 2 -gUnknown_841D784:: @ 0x841D783 +gUnknown_841D784:: @ 0x841D784 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D79C:: @ 0x841D799 +gUnknown_841D79C:: @ 0x841D79C .string "\nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$" .align 2 -gUnknown_841D7DC:: @ 0x841D7DB +gUnknown_841D7DC:: @ 0x841D7DC .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D7F4:: @ 0x841D7F1 +gUnknown_841D7F4:: @ 0x841D7F4 .string "\nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$" .align 2 -gUnknown_841D834:: @ 0x841D833 +gUnknown_841D834:: @ 0x841D834 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D84C:: @ 0x841D849 +gUnknown_841D84C:: @ 0x841D84C .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$" .align 2 @@ -3516,7 +3516,7 @@ gUnknown_841D894:: @ 0x841D894 .string "\n\nBraille Code Check\n\n\n\n$" .align 2 -gUnknown_841D8B0:: @ 0x841D8AD +gUnknown_841D8B0:: @ 0x841D8B0 .string "\n\n\nJapan Braille Library\n\n\n$" .align 2 @@ -3524,19 +3524,19 @@ gUnknown_841D8CC:: @ 0x841D8CC .string "Information Supervisors\n\n\n\n\n\n$" .align 2 -gUnknown_841D8EC:: @ 0x841D8EA +gUnknown_841D8EC:: @ 0x841D8EC .string "\nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$" .align 2 -gUnknown_841D938:: @ 0x841D935 +gUnknown_841D938:: @ 0x841D938 .string "Coordinators\n\n\n\n\n\n$" .align 2 -gUnknown_841D94C:: @ 0x841D94B +gUnknown_841D94C:: @ 0x841D94C .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$" .align 2 -gUnknown_841D98C:: @ 0x841D98A +gUnknown_841D98C:: @ 0x841D98C .string "\nTask Managers\n\n\n\n\n$" .align 2 @@ -3552,27 +3552,27 @@ gUnknown_841D9D4:: @ 0x841D9D4 .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$" .align 2 -gUnknown_841DA08:: @ 0x841DA06 +gUnknown_841DA08:: @ 0x841DA08 .string "\n\nExecutive Director\n\n\n\n$" .align 2 -gUnknown_841DA24:: @ 0x841DA21 +gUnknown_841DA24:: @ 0x841DA24 .string "\n\n\nSatoshi Tajiri\n\n\n$" .align 2 -gUnknown_841DA3C:: @ 0x841DA39 +gUnknown_841DA3C:: @ 0x841DA3C .string "\n\nExecutive Producer\n\n\n\n$" .align 2 -gUnknown_841DA58:: @ 0x841DA55 +gUnknown_841DA58:: @ 0x841DA58 .string "\n\n\nSatoru Iwata\n\n\n$" .align 2 -gUnknown_841DA6C:: @ 0x841DA6B +gUnknown_841DA6C:: @ 0x841DA6C .string "\n\nExecutive Producer\n\n\n\n$" .align 2 -gUnknown_841DA88:: @ 0x841DA85 +gUnknown_841DA88:: @ 0x841DA88 .string "\n\n\nTsunekaz Ishihara\n\n\n$" .align 2 @@ -3580,11 +3580,11 @@ gUnknown_841DAA0:: @ 0x841DAA0 .string "\nEnglish Version Coordinators\n\n\n\n\n$" .align 2 -gUnknown_841DAC4:: @ 0x841DAC3 +gUnknown_841DAC4:: @ 0x841DAC4 .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$" .align 2 -gUnknown_841DAE8:: @ 0x841DAE5 +gUnknown_841DAE8:: @ 0x841DAE8 .string "\nTranslator\n\nText Editor\n\n\n$" .align 2 @@ -3596,31 +3596,31 @@ gUnknown_841DB28:: @ 0x841DB28 .string "Programmers\n\n\n\n\n\n$" .align 2 -gUnknown_841DB3C:: @ 0x841DB3A +gUnknown_841DB3C:: @ 0x841DB3C .string "\nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$" .align 2 -gUnknown_841DB7C:: @ 0x841DB7B +gUnknown_841DB7C:: @ 0x841DB7C .string "\nEnvironment を Tool Programmers\n\n\n\n\n$" .align 2 -gUnknown_841DBA4:: @ 0x841DBA1 +gUnknown_841DBA4:: @ 0x841DBA4 .string "\n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$" .align 2 -gUnknown_841DBDC:: @ 0x841DBDA +gUnknown_841DBDC:: @ 0x841DBDC .string "NOA Product Testing\n\n\n\n\n\n$" .align 2 -gUnknown_841DBF8:: @ 0x841DBF6 +gUnknown_841DBF8:: @ 0x841DBF8 .string "\nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$" .align 2 -gUnknown_841DC2C:: @ 0x841DC29 +gUnknown_841DC2C:: @ 0x841DC2C .string "Braille Code Check\n\n\n\n\n\n$" .align 2 -gUnknown_841DC48:: @ 0x841DC45 +gUnknown_841DC48:: @ 0x841DC48 .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$" .align 2 @@ -3628,15 +3628,15 @@ gUnknown_841DCAC:: @ 0x841DCAC .string "\nBraille Code Check\n\n\n\n\n$" .align 2 -gUnknown_841DCC8:: @ 0x841DCC5 +gUnknown_841DCC8:: @ 0x841DCC8 .string "\n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$" .align 2 -gUnknown_841DD08:: @ 0x841DD05 +gUnknown_841DD08:: @ 0x841DD08 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841DD20:: @ 0x841DD1D +gUnknown_841DD20:: @ 0x841DD20 .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$" .align 2 @@ -3644,23 +3644,23 @@ gUnknown_841DD64:: @ 0x841DD64 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841DD7C:: @ 0x841DD79 +gUnknown_841DD7C:: @ 0x841DD7C .string "\nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$" .align 2 -gUnknown_841DDC8:: @ 0x841DDC6 +gUnknown_841DDC8:: @ 0x841DDC8 .string "\nBraille Code Check\n\n\n\n\n$" .align 2 -gUnknown_841DDE4:: @ 0x841DDE1 +gUnknown_841DDE4:: @ 0x841DDE4 .string "\n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$" .align 2 -gUnknown_841DE24:: @ 0x841DE21 +gUnknown_841DE24:: @ 0x841DE24 .string "\n\nGraphic Designer\n\n\n\n$" .align 2 -gUnknown_841DE3C:: @ 0x841DE3B +gUnknown_841DE3C:: @ 0x841DE3C .string "\n\n\nAkira Kinashi\n\n\n$" gJPText_MysteryGift:: @ 841DE50 From e0b3642edcbc7a1d713ca704686e11647fa8a6cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 13:41:43 -0400 Subject: [PATCH 047/100] Rename credits strings and document script --- asm/battle_setup.s | 4 +- asm/pokemon_summary_screen.s | 6 +- data/strings.s | 170 ++++++++++---------- include/strings.h | 170 ++++++++++---------- src/credits.c | 295 ++++++++++++++++++++++------------- 5 files changed, 361 insertions(+), 284 deletions(-) diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 787b0fb8e..c5b4510b7 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -2107,12 +2107,12 @@ sub_80806C8: @ 80806C8 push {lr} cmp r0, 0 bne _080806D0 - ldr r0, _080806D4 @ =gUnknown_84161CD + ldr r0, _080806D4 @ =gString_Dummy _080806D0: pop {r1} bx r1 .align 2, 0 -_080806D4: .4byte gUnknown_84161CD +_080806D4: .4byte gString_Dummy thumb_func_end sub_80806C8 thumb_func_start sub_80806D8 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index ce3a4dbc6..fad7e397a 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -3476,7 +3476,7 @@ _0813622C: ldr r0, [r6] ldr r2, _08136308 @ =0x00003084 adds r0, r2 - ldr r1, _0813630C @ =gUnknown_84161CD + ldr r1, _0813630C @ =gString_Dummy bl StringCopy _08136238: cmp r4, 0x20 @@ -3498,7 +3498,7 @@ _08136240: ldr r0, [r5] ldr r1, _08136308 @ =0x00003084 adds r0, r1 - ldr r1, _0813630C @ =gUnknown_84161CD + ldr r1, _0813630C @ =gString_Dummy bl StringCopy _08136264: ldr r6, _08136310 @ =gUnknown_203B140 @@ -3572,7 +3572,7 @@ _08136264: b _08136342 .align 2, 0 _08136308: .4byte 0x00003084 -_0813630C: .4byte gUnknown_84161CD +_0813630C: .4byte gString_Dummy _08136310: .4byte gUnknown_203B140 _08136314: .4byte 0x00003034 _08136318: .4byte gSpeciesNames diff --git a/data/strings.s b/data/strings.s index 67c286052..603bce34f 100644 --- a/data/strings.s +++ b/data/strings.s @@ -393,7 +393,7 @@ gFameCheckerText_Cancel:: @ 84161C1 gOtherText_Exit:: @ 84161C8 .string "EXIT$" -gUnknown_84161CD:: @ 84161CD +gString_Dummy:: @ 84161CD .string "$" gUnknown_84161CE:: @@ -3328,339 +3328,339 @@ gString_PokemonLeafGreen_Staff:: @ 0x841D1B8 .string "Pokémon LeafGreen Version\nStaff$" .align 2 -gUnknown_841D1D8:: @ 0x841D1D8 +gCreditsString_Director:: @ 0x841D1D8 .string "\n\nDirector\n\n\n\n$" .align 2 -gUnknown_841D1E8:: @ 0x841D1E8 +gCreditsString_Junichi_Masuda:: @ 0x841D1E8 .string "\n\n\nJunichi Masuda\n\n\n$" .align 2 -gUnknown_841D200:: @ 0x841D200 +gCreditsString_Art_Director_Battle_Director:: @ 0x841D200 .string "\nArt Director\n\nBattle Director\n\n\n$" .align 2 -gUnknown_841D224:: @ 0x841D224 +gCreditsString_Ken_Sugimori_Shigeki_Morimoto:: @ 0x841D224 .string "\n\nKen Sugimori\n\nShigeki Morimoto\n\n$" .align 2 -gUnknown_841D248:: @ 0x841D248 +gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader:: @ 0x841D248 .string "Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$" .align 2 -gUnknown_841D284:: @ 0x841D284 +gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno:: @ 0x841D284 .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$" .align 2 -gUnknown_841D2B4:: @ 0x841D2B4 +gCreditsString_Programmers:: @ 0x841D2B4 .string "Programmers\n\n\n\n\n$" .align 2 -gUnknown_841D2C8:: @ 0x841D2C8 +gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto:: @ 0x841D2C8 .string "\nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$" .align 2 -gUnknown_841D314:: @ 0x841D314 +gCreditsString_System_Programmers:: @ 0x841D314 .string "System Programmers\n\n\n\n\n\n$" .align 2 -gUnknown_841D330:: @ 0x841D330 +gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada:: @ 0x841D330 .string "\nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$" .align 2 -gUnknown_841D370:: @ 0x841D370 +gCreditsString_Graphic_Designers:: @ 0x841D370 .string "Graphic Designers\n\n\n\n\n\n$" .align 2 -gUnknown_841D388:: @ 0x841D388 +gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino:: @ 0x841D388 .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$" .align 2 -gUnknown_841D3C0:: @ 0x841D3C0 +gCreditsString_Graphic_Designers_2:: @ 0x841D3C0 .string "\nGraphic Designers\n\n\n\n\n$" .align 2 -gUnknown_841D3D8:: @ 0x841D3D8 +gCreditsString_Ken_Sugimori_Hironobu_Yoshida:: @ 0x841D3D8 .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$" .align 2 -gUnknown_841D3FC:: @ 0x841D3FC +gCreditsString_Music_Composition:: @ 0x841D3FC .string "\nMusic Composition\n\n\n\n\n$" .align 2 -gUnknown_841D414:: @ 0x841D414 +gCreditsString_Go_Ichinose_Junichi_Masuda:: @ 0x841D414 .string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$" .align 2 -gUnknown_841D434:: @ 0x841D434 +gCreditsString_Sound_Effects:: @ 0x841D434 .string "\n\nSound Effects\n\n\n\n$" .align 2 -gUnknown_841D448:: @ 0x841D448 +gCreditsString_Go_Ichinose:: @ 0x841D448 .string "\n\n\nGo Ichinose\n\n\n$" .align 2 -gUnknown_841D45C:: @ 0x841D45C +gCreditsString_Game_Designers:: @ 0x841D45C .string "\nGame Designers\n\n\n\n\n$" .align 2 -gUnknown_841D474:: @ 0x841D474 +gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta:: @ 0x841D474 .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$" .align 2 -gUnknown_841D4A4:: @ 0x841D4A4 +gCreditsString_Game_Designers_2:: @ 0x841D4A4 .string "\nGame Designers\n\n\n\n\n$" .align 2 -gUnknown_841D4BC:: @ 0x841D4BC +gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi:: @ 0x841D4BC .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$" .align 2 -gUnknown_841D4F0:: @ 0x841D4F0 +gCreditsString_Game_Scenario:: @ 0x841D4F0 .string "\nGame Scenario\n\n\n\n\n$" .align 2 -gUnknown_841D504:: @ 0x841D504 +gCreditsString_Hitomi_Sato_Satoshi_Tajiri:: @ 0x841D504 .string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$" .align 2 -gUnknown_841D524:: @ 0x841D524 +gCreditsString_Script_Designer_Map_Designer:: @ 0x841D524 .string "\nScript Designer\n\nMap Designer\n\n\n$" .align 2 -gUnknown_841D548:: @ 0x841D548 +gCreditsString_Satoshi_Nohara_Shigeru_Ohmori:: @ 0x841D548 .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$" .align 2 -gUnknown_841D56C:: @ 0x841D56C +gCreditsString_Parametric_Designers:: @ 0x841D56C .string "\nParametric Designers\n\n\n\n\n$" .align 2 -gUnknown_841D588:: @ 0x841D588 +gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto:: @ 0x841D588 .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$" .align 2 -gUnknown_841D5B8:: @ 0x841D5B8 +gCreditsString_POKeDEX_Text:: @ 0x841D5B8 .string "\n\nPOKéDEX Text\n\n\n\n$" .align 2 -gUnknown_841D5CC:: @ 0x841D5CC +gCreditsString_Kenji_Matsushima:: @ 0x841D5CC .string "\n\n\nKenji Matsushima\n\n\n$" .align 2 -gUnknown_841D5E4:: @ 0x841D5E4 +gCreditsString_POKeMON_Designers:: @ 0x841D5E4 .string "POKéMON Designers\n\n\n\n\n\n$" .align 2 -gUnknown_841D5FC:: @ 0x841D5FC +gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida:: @ 0x841D5FC .string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$" .align 2 -gUnknown_841D640:: @ 0x841D640 +gCreditsString_POKeMON_Designers_2:: @ 0x841D640 .string "POKéMON Designers\n\n\n\n\n\n$" .align 2 -gUnknown_841D658:: @ 0x841D658 +gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita:: @ 0x841D658 .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$" .align 2 -gUnknown_841D698:: @ 0x841D698 +gCreditsString_POKeMON_Designers_3:: @ 0x841D698 .string "POKéMON Designers\n\n\n\n\n\n$" .align 2 -gUnknown_841D6B0:: @ 0x841D6B0 +gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani:: @ 0x841D6B0 .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$" .align 2 -gUnknown_841D6EC:: @ 0x841D6EC +gCreditsString_Supporting_Programmers:: @ 0x841D6EC .string "Supporting Programmers\n\n\n\n$" .align 2 -gUnknown_841D708:: @ 0x841D708 +gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino:: @ 0x841D708 .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$" .align 2 -gUnknown_841D74C:: @ 0x841D74C +gCreditsString_NCL_Product_Testing:: @ 0x841D74C .string "\n\nNCL Product Testing\n\n\n\n$" .align 2 -gUnknown_841D768:: @ 0x841D768 +gCreditsString_NCL_Super_Mario_Club:: @ 0x841D768 .string "\n\n\nNCL Super Mario Club\n\n\n$" .align 2 -gUnknown_841D784:: @ 0x841D784 +gCreditsString_Special_Thanks:: @ 0x841D784 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D79C:: @ 0x841D79C +gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama:: @ 0x841D79C .string "\nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$" .align 2 -gUnknown_841D7DC:: @ 0x841D7DC +gCreditsString_Special_Thanks_2:: @ 0x841D7DC .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D7F4:: @ 0x841D7F4 +gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa:: @ 0x841D7F4 .string "\nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$" .align 2 -gUnknown_841D834:: @ 0x841D834 +gCreditsString_Special_Thanks_3:: @ 0x841D834 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841D84C:: @ 0x841D84C +gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi:: @ 0x841D84C .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$" .align 2 -gUnknown_841D894:: @ 0x841D894 +gCreditsString_Braille_Code_Check:: @ 0x841D894 .string "\n\nBraille Code Check\n\n\n\n$" .align 2 -gUnknown_841D8B0:: @ 0x841D8B0 +gCreditsString_Japan_Braille_Library:: @ 0x841D8B0 .string "\n\n\nJapan Braille Library\n\n\n$" .align 2 -gUnknown_841D8CC:: @ 0x841D8CC +gCreditsString_Information_Supervisors:: @ 0x841D8CC .string "Information Supervisors\n\n\n\n\n\n$" .align 2 -gUnknown_841D8EC:: @ 0x841D8EC +gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase:: @ 0x841D8EC .string "\nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$" .align 2 -gUnknown_841D938:: @ 0x841D938 +gCreditsString_Coordinators:: @ 0x841D938 .string "Coordinators\n\n\n\n\n\n$" .align 2 -gUnknown_841D94C:: @ 0x841D94C +gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto:: @ 0x841D94C .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$" .align 2 -gUnknown_841D98C:: @ 0x841D98C +gCreditsString_Task_Managers:: @ 0x841D98C .string "\nTask Managers\n\n\n\n\n$" .align 2 -gUnknown_841D9A0:: @ 0x841D9A0 +gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto:: @ 0x841D9A0 .string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$" .align 2 -gUnknown_841D9C4:: @ 0x841D9C4 +gCreditsString_Producers:: @ 0x841D9C4 .string "\nProducers\n\n\n\n\n$" .align 2 -gUnknown_841D9D4:: @ 0x841D9D4 +gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru:: @ 0x841D9D4 .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$" .align 2 -gUnknown_841DA08:: @ 0x841DA08 +gCreditsString_Executive_Director:: @ 0x841DA08 .string "\n\nExecutive Director\n\n\n\n$" .align 2 -gUnknown_841DA24:: @ 0x841DA24 +gCreditsString_Satoshi_Tajiri:: @ 0x841DA24 .string "\n\n\nSatoshi Tajiri\n\n\n$" .align 2 -gUnknown_841DA3C:: @ 0x841DA3C +gCreditsString_Executive_Producer:: @ 0x841DA3C .string "\n\nExecutive Producer\n\n\n\n$" .align 2 -gUnknown_841DA58:: @ 0x841DA58 +gCreditsString_Satoru_Iwata:: @ 0x841DA58 .string "\n\n\nSatoru Iwata\n\n\n$" .align 2 -gUnknown_841DA6C:: @ 0x841DA6C +gCreditsString_Executive_Producer_2:: @ 0x841DA6C .string "\n\nExecutive Producer\n\n\n\n$" .align 2 -gUnknown_841DA88:: @ 0x841DA88 +gCreditsString_Tsunekaz_Ishihara:: @ 0x841DA88 .string "\n\n\nTsunekaz Ishihara\n\n\n$" .align 2 -gUnknown_841DAA0:: @ 0x841DAA0 +gCreditsString_English_Version_Coordinators:: @ 0x841DAA0 .string "\nEnglish Version Coordinators\n\n\n\n\n$" .align 2 -gUnknown_841DAC4:: @ 0x841DAC4 +gCreditsString_Hiro_Nakamura_Seth_McMahill:: @ 0x841DAC4 .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$" .align 2 -gUnknown_841DAE8:: @ 0x841DAE8 +gCreditsString_Translator_Text_Editor:: @ 0x841DAE8 .string "\nTranslator\n\nText Editor\n\n\n$" .align 2 -gUnknown_841DB04:: @ 0x841DB04 +gCreditsString_Nob_Ogasawara_Teresa_Lillygren:: @ 0x841DB04 .string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$" .align 2 -gUnknown_841DB28:: @ 0x841DB28 +gCreditsString_Programmers_2:: @ 0x841DB28 .string "Programmers\n\n\n\n\n\n$" .align 2 -gUnknown_841DB3C:: @ 0x841DB3C +gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi:: @ 0x841DB3C .string "\nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$" .align 2 -gUnknown_841DB7C:: @ 0x841DB7C +gCreditsString_Environment_Tool_Programmers:: @ 0x841DB7C .string "\nEnvironment を Tool Programmers\n\n\n\n\n$" .align 2 -gUnknown_841DBA4:: @ 0x841DBA4 +gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi:: @ 0x841DBA4 .string "\n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$" .align 2 -gUnknown_841DBDC:: @ 0x841DBDC +gCreditsString_NOA_Product_Testing:: @ 0x841DBDC .string "NOA Product Testing\n\n\n\n\n\n$" .align 2 -gUnknown_841DBF8:: @ 0x841DBF8 +gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa:: @ 0x841DBF8 .string "\nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$" .align 2 -gUnknown_841DC2C:: @ 0x841DC2C +gCreditsString_Braille_Code_Check_2:: @ 0x841DC2C .string "Braille Code Check\n\n\n\n\n\n$" .align 2 -gUnknown_841DC48:: @ 0x841DC48 +gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union:: @ 0x841DC48 .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$" .align 2 -gUnknown_841DCAC:: @ 0x841DCAC +gCreditsString_Braille_Code_Check_3:: @ 0x841DCAC .string "\nBraille Code Check\n\n\n\n\n$" .align 2 -gUnknown_841DCC8:: @ 0x841DCC8 +gCreditsString_National_Information_Library_Service_Margaret_Campion:: @ 0x841DCC8 .string "\n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$" .align 2 -gUnknown_841DD08:: @ 0x841DD08 +gCreditsString_Special_Thanks_4:: @ 0x841DD08 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841DD20:: @ 0x841DD20 +gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi:: @ 0x841DD20 .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$" .align 2 -gUnknown_841DD64:: @ 0x841DD64 +gCreditsString_Special_Thanks_5:: @ 0x841DD64 .string "Special Thanks\n\n\n\n\n\n$" .align 2 -gUnknown_841DD7C:: @ 0x841DD7C +gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi:: @ 0x841DD7C .string "\nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$" .align 2 -gUnknown_841DDC8:: @ 0x841DDC8 +gCreditsString_Braille_Code_Check_4:: @ 0x841DDC8 .string "\nBraille Code Check\n\n\n\n\n$" .align 2 -gUnknown_841DDE4:: @ 0x841DDE4 +gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran:: @ 0x841DDE4 .string "\n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$" .align 2 -gUnknown_841DE24:: @ 0x841DE24 +gCreditsString_Graphic_Designer:: @ 0x841DE24 .string "\n\nGraphic Designer\n\n\n\n$" .align 2 -gUnknown_841DE3C:: @ 0x841DE3C +gCreditsString_Akira_Kinashi:: @ 0x841DE3C .string "\n\n\nAkira Kinashi\n\n\n$" gJPText_MysteryGift:: @ 841DE50 diff --git a/include/strings.h b/include/strings.h index 9f521a65e..21a44d072 100644 --- a/include/strings.h +++ b/include/strings.h @@ -209,92 +209,92 @@ extern const u8 gString_QuitPlaying[]; extern const u8 gString_SlotMachineControls[]; // credits -extern const u8 gUnknown_84161CD[]; +extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR extern const u8 gString_PokemonLeafGreen_Staff[]; // LG -extern const u8 gUnknown_841D1D8[]; -extern const u8 gUnknown_841D1E8[]; -extern const u8 gUnknown_841D200[]; -extern const u8 gUnknown_841D224[]; -extern const u8 gUnknown_841D248[]; -extern const u8 gUnknown_841D284[]; -extern const u8 gUnknown_841D2B4[]; -extern const u8 gUnknown_841D2C8[]; -extern const u8 gUnknown_841D314[]; -extern const u8 gUnknown_841D330[]; -extern const u8 gUnknown_841D370[]; -extern const u8 gUnknown_841D388[]; -extern const u8 gUnknown_841D3C0[]; -extern const u8 gUnknown_841D3D8[]; -extern const u8 gUnknown_841D3FC[]; -extern const u8 gUnknown_841D414[]; -extern const u8 gUnknown_841D434[]; -extern const u8 gUnknown_841D448[]; -extern const u8 gUnknown_841D45C[]; -extern const u8 gUnknown_841D474[]; -extern const u8 gUnknown_841D4A4[]; -extern const u8 gUnknown_841D4BC[]; -extern const u8 gUnknown_841D4F0[]; -extern const u8 gUnknown_841D504[]; -extern const u8 gUnknown_841D524[]; -extern const u8 gUnknown_841D548[]; -extern const u8 gUnknown_841D56C[]; -extern const u8 gUnknown_841D588[]; -extern const u8 gUnknown_841D5B8[]; -extern const u8 gUnknown_841D5CC[]; -extern const u8 gUnknown_841D5E4[]; -extern const u8 gUnknown_841D5FC[]; -extern const u8 gUnknown_841D640[]; -extern const u8 gUnknown_841D658[]; -extern const u8 gUnknown_841D698[]; -extern const u8 gUnknown_841D6B0[]; -extern const u8 gUnknown_841D6EC[]; -extern const u8 gUnknown_841D708[]; -extern const u8 gUnknown_841D74C[]; -extern const u8 gUnknown_841D768[]; -extern const u8 gUnknown_841D784[]; -extern const u8 gUnknown_841D79C[]; -extern const u8 gUnknown_841D7DC[]; -extern const u8 gUnknown_841D7F4[]; -extern const u8 gUnknown_841D834[]; -extern const u8 gUnknown_841D84C[]; -extern const u8 gUnknown_841D894[]; -extern const u8 gUnknown_841D8B0[]; -extern const u8 gUnknown_841D8CC[]; -extern const u8 gUnknown_841D8EC[]; -extern const u8 gUnknown_841D938[]; -extern const u8 gUnknown_841D94C[]; -extern const u8 gUnknown_841D98C[]; -extern const u8 gUnknown_841D9A0[]; -extern const u8 gUnknown_841D9C4[]; -extern const u8 gUnknown_841D9D4[]; -extern const u8 gUnknown_841DA08[]; -extern const u8 gUnknown_841DA24[]; -extern const u8 gUnknown_841DA3C[]; -extern const u8 gUnknown_841DA58[]; -extern const u8 gUnknown_841DA6C[]; -extern const u8 gUnknown_841DA88[]; -extern const u8 gUnknown_841DAA0[]; -extern const u8 gUnknown_841DAC4[]; -extern const u8 gUnknown_841DAE8[]; -extern const u8 gUnknown_841DB04[]; -extern const u8 gUnknown_841DB28[]; -extern const u8 gUnknown_841DB3C[]; -extern const u8 gUnknown_841DB7C[]; -extern const u8 gUnknown_841DBA4[]; -extern const u8 gUnknown_841DBDC[]; -extern const u8 gUnknown_841DBF8[]; -extern const u8 gUnknown_841DC2C[]; -extern const u8 gUnknown_841DC48[]; -extern const u8 gUnknown_841DCAC[]; -extern const u8 gUnknown_841DCC8[]; -extern const u8 gUnknown_841DD08[]; -extern const u8 gUnknown_841DD20[]; -extern const u8 gUnknown_841DD64[]; -extern const u8 gUnknown_841DD7C[]; -extern const u8 gUnknown_841DDC8[]; -extern const u8 gUnknown_841DDE4[]; -extern const u8 gUnknown_841DE24[]; -extern const u8 gUnknown_841DE3C[]; +extern const u8 gCreditsString_Director[]; +extern const u8 gCreditsString_Junichi_Masuda[]; +extern const u8 gCreditsString_Art_Director_Battle_Director[]; +extern const u8 gCreditsString_Ken_Sugimori_Shigeki_Morimoto[]; +extern const u8 gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader[]; +extern const u8 gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno[]; +extern const u8 gCreditsString_Programmers[]; +extern const u8 gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto[]; +extern const u8 gCreditsString_System_Programmers[]; +extern const u8 gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada[]; +extern const u8 gCreditsString_Graphic_Designers[]; +extern const u8 gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino[]; +extern const u8 gCreditsString_Graphic_Designers_2[]; +extern const u8 gCreditsString_Ken_Sugimori_Hironobu_Yoshida[]; +extern const u8 gCreditsString_Music_Composition[]; +extern const u8 gCreditsString_Go_Ichinose_Junichi_Masuda[]; +extern const u8 gCreditsString_Sound_Effects[]; +extern const u8 gCreditsString_Go_Ichinose[]; +extern const u8 gCreditsString_Game_Designers[]; +extern const u8 gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta[]; +extern const u8 gCreditsString_Game_Designers_2[]; +extern const u8 gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi[]; +extern const u8 gCreditsString_Game_Scenario[]; +extern const u8 gCreditsString_Hitomi_Sato_Satoshi_Tajiri[]; +extern const u8 gCreditsString_Script_Designer_Map_Designer[]; +extern const u8 gCreditsString_Satoshi_Nohara_Shigeru_Ohmori[]; +extern const u8 gCreditsString_Parametric_Designers[]; +extern const u8 gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto[]; +extern const u8 gCreditsString_POKeDEX_Text[]; +extern const u8 gCreditsString_Kenji_Matsushima[]; +extern const u8 gCreditsString_POKeMON_Designers[]; +extern const u8 gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida[]; +extern const u8 gCreditsString_POKeMON_Designers_2[]; +extern const u8 gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita[]; +extern const u8 gCreditsString_POKeMON_Designers_3[]; +extern const u8 gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani[]; +extern const u8 gCreditsString_Supporting_Programmers[]; +extern const u8 gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino[]; +extern const u8 gCreditsString_NCL_Product_Testing[]; +extern const u8 gCreditsString_NCL_Super_Mario_Club[]; +extern const u8 gCreditsString_Special_Thanks[]; +extern const u8 gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama[]; +extern const u8 gCreditsString_Special_Thanks_2[]; +extern const u8 gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa[]; +extern const u8 gCreditsString_Special_Thanks_3[]; +extern const u8 gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi[]; +extern const u8 gCreditsString_Braille_Code_Check[]; +extern const u8 gCreditsString_Japan_Braille_Library[]; +extern const u8 gCreditsString_Information_Supervisors[]; +extern const u8 gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase[]; +extern const u8 gCreditsString_Coordinators[]; +extern const u8 gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto[]; +extern const u8 gCreditsString_Task_Managers[]; +extern const u8 gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto[]; +extern const u8 gCreditsString_Producers[]; +extern const u8 gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru[]; +extern const u8 gCreditsString_Executive_Director[]; +extern const u8 gCreditsString_Satoshi_Tajiri[]; +extern const u8 gCreditsString_Executive_Producer[]; +extern const u8 gCreditsString_Satoru_Iwata[]; +extern const u8 gCreditsString_Executive_Producer_2[]; +extern const u8 gCreditsString_Tsunekaz_Ishihara[]; +extern const u8 gCreditsString_English_Version_Coordinators[]; +extern const u8 gCreditsString_Hiro_Nakamura_Seth_McMahill[]; +extern const u8 gCreditsString_Translator_Text_Editor[]; +extern const u8 gCreditsString_Nob_Ogasawara_Teresa_Lillygren[]; +extern const u8 gCreditsString_Programmers_2[]; +extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi[]; +extern const u8 gCreditsString_Environment_Tool_Programmers[]; +extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi[]; +extern const u8 gCreditsString_NOA_Product_Testing[]; +extern const u8 gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa[]; +extern const u8 gCreditsString_Braille_Code_Check_2[]; +extern const u8 gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union[]; +extern const u8 gCreditsString_Braille_Code_Check_3[]; +extern const u8 gCreditsString_National_Information_Library_Service_Margaret_Campion[]; +extern const u8 gCreditsString_Special_Thanks_4[]; +extern const u8 gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi[]; +extern const u8 gCreditsString_Special_Thanks_5[]; +extern const u8 gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi[]; +extern const u8 gCreditsString_Braille_Code_Check_4[]; +extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran[]; +extern const u8 gCreditsString_Graphic_Designer[]; +extern const u8 gCreditsString_Akira_Kinashi[]; #endif //GUARD_STRINGS_H diff --git a/src/credits.c b/src/credits.c index 146f647e7..997c1ea16 100644 --- a/src/credits.c +++ b/src/credits.c @@ -67,6 +67,76 @@ enum CreditsMon CREDITSMON_PIKACHU }; +enum CreditsClosingText +{ + CREDITSCLOSING_ALLRIGHTSRESERVED = 0, + CREDITSCLOSING_THEEND +}; + +enum CreditsString +{ + CREDITS_STRING_DIRECTOR = 0, + CREDITS_STRING_ART_DIRECTOR_BATTLE_DIRECTOR, + CREDITS_STRING_PROGRAM_LEADER_PLANNING_LEADER_GRAPHIC_DESIGN_LEADER, + CREDITS_STRING_PROGRAMMERS, + CREDITS_STRING_SYSTEM_PROGRAMMERS, + CREDITS_STRING_GRAPHIC_DESIGNERS, + CREDITS_STRING_GRAPHIC_DESIGNERS_2, + CREDITS_STRING_MUSIC_COMPOSITION, + CREDITS_STRING_SOUND_EFFECTS, + CREDITS_STRING_GAME_DESIGNERS, + CREDITS_STRING_GAME_DESIGNERS_2, + CREDITS_STRING_GAME_SCENARIO, + CREDITS_STRING_SCRIPT_DESIGNER_MAP_DESIGNER, + CREDITS_STRING_PARAMETRIC_DESIGNERS, + CREDITS_STRING_POKEDEX_TEXT, + CREDITS_STRING_POKEMON_DESIGNERS, + CREDITS_STRING_POKEMON_DESIGNERS_2, + CREDITS_STRING_POKEMON_DESIGNERS_3, + CREDITS_STRING_SUPPORTING_PROGRAMMERS, + CREDITS_STRING_NCL_PRODUCT_TESTING, + CREDITS_STRING_SPECIAL_THANKS, + CREDITS_STRING_SPECIAL_THANKS_2, + CREDITS_STRING_SPECIAL_THANKS_3, + CREDITS_STRING_BRAILLE_CODE_CHECK, + CREDITS_STRING_INFORMATION_SUPERVISORS, + CREDITS_STRING_COORDINATORS, + CREDITS_STRING_TASK_MANAGERS, + CREDITS_STRING_PRODUCERS, + CREDITS_STRING_EXECUTIVE_DIRECTOR, + CREDITS_STRING_EXECUTIVE_PRODUCER, + CREDITS_STRING_EXECUTIVE_PRODUCER_2, + CREDITS_STRING_ENGLISH_VERSION_COORDINATORS, + CREDITS_STRING_TRANSLATOR_TEXT_EDITOR, + CREDITS_STRING_PROGRAMMERS_2, + CREDITS_STRING_ENVIRONMENT_TOOL_PROGRAMMERS, + CREDITS_STRING_NOA_PRODUCT_TESTING, + CREDITS_STRING_BRAILLE_CODE_CHECK_2, + CREDITS_STRING_BRAILLE_CODE_CHECK_3, + CREDITS_STRING_SPECIAL_THANKS_4, + CREDITS_STRING_SPECIAL_THANKS_5, + CREDITS_STRING_BRAILLE_CODE_CHECK_4, + CREDITS_STRING_GRAPHIC_DESIGNER, + CREDITS_STRING_DUMMY +}; + +enum CreditsMap +{ + CREDITS_MAP_ROUTE23 = 0, + CREDITS_MAP_VIRIDIAN_CITY, + CREDITS_MAP_PEWTER_CITY, + CREDITS_MAP_CERULEAN_CITY, + CREDITS_MAP_ROUTE25, + CREDITS_MAP_VERMILION_CITY, + CREDITS_MAP_ROUTE10, + CREDITS_MAP_CELADON_CITY, + CREDITS_MAP_SAFFRON_CITY_DUPLICATE, + CREDITS_MAP_ROUTE17, + CREDITS_MAP_FUCHSIA_CITY, + CREDITS_MAP_CINNABAR_ISLAND, + CREDITS_MAP_ROUTE21_NORTH +}; + struct CreditsResources { u8 mainseqno; @@ -297,73 +367,80 @@ static const struct CompressedGraphicsHeader sCopyrightOrTheEndGfxHeaders[] = { } }; +#define CREDITS_PRINT(text, duration) { CREDITSSCRCMD_PRINT, CREDITS_STRING_##text, duration } +#define CREDITS_MAPNEXT(map, duration) { CREDITSSCRCMD_MAPNEXT, CREDITS_MAP_##map, duration } +#define CREDITS_MAP(map, duration) { CREDITSSCRCMD_MAP, CREDITS_MAP_##map, duration } +#define CREDITS_MON(mon) { CREDITSSCRCMD_MON, CREDITSMON_##mon } +#define CREDITS_THEENDGFX(idx, duration) { CREDITSSCRCMD_THEENDGFX, CREDITSCLOSING_##idx, duration } +#define CREDITS_WAITBUTTON(time) { CREDITSSCRCMD_WAITBUTTON, .duration = time } + static const struct CreditsScrcmd sCreditsScript[] = { - { CREDITSSCRCMD_MAPNEXT, 0, 16 }, - { CREDITSSCRCMD_PRINT, 0, 300 }, - { CREDITSSCRCMD_PRINT, 1, 300 }, - { CREDITSSCRCMD_PRINT, 2, 300 }, - { CREDITSSCRCMD_PRINT, 42, 60 }, - { CREDITSSCRCMD_MAPNEXT, 1, 0 }, - { CREDITSSCRCMD_PRINT, 3, 211 }, - { CREDITSSCRCMD_PRINT, 4, 211 }, - { CREDITSSCRCMD_PRINT, 5, 211 }, - { CREDITSSCRCMD_MAPNEXT, 2, 0 }, - { CREDITSSCRCMD_PRINT, 6, 211 }, - { CREDITSSCRCMD_PRINT, 7, 210 }, - { CREDITSSCRCMD_PRINT, 8, 210 }, - { CREDITSSCRCMD_MON, 0, 0 }, - { CREDITSSCRCMD_MAP, 3, 16 }, - { CREDITSSCRCMD_PRINT, 9, 211 }, - { CREDITSSCRCMD_PRINT, 10, 210 }, - { CREDITSSCRCMD_PRINT, 11, 210 }, - { CREDITSSCRCMD_MAPNEXT, 4, 16 }, - { CREDITSSCRCMD_PRINT, 12, 211 }, - { CREDITSSCRCMD_PRINT, 13, 210 }, - { CREDITSSCRCMD_PRINT, 14, 210 }, - { CREDITSSCRCMD_MAPNEXT, 5, 16 }, - { CREDITSSCRCMD_PRINT, 15, 211 }, - { CREDITSSCRCMD_PRINT, 16, 210 }, - { CREDITSSCRCMD_PRINT, 17, 210 }, - { CREDITSSCRCMD_MON, 1, 0 }, - { CREDITSSCRCMD_MAP, 6, 16 }, - { CREDITSSCRCMD_PRINT, 18, 211 }, - { CREDITSSCRCMD_PRINT, 19, 210 }, - { CREDITSSCRCMD_PRINT, 20, 210 }, - { CREDITSSCRCMD_MAPNEXT, 7, 16 }, - { CREDITSSCRCMD_PRINT, 21, 221 }, - { CREDITSSCRCMD_PRINT, 22, 221 }, - { CREDITSSCRCMD_PRINT, 23, 221 }, - { CREDITSSCRCMD_PRINT, 24, 221 }, - { CREDITSSCRCMD_PRINT, 42, 51 }, - { CREDITSSCRCMD_MAPNEXT, 8, 16 }, - { CREDITSSCRCMD_PRINT, 25, 211 }, - { CREDITSSCRCMD_PRINT, 26, 210 }, - { CREDITSSCRCMD_PRINT, 27, 210 }, - { CREDITSSCRCMD_MON, 2, 0 }, - { CREDITSSCRCMD_MAP, 9, 16 }, - { CREDITSSCRCMD_PRINT, 28, 331 }, - { CREDITSSCRCMD_PRINT, 29, 331 }, - { CREDITSSCRCMD_PRINT, 30, 331 }, - { CREDITSSCRCMD_MAPNEXT, 10, 16 }, - { CREDITSSCRCMD_PRINT, 31, 221 }, - { CREDITSSCRCMD_PRINT, 32, 221 }, - { CREDITSSCRCMD_PRINT, 33, 221 }, - { CREDITSSCRCMD_PRINT, 34, 221 }, - { CREDITSSCRCMD_PRINT, 42, 52 }, - { CREDITSSCRCMD_MAPNEXT, 11, 16 }, - { CREDITSSCRCMD_PRINT, 41, 210 }, - { CREDITSSCRCMD_PRINT, 35, 210 }, - { CREDITSSCRCMD_PRINT, 36, 211 }, - { CREDITSSCRCMD_MON, 3, 0 }, - { CREDITSSCRCMD_MAP, 12, 16 }, - { CREDITSSCRCMD_PRINT, 37, 221 }, - { CREDITSSCRCMD_PRINT, 40, 221 }, - { CREDITSSCRCMD_PRINT, 38, 221 }, - { CREDITSSCRCMD_PRINT, 39, 221 }, - { CREDITSSCRCMD_PRINT, 42, 52 }, - { CREDITSSCRCMD_THEENDGFX, 0, 224 }, - { CREDITSSCRCMD_THEENDGFX, 1, 240 }, - { CREDITSSCRCMD_WAITBUTTON, 0, 600 } + CREDITS_MAPNEXT(ROUTE23, 16), + CREDITS_PRINT(DIRECTOR, 300), + CREDITS_PRINT(ART_DIRECTOR_BATTLE_DIRECTOR, 300), + CREDITS_PRINT(PROGRAM_LEADER_PLANNING_LEADER_GRAPHIC_DESIGN_LEADER, 300), + CREDITS_PRINT(DUMMY, 60), + CREDITS_MAPNEXT(VIRIDIAN_CITY, 0), + CREDITS_PRINT(PROGRAMMERS, 211), + CREDITS_PRINT(SYSTEM_PROGRAMMERS, 211), + CREDITS_PRINT(GRAPHIC_DESIGNERS, 211), + CREDITS_MAPNEXT(PEWTER_CITY, 0), + CREDITS_PRINT(GRAPHIC_DESIGNERS_2, 211), + CREDITS_PRINT(MUSIC_COMPOSITION, 210), + CREDITS_PRINT(SOUND_EFFECTS, 210), + CREDITS_MON(CHARIZARD), + CREDITS_MAP(CERULEAN_CITY, 16), + CREDITS_PRINT(GAME_DESIGNERS, 211), + CREDITS_PRINT(GAME_DESIGNERS_2, 210), + CREDITS_PRINT(GAME_SCENARIO, 210), + CREDITS_MAPNEXT(ROUTE25, 16), + CREDITS_PRINT(SCRIPT_DESIGNER_MAP_DESIGNER, 211), + CREDITS_PRINT(PARAMETRIC_DESIGNERS, 210), + CREDITS_PRINT(POKEDEX_TEXT, 210), + CREDITS_MAPNEXT(VERMILION_CITY, 16), + CREDITS_PRINT(POKEMON_DESIGNERS, 211), + CREDITS_PRINT(POKEMON_DESIGNERS_2, 210), + CREDITS_PRINT(POKEMON_DESIGNERS_3, 210), + CREDITS_MON(VENUSAUR), + CREDITS_MAP(ROUTE10, 16), + CREDITS_PRINT(SUPPORTING_PROGRAMMERS, 211), + CREDITS_PRINT(NCL_PRODUCT_TESTING, 210), + CREDITS_PRINT(SPECIAL_THANKS, 210), + CREDITS_MAPNEXT(CELADON_CITY, 16), + CREDITS_PRINT(SPECIAL_THANKS_2, 221), + CREDITS_PRINT(SPECIAL_THANKS_3, 221), + CREDITS_PRINT(BRAILLE_CODE_CHECK, 221), + CREDITS_PRINT(INFORMATION_SUPERVISORS, 221), + CREDITS_PRINT(DUMMY, 51), + CREDITS_MAPNEXT(SAFFRON_CITY_DUPLICATE, 16), + CREDITS_PRINT(COORDINATORS, 211), + CREDITS_PRINT(TASK_MANAGERS, 210), + CREDITS_PRINT(PRODUCERS, 210), + CREDITS_MON(BLASTOISE), + CREDITS_MAP(ROUTE17, 16), + CREDITS_PRINT(EXECUTIVE_DIRECTOR, 331), + CREDITS_PRINT(EXECUTIVE_PRODUCER, 331), + CREDITS_PRINT(EXECUTIVE_PRODUCER_2, 331), + CREDITS_MAPNEXT(FUCHSIA_CITY, 16), + CREDITS_PRINT(ENGLISH_VERSION_COORDINATORS, 221), + CREDITS_PRINT(TRANSLATOR_TEXT_EDITOR, 221), + CREDITS_PRINT(PROGRAMMERS_2, 221), + CREDITS_PRINT(ENVIRONMENT_TOOL_PROGRAMMERS, 221), + CREDITS_PRINT(DUMMY, 52), + CREDITS_MAPNEXT(CINNABAR_ISLAND, 16), + CREDITS_PRINT(GRAPHIC_DESIGNER, 210), + CREDITS_PRINT(NOA_PRODUCT_TESTING, 210), + CREDITS_PRINT(BRAILLE_CODE_CHECK_2, 211), + CREDITS_MON(PIKACHU), + CREDITS_MAP(ROUTE21_NORTH, 16), + CREDITS_PRINT(BRAILLE_CODE_CHECK_3, 221), + CREDITS_PRINT(BRAILLE_CODE_CHECK_4, 221), + CREDITS_PRINT(SPECIAL_THANKS_4, 221), + CREDITS_PRINT(SPECIAL_THANKS_5, 221), + CREDITS_PRINT(DUMMY, 52), + CREDITS_THEENDGFX(ALLRIGHTSRESERVED, 224), + CREDITS_THEENDGFX(THEEND, 240), + CREDITS_WAITBUTTON(600) }; static const ALIGNED(4) u8 sTextColor_Unused[3] = {0, 1, 2}; @@ -593,49 +670,49 @@ static const struct CreditsOverworldCmd *const sOverworldMapScenes[] = { }; static const struct CreditsTextHeader sCreditsTexts[] = { - { gUnknown_841D1D8, gUnknown_841D1E8, FALSE }, - { gUnknown_841D200, gUnknown_841D224, FALSE }, - { gUnknown_841D248, gUnknown_841D284, FALSE }, - { gUnknown_841D2B4, gUnknown_841D2C8, FALSE }, - { gUnknown_841D314, gUnknown_841D330, TRUE }, - { gUnknown_841D370, gUnknown_841D388, TRUE }, - { gUnknown_841D3C0, gUnknown_841D3D8, TRUE }, - { gUnknown_841D3FC, gUnknown_841D414, TRUE }, - { gUnknown_841D434, gUnknown_841D448, FALSE }, - { gUnknown_841D45C, gUnknown_841D474, FALSE }, - { gUnknown_841D4A4, gUnknown_841D4BC, FALSE }, - { gUnknown_841D4F0, gUnknown_841D504, TRUE }, - { gUnknown_841D524, gUnknown_841D548, FALSE }, - { gUnknown_841D56C, gUnknown_841D588, FALSE }, - { gUnknown_841D5B8, gUnknown_841D5CC, FALSE }, - { gUnknown_841D5E4, gUnknown_841D5FC, TRUE }, - { gUnknown_841D640, gUnknown_841D658, FALSE }, - { gUnknown_841D698, gUnknown_841D6B0, TRUE }, - { gUnknown_841D6EC, gUnknown_841D708, FALSE }, - { gUnknown_841D74C, gUnknown_841D768, FALSE }, - { gUnknown_841D784, gUnknown_841D79C, FALSE }, - { gUnknown_841D7DC, gUnknown_841D7F4, FALSE }, - { gUnknown_841D834, gUnknown_841D84C, FALSE }, - { gUnknown_841D894, gUnknown_841D8B0, FALSE }, - { gUnknown_841D8CC, gUnknown_841D8EC, FALSE }, - { gUnknown_841D938, gUnknown_841D94C, FALSE }, - { gUnknown_841D98C, gUnknown_841D9A0, TRUE }, - { gUnknown_841D9C4, gUnknown_841D9D4, FALSE }, - { gUnknown_841DA08, gUnknown_841DA24, FALSE }, - { gUnknown_841DA3C, gUnknown_841DA58, FALSE }, - { gUnknown_841DA6C, gUnknown_841DA88, FALSE }, - { gUnknown_841DAA0, gUnknown_841DAC4, FALSE }, - { gUnknown_841DAE8, gUnknown_841DB04, FALSE }, - { gUnknown_841DB28, gUnknown_841DB3C, FALSE }, - { gUnknown_841DB7C, gUnknown_841DBA4, TRUE }, - { gUnknown_841DBDC, gUnknown_841DBF8, TRUE }, - { gUnknown_841DC2C, gUnknown_841DC48, TRUE }, - { gUnknown_841DCAC, gUnknown_841DCC8, TRUE }, - { gUnknown_841DD08, gUnknown_841DD20, FALSE }, - { gUnknown_841DD64, gUnknown_841DD7C, FALSE }, - { gUnknown_841DDC8, gUnknown_841DDE4, FALSE }, - { gUnknown_841DE24, gUnknown_841DE3C, FALSE }, - { gUnknown_84161CD, gUnknown_84161CD, FALSE } + { gCreditsString_Director, gCreditsString_Junichi_Masuda, FALSE }, + { gCreditsString_Art_Director_Battle_Director, gCreditsString_Ken_Sugimori_Shigeki_Morimoto, FALSE }, + { gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader, gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno, FALSE }, + { gCreditsString_Programmers, gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto, FALSE }, + { gCreditsString_System_Programmers, gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada, TRUE }, + { gCreditsString_Graphic_Designers, gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino, TRUE }, + { gCreditsString_Graphic_Designers_2, gCreditsString_Ken_Sugimori_Hironobu_Yoshida, TRUE }, + { gCreditsString_Music_Composition, gCreditsString_Go_Ichinose_Junichi_Masuda, TRUE }, + { gCreditsString_Sound_Effects, gCreditsString_Go_Ichinose, FALSE }, + { gCreditsString_Game_Designers, gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta, FALSE }, + { gCreditsString_Game_Designers_2, gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi, FALSE }, + { gCreditsString_Game_Scenario, gCreditsString_Hitomi_Sato_Satoshi_Tajiri, TRUE }, + { gCreditsString_Script_Designer_Map_Designer, gCreditsString_Satoshi_Nohara_Shigeru_Ohmori, FALSE }, + { gCreditsString_Parametric_Designers, gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto, FALSE }, + { gCreditsString_POKeDEX_Text, gCreditsString_Kenji_Matsushima, FALSE }, + { gCreditsString_POKeMON_Designers, gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida, TRUE }, + { gCreditsString_POKeMON_Designers_2, gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita, FALSE }, + { gCreditsString_POKeMON_Designers_3, gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani, TRUE }, + { gCreditsString_Supporting_Programmers, gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino, FALSE }, + { gCreditsString_NCL_Product_Testing, gCreditsString_NCL_Super_Mario_Club, FALSE }, + { gCreditsString_Special_Thanks, gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama, FALSE }, + { gCreditsString_Special_Thanks_2, gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa, FALSE }, + { gCreditsString_Special_Thanks_3, gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi, FALSE }, + { gCreditsString_Braille_Code_Check, gCreditsString_Japan_Braille_Library, FALSE }, + { gCreditsString_Information_Supervisors, gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase, FALSE }, + { gCreditsString_Coordinators, gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto, FALSE }, + { gCreditsString_Task_Managers, gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto, TRUE }, + { gCreditsString_Producers, gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru, FALSE }, + { gCreditsString_Executive_Director, gCreditsString_Satoshi_Tajiri, FALSE }, + { gCreditsString_Executive_Producer, gCreditsString_Satoru_Iwata, FALSE }, + { gCreditsString_Executive_Producer_2, gCreditsString_Tsunekaz_Ishihara, FALSE }, + { gCreditsString_English_Version_Coordinators, gCreditsString_Hiro_Nakamura_Seth_McMahill, FALSE }, + { gCreditsString_Translator_Text_Editor, gCreditsString_Nob_Ogasawara_Teresa_Lillygren, FALSE }, + { gCreditsString_Programmers_2, gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi, FALSE }, + { gCreditsString_Environment_Tool_Programmers, gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi, TRUE }, + { gCreditsString_NOA_Product_Testing, gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa, TRUE }, + { gCreditsString_Braille_Code_Check_2, gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union, TRUE }, + { gCreditsString_Braille_Code_Check_3, gCreditsString_National_Information_Library_Service_Margaret_Campion, TRUE }, + { gCreditsString_Special_Thanks_4, gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi, FALSE }, + { gCreditsString_Special_Thanks_5, gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi, FALSE }, + { gCreditsString_Braille_Code_Check_4, gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran, FALSE }, + { gCreditsString_Graphic_Designer, gCreditsString_Akira_Kinashi, FALSE }, + { gString_Dummy, gString_Dummy, FALSE } }; void Special_Credits(void) From de31b97196972501f0a492547a598781e76db595 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 13:50:16 -0400 Subject: [PATCH 048/100] Update name of LoadMonPicForCredits --- asm/pokedex_screen.s | 2 +- include/trainer_pokemon_sprites.h | 2 +- src/credits.c | 8 ++++---- src/trainer_pokemon_sprites.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 9394675c6..1a7cd0a2e 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -4491,7 +4491,7 @@ sub_81049FC: @ 81049FC adds r0, r5, 0 movs r1, 0x8 movs r3, 0x1 - bl LoadMonPicForCredits + bl LoadMonPicInWindow add sp, 0x8 pop {r4-r6} pop {r0} diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index a7ad603b4..a267737f5 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -15,6 +15,6 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); -u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); +u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/src/credits.c b/src/credits.c index 997c1ea16..abb287194 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1771,28 +1771,28 @@ static void LoadCreditsMonPic(u8 whichMon) case CREDITSMON_CHARIZARD: InitWindows(sWindowTemplates_Charizard); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - LoadMonPicForCredits(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0); + LoadMonPicInWindow(SPECIES_CHARIZARD, 8, 0, TRUE, 10, 0); CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Charizard, 0, 0); CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Charizard, 0, 0); break; case CREDITSMON_VENUSAUR: InitWindows(sWindowTemplates_Venusaur); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - LoadMonPicForCredits(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0); + LoadMonPicInWindow(SPECIES_VENUSAUR, 8, 0, TRUE, 10, 0); CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Venusaur, 0, 0); CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Venusaur, 0, 0); break; case CREDITSMON_BLASTOISE: InitWindows(sWindowTemplates_Blastoise); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - LoadMonPicForCredits(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0); + LoadMonPicInWindow(SPECIES_BLASTOISE, 8, 0, TRUE, 10, 0); CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Blastoise, 0, 0); CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Blastoise, 0, 0); break; case CREDITSMON_PIKACHU: InitWindows(sWindowTemplates_Pikachu); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - LoadMonPicForCredits(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0); + LoadMonPicInWindow(SPECIES_PIKACHU, 8, 0, TRUE, 10, 0); CopyToWindowPixelBuffer(1, (const void *)sWindow1Map_Pikachu, 0, 0); CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Pikachu, 0, 0); break; diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 6cec633c5..2ef5e02f0 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -278,7 +278,7 @@ u16 FreeAndDestroyMonPicSprite(u16 spriteId) return FreeAndDestroyPicSpriteInternal(spriteId); } -u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { return sub_810C0C0(species, otId, personality, isFrontPic, 0, 0, paletteSlot, windowId, FALSE); } From 931bf4ce4b4fd7ea63d00f36adfd2bf720831a80 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 13:52:51 -0400 Subject: [PATCH 049/100] Bump baserom.ips --- baserom.ips | Bin 2017986 -> 2014788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/baserom.ips b/baserom.ips index 6450180676ffe8b84993159db60340408c454a39..9a674ecd36145696268acd8c435fc215c68cff82 100644 GIT binary patch delta 181 zcmX>!wfe}Ps)iQE7N#xC_SK9NwmVca7fxVRK}5DNma5D*Iku?P^00-XF zNkXZUiijF#vBZt-;A9&aXR$>_$&ATUJrHXw+47t`9nNq@9V~qIe*Do^f9~PDp6~bG z`~7~tpYP{;fmc3#;N^xrReO!S=I^a_dyHp}XYR2)hnyrymgSNnJEUEvWSx;|q!@m` zNa2v7y(5MWj~bfv4?{!WGqm}vq1o>n8hqZ+&VL)~{?O362}9dZ^O2#I7Y+5I*%Lxu({mF4|Oko~b36TxjZW zf~n^bdV{HX@W6E=^H7>->I5nlo7#eYOd@9q&v6zpOHD1r0rVntnPY19G8RA&`Z0#! zB!axd4rx8;M|85OX_!FIa)PC>_zF|g*OKThB!}#Erus5jz)hT6x&9i@Z)bzKjL$Q5 z6B^KqDWp0ZO|AU8siWUuz+IFCo&r-7zGdoew4(IerZ&UaOjVG+g@n*{H}kN$kZXi) zBZ(bU2(EifU5^%YVG3;}B(T%e4wRG;dzYzBkB9TPkBs2{K7)S1VD#-~SN9XNoS=yR zA&Vfpg0VRJ0Au!;T3y9`#8;CXyoh;-WBV~xe3*FqOwFhzP92HvH?;}pQGbwFhd6(4 zJ!ke9Wy9_#=r@>}-$)WjdWr>5(L`0AHnsB^Q_uaBDmCM0EbuIWeoi9Kv9rUB!7w_G zQ06v{>{sj(J{SCvV zASlva@hsf`zChPpM_e-lBk?+VQf0kU3=cQLp$;&b*zm#c4 zyfNMQrV(K%|9Om)K~IJjMdrpOrbOK?x5*}1E$NaWPP2S0)%+Amlw6cV`OsJ^?_0St z5K<&8;(t^kq(-9UVOc2qBuQ#zmDGt__7h}@kt^#ZU$Ue??v=acIoT?QrI3`ik<@ni zg%}bZ9uyW9791=R6)`PBWb4rf{qbp$kO@* zi+@IzX547$W^}-nXsH`hODy#)wbX~~WsJob@{*XFY-vuwa!b#lFvZe7q@^+!6G&KL zX)4yQa4g+Krxev_h7V(ywbIfW)We71o0xzKl&+#(O<;^6C*9IcxYlqVy%5tfHf)G1 z$j!~YYuW4ptuj6s44*Tg9}ET#lHX?DS!p~S7W5ORq}bBBQl{TaTh9K_S7B-U9!tGH zvb6OdMz!|>exTJ5dVm!Nl3@~M>vE$ zI-5~~-KfR^v|$vJh<}t?pc$iZ?PuSpM%zK^bI8(s6ru-<>sb_T)Zo~$lTRfkCdM^) zkZ>0pg!=?_JHa6Y_fq6nS?D!(bjng2T_}E?lSU=#(15(t6c}EN;2b7k3@{JT2=#J+ zIDiQlZ}1G!NI)twkd1tYuR>I!6aAP#@tZ7;PMk&jTMS0!pryk@?C@=Nhz3j{beKg^ zfg4PH;m*tpUX@7yV9-Z_));!?V_NkOUTI}0aWZgixUY81p%*U(28In4EgayFU(n?? z&IrDGecjdTkfFWvy@U}tOdB*LvTu8M5Q1?XLZAr6G=w4i`1Wvnt=s9i>E^9HU$u2~ zqpf3bZ??4)-YvGaZ?(0r(AJFYwq|1jqeYCvB!Y`=b)kO;^X{=V2b)j~4=PcI2Go?; zT9443JVPbwcG`|M&}l(Cy3h+RMlgxg@3J^N7{wS;zh`S9THwP-nXTt`*_!ULbv;^P z-)Czy65xSqXNAVdEg9hO1g@va=ZWR012uyIkXo$Ppq$qaR9KnvQ@ zgcP4n@|i7I&l{9@7kJ=4s@drK8zyc3>8E^I?mXQTQ-JA?<=ddF&z`M4f2$IEIL_|pCZwFI)j From bdeea4ca2855696db8c6ca51872ec7d19783636f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 17:16:57 -0400 Subject: [PATCH 050/100] field_fadetransition begin --- asm/field_fadetransition.s | 1085 -------------------------------- include/cable_club.h | 1 + include/field_fadetransition.h | 2 + include/field_map_obj.h | 1 + include/field_player_avatar.h | 3 + include/field_screen_effect.h | 1 + include/fldeff.h | 2 + include/link.h | 1 + include/map_preview_screen.h | 1 + include/overworld.h | 3 + include/quest_log.h | 1 + include/start_menu.h | 2 + ld_script.txt | 1 + src/field_fadetransition.c | 488 ++++++++++++++ 14 files changed, 507 insertions(+), 1085 deletions(-) create mode 100644 src/field_fadetransition.c diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 4b707a46a..0c248ba6c 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -5,1091 +5,6 @@ .text - thumb_func_start palette_bg_faded_fill_white -palette_bg_faded_fill_white: @ 807DB14 - push {lr} - sub sp, 0x4 - ldr r0, _0807DB2C @ =0x7fff7fff - str r0, [sp] - ldr r1, _0807DB30 @ =gPlttBufferFaded - ldr r2, _0807DB34 @ =0x01000100 - mov r0, sp - bl CpuFastSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0807DB2C: .4byte 0x7fff7fff -_0807DB30: .4byte gPlttBufferFaded -_0807DB34: .4byte 0x01000100 - thumb_func_end palette_bg_faded_fill_white - - thumb_func_start palette_bg_faded_fill_black -palette_bg_faded_fill_black: @ 807DB38 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _0807DB50 @ =gPlttBufferFaded - ldr r2, _0807DB54 @ =0x01000100 - mov r0, sp - bl CpuFastSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0807DB50: .4byte gPlttBufferFaded -_0807DB54: .4byte 0x01000100 - thumb_func_end palette_bg_faded_fill_black - - thumb_func_start pal_fill_for_maplights -pal_fill_for_maplights: @ 807DB58 - push {r4,lr} - bl get_map_light_from_warp0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetCurrentMapType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_80C9DCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807DB82 - cmp r0, 0x1 - beq _0807DB94 - b _0807DBA4 -_0807DB82: - bl palette_bg_faded_fill_black - movs r0, 0 - movs r1, 0 - bl fade_screen - bl palette_bg_faded_fill_black - b _0807DBA4 -_0807DB94: - bl palette_bg_faded_fill_white - movs r0, 0x2 - movs r1, 0 - bl fade_screen - bl palette_bg_faded_fill_white -_0807DBA4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end pal_fill_for_maplights - - thumb_func_start sub_807DBAC -sub_807DBAC: @ 807DBAC - push {r4,lr} - bl get_map_light_from_warp0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetCurrentMapType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_80C9DCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807DBD6 - cmp r0, 0x1 - beq _0807DBE8 - b _0807DBF8 -_0807DBD6: - bl palette_bg_faded_fill_black - movs r0, 0 - movs r1, 0x3 - bl fade_screen - bl palette_bg_faded_fill_black - b _0807DBF8 -_0807DBE8: - bl palette_bg_faded_fill_white - movs r0, 0x2 - movs r1, 0x3 - bl fade_screen - bl palette_bg_faded_fill_white -_0807DBF8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807DBAC - - thumb_func_start sub_807DC00 -sub_807DC00: @ 807DC00 - push {lr} - bl palette_bg_faded_fill_black - movs r0, 0 - movs r1, 0 - bl fade_screen - bl palette_bg_faded_fill_black - pop {r0} - bx r0 - thumb_func_end sub_807DC00 - - thumb_func_start sub_807DC18 -sub_807DC18: @ 807DC18 - push {r4,lr} - bl warp1_get_mapheader - adds r4, r0, 0 - ldr r1, _0807DC54 @ =gMapHeader - ldrb r0, [r4, 0x14] - ldrb r1, [r1, 0x14] - cmp r0, r1 - beq _0807DC36 - movs r1, 0 - bl sub_80F8110 - lsls r0, 24 - cmp r0, 0 - bne _0807DC58 -_0807DC36: - bl GetCurrentMapType - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4, 0x17] - bl sub_80C9D7C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807DC58 - cmp r0, 0x1 - beq _0807DC62 - b _0807DC6A - .align 2, 0 -_0807DC54: .4byte gMapHeader -_0807DC58: - movs r0, 0x1 - movs r1, 0 - bl fade_screen - b _0807DC6A -_0807DC62: - movs r0, 0x3 - movs r1, 0 - bl fade_screen -_0807DC6A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807DC18 - - thumb_func_start sub_807DC70 -sub_807DC70: @ 807DC70 - push {r4,lr} - bl GetCurrentMapType - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl warp1_get_mapheader - ldrb r1, [r0, 0x17] - adds r0, r4, 0 - bl sub_80C9D7C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807DC96 - cmp r0, 0x1 - beq _0807DCA0 - b _0807DCA8 -_0807DC96: - movs r0, 0x1 - movs r1, 0x3 - bl fade_screen - b _0807DCA8 -_0807DCA0: - movs r0, 0x3 - movs r1, 0x3 - bl fade_screen -_0807DCA8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807DC70 - - thumb_func_start sub_807DCB0 -sub_807DCB0: @ 807DCB0 - push {lr} - lsls r0, 24 - movs r1, 0 - cmp r0, 0 - bne _0807DCBC - movs r1, 0x1 -_0807DCBC: - adds r0, r1, 0 - bl sub_805CB04 - pop {r0} - bx r0 - thumb_func_end sub_807DCB0 - - thumb_func_start task0A_nop_for_a_while -task0A_nop_for_a_while: @ 807DCC8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807E418 - cmp r0, 0x1 - bne _0807DCDC - adds r0, r4, 0 - bl DestroyTask -_0807DCDC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task0A_nop_for_a_while - - thumb_func_start sub_807DCE4 -sub_807DCE4: @ 807DCE4 - push {lr} - bl ScriptContext2_Enable - bl Overworld_PlaySpecialMapMusic - bl sub_807DC00 - ldr r0, _0807DD00 @ =task0A_nop_for_a_while - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807DD00: .4byte task0A_nop_for_a_while - thumb_func_end sub_807DCE4 - - thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running -task0A_asap_script_env_2_enable_and_set_ctx_running: @ 807DD04 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807E418 - cmp r0, 0x1 - bne _0807DD1C - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_0807DD1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running - - thumb_func_start FieldCallback_ReturnToEventScript2 -FieldCallback_ReturnToEventScript2: @ 807DD24 - push {lr} - bl ScriptContext2_Enable - bl Overworld_PlaySpecialMapMusic - bl sub_807DC00 - ldr r0, _0807DD40 @ =task0A_asap_script_env_2_enable_and_set_ctx_running - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807DD40: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running - thumb_func_end FieldCallback_ReturnToEventScript2 - - thumb_func_start sub_807DD44 -sub_807DD44: @ 807DD44 - push {lr} - bl ScriptContext2_Enable - bl sub_807DC00 - ldr r0, _0807DD5C @ =task0A_asap_script_env_2_enable_and_set_ctx_running - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807DD5C: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running - thumb_func_end sub_807DD44 - - thumb_func_start task_mpl_807DD60 -task_mpl_807DD60: @ 807DD60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r2, _0807DD84 @ =gTasks - adds r4, r0, r2 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807DD9A - cmp r0, 0x1 - bgt _0807DD88 - cmp r0, 0 - beq _0807DD8E - b _0807DDCA - .align 2, 0 -_0807DD84: .4byte gTasks -_0807DD88: - cmp r0, 0x2 - beq _0807DDB8 - b _0807DDCA -_0807DD8E: - bl sub_8081150 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xA] - b _0807DDB0 -_0807DD9A: - movs r1, 0xA - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _0807DDCA - bl pal_fill_for_maplights -_0807DDB0: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807DDCA -_0807DDB8: - bl sub_807E418 - cmp r0, 0x1 - bne _0807DDCA - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_0807DDCA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end task_mpl_807DD60 - - thumb_func_start sub_807DDD0 -sub_807DDD0: @ 807DDD0 - push {lr} - bl ScriptContext2_Enable - bl Overworld_PlaySpecialMapMusic - bl palette_bg_faded_fill_black - ldr r0, _0807DDEC @ =task_mpl_807DD60 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807DDEC: .4byte task_mpl_807DD60 - thumb_func_end sub_807DDD0 - - thumb_func_start sub_807DDF0 -sub_807DDF0: @ 807DDF0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807DE14 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807DE24 - cmp r0, 0x1 - bgt _0807DE18 - cmp r0, 0 - beq _0807DE1E - b _0807DE50 - .align 2, 0 -_0807DE14: .4byte gTasks -_0807DE18: - cmp r0, 0x2 - beq _0807DE3A - b _0807DE50 -_0807DE1E: - bl sub_800AB9C - b _0807DE32 -_0807DE24: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0807DE50 - bl pal_fill_for_maplights -_0807DE32: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807DE50 -_0807DE3A: - bl sub_807E418 - cmp r0, 0x1 - bne _0807DE50 - bl sub_8009FE8 - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_0807DE50: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807DDF0 - - thumb_func_start sub_807DE58 -sub_807DE58: @ 807DE58 - push {lr} - bl ScriptContext2_Enable - bl Overworld_PlaySpecialMapMusic - bl palette_bg_faded_fill_black - ldr r0, _0807DE74 @ =sub_807DDF0 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807DE74: .4byte sub_807DDF0 - thumb_func_end sub_807DE58 - - thumb_func_start sub_807DE78 -sub_807DE78: @ 807DE78 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsWarpDoor_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807DEE8 - ldr r5, _0807DED8 @ =sub_807DFBC - bl get_map_light_from_warp0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl GetCurrentMapType - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_80C9DCC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807DEDC - cmp r0, 0x1 - beq _0807DEE2 - b _0807DF2E - .align 2, 0 -_0807DED8: .4byte sub_807DFBC -_0807DEDC: - bl palette_bg_faded_fill_black - b _0807DF2E -_0807DEE2: - bl palette_bg_faded_fill_white - b _0807DF2E -_0807DEE8: - adds r0, r5, 0 - bl sub_807DF4C - adds r0, r4, 0 - bl MetatileBehavior_IsCaveDoor - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807DF04 - ldr r5, _0807DF00 @ =task_map_chg_seq_0807E20C - b _0807DF2E - .align 2, 0 -_0807DF00: .4byte task_map_chg_seq_0807E20C -_0807DF04: - adds r0, r4, 0 - bl MetatileBehavior_IsUnknownWarp6C_to_6F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807DF2C - ldr r0, _0807DF20 @ =gUnknown_2031DE0 - ldrb r0, [r0] - ldr r5, _0807DF24 @ =task_map_chg_seq_0807E2CC - cmp r0, 0 - bne _0807DF2E - ldr r5, _0807DF28 @ =sub_807EC34 - b _0807DF2E - .align 2, 0 -_0807DF20: .4byte gUnknown_2031DE0 -_0807DF24: .4byte task_map_chg_seq_0807E2CC -_0807DF28: .4byte sub_807EC34 -_0807DF2C: - ldr r5, _0807DF44 @ =task_map_chg_seq_0807E2CC -_0807DF2E: - ldr r1, _0807DF48 @ =gUnknown_2031DE0 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0xA - bl CreateTask - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807DF44: .4byte task_map_chg_seq_0807E2CC -_0807DF48: .4byte gUnknown_2031DE0 - thumb_func_end sub_807DE78 - - thumb_func_start sub_807DF4C -sub_807DF4C: @ 807DF4C - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0807DF5A - bl pal_fill_for_maplights - b _0807DF5E -_0807DF5A: - bl sub_807DC00 -_0807DF5E: - pop {r0} - bx r0 - thumb_func_end sub_807DF4C - - thumb_func_start sub_807DF64 -sub_807DF64: @ 807DF64 - push {lr} - bl Overworld_PlaySpecialMapMusic - bl sub_8111CF0 - movs r0, 0 - bl sub_807DE78 - bl ScriptContext2_Enable - pop {r0} - bx r0 - thumb_func_end sub_807DF64 - - thumb_func_start sub_807DF7C -sub_807DF7C: @ 807DF7C - push {lr} - bl Overworld_PlaySpecialMapMusic - bl sub_8111CF0 - movs r0, 0x1 - bl sub_807DE78 - bl ScriptContext2_Enable - pop {r0} - bx r0 - thumb_func_end sub_807DF7C - - thumb_func_start sub_807DF94 -sub_807DF94: @ 807DF94 - push {lr} - bl Overworld_PlaySpecialMapMusic - bl pal_fill_for_maplights - bl sub_8111CF0 - movs r0, 0x28 - bl PlaySE - ldr r0, _0807DFB8 @ =sub_807E31C - movs r1, 0xA - bl CreateTask - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_0807DFB8: .4byte sub_807E31C - thumb_func_end sub_807DF94 - - thumb_func_start sub_807DFBC -sub_807DFBC: @ 807DFBC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807DFF8 @ =gTasks - adds r4, r0, r1 - adds r6, r4, 0 - adds r6, 0xC - adds r7, r4, 0 - adds r7, 0xE - movs r2, 0x8 - ldrsh r0, [r4, r2] - adds r2, r1, 0 - cmp r0, 0 - bne _0807DFE2 - movs r0, 0x5 - strh r0, [r4, 0x8] -_0807DFE2: - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x9 - bls _0807DFEC - b _0807E206 -_0807DFEC: - lsls r0, 2 - ldr r1, _0807DFFC @ =_0807E000 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807DFF8: .4byte gTasks -_0807DFFC: .4byte _0807E000 - .align 2, 0 -_0807E000: - .4byte _0807E028 - .4byte _0807E160 - .4byte _0807E198 - .4byte _0807E1DC - .4byte _0807E1F8 - .4byte _0807E04C - .4byte _0807E064 - .4byte _0807E0A2 - .4byte _0807E0EC - .4byte _0807E10E -_0807E028: - movs r0, 0 - bl sub_807DCB0 - bl player_bitmagic - adds r0, r6, 0 - adds r1, r7, 0 - bl PlayerGetDestCoords - movs r2, 0 - ldrsh r0, [r6, r2] - movs r2, 0 - ldrsh r1, [r7, r2] - bl FieldSetDoorOpened - movs r0, 0x1 - strh r0, [r4, 0x8] - b _0807E206 -_0807E04C: - movs r0, 0 - bl sub_807DCB0 - bl player_bitmagic - bl sub_807F114 - bl sub_807DBAC - movs r0, 0x6 - strh r0, [r4, 0x8] - b _0807E206 -_0807E064: - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x19 - beq _0807E074 - b _0807E206 -_0807E074: - adds r0, r6, 0 - adds r1, r7, 0 - bl PlayerGetDestCoords - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl GetDoorSoundEffect - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl FieldAnimateDoorOpen - movs r0, 0x7 - strh r0, [r4, 0x8] - b _0807E206 -_0807E0A2: - bl FieldIsDoorAnimationRunning - lsls r0, 24 - cmp r0, 0 - beq _0807E0AE - b _0807E206 -_0807E0AE: - adds r0, r4, 0 - adds r0, 0x20 - adds r1, r4, 0 - adds r1, 0x22 - bl PlayerGetDestCoords - movs r0, 0x1 - bl sub_807DCB0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E0E8 @ =gMapObjects - adds r0, r1 - movs r1, 0x10 - bl FieldObjectSetHeldMovement - movs r0, 0x8 - strh r0, [r4, 0x8] - b _0807E206 - .align 2, 0 -_0807E0E8: .4byte gMapObjects -_0807E0EC: - ldrh r0, [r4, 0x24] - adds r0, 0x1 - strh r0, [r4, 0x24] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - beq _0807E0FC - b _0807E206 -_0807E0FC: - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x22 - ldrsh r1, [r4, r2] - bl FieldAnimateDoorClose - movs r0, 0x9 - strh r0, [r4, 0x8] - b _0807E206 -_0807E10E: - bl sub_807E418 - cmp r0, 0 - beq _0807E206 - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _0807E206 - bl FieldIsDoorAnimationRunning - lsls r0, 24 - cmp r0, 0 - bne _0807E206 - ldr r0, _0807E158 @ =sub_807F204 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0807E206 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E15C @ =gMapObjects - adds r0, r1 - bl FieldObjectClearHeldMovementIfFinished - b _0807E1F2 - .align 2, 0 -_0807E158: .4byte sub_807F204 -_0807E15C: .4byte gMapObjects -_0807E160: - bl sub_807E418 - cmp r0, 0 - beq _0807E206 - movs r0, 0x1 - bl sub_807DCB0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E194 @ =gMapObjects - adds r0, r1 - movs r1, 0x10 - bl FieldObjectSetHeldMovement - movs r0, 0x2 - strh r0, [r4, 0x8] - b _0807E206 - .align 2, 0 -_0807E194: .4byte gMapObjects -_0807E198: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _0807E206 - movs r1, 0 - ldrsh r0, [r6, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl FieldAnimateDoorClose - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0xA] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E1D8 @ =gMapObjects - adds r0, r1 - bl FieldObjectClearHeldMovementIfFinished - movs r0, 0x3 - strh r0, [r4, 0x8] - b _0807E206 - .align 2, 0 -_0807E1D8: .4byte gMapObjects -_0807E1DC: - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - blt _0807E1F2 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _0807E206 -_0807E1F2: - movs r0, 0x4 - strh r0, [r4, 0x8] - b _0807E206 -_0807E1F8: - bl UnfreezeMapObjects - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_0807E206: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807DFBC - - thumb_func_start task_map_chg_seq_0807E20C -task_map_chg_seq_0807E20C: @ 807E20C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0807E238 @ =gTasks - adds r5, r0, r1 - adds r6, r5, 0 - adds r6, 0xC - adds r7, r5, 0 - adds r7, 0xE - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0807E25E - cmp r0, 0x1 - bgt _0807E23C - cmp r0, 0 - beq _0807E246 - b _0807E2C6 - .align 2, 0 -_0807E238: .4byte gTasks -_0807E23C: - cmp r0, 0x2 - beq _0807E2A8 - cmp r0, 0x3 - beq _0807E2B8 - b _0807E2C6 -_0807E246: - movs r0, 0 - bl sub_807DCB0 - bl player_bitmagic - adds r0, r6, 0 - adds r1, r7, 0 - bl PlayerGetDestCoords - movs r0, 0x1 - strh r0, [r5, 0x8] - b _0807E2C6 -_0807E25E: - bl sub_807E418 - cmp r0, 0 - beq _0807E2C6 - movs r0, 0x1 - bl sub_807DCB0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0807E2A4 @ =gMapObjects - adds r4, r0 - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - bl sub_8063F84 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetHeldMovement - movs r0, 0x2 - strh r0, [r5, 0x8] - b _0807E2C6 - .align 2, 0 -_0807E2A4: .4byte gMapObjects -_0807E2A8: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _0807E2C6 - movs r0, 0x3 - strh r0, [r5, 0x8] - b _0807E2C6 -_0807E2B8: - bl UnfreezeMapObjects - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask -_0807E2C6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_map_chg_seq_0807E20C - - thumb_func_start task_map_chg_seq_0807E2CC -task_map_chg_seq_0807E2CC: @ 807E2CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0807E2EC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0807E2F0 - cmp r0, 0x1 - beq _0807E300 - b _0807E316 - .align 2, 0 -_0807E2EC: .4byte gTasks -_0807E2F0: - bl player_bitmagic - bl ScriptContext2_Enable - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807E316 -_0807E300: - bl sub_807E418 - cmp r0, 0 - beq _0807E316 - bl UnfreezeMapObjects - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_0807E316: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end task_map_chg_seq_0807E2CC - - thumb_func_start sub_807E31C -sub_807E31C: @ 807E31C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0807E33C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0807E340 - cmp r0, 0x1 - beq _0807E354 - b _0807E372 - .align 2, 0 -_0807E33C: .4byte gTasks -_0807E340: - bl player_bitmagic - bl ScriptContext2_Enable - bl sub_805DC04 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807E372 -_0807E354: - bl sub_807E418 - cmp r0, 0 - beq _0807E372 - bl sub_805DC24 - cmp r0, 0x1 - beq _0807E372 - bl UnfreezeMapObjects - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_0807E372: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807E31C - - thumb_func_start sub_807E378 -sub_807E378: @ 807E378 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807E418 - cmp r0, 0x1 - bne _0807E394 - adds r0, r4, 0 - bl DestroyTask - ldr r0, _0807E39C @ =sub_806F1F0 - movs r1, 0x50 - bl CreateTask -_0807E394: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807E39C: .4byte sub_806F1F0 - thumb_func_end sub_807E378 - - thumb_func_start sub_807E3A0 -sub_807E3A0: @ 807E3A0 - push {lr} - bl sub_807DC00 - ldr r0, _0807E3B8 @ =sub_807E378 - movs r1, 0x50 - bl CreateTask - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_0807E3B8: .4byte sub_807E378 - thumb_func_end sub_807E3A0 - - thumb_func_start sub_807E3BC -sub_807E3BC: @ 807E3BC - push {lr} - bl sub_806F1D4 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_807E3BC - thumb_func_start task_mpl_807E3C8 task_mpl_807E3C8: @ 807E3C8 push {r4,lr} diff --git a/include/cable_club.h b/include/cable_club.h index 401cfacf1..5375c2210 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -9,5 +9,6 @@ // Exported ROM declarations void sub_8081A90(u8 taskId); +u8 sub_8081150(void); #endif //GUARD_CABLE_CLUB_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 4ba350491..fe67fec30 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -16,4 +16,6 @@ void sub_807DC18(void); void FieldCallback_ReturnToEventScript2(void); void sub_807DC00(void); +bool32 sub_807E418(void); + #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 83cc263e5..7228b9318 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -90,6 +90,7 @@ u8 sub_805EB44(u8, u8, s16, s16); void npc_paltag_set_load(u8 mode); bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); +u8 sub_8063F84(u8 direction); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index b87de3fef..00a3b7978 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -28,5 +28,8 @@ u8 GetPlayerAvatarObjectId(void); u8 PlayerGetZCoord(void); u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); +void sub_805CB04(bool8); +void sub_805DC04(void); +bool32 sub_805DC24(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index d1fde7eac..0c6cc35cb 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -7,5 +7,6 @@ void sub_80AF79C(void); void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); +void sub_807F114(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/fldeff.h b/include/fldeff.h index e5e7e5f7d..e3f703947 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -13,6 +13,8 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); u8 oei_task_add(void); // flash +u8 sub_80C9DCC(u8 lightLevel, u8 mapType); +u8 sub_80C9D7C(u8 mapType1, u8 mapType2); // cut diff --git a/include/link.h b/include/link.h index 5f8d8f161..950c48d3f 100644 --- a/include/link.h +++ b/include/link.h @@ -213,5 +213,6 @@ void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); +void sub_8009FE8(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 6590019e2..71015aacf 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -47,5 +47,6 @@ struct MapPreviewScreen u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); +bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 8c5dde2b0..2b6013217 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -133,6 +133,9 @@ void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); u8 GetCurrentMapType(void); +u8 get_map_light_from_warp0(void); +const struct MapHeader *warp1_get_mapheader(void); + void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/quest_log.h b/include/quest_log.h index 858ea593a..0690dd282 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -32,6 +32,7 @@ void sub_8112EDC(u8 a0); u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); +void sub_8111CF0(void); extern u8 gUnknown_203ADFA; diff --git a/include/start_menu.h b/include/start_menu.h index f5b38ee5e..c4a3ce19d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -4,5 +4,7 @@ #include "global.h" void AppendToList(u8* list, u8* pos, u8 newEntry); +void sub_806F1F0(u8 taskId); +void sub_806F1D4(void); #endif // GUARD_START_MENU_H diff --git a/ld_script.txt b/ld_script.txt index 7952b2cd8..6aa4426c1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -119,6 +119,7 @@ SECTIONS { src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); + src/field_fadetransition.o(.text); asm/field_fadetransition.o(.text); asm/field_screen_effect.o(.text); asm/battle_setup.o(.text); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c new file mode 100644 index 000000000..50f7fe8c9 --- /dev/null +++ b/src/field_fadetransition.c @@ -0,0 +1,488 @@ +#include "global.h" +#include "palette.h" +#include "field_fadetransition.h" +#include "overworld.h" +#include "fldeff.h" +#include "field_weather.h" +#include "map_preview_screen.h" +#include "field_player_avatar.h" +#include "task.h" +#include "script.h" +#include "cable_club.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "quest_log.h" +#include "link.h" +#include "map_obj_80688E4.h" +#include "sound.h" +#include "field_door.h" +#include "field_screen_effect.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "map_obj_lock.h" +#include "start_menu.h" +#include "constants/songs.h" + +void sub_807DF4C(u8 a0); +void sub_807DFBC(u8 taskId); +void task_map_chg_seq_0807E20C(u8 taskId); +void task_map_chg_seq_0807E2CC(u8 taskId); +void sub_807E31C(u8 taskId); +void sub_807EC34(u8 taskId); +void sub_807F204(u8 taskId); + +void palette_bg_faded_fill_white(void) +{ + CpuFastFill16(RGB_WHITE, gPlttBufferFaded, 0x400); +} + +void palette_bg_faded_fill_black(void) +{ + CpuFastFill16(RGB_BLACK, gPlttBufferFaded, 0x400); +} + +void pal_fill_for_maplights(void) +{ + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + fade_screen(0, 0); + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + fade_screen(2, 0); + palette_bg_faded_fill_white(); + break; + } +} + +void sub_807DBAC(void) +{ + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + fade_screen(0, 3); + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + fade_screen(2, 3); + palette_bg_faded_fill_white(); + break; + } +} + +void sub_807DC00(void) +{ + palette_bg_faded_fill_black(); + fade_screen(0, 0); + palette_bg_faded_fill_black(); +} + +void sub_807DC18(void) +{ + const struct MapHeader *header = warp1_get_mapheader(); + if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE)) + fade_screen(1, 0); + else + { + switch (sub_80C9D7C(GetCurrentMapType(), header->mapType)) + { + case 0: + fade_screen(1, 0); + break; + case 1: + fade_screen(3, 0); + break; + } + } +} + +void sub_807DC70(void) +{ + switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType)) + { + case 0: + fade_screen(1, 3); + break; + case 1: + fade_screen(3, 3); + break; + } +} + +void sub_807DCB0(bool8 arg) +{ + sub_805CB04(!arg); +} + +void task0A_nop_for_a_while(u8 taskId) +{ + if (sub_807E418() == TRUE) + DestroyTask(taskId); +} + +void sub_807DCE4(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task0A_nop_for_a_while, 10); +} + +void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} + +void FieldCallback_ReturnToEventScript2(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void sub_807DD44(void) +{ + ScriptContext2_Enable(); + sub_807DC00(); + CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); +} + +void task_mpl_807DD60(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + task->data[1] = sub_8081150(); + task->data[0]++; + break; + case 1: + if (gTasks[task->data[1]].isActive != TRUE) + { + pal_fill_for_maplights(); + task->data[0]++; + } + break; + case 2: + if (sub_807E418() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807DDD0(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_faded_fill_black(); + CreateTask(task_mpl_807DD60, 10); +} + +void sub_807DDF0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + sub_800AB9C(); + task->data[0]++; + break; + case 1: + if (IsLinkTaskFinished()) + { + pal_fill_for_maplights(); + task->data[0]++; + } + break; + case 2: + if (sub_807E418() == TRUE) + { + sub_8009FE8(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807DE58(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + palette_bg_faded_fill_black(); + CreateTask(sub_807DDF0, 10); +} + +void sub_807DE78(bool8 a0) +{ + s16 x, y; + u32 behavior; + TaskFunc func; + + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsWarpDoor_2(behavior) == TRUE) + { + func = sub_807DFBC; + switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) + { + case 0: + palette_bg_faded_fill_black(); + break; + case 1: + palette_bg_faded_fill_white(); + break; + } + } + else + { + sub_807DF4C(a0); + if (MetatileBehavior_IsCaveDoor(behavior) == TRUE) + func = task_map_chg_seq_0807E20C; + else if (MetatileBehavior_IsUnknownWarp6C_to_6F(behavior) == TRUE) + { + u8 tmp = gUnknown_2031DE0; + func = task_map_chg_seq_0807E2CC; + if (!tmp) + func = sub_807EC34; + } + else + func = task_map_chg_seq_0807E2CC; + } + gUnknown_2031DE0 = FALSE; + CreateTask(func, 10); +} + +void sub_807DF4C(bool8 a0) +{ + if (!a0) + pal_fill_for_maplights(); + else + sub_807DC00(); +} + +void sub_807DF64(void) +{ + Overworld_PlaySpecialMapMusic(); + sub_8111CF0(); + sub_807DE78(FALSE); + ScriptContext2_Enable(); +} + +void sub_807DF7C(void) +{ + Overworld_PlaySpecialMapMusic(); + sub_8111CF0(); + sub_807DE78(TRUE); + ScriptContext2_Enable(); +} + +void sub_807DF94(void) +{ + Overworld_PlaySpecialMapMusic(); + pal_fill_for_maplights(); + sub_8111CF0(); + PlaySE(SE_RU_GASHIN); + CreateTask(sub_807E31C, 10); + ScriptContext2_Enable(); +} + +void sub_807DFBC(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + if (task->data[0] == 0) + task->data[0] = 5; + + switch (task->data[0]) + { + case 0: // Never reached + sub_807DCB0(0); + player_bitmagic(); + PlayerGetDestCoords(x, y); + FieldSetDoorOpened(*x, *y); + task->data[0] = 1; + break; + case 5: + sub_807DCB0(0); + player_bitmagic(); + sub_807F114(); + sub_807DBAC(); + task->data[0] = 6; + break; + case 6: + task->data[15]++; + if (task->data[15] == 25) + { + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y)); + FieldAnimateDoorOpen(*x, *y); + task->data[0] = 7; + } + break; + case 7: + if (!FieldIsDoorAnimationRunning()) + { + PlayerGetDestCoords(&task->data[12], &task->data[13]); + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 16); + task->data[0] = 8; + } + break; + case 8: + task->data[14]++; + if (task->data[14] == 14) + { + FieldAnimateDoorClose(task->data[12], task->data[13]); + task->data[0] = 9; + } + break; + case 9: + if (sub_807E418() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(sub_807F204)) + { + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + task->data[0] = 4; + } + break; + // Legacy RS + case 1: + if (sub_807E418()) + { + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 16); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[1] = FieldAnimateDoorClose(*x, *y); + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + task->data[0] = 4; + break; + case 4: + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E20C(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->data[0]) + { + case 0: + sub_807DCB0(0); + player_bitmagic(); + PlayerGetDestCoords(x, y); + task->data[0] = 1; + break; + case 1: + if (sub_807E418()) + { + sub_807DCB0(TRUE); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], sub_8063F84(GetPlayerFacingDirection())); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[0] = 3; + } + break; + case 3: + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void task_map_chg_seq_0807E2CC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_807E418()) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E31C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + sub_805DC04(); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_807E418() && sub_805DC24() != TRUE) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E378(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + DestroyTask(taskId); + CreateTask(sub_806F1F0, 80); + } +} + +void sub_807E3A0(void) +{ + sub_807DC00(); + CreateTask(sub_807E378, 80); + ScriptContext2_Enable(); +} + +bool32 sub_807E3BC(void) +{ + sub_806F1D4(); + return FALSE; +} From 3a6b6bf9e99ecdeb9c39c2a320252c1b57c2b275 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Sep 2019 10:50:41 -0400 Subject: [PATCH 051/100] Finish field_fadetransition --- asm/field_fadetransition.s | 1306 --------------------------------- include/field_effect.h | 4 + include/field_map_obj.h | 3 + include/field_player_avatar.h | 2 + include/link.h | 1 + include/map_preview_screen.h | 1 + include/overworld.h | 2 + ld_script.txt | 3 +- src/field_fadetransition.c | 478 ++++++++++++ src/map_preview_screen.c | 2 +- 10 files changed, 493 insertions(+), 1309 deletions(-) delete mode 100644 asm/field_fadetransition.s diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s deleted file mode 100644 index 0c248ba6c..000000000 --- a/asm/field_fadetransition.s +++ /dev/null @@ -1,1306 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start task_mpl_807E3C8 -task_mpl_807E3C8: @ 807E3C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807E418 - cmp r0, 0x1 - bne _0807E3E4 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - bl sub_80696C0 -_0807E3E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task_mpl_807E3C8 - - thumb_func_start sub_807E3EC -sub_807E3EC: @ 807E3EC - push {lr} - bl ScriptContext2_Enable - bl Overworld_PlaySpecialMapMusic - bl sub_807DC00 - ldr r0, _0807E408 @ =task_mpl_807E3C8 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E408: .4byte task_mpl_807E3C8 - thumb_func_end sub_807E3EC - - thumb_func_start sub_807E40C -sub_807E40C: @ 807E40C - ldr r0, _0807E414 @ =gPaletteFade - ldrb r0, [r0, 0x7] - lsrs r0, 7 - bx lr - .align 2, 0 -_0807E414: .4byte gPaletteFade - thumb_func_end sub_807E40C - - thumb_func_start sub_807E418 -sub_807E418: @ 807E418 - push {lr} - bl sub_807AA70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807E432 - bl sub_80F83B0 - cmp r0, 0 - beq _0807E432 - movs r0, 0x1 - b _0807E434 -_0807E432: - movs r0, 0 -_0807E434: - pop {r1} - bx r1 - thumb_func_end sub_807E418 - - thumb_func_start DoWarp -DoWarp: @ 807E438 - push {lr} - bl ScriptContext2_Enable - bl sub_8055F88 - bl sub_807DC18 - bl PlayRainStoppingSoundEffect - movs r0, 0x9 - bl PlaySE - ldr r0, _0807E464 @ =gFieldCallback - ldr r1, _0807E468 @ =sub_807DF64 - str r1, [r0] - ldr r0, _0807E46C @ =sub_807E718 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E464: .4byte gFieldCallback -_0807E468: .4byte sub_807DF64 -_0807E46C: .4byte sub_807E718 - thumb_func_end DoWarp - - thumb_func_start DoDiveWarp -DoDiveWarp: @ 807E470 - push {lr} - bl ScriptContext2_Enable - bl sub_8055F88 - bl sub_807DC18 - bl PlayRainStoppingSoundEffect - ldr r0, _0807E494 @ =gFieldCallback - ldr r1, _0807E498 @ =sub_807DF64 - str r1, [r0] - ldr r0, _0807E49C @ =sub_807E718 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E494: .4byte gFieldCallback -_0807E498: .4byte sub_807DF64 -_0807E49C: .4byte sub_807E718 - thumb_func_end DoDiveWarp - - thumb_func_start sub_807E4A0 -sub_807E4A0: @ 807E4A0 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _0807E4D4 @ =sub_807E980 - adds r0, r6, 0 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807E4D8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0x26] - bl _call_via_r6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807E4D4: .4byte sub_807E980 -_0807E4D8: .4byte gTasks - thumb_func_end sub_807E4A0 - - thumb_func_start DoDoorWarp -DoDoorWarp: @ 807E4DC - push {lr} - bl ScriptContext2_Enable - ldr r0, _0807E4F4 @ =gFieldCallback - ldr r1, _0807E4F8 @ =sub_807DF64 - str r1, [r0] - ldr r0, _0807E4FC @ =sub_807E80C - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E4F4: .4byte gFieldCallback -_0807E4F8: .4byte sub_807DF64 -_0807E4FC: .4byte sub_807E80C - thumb_func_end DoDoorWarp - - thumb_func_start sub_807E500 -sub_807E500: @ 807E500 - push {lr} - bl ScriptContext2_Enable - ldr r0, _0807E518 @ =sub_807E718 - movs r1, 0xA - bl CreateTask - ldr r1, _0807E51C @ =gFieldCallback - ldr r0, _0807E520 @ =sub_807DF94 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0807E518: .4byte sub_807E718 -_0807E51C: .4byte gFieldCallback -_0807E520: .4byte sub_807DF94 - thumb_func_end sub_807E500 - - thumb_func_start sub_807E524 -sub_807E524: @ 807E524 - push {lr} - bl ScriptContext2_Enable - ldr r0, _0807E53C @ =gFieldCallback - ldr r1, _0807E540 @ =sub_807DF64 - str r1, [r0] - ldr r0, _0807E544 @ =sub_807E784 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E53C: .4byte gFieldCallback -_0807E540: .4byte sub_807DF64 -_0807E544: .4byte sub_807E784 - thumb_func_end sub_807E524 - - thumb_func_start DoFallWarp -DoFallWarp: @ 807E548 - push {lr} - bl DoDiveWarp - ldr r1, _0807E558 @ =gFieldCallback - ldr r0, _0807E55C @ =sub_8084454 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0807E558: .4byte gFieldCallback -_0807E55C: .4byte sub_8084454 - thumb_func_end DoFallWarp - - thumb_func_start sub_807E560 -sub_807E560: @ 807E560 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - adds r0, r4, 0 - movs r1, 0xA - bl sub_8084784 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807E560 - - thumb_func_start sub_807E57C -sub_807E57C: @ 807E57C - push {lr} - bl ScriptContext2_Enable - movs r0, 0xA - bl sub_8084F2C - pop {r0} - bx r0 - thumb_func_end sub_807E57C - - thumb_func_start sub_807E58C -sub_807E58C: @ 807E58C - push {lr} - bl ScriptContext2_Enable - movs r0, 0xA - bl sub_80853CC - pop {r0} - bx r0 - thumb_func_end sub_807E58C - - thumb_func_start sub_807E59C -sub_807E59C: @ 807E59C - push {lr} - bl ScriptContext2_Enable - bl sub_8055F88 - ldr r0, _0807E5B8 @ =sub_807E784 - movs r1, 0xA - bl CreateTask - ldr r1, _0807E5BC @ =gFieldCallback - ldr r0, _0807E5C0 @ =sub_807DF94 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0807E5B8: .4byte sub_807E784 -_0807E5BC: .4byte gFieldCallback -_0807E5C0: .4byte sub_807DF94 - thumb_func_end sub_807E59C - - thumb_func_start sub_807E5C4 -sub_807E5C4: @ 807E5C4 - push {lr} - bl ScriptContext2_Enable - bl sub_807DC18 - ldr r0, _0807E5E0 @ =sub_807E718 - movs r1, 0xA - bl CreateTask - ldr r1, _0807E5E4 @ =gFieldCallback - ldr r0, _0807E5E8 @ =nullsub_60 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0807E5E0: .4byte sub_807E718 -_0807E5E4: .4byte gFieldCallback -_0807E5E8: .4byte nullsub_60 - thumb_func_end sub_807E5C4 - - thumb_func_start sub_807E5EC -sub_807E5EC: @ 807E5EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807E610 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807E620 - cmp r0, 0x1 - bgt _0807E614 - cmp r0, 0 - beq _0807E61A - b _0807E64A - .align 2, 0 -_0807E610: .4byte gTasks -_0807E614: - cmp r0, 0x2 - beq _0807E63A - b _0807E64A -_0807E61A: - bl ScriptContext2_Enable - b _0807E632 -_0807E620: - bl sub_807E40C - cmp r0, 0 - bne _0807E64A - bl sub_8055FC4 - lsls r0, 24 - cmp r0, 0 - beq _0807E64A -_0807E632: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807E64A -_0807E63A: - bl WarpIntoMap - ldr r0, _0807E650 @ =sub_8056788 - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0807E64A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E650: .4byte sub_8056788 - thumb_func_end sub_807E5EC - - thumb_func_start sub_807E654 -sub_807E654: @ 807E654 - push {lr} - bl ScriptContext2_Enable - bl sub_8055F88 - bl sub_807DC18 - movs r0, 0x9 - bl PlaySE - ldr r0, _0807E674 @ =sub_807E5EC - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E674: .4byte sub_807E5EC - thumb_func_end sub_807E654 - - thumb_func_start sub_807E678 -sub_807E678: @ 807E678 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807E69C @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807E6BE - cmp r0, 0x1 - bgt _0807E6A0 - cmp r0, 0 - beq _0807E6A6 - b _0807E6F4 - .align 2, 0 -_0807E69C: .4byte gTasks+0x8 -_0807E6A0: - cmp r0, 0x2 - beq _0807E6DC - b _0807E6F4 -_0807E6A6: - bl sub_800A068 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - bl sub_8055F88 - movs r0, 0x9 - bl PlaySE - b _0807E6D4 -_0807E6BE: - bl sub_807E40C - cmp r0, 0 - bne _0807E6F4 - bl sub_8055FC4 - lsls r0, 24 - cmp r0, 0 - beq _0807E6F4 - bl sub_800AAC0 -_0807E6D4: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0807E6F4 -_0807E6DC: - ldr r0, _0807E6FC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0807E6F4 - bl WarpIntoMap - ldr r0, _0807E700 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0807E6F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E6FC: .4byte gReceivedRemoteLinkPlayers -_0807E700: .4byte CB2_LoadMap - thumb_func_end sub_807E678 - - thumb_func_start sub_807E704 -sub_807E704: @ 807E704 - push {lr} - ldr r0, _0807E714 @ =sub_807E678 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E714: .4byte sub_807E678 - thumb_func_end sub_807E704 - - thumb_func_start sub_807E718 -sub_807E718: @ 807E718 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807E73C @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807E750 - cmp r0, 0x1 - bgt _0807E740 - cmp r0, 0 - beq _0807E746 - b _0807E77A - .align 2, 0 -_0807E73C: .4byte gTasks -_0807E740: - cmp r0, 0x2 - beq _0807E76A - b _0807E77A -_0807E746: - bl player_bitmagic - bl ScriptContext2_Enable - b _0807E762 -_0807E750: - bl sub_807E40C - cmp r0, 0 - bne _0807E77A - bl sub_8055FC4 - lsls r0, 24 - cmp r0, 0 - beq _0807E77A -_0807E762: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807E77A -_0807E76A: - bl WarpIntoMap - ldr r0, _0807E780 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0807E77A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E780: .4byte CB2_LoadMap - thumb_func_end sub_807E718 - - thumb_func_start sub_807E784 -sub_807E784: @ 807E784 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807E7A8 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807E7CA - cmp r0, 0x1 - bgt _0807E7AC - cmp r0, 0 - beq _0807E7B6 - b _0807E802 - .align 2, 0 -_0807E7A8: .4byte gTasks -_0807E7AC: - cmp r0, 0x2 - beq _0807E7D8 - cmp r0, 0x3 - beq _0807E7F2 - b _0807E802 -_0807E7B6: - bl player_bitmagic - bl ScriptContext2_Enable - movs r0, 0x27 - bl PlaySE - bl sub_805DAB0 - b _0807E7EA -_0807E7CA: - bl sub_805DAD0 - cmp r0, 0 - bne _0807E802 - bl sub_807DC18 - b _0807E7EA -_0807E7D8: - bl sub_807E40C - cmp r0, 0 - bne _0807E802 - bl sub_8055FC4 - lsls r0, 24 - cmp r0, 0 - beq _0807E802 -_0807E7EA: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0807E802 -_0807E7F2: - bl WarpIntoMap - ldr r0, _0807E808 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0807E802: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E808: .4byte CB2_LoadMap - thumb_func_end sub_807E784 - - thumb_func_start sub_807E80C -sub_807E80C: @ 807E80C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0807E83C @ =gTasks - adds r5, r1, r0 - adds r4, r5, 0 - adds r4, 0xC - adds r6, r5, 0 - adds r6, 0xE - movs r2, 0x8 - ldrsh r1, [r5, r2] - adds r2, r0, 0 - cmp r1, 0x5 - bls _0807E830 - b _0807E976 -_0807E830: - lsls r0, r1, 2 - ldr r1, _0807E840 @ =_0807E844 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807E83C: .4byte gTasks -_0807E840: .4byte _0807E844 - .align 2, 0 -_0807E844: - .4byte _0807E85C - .4byte _0807E898 - .4byte _0807E8F4 - .4byte _0807E940 - .4byte _0807E95C - .4byte _0807E966 -_0807E85C: - bl player_bitmagic - adds r0, r4, 0 - adds r1, r6, 0 - bl PlayerGetDestCoords - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl GetDoorSoundEffect - lsls r0, 16 - lsrs r0, 16 - bl PlaySE - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl FieldAnimateDoorOpen - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0x1 - strh r0, [r5, 0x8] - b _0807E976 -_0807E898: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _0807E8AE - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _0807E976 -_0807E8AE: - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r4, _0807E8F0 @ =gMapObjects - adds r0, r4 - bl FieldObjectClearAnimIfSpecialAnimActive - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x11 - bl FieldObjectSetHeldMovement - movs r0, 0x2 - strh r0, [r5, 0x8] - b _0807E976 - .align 2, 0 -_0807E8F0: .4byte gMapObjects -_0807E8F4: - bl walkrun_is_standing_still - lsls r0, 24 - cmp r0, 0 - beq _0807E976 - movs r2, 0 - ldrsh r0, [r4, r2] - movs r2, 0 - ldrsh r1, [r6, r2] - subs r1, 0x1 - bl FieldAnimateDoorClose - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - bl GetFieldObjectIdByLocalIdAndMap - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E93C @ =gMapObjects - adds r0, r1 - bl FieldObjectClearHeldMovementIfFinished - movs r0, 0 - bl sub_807DCB0 - movs r0, 0x3 - strh r0, [r5, 0x8] - b _0807E976 - .align 2, 0 -_0807E93C: .4byte gMapObjects -_0807E940: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _0807E956 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - beq _0807E976 -_0807E956: - movs r0, 0x4 - strh r0, [r5, 0x8] - b _0807E976 -_0807E95C: - bl sub_8055F88 - bl sub_807DC18 - b _0807E96A -_0807E966: - bl sub_8055F88 -_0807E96A: - bl PlayRainStoppingSoundEffect - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _0807E97C @ =sub_807E718 - str r0, [r5] -_0807E976: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807E97C: .4byte sub_807E718 - thumb_func_end sub_807E80C - - thumb_func_start sub_807E980 -sub_807E980: @ 807E980 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0807E9C0 @ =gTasks+0x8 - adds r5, r0, r1 - ldr r2, _0807E9C4 @ =gPlayerAvatar - ldrb r1, [r2, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E9C8 @ =gMapObjects - adds r6, r0, r1 - ldrb r1, [r2, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807E9CC @ =gSprites - adds r7, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0807E9E8 - cmp r0, 0x1 - bgt _0807E9D0 - cmp r0, 0 - beq _0807E9DA - b _0807EA9A - .align 2, 0 -_0807E9C0: .4byte gTasks+0x8 -_0807E9C4: .4byte gPlayerAvatar -_0807E9C8: .4byte gMapObjects -_0807E9CC: .4byte gSprites -_0807E9D0: - cmp r0, 0x2 - beq _0807EA38 - cmp r0, 0x3 - beq _0807EA66 - b _0807EA9A -_0807E9DA: - bl ScriptContext2_Enable - bl player_bitmagic - bl CameraObjectReset2 - b _0807EA92 -_0807E9E8: - adds r0, r6, 0 - bl FieldObjectIsMovementOverridden - lsls r0, 24 - cmp r0, 0 - beq _0807EA00 - adds r0, r6, 0 - bl FieldObjectClearHeldMovementIfFinished - lsls r0, 24 - cmp r0, 0 - beq _0807EAB0 -_0807EA00: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _0807EA10 - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] - b _0807EAB0 -_0807EA10: - bl sub_8055F88 - bl PlayRainStoppingSoundEffect - ldrb r1, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r7, 0x5] - ldrh r0, [r5, 0x2] - adds r1, r5, 0x4 - adds r2, r5, 0x6 - bl sub_807EB64 - movs r0, 0x9 - bl PlaySE - b _0807EA92 -_0807EA38: - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - adds r2, r5, 0 - adds r2, 0x8 - adds r3, r5, 0 - adds r3, 0xA - adds r4, r5, 0 - adds r4, 0xC - str r4, [sp] - bl sub_807EAC4 - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _0807EAB0 - bl sub_807DC18 - b _0807EA92 -_0807EA66: - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - adds r2, r5, 0 - adds r2, 0x8 - adds r3, r5, 0 - adds r3, 0xA - adds r4, r5, 0 - adds r4, 0xC - str r4, [sp] - bl sub_807EAC4 - bl sub_807E40C - cmp r0, 0 - bne _0807EAB0 - bl sub_8055FC4 - lsls r0, 24 - cmp r0, 0 - beq _0807EAB0 -_0807EA92: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _0807EAB0 -_0807EA9A: - ldr r0, _0807EAB8 @ =gFieldCallback - ldr r1, _0807EABC @ =sub_807DF64 - str r1, [r0] - bl WarpIntoMap - ldr r0, _0807EAC0 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0807EAB0: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807EAB8: .4byte gFieldCallback -_0807EABC: .4byte sub_807DF64 -_0807EAC0: .4byte CB2_LoadMap - thumb_func_end sub_807E980 - - thumb_func_start sub_807EAC4 -sub_807EAC4: @ 807EAC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r2, 0 - adds r5, r3, 0 - ldr r6, [sp, 0x18] - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - ldr r3, _0807EB58 @ =gPlayerAvatar - ldrb r2, [r3, 0x4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _0807EB5C @ =gSprites - adds r7, r0, r2 - ldrb r2, [r3, 0x5] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0807EB60 @ =gMapObjects - adds r0, r2 - mov r8, r0 - lsls r1, 16 - asrs r1, 16 - cmp r1, 0 - bgt _0807EB02 - movs r2, 0 - ldrsh r0, [r6, r2] - cmp r0, 0x6 - ble _0807EB08 -_0807EB02: - ldrh r0, [r5] - adds r0, r1, r0 - strh r0, [r5] -_0807EB08: - mov r1, r12 - lsls r0, r1, 16 - asrs r0, 16 - ldrh r2, [r4] - adds r0, r2 - strh r0, [r4] - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - ldrh r0, [r4] - lsls r0, 16 - asrs r0, 21 - strh r0, [r7, 0x24] - ldrh r0, [r5] - lsls r0, 16 - asrs r0, 21 - strh r0, [r7, 0x26] - mov r1, r8 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - beq _0807EB4C - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - bl GetStepInPlaceDelay16AnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl FieldObjectForceSetSpecialAnim -_0807EB4C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807EB58: .4byte gPlayerAvatar -_0807EB5C: .4byte gSprites -_0807EB60: .4byte gMapObjects - thumb_func_end sub_807EAC4 - - thumb_func_start sub_807EB64 -sub_807EB64: @ 807EB64 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _0807EBB4 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0807EBB8 @ =gMapObjects - adds r4, r0 - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - bl GetStepInPlaceDelay16AnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectForceSetSpecialAnim - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, r8 - bl sub_807EBBC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807EBB4: .4byte gPlayerAvatar -_0807EBB8: .4byte gMapObjects - thumb_func_end sub_807EB64 - - thumb_func_start sub_807EBBC -sub_807EBBC: @ 807EBBC - push {r4-r7,lr} - adds r5, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - adds r0, r4, 0 - bl MetatileBehavior_IsUnknownWarp6C - lsls r0, 24 - cmp r0, 0 - beq _0807EBE0 - movs r0, 0x10 - strh r0, [r5] - movs r1, 0xA - negs r1, r1 - adds r0, r1, 0 - b _0807EC2A -_0807EBE0: - adds r0, r4, 0 - bl MetatileBehavior_IsUnknownWarp6D - lsls r0, 24 - cmp r0, 0 - beq _0807EBFA - movs r1, 0x11 - negs r1, r1 - adds r0, r1, 0 - strh r0, [r5] - adds r1, 0x7 - adds r0, r1, 0 - b _0807EC2A -_0807EBFA: - adds r0, r4, 0 - bl MetatileBehavior_IsUnknownWarp6E - lsls r0, 24 - cmp r0, 0 - beq _0807EC0E - movs r0, 0x11 - strh r0, [r5] - movs r0, 0x3 - b _0807EC2A -_0807EC0E: - adds r0, r7, 0 - bl MetatileBehavior_IsUnknownWarp6F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807EC28 - movs r1, 0x11 - negs r1, r1 - adds r0, r1, 0 - strh r0, [r5] - movs r0, 0x3 - b _0807EC2A -_0807EC28: - strh r0, [r5] -_0807EC2A: - strh r0, [r6] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807EBBC - - thumb_func_start sub_807EC34 -sub_807EC34: @ 807EC34 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0807EC6C @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0807EC70 - cmp r0, 0x1 - beq _0807EC92 - bl sub_807E418 - cmp r0, 0x1 - bne _0807ECB2 - bl CameraObjectReset1 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - b _0807ECB2 - .align 2, 0 -_0807EC6C: .4byte gTasks+0x8 -_0807EC70: - bl Overworld_PlaySpecialMapMusic - bl pal_fill_for_maplights - bl ScriptContext2_Enable - adds r0, r5, 0x2 - adds r1, r5, 0x4 - adds r2, r5, 0x6 - adds r3, r5, 0 - adds r3, 0x8 - adds r4, r5, 0 - adds r4, 0xA - str r4, [sp] - bl sub_807ECBC - b _0807ECAC -_0807EC92: - adds r0, r5, 0x2 - adds r1, r5, 0x4 - adds r2, r5, 0x6 - adds r3, r5, 0 - adds r3, 0x8 - adds r4, r5, 0 - adds r4, 0xA - str r4, [sp] - bl sub_807EDA0 - lsls r0, 24 - cmp r0, 0 - bne _0807ECB2 -_0807ECAC: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_0807ECB2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807EC34 - - thumb_func_start sub_807ECBC -sub_807ECBC: @ 807ECBC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r0, 0 - adds r5, r1, 0 - mov r9, r2 - mov r10, r3 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl MetatileBehavior_IsUnknownWarp6E - lsls r0, 24 - cmp r0, 0 - bne _0807ED06 - adds r0, r6, 0 - bl MetatileBehavior_IsUnknownWarp6C - lsls r0, 24 - cmp r0, 0 - beq _0807ED0A -_0807ED06: - movs r1, 0x3 - b _0807ED0C -_0807ED0A: - movs r1, 0x4 -_0807ED0C: - ldr r0, _0807ED94 @ =gPlayerAvatar - mov r8, r0 - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0807ED98 @ =gMapObjects - adds r4, r0 - adds r0, r1, 0 - bl sub_8064270 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectForceSetSpecialAnim - adds r0, r6, 0 - adds r1, r7, 0 - adds r2, r5, 0 - bl sub_807EBBC - movs r1, 0 - ldrsh r0, [r7, r1] - lsls r0, 4 - mov r2, r9 - strh r0, [r2] - movs r1, 0 - ldrsh r0, [r5, r1] - lsls r0, 4 - mov r2, r10 - strh r0, [r2] - movs r1, 0x10 - ldr r0, [sp, 0x24] - strh r1, [r0] - mov r1, r8 - ldrb r0, [r1, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0807ED9C @ =gSprites - adds r1, r0 - mov r2, r9 - ldrh r0, [r2] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - mov r2, r10 - ldrh r0, [r2] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x26] - movs r1, 0 - ldrsh r0, [r7, r1] - negs r0, r0 - strh r0, [r7] - movs r2, 0 - ldrsh r0, [r5, r2] - negs r0, r0 - strh r0, [r5] - 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 -_0807ED94: .4byte gPlayerAvatar -_0807ED98: .4byte gMapObjects -_0807ED9C: .4byte gSprites - thumb_func_end sub_807ECBC - - thumb_func_start sub_807EDA0 -sub_807EDA0: @ 807EDA0 - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, [sp, 0x14] - ldr r0, _0807EDC8 @ =gPlayerAvatar - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0807EDCC @ =gSprites - adds r1, r0, r1 - movs r7, 0 - ldrsh r0, [r4, r7] - cmp r0, 0 - bne _0807EDD0 - strh r0, [r1, 0x24] - strh r0, [r1, 0x26] - movs r0, 0 - b _0807EDF8 - .align 2, 0 -_0807EDC8: .4byte gPlayerAvatar -_0807EDCC: .4byte gSprites -_0807EDD0: - ldrh r0, [r5] - ldrh r5, [r2] - adds r0, r5 - strh r0, [r2] - ldrh r0, [r6] - ldrh r7, [r3] - adds r0, r7 - strh r0, [r3] - ldrh r0, [r2] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - ldrh r0, [r3] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x26] - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - movs r0, 0x1 -_0807EDF8: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_807EDA0 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/field_effect.h b/include/field_effect.h index 0ab2d0475..8c89f8c9c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -85,5 +85,9 @@ void FieldEffectActiveListRemove(u8 id); void sub_8085620(void); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); +void sub_8084454(void); +void sub_8084784(u8 a0, u8 a1); +void sub_8084F2C(u8 a0); +void sub_80853CC(u8 a0); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 7228b9318..baed87ac6 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -52,9 +52,12 @@ u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); void sub_8093038(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); +void CameraObjectReset2(void); void FieldObjectSetGraphicsId(struct MapObject *, u8); void FieldObjectTurn(struct MapObject *, u8); void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +void FieldObjectForceSetSpecialAnim(struct MapObject *, u8); +u8 sub_8064270(u8 a0); const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); void gpu_pal_allocator_reset__manage_upper_four(void); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 00a3b7978..2c408afc9 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -30,6 +30,8 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); void sub_805CB04(bool8); void sub_805DC04(void); +void sub_805DAB0(void); +bool32 sub_805DAD0(void); bool32 sub_805DC24(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/link.h b/include/link.h index 950c48d3f..d5d3f08a3 100644 --- a/include/link.h +++ b/include/link.h @@ -214,5 +214,6 @@ void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); +void sub_800A068(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 71015aacf..5ab5584e5 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -48,5 +48,6 @@ u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); +bool32 sub_80F83B0(void); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 2b6013217..92b0f6001 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -135,6 +135,8 @@ u8 GetCurrentMapType(void); u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); +void sub_8055F88(void); +void sub_8056788(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/ld_script.txt b/ld_script.txt index 6aa4426c1..131b6b4e9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -119,8 +119,7 @@ SECTIONS { src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); - src/field_fadetransition.o(.text); - asm/field_fadetransition.o(.text); + src/field_fadetransition.o(.text);; asm/field_screen_effect.o(.text); asm/battle_setup.o(.text); asm/cable_club.o(.text); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 50f7fe8c9..fc40d6258 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -16,9 +16,11 @@ #include "map_obj_80688E4.h" #include "sound.h" #include "field_door.h" +#include "field_effect.h" #include "field_screen_effect.h" #include "field_map_obj.h" #include "field_map_obj_helpers.h" +#include "field_specials.h" #include "map_obj_lock.h" #include "start_menu.h" #include "constants/songs.h" @@ -28,7 +30,16 @@ void sub_807DFBC(u8 taskId); void task_map_chg_seq_0807E20C(u8 taskId); void task_map_chg_seq_0807E2CC(u8 taskId); void sub_807E31C(u8 taskId); +void sub_807E718(u8 taskId); +void sub_807E784(u8 taskId); +void sub_807E80C(u8 taskId); +void sub_807E980(u8 taskId); +void sub_807EB64(u16, s16*, s16*); +void sub_807EBBC(u8 a0, s16 *a1, s16 *a2); +void sub_807EAC4(s16, s16, s16*, s16*, s16*); void sub_807EC34(u8 taskId); +void sub_807ECBC(s16 *, s16 *, s16 *, s16 *, s16 *); +bool8 sub_807EDA0(s16 *, s16 *, s16 *, s16 *, s16 *); void sub_807F204(u8 taskId); void palette_bg_faded_fill_white(void) @@ -486,3 +497,470 @@ bool32 sub_807E3BC(void) sub_806F1D4(); return FALSE; } + +void task_mpl_807E3C8(u8 taskId) +{ + if (sub_807E418() == TRUE) + { + ScriptContext2_Disable(); + DestroyTask(taskId); + sub_80696C0(); + } +} + +void sub_807E3EC(void) +{ + ScriptContext2_Enable(); + Overworld_PlaySpecialMapMusic(); + sub_807DC00(); + CreateTask(task_mpl_807E3C8, 10); +} + +bool32 sub_807E40C(void) +{ + return gPaletteFade.active; +} + +bool32 sub_807E418(void) +{ + if (sub_807AA70() == TRUE && sub_80F83B0()) + return TRUE; + else + return FALSE; +} + +void DoWarp(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + PlaySE(SE_KAIDAN); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E718, 10); +} + +void DoDiveWarp(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E718, 10); +} + +void sub_807E4A0(u16 a, u16 b) +{ + u8 taskId = CreateTask(sub_807E980, 10); + gTasks[taskId].data[1] = a; + gTasks[taskId].data[15] = b; + sub_807E980(taskId); +} + +void DoDoorWarp(void) +{ + ScriptContext2_Enable(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E80C, 10); +} + +void sub_807E500(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_807E718, 10); + gFieldCallback = sub_807DF94; +} + +void sub_807E524(void) +{ + ScriptContext2_Enable(); + gFieldCallback = sub_807DF64; + CreateTask(sub_807E784, 10); +} + +void DoFallWarp(void) +{ + DoDiveWarp(); + gFieldCallback = sub_8084454; +} + +void sub_807E560(u8 a0) +{ + ScriptContext2_Enable(); + sub_8084784(a0, 10); +} + +void sub_807E57C(void) +{ + ScriptContext2_Enable(); + sub_8084F2C(10); +} + +void sub_807E58C(void) +{ + ScriptContext2_Enable(); + sub_80853CC(10); +} + +void sub_807E59C(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + CreateTask(sub_807E784, 10); + gFieldCallback = sub_807DF94; +} + +void sub_807E5C4(void) +{ + ScriptContext2_Enable(); + sub_807DC18(); + CreateTask(sub_807E718, 10); + gFieldCallback = nullsub_60; +} + +void sub_807E5EC(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 2: + WarpIntoMap(); + SetMainCallback2(sub_8056788); + DestroyTask(taskId); + break; + } +} + +void sub_807E654(void) +{ + ScriptContext2_Enable(); + sub_8055F88(); + sub_807DC18(); + PlaySE(SE_KAIDAN); + CreateTask(sub_807E5EC, 10); +} + +void sub_807E678(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + switch (data[0]) + { + case 0: + sub_800A068(); + fade_screen(1, 0); + sub_8055F88(); + PlaySE(SE_KAIDAN); + data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + { + sub_800AAC0(); + data[0]++; + } + break; + case 2: + if (gReceivedRemoteLinkPlayers == 0) + { + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + } + break; + } +} + +void sub_807E704(void) +{ + CreateTask(sub_807E678, 10); +} + +void sub_807E718(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + task->data[0]++; + break; + case 1: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 2: + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +void sub_807E784(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + ScriptContext2_Enable(); + PlaySE(SE_FU_ZUZUZU); + sub_805DAB0(); + task->data[0]++; + break; + case 1: + if (!sub_805DAD0()) + { + sub_807DC18(); + task->data[0]++; + } + break; + case 2: + if (!sub_807E40C() && sub_8055FC4()) + task->data[0]++; + break; + case 3: + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +void sub_807E80C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 * xp = &task->data[2]; + s16 * yp = &task->data[3]; + switch (task->data[0]) + { + case 0: + player_bitmagic(); + PlayerGetDestCoords(xp, yp); + PlaySE(GetDoorSoundEffect(*xp, *yp - 1)); + task->data[1] = FieldAnimateDoorOpen(*xp, *yp - 1); + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + FieldObjectSetHeldMovement(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)], 17); + task->data[0] = 2; + } + break; + case 2: + if (walkrun_is_standing_still()) + { + task->data[1] = FieldAnimateDoorClose(*xp, *yp - 1); + FieldObjectClearHeldMovementIfFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + sub_807DCB0(FALSE); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + task->data[0] = 4; + } + break; + case 4: + sub_8055F88(); + sub_807DC18(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = sub_807E718; + break; + case 5: + sub_8055F88(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = sub_807E718; + break; + } +} + +void sub_807E980(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *playerSpr = &gSprites[gPlayerAvatar.spriteId]; + switch (data[0]) + { + case 0: + ScriptContext2_Enable(); + player_bitmagic(); + CameraObjectReset2(); + data[0]++; + break; + case 1: + if (!FieldObjectIsMovementOverridden(playerObj) || FieldObjectClearHeldMovementIfFinished(playerObj)) + { + if (data[15] != 0) + data[15]--; + else + { + sub_8055F88(); + PlayRainStoppingSoundEffect(); + playerSpr->oam.priority = 1; + sub_807EB64(data[1], &data[2], &data[3]); + PlaySE(SE_KAIDAN); + data[0]++; + } + } + break; + case 2: + sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]); + data[15]++; + if (data[15] >= 12) + { + sub_807DC18(); + data[0]++; + } + break; + case 3: + sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]); + if (!sub_807E40C() && sub_8055FC4()) + data[0]++; + break; + default: + gFieldCallback = sub_807DF64; + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskId); + break; + } +} + +void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) +{ + struct Sprite *playerSpr = &gSprites[gPlayerAvatar.spriteId]; + struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (a1 > 0 || *a4 > 6) + *a3 += a1; + *a2 += a0; + (*a4)++; + playerSpr->pos2.x = *a2 >> 5; + playerSpr->pos2.y = *a3 >> 5; + if (playerObj->mapobj_bit_7) + { + FieldObjectForceSetSpecialAnim(playerObj, GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + } +} + +void sub_807EB64(u16 a0, s16 *a1, s16 *a2) +{ + FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); + sub_807EBBC(a0, a1, a2); +} + +void sub_807EBBC(u8 a0, s16 *a1, s16 *a2) +{ + if (MetatileBehavior_IsUnknownWarp6C(a0)) + { + *a1 = 16; + *a2 = -10; + } + else if (MetatileBehavior_IsUnknownWarp6D(a0)) + { + *a1 = -17; + *a2 = -10; + } + else if (MetatileBehavior_IsUnknownWarp6E(a0)) + { + *a1 = 17; + *a2 = 3; + } + else if (MetatileBehavior_IsUnknownWarp6F(a0)) + { + *a1 = -17; + *a2 = 3; + } + else + { + *a1 = 0; + *a2 = 0; + } +} + +void sub_807EC34(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + switch (data[0]) + { + default: + if (sub_807E418() == TRUE) + { + CameraObjectReset1(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + case 0: + Overworld_PlaySpecialMapMusic(); + pal_fill_for_maplights(); + ScriptContext2_Enable(); + sub_807ECBC(&data[1], &data[2], &data[3], &data[4], &data[5]); + data[0]++; + break; + case 1: + if (!sub_807EDA0(&data[1], &data[2], &data[3], &data[4], &data[5])) + data[0]++; + break; + } +} + +void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +{ + s16 x, y; + u8 behavior; + s32 r1; + struct Sprite *sprite; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsUnknownWarp6E(behavior) || MetatileBehavior_IsUnknownWarp6C(behavior)) + r1 = 3; + else + r1 = 4; + FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], sub_8064270(r1)); + sub_807EBBC(behavior, a0, a1); + *a2 = *a0 * 16; + *a3 = *a1 * 16; + *a4 = 16; + sprite = &gSprites[gPlayerAvatar.spriteId]; + sprite->pos2.x = *a2 >> 5; + sprite->pos2.y = *a3 >> 5; + *a0 *= -1; + *a1 *= -1; +} + +bool8 sub_807EDA0(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +{ + struct Sprite *sprite; + sprite = &gSprites[gPlayerAvatar.spriteId]; + if (*a4 != 0) + { + *a2 += *a0; + *a3 += *a1; + sprite->pos2.x = *a2 >> 5; + sprite->pos2.y = *a3 >> 5; + (*a4)--; + return TRUE; + } + else + { + sprite->pos2.x = 0; + sprite->pos2.y = 0; + return FALSE; + } +} diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index a17f37802..7d9fa935e 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -461,7 +461,7 @@ u16 sub_80F8318(u8 mapsec) return windowId; } -bool8 sub_80F83B0(void) +bool32 sub_80F83B0(void) { if (FuncIsActiveTask(sub_80F83D0) == TRUE) { From 55a70ffb18320e47591bcf98a414481cf477e546 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Sep 2019 11:17:06 -0400 Subject: [PATCH 052/100] Some cleanup --- include/field_screen_effect.h | 1 + src/field_fadetransition.c | 89 +++++++++++++++++------------------ 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 0c6cc35cb..1b8044592 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -8,5 +8,6 @@ void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); void sub_807F114(void); +void sub_807F204(u8 taskId); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index fc40d6258..b8ed41c06 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -25,22 +25,21 @@ #include "start_menu.h" #include "constants/songs.h" -void sub_807DF4C(u8 a0); -void sub_807DFBC(u8 taskId); -void task_map_chg_seq_0807E20C(u8 taskId); -void task_map_chg_seq_0807E2CC(u8 taskId); -void sub_807E31C(u8 taskId); -void sub_807E718(u8 taskId); -void sub_807E784(u8 taskId); -void sub_807E80C(u8 taskId); -void sub_807E980(u8 taskId); -void sub_807EB64(u16, s16*, s16*); -void sub_807EBBC(u8 a0, s16 *a1, s16 *a2); -void sub_807EAC4(s16, s16, s16*, s16*, s16*); -void sub_807EC34(u8 taskId); -void sub_807ECBC(s16 *, s16 *, s16 *, s16 *, s16 *); -bool8 sub_807EDA0(s16 *, s16 *, s16 *, s16 *, s16 *); -void sub_807F204(u8 taskId); +static void sub_807DF4C(u8 a0); +static void sub_807DFBC(u8 taskId); +static void task_map_chg_seq_0807E20C(u8 taskId); +static void task_map_chg_seq_0807E2CC(u8 taskId); +static void sub_807E31C(u8 taskId); +static void sub_807E718(u8 taskId); +static void sub_807E784(u8 taskId); +static void sub_807E80C(u8 taskId); +static void sub_807E980(u8 taskId); +static void sub_807EB64(u16, s16*, s16*); +static void sub_807EBBC(u8 a0, s16 *a1, s16 *a2); +static void sub_807EAC4(s16, s16, s16*, s16*, s16*); +static void sub_807EC34(u8 taskId); +static void sub_807ECBC(s16 *, s16 *, s16 *, s16 *, s16 *); +static bool8 sub_807EDA0(s16 *, s16 *, s16 *, s16 *, s16 *); void palette_bg_faded_fill_white(void) { @@ -69,7 +68,7 @@ void pal_fill_for_maplights(void) } } -void sub_807DBAC(void) +static void sub_807DBAC(void) { switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType())) { @@ -112,7 +111,7 @@ void sub_807DC18(void) } } -void sub_807DC70(void) +static void sub_807DC70(void) { switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType)) { @@ -125,12 +124,12 @@ void sub_807DC70(void) } } -void sub_807DCB0(bool8 arg) +static void sub_807DCB0(bool8 arg) { sub_805CB04(!arg); } -void task0A_nop_for_a_while(u8 taskId) +static void task0A_nop_for_a_while(u8 taskId) { if (sub_807E418() == TRUE) DestroyTask(taskId); @@ -144,7 +143,7 @@ void sub_807DCE4(void) CreateTask(task0A_nop_for_a_while, 10); } -void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskId) +static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskId) { if (sub_807E418() == TRUE) { @@ -168,7 +167,7 @@ void sub_807DD44(void) CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); } -void task_mpl_807DD60(u8 taskId) +static void task_mpl_807DD60(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -202,7 +201,7 @@ void sub_807DDD0(void) CreateTask(task_mpl_807DD60, 10); } -void sub_807DDF0(u8 taskId) +static void sub_807DDF0(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -237,7 +236,7 @@ void sub_807DE58(void) CreateTask(sub_807DDF0, 10); } -void sub_807DE78(bool8 a0) +static void sub_807DE78(bool8 a0) { s16 x, y; u32 behavior; @@ -277,7 +276,7 @@ void sub_807DE78(bool8 a0) CreateTask(func, 10); } -void sub_807DF4C(bool8 a0) +static void sub_807DF4C(bool8 a0) { if (!a0) pal_fill_for_maplights(); @@ -301,7 +300,7 @@ void sub_807DF7C(void) ScriptContext2_Enable(); } -void sub_807DF94(void) +static void sub_807DF94(void) { Overworld_PlaySpecialMapMusic(); pal_fill_for_maplights(); @@ -311,7 +310,7 @@ void sub_807DF94(void) ScriptContext2_Enable(); } -void sub_807DFBC(u8 taskId) +static void sub_807DFBC(u8 taskId) { struct Task * task = &gTasks[taskId]; s16 *x = &task->data[2]; @@ -399,7 +398,7 @@ void sub_807DFBC(u8 taskId) } } -void task_map_chg_seq_0807E20C(u8 taskId) +static void task_map_chg_seq_0807E20C(u8 taskId) { struct Task * task = &gTasks[taskId]; s16 *x = &task->data[2]; @@ -435,7 +434,7 @@ void task_map_chg_seq_0807E20C(u8 taskId) } } -void task_map_chg_seq_0807E2CC(u8 taskId) +static void task_map_chg_seq_0807E2CC(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -455,7 +454,7 @@ void task_map_chg_seq_0807E2CC(u8 taskId) } } -void sub_807E31C(u8 taskId) +static void sub_807E31C(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -476,7 +475,7 @@ void sub_807E31C(u8 taskId) } } -void sub_807E378(u8 taskId) +static void sub_807E378(u8 taskId) { if (sub_807E418() == TRUE) { @@ -498,7 +497,7 @@ bool32 sub_807E3BC(void) return FALSE; } -void task_mpl_807E3C8(u8 taskId) +static void task_mpl_807E3C8(u8 taskId) { if (sub_807E418() == TRUE) { @@ -516,7 +515,7 @@ void sub_807E3EC(void) CreateTask(task_mpl_807E3C8, 10); } -bool32 sub_807E40C(void) +static bool32 sub_807E40C(void) { return gPaletteFade.active; } @@ -619,7 +618,7 @@ void sub_807E5C4(void) gFieldCallback = nullsub_60; } -void sub_807E5EC(u8 taskId) +static void sub_807E5EC(u8 taskId) { struct Task * task = &gTasks[taskId]; switch (task->data[0]) @@ -649,7 +648,7 @@ void sub_807E654(void) CreateTask(sub_807E5EC, 10); } -void sub_807E678(u8 taskId) +static void sub_807E678(u8 taskId) { s16 * data = gTasks[taskId].data; switch (data[0]) @@ -684,7 +683,7 @@ void sub_807E704(void) CreateTask(sub_807E678, 10); } -void sub_807E718(u8 taskId) +static void sub_807E718(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -706,7 +705,7 @@ void sub_807E718(u8 taskId) } } -void sub_807E784(u8 taskId) +static void sub_807E784(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -737,7 +736,7 @@ void sub_807E784(u8 taskId) } } -void sub_807E80C(u8 taskId) +static void sub_807E80C(u8 taskId) { struct Task *task = &gTasks[taskId]; s16 * xp = &task->data[2]; @@ -790,7 +789,7 @@ void sub_807E80C(u8 taskId) } } -void sub_807E980(u8 taskId) +static void sub_807E980(u8 taskId) { s16 * data = gTasks[taskId].data; struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -842,7 +841,7 @@ void sub_807E980(u8 taskId) } } -void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) +static void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) { struct Sprite *playerSpr = &gSprites[gPlayerAvatar.spriteId]; struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -858,13 +857,13 @@ void sub_807EAC4(s16 a0, s16 a1, s16 *a2, s16 *a3, s16 *a4) } } -void sub_807EB64(u16 a0, s16 *a1, s16 *a2) +static void sub_807EB64(u16 a0, s16 *a1, s16 *a2) { FieldObjectForceSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetStepInPlaceDelay16AnimId(GetPlayerFacingDirection())); sub_807EBBC(a0, a1, a2); } -void sub_807EBBC(u8 a0, s16 *a1, s16 *a2) +static void sub_807EBBC(u8 a0, s16 *a1, s16 *a2) { if (MetatileBehavior_IsUnknownWarp6C(a0)) { @@ -893,7 +892,7 @@ void sub_807EBBC(u8 a0, s16 *a1, s16 *a2) } } -void sub_807EC34(u8 taskId) +static void sub_807EC34(u8 taskId) { s16 * data = gTasks[taskId].data; switch (data[0]) @@ -920,7 +919,7 @@ void sub_807EC34(u8 taskId) } } -void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +static void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) { s16 x, y; u8 behavior; @@ -944,7 +943,7 @@ void sub_807ECBC(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) *a1 *= -1; } -bool8 sub_807EDA0(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) +static bool8 sub_807EDA0(s16 *a0, s16 *a1, s16 *a2, s16 *a3, s16 *a4) { struct Sprite *sprite; sprite = &gSprites[gPlayerAvatar.spriteId]; From 7a062983ae7e1202bf732e73c070769d96d35a6b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 27 Sep 2019 03:07:11 +0800 Subject: [PATCH 053/100] RollCredits --- src/credits.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/credits.c b/src/credits.c index abb287194..f47cc79c4 100644 --- a/src/credits.c +++ b/src/credits.c @@ -828,7 +828,7 @@ static s32 RollCredits(void) { case CREDITSSCENE_INIT_WIN0: SwitchWin1OffWin0On(); - SetGpuReg(REG_OFFSET_WIN0H, 0x40); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); SetGpuReg(REG_OFFSET_WIN0V, 0x4F51); sCreditsMgr->mainseqno = CREDITSSCENE_SETUP_DARKEN_EFFECT; return 0; @@ -856,7 +856,7 @@ static s32 RollCredits(void) } return 0; case CREDITSSCENE_LOAD_PLAYER_SPRITE_AT_INDIGO: - if (sCreditsMgr->timer != 0) + if (sCreditsMgr->timer == 0) { LoadPlayerOrRivalSprite(0); sCreditsMgr->timer = 100; @@ -937,14 +937,14 @@ static s32 RollCredits(void) case CREDITSSCENE_PRINT_ADDPRINTER1: if (!gPaletteFade.active) { - win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8; // unused - AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_0); + win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].param].unk_8; // unused + AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].param].unk_0); sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_ADDPRINTER2; } return sCreditsMgr->canSpeedThrough; case CREDITSSCENE_PRINT_ADDPRINTER2: - win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_8; - AddTextPrinterParameterized4(sCreditsMgr->windowId, 1, 2, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].unk1].unk_4); + win0v[0] = sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].param].unk_8; + AddTextPrinterParameterized4(sCreditsMgr->windowId, 2, 8, 6, 0, 0, sTextColor_Header, -1, sCreditsTexts[sCreditsScript[sCreditsMgr->scrcmdidx].param].unk_4); sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_DELAY; return sCreditsMgr->canSpeedThrough; case CREDITSSCENE_PRINT_DELAY: @@ -974,10 +974,11 @@ static s32 RollCredits(void) { DestroyCreditsWindow(); sCreditsMgr->subseqno = 0; - while (DoOverworldMapScrollScene(sCreditsMgr->whichMon)) + while (!DoOverworldMapScrollScene(sCreditsMgr->whichMon)) {} switch (sCreditsMgr->whichMon) { + case 3: default: win0v[0] = 1; break; From f0dd50e194b927a96af92f8f7f9f05c94a004b9a Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 27 Sep 2019 03:35:35 +0800 Subject: [PATCH 054/100] PokemonUseItemEffects2 --- src/pokemon.c | 1022 +------------------------------------------------ 1 file changed, 7 insertions(+), 1015 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 9c2532243..152e8e1df 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4404,13 +4404,6 @@ static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, } } -#ifdef NONMATCHING -/* - * This is nonmatching due to: - * 1) the compiler's insistence on avoiding the u8 cast when loading gMain.inBattle - * 2) niche difference in the first loop - * 3) tail merge (there're still logical differences inside switch which are not noticed? ) - */ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) { u32 data; @@ -4421,6 +4414,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo u8 r10 = 6; u32 i; s32 sp18 = 0; + u8 holdEffect; u8 battlerId = 4; u16 heldItem; u8 curEffect; @@ -4431,13 +4425,13 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - /*holdEffect = */gEnigmaBerries[gBattlerInMenuId].holdEffect; + holdEffect = gEnigmaBerries[gBattlerInMenuId].holdEffect; else - /*holdEffect = */gSaveBlock1Ptr->enigmaBerry.holdEffect; + holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; } else { - /*holdEffect = */ItemId_GetHoldEffect(heldItem); + holdEffect = ItemId_GetHoldEffect(heldItem); } gPotentialItemEffectBattler = gBattlerInMenuId; if (gMain.inBattle) @@ -4445,9 +4439,9 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo gActiveBattler = gBattlerInMenuId; for (cmdIndex = GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER; cmdIndex < gBattlersCount; - cmdIndex += 2) // for/while seems to be identical here + cmdIndex += 2) { - if (gBattlerPartyIndexes[cmdIndex] == partyIndex) // why is gBattlerPartyIndexes reloaded? + if (gBattlerPartyIndexes[cmdIndex] == partyIndex) { battlerId = cmdIndex; break; @@ -4590,8 +4584,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo for (tmp = 0; tmp < MAX_MON_MOVES; tmp++) { data = GetMonData(mon, MON_DATA_PP1 + tmp, NULL); - curMoveId = GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL); - if (data != CalculatePPWithBonus(curMoveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp)) + if (data != CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp)) retVal = FALSE; } r10++; @@ -4678,1007 +4671,6 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo } return retVal; } -#else -__attribute__((naked)) -bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x20\n\ - mov r8, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - str r1, [sp]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x4]\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - str r3, [sp, 0x8]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x10]\n\ - movs r1, 0x6\n\ - mov r10, r1\n\ - movs r2, 0\n\ - str r2, [sp, 0x18]\n\ - movs r0, 0x4\n\ - str r0, [sp, 0x1C]\n\ - mov r0, r8\n\ - movs r1, 0xC\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xAF\n\ - beq _08042458\n\ - bl ItemId_GetHoldEffect\n\ -_08042458:\n\ - ldr r1, _080424B0 @ =gPotentialItemEffectBattler\n\ - ldr r0, _080424B4 @ =gBattlerInMenuId\n\ - ldrb r2, [r0]\n\ - strb r2, [r1]\n\ - ldr r0, _080424B8 @ =gMain\n\ - ldr r1, _080424BC @ =0x00000439\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0\n\ - beq _080424F8\n\ - ldr r0, _080424C0 @ =gActiveBattler\n\ - strb r2, [r0]\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - negs r1, r0\n\ - orrs r1, r0\n\ - lsrs r1, 31\n\ - str r1, [sp, 0xC]\n\ - ldr r0, _080424C4 @ =gBattlersCount\n\ - ldr r4, [sp]\n\ - subs r4, 0xD\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bge _08042504\n\ - ldr r2, _080424C8 @ =gBattlerPartyIndexes\n\ - lsls r0, r1, 1\n\ - adds r0, r2\n\ - ldrh r3, [r0]\n\ - ldr r1, [sp, 0x4]\n\ - lsls r0, r1, 16\n\ - lsrs r1, r0, 16\n\ - adds r5, r0, 0\n\ - cmp r3, r1\n\ - bne _080424CC\n\ - ldr r2, [sp, 0xC]\n\ - str r2, [sp, 0x1C]\n\ - b _08042504\n\ - .align 2, 0\n\ -_080424B0: .4byte gPotentialItemEffectBattler\n\ -_080424B4: .4byte gBattlerInMenuId\n\ -_080424B8: .4byte gMain\n\ -_080424BC: .4byte 0x00000439\n\ -_080424C0: .4byte gActiveBattler\n\ -_080424C4: .4byte gBattlersCount\n\ -_080424C8: .4byte gBattlerPartyIndexes\n\ -_080424CC:\n\ - ldr r0, [sp, 0xC]\n\ - adds r0, 0x2\n\ - str r0, [sp, 0xC]\n\ - ldr r0, _080424F4 @ =gBattlersCount\n\ - ldr r1, [sp, 0xC]\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bge _08042504\n\ - lsls r0, r1, 1\n\ - adds r0, r2\n\ - ldrh r1, [r0]\n\ - lsrs r0, r5, 16\n\ - cmp r1, r0\n\ - bne _080424CC\n\ - ldr r2, [sp, 0xC]\n\ - lsls r0, r2, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x1C]\n\ - b _08042504\n\ - .align 2, 0\n\ -_080424F4: .4byte gBattlersCount\n\ -_080424F8:\n\ - ldr r0, _08042520 @ =gActiveBattler\n\ - strb r1, [r0]\n\ - movs r0, 0x4\n\ - str r0, [sp, 0x1C]\n\ - ldr r4, [sp]\n\ - subs r4, 0xD\n\ -_08042504:\n\ - lsls r0, r4, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xA5\n\ - bhi _08042578\n\ - ldr r1, _08042524 @ =gItemEffectTable\n\ - lsls r0, r4, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08042528\n\ - ldr r1, [sp]\n\ - cmp r1, 0xAF\n\ - beq _0804252E\n\ - b _08042578\n\ - .align 2, 0\n\ -_08042520: .4byte gActiveBattler\n\ -_08042524: .4byte gItemEffectTable\n\ -_08042528:\n\ - ldr r2, [sp]\n\ - cmp r2, 0xAF\n\ - bne _0804257C\n\ -_0804252E:\n\ - ldr r0, _08042550 @ =gMain\n\ - ldr r1, _08042554 @ =0x00000439\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042560\n\ - ldr r0, _08042558 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _0804255C @ =gEnigmaBerries+0x8\n\ - adds r0, r1\n\ - b _0804257C\n\ - .align 2, 0\n\ -_08042550: .4byte gMain\n\ -_08042554: .4byte 0x00000439\n\ -_08042558: .4byte gActiveBattler\n\ -_0804255C: .4byte gEnigmaBerries+0x8\n\ -_08042560:\n\ - ldr r0, _0804256C @ =gSaveBlock1Ptr\n\ - ldr r0, [r0]\n\ - ldr r2, _08042570 @ =0x00003108\n\ - adds r2, r0, r2\n\ - str r2, [sp, 0x14]\n\ - b _0804257E\n\ - .align 2, 0\n\ -_0804256C: .4byte gSaveBlock1Ptr\n\ -_08042570: .4byte 0x00003108\n\ -_08042574:\n\ - movs r0, 0\n\ - b _08042BD8\n\ -_08042578:\n\ - movs r0, 0x1\n\ - b _08042BD8\n\ -_0804257C:\n\ - str r0, [sp, 0x14]\n\ -_0804257E:\n\ - movs r0, 0\n\ - str r0, [sp, 0xC]\n\ -_08042582:\n\ - ldr r1, [sp, 0xC]\n\ - cmp r1, 0x5\n\ - bls _0804258A\n\ - b _08042BCA\n\ -_0804258A:\n\ - lsls r0, r1, 2\n\ - ldr r1, _08042594 @ =_08042598\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08042594: .4byte _08042598\n\ - .align 2, 0\n\ -_08042598:\n\ - .4byte _080425B0\n\ - .4byte _0804264C\n\ - .4byte _080426A8\n\ - .4byte _08042708\n\ - .4byte _08042850\n\ - .4byte _08042A6A\n\ -_080425B0:\n\ - ldr r0, [sp, 0x14]\n\ - ldr r1, [sp, 0xC]\n\ - adds r2, r0, r1\n\ - ldrb r1, [r2]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - adds r5, r2, 0\n\ - cmp r0, 0\n\ - beq _080425F4\n\ - ldr r0, _0804263C @ =gMain\n\ - ldr r2, _08042640 @ =0x00000439\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080425F4\n\ - ldr r0, [sp, 0x1C]\n\ - cmp r0, 0x4\n\ - beq _080425F4\n\ - ldr r1, _08042644 @ =gBattleMons\n\ - movs r0, 0x58\n\ - ldr r2, [sp, 0x1C]\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0xF0\n\ - lsls r1, 12\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080425F4\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ -_080425F4:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x30\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0804261C\n\ - ldr r1, _08042644 @ =gBattleMons\n\ - ldr r0, _08042648 @ =gActiveBattler\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 13\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0804261C\n\ - movs r1, 0\n\ - str r1, [sp, 0x10]\n\ -_0804261C:\n\ - ldrb r1, [r5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042628\n\ - b _08042BCA\n\ -_08042628:\n\ - ldr r2, _08042644 @ =gBattleMons\n\ - ldr r0, _08042648 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x19]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - b _080426F2\n\ - .align 2, 0\n\ -_0804263C: .4byte gMain\n\ -_08042640: .4byte 0x00000439\n\ -_08042644: .4byte gBattleMons\n\ -_08042648: .4byte gActiveBattler\n\ -_0804264C:\n\ - ldr r0, [sp, 0x14]\n\ - ldr r1, [sp, 0xC]\n\ - adds r2, r0, r1\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ - ands r0, r1\n\ - adds r5, r2, 0\n\ - cmp r0, 0\n\ - beq _08042678\n\ - ldr r2, _080426A0 @ =gBattleMons\n\ - ldr r0, _080426A4 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x1A]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0xB\n\ - bgt _08042678\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_08042678:\n\ - ldrb r1, [r5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042684\n\ - b _08042BCA\n\ -_08042684:\n\ - ldr r2, _080426A0 @ =gBattleMons\n\ - ldr r0, _080426A4 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x1B]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0xB\n\ - ble _0804269C\n\ - b _08042BCA\n\ -_0804269C:\n\ - b _08042832\n\ - .align 2, 0\n\ -_080426A0: .4byte gBattleMons\n\ -_080426A4: .4byte gActiveBattler\n\ -_080426A8:\n\ - ldr r1, [sp, 0x14]\n\ - ldr r0, [sp, 0xC]\n\ - adds r2, r1, r0\n\ - ldrb r1, [r2]\n\ - movs r0, 0xF0\n\ - ands r0, r1\n\ - adds r5, r2, 0\n\ - cmp r0, 0\n\ - beq _080426D4\n\ - ldr r2, _08042700 @ =gBattleMons\n\ - ldr r0, _08042704 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x1E]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0xB\n\ - bgt _080426D4\n\ - movs r1, 0\n\ - str r1, [sp, 0x10]\n\ -_080426D4:\n\ - ldrb r1, [r5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080426E0\n\ - b _08042BCA\n\ -_080426E0:\n\ - ldr r2, _08042700 @ =gBattleMons\n\ - ldr r0, _08042704 @ =gActiveBattler\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x1C]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ -_080426F2:\n\ - cmp r0, 0xB\n\ - ble _080426F8\n\ - b _08042BCA\n\ -_080426F8:\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ - b _08042BCA\n\ - .align 2, 0\n\ -_08042700: .4byte gBattleMons\n\ -_08042704: .4byte gActiveBattler\n\ -_08042708:\n\ - ldr r0, [sp, 0x14]\n\ - ldr r1, [sp, 0xC]\n\ - adds r2, r0, r1\n\ - ldrb r1, [r2]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - adds r5, r2, 0\n\ - cmp r0, 0\n\ - beq _0804273A\n\ - ldr r4, _08042838 @ =gSideTimers\n\ - ldr r0, _0804283C @ =gActiveBattler\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, r0, 1\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r4\n\ - ldrb r0, [r1, 0x4]\n\ - cmp r0, 0\n\ - bne _0804273A\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_0804273A:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042756\n\ - mov r0, r8\n\ - movs r1, 0x38\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _08042756\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ -_08042756:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042776\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - movs r2, 0x7\n\ - ldr r3, [sp, 0x1C]\n\ - bl sub_8042BE8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08042776\n\ - movs r1, 0\n\ - str r1, [sp, 0x10]\n\ -_08042776:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08042796\n\ - ldr r2, _08042840 @ =0x00000f88\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - ldr r3, [sp, 0x1C]\n\ - bl sub_8042BE8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08042796\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_08042796:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080427B6\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - movs r2, 0x10\n\ - ldr r3, [sp, 0x1C]\n\ - bl sub_8042BE8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080427B6\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ -_080427B6:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080427D6\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - movs r2, 0x20\n\ - ldr r3, [sp, 0x1C]\n\ - bl sub_8042BE8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080427D6\n\ - movs r1, 0\n\ - str r1, [sp, 0x10]\n\ -_080427D6:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080427F6\n\ - mov r0, r8\n\ - ldr r1, [sp, 0x4]\n\ - movs r2, 0x40\n\ - ldr r3, [sp, 0x1C]\n\ - bl sub_8042BE8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080427F6\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_080427F6:\n\ - ldrb r1, [r5]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042802\n\ - b _08042BCA\n\ -_08042802:\n\ - ldr r0, _08042844 @ =gMain\n\ - ldr r1, _08042848 @ =0x00000439\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042814\n\ - b _08042BCA\n\ -_08042814:\n\ - ldr r2, [sp, 0x1C]\n\ - cmp r2, 0x4\n\ - bne _0804281C\n\ - b _08042BCA\n\ -_0804281C:\n\ - ldr r1, _0804284C @ =gBattleMons\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08042832\n\ - b _08042BCA\n\ -_08042832:\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ - b _08042BCA\n\ - .align 2, 0\n\ -_08042838: .4byte gSideTimers\n\ -_0804283C: .4byte gActiveBattler\n\ -_08042840: .4byte 0x00000f88\n\ -_08042844: .4byte gMain\n\ -_08042848: .4byte 0x00000439\n\ -_0804284C: .4byte gBattleMons\n\ -_08042850:\n\ - ldr r1, [sp, 0x14]\n\ - ldr r2, [sp, 0xC]\n\ - adds r0, r1, r2\n\ - ldrb r7, [r0]\n\ - movs r0, 0x20\n\ - ands r0, r7\n\ - cmp r0, 0\n\ - beq _080428B6\n\ - movs r0, 0xDF\n\ - ands r7, r0\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - ldr r0, _080428DC @ =gPPUpGetMask\n\ - ldr r1, [sp, 0x8]\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - ands r5, r0\n\ - lsls r0, r1, 1\n\ - lsrs r5, r0\n\ - adds r1, 0xD\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r4, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl CalculatePPWithBonus\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r5, 0x2\n\ - bhi _080428B6\n\ - cmp r0, 0x4\n\ - bls _080428B6\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_080428B6:\n\ - movs r0, 0\n\ - mov r9, r0\n\ - cmp r7, 0\n\ - bne _080428C0\n\ - b _08042BCA\n\ -_080428C0:\n\ - movs r0, 0x1\n\ - ands r0, r7\n\ - cmp r0, 0\n\ - bne _080428CA\n\ - b _08042A5C\n\ -_080428CA:\n\ - mov r1, r9\n\ - cmp r1, 0x7\n\ - bls _080428D2\n\ - b _08042A5C\n\ -_080428D2:\n\ - lsls r0, r1, 2\n\ - ldr r1, _080428E0 @ =_080428E4\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080428DC: .4byte gPPUpGetMask\n\ -_080428E0: .4byte _080428E4\n\ - .align 2, 0\n\ -_080428E4:\n\ - .4byte _08042904\n\ - .4byte _08042904\n\ - .4byte _08042934\n\ - .4byte _08042996\n\ - .4byte _08042A5C\n\ - .4byte _08042A5C\n\ - .4byte _08042A5C\n\ - .4byte _08042A4A\n\ -_08042904:\n\ - mov r0, r8\n\ - bl GetMonEVCount\n\ - lsls r0, 16\n\ - ldr r1, _0804292C @ =0x01fd0000\n\ - cmp r0, r1\n\ - bls _08042914\n\ - b _08042578\n\ -_08042914:\n\ - ldr r0, _08042930 @ =sGetMonDataEVConstants\n\ - add r0, r9\n\ - ldrb r1, [r0]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - cmp r5, 0x63\n\ - bls _0804292A\n\ - b _08042A5C\n\ -_0804292A:\n\ - b _08042A3A\n\ - .align 2, 0\n\ -_0804292C: .4byte 0x01fd0000\n\ -_08042930: .4byte sGetMonDataEVConstants\n\ -_08042934:\n\ - movs r0, 0x10\n\ - ands r0, r7\n\ - cmp r0, 0\n\ - beq _08042952\n\ - mov r0, r8\n\ - movs r1, 0x39\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _08042968\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - b _080429F4\n\ -_08042952:\n\ - mov r0, r8\n\ - movs r1, 0x39\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _08042968\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - b _080429F4\n\ -_08042968:\n\ - mov r0, r8\n\ - movs r1, 0x3A\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r4, r0, 0\n\ - mov r0, r8\n\ - movs r1, 0x39\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r4, r0\n\ - beq _08042986\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ -_08042986:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - movs r0, 0xEF\n\ - ands r7, r0\n\ - b _08042A5C\n\ -_08042996:\n\ - movs r0, 0x2\n\ - ands r0, r7\n\ - cmp r0, 0\n\ - bne _080429FA\n\ - movs r6, 0\n\ - movs r1, 0x1\n\ - add r10, r1\n\ -_080429A4:\n\ - adds r1, r6, 0\n\ - adds r1, 0x11\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - adds r1, r6, 0\n\ - adds r1, 0xD\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r2, r6, 24\n\ - lsrs r2, 24\n\ - adds r0, r4, 0\n\ - bl CalculatePPWithBonus\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r5, r0\n\ - beq _080429EA\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ -_080429EA:\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - ble _080429A4\n\ - mov r1, r10\n\ - lsls r0, r1, 24\n\ -_080429F4:\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - b _08042A5C\n\ -_080429FA:\n\ - ldr r1, [sp, 0x8]\n\ - adds r1, 0x11\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - ldr r1, [sp, 0x8]\n\ - adds r1, 0xD\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r4, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl CalculatePPWithBonus\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r5, r0\n\ - beq _08042A5C\n\ -_08042A3A:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ - b _08042A5C\n\ -_08042A4A:\n\ - mov r0, r8\n\ - movs r1, 0x2\n\ - ldr r2, [sp]\n\ - bl GetEvolutionTargetSpecies\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08042A5C\n\ - b _08042574\n\ -_08042A5C:\n\ - movs r0, 0x1\n\ - add r9, r0\n\ - lsrs r7, 1\n\ - cmp r7, 0\n\ - beq _08042A68\n\ - b _080428C0\n\ -_08042A68:\n\ - b _08042BCA\n\ -_08042A6A:\n\ - ldr r1, [sp, 0x14]\n\ - ldr r2, [sp, 0xC]\n\ - adds r0, r1, r2\n\ - ldrb r7, [r0]\n\ - movs r0, 0\n\ - mov r9, r0\n\ - cmp r7, 0\n\ - bne _08042A7C\n\ - b _08042BCA\n\ -_08042A7C:\n\ - movs r0, 0x1\n\ - ands r0, r7\n\ - cmp r0, 0\n\ - bne _08042A86\n\ - b _08042BBE\n\ -_08042A86:\n\ - mov r1, r9\n\ - cmp r1, 0x7\n\ - bls _08042A8E\n\ - b _08042BBE\n\ -_08042A8E:\n\ - lsls r0, r1, 2\n\ - ldr r1, _08042A98 @ =_08042A9C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08042A98: .4byte _08042A9C\n\ - .align 2, 0\n\ -_08042A9C:\n\ - .4byte _08042ABC\n\ - .4byte _08042ABC\n\ - .4byte _08042ABC\n\ - .4byte _08042ABC\n\ - .4byte _08042AF4\n\ - .4byte _08042B4C\n\ - .4byte _08042B68\n\ - .4byte _08042B92\n\ -_08042ABC:\n\ - mov r0, r8\n\ - bl GetMonEVCount\n\ - lsls r0, 16\n\ - ldr r1, _08042AEC @ =0x01fd0000\n\ - cmp r0, r1\n\ - bls _08042ACC\n\ - b _08042578\n\ -_08042ACC:\n\ - ldr r0, _08042AF0 @ =sGetMonDataEVConstants\n\ - mov r1, r9\n\ - adds r1, 0x2\n\ - adds r1, r0\n\ - ldrb r1, [r1]\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - cmp r5, 0x63\n\ - bhi _08042BBE\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ - b _08042BB4\n\ - .align 2, 0\n\ -_08042AEC: .4byte 0x01fd0000\n\ -_08042AF0: .4byte sGetMonDataEVConstants\n\ -_08042AF4:\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r5, r0, 0\n\ - ldr r0, _08042B48 @ =gPPUpGetMask\n\ - ldr r1, [sp, 0x8]\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - ands r5, r0\n\ - lsls r0, r1, 1\n\ - lsrs r5, r0\n\ - adds r1, 0xD\n\ - mov r0, r8\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - mov r0, r8\n\ - movs r1, 0x15\n\ - movs r2, 0\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r4, 0\n\ - ldr r2, [sp, 0x8]\n\ - bl CalculatePPWithBonus\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r5, 0x2\n\ - bhi _08042BBE\n\ - cmp r6, 0x4\n\ - ble _08042BBE\n\ - movs r2, 0\n\ - str r2, [sp, 0x10]\n\ - b _08042BBE\n\ - .align 2, 0\n\ -_08042B48: .4byte gPPUpGetMask\n\ -_08042B4C:\n\ - mov r0, r8\n\ - movs r1, 0x20\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0x63\n\ - bhi _08042BB4\n\ - ldr r0, [sp, 0x10]\n\ - cmp r0, 0\n\ - bne _08042BB4\n\ - ldr r1, [sp, 0x18]\n\ - cmp r1, 0\n\ - bne _08042BB4\n\ - b _08042BAC\n\ -_08042B68:\n\ - mov r0, r8\n\ - movs r1, 0x20\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0x63\n\ - bls _08042BB4\n\ - mov r0, r8\n\ - movs r1, 0x20\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0xC7\n\ - bhi _08042BB4\n\ - ldr r2, [sp, 0x10]\n\ - cmp r2, 0\n\ - bne _08042BB4\n\ - ldr r0, [sp, 0x18]\n\ - cmp r0, 0\n\ - bne _08042BB4\n\ - b _08042BAC\n\ -_08042B92:\n\ - mov r0, r8\n\ - movs r1, 0x20\n\ - movs r2, 0\n\ - bl GetMonData\n\ - cmp r0, 0xC7\n\ - bls _08042BB4\n\ - ldr r1, [sp, 0x10]\n\ - cmp r1, 0\n\ - bne _08042BB4\n\ - ldr r2, [sp, 0x18]\n\ - cmp r2, 0\n\ - bne _08042BB4\n\ -_08042BAC:\n\ - ldr r0, [sp, 0x14]\n\ - add r0, r10\n\ - ldrb r0, [r0]\n\ - str r0, [sp, 0x18]\n\ -_08042BB4:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ -_08042BBE:\n\ - movs r0, 0x1\n\ - add r9, r0\n\ - lsrs r7, 1\n\ - cmp r7, 0\n\ - beq _08042BCA\n\ - b _08042A7C\n\ -_08042BCA:\n\ - ldr r1, [sp, 0xC]\n\ - adds r1, 0x1\n\ - str r1, [sp, 0xC]\n\ - cmp r1, 0x5\n\ - bgt _08042BD6\n\ - b _08042582\n\ -_08042BD6:\n\ - ldr r0, [sp, 0x10]\n\ -_08042BD8:\n\ - add sp, 0x20\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId) { From 779f48d19de47f9a1a45db9e9911c3c80e4164d9 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 28 Sep 2019 12:42:26 +0800 Subject: [PATCH 055/100] palette --- asm/palette.s | 2945 -------------------------------------------- asm/region_map.s | 2 +- asm/trainer_card.s | 4 +- data/palette.s | 18 - include/fldeff.h | 1 + include/graphics.h | 4 +- include/palette.h | 58 +- ld_script.txt | 4 +- src/palette.c | 987 +++++++++++++++ sym_ewram.txt | 19 +- 10 files changed, 1024 insertions(+), 3018 deletions(-) delete mode 100644 asm/palette.s delete mode 100644 data/palette.s create mode 100644 src/palette.c diff --git a/asm/palette.s b/asm/palette.s deleted file mode 100644 index ed9327106..000000000 --- a/asm/palette.s +++ /dev/null @@ -1,2945 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start LoadCompressedPalette -LoadCompressedPalette: @ 80703A8 - push {r4-r6,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - ldr r6, _080703E0 @ =gUnknown_2037ACC - adds r1, r6, 0 - bl LZDecompressWram - lsls r4, 1 - ldr r1, _080703E4 @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - adds r0, r6, 0 - adds r2, r5, 0 - bl CpuSet - ldr r0, _080703E8 @ =gPlttBufferFaded - adds r4, r0 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080703E0: .4byte gUnknown_2037ACC -_080703E4: .4byte gPlttBufferUnfaded -_080703E8: .4byte gPlttBufferFaded - thumb_func_end LoadCompressedPalette - - thumb_func_start LoadPalette -LoadPalette: @ 80703EC - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 16 - lsls r5, 16 - lsrs r4, 15 - ldr r1, _0807041C @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - adds r2, r5, 0 - bl CpuSet - ldr r0, _08070420 @ =gPlttBufferFaded - adds r4, r0 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807041C: .4byte gPlttBufferUnfaded -_08070420: .4byte gPlttBufferFaded - thumb_func_end LoadPalette - - thumb_func_start FillPalette -FillPalette: @ 8070424 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r6, 16 - lsrs r6, 16 - lsls r4, 16 - lsls r5, 16 - mov r0, sp - strh r6, [r0] - lsrs r4, 15 - ldr r1, _0807046C @ =gPlttBufferUnfaded - adds r1, r4, r1 - lsrs r5, 17 - movs r0, 0x80 - lsls r0, 17 - orrs r5, r0 - mov r0, sp - adds r2, r5, 0 - bl CpuSet - mov r0, sp - adds r0, 0x2 - strh r6, [r0] - ldr r1, _08070470 @ =gPlttBufferFaded - adds r4, r1 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807046C: .4byte gPlttBufferUnfaded -_08070470: .4byte gPlttBufferFaded - thumb_func_end FillPalette - - thumb_func_start TransferPlttBuffer -TransferPlttBuffer: @ 8070474 - push {r4,r5,lr} - ldr r4, _080704BC @ =gPaletteFade - ldrb r1, [r4, 0x8] - movs r5, 0x80 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080704B6 - ldr r1, _080704C0 @ =gPlttBufferFaded - movs r2, 0xA0 - lsls r2, 19 - ldr r0, _080704C4 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080704C8 @ =0x80000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080704CC @ =gUnknown_2037AC8 - str r3, [r0] - ldrb r1, [r4, 0x9] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _080704B6 - ldrb r1, [r4, 0x7] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080704B6 - bl UpdateBlendRegisters -_080704B6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080704BC: .4byte gPaletteFade -_080704C0: .4byte gPlttBufferFaded -_080704C4: .4byte 0x040000d4 -_080704C8: .4byte 0x80000200 -_080704CC: .4byte gUnknown_2037AC8 - thumb_func_end TransferPlttBuffer - - thumb_func_start UpdatePaletteFade -UpdatePaletteFade: @ 80704D0 - push {lr} - ldr r0, _080704E0 @ =gUnknown_2037AC8 - ldr r0, [r0] - cmp r0, 0 - beq _080704E4 - movs r0, 0xFF - b _0807051C - .align 2, 0 -_080704E0: .4byte gUnknown_2037AC8 -_080704E4: - ldr r0, _080704F8 @ =gPaletteFade - ldrb r0, [r0, 0x9] - movs r1, 0x3 - ands r1, r0 - cmp r1, 0 - bne _080704FC - bl UpdateNormalPaletteFade - b _0807050A - .align 2, 0 -_080704F8: .4byte gPaletteFade -_080704FC: - cmp r1, 0x1 - bne _08070506 - bl UpdateFastPaletteFade - b _0807050A -_08070506: - bl UpdateHardwarePaletteFade -_0807050A: - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _08070520 @ =gUnknown_2037AC8 - ldr r0, _08070524 @ =gPaletteFade - ldr r0, [r0] - movs r1, 0 - orrs r0, r1 - str r0, [r2] - adds r0, r3, 0 -_0807051C: - pop {r1} - bx r1 - .align 2, 0 -_08070520: .4byte gUnknown_2037AC8 -_08070524: .4byte gPaletteFade - thumb_func_end UpdatePaletteFade - - thumb_func_start ResetPaletteFade -ResetPaletteFade: @ 8070528 - push {r4,lr} - movs r4, 0 -_0807052C: - adds r0, r4, 0 - bl ResetPaletteStruct - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0807052C - bl ResetPaletteFadeControl - pop {r4} - pop {r0} - bx r0 - thumb_func_end ResetPaletteFade - - thumb_func_start ReadPlttIntoBuffers -ReadPlttIntoBuffers: @ 8070548 - push {r4-r7,lr} - movs r0, 0xA0 - lsls r0, 19 - mov r12, r0 - movs r4, 0 - ldr r7, _0807057C @ =gPlttBufferUnfaded - ldr r6, _08070580 @ =gPlttBufferFaded - ldr r5, _08070584 @ =0x000001ff -_08070558: - lsls r1, r4, 1 - adds r3, r1, r7 - mov r0, r12 - adds r2, r1, r0 - ldrh r0, [r2] - strh r0, [r3] - adds r1, r6 - ldrh r0, [r2] - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bls _08070558 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807057C: .4byte gPlttBufferUnfaded -_08070580: .4byte gPlttBufferFaded -_08070584: .4byte 0x000001ff - thumb_func_end ReadPlttIntoBuffers - - thumb_func_start BeginNormalPaletteFade -BeginNormalPaletteFade: @ 8070588 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r0, [sp, 0x18] - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r12, r2 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r5, _080705B8 @ =gPaletteFade - ldrb r1, [r5, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080705BC - movs r0, 0 - b _080706B4 - .align 2, 0 -_080705B8: .4byte gPaletteFade -_080705BC: - ldrb r0, [r5, 0xA] - movs r3, 0x79 - negs r3, r3 - adds r2, r3, 0 - ands r2, r0 - movs r0, 0x10 - orrs r2, r0 - strb r2, [r5, 0xA] - lsls r0, r6, 24 - asrs r1, r0, 24 - cmp r1, 0 - bge _080705EA - lsls r0, r2, 25 - lsrs r0, 28 - negs r1, r1 - adds r0, r1 - movs r1, 0xF - ands r0, r1 - lsls r0, 3 - ands r2, r3 - orrs r2, r0 - strb r2, [r5, 0xA] - movs r6, 0 -_080705EA: - str r4, [r5] - movs r4, 0x3F - adds r1, r6, 0 - ands r1, r4 - ldrb r2, [r5, 0x4] - movs r3, 0x40 - negs r3, r3 - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x4] - ands r6, r4 - ldrb r0, [r5, 0x8] - ands r3, r0 - orrs r3, r6 - strb r3, [r5, 0x8] - movs r0, 0x1F - mov r1, r12 - ands r1, r0 - lsls r1, 6 - ldrh r2, [r5, 0x4] - ldr r0, _08070658 @ =0xfffff83f - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - lsls r2, r7, 3 - ldrb r1, [r5, 0x5] - movs r0, 0x7 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - ldr r1, _0807065C @ =0x00007fff - mov r0, r8 - ands r1, r0 - ldrh r2, [r5, 0x6] - ldr r0, _08070660 @ =0xffff8000 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x6] - ldrb r0, [r5, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r5, 0x7] - ldrb r1, [r5, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x9] - cmp r12, r7 - bcs _08070664 - movs r0, 0x41 - negs r0, r0 - ands r3, r0 - b _08070668 - .align 2, 0 -_08070658: .4byte 0xfffff83f -_0807065C: .4byte 0x00007fff -_08070660: .4byte 0xffff8000 -_08070664: - movs r0, 0x40 - orrs r3, r0 -_08070668: - strb r3, [r5, 0x8] - bl UpdatePaletteFade - ldr r4, _080706C0 @ =gPaletteFade - ldrb r1, [r4, 0x8] - lsrs r5, r1, 7 - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x8] - ldr r0, _080706C4 @ =gPlttBufferFaded - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _080706C8 @ =0x04000100 - bl CpuSet - ldr r1, _080706CC @ =gUnknown_2037AC8 - movs r0, 0 - str r0, [r1] - ldrb r1, [r4, 0x9] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _080706A4 - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080706A4 - bl UpdateBlendRegisters -_080706A4: - ldr r2, _080706C0 @ =gPaletteFade - lsls r3, r5, 7 - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x8] - movs r0, 0x1 -_080706B4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080706C0: .4byte gPaletteFade -_080706C4: .4byte gPlttBufferFaded -_080706C8: .4byte 0x04000100 -_080706CC: .4byte gUnknown_2037AC8 - thumb_func_end BeginNormalPaletteFade - - thumb_func_start unref_sub_80A1C1C -unref_sub_80A1C1C: @ 80706D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - mov r8, r0 - adds r4, r1, 0 - adds r6, r2, 0 - ldr r5, [sp, 0x1C] - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 16 - lsrs r5, 16 - str r3, [sp, 0x4] - bl ReadPlttIntoBuffers - lsls r4, 24 - asrs r4, 24 - str r5, [sp] - mov r0, r8 - adds r1, r4, 0 - adds r2, r6, 0 - ldr r3, [sp, 0x4] - bl BeginNormalPaletteFade - lsls r0, 24 - lsrs r0, 24 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end unref_sub_80A1C1C - - thumb_func_start unref_sub_80A1C64 -unref_sub_80A1C64: @ 8070718 - push {r4-r7,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - movs r5, 0 -_08070722: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - ldr r1, _08070770 @ =gUnknown_20379F8 - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - lsls r0, 31 - cmp r0, 0 - beq _08070780 - ldr r2, [r4] - ldrb r0, [r2, 0x8] - lsls r0, 31 - lsrs r0, 31 - cmp r0, r7 - bne _08070780 - ldrh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldrb r0, [r2, 0xB] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - bne _0807075E - adds r0, r4, 0 - bl unused_sub_80A1F00 - ldrb r0, [r4, 0x4] - lsls r0, 31 - cmp r0, 0 - beq _08070780 -_0807075E: - ldrb r0, [r4, 0x8] - cmp r0, 0 - bne _08070774 - adds r0, r4, 0 - adds r1, r6, 0 - bl unused_sub_80A1CDC - b _08070778 - .align 2, 0 -_08070770: .4byte gUnknown_20379F8 -_08070774: - subs r0, 0x1 - strb r0, [r4, 0x8] -_08070778: - adds r0, r4, 0 - adds r1, r6, 0 - bl unused_sub_80A1E40 -_08070780: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _08070722 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80A1C64 - - thumb_func_start unused_sub_80A1CDC -unused_sub_80A1CDC: @ 8070790 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - mov r8, r1 - movs r6, 0 - ldrh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldr r3, [r4] - ldrb r0, [r3, 0x9] - lsls r2, r0, 25 - lsrs r0, r2, 27 - adds r5, r1, 0 - muls r5, r0 - ldrb r1, [r3, 0x8] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807082C - lsrs r0, r2, 27 - cmp r6, r0 - bcs _08070878 - ldr r0, _0807081C @ =gPlttBufferUnfaded - mov r12, r0 - ldr r7, _08070820 @ =gPlttBufferFaded -_080707C4: - ldr r0, [r4, 0x4] - lsls r0, 11 - lsrs r0, 22 - lsls r0, 1 - add r0, r12 - ldr r1, [r3, 0x4] - lsls r2, r5, 1 - adds r1, r2, r1 - ldrh r1, [r1] - strh r1, [r0] - ldr r0, [r4, 0x4] - lsls r0, 11 - lsrs r0, 22 - lsls r0, 1 - adds r0, r7 - ldr r1, [r4] - ldr r1, [r1, 0x4] - adds r2, r1 - ldrh r1, [r2] - strh r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, [r4, 0x4] - lsls r1, r2, 11 - lsrs r1, 22 - adds r1, 0x1 - ldr r0, _08070824 @ =0x000003ff - ands r1, r0 - lsls r1, 11 - ldr r0, _08070828 @ =0xffe007ff - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r3, [r4] - ldrb r0, [r3, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r6, r0 - bcc _080707C4 - b _08070878 - .align 2, 0 -_0807081C: .4byte gPlttBufferUnfaded -_08070820: .4byte gPlttBufferFaded -_08070824: .4byte 0x000003ff -_08070828: .4byte 0xffe007ff -_0807082C: - lsrs r0, r2, 27 - cmp r6, r0 - bcs _08070878 - ldr r3, _080708E4 @ =gPlttBufferFaded -_08070834: - ldr r1, [r4, 0x4] - lsls r1, 11 - lsrs r1, 22 - lsls r1, 1 - adds r1, r3 - ldr r0, [r4] - ldr r2, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, [r4, 0x4] - lsls r1, r2, 11 - lsrs r1, 22 - adds r1, 0x1 - ldr r0, _080708E8 @ =0x000003ff - ands r1, r0 - lsls r1, 11 - ldr r0, _080708EC @ =0xffe007ff - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [r4] - ldrb r0, [r0, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r6, r0 - bcc _08070834 -_08070878: - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r0, 23 - lsls r0, 11 - ldr r1, [r4, 0x4] - ldr r2, _080708EC @ =0xffe007ff - ands r1, r2 - orrs r1, r0 - str r1, [r4, 0x4] - ldr r3, [r4] - ldrb r0, [r3, 0xA] - strb r0, [r4, 0x8] - ldrh r2, [r4, 0x6] - lsls r0, r2, 20 - lsrs r0, 25 - adds r0, 0x1 - movs r1, 0x7F - ands r0, r1 - lsls r0, 5 - ldr r5, _080708F0 @ =0xfffff01f - adds r1, r5, 0 - ands r1, r2 - orrs r1, r0 - strh r1, [r4, 0x6] - lsls r1, 20 - lsrs r1, 25 - ldrb r0, [r3, 0xB] - lsls r0, 27 - lsrs r0, 27 - cmp r1, r0 - blt _080708C8 - ldrb r0, [r4, 0x9] - cmp r0, 0 - beq _080708C0 - subs r0, 0x1 - strb r0, [r4, 0x9] -_080708C0: - ldrh r1, [r4, 0x6] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r4, 0x6] -_080708C8: - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r0, 27 - movs r1, 0x1 - lsls r1, r0 - mov r2, r8 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080708E4: .4byte gPlttBufferFaded -_080708E8: .4byte 0x000003ff -_080708EC: .4byte 0xffe007ff -_080708F0: .4byte 0xfffff01f - thumb_func_end unused_sub_80A1CDC - - thumb_func_start unused_sub_80A1E40 -unused_sub_80A1E40: @ 80708F4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r3, _0807094C @ =gPaletteFade - ldrb r1, [r3, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080709A8 - ldrh r0, [r4, 0x4] - lsls r0, 21 - lsrs r6, r0, 23 - asrs r1, r6, 4 - movs r5, 0x1 - adds r0, r5, 0 - lsls r0, r1 - ldr r1, [r3] - ands r0, r1 - cmp r0, 0 - beq _080709A8 - ldr r2, [r4] - ldrb r1, [r2, 0x8] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08070950 - ldrb r1, [r3, 0x4] - lsls r1, 26 - ldrb r0, [r3, 0x8] - lsls r0, 26 - cmp r1, r0 - beq _080709A8 - adds r0, r6, 0 - ldrb r1, [r2, 0x9] - lsls r1, 25 - lsrs r1, 27 - ldrh r2, [r3, 0x4] - lsls r2, 21 - lsrs r2, 27 - ldrh r3, [r3, 0x6] - lsls r3, 17 - lsrs r3, 17 - bl BlendPalette - b _080709A8 - .align 2, 0 -_0807094C: .4byte gPaletteFade -_08070950: - ldrb r1, [r3, 0x4] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - bne _080709A8 - ldrb r0, [r4, 0x8] - ldrb r1, [r2, 0xA] - cmp r0, r1 - beq _080709A8 - ldrh r0, [r4, 0x6] - lsls r0, 20 - lsrs r0, 25 - ldrb r1, [r2, 0x9] - lsls r1, 25 - lsrs r2, r1, 27 - adds r5, r0, 0 - muls r5, r2 - movs r3, 0 - adds r1, r2, 0 - cmp r3, r1 - bcs _080709A8 - ldr r6, _080709B0 @ =gPlttBufferFaded -_0807097C: - ldrh r1, [r4, 0x4] - lsls r1, 21 - lsrs r1, 23 - adds r1, r3 - lsls r1, 1 - adds r1, r6 - ldr r2, [r4] - adds r0, r5, r3 - ldr r2, [r2, 0x4] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, [r4] - ldrb r0, [r0, 0x9] - lsls r0, 25 - lsrs r0, 27 - cmp r3, r0 - bcc _0807097C -_080709A8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080709B0: .4byte gPlttBufferFaded - thumb_func_end unused_sub_80A1E40 - - thumb_func_start unused_sub_80A1F00 -unused_sub_80A1F00: @ 80709B4 - push {lr} - adds r3, r0, 0 - ldrb r0, [r3, 0x9] - cmp r0, 0 - bne _08070A04 - ldr r2, [r3] - ldrb r0, [r2, 0xB] - lsrs r0, 5 - cmp r0, 0 - bne _080709F4 - ldrh r1, [r3, 0x6] - ldr r0, _080709EC @ =0xfffff01f - ands r0, r1 - strh r0, [r3, 0x6] - ldrb r0, [r2, 0xA] - strb r0, [r3, 0x8] - ldrb r0, [r2, 0xC] - strb r0, [r3, 0x9] - ldrh r0, [r3, 0x4] - lsls r0, 21 - lsrs r0, 23 - lsls r0, 11 - ldr r1, [r3, 0x4] - ldr r2, _080709F0 @ =0xffe007ff - ands r1, r2 - orrs r1, r0 - str r1, [r3, 0x4] - b _08070A08 - .align 2, 0 -_080709EC: .4byte 0xfffff01f -_080709F0: .4byte 0xffe007ff -_080709F4: - cmp r0, 0 - blt _08070A08 - cmp r0, 0x2 - bgt _08070A08 - ldrh r0, [r2] - bl ResetPaletteStructByUid - b _08070A08 -_08070A04: - subs r0, 0x1 - strb r0, [r3, 0x9] -_08070A08: - pop {r0} - bx r0 - thumb_func_end unused_sub_80A1F00 - - thumb_func_start ResetPaletteStructByUid -ResetPaletteStructByUid: @ 8070A0C - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _08070A22 - bl ResetPaletteStruct -_08070A22: - pop {r0} - bx r0 - thumb_func_end ResetPaletteStructByUid - - thumb_func_start ResetPaletteStruct -ResetPaletteStruct: @ 8070A28 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08070A70 @ =gUnknown_20379F8 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, _08070A74 @ =gUnknown_83AC960 - str r0, [r1] - ldrb r2, [r1, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] - ldrh r2, [r1, 0x4] - ldr r0, _08070A78 @ =0xfffff803 - ands r0, r2 - strh r0, [r1, 0x4] - ldr r0, [r1, 0x4] - ldr r2, _08070A7C @ =0xffe007ff - ands r0, r2 - str r0, [r1, 0x4] - ldrh r2, [r1, 0x6] - ldr r0, _08070A80 @ =0xfffff01f - ands r0, r2 - strh r0, [r1, 0x6] - ldrb r2, [r1, 0x4] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] - movs r0, 0 - strb r0, [r1, 0x8] - strb r0, [r1, 0x9] - bx lr - .align 2, 0 -_08070A70: .4byte gUnknown_20379F8 -_08070A74: .4byte gUnknown_83AC960 -_08070A78: .4byte 0xfffff803 -_08070A7C: .4byte 0xffe007ff -_08070A80: .4byte 0xfffff01f - thumb_func_end ResetPaletteStruct - - thumb_func_start ResetPaletteFadeControl -ResetPaletteFadeControl: @ 8070A84 - ldr r2, _08070AEC @ =gPaletteFade - movs r0, 0 - str r0, [r2] - subs r0, 0x40 - ldrb r1, [r2, 0x4] - ands r0, r1 - strb r0, [r2, 0x4] - ldrh r1, [r2, 0x4] - ldr r0, _08070AF0 @ =0xfffff83f - ands r0, r1 - strh r0, [r2, 0x4] - ldrb r1, [r2, 0x5] - movs r0, 0x7 - ands r0, r1 - strb r0, [r2, 0x5] - ldrh r1, [r2, 0x6] - ldr r0, _08070AF4 @ =0xffff8000 - ands r0, r1 - strh r0, [r2, 0x6] - ldrb r1, [r2, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x7] - movs r0, 0 - strb r0, [r2, 0x8] - ldrb r1, [r2, 0x9] - movs r3, 0x5 - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x9 - negs r1, r1 - ands r0, r1 - strb r0, [r2, 0x9] - ldrb r1, [r2, 0xA] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0xA] - ldr r0, [r2, 0x8] - ldr r1, _08070AF8 @ =0xfffe0fff - ands r0, r1 - str r0, [r2, 0x8] - ldrb r0, [r2, 0xA] - ands r3, r0 - movs r0, 0x79 - negs r0, r0 - ands r3, r0 - movs r0, 0x10 - orrs r3, r0 - strb r3, [r2, 0xA] - bx lr - .align 2, 0 -_08070AEC: .4byte gPaletteFade -_08070AF0: .4byte 0xfffff83f -_08070AF4: .4byte 0xffff8000 -_08070AF8: .4byte 0xfffe0fff - thumb_func_end ResetPaletteFadeControl - - thumb_func_start unref_sub_80A2048 -unref_sub_80A2048: @ 8070AFC - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _08070B20 - ldr r1, _08070B24 @ =gUnknown_20379F8 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x4] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x4] -_08070B20: - pop {r0} - bx r0 - .align 2, 0 -_08070B24: .4byte gUnknown_20379F8 - thumb_func_end unref_sub_80A2048 - - thumb_func_start unref_sub_80A2074 -unref_sub_80A2074: @ 8070B28 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetPaletteNumByUid - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x10 - beq _08070B4E - ldr r0, _08070B54 @ =gUnknown_20379F8 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x4] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x4] -_08070B4E: - pop {r0} - bx r0 - .align 2, 0 -_08070B54: .4byte gUnknown_20379F8 - thumb_func_end unref_sub_80A2074 - - thumb_func_start GetPaletteNumByUid -GetPaletteNumByUid: @ 8070B58 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, _08070B78 @ =gUnknown_20379F8 -_08070B62: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, r2 - bne _08070B7C - adds r0, r1, 0 - b _08070B88 - .align 2, 0 -_08070B78: .4byte gUnknown_20379F8 -_08070B7C: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _08070B62 - movs r0, 0x10 -_08070B88: - pop {r1} - bx r1 - thumb_func_end GetPaletteNumByUid - - thumb_func_start UpdateNormalPaletteFade -UpdateNormalPaletteFade: @ 8070B8C - push {r4-r7,lr} - ldr r4, _08070BA0 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08070BA4 - movs r0, 0 - b _08070CC0 - .align 2, 0 -_08070BA0: .4byte gPaletteFade -_08070BA4: - bl IsSoftwarePaletteFadeFinishing - lsls r0, 24 - cmp r0, 0 - beq _08070BB2 - ldrb r0, [r4, 0x7] - b _08070CBE -_08070BB2: - ldrb r1, [r4, 0xA] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08070BE6 - ldrb r2, [r4, 0x4] - lsls r1, r2, 26 - ldrb r0, [r4, 0x8] - lsls r0, 26 - cmp r1, r0 - bcs _08070BDE - lsrs r0, r1, 26 - adds r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x4] - movs r0, 0x2 - b _08070CC0 -_08070BDE: - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - strb r0, [r4, 0x4] -_08070BE6: - movs r5, 0 - ldr r2, _08070BFC @ =gPaletteFade - ldrb r1, [r2, 0xA] - movs r0, 0x4 - ands r0, r1 - adds r7, r2, 0 - cmp r0, 0 - bne _08070C00 - ldrh r4, [r7] - b _08070C06 - .align 2, 0 -_08070BFC: .4byte gPaletteFade -_08070C00: - ldrh r4, [r7, 0x2] - movs r5, 0x80 - lsls r5, 1 -_08070C06: - cmp r4, 0 - beq _08070C38 - ldr r7, _08070C74 @ =gPaletteFade - adds r6, r7, 0 -_08070C0E: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08070C2A - ldrh r2, [r6, 0x4] - lsls r2, 21 - lsrs r2, 27 - ldrh r3, [r6, 0x6] - lsls r3, 17 - lsrs r3, 17 - adds r0, r5, 0 - movs r1, 0x10 - bl BlendPalette -_08070C2A: - lsrs r4, 1 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - bne _08070C0E -_08070C38: - ldrb r2, [r7, 0xA] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r4, 0x5 - negs r4, r4 - ands r4, r2 - orrs r4, r1 - strb r4, [r7, 0xA] - movs r0, 0x4 - ands r0, r4 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _08070CBC - ldrh r6, [r7, 0x4] - lsls r2, r6, 21 - ldrb r0, [r7, 0x5] - lsls r5, r0, 24 - lsrs r1, r2, 27 - lsrs r0, r5, 27 - cmp r1, r0 - bne _08070C78 - str r3, [r7] - movs r0, 0x2 - orrs r4, r0 - strb r4, [r7, 0xA] - b _08070CBC - .align 2, 0 -_08070C74: .4byte gPaletteFade -_08070C78: - ldrb r1, [r7, 0x8] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08070C94 - lsrs r3, r2, 27 - lsls r0, r4, 25 - lsrs r0, 28 - adds r3, r0, r3 - lsrs r0, r5, 27 - cmp r3, r0 - ble _08070CAA - adds r3, r0, 0 - b _08070CAA -_08070C94: - lsrs r3, r2, 27 - lsls r0, r4, 25 - lsrs r0, 28 - subs r0, r3, r0 - lsls r0, 24 - lsrs r3, r0, 24 - asrs r0, 24 - lsrs r1, r5, 27 - cmp r0, r1 - bge _08070CAA - adds r3, r1, 0 -_08070CAA: - lsls r0, r3, 24 - asrs r0, 24 - movs r1, 0x1F - ands r0, r1 - lsls r0, 6 - ldr r1, _08070CC8 @ =0xfffff83f - ands r1, r6 - orrs r1, r0 - strh r1, [r7, 0x4] -_08070CBC: - ldrb r0, [r7, 0x7] -_08070CBE: - lsrs r0, 7 -_08070CC0: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08070CC8: .4byte 0xfffff83f - thumb_func_end UpdateNormalPaletteFade - - thumb_func_start InvertPlttBuffer -InvertPlttBuffer: @ 8070CCC - push {r4-r7,lr} - adds r1, r0, 0 - movs r3, 0 - cmp r1, 0 - beq _08070D0A - ldr r7, _08070D10 @ =gPlttBufferFaded -_08070CD8: - movs r0, 0x1 - ands r0, r1 - lsrs r4, r1, 1 - adds r5, r3, 0 - adds r5, 0x10 - cmp r0, 0 - beq _08070D00 - movs r2, 0 - adds r6, r7, 0 -_08070CEA: - adds r0, r3, r2 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r0] - mvns r1, r1 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _08070CEA -_08070D00: - adds r1, r4, 0 - lsls r0, r5, 16 - lsrs r3, r0, 16 - cmp r1, 0 - bne _08070CD8 -_08070D0A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070D10: .4byte gPlttBufferFaded - thumb_func_end InvertPlttBuffer - - thumb_func_start TintPlttBuffer -TintPlttBuffer: @ 8070D14 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x4] - movs r0, 0 - mov r9, r0 - cmp r4, 0 - beq _08070DD0 - lsls r1, 24 - str r1, [sp, 0x8] -_08070D3E: - movs r0, 0x1 - ands r0, r4 - lsrs r4, 1 - str r4, [sp, 0xC] - movs r1, 0x10 - add r1, r9 - mov r10, r1 - cmp r0, 0 - beq _08070DC2 - movs r4, 0 - ldr r2, _08070DE0 @ =gPlttBufferFaded - mov r8, r2 - ldr r1, [sp] - lsls r0, r1, 24 - ldr r2, [sp, 0x4] - lsls r1, r2, 24 - ldr r2, [sp, 0x8] - asrs r2, 24 - mov r12, r2 - movs r5, 0x1F - asrs r7, r0, 24 - asrs r6, r1, 24 -_08070D6A: - mov r0, r9 - adds r2, r0, r4 - lsls r2, 1 - add r2, r8 - ldr r1, [r2] - lsls r1, 27 - lsrs r1, 27 - add r1, r12 - ands r1, r5 - ldrb r3, [r2] - movs r0, 0x20 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r2] - lsls r1, 22 - lsrs r1, 27 - adds r1, r7 - movs r0, 0x1F - ands r1, r0 - lsls r1, 5 - ldrh r3, [r2] - ldr r0, _08070DE4 @ =0xfffffc1f - ands r0, r3 - orrs r0, r1 - strh r0, [r2] - ldr r1, [r2] - lsls r1, 17 - lsrs r1, 27 - adds r1, r6 - ands r1, r5 - lsls r1, 2 - ldrb r3, [r2, 0x1] - movs r0, 0x7D - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08070D6A -_08070DC2: - ldr r4, [sp, 0xC] - mov r1, r10 - lsls r0, r1, 16 - lsrs r0, 16 - mov r9, r0 - cmp r4, 0 - bne _08070D3E -_08070DD0: - 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 -_08070DE0: .4byte gPlttBufferFaded -_08070DE4: .4byte 0xfffffc1f - thumb_func_end TintPlttBuffer - - thumb_func_start UnfadePlttBuffer -UnfadePlttBuffer: @ 8070DE8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r1, r0, 0 - movs r3, 0 - cmp r1, 0 - beq _08070E32 - ldr r0, _08070E3C @ =gPlttBufferFaded - mov r8, r0 - ldr r0, _08070E40 @ =gPlttBufferUnfaded - mov r12, r0 -_08070DFE: - movs r0, 0x1 - ands r0, r1 - lsrs r4, r1, 1 - adds r5, r3, 0 - adds r5, 0x10 - cmp r0, 0 - beq _08070E28 - movs r2, 0 - mov r7, r8 - mov r6, r12 -_08070E12: - adds r0, r3, r2 - lsls r0, 1 - adds r1, r0, r7 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _08070E12 -_08070E28: - adds r1, r4, 0 - lsls r0, r5, 16 - lsrs r3, r0, 16 - cmp r1, 0 - bne _08070DFE -_08070E32: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070E3C: .4byte gPlttBufferFaded -_08070E40: .4byte gPlttBufferUnfaded - thumb_func_end UnfadePlttBuffer - - thumb_func_start BeginFastPaletteFade -BeginFastPaletteFade: @ 8070E44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08070E64 @ =gPaletteFade - ldrb r2, [r3, 0xA] - movs r1, 0x79 - negs r1, r1 - ands r1, r2 - movs r2, 0x10 - orrs r1, r2 - strb r1, [r3, 0xA] - bl BeginFastPaletteFadeInternal - pop {r0} - bx r0 - .align 2, 0 -_08070E64: .4byte gPaletteFade - thumb_func_end BeginFastPaletteFade - - thumb_func_start BeginFastPaletteFadeInternal -BeginFastPaletteFadeInternal: @ 8070E68 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r2, _08070EDC @ =gPaletteFade - ldrh r0, [r2, 0x4] - movs r3, 0xF8 - lsls r3, 3 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2, 0x4] - movs r1, 0x3F - ands r1, r4 - ldrb r3, [r2, 0x8] - movs r0, 0x40 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x8] - ldrb r0, [r2, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x7] - ldrb r1, [r2, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - cmp r4, 0x2 - bne _08070EBA - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _08070EE0 @ =gPlttBufferFaded - ldr r2, _08070EE4 @ =0x01000200 - mov r0, sp - bl CpuSet -_08070EBA: - cmp r4, 0 - bne _08070ED0 - mov r0, sp - adds r0, 0x2 - ldr r2, _08070EE8 @ =0x00007fff - adds r1, r2, 0 - strh r1, [r0] - ldr r1, _08070EE0 @ =gPlttBufferFaded - ldr r2, _08070EE4 @ =0x01000200 - bl CpuSet -_08070ED0: - bl UpdatePaletteFade - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070EDC: .4byte gPaletteFade -_08070EE0: .4byte gPlttBufferFaded -_08070EE4: .4byte 0x01000200 -_08070EE8: .4byte 0x00007fff - thumb_func_end BeginFastPaletteFadeInternal - - thumb_func_start UpdateFastPaletteFade -UpdateFastPaletteFade: @ 8070EEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, _08070F08 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08070F0C - movs r0, 0 - b _08071246 - .align 2, 0 -_08070F08: .4byte gPaletteFade -_08070F0C: - bl IsSoftwarePaletteFadeFinishing - lsls r0, 24 - cmp r0, 0 - beq _08070F1A - ldrb r0, [r4, 0x7] - b _08071244 -_08070F1A: - ldrb r1, [r4, 0xA] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08070F30 - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x80 - lsls r0, 2 - mov r10, r0 - b _08070F38 -_08070F30: - movs r2, 0 - movs r1, 0x80 - lsls r1, 1 - mov r10, r1 -_08070F38: - ldr r1, _08070F50 @ =gPaletteFade - ldrb r0, [r1, 0x8] - lsls r0, 26 - lsrs r0, 26 - cmp r0, 0x1 - beq _08070FF8 - cmp r0, 0x1 - bgt _08070F54 - cmp r0, 0 - beq _08070F62 - b _08071148 - .align 2, 0 -_08070F50: .4byte gPaletteFade -_08070F54: - cmp r0, 0x2 - bne _08070F5A - b _0807105C -_08070F5A: - cmp r0, 0x3 - bne _08070F60 - b _080710E4 -_08070F60: - b _08071148 -_08070F62: - adds r7, r2, 0 - cmp r7, r10 - bcc _08070F6A - b _08071148 -_08070F6A: - lsls r2, r7, 1 - ldr r0, _08070FF0 @ =gPlttBufferUnfaded - adds r0, r2, r0 - ldr r1, [r0] - lsls r3, r1, 27 - lsls r0, r1, 22 - lsrs r0, 27 - mov r12, r0 - lsls r1, 17 - lsrs r1, 27 - mov r8, r1 - ldr r0, _08070FF4 @ =gPlttBufferFaded - adds r2, r0 - mov r9, r2 - ldr r1, [r2] - lsls r2, r1, 27 - lsrs r2, 3 - movs r4, 0xFE - lsls r4, 24 - adds r2, r4 - lsls r0, r1, 22 - lsrs r0, 27 - subs r0, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 17 - lsrs r1, 27 - subs r1, 0x2 - lsls r1, 24 - lsrs r4, r1, 24 - lsrs r6, r2, 24 - asrs r2, 24 - lsrs r3, 3 - asrs r0, r3, 24 - cmp r2, r0 - bge _08070FB4 - lsrs r6, r3, 24 -_08070FB4: - lsls r0, r5, 24 - asrs r0, 24 - mov r2, r12 - lsls r1, r2, 24 - cmp r0, r12 - bge _08070FC2 - lsrs r5, r1, 24 -_08070FC2: - lsls r0, r4, 24 - asrs r0, 24 - mov r3, r8 - lsls r1, r3, 24 - cmp r0, r8 - bge _08070FD0 - lsrs r4, r1, 24 -_08070FD0: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - mov r4, r9 - strh r1, [r4] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08070F6A - b _08071148 - .align 2, 0 -_08070FF0: .4byte gPlttBufferUnfaded -_08070FF4: .4byte gPlttBufferFaded -_08070FF8: - adds r7, r2, 0 - cmp r7, r10 - bcc _08071000 - b _08071148 -_08071000: - lsls r1, r7, 1 - ldr r0, _08071058 @ =gPlttBufferFaded - adds r2, r1, r0 - ldr r1, [r2] - lsls r0, r1, 27 - lsrs r0, 3 - movs r3, 0x80 - lsls r3, 18 - adds r0, r3 - lsrs r6, r0, 24 - lsls r0, r1, 22 - lsrs r0, 27 - adds r5, r0, 0x2 - lsls r1, 17 - lsrs r1, 27 - adds r4, r1, 0x2 - cmp r6, 0x1F - ble _08071026 - movs r6, 0x1F -_08071026: - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0x1F - ble _08071030 - movs r5, 0x1F -_08071030: - lsls r0, r4, 24 - asrs r0, 24 - cmp r0, 0x1F - ble _0807103A - movs r4, 0x1F -_0807103A: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08071000 - b _08071148 - .align 2, 0 -_08071058: .4byte gPlttBufferFaded -_0807105C: - adds r7, r2, 0 - cmp r7, r10 - bcs _08071148 -_08071062: - lsls r2, r7, 1 - ldr r0, _080710DC @ =gPlttBufferUnfaded - adds r0, r2, r0 - ldr r1, [r0] - lsls r3, r1, 27 - lsls r0, r1, 22 - lsrs r0, 27 - mov r12, r0 - lsls r1, 17 - lsrs r1, 27 - mov r8, r1 - ldr r0, _080710E0 @ =gPlttBufferFaded - adds r2, r0 - ldr r1, [r2] - lsls r0, r1, 27 - lsrs r0, 3 - movs r4, 0x80 - lsls r4, 18 - adds r0, r4 - lsrs r6, r0, 24 - lsls r0, r1, 22 - lsrs r0, 27 - adds r5, r0, 0x2 - lsls r1, 17 - lsrs r1, 27 - adds r4, r1, 0x2 - lsrs r3, 3 - asrs r0, r3, 24 - cmp r6, r0 - ble _080710A0 - lsrs r6, r3, 24 -_080710A0: - lsls r0, r5, 24 - asrs r0, 24 - mov r3, r12 - lsls r1, r3, 24 - cmp r0, r12 - ble _080710AE - lsrs r5, r1, 24 -_080710AE: - lsls r0, r4, 24 - asrs r0, 24 - mov r3, r8 - lsls r1, r3, 24 - cmp r0, r8 - ble _080710BC - lsrs r4, r1, 24 -_080710BC: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _08071062 - b _08071148 - .align 2, 0 -_080710DC: .4byte gPlttBufferUnfaded -_080710E0: .4byte gPlttBufferFaded -_080710E4: - adds r7, r2, 0 - cmp r7, r10 - bcs _08071148 - ldr r4, _08071170 @ =gPlttBufferFaded - mov r8, r4 -_080710EE: - lsls r0, r7, 1 - mov r1, r8 - adds r3, r0, r1 - ldr r1, [r3] - lsls r2, r1, 27 - lsrs r2, 3 - movs r4, 0xFE - lsls r4, 24 - adds r2, r4 - lsls r0, r1, 22 - lsrs r0, 27 - subs r0, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 17 - lsrs r1, 27 - subs r1, 0x2 - lsls r1, 24 - lsrs r4, r1, 24 - lsrs r6, r2, 24 - cmp r2, 0 - bge _0807111C - movs r6, 0 -_0807111C: - lsls r0, r5, 24 - cmp r0, 0 - bge _08071124 - movs r5, 0 -_08071124: - lsls r0, r4, 24 - cmp r0, 0 - bge _0807112C - movs r4, 0 -_0807112C: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 24 - asrs r0, 19 - orrs r1, r0 - lsls r0, r4, 24 - asrs r0, 14 - orrs r1, r0 - strh r1, [r3] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _080710EE -_08071148: - ldr r0, _08071174 @ =gPaletteFade - ldrb r2, [r0, 0xA] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r3, 0x5 - negs r3, r3 - ands r3, r2 - orrs r3, r1 - ldr r1, _08071174 @ =gPaletteFade - strb r3, [r1, 0xA] - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _08071178 - ldrb r0, [r1, 0x7] - b _08071244 - .align 2, 0 -_08071170: .4byte gPlttBufferFaded -_08071174: .4byte gPaletteFade -_08071178: - ldr r2, _08071194 @ =gPaletteFade - ldrh r4, [r2, 0x4] - lsls r5, r4, 21 - lsrs r0, r5, 27 - lsls r2, r3, 25 - lsrs r1, r2, 28 - subs r0, r1 - cmp r0, 0 - bge _0807119C - ldr r0, _08071198 @ =0xfffff83f - ands r0, r4 - ldr r3, _08071194 @ =gPaletteFade - strh r0, [r3, 0x4] - b _080711B2 - .align 2, 0 -_08071194: .4byte gPaletteFade -_08071198: .4byte 0xfffff83f -_0807119C: - lsrs r1, r5, 27 - lsrs r0, r2, 28 - subs r1, r0 - movs r0, 0x1F - ands r1, r0 - lsls r1, 6 - ldr r0, _080711D8 @ =0xfffff83f - ands r0, r4 - orrs r0, r1 - ldr r4, _080711DC @ =gPaletteFade - strh r0, [r4, 0x4] -_080711B2: - ldr r1, _080711DC @ =gPaletteFade - ldrh r0, [r1, 0x4] - movs r1, 0xF8 - lsls r1, 3 - ands r1, r0 - cmp r1, 0 - bne _08071240 - ldr r2, _080711DC @ =gPaletteFade - ldrb r0, [r2, 0x8] - lsls r0, 26 - lsrs r0, 26 - cmp r0, 0x1 - beq _08071204 - cmp r0, 0x1 - bgt _080711E0 - cmp r0, 0 - beq _080711EA - b _0807122C - .align 2, 0 -_080711D8: .4byte 0xfffff83f -_080711DC: .4byte gPaletteFade -_080711E0: - cmp r0, 0x2 - beq _080711EA - cmp r0, 0x3 - beq _08071220 - b _0807122C -_080711EA: - ldr r0, _080711F8 @ =gPlttBufferUnfaded - ldr r1, _080711FC @ =gPlttBufferFaded - ldr r2, _08071200 @ =0x04000100 - bl CpuSet - b _0807122C - .align 2, 0 -_080711F8: .4byte gPlttBufferUnfaded -_080711FC: .4byte gPlttBufferFaded -_08071200: .4byte 0x04000100 -_08071204: - movs r0, 0x1 - negs r0, r0 - str r0, [sp] - ldr r1, _08071218 @ =gPlttBufferFaded - ldr r2, _0807121C @ =0x05000100 - mov r0, sp - bl CpuSet - b _0807122C - .align 2, 0 -_08071218: .4byte gPlttBufferFaded -_0807121C: .4byte 0x05000100 -_08071220: - str r1, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, _08071258 @ =gPlttBufferFaded - ldr r2, _0807125C @ =0x05000100 - bl CpuSet -_0807122C: - ldr r2, _08071260 @ =gPaletteFade - ldrb r1, [r2, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldrb r0, [r2, 0xA] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0xA] -_08071240: - ldr r3, _08071260 @ =gPaletteFade - ldrb r0, [r3, 0x7] -_08071244: - lsrs r0, 7 -_08071246: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08071258: .4byte gPlttBufferFaded -_0807125C: .4byte 0x05000100 -_08071260: .4byte gPaletteFade - thumb_func_end UpdateFastPaletteFade - - thumb_func_start BeginHardwarePaletteFade -BeginHardwarePaletteFade: @ 8071264 - push {r4-r7,lr} - ldr r5, [sp, 0x14] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r7, _080712EC @ =gPaletteFade - str r0, [r7] - movs r0, 0x3F - ands r1, r0 - ldrb r4, [r7, 0x4] - movs r6, 0x40 - negs r6, r6 - adds r0, r6, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r7, 0x4] - ldrb r0, [r7, 0x8] - ands r6, r0 - orrs r6, r1 - strb r6, [r7, 0x8] - movs r0, 0x1F - adds r1, r2, 0 - ands r1, r0 - lsls r1, 6 - ldrh r4, [r7, 0x4] - ldr r0, _080712F0 @ =0xfffff83f - ands r0, r4 - orrs r0, r1 - strh r0, [r7, 0x4] - lsls r4, r3, 3 - ldrb r1, [r7, 0x5] - movs r0, 0x7 - ands r0, r1 - orrs r0, r4 - strb r0, [r7, 0x5] - ldrb r0, [r7, 0x7] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r7, 0x7] - ldrb r1, [r7, 0x9] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - movs r1, 0x1 - ands r5, r1 - lsls r5, 2 - subs r1, 0x6 - ands r0, r1 - orrs r0, r5 - subs r1, 0x4 - ands r0, r1 - strb r0, [r7, 0x9] - cmp r2, r3 - bcs _080712F4 - movs r0, 0x41 - negs r0, r0 - ands r6, r0 - b _080712F8 - .align 2, 0 -_080712EC: .4byte gPaletteFade -_080712F0: .4byte 0xfffff83f -_080712F4: - movs r0, 0x40 - orrs r6, r0 -_080712F8: - strb r6, [r7, 0x8] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BeginHardwarePaletteFade - - thumb_func_start UpdateHardwarePaletteFade -UpdateHardwarePaletteFade: @ 8071300 - push {r4-r7,lr} - ldr r2, _08071314 @ =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - adds r4, r2, 0 - cmp r0, 0 - bne _08071318 - movs r0, 0 - b _08071410 - .align 2, 0 -_08071314: .4byte gPaletteFade -_08071318: - ldrb r2, [r4, 0x4] - lsls r1, r2, 26 - ldrb r3, [r4, 0x8] - lsls r0, r3, 26 - cmp r1, r0 - bcs _0807133A - lsrs r0, r1, 26 - adds r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x4] - movs r0, 0x2 - b _08071410 -_0807133A: - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - strb r0, [r4, 0x4] - movs r0, 0x40 - ands r0, r3 - cmp r0, 0 - bne _08071398 - ldrh r1, [r4, 0x4] - lsls r0, r1, 21 - lsrs r0, 27 - adds r0, 0x1 - movs r7, 0x1F - ands r0, r7 - lsls r0, 6 - ldr r6, _08071394 @ =0xfffff83f - adds r3, r6, 0 - ands r3, r1 - orrs r3, r0 - strh r3, [r4, 0x4] - lsls r5, r3, 21 - ldrb r0, [r4, 0x5] - lsrs r1, r5, 27 - lsrs r0, 3 - cmp r1, r0 - bls _080713E4 - ldrb r2, [r4, 0x9] - lsls r1, r2, 28 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 3 - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x9] - lsrs r0, r5, 27 - subs r0, 0x1 - ands r0, r7 - lsls r0, 6 - ands r3, r6 - b _080713E0 - .align 2, 0 -_08071394: .4byte 0xfffff83f -_08071398: - ldrh r2, [r4, 0x4] - lsls r1, r2, 21 - lsrs r0, r1, 27 - subs r0, 0x1 - movs r6, 0x1F - ands r0, r6 - lsls r0, 6 - ldr r5, _08071418 @ =0xfffff83f - adds r3, r5, 0 - ands r3, r2 - orrs r3, r0 - strh r3, [r4, 0x4] - lsrs r1, 27 - subs r1, 0x1 - ldrb r0, [r4, 0x5] - lsrs r0, 3 - cmp r1, r0 - bge _080713E4 - ldrb r2, [r4, 0x9] - lsls r1, r2, 28 - lsrs r1, 31 - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - lsls r1, 3 - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x9] - lsls r0, r3, 21 - lsrs r0, 27 - adds r0, 0x1 - ands r0, r6 - lsls r0, 6 - ands r3, r5 -_080713E0: - orrs r3, r0 - strh r3, [r4, 0x4] -_080713E4: - ldrb r1, [r4, 0x9] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0807140C - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08071402 - movs r0, 0 - str r0, [r4] - ldrh r1, [r4, 0x4] - ldr r0, _08071418 @ =0xfffff83f - ands r0, r1 - strh r0, [r4, 0x4] -_08071402: - ldrb r1, [r4, 0x9] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x9] -_0807140C: - ldrb r0, [r4, 0x7] - lsrs r0, 7 -_08071410: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08071418: .4byte 0xfffff83f - thumb_func_end UpdateHardwarePaletteFade - - thumb_func_start UpdateBlendRegisters -UpdateBlendRegisters: @ 807141C - push {r4,lr} - ldr r4, _08071468 @ =gPaletteFade - ldrh r1, [r4] - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x4] - lsls r1, 21 - lsrs r1, 27 - movs r0, 0x54 - bl SetGpuReg - ldrb r1, [r4, 0x9] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08071460 - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - negs r1, r1 - ands r0, r1 - strb r0, [r4, 0x9] - movs r0, 0 - str r0, [r4] - ldrh r1, [r4, 0x4] - ldr r0, _0807146C @ =0xfffff83f - ands r0, r1 - strh r0, [r4, 0x4] - ldrb r1, [r4, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x7] -_08071460: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08071468: .4byte gPaletteFade -_0807146C: .4byte 0xfffff83f - thumb_func_end UpdateBlendRegisters - - thumb_func_start IsSoftwarePaletteFadeFinishing -IsSoftwarePaletteFadeFinishing: @ 8071470 - push {r4,lr} - ldr r3, _080714A8 @ =gPaletteFade - ldrb r4, [r3, 0xA] - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _080714CC - ldr r2, [r3, 0x8] - movs r0, 0xF8 - lsls r0, 9 - ands r0, r2 - movs r1, 0x80 - lsls r1, 7 - cmp r0, r1 - bne _080714B0 - ldrb r1, [r3, 0x7] - movs r0, 0x7F - ands r0, r1 - strb r0, [r3, 0x7] - movs r0, 0x3 - negs r0, r0 - ands r0, r4 - strb r0, [r3, 0xA] - ldr r0, [r3, 0x8] - ldr r1, _080714AC @ =0xfffe0fff - ands r0, r1 - str r0, [r3, 0x8] - b _080714C4 - .align 2, 0 -_080714A8: .4byte gPaletteFade -_080714AC: .4byte 0xfffe0fff -_080714B0: - lsls r0, r2, 15 - lsrs r0, 27 - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - lsls r0, 12 - ldr r1, _080714C8 @ =0xfffe0fff - ands r1, r2 - orrs r1, r0 - str r1, [r3, 0x8] -_080714C4: - movs r0, 0x1 - b _080714CE - .align 2, 0 -_080714C8: .4byte 0xfffe0fff -_080714CC: - movs r0, 0 -_080714CE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsSoftwarePaletteFadeFinishing - - thumb_func_start BlendPalettes -BlendPalettes: @ 80714D4 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 16 - lsrs r6, r2, 16 - movs r5, 0 - cmp r4, 0 - beq _08071508 -_080714E6: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080714FA - adds r0, r5, 0 - movs r1, 0x10 - adds r2, r7, 0 - adds r3, r6, 0 - bl BlendPalette -_080714FA: - lsrs r4, 1 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - bne _080714E6 -_08071508: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BlendPalettes - - thumb_func_start BlendPalettesUnfaded -BlendPalettesUnfaded: @ 8071510 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _0807153C @ =gPlttBufferUnfaded - ldr r1, _08071540 @ =gPlttBufferFaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl BlendPalettes - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807153C: .4byte gPlttBufferUnfaded -_08071540: .4byte gPlttBufferFaded - thumb_func_end BlendPalettesUnfaded - - thumb_func_start TintPalette_GrayScale -TintPalette_GrayScale: @ 8071544 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _0807158C - movs r6, 0x1F - adds r5, r1, 0 -_08071554: - ldrh r1, [r4] - movs r2, 0x1F - ands r2, r1 - lsls r1, 16 - lsrs r3, r1, 21 - ands r3, r6 - lsrs r1, 26 - ands r1, r6 - movs r0, 0x4C - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071554 -_0807158C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end TintPalette_GrayScale - - thumb_func_start TintPalette_GrayScale2 -TintPalette_GrayScale2: @ 8071594 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _080715E8 - movs r6, 0x1F - ldr r7, _080715F0 @ =gUnknown_83AC970 - adds r5, r1, 0 -_080715A6: - ldrh r1, [r4] - movs r2, 0x1F - ands r2, r1 - lsls r1, 16 - lsrs r3, r1, 21 - ands r3, r6 - lsrs r1, 26 - ands r1, r6 - movs r0, 0x4C - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - cmp r2, 0x1F - bls _080715D2 - movs r2, 0x1F -_080715D2: - adds r0, r2, r7 - ldrb r2, [r0] - lsls r0, r2, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r4] - adds r4, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _080715A6 -_080715E8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080715F0: .4byte gUnknown_83AC970 - thumb_func_end TintPalette_GrayScale2 - - thumb_func_start TintPalette_SepiaTone -TintPalette_SepiaTone: @ 80715F4 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _08071656 - movs r7, 0x1F - adds r6, r1, 0 -_08071604: - ldrh r0, [r5] - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r7 - lsrs r3, r0, 26 - ands r3, r7 - movs r0, 0x4C - muls r1, r0 - movs r0, 0x97 - muls r0, r2 - adds r1, r0 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r3 - adds r1, r0 - asrs r1, 8 - ldr r0, _0807165C @ =0x00000133 - muls r0, r1 - lsls r0, 16 - lsrs r2, r0, 24 - lsls r0, r1, 24 - lsrs r4, r0, 24 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 20 - lsrs r3, r0, 24 - cmp r2, 0x1F - ble _08071644 - movs r2, 0x1F -_08071644: - lsls r0, r3, 10 - lsls r1, r4, 5 - orrs r0, r1 - orrs r0, r2 - strh r0, [r5] - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bne _08071604 -_08071656: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807165C: .4byte 0x00000133 - thumb_func_end TintPalette_SepiaTone - - thumb_func_start sub_8071660 -sub_8071660: @ 8071660 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - cmp r1, 0 - beq _080716EC - movs r7, 0x1F - adds r6, r1, 0 -_0807168A: - ldrh r0, [r5] - movs r1, 0x1F - ands r1, r0 - lsls r0, 16 - lsrs r2, r0, 21 - ands r2, r7 - lsrs r3, r0, 26 - ands r3, r7 - movs r0, 0x4C - muls r1, r0 - movs r0, 0x97 - muls r0, r2 - adds r1, r0 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r3 - adds r1, r0 - asrs r1, 8 - mov r0, r9 - muls r0, r1 - lsls r0, 16 - lsrs r4, r0, 24 - mov r0, r8 - muls r0, r1 - lsls r0, 16 - lsrs r2, r0, 24 - mov r0, r12 - muls r0, r1 - lsls r0, 16 - lsrs r3, r0, 24 - cmp r4, 0x1F - ble _080716CE - movs r4, 0x1F -_080716CE: - cmp r2, 0x1F - ble _080716D4 - movs r2, 0x1F -_080716D4: - cmp r3, 0x1F - ble _080716DA - movs r3, 0x1F -_080716DA: - lsls r0, r3, 10 - lsls r1, r2, 5 - orrs r0, r1 - orrs r0, r4 - strh r0, [r5] - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bne _0807168A -_080716EC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8071660 - - thumb_func_start sub_80716F8 -sub_80716F8: @ 80716F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - adds r6, r1, 0 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 24 - lsrs r3, 24 - mov r12, r3 - cmp r3, 0 - bne _0807172C - cmp r2, 0 - beq _0807179A - adds r5, r2, 0 -_08071718: - mov r1, r9 - ldrh r0, [r1] - strh r0, [r6] - movs r7, 0x2 - add r9, r7 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071718 - b _0807179A -_0807172C: - cmp r2, 0 - beq _0807179A - movs r0, 0x1F - mov r8, r0 - adds r5, r2, 0 -_08071736: - mov r7, r9 - ldrh r1, [r7] - movs r4, 0x1F - ands r4, r1 - lsls r1, 16 - lsrs r3, r1, 21 - mov r0, r8 - ands r3, r0 - lsrs r1, 26 - ands r1, r0 - movs r0, 0x4C - adds r2, r4, 0 - muls r2, r0 - movs r0, 0x97 - muls r0, r3 - adds r2, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r1 - adds r2, r0 - asrs r2, 8 - subs r0, r2, r4 - mov r7, r12 - muls r7, r0 - adds r0, r7, 0 - lsrs r0, 4 - adds r4, r0 - subs r0, r2, r3 - mov r7, r12 - muls r7, r0 - adds r0, r7, 0 - lsrs r0, 4 - adds r3, r0 - subs r2, r1 - mov r0, r12 - muls r0, r2 - lsrs r0, 4 - adds r1, r0 - lsls r1, 10 - lsls r3, 5 - orrs r1, r3 - orrs r1, r4 - strh r1, [r6] - movs r0, 0x2 - add r9, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08071736 -_0807179A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80716F8 - - thumb_func_start sub_80717A8 -sub_80717A8: @ 80717A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - adds r4, r1, 0 - ldr r0, [sp, 0x20] - ldr r1, [sp, 0x24] - ldr r5, [sp, 0x28] - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - ldr r0, _08071800 @ =sub_80718B8 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08071804 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - strh r7, [r1, 0x8] - strh r6, [r1, 0xA] - lsls r4, 24 - asrs r4, 24 - cmp r4, 0 - blt _08071808 - strh r4, [r1, 0xE] - movs r0, 0x1 - b _08071810 - .align 2, 0 -_08071800: .4byte sub_80718B8 -_08071804: .4byte gTasks -_08071808: - movs r0, 0 - strh r0, [r1, 0xE] - negs r0, r4 - adds r0, 0x1 -_08071810: - strh r0, [r1, 0xC] - lsls r4, r5, 2 - cmp r6, r7 - bcs _08071828 - ldr r0, _08071858 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0xC - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0xC] -_08071828: - adds r0, r5, 0 - movs r1, 0x5 - mov r2, r10 - bl SetWordTaskArg - ldr r0, _08071858 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 - mov r0, r9 - strh r0, [r1, 0x16] - mov r2, r8 - strh r2, [r1, 0x18] - ldr r1, [r1] - adds r0, r5, 0 - bl _call_via_r1 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08071858: .4byte gTasks - thumb_func_end sub_80717A8 - - thumb_func_start sub_807185C -sub_807185C: @ 807185C - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r4, _08071880 @ =sub_80718B8 - ldr r1, _08071884 @ =gTasks -_08071868: - ldrb r0, [r1, 0x4] - cmp r0, 0x1 - bne _08071888 - ldr r0, [r1] - cmp r0, r4 - bne _08071888 - movs r5, 0x18 - ldrsh r0, [r1, r5] - cmp r0, r3 - bne _08071888 - movs r0, 0x1 - b _08071892 - .align 2, 0 -_08071880: .4byte sub_80718B8 -_08071884: .4byte gTasks -_08071888: - adds r1, 0x28 - adds r2, 0x1 - cmp r2, 0xF - ble _08071868 - movs r0, 0 -_08071892: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807185C - - thumb_func_start sub_8071898 -sub_8071898: @ 8071898 - push {lr} - b _080718A0 -_0807189C: - bl DestroyTask -_080718A0: - ldr r0, _080718B4 @ =sub_80718B8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0807189C - pop {r0} - bx r0 - .align 2, 0 -_080718B4: .4byte sub_80718B8 - thumb_func_end sub_8071898 - - thumb_func_start sub_80718B8 -sub_80718B8: @ 80718B8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807190C @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r5, 0 - movs r1, 0x5 - bl GetWordTaskArg - adds r3, r0, 0 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x6 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _08071930 - movs r0, 0 - strh r0, [r4, 0x8] - ldrb r1, [r4] - ldrh r2, [r4, 0xE] - adds r0, r3, 0 - bl BlendPalettes - ldrh r1, [r4] - movs r6, 0 - ldrsh r0, [r4, r6] - ldrh r3, [r4, 0x2] - movs r6, 0x2 - ldrsh r2, [r4, r6] - cmp r0, r2 - bne _08071910 - adds r0, r5, 0 - bl DestroyTask - b _08071930 - .align 2, 0 -_0807190C: .4byte gTasks+0x8 -_08071910: - ldrh r0, [r4, 0x4] - adds r1, r0 - strh r1, [r4] - lsls r0, 16 - cmp r0, 0 - blt _08071926 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r2 - blt _08071930 - b _0807192E -_08071926: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r2 - bgt _08071930 -_0807192E: - strh r3, [r4] -_08071930: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80718B8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s index fd681addf..7c040f7b8 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -3805,7 +3805,7 @@ _080C1D24: ldrh r1, [r1] str r1, [sp] movs r1, 0x30 - bl sub_8071660 + bl TintPalette_CustomTone ldr r0, [r7] adds r0, r5 movs r1, 0xD0 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 234e19676..787a9748a 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -3283,7 +3283,7 @@ _0808AB50: movs r1, 0x60 movs r2, 0 movs r3, 0 - bl sub_8071660 + bl TintPalette_CustomTone b _0808AB88 .align 2, 0 _0808AB64: .4byte 0x00000396 @@ -3297,7 +3297,7 @@ _0808AB68: lsls r1, 1 str r1, [sp] movs r1, 0x60 - bl sub_8071660 + bl TintPalette_CustomTone b _0808AB88 _0808AB80: adds r0, r4, r5 diff --git a/data/palette.s b/data/palette.s deleted file mode 100644 index fc479bbd6..000000000 --- a/data/palette.s +++ /dev/null @@ -1,18 +0,0 @@ - .section .rodata - .align 2 -gUnknown_83AC960:: @ 83AC960 - .2byte 0xFFFF - .align 2 - .4byte 0 - .2byte 0 - .byte 0, 0x20, 0 - - .align 2 -gUnknown_83AC970:: @ 83AC970 - .byte 0, 0, 0, 0, 0 - .byte 5, 5, 5, 5, 5 - .byte 11, 11, 11, 11, 11 - .byte 16, 16, 16, 16, 16 - .byte 21, 21, 21, 21, 21 - .byte 27, 27, 27, 27, 27 - .byte 31, 31 diff --git a/include/fldeff.h b/include/fldeff.h index e3f703947..25d5b8d43 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -7,6 +7,7 @@ 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/include/graphics.h b/include/graphics.h index d8858b36f..e8d4f9cee 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -176,7 +176,7 @@ extern const u32 gTradeGba_Gfx[]; extern const u8 gUnknown_8E86240[]; extern const u8 gUnknown_8E86BE8[]; extern const u8 gUnknown_8E86D6C[]; -extern const u8 gUnknown_8E86F98[]; +extern const u32 gUnknown_8E86F98[]; // berry_fix_program extern const u8 gBerryFixGameboy_Gfx[]; @@ -201,7 +201,7 @@ extern const u8 gBerryFixWindow_Pal[]; // item_pc extern const u8 gItemPcTiles[]; -extern const u8 gItemPcBgPals[]; +extern const u32 gItemPcBgPals[]; extern const u8 gItemPcTilemap[]; // item_menu_icons diff --git a/include/palette.h b/include/palette.h index 300236d1e..145d6e6b6 100644 --- a/include/palette.h +++ b/include/palette.h @@ -3,8 +3,6 @@ #include "global.h" -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade @@ -13,10 +11,15 @@ #define PLTT_BUFFER_SIZE 0x200 #define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) +#define PALETTE_FADE_STATUS_DELAY 2 +#define PALETTE_FADE_STATUS_ACTIVE 1 +#define PALETTE_FADE_STATUS_DONE 0 +#define PALETTE_FADE_STATUS_LOADING 0xFF + enum { FAST_FADE_IN_FROM_WHITE, - FAST_FADE_OUT_TO_WHTIE, + FAST_FADE_OUT_TO_WHITE, FAST_FADE_IN_FROM_BLACK, FAST_FADE_OUT_TO_BLACK, }; @@ -39,44 +42,39 @@ struct PaletteFadeControl u16 softwareFadeFinishing:1; u16 objPaletteToggle:1; u8 deltaY:4; // rate of change of blend coefficient + u32 unused; }; extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; -extern u8 *gUnknown_203AAB0; extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; -void LoadCompressedPalette(const void *, u16, u16); -void LoadPalette(const void *, u16, u16); -void FillPalette(u16, u16, u16); +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size); +void LoadPalette(const void *src, u16 offset, u16 size); +void FillPalette(u16 value, u16 offset, u16 size); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); void ReadPlttIntoBuffers(void); -bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16); -void unref_sub_8073D84(u8, u32 *); -void ResetPaletteStructByUid(u16); -void ResetPaletteStruct(u8); -void ResetPaletteFadeControl(); -void unref_sub_8074168(u16); -void unref_sub_8074194(u16); -void InvertPlttBuffer(u32); -void TintPlttBuffer(u32, s8, s8, s8); -void UnfadePlttBuffer(u32); -void BeginFastPaletteFade(u8); -void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); -void BlendPalettes(u32, u8, u16); -void BlendPalettesUnfaded(u32, u8, u16); -void sub_80716F8(const u16 *, u16 *, u16, u8); -void TintPalette_GrayScale(u16 *, u16); -void TintPalette_GrayScale2(u16 *, u16); -void TintPalette_SepiaTone(u16 *, u16); -void sub_80717A8(u32, s8, u8, u8, u16, u8, u8); -bool32 sub_807185C(u8); +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor); +void ResetPaletteFadeControl(void); +void InvertPlttBuffer(u32 selectedPalettes); +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b); +void UnfadePlttBuffer(u32 selectedPalettes); +void BeginFastPaletteFade(u8 submode); +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters); +void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color); +void TintPalette_GrayScale(u16 *palette, u16 count); +void TintPalette_GrayScale2(u16 *palette, u16 count); +void TintPalette_SepiaTone(u16 *palette, u16 count); +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone); +void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4); +void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); +bool32 sub_807185C(u8 var); void sub_8071898(void); - -extern struct PaletteFadeControl gPaletteFade; +void ResetPaletteStructByUid(u16 a1); +void ResetPaletteStruct(u8 paletteNum); #endif // GUARD_PALETTE_H diff --git a/ld_script.txt b/ld_script.txt index 131b6b4e9..97e7171fc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -108,7 +108,7 @@ SECTIONS { asm/field_tasks.o(.text); asm/start_menu.o(.text); src/tileset_anims.o(.text); - asm/palette.o(.text); + src/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); asm/battle_anim_mons.o(.text); @@ -407,7 +407,7 @@ SECTIONS { data/field_tasks.o(.rodata); data/start_menu.o(.rodata); data/tileset_anims.o(.rodata); - data/palette.o(.rodata); + src/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); data/map_events.o(.rodata); diff --git a/src/palette.c b/src/palette.c new file mode 100644 index 000000000..458b90071 --- /dev/null +++ b/src/palette.c @@ -0,0 +1,987 @@ +#include "global.h" +#include "palette.h" +#include "util.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "task.h" + +enum +{ + NORMAL_FADE, + FAST_FADE, + HARDWARE_FADE, +}; + +// unused palette struct +struct PaletteStructTemplate +{ + u16 uid; + u16 *src; + u16 pst_field_8_0:1; + u16 pst_field_8_1:9; + u16 size:5; + u16 pst_field_9_7:1; + u8 pst_field_A; + u8 srcCount:5; + u8 pst_field_B_5:3; + u8 pst_field_C; +}; + +struct PaletteStruct +{ + const struct PaletteStructTemplate *base; + u32 ps_field_4_0:1; + u16 ps_field_4_1:1; + u32 baseDestOffset:9; + u16 destOffset:10; + u16 srcIndex:7; + u8 ps_field_8; + u8 ps_field_9; +}; + +static void sub_8070790(struct PaletteStruct *, u32 *); +static void sub_80708F4(struct PaletteStruct *, u32 *); +static void sub_80709B4(struct PaletteStruct *); +static u8 GetPaletteNumByUid(u16); +static u8 UpdateNormalPaletteFade(void); +static void BeginFastPaletteFadeInternal(u8); +static u8 UpdateFastPaletteFade(void); +static u8 UpdateHardwarePaletteFade(void); +static void UpdateBlendRegisters(void); +static bool8 IsSoftwarePaletteFadeFinishing(void); +static void sub_80718B8(u8 taskId); + +ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; +ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; +EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; +EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; +static EWRAM_DATA u32 sPlttBufferTransferPending = 0; +EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; + +static const struct PaletteStructTemplate gDummyPaletteStructTemplate = +{ + .uid = 0xFFFF, + .pst_field_B_5 = 1 +}; + +static const u8 sRoundedDownGrayscaleMap[] = +{ + 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, + 11, 11, 11, 11, 11, + 16, 16, 16, 16, 16, + 21, 21, 21, 21, 21, + 27, 27, 27, 27, 27, + 31, 31 +}; + +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size) +{ + LZDecompressWram(src, gPaletteDecompressionBuffer); + CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size); + CpuCopy16(gPaletteDecompressionBuffer, gPlttBufferFaded + offset, size); +} + +void LoadPalette(const void *src, u16 offset, u16 size) +{ + CpuCopy16(src, gPlttBufferUnfaded + offset, size); + CpuCopy16(src, gPlttBufferFaded + offset, size); +} + +void FillPalette(u16 value, u16 offset, u16 size) +{ + CpuFill16(value, gPlttBufferUnfaded + offset, size); + CpuFill16(value, gPlttBufferFaded + offset, size); +} + +void TransferPlttBuffer(void) +{ + if (!gPaletteFade.bufferTransferDisabled) + { + void *src = gPlttBufferFaded; + void *dest = (void *)PLTT; + DmaCopy16(3, src, dest, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + } +} + +u8 UpdatePaletteFade(void) +{ + u8 result; + u8 dummy = 0; + + if (sPlttBufferTransferPending) + return PALETTE_FADE_STATUS_LOADING; + if (gPaletteFade.mode == NORMAL_FADE) + result = UpdateNormalPaletteFade(); + else if (gPaletteFade.mode == FAST_FADE) + result = UpdateFastPaletteFade(); + else + result = UpdateHardwarePaletteFade(); + sPlttBufferTransferPending = gPaletteFade.multipurpose1 | dummy; + return result; +} + +void ResetPaletteFade(void) +{ + u8 i; + + for (i = 0; i < 16; ++i) + ResetPaletteStruct(i); + ResetPaletteFadeControl(); +} + +void ReadPlttIntoBuffers(void) +{ + u16 i; + u16 *pltt = (u16 *)PLTT; + + for (i = 0; i < PLTT_SIZE / 2; ++i) + { + gPlttBufferUnfaded[i] = pltt[i]; + gPlttBufferFaded[i] = pltt[i]; + } +} + +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor) +{ + u8 temp; + u16 color = blendColor; + + if (gPaletteFade.active) + { + return FALSE; + } + else + { + gPaletteFade.deltaY = 2; + if (delay < 0) + { + gPaletteFade.deltaY += (delay * -1); + delay = 0; + } + gPaletteFade_selectedPalettes = selectedPalettes; + gPaletteFade.delayCounter = delay; + gPaletteFade_delay = delay; + gPaletteFade.y = startY; + gPaletteFade.targetY = targetY; + gPaletteFade.blendColor = color; + gPaletteFade.active = TRUE; + gPaletteFade.mode = NORMAL_FADE; + if (startY < targetY) + gPaletteFade.yDec = FALSE; + else + gPaletteFade.yDec = TRUE; + UpdatePaletteFade(); + temp = gPaletteFade.bufferTransferDisabled; + gPaletteFade.bufferTransferDisabled = FALSE; + CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + gPaletteFade.bufferTransferDisabled = temp; + return TRUE; + } +} + +// not used +static bool8 sub_80706D0(u32 a1, u8 a2, u8 a3, u8 a4, u16 a5) +{ + ReadPlttIntoBuffers(); + return BeginNormalPaletteFade(a1, a2, a3, a4, a5); +} + +// not used +static void sub_8070718(u8 a1, u32 *a2) +{ + u8 i; + + for (i = 0; i < 16; ++i) + { + struct PaletteStruct *palstruct = &sPaletteStructs[i]; + + if (palstruct->ps_field_4_0) + { + if (palstruct->base->pst_field_8_0 == a1) + { + u8 val1 = palstruct->srcIndex; + u8 val2 = palstruct->base->srcCount; + + if (val1 == val2) + { + sub_80709B4(palstruct); + if (!palstruct->ps_field_4_0) + continue; + } + if (palstruct->ps_field_8 == 0) + sub_8070790(palstruct, a2); + else + --palstruct->ps_field_8; + sub_80708F4(palstruct, a2); + } + } + } +} + +// not used +static void sub_8070790(struct PaletteStruct *a1, u32 *a2) +{ + s32 srcIndex; + s32 srcCount; + u8 i = 0; + u16 srcOffset = a1->srcIndex * a1->base->size; + + if (!a1->base->pst_field_8_0) + { + while (i < a1->base->size) + { + gPlttBufferUnfaded[a1->destOffset] = a1->base->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset]; + ++i; + ++a1->destOffset; + ++srcOffset; + } + } + else + { + while (i < a1->base->size) + { + gPlttBufferFaded[a1->destOffset] = a1->base->src[srcOffset]; + ++i; + ++a1->destOffset; + ++srcOffset; + } + } + a1->destOffset = a1->baseDestOffset; + a1->ps_field_8 = a1->base->pst_field_A; + ++a1->srcIndex; + srcIndex = a1->srcIndex; + srcCount = a1->base->srcCount; + if (srcIndex >= srcCount) + { + if (a1->ps_field_9) + --a1->ps_field_9; + a1->srcIndex = 0; + } + *a2 |= 1 << (a1->baseDestOffset >> 4); +} + +// not used +static void sub_80708F4(struct PaletteStruct *a1, u32 *a2) +{ + if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) + { + if (!a1->base->pst_field_8_0) + { + if (gPaletteFade.delayCounter != gPaletteFade_delay) + BlendPalette(a1->baseDestOffset, + a1->base->size, + gPaletteFade.y, + gPaletteFade.blendColor); + } + else + { + if (!gPaletteFade.delayCounter) + { + if (a1->ps_field_8 != a1->base->pst_field_A) + { + u32 srcOffset = a1->srcIndex * a1->base->size; + u8 i; + + for (i = 0; i < a1->base->size; ++i) + gPlttBufferFaded[a1->baseDestOffset + i] = a1->base->src[srcOffset + i]; + } + } + } + } +} + +// not used +static void sub_80709B4(struct PaletteStruct *a1) +{ + if (!a1->ps_field_9) + { + s32 val = a1->base->pst_field_B_5; + + if (!val) + { + a1->srcIndex = 0; + a1->ps_field_8 = a1->base->pst_field_A; + a1->ps_field_9 = a1->base->pst_field_C; + a1->destOffset = a1->baseDestOffset; + } + else + { + if (val < 0) + return; + if (val > 2) + return; + ResetPaletteStructByUid(a1->base->uid); + } + } + else + { + --a1->ps_field_9; + } +} + +void ResetPaletteStructByUid(u16 a1) +{ + u8 paletteNum = GetPaletteNumByUid(a1); + if (paletteNum != 16) + ResetPaletteStruct(paletteNum); +} + +void ResetPaletteStruct(u8 paletteNum) +{ + sPaletteStructs[paletteNum].base = &gDummyPaletteStructTemplate; + sPaletteStructs[paletteNum].ps_field_4_0 = 0; + sPaletteStructs[paletteNum].baseDestOffset = 0; + sPaletteStructs[paletteNum].destOffset = 0; + sPaletteStructs[paletteNum].srcIndex = 0; + sPaletteStructs[paletteNum].ps_field_4_1 = 0; + sPaletteStructs[paletteNum].ps_field_8 = 0; + sPaletteStructs[paletteNum].ps_field_9 = 0; +} + +void ResetPaletteFadeControl(void) +{ + gPaletteFade.multipurpose1 = 0; + gPaletteFade.multipurpose2 = 0; + gPaletteFade.delayCounter = 0; + gPaletteFade.y = 0; + gPaletteFade.targetY = 0; + gPaletteFade.blendColor = 0; + gPaletteFade.active = FALSE; + gPaletteFade.multipurpose2 = 0; // assign same value twice + gPaletteFade.yDec = FALSE; + gPaletteFade.bufferTransferDisabled = FALSE; + gPaletteFade.shouldResetBlendRegisters = FALSE; + gPaletteFade.hardwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishingCounter = 0; + gPaletteFade.objPaletteToggle = 0; + gPaletteFade.deltaY = 2; +} + +// not used +static void sub_8070AFC(u16 uid) +{ + u8 paletteNum = GetPaletteNumByUid(uid); + if (paletteNum != 16) + sPaletteStructs[paletteNum].ps_field_4_1 = 1; +} + +// not used +static void sub_8070B28(u16 uid) +{ + u8 paletteNum = GetPaletteNumByUid(uid); + if (paletteNum != 16) + sPaletteStructs[paletteNum].ps_field_4_1 = 0; +} + +// not used +static u8 GetPaletteNumByUid(u16 uid) +{ + u8 i; + + for (i = 0; i < 16; ++i) + if (sPaletteStructs[i].base->uid == uid) + return i; + return 16; +} + +static u8 UpdateNormalPaletteFade(void) +{ + u16 paletteOffset; + u16 selectedPalettes; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (IsSoftwarePaletteFadeFinishing()) + { + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + } + else + { + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.delayCounter < gPaletteFade_delay) + { + ++gPaletteFade.delayCounter; + return 2; + } + gPaletteFade.delayCounter = 0; + } + paletteOffset = 0; + if (!gPaletteFade.objPaletteToggle) + { + selectedPalettes = gPaletteFade_selectedPalettes; + } + else + { + selectedPalettes = gPaletteFade_selectedPalettes >> 16; + paletteOffset = 256; + } + while (selectedPalettes) + { + if (selectedPalettes & 1) + BlendPalette(paletteOffset, + 16, + gPaletteFade.y, + gPaletteFade.blendColor); + selectedPalettes >>= 1; + paletteOffset += 16; + } + gPaletteFade.objPaletteToggle ^= 1; + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.y == gPaletteFade.targetY) + { + gPaletteFade_selectedPalettes = 0; + gPaletteFade.softwareFadeFinishing = TRUE; + } + else + { + s8 val; + + if (!gPaletteFade.yDec) + { + val = gPaletteFade.y; + val += gPaletteFade.deltaY; + if (val > gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + else + { + val = gPaletteFade.y; + val -= gPaletteFade.deltaY; + if (val < gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + } + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + } +} + +void InvertPlttBuffer(u32 selectedPalettes) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + gPlttBufferFaded[paletteOffset + i] = ~gPlttBufferFaded[paletteOffset + i]; + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[paletteOffset + i]; + data->r += r; + data->g += g; + data->b += b; + } + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void UnfadePlttBuffer(u32 selectedPalettes) +{ + u16 paletteOffset = 0; + + while (selectedPalettes) + { + if (selectedPalettes & 1) + { + u8 i; + + for (i = 0; i < 16; ++i) + gPlttBufferFaded[paletteOffset + i] = gPlttBufferUnfaded[paletteOffset + i]; + } + selectedPalettes >>= 1; + paletteOffset += 16; + } +} + +void BeginFastPaletteFade(u8 submode) +{ + gPaletteFade.deltaY = 2; + BeginFastPaletteFadeInternal(submode); +} + +static void BeginFastPaletteFadeInternal(u8 submode) +{ + gPaletteFade.y = 31; + gPaletteFade_submode = submode & 0x3F; + gPaletteFade.active = TRUE; + gPaletteFade.mode = FAST_FADE; + if (submode == FAST_FADE_IN_FROM_BLACK) + CpuFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE); + if (submode == FAST_FADE_IN_FROM_WHITE) + CpuFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE); + UpdatePaletteFade(); +} + +static u8 UpdateFastPaletteFade(void) +{ + u16 i; + u16 paletteOffsetStart, paletteOffsetEnd; + s8 r0, g0, b0, r, g, b; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (IsSoftwarePaletteFadeFinishing()) + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.objPaletteToggle) + { + paletteOffsetStart = 256; + paletteOffsetEnd = 512; + } + else + { + paletteOffsetStart = 0; + paletteOffsetEnd = 256; + } + switch (gPaletteFade_submode) + { + case FAST_FADE_IN_FROM_WHITE: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *unfaded; + struct PlttData *faded; + + unfaded = (struct PlttData *)&gPlttBufferUnfaded[i]; + r0 = unfaded->r; + g0 = unfaded->g; + b0 = unfaded->b; + faded = (struct PlttData *)&gPlttBufferFaded[i]; + r = faded->r - 2; + g = faded->g - 2; + b = faded->b - 2; + if (r < r0) + r = r0; + if (g < g0) + g = g0; + if (b < b0) + b = b0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_OUT_TO_WHITE: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; + + r = data->r + 2; + g = data->g + 2; + b = data->b + 2; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_IN_FROM_BLACK: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *unfaded; + struct PlttData *faded; + + unfaded = (struct PlttData *)&gPlttBufferUnfaded[i]; + r0 = unfaded->r; + g0 = unfaded->g; + b0 = unfaded->b; + faded = (struct PlttData *)&gPlttBufferFaded[i]; + r = faded->r + 2; + g = faded->g + 2; + b = faded->b + 2; + + if (r > r0) + r = r0; + if (g > g0) + g = g0; + if (b > b0) + b = b0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + break; + case FAST_FADE_OUT_TO_BLACK: + for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + { + struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; + + r = data->r - 2; + g = data->g - 2; + b = data->b - 2; + if (r < 0) + r = 0; + if (g < 0) + g = 0; + if (b < 0) + b = 0; + gPlttBufferFaded[i] = r | (g << 5) | (b << 10); + } + } + gPaletteFade.objPaletteToggle ^= 1; + if (gPaletteFade.objPaletteToggle) + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.y - gPaletteFade.deltaY < 0) + gPaletteFade.y = 0; + else + gPaletteFade.y -= gPaletteFade.deltaY; + if (gPaletteFade.y == 0) + { + switch (gPaletteFade_submode) + { + case FAST_FADE_IN_FROM_WHITE: + case FAST_FADE_IN_FROM_BLACK: + CpuCopy32(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_SIZE); + break; + case FAST_FADE_OUT_TO_WHITE: + CpuFill32(0xFFFFFFFF, gPlttBufferFaded, PLTT_SIZE); + break; + case FAST_FADE_OUT_TO_BLACK: + CpuFill32(0x00000000, gPlttBufferFaded, PLTT_SIZE); + break; + } + gPaletteFade.mode = NORMAL_FADE; + gPaletteFade.softwareFadeFinishing = TRUE; + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; +} + +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters) +{ + gPaletteFade_blendCnt = blendCnt; + gPaletteFade.delayCounter = delay; + gPaletteFade_delay = delay; + gPaletteFade.y = y; + gPaletteFade.targetY = targetY; + gPaletteFade.active = TRUE; + gPaletteFade.mode = HARDWARE_FADE; + gPaletteFade.shouldResetBlendRegisters = shouldResetBlendRegisters & 1; + gPaletteFade.hardwareFadeFinishing = FALSE; + if (y < targetY) + gPaletteFade.yDec = FALSE; + else + gPaletteFade.yDec = TRUE; +} + +static u8 UpdateHardwarePaletteFade(void) +{ + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + if (gPaletteFade.delayCounter < gPaletteFade_delay) + { + ++gPaletteFade.delayCounter; + return PALETTE_FADE_STATUS_DELAY; + } + gPaletteFade.delayCounter = 0; + if (!gPaletteFade.yDec) + { + ++gPaletteFade.y; + if (gPaletteFade.y > gPaletteFade.targetY) + { + ++gPaletteFade.hardwareFadeFinishing; + --gPaletteFade.y; + } + } + else + { + if (gPaletteFade.y-- - 1 < gPaletteFade.targetY) + { + ++gPaletteFade.hardwareFadeFinishing; + ++gPaletteFade.y; + } + } + + if (gPaletteFade.hardwareFadeFinishing) + { + if (gPaletteFade.shouldResetBlendRegisters) + { + gPaletteFade_blendCnt = 0; + gPaletteFade.y = 0; + } + gPaletteFade.shouldResetBlendRegisters = FALSE; + } + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; +} + +static void UpdateBlendRegisters(void) +{ + SetGpuReg(REG_OFFSET_BLDCNT, (u16)gPaletteFade_blendCnt); + SetGpuReg(REG_OFFSET_BLDY, gPaletteFade.y); + if (gPaletteFade.hardwareFadeFinishing) + { + gPaletteFade.hardwareFadeFinishing = FALSE; + gPaletteFade.mode = 0; + gPaletteFade_blendCnt = 0; + gPaletteFade.y = 0; + gPaletteFade.active = FALSE; + } +} + +static bool8 IsSoftwarePaletteFadeFinishing(void) +{ + if (gPaletteFade.softwareFadeFinishing) + { + if (gPaletteFade.softwareFadeFinishingCounter == 4) + { + gPaletteFade.active = FALSE; + gPaletteFade.softwareFadeFinishing = FALSE; + gPaletteFade.softwareFadeFinishingCounter = 0; + } + else + { + ++gPaletteFade.softwareFadeFinishingCounter; + } + return TRUE; + } + else + { + return FALSE; + } +} + +void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) +{ + u16 paletteOffset; + + for (paletteOffset = 0; selectedPalettes; paletteOffset += 16) + { + if (selectedPalettes & 1) + BlendPalette(paletteOffset, 16, coeff, color); + selectedPalettes >>= 1; + } +} + +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) +{ + // This copy is done via DMA in both RUBY and EMERALD + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, 0x400); + BlendPalettes(selectedPalettes, coeff, color); +} + +void TintPalette_GrayScale(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); + } +} + +void TintPalette_GrayScale2(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + + if (gray > 0x1F) + gray = 0x1F; + gray = sRoundedDownGrayscaleMap[gray]; + *palette++ = (gray << 10) | (gray << 5) | (gray << 0); + } +} + +void TintPalette_SepiaTone(u16 *palette, u16 count) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r = (u16)((Q_8_8(1.2) * gray)) >> 8; + g = (u16)((Q_8_8(1.0) * gray)) >> 8; + b = (u16)((Q_8_8(0.94) * gray)) >> 8; + if (r > 31) + r = 31; + *palette++ = (b << 10) | (g << 5) | (r << 0); + } +} + +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone) +{ + s32 r, g, b, i; + u32 gray; + + for (i = 0; i < count; ++i) + { + r = (*palette >> 0) & 0x1F; + g = (*palette >> 5) & 0x1F; + b = (*palette >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r = (u16)((rTone * gray)) >> 8; + g = (u16)((gTone * gray)) >> 8; + b = (u16)((bTone * gray)) >> 8; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + *palette++ = (b << 10) | (g << 5) | (r << 0); + } +} + +void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4) +{ + s32 r, g, b, i; + u32 gray; + + if (!a4) + { + for (i = 0; i < count; ++i) + *dst++ = *src++; + } + else + { + for (i = 0; i < count; ++src, ++dst, ++i) + { + r = (*src >> 0) & 0x1F; + g = (*src >> 5) & 0x1F; + b = (*src >> 10) & 0x1F; + gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8; + r += (a4 * (gray - r) >> 4); + g += (a4 * (gray - g) >> 4); + b += (a4 * (gray - b) >> 4); + *dst = (b << 10) | (g << 5) | (r << 0); + } + } +} + +void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7) +{ + u8 taskId; + + taskId = CreateTask(sub_80718B8, a6); + gTasks[taskId].data[0] = a3; + gTasks[taskId].data[1] = a4; + if (a2 >= 0) + { + gTasks[taskId].data[3] = a2; + gTasks[taskId].data[2] = 1; + } + else + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[2] = -a2 + 1; + } + if (a4 < a3) + gTasks[taskId].data[2] *= -1; + SetWordTaskArg(taskId, 5, a1); + gTasks[taskId].data[7] = a5; + gTasks[taskId].data[8] = a7; + gTasks[taskId].func(taskId); +} + +bool32 sub_807185C(u8 var) +{ + s32 i; + + for (i = 0; i < NUM_TASKS; ++i) + if (gTasks[i].isActive == TRUE + && gTasks[i].func == sub_80718B8 + && gTasks[i].data[8] == var) + return TRUE; + return FALSE; +} + +void sub_8071898(void) +{ + u8 taskId; + + while (TRUE) + { + taskId = FindTaskIdByFunc(sub_80718B8); + if (taskId == 0xFF) + break; + DestroyTask(taskId); + } +} + +static void sub_80718B8(u8 taskId) +{ + u32 wordVar; + s16 *data; + s16 temp; + + data = gTasks[taskId].data; + wordVar = GetWordTaskArg(taskId, 5); + if (++data[4] > data[3]) + { + data[4] = 0; + BlendPalettes(wordVar, data[0], data[7]); + temp = data[1]; + if (data[0] == temp) + { + DestroyTask(taskId); + } + else + { + data[0] += data[2]; + if (data[2] >= 0) + { + if (data[0] < temp) + return; + } + else if (data[0] > temp) + { + return; + } + data[0] = temp; + } + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 0a91bcce7..1979326b2 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -661,24 +661,7 @@ gUnknown_2037104: @ 2037104 .space 0x4 .include "src/tileset_anims.o" - -gPlttBufferUnfaded: @ 20371F8 - .space 0x400 - -gPlttBufferFaded: @ 20375F8 - .space 0x400 - -gUnknown_20379F8: @ 20379F8 - .space 0xC0 - -gPaletteFade: @ 2037AB8 - .space 0x10 - -gUnknown_2037AC8: @ 2037AC8 - .space 0x4 - -gUnknown_2037ACC: @ 2037ACC - .space 0x400 + .include "src/palette.o" .include "src/sound.o" From db3d5c90433a94747c23e48cf85badfc5286b07f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 12:33:01 -0400 Subject: [PATCH 056/100] Start berry_pouch decomp --- asm/berry_pouch.s | 378 ----------------------------------------- include/menu_helpers.h | 1 + ld_script.txt | 1 + src/berry_pouch.c | 233 +++++++++++++++++++++++++ 4 files changed, 235 insertions(+), 378 deletions(-) create mode 100644 src/berry_pouch.c diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 60d6873e6..b050958a2 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,384 +5,6 @@ .text - thumb_func_start InitBerryPouch -InitBerryPouch: @ 813CD50 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r7, _0813CD78 @ =gUnknown_203F36C - ldr r0, _0813CD7C @ =0x00000814 - bl Alloc - str r0, [r7] - cmp r0, 0 - bne _0813CD80 - adds r0, r4, 0 - bl SetMainCallback2 - b _0813CDE2 - .align 2, 0 -_0813CD78: .4byte gUnknown_203F36C -_0813CD7C: .4byte 0x00000814 -_0813CD80: - cmp r5, 0x6 - beq _0813CD88 - ldr r0, _0813CDEC @ =gUnknown_203F370 - strb r5, [r0, 0x4] -_0813CD88: - cmp r6, 0xFF - beq _0813CD90 - ldr r0, _0813CDEC @ =gUnknown_203F370 - strb r6, [r0, 0x5] -_0813CD90: - cmp r4, 0 - beq _0813CD98 - ldr r0, _0813CDEC @ =gUnknown_203F370 - str r4, [r0] -_0813CD98: - ldr r1, [r7] - movs r0, 0 - str r0, [r1] - strb r0, [r1, 0x9] - ldr r1, [r7] - movs r0, 0xFF - strb r0, [r1, 0x6] - movs r2, 0 - ldr r6, _0813CDF0 @ =gTextFlags - ldr r0, _0813CDF4 @ =gSpecialVar_ItemId - mov r12, r0 - ldr r1, _0813CDF8 @ =sub_813CE30 - mov r8, r1 - adds r5, r7, 0 - ldr r4, _0813CDFC @ =0x0000080c - movs r3, 0 -_0813CDB8: - ldr r0, [r5] - lsls r1, r2, 1 - adds r0, r4 - adds r0, r1 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0813CDB8 - ldrb r0, [r6] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r6] - movs r0, 0 - mov r1, r12 - strh r0, [r1] - mov r0, r8 - bl SetMainCallback2 -_0813CDE2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813CDEC: .4byte gUnknown_203F370 -_0813CDF0: .4byte gTextFlags -_0813CDF4: .4byte gSpecialVar_ItemId -_0813CDF8: .4byte sub_813CE30 -_0813CDFC: .4byte 0x0000080c - thumb_func_end InitBerryPouch - - thumb_func_start sub_813CE00 -sub_813CE00: @ 813CE00 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl DoScheduledBgTilemapCopiesToVram - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_813CE00 - - thumb_func_start sub_813CE1C -sub_813CE1C: @ 813CE1C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813CE1C - - thumb_func_start sub_813CE30 -sub_813CE30: @ 813CE30 - push {lr} -_0813CE32: - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813CE56 - bl sub_813CE5C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813CE56 - bl MenuHelpers_LinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813CE32 -_0813CE56: - pop {r0} - bx r0 - thumb_func_end sub_813CE30 - - thumb_func_start sub_813CE5C -sub_813CE5C: @ 813CE5C - push {r4,lr} - sub sp, 0x4 - ldr r0, _0813CE7C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x12 - bls _0813CE70 - b _0813CFE8 -_0813CE70: - lsls r0, 2 - ldr r1, _0813CE80 @ =_0813CE84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813CE7C: .4byte gMain -_0813CE80: .4byte _0813CE84 - .align 2, 0 -_0813CE84: - .4byte _0813CED0 - .4byte _0813CEDA - .4byte _0813CEE0 - .4byte _0813CEE6 - .4byte _0813CEEC - .4byte _0813CEF2 - .4byte _0813CEF8 - .4byte _0813CF08 - .4byte _0813CF24 - .4byte _0813CF30 - .4byte _0813CF36 - .4byte _0813CF44 - .4byte _0813CF56 - .4byte _0813CF5C - .4byte _0813CF62 - .4byte _0813CFA4 - .4byte _0813CFAA - .4byte _0813CFB0 - .4byte _0813CFBE -_0813CED0: - bl SetVBlankHBlankCallbacksToNull - bl ClearScheduledBgCopiesToVram - b _0813CFD2 -_0813CEDA: - bl ScanlineEffect_Stop - b _0813CFD2 -_0813CEE0: - bl FreeAllSpritePalettes - b _0813CFD2 -_0813CEE6: - bl ResetPaletteFade - b _0813CFD2 -_0813CEEC: - bl ResetSpriteData - b _0813CFD2 -_0813CEF2: - bl ResetItemMenuIconState - b _0813CFD2 -_0813CEF8: - bl MenuHelpers_LinkSomething - lsls r0, 24 - cmp r0, 0 - bne _0813CFD2 - bl ResetTasks - b _0813CFD2 -_0813CF08: - bl sub_813D07C - ldr r0, _0813CF1C @ =gUnknown_203F36C - ldr r0, [r0] - ldr r1, _0813CF20 @ =0x0000080c - adds r0, r1 - movs r1, 0 - strh r1, [r0] - b _0813CFD2 - .align 2, 0 -_0813CF1C: .4byte gUnknown_203F36C -_0813CF20: .4byte 0x0000080c -_0813CF24: - bl sub_813D0E4 - lsls r0, 24 - cmp r0, 0 - beq _0813D000 - b _0813CFD2 -_0813CF30: - bl sub_813E910 - b _0813CFD2 -_0813CF36: - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D754 - b _0813CFD2 -_0813CF44: - bl sub_813D1C0 - lsls r0, 24 - cmp r0, 0 - bne _0813CFD2 - bl sub_813D00C - movs r0, 0x1 - b _0813D002 -_0813CF56: - bl sub_813D204 - b _0813CFD2 -_0813CF5C: - bl sub_813D6A4 - b _0813CFD2 -_0813CF62: - ldr r0, _0813CF94 @ =sub_813DA68 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813CF98 @ =gMultiuseListMenuTemplate - ldr r2, _0813CF9C @ =gUnknown_203F370 - ldrh r1, [r2, 0xA] - ldrh r2, [r2, 0x8] - bl ListMenuInit - ldr r2, _0813CFA0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x8] - strh r2, [r1, 0x18] - b _0813CFD2 - .align 2, 0 -_0813CF94: .4byte sub_813DA68 -_0813CF98: .4byte gMultiuseListMenuTemplate -_0813CF9C: .4byte gUnknown_203F370 -_0813CFA0: .4byte gTasks -_0813CFA4: - bl sub_813EC08 - b _0813CFD2 -_0813CFAA: - bl sub_813D5BC - b _0813CFD2 -_0813CFB0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _0813CFD2 -_0813CFBE: - 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 -_0813CFD2: - ldr r1, _0813CFE4 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813D000 - .align 2, 0 -_0813CFE4: .4byte gMain -_0813CFE8: - ldr r0, _0813CFF8 @ =sub_813CE1C - bl SetVBlankCallback - ldr r0, _0813CFFC @ =sub_813CE00 - bl SetMainCallback2 - movs r0, 0x1 - b _0813D002 - .align 2, 0 -_0813CFF8: .4byte sub_813CE1C -_0813CFFC: .4byte sub_813CE00 -_0813D000: - movs r0, 0 -_0813D002: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_813CE5C - - thumb_func_start sub_813D00C -sub_813D00C: @ 813D00C - 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, _0813D03C @ =sub_813D048 - movs r1, 0 - bl CreateTask - ldr r0, _0813D040 @ =sub_813CE1C - bl SetVBlankCallback - ldr r0, _0813D044 @ =sub_813CE00 - bl SetMainCallback2 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0813D03C: .4byte sub_813D048 -_0813D040: .4byte sub_813CE1C -_0813D044: .4byte sub_813CE00 - thumb_func_end sub_813D00C - - thumb_func_start sub_813D048 -sub_813D048: @ 813D048 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813D074 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813D06C - ldr r0, _0813D078 @ =gUnknown_203F370 - ldr r0, [r0] - bl SetMainCallback2 - bl sub_813D7CC - adds r0, r4, 0 - bl DestroyTask -_0813D06C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D074: .4byte gPaletteFade -_0813D078: .4byte gUnknown_203F370 - thumb_func_end sub_813D048 - thumb_func_start sub_813D07C sub_813D07C: @ 813D07C push {r4,lr} diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 7fe8c19b2..c18d4313e 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -3,6 +3,7 @@ #include "global.h" #include "task.h" +#include "window.h" struct YesNoFuncTable { diff --git a/ld_script.txt b/ld_script.txt index 131b6b4e9..979cb4463 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -251,6 +251,7 @@ SECTIONS { src/help_system.o(.text); asm/wild_pokemon_area.o(.text); src/dynamic_placeholder_text_util.o(.text); + src/berry_pouch.o(.text); asm/berry_pouch.o(.text); asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); diff --git a/src/berry_pouch.c b/src/berry_pouch.c new file mode 100644 index 000000000..c9894923c --- /dev/null +++ b/src/berry_pouch.c @@ -0,0 +1,233 @@ +#include "global.h" +#include "malloc.h" +#include "bg.h" +#include "palette.h" +#include "text.h" +#include "berry_pouch.h" +#include "item_menu.h" +#include "menu_helpers.h" +#include "new_menu_helpers.h" +#include "scanline_effect.h" +#include "item_menu_icons.h" +#include "list_menu.h" +#include "constants/items.h" + +struct BerryPouchStruct_203F36C +{ + u32 unk_000; + u8 filler_004[2]; + u8 unk_006; + u8 filler_007[2]; + u8 unk_009; + u8 filler_00a[2]; + u8 filler_00c[0x800]; + u16 unk_80C[4]; +}; + +struct BerryPouchStruct_203F370 +{ + void (*savedCallback)(void); + u8 unk_04; + u8 unk_05; + u8 filler_06[2]; + u16 unk_08; + u16 unk_0A; +}; + +EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; +EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; + +void sub_813CE30(void); +bool8 sub_813CE5C(void); +void sub_813D00C(void); +void sub_813D048(u8 taskId); +void sub_813D07C(void); +bool8 sub_813D0E4(void); +bool8 sub_813D1C0(void); +void sub_813D204(void); +void sub_813D5BC(void); +void sub_813D6A4(void); +void sub_813D6F4(void); +void sub_813D754(void); +void sub_813D7CC(void); +void sub_813D8AC(void); +void sub_813DA68(u8 taskId); +void sub_813E910(void); +void sub_813EC08(void); + +void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) +{ + u8 i; + + gUnknown_203F36C = Alloc(sizeof(struct BerryPouchStruct_203F36C)); + if (gUnknown_203F36C == NULL) + { + SetMainCallback2(savedCallback); + } + else + { + if (a0 != 6) + gUnknown_203F370.unk_04 = a0; + if (a2 != 0xFF) + gUnknown_203F370.unk_05 = a2; + if (savedCallback != NULL) + gUnknown_203F370.savedCallback = savedCallback; + gUnknown_203F36C->unk_000 = 0; + gUnknown_203F36C->unk_009 = 0; + gUnknown_203F36C->unk_006 = 0xFF; + for (i = 0; i < 4; i++) + gUnknown_203F36C->unk_80C[i] = 0; + gTextFlags.autoScroll = FALSE; + gSpecialVar_ItemId = ITEM_NONE; + SetMainCallback2(sub_813CE30); + } +} + +void sub_813CE00(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + DoScheduledBgTilemapCopiesToVram(); + UpdatePaletteFade(); +} + +void sub_813CE1C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_813CE30(void) +{ + while (1) + { + if (sub_80BF72C() == TRUE) + break; + if (sub_813CE5C() == TRUE) + break; + if (MenuHelpers_LinkSomething() == TRUE) + break; + } +} + +bool8 sub_813CE5C(void) +{ + u8 taskId; + + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + ClearScheduledBgCopiesToVram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gMain.state++; + break; + case 4: + ResetSpriteData(); + gMain.state++; + break; + case 5: + ResetItemMenuIconState(); + gMain.state++; + break; + case 6: + if (!MenuHelpers_LinkSomething()) + ResetTasks(); + gMain.state++; + break; + case 7: + sub_813D07C(); + gUnknown_203F36C->unk_80C[0] = 0; + gMain.state++; + break; + case 8: + if (sub_813D0E4()) + gMain.state++; + break; + case 9: + sub_813E910(); + gMain.state++; + break; + case 10: + sub_813D8AC(); + sub_813D6F4(); + sub_813D754(); + gMain.state++; + break; + case 11: + if (!sub_813D1C0()) + { + sub_813D00C(); + return TRUE; + } + gMain.state++; + break; + case 12: + sub_813D204(); + gMain.state++; + break; + case 13: + sub_813D6A4(); + gMain.state++; + break; + case 14: + taskId = CreateTask(sub_813DA68, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + gTasks[taskId].data[8] = 0; + gMain.state++; + break; + case 15: + sub_813EC08(); + gMain.state++; + break; + case 16: + sub_813D5BC(); + gMain.state++; + break; + case 17: + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + gMain.state++; + break; + case 18: + BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK); + gMain.state++; + break; + default: + SetVBlankCallback(sub_813CE1C); + SetMainCallback2(sub_813CE00); + return TRUE; + } + + return FALSE; +} + +void sub_813D00C(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + CreateTask(sub_813D048, 0); + SetVBlankCallback(sub_813CE1C); + SetMainCallback2(sub_813CE00); +} + +void sub_813D048(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(gUnknown_203F370.savedCallback); + sub_813D7CC(); + DestroyTask(taskId); + } +} From b6c7c6523fedb21e5928fbaf8e01747f4283cfc1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 16:11:41 -0400 Subject: [PATCH 057/100] berry_pouch through sub_813D0E4 --- asm/berry_pouch.s | 149 --------------------------- baserom.ips | Bin 2014788 -> 2012785 bytes data/berry_pouch.s | 9 +- data/graphics.s | 12 +-- graphics/berry_pouch/unk_8E8560C.png | Bin 0 -> 782 bytes graphics/berry_pouch/unk_8E859D0.png | Bin 0 -> 444 bytes graphics/berry_pouch/unk_8E85BA4.pal | 51 +++++++++ graphics/berry_pouch/unk_8E85BF4.pal | 19 ++++ graphics/berry_pouch/unk_8E85C44.bin | Bin 0 -> 2048 bytes include/graphics.h | 8 ++ ld_script.txt | 1 + src/berry_pouch.c | 88 +++++++++++++++- 12 files changed, 175 insertions(+), 162 deletions(-) create mode 100644 graphics/berry_pouch/unk_8E8560C.png create mode 100644 graphics/berry_pouch/unk_8E859D0.png create mode 100644 graphics/berry_pouch/unk_8E85BA4.pal create mode 100644 graphics/berry_pouch/unk_8E85BF4.pal create mode 100644 graphics/berry_pouch/unk_8E85C44.bin diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index b050958a2..985be2c93 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,155 +5,6 @@ .text - thumb_func_start sub_813D07C -sub_813D07C: @ 813D07C - push {r4,lr} - bl ResetAllBgsCoordinatesAndBgCntRegs - ldr r4, _0813D0DC @ =gUnknown_203F36C - ldr r0, [r4] - adds r0, 0xC - movs r2, 0x80 - lsls r2, 4 - movs r1, 0 - bl memset - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0813D0E0 @ =gUnknown_846434C - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r1, [r4] - adds r1, 0xC - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D0DC: .4byte gUnknown_203F36C -_0813D0E0: .4byte gUnknown_846434C - thumb_func_end sub_813D07C - - thumb_func_start sub_813D0E4 -sub_813D0E4: @ 813D0E4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _0813D104 @ =gUnknown_203F36C - ldr r0, [r5] - ldr r6, _0813D108 @ =0x0000080c - adds r0, r6 - movs r1, 0 - ldrsh r4, [r0, r1] - cmp r4, 0x1 - beq _0813D130 - cmp r4, 0x1 - bgt _0813D10C - cmp r4, 0 - beq _0813D116 - b _0813D190 - .align 2, 0 -_0813D104: .4byte gUnknown_203F36C -_0813D108: .4byte 0x0000080c -_0813D10C: - cmp r4, 0x2 - beq _0813D14C - cmp r4, 0x3 - beq _0813D178 - b _0813D190 -_0813D116: - bl ResetTempTileDataBuffers - ldr r1, _0813D12C @ =gUnknown_8E859D0 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - b _0813D17E - .align 2, 0 -_0813D12C: .4byte gUnknown_8E859D0 -_0813D130: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813D1B4 - ldr r0, _0813D148 @ =gUnknown_8E85C44 - ldr r1, [r5] - adds r1, 0xC - bl LZDecompressWram - b _0813D17E - .align 2, 0 -_0813D148: .4byte gUnknown_8E85C44 -_0813D14C: - ldr r0, _0813D16C @ =gUnknown_8E85BA4 - movs r1, 0 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _0813D170 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0813D17E - ldr r0, _0813D174 @ =gUnknown_8E85BF4 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _0813D17E - .align 2, 0 -_0813D16C: .4byte gUnknown_8E85BA4 -_0813D170: .4byte gSaveBlock2Ptr -_0813D174: .4byte gUnknown_8E85BF4 -_0813D178: - ldr r0, _0813D18C @ =gUnknown_84644A8 - bl LoadCompressedSpriteSheet -_0813D17E: - ldr r1, [r5] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0813D1B4 - .align 2, 0 -_0813D18C: .4byte gUnknown_84644A8 -_0813D190: - ldr r0, _0813D1A8 @ =gUnknown_84644B0 - bl LoadCompressedSpritePalette - ldr r0, _0813D1AC @ =gUnknown_203F36C - ldr r0, [r0] - ldr r1, _0813D1B0 @ =0x0000080c - adds r0, r1 - movs r1, 0 - strh r1, [r0] - movs r0, 0x1 - b _0813D1B6 - .align 2, 0 -_0813D1A8: .4byte gUnknown_84644B0 -_0813D1AC: .4byte gUnknown_203F36C -_0813D1B0: .4byte 0x0000080c -_0813D1B4: - movs r0, 0 -_0813D1B6: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813D0E4 - thumb_func_start sub_813D1C0 sub_813D1C0: @ 813D1C0 push {r4,lr} diff --git a/baserom.ips b/baserom.ips index 9a674ecd36145696268acd8c435fc215c68cff82..3de64bdf688e080da1e9428008b33f67c6d0da31 100644 GIT binary patch delta 130 zcmX@|r|RRIs)iQE7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~Eqp=inIjkjwkNLV3t(h* zbJ@Y{(|&LR9}x2cu>cSY0=rH0@)WE({t8KUzjrRyBD}X zfRWDA_84L18*kcRdj@q|Zwd*#HZ*J(%n>kwET|Av3LFBbph_@TP%W4zs1ei(>PCi! zU59r_8_Uas1O4Y``}I2}DJ>8drrw@8kasXSk?`(Zo=CvbMOd9I6FU-#D!5G2)GF7= z@(!~$<{_X}iikB*uqP7ro3Ej&elRpf>|uJXXx5aDJWtpJqp{nAB*k9dnW$IQgt}T~ z#H;#M28z6@snEUcYCd*Cu4GhAba$)R+uN(|O(xZ9HJMCJv5WQH-ADv_dm94Dx&n?Xb4{4}s2CeQVlO z+yGAoctjP>I|30N4|H(Wxh4+U#yd6E%sXL-sIJ3k?&v?+?EKqyGI;$c=+LvA#7|A} z$aSOtc6=&K4LEfJQj{c(TNNgW{aip9mawu^&&&e66?S+fSzJ>=p{pviMn?0z613pA zMm4pq5f_%;H;G$SJ3-lBB2QP)s&@K)DrqqNjLhU*bC5gY2i_GJql`oyFbZ%WU(oC* zSTq7>bP_ssyauY-<1!qpYvl#o@-bThwpe+}7^EaaDhrU6iOOgYQ8~(^1&ur0tAYwG zSl%$SCeFJ~fckts6+965hWmWqp2V?H&}@@yd>ock7ddw>n;ji(aqw(b2?gNd<79l4 zkB?@vF|wS0rZX3#!=#1to(Q9;W>ky2HITS-^`v%P#-!Hfp42oqEoj=Ltic94T`?nU z4i|9MF0;Av8Oyo+bVH2fF@fk4L6Hkbc@VH&Voub!nTO+}9?H}7_{E%7GHdHHNTsvv zMhnJ4^%V2vT6s2?<6fSFl(~}2DK~!%d$5>i5n?V_GRPgyWU?(04cQh=%dXS3Fh~6G zS}mAai%29B3?h?8BZh4G+`L-q#d{@zF7F)gEb)dl zomrU4XprcUr$4^bN8nxyi)MP7h!%1f-mgl#OY1xVON|`3?spjeB=CPLo- z1@!qOqn3@i$~XHwEOKGXD}A1E@d(eL+dlz4ah@{I^xYo9Je$79g8iZkO&Z&7l41|Z z@9U%Ho-tzX8>A*NOg%+qs>}ST#b(ctJ~Ze_?UJcHtIuOTH|!Z~4(%piwyx)y%oS;O zGI_ZbboarpVKra{HLWS@bo0>{eyv!6GL|@KF1y@1hArsMwI(m;5_ev5PkTU6&rzR1 zS&x`ulpWUxc39j_M=*&Iz1aQd=JqG??xs(hclUO!9(dj2Ub*4_EKCvi`r?xD*3gD~ zkKx#gWsM!g0G98%O73E70B2Xdv+qV-QD>r6WCBZ`P)H`p2HeWbx6x&#+o;}{6kOgdE ssmg=omWV|t!=XiNu|hl#vqv6$XQ2V_##x(eVKl)Z}EKoo^XFCaW71hx_QO1o)7z`Am^*?_GPq%!!g zHN=GiDP1Hl;KEHFz}uut;lfSQY2U!xrP)Scc_+;l>eJ=UNM6g5mXIz*4p_pRZ_Yg) zY0TJv{k06v8;5J1`13G)$Fpng@~|LlR{@$AMPT--5^&-ZQI0UelFC4{43ua58Mp{% za4>y`QVIx(Trj?GX&2a3h--_57bWni`52S7dT4o>{(stoY-!n z;9-*%3Bxj4sq6)=GX^mtz?-JBksfWx zfQW6Y%go(lfC&~H2vC4J6c30jh#*OF#2&Njd<7!Lzbe-1ONa4 M07*qoM6N<$f?dXI7ytkO literal 0 HcmV?d00001 diff --git a/graphics/berry_pouch/unk_8E859D0.png b/graphics/berry_pouch/unk_8E859D0.png new file mode 100644 index 0000000000000000000000000000000000000000..094b4ef3913dc17663f08eaae3e4f7b4256b97fc GIT binary patch literal 444 zcmV;t0YmB`2OB|>6D=@a-Bkh(^d@&Fx5*Q9F19I^OyP)6RVz5ncUe5XWBJM|wx z{`_%gz~H_pOA!YU!f7RO(U>&|r}ZF-#=IUSVrWnpduvpVo6iM6D`fyE1HF}jqcU(* zMnzEufHID|n7s7e-Qcs2$)Nu|P&L#_0n|$GG?w(*-o*$8$eU;I(sfTEB?Fn|{Sj-# zS)6l?zZ;V=&fXZ_yG4aSTBJw9lnkFjC1CiRSmQGGT%#D1F=;^M&c>j7DX&LdIjevy zRT-v6`sRK%!ZkxSO|Bu}x&f*T&^K!wtx+e%A)r+X1A0Mw47wD6_*ppjz~=&Ncx%fB zB*5F9Th0z28O##|y$O9UN z*M<#wgd@$eA^izNL)z712&lxs&cO^{MV$mR*b;|T`a8e?AmL(gq4fXQ!oavq|Bs4V mHhG`0Kv(DIM(t{pm+?0ggkxjsakw`w)FK|N91hxBn0kV)VI~A_~cL z{|QnI3MnN;U-tgQ`)9~8#C^9G*1B0GHm literal 0 HcmV?d00001 diff --git a/include/graphics.h b/include/graphics.h index d8858b36f..9d4bdf177 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -998,4 +998,12 @@ extern const u16 gCreditsAllRightsReservedGfxPal[]; extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; +// berry_pouch +extern const u8 gUnknown_8E8560C[]; +extern const u8 gUnknown_8E859D0[]; +extern const u8 gUnknown_8E85BA4[]; +extern const u8 gUnknown_8E85BF4[]; +extern const u8 gUnknown_8E85C1C[]; +extern const u8 gUnknown_8E85C44[]; + #endif //GUARD_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index 979cb4463..7e28cc850 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -467,6 +467,7 @@ SECTIONS { src/help_system.o(.rodata); data/wild_pokemon_area.o(.rodata); src/dynamic_placeholder_text_util.o(.rodata); + src/berry_pouch.o(.rodata); data/berry_pouch.o(.rodata); data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index c9894923c..fb69600fc 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1,6 +1,8 @@ #include "global.h" #include "malloc.h" #include "bg.h" +#include "decompress.h" +#include "gpu_regs.h" #include "palette.h" #include "text.h" #include "berry_pouch.h" @@ -10,6 +12,7 @@ #include "scanline_effect.h" #include "item_menu_icons.h" #include "list_menu.h" +#include "graphics.h" #include "constants/items.h" struct BerryPouchStruct_203F36C @@ -20,8 +23,8 @@ struct BerryPouchStruct_203F36C u8 filler_007[2]; u8 unk_009; u8 filler_00a[2]; - u8 filler_00c[0x800]; - u16 unk_80C[4]; + u8 unk_00C[BG_SCREEN_SIZE]; + s16 unk_80C[4]; }; struct BerryPouchStruct_203F370 @@ -55,6 +58,37 @@ void sub_813DA68(u8 taskId); void sub_813E910(void); void sub_813EC08(void); +static const struct BgTemplate gUnknown_846434C[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 3, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +extern const struct CompressedSpriteSheet gUnknown_84644A8; +extern const struct CompressedSpritePalette gUnknown_84644B0; + void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) { u8 i; @@ -231,3 +265,53 @@ void sub_813D048(u8 taskId) DestroyTask(taskId); } } + +void sub_813D07C(void) +{ + ResetAllBgsCoordinatesAndBgCntRegs(); + memset(gUnknown_203F36C->unk_00C, 0, BG_SCREEN_SIZE); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_846434C, NELEMS(gUnknown_846434C)); + SetBgTilemapBuffer(1, gUnknown_203F36C->unk_00C); + ScheduleBgCopyTilemapToVram(1); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); +} + +bool8 sub_813D0E4(void) +{ + switch (gUnknown_203F36C->unk_80C[0]) + { + case 0: + ResetTempTileDataBuffers(); + DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0); + gUnknown_203F36C->unk_80C[0]++; + break; + case 1: + if (FreeTempTileDataBuffersIfPossible() != TRUE) + { + LZDecompressWram(gUnknown_8E85C44, gUnknown_203F36C->unk_00C); + gUnknown_203F36C->unk_80C[0]++; + } + break; + case 2: + LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60); + if (gSaveBlock2Ptr->playerGender != MALE) + LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20); + gUnknown_203F36C->unk_80C[0]++; + break; + case 3: + LoadCompressedSpriteSheet(&gUnknown_84644A8); + gUnknown_203F36C->unk_80C[0]++; + break; + default: + LoadCompressedSpritePalette(&gUnknown_84644B0); + gUnknown_203F36C->unk_80C[0] = 0; + return TRUE; + } + + return FALSE; +} From 0993cb64f7c3a4ff8827da72acc76afccca682e6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 20:27:41 -0400 Subject: [PATCH 058/100] Berry_pouch through sub_813D5BC --- asm/berry_pouch.s | 551 --------------------------------------------- baserom.ips | Bin 2012785 -> 2012786 bytes data/berry_pouch.s | 3 +- include/strings.h | 3 + src/berry_pouch.c | 162 ++++++++++++- 5 files changed, 166 insertions(+), 553 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 985be2c93..a34c409e1 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,557 +5,6 @@ .text - thumb_func_start sub_813D1C0 -sub_813D1C0: @ 813D1C0 - push {r4,lr} - ldr r4, _0813D1F0 @ =gUnknown_203F37C - movs r0, 0xB0 - lsls r0, 1 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0813D1FC - ldr r4, _0813D1F4 @ =gUnknown_203F380 - ldr r0, _0813D1F8 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r1, [r0, 0x7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - subs r0, r1 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0813D1FC - movs r0, 0x1 - b _0813D1FE - .align 2, 0 -_0813D1F0: .4byte gUnknown_203F37C -_0813D1F4: .4byte gUnknown_203F380 -_0813D1F8: .4byte gUnknown_203F36C -_0813D1FC: - movs r0, 0 -_0813D1FE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_813D1C0 - - thumb_func_start sub_813D204 -sub_813D204: @ 813D204 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0813D280 @ =gBagPockets + 0x20 - mov r8, r0 - movs r6, 0 - ldr r0, _0813D284 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r6, r0 - bcs _0813D254 - ldr r7, _0813D288 @ =gUnknown_203F380 -_0813D21C: - lsls r5, r6, 3 - subs r4, r5, r6 - lsls r4, 2 - subs r4, r6 - ldr r0, [r7] - adds r0, r4 - mov r1, r8 - ldr r2, [r1] - lsls r1, r6, 2 - adds r1, r2 - ldrh r1, [r1] - bl sub_813D31C - ldr r0, _0813D28C @ =gUnknown_203F37C - ldr r0, [r0] - adds r5, r0 - ldr r0, [r7] - adds r0, r4 - str r0, [r5] - str r6, [r5, 0x4] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _0813D284 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r6, r0 - bcc _0813D21C -_0813D254: - ldr r0, _0813D28C @ =gUnknown_203F37C - ldr r2, [r0] - lsls r0, r6, 3 - adds r0, r2 - ldr r1, _0813D290 @ =gText_Close - str r1, [r0] - str r6, [r0, 0x4] - ldr r1, _0813D294 @ =gMultiuseListMenuTemplate - str r2, [r1] - ldr r0, _0813D298 @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - adds r5, r1, 0 - cmp r0, 0x5 - beq _0813D29C - ldr r1, _0813D284 @ =gUnknown_203F36C - ldr r0, [r1] - ldrb r0, [r0, 0x7] - adds r0, 0x1 - strh r0, [r5, 0xC] - adds r2, r1, 0 - b _0813D2A6 - .align 2, 0 -_0813D280: .4byte gBagPockets + 0x20 -_0813D284: .4byte gUnknown_203F36C -_0813D288: .4byte gUnknown_203F380 -_0813D28C: .4byte gUnknown_203F37C -_0813D290: .4byte gText_Close -_0813D294: .4byte gMultiuseListMenuTemplate -_0813D298: .4byte gUnknown_203F370 -_0813D29C: - ldr r0, _0813D310 @ =gUnknown_203F36C - ldr r1, [r0] - ldrb r1, [r1, 0x7] - strh r1, [r5, 0xC] - adds r2, r0, 0 -_0813D2A6: - movs r0, 0 - strb r0, [r5, 0x10] - strb r0, [r5, 0x11] - movs r0, 0x9 - strb r0, [r5, 0x12] - movs r0, 0x1 - strb r0, [r5, 0x13] - ldrb r0, [r5, 0x16] - movs r3, 0x8 - negs r3, r3 - ands r3, r0 - movs r0, 0x39 - negs r0, r0 - ands r3, r0 - movs r0, 0x10 - orrs r3, r0 - strb r3, [r5, 0x16] - ldrb r1, [r5, 0x14] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r4, 0x2 - orrs r0, r4 - strb r0, [r5, 0x14] - ldr r1, [r2] - ldrb r1, [r1, 0x8] - strh r1, [r5, 0xE] - ldrb r1, [r5, 0x17] - movs r2, 0x40 - negs r2, r2 - ands r2, r1 - orrs r2, r4 - movs r1, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r5, 0x14] - movs r0, 0x30 - strb r0, [r5, 0x15] - ldr r0, _0813D314 @ =sub_813D3C0 - str r0, [r5, 0x4] - ldr r0, _0813D318 @ =sub_813D430 - str r0, [r5, 0x8] - movs r0, 0x3F - ands r2, r0 - strb r2, [r5, 0x17] - ands r3, r0 - strb r3, [r5, 0x16] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813D310: .4byte gUnknown_203F36C -_0813D314: .4byte sub_813D3C0 -_0813D318: .4byte sub_813D430 - thumb_func_end sub_813D204 - - thumb_func_start sub_813D31C -sub_813D31C: @ 813D31C - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r5, r1, 16 - lsrs r5, 16 - ldr r4, _0813D384 @ =gStringVar4 - ldr r1, _0813D388 @ =gText_FontSize0 - adds r0, r4, 0 - bl StringCopy - ldr r1, _0813D38C @ =gOtherText_UnkF9_08_Clear_01 - adds r0, r4, 0 - bl StringAppend - ldr r6, _0813D390 @ =gStringVar1 - adds r1, r5, 0 - subs r1, 0x84 - adds r0, r6, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - adds r1, r6, 0 - bl StringAppend - adds r0, r5, 0 - adds r1, r6, 0 - bl CopyItemName - ldr r1, _0813D394 @ =gUnknown_84643B4 - adds r0, r4, 0 - bl StringAppend - ldr r1, _0813D398 @ =gText_FontSize2 - adds r0, r4, 0 - bl StringAppend - adds r0, r4, 0 - adds r1, r6, 0 - bl StringAppend - mov r0, r8 - adds r1, r4, 0 - bl StringCopy - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813D384: .4byte gStringVar4 -_0813D388: .4byte gText_FontSize0 -_0813D38C: .4byte gOtherText_UnkF9_08_Clear_01 -_0813D390: .4byte gStringVar1 -_0813D394: .4byte gUnknown_84643B4 -_0813D398: .4byte gText_FontSize2 - thumb_func_end sub_813D31C - - thumb_func_start sub_813D39C -sub_813D39C: @ 813D39C - push {lr} - adds r3, r1, 0 - ldr r1, _0813D3BC @ =gUnknown_203F380 - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - subs r2, r0 - ldr r1, [r1] - adds r1, r2 - adds r0, r3, 0 - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_0813D3BC: .4byte gUnknown_203F380 - thumb_func_end sub_813D39C - - thumb_func_start sub_813D3C0 -sub_813D3C0: @ 813D3C0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _0813D3D6 - movs r0, 0xF5 - bl PlaySE - bl sub_813EC28 -_0813D3D6: - ldr r4, _0813D404 @ =gUnknown_203F36C - ldr r0, [r4] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - eors r0, r1 - bl DestroyItemMenuIcon - ldr r1, [r4] - ldrb r0, [r1, 0x7] - cmp r0, r5 - beq _0813D408 - lsls r1, r5, 16 - lsrs r1, 16 - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - ldr r1, [r4] - ldrb r1, [r1, 0x9] - bl sub_80989A0 - b _0813D410 - .align 2, 0 -_0813D404: .4byte gUnknown_203F36C -_0813D408: - ldr r0, _0813D428 @ =0x00000177 - ldrb r1, [r1, 0x9] - bl sub_80989A0 -_0813D410: - ldr r0, _0813D42C @ =gUnknown_203F36C - ldr r2, [r0] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2, 0x9] - adds r0, r5, 0 - bl sub_813D538 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813D428: .4byte 0x00000177 -_0813D42C: .4byte gUnknown_203F36C - thumb_func_end sub_813D3C0 - - thumb_func_start sub_813D430 -sub_813D430: @ 813D430 - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _0813D498 - ldr r0, _0813D4A0 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r0, r1 - beq _0813D498 - lsls r4, r1, 16 - lsrs r4, 16 - movs r0, 0x5 - adds r1, r4, 0 - bl BagGetItemIdByPocketPosition - movs r0, 0x5 - adds r1, r4, 0 - bl BagGetQuantityByPocketPosition - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _0813D4A4 @ =gStringVar1 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _0813D4A8 @ =gStringVar4 - ldr r1, _0813D4AC @ =gText_TimesStrVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r0, 0x1 - str r0, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0x6E - bl sub_813E9A0 -_0813D498: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813D4A0: .4byte gUnknown_203F36C -_0813D4A4: .4byte gStringVar1 -_0813D4A8: .4byte gStringVar4 -_0813D4AC: .4byte gText_TimesStrVar1 - thumb_func_end sub_813D430 - - thumb_func_start sub_813D4B0 -sub_813D4B0: @ 813D4B0 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl ListMenuGetYCoordForPrintingArrowCursor - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_813D4D0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813D4B0 - - thumb_func_start sub_813D4D0 -sub_813D4D0: @ 813D4D0 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0xFF - bne _0813D514 - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetMenuCursorDimensionByFont - lsls r0, 24 - lsrs r0, 24 - str r4, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x1 - adds r3, r5, 0 - bl FillWindowPixelRect - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - b _0813D52A -_0813D514: - ldr r2, _0813D534 @ =gFameCheckerText_ListMenuCursor - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - movs r1, 0x2 - movs r3, 0x1 - bl sub_813E9A0 -_0813D52A: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813D534: .4byte gFameCheckerText_ListMenuCursor - thumb_func_end sub_813D4D0 - - thumb_func_start sub_813D538 -sub_813D538: @ 813D538 - push {r4,lr} - sub sp, 0x14 - adds r1, r0, 0 - ldr r0, _0813D560 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r1, r0 - beq _0813D564 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - bl ItemId_GetDescription - adds r4, r0, 0 - b _0813D566 - .align 2, 0 -_0813D560: .4byte gUnknown_203F36C -_0813D564: - ldr r4, _0813D590 @ =gUnknown_8416716 -_0813D566: - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x1 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0 - bl sub_813E9A0 - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D590: .4byte gUnknown_8416716 - thumb_func_end sub_813D538 - - thumb_func_start sub_813D594 -sub_813D594: @ 813D594 - push {lr} - sub sp, 0x8 - movs r1, 0x4 - str r1, [sp] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x10 - movs r3, 0x1E - bl SetBgRectPal - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_813D594 - - thumb_func_start sub_813D5BC -sub_813D5BC: @ 813D5BC - push {r4,lr} - sub sp, 0x10 - ldr r2, _0813D5D8 @ =gUnknown_203F370 - ldrb r0, [r2, 0x4] - cmp r0, 0x5 - beq _0813D5E0 - ldr r4, _0813D5DC @ =gUnknown_203F36C - ldr r1, [r4] - ldrb r0, [r1, 0x7] - ldrb r1, [r1, 0x8] - subs r0, r1 - adds r0, 0x1 - b _0813D5EA - .align 2, 0 -_0813D5D8: .4byte gUnknown_203F370 -_0813D5DC: .4byte gUnknown_203F36C -_0813D5E0: - ldr r4, _0813D610 @ =gUnknown_203F36C - ldr r1, [r4] - ldrb r0, [r1, 0x7] - ldrb r1, [r1, 0x8] - subs r0, r1 -_0813D5EA: - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r2, 0 - adds r0, 0xA - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xA0 - movs r2, 0x8 - movs r3, 0x78 - bl AddScrollIndicatorArrowPairParameterized - ldr r1, [r4] - strb r0, [r1, 0x6] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D610: .4byte gUnknown_203F36C - thumb_func_end sub_813D5BC - thumb_func_start sub_813D614 sub_813D614: @ 813D614 push {r4,lr} diff --git a/baserom.ips b/baserom.ips index 3de64bdf688e080da1e9428008b33f67c6d0da31..9d0a620e2dcbeb73107eace1984395d1f7a2ca20 100644 GIT binary patch delta 121 zcmWN=xebFr00cmO1ICB>A3x0?(EuX5N{9$nq6Esg1O$OgBEYV|JJNiQ;dcxpbQmyU z!G?niTzK$tMS$BPI%Q~b?v;>s+w9sotx9mncaAvbgj3Eq=YmVFxaJ2x`L(U;{c-*e CSv8*k delta 120 zcmWN=I}Uteoe;KGBC z03i;D5FX?_eB~S8x#f-@KP%5U`~#<9 BG;#m{ diff --git a/data/berry_pouch.s b/data/berry_pouch.s index ac62b258b..7c45b0383 100644 --- a/data/berry_pouch.s +++ b/data/berry_pouch.s @@ -28,8 +28,9 @@ gUnknown_84643B0:: @ 84643B0 .incbin "baserom.gba", 0x4643B0, 0x4 gUnknown_84643B4:: @ 84643B4 - .incbin "baserom.gba", 0x4643B4, 0x4 + .string " $" + .align 2 gUnknown_84643B8:: @ 84643B8 .incbin "baserom.gba", 0x4643B8, 0x20 diff --git a/include/strings.h b/include/strings.h index dfedb4afa..5c3cbb67b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -315,4 +315,7 @@ extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Gre extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; +// berry_pouch +extern const u8 gUnknown_8416716[]; + #endif //GUARD_STRINGS_H diff --git a/src/berry_pouch.c b/src/berry_pouch.c index fb69600fc..c8d6b508c 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -13,14 +13,22 @@ #include "item_menu_icons.h" #include "list_menu.h" #include "graphics.h" +#include "berry.h" +#include "item.h" +#include "strings.h" +#include "string_util.h" +#include "sound.h" +#include "menu_indicators.h" #include "constants/items.h" +#include "constants/songs.h" struct BerryPouchStruct_203F36C { u32 unk_000; u8 filler_004[2]; u8 unk_006; - u8 filler_007[2]; + u8 unk_007; + u8 unk_008; u8 unk_009; u8 filler_00a[2]; u8 unk_00C[BG_SCREEN_SIZE]; @@ -39,6 +47,8 @@ struct BerryPouchStruct_203F370 EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; +EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL; +EWRAM_DATA u8 *gUnknown_203F380 = NULL; void sub_813CE30(void); bool8 sub_813CE5C(void); @@ -48,6 +58,11 @@ void sub_813D07C(void); bool8 sub_813D0E4(void); bool8 sub_813D1C0(void); void sub_813D204(void); +void sub_813D31C(u8 * dest, u16 itemId); +void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list); +void sub_813D430(u8 windowId, s32 itemId, u8 y); +void sub_813D4D0(u8 y, u8 colorIdx); +void sub_813D538(s32 itemIndex); void sub_813D5BC(void); void sub_813D6A4(void); void sub_813D6F4(void); @@ -55,7 +70,9 @@ void sub_813D754(void); void sub_813D7CC(void); void sub_813D8AC(void); void sub_813DA68(u8 taskId); +void sub_813EC28(void); void sub_813E910(void); +void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); void sub_813EC08(void); static const struct BgTemplate gUnknown_846434C[] = { @@ -86,6 +103,8 @@ static const struct BgTemplate gUnknown_846434C[] = { } }; +extern const u8 gUnknown_84643B4[]; + extern const struct CompressedSpriteSheet gUnknown_84644A8; extern const struct CompressedSpritePalette gUnknown_84644B0; @@ -315,3 +334,144 @@ bool8 sub_813D0E4(void) return FALSE; } + +bool8 sub_813D1C0(void) +{ + gUnknown_203F37C = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem)); + if (gUnknown_203F37C == NULL) + return FALSE; + gUnknown_203F380 = Alloc(gUnknown_203F36C->unk_007 * 27); + if (gUnknown_203F380 == NULL) + return FALSE; + return TRUE; +} + +void sub_813D204(void) +{ + u16 i; + struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; + for (i = 0; i < gUnknown_203F36C->unk_007; i++) + { + sub_813D31C(&gUnknown_203F380[i * 27], pocket->itemSlots[i].itemId); + gUnknown_203F37C[i].label = &gUnknown_203F380[i * 27]; + gUnknown_203F37C[i].index = i; + } + gUnknown_203F37C[i].label = gText_Close; + gUnknown_203F37C[i].index = i; + gMultiuseListMenuTemplate.items = gUnknown_203F37C; + if (gUnknown_203F370.unk_04 != 5) + gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007 + 1; + else + gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007; + gMultiuseListMenuTemplate.windowId = 0; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 9; + gMultiuseListMenuTemplate.cursor_X = 1; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.maxShowed = gUnknown_203F36C->unk_008; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 0; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = sub_813D3C0; + gMultiuseListMenuTemplate.itemPrintFunc = sub_813D430; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.scrollMultiple = 0; +} + +void sub_813D31C(u8 * dest, u16 itemId) +{ + StringCopy(gStringVar4, gText_FontSize0); + StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); + ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(gStringVar4, gStringVar1); + CopyItemName(itemId, gStringVar1); + StringAppend(gStringVar4, gUnknown_84643B4); + StringAppend(gStringVar4, gText_FontSize2); + StringAppend(gStringVar4, gStringVar1); + StringCopy(dest, gStringVar4); +} + +void sub_813D39C(s16 a0, u8 *dest) +{ + StringCopy(dest, &gUnknown_203F380[a0 * 27]); +} + +void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + if (onInit != TRUE) + { + PlaySE(SE_W287B); + sub_813EC28(); + } + DestroyItemMenuIcon(gUnknown_203F36C->unk_009 ^ 1); + if (gUnknown_203F36C->unk_007 != itemIndex) + sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), gUnknown_203F36C->unk_009); + else + sub_80989A0(ITEM_N_A, gUnknown_203F36C->unk_009); + gUnknown_203F36C->unk_009 ^= 1; + sub_813D538(itemIndex); +} + +void sub_813D430(u8 windowId, s32 itemId, u8 y) +{ + u16 unused; + u16 itemQuantity; + if (itemId != -2 && gUnknown_203F36C->unk_007 != itemId) + { + unused = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemId); + itemQuantity = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, itemId); + ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_813E9A0(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); + } +} + +void sub_813D4B0(u8 taskId, u8 colorIdx) +{ + sub_813D4D0(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx); +} + +void sub_813D4D0(u8 y, u8 colorIdx) +{ + u8 width; + u8 height; + if (colorIdx == 0xFF) + { + width = GetMenuCursorDimensionByFont(2, 0); + height = GetMenuCursorDimensionByFont(2, 1); + FillWindowPixelRect(0, 0, 1, y, width, height); + CopyWindowToVram(0, 2); + } + else + { + sub_813E9A0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); + } +} + +void sub_813D538(s32 itemIdx) +{ + const u8 *str; + if (itemIdx != gUnknown_203F36C->unk_007) + str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx)); + else + str = gUnknown_8416716; + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + sub_813E9A0(1, 2, str, 0, 2, 2, 0, 0, 0); +} + +void sub_813D594(s32 pal) +{ + SetBgRectPal(1, 0, 16, 30, 4, pal + 1); + ScheduleBgCopyTilemapToVram(1); +} + +void sub_813D5BC(void) +{ + if (gUnknown_203F370.unk_04 != 5) + gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008 + 1, 110, 110, &gUnknown_203F370.unk_0A); + else + gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A); +} From b843b5529227e301895920b56585cf9ec69c9b53 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 21:35:20 -0400 Subject: [PATCH 059/100] berry_pouch through sub_813D940 --- asm/berry_pouch.s | 537 +--------------------------------------------- include/item.h | 1 + include/strings.h | 1 + src/berry_pouch.c | 152 ++++++++++++- sym_ewram.txt | 18 +- 5 files changed, 162 insertions(+), 547 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index a34c409e1..9d5ecb593 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,527 +5,6 @@ .text - thumb_func_start sub_813D614 -sub_813D614: @ 813D614 - push {r4,lr} - sub sp, 0x10 - ldr r4, _0813D648 @ =gUnknown_203F36C - ldr r1, [r4] - movs r0, 0x1 - strh r0, [r1, 0x4] - movs r0, 0x2 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r1, 0x4 - str r1, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xD4 - movs r2, 0x78 - movs r3, 0x98 - bl AddScrollIndicatorArrowPairParameterized - ldr r1, [r4] - strb r0, [r1, 0x6] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D648: .4byte gUnknown_203F36C - thumb_func_end sub_813D614 - - thumb_func_start sub_813D64C -sub_813D64C: @ 813D64C - push {r4,lr} - sub sp, 0x10 - ldr r4, _0813D680 @ =gUnknown_203F36C - ldr r1, [r4] - movs r0, 0x1 - strh r0, [r1, 0x4] - movs r0, 0x2 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r1, 0x4 - str r1, [sp, 0xC] - movs r0, 0x2 - movs r1, 0x98 - movs r2, 0x48 - movs r3, 0x68 - bl AddScrollIndicatorArrowPairParameterized - ldr r1, [r4] - strb r0, [r1, 0x6] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D680: .4byte gUnknown_203F36C - thumb_func_end sub_813D64C - - thumb_func_start sub_813D684 -sub_813D684: @ 813D684 - push {r4,lr} - ldr r4, _0813D6A0 @ =gUnknown_203F36C - ldr r1, [r4] - ldrb r0, [r1, 0x6] - cmp r0, 0xFF - beq _0813D69A - bl RemoveScrollIndicatorArrowPair - ldr r1, [r4] - movs r0, 0xFF - strb r0, [r1, 0x6] -_0813D69A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D6A0: .4byte gUnknown_203F36C - thumb_func_end sub_813D684 - - thumb_func_start sub_813D6A4 -sub_813D6A4: @ 813D6A4 - push {r4,lr} - sub sp, 0x14 - ldr r4, _0813D6E0 @ =gUnknown_841670A - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r3, 0x48 - subs r3, r0 - lsrs r3, 1 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x2 - movs r1, 0x1 - adds r2, r4, 0 - bl sub_813E9A0 - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D6E0: .4byte gUnknown_841670A - thumb_func_end sub_813D6A4 - - thumb_func_start sub_813D6E4 -sub_813D6E4: @ 813D6E4 - ldr r1, _0813D6F0 @ =gUnknown_203F370 - movs r0, 0 - strh r0, [r1, 0x8] - strh r0, [r1, 0xA] - bx lr - .align 2, 0 -_0813D6F0: .4byte gUnknown_203F370 - thumb_func_end sub_813D6E4 - - thumb_func_start sub_813D6F4 -sub_813D6F4: @ 813D6F4 - push {r4,lr} - ldr r0, _0813D70C @ =gUnknown_203F370 - ldrb r1, [r0, 0x4] - adds r4, r0, 0 - cmp r1, 0x5 - beq _0813D714 - ldr r0, _0813D710 @ =gUnknown_203F36C - ldr r1, [r0] - ldrb r1, [r1, 0x7] - adds r2, r1, 0x1 - adds r1, r0, 0 - b _0813D71A - .align 2, 0 -_0813D70C: .4byte gUnknown_203F370 -_0813D710: .4byte gUnknown_203F36C -_0813D714: - ldr r1, _0813D744 @ =gUnknown_203F36C - ldr r0, [r1] - ldrb r2, [r0, 0x7] -_0813D71A: - ldrh r0, [r4, 0xA] - cmp r0, 0 - beq _0813D72E - ldr r1, [r1] - ldrb r1, [r1, 0x8] - adds r0, r1 - cmp r0, r2 - ble _0813D72E - subs r0, r2, r1 - strh r0, [r4, 0xA] -_0813D72E: - adds r3, r4, 0 - ldrh r0, [r3, 0xA] - ldrh r1, [r3, 0x8] - adds r0, r1 - cmp r0, r2 - blt _0813D74C - cmp r2, 0x1 - bhi _0813D748 - movs r0, 0 - strh r0, [r3, 0x8] - b _0813D74C - .align 2, 0 -_0813D744: .4byte gUnknown_203F36C -_0813D748: - subs r0, r2, 0x1 - strh r0, [r4, 0x8] -_0813D74C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813D6F4 - - thumb_func_start sub_813D754 -sub_813D754: @ 813D754 - push {r4-r6,lr} - ldr r0, _0813D770 @ =gUnknown_203F370 - ldrb r1, [r0, 0x4] - adds r5, r0, 0 - cmp r1, 0x5 - beq _0813D778 - ldr r1, _0813D774 @ =gUnknown_203F36C - ldr r0, [r1] - ldrb r0, [r0, 0x7] - adds r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - b _0813D77E - .align 2, 0 -_0813D770: .4byte gUnknown_203F370 -_0813D774: .4byte gUnknown_203F36C -_0813D778: - ldr r1, _0813D7C8 @ =gUnknown_203F36C - ldr r0, [r1] - ldrb r4, [r0, 0x7] -_0813D77E: - adds r6, r1, 0 - ldrh r0, [r5, 0x8] - cmp r0, 0x4 - bls _0813D7C2 - movs r3, 0 - subs r0, 0x4 - cmp r3, r0 - bgt _0813D7C2 - ldrh r0, [r5, 0xA] - ldr r1, [r6] - ldrb r1, [r1, 0x8] - adds r0, r1 - cmp r0, r4 - beq _0813D7C2 - adds r2, r5, 0 -_0813D79C: - ldrh r0, [r2, 0x8] - subs r0, 0x1 - strh r0, [r2, 0x8] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrh r0, [r2, 0x8] - subs r0, 0x4 - cmp r3, r0 - bgt _0813D7C2 - ldrh r0, [r5, 0xA] - ldr r1, [r6] - ldrb r1, [r1, 0x8] - adds r0, r1 - cmp r0, r4 - bne _0813D79C -_0813D7C2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813D7C8: .4byte gUnknown_203F36C - thumb_func_end sub_813D754 - - thumb_func_start sub_813D7CC -sub_813D7CC: @ 813D7CC - push {lr} - ldr r0, _0813D7FC @ =gUnknown_203F36C - ldr r0, [r0] - cmp r0, 0 - beq _0813D7DA - bl Free -_0813D7DA: - ldr r0, _0813D800 @ =gUnknown_203F37C - ldr r0, [r0] - cmp r0, 0 - beq _0813D7E6 - bl Free -_0813D7E6: - ldr r0, _0813D804 @ =gUnknown_203F380 - ldr r0, [r0] - cmp r0, 0 - beq _0813D7F2 - bl Free -_0813D7F2: - bl FreeAllWindowBuffers - pop {r0} - bx r0 - .align 2, 0 -_0813D7FC: .4byte gUnknown_203F36C -_0813D800: .4byte gUnknown_203F37C -_0813D804: .4byte gUnknown_203F380 - thumb_func_end sub_813D7CC - - thumb_func_start BerryPouch_StartFadeToExitCallback -BerryPouch_StartFadeToExitCallback: @ 813D808 - 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, _0813D83C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813D840 @ =sub_813D844 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D83C: .4byte gTasks -_0813D840: .4byte sub_813D844 - thumb_func_end BerryPouch_StartFadeToExitCallback - - thumb_func_start sub_813D844 -sub_813D844: @ 813D844 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0813D87C @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _0813D880 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813D8A4 - ldrb r0, [r2] - ldr r4, _0813D884 @ =gUnknown_203F37A - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - ldr r0, _0813D888 @ =gUnknown_203F36C - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _0813D88C - bl SetMainCallback2 - b _0813D896 - .align 2, 0 -_0813D87C: .4byte gTasks+0x8 -_0813D880: .4byte gPaletteFade -_0813D884: .4byte gUnknown_203F37A -_0813D888: .4byte gUnknown_203F36C -_0813D88C: - adds r0, r4, 0 - subs r0, 0xA - ldr r0, [r0] - bl SetMainCallback2 -_0813D896: - bl sub_813D684 - bl sub_813D7CC - adds r0, r5, 0 - bl DestroyTask -_0813D8A4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813D844 - - thumb_func_start sub_813D8AC -sub_813D8AC: @ 813D8AC - push {r4,lr} - ldr r4, _0813D904 @ =gBagPockets + 0x20 - adds r0, r4, 0 - bl SortAndCompactBagPocket - ldr r3, _0813D908 @ =gUnknown_203F36C - ldr r1, [r3] - movs r0, 0 - strb r0, [r1, 0x7] - movs r2, 0 - ldrb r0, [r4, 0x4] - cmp r2, r0 - bcs _0813D8EE - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0813D8EE -_0813D8CE: - ldr r0, [r3] - ldrb r1, [r0, 0x7] - adds r1, 0x1 - strb r1, [r0, 0x7] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrb r0, [r4, 0x4] - cmp r2, r0 - bcs _0813D8EE - ldr r0, [r4] - lsls r1, r2, 2 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0813D8CE -_0813D8EE: - ldr r0, _0813D90C @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - cmp r0, 0x5 - beq _0813D910 - ldr r0, _0813D908 @ =gUnknown_203F36C - ldr r1, [r0] - ldrb r1, [r1, 0x7] - adds r2, r1, 0x1 - adds r1, r0, 0 - b _0813D916 - .align 2, 0 -_0813D904: .4byte gBagPockets + 0x20 -_0813D908: .4byte gUnknown_203F36C -_0813D90C: .4byte gUnknown_203F370 -_0813D910: - ldr r1, _0813D924 @ =gUnknown_203F36C - ldr r0, [r1] - ldrb r2, [r0, 0x7] -_0813D916: - cmp r2, 0x7 - bls _0813D928 - ldr r1, [r1] - movs r0, 0x7 - strb r0, [r1, 0x8] - b _0813D92C - .align 2, 0 -_0813D924: .4byte gUnknown_203F36C -_0813D928: - ldr r0, [r1] - strb r2, [r0, 0x8] -_0813D92C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813D8AC - - thumb_func_start BerryPouch_SetExitCallback -BerryPouch_SetExitCallback: @ 813D934 - ldr r1, _0813D93C @ =gUnknown_203F36C - ldr r1, [r1] - str r0, [r1] - bx lr - .align 2, 0 -_0813D93C: .4byte gUnknown_203F36C - thumb_func_end BerryPouch_SetExitCallback - - thumb_func_start sub_813D940 -sub_813D940: @ 813D940 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x14 - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0813D9E8 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x8 - bl sub_813EA08 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x2 - ldrsh r0, [r4, r1] - ldr r1, _0813D9EC @ =gStringVar1 - mov r10, r1 - bl sub_813D39C - ldr r0, _0813D9F0 @ =gStringVar4 - mov r9, r0 - adds r1, r6, 0 - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [sp] - movs r6, 0x1 - str r6, [sp, 0x4] - str r0, [sp, 0x8] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0xC] - str r6, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x2 - mov r2, r9 - movs r3, 0 - bl sub_813E9A0 - movs r0, 0 - bl sub_813EA08 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, r10 - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, _0813D9F4 @ =gText_TimesStrVar1 - mov r0, r9 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - str r6, [sp, 0x4] - mov r0, r8 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r6, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0 - mov r2, r9 - movs r3, 0x4 - bl sub_813E9A0 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813D9E8: .4byte gTasks+0x8 -_0813D9EC: .4byte gStringVar1 -_0813D9F0: .4byte gStringVar4 -_0813D9F4: .4byte gText_TimesStrVar1 - thumb_func_end sub_813D940 - thumb_func_start sub_813D9F8 sub_813D9F8: @ 813D9F8 push {r4-r6,lr} @@ -613,7 +92,7 @@ _0813DA9E: bl ListMenu_ProcessInput adds r5, r0, 0 ldrb r0, [r7] - ldr r4, _0813DAE0 @ =gUnknown_203F37A + ldr r4, _0813DAE0 @ =gUnknown_203F370 + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl ListMenuGetScrollAndRow @@ -637,7 +116,7 @@ _0813DA9E: .align 2, 0 _0813DAD8: .4byte gTasks+0x8 _0813DADC: .4byte gPaletteFade -_0813DAE0: .4byte gUnknown_203F37A +_0813DAE0: .4byte gUnknown_203F370 + 10 _0813DAE4: .4byte gMain _0813DAE8: .4byte gSpecialVar_ItemId _0813DAEC: @@ -1423,7 +902,7 @@ _0813E18A: movs r0, 0x9 bl sub_813EA98 ldrb r0, [r5] - ldr r4, _0813E1F8 @ =gUnknown_203F37A + ldr r4, _0813E1F8 @ =gUnknown_203F370 + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl DestroyListMenuTask @@ -1455,7 +934,7 @@ _0813E1E4: _0813E1EC: .4byte gTasks+0x8 _0813E1F0: .4byte gMain _0813E1F4: .4byte gSpecialVar_ItemId -_0813E1F8: .4byte gUnknown_203F37A +_0813E1F8: .4byte gUnknown_203F370 + 10 _0813E1FC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_813E164 @@ -1565,7 +1044,7 @@ sub_813E2B8: @ 813E2B8 movs r0, 0x5 bl sub_813EACC ldrb r0, [r5] - ldr r4, _0813E318 @ =gUnknown_203F37A + ldr r4, _0813E318 @ =gUnknown_203F370 + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl DestroyListMenuTask @@ -1592,7 +1071,7 @@ sub_813E2B8: @ 813E2B8 bx r0 .align 2, 0 _0813E314: .4byte gTasks+0x8 -_0813E318: .4byte gUnknown_203F37A +_0813E318: .4byte gUnknown_203F370 + 10 _0813E31C: .4byte gMultiuseListMenuTemplate thumb_func_end sub_813E2B8 @@ -2196,7 +1675,7 @@ sub_813E7F0: @ 813E7F0 bl sub_809C09C mov r3, r8 ldrb r0, [r3] - ldr r4, _0813E8C8 @ =gUnknown_203F37A + ldr r4, _0813E8C8 @ =gUnknown_203F370 + 10 subs r2, r4, 0x2 adds r1, r4, 0 bl DestroyListMenuTask @@ -2243,7 +1722,7 @@ sub_813E7F0: @ 813E7F0 _0813E8BC: .4byte gTasks+0x8 _0813E8C0: .4byte gSpecialVar_ItemId _0813E8C4: .4byte gSaveBlock1Ptr -_0813E8C8: .4byte gUnknown_203F37A +_0813E8C8: .4byte gUnknown_203F370 + 10 _0813E8CC: .4byte gMultiuseListMenuTemplate _0813E8D0: .4byte sub_813E8D4 thumb_func_end sub_813E7F0 diff --git a/include/item.h b/include/item.h index 0f0adbca8..f0aaa0f6c 100644 --- a/include/item.h +++ b/include/item.h @@ -77,5 +77,6 @@ u16 GetPcItemQuantity(u16 *); void ItemPcCompaction(void); void RemoveItemFromPC(u16 itemId, u16 quantity); +void SortAndCompactBagPocket(struct BagPocket * pocket); #endif // GUARD_ITEM_H diff --git a/include/strings.h b/include/strings.h index 5c3cbb67b..c0863dffb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -316,6 +316,7 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_841670A[]; extern const u8 gUnknown_8416716[]; #endif //GUARD_STRINGS_H diff --git a/src/berry_pouch.c b/src/berry_pouch.c index c8d6b508c..48baac93a 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -24,8 +24,8 @@ struct BerryPouchStruct_203F36C { - u32 unk_000; - u8 filler_004[2]; + void (*unk_000)(void); + u16 unk_004; u8 unk_006; u8 unk_007; u8 unk_008; @@ -68,11 +68,13 @@ void sub_813D6A4(void); void sub_813D6F4(void); void sub_813D754(void); void sub_813D7CC(void); +void sub_813D844(u8 taskId); void sub_813D8AC(void); void sub_813DA68(u8 taskId); void sub_813EC28(void); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +u8 sub_813EA08(u8); void sub_813EC08(void); static const struct BgTemplate gUnknown_846434C[] = { @@ -125,7 +127,7 @@ void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) gUnknown_203F370.unk_05 = a2; if (savedCallback != NULL) gUnknown_203F370.savedCallback = savedCallback; - gUnknown_203F36C->unk_000 = 0; + gUnknown_203F36C->unk_000 = NULL; gUnknown_203F36C->unk_009 = 0; gUnknown_203F36C->unk_006 = 0xFF; for (i = 0; i < 4; i++) @@ -475,3 +477,147 @@ void sub_813D5BC(void) else gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A); } + +void sub_813D614(void) +{ + gUnknown_203F36C->unk_004 = 1; + gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &gUnknown_203F36C->unk_004); +} + +void sub_813D64C(void) +{ + gUnknown_203F36C->unk_004 = 1; + gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &gUnknown_203F36C->unk_004); +} + +void sub_813D684(void) +{ + if (gUnknown_203F36C->unk_006 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203F36C->unk_006); + gUnknown_203F36C->unk_006 = 0xFF; + } +} + +void sub_813D6A4(void) +{ + u32 slack = 72 - GetStringWidth(1, gUnknown_841670A, 0); + sub_813E9A0(2, 1, gUnknown_841670A, slack / 2, 1, 0, 0, 0, 0); +} + +void sub_813D6E4(void) +{ + gUnknown_203F370.unk_08 = 0; + gUnknown_203F370.unk_0A = 0; +} + +void sub_813D6F4(void) +{ + s32 r2; + if (gUnknown_203F370.unk_04 != 5) + r2 = gUnknown_203F36C->unk_007 + 1; + else + r2 = gUnknown_203F36C->unk_007; + if (gUnknown_203F370.unk_0A != 0 && gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 > r2) + gUnknown_203F370.unk_0A = r2 - gUnknown_203F36C->unk_008; + if (gUnknown_203F370.unk_0A + gUnknown_203F370.unk_08 >= r2) + { + if (r2 == 0 || r2 == 1) + gUnknown_203F370.unk_08 = 0; + else + gUnknown_203F370.unk_08 = r2 - 1; + } +} + +void sub_813D754(void) +{ + u8 lim; + u8 i; + if (gUnknown_203F370.unk_04 != 5) + lim = gUnknown_203F36C->unk_007 + 1; + else + lim = gUnknown_203F36C->unk_007; + if (gUnknown_203F370.unk_08 > 4) + { + for (i = 0; i <= gUnknown_203F370.unk_08 - 4; gUnknown_203F370.unk_08--, gUnknown_203F370.unk_0A++, i++) + { + if (gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 == lim) + break; + } + } +} + +void sub_813D7CC(void) +{ + if (gUnknown_203F36C != NULL) + Free(gUnknown_203F36C); + if (gUnknown_203F37C != NULL) + Free(gUnknown_203F37C); + if (gUnknown_203F380 != NULL) + Free(gUnknown_203F380); + FreeAllWindowBuffers(); +} + +void BerryPouch_StartFadeToExitCallback(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_813D844; +} + +void sub_813D844(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + if (gUnknown_203F36C->unk_000 != NULL) + SetMainCallback2(gUnknown_203F36C->unk_000); + else + SetMainCallback2(gUnknown_203F370.savedCallback); + sub_813D684(); + sub_813D7CC(); + DestroyTask(taskId); + } +} + +void sub_813D8AC(void) +{ + u16 i; + u32 r2; + struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; + SortAndCompactBagPocket(pocket); + gUnknown_203F36C->unk_007 = 0; + for (i = 0; i < pocket->capacity; i++) + { + if (pocket->itemSlots[i].itemId == ITEM_NONE) + break; + gUnknown_203F36C->unk_007++; + } + if (gUnknown_203F370.unk_04 != 5) + r2 = gUnknown_203F36C->unk_007 + 1; + else + r2 = gUnknown_203F36C->unk_007; + if (r2 > 7) + gUnknown_203F36C->unk_008 = 7; + else + gUnknown_203F36C->unk_008 = r2; +} + +void BerryPouch_SetExitCallback(void (*callback)(void)) +{ + gUnknown_203F36C->unk_000 = callback; +} + +void sub_813D940(u8 taskId, const u8 * str) +{ + s16 * data = gTasks[taskId].data; + u8 windowId = sub_813EA08(8); + u8 windowId2; + sub_813D39C(data[1], gStringVar1); + StringExpandPlaceholders(gStringVar4, str); + sub_813E9A0(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1); + windowId2 = sub_813EA08(0); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_813E9A0(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 0a91bcce7..1ee1f4b5b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1342,22 +1342,10 @@ gUnknown_203B170: @ 203B170 .align 2 .include "src/help_system.o" + .align 2 .include "src/dynamic_placeholder_text_util.o" - -gUnknown_203F36C: @ 203F36C - .space 0x4 - -gUnknown_203F370: @ 203F370 - .space 0xA - -gUnknown_203F37A: @ 203F37A - .space 0x2 - -gUnknown_203F37C: @ 203F37C - .space 0x4 - -gUnknown_203F380: @ 203F380 - .space 0x4 + .align 2 + .include "src/berry_pouch.o" gUnknown_203F384: @ 203F384 .space 0x4 From 01d42d07f849ea476bad3e80fb75c36806f39382 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 21:40:58 -0400 Subject: [PATCH 060/100] Berry Pouch sub_813D9F8 --- asm/berry_pouch.s | 53 ----------------------------------------------- src/berry_pouch.c | 10 +++++++++ 2 files changed, 10 insertions(+), 53 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 9d5ecb593..e5828dff3 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,59 +5,6 @@ .text - thumb_func_start sub_813D9F8 -sub_813D9F8: @ 813D9F8 - push {r4-r6,lr} - sub sp, 0x14 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - bl sub_813EB10 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - adds r0, r6, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _0813DA5C @ =gStringVar1 - lsls r4, 16 - asrs r4, 16 - adds r1, r4, 0 - movs r2, 0x2 - adds r3, r5, 0 - bl ConvertIntToDecimalStringN - ldr r4, _0813DA60 @ =gStringVar4 - ldr r1, _0813DA64 @ =gText_TimesStrVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0x4 - bl sub_813E9A0 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813DA5C: .4byte gStringVar1 -_0813DA60: .4byte gStringVar4 -_0813DA64: .4byte gText_TimesStrVar1 - thumb_func_end sub_813D9F8 - thumb_func_start sub_813DA68 sub_813DA68: @ 813DA68 push {r4-r7,lr} diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 48baac93a..a00a15f0c 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -75,6 +75,7 @@ void sub_813EC28(void); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); u8 sub_813EA08(u8); +u8 sub_813EB10(u8); void sub_813EC08(void); static const struct BgTemplate gUnknown_846434C[] = { @@ -621,3 +622,12 @@ void sub_813D940(u8 taskId, const u8 * str) StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); sub_813E9A0(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); } + +void sub_813D9F8(u8 whichWindow, s16 quantity, u8 ndigits) +{ + u8 windowId = sub_813EB10(whichWindow); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, ndigits); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1); +} From 3766ddcfda811cff3a7c38808c9efe294c33ed7c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Sep 2019 12:48:11 -0400 Subject: [PATCH 061/100] berry pouch through sub_813DD74 --- asm/berry_pouch.s | 383 --------------------------------------------- baserom.ips | Bin 2012786 -> 2012710 bytes data/berry_pouch.s | 17 +- data/strings.s | 2 +- src/berry_pouch.c | 136 +++++++++++++++- sym_ewram.txt | 13 -- 6 files changed, 145 insertions(+), 406 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index e5828dff3..5d3db9265 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,389 +5,6 @@ .text - thumb_func_start sub_813DA68 -sub_813DA68: @ 813DA68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0813DAD8 @ =gTasks+0x8 - adds r7, r0, r1 - ldr r0, _0813DADC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - beq _0813DA90 - b _0813DB9E -_0813DA90: - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813DA9E - b _0813DB9E -_0813DA9E: - ldrb r0, [r7] - bl ListMenu_ProcessInput - adds r5, r0, 0 - ldrb r0, [r7] - ldr r4, _0813DAE0 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl ListMenuGetScrollAndRow - ldr r0, _0813DAE4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0813DAEC - adds r0, r4, 0 - subs r0, 0xA - ldrb r0, [r0, 0x5] - cmp r0, 0x1 - bne _0813DAEC - movs r0, 0x5 - bl PlaySE - ldr r0, _0813DAE8 @ =gSpecialVar_ItemId - mov r1, r8 - strh r1, [r0] - b _0813DB48 - .align 2, 0 -_0813DAD8: .4byte gTasks+0x8 -_0813DADC: .4byte gPaletteFade -_0813DAE0: .4byte gUnknown_203F370 + 10 -_0813DAE4: .4byte gMain -_0813DAE8: .4byte gSpecialVar_ItemId -_0813DAEC: - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _0813DAFC - adds r0, 0x1 - cmp r5, r0 - bne _0813DB10 - b _0813DB9E -_0813DAFC: - ldr r0, _0813DB0C @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - cmp r0, 0x5 - beq _0813DB9E - movs r0, 0x5 - bl PlaySE - b _0813DB42 - .align 2, 0 -_0813DB0C: .4byte gUnknown_203F370 -_0813DB10: - movs r0, 0x5 - bl PlaySE - ldr r3, _0813DB30 @ =gUnknown_203F370 - mov r8, r3 - ldrb r0, [r3, 0x4] - cmp r0, 0x5 - bne _0813DB38 - lsls r1, r5, 16 - lsrs r1, 16 - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - ldr r1, _0813DB34 @ =gSpecialVar_ItemId - b _0813DB46 - .align 2, 0 -_0813DB30: .4byte gUnknown_203F370 -_0813DB34: .4byte gSpecialVar_ItemId -_0813DB38: - ldr r0, _0813DB50 @ =gUnknown_203F36C - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r5, r0 - bne _0813DB58 -_0813DB42: - ldr r1, _0813DB54 @ =gSpecialVar_ItemId - movs r0, 0 -_0813DB46: - strh r0, [r1] -_0813DB48: - adds r0, r6, 0 - bl BerryPouch_StartFadeToExitCallback - b _0813DB9E - .align 2, 0 -_0813DB50: .4byte gUnknown_203F36C -_0813DB54: .4byte gSpecialVar_ItemId -_0813DB58: - bl sub_813D684 - movs r0, 0x1 - bl sub_813D594 - ldrb r0, [r7] - movs r1, 0x2 - bl sub_813D4B0 - strh r5, [r7, 0x2] - lsls r4, r5, 16 - lsrs r4, 16 - movs r0, 0x5 - adds r1, r4, 0 - bl BagGetQuantityByPocketPosition - strh r0, [r7, 0x4] - movs r0, 0x5 - adds r1, r4, 0 - bl BagGetItemIdByPocketPosition - ldr r1, _0813DBA8 @ =gSpecialVar_ItemId - strh r0, [r1] - ldr r0, _0813DBAC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r2, _0813DBB0 @ =gUnknown_8464358 - mov r3, r8 - ldrb r0, [r3, 0x4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] -_0813DB9E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813DBA8: .4byte gSpecialVar_ItemId -_0813DBAC: .4byte gTasks -_0813DBB0: .4byte gUnknown_8464358 - thumb_func_end sub_813DA68 - - thumb_func_start sub_813DBB4 -sub_813DBB4: @ 813DBB4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl sub_813D594 - bl sub_813D5BC - ldr r1, _0813DBDC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813DBE0 @ =sub_813DA68 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813DBDC: .4byte gTasks -_0813DBE0: .4byte sub_813DA68 - thumb_func_end sub_813DBB4 - - thumb_func_start sub_813DBE4 -sub_813DBE4: @ 813DBE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813DC10 @ =gTasks+0x8 - adds r7, r1, r0 - ldr r0, _0813DC14 @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - cmp r0, 0x4 - bne _0813DC24 - ldr r1, _0813DC18 @ =gUnknown_203F384 - ldr r0, _0813DC1C @ =gUnknown_84643B0 - str r0, [r1] - ldr r1, _0813DC20 @ =gUnknown_203F388 - movs r0, 0x3 - b _0813DC86 - .align 2, 0 -_0813DC10: .4byte gTasks+0x8 -_0813DC14: .4byte gUnknown_203F370 -_0813DC18: .4byte gUnknown_203F384 -_0813DC1C: .4byte gUnknown_84643B0 -_0813DC20: .4byte gUnknown_203F388 -_0813DC24: - bl MenuHelpers_LinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813DC38 - bl InUnionRoom - cmp r0, 0x1 - bne _0813DC7C -_0813DC38: - ldr r0, _0813DC54 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl sub_80BF6A8 - lsls r0, 24 - cmp r0, 0 - bne _0813DC64 - ldr r1, _0813DC58 @ =gUnknown_203F384 - ldr r0, _0813DC5C @ =gUnknown_84643AC - str r0, [r1] - ldr r1, _0813DC60 @ =gUnknown_203F388 - movs r0, 0x1 - b _0813DC86 - .align 2, 0 -_0813DC54: .4byte gSpecialVar_ItemId -_0813DC58: .4byte gUnknown_203F384 -_0813DC5C: .4byte gUnknown_84643AC -_0813DC60: .4byte gUnknown_203F388 -_0813DC64: - ldr r1, _0813DC70 @ =gUnknown_203F384 - ldr r0, _0813DC74 @ =gUnknown_84643A8 - str r0, [r1] - ldr r1, _0813DC78 @ =gUnknown_203F388 - movs r0, 0x2 - b _0813DC86 - .align 2, 0 -_0813DC70: .4byte gUnknown_203F384 -_0813DC74: .4byte gUnknown_84643A8 -_0813DC78: .4byte gUnknown_203F388 -_0813DC7C: - ldr r1, _0813DD58 @ =gUnknown_203F384 - ldr r0, _0813DD5C @ =gUnknown_84643A4 - str r0, [r1] - ldr r1, _0813DD60 @ =gUnknown_203F388 - movs r0, 0x4 -_0813DC86: - strb r0, [r1] - mov r8, r1 - mov r1, r8 - ldrb r0, [r1] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA08 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - str r4, [sp] - str r0, [sp, 0x4] - mov r1, r8 - ldrb r0, [r1] - str r0, [sp, 0x8] - ldr r0, _0813DD64 @ =gUnknown_846437C - str r0, [sp, 0xC] - ldr r0, _0813DD58 @ =gUnknown_203F384 - ldr r0, [r0] - str r0, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0x2 - bl AddItemMenuActionTextPrinters - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - mov r1, r8 - ldrb r0, [r1] - str r0, [sp, 0x4] - movs r0, 0 - mov r8, r0 - str r0, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0x6 - bl sub_813EA08 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0x2 - ldrsh r0, [r7, r1] - ldr r1, _0813DD68 @ =gStringVar1 - bl sub_813D39C - ldr r5, _0813DD6C @ =gStringVar4 - ldr r1, _0813DD70 @ =gOtherText_StrVar1 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r0, [sp, 0x8] - mov r0, r8 - str r0, [sp, 0xC] - str r1, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl sub_813E9A0 - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813DD58: .4byte gUnknown_203F384 -_0813DD5C: .4byte gUnknown_84643A4 -_0813DD60: .4byte gUnknown_203F388 -_0813DD64: .4byte gUnknown_846437C -_0813DD68: .4byte gStringVar1 -_0813DD6C: .4byte gStringVar4 -_0813DD70: .4byte gOtherText_StrVar1 - thumb_func_end sub_813DBE4 - - thumb_func_start sub_813DD74 -sub_813DD74: @ 813DD74 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_813DBE4 - ldr r1, _0813DD98 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813DD9C @ =sub_813DDA0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813DD98: .4byte gTasks -_0813DD9C: .4byte sub_813DDA0 - thumb_func_end sub_813DD74 - thumb_func_start sub_813DDA0 sub_813DDA0: @ 813DDA0 push {r4-r6,lr} diff --git a/baserom.ips b/baserom.ips index 9d0a620e2dcbeb73107eace1984395d1f7a2ca20..5f7a8d538774e4cfe60b9dc3098bec51b2030b67 100644 GIT binary patch delta 127 zcmezLrfS)ns)iQE7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~Eqp=ig>x7L?miIaIC)=~ zBl9^BKNaR^-?*L+i1~q70Eh*FSO|!Pfmj5HMS)lhh{b_e0*EDnSPF=xfmjBJWw&o! IFL#g)00~$(c>n+a delta 203 zcmWm5ISRsH5QgFW$!{E&#AVz!u=E&S!OB7qixeKfCLmZ0cnu4&4TxZ6VW)*hh>8m~ zsq6*64D;|Z#cU$~8~F=SVu~eN5@JhINK%rPjAX^xxr1OlG)A+KY5rvDy_kMze1~_Y z^Nnfxfj84?(kJK2v_=o;7F7?X6WYbk1vTO^m1SC5W3{0yz4QVXa*&4t6oH`xWvDunk_007) + { + gSpecialVar_ItemId = 0; + BerryPouch_StartFadeToExitCallback(taskId); + } + else + { + sub_813D684(); + sub_813D594(1); + sub_813D4B0(data[0], 2); + data[1] = menuInput; + data[2] = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, menuInput); + gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput); + gTasks[taskId].func = gUnknown_8464358[gUnknown_203F370.unk_04]; + } + break; + } + } + } +} + +void sub_813DBB4(u8 taskId) +{ + sub_813D594(0); + sub_813D5BC(); + gTasks[taskId].func = sub_813DA68; +} + +void sub_813DBE4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 windowId; + u8 windowId2; + + if (gUnknown_203F370.unk_04 == 4) + { + gUnknown_203F384 = gUnknown_84643B0; + gUnknown_203F388 = 3; + } + else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) + { + if (!sub_80BF6A8(gSpecialVar_ItemId)) + { + gUnknown_203F384 = gUnknown_84643AC; + gUnknown_203F388 = 1; + } + else + { + gUnknown_203F384 = gUnknown_84643A8; + gUnknown_203F388 = 2; + } + } + else + { + gUnknown_203F384 = gUnknown_84643A4; + gUnknown_203F388 = 4; + } + windowId = sub_813EA08(gUnknown_203F388 + 9); + AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, gUnknown_846437C, gUnknown_203F384); + Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, 0); + windowId2 = sub_813EA08(6); + sub_813D39C(data[1], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1); + sub_813E9A0(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); +} + +void sub_813DD74(u8 taskId) +{ + sub_813DBE4(taskId); + gTasks[taskId].func = sub_813DDA0; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 1ee1f4b5b..c50347082 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1346,19 +1346,6 @@ gUnknown_203B170: @ 203B170 .include "src/dynamic_placeholder_text_util.o" .align 2 .include "src/berry_pouch.o" - -gUnknown_203F384: @ 203F384 - .space 0x4 - -gUnknown_203F388: @ 203F388 - .space 0x4 - -gUnknown_203F38C: @ 203F38C - .space 0x10 - -gUnknown_203F39C: @ 203F39C - .space 0x4 - .align 2 .include "src/slot_machine.o" From e65487716a0afc3c48d712f706783c58cc82676c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 16:59:39 -0400 Subject: [PATCH 062/100] berry_pouch through sub_813E2B8 --- asm/berry_pouch.s | 634 --------------------------- baserom.ips | Bin 2012710 -> 2012689 bytes data/berry_pouch.s | 29 -- data/strings.s | 8 +- graphics/berry_pouch/unk_8E85C1C.pal | 19 + include/party_menu.h | 1 + include/strings.h | 4 + src/berry_pouch.c | 269 +++++++++++- 8 files changed, 290 insertions(+), 674 deletions(-) create mode 100644 graphics/berry_pouch/unk_8E85C1C.pal diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 5d3db9265..e30e12580 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,640 +5,6 @@ .text - thumb_func_start sub_813DDA0 -sub_813DDA0: @ 813DDA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl sub_80BF72C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813DDFE - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r4, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _0813DDFE - adds r0, 0x1 - cmp r4, r0 - bne _0813DDE0 - movs r0, 0x5 - bl PlaySE - ldr r0, _0813DDDC @ =gUnknown_846437C - ldr r1, [r0, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - b _0813DDFE - .align 2, 0 -_0813DDDC: .4byte gUnknown_846437C -_0813DDE0: - movs r0, 0x5 - bl PlaySE - ldr r1, _0813DE04 @ =gUnknown_846437C - ldr r0, _0813DE08 @ =gUnknown_203F384 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_0813DDFE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813DE04: .4byte gUnknown_846437C -_0813DE08: .4byte gUnknown_203F384 - thumb_func_end sub_813DDA0 - - thumb_func_start sub_813DE0C -sub_813DE0C: @ 813DE0C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0813DE5C @ =gUnknown_203F388 - ldrb r0, [r0] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0813DE60 @ =gUnknown_203F370 - ldrb r0, [r0, 0x4] - cmp r0, 0x4 - bne _0813DE78 - ldr r4, _0813DE64 @ =gSpecialVar_ItemId - ldrh r0, [r4] - bl ItemId_GetBattleFunc - cmp r0, 0 - bne _0813DE68 - adds r0, r5, 0 - bl FieldUseFunc_OakStopsYou - b _0813DEB0 - .align 2, 0 -_0813DE5C: .4byte gUnknown_203F388 -_0813DE60: .4byte gUnknown_203F370 -_0813DE64: .4byte gSpecialVar_ItemId -_0813DE68: - ldrh r0, [r4] - bl ItemId_GetBattleFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 - b _0813DEB0 -_0813DE78: - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0813DEA0 - ldr r0, _0813DE9C @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813DEA0 - adds r0, r5, 0 - bl sub_813E274 - b _0813DEB0 - .align 2, 0 -_0813DE9C: .4byte gSpecialVar_ItemId -_0813DEA0: - ldr r0, _0813DEB8 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl ItemId_GetFieldFunc - adds r1, r0, 0 - adds r0, r5, 0 - bl _call_via_r1 -_0813DEB0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813DEB8: .4byte gSpecialVar_ItemId - thumb_func_end sub_813DE0C - - thumb_func_start sub_813DEBC -sub_813DEBC: @ 813DEBC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r7, r0, 3 - ldr r0, _0813DF24 @ =gTasks+0x8 - mov r8, r0 - adds r5, r7, r0 - ldr r4, _0813DF28 @ =gUnknown_203F388 - ldrb r0, [r4] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - movs r0, 0x6 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - ldrb r0, [r4] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - strh r0, [r5, 0x10] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0813DF2C - adds r0, r6, 0 - bl sub_813DF54 - b _0813DF42 - .align 2, 0 -_0813DF24: .4byte gTasks+0x8 -_0813DF28: .4byte gUnknown_203F388 -_0813DF2C: - ldr r1, _0813DF4C @ =gUnknown_84163DB - adds r0, r6, 0 - bl sub_813D940 - bl sub_813D614 - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _0813DF50 @ =sub_813E010 - str r1, [r0] -_0813DF42: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813DF4C: .4byte gUnknown_84163DB -_0813DF50: .4byte sub_813E010 - thumb_func_end sub_813DEBC - - thumb_func_start sub_813DF54 -sub_813DF54: @ 813DF54 - push {r4,r5,lr} - sub sp, 0x14 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - ldr r0, _0813DFB4 @ =gTasks+0x8 - adds r1, r0 - ldr r0, _0813DFB8 @ =gStringVar2 - movs r2, 0x10 - ldrsh r1, [r1, r2] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r5, _0813DFBC @ =gStringVar4 - ldr r1, _0813DFC0 @ =gUnknown_8416409 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x7 - bl sub_813EA08 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - str r1, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl sub_813E9A0 - ldr r1, _0813DFC4 @ =gUnknown_846436C - adds r0, r4, 0 - bl sub_813EB7C - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813DFB4: .4byte gTasks+0x8 -_0813DFB8: .4byte gStringVar2 -_0813DFBC: .4byte gStringVar4 -_0813DFC0: .4byte gUnknown_8416409 -_0813DFC4: .4byte gUnknown_846436C - thumb_func_end sub_813DF54 - - thumb_func_start sub_813DFC8 -sub_813DFC8: @ 813DFC8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _0813E00C @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x7 - bl sub_813EA98 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r5, 0 - bl sub_813DBB4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813E00C: .4byte gTasks+0x8 - thumb_func_end sub_813DFC8 - - thumb_func_start sub_813E010 -sub_813E010: @ 813E010 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0813E044 @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0x10 - ldrh r1, [r4, 0x4] - bl AdjustQuantityAccordingToDPadInput - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813E048 - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r0, 0 - movs r2, 0x3 - bl sub_813D9F8 - b _0813E0D4 - .align 2, 0 -_0813E044: .4byte gTasks+0x8 -_0813E048: - ldr r0, _0813E08C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E090 - movs r0, 0x5 - bl PlaySE - movs r0, 0x8 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - movs r0, 0x8 - bl sub_813EA98 - movs r0, 0 - bl sub_813EA98 - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - bl sub_813D684 - adds r0, r5, 0 - bl sub_813DF54 - b _0813E0D4 - .align 2, 0 -_0813E08C: .4byte gMain -_0813E090: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E0D4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x8 - bl sub_813EA98 - movs r0, 0 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_813D4B0 - bl sub_813D684 - adds r0, r6, 0 - bl sub_813DBB4 -_0813E0D4: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813E010 - - thumb_func_start sub_813E0DC -sub_813E0DC: @ 813E0DC - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _0813E14C @ =gTasks+0x8 - adds r5, r4, r6 - movs r0, 0x7 - bl sub_813EA98 - movs r1, 0x2 - ldrsh r0, [r5, r1] - ldr r1, _0813E150 @ =gStringVar1 - bl sub_813D39C - ldr r0, _0813E154 @ =gStringVar2 - movs r2, 0x10 - ldrsh r1, [r5, r2] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r5, _0813E158 @ =gStringVar4 - ldr r1, _0813E15C @ =gUnknown_84163F4 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x9 - bl sub_813EA08 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - str r1, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl sub_813E9A0 - subs r6, 0x8 - adds r4, r6 - ldr r0, _0813E160 @ =sub_813E164 - str r0, [r4] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E14C: .4byte gTasks+0x8 -_0813E150: .4byte gStringVar1 -_0813E154: .4byte gStringVar2 -_0813E158: .4byte gStringVar4 -_0813E15C: .4byte gUnknown_84163F4 -_0813E160: .4byte sub_813E164 - thumb_func_end sub_813E0DC - - thumb_func_start sub_813E164 -sub_813E164: @ 813E164 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0813E1EC @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _0813E1F0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813E18A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E1E4 -_0813E18A: - movs r0, 0x5 - bl PlaySE - ldr r0, _0813E1F4 @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldrh r1, [r5, 0x10] - bl RemoveBagItem - movs r0, 0x9 - bl sub_813EA98 - ldrb r0, [r5] - ldr r4, _0813E1F8 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D204 - ldr r0, _0813E1FC @ =gMultiuseListMenuTemplate - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r5] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r6, 0 - bl sub_813DBB4 -_0813E1E4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E1EC: .4byte gTasks+0x8 -_0813E1F0: .4byte gMain -_0813E1F4: .4byte gSpecialVar_ItemId -_0813E1F8: .4byte gUnknown_203F370 + 10 -_0813E1FC: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_813E164 - - thumb_func_start sub_813E200 -sub_813E200: @ 813E200 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E244 @ =gUnknown_203F388 - ldrb r0, [r0] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0813E248 - adds r0, r4, 0 - bl sub_813E274 - b _0813E25E - .align 2, 0 -_0813E244: .4byte gUnknown_203F388 -_0813E248: - ldr r0, _0813E264 @ =gUnknown_203F36C - ldr r1, [r0] - ldr r0, _0813E268 @ =sub_8126EDC - str r0, [r1] - ldr r1, _0813E26C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813E270 @ =BerryPouch_StartFadeToExitCallback - str r1, [r0] -_0813E25E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E264: .4byte gUnknown_203F36C -_0813E268: .4byte sub_8126EDC -_0813E26C: .4byte gTasks -_0813E270: .4byte BerryPouch_StartFadeToExitCallback - thumb_func_end sub_813E200 - - thumb_func_start sub_813E274 -sub_813E274: @ 813E274 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813E288 @ =gText_ThereIsNoPokemon - ldr r3, _0813E28C @ =sub_813E290 - movs r1, 0x2 - bl DisplayItemMessageInBerryPouch - pop {r0} - bx r0 - .align 2, 0 -_0813E288: .4byte gText_ThereIsNoPokemon -_0813E28C: .4byte sub_813E290 - thumb_func_end sub_813E274 - - thumb_func_start sub_813E290 -sub_813E290: @ 813E290 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E2B4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E2AE - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_813E2B8 -_0813E2AE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E2B4: .4byte gMain - thumb_func_end sub_813E290 - - thumb_func_start sub_813E2B8 -sub_813E2B8: @ 813E2B8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - ldr r0, _0813E314 @ =gTasks+0x8 - adds r5, r0 - movs r0, 0x5 - bl sub_813EACC - ldrb r0, [r5] - ldr r4, _0813E318 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D204 - ldr r0, _0813E31C @ =gMultiuseListMenuTemplate - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r5] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r6, 0 - bl sub_813DBB4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E314: .4byte gTasks+0x8 -_0813E318: .4byte gUnknown_203F370 + 10 -_0813E31C: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_813E2B8 - thumb_func_start sub_813E320 sub_813E320: @ 813E320 push {r4,lr} diff --git a/baserom.ips b/baserom.ips index 5f7a8d538774e4cfe60b9dc3098bec51b2030b67..1ede5acbe422799011695c8c8ad4771f46193a21 100644 GIT binary patch delta 107 zcmWN=w+((uDIrgTkg2$fk&Qr=7rZ+>g^Lh<$fzJ delta 127 zcmbRErfS)ns)iQE7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~Eqp=ig>x7L?miIaIC)=~ zBl9^BKNaR^4_MC!#QZ=k0K|eoECj^DKr8~pqChML#Nt3K0mPC(ECs~UKr92qvfBgJ I%N=9`0P4mtrvLx| diff --git a/data/berry_pouch.s b/data/berry_pouch.s index 19bf0c3df..68d9cd5a3 100644 --- a/data/berry_pouch.s +++ b/data/berry_pouch.s @@ -3,35 +3,6 @@ .section .rodata .align 2 -gUnknown_846436C:: @ 846436C - .incbin "baserom.gba", 0x46436C, 0x8 - -gUnknown_8464374:: @ 8464374 - .incbin "baserom.gba", 0x464374, 0x8 - -gUnknown_846437C:: @ 846437C - .4byte gOtherText_Use, sub_813DE0C - .4byte gOtherText_Toss, sub_813DEBC - .4byte gOtherText_Give, sub_813E200 - .4byte gOtherText_Exit, sub_813E320 - .4byte gString_Dummy, NULL - -gUnknown_84643A4:: @ 84643A4 - .byte 0, 2, 1, 3 - -gUnknown_84643A8:: @ 84643A8 - .byte 2, 3, 4, 4 - -gUnknown_84643AC:: @ 84643AC - .byte 3, 4, 4, 4 - -gUnknown_84643B0:: @ 84643B0 - .byte 0, 1, 3, 4 - -gUnknown_84643B4:: @ 84643B4 - .string " $" - - .align 2 gUnknown_84643B8:: @ 84643B8 .incbin "baserom.gba", 0x4643B8, 0x20 diff --git a/data/strings.s b/data/strings.s index bb12c0ad3..5f1616eaf 100644 --- a/data/strings.s +++ b/data/strings.s @@ -559,19 +559,19 @@ gUnknown_8416374:: @ 8416374 .string "The {STR_VAR_1} can't be held\nhere.$" gUnknown_841638F:: @ 841638F - .string "Deposit how many\n{STR_VAR_1}シsス?$" + .string "Deposit how many\n{STR_VAR_1}(s)?$" gUnknown_84163A7:: @ 84163A7 - .string "Deposited {STR_VAR_2}\n{STR_VAR_1}シsス.$" + .string "Deposited {STR_VAR_2}\n{STR_VAR_1}(s).$" gUnknown_84163BB:: @ 84163BB .string "There's no room to\nstore items.$" gUnknown_84163DB:: @ 84163DB - .string "Toss out how many\n{STR_VAR_1}シsス?$" + .string "Toss out how many\n{STR_VAR_1}(s)?$" gUnknown_84163F4:: @ 84163F4 - .string "Threw away {STR_VAR_2}\n{STR_VAR_1}シsス.$" + .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$" gUnknown_8416409:: @ 8416409 .string "Throw away {STR_VAR_2} of\nthis item?$" diff --git a/graphics/berry_pouch/unk_8E85C1C.pal b/graphics/berry_pouch/unk_8E85C1C.pal new file mode 100644 index 000000000..87d0fc7fb --- /dev/null +++ b/graphics/berry_pouch/unk_8E85C1C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 90 +98 115 123 +255 205 156 +230 189 139 +213 164 115 +189 139 90 +156 82 0 +115 57 0 +197 205 213 +246 115 0 +222 57 0 +230 148 98 +255 172 123 +222 230 230 +49 57 57 +255 255 255 diff --git a/include/party_menu.h b/include/party_menu.h index cd2a5bc37..bea5dcdde 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -81,5 +81,6 @@ void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); void OpenPartyMenuInBattle(u8 arg); void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); +void sub_8126EDC(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/strings.h b/include/strings.h index c0863dffb..e60344731 100644 --- a/include/strings.h +++ b/include/strings.h @@ -94,6 +94,7 @@ extern const u8 gText_Pokemon[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gOtherText_Use[]; +extern const u8 gOtherText_Toss[]; extern const u8 gOtherText_Give[]; extern const u8 gOtherText_Exit[]; extern const u8 gText_ThreeHyphens[]; @@ -316,6 +317,9 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_84163DB[]; +extern const u8 gUnknown_84163F4[]; +extern const u8 gUnknown_8416409[]; extern const u8 gUnknown_841670A[]; extern const u8 gUnknown_8416716[]; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 31657a381..8e394be37 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -15,6 +15,8 @@ #include "graphics.h" #include "berry.h" #include "item.h" +#include "item_use.h" +#include "party_menu.h" #include "strings.h" #include "string_util.h" #include "sound.h" @@ -47,6 +49,15 @@ struct BerryPouchStruct_203F370 u16 unk_0A; }; +enum +{ + BP_ACTION_USE = 0, + BP_ACTION_TOSS, + BP_ACTION_GIVE, + BP_ACTION_EXIT, + BP_ACTION_DUMMY +}; + EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL; @@ -81,17 +92,29 @@ void sub_813DD74(u8 taskId); void sub_813DDA0(u8 taskId); void sub_813DE0C(u8 taskId); void sub_813DEBC(u8 taskId); +void sub_813DF54(u8 taskId); +void sub_813DFC8(u8 taskId); +void sub_813E010(u8 taskId); +void sub_813E0DC(u8 taskId); +void sub_813E164(u8 taskId); void sub_813E200(u8 taskId); +void sub_813E274(u8 taskId); +void sub_813E290(u8 taskId); void sub_813E320(u8 taskId); void sub_813E37C(u8 taskId); void sub_813E3FC(u8 taskId); void sub_813E428(u8 taskId); -void sub_813EC28(void); +void sub_813E568(u8 taskId); +void sub_813E768(u8 taskId); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); u8 sub_813EA08(u8); +void sub_813EA98(u8); +void sub_813EACC(u8); u8 sub_813EB10(u8); +void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); void sub_813EC08(void); +void sub_813EC28(void); static const struct BgTemplate gUnknown_846434C[] = { { @@ -129,12 +152,54 @@ const TaskFunc gUnknown_8464358[] = { sub_813DD74 }; -extern const struct MenuAction gUnknown_846437C[]; -extern const u8 gUnknown_84643A4[]; -extern const u8 gUnknown_84643A8[]; -extern const u8 gUnknown_84643AC[]; -extern const u8 gUnknown_84643B0[]; -extern const u8 gUnknown_84643B4[]; +const struct YesNoFuncTable gUnknown_846436C = { + .yesFunc = sub_813E0DC, + .noFunc = sub_813DFC8 +}; + +const struct YesNoFuncTable gUnknown_8464374 = { + .yesFunc = sub_813E768, + .noFunc = sub_813E568 +}; + +const struct MenuAction gUnknown_846437C[] = { + {gOtherText_Use, sub_813DE0C}, + {gOtherText_Toss, sub_813DEBC}, + {gOtherText_Give, sub_813E200}, + {gOtherText_Exit, sub_813E320}, + {gString_Dummy, NULL} +}; + +const u8 gUnknown_84643A4[] = { + BP_ACTION_USE, + BP_ACTION_GIVE, + BP_ACTION_TOSS, + BP_ACTION_EXIT +}; + +const u8 gUnknown_84643A8[] = { + BP_ACTION_GIVE, + BP_ACTION_EXIT, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643AC[] = { + BP_ACTION_EXIT, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643B0[] = { + BP_ACTION_USE, + BP_ACTION_TOSS, + BP_ACTION_EXIT, + BP_ACTION_DUMMY +}; + +const u8 gUnknown_84643B4[] = _(" "); + extern const struct CompressedSpriteSheet gUnknown_84644A8; extern const struct CompressedSpritePalette gUnknown_84644B0; @@ -765,3 +830,193 @@ void sub_813DD74(u8 taskId) sub_813DBE4(taskId); gTasks[taskId].func = sub_813DDA0; } + +void sub_813DDA0(u8 taskId) +{ + s8 input; + if (sub_80BF72C() != TRUE) + { + input = Menu_ProcessInputNoWrapAround(); + switch (input) + { + case -2: + break; + case -1: + PlaySE(SE_SELECT); + gUnknown_846437C[BP_ACTION_EXIT].func.void_u8(taskId); + break; + default: + PlaySE(SE_SELECT); + gUnknown_846437C[gUnknown_203F384[input]].func.void_u8(taskId); + break; + } + } +} + +void sub_813DE0C(u8 taskId) +{ + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + if (gUnknown_203F370.unk_04 == 4) + { + if (ItemId_GetBattleFunc(gSpecialVar_ItemId) == NULL) + FieldUseFunc_OakStopsYou(taskId); + else + ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); + } + else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) + sub_813E274(taskId); + else + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); +} + +void sub_813DEBC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + ClearWindowTilemap(sub_813EB10(gUnknown_203F388 + 9)); + ClearWindowTilemap(sub_813EB10(6)); + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + data[8] = 1; + if (data[2] == 1) + sub_813DF54(taskId); + else + { + sub_813D940(taskId, gUnknown_84163DB); + sub_813D614(); + gTasks[taskId].func = sub_813E010; + } +} + +void sub_813DF54(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_8416409); + sub_813E9A0(sub_813EA08(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + sub_813EB7C(taskId, &gUnknown_846436C); +} + +void sub_813DFC8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EA98(7); + PutWindowTilemap(1); + PutWindowTilemap(0); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); +} + +void sub_813E010(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) + sub_813D9F8(0, data[8], 3); + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + ClearWindowTilemap(sub_813EB10(8)); + sub_813EA98(8); + sub_813EA98(0); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D684(); + sub_813DF54(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813EA98(8); + sub_813EA98(0); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D4B0(data[0], 1); + sub_813D684(); + sub_813DBB4(taskId); + } +} + +void sub_813E0DC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EA98(7); + sub_813D39C(data[1], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_84163F4); + sub_813E9A0(sub_813EA08(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + gTasks[taskId].func = sub_813E164; +} + +void sub_813E164(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + RemoveBagItem(gSpecialVar_ItemId, data[8]); + sub_813EA98(9); + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + sub_813D8AC(); + sub_813D6F4(); + sub_813D204(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); + } +} + +void sub_813E200(u8 taskId) +{ + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + if (CalculatePlayerPartyCount() == 0) + sub_813E274(taskId); + else + { + gUnknown_203F36C->unk_000 = sub_8126EDC; + gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; + } +} + +void sub_813E274(u8 taskId) +{ + DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, sub_813E290); +} + +void sub_813E290(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813E2B8(taskId); + } +} + +void sub_813E2B8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EACC(5); + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + sub_813D8AC(); + sub_813D6F4(); + sub_813D204(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + ScheduleBgCopyTilemapToVram(0); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); +} From 64362d3040b3defb722bf72203fda64b96da1e06 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 17:33:57 -0400 Subject: [PATCH 063/100] Berry Pouch rodata --- asm/berry_pouch.s | 12 +-- baserom.ips | Bin 2012689 -> 2012420 bytes data/berry_pouch.s | 31 ------- data/itemfinder.s | 4 + include/graphics.h | 4 +- ld_script.txt | 1 - src/berry_pouch.c | 197 ++++++++++++++++++++++++++++++++++++++++++++- 7 files changed, 207 insertions(+), 42 deletions(-) delete mode 100644 data/berry_pouch.s diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index e30e12580..f86bff256 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -969,7 +969,7 @@ DisplayItemMessageInBerryPouch: @ 813EB20 ldrb r0, [r4, 0x5] cmp r0, 0xFF bne _0813EB44 - ldr r0, _0813EB78 @ =gUnknown_8464400 + ldr r0, _0813EB78 @ =gUnknown_84643D8 + 0x28 bl AddWindow strb r0, [r4, 0x5] _0813EB44: @@ -996,7 +996,7 @@ _0813EB44: bx r0 .align 2, 0 _0813EB74: .4byte gUnknown_203F38C -_0813EB78: .4byte gUnknown_8464400 +_0813EB78: .4byte gUnknown_84643D8 + 0x28 thumb_func_end DisplayItemMessageInBerryPouch thumb_func_start sub_813EB7C @@ -1006,7 +1006,7 @@ sub_813EB7C: @ 813EB7C adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, _0813EBA4 @ =gUnknown_84643F0 + ldr r1, _0813EBA4 @ =gUnknown_84643D8 + 0x18 movs r2, 0x2 str r2, [sp] movs r2, 0x1 @@ -1021,7 +1021,7 @@ sub_813EB7C: @ 813EB7C pop {r0} bx r0 .align 2, 0 -_0813EBA4: .4byte gUnknown_84643F0 +_0813EBA4: .4byte gUnknown_84643D8 + 0x18 thumb_func_end sub_813EB7C thumb_func_start sub_813EBA8 @@ -1031,7 +1031,7 @@ sub_813EBA8: @ 813EBA8 adds r3, r1, 0 lsls r0, 24 lsrs r0, 24 - ldr r1, _0813EBD0 @ =gUnknown_84643F8 + ldr r1, _0813EBD0 @ =gUnknown_84643D8 + 0x20 movs r2, 0x2 str r2, [sp] movs r2, 0x1 @@ -1046,7 +1046,7 @@ sub_813EBA8: @ 813EBA8 pop {r0} bx r0 .align 2, 0 -_0813EBD0: .4byte gUnknown_84643F8 +_0813EBD0: .4byte gUnknown_84643D8 + 0x20 thumb_func_end sub_813EBA8 thumb_func_start sub_813EBD4 diff --git a/baserom.ips b/baserom.ips index 1ede5acbe422799011695c8c8ad4771f46193a21..e4c815c03307d39ddd1f569581da4eeeae830b06 100644 GIT binary patch delta 117 zcmbRErmE#tRYMD73sVbo3rh=Y3tJ0&3r7oQ3s(zw3r`F07QVpsEG`$AO{P1#Gl{oX yZr}rAejpYAVnHAl0%Bnx76D>WAQl5+kU9wla>ooP@+lcr+=fIRYXI4Gj_{r3;W!Bb3GzBc-MSIvQ#>NTlQn z9D)W>aDs$cJFN8Ww=?>8cjSBV@UyrV6cSI2_!3Ack;JkiiC9VBvWvPpUBNFT*vS@O&EZ- z+4a_>{r}vx-n~<1)0KB#LJ5~WtxETzt`~KB3(@1r85PTUohhv3N=NA`J!MzvD+9&l ThRR48D|^bma_~N{51;%$t9eXq diff --git a/data/berry_pouch.s b/data/berry_pouch.s deleted file mode 100644 index 68d9cd5a3..000000000 --- a/data/berry_pouch.s +++ /dev/null @@ -1,31 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_84643B8:: @ 84643B8 - .incbin "baserom.gba", 0x4643B8, 0x20 - -gUnknown_84643D8:: @ 84643D8 - .incbin "baserom.gba", 0x4643D8, 0x18 - -gUnknown_84643F0:: @ 84643F0 - .incbin "baserom.gba", 0x4643F0, 0x8 - -gUnknown_84643F8:: @ 84643F8 - .incbin "baserom.gba", 0x4643F8, 0x8 - -gUnknown_8464400:: @ 8464400 - .incbin "baserom.gba", 0x464400, 0x48 - -gUnknown_8464448:: @ 8464448 - .incbin "baserom.gba", 0x464448, 0x60 - -gUnknown_84644A8:: @ 84644A8 - obj_tiles gUnknown_8E8560C, 0x800, 100 - -gUnknown_84644B0:: @ 84644B0 - obj_pal gUnknown_8E85C1C, 100 - -gUnknown_84644B8:: @ 84644B8 - .incbin "baserom.gba", 0x4644B8, 0x32C diff --git a/data/itemfinder.s b/data/itemfinder.s index 3a955deeb..88e9910f4 100644 --- a/data/itemfinder.s +++ b/data/itemfinder.s @@ -1,5 +1,9 @@ .section .rodata .align 2 + +gUnknown_84644D0:: @ 84644D0 + .incbin "baserom.gba", 0x4644D0, 0x314 + gUnknown_84647E4:: @ 84647E4 .incbin "baserom.gba", 0x4647E4, 0x18 diff --git a/include/graphics.h b/include/graphics.h index 9d4bdf177..ce671246e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -999,11 +999,11 @@ extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch -extern const u8 gUnknown_8E8560C[]; +extern const u32 gUnknown_8E8560C[]; extern const u8 gUnknown_8E859D0[]; extern const u8 gUnknown_8E85BA4[]; extern const u8 gUnknown_8E85BF4[]; -extern const u8 gUnknown_8E85C1C[]; +extern const u32 gUnknown_8E85C1C[]; extern const u8 gUnknown_8E85C44[]; #endif //GUARD_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index 7e28cc850..a7ab32150 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -468,7 +468,6 @@ SECTIONS { data/wild_pokemon_area.o(.rodata); src/dynamic_placeholder_text_util.o(.rodata); src/berry_pouch.o(.rodata); - data/berry_pouch.o(.rodata); data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); src/slot_machine.o(.rodata); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 8e394be37..ff4652ee2 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -200,8 +200,201 @@ const u8 gUnknown_84643B0[] = { const u8 gUnknown_84643B4[] = _(" "); -extern const struct CompressedSpriteSheet gUnknown_84644A8; -extern const struct CompressedSpritePalette gUnknown_84644B0; +const struct WindowTemplate gUnknown_84643B8[] = { + { + .bg = 0, + .tilemapLeft = 11, + .tilemapTop = 1, + .width = 18, + .height = 14, + .paletteNum = 15, + .baseBlock = 0x027 + }, { + .bg = 0, + .tilemapLeft = 5, + .tilemapTop = 16, + .width = 25, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x123 + }, { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 9, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x187 + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_84643D8[] = { + { + .bg = 0x02, + .tilemapLeft = 0x18, + .tilemapTop = 0x0f, + .width = 0x05, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x1d1 + }, { + .bg = 0x02, + .tilemapLeft = 0x11, + .tilemapTop = 0x09, + .width = 0x0c, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x1d1 + }, { + .bg = 0x02, + .tilemapLeft = 0x01, + .tilemapTop = 0x01, + .width = 0x08, + .height = 0x03, + .paletteNum = 0x0c, + .baseBlock = 0x201 + }, { + .bg = 0x02, + .tilemapLeft = 0x17, + .tilemapTop = 0x0f, + .width = 0x06, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x219 + }, { + .bg = 0x02, + .tilemapLeft = 0x15, + .tilemapTop = 0x09, + .width = 0x06, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x219 + }, { + .bg = 0x02, + .tilemapLeft = 0x02, + .tilemapTop = 0x0f, + .width = 0x1a, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x231 + }, { + .bg = 0x02, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x0e, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x231 + }, { + .bg = 0x02, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x0f, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x269 + }, { + .bg = 0x02, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x10, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x2a5 + }, { + .bg = 0x02, + .tilemapLeft = 0x06, + .tilemapTop = 0x0f, + .width = 0x17, + .height = 0x04, + .paletteNum = 0x0c, + .baseBlock = 0x2e5 + }, { + .bg = 0x02, + .tilemapLeft = 0x16, + .tilemapTop = 0x11, + .width = 0x07, + .height = 0x02, + .paletteNum = 0x0f, + .baseBlock = 0x199 + }, { + .bg = 0x02, + .tilemapLeft = 0x16, + .tilemapTop = 0x0f, + .width = 0x07, + .height = 0x04, + .paletteNum = 0x0f, + .baseBlock = 0x199 + }, { + .bg = 0x02, + .tilemapLeft = 0x16, + .tilemapTop = 0x0d, + .width = 0x07, + .height = 0x06, + .paletteNum = 0x0f, + .baseBlock = 0x199 + }, { + .bg = 0x02, + .tilemapLeft = 0x16, + .tilemapTop = 0x0b, + .width = 0x07, + .height = 0x08, + .paletteNum = 0x0f, + .baseBlock = 0x199 + } +}; + +const u8 gUnknown_8464448[][3] = { + { 0, 1, 2 }, + { 0, 2, 3 }, + { 0, 3, 2 } +}; + +const struct OamData gOamData_8464454 = { + .affineMode = ST_OAM_AFFINE_NORMAL, + .shape = ST_OAM_SQUARE, + .size = ST_OAM_SIZE_3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnims_846445C[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8464464[] = { + gSpriteAnims_846445C +}; + +const union AffineAnimCmd gSpriteAffineAnims_8464468[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnims_8464478[] = { + AFFINEANIMCMD_FRAME(0, 0, -2, 2), + AFFINEANIMCMD_FRAME(0, 0, 2, 4), + AFFINEANIMCMD_FRAME(0, 0, -2, 4), + AFFINEANIMCMD_FRAME(0, 0, 2, 2), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_84644A0[] = { + gSpriteAffineAnims_8464468, + gSpriteAffineAnims_8464478 +}; + +const struct CompressedSpriteSheet gUnknown_84644A8 = { + gUnknown_8E8560C, 0x800, 100 +}; + +const struct CompressedSpritePalette gUnknown_84644B0 = { + gUnknown_8E85C1C, 100 +}; + +const struct SpriteTemplate gUnknown_84644B8 = { + 100, 100, &gOamData_8464454, gSpriteAnimTable_8464464, NULL, gSpriteAffineAnimTable_84644A0, SpriteCallbackDummy +}; void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) { From 89be71dcb846b1d1eded569db6dd6709cc42201f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 18:06:49 -0400 Subject: [PATCH 064/100] berry_pouch through sub_813E8D4 --- asm/berry_pouch.s | 684 ---------------------------------------------- include/item.h | 7 +- include/strings.h | 1 + src/berry_pouch.c | 191 +++++++++++++ 4 files changed, 195 insertions(+), 688 deletions(-) diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index f86bff256..82ce14f9d 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,690 +5,6 @@ .text - thumb_func_start sub_813E320 -sub_813E320: @ 813E320 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813E374 @ =gUnknown_203F388 - ldrb r0, [r0] - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - bl sub_813EA98 - movs r0, 0x6 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r1, _0813E378 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r4, 0 - bl sub_813DBB4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E374: .4byte gUnknown_203F388 -_0813E378: .4byte gTasks - thumb_func_end sub_813E320 - - thumb_func_start sub_813E37C -sub_813E37C: @ 813E37C - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r7, _0813E3C4 @ =gTasks+0x8 - adds r0, r6, r7 - ldrh r1, [r0, 0x2] - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80BF6A8 - lsls r0, 24 - cmp r0, 0 - bne _0813E3D8 - ldr r1, _0813E3C8 @ =gStringVar1 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _0813E3CC @ =gStringVar4 - ldr r1, _0813E3D0 @ =gUnknown_8416374 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, _0813E3D4 @ =sub_813E290 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl DisplayItemMessageInBerryPouch - b _0813E3EA - .align 2, 0 -_0813E3C4: .4byte gTasks+0x8 -_0813E3C8: .4byte gStringVar1 -_0813E3CC: .4byte gStringVar4 -_0813E3D0: .4byte gUnknown_8416374 -_0813E3D4: .4byte sub_813E290 -_0813E3D8: - ldr r0, _0813E3F0 @ =gUnknown_203F36C - ldr r1, [r0] - ldr r0, _0813E3F4 @ =c2_8123744 - str r0, [r1] - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0813E3F8 @ =BerryPouch_StartFadeToExitCallback - str r1, [r0] -_0813E3EA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E3F0: .4byte gUnknown_203F36C -_0813E3F4: .4byte c2_8123744 -_0813E3F8: .4byte BerryPouch_StartFadeToExitCallback - thumb_func_end sub_813E37C - - thumb_func_start sub_813E3FC -sub_813E3FC: @ 813E3FC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813E418 @ =gUnknown_203F36C - ldr r2, [r1] - ldr r1, _0813E41C @ =sub_808CE60 - str r1, [r2] - ldr r2, _0813E420 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0813E424 @ =BerryPouch_StartFadeToExitCallback - str r0, [r1] - bx lr - .align 2, 0 -_0813E418: .4byte gUnknown_203F36C -_0813E41C: .4byte sub_808CE60 -_0813E420: .4byte gTasks -_0813E424: .4byte BerryPouch_StartFadeToExitCallback - thumb_func_end sub_813E3FC - - thumb_func_start sub_813E428 -sub_813E428: @ 813E428 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0813E470 @ =gTasks+0x8 - adds r4, r0, r1 - ldr r6, _0813E474 @ =gSpecialVar_ItemId - ldrh r0, [r6] - bl itemid_get_market_price - lsls r0, 16 - cmp r0, 0 - bne _0813E488 - ldrh r0, [r6] - ldr r1, _0813E478 @ =gStringVar1 - bl CopyItemName - ldr r4, _0813E47C @ =gStringVar4 - ldr r1, _0813E480 @ =gText_OhNoICantBuyThat - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0813E484 @ =sub_813E2B8 - adds r0, r5, 0 - adds r2, r4, 0 - bl DisplayItemMessageInBerryPouch - b _0813E4CE - .align 2, 0 -_0813E470: .4byte gTasks+0x8 -_0813E474: .4byte gSpecialVar_ItemId -_0813E478: .4byte gStringVar1 -_0813E47C: .4byte gStringVar4 -_0813E480: .4byte gText_OhNoICantBuyThat -_0813E484: .4byte sub_813E2B8 -_0813E488: - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _0813E4A0 - bl sub_813EBD4 - adds r0, r5, 0 - bl sub_813E4E4 - b _0813E4CE -_0813E4A0: - cmp r0, 0x63 - ble _0813E4A8 - movs r0, 0x63 - strh r0, [r4, 0x4] -_0813E4A8: - ldrh r0, [r6] - ldr r1, _0813E4D4 @ =gStringVar1 - bl CopyItemName - ldr r4, _0813E4D8 @ =gStringVar4 - ldr r1, _0813E4DC @ =gText_HowManyWouldYouLikeToSell - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0813E4E0 @ =sub_813E5B8 - adds r0, r7, 0 - adds r2, r4, 0 - bl DisplayItemMessageInBerryPouch -_0813E4CE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E4D4: .4byte gStringVar1 -_0813E4D8: .4byte gStringVar4 -_0813E4DC: .4byte gText_HowManyWouldYouLikeToSell -_0813E4E0: .4byte sub_813E5B8 - thumb_func_end sub_813E428 - - thumb_func_start sub_813E4E4 -sub_813E4E4: @ 813E4E4 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _0813E540 @ =gTasks+0x8 - adds r4, r0 - ldr r6, _0813E544 @ =gStringVar3 - ldrh r1, [r4, 0x2] - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r4, r2] - muls r1, r0 - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - ldr r4, _0813E548 @ =gStringVar4 - ldr r1, _0813E54C @ =gText_ICanPayThisMuch_WouldThatBeOkay - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80BF8E4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0813E550 @ =sub_813E554 - adds r0, r5, 0 - adds r2, r4, 0 - bl DisplayItemMessageInBerryPouch - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E540: .4byte gTasks+0x8 -_0813E544: .4byte gStringVar3 -_0813E548: .4byte gStringVar4 -_0813E54C: .4byte gText_ICanPayThisMuch_WouldThatBeOkay -_0813E550: .4byte sub_813E554 - thumb_func_end sub_813E4E4 - - thumb_func_start sub_813E554 -sub_813E554: @ 813E554 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813E564 @ =gUnknown_8464374 - bl sub_813EBA8 - pop {r0} - bx r0 - .align 2, 0 -_0813E564: .4byte gUnknown_8464374 - thumb_func_end sub_813E554 - - thumb_func_start sub_813E568 -sub_813E568: @ 813E568 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _0813E5B4 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x2 - bl sub_813EA98 - movs r0, 0x5 - bl sub_813EACC - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldrb r0, [r4] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r5, 0 - bl sub_813DBB4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813E5B4: .4byte gTasks+0x8 - thumb_func_end sub_813E568 - - thumb_func_start sub_813E5B8 -sub_813E5B8: @ 813E5B8 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r5, r0, 2 - adds r5, r0 - lsls r5, 3 - ldr r6, _0813E654 @ =gTasks+0x8 - adds r0, r5, r6 - mov r9, r0 - movs r0, 0x1 - bl sub_813EA08 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813E658 @ =gStringVar1 - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r2, _0813E65C @ =gStringVar4 - mov r8, r2 - ldr r1, _0813E660 @ =gText_TimesStrVar1 - mov r0, r8 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - str r1, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0 - mov r2, r8 - movs r3, 0x4 - bl sub_813E9A0 - mov r3, r9 - ldrh r1, [r3, 0x2] - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - mov r2, r9 - movs r3, 0x10 - ldrsh r1, [r2, r3] - muls r0, r1 - bl sub_813E668 - bl sub_813EBD4 - bl sub_813D64C - subs r6, 0x8 - adds r5, r6 - ldr r0, _0813E664 @ =sub_813E690 - str r0, [r5] - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E654: .4byte gTasks+0x8 -_0813E658: .4byte gStringVar1 -_0813E65C: .4byte gStringVar4 -_0813E660: .4byte gText_TimesStrVar1 -_0813E664: .4byte sub_813E690 - thumb_func_end sub_813E5B8 - - thumb_func_start sub_813E668 -sub_813E668: @ 813E668 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r0, 0x1 - bl sub_813EB10 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - str r1, [sp] - movs r1, 0x38 - movs r2, 0xA - adds r3, r4, 0 - bl PrintMoneyAmount - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813E668 - - thumb_func_start sub_813E690 -sub_813E690: @ 813E690 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0813E6E0 @ =gTasks+0x8 - adds r5, r0, r1 - adds r0, r5, 0 - adds r0, 0x10 - ldrh r1, [r5, 0x4] - bl AdjustQuantityAccordingToDPadInput - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813E6E4 - movs r0, 0x10 - ldrsh r1, [r5, r0] - movs r0, 0x1 - movs r2, 0x2 - bl sub_813D9F8 - ldrh r1, [r5, 0x2] - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r5, r2] - muls r0, r1 - bl sub_813E668 - b _0813E762 - .align 2, 0 -_0813E6E0: .4byte gTasks+0x8 -_0813E6E4: - ldr r0, _0813E714 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E718 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_813EA98 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - bl sub_813D684 - adds r0, r4, 0 - bl sub_813E4E4 - b _0813E762 - .align 2, 0 -_0813E714: .4byte gMain -_0813E718: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E762 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_813EA98 - movs r0, 0x2 - bl sub_813EA98 - movs r0, 0x5 - bl sub_813EACC - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - bl sub_813D684 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_813D4B0 - adds r0, r6, 0 - bl sub_813DBB4 -_0813E762: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813E690 - - thumb_func_start sub_813E768 -sub_813E768: @ 813E768 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _0813E7D4 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0813E7D8 @ =gSpecialVar_ItemId - ldrh r0, [r0] - ldr r1, _0813E7DC @ =gStringVar1 - bl CopyItemName - ldr r6, _0813E7E0 @ =gStringVar3 - ldrh r1, [r4, 0x2] - movs r0, 0x5 - bl BagGetItemIdByPocketPosition - lsls r0, 16 - lsrs r0, 16 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - movs r2, 0x10 - ldrsh r1, [r4, r2] - muls r1, r0 - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - ldr r4, _0813E7E4 @ =gStringVar4 - ldr r1, _0813E7E8 @ =gText_TurnedOverItemsWorthYen - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, _0813E7EC @ =sub_813E7F0 - adds r0, r5, 0 - movs r1, 0x2 - adds r2, r4, 0 - bl DisplayItemMessageInBerryPouch - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813E7D4: .4byte gTasks+0x8 -_0813E7D8: .4byte gSpecialVar_ItemId -_0813E7DC: .4byte gStringVar1 -_0813E7E0: .4byte gStringVar3 -_0813E7E4: .4byte gStringVar4 -_0813E7E8: .4byte gText_TurnedOverItemsWorthYen -_0813E7EC: .4byte sub_813E7F0 - thumb_func_end sub_813E768 - - thumb_func_start sub_813E7F0 -sub_813E7F0: @ 813E7F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - lsls r6, r0, 2 - adds r6, r0 - lsls r6, 3 - ldr r0, _0813E8BC @ =gTasks+0x8 - mov r9, r0 - adds r1, r6, 0 - add r1, r9 - mov r8, r1 - movs r0, 0xF8 - bl PlaySE - ldr r5, _0813E8C0 @ =gSpecialVar_ItemId - ldrh r0, [r5] - mov r2, r8 - ldrh r1, [r2, 0x10] - bl RemoveBagItem - ldr r7, _0813E8C4 @ =gSaveBlock1Ptr - ldr r4, [r7] - movs r3, 0xA4 - lsls r3, 2 - mov r10, r3 - add r4, r10 - ldrh r0, [r5] - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 17 - mov r2, r8 - movs r3, 0x10 - ldrsh r1, [r2, r3] - muls r1, r0 - adds r0, r4, 0 - bl AddMoney - ldrh r0, [r5] - mov r2, r8 - ldrh r1, [r2, 0x10] - movs r2, 0x2 - bl sub_809C09C - mov r3, r8 - ldrb r0, [r3] - ldr r4, _0813E8C8 @ =gUnknown_203F370 + 10 - subs r2, r4, 0x2 - adds r1, r4, 0 - bl DestroyListMenuTask - bl sub_813D8AC - bl sub_813D6F4 - bl sub_813D204 - ldr r0, _0813E8CC @ =gMultiuseListMenuTemplate - subs r4, 0xA - ldrh r1, [r4, 0xA] - ldrh r2, [r4, 0x8] - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - strh r0, [r1] - movs r1, 0x2 - bl sub_813D4B0 - movs r0, 0x2 - bl sub_813EB10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, [r7] - add r0, r10 - bl GetMoney - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - bl PrintMoneyAmountInMoneyBox - movs r2, 0x8 - negs r2, r2 - add r9, r2 - add r6, r9 - ldr r0, _0813E8D0 @ =sub_813E8D4 - str r0, [r6] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E8BC: .4byte gTasks+0x8 -_0813E8C0: .4byte gSpecialVar_ItemId -_0813E8C4: .4byte gSaveBlock1Ptr -_0813E8C8: .4byte gUnknown_203F370 + 10 -_0813E8CC: .4byte gMultiuseListMenuTemplate -_0813E8D0: .4byte sub_813E8D4 - thumb_func_end sub_813E7F0 - - thumb_func_start sub_813E8D4 -sub_813E8D4: @ 813E8D4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E90C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813E8EE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813E906 -_0813E8EE: - movs r0, 0x5 - bl PlaySE - movs r0, 0x2 - bl sub_813EA98 - movs r0, 0x2 - bl PutWindowTilemap - adds r0, r4, 0 - bl sub_813E2B8 -_0813E906: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E90C: .4byte gMain - thumb_func_end sub_813E8D4 - thumb_func_start sub_813E910 sub_813E910: @ 813E910 push {r4,lr} diff --git a/include/item.h b/include/item.h index f0aaa0f6c..583a47cdc 100644 --- a/include/item.h +++ b/include/item.h @@ -64,13 +64,12 @@ u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); void ClearItemSlotsInAllBagPockets(void); void ClearPCItemSlots(void); -void CopyItemName(u16, u8 *); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); -void SortPocketAndPlaceHMsFirst(struct BagPocket *); -u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1); -u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1); +void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket); +u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 itemId); +u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId); bool8 itemid_is_unique(u16 itemId); void BagPocketCompaction(struct ItemSlot * slots, u8 capacity); u16 GetPcItemQuantity(u16 *); diff --git a/include/strings.h b/include/strings.h index e60344731..a56139909 100644 --- a/include/strings.h +++ b/include/strings.h @@ -317,6 +317,7 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_8416374[]; extern const u8 gUnknown_84163DB[]; extern const u8 gUnknown_84163F4[]; extern const u8 gUnknown_8416409[]; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index ff4652ee2..e6746d4ca 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -21,8 +21,11 @@ #include "string_util.h" #include "sound.h" #include "link.h" +#include "money.h" +#include "shop.h" #include "menu.h" #include "menu_indicators.h" +#include "pokemon_storage_system.h" #include "constants/items.h" #include "constants/songs.h" @@ -104,8 +107,15 @@ void sub_813E320(u8 taskId); void sub_813E37C(u8 taskId); void sub_813E3FC(u8 taskId); void sub_813E428(u8 taskId); +void sub_813E4E4(u8 taskId); +void sub_813E554(u8 taskId); void sub_813E568(u8 taskId); +void sub_813E5B8(u8 taskId); +void sub_813E668(s32 price); +void sub_813E690(u8 taskId); void sub_813E768(u8 taskId); +void sub_813E7F0(u8 taskId); +void sub_813E8D4(u8 taskId); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); u8 sub_813EA08(u8); @@ -113,6 +123,8 @@ void sub_813EA98(u8); void sub_813EACC(u8); u8 sub_813EB10(u8); void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); +void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs); +void sub_813EBD4(void); void sub_813EC08(void); void sub_813EC28(void); @@ -1213,3 +1225,182 @@ void sub_813E2B8(u8 taskId) sub_813D4B0(data[0], 1); sub_813DBB4(taskId); } + +void sub_813E320(u8 taskId) +{ + sub_813EA98(gUnknown_203F388 + 9); + sub_813EA98(6); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + sub_813D4B0(gTasks[taskId].data[0], 1); + sub_813DBB4(taskId); +} + +void sub_813E37C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]); + if (!sub_80BF6A8(itemId)) + { + CopyItemName(itemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_8416374); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E290); + } + else + { + gUnknown_203F36C->unk_000 = c2_8123744; + gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; + } +} + +void sub_813E3FC(u8 taskId) +{ + gUnknown_203F36C->unk_000 = sub_808CE60; + gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; +} + +void sub_813E428(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (itemid_get_market_price(gSpecialVar_ItemId) == 0) + { + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E2B8); + } + else + { + data[8] = 1; + if (data[2] == 1) + { + sub_813EBD4(); + sub_813E4E4(taskId); + } + else + { + if (data[2] > 99) + data[2] = 99; + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E5B8); + } + } +} + +void sub_813E4E4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E554); +} + +void sub_813E554(u8 taskId) +{ + sub_813EBA8(taskId, &gUnknown_8464374); +} + +void sub_813E568(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + sub_813EA98(2); + sub_813EACC(5); + PutWindowTilemap(2); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); +} + +void sub_813E5B8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 windowId = sub_813EA08(1); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1); + sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + sub_813EBD4(); + sub_813D64C(); + gTasks[taskId].func = sub_813E690; +} + +void sub_813E668(s32 price) +{ + PrintMoneyAmount(sub_813EB10(1), 56, 10, price, 0); +} + +void sub_813E690(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) + { + sub_813D9F8(1, data[8], 2); + sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813EA98(1); + PutWindowTilemap(0); + ScheduleBgCopyTilemapToVram(0); + sub_813D684(); + sub_813E4E4(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813EA98(1); + sub_813EA98(2); + sub_813EACC(5); + PutWindowTilemap(2); + PutWindowTilemap(0); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + sub_813D684(); + sub_813D4B0(data[0], 1); + sub_813DBB4(taskId); + } +} + +void sub_813E768(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + PutWindowTilemap(0); + ScheduleBgCopyTilemapToVram(0); + CopyItemName(gSpecialVar_ItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E7F0); +} + +void sub_813E7F0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + PlaySE(SE_CASHIER); + RemoveBagItem(gSpecialVar_ItemId, data[8]); + AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); + sub_809C09C(gSpecialVar_ItemId, data[8], 2); + DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); + sub_813D8AC(); + sub_813D6F4(); + sub_813D204(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + sub_813D4B0(data[0], 2); + PrintMoneyAmountInMoneyBox(sub_813EB10(2), GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = sub_813E8D4; +} + +void sub_813E8D4(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_813EA98(2); + PutWindowTilemap(2); + sub_813E2B8(taskId); + } +} From 8eea5b6d750a629c14a152c240f84b02b5e4f0c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 19:47:38 -0400 Subject: [PATCH 065/100] Finish berry_pouch code decomp --- asm/berry_pouch.s | 466 ------------------------------------------ include/berry_pouch.h | 2 +- ld_script.txt | 1 - src/berry_pouch.c | 131 +++++++++++- 4 files changed, 128 insertions(+), 472 deletions(-) delete mode 100644 asm/berry_pouch.s diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s deleted file mode 100644 index 82ce14f9d..000000000 --- a/asm/berry_pouch.s +++ /dev/null @@ -1,466 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813E910 -sub_813E910: @ 813E910 - push {r4,lr} - ldr r0, _0813E994 @ =gUnknown_84643B8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0 - movs r1, 0x1 - movs r2, 0xE0 - bl TextWindow_SetUserSelectedFrame - movs r0, 0 - movs r1, 0x13 - movs r2, 0xD0 - bl TextWindow_LoadResourcesStdFrame0 - movs r0, 0 - movs r1, 0xA - movs r2, 0xC0 - bl TextWindow_SetStdFrame0_WithPal - ldr r0, _0813E998 @ =gTMCaseMainWindowPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - movs r4, 0 -_0813E946: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0813E946 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - movs r4, 0 - ldr r3, _0813E99C @ =gUnknown_203F38C - movs r2, 0xFF -_0813E97C: - adds r0, r4, r3 - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xD - bls _0813E97C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E994: .4byte gUnknown_84643B8 -_0813E998: .4byte gTMCaseMainWindowPalette -_0813E99C: .4byte gUnknown_203F38C - thumb_func_end sub_813E910 - - thumb_func_start sub_813E9A0 -sub_813E9A0: @ 813E9A0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r9, r3 - ldr r3, [sp, 0x30] - ldr r4, [sp, 0x34] - ldr r6, [sp, 0x38] - ldr r5, [sp, 0x3C] - mov r8, r5 - ldr r5, [sp, 0x40] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r7, r9 - lsls r7, 24 - lsrs r7, 24 - mov r9, r7 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - str r4, [sp] - str r6, [sp, 0x4] - lsls r4, r5, 1 - adds r4, r5 - ldr r5, _0813EA04 @ =gUnknown_8464448 - adds r4, r5 - str r4, [sp, 0x8] - mov r4, r8 - lsls r4, 24 - asrs r4, 24 - str r4, [sp, 0xC] - str r2, [sp, 0x10] - mov r2, r9 - bl AddTextPrinterParameterized4 - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813EA04: .4byte gUnknown_8464448 - thumb_func_end sub_813E9A0 - - thumb_func_start sub_813EA08 -sub_813EA08: @ 813EA08 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813EA4C @ =gUnknown_203F38C - adds r5, r4, r0 - ldrb r0, [r5] - cmp r0, 0xFF - bne _0813EA6C - lsls r0, r4, 3 - ldr r1, _0813EA50 @ =gUnknown_84643D8 - adds r0, r1 - bl AddWindow - strb r0, [r5] - cmp r4, 0x2 - beq _0813EA38 - cmp r4, 0x6 - beq _0813EA38 - cmp r4, 0x7 - beq _0813EA38 - cmp r4, 0x8 - beq _0813EA38 - cmp r4, 0x9 - bne _0813EA54 -_0813EA38: - ldr r0, _0813EA4C @ =gUnknown_203F38C - adds r0, r4, r0 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0xA - movs r3, 0xC - bl DrawStdFrameWithCustomTileAndPalette - b _0813EA60 - .align 2, 0 -_0813EA4C: .4byte gUnknown_203F38C -_0813EA50: .4byte gUnknown_84643D8 -_0813EA54: - ldrb r0, [r5] - movs r1, 0 - movs r2, 0x1 - movs r3, 0xE - bl DrawStdFrameWithCustomTileAndPalette -_0813EA60: - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0813EA74 @ =gUnknown_203F38C - adds r0, r4, r0 - ldrb r0, [r0] -_0813EA6C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0813EA74: .4byte gUnknown_203F38C - thumb_func_end sub_813EA08 - - thumb_func_start sub_813EA78 -sub_813EA78: @ 813EA78 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813EA94 @ =gUnknown_203F38C - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0x1 - movs r3, 0xE - bl DrawStdFrameWithCustomTileAndPalette - pop {r0} - bx r0 - .align 2, 0 -_0813EA94: .4byte gUnknown_203F38C - thumb_func_end sub_813EA78 - - thumb_func_start sub_813EA98 -sub_813EA98: @ 813EA98 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813EAC8 @ =gUnknown_203F38C - adds r4, r0 - ldrb r0, [r4] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - movs r0, 0xFF - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EAC8: .4byte gUnknown_203F38C - thumb_func_end sub_813EA98 - - thumb_func_start sub_813EACC -sub_813EACC: @ 813EACC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813EB0C @ =gUnknown_203F38C - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0xFF - beq _0813EB04 - movs r1, 0 - bl ClearDialogWindowAndFrameToTransparent - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - movs r0, 0xFF - strb r0, [r4] -_0813EB04: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EB0C: .4byte gUnknown_203F38C - thumb_func_end sub_813EACC - - thumb_func_start sub_813EB10 -sub_813EB10: @ 813EB10 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813EB1C @ =gUnknown_203F38C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0813EB1C: .4byte gUnknown_203F38C - thumb_func_end sub_813EB10 - - thumb_func_start DisplayItemMessageInBerryPouch -DisplayItemMessageInBerryPouch: @ 813EB20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r2, 0 - mov r8, r3 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r4, _0813EB74 @ =gUnknown_203F38C - ldrb r0, [r4, 0x5] - cmp r0, 0xFF - bne _0813EB44 - ldr r0, _0813EB78 @ =gUnknown_84643D8 + 0x28 - bl AddWindow - strb r0, [r4, 0x5] -_0813EB44: - bl GetTextSpeedSetting - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4, 0x5] - str r5, [sp] - str r0, [sp, 0x4] - str r7, [sp, 0x8] - mov r0, r8 - str r0, [sp, 0xC] - adds r0, r6, 0 - movs r2, 0x13 - movs r3, 0xD - bl DisplayMessageAndContinueTask - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813EB74: .4byte gUnknown_203F38C -_0813EB78: .4byte gUnknown_84643D8 + 0x28 - thumb_func_end DisplayItemMessageInBerryPouch - - thumb_func_start sub_813EB7C -sub_813EB7C: @ 813EB7C - push {lr} - sub sp, 0x10 - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813EBA4 @ =gUnknown_84643D8 + 0x18 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0xE - str r2, [sp, 0x8] - str r3, [sp, 0xC] - movs r2, 0x2 - movs r3, 0 - bl CreateYesNoMenuWithCallbacks - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0813EBA4: .4byte gUnknown_84643D8 + 0x18 - thumb_func_end sub_813EB7C - - thumb_func_start sub_813EBA8 -sub_813EBA8: @ 813EBA8 - push {lr} - sub sp, 0x10 - adds r3, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813EBD0 @ =gUnknown_84643D8 + 0x20 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0xE - str r2, [sp, 0x8] - str r3, [sp, 0xC] - movs r2, 0x2 - movs r3, 0 - bl CreateYesNoMenuWithCallbacks - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_0813EBD0: .4byte gUnknown_84643D8 + 0x20 - thumb_func_end sub_813EBA8 - - thumb_func_start sub_813EBD4 -sub_813EBD4: @ 813EBD4 - push {r4,lr} - movs r0, 0x2 - bl sub_813EA08 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0813EC04 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - adds r3, r0, 0 - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0xC - bl PrintMoneyAmountInMoneyBoxWithBorder - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EC04: .4byte gSaveBlock1Ptr - thumb_func_end sub_813EBD4 - - thumb_func_start sub_813EC08 -sub_813EC08: @ 813EC08 - push {lr} - ldr r0, _0813EC20 @ =gUnknown_84644B8 - movs r1, 0x28 - movs r2, 0x4C - movs r3, 0 - bl CreateSprite - ldr r1, _0813EC24 @ =gUnknown_203F39C - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0813EC20: .4byte gUnknown_84644B8 -_0813EC24: .4byte gUnknown_203F39C - thumb_func_end sub_813EC08 - - thumb_func_start sub_813EC28 -sub_813EC28: @ 813EC28 - push {r4,lr} - ldr r0, _0813EC58 @ =gUnknown_203F39C - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813EC5C @ =gSprites - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0813EC52 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _0813EC60 @ =sub_813EC64 - str r0, [r4, 0x1C] -_0813EC52: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EC58: .4byte gUnknown_203F39C -_0813EC5C: .4byte gSprites -_0813EC60: .4byte sub_813EC64 - thumb_func_end sub_813EC28 - - thumb_func_start sub_813EC64 -sub_813EC64: @ 813EC64 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0813EC80 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _0813EC88 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0813EC80: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EC88: .4byte SpriteCallbackDummy - thumb_func_end sub_813EC64 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/berry_pouch.h b/include/berry_pouch.h index 8e652225b..58f58fd99 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -6,7 +6,7 @@ void BerryPouch_StartFadeToExitCallback(u8 taskId); void BerryPouch_SetExitCallback(void (*)(void)); void InitBerryPouch(u8, void (*)(void), u8); -void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc); +void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); void sub_813E2B8(u8 taskId); #endif //GUARD_BERRY_POUCH_H diff --git a/ld_script.txt b/ld_script.txt index a7ab32150..fa7f1302b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -252,7 +252,6 @@ SECTIONS { asm/wild_pokemon_area.o(.text); src/dynamic_placeholder_text_util.o(.text); src/berry_pouch.o(.text); - asm/berry_pouch.o(.text); asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); src/slot_machine.o(.text); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index e6746d4ca..abfa4aacf 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -17,6 +17,7 @@ #include "item.h" #include "item_use.h" #include "party_menu.h" +#include "text_window.h" #include "strings.h" #include "string_util.h" #include "sound.h" @@ -118,15 +119,16 @@ void sub_813E7F0(u8 taskId); void sub_813E8D4(u8 taskId); void sub_813E910(void); void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -u8 sub_813EA08(u8); -void sub_813EA98(u8); -void sub_813EACC(u8); -u8 sub_813EB10(u8); +u8 sub_813EA08(u8 winIdx); +void sub_813EA98(u8 winIdx); +void sub_813EACC(u8 winIdx); +u8 sub_813EB10(u8 winIdx); void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs); void sub_813EBD4(void); void sub_813EC08(void); void sub_813EC28(void); +void sub_813EC64(struct Sprite * sprite); static const struct BgTemplate gUnknown_846434C[] = { { @@ -1404,3 +1406,124 @@ void sub_813E8D4(u8 taskId) sub_813E2B8(taskId); } } + +void sub_813E910(void) +{ + u8 i; + InitWindows(gUnknown_84643B8); + DeactivateAllTextPrinters(); + TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0); + TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0); + TextWindow_SetStdFrame0_WithPal(0, 0x00A, 0xC0); + LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20); + for (i = 0; i < 3; i++) + FillWindowPixelBuffer(i, PIXEL_FILL(0)); + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(2); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + for (i = 0; i < 14; i++) + gUnknown_203F38C[i] = 0xFF; +} + +void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +{ + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_8464448[colorIdx], speed, str); +} + +u8 sub_813EA08(u8 winIdx) +{ + u8 retval = gUnknown_203F38C[winIdx]; + if (retval == 0xFF) + { + gUnknown_203F38C[winIdx] = AddWindow(&gUnknown_84643D8[winIdx]); + if (winIdx == 2 || winIdx == 6 || winIdx == 7 || winIdx == 8 || winIdx == 9) + DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x00A, 0xC); + else + DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); + ScheduleBgCopyTilemapToVram(2); + retval = gUnknown_203F38C[winIdx]; + } + return retval; +} + +void sub_813EA78(u8 winIdx) +{ + DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); +} + +void sub_813EA98(u8 winIdx) +{ + ClearStdWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); + ClearWindowTilemap(gUnknown_203F38C[winIdx]); + RemoveWindow(gUnknown_203F38C[winIdx]); + ScheduleBgCopyTilemapToVram(2); + gUnknown_203F38C[winIdx] = 0xFF; +} + +void sub_813EACC(u8 winIdx) +{ + if (gUnknown_203F38C[winIdx] != 0xFF) + { + ClearDialogWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); + ClearWindowTilemap(gUnknown_203F38C[winIdx]); + RemoveWindow(gUnknown_203F38C[winIdx]); + PutWindowTilemap(1); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(2); + gUnknown_203F38C[winIdx] = 0xFF; + } +} + +u8 sub_813EB10(u8 winIdx) +{ + return gUnknown_203F38C[winIdx]; +} + +void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc) +{ + if (gUnknown_203F38C[5] == 0xFF) + gUnknown_203F38C[5] = AddWindow(&gUnknown_84643D8[5]); + DisplayMessageAndContinueTask(taskId, gUnknown_203F38C[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc); + ScheduleBgCopyTilemapToVram(2); +} + +void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs) +{ + CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[3], 2, 0, 2, 0x001, 0xE, ptrs); +} + +void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs) +{ + CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[4], 2, 0, 2, 0x001, 0xE, ptrs); +} + +void sub_813EBD4(void) +{ + PrintMoneyAmountInMoneyBoxWithBorder(sub_813EA08(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money)); +} + +void sub_813EC08(void) +{ + gUnknown_203F39C = CreateSprite(&gUnknown_84644B8, 40, 76, 0); +} + +void sub_813EC28(void) +{ + struct Sprite * sprite = &gSprites[gUnknown_203F39C]; + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_813EC64; + } +} + +void sub_813EC64(struct Sprite * sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 0); + sprite->callback = SpriteCallbackDummy; + } +} From beedb8d73f40b045906f521b48f40367697b6ebb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 20:58:29 -0400 Subject: [PATCH 066/100] Tidy global namespace and document --- asm/item_menu.s | 18 +- asm/new_game.s | 2 +- data/graphics.s | 4 +- data/strings.s | 12 +- include/berry_pouch.h | 17 +- include/graphics.h | 4 +- include/menu_helpers.h | 2 +- include/strings.h | 12 +- src/berry_pouch.c | 989 ++++++++++++++++++++--------------------- src/item_use.c | 8 +- src/menu_helpers.c | 2 +- 11 files changed, 540 insertions(+), 530 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index 46fa08f33..e58abf87f 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -3922,7 +3922,7 @@ sub_8109CC0: @ 8109CC0 _08109D14: .4byte gTasks+0x8 _08109D18: ldrh r0, [r4, 0x2] - ldr r1, _08109D30 @ =gUnknown_84163DB + ldr r1, _08109D30 @ =gText_TossOutHowManyStrVar1s bl sub_810971C adds r0, r7, 0 subs r0, 0x8 @@ -3934,7 +3934,7 @@ _08109D2A: pop {r0} bx r0 .align 2, 0 -_08109D30: .4byte gUnknown_84163DB +_08109D30: .4byte gText_TossOutHowManyStrVar1s _08109D34: .4byte sub_8109DEC thumb_func_end sub_8109CC0 @@ -3957,7 +3957,7 @@ sub_8109D38: @ 8109D38 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r5, _08109DA4 @ =gStringVar4 - ldr r1, _08109DA8 @ =gUnknown_8416409 + ldr r1, _08109DA8 @ =gText_ThrowAwayStrVar2OfThisItemQM adds r0, r5, 0 bl StringExpandPlaceholders movs r0, 0x6 @@ -3988,7 +3988,7 @@ sub_8109D38: @ 8109D38 _08109D9C: .4byte gTasks+0x8 _08109DA0: .4byte gStringVar2 _08109DA4: .4byte gStringVar4 -_08109DA8: .4byte gUnknown_8416409 +_08109DA8: .4byte gText_ThrowAwayStrVar2OfThisItemQM _08109DAC: .4byte gUnknown_8452F50 thumb_func_end sub_8109D38 @@ -4133,7 +4133,7 @@ sub_8109EA8: @ 8109EA8 movs r3, 0x3 bl ConvertIntToDecimalStringN ldr r6, _08109F38 @ =gStringVar4 - ldr r1, _08109F3C @ =gUnknown_84163F4 + ldr r1, _08109F3C @ =gText_ThrewAwayStrVar2StrVar1s adds r0, r6, 0 bl StringExpandPlaceholders movs r0, 0x6 @@ -4167,7 +4167,7 @@ _08109F2C: .4byte gUnknown_203ACFC _08109F30: .4byte gStringVar1 _08109F34: .4byte gStringVar2 _08109F38: .4byte gStringVar4 -_08109F3C: .4byte gUnknown_84163F4 +_08109F3C: .4byte gText_ThrewAwayStrVar2StrVar1s _08109F40: .4byte sub_8109F44 thumb_func_end sub_8109EA8 @@ -4706,7 +4706,7 @@ _0810A3C4: .4byte gUnknown_841630F _0810A3C8: .4byte sub_810A1D0 _0810A3CC: movs r0, 0xB6 - lsls r0, 1 + lsls r0, 1 @ ITEM_TM_CASE cmp r4, r0 bne _0810A3DC ldr r0, _0810A3D8 @ =sub_810A434 @@ -4714,7 +4714,7 @@ _0810A3CC: .align 2, 0 _0810A3D8: .4byte sub_810A434 _0810A3DC: - ldr r0, _0810A3F0 @ =0x0000016d + ldr r0, _0810A3F0 @ =ITEM_BERRY_POUCH cmp r4, r0 bne _0810A3F8 ldr r0, _0810A3F4 @ =sub_810A448 @@ -4724,7 +4724,7 @@ _0810A3E4: bl ItemMenu_StartFadeToExitCallback b _0810A426 .align 2, 0 -_0810A3F0: .4byte 0x0000016d +_0810A3F0: .4byte 0x0000016d @ ITEM_BERRY_POUCH _0810A3F4: .4byte sub_810A448 _0810A3F8: mov r1, r8 diff --git a/asm/new_game.s b/asm/new_game.s index e2b9c876f..15c06e8eb 100644 --- a/asm/new_game.s +++ b/asm/new_game.s @@ -184,7 +184,7 @@ ResetMenuAndMonGlobals: @ 8054A28 bl ZeroEnemyPartyMons bl sub_81089BC bl ResetTMCaseCursorPos - bl sub_813D6E4 + bl BerryPouch_CursorResetToTop bl sub_811089C bl Random lsls r0, 16 diff --git a/data/graphics.s b/data/graphics.s index a7f262aca..e03266f85 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13988,7 +13988,7 @@ gItemPcBgPals:: @ 8E85408 gItemPcTilemap:: @ 8E85458 .incbin "graphics/item_pc/unk_8E85458.bin.lz" -gUnknown_8E8560C:: @ 8E8560C +gBerryPouchSpriteTiles:: @ 8E8560C .incbin "graphics/berry_pouch/unk_8E8560C.4bpp.lz" gUnknown_8E859D0:: @ 8E859D0 @@ -14000,7 +14000,7 @@ gUnknown_8E85BA4:: @ 8E85BA4 gUnknown_8E85BF4:: @ 8E85BF4 .incbin "graphics/berry_pouch/unk_8E85BF4.gbapal.lz" -gUnknown_8E85C1C:: @ 8E85C1C +gBerryPouchSpritePalette:: @ 8E85C1C .incbin "graphics/berry_pouch/unk_8E85C1C.gbapal.lz" gUnknown_8E85C44:: @ 8E85C44 diff --git a/data/strings.s b/data/strings.s index 5f1616eaf..05bd47c88 100644 --- a/data/strings.s +++ b/data/strings.s @@ -555,7 +555,7 @@ gOtherText_WhereShouldTheStrVar1BePlaced:: @ 841633F gText_ItemCantBeHeld:: @ 841635E .string "The {STR_VAR_1} can't be held.$" -gUnknown_8416374:: @ 8416374 +gText_TheStrVar1CantBeHeldHere:: @ 8416374 .string "The {STR_VAR_1} can't be held\nhere.$" gUnknown_841638F:: @ 841638F @@ -567,13 +567,13 @@ gUnknown_84163A7:: @ 84163A7 gUnknown_84163BB:: @ 84163BB .string "There's no room to\nstore items.$" -gUnknown_84163DB:: @ 84163DB +gText_TossOutHowManyStrVar1s:: @ 84163DB .string "Toss out how many\n{STR_VAR_1}(s)?$" -gUnknown_84163F4:: @ 84163F4 +gText_ThrewAwayStrVar2StrVar1s:: @ 84163F4 .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$" -gUnknown_8416409:: @ 8416409 +gText_ThrowAwayStrVar2OfThisItemQM:: @ 8416409 .string "Throw away {STR_VAR_2} of\nthis item?$" gUnknown_8416425:: @ 8416425 @@ -654,10 +654,10 @@ gText_FontSize2:: @ 8416703 gUnknown_8416707:: @ 8416707 .string " $" -gUnknown_841670A:: @ 841670A +gText_BerryPouch:: @ 841670A .string "BERRY POUCH$" -gUnknown_8416716:: @ 8416716 +gText_TheBerryPouchWillBePutAway:: @ 8416716 .string "The BERRY POUCH will be\nput away.$" gUnknown_8416738:: @ 0x8416738 diff --git a/include/berry_pouch.h b/include/berry_pouch.h index 58f58fd99..cd9866d81 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -3,10 +3,21 @@ #include "task.h" +enum BerryPouchType +{ + BERRYPOUCH_FROMFIELD, + BERRYPOUCH_FROMPARTYGIVE, + BERRYPOUCH_FROMMARTSELL, + BERRYPOUCH_FROMPOKEMONSTORAGEPC, + BERRYPOUCH_FROMBATTLE, + BERRYPOUCH_FROMBERRYCRUSH, + BERRYPOUCH_NA +}; + void BerryPouch_StartFadeToExitCallback(u8 taskId); -void BerryPouch_SetExitCallback(void (*)(void)); -void InitBerryPouch(u8, void (*)(void), u8); +void BerryPouch_SetExitCallback(void (*exitCallback)(void)); +void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect); void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); -void sub_813E2B8(u8 taskId); +void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId); #endif //GUARD_BERRY_POUCH_H diff --git a/include/graphics.h b/include/graphics.h index ce671246e..5c6f201db 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -999,11 +999,11 @@ extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch -extern const u32 gUnknown_8E8560C[]; +extern const u32 gBerryPouchSpriteTiles[]; extern const u8 gUnknown_8E859D0[]; extern const u8 gUnknown_8E85BA4[]; extern const u8 gUnknown_8E85BF4[]; -extern const u32 gUnknown_8E85C1C[]; +extern const u32 gBerryPouchSpritePalette[]; extern const u8 gUnknown_8E85C44[]; #endif //GUARD_GRAPHICS_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index c18d4313e..6ea771500 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -23,7 +23,7 @@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 palet 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); -bool8 sub_80BF6A8(u16 itemId); +bool8 itemid_link_can_give_berry(u16 itemId); bool8 itemid_80BF6D8_mail_related(u16 itemId); void ClearVramOamPltt(void); diff --git a/include/strings.h b/include/strings.h index a56139909..b0221b8e9 100644 --- a/include/strings.h +++ b/include/strings.h @@ -317,11 +317,11 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch -extern const u8 gUnknown_8416374[]; -extern const u8 gUnknown_84163DB[]; -extern const u8 gUnknown_84163F4[]; -extern const u8 gUnknown_8416409[]; -extern const u8 gUnknown_841670A[]; -extern const u8 gUnknown_8416716[]; +extern const u8 gText_TheStrVar1CantBeHeldHere[]; +extern const u8 gText_TossOutHowManyStrVar1s[]; +extern const u8 gText_ThrewAwayStrVar2StrVar1s[]; +extern const u8 gText_ThrowAwayStrVar2OfThisItemQM[]; +extern const u8 gText_BerryPouch[]; +extern const u8 gText_TheBerryPouchWillBePutAway[]; #endif //GUARD_STRINGS_H diff --git a/src/berry_pouch.c b/src/berry_pouch.c index abfa4aacf..abf2484f6 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -32,25 +32,24 @@ struct BerryPouchStruct_203F36C { - void (*unk_000)(void); - u16 unk_004; - u8 unk_006; - u8 unk_007; - u8 unk_008; - u8 unk_009; - u8 filler_00a[2]; - u8 unk_00C[BG_SCREEN_SIZE]; - s16 unk_80C[4]; + void (*exitCallback)(void); + u16 indicatorOffset; + u8 indicatorTaskId; + u8 listMenuNumItems; + u8 listMenuMaxShowed; + u8 itemMenuIconId; + u8 ALIGNED(4) bg1TilemapBuffer[BG_SCREEN_SIZE]; + s16 data[4]; }; struct BerryPouchStruct_203F370 { void (*savedCallback)(void); - u8 unk_04; - u8 unk_05; - u8 filler_06[2]; - u16 unk_08; - u16 unk_0A; + u8 type; + u8 allowSelect; + u8 unused_06; + u16 listMenuSelectedRow; + u16 listMenuScrollOffset; }; enum @@ -62,75 +61,75 @@ enum BP_ACTION_DUMMY }; -EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; -EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; -EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL; -EWRAM_DATA u8 *gUnknown_203F380 = NULL; -EWRAM_DATA const u8 *gUnknown_203F384 = NULL; -EWRAM_DATA u8 gUnknown_203F388 = 0; -ALIGNED(4) EWRAM_DATA u8 gUnknown_203F38C[14] = {}; -ALIGNED(4) EWRAM_DATA u8 gUnknown_203F39C = 0; +static EWRAM_DATA struct BerryPouchStruct_203F36C *sResources = NULL; +static EWRAM_DATA struct BerryPouchStruct_203F370 sStaticCnt = {}; +static EWRAM_DATA struct ListMenuItem *sListMenuItems = NULL; +static EWRAM_DATA u8 *sListMenuStrbuf = NULL; +static EWRAM_DATA const u8 *sContextMenuOptions = NULL; +static EWRAM_DATA u8 sContextMenuNumOptions = 0; +static ALIGNED(4) EWRAM_DATA u8 sVariableWindowIds[14] = {}; +static ALIGNED(4) EWRAM_DATA u8 sBerryPouchSpriteId = 0; -void sub_813CE30(void); -bool8 sub_813CE5C(void); -void sub_813D00C(void); -void sub_813D048(u8 taskId); -void sub_813D07C(void); -bool8 sub_813D0E4(void); -bool8 sub_813D1C0(void); -void sub_813D204(void); -void sub_813D31C(u8 * dest, u16 itemId); -void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list); -void sub_813D430(u8 windowId, s32 itemId, u8 y); -void sub_813D4D0(u8 y, u8 colorIdx); -void sub_813D538(s32 itemIndex); -void sub_813D5BC(void); -void sub_813D6A4(void); -void sub_813D6F4(void); -void sub_813D754(void); -void sub_813D7CC(void); -void sub_813D844(u8 taskId); -void sub_813D8AC(void); -void sub_813DA68(u8 taskId); -void sub_813DD74(u8 taskId); -void sub_813DDA0(u8 taskId); -void sub_813DE0C(u8 taskId); -void sub_813DEBC(u8 taskId); -void sub_813DF54(u8 taskId); -void sub_813DFC8(u8 taskId); -void sub_813E010(u8 taskId); -void sub_813E0DC(u8 taskId); -void sub_813E164(u8 taskId); -void sub_813E200(u8 taskId); -void sub_813E274(u8 taskId); -void sub_813E290(u8 taskId); -void sub_813E320(u8 taskId); -void sub_813E37C(u8 taskId); -void sub_813E3FC(u8 taskId); -void sub_813E428(u8 taskId); -void sub_813E4E4(u8 taskId); -void sub_813E554(u8 taskId); -void sub_813E568(u8 taskId); -void sub_813E5B8(u8 taskId); -void sub_813E668(s32 price); -void sub_813E690(u8 taskId); -void sub_813E768(u8 taskId); -void sub_813E7F0(u8 taskId); -void sub_813E8D4(u8 taskId); -void sub_813E910(void); -void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -u8 sub_813EA08(u8 winIdx); -void sub_813EA98(u8 winIdx); -void sub_813EACC(u8 winIdx); -u8 sub_813EB10(u8 winIdx); -void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); -void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs); -void sub_813EBD4(void); -void sub_813EC08(void); -void sub_813EC28(void); -void sub_813EC64(struct Sprite * sprite); +static void CB2_InitBerryPouch(void); +static bool8 RunBerryPouchInit(void); +static void AbortBerryPouchLoading(void); +static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId); +static void BerryPouchInitBgs(void); +static bool8 BerryPouchLoadGfx(void); +static bool8 AllocateListMenuBuffers(void); +static void SetUpListMenuTemplate(void); +static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId); +static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y); +static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx); +static void PrintSelectedBerryDescription(s32 itemIndex); +static void CreateScrollIndicatorArrows_BerryPouchList(void); +static void PrintBerryPouchHeaderCentered(void); +static void SanitizeListMenuSelectionParams(void); +static void UpdateListMenuScrollOffset(void); +static void BerryPouch_DestroyResources(void); +static void Task_BerryPouchFadeToExitCallback(u8 taskId); +static void SortAndCountBerries(void); +static void Task_BerryPouchMain(u8 taskId); +static void Task_NormalContextMenu_0(u8 taskId); +static void Task_NormalContextMenu_1(u8 taskId); +static void Task_BerryPouch_Use_0(u8 taskId); +static void Task_BerryPouch_Toss_0(u8 taskId); +static void Task_AskTossMultiple(u8 taskId); +static void Task_TossNo(u8 taskId); +static void Task_Toss_SelectMultiple(u8 taskId); +static void Task_TossYes(u8 taskId); +static void Task_WaitButtonThenTossBerries(u8 taskId); +static void Task_BerryPouch_Give_0(u8 taskId); +static void Task_Give_PrintThereIsNoPokemon(u8 taskId); +static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId); +static void Task_BerryPouch_Exit_0(u8 taskId); +static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId); +static void Task_ContextMenu_FromPokemonPC(u8 taskId); +static void Task_ContextMenu_Sell_0(u8 taskId); +static void Task_AskSellMultiple(u8 taskId); +static void Task_SellMultiple_CreateYesNoMenu(u8 taskId); +static void Task_SellNo(u8 taskId); +static void Task_Sell_PrintSelectMultipleUI(u8 taskId); +static void SellMultiple_UpdateSellPriceDisplay(s32 price); +static void Task_Sell_SelectMultiple(u8 taskId); +static void Task_SellYes(u8 taskId); +static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId); +static void Task_SellBerries_WaitButton(u8 taskId); +static void BerryPouchInitWindows(void); +static void BerryPouchPrint(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static u8 GetOrCreateVariableWindow(u8 winIdx); +static void DestroyVariableWindow(u8 winIdx); +static void TryDestroyVariableWindow(u8 winIdx); +static u8 GetVariableWindowId(u8 winIdx); +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs); +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs); +static void PrintMoneyInWin2(void); +static void CreateBerryPouchSprite(void); +static void StartBerryPouchSpriteWobbleAnim(void); +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite); -static const struct BgTemplate gUnknown_846434C[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -158,63 +157,63 @@ static const struct BgTemplate gUnknown_846434C[] = { } }; -const TaskFunc gUnknown_8464358[] = { - sub_813DD74, - sub_813E37C, - sub_813E428, - sub_813E3FC, - sub_813DD74 +static const TaskFunc sBerryPouchContextMenuTasks[] = { + Task_NormalContextMenu_0, + Task_ContextMenu_FromPartyGiveMenu_0, + Task_ContextMenu_Sell_0, + Task_ContextMenu_FromPokemonPC, + Task_NormalContextMenu_0 }; -const struct YesNoFuncTable gUnknown_846436C = { - .yesFunc = sub_813E0DC, - .noFunc = sub_813DFC8 +static const struct YesNoFuncTable sYesNoFuncs_Toss = { + .yesFunc = Task_TossYes, + .noFunc = Task_TossNo }; -const struct YesNoFuncTable gUnknown_8464374 = { - .yesFunc = sub_813E768, - .noFunc = sub_813E568 +static const struct YesNoFuncTable sYesNoFuncs_Sell = { + .yesFunc = Task_SellYes, + .noFunc = Task_SellNo }; -const struct MenuAction gUnknown_846437C[] = { - {gOtherText_Use, sub_813DE0C}, - {gOtherText_Toss, sub_813DEBC}, - {gOtherText_Give, sub_813E200}, - {gOtherText_Exit, sub_813E320}, +static const struct MenuAction sContextMenuActions[] = { + {gOtherText_Use, Task_BerryPouch_Use_0}, + {gOtherText_Toss, Task_BerryPouch_Toss_0}, + {gOtherText_Give, Task_BerryPouch_Give_0}, + {gOtherText_Exit, Task_BerryPouch_Exit_0}, {gString_Dummy, NULL} }; -const u8 gUnknown_84643A4[] = { +static const u8 sOptions_UseGiveTossExit[] = { BP_ACTION_USE, BP_ACTION_GIVE, BP_ACTION_TOSS, BP_ACTION_EXIT }; -const u8 gUnknown_84643A8[] = { +static const u8 sOptions_GiveExit[] = { BP_ACTION_GIVE, BP_ACTION_EXIT, BP_ACTION_DUMMY, BP_ACTION_DUMMY }; -const u8 gUnknown_84643AC[] = { +static const u8 sOptions_Exit[] = { BP_ACTION_EXIT, BP_ACTION_DUMMY, BP_ACTION_DUMMY, BP_ACTION_DUMMY }; -const u8 gUnknown_84643B0[] = { +static const u8 sOptions_UseToss_Exit[] = { BP_ACTION_USE, BP_ACTION_TOSS, BP_ACTION_EXIT, BP_ACTION_DUMMY }; -const u8 gUnknown_84643B4[] = _(" "); +static const u8 sText_Space[] = _(" "); -const struct WindowTemplate gUnknown_84643B8[] = { +static const struct WindowTemplate sWindowTemplates_Main[] = { { .bg = 0, .tilemapLeft = 11, @@ -242,7 +241,7 @@ const struct WindowTemplate gUnknown_84643B8[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_84643D8[] = { +static const struct WindowTemplate sWindowTemplates_Variable[] = { { .bg = 0x02, .tilemapLeft = 0x18, @@ -358,34 +357,34 @@ const struct WindowTemplate gUnknown_84643D8[] = { } }; -const u8 gUnknown_8464448[][3] = { +static const u8 sTextColors[][3] = { { 0, 1, 2 }, { 0, 2, 3 }, { 0, 3, 2 } }; -const struct OamData gOamData_8464454 = { +static const struct OamData sOamData = { .affineMode = ST_OAM_AFFINE_NORMAL, .shape = ST_OAM_SQUARE, .size = ST_OAM_SIZE_3, .priority = 1 }; -const union AnimCmd gSpriteAnims_846445C[] = { +static const union AnimCmd sSpriteAnim_Dummy[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_8464464[] = { - gSpriteAnims_846445C +static const union AnimCmd *const sSpriteAnimTable[] = { + sSpriteAnim_Dummy }; -const union AffineAnimCmd gSpriteAffineAnims_8464468[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Static[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_END }; -const union AffineAnimCmd gSpriteAffineAnims_8464478[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Wobble[] = { AFFINEANIMCMD_FRAME(0, 0, -2, 2), AFFINEANIMCMD_FRAME(0, 0, 2, 4), AFFINEANIMCMD_FRAME(0, 0, -2, 4), @@ -393,52 +392,52 @@ const union AffineAnimCmd gSpriteAffineAnims_8464478[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_84644A0[] = { - gSpriteAffineAnims_8464468, - gSpriteAffineAnims_8464478 +static const union AffineAnimCmd *const sSpriteAffineAnimTable[] = { + sSpriteAffineAnim_Static, + sSpriteAffineAnim_Wobble }; -const struct CompressedSpriteSheet gUnknown_84644A8 = { - gUnknown_8E8560C, 0x800, 100 +static const struct CompressedSpriteSheet sBerryPouchSpriteSheet = { + gBerryPouchSpriteTiles, 0x800, 100 }; -const struct CompressedSpritePalette gUnknown_84644B0 = { - gUnknown_8E85C1C, 100 +static const struct CompressedSpritePalette sBerryPouchSpritePal = { + gBerryPouchSpritePalette, 100 }; -const struct SpriteTemplate gUnknown_84644B8 = { - 100, 100, &gOamData_8464454, gSpriteAnimTable_8464464, NULL, gSpriteAffineAnimTable_84644A0, SpriteCallbackDummy +static const struct SpriteTemplate sSpriteTemplate_BerryPouch = { + 100, 100, &sOamData, sSpriteAnimTable, NULL, sSpriteAffineAnimTable, SpriteCallbackDummy }; -void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) +void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect) { u8 i; - gUnknown_203F36C = Alloc(sizeof(struct BerryPouchStruct_203F36C)); - if (gUnknown_203F36C == NULL) + sResources = Alloc(sizeof(struct BerryPouchStruct_203F36C)); + if (sResources == NULL) { SetMainCallback2(savedCallback); } else { - if (a0 != 6) - gUnknown_203F370.unk_04 = a0; - if (a2 != 0xFF) - gUnknown_203F370.unk_05 = a2; + if (type != BERRYPOUCH_NA) + sStaticCnt.type = type; + if (allowSelect != 0xFF) + sStaticCnt.allowSelect = allowSelect; if (savedCallback != NULL) - gUnknown_203F370.savedCallback = savedCallback; - gUnknown_203F36C->unk_000 = NULL; - gUnknown_203F36C->unk_009 = 0; - gUnknown_203F36C->unk_006 = 0xFF; + sStaticCnt.savedCallback = savedCallback; + sResources->exitCallback = NULL; + sResources->itemMenuIconId = 0; + sResources->indicatorTaskId = 0xFF; for (i = 0; i < 4; i++) - gUnknown_203F36C->unk_80C[i] = 0; + sResources->data[i] = 0; gTextFlags.autoScroll = FALSE; gSpecialVar_ItemId = ITEM_NONE; - SetMainCallback2(sub_813CE30); + SetMainCallback2(CB2_InitBerryPouch); } } -void sub_813CE00(void) +static void CB2_BerryPouchIdle(void) { RunTasks(); AnimateSprites(); @@ -447,27 +446,27 @@ void sub_813CE00(void) UpdatePaletteFade(); } -void sub_813CE1C(void) +static void VBlankCB_BerryPouchIdle(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_813CE30(void) +static void CB2_InitBerryPouch(void) { while (1) { if (sub_80BF72C() == TRUE) break; - if (sub_813CE5C() == TRUE) + if (RunBerryPouchInit() == TRUE) break; if (MenuHelpers_LinkSomething() == TRUE) break; } } -bool8 sub_813CE5C(void) +static bool8 RunBerryPouchInit(void) { u8 taskId; @@ -504,52 +503,52 @@ bool8 sub_813CE5C(void) gMain.state++; break; case 7: - sub_813D07C(); - gUnknown_203F36C->unk_80C[0] = 0; + BerryPouchInitBgs(); + sResources->data[0] = 0; gMain.state++; break; case 8: - if (sub_813D0E4()) + if (BerryPouchLoadGfx()) gMain.state++; break; case 9: - sub_813E910(); + BerryPouchInitWindows(); gMain.state++; break; case 10: - sub_813D8AC(); - sub_813D6F4(); - sub_813D754(); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + UpdateListMenuScrollOffset(); gMain.state++; break; case 11: - if (!sub_813D1C0()) + if (!AllocateListMenuBuffers()) { - sub_813D00C(); + AbortBerryPouchLoading(); return TRUE; } gMain.state++; break; case 12: - sub_813D204(); + SetUpListMenuTemplate(); gMain.state++; break; case 13: - sub_813D6A4(); + PrintBerryPouchHeaderCentered(); gMain.state++; break; case 14: - taskId = CreateTask(sub_813DA68, 0); - gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + taskId = CreateTask(Task_BerryPouchMain, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); gTasks[taskId].data[8] = 0; gMain.state++; break; case 15: - sub_813EC08(); + CreateBerryPouchSprite(); gMain.state++; break; case 16: - sub_813D5BC(); + CreateScrollIndicatorArrows_BerryPouchList(); gMain.state++; break; case 17: @@ -561,39 +560,39 @@ bool8 sub_813CE5C(void) gMain.state++; break; default: - SetVBlankCallback(sub_813CE1C); - SetMainCallback2(sub_813CE00); + SetVBlankCallback(VBlankCB_BerryPouchIdle); + SetMainCallback2(CB2_BerryPouchIdle); return TRUE; } return FALSE; } -void sub_813D00C(void) +static void AbortBerryPouchLoading(void) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - CreateTask(sub_813D048, 0); - SetVBlankCallback(sub_813CE1C); - SetMainCallback2(sub_813CE00); + CreateTask(Task_AbortBerryPouchLoading_WaitFade, 0); + SetVBlankCallback(VBlankCB_BerryPouchIdle); + SetMainCallback2(CB2_BerryPouchIdle); } -void sub_813D048(u8 taskId) +static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(gUnknown_203F370.savedCallback); - sub_813D7CC(); + SetMainCallback2(sStaticCnt.savedCallback); + BerryPouch_DestroyResources(); DestroyTask(taskId); } } -void sub_813D07C(void) +static void BerryPouchInitBgs(void) { ResetAllBgsCoordinatesAndBgCntRegs(); - memset(gUnknown_203F36C->unk_00C, 0, BG_SCREEN_SIZE); + memset(sResources->bg1TilemapBuffer, 0, BG_SCREEN_SIZE); ResetBgsAndClearDma3BusyFlags(FALSE); - InitBgsFromTemplates(0, gUnknown_846434C, NELEMS(gUnknown_846434C)); - SetBgTilemapBuffer(1, gUnknown_203F36C->unk_00C); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); + SetBgTilemapBuffer(1, sResources->bg1TilemapBuffer); ScheduleBgCopyTilemapToVram(1); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); @@ -602,69 +601,69 @@ void sub_813D07C(void) ShowBg(2); } -bool8 sub_813D0E4(void) +static bool8 BerryPouchLoadGfx(void) { - switch (gUnknown_203F36C->unk_80C[0]) + switch (sResources->data[0]) { case 0: ResetTempTileDataBuffers(); DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0); - gUnknown_203F36C->unk_80C[0]++; + sResources->data[0]++; break; case 1: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - LZDecompressWram(gUnknown_8E85C44, gUnknown_203F36C->unk_00C); - gUnknown_203F36C->unk_80C[0]++; + LZDecompressWram(gUnknown_8E85C44, sResources->bg1TilemapBuffer); + sResources->data[0]++; } break; case 2: LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60); if (gSaveBlock2Ptr->playerGender != MALE) LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20); - gUnknown_203F36C->unk_80C[0]++; + sResources->data[0]++; break; case 3: - LoadCompressedSpriteSheet(&gUnknown_84644A8); - gUnknown_203F36C->unk_80C[0]++; + LoadCompressedSpriteSheet(&sBerryPouchSpriteSheet); + sResources->data[0]++; break; default: - LoadCompressedSpritePalette(&gUnknown_84644B0); - gUnknown_203F36C->unk_80C[0] = 0; + LoadCompressedSpritePalette(&sBerryPouchSpritePal); + sResources->data[0] = 0; return TRUE; } return FALSE; } -bool8 sub_813D1C0(void) +static bool8 AllocateListMenuBuffers(void) { - gUnknown_203F37C = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem)); - if (gUnknown_203F37C == NULL) + sListMenuItems = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem)); + if (sListMenuItems == NULL) return FALSE; - gUnknown_203F380 = Alloc(gUnknown_203F36C->unk_007 * 27); - if (gUnknown_203F380 == NULL) + sListMenuStrbuf = Alloc(sResources->listMenuNumItems * 27); + if (sListMenuStrbuf == NULL) return FALSE; return TRUE; } -void sub_813D204(void) +static void SetUpListMenuTemplate(void) { u16 i; struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; - for (i = 0; i < gUnknown_203F36C->unk_007; i++) + for (i = 0; i < sResources->listMenuNumItems; i++) { - sub_813D31C(&gUnknown_203F380[i * 27], pocket->itemSlots[i].itemId); - gUnknown_203F37C[i].label = &gUnknown_203F380[i * 27]; - gUnknown_203F37C[i].index = i; + GetBerryNameAndIndexForMenu(&sListMenuStrbuf[i * 27], pocket->itemSlots[i].itemId); + sListMenuItems[i].label = &sListMenuStrbuf[i * 27]; + sListMenuItems[i].index = i; } - gUnknown_203F37C[i].label = gText_Close; - gUnknown_203F37C[i].index = i; - gMultiuseListMenuTemplate.items = gUnknown_203F37C; - if (gUnknown_203F370.unk_04 != 5) - gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007 + 1; + sListMenuItems[i].label = gText_Close; + sListMenuItems[i].index = i; + gMultiuseListMenuTemplate.items = sListMenuItems; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems + 1; else - gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007; + gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems; gMultiuseListMenuTemplate.windowId = 0; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = 9; @@ -672,71 +671,71 @@ void sub_813D204(void) gMultiuseListMenuTemplate.lettersSpacing = 0; gMultiuseListMenuTemplate.itemVerticalPadding = 2; gMultiuseListMenuTemplate.upText_Y = 2; - gMultiuseListMenuTemplate.maxShowed = gUnknown_203F36C->unk_008; + gMultiuseListMenuTemplate.maxShowed = sResources->listMenuMaxShowed; gMultiuseListMenuTemplate.fontId = 2; gMultiuseListMenuTemplate.cursorPal = 2; gMultiuseListMenuTemplate.fillValue = 0; gMultiuseListMenuTemplate.cursorShadowPal = 3; - gMultiuseListMenuTemplate.moveCursorFunc = sub_813D3C0; - gMultiuseListMenuTemplate.itemPrintFunc = sub_813D430; + gMultiuseListMenuTemplate.moveCursorFunc = BerryPouchMoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = BerryPouchItemPrintFunc; gMultiuseListMenuTemplate.cursorKind = 0; gMultiuseListMenuTemplate.scrollMultiple = 0; } -void sub_813D31C(u8 * dest, u16 itemId) +static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId) { StringCopy(gStringVar4, gText_FontSize0); StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringAppend(gStringVar4, gStringVar1); CopyItemName(itemId, gStringVar1); - StringAppend(gStringVar4, gUnknown_84643B4); + StringAppend(gStringVar4, sText_Space); StringAppend(gStringVar4, gText_FontSize2); StringAppend(gStringVar4, gStringVar1); StringCopy(dest, gStringVar4); } -void sub_813D39C(s16 a0, u8 *dest) +static void CopySelectedListMenuItemName(s16 itemIdx, u8 *dest) { - StringCopy(dest, &gUnknown_203F380[a0 * 27]); + StringCopy(dest, &sListMenuStrbuf[itemIdx * 27]); } -void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { if (onInit != TRUE) { PlaySE(SE_W287B); - sub_813EC28(); + StartBerryPouchSpriteWobbleAnim(); } - DestroyItemMenuIcon(gUnknown_203F36C->unk_009 ^ 1); - if (gUnknown_203F36C->unk_007 != itemIndex) - sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), gUnknown_203F36C->unk_009); + DestroyItemMenuIcon(sResources->itemMenuIconId ^ 1); + if (sResources->listMenuNumItems != itemIndex) + sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), sResources->itemMenuIconId); else - sub_80989A0(ITEM_N_A, gUnknown_203F36C->unk_009); - gUnknown_203F36C->unk_009 ^= 1; - sub_813D538(itemIndex); + sub_80989A0(ITEM_N_A, sResources->itemMenuIconId); + sResources->itemMenuIconId ^= 1; + PrintSelectedBerryDescription(itemIndex); } -void sub_813D430(u8 windowId, s32 itemId, u8 y) +static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y) { u16 unused; u16 itemQuantity; - if (itemId != -2 && gUnknown_203F36C->unk_007 != itemId) + if (itemId != -2 && sResources->listMenuNumItems != itemId) { unused = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemId); itemQuantity = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, itemId); ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); + BerryPouchPrint(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); } } -void sub_813D4B0(u8 taskId, u8 colorIdx) +static void BerryPouchSetArrowCursorFromListMenu(u8 taskId, u8 colorIdx) { - sub_813D4D0(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx); + BerryPouchSetArrowCursorAt(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx); } -void sub_813D4D0(u8 y, u8 colorIdx) +static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx) { u8 width; u8 height; @@ -749,197 +748,197 @@ void sub_813D4D0(u8 y, u8 colorIdx) } else { - sub_813E9A0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); + BerryPouchPrint(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); } } -void sub_813D538(s32 itemIdx) +static void PrintSelectedBerryDescription(s32 itemIdx) { const u8 *str; - if (itemIdx != gUnknown_203F36C->unk_007) + if (itemIdx != sResources->listMenuNumItems) str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx)); else - str = gUnknown_8416716; + str = gText_TheBerryPouchWillBePutAway; FillWindowPixelBuffer(1, PIXEL_FILL(0)); - sub_813E9A0(1, 2, str, 0, 2, 2, 0, 0, 0); + BerryPouchPrint(1, 2, str, 0, 2, 2, 0, 0, 0); } -void sub_813D594(s32 pal) +static void SetDescriptionWindowBorderPalette(s32 pal) { SetBgRectPal(1, 0, 16, 30, 4, pal + 1); ScheduleBgCopyTilemapToVram(1); } -void sub_813D5BC(void) +static void CreateScrollIndicatorArrows_BerryPouchList(void) { - if (gUnknown_203F370.unk_04 != 5) - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008 + 1, 110, 110, &gUnknown_203F370.unk_0A); + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed + 1, 110, 110, &sStaticCnt.listMenuScrollOffset); else - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A); + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed, 110, 110, &sStaticCnt.listMenuScrollOffset); } -void sub_813D614(void) +static void CreateScrollIndicatorArrows_TossQuantity(void) { - gUnknown_203F36C->unk_004 = 1; - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &gUnknown_203F36C->unk_004); + sResources->indicatorOffset = 1; + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &sResources->indicatorOffset); } -void sub_813D64C(void) +static void CreateScrollIndicatorArrows_SellQuantity(void) { - gUnknown_203F36C->unk_004 = 1; - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &gUnknown_203F36C->unk_004); + sResources->indicatorOffset = 1; + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &sResources->indicatorOffset); } -void sub_813D684(void) +static void DestroyScrollIndicatorArrows(void) { - if (gUnknown_203F36C->unk_006 != 0xFF) + if (sResources->indicatorTaskId != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_203F36C->unk_006); - gUnknown_203F36C->unk_006 = 0xFF; + RemoveScrollIndicatorArrowPair(sResources->indicatorTaskId); + sResources->indicatorTaskId = 0xFF; } } -void sub_813D6A4(void) +static void PrintBerryPouchHeaderCentered(void) { - u32 slack = 72 - GetStringWidth(1, gUnknown_841670A, 0); - sub_813E9A0(2, 1, gUnknown_841670A, slack / 2, 1, 0, 0, 0, 0); + u32 slack = 72 - GetStringWidth(1, gText_BerryPouch, 0); + BerryPouchPrint(2, 1, gText_BerryPouch, slack / 2, 1, 0, 0, 0, 0); } -void sub_813D6E4(void) +void BerryPouch_CursorResetToTop(void) { - gUnknown_203F370.unk_08 = 0; - gUnknown_203F370.unk_0A = 0; + sStaticCnt.listMenuSelectedRow = 0; + sStaticCnt.listMenuScrollOffset = 0; } -void sub_813D6F4(void) +static void SanitizeListMenuSelectionParams(void) { s32 r2; - if (gUnknown_203F370.unk_04 != 5) - r2 = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + r2 = sResources->listMenuNumItems + 1; else - r2 = gUnknown_203F36C->unk_007; - if (gUnknown_203F370.unk_0A != 0 && gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 > r2) - gUnknown_203F370.unk_0A = r2 - gUnknown_203F36C->unk_008; - if (gUnknown_203F370.unk_0A + gUnknown_203F370.unk_08 >= r2) + r2 = sResources->listMenuNumItems; + if (sStaticCnt.listMenuScrollOffset != 0 && sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed > r2) + sStaticCnt.listMenuScrollOffset = r2 - sResources->listMenuMaxShowed; + if (sStaticCnt.listMenuScrollOffset + sStaticCnt.listMenuSelectedRow >= r2) { if (r2 == 0 || r2 == 1) - gUnknown_203F370.unk_08 = 0; + sStaticCnt.listMenuSelectedRow = 0; else - gUnknown_203F370.unk_08 = r2 - 1; + sStaticCnt.listMenuSelectedRow = r2 - 1; } } -void sub_813D754(void) +static void UpdateListMenuScrollOffset(void) { u8 lim; u8 i; - if (gUnknown_203F370.unk_04 != 5) - lim = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + lim = sResources->listMenuNumItems + 1; else - lim = gUnknown_203F36C->unk_007; - if (gUnknown_203F370.unk_08 > 4) + lim = sResources->listMenuNumItems; + if (sStaticCnt.listMenuSelectedRow > 4) { - for (i = 0; i <= gUnknown_203F370.unk_08 - 4; gUnknown_203F370.unk_08--, gUnknown_203F370.unk_0A++, i++) + for (i = 0; i <= sStaticCnt.listMenuSelectedRow - 4; sStaticCnt.listMenuSelectedRow--, sStaticCnt.listMenuScrollOffset++, i++) { - if (gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 == lim) + if (sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed == lim) break; } } } -void sub_813D7CC(void) +static void BerryPouch_DestroyResources(void) { - if (gUnknown_203F36C != NULL) - Free(gUnknown_203F36C); - if (gUnknown_203F37C != NULL) - Free(gUnknown_203F37C); - if (gUnknown_203F380 != NULL) - Free(gUnknown_203F380); + if (sResources != NULL) + Free(sResources); + if (sListMenuItems != NULL) + Free(sListMenuItems); + if (sListMenuStrbuf != NULL) + Free(sListMenuStrbuf); FreeAllWindowBuffers(); } void BerryPouch_StartFadeToExitCallback(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_813D844; + gTasks[taskId].func = Task_BerryPouchFadeToExitCallback; } -void sub_813D844(u8 taskId) +static void Task_BerryPouchFadeToExitCallback(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) { - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - if (gUnknown_203F36C->unk_000 != NULL) - SetMainCallback2(gUnknown_203F36C->unk_000); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + if (sResources->exitCallback != NULL) + SetMainCallback2(sResources->exitCallback); else - SetMainCallback2(gUnknown_203F370.savedCallback); - sub_813D684(); - sub_813D7CC(); + SetMainCallback2(sStaticCnt.savedCallback); + DestroyScrollIndicatorArrows(); + BerryPouch_DestroyResources(); DestroyTask(taskId); } } -void sub_813D8AC(void) +static void SortAndCountBerries(void) { u16 i; u32 r2; struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; SortAndCompactBagPocket(pocket); - gUnknown_203F36C->unk_007 = 0; + sResources->listMenuNumItems = 0; for (i = 0; i < pocket->capacity; i++) { if (pocket->itemSlots[i].itemId == ITEM_NONE) break; - gUnknown_203F36C->unk_007++; + sResources->listMenuNumItems++; } - if (gUnknown_203F370.unk_04 != 5) - r2 = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + r2 = sResources->listMenuNumItems + 1; else - r2 = gUnknown_203F36C->unk_007; + r2 = sResources->listMenuNumItems; if (r2 > 7) - gUnknown_203F36C->unk_008 = 7; + sResources->listMenuMaxShowed = 7; else - gUnknown_203F36C->unk_008 = r2; + sResources->listMenuMaxShowed = r2; } void BerryPouch_SetExitCallback(void (*callback)(void)) { - gUnknown_203F36C->unk_000 = callback; + sResources->exitCallback = callback; } -void sub_813D940(u8 taskId, const u8 * str) +void InitTossQuantitySelectUI(u8 taskId, const u8 * str) { s16 * data = gTasks[taskId].data; - u8 windowId = sub_813EA08(8); + u8 windowId = GetOrCreateVariableWindow(8); u8 windowId2; - sub_813D39C(data[1], gStringVar1); + CopySelectedListMenuItemName(data[1], gStringVar1); StringExpandPlaceholders(gStringVar4, str); - sub_813E9A0(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1); - windowId2 = sub_813EA08(0); + BerryPouchPrint(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1); + windowId2 = GetOrCreateVariableWindow(0); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + BerryPouchPrint(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); } -void sub_813D9F8(u8 whichWindow, s16 quantity, u8 ndigits) +static void PrintxQuantityOnWindow(u8 whichWindow, s16 quantity, u8 ndigits) { - u8 windowId = sub_813EB10(whichWindow); + u8 windowId = GetVariableWindowId(whichWindow); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, ndigits); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1); } -void sub_813DA68(u8 taskId) +static void Task_BerryPouchMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 menuInput; if (!gPaletteFade.active && sub_80BF72C() != TRUE) { menuInput = ListMenu_ProcessInput(data[0]); - ListMenuGetScrollAndRow(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - if (JOY_NEW(SELECT_BUTTON) && gUnknown_203F370.unk_05 == 1) + ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + if (JOY_NEW(SELECT_BUTTON) && sStaticCnt.allowSelect == 1) { PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; @@ -952,7 +951,7 @@ void sub_813DA68(u8 taskId) case -1: return; case -2: - if (gUnknown_203F370.unk_04 != 5) + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) { PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; @@ -961,25 +960,25 @@ void sub_813DA68(u8 taskId) break; default: PlaySE(SE_SELECT); - if (gUnknown_203F370.unk_04 == 5) + if (sStaticCnt.type == BERRYPOUCH_FROMBERRYCRUSH) { gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput); BerryPouch_StartFadeToExitCallback(taskId); } - else if (menuInput == gUnknown_203F36C->unk_007) + else if (menuInput == sResources->listMenuNumItems) { gSpecialVar_ItemId = 0; BerryPouch_StartFadeToExitCallback(taskId); } else { - sub_813D684(); - sub_813D594(1); - sub_813D4B0(data[0], 2); + DestroyScrollIndicatorArrows(); + SetDescriptionWindowBorderPalette(1); + BerryPouchSetArrowCursorFromListMenu(data[0], 2); data[1] = menuInput; data[2] = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, menuInput); gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput); - gTasks[taskId].func = gUnknown_8464358[gUnknown_203F370.unk_04]; + gTasks[taskId].func = sBerryPouchContextMenuTasks[sStaticCnt.type]; } break; } @@ -987,58 +986,58 @@ void sub_813DA68(u8 taskId) } } -void sub_813DBB4(u8 taskId) +static void Task_CleanUpAndReturnToMain(u8 taskId) { - sub_813D594(0); - sub_813D5BC(); - gTasks[taskId].func = sub_813DA68; + SetDescriptionWindowBorderPalette(0); + CreateScrollIndicatorArrows_BerryPouchList(); + gTasks[taskId].func = Task_BerryPouchMain; } -void sub_813DBE4(u8 taskId) +static void CreateNormalContextMenu(u8 taskId) { s16 * data = gTasks[taskId].data; u8 windowId; u8 windowId2; - if (gUnknown_203F370.unk_04 == 4) + if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE) { - gUnknown_203F384 = gUnknown_84643B0; - gUnknown_203F388 = 3; + sContextMenuOptions = sOptions_UseToss_Exit; + sContextMenuNumOptions = 3; } else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) { - if (!sub_80BF6A8(gSpecialVar_ItemId)) + if (!itemid_link_can_give_berry(gSpecialVar_ItemId)) { - gUnknown_203F384 = gUnknown_84643AC; - gUnknown_203F388 = 1; + sContextMenuOptions = sOptions_Exit; + sContextMenuNumOptions = 1; } else { - gUnknown_203F384 = gUnknown_84643A8; - gUnknown_203F388 = 2; + sContextMenuOptions = sOptions_GiveExit; + sContextMenuNumOptions = 2; } } else { - gUnknown_203F384 = gUnknown_84643A4; - gUnknown_203F388 = 4; + sContextMenuOptions = sOptions_UseGiveTossExit; + sContextMenuNumOptions = 4; } - windowId = sub_813EA08(gUnknown_203F388 + 9); - AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, gUnknown_846437C, gUnknown_203F384); - Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, 0); - windowId2 = sub_813EA08(6); - sub_813D39C(data[1], gStringVar1); + windowId = GetOrCreateVariableWindow(sContextMenuNumOptions + 9); + AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, sContextMenuActions, sContextMenuOptions); + Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, 0); + windowId2 = GetOrCreateVariableWindow(6); + CopySelectedListMenuItemName(data[1], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1); - sub_813E9A0(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); + BerryPouchPrint(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); } -void sub_813DD74(u8 taskId) +static void Task_NormalContextMenu_0(u8 taskId) { - sub_813DBE4(taskId); - gTasks[taskId].func = sub_813DDA0; + CreateNormalContextMenu(taskId); + gTasks[taskId].func = Task_NormalContextMenu_1; } -void sub_813DDA0(u8 taskId) +static void Task_NormalContextMenu_1(u8 taskId) { s8 input; if (sub_80BF72C() != TRUE) @@ -1050,25 +1049,25 @@ void sub_813DDA0(u8 taskId) break; case -1: PlaySE(SE_SELECT); - gUnknown_846437C[BP_ACTION_EXIT].func.void_u8(taskId); + sContextMenuActions[BP_ACTION_EXIT].func.void_u8(taskId); break; default: PlaySE(SE_SELECT); - gUnknown_846437C[gUnknown_203F384[input]].func.void_u8(taskId); + sContextMenuActions[sContextMenuOptions[input]].func.void_u8(taskId); break; } } } -void sub_813DE0C(u8 taskId) +static void Task_BerryPouch_Use_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - if (gUnknown_203F370.unk_04 == 4) + if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE) { if (ItemId_GetBattleFunc(gSpecialVar_ItemId) == NULL) FieldUseFunc_OakStopsYou(taskId); @@ -1076,209 +1075,209 @@ void sub_813DE0C(u8 taskId) ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); } else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) - sub_813E274(taskId); + Task_Give_PrintThereIsNoPokemon(taskId); else ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } -void sub_813DEBC(u8 taskId) +static void Task_BerryPouch_Toss_0(u8 taskId) { s16 * data = gTasks[taskId].data; - ClearWindowTilemap(sub_813EB10(gUnknown_203F388 + 9)); - ClearWindowTilemap(sub_813EB10(6)); - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + ClearWindowTilemap(GetVariableWindowId(sContextMenuNumOptions + 9)); + ClearWindowTilemap(GetVariableWindowId(6)); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); data[8] = 1; if (data[2] == 1) - sub_813DF54(taskId); + Task_AskTossMultiple(taskId); else { - sub_813D940(taskId, gUnknown_84163DB); - sub_813D614(); - gTasks[taskId].func = sub_813E010; + InitTossQuantitySelectUI(taskId, gText_TossOutHowManyStrVar1s); + CreateScrollIndicatorArrows_TossQuantity(); + gTasks[taskId].func = Task_Toss_SelectMultiple; } } -void sub_813DF54(u8 taskId) +static void Task_AskTossMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_8416409); - sub_813E9A0(sub_813EA08(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); - sub_813EB7C(taskId, &gUnknown_846436C); + StringExpandPlaceholders(gStringVar4, gText_ThrowAwayStrVar2OfThisItemQM); + BerryPouchPrint(GetOrCreateVariableWindow(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + CreateYesNoMenuWin3(taskId, &sYesNoFuncs_Toss); } -void sub_813DFC8(u8 taskId) +static void Task_TossNo(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(7); + DestroyVariableWindow(7); PutWindowTilemap(1); PutWindowTilemap(0); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E010(u8 taskId) +static void Task_Toss_SelectMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) - sub_813D9F8(0, data[8], 3); + PrintxQuantityOnWindow(0, data[8], 3); else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - ClearWindowTilemap(sub_813EB10(8)); - sub_813EA98(8); - sub_813EA98(0); + ClearWindowTilemap(GetVariableWindowId(8)); + DestroyVariableWindow(8); + DestroyVariableWindow(0); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D684(); - sub_813DF54(taskId); + DestroyScrollIndicatorArrows(); + Task_AskTossMultiple(taskId); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(8); - sub_813EA98(0); + DestroyVariableWindow(8); + DestroyVariableWindow(0); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(data[0], 1); - sub_813D684(); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + DestroyScrollIndicatorArrows(); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E0DC(u8 taskId) +static void Task_TossYes(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(7); - sub_813D39C(data[1], gStringVar1); + DestroyVariableWindow(7); + CopySelectedListMenuItemName(data[1], gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_84163F4); - sub_813E9A0(sub_813EA08(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); - gTasks[taskId].func = sub_813E164; + StringExpandPlaceholders(gStringVar4, gText_ThrewAwayStrVar2StrVar1s); + BerryPouchPrint(GetOrCreateVariableWindow(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + gTasks[taskId].func = Task_WaitButtonThenTossBerries; } -void sub_813E164(u8 taskId) +static void Task_WaitButtonThenTossBerries(u8 taskId) { s16 * data = gTasks[taskId].data; if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); RemoveBagItem(gSpecialVar_ItemId, data[8]); - sub_813EA98(9); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + DestroyVariableWindow(9); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E200(u8 taskId) +static void Task_BerryPouch_Give_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); if (CalculatePlayerPartyCount() == 0) - sub_813E274(taskId); + Task_Give_PrintThereIsNoPokemon(taskId); else { - gUnknown_203F36C->unk_000 = sub_8126EDC; + sResources->exitCallback = sub_8126EDC; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } -void sub_813E274(u8 taskId) +static void Task_Give_PrintThereIsNoPokemon(u8 taskId) { - DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, sub_813E290); + DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, Task_WaitButtonBeforeDialogueWindowDestruction); } -void sub_813E290(u8 taskId) +static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId) { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_813E2B8(taskId); + Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId); } } -void sub_813E2B8(u8 taskId) +void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EACC(5); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + TryDestroyVariableWindow(5); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E320(u8 taskId) +static void Task_BerryPouch_Exit_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(gTasks[taskId].data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(gTasks[taskId].data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E37C(u8 taskId) +static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]); - if (!sub_80BF6A8(itemId)) + if (!itemid_link_can_give_berry(itemId)) { CopyItemName(itemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_8416374); - DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E290); + StringExpandPlaceholders(gStringVar4, gText_TheStrVar1CantBeHeldHere); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_WaitButtonBeforeDialogueWindowDestruction); } else { - gUnknown_203F36C->unk_000 = c2_8123744; + sResources->exitCallback = c2_8123744; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } -void sub_813E3FC(u8 taskId) +static void Task_ContextMenu_FromPokemonPC(u8 taskId) { - gUnknown_203F36C->unk_000 = sub_808CE60; + sResources->exitCallback = sub_808CE60; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } -void sub_813E428(u8 taskId) +static void Task_ContextMenu_Sell_0(u8 taskId) { s16 * data = gTasks[taskId].data; if (itemid_get_market_price(gSpecialVar_ItemId) == 0) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E2B8); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu); } else { data[8] = 1; if (data[2] == 1) { - sub_813EBD4(); - sub_813E4E4(taskId); + PrintMoneyInWin2(); + Task_AskSellMultiple(taskId); } else { @@ -1286,89 +1285,89 @@ void sub_813E428(u8 taskId) data[2] = 99; CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E5B8); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_Sell_PrintSelectMultipleUI); } } } -void sub_813E4E4(u8 taskId) +static void Task_AskSellMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E554); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_SellMultiple_CreateYesNoMenu); } -void sub_813E554(u8 taskId) +static void Task_SellMultiple_CreateYesNoMenu(u8 taskId) { - sub_813EBA8(taskId, &gUnknown_8464374); + CreateYesNoMenuWin4(taskId, &sYesNoFuncs_Sell); } -void sub_813E568(u8 taskId) +static void Task_SellNo(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(2); - sub_813EACC(5); + DestroyVariableWindow(2); + TryDestroyVariableWindow(5); PutWindowTilemap(2); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E5B8(u8 taskId) +static void Task_Sell_PrintSelectMultipleUI(u8 taskId) { s16 * data = gTasks[taskId].data; - u8 windowId = sub_813EA08(1); + u8 windowId = GetOrCreateVariableWindow(1); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1); - sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); - sub_813EBD4(); - sub_813D64C(); - gTasks[taskId].func = sub_813E690; + BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1); + SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + PrintMoneyInWin2(); + CreateScrollIndicatorArrows_SellQuantity(); + gTasks[taskId].func = Task_Sell_SelectMultiple; } -void sub_813E668(s32 price) +static void SellMultiple_UpdateSellPriceDisplay(s32 price) { - PrintMoneyAmount(sub_813EB10(1), 56, 10, price, 0); + PrintMoneyAmount(GetVariableWindowId(1), 56, 10, price, 0); } -void sub_813E690(u8 taskId) +static void Task_Sell_SelectMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) { - sub_813D9F8(1, data[8], 2); - sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + PrintxQuantityOnWindow(1, data[8], 2); + SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(1); + DestroyVariableWindow(1); PutWindowTilemap(0); ScheduleBgCopyTilemapToVram(0); - sub_813D684(); - sub_813E4E4(taskId); + DestroyScrollIndicatorArrows(); + Task_AskSellMultiple(taskId); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(1); - sub_813EA98(2); - sub_813EACC(5); + DestroyVariableWindow(1); + DestroyVariableWindow(2); + TryDestroyVariableWindow(5); PutWindowTilemap(2); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D684(); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + DestroyScrollIndicatorArrows(); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E768(u8 taskId) +static void Task_SellYes(u8 taskId) { s16 * data = gTasks[taskId].data; PutWindowTilemap(0); @@ -1376,41 +1375,41 @@ void sub_813E768(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen); - DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E7F0); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_SellBerries_PlaySfxAndRemoveBerries); } -void sub_813E7F0(u8 taskId) +static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId) { s16 * data = gTasks[taskId].data; PlaySE(SE_CASHIER); RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); - sub_813D4B0(data[0], 2); - PrintMoneyAmountInMoneyBox(sub_813EB10(2), GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_813E8D4; + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); + BerryPouchSetArrowCursorFromListMenu(data[0], 2); + PrintMoneyAmountInMoneyBox(GetVariableWindowId(2), GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = Task_SellBerries_WaitButton; } -void sub_813E8D4(u8 taskId) +static void Task_SellBerries_WaitButton(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(2); + DestroyVariableWindow(2); PutWindowTilemap(2); - sub_813E2B8(taskId); + Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId); } } -void sub_813E910(void) +static void BerryPouchInitWindows(void) { u8 i; - InitWindows(gUnknown_84643B8); + InitWindows(sWindowTemplates_Main); DeactivateAllTextPrinters(); TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0); TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0); @@ -1424,102 +1423,102 @@ void sub_813E910(void) ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); for (i = 0; i < 14; i++) - gUnknown_203F38C[i] = 0xFF; + sVariableWindowIds[i] = 0xFF; } -void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void BerryPouchPrint(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_8464448[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str); } -u8 sub_813EA08(u8 winIdx) +static u8 GetOrCreateVariableWindow(u8 winIdx) { - u8 retval = gUnknown_203F38C[winIdx]; + u8 retval = sVariableWindowIds[winIdx]; if (retval == 0xFF) { - gUnknown_203F38C[winIdx] = AddWindow(&gUnknown_84643D8[winIdx]); + sVariableWindowIds[winIdx] = AddWindow(&sWindowTemplates_Variable[winIdx]); if (winIdx == 2 || winIdx == 6 || winIdx == 7 || winIdx == 8 || winIdx == 9) - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x00A, 0xC); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x00A, 0xC); else - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE); ScheduleBgCopyTilemapToVram(2); - retval = gUnknown_203F38C[winIdx]; + retval = sVariableWindowIds[winIdx]; } return retval; } -void sub_813EA78(u8 winIdx) +static void VariableWindowSetAltFrameTileAndPalette(u8 winIdx) { - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE); } -void sub_813EA98(u8 winIdx) +static void DestroyVariableWindow(u8 winIdx) { - ClearStdWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203F38C[winIdx]); - RemoveWindow(gUnknown_203F38C[winIdx]); + ClearStdWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE); + ClearWindowTilemap(sVariableWindowIds[winIdx]); + RemoveWindow(sVariableWindowIds[winIdx]); ScheduleBgCopyTilemapToVram(2); - gUnknown_203F38C[winIdx] = 0xFF; + sVariableWindowIds[winIdx] = 0xFF; } -void sub_813EACC(u8 winIdx) +static void TryDestroyVariableWindow(u8 winIdx) { - if (gUnknown_203F38C[winIdx] != 0xFF) + if (sVariableWindowIds[winIdx] != 0xFF) { - ClearDialogWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203F38C[winIdx]); - RemoveWindow(gUnknown_203F38C[winIdx]); + ClearDialogWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE); + ClearWindowTilemap(sVariableWindowIds[winIdx]); + RemoveWindow(sVariableWindowIds[winIdx]); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - gUnknown_203F38C[winIdx] = 0xFF; + sVariableWindowIds[winIdx] = 0xFF; } } -u8 sub_813EB10(u8 winIdx) +static u8 GetVariableWindowId(u8 winIdx) { - return gUnknown_203F38C[winIdx]; + return sVariableWindowIds[winIdx]; } void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc) { - if (gUnknown_203F38C[5] == 0xFF) - gUnknown_203F38C[5] = AddWindow(&gUnknown_84643D8[5]); - DisplayMessageAndContinueTask(taskId, gUnknown_203F38C[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc); + if (sVariableWindowIds[5] == 0xFF) + sVariableWindowIds[5] = AddWindow(&sWindowTemplates_Variable[5]); + DisplayMessageAndContinueTask(taskId, sVariableWindowIds[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc); ScheduleBgCopyTilemapToVram(2); } -void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs) { - CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[3], 2, 0, 2, 0x001, 0xE, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[3], 2, 0, 2, 0x001, 0xE, ptrs); } -void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs) { - CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[4], 2, 0, 2, 0x001, 0xE, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[4], 2, 0, 2, 0x001, 0xE, ptrs); } -void sub_813EBD4(void) +static void PrintMoneyInWin2(void) { - PrintMoneyAmountInMoneyBoxWithBorder(sub_813EA08(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money)); + PrintMoneyAmountInMoneyBoxWithBorder(GetOrCreateVariableWindow(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money)); } -void sub_813EC08(void) +static void CreateBerryPouchSprite(void) { - gUnknown_203F39C = CreateSprite(&gUnknown_84644B8, 40, 76, 0); + sBerryPouchSpriteId = CreateSprite(&sSpriteTemplate_BerryPouch, 40, 76, 0); } -void sub_813EC28(void) +static void StartBerryPouchSpriteWobbleAnim(void) { - struct Sprite * sprite = &gSprites[gUnknown_203F39C]; + struct Sprite * sprite = &gSprites[sBerryPouchSpriteId]; if (sprite->affineAnimEnded) { StartSpriteAffineAnim(sprite, 1); - sprite->callback = sub_813EC64; + sprite->callback = SpriteCB_BerryPouchWaitWobbleAnim; } } -void sub_813EC64(struct Sprite * sprite) +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite) { if (sprite->affineAnimEnded) { diff --git a/src/item_use.c b/src/item_use.c index 3653a1699..5fa9390c1 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId) void InitBerryPouchFromBag(void) { - InitBerryPouch(0, ReturnToBagFromKeyItem, 0); + InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0); } void Task_InitBerryPouchFromField(u8 taskId) @@ -444,7 +444,7 @@ void Task_InitBerryPouchFromField(u8 taskId) { CleanupOverworldWindowsAndTilemaps(); sub_80A1184(); - InitBerryPouch(0, CB2_ReturnToField, 1); + InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_ReturnToField, 1); DestroyTask(taskId); } } @@ -457,7 +457,7 @@ void BattleUseFunc_BerryPouch(u8 taskId) void InitBerryPouchFromBattle(void) { - InitBerryPouch(4, sub_8107ECC, 0); + InitBerryPouch(BERRYPOUCH_FROMBATTLE, sub_8107ECC, 0); } void FieldUseFunc_TeachyTv(u8 taskId) @@ -852,7 +852,7 @@ void FieldUseFunc_OakStopsYou(u8 taskId) if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) { StringExpandPlaceholders(gStringVar4, gUnknown_8416425); - DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, sub_813E2B8); + DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu); } else sub_80A1110(taskId, gTasks[taskId].data[3]); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index fdcb9a56e..06e7bb08b 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -95,7 +95,7 @@ u8 sub_80BF66C(void) return 0; } -bool8 sub_80BF6A8(u16 itemId) +bool8 itemid_link_can_give_berry(u16 itemId) { if (itemId != ITEM_ENIGMA_BERRY) return TRUE; From 07064bd58603de0f0470bab373196a40fe5d929c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 21:04:25 -0400 Subject: [PATCH 067/100] Name extern berry pouch gfx --- data/graphics.s | 8 ++++---- include/graphics.h | 8 ++++---- src/berry_pouch.c | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/data/graphics.s b/data/graphics.s index e03266f85..9c5d1c3f9 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13991,19 +13991,19 @@ gItemPcTilemap:: @ 8E85458 gBerryPouchSpriteTiles:: @ 8E8560C .incbin "graphics/berry_pouch/unk_8E8560C.4bpp.lz" -gUnknown_8E859D0:: @ 8E859D0 +gBerryPouchBgGfx:: @ 8E859D0 .incbin "graphics/berry_pouch/unk_8E859D0.4bpp.lz" -gUnknown_8E85BA4:: @ 8E85BA4 +gBerryPouchBgPals:: @ 8E85BA4 .incbin "graphics/berry_pouch/unk_8E85BA4.gbapal.lz" -gUnknown_8E85BF4:: @ 8E85BF4 +gBerryPouchBgPal0FemaleOverride:: @ 8E85BF4 .incbin "graphics/berry_pouch/unk_8E85BF4.gbapal.lz" gBerryPouchSpritePalette:: @ 8E85C1C .incbin "graphics/berry_pouch/unk_8E85C1C.gbapal.lz" -gUnknown_8E85C44:: @ 8E85C44 +gBerryPouchBg1Tilemap:: @ 8E85C44 .incbin "graphics/berry_pouch/unk_8E85C44.bin.lz" gUnknown_8E85DC8:: @ 8E85DC8 diff --git a/include/graphics.h b/include/graphics.h index 5c6f201db..a76607f40 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1000,10 +1000,10 @@ extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch extern const u32 gBerryPouchSpriteTiles[]; -extern const u8 gUnknown_8E859D0[]; -extern const u8 gUnknown_8E85BA4[]; -extern const u8 gUnknown_8E85BF4[]; +extern const u8 gBerryPouchBgGfx[]; +extern const u8 gBerryPouchBgPals[]; +extern const u8 gBerryPouchBgPal0FemaleOverride[]; extern const u32 gBerryPouchSpritePalette[]; -extern const u8 gUnknown_8E85C44[]; +extern const u8 gBerryPouchBg1Tilemap[]; #endif //GUARD_GRAPHICS_H diff --git a/src/berry_pouch.c b/src/berry_pouch.c index abf2484f6..9be2537b9 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -607,20 +607,20 @@ static bool8 BerryPouchLoadGfx(void) { case 0: ResetTempTileDataBuffers(); - DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gBerryPouchBgGfx, 0, 0, 0); sResources->data[0]++; break; case 1: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - LZDecompressWram(gUnknown_8E85C44, sResources->bg1TilemapBuffer); + LZDecompressWram(gBerryPouchBg1Tilemap, sResources->bg1TilemapBuffer); sResources->data[0]++; } break; case 2: - LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60); + LoadCompressedPalette(gBerryPouchBgPals, 0, 0x60); if (gSaveBlock2Ptr->playerGender != MALE) - LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20); + LoadCompressedPalette(gBerryPouchBgPal0FemaleOverride, 0, 0x20); sResources->data[0]++; break; case 3: From 32f2bb3ddaf1107f8e6bb02c0acadc96ecc55772 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 1 Oct 2019 19:44:10 -0400 Subject: [PATCH 068/100] Address review comments --- src/berry_pouch.c | 72 +++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 9be2537b9..525249514 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -64,8 +64,8 @@ enum static EWRAM_DATA struct BerryPouchStruct_203F36C *sResources = NULL; static EWRAM_DATA struct BerryPouchStruct_203F370 sStaticCnt = {}; static EWRAM_DATA struct ListMenuItem *sListMenuItems = NULL; -static EWRAM_DATA u8 *sListMenuStrbuf = NULL; -static EWRAM_DATA const u8 *sContextMenuOptions = NULL; +static EWRAM_DATA u8 * sListMenuStrbuf = NULL; +static EWRAM_DATA const u8 * sContextMenuOptions = NULL; static EWRAM_DATA u8 sContextMenuNumOptions = 0; static ALIGNED(4) EWRAM_DATA u8 sVariableWindowIds[14] = {}; static ALIGNED(4) EWRAM_DATA u8 sBerryPouchSpriteId = 0; @@ -91,22 +91,22 @@ static void BerryPouch_DestroyResources(void); static void Task_BerryPouchFadeToExitCallback(u8 taskId); static void SortAndCountBerries(void); static void Task_BerryPouchMain(u8 taskId); -static void Task_NormalContextMenu_0(u8 taskId); -static void Task_NormalContextMenu_1(u8 taskId); -static void Task_BerryPouch_Use_0(u8 taskId); -static void Task_BerryPouch_Toss_0(u8 taskId); +static void Task_NormalContextMenu(u8 taskId); +static void Task_NormalContextMenu_HandleInput(u8 taskId); +static void Task_BerryPouch_Use(u8 taskId); +static void Task_BerryPouch_Toss(u8 taskId); static void Task_AskTossMultiple(u8 taskId); static void Task_TossNo(u8 taskId); static void Task_Toss_SelectMultiple(u8 taskId); static void Task_TossYes(u8 taskId); static void Task_WaitButtonThenTossBerries(u8 taskId); -static void Task_BerryPouch_Give_0(u8 taskId); +static void Task_BerryPouch_Give(u8 taskId); static void Task_Give_PrintThereIsNoPokemon(u8 taskId); static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId); -static void Task_BerryPouch_Exit_0(u8 taskId); -static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId); +static void Task_BerryPouch_Exit(u8 taskId); +static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId); static void Task_ContextMenu_FromPokemonPC(u8 taskId); -static void Task_ContextMenu_Sell_0(u8 taskId); +static void Task_ContextMenu_Sell(u8 taskId); static void Task_AskSellMultiple(u8 taskId); static void Task_SellMultiple_CreateYesNoMenu(u8 taskId); static void Task_SellNo(u8 taskId); @@ -122,12 +122,12 @@ static u8 GetOrCreateVariableWindow(u8 winIdx); static void DestroyVariableWindow(u8 winIdx); static void TryDestroyVariableWindow(u8 winIdx); static u8 GetVariableWindowId(u8 winIdx); -static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs); -static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs); +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable *ptrs); +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable *ptrs); static void PrintMoneyInWin2(void); static void CreateBerryPouchSprite(void); static void StartBerryPouchSpriteWobbleAnim(void); -static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite); +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite *sprite); static const struct BgTemplate sBgTemplates[] = { { @@ -158,11 +158,11 @@ static const struct BgTemplate sBgTemplates[] = { }; static const TaskFunc sBerryPouchContextMenuTasks[] = { - Task_NormalContextMenu_0, - Task_ContextMenu_FromPartyGiveMenu_0, - Task_ContextMenu_Sell_0, + Task_NormalContextMenu, + Task_ContextMenu_FromPartyGiveMenu, + Task_ContextMenu_Sell, Task_ContextMenu_FromPokemonPC, - Task_NormalContextMenu_0 + Task_NormalContextMenu }; static const struct YesNoFuncTable sYesNoFuncs_Toss = { @@ -176,10 +176,10 @@ static const struct YesNoFuncTable sYesNoFuncs_Sell = { }; static const struct MenuAction sContextMenuActions[] = { - {gOtherText_Use, Task_BerryPouch_Use_0}, - {gOtherText_Toss, Task_BerryPouch_Toss_0}, - {gOtherText_Give, Task_BerryPouch_Give_0}, - {gOtherText_Exit, Task_BerryPouch_Exit_0}, + {gOtherText_Use, Task_BerryPouch_Use}, + {gOtherText_Toss, Task_BerryPouch_Toss}, + {gOtherText_Give, Task_BerryPouch_Give}, + {gOtherText_Exit, Task_BerryPouch_Exit}, {gString_Dummy, NULL} }; @@ -695,7 +695,7 @@ static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId) StringCopy(dest, gStringVar4); } -static void CopySelectedListMenuItemName(s16 itemIdx, u8 *dest) +static void CopySelectedListMenuItemName(s16 itemIdx, u8 * dest) { StringCopy(dest, &sListMenuStrbuf[itemIdx * 27]); } @@ -754,7 +754,7 @@ static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx) static void PrintSelectedBerryDescription(s32 itemIdx) { - const u8 *str; + const u8 * str; if (itemIdx != sResources->listMenuNumItems) str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx)); else @@ -1031,13 +1031,13 @@ static void CreateNormalContextMenu(u8 taskId) BerryPouchPrint(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); } -static void Task_NormalContextMenu_0(u8 taskId) +static void Task_NormalContextMenu(u8 taskId) { CreateNormalContextMenu(taskId); - gTasks[taskId].func = Task_NormalContextMenu_1; + gTasks[taskId].func = Task_NormalContextMenu_HandleInput; } -static void Task_NormalContextMenu_1(u8 taskId) +static void Task_NormalContextMenu_HandleInput(u8 taskId) { s8 input; if (sub_80BF72C() != TRUE) @@ -1059,7 +1059,7 @@ static void Task_NormalContextMenu_1(u8 taskId) } } -static void Task_BerryPouch_Use_0(u8 taskId) +static void Task_BerryPouch_Use(u8 taskId) { DestroyVariableWindow(sContextMenuNumOptions + 9); DestroyVariableWindow(6); @@ -1080,7 +1080,7 @@ static void Task_BerryPouch_Use_0(u8 taskId) ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } -static void Task_BerryPouch_Toss_0(u8 taskId) +static void Task_BerryPouch_Toss(u8 taskId) { s16 * data = gTasks[taskId].data; ClearWindowTilemap(GetVariableWindowId(sContextMenuNumOptions + 9)); @@ -1182,7 +1182,7 @@ static void Task_WaitButtonThenTossBerries(u8 taskId) } } -static void Task_BerryPouch_Give_0(u8 taskId) +static void Task_BerryPouch_Give(u8 taskId) { DestroyVariableWindow(sContextMenuNumOptions + 9); DestroyVariableWindow(6); @@ -1227,7 +1227,7 @@ void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId) Task_CleanUpAndReturnToMain(taskId); } -static void Task_BerryPouch_Exit_0(u8 taskId) +static void Task_BerryPouch_Exit(u8 taskId) { DestroyVariableWindow(sContextMenuNumOptions + 9); DestroyVariableWindow(6); @@ -1239,7 +1239,7 @@ static void Task_BerryPouch_Exit_0(u8 taskId) Task_CleanUpAndReturnToMain(taskId); } -static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId) +static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]); @@ -1262,7 +1262,7 @@ static void Task_ContextMenu_FromPokemonPC(u8 taskId) gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } -static void Task_ContextMenu_Sell_0(u8 taskId) +static void Task_ContextMenu_Sell(u8 taskId) { s16 * data = gTasks[taskId].data; if (itemid_get_market_price(gSpecialVar_ItemId) == 0) @@ -1488,12 +1488,12 @@ void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFu ScheduleBgCopyTilemapToVram(2); } -static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable *ptrs) { CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[3], 2, 0, 2, 0x001, 0xE, ptrs); } -static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable *ptrs) { CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[4], 2, 0, 2, 0x001, 0xE, ptrs); } @@ -1510,7 +1510,7 @@ static void CreateBerryPouchSprite(void) static void StartBerryPouchSpriteWobbleAnim(void) { - struct Sprite * sprite = &gSprites[sBerryPouchSpriteId]; + struct Sprite *sprite = &gSprites[sBerryPouchSpriteId]; if (sprite->affineAnimEnded) { StartSpriteAffineAnim(sprite, 1); @@ -1518,7 +1518,7 @@ static void StartBerryPouchSpriteWobbleAnim(void) } } -static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite) +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite *sprite) { if (sprite->affineAnimEnded) { From ed2e58282155ad0a754449dcdc41fbd52855444c Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 3 Oct 2019 07:32:10 +0800 Subject: [PATCH 069/100] NUM_PALETTE_STRUCTS macro --- src/palette.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/palette.c b/src/palette.c index 458b90071..6609c9baa 100644 --- a/src/palette.c +++ b/src/palette.c @@ -12,6 +12,8 @@ enum HARDWARE_FADE, }; +#define NUM_PALETTE_STRUCTS 16 + // unused palette struct struct PaletteStructTemplate { @@ -53,7 +55,7 @@ static void sub_80718B8(u8 taskId); ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; -EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0}; +static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; @@ -198,7 +200,7 @@ static void sub_8070718(u8 a1, u32 *a2) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) { struct PaletteStruct *palstruct = &sPaletteStructs[i]; @@ -387,7 +389,7 @@ static u8 GetPaletteNumByUid(u16 uid) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) if (sPaletteStructs[i].base->uid == uid) return i; return 16; @@ -502,6 +504,7 @@ void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b) for (i = 0; i < 16; ++i) { struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[paletteOffset + i]; + data->r += r; data->g += g; data->b += b; @@ -625,7 +628,6 @@ static u8 UpdateFastPaletteFade(void) r = faded->r + 2; g = faded->g + 2; b = faded->b + 2; - if (r > r0) r = r0; if (g > g0) @@ -946,7 +948,7 @@ void sub_8071898(void) while (TRUE) { taskId = FindTaskIdByFunc(sub_80718B8); - if (taskId == 0xFF) + if (taskId == TASK_NONE) break; DestroyTask(taskId); } From afd5f1f52f7a2b74e9850892aef118292a45df8e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 2 Oct 2019 21:26:01 -0400 Subject: [PATCH 070/100] itemfinder through sub_813F004 --- asm/itemfinder.s | 521 +------------------------------------- data/strings.s | 6 +- include/field_specials.h | 1 + include/global.fieldmap.h | 36 ++- include/strings.h | 5 + ld_script.txt | 2 + src/itemfinder.c | 204 +++++++++++++++ 7 files changed, 241 insertions(+), 534 deletions(-) create mode 100644 src/itemfinder.c diff --git a/asm/itemfinder.s b/asm/itemfinder.s index 8a2dec9de..fbf0a8578 100644 --- a/asm/itemfinder.s +++ b/asm/itemfinder.s @@ -5,519 +5,6 @@ .text - thumb_func_start sub_813EC8C -sub_813EC8C: @ 813EC8C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r2, 0 - ldr r7, _0813ECE0 @ =gMapHeader - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r3, r0, 3 - ldr r5, _0813ECE4 @ =gTasks+0x8 - adds r6, r1, 0 - movs r1, 0 -_0813ECA2: - lsls r0, r2, 1 - adds r0, r3 - adds r0, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _0813ECA2 - ldr r0, [r7, 0x4] - adds r1, r4, 0 - bl sub_813EE14 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813ECFC - bl sub_813F3EC - ldr r0, _0813ECE8 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x14 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _0813ECF0 - ldr r0, _0813ECEC @ =sub_813EDB0 - str r0, [r1] - b _0813ED08 - .align 2, 0 -_0813ECE0: .4byte gMapHeader -_0813ECE4: .4byte gTasks+0x8 -_0813ECE8: .4byte gTasks -_0813ECEC: .4byte sub_813EDB0 -_0813ECF0: - ldr r0, _0813ECF8 @ =sub_813ED3C - str r0, [r1] - b _0813ED08 - .align 2, 0 -_0813ECF8: .4byte sub_813ED3C -_0813ECFC: - ldr r2, _0813ED10 @ =gUnknown_8416513 - ldr r3, _0813ED14 @ =sub_813ED18 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField -_0813ED08: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813ED10: .4byte gUnknown_8416513 -_0813ED14: .4byte sub_813ED18 - thumb_func_end sub_813EC8C - - thumb_func_start sub_813ED18 -sub_813ED18: @ 813ED18 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x1 - bl ClearDialogWindowAndFrame - bl sub_80696C0 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813ED18 - - thumb_func_start sub_813ED3C -sub_813ED3C: @ 813ED3C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _0813ED80 @ =gTasks+0x8 - adds r4, r6, r7 - movs r1, 0x6 - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _0813EDA2 - movs r2, 0 - ldrsh r0, [r4, r2] - movs r2, 0x2 - ldrsh r1, [r4, r2] - bl GetPlayerDirectionTowardsHiddenItem - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0813ED88 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0813ED84 @ =sub_813F364 - str r1, [r0] - b _0813EDA8 - .align 2, 0 -_0813ED80: .4byte gTasks+0x8 -_0813ED84: .4byte sub_813F364 -_0813ED88: - movs r0, 0x41 - bl PlaySE - ldrb r0, [r4, 0xA] - adds r1, r5, 0 - bl sub_813F40C - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] -_0813EDA2: - ldrh r0, [r4, 0x6] - adds r0, 0x1 - strh r0, [r4, 0x6] -_0813EDA8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813ED3C - - thumb_func_start sub_813EDB0 -sub_813EDB0: @ 813EDB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, _0813EDE4 @ =gTasks+0x8 - adds r4, r5, r6 - movs r1, 0x6 - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _0813EE08 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0813EDEC - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _0813EDE8 @ =sub_813F3A8 - str r1, [r0] - b _0813EE0E - .align 2, 0 -_0813EDE4: .4byte gTasks+0x8 -_0813EDE8: .4byte sub_813F3A8 -_0813EDEC: - movs r0, 0x41 - bl PlaySE - bl sub_813F5AC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] -_0813EE08: - ldrh r0, [r4, 0x6] - adds r0, 0x1 - strh r0, [r4, 0x6] -_0813EE0E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813EDB0 - - thumb_func_start sub_813EE14 -sub_813EE14: @ 813EE14 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - ldr r1, _0813EEC8 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - movs r3, 0 - mov r0, r8 - ldrb r0, [r0, 0x3] - cmp r3, r0 - bge _0813EF04 -_0813EE4E: - lsls r3, 16 - asrs r1, r3, 16 - mov r0, r8 - ldr r2, [r0, 0x10] - lsls r0, r1, 1 - adds r0, r1 - lsls r7, r0, 2 - adds r1, r7, r2 - ldrb r0, [r1, 0x5] - mov r10, r3 - cmp r0, 0x7 - bne _0813EEF2 - ldr r0, [r1, 0x8] - movs r1, 0x1 - bl sub_80CC44C - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0813EEF2 - mov r1, r8 - ldr r2, [r1, 0x10] - adds r2, r7, r2 - ldrh r0, [r2] - adds r0, 0x7 - mov r1, sp - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r2, 0x2] - adds r0, 0x7 - mov r3, sp - ldrh r1, [r3, 0x2] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - ldr r0, [r2, 0x8] - movs r1, 0x3 - bl sub_80CC44C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _0813EECC - cmp r5, 0 - bne _0813EEF2 - cmp r4, 0 - bne _0813EEF2 - mov r1, r8 - ldr r0, [r1, 0x10] - adds r0, r7, r0 - ldr r1, [r0, 0x8] - mov r0, r9 - bl sub_813EF40 - b _0813EF2E - .align 2, 0 -_0813EEC8: .4byte gTasks -_0813EECC: - lsls r0, r5, 16 - asrs r1, r0, 16 - movs r2, 0xE0 - lsls r2, 11 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xE - bhi _0813EEF2 - lsls r0, r6, 16 - asrs r2, r0, 16 - movs r3, 0x5 - negs r3, r3 - cmp r2, r3 - blt _0813EEF2 - cmp r2, 0x5 - bgt _0813EEF2 - mov r0, r9 - bl sub_813F220 -_0813EEF2: - movs r0, 0x80 - lsls r0, 9 - add r0, r10 - lsrs r3, r0, 16 - asrs r0, 16 - mov r1, r8 - ldrb r1, [r1, 0x3] - cmp r0, r1 - blt _0813EE4E -_0813EF04: - mov r0, r9 - bl sub_813F108 - ldr r0, _0813EF24 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x1 - beq _0813EF28 - movs r0, 0 - b _0813EF30 - .align 2, 0 -_0813EF24: .4byte gTasks -_0813EF28: - mov r0, r9 - bl sub_813EF9C -_0813EF2E: - movs r0, 0x1 -_0813EF30: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_813EE14 - - thumb_func_start sub_813EF40 -sub_813EF40: @ 813EF40 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0813EF8C @ =gTasks+0x8 - adds r4, r0 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80CC44C - ldr r1, _0813EF90 @ =gSpecialVar_0x8004 - strh r0, [r1] - adds r0, r5, 0 - movs r1, 0 - bl sub_80CC44C - ldr r1, _0813EF94 @ =gSpecialVar_0x8005 - strh r0, [r1] - ldr r0, _0813EF98 @ =gSpecialVar_0x8006 - movs r5, 0x1 - strh r5, [r0] - ldrh r1, [r1] - movs r0, 0 - bl TV_PrintIntToStringVar - strh r5, [r4, 0x4] - movs r0, 0 - strh r0, [r4] - strh r0, [r4, 0x2] - movs r0, 0x3 - strh r0, [r4, 0x8] - strh r5, [r4, 0xC] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813EF8C: .4byte gTasks+0x8 -_0813EF90: .4byte gSpecialVar_0x8004 -_0813EF94: .4byte gSpecialVar_0x8005 -_0813EF98: .4byte gSpecialVar_0x8006 - thumb_func_end sub_813EF40 - - thumb_func_start sub_813EF9C -sub_813EF9C: @ 813EF9C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813EFEC @ =gTasks+0x8 - adds r1, r0 - ldrh r3, [r1, 0x2] - ldrh r2, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _0813EFBC - cmp r3, 0 - beq _0813EFF8 -_0813EFBC: - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _0813EFCA - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_0813EFCA: - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, 0 - bge _0813EFD8 - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 -_0813EFD8: - lsls r0, r2, 16 - asrs r2, r0, 16 - lsls r0, r3, 16 - asrs r0, 16 - cmp r2, r0 - ble _0813EFF0 - cmp r2, 0x3 - ble _0813EFF8 - movs r0, 0x2 - b _0813EFFA - .align 2, 0 -_0813EFEC: .4byte gTasks+0x8 -_0813EFF0: - cmp r0, 0x3 - ble _0813EFF8 - movs r0, 0x2 - b _0813EFFA -_0813EFF8: - movs r0, 0x4 -_0813EFFA: - strh r0, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813EF9C - - thumb_func_start sub_813F004 -sub_813F004: @ 813F004 - push {r4,r5,lr} - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldrb r5, [r0, 0x3] - ldr r4, [r0, 0x10] - movs r3, 0 - cmp r3, r5 - bge _0813F066 - lsls r0, r1, 16 - asrs r1, r0, 16 - lsls r0, r2, 16 - asrs r2, r0, 16 -_0813F020: - ldrb r0, [r4, 0x5] - cmp r0, 0x7 - bne _0813F05E - ldrh r0, [r4] - cmp r1, r0 - bne _0813F05E - ldrh r0, [r4, 0x2] - cmp r2, r0 - bne _0813F05E - ldr r0, [r4, 0x8] - movs r1, 0x1 - bl sub_80CC44C - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [r4, 0x8] - movs r1, 0x3 - bl sub_80CC44C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _0813F066 - adds r0, r5, 0 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0813F066 - movs r0, 0x1 - b _0813F068 -_0813F05E: - adds r4, 0xC - adds r3, 0x1 - cmp r3, r5 - blt _0813F020 -_0813F066: - movs r0, 0 -_0813F068: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_813F004 - thumb_func_start sub_813F070 sub_813F070: @ 813F070 push {r4-r6,lr} @@ -950,14 +437,14 @@ sub_813F364: @ 813F364 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _0813F378 @ =gUnknown_8416476 + ldr r2, _0813F378 @ =gText_ItemfinderResponding ldr r3, _0813F37C @ =sub_813F380 movs r1, 0x2 bl DisplayItemMessageOnField pop {r0} bx r0 .align 2, 0 -_0813F378: .4byte gUnknown_8416476 +_0813F378: .4byte gText_ItemfinderResponding _0813F37C: .4byte sub_813F380 thumb_func_end sub_813F364 @@ -985,14 +472,14 @@ sub_813F3A8: @ 813F3A8 push {lr} lsls r0, 24 lsrs r0, 24 - ldr r2, _0813F3BC @ =gUnknown_84164BE + ldr r2, _0813F3BC @ =gText_ItemfinderShakingWildly ldr r3, _0813F3C0 @ =sub_813F3C4 movs r1, 0x2 bl DisplayItemMessageOnField pop {r0} bx r0 .align 2, 0 -_0813F3BC: .4byte gUnknown_84164BE +_0813F3BC: .4byte gText_ItemfinderShakingWildly _0813F3C0: .4byte sub_813F3C4 thumb_func_end sub_813F3A8 diff --git a/data/strings.s b/data/strings.s index 05bd47c88..98b137425 100644 --- a/data/strings.s +++ b/data/strings.s @@ -582,13 +582,13 @@ gUnknown_8416425:: @ 8416425 gUnknown_8416451:: @ 8416451 .string "You can't dismount your BIKE here.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416476:: @ 8416476 +gText_ItemfinderResponding:: @ 8416476 .string "Huh?\nThe ITEMFINDER's responding!\pThere's an item buried around here!{PAUSE_UNTIL_PRESS}$" -gUnknown_84164BE:: @ 84164BE +gText_ItemfinderShakingWildly:: @ 84164BE .string "Oh!\nThe ITEMFINDER's shaking wildly!\pThere's an item buried underfoot!\p‥ ‥ ‥ ‥ ‥ ‥{PAUSE_UNTIL_PRESS}$" -gUnknown_8416513:: @ 8416513 +gText_NopeTheresNoResponse:: @ 8416513 .string "‥ ‥ ‥ ‥Nope!\nThere's no response.{PAUSE_UNTIL_PRESS}$" gUnknown_8416537:: @ 8416537 diff --git a/include/field_specials.h b/include/field_specials.h index 9a85a8b49..40adbdf9a 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -14,5 +14,6 @@ u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); bool8 sub_80CC7B4(void); +u16 sub_80CC44C(struct HiddenItemStruct hiddenItem, u8 attr); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 3623737ea..cc9510997 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -120,26 +120,34 @@ struct CoordEvent u8 *script; }; +struct HiddenItemStruct +{ + u32 field_00:16; + u32 hiddenItemId:8; // flag offset to determine flag lookup + u32 field_03_0:7; + u32 field_03_7:1; +}; + +union BgUnion +{ // carried over from diego's FR/LG work, seems to be the same struct + // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. + u8 *script; + + // hidden item type probably + struct HiddenItemStruct hiddenItem; + + // secret base type + u32 secretBaseId; + +}; + struct BgEvent { u16 x, y; u8 unk4; u8 kind; // 0x2 padding for the union beginning. - union { // carried over from diego's FR/LG work, seems to be the same struct - // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. - u8 *script; - - // hidden item type probably - struct { - u8 filler6[0x2]; - u16 hiddenItemId; // flag offset to determine flag lookup - } hiddenItem; - - // secret base type - u32 secretBaseId; - - } bgUnion; + union BgUnion bgUnion; }; struct MapEvents diff --git a/include/strings.h b/include/strings.h index b0221b8e9..9ddce6044 100644 --- a/include/strings.h +++ b/include/strings.h @@ -324,4 +324,9 @@ extern const u8 gText_ThrowAwayStrVar2OfThisItemQM[]; extern const u8 gText_BerryPouch[]; extern const u8 gText_TheBerryPouchWillBePutAway[]; +// itemfinder +extern const u8 gText_ItemfinderResponding[]; +extern const u8 gText_ItemfinderShakingWildly[]; +extern const u8 gText_NopeTheresNoResponse[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index a61f88d14..596ef05e2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -252,6 +252,7 @@ SECTIONS { asm/wild_pokemon_area.o(.text); src/dynamic_placeholder_text_util.o(.text); src/berry_pouch.o(.text); + src/itemfinder.o(.text); asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); src/slot_machine.o(.text); @@ -467,6 +468,7 @@ SECTIONS { data/wild_pokemon_area.o(.rodata); src/dynamic_placeholder_text_util.o(.rodata); src/berry_pouch.o(.rodata); + src/itemfinder.o(.rodata); data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); src/slot_machine.o(.rodata); diff --git a/src/itemfinder.c b/src/itemfinder.c new file mode 100644 index 000000000..20db9e5d2 --- /dev/null +++ b/src/itemfinder.c @@ -0,0 +1,204 @@ +#include "global.h" +#include "task.h" +#include "new_menu_helpers.h" +#include "strings.h" +#include "map_obj_lock.h" +#include "script.h" +#include "sound.h" +#include "event_data.h" +#include "field_player_avatar.h" +#include "field_specials.h" +#include "constants/songs.h" + +void sub_813ED18(u8 taskId); +void sub_813ED3C(u8 taskId); +void sub_813EDB0(u8 taskId); +bool8 sub_813EE14(struct MapEvents *events, u8 taskId); +void sub_813EF9C(u8 taskId); +void sub_813F108(u8 taskId); +void sub_813F220(u8 taskId, s16 dx, s16 dy); +u8 GetPlayerDirectionTowardsHiddenItem(s16 x, s16 y); +void sub_813F364(u8 taskId); +void sub_813F3A8(u8 taskId); +void sub_813F3EC(void); +void sub_813F40C(u8 palIdx, u8 direction); +u8 sub_813F5AC(void); +void sub_813EF40(u8 taskId, struct HiddenItemStruct hiddenItem); + +void sub_813EC8C(u8 taskId) +{ + u8 i; + for (i = 0; i < 16; i++) + gTasks[taskId].data[i] = 0; + if (sub_813EE14(gMapHeader.events, taskId) == TRUE) + { + sub_813F3EC(); + if (gTasks[taskId].data[6] == 1) + gTasks[taskId].func = sub_813EDB0; + else + gTasks[taskId].func = sub_813ED3C; + } + else + { + DisplayItemMessageOnField(taskId, 2, gText_NopeTheresNoResponse, sub_813ED18); + } +} + +void sub_813ED18(u8 taskId) +{ + ClearDialogWindowAndFrame(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +void sub_813ED3C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 direction; + if (data[3] % 25 == 0) + { + direction = GetPlayerDirectionTowardsHiddenItem(data[0], data[1]); + if (data[4] == 0) + { + gTasks[taskId].func = sub_813F364; + return; + } + else + { + PlaySE(SE_TOY_F); + sub_813F40C(data[5], direction); + data[5]++; + data[4]--; + } + } + data[3]++; +} + +void sub_813EDB0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (data[3] % 25 == 0) + { + if (data[4] == 0) + { + gTasks[taskId].func = sub_813F3A8; + return; + } + else + { + PlaySE(SE_TOY_F); + data[7] = sub_813F5AC(); + data[5]++; + data[4]--; + } + } + data[3]++; +} + +bool8 sub_813EE14(struct MapEvents *events, u8 taskId) +{ + s16 x, y, i, dx, dy; + PlayerGetDestCoords(&x, &y); + gTasks[taskId].data[2] = 0; + for (i = 0; i < events->bgEventCount; i++) + { + if (events->bgEvents[i].kind == 7 && !FlagGet(sub_80CC44C(events->bgEvents[i].bgUnion.hiddenItem, 1))) + { + dx = events->bgEvents[i].x + 7 - x; + dy = events->bgEvents[i].y + 7 - y; + if (sub_80CC44C(events->bgEvents[i].bgUnion.hiddenItem, 3) == TRUE) + { + if (dx == 0 && dy == 0) + { + sub_813EF40(taskId, events->bgEvents[i].bgUnion.hiddenItem); + return TRUE; + } + } + else if ( + dx >= -7 + && dx <= 7 + && dy >= -5 + && dy <= 5 + ) + { + sub_813F220(taskId, dx, dy); + } + } + } + sub_813F108(taskId); + if (gTasks[taskId].data[2] == 1) + { + sub_813EF9C(taskId); + return TRUE; + } + return FALSE; +} + +void sub_813EF40(u8 taskId, struct HiddenItemStruct hiddenItem) +{ + s16 * data = gTasks[taskId].data; + gSpecialVar_0x8004 = sub_80CC44C(hiddenItem, 1); + gSpecialVar_0x8005 = sub_80CC44C(hiddenItem, 0); + gSpecialVar_0x8006 = 1; + TV_PrintIntToStringVar(0, gSpecialVar_0x8005); + data[2] = 1; + data[0] = 0; + data[1] = 0; + data[4] = 3; + data[6] = 1; +} + +void sub_813EF9C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s16 r3 = data[1]; + s16 r2 = data[0]; + if (data[0] == 0 && data[1] == 0) + data[4] = 4; + else + { + if (data[0] < 0) + r2 = data[0] * -1; + if (data[1] < 0) + r3 = data[1] * -1; + if (r2 > r3) + { + if (r2 > 3) + data[4] = 2; + else + data[4] = 4; + } + else + { + if (r3 > 3) + data[4] = 2; + else + data[4] = 4; + } + } +} + +bool8 sub_813F004(struct MapEvents *events, s16 x, s16 y) +{ + s32 i; + u16 eventFlag; + s32 bgEventCount = events->bgEventCount; + struct BgEvent *bgEvents = events->bgEvents; + for (i = 0; i < bgEventCount; i++) + { + if ( + bgEvents[i].kind == 7 + && x == bgEvents[i].x + && y == bgEvents[i].y + ) + { + eventFlag = sub_80CC44C(bgEvents[i].bgUnion.hiddenItem, 1); + if (sub_80CC44C(bgEvents[i].bgUnion.hiddenItem, 3) != TRUE && !FlagGet(eventFlag)) + return TRUE; + else + return FALSE; + } + } + return FALSE; +} From 26d940dfeb48d8471db4a0cf2477aff68f681090 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 12:12:06 -0400 Subject: [PATCH 071/100] Finish itemfinder dism/decomp --- asm/field_control_avatar.s | 8 +- asm/field_specials.s | 6 +- asm/itemfinder.s | 834 ---------------------------------- baserom.ips | Bin 2012420 -> 2011595 bytes data/itemfinder.s | 11 - data/itemfinder/spr_tiles.png | Bin 0 -> 279 bytes data/map_event_scripts.inc | 2 +- include/event_scripts.h | 2 + include/field_specials.h | 2 +- include/fieldmap.h | 2 + include/itemfinder.h | 2 +- ld_script.txt | 2 - src/fieldmap.c | 2 +- src/item_use.c | 2 +- src/itemfinder.c | 611 +++++++++++++++++++++---- 15 files changed, 549 insertions(+), 937 deletions(-) delete mode 100644 asm/itemfinder.s delete mode 100644 data/itemfinder.s create mode 100644 data/itemfinder/spr_tiles.png diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 2eee6da2f..35d96eaa4 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1152,24 +1152,24 @@ _0806D174: _0806D17A: ldr r0, [r5, 0x8] movs r1, 0x3 - bl sub_80CC44C + bl GetHiddenItemAttr lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 beq _0806D164 ldr r0, [r5, 0x8] movs r1, 0 - bl sub_80CC44C + bl GetHiddenItemAttr ldr r1, _0806D1C4 @ =gSpecialVar_0x8005 strh r0, [r1] ldr r0, [r5, 0x8] movs r1, 0x1 - bl sub_80CC44C + bl GetHiddenItemAttr ldr r4, _0806D1C8 @ =gSpecialVar_0x8004 strh r0, [r4] ldr r0, [r5, 0x8] movs r1, 0x2 - bl sub_80CC44C + bl GetHiddenItemAttr ldr r1, _0806D1CC @ =gSpecialVar_0x8006 strh r0, [r1] ldrh r0, [r4] diff --git a/asm/field_specials.s b/asm/field_specials.s index 4c37e0638..eaac4a481 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3942,8 +3942,8 @@ _080CC444: .4byte gSpecialVar_0x8004 _080CC448: .4byte gSpecialVar_0x8006 thumb_func_end sub_80CC3CC - thumb_func_start sub_80CC44C -sub_80CC44C: @ 80CC44C + thumb_func_start GetHiddenItemAttr +GetHiddenItemAttr: @ 80CC44C push {lr} lsls r1, 24 lsrs r1, 24 @@ -3980,7 +3980,7 @@ _080CC484: _080CC486: pop {r1} bx r1 - thumb_func_end sub_80CC44C + thumb_func_end GetHiddenItemAttr thumb_func_start sub_80CC48C sub_80CC48C: @ 80CC48C diff --git a/asm/itemfinder.s b/asm/itemfinder.s deleted file mode 100644 index fbf0a8578..000000000 --- a/asm/itemfinder.s +++ /dev/null @@ -1,834 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813F070 -sub_813F070: @ 813F070 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl mapconnection_get_mapheader - adds r3, r0, 0 - ldrb r0, [r4] - cmp r0, 0x2 - beq _0813F098 - cmp r0, 0x2 - bgt _0813F08E - cmp r0, 0x1 - beq _0813F0AC - b _0813F0EC -_0813F08E: - cmp r0, 0x3 - beq _0813F0C4 - cmp r0, 0x4 - beq _0813F0CE - b _0813F0EC -_0813F098: - ldr r0, [r4, 0x4] - adds r0, 0x7 - subs r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, [r3] - ldr r0, [r0, 0x4] - subs r0, 0x7 - adds r0, r6 - b _0813F0E2 -_0813F0AC: - ldr r0, [r4, 0x4] - adds r0, 0x7 - subs r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0813F0C0 @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x4] - b _0813F0DE - .align 2, 0 -_0813F0C0: .4byte gMapHeader -_0813F0C4: - ldr r0, [r3] - ldr r0, [r0] - subs r0, 0x7 - adds r0, r5 - b _0813F0D8 -_0813F0CE: - ldr r0, _0813F0E8 @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x7 - subs r0, r5, r0 -_0813F0D8: - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, [r4, 0x4] -_0813F0DE: - adds r0, 0x7 - subs r0, r6, r0 -_0813F0E2: - lsls r0, 16 - lsrs r2, r0, 16 - b _0813F0F0 - .align 2, 0 -_0813F0E8: .4byte gMapHeader -_0813F0EC: - movs r0, 0 - b _0813F102 -_0813F0F0: - ldr r0, [r3, 0x4] - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - bl sub_813F004 - lsls r0, 24 - lsrs r0, 24 -_0813F102: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813F070 - - thumb_func_start sub_813F108 -sub_813F108: @ 813F108 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, _0813F21C @ =gMapHeader - ldr r1, [r0] - ldr r0, [r1] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - ldr r0, [r1, 0x4] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - mov r1, sp - movs r2, 0 - ldrsh r1, [r1, r2] - adds r1, 0x7 - cmp r0, r1 - bgt _0813F20C -_0813F156: - mov r5, sp - ldrh r0, [r5, 0x2] - subs r0, 0x5 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r2, r4, 16 - asrs r1, r2, 16 - movs r6, 0x2 - ldrsh r0, [r5, r6] - adds r0, 0x5 - lsls r3, 16 - mov r8, r3 - cmp r1, r0 - bgt _0813F1F6 - movs r0, 0x7 - str r0, [sp, 0x10] - mov r1, r8 - asrs r1, 16 - mov r9, r1 - mov r10, r0 -_0813F17E: - ldr r3, [sp, 0x10] - cmp r3, r9 - bgt _0813F1A0 - ldr r5, [sp, 0x8] - lsls r0, r5, 16 - asrs r0, 16 - cmp r9, r0 - bge _0813F1A0 - asrs r1, r2, 16 - cmp r10, r1 - bgt _0813F1A0 - ldr r6, [sp, 0xC] - lsls r0, r6, 16 - asrs r0, 16 - lsls r7, r4, 16 - cmp r1, r0 - blt _0813F1DE -_0813F1A0: - mov r0, r8 - asrs r5, r0, 16 - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_805973C - adds r7, r4, 0 - cmp r0, 0 - beq _0813F1DE - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_813F070 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813F1DE - mov r0, sp - ldrh r1, [r0] - subs r1, r5, r1 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r0, 0x2] - subs r2, r6, r2 - lsls r2, 16 - asrs r2, 16 - ldr r0, [sp, 0x4] - bl sub_813F220 -_0813F1DE: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r4, r0, 16 - lsls r2, r4, 16 - asrs r1, r2, 16 - mov r3, sp - movs r5, 0x2 - ldrsh r0, [r3, r5] - adds r0, 0x5 - cmp r1, r0 - ble _0813F17E -_0813F1F6: - movs r1, 0x80 - lsls r1, 9 - add r1, r8 - lsrs r3, r1, 16 - asrs r1, 16 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - adds r0, 0x7 - cmp r1, r0 - ble _0813F156 -_0813F20C: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813F21C: .4byte gMapHeader - thumb_func_end sub_813F108 - - thumb_func_start sub_813F220 -sub_813F220: @ 813F220 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r12, r2 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813F254 @ =gTasks+0x8 - adds r3, r1, r0 - movs r1, 0x4 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _0813F258 - strh r7, [r3] - mov r0, r12 - strh r0, [r3, 0x2] - movs r0, 0x1 - strh r0, [r3, 0x4] - b _0813F2E2 - .align 2, 0 -_0813F254: .4byte gTasks+0x8 -_0813F258: - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bge _0813F268 - negs r0, r0 - lsls r0, 16 - lsrs r4, r0, 16 - b _0813F26A -_0813F268: - ldrh r4, [r3] -_0813F26A: - movs r1, 0x2 - ldrsh r0, [r3, r1] - ldrh r1, [r3, 0x2] - mov r9, r1 - cmp r0, 0 - bge _0813F27E - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 - b _0813F280 -_0813F27E: - ldrh r2, [r3, 0x2] -_0813F280: - lsls r1, r7, 16 - asrs r0, r1, 16 - cmp r0, 0 - bge _0813F290 - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - b _0813F292 -_0813F290: - lsrs r6, r1, 16 -_0813F292: - mov r1, r12 - lsls r0, r1, 16 - asrs r1, r0, 16 - mov r8, r0 - cmp r1, 0 - bge _0813F2A4 - negs r0, r1 - lsls r0, 16 - b _0813F2A6 -_0813F2A4: - mov r0, r8 -_0813F2A6: - lsrs r5, r0, 16 - lsls r0, r4, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r2, r1, 16 - adds r4, r0, r2 - lsls r0, r6, 16 - asrs r0, 16 - lsls r1, r5, 16 - asrs r1, 16 - adds r0, r1 - cmp r4, r0 - ble _0813F2C8 - strh r7, [r3] - mov r1, r12 - strh r1, [r3, 0x2] - b _0813F2E2 -_0813F2C8: - cmp r4, r0 - bne _0813F2E2 - cmp r2, r1 - bgt _0813F2DC - cmp r2, r1 - bne _0813F2E2 - mov r1, r9 - lsls r0, r1, 16 - cmp r0, r8 - bge _0813F2E2 -_0813F2DC: - strh r7, [r3] - mov r0, r12 - strh r0, [r3, 0x2] -_0813F2E2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813F220 - - thumb_func_start GetPlayerDirectionTowardsHiddenItem -GetPlayerDirectionTowardsHiddenItem: @ 813F2F0 - push {r4,r5,lr} - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bne _0813F302 - cmp r1, 0 - beq _0813F35C -_0813F302: - lsls r0, r2, 16 - asrs r2, r0, 16 - adds r5, r0, 0 - cmp r2, 0 - bge _0813F314 - negs r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - b _0813F316 -_0813F314: - lsrs r4, r5, 16 -_0813F316: - lsls r0, r1, 16 - asrs r2, r0, 16 - adds r1, r0, 0 - cmp r2, 0 - bge _0813F328 - negs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - b _0813F32A -_0813F328: - lsrs r3, r1, 16 -_0813F32A: - lsls r0, r4, 16 - asrs r2, r0, 16 - lsls r0, r3, 16 - asrs r0, 16 - cmp r2, r0 - ble _0813F342 - cmp r5, 0 - bge _0813F33E - movs r0, 0x4 - b _0813F35E -_0813F33E: - movs r0, 0x2 - b _0813F35E -_0813F342: - cmp r2, r0 - bge _0813F34C - cmp r1, 0 - blt _0813F354 - b _0813F358 -_0813F34C: - cmp r2, r0 - bne _0813F35C - cmp r1, 0 - bge _0813F358 -_0813F354: - movs r0, 0x1 - b _0813F35E -_0813F358: - movs r0, 0x3 - b _0813F35E -_0813F35C: - movs r0, 0 -_0813F35E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetPlayerDirectionTowardsHiddenItem - - thumb_func_start sub_813F364 -sub_813F364: @ 813F364 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813F378 @ =gText_ItemfinderResponding - ldr r3, _0813F37C @ =sub_813F380 - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_0813F378: .4byte gText_ItemfinderResponding -_0813F37C: .4byte sub_813F380 - thumb_func_end sub_813F364 - - thumb_func_start sub_813F380 -sub_813F380: @ 813F380 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_813F3FC - movs r0, 0 - movs r1, 0x1 - bl ClearDialogWindowAndFrame - bl sub_80696C0 - bl ScriptContext2_Disable - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813F380 - - thumb_func_start sub_813F3A8 -sub_813F3A8: @ 813F3A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813F3BC @ =gText_ItemfinderShakingWildly - ldr r3, _0813F3C0 @ =sub_813F3C4 - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_0813F3BC: .4byte gText_ItemfinderShakingWildly -_0813F3C0: .4byte sub_813F3C4 - thumb_func_end sub_813F3A8 - - thumb_func_start sub_813F3C4 -sub_813F3C4: @ 813F3C4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_813F3FC - adds r0, r4, 0 - bl DestroyTask - ldr r0, _0813F3E8 @ =gUnknown_81A8D49 - bl ScriptContext1_SetupScript - bl ScriptContext2_Enable - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813F3E8: .4byte gUnknown_81A8D49 - thumb_func_end sub_813F3C4 - - thumb_func_start sub_813F3EC -sub_813F3EC: @ 813F3EC - push {lr} - ldr r0, _0813F3F8 @ =gUnknown_84647FC - bl LoadSpriteSheet - pop {r0} - bx r0 - .align 2, 0 -_0813F3F8: .4byte gUnknown_84647FC - thumb_func_end sub_813F3EC - - thumb_func_start sub_813F3FC -sub_813F3FC: @ 813F3FC - push {lr} - movs r0, 0xFA - lsls r0, 3 - bl FreeSpriteTilesByTag - pop {r0} - bx r0 - thumb_func_end sub_813F3FC - - thumb_func_start sub_813F40C -sub_813F40C: @ 813F40C - push {r4-r7,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _0813F464 @ =gUnknown_84647E4 - movs r1, 0x78 - movs r2, 0x4C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0813F468 @ =gSprites - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - adds r4, r0 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - strb r0, [r4, 0x5] - adds r0, r4, 0 - adds r1, r5, 0 - bl StartSpriteAnim - movs r0, 0 - strh r5, [r4, 0x3C] - strh r0, [r4, 0x2E] - strh r0, [r4, 0x34] - strh r0, [r4, 0x36] - movs r0, 0x78 - strh r0, [r4, 0x38] - movs r0, 0x4C - strh r0, [r4, 0x3A] - cmp r7, 0x4 - bhi _0813F53E - lsls r0, r7, 2 - ldr r1, _0813F46C @ =_0813F470 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813F464: .4byte gUnknown_84647E4 -_0813F468: .4byte gSprites -_0813F46C: .4byte _0813F470 - .align 2, 0 -_0813F470: - .4byte _0813F484 - .4byte _0813F4C8 - .4byte _0813F4EC - .4byte _0813F50C - .4byte _0813F52C -_0813F484: - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0813F4C8 - cmp r0, 0x2 - bgt _0813F49A - cmp r0, 0x1 - beq _0813F50C - b _0813F53E -_0813F49A: - cmp r0, 0x3 - beq _0813F4A4 - cmp r0, 0x4 - beq _0813F4EC - b _0813F53E -_0813F4A4: - ldr r1, _0813F4C0 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - movs r2, 0 - ldr r1, _0813F4C4 @ =0x0000ff9c - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - movs r1, 0 - bl StartSpriteAffineAnim - b _0813F53E - .align 2, 0 -_0813F4C0: .4byte gSprites -_0813F4C4: .4byte 0x0000ff9c -_0813F4C8: - ldr r1, _0813F4E4 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x30] - ldr r1, _0813F4E8 @ =0x0000ff9c - strh r1, [r0, 0x32] - movs r1, 0x3 - bl StartSpriteAffineAnim - b _0813F53E - .align 2, 0 -_0813F4E4: .4byte gSprites -_0813F4E8: .4byte 0x0000ff9c -_0813F4EC: - ldr r1, _0813F508 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - movs r2, 0 - movs r1, 0x64 - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - movs r1, 0x2 - bl StartSpriteAffineAnim - b _0813F53E - .align 2, 0 -_0813F508: .4byte gSprites -_0813F50C: - ldr r1, _0813F528 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x30] - movs r1, 0x64 - strh r1, [r0, 0x32] - movs r1, 0x1 - bl StartSpriteAffineAnim - b _0813F53E - .align 2, 0 -_0813F528: .4byte gSprites -_0813F52C: - ldr r1, _0813F544 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - movs r2, 0 - ldr r1, _0813F548 @ =0x0000ff9c - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] -_0813F53E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813F544: .4byte gSprites -_0813F548: .4byte 0x0000ff9c - thumb_func_end sub_813F40C - - thumb_func_start sub_813F54C -sub_813F54C: @ 813F54C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0x38] - adds r0, r3 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 24 - ldrh r3, [r2, 0x3A] - adds r1, r3 - strh r1, [r2, 0x22] - subs r0, 0x69 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1B - bhi _0813F58A - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _0813F58A - cmp r0, 0x58 - ble _0813F58E -_0813F58A: - ldr r0, _0813F594 @ =sub_813F598 - str r0, [r2, 0x1C] -_0813F58E: - pop {r0} - bx r0 - .align 2, 0 -_0813F594: .4byte sub_813F598 - thumb_func_end sub_813F54C - - thumb_func_start sub_813F598 -sub_813F598: @ 813F598 - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813F598 - - thumb_func_start sub_813F5AC -sub_813F5AC: @ 813F5AC - push {r4,r5,lr} - ldr r0, _0813F604 @ =gUnknown_84647E4 - movs r1, 0x78 - movs r2, 0x4C - movs r3, 0 - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r2, _0813F608 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r4, r1, r2 - ldrb r3, [r4, 0x5] - movs r0, 0xF - ands r0, r3 - strb r0, [r4, 0x5] - adds r2, 0x1C - adds r1, r2 - ldr r0, _0813F60C @ =sub_813F614 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x4 - bl StartSpriteAnim - movs r1, 0 - strh r1, [r4, 0x3C] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - movs r0, 0x78 - strh r0, [r4, 0x38] - movs r0, 0x4C - strh r0, [r4, 0x3A] - strh r1, [r4, 0x30] - ldr r0, _0813F610 @ =0x0000ff9c - strh r0, [r4, 0x32] - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0813F604: .4byte gUnknown_84647E4 -_0813F608: .4byte gSprites -_0813F60C: .4byte sub_813F614 -_0813F610: .4byte 0x0000ff9c - thumb_func_end sub_813F5AC - - thumb_func_start sub_813F614 -sub_813F614: @ 813F614 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0x38] - adds r0, r3 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 24 - ldrh r3, [r2, 0x3A] - adds r1, r3 - strh r1, [r2, 0x22] - subs r0, 0x69 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1B - bhi _0813F652 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _0813F652 - cmp r0, 0x58 - ble _0813F656 -_0813F652: - ldr r0, _0813F65C @ =sub_813F660 - str r0, [r2, 0x1C] -_0813F656: - pop {r0} - bx r0 - .align 2, 0 -_0813F65C: .4byte sub_813F660 - thumb_func_end sub_813F614 - - thumb_func_start sub_813F660 -sub_813F660: @ 813F660 - push {lr} - bl DestroySprite - pop {r0} - bx r0 - thumb_func_end sub_813F660 - - .align 2, 0 @ Don't pad with nop. diff --git a/baserom.ips b/baserom.ips index e4c815c03307d39ddd1f569581da4eeeae830b06..03cb2d9ada77beeaab65799cda69c9552c562c29 100644 GIT binary patch delta 107 zcmWN=#|eNi00mHty~W1 i3DQe$=b??{jB_ryEUnKCQiQ|%%o?sMPw?tR~rbic1o#LdZAtO!f23R^r8 zYoaC`Q5UXgh;`x3{5KQ3r&bT-(ZJez9RX3y6{GS*bs#Q*n4ZE%Kbz!ztKRWShNv$0 zd-k5K041YOwT@KRj=iltU00bddSotgj77&&| zNKfGlLiyv?ZEu#VCJwA(q68?T_t|0kGsxzdlrpCpq(mpg(NuM;74BbjTuH=`c{EV}Hk{S6$R4vcHQ@;>1 z@elR*q2;Jv-x*t$s(l+ye6m5B!4I z|Ld)TTbi|;rcS9bO3OL@?##94EH7C?TeMv4B#pPFmZxRkJ+Pw@C@)b9mH*A~nQ;|I zXwkQmGdAk({v6-x{_3epz{`|nhjdrJZI9jS{34XshpF)G+JIZvU5fryePDZF7ya|+ TyoHiL2QqlN`njxgN@xNAl`(jf literal 0 HcmV?d00001 diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index 899ed20e6..cf0ce85fe 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -2275,7 +2275,7 @@ ViridianCity_PokemonCenter_2F_EventScript_1A8D02:: @ 81A8D02 VermilionCity_PokemonCenter_1F_EventScript_1A8D08:: @ 81A8D08 .incbin "baserom.gba", 0x1A8D08, 0x41 -gUnknown_81A8D49:: @ 81A8D49 +EventScript_ItemfinderDigUpUnderfootItem:: @ 81A8D49 .incbin "baserom.gba", 0x1A8D49, 0x4E gUnknown_81A8D97:: @ 81A8D97 diff --git a/include/event_scripts.h b/include/event_scripts.h index 91612c06b..310335196 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1153,4 +1153,6 @@ extern const u8 EventScript_SafariRetire[]; extern const u8 EventScript_SafariWarpOut[]; extern const u8 EventScript_SafariOutOfBalls[]; +extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_specials.h b/include/field_specials.h index 40adbdf9a..d5a3eead8 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -14,6 +14,6 @@ u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); bool8 sub_80CC7B4(void); -u16 sub_80CC44C(struct HiddenItemStruct hiddenItem, u8 attr); +u16 GetHiddenItemAttr(struct HiddenItemStruct hiddenItem, u8 attr); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 9903962a1..7bedb1d94 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -23,5 +23,7 @@ bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s32, s32); bool32 CanCameraMoveInDirection(s32); u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); +const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection); +struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y); #endif //GUARD_FIELDMAP_H diff --git a/include/itemfinder.h b/include/itemfinder.h index 2b882b144..de63e9362 100644 --- a/include/itemfinder.h +++ b/include/itemfinder.h @@ -1,6 +1,6 @@ #ifndef GUARD_ITEMFINDER_H #define GUARD_ITEMFINDER_H -void sub_813EC8C(u8 taskId); +void ItemUseOnFieldCB_Itemfinder(u8 taskId); #endif //GUARD_ITEMFINDER_H diff --git a/ld_script.txt b/ld_script.txt index 596ef05e2..03c79232b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -253,7 +253,6 @@ SECTIONS { src/dynamic_placeholder_text_util.o(.text); src/berry_pouch.o(.text); src/itemfinder.o(.text); - asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); src/slot_machine.o(.text); src/roamer.o(.text); @@ -469,7 +468,6 @@ SECTIONS { src/dynamic_placeholder_text_util.o(.rodata); src/berry_pouch.o(.rodata); src/itemfinder.o(.rodata); - data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); src/slot_machine.o(.rodata); src/roamer.o(.rodata); diff --git a/src/fieldmap.c b/src/fieldmap.c index 2683eaf62..000b8105b 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -833,7 +833,7 @@ s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y) return FALSE; } -struct MapConnection *sub_805973C(s16 x, s16 y) +struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) { s32 count; struct MapConnection *connection; diff --git a/src/item_use.c b/src/item_use.c index 5fa9390c1..c472960bd 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -274,7 +274,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 taskId) { IncrementGameStat(GAME_STAT_USED_ITEMFINDER); - sItemUseOnFieldCB = sub_813EC8C; + sItemUseOnFieldCB = ItemUseOnFieldCB_Itemfinder; sub_80A103C(taskId); } diff --git a/src/itemfinder.c b/src/itemfinder.c index 20db9e5d2..e0300cac9 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -2,49 +2,153 @@ #include "task.h" #include "new_menu_helpers.h" #include "strings.h" +#include "event_scripts.h" #include "map_obj_lock.h" #include "script.h" #include "sound.h" #include "event_data.h" #include "field_player_avatar.h" #include "field_specials.h" +#include "fieldmap.h" +#include "itemfinder.h" #include "constants/songs.h" -void sub_813ED18(u8 taskId); -void sub_813ED3C(u8 taskId); -void sub_813EDB0(u8 taskId); -bool8 sub_813EE14(struct MapEvents *events, u8 taskId); -void sub_813EF9C(u8 taskId); -void sub_813F108(u8 taskId); -void sub_813F220(u8 taskId, s16 dx, s16 dy); -u8 GetPlayerDirectionTowardsHiddenItem(s16 x, s16 y); -void sub_813F364(u8 taskId); -void sub_813F3A8(u8 taskId); -void sub_813F3EC(void); -void sub_813F40C(u8 palIdx, u8 direction); -u8 sub_813F5AC(void); -void sub_813EF40(u8 taskId, struct HiddenItemStruct hiddenItem); +static void Task_NoResponse_CleanUp(u8 taskId); +static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId); +static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId); +static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents *events, u8 taskId); +static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem); +static void SetNormalHiddenItem(u8 taskId); +static void FindHiddenItemsInConnectedMaps(u8 taskId); +static void RegisterHiddenItemRelativeCoordsIfCloser(u8 taskId, s16 dx, s16 dy); +static u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY); +static void Task_ItemfinderResponsePrintMessage(u8 taskId); +static void Task_ItemfinderResponseCleanUp(u8 taskId); +static void Task_ItemfinderUnderfootPrintMessage(u8 taskId); +static void Task_ItemfinderUnderfootDigUpItem(u8 taskId); +static void DestroyArrowAndStarTiles(void); +static void LoadArrowAndStarTiles(void); +static void CreateArrowSprite(u8 animNum, u8 direction); +static void SpriteCallback_Arrow(struct Sprite * sprite); +static void SpriteCallback_DestroyArrow(struct Sprite * sprite); +static u8 CreateStarSprite(void); +static void SpriteCallback_Star(struct Sprite * sprite); +static void SpriteCallback_DestroyStar(struct Sprite * sprite); -void sub_813EC8C(u8 taskId) +#define ARROW_TILE_TAG 2000 + +static const u16 sArrowAndStarSpriteTiles[] = INCBIN_U16("data/itemfinder/spr_tiles.4bpp"); + +static const union AnimCmd sArrowAnim0[] = { + ANIMCMD_FRAME( 0, 10), + ANIMCMD_END +}; + +static const union AnimCmd sArrowAnim1[] = { + ANIMCMD_FRAME( 4, 10), + ANIMCMD_END +}; + +static const union AnimCmd sArrowAnim2[] = { + ANIMCMD_FRAME( 8, 10), + ANIMCMD_END +}; + +static const union AnimCmd sArrowAnim3[] = { + ANIMCMD_FRAME(12, 10), + ANIMCMD_END +}; + +static const union AnimCmd sStarAnim[] = { + ANIMCMD_FRAME(16, 10), + ANIMCMD_END +}; + +static const union AnimCmd *const sArrowAndStarSpriteAnimTable[] = { + sArrowAnim0, + sArrowAnim1, + sArrowAnim2, + sArrowAnim3, + sStarAnim +}; + +static const struct OamData sArrowAndStarSpriteOamData = { + .affineMode = ST_OAM_AFFINE_NORMAL, + .shape = ST_OAM_SQUARE, + .size = ST_OAM_SIZE_1 +}; + +static const union AffineAnimCmd sAffineAnim_Left[] = { + AFFINEANIMCMD_FRAME(0, 0, 0x00, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sAffineAnim_Down[] = { + AFFINEANIMCMD_FRAME(0, 0, 0x40, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sAffineAnim_Right[] = { + AFFINEANIMCMD_FRAME(0, 0, 0x80, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sAffineAnim_Up[] = { + AFFINEANIMCMD_FRAME(0, 0, 0xc0, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const sArrowAndStarSpriteAffineAnimTable[] = { + sAffineAnim_Left, + sAffineAnim_Down, + sAffineAnim_Right, + sAffineAnim_Up +}; + +static const struct SpriteTemplate gUnknown_84647E4 = { + .tileTag = ARROW_TILE_TAG, + .paletteTag = 0xFFFF, + .oam = &sArrowAndStarSpriteOamData, + .anims = sArrowAndStarSpriteAnimTable, + .affineAnims = sArrowAndStarSpriteAffineAnimTable, + .callback = SpriteCallback_Arrow +}; + +static const struct SpriteSheet sArrowAndStarSpriteSheet = { + .data = sArrowAndStarSpriteTiles, + .size = sizeof(sArrowAndStarSpriteTiles), + .tag = ARROW_TILE_TAG +}; + +#define tItemX data[0] +#define tItemY data[1] +#define tHiddenItemFound data[2] +#define tDingTimer data[3] +#define tNumDingsRemaining data[4] +#define tDingNum data[5] +#define tUnderfoot data[6] +#define tStartSpriteId data[7] + +void ItemUseOnFieldCB_Itemfinder(u8 taskId) { u8 i; for (i = 0; i < 16; i++) gTasks[taskId].data[i] = 0; - if (sub_813EE14(gMapHeader.events, taskId) == TRUE) + if (HiddenItemIsWithinRangeOfPlayer(gMapHeader.events, taskId) == TRUE) { - sub_813F3EC(); - if (gTasks[taskId].data[6] == 1) - gTasks[taskId].func = sub_813EDB0; + LoadArrowAndStarTiles(); + if (gTasks[taskId].tUnderfoot == TRUE) + gTasks[taskId].func = Task_ItemfinderUnderfootSoundsAndAnims; else - gTasks[taskId].func = sub_813ED3C; + gTasks[taskId].func = Task_ItemfinderResponseSoundsAndAnims; } else { - DisplayItemMessageOnField(taskId, 2, gText_NopeTheresNoResponse, sub_813ED18); + DisplayItemMessageOnField(taskId, 2, gText_NopeTheresNoResponse, Task_NoResponse_CleanUp); } } -void sub_813ED18(u8 taskId) +static void Task_NoResponse_CleanUp(u8 taskId) { ClearDialogWindowAndFrame(0, TRUE); sub_80696C0(); @@ -52,66 +156,66 @@ void sub_813ED18(u8 taskId) DestroyTask(taskId); } -void sub_813ED3C(u8 taskId) +static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId) { s16 * data = gTasks[taskId].data; u8 direction; - if (data[3] % 25 == 0) + if (tDingTimer % 25 == 0) { - direction = GetPlayerDirectionTowardsHiddenItem(data[0], data[1]); - if (data[4] == 0) + direction = GetPlayerDirectionTowardsHiddenItem(tItemX, tItemY); + if (tNumDingsRemaining == 0) { - gTasks[taskId].func = sub_813F364; + gTasks[taskId].func = Task_ItemfinderResponsePrintMessage; return; } else { PlaySE(SE_TOY_F); - sub_813F40C(data[5], direction); - data[5]++; - data[4]--; + CreateArrowSprite(tDingNum, direction); + tDingNum++; + tNumDingsRemaining--; } } - data[3]++; + tDingTimer++; } -void sub_813EDB0(u8 taskId) +static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId) { s16 * data = gTasks[taskId].data; - if (data[3] % 25 == 0) + if (tDingTimer % 25 == 0) { - if (data[4] == 0) + if (tNumDingsRemaining == 0) { - gTasks[taskId].func = sub_813F3A8; + gTasks[taskId].func = Task_ItemfinderUnderfootPrintMessage; return; } else { PlaySE(SE_TOY_F); - data[7] = sub_813F5AC(); - data[5]++; - data[4]--; + tStartSpriteId = CreateStarSprite(); + tDingNum++; + tNumDingsRemaining--; } } - data[3]++; + tDingTimer++; } -bool8 sub_813EE14(struct MapEvents *events, u8 taskId) +static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents *events, u8 taskId) { s16 x, y, i, dx, dy; PlayerGetDestCoords(&x, &y); - gTasks[taskId].data[2] = 0; + gTasks[taskId].tHiddenItemFound = FALSE; for (i = 0; i < events->bgEventCount; i++) { - if (events->bgEvents[i].kind == 7 && !FlagGet(sub_80CC44C(events->bgEvents[i].bgUnion.hiddenItem, 1))) + if (events->bgEvents[i].kind == 7 && !FlagGet(GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, 1))) { dx = events->bgEvents[i].x + 7 - x; dy = events->bgEvents[i].y + 7 - y; - if (sub_80CC44C(events->bgEvents[i].bgUnion.hiddenItem, 3) == TRUE) + if (GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, 3) == TRUE) { if (dx == 0 && dy == 0) { - sub_813EF40(taskId, events->bgEvents[i].bgUnion.hiddenItem); + SetUnderfootHiddenItem(taskId, events->bgEvents[i].bgUnion.hiddenItem); return TRUE; } } @@ -122,69 +226,72 @@ bool8 sub_813EE14(struct MapEvents *events, u8 taskId) && dy <= 5 ) { - sub_813F220(taskId, dx, dy); + RegisterHiddenItemRelativeCoordsIfCloser(taskId, dx, dy); } } } - sub_813F108(taskId); - if (gTasks[taskId].data[2] == 1) + FindHiddenItemsInConnectedMaps(taskId); + if (gTasks[taskId].tHiddenItemFound == TRUE) { - sub_813EF9C(taskId); + SetNormalHiddenItem(taskId); return TRUE; } return FALSE; } -void sub_813EF40(u8 taskId, struct HiddenItemStruct hiddenItem) +static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem) { s16 * data = gTasks[taskId].data; - gSpecialVar_0x8004 = sub_80CC44C(hiddenItem, 1); - gSpecialVar_0x8005 = sub_80CC44C(hiddenItem, 0); + gSpecialVar_0x8004 = GetHiddenItemAttr(hiddenItem, 1); + gSpecialVar_0x8005 = GetHiddenItemAttr(hiddenItem, 0); gSpecialVar_0x8006 = 1; TV_PrintIntToStringVar(0, gSpecialVar_0x8005); - data[2] = 1; - data[0] = 0; - data[1] = 0; - data[4] = 3; - data[6] = 1; + tHiddenItemFound = TRUE; + tItemX = 0; + tItemY = 0; + tNumDingsRemaining = 3; + tUnderfoot = TRUE; } -void sub_813EF9C(u8 taskId) +static void SetNormalHiddenItem(u8 taskId) { s16 * data = gTasks[taskId].data; - s16 r3 = data[1]; - s16 r2 = data[0]; - if (data[0] == 0 && data[1] == 0) - data[4] = 4; + s16 absY = tItemY; + s16 absX = tItemX; + + // The strength of the response increases inversely with distance to the item. + if (tItemX == 0 && tItemY == 0) + tNumDingsRemaining = 4; else { - if (data[0] < 0) - r2 = data[0] * -1; - if (data[1] < 0) - r3 = data[1] * -1; - if (r2 > r3) + if (tItemX < 0) + absX = tItemX * -1; + if (tItemY < 0) + absY = tItemY * -1; + if (absX > absY) { - if (r2 > 3) - data[4] = 2; + if (absX > 3) + tNumDingsRemaining = 2; else - data[4] = 4; + tNumDingsRemaining = 4; } else { - if (r3 > 3) - data[4] = 2; + if (absY > 3) + tNumDingsRemaining = 2; else - data[4] = 4; + tNumDingsRemaining = 4; } } } -bool8 sub_813F004(struct MapEvents *events, s16 x, s16 y) +static bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) { - s32 i; - u16 eventFlag; - s32 bgEventCount = events->bgEventCount; + u8 bgEventCount = events->bgEventCount; struct BgEvent *bgEvents = events->bgEvents; + u16 eventFlag; + int i; + for (i = 0; i < bgEventCount; i++) { if ( @@ -193,8 +300,8 @@ bool8 sub_813F004(struct MapEvents *events, s16 x, s16 y) && y == bgEvents[i].y ) { - eventFlag = sub_80CC44C(bgEvents[i].bgUnion.hiddenItem, 1); - if (sub_80CC44C(bgEvents[i].bgUnion.hiddenItem, 3) != TRUE && !FlagGet(eventFlag)) + eventFlag = GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, 1); + if (GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, 3) != TRUE && !FlagGet(eventFlag)) return TRUE; else return FALSE; @@ -202,3 +309,351 @@ bool8 sub_813F004(struct MapEvents *events, s16 x, s16 y) } return FALSE; } + +static bool8 HiddenItemInConnectedMapAtPos(struct MapConnection * connection, s32 x, s32 y) +{ + const struct MapHeader *mapHeader; + u16 localX, localY; + u32 localOffset; + s32 localLength; + + mapHeader = mapconnection_get_mapheader(connection); + + switch (connection->direction) + { + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; + } + return HiddenItemAtPos(mapHeader->events, localX, localY); +} + +static void FindHiddenItemsInConnectedMaps(u8 taskId) +{ + s16 x, y; + s16 curX, curY; + s16 width = gMapHeader.mapData->width + 7; + s16 height = gMapHeader.mapData->height + 7; + + s16 var1 = 7; + s16 var2 = 7; + + PlayerGetDestCoords(&x, &y); + + for (curX = x - 7; curX <= x + 7; curX++) + { + for (curY = y - 5; curY <= y + 5; curY++) + { + if (var1 > curX + || curX >= width + || var2 > curY + || curY >= height) + { + struct MapConnection *conn = GetMapConnectionAtPos(curX, curY); + if (conn != NULL && HiddenItemInConnectedMapAtPos(conn, curX, curY) == TRUE) + RegisterHiddenItemRelativeCoordsIfCloser(taskId, curX - x, curY - y); + } + } + } +} + +static void RegisterHiddenItemRelativeCoordsIfCloser(u8 taskId, s16 dx, s16 dy) +{ + s16 *data = gTasks[taskId].data; + s16 dx2, dy2, dx3, dy3; + + if (tHiddenItemFound == FALSE) + { + tItemX = dx; + tItemY = dy; + tHiddenItemFound = TRUE; + } + else + { + // tItemX and tItemY contain the player's coordinates. + // dx and dy contain the item's coordinates. + if (tItemX < 0) + dx2 = tItemX * -1; // item is to the left + else + dx2 = tItemX; // item is to the right + + if (tItemY < 0) + dy2 = tItemY * -1; // item is to the north + else + dy2 = tItemY; // item is to the south + + if (dx < 0) + dx3 = dx * -1; + else + dx3 = dx; + + if (dy < 0) + dy3 = dy * -1; + else + dy3 = dy; + + if (dx2 + dy2 > dx3 + dy3) + { + tItemX = dx; + tItemY = dy; + } + else + { + if (dx2 + dy2 == dx3 + dy3 && (dy2 > dy3 || (dy2 == dy3 && tItemY < dy))) + { + tItemX = dx; + tItemY = dy; + } + } + } +} + +static u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) +{ + s16 abX, abY; + + if (itemX == 0 && itemY == 0) + return DIR_NONE; // player is standing on the item. + + // get absolute X distance. + if (itemX < 0) + abX = itemX * -1; + else + abX = itemX; + + // get absolute Y distance. + if (itemY < 0) + abY = itemY * -1; + else + abY = itemY; + + if (abX > abY) + { + if (itemX < 0) + return DIR_EAST; + else + return DIR_NORTH; + } + else + { + if (abX < abY) + { + if (itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + if (abX == abY) + { + if (itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + return DIR_NONE; // should never get here. return something so it doesnt crash. + } +} + +static void Task_ItemfinderResponsePrintMessage(u8 taskId) +{ + DisplayItemMessageOnField(taskId, 2, gText_ItemfinderResponding, Task_ItemfinderResponseCleanUp); +} + +static void Task_ItemfinderResponseCleanUp(u8 taskId) +{ + DestroyArrowAndStarTiles(); + ClearDialogWindowAndFrame(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +static void Task_ItemfinderUnderfootPrintMessage(u8 taskId) +{ + DisplayItemMessageOnField(taskId, 2, gText_ItemfinderShakingWildly, Task_ItemfinderUnderfootDigUpItem); +} + +static void Task_ItemfinderUnderfootDigUpItem(u8 taskId) +{ + DestroyArrowAndStarTiles(); + DestroyTask(taskId); + ScriptContext1_SetupScript(EventScript_ItemfinderDigUpUnderfootItem); + ScriptContext2_Enable(); +} + +#undef tStartSpriteId +#undef tUnderfoot +#undef tDingNum +#undef tNumDingsRemaining +#undef tDingTimer +#undef tHiddenItemFound +#undef tItemY +#undef tItemX + +#define spData0 data[0] +#define spDeltaX data[1] +#define spDeltaY data[2] +#define spCurX data[3] +#define spCurY data[4] +#define spCenterX data[5] +#define spCenterY data[6] +#define spAnimNum data[7] + +static void LoadArrowAndStarTiles(void) +{ + LoadSpriteSheet(&sArrowAndStarSpriteSheet); +} + +static void DestroyArrowAndStarTiles(void) +{ + FreeSpriteTilesByTag(ARROW_TILE_TAG); +} + +static void CreateArrowSprite(u8 animNum, u8 direction) +{ + u8 spriteId = CreateSprite(&gUnknown_84647E4, 120, 76, 0); + gSprites[spriteId].oam.paletteNum = 0; + StartSpriteAnim(&gSprites[spriteId], animNum); + gSprites[spriteId].spAnimNum = animNum; + gSprites[spriteId].spData0 = 0; + gSprites[spriteId].spCurX = 0; + gSprites[spriteId].spCurY = 0; + gSprites[spriteId].spCenterX = 120; + gSprites[spriteId].spCenterY = 76; + switch (direction) + { + case DIR_NONE: + switch (GetPlayerFacingDirection()) + { + case DIR_WEST: + gSprites[spriteId].spDeltaX = -100; + gSprites[spriteId].spDeltaY = 0; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + break; + case DIR_NORTH: + gSprites[spriteId].spDeltaX = 0; + gSprites[spriteId].spDeltaY = -100; + StartSpriteAffineAnim(&gSprites[spriteId], 3); + break; + case DIR_EAST: + gSprites[spriteId].spDeltaX = 100; + gSprites[spriteId].spDeltaY = 0; + StartSpriteAffineAnim(&gSprites[spriteId], 2); + break; + case DIR_SOUTH: + gSprites[spriteId].spDeltaX = 0; + gSprites[spriteId].spDeltaY = 100; + StartSpriteAffineAnim(&gSprites[spriteId], 1); + break; + } + break; + case DIR_SOUTH: + gSprites[spriteId].spDeltaX = 0; + gSprites[spriteId].spDeltaY = -100; + StartSpriteAffineAnim(&gSprites[spriteId], 3); + break; + case DIR_NORTH: + gSprites[spriteId].spDeltaX = 100; + gSprites[spriteId].spDeltaY = 0; + StartSpriteAffineAnim(&gSprites[spriteId], 2); + break; + case DIR_WEST: + gSprites[spriteId].spDeltaX = 0; + gSprites[spriteId].spDeltaY = 100; + StartSpriteAffineAnim(&gSprites[spriteId], 1); + break; + case DIR_EAST: + gSprites[spriteId].spDeltaX = -100; + gSprites[spriteId].spDeltaY = 0; + break; + } +} + +static void SpriteCallback_Arrow(struct Sprite * sprite) +{ + s16 x, y; + sprite->spCurX += sprite->spDeltaX; + sprite->spCurY += sprite->spDeltaY; + sprite->pos1.x = sprite->spCenterX + (sprite->spCurX >> 8); + sprite->pos1.y = sprite->spCenterY + (sprite->spCurY >> 8); + if (sprite->pos1.x <= 104 + || sprite->pos1.x > 132 + || sprite->pos1.y <= 60 + || sprite->pos1.y > 88) + sprite->callback = SpriteCallback_DestroyArrow; +} + +static void SpriteCallback_DestroyArrow(struct Sprite * sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +static u8 CreateStarSprite(void) +{ + u8 spriteId = CreateSprite(&gUnknown_84647E4, 120, 76, 0); + gSprites[spriteId].oam.paletteNum = 0; + gSprites[spriteId].callback = SpriteCallback_Star; + StartSpriteAnim(&gSprites[spriteId], 4); + gSprites[spriteId].spAnimNum = 0; + gSprites[spriteId].spData0 = 0; + gSprites[spriteId].spCurX = 0; + gSprites[spriteId].spCurY = 0; + gSprites[spriteId].spCenterX = 120; + gSprites[spriteId].spCenterY = 76; + gSprites[spriteId].spDeltaX = 0; + gSprites[spriteId].spDeltaY = -100; + return spriteId; +} + +static void SpriteCallback_Star(struct Sprite * sprite) +{ + s16 x, y; + sprite->spCurX += sprite->spDeltaX; + sprite->spCurY += sprite->spDeltaY; + sprite->pos1.x = sprite->spCenterX + (sprite->spCurX >> 8); + sprite->pos1.y = sprite->spCenterY + (sprite->spCurY >> 8); + if (sprite->pos1.x <= 104 + || sprite->pos1.x > 132 + || sprite->pos1.y <= 60 + || sprite->pos1.y > 88) + sprite->callback = SpriteCallback_DestroyStar; +} + +static void SpriteCallback_DestroyStar(struct Sprite * sprite) +{ + DestroySprite(sprite); +} + +#undef spAnimNum +#undef spCenterY +#undef spCenterX +#undef spCurY +#undef spCurX +#undef spDeltaY +#undef spDeltaX +#undef spData0 From a56a90d998cfdce7ea2bcacb9958ef312b19792b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 14:01:57 -0400 Subject: [PATCH 072/100] Resolve review comments --- include/global.fieldmap.h | 4 ++-- src/itemfinder.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index cc9510997..f90c6fc66 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -122,10 +122,10 @@ struct CoordEvent struct HiddenItemStruct { - u32 field_00:16; + u32 quantity:16; u32 hiddenItemId:8; // flag offset to determine flag lookup u32 field_03_0:7; - u32 field_03_7:1; + u32 isUnderfoot:1; }; union BgUnion diff --git a/src/itemfinder.c b/src/itemfinder.c index e0300cac9..30fd81a8d 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -16,7 +16,7 @@ static void Task_NoResponse_CleanUp(u8 taskId); static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId); static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId); -static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents *events, u8 taskId); +static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId); static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem); static void SetNormalHiddenItem(u8 taskId); static void FindHiddenItemsInConnectedMaps(u8 taskId); @@ -158,7 +158,7 @@ static void Task_NoResponse_CleanUp(u8 taskId) static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId) { - s16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; u8 direction; if (tDingTimer % 25 == 0) { @@ -181,7 +181,7 @@ static void Task_ItemfinderResponseSoundsAndAnims(u8 taskId) static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId) { - s16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; if (tDingTimer % 25 == 0) { if (tNumDingsRemaining == 0) @@ -200,7 +200,7 @@ static void Task_ItemfinderUnderfootSoundsAndAnims(u8 taskId) tDingTimer++; } -static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents *events, u8 taskId) +static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskId) { s16 x, y, i, dx, dy; PlayerGetDestCoords(&x, &y); @@ -241,7 +241,7 @@ static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents *events, u8 taskId static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem) { - s16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; gSpecialVar_0x8004 = GetHiddenItemAttr(hiddenItem, 1); gSpecialVar_0x8005 = GetHiddenItemAttr(hiddenItem, 0); gSpecialVar_0x8006 = 1; @@ -255,7 +255,7 @@ static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem static void SetNormalHiddenItem(u8 taskId) { - s16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; s16 absY = tItemY; s16 absX = tItemX; @@ -285,10 +285,10 @@ static void SetNormalHiddenItem(u8 taskId) } } -static bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) +static bool8 HiddenItemAtPos(struct MapEvents * events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; - struct BgEvent *bgEvents = events->bgEvents; + struct BgEvent * bgEvents = events->bgEvents; u16 eventFlag; int i; @@ -312,7 +312,7 @@ static bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) static bool8 HiddenItemInConnectedMapAtPos(struct MapConnection * connection, s32 x, s32 y) { - const struct MapHeader *mapHeader; + const struct MapHeader * mapHeader; u16 localX, localY; u32 localOffset; s32 localLength; @@ -321,7 +321,7 @@ static bool8 HiddenItemInConnectedMapAtPos(struct MapConnection * connection, s3 switch (connection->direction) { - // same weird temp variable behavior seen in HiddenItemAtPos + // same weird temp variable behavior seen in HiddenItemAtPos case 2: localOffset = connection->offset + 7; localX = x - localOffset; @@ -373,7 +373,7 @@ static void FindHiddenItemsInConnectedMaps(u8 taskId) || var2 > curY || curY >= height) { - struct MapConnection *conn = GetMapConnectionAtPos(curX, curY); + struct MapConnection * conn = GetMapConnectionAtPos(curX, curY); if (conn != NULL && HiddenItemInConnectedMapAtPos(conn, curX, curY) == TRUE) RegisterHiddenItemRelativeCoordsIfCloser(taskId, curX - x, curY - y); } From 38d2b717173e9d6b24766fc3d6e46002db684cf5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 15:20:28 -0400 Subject: [PATCH 073/100] Normal hidden item script; hidden item attr enum --- asm/field_control_avatar.s | 4 +- asm/field_specials.s | 7 +- data/map_event_scripts.inc | 118 +++++++++++++++--- data/maps/CeladonCity_GameCorner/scripts.inc | 10 +- .../scripts.inc | 6 +- data/maps/CeladonCity_Restaurant/scripts.inc | 4 +- data/specials.inc | 2 +- include/constants/flags.h | 2 +- include/field_specials.h | 8 ++ include/global.fieldmap.h | 4 +- src/itemfinder.c | 12 +- 11 files changed, 132 insertions(+), 45 deletions(-) diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 35d96eaa4..c1825ba58 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1180,14 +1180,14 @@ _0806D17A: beq _0806D164 ldr r0, _0806D1D0 @ =gSpecialVar_Facing strh r6, [r0] - ldr r0, _0806D1D4 @ =gUnknown_81A6843 + ldr r0, _0806D1D4 @ =EventScript_PickUpHiddenItem b _0806D1E6 .align 2, 0 _0806D1C4: .4byte gSpecialVar_0x8005 _0806D1C8: .4byte gSpecialVar_0x8004 _0806D1CC: .4byte gSpecialVar_0x8006 _0806D1D0: .4byte gSpecialVar_Facing -_0806D1D4: .4byte gUnknown_81A6843 +_0806D1D4: .4byte EventScript_PickUpHiddenItem _0806D1D8: cmp r2, 0xFF beq _0806D1E0 diff --git a/asm/field_specials.s b/asm/field_specials.s index eaac4a481..83608fccf 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -1566,8 +1566,9 @@ _080CB1D2: bx r1 thumb_func_end sub_80CB198 - thumb_func_start sub_80CB1D8 -sub_80CB1D8: @ 80CB1D8 + thumb_func_start Special_CheckAddCoins +Special_CheckAddCoins: @ 80CB1D8 +@ addcoins but it's a dry run push {lr} ldr r0, _080CB1F0 @ =gSpecialVar_Result ldrh r1, [r0] @@ -1588,7 +1589,7 @@ _080CB1FC: _080CB1FE: pop {r1} bx r1 - thumb_func_end sub_80CB1D8 + thumb_func_end Special_CheckAddCoins thumb_func_start sub_80CB204 sub_80CB204: @ 80CB204 diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index cf0ce85fe..0695499a9 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1576,27 +1576,23 @@ EventScript_1A661D:: @ 81A661D waitmessage applymovement VAR_LAST_TALKED, Movement_1A666C waitmovement 0 - loadword 0, Text_1A5511 - callstd 4 + msgbox Text_1A5511 return EventScript_1A6636:: @ 81A6636 checkflag 2114 goto_if_eq EventScript_1A661D - loadword 0, Text_1A552B - callstd 4 + msgbox Text_1A552B setflag 2114 message Text_1BCCCA waitmessage applymovement VAR_LAST_TALKED, Movement_1A666C waitmovement 0 - loadword 0, Text_1A5511 - callstd 4 + msgbox Text_1A5511 return EventScript_1A6663:: @ 81A6663 - loadword 0, Text_1A5511 - callstd 4 + msgbox Text_1A5511 return Movement_1A666C:: @ 81A666C @@ -1681,8 +1677,7 @@ EventScript_1A6749:: @ 81A6749 message Text_1A51F6 waitfanfare waitmessage - loadword 0, gUnknown_81A5218 - callstd 4 + msgbox gUnknown_81A5218 setvar VAR_RESULT, 1 return @@ -1717,8 +1712,7 @@ EventScript_1A6795:: @ 81A6795 message Text_1A52F0 waitfanfare waitmessage - loadword 0, gUnknown_81A532F - callstd 4 + msgbox gUnknown_81A532F setvar VAR_RESULT, 1 return @@ -1755,8 +1749,7 @@ EventScript_1A67EE:: @ 81A67EE call_if 1, EventScript_1A6827 waitfanfare waitmessage - loadword 0, gUnknown_81A5218 - callstd 4 + msgbox gUnknown_81A5218 return EventScript_1A6821:: @ 81A6821 @@ -1768,15 +1761,100 @@ EventScript_1A6827:: @ 81A6827 return EventScript_1A682D:: @ 81A682D - loadword 0, Text_1A51F6 - callstd 4 - loadword 0, gUnknown_81A5242 - callstd 4 + msgbox Text_1A51F6 + msgbox gUnknown_81A5242 setvar VAR_RESULT, 0 return -gUnknown_81A6843:: @ 81A6843 - .incbin "baserom.gba", 0x1A6843, 0x112 +EventScript_PickUpHiddenItem:: @ 81A6843 + lockall + textcolor 3 + waitse + compare_var_to_value VAR_0x8005, 0 + goto_if_eq EventScript_PickUpHiddenCoins + call EventScript_GiveItem + compare_var_to_value VAR_0x8007, 1 + goto_if_eq EventScript_ItemInPocketMessage + compare_var_to_value VAR_0x8007, 0 + goto_if_eq EventScript_BagIsFullMessage + end + +EventScript_GiveItem:: + additem VAR_0x8005, VAR_0x8006 + copyvar VAR_0x8007, VAR_RESULT + getitemname 1, VAR_0x8005 + checkitemtype VAR_0x8005 + call EventScript_1A66BC + return + +EventScript_ItemInPocketMessage:: + compare_var_to_value VAR_0x8006, 1 + call_if 1, EventScript_FoundSingleItemMessage + compare_var_to_value VAR_0x8006, 1 + call_if 5, EventScript_FoundMultipleItemsMessage + waitfanfare + waitmessage + msgbox gUnknown_81A5218 + special sub_80CA758 + releaseall + end + +EventScript_FoundSingleItemMessage:: + message Text_1A5231 + return + +EventScript_FoundCoinsMessage:: + getnumberstring 0, VAR_0x8006 + message Text_1A525C + return + +EventScript_FoundMultipleItemsMessage:: + getnumberstring 0, VAR_0x8006 + message Text_1A52DD + return + +EventScript_BagIsFullMessage:: + msgbox Text_1A5231 + msgbox gUnknown_81A5242 + setvar VAR_RESULT, 0 + releaseall + end + +EventScript_PickUpHiddenCoins:: + checkflag FLAG_GOT_COIN_CASE + goto_if 0, EventScript_HiddenCoinsButNoCoinCase + checkcoins VAR_RESULT + specialvar VAR_RESULT, Special_CheckAddCoins + compare_var_to_value VAR_RESULT, 0 + goto_if_eq EventScript_HiddenCoinsButTheCoinCaseIsFull + givecoins VAR_0x8006 + getstdstring 1, 0x17 + call EventScript_1A6764 + call EventScript_FoundCoinsMessage + waitfanfare + waitmessage + msgbox Text_1A526C + special sub_80CA758 + releaseall + end + +EventScript_HiddenCoinsButTheCoinCaseIsFull:: + getnumberstring 0, VAR_0x8006 + getstdstring 1, 0x17 + msgbox Text_1A525C + msgbox Text_1A5294 + setvar VAR_RESULT, 0 + releaseall + end + +EventScript_HiddenCoinsButNoCoinCase:: + getnumberstring 0, VAR_0x8006 + getstdstring 1, 0x17 + msgbox Text_1A525C + msgbox Text_1A52B4 + setvar VAR_RESULT, 0 + releaseall + end gUnknown_81A6955:: @ 81A6955 .incbin "baserom.gba", 0x1A6955, 0x173 diff --git a/data/maps/CeladonCity_GameCorner/scripts.inc b/data/maps/CeladonCity_GameCorner/scripts.inc index dca647299..9115b2812 100644 --- a/data/maps/CeladonCity_GameCorner/scripts.inc +++ b/data/maps/CeladonCity_GameCorner/scripts.inc @@ -39,7 +39,7 @@ CeladonCity_GameCorner_EventScript_16C68D:: @ 816C68D end EventScript_16C6E6:: @ 816C6E6 - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16C790 compare_var_to_value VAR_0x8009, 0 goto_if_eq EventScript_16C734 @@ -134,7 +134,7 @@ CeladonCity_GameCorner_EventScript_16C7E7:: @ 816C7E7 checkflag FLAG_0x26E goto_if_eq EventScript_16C849 msgbox gUnknown_8196AF3 - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16C839 checkcoins VAR_0x4001 compare_var_to_value VAR_0x4001, 9990 @@ -198,7 +198,7 @@ CeladonCity_GameCorner_EventScript_16C89E:: @ 816C89E checkflag FLAG_0x26F goto_if_eq EventScript_16C8F0 msgbox gUnknown_8196D2B - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16C839 checkcoins VAR_0x4001 compare_var_to_value VAR_0x4001, 9980 @@ -228,7 +228,7 @@ CeladonCity_GameCorner_EventScript_16C8FE:: @ 816C8FE checkflag FLAG_0x270 goto_if_eq EventScript_16C950 msgbox gUnknown_8196DB7 - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16C839 checkcoins VAR_0x4001 compare_var_to_value VAR_0x4001, 9980 @@ -263,7 +263,7 @@ EventScript_16C96A:: @ 816C96A end EventScript_16C96C:: @ 816C96C - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16CAA0 msgbox gUnknown_8196F46, MSGBOX_YESNO compare_var_to_value VAR_RESULT, 0 diff --git a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc index 911847541..4a60c9814 100644 --- a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc +++ b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc @@ -12,7 +12,7 @@ CeladonCity_GameCorner_PrizeRoom_EventScript_16CB7F:: @ 816CB7F CeladonCity_GameCorner_PrizeRoom_EventScript_16CB88:: @ 816CB88 lock faceplayer - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16CD99 special sub_8110AB4 compare_var_to_value VAR_RESULT, 2 @@ -191,7 +191,7 @@ EventScript_16CE12:: @ 816CE12 CeladonCity_GameCorner_PrizeRoom_EventScript_16CE1D:: @ 816CE1D lock faceplayer - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16CD99 special sub_8110AB4 compare_var_to_value VAR_RESULT, 2 @@ -289,7 +289,7 @@ EventScript_16CF79:: @ 816CF79 CeladonCity_GameCorner_PrizeRoom_EventScript_16CF88:: @ 816CF88 lock faceplayer - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if 0, EventScript_16CD99 special sub_8110AB4 compare_var_to_value VAR_RESULT, 2 diff --git a/data/maps/CeladonCity_Restaurant/scripts.inc b/data/maps/CeladonCity_Restaurant/scripts.inc index e52d88636..379d07271 100644 --- a/data/maps/CeladonCity_Restaurant/scripts.inc +++ b/data/maps/CeladonCity_Restaurant/scripts.inc @@ -12,7 +12,7 @@ CeladonCity_Restaurant_EventScript_16D1F4:: @ 816D1F4 CeladonCity_Restaurant_EventScript_16D1FD:: @ 816D1FD lock faceplayer - checkflag FLAG_0x243 + checkflag FLAG_GOT_COIN_CASE goto_if_eq EventScript_16D24B msgbox gUnknown_81979C1 checkitemspace ITEM_COIN_CASE, 1 @@ -20,7 +20,7 @@ CeladonCity_Restaurant_EventScript_16D1FD:: @ 816D1FD goto_if_eq EventScript_16D241 additem ITEM_COIN_CASE, 1 giveitemfanfaremsg gUnknown_8197A38, ITEM_COIN_CASE - setflag FLAG_0x243 + setflag FLAG_GOT_COIN_CASE release end diff --git a/data/specials.inc b/data/specials.inc index 5905d825f..13809e274 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -359,7 +359,7 @@ gSpecials:: @ 815FD60 def_special sub_80CADEC def_special sub_805D1A8 def_special sub_80CB0A8 - def_special sub_80CB1D8 + def_special Special_CheckAddCoins def_special GetDaycarePokemonCount def_special sub_80CB63C def_special sub_80CBD80 diff --git a/include/constants/flags.h b/include/constants/flags.h index de9a98b43..7f4655d4e 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -668,7 +668,7 @@ #define FLAG_0x240 0x240 #define FLAG_0x241 0x241 #define FLAG_0x242 0x242 -#define FLAG_0x243 0x243 +#define FLAG_GOT_COIN_CASE 0x243 #define FLAG_0x244 0x244 #define FLAG_0x245 0x245 #define FLAG_0x246 0x246 diff --git a/include/field_specials.h b/include/field_specials.h index d5a3eead8..b48dd34a5 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -3,6 +3,14 @@ #include "global.h" +enum HiddenItemAttr +{ + HIDDEN_ITEM_ID = 0, + HIDDEN_ITEM_FLAG, + HIDDEN_ITEM_QUANTITY, + HIDDEN_ITEM_UNDERFOOT +}; + u8 GetLeadMonIndex(void); u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index f90c6fc66..bf142d265 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -122,9 +122,9 @@ struct CoordEvent struct HiddenItemStruct { - u32 quantity:16; + u32 itemId:16; u32 hiddenItemId:8; // flag offset to determine flag lookup - u32 field_03_0:7; + u32 quantity:7; u32 isUnderfoot:1; }; diff --git a/src/itemfinder.c b/src/itemfinder.c index 30fd81a8d..4e723ac03 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -207,11 +207,11 @@ static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskI gTasks[taskId].tHiddenItemFound = FALSE; for (i = 0; i < events->bgEventCount; i++) { - if (events->bgEvents[i].kind == 7 && !FlagGet(GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, 1))) + if (events->bgEvents[i].kind == 7 && !FlagGet(GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, HIDDEN_ITEM_FLAG))) { dx = events->bgEvents[i].x + 7 - x; dy = events->bgEvents[i].y + 7 - y; - if (GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, 3) == TRUE) + if (GetHiddenItemAttr(events->bgEvents[i].bgUnion.hiddenItem, HIDDEN_ITEM_UNDERFOOT) == TRUE) { if (dx == 0 && dy == 0) { @@ -242,8 +242,8 @@ static bool8 HiddenItemIsWithinRangeOfPlayer(struct MapEvents * events, u8 taskI static void SetUnderfootHiddenItem(u8 taskId, struct HiddenItemStruct hiddenItem) { s16 *data = gTasks[taskId].data; - gSpecialVar_0x8004 = GetHiddenItemAttr(hiddenItem, 1); - gSpecialVar_0x8005 = GetHiddenItemAttr(hiddenItem, 0); + gSpecialVar_0x8004 = GetHiddenItemAttr(hiddenItem, HIDDEN_ITEM_FLAG); + gSpecialVar_0x8005 = GetHiddenItemAttr(hiddenItem, HIDDEN_ITEM_ID); gSpecialVar_0x8006 = 1; TV_PrintIntToStringVar(0, gSpecialVar_0x8005); tHiddenItemFound = TRUE; @@ -300,8 +300,8 @@ static bool8 HiddenItemAtPos(struct MapEvents * events, s16 x, s16 y) && y == bgEvents[i].y ) { - eventFlag = GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, 1); - if (GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, 3) != TRUE && !FlagGet(eventFlag)) + eventFlag = GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, HIDDEN_ITEM_FLAG); + if (GetHiddenItemAttr(bgEvents[i].bgUnion.hiddenItem, HIDDEN_ITEM_UNDERFOOT) != TRUE && !FlagGet(eventFlag)) return TRUE; else return FALSE; From aa0ac46b7145951f1d6f65e7af005a3fe561ff63 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 15:43:05 -0400 Subject: [PATCH 074/100] Disassemble dig up item script --- asm/field_specials.s | 6 +++--- data/map_event_scripts.inc | 31 ++++++++++++++++++++++++++++--- data/specials.inc | 2 +- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/asm/field_specials.s b/asm/field_specials.s index 83608fccf..8d91064e8 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -185,8 +185,8 @@ sub_80CA74C: @ 80CA74C _080CA754: .4byte gBattleOutcome thumb_func_end sub_80CA74C - thumb_func_start sub_80CA758 -sub_80CA758: @ 80CA758 + thumb_func_start Special_SetHiddenItemFlag +Special_SetHiddenItemFlag: @ 80CA758 push {lr} ldr r0, _080CA768 @ =gSpecialVar_0x8004 ldrh r0, [r0] @@ -195,7 +195,7 @@ sub_80CA758: @ 80CA758 bx r0 .align 2, 0 _080CA768: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80CA758 + thumb_func_end Special_SetHiddenItemFlag thumb_func_start sub_80CA76C sub_80CA76C: @ 80CA76C diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index 0695499a9..233b73349 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1795,7 +1795,7 @@ EventScript_ItemInPocketMessage:: waitfanfare waitmessage msgbox gUnknown_81A5218 - special sub_80CA758 + special Special_SetHiddenItemFlag releaseall end @@ -1834,7 +1834,7 @@ EventScript_PickUpHiddenCoins:: waitfanfare waitmessage msgbox Text_1A526C - special sub_80CA758 + special Special_SetHiddenItemFlag releaseall end @@ -2354,7 +2354,32 @@ VermilionCity_PokemonCenter_1F_EventScript_1A8D08:: @ 81A8D08 .incbin "baserom.gba", 0x1A8D08, 0x41 EventScript_ItemfinderDigUpUnderfootItem:: @ 81A8D49 - .incbin "baserom.gba", 0x1A8D49, 0x4E + lockall + textcolor 3 + waitse + call EventScript_GiveItem + compare_var_to_value VAR_0x8007, 1 + goto_if_eq EventScript_DigUpItemPutInPocket + compare_var_to_value VAR_0x8007, 0 + goto_if_eq EventScript_DigUpItemBagIsFull + end + +EventScript_DigUpItemPutInPocket:: + message Text_1A5700 + waitfanfare + waitmessage + delay 60 + msgbox gUnknown_81A5218 + special Special_SetHiddenItemFlag + releaseall + end + +EventScript_DigUpItemBagIsFull:: + msgbox Text_1A5700 + msgbox gUnknown_81A5242 + setvar VAR_RESULT, 0 + releaseall + end gUnknown_81A8D97:: @ 81A8D97 .incbin "baserom.gba", 0x1A8D97, 0x41 diff --git a/data/specials.inc b/data/specials.inc index 13809e274..c99d484d4 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -159,7 +159,7 @@ gSpecials:: @ 815FD60 def_special sub_80CA6BC def_special sub_80CA6DC def_special sub_80CA714 - def_special sub_80CA758 + def_special Special_SetHiddenItemFlag def_special nullsub_75 def_special nullsub_75 def_special Overworld_PlaySpecialMapMusic From 1f6f5f369bcb2ab28d0fb73b358d075fdc195ba5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 12:55:48 -0400 Subject: [PATCH 075/100] wild_pokemon_area and pokedex_area_markers --- asm/field_specials.s | 6 +- asm/macros.inc | 5 +- asm/pokedex_area_markers.s | 357 ------------------ asm/pokedex_screen.s | 2 +- asm/wild_encounter.s | 52 +-- asm/wild_pokemon_area.s | 380 -------------------- data/data_835B488.s | 2 +- data/map_event_scripts.inc | 2 +- data/maps/PalletTown_GarysHouse/scripts.inc | 2 +- data/pokedex_area_markers.s | 14 - data/pokedex_area_markers/marker.png | Bin 0 -> 354 bytes data/wild_pokemon_area.s | 14 - include/constants/vars.h | 4 +- include/field_specials.h | 1 + include/gba/types.h | 4 + include/pokedex_area_markers.h | 16 + include/roamer.h | 1 + include/wild_pokemon_area.h | 6 + ld_script.txt | 8 +- src/pokedex_area_markers.c | 238 ++++++++++++ src/wild_pokemon_area.c | 308 ++++++++++++++++ 21 files changed, 615 insertions(+), 807 deletions(-) delete mode 100644 asm/pokedex_area_markers.s delete mode 100644 asm/wild_pokemon_area.s delete mode 100644 data/pokedex_area_markers.s create mode 100644 data/pokedex_area_markers/marker.png delete mode 100644 data/wild_pokemon_area.s create mode 100644 include/pokedex_area_markers.h create mode 100644 include/wild_pokemon_area.h create mode 100644 src/pokedex_area_markers.c create mode 100644 src/wild_pokemon_area.c diff --git a/asm/field_specials.s b/asm/field_specials.s index 8d91064e8..c0294fcac 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3665,8 +3665,8 @@ sub_80CC1E4: @ 80CC1E4 _080CC200: .4byte gSaveBlock2Ptr thumb_func_end sub_80CC1E4 - thumb_func_start sub_80CC204 -sub_80CC204: @ 80CC204 + thumb_func_start GetUnlockedSeviiAreas +GetUnlockedSeviiAreas: @ 80CC204 push {r4,lr} movs r4, 0 ldr r0, _080CC2A4 @ =0x0000089b @@ -3753,7 +3753,7 @@ _080CC2AC: .4byte 0x0000089d _080CC2B0: .4byte 0x0000089e _080CC2B4: .4byte 0x0000089f _080CC2B8: .4byte 0x000008a1 - thumb_func_end sub_80CC204 + thumb_func_end GetUnlockedSeviiAreas thumb_func_start sub_80CC2BC sub_80CC2BC: @ 80CC2BC diff --git a/asm/macros.inc b/asm/macros.inc index e6813d319..4eae2cccc 100644 --- a/asm/macros.inc +++ b/asm/macros.inc @@ -65,10 +65,9 @@ .endm .macro subsprite x, y, priority, tile_num_offset, size - .2byte \x - .2byte \y + .byte \x + .byte \y .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size - .2byte 0 @ padding .endm .macro obj_image_anim_frame pic_id, duration, flags = 0 diff --git a/asm/pokedex_area_markers.s b/asm/pokedex_area_markers.s deleted file mode 100644 index d6ea7f251..000000000 --- a/asm/pokedex_area_markers.s +++ /dev/null @@ -1,357 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8134200 -sub_8134200: @ 8134200 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08134228 @ =gTasks+0x8 - adds r1, r0 - ldr r2, _0813422C @ =gSprites - ldrb r1, [r1, 0xD] - 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 - strb r1, [r0] - bx lr - .align 2, 0 -_08134228: .4byte gTasks+0x8 -_0813422C: .4byte gSprites - thumb_func_end sub_8134200 - - thumb_func_start sub_8134230 -sub_8134230: @ 8134230 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - mov r9, r0 - mov r8, r2 - adds r6, r3, 0 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 16 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _081343C4 @ =gUnknown_846343C - str r0, [sp, 0x20] - ldr r3, _081343C8 @ =0xffff0000 - add r0, sp, 0x20 - ldr r2, [r0, 0x4] - ands r2, r3 - movs r3, 0x94 - lsls r3, 3 - orrs r2, r3 - lsrs r7, r1, 16 - ldr r5, _081343CC @ =0x0000ffff - ands r2, r5 - orrs r2, r1 - str r2, [r0, 0x4] - bl LoadCompressedSpriteSheet - ldr r0, _081343D0 @ =gUnknown_846341C - mov r3, r8 - lsls r3, 4 - mov r8, r3 - movs r1, 0x80 - lsls r1, 1 - add r1, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _081343D4 @ =sub_8134200 - movs r1, 0 - bl CreateTask - mov r10, r0 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r4, r0, 2 - add r4, r10 - lsls r4, 3 - ldr r0, _081343D8 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - strb r0, [r4, 0xC] - strh r7, [r4, 0xE] - ldrh r0, [r4, 0x10] - orrs r5, r0 - strh r5, [r4, 0x10] - movs r0, 0xF0 - lsls r0, 1 - bl Alloc - adds r1, r0, 0 - str r1, [r4, 0x8] - str r1, [r4, 0x4] - mov r0, r9 - bl sub_813C9DC - strb r0, [r4] - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _081343DC @ =0x00002f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _081343E0 @ =0x0000080c - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r1, _081343E4 @ =0x00001f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _081343E8 @ =0x00002f3d - movs r0, 0x4A - bl SetGpuReg - add r1, sp, 0x8 - ldr r0, _081343EC @ =gDummySpriteTemplate - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - add r0, sp, 0x8 - strh r7, [r0] - adds r6, 0x20 - movs r1, 0x68 - adds r2, r6, 0 - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xD] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _081343F0 @ =gSprites - adds r0, r5 - adds r1, r4, 0 - bl SetSubspriteTables - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x1] - ldrb r0, [r4, 0xD] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x42 - ldrb r2, [r0] - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0x1 - bl HideBg - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0xF - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl ShowBg - mov r0, r10 - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081343C4: .4byte gUnknown_846343C -_081343C8: .4byte 0xffff0000 -_081343CC: .4byte 0x0000ffff -_081343D0: .4byte gUnknown_846341C -_081343D4: .4byte sub_8134200 -_081343D8: .4byte gTasks+0x8 -_081343DC: .4byte 0x00002f42 -_081343E0: .4byte 0x0000080c -_081343E4: .4byte 0x00001f1f -_081343E8: .4byte 0x00002f3d -_081343EC: .4byte gDummySpriteTemplate -_081343F0: .4byte gSprites - thumb_func_end sub_8134230 - - thumb_func_start sub_81343F4 -sub_81343F4: @ 81343F4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _08134498 @ =gTasks+0x8 - adds r4, r0 - ldrh r0, [r4, 0xE] - bl FreeSpriteTilesByTag - ldrb r1, [r4, 0xD] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813449C @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r0, [r4, 0x8] - bl Free - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r4, _081344A0 @ =0x00001f1f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x1 - bl HideBg - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x2 - bl SetBgAttribute - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl ShowBg - adds r0, r5, 0 - bl DestroyTask - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08134498: .4byte gTasks+0x8 -_0813449C: .4byte gSprites -_081344A0: .4byte 0x00001f1f - thumb_func_end sub_81343F4 - - thumb_func_start sub_81344A4 -sub_81344A4: @ 81344A4 - push {r4,lr} - lsls r0, 2 - adds r0, r2 - ldr r4, _081344D8 @ =gUnknown_8463564 - ldr r3, _081344DC @ =gUnknown_8463580 - lsls r1, 2 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r2, 2 - adds r2, r4 - ldr r2, [r2] - ldr r2, [r2] - str r2, [r0] - adds r2, r3, 0x1 - adds r2, r1, r2 - ldrb r2, [r2] - strb r2, [r0] - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - strb r1, [r0, 0x1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081344D8: .4byte gUnknown_8463564 -_081344DC: .4byte gUnknown_8463580 - thumb_func_end sub_81344A4 - - thumb_func_start sub_81344E0 -sub_81344E0: @ 81344E0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081344F4 @ =gTasks+0x8 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_081344F4: .4byte gTasks+0x8 - thumb_func_end sub_81344E0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 1a7cd0a2e..2f0682c94 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -7412,7 +7412,7 @@ sub_810603C: @ 810603C movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect_Palette0 - bl sub_80CC204 + bl GetUnlockedSeviiAreas ldr r1, [r6] adds r1, 0x64 strb r0, [r1] diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index e9fb8a630..c43ebf0a9 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -298,7 +298,7 @@ _0808290C: sub_8082934: @ 8082934 push {r4-r6,lr} movs r4, 0 - ldr r0, _08082990 @ =gUnknown_83C9CB8 + ldr r0, _08082990 @ =gWildMonHeaders ldrb r1, [r0] adds r5, r0, 0 cmp r1, 0xFF @@ -343,7 +343,7 @@ _08082980: adds r0, r4, 0 b _080829B6 .align 2, 0 -_08082990: .4byte gUnknown_83C9CB8 +_08082990: .4byte gWildMonHeaders _08082994: .4byte 0x00007a01 _08082998: .4byte gSaveBlock1Ptr _0808299C: .4byte 0x00004024 @@ -799,7 +799,7 @@ _08082CE4: bl sub_8058F1C cmp r0, 0x1 bne _08082D78 - ldr r1, _08082D4C @ =gUnknown_83C9CB8 + ldr r1, _08082D4C @ =gWildMonHeaders lsls r2, r4, 2 adds r0, r2, r4 lsls r0, 2 @@ -822,7 +822,7 @@ _08082D06: bne _08082D1E b _08082E46 _08082D1E: - ldr r1, _08082D4C @ =gUnknown_83C9CB8 + ldr r1, _08082D4C @ =gWildMonHeaders adds r0, r5, r4 lsls r0, 2 adds r1, 0x4 @@ -843,7 +843,7 @@ _08082D3A: .align 2, 0 _08082D44: .4byte gUnknown_20386DC _08082D48: .4byte 0x0000ffff -_08082D4C: .4byte gUnknown_83C9CB8 +_08082D4C: .4byte gWildMonHeaders _08082D50: bl TryStartRoamerEncounter lsls r0, 24 @@ -884,7 +884,7 @@ _08082D78: cmp r0, 0x1 bne _08082E46 _08082DA8: - ldr r1, _08082E18 @ =gUnknown_83C9CB8 + ldr r1, _08082E18 @ =gWildMonHeaders lsls r2, r4, 2 adds r0, r2, r4 lsls r0, 2 @@ -904,7 +904,7 @@ _08082DA8: cmp r0, 0 beq _08082E46 _08082DD2: - ldr r1, _08082E18 @ =gUnknown_83C9CB8 + ldr r1, _08082E18 @ =gWildMonHeaders adds r0, r5, r4 lsls r0, 2 adds r1, 0x8 @@ -936,7 +936,7 @@ _08082DFA: movs r0, 0x1 b _08082E48 .align 2, 0 -_08082E18: .4byte gUnknown_83C9CB8 +_08082E18: .4byte gWildMonHeaders _08082E1C: .4byte gSaveBlock1Ptr _08082E20: .4byte 0x000030d0 _08082E24: @@ -975,7 +975,7 @@ sub_8082E54: @ 8082E54 ldr r0, _08082EA4 @ =0x0000ffff cmp r2, r0 beq _08082EB0 - ldr r1, _08082EA8 @ =gUnknown_83C9CB8 + ldr r1, _08082EA8 @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1006,7 +1006,7 @@ _08082E9C: b _08082EB6 .align 2, 0 _08082EA4: .4byte 0x0000ffff -_08082EA8: .4byte gUnknown_83C9CB8 +_08082EA8: .4byte gWildMonHeaders _08082EAC: .4byte gSpecialVar_Result _08082EB0: ldr r1, _08082EBC @ =gSpecialVar_Result @@ -1049,7 +1049,7 @@ SweetScentWildEncounter: @ 8082EC0 lsrs r0, 24 cmp r0, 0x1 beq _08082F3C - ldr r1, _08082F18 @ =gUnknown_83C9CB8 + ldr r1, _08082F18 @ =gWildMonHeaders lsls r0, r5, 2 adds r0, r5 lsls r0, 2 @@ -1062,7 +1062,7 @@ SweetScentWildEncounter: @ 8082EC0 b _08082F58 .align 2, 0 _08082F14: .4byte 0x0000ffff -_08082F18: .4byte gUnknown_83C9CB8 +_08082F18: .4byte gWildMonHeaders _08082F1C: mov r0, sp movs r1, 0 @@ -1083,7 +1083,7 @@ _08082F3C: movs r0, 0x1 b _08082F6E _08082F44: - ldr r1, _08082F68 @ =gUnknown_83C9CB8 + ldr r1, _08082F68 @ =gWildMonHeaders lsls r0, r5, 2 adds r0, r5 lsls r0, 2 @@ -1100,7 +1100,7 @@ _08082F58: movs r0, 0x1 b _08082F6E .align 2, 0 -_08082F68: .4byte gUnknown_83C9CB8 +_08082F68: .4byte gWildMonHeaders _08082F6C: movs r0, 0 _08082F6E: @@ -1119,7 +1119,7 @@ sub_8082F78: @ 8082F78 ldr r0, _08082FA0 @ =0x0000ffff cmp r2, r0 beq _08082FA8 - ldr r0, _08082FA4 @ =gUnknown_83C9CB8 + ldr r0, _08082FA4 @ =gWildMonHeaders lsls r1, r2, 2 adds r1, r2 lsls r1, 2 @@ -1132,7 +1132,7 @@ sub_8082F78: @ 8082F78 b _08082FAA .align 2, 0 _08082FA0: .4byte 0x0000ffff -_08082FA4: .4byte gUnknown_83C9CB8 +_08082FA4: .4byte gWildMonHeaders _08082FA8: movs r0, 0 _08082FAA: @@ -1146,7 +1146,7 @@ sub_8082FB0: @ 8082FB0 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r4, _08082FE4 @ =gUnknown_83C9CB8 + ldr r4, _08082FE4 @ =gWildMonHeaders bl sub_8082934 lsls r0, 16 lsrs r0, 16 @@ -1165,7 +1165,7 @@ sub_8082FB0: @ 8082FB0 pop {r0} bx r0 .align 2, 0 -_08082FE4: .4byte gUnknown_83C9CB8 +_08082FE4: .4byte gWildMonHeaders thumb_func_end sub_8082FB0 thumb_func_start GetLocalWildMon @@ -1180,7 +1180,7 @@ GetLocalWildMon: @ 8082FE8 ldr r0, _08083020 @ =0x0000ffff cmp r3, r0 beq _0808301A - ldr r2, _08083024 @ =gUnknown_83C9CB8 + ldr r2, _08083024 @ =gWildMonHeaders lsls r1, r3, 2 adds r1, r3 lsls r1, 2 @@ -1199,7 +1199,7 @@ _0808301A: b _0808306E .align 2, 0 _08083020: .4byte 0x0000ffff -_08083024: .4byte gUnknown_83C9CB8 +_08083024: .4byte gWildMonHeaders _08083028: cmp r4, 0 bne _0808303C @@ -1250,7 +1250,7 @@ GetLocalWaterMon: @ 8083074 ldr r0, _080830A8 @ =0x0000ffff cmp r2, r0 beq _080830B0 - ldr r1, _080830AC @ =gUnknown_83C9CB8 + ldr r1, _080830AC @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1268,7 +1268,7 @@ GetLocalWaterMon: @ 8083074 b _080830B2 .align 2, 0 _080830A8: .4byte 0x0000ffff -_080830AC: .4byte gUnknown_83C9CB8 +_080830AC: .4byte gWildMonHeaders _080830B0: movs r0, 0 _080830B2: @@ -1513,7 +1513,7 @@ sub_808324C: @ 808324C beq _080832CC cmp r4, 0x1 bne _0808328C - ldr r1, _08083288 @ =gUnknown_83C9CB8 + ldr r1, _08083288 @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1530,11 +1530,11 @@ sub_808324C: @ 808324C b _080832B8 .align 2, 0 _08083284: .4byte 0x0000ffff -_08083288: .4byte gUnknown_83C9CB8 +_08083288: .4byte gWildMonHeaders _0808328C: cmp r5, 0x2 bne _080832CC - ldr r1, _080832AC @ =gUnknown_83C9CB8 + ldr r1, _080832AC @ =gWildMonHeaders lsls r0, r2, 2 adds r0, r2 lsls r0, 2 @@ -1550,7 +1550,7 @@ _080832A8: movs r0, 0 b _080832CE .align 2, 0 -_080832AC: .4byte gUnknown_83C9CB8 +_080832AC: .4byte gWildMonHeaders _080832B0: cmp r1, 0x9 bhi _080832B8 diff --git a/asm/wild_pokemon_area.s b/asm/wild_pokemon_area.s deleted file mode 100644 index 71d8ac8dc..000000000 --- a/asm/wild_pokemon_area.s +++ /dev/null @@ -1,380 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813C9DC -sub_813C9DC: @ 813C9DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r1, [sp, 0x10] - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - bl sub_813CB34 - cmp r0, 0 - blt _0813CA02 - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x10] - bl sub_813CB5C - b _0813CB1A -_0813CA02: - bl sub_80CC204 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - str r0, [sp, 0x18] - ldr r0, _0813CA74 @ =0x00004024 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x1C] - cmp r0, 0x8 - ble _0813CA24 - movs r1, 0 - str r1, [sp, 0x1C] -_0813CA24: - movs r6, 0 - mov r8, r6 - ldr r1, _0813CA78 @ =gUnknown_83C9CB8 - ldrb r0, [r1] - cmp r0, 0xFF - beq _0813CB18 -_0813CA30: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_813CC44 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xB7 - bne _0813CA5A - ldr r2, [sp, 0x18] - adds r2, 0x1 - str r2, [sp, 0x18] - adds r0, r2, 0 - subs r0, 0x1 - adds r1, r6, 0x1 - str r1, [sp, 0x20] - ldr r2, [sp, 0x1C] - cmp r2, r0 - bne _0813CB06 -_0813CA5A: - adds r0, r4, 0 - ldr r1, [sp, 0xC] - bl sub_813CBD0 - adds r6, 0x1 - str r6, [sp, 0x20] - cmp r0, 0 - beq _0813CB06 - movs r0, 0 - str r0, [sp, 0x8] - lsls r7, r5, 16 - add r6, sp, 0x8 - b _0813CA94 - .align 2, 0 -_0813CA74: .4byte 0x00004024 -_0813CA78: .4byte gUnknown_83C9CB8 -_0813CA7C: - add r0, sp, 0x4 - ldrh r0, [r0] - cmp r0, 0 - beq _0813CA94 - mov r0, r8 - movs r1, 0x1 - add r8, r1 - add r1, sp, 0x4 - ldrh r1, [r1] - ldr r2, [sp, 0x10] - bl sub_81344A4 -_0813CA94: - lsrs r0, r7, 16 - add r2, sp, 0x4 - str r2, [sp] - ldr r1, _0813CAC8 @ =gUnknown_8464148 - movs r2, 0x37 - adds r3, r6, 0 - bl sub_813CC58 - cmp r0, 0 - bne _0813CA7C - movs r2, 0 - add r5, sp, 0x4 - ldr r0, _0813CACC @ =gUnknown_84642BC - mov r10, r0 -_0813CAB0: - ldr r0, [sp, 0x14] - asrs r0, r2 - movs r1, 0x1 - ands r0, r1 - adds r1, r2, 0x1 - mov r9, r1 - cmp r0, 0 - beq _0813CB00 - movs r0, 0 - str r0, [sp, 0x8] - lsls r4, r2, 3 - b _0813CAE4 - .align 2, 0 -_0813CAC8: .4byte gUnknown_8464148 -_0813CACC: .4byte gUnknown_84642BC -_0813CAD0: - ldrh r0, [r5] - cmp r0, 0 - beq _0813CAE4 - mov r0, r8 - movs r2, 0x1 - add r8, r2 - ldrh r1, [r5] - ldr r2, [sp, 0x10] - bl sub_81344A4 -_0813CAE4: - mov r1, r10 - adds r0, r4, r1 - ldr r1, [r0] - ldr r2, _0813CB2C @ =gUnknown_84642C0 - adds r0, r4, r2 - ldr r2, [r0] - add r0, sp, 0x4 - str r0, [sp] - lsrs r0, r7, 16 - adds r3, r6, 0 - bl sub_813CC58 - cmp r0, 0 - bne _0813CAD0 -_0813CB00: - mov r2, r9 - cmp r2, 0x6 - bls _0813CAB0 -_0813CB06: - ldr r6, [sp, 0x20] - ldr r1, _0813CB30 @ =gUnknown_83C9CB8 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0813CA30 -_0813CB18: - mov r0, r8 -_0813CB1A: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813CB2C: .4byte gUnknown_84642C0 -_0813CB30: .4byte gUnknown_83C9CB8 - thumb_func_end sub_813C9DC - - thumb_func_start sub_813CB34 -sub_813CB34: @ 813CB34 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0 - ldr r2, _0813CB48 @ =gUnknown_84642F4 -_0813CB3E: - ldrh r0, [r2] - cmp r0, r3 - bne _0813CB4C - adds r0, r1, 0 - b _0813CB58 - .align 2, 0 -_0813CB48: .4byte gUnknown_84642F4 -_0813CB4C: - adds r2, 0x4 - adds r1, 0x1 - cmp r1, 0x2 - bls _0813CB3E - movs r0, 0x1 - negs r0, r0 -_0813CB58: - pop {r1} - bx r1 - thumb_func_end sub_813CB34 - - thumb_func_start sub_813CB5C -sub_813CB5C: @ 813CB5C - push {r4,r5,lr} - sub sp, 0xC - adds r5, r1, 0 - lsls r0, 16 - lsrs r0, 16 - bl sub_813CB34 - adds r4, r0, 0 - cmp r4, 0 - blt _0813CBC4 - ldr r0, _0813CBBC @ =gUnknown_84642F4 - lsls r4, 2 - adds r4, r0 - bl ScrSpecial_GetStarter - ldrh r1, [r4, 0x2] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bne _0813CBC4 - bl GetRoamerLocationMapSectionId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - str r1, [sp, 0x8] - ldr r1, _0813CBC0 @ =gUnknown_8464148 - add r3, sp, 0x8 - add r2, sp, 0x4 - str r2, [sp] - movs r2, 0x37 - bl sub_813CC58 - cmp r0, 0 - beq _0813CBC4 - add r0, sp, 0x4 - ldrh r0, [r0] - cmp r0, 0 - beq _0813CBC4 - add r0, sp, 0x4 - ldrh r1, [r0] - movs r0, 0 - adds r2, r5, 0 - bl sub_81344A4 - movs r0, 0x1 - b _0813CBC6 - .align 2, 0 -_0813CBBC: .4byte gUnknown_84642F4 -_0813CBC0: .4byte gUnknown_8464148 -_0813CBC4: - movs r0, 0 -_0813CBC6: - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_813CB5C - - thumb_func_start sub_813CBD0 -sub_813CBD0: @ 813CBD0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [r4, 0x4] - movs r2, 0xC - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0x8] - adds r1, r5, 0 - movs r2, 0x5 - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0x10] - adds r1, r5, 0 - movs r2, 0xC - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - ldr r0, [r4, 0xC] - adds r1, r5, 0 - movs r2, 0x5 - bl sub_813CC18 - cmp r0, 0 - bne _0813CC10 - movs r0, 0 - b _0813CC12 -_0813CC10: - movs r0, 0x1 -_0813CC12: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_813CBD0 - - thumb_func_start sub_813CC18 -sub_813CC18: @ 813CC18 - push {r4,lr} - adds r4, r1, 0 - cmp r0, 0 - beq _0813CC3A - movs r1, 0 - cmp r1, r2 - bge _0813CC3A - ldr r3, [r0, 0x4] -_0813CC28: - ldrh r0, [r3, 0x2] - cmp r0, r4 - bne _0813CC32 - movs r0, 0x1 - b _0813CC3C -_0813CC32: - adds r3, 0x4 - adds r1, 0x1 - cmp r1, r2 - blt _0813CC28 -_0813CC3A: - movs r0, 0 -_0813CC3C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_813CC18 - - thumb_func_start sub_813CC44 -sub_813CC44: @ 813CC44 - push {lr} - ldrb r2, [r0] - ldrb r1, [r0, 0x1] - adds r0, r2, 0 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - thumb_func_end sub_813CC44 - - thumb_func_start sub_813CC58 -sub_813CC58: @ 813CC58 - push {r4-r6,lr} - adds r4, r2, 0 - ldr r6, [sp, 0x10] - lsls r0, 16 - lsrs r5, r0, 16 - ldr r2, [r3] - cmp r2, r4 - bge _0813CC86 - lsls r0, r2, 2 - adds r1, r0, r1 -_0813CC6C: - ldrh r0, [r1] - cmp r0, r5 - bne _0813CC7E - ldrh r0, [r1, 0x2] - strh r0, [r6] - adds r0, r2, 0x1 - str r0, [r3] - movs r0, 0x1 - b _0813CC88 -_0813CC7E: - adds r1, 0x4 - adds r2, 0x1 - cmp r2, r4 - blt _0813CC6C -_0813CC86: - movs r0, 0 -_0813CC88: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813CC58 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_835B488.s b/data/data_835B488.s index c106c46c4..742224d2b 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -55,7 +55,7 @@ gUnknown_83C7294:: @ 83C7294 gUnknown_83C7388:: @ 83C7388 .incbin "baserom.gba", 0x3C7388, 0x2930 -gUnknown_83C9CB8:: @ 83C9CB8 +gWildMonHeaders:: @ 83C9CB8 .incbin "baserom.gba", 0x3C9CB8, 0xA64 gUnknown_83CA71C:: @ 83CA71C diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index 233b73349..c333c6336 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1485,7 +1485,7 @@ gUnknown_81A6481:: @ 81A6481 setflag FLAG_0x09F setflag FLAG_0x0A0 setflag FLAG_0x0AE - setvar VAR_MIRAGE_RND_L, 500 + setvar VAR_0x4025, 500 end EventScript_1A651A:: @ 81A651A diff --git a/data/maps/PalletTown_GarysHouse/scripts.inc b/data/maps/PalletTown_GarysHouse/scripts.inc index dd3f05aa9..9f304b583 100644 --- a/data/maps/PalletTown_GarysHouse/scripts.inc +++ b/data/maps/PalletTown_GarysHouse/scripts.inc @@ -51,7 +51,7 @@ EventScript_168DB9:: @ 8168DB9 compare_var_to_value VAR_RESULT, 2 goto_if_eq EventScript_1A7AE0 special sub_8112364 - compare_var_to_value VAR_MIRAGE_RND_L, 500 + compare_var_to_value VAR_0x4025, 500 goto_if 0, EventScript_168E46 msgbox gUnknown_818D7D3, MSGBOX_YESNO compare_var_to_value VAR_RESULT, 0 diff --git a/data/pokedex_area_markers.s b/data/pokedex_area_markers.s deleted file mode 100644 index bf63a3210..000000000 --- a/data/pokedex_area_markers.s +++ /dev/null @@ -1,14 +0,0 @@ - .section .rodata - .align 2 - -gUnknown_846341C:: @ 846341C - .incbin "baserom.gba", 0x46341C, 0x20 - -gUnknown_846343C:: @ 846343C - .incbin "baserom.gba", 0x46343C, 0x128 - -gUnknown_8463564:: @ 8463564 - .incbin "baserom.gba", 0x463564, 0x1C - -gUnknown_8463580:: @ 8463580 - .incbin "baserom.gba", 0x463580, 0x140 diff --git a/data/pokedex_area_markers/marker.png b/data/pokedex_area_markers/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..d332c9f469ee3f182fdb1c25d776fe4d7f13b0d3 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^91IMM8Z68}*7RR%t$>t4fKP}kkp6$P_LOY$ig%Hud6HbOe>8bC?P3h$kgVt z%sReuX?fjx-(>0KEU)_-w`A^S{#^D0?5spr_id].invisible = FALSE; +} + +u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) +{ + struct SpriteTemplate spriteTemplate; + struct CompressedSpriteSheet spriteSheet; + u8 taskId; + struct PAM_TaskData * data; + struct Subsprite * subsprites; + + spriteSheet.data = sMarkerTiles; + spriteSheet.size = 0x4A0; + spriteSheet.tag = tilesTag; + LoadCompressedSpriteSheet(&spriteSheet); + LoadPalette(sMarkerPal, 0x100 + 16 * palIdx, 0x20); + taskId = CreateTask(Task_ShowAreaMarkers, 0); + data = (void *)gTasks[taskId].data; + data->unk_0C = 0; + data->tilesTag = tilesTag; + data->unk_10 = 0xFFFF; + subsprites = Alloc(120 * sizeof(struct Subsprite)); + data->buffer = subsprites; + data->subsprites.subsprites = subsprites; + data->subsprites.subspriteCount = BuildPokedexAreaSubspriteBuffer(species, subsprites); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8)); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, 0x1F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x2F3D); + spriteTemplate = gDummySpriteTemplate; + spriteTemplate.tileTag = tilesTag; + data->spr_id = CreateSprite(&spriteTemplate, 104, y + 32, 0); + SetSubspriteTables(&gSprites[data->spr_id], &data->subsprites); + gSprites[data->spr_id].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[data->spr_id].oam.paletteNum = palIdx; + gSprites[data->spr_id].subspriteTableNum = 0; + gSprites[data->spr_id].invisible = TRUE; + HideBg(1); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + FillBgTilemapBufferRect_Palette0(1, 0x00F, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + ShowBg(1); + return taskId; +} + +void sub_81343F4(u8 taskId) +{ + struct PAM_TaskData * data = (void *)gTasks[taskId].data; + FreeSpriteTilesByTag(data->tilesTag); + DestroySprite(&gSprites[data->spr_id]); + Free(data->buffer); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, 0x1F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1F1F); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + HideBg(1); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(1); + ShowBg(1); + DestroyTask(taskId); +} + +void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites) +{ + subsprites[i] = *sSubsprites[sSubspriteLookupTable[whichArea][0]]; + subsprites[i].x = sSubspriteLookupTable[whichArea][1]; + subsprites[i].y = sSubspriteLookupTable[whichArea][2]; +} + +u8 sub_81344E0(u8 taskId) +{ + struct PAM_TaskData * data = (void *)gTasks[taskId].data; + return data->subsprites.subspriteCount; +} diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c new file mode 100644 index 000000000..8654f41f1 --- /dev/null +++ b/src/wild_pokemon_area.c @@ -0,0 +1,308 @@ +#include "global.h" +#include "field_specials.h" +#include "event_data.h" +#include "wild_encounter.h" +#include "roamer.h" +#include "overworld.h" +#include "pokedex_area_markers.h" +#include "constants/vars.h" +#include "constants/region_map.h" +#include "constants/species.h" + +struct SeviiDexArea +{ + const u16 (* lut)[2]; + s32 count; +}; + +struct RoamerPair +{ + u16 roamer; + u16 starter; +}; + +static s32 GetRoamerIndex(u16 species); +static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites); +static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species); +static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * pokemon, s32 species, s32 count); +static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header); +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p); + +static const u16 sDexAreas_Kanto[][2] = { + { MAPSEC_PALLET_TOWN, 1 }, + { MAPSEC_VIRIDIAN_CITY, 2 }, + { MAPSEC_PEWTER_CITY, 3 }, + { MAPSEC_CERULEAN_CITY, 4 }, + { MAPSEC_LAVENDER_TOWN, 5 }, + { MAPSEC_VERMILION_CITY, 6 }, + { MAPSEC_CELADON_CITY, 7 }, + { MAPSEC_FUCHSIA_CITY, 8 }, + { MAPSEC_CINNABAR_ISLAND, 9 }, + { MAPSEC_INDIGO_PLATEAU, 10 }, + { MAPSEC_SAFFRON_CITY, 11 }, + { MAPSEC_ROUTE_4_FLYDUP, 15 }, + { MAPSEC_ROUTE_10_FLYDUP, 21 }, + { MAPSEC_ROUTE_1, 12 }, + { MAPSEC_ROUTE_2, 13 }, + { MAPSEC_ROUTE_3, 14 }, + { MAPSEC_ROUTE_4, 15 }, + { MAPSEC_ROUTE_5, 16 }, + { MAPSEC_ROUTE_6, 17 }, + { MAPSEC_ROUTE_7, 18 }, + { MAPSEC_ROUTE_8, 19 }, + { MAPSEC_ROUTE_9, 20 }, + { MAPSEC_ROUTE_10, 21 }, + { MAPSEC_ROUTE_11, 22 }, + { MAPSEC_ROUTE_12, 23 }, + { MAPSEC_ROUTE_13, 24 }, + { MAPSEC_ROUTE_14, 25 }, + { MAPSEC_ROUTE_15, 26 }, + { MAPSEC_ROUTE_16, 27 }, + { MAPSEC_ROUTE_17, 28 }, + { MAPSEC_ROUTE_18, 29 }, + { MAPSEC_ROUTE_19, 30 }, + { MAPSEC_ROUTE_20, 31 }, + { MAPSEC_ROUTE_21, 32 }, + { MAPSEC_ROUTE_22, 33 }, + { MAPSEC_ROUTE_23, 34 }, + { MAPSEC_ROUTE_24, 35 }, + { MAPSEC_ROUTE_25, 36 }, + { MAPSEC_VIRIDIAN_FOREST, 37 }, + { MAPSEC_MT_MOON, 39 }, + { MAPSEC_S_S_ANNE, 6 }, + { MAPSEC_UNDERGROUND_PATH, 11 }, + { MAPSEC_UNDERGROUND_PATH_2, 11 }, + { MAPSEC_DIGLETTS_CAVE, 38 }, + { MAPSEC_KANTO_VICTORY_ROAD, 47 }, + { MAPSEC_ROCKET_HIDEOUT, 7 }, + { MAPSEC_SILPH_CO, 11 }, + { MAPSEC_POKEMON_MANSION, 46 }, + { MAPSEC_KANTO_SAFARI_ZONE, 44 }, + { MAPSEC_POKEMON_LEAGUE, 47 }, + { MAPSEC_ROCK_TUNNEL, 41 }, + { MAPSEC_SEAFOAM_ISLANDS, 45 }, + { MAPSEC_POKEMON_TOWER, 43 }, + { MAPSEC_CERULEAN_CAVE, 40 }, + { MAPSEC_POWER_PLANT, 42 } +}; + +static const u16 sDexAreas_Sevii1[][2] = { + { MAPSEC_KINDLE_ROAD, 55 }, + { MAPSEC_TREASURE_BEACH, 56 }, + { MAPSEC_ONE_ISLAND, 48 }, + { MAPSEC_MT_EMBER, 72 } +}; + +static const u16 sDexAreas_Sevii2[][2] = { + { MAPSEC_CAPE_BRINK, 57 }, + { MAPSEC_TWO_ISLAND, 49 } +}; + +static const u16 sDexAreas_Sevii3[][2] = { + { MAPSEC_BOND_BRIDGE, 58 }, + { MAPSEC_THREE_ISLE_PORT, 59 }, + { MAPSEC_THREE_ISLAND, 50 }, + { MAPSEC_BERRY_FOREST, 73 }, + { MAPSEC_THREE_ISLE_PATH, 59 } +}; + +static const u16 sDexAreas_Sevii4[][2] = { + { MAPSEC_FOUR_ISLAND, 51 }, + { MAPSEC_ICEFALL_CAVE, 74 } +}; + +static const u16 sDexAreas_Sevii5[][2] = { + { MAPSEC_RESORT_GORGEOUS, 60 }, + { MAPSEC_WATER_LABYRINTH, 61 }, + { MAPSEC_FIVE_ISLE_MEADOW, 62 }, + { MAPSEC_MEMORIAL_PILLAR, 63 }, + { MAPSEC_FIVE_ISLAND, 52 }, + { MAPSEC_ROCKET_WAREHOUSE, 62 }, + { MAPSEC_LOST_CAVE, 75 } +}; + +static const u16 sDexAreas_Sevii6[][2] = { + { MAPSEC_OUTCAST_ISLAND, 64 }, + { MAPSEC_GREEN_PATH, 65 }, + { MAPSEC_WATER_PATH, 66 }, + { MAPSEC_RUIN_VALLEY, 67 }, + { MAPSEC_DOTTED_HOLE, 78 }, + { MAPSEC_PATTERN_BUSH, 77 }, + { MAPSEC_ALTERING_CAVE, 76 } +}; + +static const u16 sDexAreas_Sevii7[][2] = { + { MAPSEC_TRAINER_TOWER, 68 }, + { MAPSEC_CANYON_ENTRANCE, 69 }, + { MAPSEC_SEVAULT_CANYON, 70 }, + { MAPSEC_TANOBY_RUINS, 71 }, + { MAPSEC_MONEAN_CHAMBER, 79 }, + { MAPSEC_LIPTOO_CHAMBER, 79 }, + { MAPSEC_WEEPTH_CHAMBER, 79 }, + { MAPSEC_DILFORD_CHAMBER, 79 }, + { MAPSEC_SCUFIB_CHAMBER, 79 }, + { MAPSEC_RIXY_CHAMBER, 79 }, + { MAPSEC_VIAPOIS_CHAMBER, 79 } +}; + +static const struct SeviiDexArea sSeviiDexAreas[] = { + { sDexAreas_Sevii1, 4 }, + { sDexAreas_Sevii2, 2 }, + { sDexAreas_Sevii3, 5 }, + { sDexAreas_Sevii4, 2 }, + { sDexAreas_Sevii5, 7 }, + { sDexAreas_Sevii6, 7 }, + { sDexAreas_Sevii7, 11 } +}; + +static const struct RoamerPair sRoamerPairs[] = { + { SPECIES_ENTEI, SPECIES_BULBASAUR }, + { SPECIES_SUICUNE, SPECIES_CHARMANDER }, + { SPECIES_RAIKOU, SPECIES_SQUIRTLE } +}; + +s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites) +{ + s32 areaCount; + s32 j; + s32 mapSecId; + u16 dexAreaSubspriteIdx; + s32 dexAreaEntryLUTidx; + s32 seviiAreas; + s32 alteringCaveCount; + s32 alteringCaveNum; + s32 i; + + if (GetRoamerIndex(species) >= SPECIES_NONE) + { + return CountRoamerNests(species, subsprites); + } + + seviiAreas = GetUnlockedSeviiAreas(); + alteringCaveCount = 0; + alteringCaveNum = VarGet(VAR_0x4024); + if (alteringCaveNum > 8) + alteringCaveNum = 0; + for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++) + { + mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]); + if (mapSecId == MAPSEC_ALTERING_CAVE) + { + alteringCaveCount++; + if (alteringCaveNum != alteringCaveCount - 1) + continue; + } + if (PokemonInAnyEncounterTableInMap(&gWildMonHeaders[i], species)) + { + dexAreaEntryLUTidx = 0; + while (TryGetMapSecPokedexAreaEntry(mapSecId, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites); + } + } + for (j = 0; j < NELEMS(sSeviiDexAreas); j++) + { + if ((seviiAreas >> j) & 1) + { + dexAreaEntryLUTidx = 0; + while (TryGetMapSecPokedexAreaEntry(mapSecId, sSeviiDexAreas[j].lut, sSeviiDexAreas[j].count, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites); + } + } + } + } + } + } + + return areaCount; +} + +static s32 GetRoamerIndex(u16 species) +{ + s32 i; + for (i = 0; i < 3u; i++) + { + if (sRoamerPairs[i].roamer == species) + return i; + } + + return -1; +} + +static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites) +{ + u16 roamerLocation; + s32 roamerIdx; + u16 dexAreaSubspriteIdx; + s32 dexAreaEntryLUTidx; + + roamerIdx = GetRoamerIndex(species); + if (roamerIdx < 0) + return 0; + if (sRoamerPairs[roamerIdx].starter != ScrSpecial_GetStarter()) + return 0; + roamerLocation = GetRoamerLocationMapSectionId(); + dexAreaEntryLUTidx = 0; + if (TryGetMapSecPokedexAreaEntry(roamerLocation, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx)) + { + if (dexAreaSubspriteIdx != 0) + { + SetAreaSubsprite(0, dexAreaSubspriteIdx, subsprites); + return 1; + } + } + return 0; +} + +static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species) +{ + if (PokemonInEncounterTable(data->landMonsInfo, species, 12)) + return TRUE; + if (PokemonInEncounterTable(data->waterMonsInfo, species, 5)) + return TRUE; + if (PokemonInEncounterTable(data->fishingMonsInfo, species, 12)) + return TRUE; + if (PokemonInEncounterTable(data->rockSmashMonsInfo, species, 5)) + return TRUE; + + return FALSE; +} + +static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * info, s32 species, s32 count) +{ + s32 i; + if (info != NULL) + { + for (i = 0; i < count; i++) + { + if (info->wildPokemon[i].species == species) + return TRUE; + } + } + return FALSE; +} + +static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header) +{ + return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId; +} + +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p) +{ + s32 i; + for (i = *lut_i_p; i < count; i++) + { + if (lut[i][0] == mapSecId) + { + *table_idx_p = lut[i][1]; + *lut_i_p = i + 1; + return TRUE; + } + } + return FALSE; +} From 136464ce9448c43273422b1142642755c658e175 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 13:19:45 -0400 Subject: [PATCH 076/100] Update Makefile rules to correctly detect changes in berry fix mb --- Makefile | 59 ++++++++++++++++------------------ tools/asmdiff.sh => asmdiff.sh | 4 +-- berry_fix/Makefile | 19 +++++++---- berry_fix/payload/Makefile | 12 +++++-- tools/br_ips/Makefile | 3 ++ 5 files changed, 56 insertions(+), 41 deletions(-) rename tools/asmdiff.sh => asmdiff.sh (50%) diff --git a/Makefile b/Makefile index 3f87a910d..1e8dc6e9f 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := tools/binutils/bin/arm-none-eabi-ld @@ -84,8 +86,6 @@ JSONPROC := tools/jsonproc/jsonproc # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: rom tools clean compare tidy - $(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR) $(SONG_BUILDDIR)) infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -113,6 +113,12 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) +TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*)) +TOOLBASE = $(TOOLDIRS:tools/%=%) +TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) + +.PHONY: all rom tools clean-tools mostlyclean clean compare tidy berry_fix $(TOOLDIRS) + MAKEFLAGS += --no-print-directory AUTO_GEN_TARGETS := @@ -120,25 +126,20 @@ AUTO_GEN_TARGETS := all: rom rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif -tools: - @$(MAKE) -C tools/gbagfx - @$(MAKE) -C tools/scaninc - @$(MAKE) -C tools/preproc - @$(MAKE) -C tools/bin2c - @$(MAKE) -C tools/rsfont - @$(MAKE) -C tools/aif2pcm - @$(MAKE) -C tools/ramscrgen - @$(MAKE) -C tools/mid2agb - @$(MAKE) -C tools/gbafix - @$(MAKE) -C tools/mapjson - @$(MAKE) -C tools/jsonproc +tools: $(TOOLDIRS) + +$(TOOLDIRS): + @$(MAKE) -C $@ # For contributors to make sure a change didn't affect the contents of the ROM. -compare: rom - @$(SHA1) rom.sha1 +compare: + @$(MAKE) COMPARE=1 -clean: tidy +mostlyclean: tidy rm -f sound/direct_sound_samples/*.bin rm -f $(SONG_OBJS) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + @@ -147,17 +148,11 @@ clean: tidy find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + rm -f $(AUTO_GEN_TARGETS) @$(MAKE) clean -C berry_fix - @$(MAKE) clean -C tools/gbagfx - @$(MAKE) clean -C tools/scaninc - @$(MAKE) clean -C tools/preproc - @$(MAKE) clean -C tools/bin2c - @$(MAKE) clean -C tools/rsfont - @$(MAKE) clean -C tools/aif2pcm - @$(MAKE) clean -C tools/ramscrgen - @$(MAKE) clean -C tools/mid2agb - @$(MAKE) clean -C tools/gbafix - @$(MAKE) clean -C tools/mapjson - @$(MAKE) clean -C tools/jsonproc + +clean-tools: + @$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);) + +clean: mostlyclean clean-tools tidy: rm -f $(ROM) $(ELF) $(MAP) @@ -242,12 +237,14 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -berry_fix/berry_fix.gba: - @$(MAKE) -C berry_fix +berry_fix/berry_fix.gba: berry_fix + +berry_fix: + @$(MAKE) -C berry_fix COMPARE=$(COMPARE) diff --git a/tools/asmdiff.sh b/asmdiff.sh similarity index 50% rename from tools/asmdiff.sh rename to asmdiff.sh index a8114dc4f..d4627c007 100755 --- a/tools/asmdiff.sh +++ b/asmdiff.sh @@ -1,7 +1,7 @@ #!/bin/bash -OBJDUMP="./tools/binutils/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" -OPTIONS="--start-address=$1 --stop-address=$2" +OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" $OBJDUMP $OPTIONS baserom.gba > baserom.dump $OBJDUMP $OPTIONS pokefirered.gba > pokefirered.dump diff -u baserom.dump pokefirered.dump diff --git a/berry_fix/Makefile b/berry_fix/Makefile index feb92a026..44e816c52 100644 --- a/berry_fix/Makefile +++ b/berry_fix/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := ../tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := ../tools/binutils/bin/arm-none-eabi-ld @@ -57,7 +59,7 @@ FIX := ../tools/gbafix/gbafix$(EXE) # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: rom clean compare tidy +.PHONY: all rom clean compare tidy payload C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) @@ -81,11 +83,16 @@ SUBDIRS := $(sort $(dir $(OBJS))) $(shell mkdir -p $(SUBDIRS)) +all: payload rom + @: + rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif # For contributors to make sure a change didn't affect the contents of the ROM. -compare: $(ROM) - @$(SHA1) rom.sha1 +compare: ; @$(MAKE) COMPARE=1 clean: tidy rm -f sound/direct_sound_samples/*.bin @@ -138,10 +145,10 @@ else $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) endif -payload: data/payload.gba.lz +payload: + @$(MAKE) -C payload COMPARE=$(COMPARE) -payload/payload.gba: - $(MAKE) -C payload/ +payload/payload.gba: payload data/payload.gba.lz: payload/payload.gba $(GFX) $< $@ -search 1 diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile index 5cca8a157..dabbe4582 100644 --- a/berry_fix/payload/Makefile +++ b/berry_fix/payload/Makefile @@ -1,3 +1,5 @@ +COMPARE ?= 0 + AS := ../../tools/binutils/bin/arm-none-eabi-as CPP := $(CC) -E LD := ../../tools/binutils/bin/arm-none-eabi-ld @@ -85,11 +87,17 @@ $(C_BUILDDIR)/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork $(C_BUILDDIR)/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork $(C_BUILDDIR)/agb_flash_le.o: CC1FLAGS := -O1 -mthumb-interwork +all: rom + @: + rom: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1) rom.sha1 +endif # For contributors to make sure a change didn't affect the contents of the ROM. -compare: $(ROM) - @$(SHA1) rom.sha1 +compare: + @$(MAKE) COMPARE=1 clean: tidy rm -f sound/direct_sound_samples/*.bin diff --git a/tools/br_ips/Makefile b/tools/br_ips/Makefile index e80e2576b..d4e8dcecc 100644 --- a/tools/br_ips/Makefile +++ b/tools/br_ips/Makefile @@ -1,7 +1,10 @@ CC := gcc CFLAGS := -O3 +.PHONY: all + all: br_ips ips_patch + @: clean: rm -f br_ips ips_patch br_ips.exe ips_patch.exe From 7e8bff29bb34a9a233172ef738f9fc7ce1a1b833 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 15:45:26 -0400 Subject: [PATCH 077/100] review comments; br_ips std=c99 --- Makefile | 2 +- src/wild_pokemon_area.c | 4 ++-- tools/br_ips/Makefile | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 1e8dc6e9f..245a1a16a 100644 --- a/Makefile +++ b/Makefile @@ -123,7 +123,7 @@ MAKEFLAGS += --no-print-directory AUTO_GEN_TARGETS := -all: rom +all: tools rom rom: $(ROM) ifeq ($(COMPARE),1) diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index 8654f41f1..66637abfa 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -11,7 +11,7 @@ struct SeviiDexArea { - const u16 (* lut)[2]; + const u16 (*lut)[2]; s32 count; }; @@ -225,7 +225,7 @@ s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites) static s32 GetRoamerIndex(u16 species) { s32 i; - for (i = 0; i < 3u; i++) + for (i = 0; i < NELEMS(sRoamerPairs); i++) { if (sRoamerPairs[i].roamer == species) return i; diff --git a/tools/br_ips/Makefile b/tools/br_ips/Makefile index d4e8dcecc..8b6ad51bf 100644 --- a/tools/br_ips/Makefile +++ b/tools/br_ips/Makefile @@ -1,5 +1,5 @@ CC := gcc -CFLAGS := -O3 +CFLAGS := -O3 -std=c99 .PHONY: all From 13416f5109fad762adba5eaa3b2a06e27cd15d31 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 15:57:16 -0400 Subject: [PATCH 078/100] Split pokedex area markers --- data/pokedex_area_markers/marker.pal | 19 +++++++++++++++++++ data/pokedex_area_markers/marker.png | Bin 354 -> 0 bytes data/pokedex_area_markers/marker_0.png | Bin 0 -> 157 bytes data/pokedex_area_markers/marker_1.png | Bin 0 -> 165 bytes data/pokedex_area_markers/marker_2.png | Bin 0 -> 165 bytes data/pokedex_area_markers/marker_3.png | Bin 0 -> 175 bytes data/pokedex_area_markers/marker_4.png | Bin 0 -> 177 bytes data/pokedex_area_markers/marker_5.png | Bin 0 -> 180 bytes data/pokedex_area_markers/marker_6.png | Bin 0 -> 186 bytes graphics_file_rules.mk | 14 ++++++++++++++ src/wild_pokemon_area.c | 10 +++++----- 11 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 data/pokedex_area_markers/marker.pal delete mode 100644 data/pokedex_area_markers/marker.png create mode 100644 data/pokedex_area_markers/marker_0.png create mode 100644 data/pokedex_area_markers/marker_1.png create mode 100644 data/pokedex_area_markers/marker_2.png create mode 100644 data/pokedex_area_markers/marker_3.png create mode 100644 data/pokedex_area_markers/marker_4.png create mode 100644 data/pokedex_area_markers/marker_5.png create mode 100644 data/pokedex_area_markers/marker_6.png diff --git a/data/pokedex_area_markers/marker.pal b/data/pokedex_area_markers/marker.pal new file mode 100644 index 000000000..5a7190a3a --- /dev/null +++ b/data/pokedex_area_markers/marker.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 197 115 +255 139 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/data/pokedex_area_markers/marker.png b/data/pokedex_area_markers/marker.png deleted file mode 100644 index d332c9f469ee3f182fdb1c25d776fe4d7f13b0d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^91IMM8Z68}*7RR%t$>t4fKP}kkp6$P_LOY$ig%Hud6HbOe>8bC?P3h$kgVt z%sReuX?fjx-(>0KEU)_-w`A^S{#^D0?5zopr0A%VMg8%>k literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_1.png b/data/pokedex_area_markers/marker_1.png new file mode 100644 index 0000000000000000000000000000000000000000..21db66b29f0b9ff557dd29ebc5ae0cec46d0434f GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!VDytB9fK>DT4r?5LY1m|7h|5Zc8A87%-`e z!3?O5u_VYZn8D%MjWi%f+0(@_gkxrMLPA1NP*4H`ld1v3XGaG{Ee4S$;|DZRaQU(D&A+A9B|Iy` zgBegAV@Z%-FoVOh8)-m}vZsq<2*=FigoL1kgoJ>gBp@Rw$U$jJ1A}?vGKn096B-Qv WRM--YwpoH4!QkoY=d#Wzp$P!5iXe#q literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_3.png b/data/pokedex_area_markers/marker_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8fe22d23ec779ae3702434aef88b7fedb7b6ce GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f3*02w*?YcA~7{NK|x%Dkx^*6Cnt}{gr$lMu5t_AJUM+i+Zfu! hc$^K_9xai`WMD8k$GtJ~gQGRbHcwYSmvv4FO#oLqArJrn literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_4.png b/data/pokedex_area_markers/marker_4.png new file mode 100644 index 0000000000000000000000000000000000000000..193697384439be1e0b37a153c6ef0e86a8b4fa4a GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!VDx|E`RzTNErn9gt!9f|3{1ecUuA(#DGa% z3}!%ej3q&S!3+-1ZlnP@`kpS1Are!Q6BPIiG#wxfx6$VyLFKbLh*2~7YYP9o+2 literal 0 HcmV?d00001 diff --git a/data/pokedex_area_markers/marker_6.png b/data/pokedex_area_markers/marker_6.png new file mode 100644 index 0000000000000000000000000000000000000000..439d858e13756c7224dff235c2d6958d3776654b GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!VDx|E`RzTNErn9gt!9f|3{1ecUuA(#DGa% z3}!%ej3q&S!3+-1ZlnP@7M?DSAre!Q6M!Hnp@BhFmE-J^B}*Dk1q3ynN;H_^z{C27 sM^$x2)+*zUjk5iZH~tWjzopr09bh~ApigX literal 0 HcmV?d00001 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index c5571394e..60bf4c73b 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -501,3 +501,17 @@ $(TITLESCREENGFXDIR)/unk_8ead608.4bpp: %.4bpp: %.png $(CREDITSGFXDIR)/unk_8EAE548.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 + +POKEDEXAREAMARKERSDATADIR := data/pokedex_area_markers + +POKEDEXAREAMARKERFILES := \ + $(POKEDEXAREAMARKERSDATADIR)/marker_0.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_1.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_2.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_3.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_4.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_5.4bpp \ + $(POKEDEXAREAMARKERSDATADIR)/marker_6.4bpp + +$(POKEDEXAREAMARKERSDATADIR)/marker.4bpp: $(POKEDEXAREAMARKERFILES) + cat $^ > $@ diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index 66637abfa..5ea9d1610 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -26,7 +26,7 @@ static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites); static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species); static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * pokemon, s32 species, s32 count); static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header); -static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p); +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lutIdx_p, u16 * tableIdx_p); static const u16 sDexAreas_Kanto[][2] = { { MAPSEC_PALLET_TOWN, 1 }, @@ -292,15 +292,15 @@ static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header) return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId; } -static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p) +static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lutIdx_p, u16 * tableIdx_p) { s32 i; - for (i = *lut_i_p; i < count; i++) + for (i = *lutIdx_p; i < count; i++) { if (lut[i][0] == mapSecId) { - *table_idx_p = lut[i][1]; - *lut_i_p = i + 1; + *tableIdx_p = lut[i][1]; + *lutIdx_p = i + 1; return TRUE; } } From 44b5d84a840c2c88972d72432e85b59cdc472565 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 16:28:32 -0400 Subject: [PATCH 079/100] Better rule order for berry_fix --- Makefile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 245a1a16a..297cbb68b 100644 --- a/Makefile +++ b/Makefile @@ -219,6 +219,11 @@ else $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I . $(DATA_ASM_SUBDIR)/$*.s) endif +berry_fix: + @$(MAKE) -C berry_fix COMPARE=$(COMPARE) + +berry_fix/berry_fix.gba: berry_fix + $(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) $(PREPROC) $< charmap.txt | $(CPP) -I include -nostdinc -undef -Wno-unicode - | $(AS) $(ASFLAGS) -o $@ @@ -237,14 +242,10 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(ROM): $(ELF) $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -berry_fix/berry_fix.gba: berry_fix - -berry_fix: - @$(MAKE) -C berry_fix COMPARE=$(COMPARE) From cb3e751f5f8990f7e36e141869a14f62e44eceff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:13:33 -0400 Subject: [PATCH 080/100] Decompile mailbox_pc and dump decorations --- asm/mailbox_pc.s | 326 ---------- baserom.ips | Bin 2011595 -> 2000346 bytes data/data_83FECCC.s | 19 +- data/decoration_tiles.inc | 359 +++++++++++ data/decorations.s | 857 ++++++++++++++++++++++++++ data/text/decoration_descriptions.inc | 573 +++++++++++++++++ include/global.h | 3 +- include/new_menu_helpers.h | 2 +- include/player_pc.h | 11 + ld_script.txt | 5 +- src/mailbox_pc.c | 143 +++++ sym_ewram.txt | 10 +- 12 files changed, 1962 insertions(+), 346 deletions(-) delete mode 100644 asm/mailbox_pc.s create mode 100644 data/decoration_tiles.inc create mode 100644 data/decorations.s create mode 100644 data/text/decoration_descriptions.inc create mode 100644 src/mailbox_pc.c diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s deleted file mode 100644 index 7e792681f..000000000 --- a/asm/mailbox_pc.s +++ /dev/null @@ -1,326 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_810EB6C -sub_810EB6C: @ 810EB6C - push {r4,lr} - lsls r0, 24 - ldr r4, _0810EB84 @ =gUnknown_203ADE0 - lsrs r0, 21 - adds r0, 0x8 - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _0810EB88 - movs r0, 0 - b _0810EBA2 - .align 2, 0 -_0810EB84: .4byte gUnknown_203ADE0 -_0810EB88: - movs r2, 0 - ldr r4, _0810EBA8 @ =gUnknown_203ADDC - movs r3, 0xFF -_0810EB8E: - adds r0, r2, r4 - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _0810EB8E - movs r0, 0x1 -_0810EBA2: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0810EBA8: .4byte gUnknown_203ADDC - thumb_func_end sub_810EB6C - - thumb_func_start sub_810EBAC -sub_810EBAC: @ 810EBAC - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0810EBD8 @ =gUnknown_203ADDC - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xFF - bne _0810EBD0 - lsls r0, r1, 3 - ldr r1, _0810EBDC @ =gUnknown_8453FE8 - adds r0, r1 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl SetStdWindowBorderStyle -_0810EBD0: - ldrb r0, [r4] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0810EBD8: .4byte gUnknown_203ADDC -_0810EBDC: .4byte gUnknown_8453FE8 - thumb_func_end sub_810EBAC - - thumb_func_start sub_810EBE0 -sub_810EBE0: @ 810EBE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0810EC0C @ =gUnknown_203ADDC - adds r4, r0 - ldrb r0, [r4] - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - bl ClearWindowTilemap - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810EC0C: .4byte gUnknown_203ADDC - thumb_func_end sub_810EBE0 - - thumb_func_start sub_810EC10 -sub_810EC10: @ 810EC10 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0810EC1C @ =gUnknown_203ADDC - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0810EC1C: .4byte gUnknown_203ADDC - thumb_func_end sub_810EC10 - - thumb_func_start sub_810EC20 -sub_810EC20: @ 810EC20 - push {r4,r5,lr} - sub sp, 0x34 - adds r3, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0x2 - negs r0, r0 - cmp r3, r0 - beq _0810EC82 - ldr r0, _0810EC8C @ =gSaveBlock1Ptr - lsls r1, r3, 3 - adds r1, r3 - lsls r1, 2 - ldr r0, [r0] - adds r1, r0 - ldr r0, _0810EC90 @ =0x00002dba - adds r1, r0 - add r0, sp, 0x14 - bl StringCopy - add r0, sp, 0x14 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bhi _0810EC62 - add r0, sp, 0x14 - movs r1, 0x1 - bl ConvertInternationalString -_0810EC62: - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - ldr r0, _0810EC94 @ =gUnknown_8454000 - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - add r0, sp, 0x14 - str r0, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0x8 - adds r3, r5, 0 - bl AddTextPrinterParameterized4 -_0810EC82: - add sp, 0x34 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810EC8C: .4byte gSaveBlock1Ptr -_0810EC90: .4byte 0x00002dba -_0810EC94: .4byte gUnknown_8454000 - thumb_func_end sub_810EC20 - - thumb_func_start sub_810EC98 -sub_810EC98: @ 810EC98 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - movs r3, 0 - ldr r7, _0810ED50 @ =gUnknown_203ADE0 - ldr r0, _0810ED54 @ =gFameCheckerText_Cancel - mov r12, r0 - ldr r5, _0810ED58 @ =gMultiuseListMenuTemplate - ldr r1, _0810ED5C @ =gUnknown_203ADDC - mov r8, r1 - ldrb r0, [r6, 0x5] - cmp r3, r0 - bcs _0810ECCE - adds r2, r7, 0 - ldr r4, _0810ED60 @ =gUnknown_8454003 -_0810ECB8: - ldr r1, [r2] - lsls r0, r3, 3 - adds r0, r1 - str r4, [r0] - str r3, [r0, 0x4] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrb r1, [r6, 0x5] - cmp r3, r1 - bcc _0810ECB8 -_0810ECCE: - ldr r2, [r7] - lsls r0, r3, 3 - adds r0, r2 - mov r1, r12 - str r1, [r0] - movs r1, 0x2 - negs r1, r1 - str r1, [r0, 0x4] - str r2, [r5] - ldrb r0, [r6, 0x5] - adds r0, 0x1 - movs r4, 0 - strh r0, [r5, 0xC] - mov r1, r8 - ldrb r0, [r1, 0x1] - strb r0, [r5, 0x10] - strb r4, [r5, 0x11] - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - strb r0, [r5, 0x12] - strb r4, [r5, 0x13] - ldrb r0, [r5, 0x16] - movs r2, 0x8 - negs r2, r2 - ands r2, r0 - movs r0, 0x39 - negs r0, r0 - ands r2, r0 - movs r0, 0x10 - orrs r2, r0 - movs r0, 0x8 - strh r0, [r5, 0xE] - ldrb r0, [r5, 0x17] - movs r1, 0x40 - negs r1, r1 - ands r1, r0 - movs r0, 0x2 - orrs r1, r0 - movs r0, 0x2A - strb r0, [r5, 0x14] - movs r0, 0x31 - strb r0, [r5, 0x15] - ldr r0, _0810ED64 @ =sub_810ED6C - str r0, [r5, 0x4] - ldr r0, _0810ED68 @ =sub_810EC20 - str r0, [r5, 0x8] - movs r0, 0x3F - ands r1, r0 - strb r1, [r5, 0x17] - ands r2, r0 - strb r2, [r5, 0x16] - ldrh r1, [r6, 0x2] - ldrh r2, [r6] - adds r0, r5, 0 - bl ListMenuInit - lsls r0, 24 - lsrs r0, 24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0810ED50: .4byte gUnknown_203ADE0 -_0810ED54: .4byte gFameCheckerText_Cancel -_0810ED58: .4byte gMultiuseListMenuTemplate -_0810ED5C: .4byte gUnknown_203ADDC -_0810ED60: .4byte gUnknown_8454003 -_0810ED64: .4byte sub_810ED6C -_0810ED68: .4byte sub_810EC20 - thumb_func_end sub_810EC98 - - thumb_func_start sub_810ED6C -sub_810ED6C: @ 810ED6C - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _0810ED7C - movs r0, 0x5 - bl PlaySE -_0810ED7C: - pop {r0} - bx r0 - thumb_func_end sub_810ED6C - - thumb_func_start sub_810ED80 -sub_810ED80: @ 810ED80 - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - ldrb r0, [r4, 0x5] - ldrb r1, [r4, 0x4] - subs r0, r1 - adds r0, 0x1 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r4, 0x2 - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xC2 - movs r2, 0xC - movs r3, 0x94 - bl AddScrollIndicatorArrowPairParameterized - strb r0, [r4, 0xA] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810ED80 - - thumb_func_start sub_810EDB0 -sub_810EDB0: @ 810EDB0 - push {lr} - ldr r0, _0810EDC0 @ =gUnknown_203ADE0 - ldr r0, [r0] - bl Free - pop {r0} - bx r0 - .align 2, 0 -_0810EDC0: .4byte gUnknown_203ADE0 - thumb_func_end sub_810EDB0 - - .align 2, 0 @ Don't pad with nop. diff --git a/baserom.ips b/baserom.ips index 03cb2d9ada77beeaab65799cda69c9552c562c29..df32a8df24ca8af27454e46d174bee6a7c415ef8 100644 GIT binary patch delta 181 zcmWN=Ee?WU0D$3vpaS}-h<}I{#t}5@C^Ti$nZ#_eQw;=X<^pzt;j5axfl;o&0eqkB z`IPDRmYUo3E{xps-mjjXQu(@j&%?_#39=+msIo?lI_qq(NrNUWw%C?QAU3xA9mPA; qmMf&SYH7Q}qwxY(JO) delta 11494 zcmcJV33QX!nTFph$wrvPW(kYg445S>i2=tUfq+?@u*WP(fYOA}6i7%3*)ycm-xIQD zk}_$hNz;umoo4C4kYx%J*_Lf#*)o!B2ZSx#3bN%R$q*WcFg=->jy&)E7g=}#_nelT zn_trN-h03M-Sxlz8eZFfDzsn8U$SZ0iuB#fb~_%dFlS9nDgcs2yS8meSM-ko`C}?1>u*WLQuR4v5Utr`nz_uBjGPD4t)C1k zm^!H7UNKSro-9W4r%#g$o);rwd0-bUKBm|9u$o(~P1Yj?sbFPl(LYTr`oQ>Z{L@7K zQOf1X>!f26z474ds$--H1^j5*g?nTxr!QnJ2@Oq!{JmRi4wy4vGG_`V6O)?ns574X1|Y8=A5IE?r40Y1br ze1wnjTl_12hkwHn9L1;j5Bve|DX^gs{|*OE;y6yhjT87!e1;N~q70RAp$avq$LDCk z88jh?7DUm8R)p~-E}|Wm@GbruQ!pD-aRa8|M$8urMXt!g9L&Xh+=5$?izQfq6!hX?Qop2j@PLIM5(FXI(Fggtl|Kfq&n98cg$OvlYw zj2G}a&f*K)AacZWcomoNU-%QY<9_VGGx$5~$Fuk${vJQVCs>MQSdLX#jWyVSjo5@d z+>Sf27VB^)?ox0!?!i`k2ix#n+>870eeA?8*#*KRtfIe25ouzG7%I%dB9g=aF;EN= z!^CiLok$k_#3(UXq>2nNLW~sC#b}W(#)yexl9(*67c<06ktODcxniEk7GuRYFyI-XEhP67~CoM^M!kMI_YhkJbC@LSbJt z5Ne6A8U&)foK*8^$WM zR@&J;+u3lS?p$x#dd(FKHR>kHn&`-$-4d@(f#J?@sP3F$W~|xQaxreBUYXXPbxpoN zSj*I{KQ*Rxc7XHrivEnr{)Ew=Mqx_4w0MukhetwHgqjtn4!UyC~U8iJt<{&1kB5z%m{HBjdZYK()OrB7yT9|D8f42-%*aYISUv=Au|}!UU`HwcxCpw~hi%w`izU zI^!a32wgC8#`Hnl+Z>IC6gAh`V4J`1dDJY@-)FhNgjjb&AQ+_IrJr!Y7xjmaps+0* z;Y1#%79Swy2N3Jny6m8h(gWb>FBFb5!_9WN$)`XcLJ6q0^=C=AHv7#`?d(fZg?^vis zw&H?65Uyu4x!0(TX!VC$=^*Ly3%=mFSUAww6eS9W+8UeW{G-L;7GE$Jn`sAeRlfjQh~wYYw$V5UFbmwnp2+{+Lg;!w;L=i;8NGy}Baaizm<+ z_FX(0GbV5}bP?VfiM3B?4%PeR$PXymG974U4@>X*VjjD_*yZg>+g)1j@On>EN*~tO z(|yt)HmETe;6fPgp?9KkQ|lCd(WW$W(p+fr%l#UG2p#HAn5|vpkyh2q?7EhEHB%S4 zVSrrwE=K4wE=4?;wuGYo-sFljIIb_gsy0#D!o%*>%Dqxs(yLbKW^-w;+OEgMEwr`lb@T}7@FF}d0YqW$y!zu^HjQOwH&%BG*#)Ft#q~5>$VkLv&OD% zEOB_~8hfvX8vgH^&r{_nw|jcc#$MA-P^}@(m~gC>rwkrFwEZZ4aQ4I(1aALQXY`iW zZMPSdyU-d|n6For%Ux9FD5B~rqKfL`a!1uwHFVyYYPZAb>{J6aSJ+gCT`BHG>vfgds~p_(`d~%T z>B?f;scMH)mn+w>nggKR<#u>&eJkGU^16y0-2D1v%t=S7QtCWiRb5ijw+t0_S1r4; zPlXpb?Ikvc`}Eb-iqSpA+{#>6*BVlfF%0@-hcVZB7AsvwiC3R}y zTn_LqV!nU&G+1j-SK6w*UBx|X`AX+?UBk_W>&ory7FT6w!3qzXy-k_Ub)$>XJ=@_? zPa~a0U!`PtYHfwiYHF1}%o#2WRgMIkuU4?r<+T;}(FS?YQu^p*WA&(Oi!||ueJ>~juoXvIDd_&&ode?boQW%R09)brmJj@7ohK8^Ulf>h~Y zr}`@t+vigG{?TXc-$L5k{@Z6C0Ps}EkymW@ly~r3{NMbgc~(nqo>la~PYeK5u25i- z2et~XiU~zX!6p`vOl~f-+iFfH(*D>t5_q26N^Wu6N=xm<2?C85k`E_ODsoknxcHVB zFJI%|kSiG!Bv-lZe39$quwwdTVAirc>n!qqg>FYtc>>n?4)R6h)*@R)RU+2;+vNG= z{mX3bMDw8Y+GTl)bq570nv06cxM8b46c9E20L$_`>l5Sy3=bI!ooA3gMLtmTkU@ES zuH|1({tWpby@7Fo&i5`?@~rzQ7;L!6Q0Ri!Sild-Q*{>`*r?zG@*k0>X&#DWgO`&R zkPlHk)QJt=qEPT01w&OAbr;0QpC=#YW(QX}d6Lz~m?_C5$4Gi!p7llY;a<0khf$l; z5a~Rd{8jSnbPtp`<*kIL13Fi>Q1Au?BZ^#3m%F68vjB_fUScUKZzG>Uo>l7Pdjwlh zVbdn6fJH83!&lKb@;N7~xl$UCHYmDaAq6*3Fjt)sWDj5=;&smda-9&y{!u3&wO<_0bg54DCq+pSDT?F;INEV{=!{pD9FE*}%x>V3e z{wjH{ap%*84_ljO{U!Ml{ccCaY(G7qwO|zmM=4mUo@A?B9u6dRxSEj^NHl!6WMn-skY zou}pJSb+D(VTxREQnU>ybDQm|FO z-7v6Wz_aB4L;fA(M#B*36}(6OXYy_O9fpC8{Ab8xXcFNEp~K;3e{8^84i_gu+{hu7Xb}uu`x?zj)}%&ylB) ze^0w?h-0II0ULQDCVxQtQ%<+?bI1pif1k5}^@;uNf(DNT7A5Z>+5=H(kp_3ae2vLwh!QNV%+|4@$ zdI8tn#RCQTBitn1PTS{kA6t@=<(Y5=c_#TjciHJ;`DUk&ap?SU@~PyHDo$G!ZR{ra zH3ictc&x@=S?#e^yA6e2fQx(v`QvfcFR4v##Nsq2i! zC)~~R2D$QNtgk+^$J!|kVU~$ZhNW2?UJv5S{ro!B>7zOrzPj9)W~kM@DO=6 z`7@Gpqq6f2InjVqLj*Pbsi6L{g+b1qsKP}hXf!`i9=STLLhwR^HuDS8p?2fG5W9EX1+m-tl zr`e8m> z@VPFVzb^u2nE2Z$m~t|h(jb)E212Zr8HO^A=T*cgh#fKwglR9?j!ak{8V&Kl4KUq1 z8{#e&w0smSi_#%-`FY(!m~Xz7h0TSSJ{Fd#?9Oc#n777&dBY)YW4SA6-#twG1_O@{ zXJUElXzY@OJe6nDs@YtMQc{3{yowmiLI-Z*Z|i9}pSw4}G?-SW&_4smF;X!bV&Hs; zS*sv2*TIyP4^#Httc2fJ@ca6F=G(@6tC{YG>EVqqZ{Nytd3H`>*@MV)Rsne{saxA0 zSb3i+cx%05;PB%!_Yc0Qzp`Y7II)?>)h#eFV$aN&JqttUk{Gv_%*efdjNP+hJNh#W zFol7D0~k=4%8&hpCJ^Ok-f-5QY{GWpLpzh8GUUUg{pf2u3E3 z#G@F+fWy%YIZS8J;TVP;j>S`Q;6IJ=j4zzP2*V7<7*1rA;UvZxPG+QGCSwh!&~4Kg zxtPq@#Q}JZ=>S6_pJzbi3pDOUet(Gpk}os5@fH5|Dz3+C44V8$%w#mRiR(&xH*2yp6%0 zix}>?m;s{M4E0>Z@Xpl?4$WoI=Msi}E@j~7G6sFFW6?)VH(Rc?)ZHN#y@NN Ee_DyDd;kCd diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 8f16958e6..0944bf82a 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -670,20 +670,17 @@ gUnknown_8452F6C:: @ 8452F6C gUnknown_8452F7C:: @ 8452F7C .incbin "baserom.gba", 0x452F7C, 0xC0 - .section .rodata.8453F6C -// mailbox_pc.o -gUnknown_8453FE8:: @ 8453FE8 - .incbin "baserom.gba", 0x453FE8, 0x18 - -gUnknown_8454000:: @ 8454000 - .incbin "baserom.gba", 0x454000, 0x3 - -gUnknown_8454003:: @ 8454003 - .incbin "baserom.gba", 0x454003, 0x2615 - + @ save_location.o + @ bag.o + @ trainer_pokemon_sprites.o + @ vs_seeker.o + @ item_pc.o + @ mailbox_pc.o + @ decorations.o @ menu.o @ quest_log.o @ link_rfu_3.o + .section .rodata.8456C74 gUnknown_8456C74:: @ 8456C74 .incbin "baserom.gba", 0x456C74, 0x5C diff --git a/data/decoration_tiles.inc b/data/decoration_tiles.inc new file mode 100644 index 000000000..2a53f2d8e --- /dev/null +++ b/data/decoration_tiles.inc @@ -0,0 +1,359 @@ +gUnknown_8454004:: @ 8454004 + .2byte 0x087 + +gUnknown_8454006:: @ 8454006 + .2byte 0x08F + +gUnknown_8454008:: @ 8454008 + .2byte 0x090, 0x091, 0x092, 0x098, 0x099, 0x09A + +gUnknown_8454014:: @ 8454014 + .2byte 0x093, 0x094, 0x095, 0x09B, 0x09C, 0x09D + +gUnknown_8454020:: @ 8454020 + .2byte 0x096, 0x097, 0x0A3, 0x09E, 0x09F, 0x0AB + +gUnknown_845402C:: @ 845402C + .2byte 0x0BD, 0x0BE, 0x0BF, 0x0C5, 0x0C6, 0x0C7, 0x0CD, 0x0CE, 0x0CF + +gUnknown_845403E:: @ 845403E + .2byte 0x0A0, 0x0A1, 0x0A2, 0x0A8, 0x0A9, 0x0AA, 0x0B0, 0x0B1, 0x0B2 + +gUnknown_8454050:: @ 8454050 + .2byte 0x0A4, 0x0A5, 0x0A6, 0x0AC, 0x0AD, 0x0AE, 0x0B4, 0x0B5, 0x0B6 + +gUnknown_8454062:: @ 8454062 + .2byte 0x0A7, 0x0BB, 0x0BC, 0x0AF, 0x0C3, 0x0C4, 0x0B7, 0x0CB, 0x0CC + +gUnknown_8454074:: @ 8454074 + .2byte 0x0B8 + +gUnknown_8454076:: @ 8454076 + .2byte 0x0B9 + +gUnknown_8454078:: @ 8454078 + .2byte 0x0BA + +gUnknown_845407A:: @ 845407A + .2byte 0x0C0 + +gUnknown_845407C:: @ 845407C + .2byte 0x0C1 + +gUnknown_845407E:: @ 845407E + .2byte 0x0C2 + +gUnknown_8454080:: @ 8454080 + .2byte 0x0C8 + +gUnknown_8454082:: @ 8454082 + .2byte 0x0C9 + +gUnknown_8454084:: @ 8454084 + .2byte 0x0CA + +gUnknown_8454086:: @ 8454086 + .2byte 0x0D0, 0x0D8 + +gUnknown_845408A:: @ 845408A + .2byte 0x0D2, 0x0DA + +gUnknown_845408E:: @ 845408E + .2byte 0x0D4, 0x0DC + +gUnknown_8454092:: @ 8454092 + .2byte 0x0E0, 0x0E2, 0x0E8, 0x0E9 + +gUnknown_845409A:: @ 845409A + .2byte 0x0E4, 0x0E6, 0x0EC, 0x0ED + +gUnknown_84540A2:: @ 84540A2 + .2byte 0x0F0, 0x0F2, 0x0F8, 0x0F9 + +gUnknown_84540AA:: @ 84540AA + .2byte 0x025, 0x02D + +gUnknown_84540AE:: @ 84540AE + .2byte 0x026, 0x02E + +gUnknown_84540B2:: @ 84540B2 + .2byte 0x027, 0x02F + +gUnknown_84540B6:: @ 84540B6 + .2byte 0x138 + +gUnknown_84540B8:: @ 84540B8 + .2byte 0x13C + +gUnknown_84540BA:: @ 84540BA + .2byte 0x140 + +gUnknown_84540BC:: @ 84540BC + .2byte 0x030, 0x031, 0x032, 0x038, 0x039, 0x03A, 0x040, 0x041, 0x03B + +gUnknown_84540CE:: @ 84540CE + .2byte 0x048, 0x049, 0x068, 0x050, 0x051, 0x070, 0x058, 0x059, 0x069 + +gUnknown_84540E0:: @ 84540E0 + .2byte 0x034, 0x03C + +gUnknown_84540E4:: @ 84540E4 + .2byte 0x035, 0x036, 0x03D, 0x03E, 0x063, 0x064, 0x06F, 0x077 + +gUnknown_84540F4:: @ 84540F4 + .2byte 0x033 + +gUnknown_84540F6:: @ 84540F6 + .2byte 0x02C + +gUnknown_84540F8:: @ 84540F8 + .2byte 0x080, 0x081, 0x088, 0x089 + +gUnknown_8454100:: @ 8454100 + .2byte 0x06A, 0x06B, 0x06C, 0x06D, 0x072, 0x073, 0x074, 0x075 + +gUnknown_8454110:: @ 8454110 + .2byte 0x028 + +gUnknown_8454112:: @ 8454112 + .2byte 0x037, 0x03F + +gUnknown_8454116:: @ 8454116 + .2byte 0x085, 0x08D + +gUnknown_845411A:: @ 845411A + .2byte 0x0D6, 0x0DE + +gUnknown_845411E:: @ 845411E + .2byte 0x12E, 0x136 + +gUnknown_8454122:: @ 8454122 + .2byte 0x082, 0x08A + +gUnknown_8454126:: @ 8454126 + .2byte 0x0F4 + +gUnknown_8454128:: @ 8454128 + .2byte 0x0F5 + +gUnknown_845412A:: @ 845412A + .2byte 0x0F6 + +gUnknown_845412C:: @ 845412C + .2byte 0x060 + +gUnknown_845412E:: @ 845412E + .2byte 0x061 + +gUnknown_8454130:: @ 8454130 + .2byte 0x062 + +gUnknown_8454132:: @ 8454132 + .2byte 0x078 + +gUnknown_8454134:: @ 8454134 + .2byte 0x079 + +gUnknown_8454136:: @ 8454136 + .2byte 0x07A + +gUnknown_8454138:: @ 8454138 + .2byte 0x07B + +gUnknown_845413A:: @ 845413A + .2byte 0x07C + +gUnknown_845413C:: @ 845413C + .2byte 0x07D + +gUnknown_845413E:: @ 845413E + .2byte 0x07E + +gUnknown_8454140:: @ 8454140 + .2byte 0x0B3 + +gUnknown_8454142:: @ 8454142 + .2byte 0x042, 0x043, 0x044, 0x04A, 0x04B, 0x04C, 0x052, 0x053, 0x054 + +gUnknown_8454154:: @ 8454154 + .2byte 0x045, 0x046, 0x047, 0x04D, 0x04E, 0x04F, 0x055, 0x056, 0x057 + +gUnknown_8454166:: @ 8454166 + .2byte 0x05A, 0x05B, 0x05C, 0x05D, 0x05E, 0x05F, 0x065, 0x066, 0x067 + +gUnknown_8454178:: @ 8454178 + .2byte 0x100, 0x101, 0x102, 0x108, 0x109, 0x10A, 0x110, 0x111, 0x112 + +gUnknown_845418A:: @ 845418A + .2byte 0x103, 0x104, 0x105, 0x10B, 0x10C, 0x10D, 0x113, 0x114, 0x115 + +gUnknown_845419C:: @ 845419C + .2byte 0x106, 0x107, 0x118, 0x10E, 0x10F, 0x120, 0x116, 0x117, 0x128 + +gUnknown_84541AE:: @ 84541AE + .2byte 0x119, 0x11A, 0x11B, 0x121, 0x122, 0x123, 0x129, 0x12A, 0x12B + +gUnknown_84541C0:: @ 84541C0 + .2byte 0x130 + +gUnknown_84541C2:: @ 84541C2 + .2byte 0x131 + +gUnknown_84541C4:: @ 84541C4 + .2byte 0x132 + +gUnknown_84541C6:: @ 84541C6 + .2byte 0x133 + +gUnknown_84541C8:: @ 84541C8 + .2byte 0x134 + +gUnknown_84541CA:: @ 84541CA + .2byte 0x11C, 0x11D + +gUnknown_84541CE:: @ 84541CE + .2byte 0x11E, 0x11F + +gUnknown_84541D2:: @ 84541D2 + .2byte 0x124, 0x125 + +gUnknown_84541D6:: @ 84541D6 + .2byte 0x126, 0x127 + +gUnknown_84541DA:: @ 84541DA + .2byte 0x12C, 0x12D + +gUnknown_84541DE:: @ 84541DE + .2byte 0x05C + +gUnknown_84541E0:: @ 84541E0 + .2byte 0x05C + +gUnknown_84541E2:: @ 84541E2 + .2byte 0x05C + +gUnknown_84541E4:: @ 84541E4 + .2byte 0x05C + +gUnknown_84541E6:: @ 84541E6 + .2byte 0x05C + +gUnknown_84541E8:: @ 84541E8 + .2byte 0x05C + +gUnknown_84541EA:: @ 84541EA + .2byte 0x05C + +gUnknown_84541EC:: @ 84541EC + .2byte 0x05C + +gUnknown_84541EE:: @ 84541EE + .2byte 0x05C + +gUnknown_84541F0:: @ 84541F0 + .2byte 0x05C + +gUnknown_84541F2:: @ 84541F2 + .2byte 0x05C + +gUnknown_84541F4:: @ 84541F4 + .2byte 0x05C + +gUnknown_84541F6:: @ 84541F6 + .2byte 0x05C + +gUnknown_84541F8:: @ 84541F8 + .2byte 0x05C + +gUnknown_84541FA:: @ 84541FA + .2byte 0x05C + +gUnknown_84541FC:: @ 84541FC + .2byte 0x05C + +gUnknown_84541FE:: @ 84541FE + .2byte 0x05C + +gUnknown_8454200:: @ 8454200 + .2byte 0x05C + +gUnknown_8454202:: @ 8454202 + .2byte 0x05C + +gUnknown_8454204:: @ 8454204 + .2byte 0x05C + +gUnknown_8454206:: @ 8454206 + .2byte 0x05C + +gUnknown_8454208:: @ 8454208 + .2byte 0x05C + +gUnknown_845420A:: @ 845420A + .2byte 0x05C + +gUnknown_845420C:: @ 845420C + .2byte 0x05C + +gUnknown_845420E:: @ 845420E + .2byte 0x05C + +gUnknown_8454210:: @ 8454210 + .2byte 0x05C + +gUnknown_8454212:: @ 8454212 + .2byte 0x05C + +gUnknown_8454214:: @ 8454214 + .2byte 0x05C + +gUnknown_8454216:: @ 8454216 + .2byte 0x05C + +gUnknown_8454218:: @ 8454218 + .2byte 0x05C + +gUnknown_845421A:: @ 845421A + .2byte 0x05C + +gUnknown_845421C:: @ 845421C + .2byte 0x05C + +gUnknown_845421E:: @ 845421E + .2byte 0x05C + +gUnknown_8454220:: @ 8454220 + .2byte 0x05C + +gUnknown_8454222:: @ 8454222 + .2byte 0x05C + +gUnknown_8454224:: @ 8454224 + .2byte 0x05C + +gUnknown_8454226:: @ 8454226 + .2byte 0x05C + +gUnknown_8454228:: @ 8454228 + .2byte 0x05C + +gUnknown_845422A:: @ 845422A + .2byte 0x05C + +gUnknown_845422C:: @ 845422C + .2byte 0x05C + +gUnknown_845422E:: @ 845422E + .2byte 0x05C + +gUnknown_8454230:: @ 8454230 + .2byte 0x05C + +gUnknown_8454232:: @ 8454232 + .2byte 0x05C + +gUnknown_8454234:: @ 8454234 + .2byte 0x05C + +gUnknown_8454236:: @ 8454236 + .2byte 0x05C diff --git a/data/decorations.s b/data/decorations.s new file mode 100644 index 000000000..0d6e85efe --- /dev/null +++ b/data/decorations.s @@ -0,0 +1,857 @@ +#include "constants/decorations.h" + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata + .align 2 + + .include "data/decoration_tiles.inc" + .include "data/text/decoration_descriptions.inc" + + .align 2 +gDecorations:: @ 84556F8 + .byte DECOR_NONE + .string "SMALL DESK$", 16 + .byte 0x00, 0x00, 0x00 + .2byte 0, 0 + .4byte gUnknown_8454238 + .4byte gUnknown_8454004 + + .byte DECOR_SMALL_DESK + .string "SMALL DESK$", 16 + .byte 0x00, 0x00, 0x00 + .2byte 3000, 0 + .4byte gUnknown_8454238 + .4byte gUnknown_8454004 + + .byte DECOR_POKEMON_DESK + .string "POKéMON DESK$", 16 + .byte 0x00, 0x00, 0x00 + .2byte 3000, 0 + .4byte gUnknown_8454254 + .4byte gUnknown_8454006 + + .byte DECOR_HEAVY_DESK + .string "HEAVY DESK$", 16 + .byte 0x00, 0x09, 0x00 + .2byte 6000, 0 + .4byte gUnknown_8454284 + .4byte gUnknown_8454008 + + .byte DECOR_RAGGED_DESK + .string "RAGGED DESK$", 16 + .byte 0x00, 0x09, 0x00 + .2byte 6000, 0 + .4byte gUnknown_84542BC + .4byte gUnknown_8454014 + + .byte DECOR_COMFORT_DESK + .string "COMFORT DESK$", 16 + .byte 0x00, 0x09, 0x00 + .2byte 6000, 0 + .4byte gUnknown_84542F3 + .4byte gUnknown_8454020 + + .byte DECOR_PRETTY_DESK + .string "PRETTY DESK$", 16 + .byte 0x00, 0x08, 0x00 + .2byte 9000, 0 + .4byte gUnknown_845432C + .4byte gUnknown_845402C + + .byte DECOR_BRICK_DESK + .string "BRICK DESK$", 16 + .byte 0x00, 0x08, 0x00 + .2byte 9000, 0 + .4byte gUnknown_8454362 + .4byte gUnknown_845403E + + .byte DECOR_CAMP_DESK + .string "CAMP DESK$", 16 + .byte 0x00, 0x08, 0x00 + .2byte 9000, 0 + .4byte gUnknown_8454398 + .4byte gUnknown_8454050 + + .byte DECOR_HARD_DESK + .string "HARD DESK$", 16 + .byte 0x00, 0x08, 0x00 + .2byte 9000, 0 + .4byte gUnknown_84543D1 + .4byte gUnknown_8454062 + + .byte DECOR_SMALL_CHAIR + .string "SMALL CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_8454404 + .4byte gUnknown_8454074 + + .byte DECOR_POKEMON_CHAIR + .string "POKéMON CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_8454420 + .4byte gUnknown_8454076 + + .byte DECOR_HEAVY_CHAIR + .string "HEAVY CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_8454451 + .4byte gUnknown_8454078 + + .byte DECOR_PRETTY_CHAIR + .string "PRETTY CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_845446E + .4byte gUnknown_845407A + + .byte DECOR_COMFORT_CHAIR + .string "COMFORT CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_845448B + .4byte gUnknown_845407C + + .byte DECOR_RAGGED_CHAIR + .string "RAGGED CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_84544A9 + .4byte gUnknown_845407E + + .byte DECOR_BRICK_CHAIR + .string "BRICK CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_84544C5 + .4byte gUnknown_8454080 + + .byte DECOR_CAMP_CHAIR + .string "CAMP CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_84544E2 + .4byte gUnknown_8454082 + + .byte DECOR_HARD_CHAIR + .string "HARD CHAIR$", 16 + .byte 0x01, 0x00, 0x01 + .2byte 2000, 0 + .4byte gUnknown_84544FE + .4byte gUnknown_8454084 + + .byte DECOR_RED_PLANT + .string "RED PLANT$", 16 + .byte 0x02, 0x05, 0x02 + .2byte 3000, 0 + .4byte gUnknown_845451A + .4byte gUnknown_8454086 + + .byte DECOR_TROPICAL_PLANT + .string "TROPICAL PLANT$", 16 + .byte 0x02, 0x05, 0x02 + .2byte 3000, 0 + .4byte gUnknown_8454534 + .4byte gUnknown_845408A + + .byte DECOR_PRETTY_FLOWERS + .string "PRETTY FLOWERS$", 16 + .byte 0x02, 0x05, 0x02 + .2byte 3000, 0 + .4byte gUnknown_8454559 + .4byte gUnknown_845408E + + .byte DECOR_COLORFUL_PLANT + .string "COLORFUL PLANT$", 16 + .byte 0x02, 0x04, 0x02 + .2byte 5000, 0 + .4byte gUnknown_8454570 + .4byte gUnknown_8454092 + + .byte DECOR_BIG_PLANT + .string "BIG PLANT$", 16 + .byte 0x02, 0x04, 0x02 + .2byte 5000, 0 + .4byte gUnknown_8454598 + .4byte gUnknown_845409A + + .byte DECOR_GORGEOUS_PLANT + .string "GORGEOUS PLANT$", 16 + .byte 0x02, 0x04, 0x02 + .2byte 5000, 0 + .4byte gUnknown_84545C6 + .4byte gUnknown_84540A2 + + .byte DECOR_RED_BRICK + .string "RED BRICK$", 16 + .byte 0x00, 0x05, 0x03 + .2byte 500, 0 + .4byte gUnknown_84545EE + .4byte gUnknown_84540AA + + .byte DECOR_YELLOW_BRICK + .string "YELLOW BRICK$", 16 + .byte 0x00, 0x05, 0x03 + .2byte 500, 0 + .4byte gUnknown_8454625 + .4byte gUnknown_84540AE + + .byte DECOR_BLUE_BRICK + .string "BLUE BRICK$", 16 + .byte 0x00, 0x05, 0x03 + .2byte 500, 0 + .4byte gUnknown_845465A + .4byte gUnknown_84540B2 + + .byte DECOR_RED_BALLOON + .string "RED BALLOON$", 16 + .byte 0x01, 0x00, 0x03 + .2byte 500, 0 + .4byte gUnknown_845468D + .4byte gUnknown_84540B6 + + .byte DECOR_BLUE_BALLOON + .string "BLUE BALLOON$", 16 + .byte 0x01, 0x00, 0x03 + .2byte 500, 0 + .4byte gUnknown_84546C4 + .4byte gUnknown_84540B8 + + .byte DECOR_YELLOW_BALLOON + .string "YELLOW BALLOON$", 16 + .byte 0x01, 0x00, 0x03 + .2byte 500, 0 + .4byte gUnknown_84546FC + .4byte gUnknown_84540BA + + .byte DECOR_RED_TENT + .string "RED TENT$", 16 + .byte 0x01, 0x08, 0x03 + .2byte 10000, 0 + .4byte gUnknown_8454734 + .4byte gUnknown_84540BC + + .byte DECOR_BLUE_TENT + .string "BLUE TENT$", 16 + .byte 0x01, 0x08, 0x03 + .2byte 10000, 0 + .4byte gUnknown_845475E + .4byte gUnknown_84540CE + + .byte DECOR_SOLID_BOARD + .string "SOLID BOARD$", 16 + .byte 0x01, 0x05, 0x03 + .2byte 3000, 0 + .4byte gUnknown_8454789 + .4byte gUnknown_84540E0 + + .byte DECOR_SLIDE + .string "SLIDE$", 16 + .byte 0x01, 0x07, 0x03 + .2byte 8000, 0 + .4byte gUnknown_84547B7 + .4byte gUnknown_84540E4 + + .byte DECOR_FENCE_LENGTH + .string "FENCE LENGTH$", 16 + .byte 0x00, 0x00, 0x03 + .2byte 500, 0 + .4byte gUnknown_84547DC + .4byte gUnknown_84540F4 + + .byte DECOR_FENCE_WIDTH + .string "FENCE WIDTH$", 16 + .byte 0x00, 0x00, 0x03 + .2byte 500, 0 + .4byte gUnknown_84547FF + .4byte gUnknown_84540F6 + + .byte DECOR_TIRE + .string "TIRE$", 16 + .byte 0x00, 0x04, 0x03 + .2byte 800, 0 + .4byte gUnknown_8454822 + .4byte gUnknown_84540F8 + + .byte DECOR_STAND + .string "STAND$", 16 + .byte 0x01, 0x03, 0x03 + .2byte 7000, 0 + .4byte gUnknown_8454857 + .4byte gUnknown_8454100 + + .byte DECOR_MUD_BALL + .string "MUD BALL$", 16 + .byte 0x01, 0x00, 0x03 + .2byte 200, 0 + .4byte gUnknown_8454874 + .4byte gUnknown_8454110 + + .byte DECOR_BREAKABLE_DOOR + .string "BREAKABLE DOOR$", 16 + .byte 0x01, 0x05, 0x03 + .2byte 3000, 0 + .4byte gUnknown_84548A1 + .4byte gUnknown_8454112 + + .byte DECOR_SAND_ORNAMENT + .string "SAND ORNAMENT$", 16 + .byte 0x02, 0x05, 0x03 + .2byte 3000, 0 + .4byte gUnknown_84548D2 + .4byte gUnknown_8454116 + + .byte DECOR_SILVER_SHIELD + .string "SILVER SHIELD$", 16 + .byte 0x02, 0x05, 0x03 + .2byte 0, 0 + .4byte gUnknown_8454901 + .4byte gUnknown_845411A + + .byte DECOR_GOLD_SHIELD + .string "GOLD SHIELD$", 16 + .byte 0x02, 0x05, 0x03 + .2byte 0, 0 + .4byte gUnknown_8454933 + .4byte gUnknown_845411E + + .byte DECOR_GLASS_ORNAMENT + .string "GLASS ORNAMENT$", 16 + .byte 0x02, 0x05, 0x03 + .2byte 0, 0 + .4byte gUnknown_8454966 + .4byte gUnknown_8454122 + + .byte DECOR_TV + .string "TV$", 16 + .byte 0x00, 0x00, 0x03 + .2byte 3000, 0 + .4byte gUnknown_845499F + .4byte gUnknown_8454126 + + .byte DECOR_ROUND_TV + .string "ROUND TV$", 16 + .byte 0x00, 0x00, 0x03 + .2byte 4000, 0 + .4byte gUnknown_84549BE + .4byte gUnknown_8454128 + + .byte DECOR_CUTE_TV + .string "CUTE TV$", 16 + .byte 0x00, 0x00, 0x03 + .2byte 4000, 0 + .4byte gUnknown_84549E9 + .4byte gUnknown_845412A + + .byte DECOR_GLITTER_MAT + .string "GLITTER MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 2000, 0 + .4byte gUnknown_8454A14 + .4byte gUnknown_845412C + + .byte DECOR_JUMP_MAT + .string "JUMP MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 2000, 0 + .4byte gUnknown_8454A3C + .4byte gUnknown_845412E + + .byte DECOR_SPIN_MAT + .string "SPIN MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 2000, 0 + .4byte gUnknown_8454A6A + .4byte gUnknown_8454130 + + .byte DECOR_C_LOW_NOTE_MAT + .string "C Low NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454A99 + .4byte gUnknown_8454132 + + .byte DECOR_D_NOTE_MAT + .string "D NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454AC8 + .4byte gUnknown_8454134 + + .byte DECOR_E_NOTE_MAT + .string "E NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454AF3 + .4byte gUnknown_8454136 + + .byte DECOR_F_NOTE_MAT + .string "F NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454B1F + .4byte gUnknown_8454138 + + .byte DECOR_G_NOTE_MAT + .string "G NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454B4B + .4byte gUnknown_845413A + + .byte DECOR_A_NOTE_MAT + .string "A NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454B76 + .4byte gUnknown_845413C + + .byte DECOR_B_NOTE_MAT + .string "B NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454BA2 + .4byte gUnknown_845413E + + .byte DECOR_C_HIGH_NOTE_MAT + .string "C High NOTE MAT$", 16 + .byte 0x01, 0x00, 0x04 + .2byte 500, 0 + .4byte gUnknown_8454BCD + .4byte gUnknown_8454140 + + .byte DECOR_SURF_MAT + .string "SURF MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454BFD + .4byte gUnknown_8454142 + + .byte DECOR_THUNDER_MAT + .string "THUNDER MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454C31 + .4byte gUnknown_8454154 + + .byte DECOR_FIRE_BLAST_MAT + .string "FIRE BLAST MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454C68 + .4byte gUnknown_8454166 + + .byte DECOR_POWDER_SNOW_MAT + .string "POWDER SNOW MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454CA2 + .4byte gUnknown_8454178 + + .byte DECOR_ATTRACT_MAT + .string "ATTRACT MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454CDB + .4byte gUnknown_845418A + + .byte DECOR_FISSURE_MAT + .string "FISSURE MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454D13 + .4byte gUnknown_845419C + + .byte DECOR_SPIKES_MAT + .string "SPIKES MAT$", 16 + .byte 0x01, 0x08, 0x04 + .2byte 4000, 0 + .4byte gUnknown_8454D4A + .4byte gUnknown_84541AE + + .byte DECOR_BALL_POSTER + .string "BALL POSTER$", 16 + .byte 0x03, 0x00, 0x05 + .2byte 1000, 0 + .4byte gUnknown_8454D80 + .4byte gUnknown_84541C0 + + .byte DECOR_GREEN_POSTER + .string "GREEN POSTER$", 16 + .byte 0x03, 0x00, 0x05 + .2byte 1000, 0 + .4byte gUnknown_8454DA8 + .4byte gUnknown_84541C2 + + .byte DECOR_RED_POSTER + .string "RED POSTER$", 16 + .byte 0x03, 0x00, 0x05 + .2byte 1000, 0 + .4byte gUnknown_8454DCD + .4byte gUnknown_84541C4 + + .byte DECOR_BLUE_POSTER + .string "BLUE POSTER$", 16 + .byte 0x03, 0x00, 0x05 + .2byte 1000, 0 + .4byte gUnknown_8454DF2 + .4byte gUnknown_84541C6 + + .byte DECOR_CUTE_POSTER + .string "CUTE POSTER$", 16 + .byte 0x03, 0x00, 0x05 + .2byte 1000, 0 + .4byte gUnknown_8454E16 + .4byte gUnknown_84541C8 + + .byte DECOR_PIKA_POSTER + .string "PIKA POSTER$", 16 + .byte 0x03, 0x01, 0x05 + .2byte 1500, 0 + .4byte gUnknown_8454E3C + .4byte gUnknown_84541CA + + .byte DECOR_LONG_POSTER + .string "LONG POSTER$", 16 + .byte 0x03, 0x01, 0x05 + .2byte 1500, 0 + .4byte gUnknown_8454E6B + .4byte gUnknown_84541CE + + .byte DECOR_SEA_POSTER + .string "SEA POSTER$", 16 + .byte 0x03, 0x01, 0x05 + .2byte 1500, 0 + .4byte gUnknown_8454E90 + .4byte gUnknown_84541D2 + + .byte DECOR_SKY_POSTER + .string "SKY POSTER$", 16 + .byte 0x03, 0x01, 0x05 + .2byte 1500, 0 + .4byte gUnknown_8454EB7 + .4byte gUnknown_84541D6 + + .byte DECOR_KISS_POSTER + .string "KISS POSTER$", 16 + .byte 0x03, 0x01, 0x05 + .2byte 1500, 0 + .4byte gUnknown_8454EDC + .4byte gUnknown_84541DA + + .byte DECOR_PICHU_DOLL + .string "PICHU DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454F02 + .4byte gUnknown_84541DE + + .byte DECOR_PIKACHU_DOLL + .string "PIKACHU DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454F2D + .4byte gUnknown_84541E0 + + .byte DECOR_MARILL_DOLL + .string "MARILL DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454F5A + .4byte gUnknown_84541E2 + + .byte DECOR_TOGEPI_DOLL + .string "TOGEPI DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454F86 + .4byte gUnknown_84541E4 + + .byte DECOR_CYNDAQUIL_DOLL + .string "CYNDAQUIL DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454FB2 + .4byte gUnknown_84541E6 + + .byte DECOR_CHIKORITA_DOLL + .string "CHIKORITA DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8454FE1 + .4byte gUnknown_84541E8 + + .byte DECOR_TOTODILE_DOLL + .string "TOTODILE DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455010 + .4byte gUnknown_84541EA + + .byte DECOR_JIGGLYPUFF_DOLL + .string "JIGGLYPUFF DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845503E + .4byte gUnknown_84541EC + + .byte DECOR_MEOWTH_DOLL + .string "MEOWTH DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845506E + .4byte gUnknown_84541EE + + .byte DECOR_CLEFAIRY_DOLL + .string "CLEFAIRY DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845509A + .4byte gUnknown_84541F0 + + .byte DECOR_DITTO_DOLL + .string "DITTO DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84550C8 + .4byte gUnknown_84541F2 + + .byte DECOR_SMOOCHUM_DOLL + .string "SMOOCHUM DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84550F3 + .4byte gUnknown_84541F4 + + .byte DECOR_TREECKO_DOLL + .string "TREECKO DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455121 + .4byte gUnknown_84541F6 + + .byte DECOR_TORCHIC_DOLL + .string "TORCHIC DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845514E + .4byte gUnknown_84541F8 + + .byte DECOR_MUDKIP_DOLL + .string "MUDKIP DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845517B + .4byte gUnknown_84541FA + + .byte DECOR_DUSKULL_DOLL + .string "DUSKULL DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84551A7 + .4byte gUnknown_84541FC + + .byte DECOR_WYNAUT_DOLL + .string "WYNAUT DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84551D4 + .4byte gUnknown_84541FE + + .byte DECOR_BALTOY_DOLL + .string "BALTOY DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455200 + .4byte gUnknown_8454200 + + .byte DECOR_KECLEON_DOLL + .string "KECLEON DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845522C + .4byte gUnknown_8454202 + + .byte DECOR_AZURILL_DOLL + .string "AZURILL DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455259 + .4byte gUnknown_8454204 + + .byte DECOR_SKITTY_DOLL + .string "SKITTY DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455287 + .4byte gUnknown_8454206 + + .byte DECOR_SWABLU_DOLL + .string "SWABLU DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84552B3 + .4byte gUnknown_8454208 + + .byte DECOR_GULPIN_DOLL + .string "GULPIN DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_84552DF + .4byte gUnknown_845420A + + .byte DECOR_LOTAD_DOLL + .string "LOTAD DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_845530B + .4byte gUnknown_845420C + + .byte DECOR_SEEDOT_DOLL + .string "SEEDOT DOLL$", 16 + .byte 0x04, 0x00, 0x06 + .2byte 3000, 0 + .4byte gUnknown_8455336 + .4byte gUnknown_845420E + + .byte DECOR_PIKA_CUSHION + .string "PIKA CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455362 + .4byte gUnknown_8454210 + + .byte DECOR_ROUND_CUSHION + .string "ROUND CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455392 + .4byte gUnknown_8454212 + + .byte DECOR_KISS_CUSHION + .string "KISS CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_84553C1 + .4byte gUnknown_8454214 + + .byte DECOR_ZIGZAG_CUSHION + .string "ZIGZAG CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_84553F2 + .4byte gUnknown_8454216 + + .byte DECOR_SPIN_CUSHION + .string "SPIN CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455424 + .4byte gUnknown_8454218 + + .byte DECOR_DIAMOND_CUSHION + .string "DIAMOND CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455453 + .4byte gUnknown_845421A + + .byte DECOR_BALL_CUSHION + .string "BALL CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455483 + .4byte gUnknown_845421C + + .byte DECOR_GRASS_CUSHION + .string "GRASS CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_84554B0 + .4byte gUnknown_845421E + + .byte DECOR_FIRE_CUSHION + .string "FIRE CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_84554E3 + .4byte gUnknown_8454220 + + .byte DECOR_WATER_CUSHION + .string "WATER CUSHION$", 16 + .byte 0x04, 0x00, 0x07 + .2byte 2000, 0 + .4byte gUnknown_8455515 + .4byte gUnknown_8454222 + + .byte DECOR_SNORLAX_DOLL + .string "SNORLAX DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_8455548 + .4byte gUnknown_8454224 + + .byte DECOR_RHYDON_DOLL + .string "RHYDON DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_8455573 + .4byte gUnknown_8454226 + + .byte DECOR_LAPRAS_DOLL + .string "LAPRAS DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_845559E + .4byte gUnknown_8454228 + + .byte DECOR_VENUSAUR_DOLL + .string "VENUSAUR DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_84555C9 + .4byte gUnknown_845422A + + .byte DECOR_CHARIZARD_DOLL + .string "CHARIZARD DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_84555F4 + .4byte gUnknown_845422C + + .byte DECOR_BLASTOISE_DOLL + .string "BLASTOISE DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_845561F + .4byte gUnknown_845422E + + .byte DECOR_WAILMER_DOLL + .string "WAILMER DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_845564A + .4byte gUnknown_8454230 + + .byte DECOR_REGIROCK_DOLL + .string "REGIROCK DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_8455675 + .4byte gUnknown_8454232 + + .byte DECOR_REGICE_DOLL + .string "REGICE DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_84556A0 + .4byte gUnknown_8454234 + + .byte DECOR_REGISTEEL_DOLL + .string "REGISTEEL DOLL$", 16 + .byte 0x04, 0x05, 0x06 + .2byte 10000, 0 + .4byte gUnknown_84556CB + .4byte gUnknown_8454236 diff --git a/data/text/decoration_descriptions.inc b/data/text/decoration_descriptions.inc new file mode 100644 index 000000000..358070cb1 --- /dev/null +++ b/data/text/decoration_descriptions.inc @@ -0,0 +1,573 @@ +gUnknown_8454238:: @ 8454238 + .string "A small desk built\n" + .string "for one.$" + +gUnknown_8454254:: @ 8454254 + .string "A small desk built in\n" + .string "the shape of a POKé\n" + .string "BALL.$" + +gUnknown_8454284:: @ 8454284 + .string "A large desk made\n" + .string "of steel. Put some\n" + .string "decorations on it.$" + +gUnknown_84542BC:: @ 84542BC + .string "A large desk made\n" + .string "of wood. Put some\n" + .string "decorations on it.$" + +gUnknown_84542F3:: @ 84542F3 + .string "A large desk made\n" + .string "of leaves. Put some\n" + .string "decorations on it.$" + +gUnknown_845432C:: @ 845432C + .string "A huge desk made\n" + .string "of glass. Holds lots\n" + .string "of decorations.$" + +gUnknown_8454362:: @ 8454362 + .string "A huge desk made\n" + .string "of brick. Holds lots\n" + .string "of decorations.$" + +gUnknown_8454398:: @ 8454398 + .string "A huge desk made\n" + .string "of logs. Put lots of\n" + .string "decorations on it.$" + +gUnknown_84543D1:: @ 84543D1 + .string "A huge desk made\n" + .string "of rocks. Holds\n" + .string "many decorations.$" + +gUnknown_8454404:: @ 8454404 + .string "A small chair made\n" + .string "for one.$" + +gUnknown_8454420:: @ 8454420 + .string "A small chair built\n" + .string "in the shape of a\n" + .string "POKé BALL.$" + +gUnknown_8454451:: @ 8454451 + .string "A small chair made\n" + .string "of steel.$" + +gUnknown_845446E:: @ 845446E + .string "A small chair made\n" + .string "of glass.$" + +gUnknown_845448B:: @ 845448B + .string "A small chair made\n" + .string "of leaves.$" + +gUnknown_84544A9:: @ 84544A9 + .string "A small chair made\n" + .string "of wood.$" + +gUnknown_84544C5:: @ 84544C5 + .string "A small chair made\n" + .string "of brick.$" + +gUnknown_84544E2:: @ 84544E2 + .string "A small chair made\n" + .string "of logs.$" + +gUnknown_84544FE:: @ 84544FE + .string "A small chair made\n" + .string "of rock.$" + +gUnknown_845451A:: @ 845451A + .string "A vivid red potted\n" + .string "plant.$" + +gUnknown_8454534:: @ 8454534 + .string "A flowering tropical\n" + .string "plant in a pot.$" + +gUnknown_8454559:: @ 8454559 + .string "A pot of cute\n" + .string "flowers.$" + +gUnknown_8454570:: @ 8454570 + .string "A large pot with\n" + .string "many colorful\n" + .string "flowers.$" + +gUnknown_8454598:: @ 8454598 + .string "A large, umbrella-\n" + .string "shaped plant in a\n" + .string "big pot.$" + +gUnknown_84545C6:: @ 84545C6 + .string "A large, impressive\n" + .string "plant in a big pot.$" + +gUnknown_84545EE:: @ 84545EE + .string "A red-colored brick.\n" + .string "Decorations can be\n" + .string "placed on top.$" + +gUnknown_8454625:: @ 8454625 + .string "A yellow-colored\n" + .string "brick. Put some\n" + .string "decorations on top.$" + +gUnknown_845465A:: @ 845465A + .string "A blue-colored\n" + .string "brick. Put some\n" + .string "decorations on top.$" + +gUnknown_845468D:: @ 845468D + .string "A red balloon filled\n" + .string "with water. Bursts\n" + .string "if stepped on.$" + +gUnknown_84546C4:: @ 84546C4 + .string "A blue balloon filled\n" + .string "with water. Bursts\n" + .string "if stepped on.$" + +gUnknown_84546FC:: @ 84546FC + .string "A yellow balloon\n" + .string "filled with water.\n" + .string "Pops if stepped on.$" + +gUnknown_8454734:: @ 8454734 + .string "A large red tent.\n" + .string "You can hide inside\n" + .string "it.$" + +gUnknown_845475E:: @ 845475E + .string "A large blue tent.\n" + .string "You can hide inside\n" + .string "it.$" + +gUnknown_8454789:: @ 8454789 + .string "Place over a hole to\n" + .string "cross to the other\n" + .string "side.$" + +gUnknown_84547B7:: @ 84547B7 + .string "Use to slide down\n" + .string "from the platform.$" + +gUnknown_84547DC:: @ 84547DC + .string "A small fence that\n" + .string "blocks passage.$" + +gUnknown_84547FF:: @ 84547FF + .string "A small fence that\n" + .string "blocks passage.$" + +gUnknown_8454822:: @ 8454822 + .string "An old large tire.\n" + .string "Decorations can be\n" + .string "placed on top.$" + +gUnknown_8454857:: @ 8454857 + .string "A large pedestal\n" + .string "with steps.$" + +gUnknown_8454874:: @ 8454874 + .string "A large ball of mud.\n" + .string "Crumbles if stepped\n" + .string "on.$" + +gUnknown_84548A1:: @ 84548A1 + .string "A weird door that\n" + .string "people can walk\n" + .string "right through.$" + +gUnknown_84548D2:: @ 84548D2 + .string "An ornament made\n" + .string "of sand. Crumbles if\n" + .string "touched.$" + +gUnknown_8454901:: @ 8454901 + .string "Awarded for 50\n" + .string "straight wins at\n" + .string "the BATTLE TOWER.$" + +gUnknown_8454933:: @ 8454933 + .string "Awarded for 100\n" + .string "straight wins at\n" + .string "the BATTLE TOWER.$" + +gUnknown_8454966:: @ 8454966 + .string "A glass replica of\n" + .string "a famous sculpture\n" + .string "at the ART MUSEUM.$" + +gUnknown_845499F:: @ 845499F + .string "A small, gray-\n" + .string "colored toy TV.$" + +gUnknown_84549BE:: @ 84549BE + .string "A toy TV modeled\n" + .string "in the image of a\n" + .string "SEEDOT.$" + +gUnknown_84549E9:: @ 84549E9 + .string "A toy TV modeled\n" + .string "in the image of a\n" + .string "SKITTY.$" + +gUnknown_8454A14:: @ 8454A14 + .string "An odd mat that\n" + .string "glitters if stepped\n" + .string "on.$" + +gUnknown_8454A3C:: @ 8454A3C + .string "A trick mat that\n" + .string "jumps when it is\n" + .string "stepped on.$" + +gUnknown_8454A6A:: @ 8454A6A + .string "A trick mat that\n" + .string "spins around when\n" + .string "stepped on.$" + +gUnknown_8454A99:: @ 8454A99 + .string "A mat that plays\n" + .string "a low C note when\n" + .string "stepped on.$" + +gUnknown_8454AC8:: @ 8454AC8 + .string "A mat that plays\n" + .string "a D note when\n" + .string "stepped on.$" + +gUnknown_8454AF3:: @ 8454AF3 + .string "A mat that plays\n" + .string "an E note when\n" + .string "stepped on.$" + +gUnknown_8454B1F:: @ 8454B1F + .string "A mat that plays\n" + .string "an F note when\n" + .string "stepped on.$" + +gUnknown_8454B4B:: @ 8454B4B + .string "A mat that plays\n" + .string "a G note when\n" + .string "stepped on.$" + +gUnknown_8454B76:: @ 8454B76 + .string "A mat that plays\n" + .string "an A note when\n" + .string "stepped on.$" + +gUnknown_8454BA2:: @ 8454BA2 + .string "A mat that plays\n" + .string "a B note when\n" + .string "stepped on.$" + +gUnknown_8454BCD:: @ 8454BCD + .string "A mat that plays\n" + .string "a high C note when\n" + .string "stepped on.$" + +gUnknown_8454BFD:: @ 8454BFD + .string "A mat designed with\n" + .string "a SURF image.\n" + .string "Put items on top.$" + +gUnknown_8454C31:: @ 8454C31 + .string "A mat designed with\n" + .string "a THUNDER image.\n" + .string "Put items on top.$" + +gUnknown_8454C68:: @ 8454C68 + .string "A mat designed with\n" + .string "a FIRE BLAST image.\n" + .string "Put items on top.$" + +gUnknown_8454CA2:: @ 8454CA2 + .string "A mat with a POWDER\n" + .string "SNOW image design.\n" + .string "Put items on top.$" + +gUnknown_8454CDB:: @ 8454CDB + .string "A mat designed with\n" + .string "an ATTRACT image.\n" + .string "Put items on top.$" + +gUnknown_8454D13:: @ 8454D13 + .string "A mat designed with\n" + .string "a FISSURE image.\n" + .string "Put items on top.$" + +gUnknown_8454D4A:: @ 8454D4A + .string "A mat designed with\n" + .string "a SPIKES image.\n" + .string "Put items on top.$" + +gUnknown_8454D80:: @ 8454D80 + .string "A small poster\n" + .string "printed with POKé\n" + .string "BALLS.$" + +gUnknown_8454DA8:: @ 8454DA8 + .string "A small poster with\n" + .string "a TREECKO print.$" + +gUnknown_8454DCD:: @ 8454DCD + .string "A small poster with\n" + .string "a TORCHIC print.$" + +gUnknown_8454DF2:: @ 8454DF2 + .string "A small poster with\n" + .string "a MUDKIP print.$" + +gUnknown_8454E16:: @ 8454E16 + .string "A small poster with\n" + .string "an AZURILL print.$" + +gUnknown_8454E3C:: @ 8454E3C + .string "A large poster with\n" + .string "a PIKACHU and\n" + .string "PICHU print.$" + +gUnknown_8454E6B:: @ 8454E6B + .string "A large poster with\n" + .string "a SEVIPER print.$" + +gUnknown_8454E90:: @ 8454E90 + .string "A large poster with\n" + .string "a RELICANTH print.$" + +gUnknown_8454EB7:: @ 8454EB7 + .string "A large poster with\n" + .string "a WINGULL print.$" + +gUnknown_8454EDC:: @ 8454EDC + .string "A large poster with\n" + .string "a SMOOCHUM print.$" + +gUnknown_8454F02:: @ 8454F02 + .string "A PICHU doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8454F2D:: @ 8454F2D + .string "A PIKACHU doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8454F5A:: @ 8454F5A + .string "A MARILL doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8454F86:: @ 8454F86 + .string "A TOGEPI doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8454FB2:: @ 8454FB2 + .string "A CYNDAQUIL doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8454FE1:: @ 8454FE1 + .string "A CHIKORITA doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455010:: @ 8455010 + .string "A TOTODILE doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845503E:: @ 845503E + .string "A JIGGLYPUFF doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845506E:: @ 845506E + .string "A MEOWTH doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845509A:: @ 845509A + .string "A CLEFAIRY doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84550C8:: @ 84550C8 + .string "A DITTO doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84550F3:: @ 84550F3 + .string "A SMOOCHUM doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455121:: @ 8455121 + .string "A TREECKO doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845514E:: @ 845514E + .string "A TORCHIC doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845517B:: @ 845517B + .string "A MUDKIP doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84551A7:: @ 84551A7 + .string "A DUSKULL doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84551D4:: @ 84551D4 + .string "A WYNAUT doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455200:: @ 8455200 + .string "A BALTOY doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845522C:: @ 845522C + .string "A KECLEON doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455259:: @ 8455259 + .string "An AZURILL doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455287:: @ 8455287 + .string "A SKITTY doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84552B3:: @ 84552B3 + .string "A SWABLU doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84552DF:: @ 84552DF + .string "A GULPIN doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845530B:: @ 845530B + .string "A LOTAD doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455336:: @ 8455336 + .string "A SEEDOT doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455362:: @ 8455362 + .string "A PIKACHU cushion.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455392:: @ 8455392 + .string "A MARILL cushion.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84553C1:: @ 84553C1 + .string "A SMOOCHUM\n" + .string "cushion. Place it on\n" + .string "a mat or a desk.$" + +gUnknown_84553F2:: @ 84553F2 + .string "A ZIGZAGOON\n" + .string "cushion. Place it on\n" + .string "a mat or a desk.$" + +gUnknown_8455424:: @ 8455424 + .string "A SPINDA cushion.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455453:: @ 8455453 + .string "A SABLEYE cushion.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455483:: @ 8455483 + .string "A BALL cushion.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84554B0:: @ 84554B0 + .string "A grass-mark\n" + .string "cushion. Place it on\n" + .string "a mat or a desk.$" + +gUnknown_84554E3:: @ 84554E3 + .string "A fire-mark\n" + .string "cushion. Place it on\n" + .string "a mat or a desk.$" + +gUnknown_8455515:: @ 8455515 + .string "A water-mark\n" + .string "cushion. Place it on\n" + .string "a mat or a desk.$" + +gUnknown_8455548:: @ 8455548 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455573:: @ 8455573 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845559E:: @ 845559E + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84555C9:: @ 84555C9 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84555F4:: @ 84555F4 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845561F:: @ 845561F + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_845564A:: @ 845564A + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_8455675:: @ 8455675 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84556A0:: @ 84556A0 + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" + +gUnknown_84556CB:: @ 84556CB + .string "A large doll.\n" + .string "Place it on a mat\n" + .string "or a desk.$" diff --git a/include/global.h b/include/global.h index 9a398354d..55233a340 100644 --- a/include/global.h +++ b/include/global.h @@ -498,7 +498,8 @@ typedef union QuestLogScene QuestLogScene; #define BERRY_TREES_COUNT 128 #define FLAGS_COUNT 288 // 300 #define VARS_COUNT 256 -#define MAIL_COUNT 16 +#define MAIL_COUNT (PARTY_SIZE + 10) +#define PC_MAIL_NUM(i) (PARTY_SIZE + (i)) // Declare here so that it can be recursively referenced. union QuestLogMovement; diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 7b83c913b..a7555c505 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -30,7 +30,7 @@ void sub_80F6E9C(void); void DrawDialogueFrame(u8 windowId, bool8 transfer); void DrawStdWindowFrame(u8 windowId, bool8 copyNow); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); -void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow); +void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow); void sub_80F6C14(void); void sub_80F771C(bool8 copyToVram); void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram); diff --git a/include/player_pc.h b/include/player_pc.h index e14e5e9da..f527ec9f5 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -2,9 +2,20 @@ #define GUARD_PLAYER_PC_H #include "global.h" +#include "list_menu.h" // Exported type declarations +struct PlayerPC_Unk_203AAC4 +{ + u16 selectedRow; + u16 scrollOffset; + u8 unk_4; + u8 unk_5; + u8 filler_6[4]; + u8 unk_A; +}; + // Exported RAM declarations // Exported ROM declarations diff --git a/ld_script.txt b/ld_script.txt index 49531d76a..a65474cd5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -232,7 +232,7 @@ SECTIONS { src/trainer_pokemon_sprites.o(.text); src/vs_seeker.o(.text); src/item_pc.o(.text); - asm/mailbox_pc.o(.text); + src/mailbox_pc.o(.text); src/menu.o(.text); src/quest_log.o(.text); asm/link_rfu_3.o(.text); @@ -451,7 +451,8 @@ SECTIONS { src/trainer_pokemon_sprites.o(.rodata); src/vs_seeker.o(.rodata); src/item_pc.o(.rodata); - data/data_83FECCC.o(.rodata.8453F6C); + src/mailbox_pc.o(.rodata); + data/decorations.o(.rodata); src/menu.o(.rodata); src/quest_log.o(.rodata); data/data_83FECCC.o(.rodata.8456C74); diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c new file mode 100644 index 000000000..3c72b9b5a --- /dev/null +++ b/src/mailbox_pc.c @@ -0,0 +1,143 @@ +#include "global.h" +#include "malloc.h" +#include "window.h" +#include "menu.h" +#include "string_util.h" +#include "new_menu_helpers.h" +#include "list_menu.h" +#include "player_pc.h" +#include "strings.h" +#include "menu_indicators.h" +#include "sound.h" +#include "constants/songs.h" + +EWRAM_DATA u8 gUnknown_203ADDC[3] = {}; +EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL; + +void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list); + +static const struct WindowTemplate gUnknown_8453FE8[] = { + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x008 + }, { + .bg = 0, + .tilemapLeft = 19, + .tilemapTop = 1, + .width = 10, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x01c + }, { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 15, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x01c + } +}; + +static const u8 gUnknown_8454000[3] = {1, 2, 3}; +static const u8 gUnknown_8454003[] = _(""); + +bool8 sub_810EB6C(u8 num) +{ + u8 i; + + gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1)); + if (gUnknown_203ADE0 == NULL) + return FALSE; + for (i = 0; i < NELEMS(gUnknown_203ADDC); i++) + gUnknown_203ADDC[i] = 0xFF; + return TRUE; +} + +u8 sub_810EBAC(u8 winIdx) +{ + if (gUnknown_203ADDC[winIdx] == 0xFF) + { + gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]); + SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0); + } + return gUnknown_203ADDC[winIdx]; +} + +void sub_810EBE0(u8 winIdx) +{ + ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE); + ClearWindowTilemap(gUnknown_203ADDC[winIdx]); + RemoveWindow(gUnknown_203ADDC[winIdx]); + gUnknown_203ADDC[winIdx] = 0xFF; +} + +u8 sub_810EC10(u8 winIdx) +{ + return gUnknown_203ADDC[winIdx]; +} + +void sub_810EC20(u8 windowId, s32 itemId, u8 y) +{ + u8 strbuf[30]; + if (itemId != -2) + { + StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName); + if (StringLength(strbuf) <= 5) + ConvertInternationalString(strbuf, LANGUAGE_JAPANESE); + AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf); + } +} + +u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +{ + u16 i; + for (i = 0; i < playerPcStruct->unk_5; i++) + { + gUnknown_203ADE0[i].label = gUnknown_8454003; + gUnknown_203ADE0[i].index = i; + } + gUnknown_203ADE0[i].label = gFameCheckerText_Cancel; + gUnknown_203ADE0[i].index = -2; + + gMultiuseListMenuTemplate.items = gUnknown_203ADE0; + gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1; + gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1]; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0); + gMultiuseListMenuTemplate.cursor_X = 0; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.maxShowed = 8; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.upText_Y = 10; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 1; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C; + gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.scrollMultiple = 0; + return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow); +} + +void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list) +{ + if (onInit != TRUE) + PlaySE(SE_SELECT); +} + +void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +{ + playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset); +} + +void sub_810EDB0(void) +{ + Free(gUnknown_203ADE0); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 9acd767d0..feeb0e404 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1169,15 +1169,15 @@ gSpecialVar_ItemId: @ 203AD30 .include "src/item_pc.o" .align 2 -gUnknown_203ADDC: @ 203ADDC - .space 0x4 - -gUnknown_203ADE0: @ 203ADE0 - .space 0x4 + .include "src/mailbox_pc.o" + .align 2 .include "src/menu.o" + + .align 2 .include "src/quest_log.o" + .align 2 gUnknown_203B04C: @ 203B04C .space 0xC From 69cb422b78644c60e5471eea8c82ea9347d48b60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:25:18 -0400 Subject: [PATCH 081/100] Name functions in mailbox_pc --- asm/player_pc.s | 32 +++++++++---------- include/mailbox_pc.h | 12 +++++++ src/mailbox_pc.c | 76 ++++++++++++++++++++++---------------------- 3 files changed, 66 insertions(+), 54 deletions(-) create mode 100644 include/mailbox_pc.h diff --git a/asm/player_pc.s b/asm/player_pc.s index 32838be77..ca08fe3b2 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -369,7 +369,7 @@ _080EB95C: _080EB962: ldr r0, _080EB990 @ =gUnknown_203AAC4 ldrb r0, [r0, 0x5] - bl sub_810EB6C + bl MailboxPC_InitBuffers lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1054,7 +1054,7 @@ sub_80EBEB0: @ 80EBEB0 lsls r6, 24 lsrs r6, 24 movs r0, 0 - bl sub_810EBAC + bl MailboxPC_GetAddWindow adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1066,7 +1066,7 @@ sub_80EBEB0: @ 80EBEB0 bl GetStringWidth adds r5, r0, 0 movs r0, 0x1 - bl sub_810EBAC + bl MailboxPC_GetAddWindow movs r3, 0x50 subs r3, r5 lsrs r0, r3, 31 @@ -1087,7 +1087,7 @@ sub_80EBEB0: @ 80EBEB0 bl ScheduleBgCopyTilemapToVram ldr r4, _080EBF38 @ =gUnknown_203AAC4 adds r0, r4, 0 - bl sub_810EC98 + bl MailboxPC_InitListMenu ldr r2, _080EBF3C @ =gTasks lsls r1, r6, 2 adds r1, r6 @@ -1097,7 +1097,7 @@ sub_80EBEB0: @ 80EBEB0 lsrs r0, 24 strh r0, [r1, 0x1E] adds r0, r4, 0 - bl sub_810ED80 + bl MailboxPC_AddScrollIndicatorArrows add sp, 0xC pop {r3} mov r8, r3 @@ -1168,9 +1168,9 @@ _080EBFB6: movs r0, 0x5 bl PlaySE movs r0, 0 - bl sub_810EBE0 + bl MailboxPC_RemoveWindow movs r0, 0x1 - bl sub_810EBE0 + bl MailboxPC_RemoveWindow ldrb r0, [r4, 0x16] adds r1, r7, 0 mov r2, r8 @@ -1282,16 +1282,16 @@ sub_80EC094: @ 80EC094 ldr r0, _080EC0D4 @ =gTasks+0x8 adds r4, r0 movs r0, 0 - bl sub_810EBE0 + bl MailboxPC_RemoveWindow movs r0, 0x1 - bl sub_810EBE0 + bl MailboxPC_RemoveWindow ldrb r0, [r4, 0x16] movs r1, 0 movs r2, 0 bl DestroyListMenuTask movs r0, 0 bl ScheduleBgCopyTilemapToVram - bl sub_810EDB0 + bl MailboxPC_DestroyListMenuBuffer adds r0, r5, 0 bl sub_80EB8BC pop {r4,r5} @@ -1311,7 +1311,7 @@ sub_80EC0D8: @ 80EC0D8 lsls r5, 24 lsrs r5, 24 movs r0, 0x2 - bl sub_810EBAC + bl MailboxPC_GetAddWindow adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1437,7 +1437,7 @@ sub_80EC1D4: @ 80EC1D4 ands r0, r1 cmp r0, 0 bne _080EC216 - bl sub_810EDB0 + bl MailboxPC_DestroyListMenuBuffer bl CleanupOverworldWindowsAndTilemaps ldr r2, _080EC220 @ =gSaveBlock1Ptr ldr r1, _080EC224 @ =gUnknown_203AAC4 @@ -1519,7 +1519,7 @@ _080EC27E: lsrs r4, r0, 24 ldr r0, _080EC2AC @ =gUnknown_203AAC4 ldrb r0, [r0, 0x5] - bl sub_810EB6C + bl MailboxPC_InitBuffers lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1752,7 +1752,7 @@ sub_80EC444: @ 80EC444 ands r0, r1 cmp r0, 0 bne _080EC468 - bl sub_810EDB0 + bl MailboxPC_DestroyListMenuBuffer bl CleanupOverworldWindowsAndTilemaps bl sub_81273D8 adds r0, r4, 0 @@ -1810,7 +1810,7 @@ _080EC4C6: bl sub_80F6E9C ldr r0, _080EC4EC @ =gUnknown_203AAC4 ldrb r0, [r0, 0x5] - bl sub_810EB6C + bl MailboxPC_InitBuffers lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1898,7 +1898,7 @@ sub_80EC574: @ 80EC574 lsls r4, 24 lsrs r4, 24 movs r0, 0x2 - bl sub_810EBE0 + bl MailboxPC_RemoveWindow movs r0, 0 bl ScheduleBgCopyTilemapToVram ldr r1, _080EC59C @ =gTasks diff --git a/include/mailbox_pc.h b/include/mailbox_pc.h new file mode 100644 index 000000000..c2d18fc4b --- /dev/null +++ b/include/mailbox_pc.h @@ -0,0 +1,12 @@ +#ifndef GUARD_MAILBOX_PC_H +#define GUARD_MAILBOX_PC_H + +bool8 MailboxPC_InitBuffers(u8 num); +u8 MailboxPC_GetAddWindow(u8 winIdx); +void MailboxPC_RemoveWindow(u8 winIdx); +u8 MailboxPC_GetWindowId(u8 winIdx); +u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct); +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct); +void MailboxPC_DestroyListMenuBuffer(void); + +#endif //GUARD_MAILBOX_PC_H diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 3c72b9b5a..80c3f7e0b 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -11,12 +11,12 @@ #include "sound.h" #include "constants/songs.h" -EWRAM_DATA u8 gUnknown_203ADDC[3] = {}; -EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL; +EWRAM_DATA u8 sWindowIds[3] = {}; +EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; -void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list); +static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); -static const struct WindowTemplate gUnknown_8453FE8[] = { +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, .tilemapLeft = 1, @@ -44,45 +44,45 @@ static const struct WindowTemplate gUnknown_8453FE8[] = { } }; -static const u8 gUnknown_8454000[3] = {1, 2, 3}; -static const u8 gUnknown_8454003[] = _(""); +static const u8 sTextColor[3] = {1, 2, 3}; +static const u8 sString_Dummy[] = _(""); -bool8 sub_810EB6C(u8 num) +bool8 MailboxPC_InitBuffers(u8 num) { u8 i; - gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1)); - if (gUnknown_203ADE0 == NULL) + sListMenuItems = Alloc(sizeof(struct ListMenuItem) * (num + 1)); + if (sListMenuItems == NULL) return FALSE; - for (i = 0; i < NELEMS(gUnknown_203ADDC); i++) - gUnknown_203ADDC[i] = 0xFF; + for (i = 0; i < NELEMS(sWindowIds); i++) + sWindowIds[i] = 0xFF; return TRUE; } -u8 sub_810EBAC(u8 winIdx) +u8 MailboxPC_GetAddWindow(u8 winIdx) { - if (gUnknown_203ADDC[winIdx] == 0xFF) + if (sWindowIds[winIdx] == 0xFF) { - gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]); - SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0); + sWindowIds[winIdx] = AddWindow(&sWindowTemplates[winIdx]); + SetStdWindowBorderStyle(sWindowIds[winIdx], 0); } - return gUnknown_203ADDC[winIdx]; + return sWindowIds[winIdx]; } -void sub_810EBE0(u8 winIdx) +void MailboxPC_RemoveWindow(u8 winIdx) { - ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203ADDC[winIdx]); - RemoveWindow(gUnknown_203ADDC[winIdx]); - gUnknown_203ADDC[winIdx] = 0xFF; + ClearStdWindowAndFrameToTransparent(sWindowIds[winIdx], FALSE); + ClearWindowTilemap(sWindowIds[winIdx]); + RemoveWindow(sWindowIds[winIdx]); + sWindowIds[winIdx] = 0xFF; } -u8 sub_810EC10(u8 winIdx) +u8 MailboxPC_GetWindowId(u8 winIdx) { - return gUnknown_203ADDC[winIdx]; + return sWindowIds[winIdx]; } -void sub_810EC20(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc(u8 windowId, s32 itemId, u8 y) { u8 strbuf[30]; if (itemId != -2) @@ -90,24 +90,24 @@ void sub_810EC20(u8 windowId, s32 itemId, u8 y) StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName); if (StringLength(strbuf) <= 5) ConvertInternationalString(strbuf, LANGUAGE_JAPANESE); - AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf); + AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, sTextColor, -1, strbuf); } } -u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct) { u16 i; for (i = 0; i < playerPcStruct->unk_5; i++) { - gUnknown_203ADE0[i].label = gUnknown_8454003; - gUnknown_203ADE0[i].index = i; + sListMenuItems[i].label = sString_Dummy; + sListMenuItems[i].index = i; } - gUnknown_203ADE0[i].label = gFameCheckerText_Cancel; - gUnknown_203ADE0[i].index = -2; + sListMenuItems[i].label = gFameCheckerText_Cancel; + sListMenuItems[i].index = -2; - gMultiuseListMenuTemplate.items = gUnknown_203ADE0; + gMultiuseListMenuTemplate.items = sListMenuItems; gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1; - gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1]; + gMultiuseListMenuTemplate.windowId = sWindowIds[1]; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0); gMultiuseListMenuTemplate.cursor_X = 0; @@ -119,25 +119,25 @@ u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) gMultiuseListMenuTemplate.cursorPal = 2; gMultiuseListMenuTemplate.fillValue = 1; gMultiuseListMenuTemplate.cursorShadowPal = 3; - gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C; - gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20; + gMultiuseListMenuTemplate.moveCursorFunc = MoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = ItemPrintFunc; gMultiuseListMenuTemplate.cursorKind = 0; gMultiuseListMenuTemplate.scrollMultiple = 0; return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow); } -void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list) +static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) { if (onInit != TRUE) PlaySE(SE_SELECT); } -void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct) { playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset); } -void sub_810EDB0(void) +void MailboxPC_DestroyListMenuBuffer(void) { - Free(gUnknown_203ADE0); + Free(sListMenuItems); } From 29cb480fa897389f915a163704c0b66057d513df Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 13:14:40 -0400 Subject: [PATCH 082/100] make ewram static again --- src/mailbox_pc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 80c3f7e0b..0ebffc67e 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -11,8 +11,8 @@ #include "sound.h" #include "constants/songs.h" -EWRAM_DATA u8 sWindowIds[3] = {}; -EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; +static EWRAM_DATA u8 sWindowIds[3] = {}; +static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); From a8211f39b5736b0f47b4cd80e81395e7c0aff28e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 13:50:32 -0400 Subject: [PATCH 083/100] Move the string vars to string_util --- src/string_util.c | 4 ++++ sym_ewram.txt | 13 ------------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/string_util.c b/src/string_util.c index e1129a5a5..d5b5202df 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -2,6 +2,10 @@ #include "string_util.h" #include "text.h" +EWRAM_DATA u8 gStringVar1[32] = {}; +EWRAM_DATA u8 gStringVar2[20] = {}; +EWRAM_DATA u8 gStringVar3[20] = {}; +EWRAM_DATA u8 gStringVar4[1000] = {}; EWRAM_DATA u8 gUnknownStringVar[16] = {0}; static const u8 sDigits[] = __("0123456789ABCDEF"); diff --git a/sym_ewram.txt b/sym_ewram.txt index feeb0e404..194f7fe5d 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -11,20 +11,7 @@ .include "src/window_8bpp.o" .align 2 .include "src/sprite.o" - .align 2 -gStringVar1: @ 2021CD0 - .space 0x20 - -gStringVar2: @ 2021CF0 - .space 0x14 - -gStringVar3: @ 2021D04 - .space 0x14 - -gStringVar4: @ 2021D18 - .space 0x3E8 - .include "src/string_util.o" @ .include "src/link.o" From b01da1a59260b2ac54dd876e9cf35d2c1fb944e7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 15:49:05 -0400 Subject: [PATCH 084/100] link.c through InitLocalLinkPlayer --- asm/cable_club.s | 2 +- asm/easy_chat.s | 4 +- asm/event_data.s | 6 +- asm/evolution_scene.s | 4 +- asm/link.s | 384 +----------------- asm/link_rfu_2.s | 4 +- asm/main_menu.s | 6 +- asm/party_menu.s | 2 +- asm/pokedex_screen.s | 14 +- asm/save_menu_util.s | 2 +- asm/trade.s | 2 +- asm/trainer_card.s | 2 +- data/data.s | 4 +- data/map_event_scripts.inc | 2 +- .../scripts.inc | 4 +- .../OneIsland_PokemonCenter_1F/scripts.inc | 2 +- .../ThreeIsland_DunsparceTunnel/scripts.inc | 4 +- data/specials.inc | 4 +- include/event_data.h | 2 +- include/librfu.h | 125 ++++++ include/link_rfu.h | 3 + ld_script.txt | 1 + src/link.c | 153 +++++++ src/pokemon.c | 4 +- src/prof_pc.c | 2 +- sym_common.txt | 2 +- 26 files changed, 332 insertions(+), 412 deletions(-) create mode 100644 src/link.c diff --git a/asm/cable_club.s b/asm/cable_club.s index a20b4310c..4b93df7e4 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -2087,7 +2087,7 @@ _080817C0: bl sub_8057F34 ldr r0, _080817DC @ =gSpecialVar_0x8005 ldrb r0, [r0] - bl sub_80096F8 + bl SetLocalLinkPlayerId movs r0, 0x2 strh r0, [r5, 0x8] b _08081820 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 604929f1f..7019ae3c0 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -797,7 +797,7 @@ _080BDCA4: .4byte 0x0000ffff thumb_func_start sub_80BDCA8 sub_80BDCA8: @ 80BDCA8 push {lr} - bl sub_806E25C + bl IsNationalPokedexEnabled lsls r0, 24 lsrs r0, 24 pop {r1} @@ -1116,7 +1116,7 @@ _080BDEB2: movs r0, 0x13 strh r0, [r3] _080BDF0C: - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 beq _080BDF2A ldr r0, _080BDF30 @ =gUnknown_20399BC diff --git a/asm/event_data.s b/asm/event_data.s index 690134c27..e219a7ed9 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -193,8 +193,8 @@ _0806E254: .4byte gSaveBlock2Ptr _0806E258: .4byte 0x00006258 thumb_func_end EnableNationalPokedex - thumb_func_start sub_806E25C -sub_806E25C: @ 806E25C + thumb_func_start IsNationalPokedexEnabled +IsNationalPokedexEnabled: @ 806E25C push {lr} ldr r0, _0806E288 @ =gSaveBlock2Ptr ldr r0, [r0] @@ -224,7 +224,7 @@ _0806E294: _0806E296: pop {r1} bx r1 - thumb_func_end sub_806E25C + thumb_func_end IsNationalPokedexEnabled thumb_func_start sub_806E29C sub_806E29C: @ 806E29C diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index d88145fde..1ffe9b0db 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1321,7 +1321,7 @@ sub_80CE8DC: @ 80CE8DC ldr r0, _080CE940 @ =gPlayerParty adds r1, r0 mov r9, r1 - bl sub_806E25C + bl IsNationalPokedexEnabled mov r10, r4 cmp r0, 0 bne _080CE948 @@ -2736,7 +2736,7 @@ sub_80CF53C: @ 80CF53C ldr r0, _080CF5C0 @ =gPlayerParty adds r1, r0 mov r8, r1 - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 bne _080CF598 movs r1, 0x8 diff --git a/asm/link.s b/asm/link.s index 80b4f5f6a..b5eefe73e 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,368 +5,6 @@ .text - thumb_func_start sub_8009480 -sub_8009480: @ 8009480 - push {lr} - ldr r0, _08009494 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08009498 - movs r0, 0 - b _080094CE - .align 2, 0 -_08009494: .4byte gUnknown_203ADFA -_08009498: - bl sub_800B1F4 - bl sub_80F86F4 - movs r0, 0x1 - bl sub_80FB128 - bl sub_80FD3A4 - ldr r1, _080094C0 @ =0x00008001 - cmp r0, r1 - beq _080094C4 - bl sub_800B210 - bl CloseLink - bl RestoreSerialTimer3IntrHandlers - movs r0, 0 - b _080094CE - .align 2, 0 -_080094C0: .4byte 0x00008001 -_080094C4: - bl rfu_REQ_stopMode - bl rfu_waitREQComplete - movs r0, 0x1 -_080094CE: - pop {r1} - bx r1 - thumb_func_end sub_8009480 - - thumb_func_start sub_80094D4 -sub_80094D4: @ 80094D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - pop {r0} - bx r0 - thumb_func_end sub_80094D4 - - thumb_func_start sub_80094E4 -sub_80094E4: @ 80094E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldr r4, [sp, 0x18] - lsls r5, 24 - lsrs r5, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08009540 @ =gUnknown_8232578 - lsls r1, r5, 4 - movs r2, 0x20 - bl LoadPalette - ldr r3, _08009544 @ =0x040000d4 - ldr r0, _08009548 @ =gUnknown_8232598 - str r0, [r3] - lsls r2, r7, 14 - lsls r0, r4, 5 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - adds r2, r0 - str r2, [r3, 0x4] - ldr r0, _0800954C @ =0x80001000 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] - ldr r0, _08009550 @ =gUnknown_3003F70 - str r6, [r0] - str r5, [r0, 0x4] - str r4, [r0, 0x8] - mov r0, r8 - cmp r0, 0x2 - beq _0800956E - cmp r0, 0x2 - bgt _08009554 - cmp r0, 0x1 - beq _0800955C - b _08009590 - .align 2, 0 -_08009540: .4byte gUnknown_8232578 -_08009544: .4byte 0x040000d4 -_08009548: .4byte gUnknown_8232598 -_0800954C: .4byte 0x80001000 -_08009550: .4byte gUnknown_3003F70 -_08009554: - mov r0, r8 - cmp r0, 0x3 - beq _08009580 - b _08009590 -_0800955C: - lsls r1, r6, 8 - movs r0, 0x1 - orrs r1, r0 - lsls r0, r7, 2 - orrs r1, r0 - movs r0, 0xA - bl SetGpuReg - b _08009590 -_0800956E: - lsls r1, r6, 8 - movs r0, 0x1 - orrs r1, r0 - lsls r0, r7, 2 - orrs r1, r0 - movs r0, 0xC - bl SetGpuReg - b _08009590 -_08009580: - lsls r1, r6, 8 - movs r0, 0x1 - orrs r1, r0 - lsls r0, r7, 2 - orrs r1, r0 - movs r0, 0xE - bl SetGpuReg -_08009590: - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl SetGpuReg - adds r4, 0x12 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl SetGpuReg - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80094E4 - - thumb_func_start sub_80095BC -sub_80095BC: @ 80095BC - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r6, r1, 0 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08009628 @ =gUnknown_8232578 - mov r2, r8 - lsls r1, r2, 4 - movs r2, 0x20 - bl LoadPalette - ldr r2, _0800962C @ =0x040000d4 - ldr r0, _08009630 @ =gUnknown_8232598 - str r0, [r2] - lsls r0, r5, 14 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - str r0, [r2, 0x4] - ldr r0, _08009634 @ =0x80001000 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _08009638 @ =gUnknown_3003F70 - str r4, [r0] - mov r1, r8 - str r1, [r0, 0x4] - movs r1, 0 - str r1, [r0, 0x8] - ldr r0, _0800963C @ =gBGControlRegOffsets - adds r6, r0 - ldrb r0, [r6] - lsls r4, 8 - lsls r5, 2 - orrs r4, r5 - adds r1, r4, 0 - bl SetGpuReg - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08009628: .4byte gUnknown_8232578 -_0800962C: .4byte 0x040000d4 -_08009630: .4byte gUnknown_8232598 -_08009634: .4byte 0x80001000 -_08009638: .4byte gUnknown_3003F70 -_0800963C: .4byte gBGControlRegOffsets - thumb_func_end sub_80095BC - - thumb_func_start sub_8009640 -sub_8009640: @ 8009640 - push {r4,lr} - sub sp, 0x4 - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - ldr r0, _080096D4 @ =sub_800978C - bl SetVBlankCallback - bl ResetBlockSend - ldr r1, _080096D8 @ =gLinkType - ldr r2, _080096DC @ =0x00001111 - adds r0, r2, 0 - strh r0, [r1] - bl OpenLink - ldr r0, _080096E0 @ =gMain - ldrh r0, [r0, 0x24] - bl SeedRng - movs r4, 0 -_08009670: - bl Random - ldr r1, _080096E4 @ =gSaveBlock2Ptr - ldr r1, [r1] - adds r1, 0xA - adds r1, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _08009670 - movs r4, 0 - str r4, [sp] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0 - bl sub_80094E4 - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080096E8 @ =sub_80094D4 - movs r1, 0 - bl CreateTask - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _080096EC @ =gUnknown_3000E58 - str r4, [r0] - bl sub_8009708 - ldr r0, _080096F0 @ =task00_link_test - movs r1, 0 - bl CreateTask - ldr r0, _080096F4 @ =c2_08009A8C - bl SetMainCallback2 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080096D4: .4byte sub_800978C -_080096D8: .4byte gLinkType -_080096DC: .4byte 0x00001111 -_080096E0: .4byte gMain -_080096E4: .4byte gSaveBlock2Ptr -_080096E8: .4byte sub_80094D4 -_080096EC: .4byte gUnknown_3000E58 -_080096F0: .4byte task00_link_test -_080096F4: .4byte c2_08009A8C - thumb_func_end sub_8009640 - - thumb_func_start sub_80096F8 -sub_80096F8: @ 80096F8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08009704 @ =gLocalLinkPlayer - strh r0, [r1, 0x18] - bx lr - .align 2, 0 -_08009704: .4byte gLocalLinkPlayer - thumb_func_end sub_80096F8 - - thumb_func_start sub_8009708 -sub_8009708: @ 8009708 - push {r4,r5,lr} - ldr r5, _08009774 @ =gLocalLinkPlayer - ldr r4, _08009778 @ =gSaveBlock2Ptr - ldr r1, [r4] - ldrb r2, [r1, 0xA] - ldrb r0, [r1, 0xB] - lsls r0, 8 - orrs r2, r0 - ldrb r0, [r1, 0xC] - lsls r0, 16 - orrs r2, r0 - ldrb r0, [r1, 0xD] - lsls r0, 24 - orrs r2, r0 - str r2, [r5, 0x4] - adds r0, r5, 0 - adds r0, 0x8 - bl StringCopy - ldr r0, [r4] - ldrb r0, [r0, 0x8] - strb r0, [r5, 0x13] - ldr r0, _0800977C @ =gLinkType - ldrh r0, [r0] - str r0, [r5, 0x14] - ldr r0, _08009780 @ =gGameLanguage - ldrb r0, [r0] - strh r0, [r5, 0x1A] - ldr r0, _08009784 @ =gGameVersion - ldrb r0, [r0] - movs r2, 0x80 - lsls r2, 7 - adds r1, r2, 0 - adds r0, r1 - strh r0, [r5] - movs r0, 0x80 - lsls r0, 8 - strh r0, [r5, 0x2] - bl sub_806E25C - strb r0, [r5, 0x10] - ldr r0, _08009788 @ =0x00000844 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0800976E - ldrb r0, [r5, 0x10] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x10] -_0800976E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08009774: .4byte gLocalLinkPlayer -_08009778: .4byte gSaveBlock2Ptr -_0800977C: .4byte gLinkType -_08009780: .4byte gGameLanguage -_08009784: .4byte gGameVersion -_08009788: .4byte 0x00000844 - thumb_func_end sub_8009708 - thumb_func_start sub_800978C sub_800978C: @ 800978C push {lr} @@ -736,8 +374,8 @@ _08009A84: .4byte gLinkVSyncDisabled _08009A88: .4byte gUnknown_3003F80 thumb_func_end LinkTestProcessKeyInput - thumb_func_start c2_08009A8C -c2_08009A8C: @ 8009A8C + thumb_func_start CB2_LinkTest +CB2_LinkTest: @ 8009A8C push {lr} bl LinkTestProcessKeyInput movs r0, 0x1 @@ -750,7 +388,7 @@ c2_08009A8C: @ 8009A8C bl UpdatePaletteFade pop {r0} bx r0 - thumb_func_end c2_08009A8C + thumb_func_end CB2_LinkTest thumb_func_start LinkMain2 LinkMain2: @ 8009AB0 @@ -956,7 +594,7 @@ _08009C2C: _08009C30: .4byte 0x0000cafe _08009C34: .4byte 0x0000cccc _08009C38: - bl sub_8009708 + bl InitLocalLinkPlayer ldr r0, _08009C7C @ =gUnknown_3003E70 adds r2, r0, 0 adds r2, 0x10 @@ -2326,7 +1964,7 @@ PrintHexDigit: @ 800A614 lsls r1, 24 lsrs r1, 24 lsls r2, 24 - ldr r4, _0800A648 @ =gUnknown_3003F70 + ldr r4, _0800A648 @ =gLinkTestBGInfo ldr r3, [r4] lsls r3, 11 movs r5, 0xC0 @@ -2347,7 +1985,7 @@ PrintHexDigit: @ 800A614 pop {r0} bx r0 .align 2, 0 -_0800A648: .4byte gUnknown_3003F70 +_0800A648: .4byte gLinkTestBGInfo thumb_func_end PrintHexDigit thumb_func_start sub_800A64C @@ -2358,7 +1996,7 @@ sub_800A64C: @ 800A64C lsls r1, 24 lsrs r1, 24 lsls r2, 24 - ldr r4, _0800A680 @ =gUnknown_3003F70 + ldr r4, _0800A680 @ =gLinkTestBGInfo ldr r3, [r4] lsls r3, 11 movs r5, 0xC0 @@ -2378,7 +2016,7 @@ sub_800A64C: @ 800A64C pop {r0} bx r0 .align 2, 0 -_0800A680: .4byte gUnknown_3003F70 +_0800A680: .4byte gLinkTestBGInfo thumb_func_end sub_800A64C thumb_func_start sub_800A684 @@ -3315,7 +2953,7 @@ _0800AD30: ldr r1, _0800AE0C @ =gSoftResetDisabled movs r0, 0 strb r0, [r1] - ldr r0, _0800AE10 @ =sub_80094D4 + ldr r0, _0800AE10 @ =Task_DestroySelf movs r1, 0 bl CreateTask bl StopMapMusic @@ -3345,7 +2983,7 @@ _0800AE00: .4byte gUnknown_2022860 _0800AE04: .4byte gUnknown_82345F0 _0800AE08: .4byte gTMCaseMainWindowPalette _0800AE0C: .4byte gSoftResetDisabled -_0800AE10: .4byte sub_80094D4 +_0800AE10: .4byte Task_DestroySelf _0800AE14: .4byte gMain _0800AE18: .4byte sub_800AF2C thumb_func_end c2_800ACD4 @@ -3679,7 +3317,7 @@ _0800B0B0: .4byte gUnknown_3003EAC thumb_func_start sub_800B0B4 sub_800B0B4: @ 800B0B4 push {r4-r6,lr} - bl sub_8009708 + bl InitLocalLinkPlayer ldr r1, _0800B100 @ =gUnknown_3003E70 adds r2, r1, 0 adds r2, 0x10 diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index d4934caa9..316b994a0 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -6866,7 +6866,7 @@ sub_80FBA78: @ 80FBA78 bl ResetPaletteFade ldr r0, _080FBAF4 @ =sub_80FBA64 bl SetVBlankCallback - bl sub_8009480 + bl IsWirelessAdapterConnected lsls r0, 24 cmp r0, 0 beq _080FBAEC @@ -9184,7 +9184,7 @@ _080FCB88: ands r4, r1 orrs r4, r0 strb r4, [r7] - bl sub_806E25C + bl IsNationalPokedexEnabled ands r0, r6 ldrb r1, [r7, 0x1] ands r5, r1 diff --git a/asm/main_menu.s b/asm/main_menu.s index fed088ff3..76c9f8838 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -948,7 +948,7 @@ _0800CAEE: movs r0, 0 b _0800CB22 _0800CAF2: - bl sub_8009480 + bl IsWirelessAdapterConnected lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -1227,7 +1227,7 @@ sub_800CCF8: @ 800CCF8 beq _0800CD44 movs r0, 0x5 bl PlaySE - bl sub_8009480 + bl IsWirelessAdapterConnected movs r0, 0x1 negs r0, r0 movs r1, 0 @@ -1500,7 +1500,7 @@ sub_800CF3C: @ 800CF3C lsrs r0, 24 cmp r0, 0x1 bne _0800CFAE - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 beq _0800CF64 movs r0, 0x1 diff --git a/asm/party_menu.s b/asm/party_menu.s index 44a250e82..899e8e7ea 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -16284,7 +16284,7 @@ _08126C20: .4byte 0x0000ffff thumb_func_start sub_8126C24 sub_8126C24: @ 8126C24 push {lr} - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 bne _08126C60 ldr r0, _08126C54 @ =gUnknown_203B0A0 diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 2f0682c94..b0b53da55 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -49,7 +49,7 @@ sub_810250C: @ 810250C mov r6, r8 push {r6} sub sp, 0xC - bl sub_806E25C + bl IsNationalPokedexEnabled lsls r0, 24 lsrs r6, r0, 24 bl m4aSoundVSyncOff @@ -594,7 +594,7 @@ _081029D0: adds r1, 0x62 movs r2, 0 bl ListMenuGetScrollAndRow - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 beq _081029F4 ldr r0, _081029F0 @ =gUnknown_84520E4 @@ -915,7 +915,7 @@ sub_8102C28: @ 8102C28 bl AddWindow ldr r1, [r7] strb r0, [r1, 0x16] - bl sub_806E25C + bl IsNationalPokedexEnabled adds r5, r0, 0 cmp r5, 0 bne _08102C9E @@ -1904,7 +1904,7 @@ sub_8103518: @ 8103518 sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 - bl sub_806E25C + bl IsNationalPokedexEnabled movs r1, 0x97 str r1, [sp] cmp r0, 0 @@ -5594,7 +5594,7 @@ sub_81052D0: @ 81052D0 sub sp, 0x8 lsls r0, 24 lsrs r6, r0, 24 - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 beq _081052E8 ldr r0, _081052E4 @ =gUnknown_84406E0 @@ -8137,7 +8137,7 @@ sub_8106810: @ 8106810 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0x1 beq _08106830 adds r0, r4, 0 @@ -8609,7 +8609,7 @@ sub_8106B60: @ 8106B60 movs r1, 0x3 movs r2, 0x1 bl sub_8104AB0 - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 bne _08106BA4 adds r0, r5, 0 diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s index 2d2866914..1cb9d85a3 100644 --- a/asm/save_menu_util.s +++ b/asm/save_menu_util.s @@ -55,7 +55,7 @@ _080F8024: .align 2, 0 _080F8030: .4byte gSaveBlock2Ptr _080F8034: - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 beq _080F8044 movs r0, 0x1 diff --git a/asm/trade.s b/asm/trade.s index 42097bd3e..4c3932ef1 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -6443,7 +6443,7 @@ _0804FA2C: cmp r5, r7 blt _0804FA2C _0804FA4E: - bl sub_806E25C + bl IsNationalPokedexEnabled mov r1, r9 lsls r4, r1, 2 cmp r0, 0 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 787a9748a..9a28cbc5e 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -2039,7 +2039,7 @@ _0808A0DC: .4byte gUnknown_8419CE7 thumb_func_start sub_808A0E0 sub_808A0E0: @ 808A0E0 push {lr} - bl sub_806E25C + bl IsNationalPokedexEnabled cmp r0, 0 bne _0808A0F2 movs r0, 0x1 diff --git a/data/data.s b/data/data.s index eb755739a..018135521 100644 --- a/data/data.s +++ b/data/data.s @@ -19,10 +19,10 @@ gWirelessLinkDisplayBin:: @ 823238C .incbin "graphics/interface/wireless_link_display.bin.lz" .align 2 -gUnknown_8232578:: @ 8232578 +gLinkTestDigitsPal:: @ 8232578 .incbin "baserom.gba", 0x232578, 0x20 -gUnknown_8232598:: @ 8232598 +gLinkTestDigitsGfx:: @ 8232598 .incbin "baserom.gba", 0x232598, 0x2000 gUnknown_8234598:: @ 8234598 diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index c333c6336..d485777f3 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1492,7 +1492,7 @@ EventScript_1A651A:: @ 81A651A clearflag FLAG_0x09D call EventScript_1A6551 special sub_81130A8 - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled compare_var_to_value VAR_RESULT, 0 call_if 1, EventScript_1A653B call EventScript_1A6541 diff --git a/data/maps/IndigoPlateau_PokemonCenter_1F/scripts.inc b/data/maps/IndigoPlateau_PokemonCenter_1F/scripts.inc index 7dae5f353..048ca96d6 100644 --- a/data/maps/IndigoPlateau_PokemonCenter_1F/scripts.inc +++ b/data/maps/IndigoPlateau_PokemonCenter_1F/scripts.inc @@ -5,7 +5,7 @@ IndigoPlateau_PokemonCenter_1F_MapScripts:: @ 816EA5A IndigoPlateau_PokemonCenter_1F_MapScript1_16EA65:: @ 816EA65 setrespawn SPAWN_INDIGO_PLATEAU - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled compare_var_to_value VAR_RESULT, 1 call_if 1, EventScript_16EA79 end @@ -19,7 +19,7 @@ EventScript_16EA79:: @ 816EA79 IndigoPlateau_PokemonCenter_1F_EventScript_16EA8A:: @ 816EA8A lock faceplayer - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled compare_var_to_value VAR_RESULT, 1 goto_if_eq EventScript_16EAA6 msgbox gUnknown_819A8D8 diff --git a/data/maps/OneIsland_PokemonCenter_1F/scripts.inc b/data/maps/OneIsland_PokemonCenter_1F/scripts.inc index 7a1941f72..83a42e67d 100644 --- a/data/maps/OneIsland_PokemonCenter_1F/scripts.inc +++ b/data/maps/OneIsland_PokemonCenter_1F/scripts.inc @@ -220,7 +220,7 @@ OneIsland_PokemonCenter_1F_EventScript_170EC5:: @ 8170EC5 goto_if_eq EventScript_171044 compare_var_to_value VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4 goto_if_eq EventScript_1710F2 - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled compare_var_to_value VAR_RESULT, 1 goto_if_eq EventScript_1710FC compare_var_to_value VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 3 diff --git a/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc b/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc index 9fc141070..7cdedc60c 100644 --- a/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc +++ b/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc @@ -4,7 +4,7 @@ ThreeIsland_DunsparceTunnel_MapScripts:: @ 8164D26 ThreeIsland_DunsparceTunnel_MapScript1_164D2C:: @ 8164D2C setworldmapflag FLAG_WORLD_MAP_THREE_ISLAND_DUNSPARCE_TUNNEL - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled copyvar VAR_0x8008, VAR_RESULT compare_var_to_value VAR_0x8008, 1 call_if 1, EventScript_164D50 @@ -26,7 +26,7 @@ ThreeIsland_DunsparceTunnel_EventScript_164D60:: @ 8164D60 faceplayer checkflag FLAG_0x2E2 goto_if_eq EventScript_164DC2 - specialvar VAR_RESULT, sub_806E25C + specialvar VAR_RESULT, IsNationalPokedexEnabled compare_var_to_value VAR_RESULT, 1 goto_if_eq EventScript_164D90 msgbox gUnknown_817D13B diff --git a/data/specials.inc b/data/specials.inc index c99d484d4..5e9a3aeae 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -371,7 +371,7 @@ gSpecials:: @ 815FD60 def_special sub_80CC2BC def_special sub_80CC3CC def_special sub_80CC524 - def_special sub_8009480 + def_special IsWirelessAdapterConnected def_special sub_8115A24 def_special BerryBlenderLinkJoinGroup def_special UnionRoomSpecial @@ -412,7 +412,7 @@ gSpecials:: @ 815FD60 def_special sub_812B35C def_special Special_SSAnneDepartureCutscene def_special sub_8149A18 - def_special sub_806E25C + def_special IsNationalPokedexEnabled def_special sub_815D9E8 def_special sub_814B504 def_special sub_80CC8CC diff --git a/include/event_data.h b/include/event_data.h index 013579ab5..97f7e8eda 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -36,7 +36,7 @@ bool32 sub_806E2BC(void); void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); -bool32 sub_806E25C(void); +bool32 IsNationalPokedexEnabled(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; diff --git a/include/librfu.h b/include/librfu.h index 90f69cb5a..d107894dd 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -1,3 +1,6 @@ +#ifndef GUARD_LIBRFU_H +#define GUARD_LIBRFU_H + #include "main.h" enum @@ -130,6 +133,128 @@ struct RfuIntrStruct u8 block2[0x30]; }; +struct RfuUnk1 +{ + u16 unk_0; + u8 unk_2; + u8 unk_3; + u8 fill_4[14]; + u8 unk_12; + u32 unk_14; + u32 unk_18; + struct RfuIntrStruct unk_1c; +}; + +struct RfuUnk2 +{ + u16 unk_0; + u16 unk_2; + u8 fill_4[0x16]; + u8 unk_1a; + u8 fill_1b[0x19]; + u16 unk_34; + u16 unk_36; + u8 fill_38[0x16]; + u8 unk_4e; + u8 fill_4f[0x12]; + u8 unk_61; + u8 fill_62[6]; + void *unk_68; + void *unk_6c; + u8 unk_70[0x70]; +}; + +struct RfuUnk3 +{ + u32 unk_0; + u32 unk_4; + u8 unk_8[0xD4]; + u32 unk_dc; +}; + +struct RfuUnk5Sub +{ + u16 unk_00; + u8 unk_02; + u16 unk_04; + struct UnkLinkRfuStruct_02022B14 unk_06; + u8 fill_13[1]; + u8 playerName[PLAYER_NAME_LENGTH + 1]; +}; + +struct RfuUnk5 +{ + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 filler_09[1]; + u8 unk_0a[4]; + u8 filler_0e[6]; + struct RfuUnk5Sub unk_14[4]; +}; + extern struct RfuStruct *gRfuState; +extern struct RfuUnk5 *gUnknown_03007890; +extern u32 *gUnknown_03007894; +extern struct RfuUnk3* gUnknown_03007898; +extern struct RfuUnk2* gUnknown_03007880[4]; +extern struct RfuUnk1* gUnknown_03007870[4]; +extern void* sub_82E53F4; +extern void rfu_STC_clearAPIVariables(void); + void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_REQ_stopMode(void); +void rfu_waitREQComplete(void); +u32 rfu_REQBN_softReset_and_checkID(void); +void rfu_REQ_sendData(u8); +void rfu_setMSCCallback(void (*func)(u16)); +void rfu_setREQCallback(void (*func)(u16, u16)); +bool8 rfu_getMasterSlave(void); +void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3); +bool16 rfu_syncVBlank(void); +void rfu_REQ_reset(void); +void rfu_REQ_configSystem(u16, u8, u8); +void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *); +void rfu_REQ_startSearchChild(void); +void rfu_REQ_pollSearchChild(void); +void rfu_REQ_endSearchChild(void); +void rfu_REQ_startSearchParent(void); +void rfu_REQ_pollSearchParent(void); +void rfu_REQ_endSearchParent(void); +void rfu_REQ_startConnectParent(u16); +void rfu_REQ_pollConnectParent(void); +void rfu_REQ_endConnectParent(void); +void rfu_REQ_CHILD_startConnectRecovery(u8); +void rfu_REQ_CHILD_pollConnectRecovery(void); +void rfu_REQ_CHILD_endConnectRecovery(void); +void rfu_REQ_changeMasterSlave(void); +void rfu_REQ_RFUStatus(void); +void rfu_getRFUStatus(u8 *status); +u8 *rfu_getSTWIRecvBuffer(void); +u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1); +void rfu_clearSlot(u8 a0, u8 a1); +void rfu_clearAllSlot(void); +bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status); +bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1); +bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0); +void rfu_REQ_disconnect(u8 who); +void rfu_changeSendTarget(u8 a0, u8 who, u8 a2); +void rfu_NI_stopReceivingData(u8 who); +u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_setTimerInterrupt(u8 which, IntrFunc *intr); +void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3); +bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size); +void rfu_REQ_recvData(void); +void rfu_UNI_readySendData(u8 a0); +void rfu_UNI_clearRecvNewDataFlag(u8 a0); +void rfu_REQ_PARENT_resumeRetransmitAndChange(void); +void rfu_NI_setSendData(u8, u8, const void *, u32); + +#endif // GUARD_LIBRFU_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 928ae380e..e7fa2a848 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -19,5 +19,8 @@ void MEvent_CreateTask_Leader(u8); void sub_80F9E2C(void * data); u8 sub_8116DE0(void); void sub_80FBB4C(void); +void sub_80F86F4(void); +void sub_80FB128(bool32 a0); +u32 sub_80FD3A4(void); #endif //GUARD_LINK_RFU_H diff --git a/ld_script.txt b/ld_script.txt index a65474cd5..433528ed4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -60,6 +60,7 @@ SECTIONS { src/text.o(.text); src/sprite.o(.text); src/string_util.o(.text); + src/link.o(.text); asm/link.o(.text); src/multiboot.o(.text); asm/main_menu.o(.text); diff --git a/src/link.c b/src/link.c new file mode 100644 index 000000000..f63b2fcd7 --- /dev/null +++ b/src/link.c @@ -0,0 +1,153 @@ +#include "global.h" +#include "palette.h" +#include "gpu_regs.h" +#include "link.h" +#include "quest_log.h" +#include "link_rfu.h" +#include "librfu.h" +#include "random.h" +#include "task.h" +#include "event_data.h" +#include "string_util.h" + +struct BlockTransfer +{ + u16 pos; + u16 size; + const u8 *src; + bool8 active; + u8 multiplayerId; +}; + +struct LinkTestBGInfo +{ + u32 screenBaseBlock; + u32 paletteNum; + u32 dummy_8; + u32 dummy_C; +}; + +u32 gUnknown_3000E58; + +struct LinkTestBGInfo gLinkTestBGInfo; + +EWRAM_DATA struct LinkPlayer gLocalLinkPlayer = {}; + +void sub_800B210(void); +void InitLocalLinkPlayer(void); +void sub_800978C(void); +void ResetBlockSend(void); +void task00_link_test(u8 taskId); +void CB2_LinkTest(void); + +extern const u16 gLinkTestDigitsPal[0x20]; +extern const u16 gLinkTestDigitsGfx[0x1000]; +extern const u8 gBGControlRegOffsets[]; + +bool8 IsWirelessAdapterConnected(void) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return FALSE; + + sub_800B1F4(); + sub_80F86F4(); + sub_80FB128(1); + if (sub_80FD3A4() == 0x8001) + { + rfu_REQ_stopMode(); + rfu_waitREQComplete(); + return TRUE; + } + sub_800B210(); + CloseLink(); + RestoreSerialTimer3IntrHandlers(); + return FALSE; +} + +void Task_DestroySelf(u8 taskId) +{ + DestroyTask(taskId); +} + +void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4) +{ + LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20); + DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestDigitsGfx); + gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; + gLinkTestBGInfo.paletteNum = paletteNum; + gLinkTestBGInfo.dummy_8 = a4; + switch (bgNum) + { + case 1: + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock)); + break; + case 2: + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock)); + break; + case 3: + SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock)); + break; + } + SetGpuReg(REG_OFFSET_BG0HOFS + bgNum * 4, 0); + SetGpuReg(REG_OFFSET_BG0VOFS + bgNum * 4, 0); +} + +void sub_80095BC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) +{ + LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20); + DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestDigitsGfx); + gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; + gLinkTestBGInfo.paletteNum = paletteNum; + gLinkTestBGInfo.dummy_8 = 0; + SetGpuReg(gBGControlRegOffsets[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock)); +} + +void LinkTestScreen(void) +{ + int i; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(sub_800978C); + ResetBlockSend(); + gLinkType = 0x1111; + OpenLink(); + SeedRng(gMain.vblankCounter2); + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256; + } + InitLinkTestBG(0, 2, 4, 0, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + CreateTask(Task_DestroySelf, 0); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_3000E58 = 0; + InitLocalLinkPlayer(); + CreateTask(task00_link_test, 0); + SetMainCallback2(CB2_LinkTest); +} + +void SetLocalLinkPlayerId(u8 playerId) +{ + gLocalLinkPlayer.id = playerId; +} + +void InitLocalLinkPlayer(void) +{ + gLocalLinkPlayer.trainerId = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24); + StringCopy(gLocalLinkPlayer.name, gSaveBlock2Ptr->playerName); + gLocalLinkPlayer.gender = gSaveBlock2Ptr->playerGender; + gLocalLinkPlayer.linkType = gLinkType; + gLocalLinkPlayer.language = gGameLanguage; + gLocalLinkPlayer.version = gGameVersion + 0x4000; + gLocalLinkPlayer.lp_field_2 = 0x8000; + gLocalLinkPlayer.name[8] = IsNationalPokedexEnabled(); + if (FlagGet(FLAG_0x844)) + { + gLocalLinkPlayer.name[8] |= 0x10; + } +} diff --git a/src/pokemon.c b/src/pokemon.c index 152e8e1df..4685dcbcd 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4961,7 +4961,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) if (gEvolutionTable[species][i].param == heldItem) { targetSpecies = gEvolutionTable[species][i].targetSpecies; - if (sub_806E25C() || targetSpecies <= 151) + if (IsNationalPokedexEnabled() || targetSpecies <= 151) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); @@ -5629,7 +5629,7 @@ u16 sub_8043F90(u16 species) { species = SpeciesToNationalPokedexNum(species); - if (!sub_806E25C() && species > 151) + if (!IsNationalPokedexEnabled() && species > 151) return 0xFFFF; return species; } diff --git a/src/prof_pc.c b/src/prof_pc.c index 35566e714..aeabc8644 100644 --- a/src/prof_pc.c +++ b/src/prof_pc.c @@ -33,7 +33,7 @@ u16 Special_GetPokedexCount(void) gSpecialVar_0x8005 = GetNationalPokedexCount(0); gSpecialVar_0x8006 = GetNationalPokedexCount(1); } - return sub_806E25C(); + return IsNationalPokedexEnabled(); } const u8 * sub_80CA424(u16 count) diff --git a/sym_common.txt b/sym_common.txt index a5c25be05..b2c86b705 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -75,7 +75,7 @@ gUnknown_3003F60: @ 3003F60 gReceivedRemoteLinkPlayers: @ 3003F64 .space 0xC -gUnknown_3003F70: @ 3003F70 +gLinkTestBGInfo: @ 3003F70 .space 0x10 gUnknown_3003F80: @ 3003F80 From 221dd4721d40abaebdbcf0823c924062c77311f5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 20:30:02 -0400 Subject: [PATCH 085/100] link through TestBlockTransfer + bss, ewram --- asm/link.s | 672 +++++++++++++----------------------------- asm/link_rfu_2.s | 74 ++--- include/link.h | 6 +- src/ereader_helpers.c | 14 +- src/intro.c | 2 +- src/link.c | 164 ++++++++++- src/mevent.c | 2 +- sym_bss.txt | 61 +--- sym_common.txt | 14 +- sym_ewram.txt | 52 +--- 10 files changed, 429 insertions(+), 632 deletions(-) diff --git a/asm/link.s b/asm/link.s index b5eefe73e..db9b022bd 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,282 +5,6 @@ .text - thumb_func_start sub_800978C -sub_800978C: @ 800978C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_800978C - - thumb_func_start sub_80097A0 -sub_80097A0: @ 80097A0 - push {lr} - ldr r3, _080097C0 @ =gLinkOpen - ldr r1, _080097C4 @ =gUnknown_3003F50 - ldr r2, _080097C8 @ =0x0000efff - adds r0, r1, 0 - adds r0, 0xE -_080097AC: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080097AC - movs r0, 0x1 - strb r0, [r3] - bl sub_800B2F4 - pop {r0} - bx r0 - .align 2, 0 -_080097C0: .4byte gLinkOpen -_080097C4: .4byte gUnknown_3003F50 -_080097C8: .4byte 0x0000efff - thumb_func_end sub_80097A0 - - thumb_func_start task02_080097CC -task02_080097CC: @ 80097CC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080097FC @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080097F6 - ldr r1, _08009800 @ =gUnknown_3003F84 - movs r0, 0x1 - strb r0, [r1] - adds r0, r2, 0 - bl DestroyTask -_080097F6: - pop {r0} - bx r0 - .align 2, 0 -_080097FC: .4byte gTasks -_08009800: .4byte gUnknown_3003F84 - thumb_func_end task02_080097CC - - thumb_func_start OpenLink -OpenLink: @ 8009804 - push {r4-r6,lr} - ldr r0, _0800984C @ =gWirelessCommType - ldrb r4, [r0] - cmp r4, 0 - bne _08009878 - bl sub_800B388 - bl sub_80097A0 - ldr r1, _08009850 @ =gUnknown_3003F80 - ldr r0, _08009854 @ =sub_800A720 - str r0, [r1] - ldr r0, _08009858 @ =gLinkVSyncDisabled - strb r4, [r0] - ldr r0, _0800985C @ =gUnknown_3003EAC - strb r4, [r0] - ldr r0, _08009860 @ =gUnknown_3003F38 - strb r4, [r0] - bl ResetBlockReceivedFlags - bl ResetBlockSend - ldr r0, _08009864 @ =gUnknown_3000E4C - str r4, [r0] - ldr r0, _08009868 @ =gUnknown_3003F28 - strb r4, [r0] - ldr r0, _0800986C @ =gUnknown_3003F24 - strb r4, [r0] - ldr r0, _08009870 @ =gUnknown_3003F34 - strh r4, [r0] - ldr r0, _08009874 @ =task02_080097CC - movs r1, 0x2 - bl CreateTask - b _0800987C - .align 2, 0 -_0800984C: .4byte gWirelessCommType -_08009850: .4byte gUnknown_3003F80 -_08009854: .4byte sub_800A720 -_08009858: .4byte gLinkVSyncDisabled -_0800985C: .4byte gUnknown_3003EAC -_08009860: .4byte gUnknown_3003F38 -_08009864: .4byte gUnknown_3000E4C -_08009868: .4byte gUnknown_3003F28 -_0800986C: .4byte gUnknown_3003F24 -_08009870: .4byte gUnknown_3003F34 -_08009874: .4byte task02_080097CC -_08009878: - bl sub_80F86F4 -_0800987C: - ldr r1, _080098A8 @ =gReceivedRemoteLinkPlayers - movs r0, 0 - strb r0, [r1] - movs r1, 0 - ldr r6, _080098AC @ =gUnknown_3003EB8 - movs r2, 0 - movs r5, 0x1 - ldr r4, _080098B0 @ =gUnknown_3003F30 - ldr r3, _080098B4 @ =gUnknown_3003F2C -_0800988E: - adds r0, r1, r6 - strb r5, [r0] - adds r0, r1, r4 - strb r2, [r0] - adds r0, r1, r3 - strb r2, [r0] - adds r1, 0x1 - cmp r1, 0x3 - ble _0800988E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080098A8: .4byte gReceivedRemoteLinkPlayers -_080098AC: .4byte gUnknown_3003EB8 -_080098B0: .4byte gUnknown_3003F30 -_080098B4: .4byte gUnknown_3003F2C - thumb_func_end OpenLink - - thumb_func_start CloseLink -CloseLink: @ 80098B8 - push {r4,lr} - ldr r0, _080098DC @ =gReceivedRemoteLinkPlayers - movs r4, 0 - strb r4, [r0] - ldr r0, _080098E0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _080098CC - bl sub_80F8DC0 -_080098CC: - ldr r0, _080098E4 @ =gLinkOpen - strb r4, [r0] - bl sub_800B29C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080098DC: .4byte gReceivedRemoteLinkPlayers -_080098E0: .4byte gWirelessCommType -_080098E4: .4byte gLinkOpen - thumb_func_end CloseLink - - thumb_func_start TestBlockTransfer -TestBlockTransfer: @ 80098E8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r5, _080099AC @ =gUnknown_3000E5C - ldr r4, _080099B0 @ =gUnknown_3000E08 - ldrb r0, [r5] - ldrh r1, [r4] - cmp r0, r1 - beq _0800990C - ldrh r0, [r4] - movs r1, 0x2 - movs r2, 0x3 - movs r3, 0x2 - bl sub_800A684 - ldrh r0, [r4] - strb r0, [r5] -_0800990C: - movs r5, 0 - ldr r7, _080099B4 @ =gUnknown_3000E18 -_08009910: - ldr r0, _080099B8 @ =gUnknown_3000E60 - adds r6, r5, r0 - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r4, r0, r7 - ldrb r0, [r6] - ldrh r1, [r4] - cmp r0, r1 - beq _08009938 - ldrh r0, [r4] - adds r2, r5, 0x4 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x2 - movs r3, 0x2 - bl sub_800A684 - ldrh r0, [r4] - strb r0, [r6] -_08009938: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08009910 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xF - bne _0800999E - movs r5, 0 - ldr r0, _080099B4 @ =gUnknown_3000E18 - mov r9, r0 - ldr r1, _080099BC @ =0x00000342 - mov r8, r1 -_08009958: - adds r0, r7, 0 - asrs r0, r5 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08009994 - lsls r0, r5, 8 - ldr r1, _080099C0 @ =gBlockRecvBuffer - adds r0, r1 - lsls r4, r5, 1 - adds r1, r4, r5 - lsls r1, 2 - add r1, r9 - ldrh r1, [r1, 0x2] - bl LinkTestCalcBlockChecksum - ldr r1, _080099C4 @ =gUnknown_3003F88 - adds r4, r1 - movs r6, 0 - strh r0, [r4] - adds r0, r5, 0 - bl ResetBlockReceivedFlag - ldrh r0, [r4] - cmp r0, r8 - beq _08009994 - ldr r0, _080099C8 @ =gLinkTestDebugValuesEnabled - strb r6, [r0] - ldr r0, _080099CC @ =gUnknown_2022111 - strb r6, [r0] -_08009994: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08009958 -_0800999E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080099AC: .4byte gUnknown_3000E5C -_080099B0: .4byte gUnknown_3000E08 -_080099B4: .4byte gUnknown_3000E18 -_080099B8: .4byte gUnknown_3000E60 -_080099BC: .4byte 0x00000342 -_080099C0: .4byte gBlockRecvBuffer -_080099C4: .4byte gUnknown_3003F88 -_080099C8: .4byte gLinkTestDebugValuesEnabled -_080099CC: .4byte gUnknown_2022111 - thumb_func_end TestBlockTransfer - thumb_func_start LinkTestProcessKeyInput LinkTestProcessKeyInput: @ 80099D0 push {r4,r5,lr} @@ -291,7 +15,7 @@ LinkTestProcessKeyInput: @ 80099D0 ands r0, r1 cmp r0, 0 beq _080099E6 - ldr r1, _08009A74 @ =gUnknown_3003F84 + ldr r1, _08009A74 @ =gShouldAdvanceLinkState movs r0, 0x1 strb r0, [r1] _080099E6: @@ -350,7 +74,7 @@ _08009A46: ldr r2, [r4, 0x24] ldr r0, _08009A84 @ =gLinkVSyncDisabled ldrb r1, [r0] - ldr r0, _08009A88 @ =gUnknown_3003F80 + ldr r0, _08009A88 @ =gLinkCallback ldr r0, [r0] cmp r0, 0 bne _08009A60 @@ -366,12 +90,12 @@ _08009A66: bx r0 .align 2, 0 _08009A70: .4byte gMain -_08009A74: .4byte gUnknown_3003F84 +_08009A74: .4byte gShouldAdvanceLinkState _08009A78: .4byte gHeap + 0x4000 _08009A7C: .4byte 0x00002004 _08009A80: .4byte gLinkTestDebugValuesEnabled _08009A84: .4byte gLinkVSyncDisabled -_08009A88: .4byte gUnknown_3003F80 +_08009A88: .4byte gLinkCallback thumb_func_end LinkTestProcessKeyInput thumb_func_start CB2_LinkTest @@ -405,7 +129,7 @@ _08009AC0: .4byte gLinkOpen _08009AC4: movs r1, 0 ldr r5, _08009B14 @ =gUnknown_3003EC4 - ldr r3, _08009B18 @ =gUnknown_3003F50 + ldr r3, _08009B18 @ =gSendCmd movs r2, 0 _08009ACC: lsls r0, r1, 1 @@ -429,7 +153,7 @@ _08009ACC: lsls r0, 26 lsrs r0, 30 bl sub_8009B70 - ldr r0, _08009B24 @ =gUnknown_3003F80 + ldr r0, _08009B24 @ =gLinkCallback ldr r0, [r0] cmp r0, 0 beq _08009B04 @@ -445,10 +169,10 @@ _08009B0C: bx r1 .align 2, 0 _08009B14: .4byte gUnknown_3003EC4 -_08009B18: .4byte gUnknown_3003F50 +_08009B18: .4byte gSendCmd _08009B1C: .4byte gUnknown_3003F20 _08009B20: .4byte 0x04000128 -_08009B24: .4byte gUnknown_3003F80 +_08009B24: .4byte gLinkCallback thumb_func_end LinkMain2 thumb_func_start HandleReceiveRemoteLinkPlayer @@ -457,14 +181,14 @@ HandleReceiveRemoteLinkPlayer: @ 8009B28 lsls r0, 24 lsrs r0, 24 movs r5, 0 - ldr r1, _08009B3C @ =gUnknown_3003EB8 + ldr r1, _08009B3C @ =gRemoteLinkPlayersNotReceived adds r0, r1 strb r5, [r0] movs r4, 0 adds r6, r1, 0 b _08009B48 .align 2, 0 -_08009B3C: .4byte gUnknown_3003EB8 +_08009B3C: .4byte gRemoteLinkPlayersNotReceived _08009B40: adds r0, r4, r6 ldrb r0, [r0] @@ -640,7 +364,7 @@ _08009C94: mov r7, r12 adds r1, r7, r6 lsls r1, 2 - ldr r0, _08009CB8 @ =gUnknown_3000E18 + ldr r0, _08009CB8 @ =sBlockRecv adds r1, r0 movs r2, 0 strh r2, [r1] @@ -656,13 +380,13 @@ _08009C94: strb r0, [r1, 0x9] b _08009E3E .align 2, 0 -_08009CB8: .4byte gUnknown_3000E18 +_08009CB8: .4byte sBlockRecv _08009CBC: .4byte gRecvCmds _08009CC0: mov r3, r12 adds r0, r3, r6 lsls r0, 2 - ldr r5, _08009D04 @ =gUnknown_3000E18 + ldr r5, _08009D04 @ =sBlockRecv adds r3, r0, r5 ldrh r1, [r3, 0x2] movs r0, 0x80 @@ -695,7 +419,7 @@ _08009CE4: bls _08009CE4 b _08009D40 .align 2, 0 -_08009D04: .4byte gUnknown_3000E18 +_08009D04: .4byte sBlockRecv _08009D08: .4byte gDecompressionBuffer _08009D0C: .4byte gRecvCmds _08009D10: @@ -738,7 +462,7 @@ _08009D40: ldrh r1, [r1, 0x2] cmp r0, r1 bcc _08009E3E - ldr r0, _08009DCC @ =gUnknown_3003EB8 + ldr r0, _08009DCC @ =gRemoteLinkPlayersNotReceived adds r0, r6, r0 ldrb r0, [r0] cmp r0, 0x1 @@ -792,7 +516,7 @@ _08009DBC: .align 2, 0 _08009DC4: .4byte gBlockRecvBuffer _08009DC8: .4byte gRecvCmds -_08009DCC: .4byte gUnknown_3003EB8 +_08009DCC: .4byte gRemoteLinkPlayersNotReceived _08009DD0: .4byte gLinkPlayers _08009DD4: .4byte gUnknown_82345C0 _08009DD8: .4byte c2_800ACD4 @@ -954,31 +678,31 @@ _08009EFC: .align 2, 0 _08009F04: .4byte 0x0000cccc _08009F08: - ldr r0, _08009F14 @ =gUnknown_3003F50 + ldr r0, _08009F14 @ =gSendCmd strh r2, [r0] ldr r1, _08009F18 @ =gLinkType ldrh r1, [r1] b _08009FD4 .align 2, 0 -_08009F14: .4byte gUnknown_3003F50 +_08009F14: .4byte gSendCmd _08009F18: .4byte gLinkType _08009F1C: - ldr r0, _08009F28 @ =gUnknown_3003F50 + ldr r0, _08009F28 @ =gSendCmd strh r2, [r0] ldr r1, _08009F2C @ =gMain ldrh r1, [r1, 0x2C] b _08009FD4 .align 2, 0 -_08009F28: .4byte gUnknown_3003F50 +_08009F28: .4byte gSendCmd _08009F2C: .4byte gMain _08009F30: - ldr r0, _08009F38 @ =gUnknown_3003F50 + ldr r0, _08009F38 @ =gSendCmd movs r1, 0 b _08009FD2 .align 2, 0 -_08009F38: .4byte gUnknown_3003F50 +_08009F38: .4byte gSendCmd _08009F3C: - ldr r0, _08009F58 @ =gUnknown_3003F50 + ldr r0, _08009F58 @ =gSendCmd strh r2, [r0] movs r1, 0 adds r3, r0, 0 @@ -994,11 +718,11 @@ _08009F46: bls _08009F46 b _08009FD6 .align 2, 0 -_08009F58: .4byte gUnknown_3003F50 +_08009F58: .4byte gSendCmd _08009F5C: - ldr r1, _08009F70 @ =gUnknown_3003F50 + ldr r1, _08009F70 @ =gSendCmd strh r2, [r1] - ldr r2, _08009F74 @ =gUnknown_3000E08 + ldr r2, _08009F74 @ =sBlockSend ldrh r0, [r2, 0x2] strh r0, [r1, 0x2] ldrb r0, [r2, 0x9] @@ -1006,41 +730,41 @@ _08009F5C: strh r0, [r1, 0x4] b _08009FD6 .align 2, 0 -_08009F70: .4byte gUnknown_3003F50 -_08009F74: .4byte gUnknown_3000E08 +_08009F70: .4byte gSendCmd +_08009F74: .4byte sBlockSend _08009F78: - ldr r0, _08009F84 @ =gUnknown_3003F50 + ldr r0, _08009F84 @ =gSendCmd strh r2, [r0] ldr r1, _08009F88 @ =gSpecialVar_ItemId ldrh r1, [r1] b _08009FD4 .align 2, 0 -_08009F84: .4byte gUnknown_3003F50 +_08009F84: .4byte gSendCmd _08009F88: .4byte gSpecialVar_ItemId _08009F8C: - ldr r0, _08009F98 @ =gUnknown_3003F50 + ldr r0, _08009F98 @ =gSendCmd strh r2, [r0] ldr r1, _08009F9C @ =gUnknown_3003F90 ldrb r1, [r1] b _08009FD4 .align 2, 0 -_08009F98: .4byte gUnknown_3003F50 +_08009F98: .4byte gSendCmd _08009F9C: .4byte gUnknown_3003F90 _08009FA0: - ldr r0, _08009FAC @ =gUnknown_3003F50 + ldr r0, _08009FAC @ =gSendCmd strh r2, [r0] ldr r1, _08009FB0 @ =gUnknown_3003F34 ldrh r1, [r1] b _08009FD4 .align 2, 0 -_08009FAC: .4byte gUnknown_3003F50 +_08009FAC: .4byte gSendCmd _08009FB0: .4byte gUnknown_3003F34 _08009FB4: - ldr r0, _08009FBC @ =gUnknown_3003F50 + ldr r0, _08009FBC @ =gSendCmd strh r2, [r0] b _08009FD6 .align 2, 0 -_08009FBC: .4byte gUnknown_3003F50 +_08009FBC: .4byte gSendCmd _08009FC0: ldr r0, _08009FDC @ =gUnknown_3005028 ldrh r1, [r0] @@ -1050,7 +774,7 @@ _08009FC0: ldrb r0, [r0] cmp r0, 0 bne _08009FD6 - ldr r0, _08009FE4 @ =gUnknown_3003F50 + ldr r0, _08009FE4 @ =gSendCmd _08009FD2: strh r2, [r0] _08009FD4: @@ -1061,7 +785,7 @@ _08009FD6: .align 2, 0 _08009FDC: .4byte gUnknown_3005028 _08009FE0: .4byte gLinkTransferringData -_08009FE4: .4byte gUnknown_3003F50 +_08009FE4: .4byte gSendCmd thumb_func_end sub_8009E60 thumb_func_start sub_8009FE8 @@ -1073,14 +797,14 @@ sub_8009FE8: @ 8009FE8 beq _08009FF6 bl sub_80F9828 _08009FF6: - ldr r1, _0800A004 @ =gUnknown_3003F80 + ldr r1, _0800A004 @ =gLinkCallback ldr r0, _0800A008 @ =sub_800A040 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0800A000: .4byte gWirelessCommType -_0800A004: .4byte gUnknown_3003F80 +_0800A004: .4byte gLinkCallback _0800A008: .4byte sub_800A040 thumb_func_end sub_8009FE8 @@ -1096,7 +820,7 @@ sub_800A00C: @ 800A00C .align 2, 0 _0800A01C: .4byte gWirelessCommType _0800A020: - ldr r0, _0800A030 @ =gUnknown_3003F80 + ldr r0, _0800A030 @ =gLinkCallback ldr r1, [r0] ldr r0, _0800A034 @ =sub_800A040 cmp r1, r0 @@ -1104,7 +828,7 @@ _0800A020: movs r0, 0 b _0800A03A .align 2, 0 -_0800A030: .4byte gUnknown_3003F80 +_0800A030: .4byte gLinkCallback _0800A034: .4byte sub_800A040 _0800A038: movs r0, 0x1 @@ -1132,12 +856,12 @@ _0800A058: .4byte 0x0000cafe thumb_func_start sub_800A05C sub_800A05C: @ 800A05C - ldr r1, _0800A064 @ =gUnknown_3003F80 + ldr r1, _0800A064 @ =gLinkCallback movs r0, 0 str r0, [r1] bx lr .align 2, 0 -_0800A064: .4byte gUnknown_3003F80 +_0800A064: .4byte gLinkCallback thumb_func_end sub_800A05C thumb_func_start sub_800A068 @@ -1152,13 +876,13 @@ sub_800A068: @ 800A068 .align 2, 0 _0800A078: .4byte gWirelessCommType _0800A07C: - ldr r0, _0800A084 @ =gUnknown_3003F80 + ldr r0, _0800A084 @ =gLinkCallback str r1, [r0] _0800A080: pop {r0} bx r0 .align 2, 0 -_0800A084: .4byte gUnknown_3003F80 +_0800A084: .4byte gLinkCallback thumb_func_end sub_800A068 thumb_func_start GetLinkPlayerCount @@ -1189,7 +913,7 @@ _0800A0B0: thumb_func_start sub_800A0B4 sub_800A0B4: @ 800A0B4 push {lr} - ldr r0, _0800A0C8 @ =gUnknown_3000E54 + ldr r0, _0800A0C8 @ =sPlayerDataExchangeStatus movs r1, 0 str r1, [r0] ldr r0, _0800A0CC @ =gLinkTimeOutCounter @@ -1198,7 +922,7 @@ sub_800A0B4: @ 800A0B4 pop {r0} bx r0 .align 2, 0 -_0800A0C8: .4byte gUnknown_3000E54 +_0800A0C8: .4byte sPlayerDataExchangeStatus _0800A0CC: .4byte gLinkTimeOutCounter thumb_func_end sub_800A0B4 @@ -1220,19 +944,19 @@ sub_800A0D0: @ 800A0D0 cmp r0, r6 ble _0800A100 _0800A0F0: - ldr r1, _0800A0FC @ =gUnknown_3000E54 + ldr r1, _0800A0FC @ =sPlayerDataExchangeStatus movs r0, 0x6 str r0, [r1] b _0800A1E2 .align 2, 0 _0800A0F8: .4byte gReceivedRemoteLinkPlayers -_0800A0FC: .4byte gUnknown_3000E54 +_0800A0FC: .4byte sPlayerDataExchangeStatus _0800A100: bl GetLinkPlayerCount lsls r0, 24 cmp r0, 0 bne _0800A112 - ldr r0, _0800A11C @ =gUnknown_3003EAC + ldr r0, _0800A11C @ =gLinkErrorOccurred strb r4, [r0] bl CloseLink _0800A112: @@ -1241,7 +965,7 @@ _0800A112: movs r5, 0 b _0800A138 .align 2, 0 -_0800A11C: .4byte gUnknown_3003EAC +_0800A11C: .4byte gLinkErrorOccurred _0800A120: .4byte gLinkPlayers _0800A124: adds r0, r4, 0 @@ -1278,52 +1002,52 @@ _0800A138: bgt _0800A17C cmp r0, 0 beq _0800A188 - ldr r2, _0800A178 @ =gUnknown_3000E54 + ldr r2, _0800A178 @ =sPlayerDataExchangeStatus b _0800A1E0 .align 2, 0 _0800A170: .4byte gLinkPlayers _0800A174: .4byte 0x00001133 -_0800A178: .4byte gUnknown_3000E54 +_0800A178: .4byte sPlayerDataExchangeStatus _0800A17C: cmp r0, 0x2 beq _0800A1A0 - ldr r2, _0800A184 @ =gUnknown_3000E54 + ldr r2, _0800A184 @ =sPlayerDataExchangeStatus b _0800A1E0 .align 2, 0 -_0800A184: .4byte gUnknown_3000E54 +_0800A184: .4byte sPlayerDataExchangeStatus _0800A188: - ldr r1, _0800A190 @ =gUnknown_3000E54 + ldr r1, _0800A190 @ =sPlayerDataExchangeStatus movs r0, 0x1 b _0800A1BC .align 2, 0 -_0800A190: .4byte gUnknown_3000E54 +_0800A190: .4byte sPlayerDataExchangeStatus _0800A194: - ldr r1, _0800A19C @ =gUnknown_3000E54 + ldr r1, _0800A19C @ =sPlayerDataExchangeStatus movs r0, 0x4 b _0800A1BC .align 2, 0 -_0800A19C: .4byte gUnknown_3000E54 +_0800A19C: .4byte sPlayerDataExchangeStatus _0800A1A0: - ldr r1, _0800A1A8 @ =gUnknown_3000E54 + ldr r1, _0800A1A8 @ =sPlayerDataExchangeStatus movs r0, 0x5 b _0800A1BC .align 2, 0 -_0800A1A8: .4byte gUnknown_3000E54 +_0800A1A8: .4byte sPlayerDataExchangeStatus _0800A1AC: - ldr r1, _0800A1B4 @ =gUnknown_3000E54 + ldr r1, _0800A1B4 @ =sPlayerDataExchangeStatus movs r0, 0x1 b _0800A1BC .align 2, 0 -_0800A1B4: .4byte gUnknown_3000E54 +_0800A1B4: .4byte sPlayerDataExchangeStatus _0800A1B8: - ldr r1, _0800A1C4 @ =gUnknown_3000E54 + ldr r1, _0800A1C4 @ =sPlayerDataExchangeStatus movs r0, 0x3 _0800A1BC: str r0, [r1] adds r2, r1, 0 b _0800A1E0 .align 2, 0 -_0800A1C4: .4byte gUnknown_3000E54 +_0800A1C4: .4byte sPlayerDataExchangeStatus _0800A1C8: ldr r0, _0800A1E8 @ =gLinkTimeOutCounter ldrh r1, [r0] @@ -1332,7 +1056,7 @@ _0800A1C8: lsls r1, 16 movs r0, 0x96 lsls r0, 18 - ldr r2, _0800A1EC @ =gUnknown_3000E54 + ldr r2, _0800A1EC @ =sPlayerDataExchangeStatus cmp r1, r0 bls _0800A1E0 movs r0, 0x2 @@ -1345,7 +1069,7 @@ _0800A1E2: bx r1 .align 2, 0 _0800A1E8: .4byte gLinkTimeOutCounter -_0800A1EC: .4byte gUnknown_3000E54 +_0800A1EC: .4byte sPlayerDataExchangeStatus thumb_func_end sub_800A0D0 thumb_func_start IsLinkPlayerDataExchangeComplete @@ -1387,14 +1111,14 @@ _0800A220: cmp r6, r0 bne _0800A244 movs r2, 0x1 - ldr r0, _0800A240 @ =gUnknown_3000E54 + ldr r0, _0800A240 @ =sPlayerDataExchangeStatus str r2, [r0] b _0800A24C .align 2, 0 -_0800A240: .4byte gUnknown_3000E54 +_0800A240: .4byte sPlayerDataExchangeStatus _0800A244: movs r2, 0 - ldr r1, _0800A254 @ =gUnknown_3000E54 + ldr r1, _0800A254 @ =sPlayerDataExchangeStatus movs r0, 0x3 str r0, [r1] _0800A24C: @@ -1403,7 +1127,7 @@ _0800A24C: pop {r1} bx r1 .align 2, 0 -_0800A254: .4byte gUnknown_3000E54 +_0800A254: .4byte sPlayerDataExchangeStatus thumb_func_end IsLinkPlayerDataExchangeComplete thumb_func_start GetLinkPlayerTrainerId @@ -1445,7 +1169,7 @@ _0800A290: .4byte gLinkPlayers thumb_func_start ResetBlockSend ResetBlockSend: @ 800A294 - ldr r1, _0800A2A4 @ =gUnknown_3000E08 + ldr r1, _0800A2A4 @ =sBlockSend movs r0, 0 strb r0, [r1, 0x8] strh r0, [r1] @@ -1453,7 +1177,7 @@ ResetBlockSend: @ 800A294 str r0, [r1, 0x4] bx lr .align 2, 0 -_0800A2A4: .4byte gUnknown_3000E08 +_0800A2A4: .4byte sBlockSend thumb_func_end ResetBlockSend thumb_func_start InitBlockSend @@ -1461,14 +1185,14 @@ InitBlockSend: @ 800A2A8 push {r4-r7,lr} adds r7, r0, 0 adds r6, r1, 0 - ldr r4, _0800A2BC @ =gUnknown_3000E08 + ldr r4, _0800A2BC @ =sBlockSend ldrb r5, [r4, 0x8] cmp r5, 0 beq _0800A2C0 movs r0, 0 b _0800A2FE .align 2, 0 -_0800A2BC: .4byte gUnknown_3000E08 +_0800A2BC: .4byte sBlockSend _0800A2C0: bl GetMultiplayerId strb r0, [r4, 0x9] @@ -1494,10 +1218,10 @@ _0800A2E8: _0800A2EA: ldr r0, _0800A308 @ =0x0000bbbb bl sub_8009E60 - ldr r1, _0800A30C @ =gUnknown_3003F80 + ldr r1, _0800A30C @ =gLinkCallback ldr r0, _0800A310 @ =LinkCB_BlockSendBegin str r0, [r1] - ldr r1, _0800A314 @ =gUnknown_3000E48 + ldr r1, _0800A314 @ =sBlockSendDelayCounter movs r0, 0 str r0, [r1] movs r0, 0x1 @@ -1508,38 +1232,38 @@ _0800A2FE: .align 2, 0 _0800A304: .4byte gBlockSendBuffer _0800A308: .4byte 0x0000bbbb -_0800A30C: .4byte gUnknown_3003F80 +_0800A30C: .4byte gLinkCallback _0800A310: .4byte LinkCB_BlockSendBegin -_0800A314: .4byte gUnknown_3000E48 +_0800A314: .4byte sBlockSendDelayCounter thumb_func_end InitBlockSend thumb_func_start LinkCB_BlockSendBegin LinkCB_BlockSendBegin: @ 800A318 push {lr} - ldr r1, _0800A330 @ =gUnknown_3000E48 + ldr r1, _0800A330 @ =sBlockSendDelayCounter ldr r0, [r1] adds r0, 0x1 str r0, [r1] cmp r0, 0x2 bls _0800A32C - ldr r1, _0800A334 @ =gUnknown_3003F80 + ldr r1, _0800A334 @ =gLinkCallback ldr r0, _0800A338 @ =LinkCB_BlockSend str r0, [r1] _0800A32C: pop {r0} bx r0 .align 2, 0 -_0800A330: .4byte gUnknown_3000E48 -_0800A334: .4byte gUnknown_3003F80 +_0800A330: .4byte sBlockSendDelayCounter +_0800A334: .4byte gLinkCallback _0800A338: .4byte LinkCB_BlockSend thumb_func_end LinkCB_BlockSendBegin thumb_func_start LinkCB_BlockSend LinkCB_BlockSend: @ 800A33C push {r4-r6,lr} - ldr r0, _0800A38C @ =gUnknown_3000E08 + ldr r0, _0800A38C @ =sBlockSend ldr r5, [r0, 0x4] - ldr r2, _0800A390 @ =gUnknown_3003F50 + ldr r2, _0800A390 @ =gSendCmd ldr r1, _0800A394 @ =0x00008888 strh r1, [r2] movs r3, 0 @@ -1570,7 +1294,7 @@ _0800A350: bhi _0800A384 movs r0, 0 strb r0, [r4, 0x8] - ldr r1, _0800A398 @ =gUnknown_3003F80 + ldr r1, _0800A398 @ =gLinkCallback ldr r0, _0800A39C @ =sub_800A3A0 str r0, [r1] _0800A384: @@ -1578,21 +1302,21 @@ _0800A384: pop {r0} bx r0 .align 2, 0 -_0800A38C: .4byte gUnknown_3000E08 -_0800A390: .4byte gUnknown_3003F50 +_0800A38C: .4byte sBlockSend +_0800A390: .4byte gSendCmd _0800A394: .4byte 0x00008888 -_0800A398: .4byte gUnknown_3003F80 +_0800A398: .4byte gLinkCallback _0800A39C: .4byte sub_800A3A0 thumb_func_end LinkCB_BlockSend thumb_func_start sub_800A3A0 sub_800A3A0: @ 800A3A0 - ldr r1, _0800A3A8 @ =gUnknown_3003F80 + ldr r1, _0800A3A8 @ =gLinkCallback movs r0, 0 str r0, [r1] bx lr .align 2, 0 -_0800A3A8: .4byte gUnknown_3003F80 +_0800A3A8: .4byte gLinkCallback thumb_func_end sub_800A3A0 thumb_func_start sub_800A3AC @@ -1617,13 +1341,13 @@ sub_800A3CC: @ 800A3CC ldr r1, _0800A3DC @ =gUnknown_2022114 movs r0, 0 str r0, [r1] - ldr r1, _0800A3E0 @ =gUnknown_3003F80 + ldr r1, _0800A3E0 @ =gLinkCallback ldr r0, _0800A3E4 @ =sub_800A3AC str r0, [r1] bx lr .align 2, 0 _0800A3DC: .4byte gUnknown_2022114 -_0800A3E0: .4byte gUnknown_3003F80 +_0800A3E0: .4byte gLinkCallback _0800A3E4: .4byte sub_800A3AC thumb_func_end sub_800A3CC @@ -1731,14 +1455,14 @@ sub_800A474: @ 800A474 .align 2, 0 _0800A490: .4byte gWirelessCommType _0800A494: - ldr r0, _0800A4A0 @ =gUnknown_3003F80 + ldr r0, _0800A4A0 @ =gLinkCallback ldr r0, [r0] cmp r0, 0 beq _0800A4A4 movs r0, 0 b _0800A4B0 .align 2, 0 -_0800A4A0: .4byte gUnknown_3003F80 +_0800A4A0: .4byte gLinkCallback _0800A4A4: ldr r0, _0800A4B4 @ =gUnknown_3003F90 strb r2, [r0] @@ -1768,7 +1492,7 @@ IsLinkTaskFinished: @ 800A4BC _0800A4D0: .4byte gWirelessCommType _0800A4D4: movs r1, 0 - ldr r0, _0800A4E8 @ =gUnknown_3003F80 + ldr r0, _0800A4E8 @ =gLinkCallback ldr r0, [r0] cmp r0, 0 bne _0800A4E0 @@ -1779,7 +1503,7 @@ _0800A4E2: pop {r1} bx r1 .align 2, 0 -_0800A4E8: .4byte gUnknown_3003F80 +_0800A4E8: .4byte gLinkCallback thumb_func_end IsLinkTaskFinished thumb_func_start GetBlockReceivedStatus @@ -1916,7 +1640,7 @@ CheckShouldAdvanceLinkState: @ 800A5BC ands r1, r0 cmp r1, 0x4 bls _0800A5D8 - ldr r1, _0800A5E0 @ =gUnknown_3003F84 + ldr r1, _0800A5E0 @ =gShouldAdvanceLinkState movs r0, 0x1 strb r0, [r1] _0800A5D8: @@ -1924,7 +1648,7 @@ _0800A5D8: bx r0 .align 2, 0 _0800A5DC: .4byte gUnknown_3003F20 -_0800A5E0: .4byte gUnknown_3003F84 +_0800A5E0: .4byte gShouldAdvanceLinkState thumb_func_end CheckShouldAdvanceLinkState thumb_func_start LinkTestCalcBlockChecksum @@ -2019,8 +1743,8 @@ sub_800A64C: @ 800A64C _0800A680: .4byte gLinkTestBGInfo thumb_func_end sub_800A64C - thumb_func_start sub_800A684 -sub_800A684: @ 800A684 + thumb_func_start LinkTest_prnthex +LinkTest_prnthex: @ 800A684 push {r4-r7,lr} sub sp, 0x10 adds r5, r0, 0 @@ -2066,7 +1790,7 @@ _0800A6D0: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_800A684 + thumb_func_end LinkTest_prnthex thumb_func_start sub_800A6D8 sub_800A6D8: @ 800A6D8 @@ -2110,8 +1834,8 @@ _0800A718: bx r0 thumb_func_end sub_800A6D8 - thumb_func_start sub_800A720 -sub_800A720: @ 800A720 + thumb_func_start LinkCB_RequestPlayerDataExchange +LinkCB_RequestPlayerDataExchange: @ 800A720 push {lr} ldr r0, _0800A740 @ =gUnknown_3003F20 ldr r0, [r0] @@ -2122,7 +1846,7 @@ sub_800A720: @ 800A720 ldr r0, _0800A744 @ =0x00002222 bl sub_8009E60 _0800A734: - ldr r1, _0800A748 @ =gUnknown_3003F80 + ldr r1, _0800A748 @ =gLinkCallback movs r0, 0 str r0, [r1] pop {r0} @@ -2130,8 +1854,8 @@ _0800A734: .align 2, 0 _0800A740: .4byte gUnknown_3003F20 _0800A744: .4byte 0x00002222 -_0800A748: .4byte gUnknown_3003F80 - thumb_func_end sub_800A720 +_0800A748: .4byte gLinkCallback + thumb_func_end LinkCB_RequestPlayerDataExchange thumb_func_start task00_link_test task00_link_test: @ 800A74C @@ -2144,24 +1868,24 @@ task00_link_test: @ 800A74C movs r1, 0x5 movs r2, 0x2 bl sub_800A6D8 - ldr r0, _0800A870 @ =gUnknown_3003F84 + ldr r0, _0800A870 @ =gShouldAdvanceLinkState ldrb r0, [r0] movs r1, 0x2 movs r2, 0x1 movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex ldr r4, _0800A874 @ =gUnknown_3003F20 ldr r0, [r4] movs r1, 0xF movs r2, 0x1 movs r3, 0x8 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, _0800A878 @ =gUnknown_3003FB0 ldrb r0, [r0, 0x1] movs r1, 0x2 movs r2, 0xA movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, [r4] movs r1, 0x1C ands r0, r1 @@ -2169,83 +1893,83 @@ task00_link_test: @ 800A74C movs r1, 0xF movs r2, 0xA movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 movs r1, 0xF movs r2, 0xC movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, _0800A87C @ =gUnknown_3003FA0 ldrb r0, [r0] movs r1, 0x19 movs r2, 0x1 movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, _0800A880 @ =gUnknown_3004F70 ldrb r0, [r0] movs r1, 0x19 movs r2, 0x2 movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 movs r1, 0xF movs r2, 0x5 movs r3, 0x2 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, _0800A884 @ =gUnknown_3003E6C ldr r0, [r0] movs r1, 0x2 movs r2, 0xC movs r3, 0x8 - bl sub_800A684 + bl LinkTest_prnthex ldr r0, _0800A888 @ =gUnknown_3003EB0 ldr r0, [r0] movs r1, 0x2 movs r2, 0xD movs r3, 0x8 - bl sub_800A684 + bl LinkTest_prnthex bl GetSioMultiSI lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x5 movs r3, 0x1 - bl sub_800A684 + bl LinkTest_prnthex bl IsSioMultiMaster lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x6 movs r3, 0x1 - bl sub_800A684 + bl LinkTest_prnthex bl IsLinkConnectionEstablished lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x7 movs r3, 0x1 - bl sub_800A684 + bl LinkTest_prnthex bl HasLinkErrorOccurred lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x8 movs r3, 0x1 - bl sub_800A684 + bl LinkTest_prnthex movs r6, 0 movs r5, 0x80 lsls r5, 19 - ldr r4, _0800A88C @ =gUnknown_3003F88 + ldr r4, _0800A88C @ =gLinkTestBlockChecksums _0800A84A: ldrh r0, [r4] lsrs r2, r5, 24 movs r1, 0xA movs r3, 0x4 - bl sub_800A684 + bl LinkTest_prnthex movs r0, 0x80 lsls r0, 17 adds r5, r0 @@ -2259,14 +1983,14 @@ _0800A84A: bx r0 .align 2, 0 _0800A86C: .4byte gUnknown_82345D0 -_0800A870: .4byte gUnknown_3003F84 +_0800A870: .4byte gShouldAdvanceLinkState _0800A874: .4byte gUnknown_3003F20 _0800A878: .4byte gUnknown_3003FB0 _0800A87C: .4byte gUnknown_3003FA0 _0800A880: .4byte gUnknown_3004F70 _0800A884: .4byte gUnknown_3003E6C _0800A888: .4byte gUnknown_3003EB0 -_0800A88C: .4byte gUnknown_3003F88 +_0800A88C: .4byte gLinkTestBlockChecksums thumb_func_end task00_link_test thumb_func_start SetLinkDebugValues @@ -2468,7 +2192,7 @@ _0800A9C2: cmp r0, 0 beq _0800A9F6 _0800A9E6: - ldr r1, _0800AA1C @ =gUnknown_3003EAC + ldr r1, _0800AA1C @ =gLinkErrorOccurred movs r0, 0x1 strb r0, [r1] bl CloseLink @@ -2492,7 +2216,7 @@ _0800AA04: _0800AA10: .4byte gUnknown_3003F40 _0800AA14: .4byte gSavedLinkPlayers _0800AA18: .4byte gLinkPlayers -_0800AA1C: .4byte gUnknown_3003EAC +_0800AA1C: .4byte gLinkErrorOccurred _0800AA20: .4byte c2_800ACD4 thumb_func_end sub_800A9A4 @@ -2569,7 +2293,7 @@ sub_800AA80: @ 800AA80 .align 2, 0 _0800AA94: .4byte gWirelessCommType _0800AA98: - ldr r2, _0800AAB0 @ =gUnknown_3003F80 + ldr r2, _0800AAB0 @ =gLinkCallback ldr r1, [r2] cmp r1, 0 bne _0800AAAC @@ -2583,7 +2307,7 @@ _0800AAAC: pop {r0} bx r0 .align 2, 0 -_0800AAB0: .4byte gUnknown_3003F80 +_0800AAB0: .4byte gLinkCallback _0800AAB4: .4byte sub_800AB0C _0800AAB8: .4byte gUnknown_3003F24 _0800AABC: .4byte gUnknown_3003F34 @@ -2601,7 +2325,7 @@ sub_800AAC0: @ 800AAC0 .align 2, 0 _0800AAD0: .4byte gWirelessCommType _0800AAD4: - ldr r2, _0800AAE8 @ =gUnknown_3003F80 + ldr r2, _0800AAE8 @ =gLinkCallback ldr r1, [r2] cmp r1, 0 beq _0800AAF0 @@ -2611,7 +2335,7 @@ _0800AAD4: strh r0, [r1] b _0800AAFC .align 2, 0 -_0800AAE8: .4byte gUnknown_3003F80 +_0800AAE8: .4byte gLinkCallback _0800AAEC: .4byte gUnknown_202285C _0800AAF0: ldr r0, _0800AB00 @ =sub_800AB0C @@ -2638,7 +2362,7 @@ sub_800AB0C: @ 800AB0C bne _0800AB22 ldr r0, _0800AB2C @ =0x00005fff bl sub_8009E60 - ldr r1, _0800AB30 @ =gUnknown_3003F80 + ldr r1, _0800AB30 @ =gLinkCallback ldr r0, _0800AB34 @ =sub_800AB38 str r0, [r1] _0800AB22: @@ -2647,7 +2371,7 @@ _0800AB22: .align 2, 0 _0800AB28: .4byte gUnknown_3004F70 _0800AB2C: .4byte 0x00005fff -_0800AB30: .4byte gUnknown_3003F80 +_0800AB30: .4byte gLinkCallback _0800AB34: .4byte sub_800AB38 thumb_func_end sub_800AB0C @@ -2684,7 +2408,7 @@ _0800AB5C: movs r4, 0x1 strb r4, [r0] bl CloseLink - ldr r1, _0800AB94 @ =gUnknown_3003F80 + ldr r1, _0800AB94 @ =gLinkCallback movs r0, 0 str r0, [r1] ldr r0, _0800AB98 @ =gUnknown_3003F24 @@ -2698,7 +2422,7 @@ _0800AB84: .4byte gUnknown_3003F30 _0800AB88: .4byte gBattleTypeFlags _0800AB8C: .4byte 0x0000ffdf _0800AB90: .4byte gLinkVSyncDisabled -_0800AB94: .4byte gUnknown_3003F80 +_0800AB94: .4byte gLinkCallback _0800AB98: .4byte gUnknown_3003F24 thumb_func_end sub_800AB38 @@ -2714,7 +2438,7 @@ sub_800AB9C: @ 800AB9C .align 2, 0 _0800ABAC: .4byte gWirelessCommType _0800ABB0: - ldr r1, _0800ABC8 @ =gUnknown_3003F80 + ldr r1, _0800ABC8 @ =gLinkCallback ldr r0, [r1] cmp r0, 0 bne _0800ABBC @@ -2728,7 +2452,7 @@ _0800ABC2: pop {r0} bx r0 .align 2, 0 -_0800ABC8: .4byte gUnknown_3003F80 +_0800ABC8: .4byte gLinkCallback _0800ABCC: .4byte sub_800ABD4 _0800ABD0: .4byte gUnknown_3003F24 thumb_func_end sub_800AB9C @@ -2742,7 +2466,7 @@ sub_800ABD4: @ 800ABD4 bne _0800ABEA ldr r0, _0800ABF4 @ =0x00002ffe bl sub_8009E60 - ldr r1, _0800ABF8 @ =gUnknown_3003F80 + ldr r1, _0800ABF8 @ =gLinkCallback ldr r0, _0800ABFC @ =sub_800AC00 str r0, [r1] _0800ABEA: @@ -2751,7 +2475,7 @@ _0800ABEA: .align 2, 0 _0800ABF0: .4byte gUnknown_3004F70 _0800ABF4: .4byte 0x00002ffe -_0800ABF8: .4byte gUnknown_3003F80 +_0800ABF8: .4byte gLinkCallback _0800ABFC: .4byte sub_800AC00 thumb_func_end sub_800ABD4 @@ -2782,7 +2506,7 @@ _0800AC2A: cmp r1, r2 bne _0800AC48 movs r1, 0 - ldr r4, _0800AC54 @ =gUnknown_3003F80 + ldr r4, _0800AC54 @ =gLinkCallback ldr r3, _0800AC50 @ =gUnknown_3003F2C movs r2, 0 _0800AC36: @@ -2801,7 +2525,7 @@ _0800AC48: bx r0 .align 2, 0 _0800AC50: .4byte gUnknown_3003F2C -_0800AC54: .4byte gUnknown_3003F80 +_0800AC54: .4byte gLinkCallback thumb_func_end sub_800AC00 thumb_func_start sub_800AC58 @@ -2818,7 +2542,7 @@ sub_800AC58: @ 800AC58 ands r0, r2 cmp r0, 0 beq _0800AC98 - ldr r0, _0800ACA4 @ =gUnknown_3003F38 + ldr r0, _0800ACA4 @ =gSuppressLinkErrorMessage ldrb r0, [r0] cmp r0, 0 bne _0800AC8E @@ -2833,7 +2557,7 @@ sub_800AC58: @ 800AC58 ldr r0, _0800ACB4 @ =c2_800ACD4 bl SetMainCallback2 _0800AC8E: - ldr r1, _0800ACB8 @ =gUnknown_3003EAC + ldr r1, _0800ACB8 @ =gLinkErrorOccurred movs r0, 0x1 strb r0, [r1] bl CloseLink @@ -2843,12 +2567,12 @@ _0800AC98: .align 2, 0 _0800AC9C: .4byte gLinkOpen _0800ACA0: .4byte gUnknown_3003F20 -_0800ACA4: .4byte gUnknown_3003F38 +_0800ACA4: .4byte gSuppressLinkErrorMessage _0800ACA8: .4byte sLinkErrorBuffer _0800ACAC: .4byte gUnknown_3004F70 _0800ACB0: .4byte gUnknown_3003FA0 _0800ACB4: .4byte c2_800ACD4 -_0800ACB8: .4byte gUnknown_3003EAC +_0800ACB8: .4byte gLinkErrorOccurred thumb_func_end sub_800AC58 thumb_func_start sub_800ACBC @@ -3298,20 +3022,20 @@ _0800B098: .4byte gUnknown_3003F20 thumb_func_start SetSuppressLinkErrorMessage SetSuppressLinkErrorMessage: @ 800B09C - ldr r1, _0800B0A4 @ =gUnknown_3003F38 + ldr r1, _0800B0A4 @ =gSuppressLinkErrorMessage strb r0, [r1] bx lr .align 2, 0 -_0800B0A4: .4byte gUnknown_3003F38 +_0800B0A4: .4byte gSuppressLinkErrorMessage thumb_func_end SetSuppressLinkErrorMessage thumb_func_start HasLinkErrorOccurred HasLinkErrorOccurred: @ 800B0A8 - ldr r0, _0800B0B0 @ =gUnknown_3003EAC + ldr r0, _0800B0B0 @ =gLinkErrorOccurred ldrb r0, [r0] bx lr .align 2, 0 -_0800B0B0: .4byte gUnknown_3003EAC +_0800B0B0: .4byte gLinkErrorOccurred thumb_func_end HasLinkErrorOccurred thumb_func_start sub_800B0B4 @@ -3415,8 +3139,8 @@ HandleLinkConnection: @ 800B178 ldrb r0, [r0] cmp r0, 0 bne _0800B1C8 - ldr r0, _0800B1B4 @ =gUnknown_3003F84 - ldr r1, _0800B1B8 @ =gUnknown_3003F50 + ldr r0, _0800B1B4 @ =gShouldAdvanceLinkState + ldr r1, _0800B1B8 @ =gSendCmd ldr r2, _0800B1BC @ =gRecvCmds bl LinkMain1 ldr r4, _0800B1C0 @ =gUnknown_3003F20 @@ -3437,8 +3161,8 @@ _0800B1AA: b _0800B1EE .align 2, 0 _0800B1B0: .4byte gWirelessCommType -_0800B1B4: .4byte gUnknown_3003F84 -_0800B1B8: .4byte gUnknown_3003F50 +_0800B1B4: .4byte gShouldAdvanceLinkState +_0800B1B8: .4byte gSendCmd _0800B1BC: .4byte gRecvCmds _0800B1C0: .4byte gUnknown_3003F20 _0800B1C4: .4byte gMain + 0x2C @@ -3569,8 +3293,8 @@ sub_800B284: @ 800B284 bx r0 thumb_func_end sub_800B284 - thumb_func_start sub_800B29C -sub_800B29C: @ 800B29C + thumb_func_start DisableSerial +DisableSerial: @ 800B29C push {lr} sub sp, 0x4 movs r0, 0xC0 @@ -3608,10 +3332,10 @@ _0800B2E4: .4byte 0x0400012a _0800B2E8: .4byte 0x04000120 _0800B2EC: .4byte gUnknown_3003FB0 _0800B2F0: .4byte 0x050003f0 - thumb_func_end sub_800B29C + thumb_func_end DisableSerial - thumb_func_start sub_800B2F4 -sub_800B2F4: @ 800B2F4 + thumb_func_start EnableSerial +EnableSerial: @ 800B2F4 push {r4,r5,lr} sub sp, 0x4 movs r0, 0xC0 @@ -3639,15 +3363,15 @@ sub_800B2F4: @ 800B2F4 ldr r2, _0800B368 @ =0x050003f0 mov r0, sp bl CpuSet - ldr r0, _0800B36C @ =gUnknown_3000E64 + ldr r0, _0800B36C @ =sNumVBlanksWithoutSerialIntr strb r4, [r0] - ldr r0, _0800B370 @ =gUnknown_3000E66 + ldr r0, _0800B370 @ =sSendNonzeroCheck strh r5, [r0] - ldr r0, _0800B374 @ =gUnknown_3000E68 + ldr r0, _0800B374 @ =sRecvNonzeroCheck strh r5, [r0] - ldr r0, _0800B378 @ =gUnknown_3000E6A + ldr r0, _0800B378 @ =sChecksumAvailable strb r4, [r0] - ldr r0, _0800B37C @ =gUnknown_3000E6B + ldr r0, _0800B37C @ =sHandshakePlayerCount strb r4, [r0] ldr r0, _0800B380 @ =gUnknown_3003FA0 strb r4, [r0] @@ -3664,23 +3388,23 @@ _0800B35C: .4byte 0x00004003 _0800B360: .4byte 0x0400012a _0800B364: .4byte gUnknown_3003FB0 _0800B368: .4byte 0x050003f0 -_0800B36C: .4byte gUnknown_3000E64 -_0800B370: .4byte gUnknown_3000E66 -_0800B374: .4byte gUnknown_3000E68 -_0800B378: .4byte gUnknown_3000E6A -_0800B37C: .4byte gUnknown_3000E6B +_0800B36C: .4byte sNumVBlanksWithoutSerialIntr +_0800B370: .4byte sSendNonzeroCheck +_0800B374: .4byte sRecvNonzeroCheck +_0800B378: .4byte sChecksumAvailable +_0800B37C: .4byte sHandshakePlayerCount _0800B380: .4byte gUnknown_3003FA0 _0800B384: .4byte gUnknown_3004F70 - thumb_func_end sub_800B2F4 + thumb_func_end EnableSerial - thumb_func_start sub_800B388 -sub_800B388: @ 800B388 + thumb_func_start ResetSerial +ResetSerial: @ 800B388 push {lr} - bl sub_800B2F4 - bl sub_800B29C + bl EnableSerial + bl DisableSerial pop {r0} bx r0 - thumb_func_end sub_800B388 + thumb_func_end ResetSerial thumb_func_start LinkMain1 LinkMain1: @ 800B398 @@ -3708,7 +3432,7 @@ _0800B3BC: .4byte _0800B434 .4byte _0800B43E _0800B3D0: - bl sub_800B29C + bl DisableSerial ldr r1, _0800B3DC @ =gUnknown_3003FB0 movs r0, 0x1 strb r0, [r1, 0x1] @@ -3719,7 +3443,7 @@ _0800B3E0: ldrb r0, [r4] cmp r0, 0x1 bne _0800B44A - bl sub_800B2F4 + bl EnableSerial ldr r1, _0800B3F4 @ =gUnknown_3003FB0 movs r0, 0x2 strb r0, [r1, 0x1] @@ -3921,7 +3645,7 @@ sub_800B520: @ 800B520 lsrs r0, 24 _0800B55E: movs r2, 0 - ldr r4, _0800B5A8 @ =gUnknown_3000E66 + ldr r4, _0800B5A8 @ =sSendNonzeroCheck mov r9, r4 ldr r1, _0800B5AC @ =gUnknown_3003FA0 mov r10, r1 @@ -3955,12 +3679,12 @@ _0800B598: .4byte gUnknown_3004F74 _0800B59C: .4byte 0x04000208 _0800B5A0: .4byte gUnknown_3003FB0 _0800B5A4: .4byte 0x00000339 -_0800B5A8: .4byte gUnknown_3000E66 +_0800B5A8: .4byte sSendNonzeroCheck _0800B5AC: .4byte gUnknown_3003FA0 _0800B5B0: movs r0, 0x1 strb r0, [r6, 0x12] - ldr r2, _0800B5F4 @ =gUnknown_3000E66 + ldr r2, _0800B5F4 @ =sSendNonzeroCheck mov r9, r2 ldr r4, _0800B5F8 @ =gUnknown_3003FA0 mov r10, r4 @@ -3995,7 +3719,7 @@ _0800B5D4: pop {r0} bx r0 .align 2, 0 -_0800B5F4: .4byte gUnknown_3000E66 +_0800B5F4: .4byte sSendNonzeroCheck _0800B5F8: .4byte gUnknown_3003FA0 _0800B5FC: .4byte 0x00000339 _0800B600: .4byte 0x04000208 @@ -4183,7 +3907,7 @@ _0800B754: cmp r2, 0x2 bne _0800B77E _0800B75E: - ldr r1, _0800B784 @ =gUnknown_3000E64 + ldr r1, _0800B784 @ =sNumVBlanksWithoutSerialIntr ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -4205,7 +3929,7 @@ _0800B77E: pop {r0} bx r0 .align 2, 0 -_0800B784: .4byte gUnknown_3000E64 +_0800B784: .4byte sNumVBlanksWithoutSerialIntr thumb_func_end LinkVSync thumb_func_start Timer3Intr @@ -4263,7 +3987,7 @@ _0800B7EA: adds r0, 0x1 movs r2, 0 strb r0, [r3, 0xD] - ldr r1, _0800B814 @ =gUnknown_3000E64 + ldr r1, _0800B814 @ =sNumVBlanksWithoutSerialIntr strb r2, [r1] lsls r0, 24 asrs r0, 24 @@ -4280,7 +4004,7 @@ _0800B80A: bx r0 .align 2, 0 _0800B810: .4byte gUnknown_3003FB0 -_0800B814: .4byte gUnknown_3000E64 +_0800B814: .4byte sNumVBlanksWithoutSerialIntr _0800B818: .4byte gUnknown_3004F70 _0800B81C: .4byte 0x00000fbd thumb_func_end SerialCB @@ -4336,7 +4060,7 @@ _0800B860: str r1, [r3, 0x4] strb r0, [r2, 0xA] movs r4, 0 - ldr r0, _0800B8C4 @ =gUnknown_3000E6B + ldr r0, _0800B8C4 @ =sHandshakePlayerCount mov r9, r0 mov r8, r2 ldr r2, _0800B8C8 @ =0x00008fff @@ -4371,7 +4095,7 @@ _0800B8B4: .4byte 0x0400012a _0800B8B8: .4byte 0x0000b9a0 _0800B8BC: .4byte gSioMlt_Recv _0800B8C0: .4byte 0x04000120 -_0800B8C4: .4byte gUnknown_3000E6B +_0800B8C4: .4byte sHandshakePlayerCount _0800B8C8: .4byte 0x00008fff _0800B8CC: .4byte 0x0000ffff _0800B8D0: @@ -4444,7 +4168,7 @@ DoRecv: @ 800B92C cmp r1, 0 bne _0800B990 movs r4, 0 - ldr r7, _0800B98C @ =gUnknown_3000E6A + ldr r7, _0800B98C @ =sChecksumAvailable ldrb r0, [r6, 0x3] cmp r4, r0 bcs _0800B97A @@ -4479,7 +4203,7 @@ _0800B97A: .align 2, 0 _0800B984: .4byte 0x04000120 _0800B988: .4byte gUnknown_3003FB0 -_0800B98C: .4byte gUnknown_3000E6A +_0800B98C: .4byte sChecksumAvailable _0800B990: ldr r2, _0800BA00 @ =0x00000fbc adds r1, r6, r2 @@ -4503,7 +4227,7 @@ _0800B9AC: cmp r4, r1 bcs _0800BA0C adds r5, r6, 0 - ldr r7, _0800BA04 @ =gUnknown_3000E68 + ldr r7, _0800BA04 @ =sRecvNonzeroCheck lsls r0, 1 mov r12, r0 movs r2, 0xCF @@ -4541,7 +4265,7 @@ _0800B9C8: b _0800BA0C .align 2, 0 _0800BA00: .4byte 0x00000fbc -_0800BA04: .4byte gUnknown_3000E68 +_0800BA04: .4byte sRecvNonzeroCheck _0800BA08: movs r0, 0x2 strb r0, [r6, 0x12] @@ -4553,7 +4277,7 @@ _0800BA0C: lsrs r0, 24 cmp r0, 0x8 bne _0800BA30 - ldr r2, _0800BA3C @ =gUnknown_3000E68 + ldr r2, _0800BA3C @ =sRecvNonzeroCheck ldrh r0, [r2] cmp r0, 0 beq _0800BA30 @@ -4572,7 +4296,7 @@ _0800BA30: pop {r0} bx r0 .align 2, 0 -_0800BA3C: .4byte gUnknown_3000E68 +_0800BA3C: .4byte sRecvNonzeroCheck _0800BA40: .4byte 0x00000fbd thumb_func_end DoRecv @@ -4587,7 +4311,7 @@ DoSend: @ 800BA44 ldr r1, _0800BA84 @ =0x0400012a ldrh r0, [r4, 0x14] strh r0, [r1] - ldr r1, _0800BA88 @ =gUnknown_3000E65 + ldr r1, _0800BA88 @ =sSendBufferEmpty ldrb r2, [r1] cmp r2, 0 bne _0800BA90 @@ -4611,14 +4335,14 @@ DoSend: @ 800BA44 .align 2, 0 _0800BA80: .4byte gUnknown_3003FB0 _0800BA84: .4byte 0x0400012a -_0800BA88: .4byte gUnknown_3000E65 +_0800BA88: .4byte sSendBufferEmpty _0800BA8C: .4byte 0x00000339 _0800BA90: movs r0, 0 strb r0, [r1] b _0800BAEC _0800BA96: - ldr r1, _0800BABC @ =gUnknown_3000E65 + ldr r1, _0800BABC @ =sSendBufferEmpty ldrb r0, [r1] cmp r0, 0 bne _0800BAB2 @@ -4639,7 +4363,7 @@ _0800BAB2: strh r0, [r1] b _0800BAE6 .align 2, 0 -_0800BABC: .4byte gUnknown_3000E65 +_0800BABC: .4byte sSendBufferEmpty _0800BAC0: .4byte 0x00000339 _0800BAC4: .4byte 0x0400012a _0800BAC8: diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 316b994a0..582cc073e 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -71,7 +71,7 @@ _080F863E: adds r0, r4, 0 bl sub_80FC4D4 strh r5, [r7] - ldr r1, _080F86AC @ =gUnknown_3003F50 + ldr r1, _080F86AC @ =gSendCmd ldr r2, _080F86B0 @ =0x01000008 adds r0, r7, 0 bl CpuSet @@ -97,7 +97,7 @@ _080F869C: .4byte gUnknown_3005450 _080F86A0: .4byte 0x010004d6 _080F86A4: .4byte gUnknown_30054BC _080F86A8: .4byte 0x00000634 -_080F86AC: .4byte gUnknown_3003F50 +_080F86AC: .4byte gSendCmd _080F86B0: .4byte 0x01000008 _080F86B4: .4byte gRecvCmds _080F86B8: .4byte 0x01000028 @@ -1277,7 +1277,7 @@ _080F9034: .4byte 0x01000028 thumb_func_start sub_80F9038 sub_80F9038: @ 80F9038 push {lr} - ldr r3, _080F9064 @ =gUnknown_3003F50 + ldr r3, _080F9064 @ =gSendCmd ldr r2, _080F9068 @ =gRecvCmds movs r1, 0x6 _080F9040: @@ -1288,7 +1288,7 @@ _080F9040: subs r1, 0x1 cmp r1, 0 bge _080F9040 - ldr r1, _080F9064 @ =gUnknown_3003F50 + ldr r1, _080F9064 @ =gSendCmd movs r2, 0 adds r0, r1, 0 adds r0, 0xC @@ -1300,7 +1300,7 @@ _080F9056: pop {r0} bx r0 .align 2, 0 -_080F9064: .4byte gUnknown_3003F50 +_080F9064: .4byte gSendCmd _080F9068: .4byte gRecvCmds thumb_func_end sub_80F9038 @@ -2007,7 +2007,7 @@ _080F95E4: ldrb r1, [r2] strb r0, [r2] bl sub_80FA510 - ldr r5, _080F9658 @ =gUnknown_3003F50 + ldr r5, _080F9658 @ =gSendCmd add r4, sp, 0x48 adds r0, r5, 0 adds r1, r4, 0 @@ -2045,7 +2045,7 @@ _080F9648: .4byte 0x0000099c _080F964C: .4byte gUnknown_3007460 _080F9650: .4byte gReceivedRemoteLinkPlayers _080F9654: .4byte 0x00000988 -_080F9658: .4byte gUnknown_3003F50 +_080F9658: .4byte gSendCmd thumb_func_end sub_80F9514 thumb_func_start sub_80F965C @@ -2723,7 +2723,7 @@ _080F9B68: movs r0, 0xEE lsls r0, 8 bl sub_80F9D04 - ldr r1, _080F9B90 @ =gUnknown_3003F50 + ldr r1, _080F9B90 @ =gSendCmd ldr r3, _080F9B94 @ =gUnknown_3003ED2 adds r0, r5, r3 ldrh r0, [r0] @@ -2739,7 +2739,7 @@ _080F9B68: strh r0, [r1, 0x6] b _080F9BF4 .align 2, 0 -_080F9B90: .4byte gUnknown_3003F50 +_080F9B90: .4byte gSendCmd _080F9B94: .4byte gUnknown_3003ED2 _080F9B98: .4byte gUnknown_3003ED4 _080F9B9C: .4byte gRecvCmds @@ -2949,7 +2949,7 @@ sub_80F9D04: @ 80F9D04 push {r4,r5,lr} lsls r0, 16 lsrs r1, r0, 16 - ldr r5, _080F9D34 @ =gUnknown_3003F50 + ldr r5, _080F9D34 @ =gSendCmd strh r1, [r5] movs r0, 0xF0 lsls r0, 7 @@ -2970,7 +2970,7 @@ sub_80F9D04: @ 80F9D04 beq _080F9DFC b _080F9E22 .align 2, 0 -_080F9D34: .4byte gUnknown_3003F50 +_080F9D34: .4byte gSendCmd _080F9D38: movs r0, 0xCC lsls r0, 7 @@ -3103,7 +3103,7 @@ _080F9E28: .4byte gUnknown_3005028 sub_80F9E2C: @ 80F9E2C push {r4,lr} adds r4, r0, 0 - ldr r0, _080F9E58 @ =gUnknown_3003F50 + ldr r0, _080F9E58 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080F9E52 @@ -3122,7 +3122,7 @@ _080F9E52: pop {r0} bx r0 .align 2, 0 -_080F9E58: .4byte gUnknown_3003F50 +_080F9E58: .4byte gSendCmd _080F9E5C: .4byte gUnknown_3005542 thumb_func_end sub_80F9E2C @@ -3146,7 +3146,7 @@ _080F9E7C: ldr r0, [r5] cmp r0, 0 bne _080F9EA4 - ldr r0, _080F9EB8 @ =gUnknown_3003F50 + ldr r0, _080F9EB8 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080F9EA4 @@ -3170,7 +3170,7 @@ _080F9EA8: .4byte gUnknown_843ED94 _080F9EAC: .4byte 0x00000701 _080F9EB0: .4byte gUnknown_843EDD8 _080F9EB4: .4byte gUnknown_3005450 -_080F9EB8: .4byte gUnknown_3003F50 +_080F9EB8: .4byte gSendCmd _080F9EBC: .4byte gUnknown_203AC08 _080F9EC0: adds r0, r6, 0 @@ -3240,7 +3240,7 @@ _080F9F40: .4byte rfufunc_80F9F44 thumb_func_start rfufunc_80F9F44 rfufunc_80F9F44: @ 80F9F44 push {r4,r5,lr} - ldr r0, _080F9F74 @ =gUnknown_3003F50 + ldr r0, _080F9F74 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080F9F98 @@ -3263,7 +3263,7 @@ rfufunc_80F9F44: @ 80F9F44 bls _080F9F98 b _080F9F94 .align 2, 0 -_080F9F74: .4byte gUnknown_3003F50 +_080F9F74: .4byte gSendCmd _080F9F78: .4byte gUnknown_3005450 _080F9F7C: bl GetMultiplayerId @@ -3295,7 +3295,7 @@ sub_80F9FA8: @ 80F9FA8 ldr r0, _080FA014 @ =gUnknown_3005450 mov r12, r0 ldr r5, [r0, 0x70] - ldr r3, _080FA018 @ =gUnknown_3003F50 + ldr r3, _080FA018 @ =gSendCmd mov r2, r12 adds r2, 0x6C ldrh r1, [r2] @@ -3348,7 +3348,7 @@ _080FA00C: bx r0 .align 2, 0 _080FA014: .4byte gUnknown_3005450 -_080FA018: .4byte gUnknown_3003F50 +_080FA018: .4byte gSendCmd _080FA01C: .4byte rfufunc_80FA020 thumb_func_end sub_80F9FA8 @@ -3367,7 +3367,7 @@ rfufunc_80FA020: @ 80FA020 ldrb r0, [r5, 0xC] cmp r0, 0 bne _080FA0E8 - ldr r3, _080FA0CC @ =gUnknown_3003F50 + ldr r3, _080FA0CC @ =gSendCmd adds r2, r5, 0 adds r2, 0x6E ldrh r0, [r2] @@ -3439,7 +3439,7 @@ _080FA05C: b _080FA0EC .align 2, 0 _080FA0C8: .4byte gUnknown_3005450 -_080FA0CC: .4byte gUnknown_3003F50 +_080FA0CC: .4byte gSendCmd _080FA0D0: .4byte 0xffff8900 _080FA0D4: .4byte gRecvCmds _080FA0D8: .4byte gUnknown_843EBD4 @@ -3624,7 +3624,7 @@ _080FA220: .4byte sub_80FA160 thumb_func_start sub_80FA224 sub_80FA224: @ 80FA224 push {r4,lr} - ldr r0, _080FA250 @ =gUnknown_3003F50 + ldr r0, _080FA250 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080FA248 @@ -3645,7 +3645,7 @@ _080FA248: pop {r0} bx r0 .align 2, 0 -_080FA250: .4byte gUnknown_3003F50 +_080FA250: .4byte gSendCmd _080FA254: .4byte gUnknown_3005450 _080FA258: .4byte sub_80FA1C4 thumb_func_end sub_80FA224 @@ -3789,7 +3789,7 @@ sub_80FA350: @ 80FA350 ldrb r0, [r0] cmp r0, 0 bne _080FA372 - ldr r0, _080FA380 @ =gUnknown_3003F50 + ldr r0, _080FA380 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080FA372 @@ -3805,7 +3805,7 @@ _080FA372: .align 2, 0 _080FA378: .4byte gUnknown_3005450 _080FA37C: .4byte 0x0000069e -_080FA380: .4byte gUnknown_3003F50 +_080FA380: .4byte gSendCmd _080FA384: .4byte sub_80FA2B0 thumb_func_end sub_80FA350 @@ -3822,7 +3822,7 @@ sub_80FA388: @ 80FA388 ldrb r0, [r0] cmp r0, 0 bne _080FA416 - ldr r0, _080FA3BC @ =gUnknown_3003F50 + ldr r0, _080FA3BC @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080FA416 @@ -3834,7 +3834,7 @@ sub_80FA388: @ 80FA388 .align 2, 0 _080FA3B4: .4byte gUnknown_3005450 _080FA3B8: .4byte 0x0000069e -_080FA3BC: .4byte gUnknown_3003F50 +_080FA3BC: .4byte gSendCmd _080FA3C0: .4byte sub_80FA2B0 _080FA3C4: bl GetLinkPlayerCount @@ -3869,7 +3869,7 @@ _080FA3F2: ldrb r0, [r0] cmp r0, 0 bne _080FA416 - ldr r0, _080FA424 @ =gUnknown_3003F50 + ldr r0, _080FA424 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080FA416 @@ -3886,7 +3886,7 @@ _080FA416: .align 2, 0 _080FA41C: .4byte gUnknown_3005450 _080FA420: .4byte 0x0000069e -_080FA424: .4byte gUnknown_3003F50 +_080FA424: .4byte gSendCmd _080FA428: .4byte sub_80FA350 thumb_func_end sub_80FA388 @@ -4540,7 +4540,7 @@ _080FA8D8: .align 2, 0 _080FA8E8: .4byte gTasks _080FA8EC: - ldr r0, _080FA8FC @ =gUnknown_3003F50 + ldr r0, _080FA8FC @ =gSendCmd ldrh r0, [r0] cmp r0, 0 bne _080FA9BC @@ -4549,7 +4549,7 @@ _080FA8F4: strh r0, [r4, 0x8] b _080FA9BC .align 2, 0 -_080FA8FC: .4byte gUnknown_3003F50 +_080FA8FC: .4byte gSendCmd _080FA900: ldrb r0, [r5, 0xD] b _080FA92C @@ -4831,7 +4831,7 @@ _080FAB0C: .4byte _080FABEE .4byte _080FAC78 _080FAB24: - ldr r0, _080FAB40 @ =gUnknown_3003F50 + ldr r0, _080FAB40 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 beq _080FAB2E @@ -4844,9 +4844,9 @@ _080FAB2E: bl sub_80F9D04 b _080FAC2E .align 2, 0 -_080FAB40: .4byte gUnknown_3003F50 +_080FAB40: .4byte gSendCmd _080FAB44: - ldr r0, _080FAB58 @ =gUnknown_3003F50 + ldr r0, _080FAB58 @ =gSendCmd ldrh r0, [r0] cmp r0, 0 beq _080FAB4E @@ -4857,7 +4857,7 @@ _080FAB4E: adds r1, r3 b _080FAC36 .align 2, 0 -_080FAB58: .4byte gUnknown_3003F50 +_080FAB58: .4byte gSendCmd _080FAB5C: bl GetBlockReceivedStatus lsls r0, 24 @@ -7269,7 +7269,7 @@ sub_80FBDB8: @ 80FBDB8 push {r4-r6,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r6, _080FBE10 @ =gUnknown_3003F50 + ldr r6, _080FBE10 @ =gSendCmd ldrh r0, [r6] cmp r0, 0 bne _080FBE08 @@ -7309,7 +7309,7 @@ _080FBE08: pop {r0} bx r0 .align 2, 0 -_080FBE10: .4byte gUnknown_3003F50 +_080FBE10: .4byte gSendCmd _080FBE14: .4byte gUnknown_3005450 _080FBE18: .4byte gTasks _080FBE1C: .4byte gUnknown_843EC41 diff --git a/include/link.h b/include/link.h index d5d3f08a3..22667cc11 100644 --- a/include/link.h +++ b/include/link.h @@ -138,7 +138,7 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gLinkType; extern u32 gLinkStatus; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; +extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; extern struct LinkPlayer gLinkPlayers[]; @@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; -extern u8 gUnknown_3003F84; +extern u8 gShouldAdvanceLinkState; extern u64 gSioMlt_Recv; void Task_DestroySelf(u8); @@ -208,7 +208,7 @@ void sub_80098D8(void); void CloseLink(void); bool8 IsLinkTaskFinished(void); bool32 sub_800B270(void); -void sub_800B388(void); +void ResetSerial(void); void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index 2a9b9ea71..cce6cefca 100644 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -51,7 +51,7 @@ int EReader_Send(size_t r6, const void * r5) { GetKeyInput(); if (TEST_BUTTON(sJoyNew, B_BUTTON)) - gUnknown_3003F84 = 2; + gShouldAdvanceLinkState = 2; sSendRecvStatus = EReaderHandleTransfer(1, r6, r5, NULL); if ((sSendRecvStatus & 0x13) == 0x10) @@ -71,7 +71,7 @@ int EReader_Send(size_t r6, const void * r5) } else { - gUnknown_3003F84 = 0; + gShouldAdvanceLinkState = 0; VBlankIntrWait(); } } @@ -90,7 +90,7 @@ int EReader_Recv(void * r5) { GetKeyInput(); if (TEST_BUTTON(sJoyNew, B_BUTTON)) - gUnknown_3003F84 = 2; + gShouldAdvanceLinkState = 2; sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, r5); if ((sSendRecvStatus & 0x13) == 0x10) @@ -110,7 +110,7 @@ int EReader_Recv(void * r5) } else { - gUnknown_3003F84 = 0; + gShouldAdvanceLinkState = 0; VBlankIntrWait(); } } @@ -150,7 +150,7 @@ static void OpenSerial32(void) REG_RCNT = 0; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE; REG_SIOCNT |= SIO_MULTI_SD; - gUnknown_3003F84 = 0; + gShouldAdvanceLinkState = 0; sCounter1 = 0; sCounter2 = 0; } @@ -167,7 +167,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu case 1: if (DetermineSendRecvState(mode)) EnableSio(); - if (gUnknown_3003F84 == 2) + if (gShouldAdvanceLinkState == 2) { sSendRecvMgr.field_04 = 2; sSendRecvMgr.state = 6; @@ -179,7 +179,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu sSendRecvMgr.state = 3; // fallthrough case 3: - if (gUnknown_3003F84 == 2) + if (gShouldAdvanceLinkState == 2) { sSendRecvMgr.field_04 = 2; sSendRecvMgr.state = 6; diff --git a/src/intro.c b/src/intro.c index bb7242f2f..c15f40dd3 100644 --- a/src/intro.c +++ b/src/intro.c @@ -561,7 +561,7 @@ static bool8 sub_80EC62C(void) } break; case 142: - sub_800B388(); + ResetSerial(); SetMainCallback2(sub_80EC5B8); break; } diff --git a/src/link.c b/src/link.c index f63b2fcd7..b1e1466fc 100644 --- a/src/link.c +++ b/src/link.c @@ -27,18 +27,68 @@ struct LinkTestBGInfo u32 dummy_C; }; -u32 gUnknown_3000E58; +#define static __attribute__((section(".bss"))) +static struct BlockTransfer sBlockSend; +ALIGNED(8) static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS]; +static u32 sBlockSendDelayCounter; +static u32 gUnknown_3000E4C; +static u8 gUnknown_3000E50; +static u32 sPlayerDataExchangeStatus; +static u32 gUnknown_3000E58; +static u8 sLinkTestLastBlockSendPos; +ALIGNED(8) static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS]; +static u8 sNumVBlanksWithoutSerialIntr; +static bool8 sSendBufferEmpty; +static u16 sSendNonzeroCheck; +static u16 sRecvNonzeroCheck; +static u8 sChecksumAvailable; +static u8 sHandshakePlayerCount; +#undef static struct LinkTestBGInfo gLinkTestBGInfo; +bool8 gLinkErrorOccurred; +bool8 gSuppressLinkErrorMessage; +void (*gLinkCallback)(void); +bool8 gUnknown_3003F28; +bool8 gUnknown_3003F24; +u16 gUnknown_3003F34; +u8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS]; +u8 gUnknown_3003F30[MAX_LINK_PLAYERS]; +u8 gUnknown_3003F2C[MAX_LINK_PLAYERS]; +u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS]; +EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = FALSE; +EWRAM_DATA bool8 gUnknown_2022111 = FALSE; +EWRAM_DATA u32 gUnknown_2022114 = 0; +EWRAM_DATA u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2] = {}; +EWRAM_DATA u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE] = {}; +EWRAM_DATA bool8 gLinkOpen = FALSE; +EWRAM_DATA u16 gLinkType = 0; +EWRAM_DATA u16 gLinkTimeOutCounter = 0; EWRAM_DATA struct LinkPlayer gLocalLinkPlayer = {}; +EWRAM_DATA struct LinkPlayer gLinkPlayers[MAX_RFU_PLAYERS] = {}; +EWRAM_DATA struct LinkPlayer gSavedLinkPlayers[MAX_RFU_PLAYERS] = {}; +EWRAM_DATA struct { + u32 status; + u8 lastRecvQueueCount; + u8 lastSendQueueCount; + u8 unk_06; +} sLinkErrorBuffer = {}; +EWRAM_DATA u16 gUnknown_202285C = 0; +EWRAM_DATA void *gUnknown_2022860 = NULL; -void sub_800B210(void); void InitLocalLinkPlayer(void); void sub_800978C(void); +u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); +void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2); +void LinkCB_RequestPlayerDataExchange(void); void ResetBlockSend(void); void task00_link_test(u8 taskId); void CB2_LinkTest(void); +void EnableSerial(void); +void sub_800B210(void); +void sub_80F8DC0(void); +void DisableSerial(void); extern const u16 gLinkTestDigitsPal[0x20]; extern const u16 gLinkTestDigitsGfx[0x1000]; @@ -151,3 +201,113 @@ void InitLocalLinkPlayer(void) gLocalLinkPlayer.name[8] |= 0x10; } } + +void sub_800978C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void InitLink(void) +{ + int i; + + for (i = 0; i < 8; i++) + { + gSendCmd[i] = 0xEFFF; + } + gLinkOpen = TRUE; + EnableSerial(); +} + +void Task_TriggerHandshake(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 5) + { + gShouldAdvanceLinkState = 1; + DestroyTask(taskId); + } +} + +void OpenLink(void) +{ + int i; + + if (!gWirelessCommType) + { + ResetSerial(); + InitLink(); + gLinkCallback = LinkCB_RequestPlayerDataExchange; + gLinkVSyncDisabled = FALSE; + gLinkErrorOccurred = FALSE; + gSuppressLinkErrorMessage = FALSE; + ResetBlockReceivedFlags(); + ResetBlockSend(); + gUnknown_3000E4C = 0; + gUnknown_3003F28 = FALSE; + gUnknown_3003F24 = FALSE; + gUnknown_3003F34 = 0; + CreateTask(Task_TriggerHandshake, 2); + } + else + { + sub_80F86F4(); + } + gReceivedRemoteLinkPlayers = 0; + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gRemoteLinkPlayersNotReceived[i] = TRUE; + gUnknown_3003F30[i] = FALSE; + gUnknown_3003F2C[i] = FALSE; + } +} + +void CloseLink(void) +{ + gReceivedRemoteLinkPlayers = FALSE; + if (gWirelessCommType) + { + sub_80F8DC0(); + } + gLinkOpen = FALSE; + DisableSerial(); +} + +void TestBlockTransfer(u8 nothing, u8 is, u8 used) +{ + u8 i; + u8 status; + + if (sLinkTestLastBlockSendPos != sBlockSend.pos) + { + LinkTest_prnthex(sBlockSend.pos, 2, 3, 2); + sLinkTestLastBlockSendPos = sBlockSend.pos; + } + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + if (sLinkTestLastBlockRecvPos[i] != sBlockRecv[i].pos) + { + LinkTest_prnthex(sBlockRecv[i].pos, 2, i + 4, 2); + sLinkTestLastBlockRecvPos[i] = sBlockRecv[i].pos; + } + } + status = GetBlockReceivedStatus(); + if (status == 0xF) // 0b1111 + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + if ((status >> i) & 1) + { + gLinkTestBlockChecksums[i] = LinkTestCalcBlockChecksum(gBlockRecvBuffer[i], sBlockRecv[i].size); + ResetBlockReceivedFlag(i); + if (gLinkTestBlockChecksums[i] != 0x0342) + { + gLinkTestDebugValuesEnabled = FALSE; + gUnknown_2022111 = FALSE; + } + } + } + } +} + diff --git a/src/mevent.c b/src/mevent.c index d0d7f59aa..a4a9ea82d 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -126,7 +126,7 @@ u8 sub_8143674(struct MEvent_Str_1 *mgr) resp = 2; if (mgr->status & 4) resp = 3; - gUnknown_3003F84 = 0; + gShouldAdvanceLinkState = 0; return resp; } diff --git a/sym_bss.txt b/sym_bss.txt index 22b6dfdc8..a2cf9ccd8 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -6,58 +6,19 @@ .space 0x4 - .include "src/bg.o" - .include "src/malloc.o" - .include "src/text_printer.o" - .include "src/sprite.o" - .align 2 -gUnknown_3000E08: @ 3000E08 - .space 0x10 - -gUnknown_3000E18: @ 3000E18 - .space 0x30 - -gUnknown_3000E48: @ 3000E48 - .space 0x4 - -gUnknown_3000E4C: @ 3000E4C - .space 0x4 - -gUnknown_3000E50: @ 3000E50 - .space 0x4 - -gUnknown_3000E54: @ 3000E54 - .space 0x4 - -gUnknown_3000E58: @ 3000E58 - .space 0x4 - -gUnknown_3000E5C: @ 3000E5C - .space 0x4 - -gUnknown_3000E60: @ 3000E60 - .space 0x4 - -gUnknown_3000E64: @ 3000E64 - .space 0x1 - -gUnknown_3000E65: @ 3000E65 - .space 0x1 - -gUnknown_3000E66: @ 3000E66 - .space 0x2 - -gUnknown_3000E68: @ 3000E68 - .space 0x2 - -gUnknown_3000E6A: @ 3000E6A - .space 0x1 - -gUnknown_3000E6B: @ 3000E6B - .space 0x1 - + .include "src/bg.o" + .align 2 + .include "src/malloc.o" + .align 2 + .include "src/text_printer.o" + .align 2 + .include "src/sprite.o" + .align 2 + .include "src/link.o" + .align 2 .include "src/multiboot.o" + .align 2 .include "src/daycare.o" gUnknown_3000E78: @ 3000E78 diff --git a/sym_common.txt b/sym_common.txt index b2c86b705..646d333cb 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -15,13 +15,13 @@ gUnknown_3003E6C: @ 3003E6C gUnknown_3003E70: @ 3003E70 .space 0x3C -gUnknown_3003EAC: @ 3003EAC +gLinkErrorOccurred: @ 3003EAC .space 0x4 gUnknown_3003EB0: @ 3003EB0 .space 0x8 -gUnknown_3003EB8: @ 3003EB8 +gRemoteLinkPlayersNotReceived: @ 3003EB8 .space 0x4 gUnknown_3003EBC: @ 3003EBC @@ -57,7 +57,7 @@ gUnknown_3003F30: @ 3003F30 gUnknown_3003F34: @ 3003F34 .space 0x4 -gUnknown_3003F38: @ 3003F38 +gSuppressLinkErrorMessage: @ 3003F38 .space 0x4 gWirelessCommType: @ 3003F3C @@ -66,7 +66,7 @@ gWirelessCommType: @ 3003F3C gUnknown_3003F40: @ 3003F40 .space 0x10 -gUnknown_3003F50: @ 3003F50 +gSendCmd: @ 3003F50 .space 0x10 gUnknown_3003F60: @ 3003F60 @@ -78,13 +78,13 @@ gReceivedRemoteLinkPlayers: @ 3003F64 gLinkTestBGInfo: @ 3003F70 .space 0x10 -gUnknown_3003F80: @ 3003F80 +gLinkCallback: @ 3003F80 .space 0x4 -gUnknown_3003F84: @ 3003F84 +gShouldAdvanceLinkState: @ 3003F84 .space 0x4 -gUnknown_3003F88: @ 3003F88 +gLinkTestBlockChecksums: @ 3003F88 .space 0x8 gUnknown_3003F90: @ 3003F90 diff --git a/sym_ewram.txt b/sym_ewram.txt index 194f7fe5d..edc7471bb 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -13,57 +13,9 @@ .include "src/sprite.o" .align 2 .include "src/string_util.o" - - @ .include "src/link.o" -gLinkTestDebugValuesEnabled: @ 2022110 - .space 0x1 - -gUnknown_2022111: @ 2022111 - .space 0x1 - .align 2 -gUnknown_2022114: @ 2022114 - .space 0x4 - -gBlockRecvBuffer: @ 2022118 - .space 0x500 - -gBlockSendBuffer: @ 2022618 - .space 0x100 - -gLinkOpen: @ 2022718 - .space 0x1 - - .align 1 -gLinkType: @ 202271A - .space 0x2 - -gLinkTimeOutCounter: @ 202271C - .space 0x2 - - .align 2 -gLocalLinkPlayer: @ 2022720 - .space 0x1C - - .align 2 -gLinkPlayers: @ 202273C - .space 0x8C - - .align 2 -gSavedLinkPlayers: @ 20227C8 - .space 0x8C - - .align 2 -sLinkErrorBuffer: @ 2022854 - .space 0x8 - - .align 1 -gUnknown_202285C: @ 202285C - .space 0x2 - - .align 2 -gUnknown_2022860: @ 2022860 - .space 0xC + .include "src/link.o" + .space 8 @ .include "src/link_rfu.o" .include "src/battle_controllers.o" From d84e9bed58db84bbb7db568c366bfa803be87139 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 00:48:48 -0700 Subject: [PATCH 086/100] Decompile/port new_game --- asm/battle_tower.s | 4 +- asm/hall_of_fame.s | 2 +- asm/link_rfu_3.s | 4 +- asm/new_game.s | 340 ------------------------------- asm/overworld.s | 18 +- asm/start_menu.s | 12 +- data/map_event_scripts.inc | 2 +- include/battle_records.h | 13 ++ include/berry.h | 1 + include/berry_pouch.h | 1 + include/berry_powder.h | 1 + include/easy_chat.h | 1 + include/event_data.h | 2 + include/global.h | 10 +- include/item_menu.h | 1 + include/main.h | 1 + include/mevent.h | 1 + include/new_game.h | 14 +- include/overworld.h | 3 +- include/player_pc.h | 1 + include/pokemon_jump.h | 14 ++ include/pokemon_size_record.h | 3 + include/pokemon_storage_system.h | 1 + include/quest_log.h | 2 + include/trainer_tower.h | 2 + include/union_room_chat.h | 7 + include/wild_encounter.h | 1 + ld_script.txt | 2 +- src/berry_powder.c | 10 +- src/mevent.c | 2 +- src/new_game.c | 168 +++++++++++++++ src/scrcmd.c | 14 +- src/seagallop.c | 2 +- sym_ewram.txt | 2 +- 34 files changed, 272 insertions(+), 390 deletions(-) delete mode 100644 asm/new_game.s create mode 100644 include/battle_records.h create mode 100644 include/pokemon_jump.h create mode 100644 include/union_room_chat.h create mode 100644 src/new_game.c diff --git a/asm/battle_tower.s b/asm/battle_tower.s index abb47aba9..08fefffbc 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2799,7 +2799,7 @@ _080E6F0E: ldr r4, _080E6FA4 @ =gSaveBlock2Ptr ldr r1, [r4] adds r1, 0xA - bl CopyUnalignedWord + bl CopyTrainerId adds r0, r5, 0x4 ldr r1, [r4] bl StringCopy7 @@ -3369,7 +3369,7 @@ _080E7372: adds r0, 0xC ldr r1, [r5] adds r1, 0xA - bl CopyUnalignedWord + bl CopyTrainerId adds r0, r7, 0x4 ldr r1, [r5] bl StringCopy7 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 5b28e21d5..75475b667 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -1458,7 +1458,7 @@ sub_80F2934: @ 80F2934 movs r0, 0x3 @ MAP_GROUP(INDIGO_PLATEAU_EXTERIOR) movs r1, 0x9 @ MAP_NUM(INDIGO_PLATEAU_EXTERIOR) movs r3, 0xB - bl Overworld_SetWarpDestination + bl SetWarpDestination bl DoWarp bl ResetInitialPlayerAvatarState add sp, 0x4 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index f65efc5f7..4ddbed23a 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3356,7 +3356,7 @@ sub_8117440: @ 8117440 asrs r5, 24 str r5, [sp] adds r3, r4, 0 - bl Overworld_SetWarpDestination + bl SetWarpDestination ldr r0, [r6] movs r1, 0x4 ldrsb r1, [r0, r1] @@ -3423,7 +3423,7 @@ sub_81174B4: @ 81174B4 adds r0, r4, 0 adds r1, r5, 0 mov r3, r8 - bl Overworld_SetWarpDestination + bl SetWarpDestination bl WarpIntoMap add sp, 0x4 pop {r3} diff --git a/asm/new_game.s b/asm/new_game.s deleted file mode 100644 index 15c06e8eb..000000000 --- a/asm/new_game.s +++ /dev/null @@ -1,340 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start WriteUnalignedWord -WriteUnalignedWord: @ 80548FC - strb r0, [r1] - lsrs r2, r0, 8 - strb r2, [r1, 0x1] - lsrs r2, r0, 16 - strb r2, [r1, 0x2] - lsrs r0, 24 - strb r0, [r1, 0x3] - bx lr - thumb_func_end WriteUnalignedWord - - thumb_func_start CopyUnalignedWord -CopyUnalignedWord: @ 805490C - push {r4,lr} - adds r4, r0, 0 - adds r3, r1, 0 - movs r2, 0 -_08054914: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08054914 - pop {r4} - pop {r0} - bx r0 - thumb_func_end CopyUnalignedWord - - thumb_func_start InitPlayerTrainerId -InitPlayerTrainerId: @ 8054928 - push {r4,lr} - bl Random - adds r4, r0, 0 - bl GetGeneratedTrainerIdLower - lsls r4, 16 - lsls r0, 16 - lsrs r0, 16 - orrs r4, r0 - ldr r0, _08054950 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r1, 0xA - adds r0, r4, 0 - bl WriteUnalignedWord - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054950: .4byte gSaveBlock2Ptr - thumb_func_end InitPlayerTrainerId - - thumb_func_start SetDefaultOptions -SetDefaultOptions: @ 8054954 - ldr r3, _080549A8 @ =gSaveBlock2Ptr - ldr r2, [r3] - ldrb r1, [r2, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x14] - ldr r2, [r3] - ldrb r1, [r2, 0x14] - movs r0, 0x7 - ands r0, r1 - strb r0, [r2, 0x14] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r1, [r3] - movs r0, 0 - strb r0, [r1, 0x13] - bx lr - .align 2, 0 -_080549A8: .4byte gSaveBlock2Ptr - thumb_func_end SetDefaultOptions - - thumb_func_start sub_80549AC -sub_80549AC: @ 80549AC - push {r4,lr} - ldr r4, _080549D0 @ =gSaveBlock2Ptr - ldr r0, [r4] - adds r0, 0x28 - movs r1, 0 - movs r2, 0x34 - bl memset - ldr r0, [r4] - adds r0, 0x5C - movs r1, 0 - movs r2, 0x34 - bl memset - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080549D0: .4byte gSaveBlock2Ptr - thumb_func_end sub_80549AC - - thumb_func_start sub_80549D4 -sub_80549D4: @ 80549D4 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r0, _080549F0 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r1, 0xB0 - ldr r2, _080549F4 @ =0x050001fa - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080549F0: .4byte gSaveBlock2Ptr -_080549F4: .4byte 0x050001fa - thumb_func_end sub_80549D4 - - thumb_func_start sub_80549F8 -sub_80549F8: @ 80549F8 - push {lr} - sub sp, 0x4 - movs r2, 0x1 - negs r2, r2 - movs r0, 0x6 - str r0, [sp] - movs r0, 0x4 - movs r1, 0x1 - movs r3, 0x6 - bl Overworld_SetWarpDestination - bl WarpIntoMap - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80549F8 - - thumb_func_start Sav2_ClearSetDefault -Sav2_ClearSetDefault: @ 8054A18 - push {lr} - bl ClearSav2 - bl SetDefaultOptions - pop {r0} - bx r0 - thumb_func_end Sav2_ClearSetDefault - - thumb_func_start ResetMenuAndMonGlobals -ResetMenuAndMonGlobals: @ 8054A28 - push {lr} - ldr r1, _08054A5C @ =gUnknown_2031DB0 - movs r0, 0 - strb r0, [r1] - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - bl sub_81089BC - bl ResetTMCaseCursorPos - bl BerryPouch_CursorResetToTop - bl sub_811089C - bl Random - lsls r0, 16 - lsrs r0, 16 - bl sub_8083214 - bl sub_806E6FC - pop {r0} - bx r0 - .align 2, 0 -_08054A5C: .4byte gUnknown_2031DB0 - thumb_func_end ResetMenuAndMonGlobals - - thumb_func_start sub_8054A60 -sub_8054A60: @ 8054A60 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - ldr r6, _08054B50 @ =gSaveBlock1Ptr - ldr r1, [r6] - ldr r0, _08054B54 @ =0x00003a4c - mov r8, r0 - add r1, r8 - mov r0, sp - bl StringCopy - ldr r1, _08054B58 @ =gUnknown_2031DB0 - movs r0, 0x1 - strb r0, [r1] - ldr r4, _08054B5C @ =gSaveBlock2Ptr - ldr r0, [r4] - movs r1, 0xF2 - lsls r1, 4 - adds r0, r1 - movs r5, 0 - str r5, [r0] - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - bl sub_80549D4 - bl ClearSav1 - bl ClearMailData - ldr r0, [r4] - strb r5, [r0, 0x9] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0xA8 - str r5, [r1] - adds r0, 0xAC - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xAD - strb r5, [r0] - bl InitPlayerTrainerId - bl PlayTimeCounter_Reset - bl sub_80549AC - bl sub_806E0D0 - bl ResetFameChecker - ldr r0, [r6] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - ldr r1, _08054B60 @ =0x00000bb8 - bl SetMoney - bl sub_8054E68 - bl InitLinkBattleRecords - bl sub_80A0904 - bl sub_80A0958 - bl sub_806E190 - ldr r0, _08054B64 @ =gPlayerPartyCount - strb r5, [r0] - bl ZeroPlayerPartyMons - bl sub_808C7E0 - bl ClearRoamerData - ldr r0, [r6] - ldr r1, _08054B68 @ =0x00000296 - adds r0, r1 - strh r5, [r0] - bl ClearItemSlotsInAllBagPockets - bl sub_80EB658 - bl sub_809C794 - bl sub_80BDD34 - bl sub_8113044 - bl copy_strings_to_sav1 - bl sub_8054B70 - bl sub_8143D24 - bl sub_815D838 - bl sub_80549F8 - ldr r0, _08054B6C @ =gUnknown_81A6481 - bl ScriptContext2_RunNewScript - ldr r0, [r6] - add r0, r8 - mov r1, sp - bl StringCopy - bl sub_815EE0C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08054B50: .4byte gSaveBlock1Ptr -_08054B54: .4byte 0x00003a4c -_08054B58: .4byte gUnknown_2031DB0 -_08054B5C: .4byte gSaveBlock2Ptr -_08054B60: .4byte 0x00000bb8 -_08054B64: .4byte gPlayerPartyCount -_08054B68: .4byte 0x00000296 -_08054B6C: .4byte gUnknown_81A6481 - thumb_func_end sub_8054A60 - - thumb_func_start sub_8054B70 -sub_8054B70: @ 8054B70 - push {r4-r6,lr} - sub sp, 0x4 - mov r0, sp - movs r5, 0 - strh r5, [r0] - ldr r4, _08054BBC @ =gSaveBlock2Ptr - ldr r1, [r4] - movs r0, 0xAF - lsls r0, 4 - adds r1, r0 - ldr r6, _08054BC0 @ =0x01000008 - mov r0, sp - adds r2, r6, 0 - bl CpuSet - ldr r0, [r4] - ldr r1, _08054BC4 @ =0x00000af8 - adds r0, r1 - movs r1, 0 - bl sub_815EE54 - bl ResetPokeJumpResults - mov r0, sp - adds r0, 0x2 - strh r5, [r0] - ldr r1, [r4] - movs r2, 0xB1 - lsls r2, 4 - adds r1, r2 - adds r2, r6, 0 - bl CpuSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08054BBC: .4byte gSaveBlock2Ptr -_08054BC0: .4byte 0x01000008 -_08054BC4: .4byte 0x00000af8 - thumb_func_end sub_8054B70 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 5cc051c8a..a443a0d10 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1003,8 +1003,8 @@ WarpIntoMap: @ 8055378 bx r0 thumb_func_end WarpIntoMap - thumb_func_start Overworld_SetWarpDestination -Overworld_SetWarpDestination: @ 805538C + thumb_func_start SetWarpDestination +SetWarpDestination: @ 805538C push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -1034,7 +1034,7 @@ Overworld_SetWarpDestination: @ 805538C bx r0 .align 2, 0 _080553C4: .4byte gUnknown_2031DBC - thumb_func_end Overworld_SetWarpDestination + thumb_func_end SetWarpDestination thumb_func_start warp1_set_2 warp1_set_2: @ 80553C8 @@ -1049,7 +1049,7 @@ warp1_set_2: @ 80553C8 movs r3, 0x1 negs r3, r3 str r3, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination add sp, 0x4 pop {r0} bx r0 @@ -1151,7 +1151,7 @@ sub_805546C: @ 805546C lsls r4, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination _0805549A: add sp, 0x4 pop {r4} @@ -1458,7 +1458,7 @@ _080556BC: lsls r4, r6, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination _080556D6: add sp, 0x4 pop {r4-r6} @@ -1627,7 +1627,7 @@ sub_80557C4: @ 80557C4 lsls r4, r5, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination b _08055818 _080557FC: bl mapheader_run_script_with_tag_x6 @@ -1700,7 +1700,7 @@ sub_8055864: @ 8055864 negs r3, r3 str r3, [sp] adds r2, r3, 0 - bl Overworld_SetWarpDestination + bl SetWarpDestination bl sub_8055E94 bl warp_shift bl set_current_map_header_from_sav1_save_old_name @@ -3493,7 +3493,7 @@ CB2_NewGame: @ 8056644 bl sub_80569BC bl StopMapMusic bl sub_8056420 - bl sub_8054A60 + bl NewGameInitData bl ResetInitialPlayerAvatarState bl PlayTimeCounter_Start bl ScriptContext1_Init diff --git a/asm/start_menu.s b/asm/start_menu.s index 40a678a01..7ab76140f 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1386,7 +1386,7 @@ _0806F81A: cmp r0, 0x2 bne _0806F82E _0806F826: - ldr r0, _0806F83C @ =gUnknown_2031DB0 + ldr r0, _0806F83C @ =gDifferentSaveFile ldrb r0, [r0] cmp r0, 0 bne _0806F848 @@ -1397,7 +1397,7 @@ _0806F82E: b _0806F864 .align 2, 0 _0806F838: .4byte gSaveFileStatus -_0806F83C: .4byte gUnknown_2031DB0 +_0806F83C: .4byte gDifferentSaveFile _0806F840: .4byte gUnknown_3000FA4 _0806F844: .4byte sub_806F86C _0806F848: @@ -1423,7 +1423,7 @@ _0806F866: thumb_func_start sub_806F86C sub_806F86C: @ 806F86C push {lr} - ldr r0, _0806F880 @ =gUnknown_2031DB0 + ldr r0, _0806F880 @ =gDifferentSaveFile ldrb r0, [r0] cmp r0, 0x1 bne _0806F88C @@ -1432,7 +1432,7 @@ sub_806F86C: @ 806F86C bl sub_806F69C b _0806F894 .align 2, 0 -_0806F880: .4byte gUnknown_2031DB0 +_0806F880: .4byte gDifferentSaveFile _0806F884: .4byte gUnknown_81C566A _0806F888: .4byte sub_806F8C0 _0806F88C: @@ -1537,7 +1537,7 @@ sub_806F940: @ 806F940 push {r4,lr} movs r0, 0 bl IncrementGameStat - ldr r4, _0806F95C @ =gUnknown_2031DB0 + ldr r4, _0806F95C @ =gDifferentSaveFile ldrb r0, [r4] cmp r0, 0x1 bne _0806F960 @@ -1547,7 +1547,7 @@ sub_806F940: @ 806F940 strb r0, [r4] b _0806F966 .align 2, 0 -_0806F95C: .4byte gUnknown_2031DB0 +_0806F95C: .4byte gDifferentSaveFile _0806F960: movs r0, 0 bl TrySavingData diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index c333c6336..44861f91f 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1435,7 +1435,7 @@ Text_1A644F:: @ 81A644F .string "once. Is that okay?$" -gUnknown_81A6481:: @ 81A6481 +EventScript_ResetAllMapFlags:: @ 81A6481 setflag FLAG_0x02B setflag FLAG_0x02C setflag FLAG_0x033 diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..55e969b50 --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,13 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +extern u8 gRecordsWindowId; + +void ClearPlayerLinkBattleRecords(void); +void InitLinkBattleRecords(void); +void UpdatePlayerLinkBattleRecords(s32 battlerId); +void ShowLinkBattleRecords(void); +void RemoveRecordsWindow(void); +void ShowTrainerHillRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H \ No newline at end of file diff --git a/include/berry.h b/include/berry.h index c5a132ccb..0e554a789 100644 --- a/include/berry.h +++ b/include/berry.h @@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +void sub_809C794(void); const struct Berry * sub_809C8A0(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/berry_pouch.h b/include/berry_pouch.h index cd9866d81..f478ff194 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -19,5 +19,6 @@ void BerryPouch_SetExitCallback(void (*exitCallback)(void)); void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect); void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId); +void BerryPouch_CursorResetToTop(void); #endif //GUARD_BERRY_POUCH_H diff --git a/include/berry_powder.h b/include/berry_powder.h index 89582aacc..f0e77c44b 100644 --- a/include/berry_powder.h +++ b/include/berry_powder.h @@ -2,5 +2,6 @@ #define GUARD_BERRY_POWDER_H u32 GetBerryPowder(void); +void SetBerryPowder(u32 *powder, u32 amount); #endif //GUARD_BERRY_POWDER_H diff --git a/include/easy_chat.h b/include/easy_chat.h index bd5c9a026..e6a48fccc 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -38,6 +38,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); void sub_80BDE28(void); +void sub_80BDD34(void); void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index 013579ab5..c461c1d55 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -37,6 +37,8 @@ void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); bool32 sub_806E25C(void); +void sub_806E0D0(void); +void sub_806E190(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; diff --git a/include/global.h b/include/global.h index 55233a340..2af9bbc94 100644 --- a/include/global.h +++ b/include/global.h @@ -227,14 +227,20 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 field_A8; - /*0x0AC*/ u8 filler_AC[0x3F4]; + /*0x0AC*/ u8 field_AC; + /*0x0AD*/ u8 field_AD; + /*0x0AE*/ u8 filler_AE[0x2]; + /*0x0B0*/ u8 field_B0; + /*0x0B1*/ u8 filler_B1[0x3EF]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; /*0x574*/ u8 filler_574[0x324]; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; - /*0xB00*/ u8 filler_B00[0x420]; + /*0xB00*/ struct PokemonJumpResults pokeJump; + /*0xB10*/ struct BerryPickingResults berryPick; + /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; }; diff --git a/include/item_menu.h b/include/item_menu.h index 2e83ed1f4..ceaf277a3 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -26,6 +26,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC50(void); void sub_81AAC70(void); void sub_8108CF0(void); +void sub_81089BC(void); void sub_810B108(u8); void ReturnToBagFromKeyItem(void); void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); diff --git a/include/main.h b/include/main.h index d326909ff..589709436 100644 --- a/include/main.h +++ b/include/main.h @@ -67,6 +67,7 @@ void SetVBlankCounter1Ptr(u32 *ptr); void DisableVBlankCounter1(void); void StartTimer1(void); void SeedRngAndSetTrainerId(void); +u16 GetGeneratedTrainerIdLower(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/include/mevent.h b/include/mevent.h index b61fa732d..cee88e403 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -66,5 +66,6 @@ void MENews_RemoveScrollIndicatorArrowPair(void); bool32 WonderNews_Test_Unk_02(void); bool32 WonderCard_Test_Unk_08_6(void); u32 MENews_GetInput(u16 input); +void sub_8143D24(void); #endif //GUARD_MEVENT_H diff --git a/include/new_game.h b/include/new_game.h index a45b090c8..346e7aff3 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,19 +1,13 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H -#include "global.h" - -void WriteUnalignedWord(u32 var, u8 *dataPtr); +void SetTrainerId(u32 trainerId, u8 *dst); u32 ReadUnalignedWord(u8* dataPtr); -void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); -void InitPlayerTrainerId(void); -void SetDefaultOptions(void); -void ClearPokedexFlags(void); -void WarpToTruck(void); +void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); +void ResetMenuAndMonGlobals(void); +void Sav2_ClearSetDefault(void); void ResetMiniGamesResults(void); void sub_808447C(void); -void Sav2_ClearSetDefault(void); -void ResetMenuAndMonGlobals(void); #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index 92b0f6001..52f292357 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -49,7 +49,7 @@ void IncrementGameStat(u8 index); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); void Overworld_SetMapObjTemplateMovementType(u8, u8); -void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); @@ -137,6 +137,7 @@ u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); void sub_8055F88(void); void sub_8056788(void); +void sub_8054E68(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/player_pc.h b/include/player_pc.h index f527ec9f5..ff1c33d1a 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -21,5 +21,6 @@ struct PlayerPC_Unk_203AAC4 // Exported ROM declarations void sub_816B060(u8 taskId); +void sub_80EB658(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h new file mode 100644 index 000000000..28b19f9b1 --- /dev/null +++ b/include/pokemon_jump.h @@ -0,0 +1,14 @@ +#ifndef GUARD_POKEMON_JUMP_H +#define GUARD_POKEMON_JUMP_H + +#include "main.h" + +void sub_802A9A8(u16 monId, MainCallback callback); +bool32 sub_802C908(u16 species); +void sub_802C920(void); +void ResetPokeJumpResults(void); +void sub_802E3C4(void); +void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority); +bool32 sub_802EB84(void); + +#endif // GUARD_POKEMON_JUMP_H diff --git a/include/pokemon_size_record.h b/include/pokemon_size_record.h index 3fa448cbb..d62ced51d 100644 --- a/include/pokemon_size_record.h +++ b/include/pokemon_size_record.h @@ -11,6 +11,9 @@ void InitLotadSizeRecord(void); void GetLotadSizeRecordInfo(void); void CompareLotadSize(void); +void sub_80A0904(void); +void sub_80A0958(void); + void GiveGiftRibbonToParty(u8 index, u8 ribbonId); #endif // GUARD_POKEMON_SIZE_RECORD_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 8ab9e5f0e..e6d7c5018 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,6 +14,7 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); +void sub_808C7E0(void); u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index 0690dd282..7e86e7c2f 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -33,6 +33,8 @@ u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); void sub_8111CF0(void); +void sub_811089C(void); +void sub_8113044(void); extern u8 gUnknown_203ADFA; diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 9cca2ea76..d7fde9362 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -5,5 +5,7 @@ void PrintTrainerTowerRecords(void); void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); +void sub_815D838(void); +void sub_815EE0C(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h new file mode 100644 index 000000000..027a2e20c --- /dev/null +++ b/include/union_room_chat.h @@ -0,0 +1,7 @@ +#ifndef GUARD_UNION_ROOM_CHAT_H +#define GUARD_UNION_ROOM_CHAT_H + +void sub_801DD98(void); +void copy_strings_to_sav1(void); + +#endif // GUARD_UNION_ROOM_CHAT_H \ No newline at end of file diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bf53ed6ee..5bcab1249 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -45,5 +45,6 @@ bool8 UpdateRepelCounter(void); void sub_8082740(u8); u8 GetUnownLetterByPersonalityLoByte(u32 personality); bool8 SweetScentWildEncounter(void); +void sub_8083214(u16 randVal); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index a65474cd5..7dbe59085 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -87,7 +87,7 @@ SECTIONS { src/load_save.o(.text); asm/trade.o(.text); src/play_time.o(.text); - asm/new_game.o(.text); + src/new_game.o(.text); asm/overworld.o(.text); src/fieldmap.o(.text); src/metatile_behavior.o(.text); diff --git a/src/berry_powder.c b/src/berry_powder.c index 9b3bbc17f..ad824b24b 100644 --- a/src/berry_powder.c +++ b/src/berry_powder.c @@ -16,7 +16,7 @@ u32 sub_815EE3C(u32 * a0) return *a0 ^ gSaveBlock2Ptr->encryptionKey; } -void sub_815EE54(u32 * a0, u32 a1) +void SetBerryPowder(u32 * a0, u32 a1) { *a0 = gSaveBlock2Ptr->encryptionKey ^ a1; } @@ -48,12 +48,12 @@ bool8 sub_815EEE0(u32 a0) u32 amount = sub_815EE3C(ptr) + a0; if (amount > 99999) { - sub_815EE54(ptr, 99999); + SetBerryPowder(ptr, 99999); return FALSE; } else { - sub_815EE54(ptr, amount); + SetBerryPowder(ptr, amount); return TRUE; } } @@ -66,7 +66,7 @@ bool8 sub_815EF20(u32 a0) else { u32 amount = sub_815EE3C(ptr); - sub_815EE54(ptr, amount - a0); + SetBerryPowder(ptr, amount - a0); return TRUE; } } @@ -79,7 +79,7 @@ bool8 sub_815EF5C(void) else { u32 amount = sub_815EE3C(ptr); - sub_815EE54(ptr, amount - gSpecialVar_0x8004); + SetBerryPowder(ptr, amount - gSpecialVar_0x8004); return TRUE; } } diff --git a/src/mevent.c b/src/mevent.c index d0d7f59aa..b03f1ffe9 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -769,7 +769,7 @@ void sub_81442CC(struct MEventStruct_Unk1442CC * data) data->unk_14 = 0; for (i = 0; i < 4; i++) data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i]; - CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); + CopyTrainerId(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); StringCopy(data->unk_45, gSaveBlock2Ptr->playerName); for (i = 0; i < 6; i++) data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i]; diff --git a/src/new_game.c b/src/new_game.c new file mode 100644 index 000000000..d3463f80b --- /dev/null +++ b/src/new_game.c @@ -0,0 +1,168 @@ +#include "global.h" +#include "new_game.h" +#include "random.h" +#include "main.h" +#include "overworld.h" +#include "constants/maps.h" +#include "load_save.h" +#include "item_menu.h" +#include "tm_case.h" +#include "berry_pouch.h" +#include "quest_log.h" +#include "wild_encounter.h" +#include "event_data.h" +#include "string_util.h" +#include "mail_data.h" +#include "play_time.h" +#include "money.h" +#include "battle_records.h" +#include "pokemon_size_record.h" +#include "pokemon_storage_system.h" +#include "roamer.h" +#include "item.h" +#include "player_pc.h" +#include "berry.h" +#include "easy_chat.h" +#include "union_room_chat.h" +#include "mevent.h" +#include "trainer_tower.h" +#include "script.h" +#include "berry_powder.h" +#include "pokemon_jump.h" + +extern const u8 EventScript_ResetAllMapFlags[]; + +// this file's functions +void ResetMiniGamesResults(void); + +// EWRAM vars +EWRAM_DATA bool8 gDifferentSaveFile = FALSE; + +void SetTrainerId(u32 trainerId, u8 *dst) +{ + dst[0] = trainerId; + dst[1] = trainerId >> 8; + dst[2] = trainerId >> 16; + dst[3] = trainerId >> 24; +} + +void CopyTrainerId(u8 *dst, u8 *src) +{ + s32 i; + for (i = 0; i < 4; i++) + dst[i] = src[i]; +} + +/*static*/ void InitPlayerTrainerId(void) +{ + u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); + SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); +} + +/*static*/ void SetDefaultOptions(void) +{ + gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID; + gSaveBlock2Ptr->optionsWindowFrameType = 0; + gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO; + gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; + gSaveBlock2Ptr->optionsBattleSceneOff = FALSE; + gSaveBlock2Ptr->regionMapZoom = FALSE; + gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_NORMAL; +} + +/*static*/ void ClearPokedexFlags(void) +{ + memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned)); + memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen)); +} + +/*static*/ void sub_80549D4(void) +{ + CpuFill32(0, &gSaveBlock2Ptr->field_B0, (u32) &gSaveBlock2Ptr->mapView - (u32) &gSaveBlock2Ptr->field_B0); +} + +/*static*/ void WarpToPlayersRoom(void) +{ + SetWarpDestination(MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F), -1, 6, 6); + WarpIntoMap(); +} + +void Sav2_ClearSetDefault(void) +{ + ClearSav2(); + SetDefaultOptions(); +} + +void ResetMenuAndMonGlobals(void) +{ + gDifferentSaveFile = 0; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + sub_81089BC(); + ResetTMCaseCursorPos(); + BerryPouch_CursorResetToTop(); + sub_811089C(); + sub_8083214(Random()); + sub_806E6FC(); +} + +void NewGameInitData(void) +{ + u8 rivalName[PLAYER_NAME_LENGTH]; + StringCopy(rivalName, gSaveBlock1Ptr->rivalName); + gDifferentSaveFile = 1; + gSaveBlock2Ptr->encryptionKey = 0; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + sub_80549D4(); + ClearSav1(); + ClearMailData(); + gSaveBlock2Ptr->specialSaveWarpFlags = 0; + gSaveBlock2Ptr->field_A8 = 0; + gSaveBlock2Ptr->field_AC = 1; + gSaveBlock2Ptr->field_AD = 0; + InitPlayerTrainerId(); + PlayTimeCounter_Reset(); + ClearPokedexFlags(); + sub_806E0D0(); + ResetFameChecker(); + SetMoney(&gSaveBlock1Ptr->money, 3000); + sub_8054E68(); + InitLinkBattleRecords(); + sub_80A0904(); + sub_80A0958(); + sub_806E190(); + gPlayerPartyCount = 0; + ZeroPlayerPartyMons(); + sub_808C7E0(); + ClearRoamerData(); + gSaveBlock1Ptr->registeredItem = 0; + ClearItemSlotsInAllBagPockets(); + sub_80EB658(); + sub_809C794(); + sub_80BDD34(); + sub_8113044(); + copy_strings_to_sav1(); + ResetMiniGamesResults(); + sub_8143D24(); + sub_815D838(); + WarpToPlayersRoom(); + ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); + StringCopy(gSaveBlock1Ptr->rivalName, rivalName); + sub_815EE0C(); +} + +/*static*/ void ResetMiniGamesResults(void) +{ + CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush)); + SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0); + ResetPokeJumpResults(); + CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults)); +} + + + + + + + \ No newline at end of file diff --git a/src/scrcmd.c b/src/scrcmd.c index bcf8c231d..85059691f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -733,7 +733,7 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -747,7 +747,7 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoDiveWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -761,7 +761,7 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoDoorWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -778,7 +778,7 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) if (mapGroup == 0xFF && mapNum == 0xFF) SetWarpDestinationToFixedHoleWarp(x - 7, y - 7); else - Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); + SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); DoFallWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -792,7 +792,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_807E59C(); ResetInitialPlayerAvatarState(); return TRUE; @@ -806,7 +806,7 @@ bool8 ScrCmd_warpteleport2(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_805DAE4(GetPlayerFacingDirection()); sub_807E500(); ResetInitialPlayerAvatarState(); @@ -821,7 +821,7 @@ bool8 ScrCmd_setwarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); return FALSE; } diff --git a/src/seagallop.c b/src/seagallop.c index e3333ef32..5374f7bac 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -319,7 +319,7 @@ static void Task_SeaGallop_3(void) gSpecialVar_0x8006 = 0; warpInfo = sSeaGallopSpawnTable[gSpecialVar_0x8006]; - Overworld_SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); + SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = sub_807DF64; diff --git a/sym_ewram.txt b/sym_ewram.txt index 194f7fe5d..109f4d89a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -485,7 +485,7 @@ gUnknown_2031DA8: @ 2031DA8 gUnknown_2031DAC: @ 2031DAC .space 0x4 -gUnknown_2031DB0: @ 2031DB0 +gDifferentSaveFile: @ 2031DB0 .space 0x4 gUnknown_2031DB4: @ 2031DB4 From d4ba74fb34c78a6f80e5e51ac3ccc295191e7128 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 09:13:15 -0700 Subject: [PATCH 087/100] Fix formatting. --- include/battle_records.h | 2 +- include/global.h | 8 ++-- include/new_game.h | 3 -- include/union_room_chat.h | 2 +- src/new_game.c | 99 +++++++++++++++++++-------------------- 5 files changed, 53 insertions(+), 61 deletions(-) diff --git a/include/battle_records.h b/include/battle_records.h index 55e969b50..5ddb11472 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -10,4 +10,4 @@ void ShowLinkBattleRecords(void); void RemoveRecordsWindow(void); void ShowTrainerHillRecords(void); -#endif // GUARD_BATTLE_RECORDS_H \ No newline at end of file +#endif // GUARD_BATTLE_RECORDS_H diff --git a/include/global.h b/include/global.h index 2af9bbc94..c206cf5f1 100644 --- a/include/global.h +++ b/include/global.h @@ -230,8 +230,8 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ u8 field_B0; - /*0x0B1*/ u8 filler_B1[0x3EF]; + /*0x0B0*/ u8 field_B0; + /*0x0B1*/ u8 filler_B1[0x3EF]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; /*0x574*/ u8 filler_574[0x324]; @@ -239,8 +239,8 @@ struct SaveBlock2 /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; /*0xB00*/ struct PokemonJumpResults pokeJump; - /*0xB10*/ struct BerryPickingResults berryPick; - /*0xB20*/ u8 filler_B20[0x400]; + /*0xB10*/ struct BerryPickingResults berryPick; + /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; }; diff --git a/include/new_game.h b/include/new_game.h index 346e7aff3..eedaea724 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -2,12 +2,9 @@ #define GUARD_NEW_GAME_H void SetTrainerId(u32 trainerId, u8 *dst); -u32 ReadUnalignedWord(u8* dataPtr); void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); void ResetMenuAndMonGlobals(void); void Sav2_ClearSetDefault(void); -void ResetMiniGamesResults(void); -void sub_808447C(void); #endif // GUARD_NEW_GAME_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 027a2e20c..17e482525 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -4,4 +4,4 @@ void sub_801DD98(void); void copy_strings_to_sav1(void); -#endif // GUARD_UNION_ROOM_CHAT_H \ No newline at end of file +#endif // GUARD_UNION_ROOM_CHAT_H diff --git a/src/new_game.c b/src/new_game.c index d3463f80b..72780c810 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -33,7 +33,7 @@ extern const u8 EventScript_ResetAllMapFlags[]; // this file's functions -void ResetMiniGamesResults(void); +static void ResetMiniGamesResults(void); // EWRAM vars EWRAM_DATA bool8 gDifferentSaveFile = FALSE; @@ -53,13 +53,13 @@ void CopyTrainerId(u8 *dst, u8 *src) dst[i] = src[i]; } -/*static*/ void InitPlayerTrainerId(void) +static void InitPlayerTrainerId(void) { u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); } -/*static*/ void SetDefaultOptions(void) +static void SetDefaultOptions(void) { gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID; gSaveBlock2Ptr->optionsWindowFrameType = 0; @@ -67,21 +67,21 @@ void CopyTrainerId(u8 *dst, u8 *src) gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; gSaveBlock2Ptr->optionsBattleSceneOff = FALSE; gSaveBlock2Ptr->regionMapZoom = FALSE; - gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_NORMAL; + gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_NORMAL; } -/*static*/ void ClearPokedexFlags(void) +static void ClearPokedexFlags(void) { memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned)); memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen)); } -/*static*/ void sub_80549D4(void) +static void sub_80549D4(void) { CpuFill32(0, &gSaveBlock2Ptr->field_B0, (u32) &gSaveBlock2Ptr->mapView - (u32) &gSaveBlock2Ptr->field_B0); } -/*static*/ void WarpToPlayersRoom(void) +static void WarpToPlayersRoom(void) { SetWarpDestination(MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F), -1, 6, 6); WarpIntoMap(); @@ -96,73 +96,68 @@ void Sav2_ClearSetDefault(void) void ResetMenuAndMonGlobals(void) { gDifferentSaveFile = 0; - ZeroPlayerPartyMons(); + ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - sub_81089BC(); + sub_81089BC(); ResetTMCaseCursorPos(); BerryPouch_CursorResetToTop(); sub_811089C(); sub_8083214(Random()); - sub_806E6FC(); + sub_806E6FC(); } void NewGameInitData(void) { - u8 rivalName[PLAYER_NAME_LENGTH]; - StringCopy(rivalName, gSaveBlock1Ptr->rivalName); - gDifferentSaveFile = 1; - gSaveBlock2Ptr->encryptionKey = 0; - ZeroPlayerPartyMons(); + u8 rivalName[PLAYER_NAME_LENGTH]; + + StringCopy(rivalName, gSaveBlock1Ptr->rivalName); + gDifferentSaveFile = 1; + gSaveBlock2Ptr->encryptionKey = 0; + ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); sub_80549D4(); ClearSav1(); ClearMailData(); - gSaveBlock2Ptr->specialSaveWarpFlags = 0; + gSaveBlock2Ptr->specialSaveWarpFlags = 0; gSaveBlock2Ptr->field_A8 = 0; - gSaveBlock2Ptr->field_AC = 1; - gSaveBlock2Ptr->field_AD = 0; - InitPlayerTrainerId(); + gSaveBlock2Ptr->field_AC = 1; + gSaveBlock2Ptr->field_AD = 0; + InitPlayerTrainerId(); PlayTimeCounter_Reset(); ClearPokedexFlags(); - sub_806E0D0(); - ResetFameChecker(); - SetMoney(&gSaveBlock1Ptr->money, 3000); - sub_8054E68(); - InitLinkBattleRecords(); - sub_80A0904(); - sub_80A0958(); - sub_806E190(); - gPlayerPartyCount = 0; + sub_806E0D0(); + ResetFameChecker(); + SetMoney(&gSaveBlock1Ptr->money, 3000); + sub_8054E68(); + InitLinkBattleRecords(); + sub_80A0904(); + sub_80A0958(); + sub_806E190(); + gPlayerPartyCount = 0; ZeroPlayerPartyMons(); - sub_808C7E0(); - ClearRoamerData(); - gSaveBlock1Ptr->registeredItem = 0; - ClearItemSlotsInAllBagPockets(); - sub_80EB658(); - sub_809C794(); - sub_80BDD34(); - sub_8113044(); - copy_strings_to_sav1(); - ResetMiniGamesResults(); - sub_8143D24(); - sub_815D838(); - WarpToPlayersRoom(); - ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); - StringCopy(gSaveBlock1Ptr->rivalName, rivalName); - sub_815EE0C(); + sub_808C7E0(); + ClearRoamerData(); + gSaveBlock1Ptr->registeredItem = 0; + ClearItemSlotsInAllBagPockets(); + sub_80EB658(); + sub_809C794(); + sub_80BDD34(); + sub_8113044(); + copy_strings_to_sav1(); + ResetMiniGamesResults(); + sub_8143D24(); + sub_815D838(); + WarpToPlayersRoom(); + ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); + StringCopy(gSaveBlock1Ptr->rivalName, rivalName); + sub_815EE0C(); } -/*static*/ void ResetMiniGamesResults(void) +static void ResetMiniGamesResults(void) { CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush)); SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0); ResetPokeJumpResults(); CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults)); } - - - - - - - \ No newline at end of file + \ No newline at end of file From 0873084a5d143c4e7eab682f7d27a3255ed281b7 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 13:06:13 -0700 Subject: [PATCH 088/100] Sync some function names with pokeemerald. --- asm/easy_chat.s | 6 +++--- asm/event_data.s | 6 +++--- asm/overworld.s | 6 +++--- asm/player_pc.s | 6 +++--- asm/pokemon_storage_system.s | 6 +++--- include/battle_records.h | 1 - include/easy_chat.h | 2 +- include/event_data.h | 1 - include/item.h | 2 +- include/overworld.h | 2 +- include/player_pc.h | 2 +- include/pokemon_storage_system.h | 2 +- include/trainer_tower.h | 2 +- src/battle_records.c | 12 ++++++------ src/item.c | 2 +- src/new_game.c | 16 ++++++++-------- src/quest_log.c | 2 +- src/trainer_tower.c | 2 +- 18 files changed, 38 insertions(+), 40 deletions(-) diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 604929f1f..ffd31bcc8 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -868,8 +868,8 @@ _080BDD2C: .4byte gUnknown_83ECED4 _080BDD30: .4byte 0x0000ffff thumb_func_end sub_80BDCB8 - thumb_func_start sub_80BDD34 -sub_80BDD34: @ 80BDD34 + thumb_func_start InitEasyChatPhrases +InitEasyChatPhrases: @ 80BDD34 push {r4-r7,lr} movs r4, 0 ldr r5, _080BDE00 @ =gSaveBlock1Ptr @@ -988,7 +988,7 @@ _080BDE18: .4byte 0x0000ffff _080BDE1C: .4byte 0x00002cc4 _080BDE20: .4byte 0x00002cd0 _080BDE24: .4byte 0x00002f10 - thumb_func_end sub_80BDD34 + thumb_func_end InitEasyChatPhrases thumb_func_start sub_80BDE28 sub_80BDE28: @ 80BDE28 diff --git a/asm/event_data.s b/asm/event_data.s index 690134c27..263bd99c3 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_806E0D0 -sub_806E0D0: @ 806E0D0 + thumb_func_start InitEventData +InitEventData: @ 806E0D0 push {r4,lr} ldr r4, _0806E108 @ =gSaveBlock1Ptr ldr r0, [r4] @@ -35,7 +35,7 @@ sub_806E0D0: @ 806E0D0 .align 2, 0 _0806E108: .4byte gSaveBlock1Ptr _0806E10C: .4byte gUnknown_20370E0 - thumb_func_end sub_806E0D0 + thumb_func_end InitEventData thumb_func_start sub_806E110 sub_806E110: @ 806E110 diff --git a/asm/overworld.s b/asm/overworld.s index a443a0d10..1bf22ede1 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -289,8 +289,8 @@ sub_8054E40: @ 8054E40 _08054E64: .4byte 0x0000406e thumb_func_end sub_8054E40 - thumb_func_start sub_8054E68 -sub_8054E68: @ 8054E68 + thumb_func_start ResetGameStats +ResetGameStats: @ 8054E68 push {r4,r5,lr} movs r2, 0 ldr r5, _08054E8C @ =gSaveBlock1Ptr @@ -311,7 +311,7 @@ _08054E74: bx r0 .align 2, 0 _08054E8C: .4byte gSaveBlock1Ptr - thumb_func_end sub_8054E68 + thumb_func_end ResetGameStats thumb_func_start IncrementGameStat IncrementGameStat: @ 8054E90 diff --git a/asm/player_pc.s b/asm/player_pc.s index ca08fe3b2..fa528abb9 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80EB658 -sub_80EB658: @ 80EB658 + thumb_func_start NewGameInitPCItems +NewGameInitPCItems: @ 80EB658 push {r4-r6,lr} movs r4, 0 bl ClearPCItemSlots @@ -48,7 +48,7 @@ _080EB6A0: bx r0 .align 2, 0 _080EB6A8: .4byte gUnknown_8402220 - thumb_func_end sub_80EB658 + thumb_func_end NewGameInitPCItems thumb_func_start sub_80EB6AC sub_80EB6AC: @ 80EB6AC diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 47097a060..180ec0e5d 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1897,8 +1897,8 @@ _0808C7D8: .4byte mapldr_0808C6D8 _0808C7DC: .4byte CB2_ReturnToField thumb_func_end sub_808C7B4 - thumb_func_start sub_808C7E0 -sub_808C7E0: @ 808C7E0 + thumb_func_start ResetPokemonStorageSystem +ResetPokemonStorageSystem: @ 808C7E0 push {r4-r6,lr} movs r0, 0 bl sub_808BA00 @@ -1954,7 +1954,7 @@ _0808C832: bx r0 .align 2, 0 _0808C850: .4byte gUnknown_84186CD - thumb_func_end sub_808C7E0 + thumb_func_end ResetPokemonStorageSystem thumb_func_start sub_808C854 sub_808C854: @ 808C854 diff --git a/include/battle_records.h b/include/battle_records.h index 5ddb11472..88ff6adc9 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -4,7 +4,6 @@ extern u8 gRecordsWindowId; void ClearPlayerLinkBattleRecords(void); -void InitLinkBattleRecords(void); void UpdatePlayerLinkBattleRecords(s32 battlerId); void ShowLinkBattleRecords(void); void RemoveRecordsWindow(void); diff --git a/include/easy_chat.h b/include/easy_chat.h index e6a48fccc..a487c9456 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -38,7 +38,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); void sub_80BDE28(void); -void sub_80BDD34(void); +void InitEasyChatPhrases(void); void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index c461c1d55..5f455467d 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -37,7 +37,6 @@ void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); bool32 sub_806E25C(void); -void sub_806E0D0(void); void sub_806E190(void); extern u16 gSpecialVar_0x8000; diff --git a/include/item.h b/include/item.h index 583a47cdc..6e0af31bb 100644 --- a/include/item.h +++ b/include/item.h @@ -62,7 +62,7 @@ u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); -void ClearItemSlotsInAllBagPockets(void); +void ClearBag(void); void ClearPCItemSlots(void); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); diff --git a/include/overworld.h b/include/overworld.h index 52f292357..f2ef24e9e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -137,7 +137,7 @@ u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); void sub_8055F88(void); void sub_8056788(void); -void sub_8054E68(void); +void ResetGameStats(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/player_pc.h b/include/player_pc.h index ff1c33d1a..06ab0cb0f 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -21,6 +21,6 @@ struct PlayerPC_Unk_203AAC4 // Exported ROM declarations void sub_816B060(u8 taskId); -void sub_80EB658(void); +void NewGameInitPCItems(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index e6d7c5018..6790fb775 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,7 +14,7 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); -void sub_808C7E0(void); +void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/trainer_tower.h b/include/trainer_tower.h index d7fde9362..82a3e6cdc 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -6,6 +6,6 @@ void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); void sub_815D838(void); -void sub_815EE0C(void); +void ResetTrainerTowerResults(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/src/battle_records.c b/src/battle_records.c index 3c2032641..38889ca67 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -279,7 +279,7 @@ static void ResetBGPos(void) ChangeBgY(3, 0, 0); } -static void InitLinkBattleRecord(struct LinkBattleRecord * record) +static void ClearLinkBattleRecord(struct LinkBattleRecord *record) { CpuFill16(0, record, sizeof(*record)); record->name[0] = EOS; @@ -289,12 +289,12 @@ static void InitLinkBattleRecord(struct LinkBattleRecord * record) record->draws = 0; } -static void InitLinkBattleRecords_(struct LinkBattleRecords * records) +static void ClearLinkBattleRecords(struct LinkBattleRecords *records) { s32 i; for (i = 0; i < LINK_B_RECORDS_COUNT; i++) - InitLinkBattleRecord(&records->entries[i]); + ClearLinkBattleRecord(&records->entries[i]); SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); @@ -404,7 +404,7 @@ static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, cons { i = LINK_B_RECORDS_COUNT - 1; record = &records->entries[LINK_B_RECORDS_COUNT - 1]; - InitLinkBattleRecord(record); + ClearLinkBattleRecord(record); StringCopyN(record->name, namebuf, OT_NAME_LENGTH); record->trainerId = trainerId; } @@ -412,9 +412,9 @@ static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, cons SortLinkBattleRecords(records); } -void InitLinkBattleRecords(void) +void ClearPlayerLinkBattleRecords(void) { - InitLinkBattleRecords_(&gSaveBlock2Ptr->linkBattleRecords); + ClearLinkBattleRecords(&gSaveBlock2Ptr->linkBattleRecords); } static void IncTrainerCardWinCount(s32 battlerId) diff --git a/src/item.c b/src/item.c index 3f33f464d..42dfd334e 100644 --- a/src/item.c +++ b/src/item.c @@ -326,7 +326,7 @@ void ClearPCItemSlots(void) } } -void ClearItemSlotsInAllBagPockets(void) +void ClearBag(void) { u16 i; diff --git a/src/new_game.c b/src/new_game.c index 72780c810..3b10d7ddd 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -125,23 +125,23 @@ void NewGameInitData(void) InitPlayerTrainerId(); PlayTimeCounter_Reset(); ClearPokedexFlags(); - sub_806E0D0(); + InitEventData(); ResetFameChecker(); SetMoney(&gSaveBlock1Ptr->money, 3000); - sub_8054E68(); - InitLinkBattleRecords(); + ResetGameStats(); + ClearPlayerLinkBattleRecords(); sub_80A0904(); sub_80A0958(); sub_806E190(); gPlayerPartyCount = 0; ZeroPlayerPartyMons(); - sub_808C7E0(); + ResetPokemonStorageSystem(); ClearRoamerData(); gSaveBlock1Ptr->registeredItem = 0; - ClearItemSlotsInAllBagPockets(); - sub_80EB658(); + ClearBag(); + NewGameInitPCItems(); sub_809C794(); - sub_80BDD34(); + InitEasyChatPhrases(); sub_8113044(); copy_strings_to_sav1(); ResetMiniGamesResults(); @@ -150,7 +150,7 @@ void NewGameInitData(void) WarpToPlayersRoom(); ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); StringCopy(gSaveBlock1Ptr->rivalName, rivalName); - sub_815EE0C(); + ResetTrainerTowerResults(); } static void ResetMiniGamesResults(void) diff --git a/src/quest_log.c b/src/quest_log.c index 8b9ee9395..065b42cef 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -986,7 +986,7 @@ void sub_8111368(void) { gUnknown_203ADFA = 2; sub_806E6FC(); - ClearItemSlotsInAllBagPockets(); + ClearBag(); ClearPCItemSlots(); if (sub_8110AC8() == 1) { diff --git a/src/trainer_tower.c b/src/trainer_tower.c index da3cf6dda..17f6b9e09 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1458,7 +1458,7 @@ void sub_815EDF4(u32 * counter, u32 value) *counter = value ^ gSaveBlock2Ptr->encryptionKey; } -void sub_815EE0C(void) +void ResetTrainerTowerResults(void) { s32 i; From 52d40061ecdb2b47da10083c0359e06df5470eb1 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 14:47:08 -0700 Subject: [PATCH 089/100] Resolve review suggestions. --- include/battle_records.h | 6 ------ include/event_scripts.h | 3 +++ include/global.h | 14 +++++++++----- include/new_game.h | 2 ++ src/berry_powder.c | 14 +++++++------- src/mevent.c | 2 +- src/mevent_server.c | 2 +- src/mystery_event_script.c | 2 +- src/new_game.c | 10 ++++------ sym_ewram.txt | 5 +++-- 10 files changed, 31 insertions(+), 29 deletions(-) diff --git a/include/battle_records.h b/include/battle_records.h index 88ff6adc9..97f28a3b0 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -1,12 +1,6 @@ #ifndef GUARD_BATTLE_RECORDS_H #define GUARD_BATTLE_RECORDS_H -extern u8 gRecordsWindowId; - void ClearPlayerLinkBattleRecords(void); -void UpdatePlayerLinkBattleRecords(s32 battlerId); -void ShowLinkBattleRecords(void); -void RemoveRecordsWindow(void); -void ShowTrainerHillRecords(void); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 310335196..41a7a7bf2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1155,4 +1155,7 @@ extern const u8 EventScript_SafariOutOfBalls[]; extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; +// new_game +extern const u8 EventScript_ResetAllMapFlags[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/global.h b/include/global.h index c206cf5f1..98dd8ab2c 100644 --- a/include/global.h +++ b/include/global.h @@ -205,6 +205,14 @@ struct UnkSaveBlock2Substruct_55C /* 0x016:0x572 */ u8 unk_16; }; // size: 0x018 +struct UnkSaveBlock2Substruct_B0 +{ + /* 0x000:0x0B0 */ u8 field_0[0x3F0]; + /* 0x3F0:0x4A0 */ u32 field_3F0[0x2F]; + /* 0x4AC:0x55C */ struct UnkSaveBlock2Substruct_55C field_4AC; + /* 0x4C4:0x574 */ u8 field_4C4[0x324]; +}; // size: 0x7E8 + struct SaveBlock2 { /*0x000*/ u8 playerName[PLAYER_NAME_LENGTH]; @@ -230,11 +238,7 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ u8 field_B0; - /*0x0B1*/ u8 filler_B1[0x3EF]; - /*0x4A0*/ u32 unk_4A0[0x2F]; - /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; - /*0x574*/ u8 filler_574[0x324]; + /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; diff --git a/include/new_game.h b/include/new_game.h index eedaea724..ed40546ba 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,6 +1,8 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H +#include "global.h" + void SetTrainerId(u32 trainerId, u8 *dst); void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); diff --git a/src/berry_powder.c b/src/berry_powder.c index ad824b24b..992e82522 100644 --- a/src/berry_powder.c +++ b/src/berry_powder.c @@ -11,7 +11,7 @@ EWRAM_DATA u8 gUnknown_203F464 = 0; -u32 sub_815EE3C(u32 * a0) +u32 DecryptBerryPowder(u32 * a0) { return *a0 ^ gSaveBlock2Ptr->encryptionKey; } @@ -28,7 +28,7 @@ void sub_815EE6C(u32 a0) bool8 sub_815EE88(u32 a0) { - if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0) + if (DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0) return FALSE; else return TRUE; @@ -36,7 +36,7 @@ bool8 sub_815EE88(u32 a0) bool8 sub_815EEB0(void) { - if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004) + if (DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004) return FALSE; else return TRUE; @@ -45,7 +45,7 @@ bool8 sub_815EEB0(void) bool8 sub_815EEE0(u32 a0) { u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount; - u32 amount = sub_815EE3C(ptr) + a0; + u32 amount = DecryptBerryPowder(ptr) + a0; if (amount > 99999) { SetBerryPowder(ptr, 99999); @@ -65,7 +65,7 @@ bool8 sub_815EF20(u32 a0) return FALSE; else { - u32 amount = sub_815EE3C(ptr); + u32 amount = DecryptBerryPowder(ptr); SetBerryPowder(ptr, amount - a0); return TRUE; } @@ -78,7 +78,7 @@ bool8 sub_815EF5C(void) return FALSE; else { - u32 amount = sub_815EE3C(ptr); + u32 amount = DecryptBerryPowder(ptr); SetBerryPowder(ptr, amount - gSpecialVar_0x8004); return TRUE; } @@ -86,7 +86,7 @@ bool8 sub_815EF5C(void) u32 GetBerryPowder(void) { - return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount); + return DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount); } void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed) diff --git a/src/mevent.c b/src/mevent.c index b03f1ffe9..78880c228 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -588,7 +588,7 @@ void DestroyWonderCard(void) ClearRamScript(); sub_806E2D0(); sub_806E370(); - sub_80E7524(gSaveBlock2Ptr->unk_4A0); + sub_80E7524(gSaveBlock2Ptr->unk_B0.field_3F0); } bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) diff --git a/src/mevent_server.c b/src/mevent_server.c index 1c2dc4ced..4e2b7280d 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -226,7 +226,7 @@ static u32 ish_mainseq_4(struct mevent_client * svr) sub_8069EA4(svr->recvBuffer, 1000); break; case 18: - memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc); + memcpy(gSaveBlock2Ptr->unk_B0.field_3F0, svr->recvBuffer, 0xbc); ValidateEReaderTrainer(); break; case 21: diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 70566ca58..89df1ee34 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -281,7 +281,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) { u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; - memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC); + memcpy(gSaveBlock2Ptr->unk_B0.field_3F0, (void *)data, 0xBC); ValidateEReaderTrainer(); StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer); ctx->data[2] = 2; diff --git a/src/new_game.c b/src/new_game.c index 3b10d7ddd..58deac9b9 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -29,8 +29,7 @@ #include "script.h" #include "berry_powder.h" #include "pokemon_jump.h" - -extern const u8 EventScript_ResetAllMapFlags[]; +#include "event_scripts.h" // this file's functions static void ResetMiniGamesResults(void); @@ -78,7 +77,7 @@ static void ClearPokedexFlags(void) static void sub_80549D4(void) { - CpuFill32(0, &gSaveBlock2Ptr->field_B0, (u32) &gSaveBlock2Ptr->mapView - (u32) &gSaveBlock2Ptr->field_B0); + CpuFill32(0, &gSaveBlock2Ptr->unk_B0, sizeof(gSaveBlock2Ptr->unk_B0)); } static void WarpToPlayersRoom(void) @@ -95,7 +94,7 @@ void Sav2_ClearSetDefault(void) void ResetMenuAndMonGlobals(void) { - gDifferentSaveFile = 0; + gDifferentSaveFile = FALSE; ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); sub_81089BC(); @@ -111,7 +110,7 @@ void NewGameInitData(void) u8 rivalName[PLAYER_NAME_LENGTH]; StringCopy(rivalName, gSaveBlock1Ptr->rivalName); - gDifferentSaveFile = 1; + gDifferentSaveFile = TRUE; gSaveBlock2Ptr->encryptionKey = 0; ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); @@ -160,4 +159,3 @@ static void ResetMiniGamesResults(void) ResetPokeJumpResults(); CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults)); } - \ No newline at end of file diff --git a/sym_ewram.txt b/sym_ewram.txt index 109f4d89a..8ef93ab54 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -485,9 +485,10 @@ gUnknown_2031DA8: @ 2031DA8 gUnknown_2031DAC: @ 2031DAC .space 0x4 -gDifferentSaveFile: @ 2031DB0 - .space 0x4 + .align 2 + .include "src/new_game.o" + .align 2 gUnknown_2031DB4: @ 2031DB4 .space 0x8 From 355c82e13e4b4957c27854142990670ba6e4bf0d Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 14:51:44 -0700 Subject: [PATCH 090/100] Remove trailing white space. --- include/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/global.h b/include/global.h index 98dd8ab2c..35f8de01b 100644 --- a/include/global.h +++ b/include/global.h @@ -238,7 +238,7 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; + /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; From 076971ee687e1956a1b01144634b3e3468e23cff Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 15:00:10 -0700 Subject: [PATCH 091/100] Resolve pokemon_jump changes. --- include/pokemon_jump.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 28b19f9b1..62d0e610f 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -3,12 +3,6 @@ #include "main.h" -void sub_802A9A8(u16 monId, MainCallback callback); -bool32 sub_802C908(u16 species); -void sub_802C920(void); void ResetPokeJumpResults(void); -void sub_802E3C4(void); -void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority); -bool32 sub_802EB84(void); #endif // GUARD_POKEMON_JUMP_H From 5620b0ed1a330e38c0d4cdbbfea2c5ce75053925 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 18:03:46 -0400 Subject: [PATCH 092/100] link through BuildSendCmd --- asm/cable_club.s | 4 +- asm/link.s | 1121 +++++++-------------------------------------- asm/link_rfu_2.s | 68 +-- asm/overworld.s | 22 +- asm/trade.s | 4 +- baserom.ips | Bin 2000346 -> 1992005 bytes data/data.s | 29 +- include/bg_regs.h | 6 + include/link.h | 18 +- include/main.h | 2 + ld_script.txt | 1 + src/link.c | 361 ++++++++++++++- src/mevent.c | 2 +- sym_common.txt | 45 +- 14 files changed, 608 insertions(+), 1075 deletions(-) create mode 100644 include/bg_regs.h diff --git a/asm/cable_club.s b/asm/cable_club.s index 4b93df7e4..03105bc3d 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -2460,7 +2460,7 @@ sub_8081A90: @ 8081A90 cmp r1, r0 ble _08081AC2 bl CloseLink - ldr r0, _08081ADC @ =c2_800ACD4 + ldr r0, _08081ADC @ =CB2_LinkError bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask @@ -2477,7 +2477,7 @@ _08081AD0: bx r0 .align 2, 0 _08081AD8: .4byte gTasks -_08081ADC: .4byte c2_800ACD4 +_08081ADC: .4byte CB2_LinkError _08081AE0: .4byte gReceivedRemoteLinkPlayers thumb_func_end sub_8081A90 diff --git a/asm/link.s b/asm/link.s index db9b022bd..14131af9e 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,789 +5,6 @@ .text - thumb_func_start LinkTestProcessKeyInput -LinkTestProcessKeyInput: @ 80099D0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r4, _08009A70 @ =gMain - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080099E6 - ldr r1, _08009A74 @ =gShouldAdvanceLinkState - movs r0, 0x1 - strb r0, [r1] -_080099E6: - ldrh r1, [r4, 0x2C] - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080099FA - ldr r0, _08009A78 @ =gHeap + 0x4000 - ldr r1, _08009A7C @ =0x00002004 - bl InitBlockSend -_080099FA: - ldrh r1, [r4, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08009A16 - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08009A16: - ldrh r1, [r4, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08009A26 - movs r0, 0x1 - bl SetSuppressLinkErrorMessage -_08009A26: - ldrh r1, [r4, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08009A38 - movs r0, 0x1 - bl TrySavingData -_08009A38: - ldrh r1, [r4, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08009A46 - bl sub_800AAC0 -_08009A46: - ldr r0, _08009A80 @ =gLinkTestDebugValuesEnabled - ldrb r0, [r0] - cmp r0, 0 - beq _08009A66 - ldr r2, [r4, 0x24] - ldr r0, _08009A84 @ =gLinkVSyncDisabled - ldrb r1, [r0] - ldr r0, _08009A88 @ =gLinkCallback - ldr r0, [r0] - cmp r0, 0 - bne _08009A60 - movs r0, 0x10 - orrs r1, r0 -_08009A60: - adds r0, r2, 0 - bl SetLinkDebugValues -_08009A66: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08009A70: .4byte gMain -_08009A74: .4byte gShouldAdvanceLinkState -_08009A78: .4byte gHeap + 0x4000 -_08009A7C: .4byte 0x00002004 -_08009A80: .4byte gLinkTestDebugValuesEnabled -_08009A84: .4byte gLinkVSyncDisabled -_08009A88: .4byte gLinkCallback - thumb_func_end LinkTestProcessKeyInput - - thumb_func_start CB2_LinkTest -CB2_LinkTest: @ 8009A8C - push {lr} - bl LinkTestProcessKeyInput - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl TestBlockTransfer - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end CB2_LinkTest - - thumb_func_start LinkMain2 -LinkMain2: @ 8009AB0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, _08009AC0 @ =gLinkOpen - ldrb r0, [r0] - cmp r0, 0 - bne _08009AC4 - movs r0, 0 - b _08009B0C - .align 2, 0 -_08009AC0: .4byte gLinkOpen -_08009AC4: - movs r1, 0 - ldr r5, _08009B14 @ =gUnknown_3003EC4 - ldr r3, _08009B18 @ =gSendCmd - movs r2, 0 -_08009ACC: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x7 - bls _08009ACC - ldrh r0, [r4] - strh r0, [r5] - ldr r0, _08009B1C @ =gUnknown_3003F20 - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08009B08 - ldr r0, _08009B20 @ =0x04000128 - ldr r0, [r0] - lsls r0, 26 - lsrs r0, 30 - bl sub_8009B70 - ldr r0, _08009B24 @ =gLinkCallback - ldr r0, [r0] - cmp r0, 0 - beq _08009B04 - bl _call_via_r0 -_08009B04: - bl sub_800AC58 -_08009B08: - ldr r0, _08009B1C @ =gUnknown_3003F20 - ldrh r0, [r0] -_08009B0C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08009B14: .4byte gUnknown_3003EC4 -_08009B18: .4byte gSendCmd -_08009B1C: .4byte gUnknown_3003F20 -_08009B20: .4byte 0x04000128 -_08009B24: .4byte gLinkCallback - thumb_func_end LinkMain2 - - thumb_func_start HandleReceiveRemoteLinkPlayer -HandleReceiveRemoteLinkPlayer: @ 8009B28 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - ldr r1, _08009B3C @ =gRemoteLinkPlayersNotReceived - adds r0, r1 - strb r5, [r0] - movs r4, 0 - adds r6, r1, 0 - b _08009B48 - .align 2, 0 -_08009B3C: .4byte gRemoteLinkPlayersNotReceived -_08009B40: - adds r0, r4, r6 - ldrb r0, [r0] - adds r5, r0 - adds r4, 0x1 -_08009B48: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _08009B40 - cmp r5, 0 - bne _08009B64 - ldr r1, _08009B6C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r1] - cmp r0, 0 - bne _08009B64 - movs r0, 0x1 - strb r0, [r1] -_08009B64: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08009B6C: .4byte gReceivedRemoteLinkPlayers - thumb_func_end HandleReceiveRemoteLinkPlayer - - thumb_func_start sub_8009B70 -sub_8009B70: @ 8009B70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0 -_08009B7E: - ldr r0, _08009BC8 @ =gUnknown_3003E60 - lsls r1, r6, 1 - adds r3, r1, r0 - movs r0, 0 - strh r0, [r3] - lsls r4, r6, 4 - ldr r5, _08009BCC @ =gRecvCmds - adds r2, r4, r5 - ldrh r0, [r2] - mov r12, r1 - adds r7, r6, 0x1 - str r7, [sp] - cmp r0, 0 - bne _08009B9C - b _08009E3E -_08009B9C: - ldrh r1, [r2] - ldr r0, _08009BD0 @ =0x00005fff - cmp r1, r0 - bne _08009BA6 - b _08009DF0 -_08009BA6: - cmp r1, r0 - bgt _08009BF4 - ldr r0, _08009BD4 @ =0x00004444 - cmp r1, r0 - bne _08009BB2 - b _08009E34 -_08009BB2: - cmp r1, r0 - bgt _08009BE0 - ldr r0, _08009BD8 @ =0x00002222 - cmp r1, r0 - beq _08009C38 - ldr r0, _08009BDC @ =0x00002ffe - cmp r1, r0 - bne _08009BC4 - b _08009DF8 -_08009BC4: - b _08009E3E - .align 2, 0 -_08009BC8: .4byte gUnknown_3003E60 -_08009BCC: .4byte gRecvCmds -_08009BD0: .4byte 0x00005fff -_08009BD4: .4byte 0x00004444 -_08009BD8: .4byte 0x00002222 -_08009BDC: .4byte 0x00002ffe -_08009BE0: - ldr r0, _08009BF0 @ =0x00005555 - cmp r1, r0 - beq _08009C88 - adds r0, 0x11 - cmp r1, r0 - beq _08009C88 - b _08009E3E - .align 2, 0 -_08009BF0: .4byte 0x00005555 -_08009BF4: - ldr r0, _08009C10 @ =0x0000bbbb - cmp r1, r0 - beq _08009C94 - cmp r1, r0 - bgt _08009C1C - ldr r0, _08009C14 @ =0x00008888 - cmp r1, r0 - beq _08009CC0 - ldr r0, _08009C18 @ =0x0000aaaa - cmp r1, r0 - bne _08009C0C - b _08009E08 -_08009C0C: - b _08009E3E - .align 2, 0 -_08009C10: .4byte 0x0000bbbb -_08009C14: .4byte 0x00008888 -_08009C18: .4byte 0x0000aaaa -_08009C1C: - ldr r0, _08009C30 @ =0x0000cafe - cmp r1, r0 - bne _08009C24 - b _08009E34 -_08009C24: - ldr r0, _08009C34 @ =0x0000cccc - cmp r1, r0 - bne _08009C2C - b _08009E0E -_08009C2C: - b _08009E3E - .align 2, 0 -_08009C30: .4byte 0x0000cafe -_08009C34: .4byte 0x0000cccc -_08009C38: - bl InitLocalLinkPlayer - ldr r0, _08009C7C @ =gUnknown_3003E70 - adds r2, r0, 0 - adds r2, 0x10 - ldr r1, _08009C80 @ =gLocalLinkPlayer - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldr r1, [r1] - str r1, [r2] - ldr r4, _08009C84 @ =gUnknown_82345C0 - adds r2, r0, 0 - adds r1, r4, 0 - ldm r1!, {r5-r7} - stm r2!, {r5-r7} - ldrh r3, [r1] - strh r3, [r2] - ldrb r1, [r1, 0x2] - strb r1, [r2, 0x2] - adds r1, r0, 0 - adds r1, 0x2C - ldm r4!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldrh r2, [r4] - strh r2, [r1] - ldrb r2, [r4, 0x2] - strb r2, [r1, 0x2] - movs r1, 0x3C - bl InitBlockSend - b _08009E3E - .align 2, 0 -_08009C7C: .4byte gUnknown_3003E70 -_08009C80: .4byte gLocalLinkPlayer -_08009C84: .4byte gUnknown_82345C0 -_08009C88: - ldr r1, _08009C90 @ =gUnknown_3003F28 - movs r0, 0x1 - strb r0, [r1] - b _08009E3E - .align 2, 0 -_08009C90: .4byte gUnknown_3003F28 -_08009C94: - mov r7, r12 - adds r1, r7, r6 - lsls r1, 2 - ldr r0, _08009CB8 @ =sBlockRecv - adds r1, r0 - movs r2, 0 - strh r2, [r1] - ldr r0, _08009CBC @ =gRecvCmds - adds r0, 0x2 - adds r0, r4, r0 - ldrh r0, [r0] - strh r0, [r1, 0x2] - ldr r0, _08009CBC @ =gRecvCmds - adds r0, 0x4 - adds r0, r4, r0 - ldrh r0, [r0] - strb r0, [r1, 0x9] - b _08009E3E - .align 2, 0 -_08009CB8: .4byte sBlockRecv -_08009CBC: .4byte gRecvCmds -_08009CC0: - mov r3, r12 - adds r0, r3, r6 - lsls r0, 2 - ldr r5, _08009D04 @ =sBlockRecv - adds r3, r0, r5 - ldrh r1, [r3, 0x2] - movs r0, 0x80 - lsls r0, 1 - adds r7, r5, 0 - mov r10, r7 - cmp r1, r0 - bls _08009D10 - ldr r0, _08009D08 @ =gDecompressionBuffer - mov r8, r0 - movs r2, 0 - adds r5, r3, 0 - ldr r7, _08009D0C @ =gRecvCmds - adds r3, r4, 0 -_08009CE4: - ldrh r1, [r5] - lsrs r1, 1 - adds r1, r2 - lsls r1, 1 - add r1, r8 - adds r2, 0x1 - lsls r0, r2, 1 - adds r0, r3 - adds r0, r7 - ldrh r0, [r0] - strh r0, [r1] - lsls r2, 16 - lsrs r2, 16 - cmp r2, 0x6 - bls _08009CE4 - b _08009D40 - .align 2, 0 -_08009D04: .4byte sBlockRecv -_08009D08: .4byte gDecompressionBuffer -_08009D0C: .4byte gRecvCmds -_08009D10: - movs r2, 0 - ldr r1, _08009DC4 @ =gBlockRecvBuffer - mov r9, r1 - adds r7, r3, 0 - ldr r3, _08009DC8 @ =gRecvCmds - mov r8, r3 - lsls r5, r6, 8 - adds r3, r4, 0 -_08009D20: - ldrh r1, [r7] - lsrs r1, 1 - adds r1, r2 - lsls r1, 1 - adds r1, r5 - add r1, r9 - adds r2, 0x1 - lsls r0, r2, 1 - adds r0, r3 - add r0, r8 - ldrh r0, [r0] - strh r0, [r1] - lsls r2, 16 - lsrs r2, 16 - cmp r2, 0x6 - bls _08009D20 -_08009D40: - mov r4, r12 - adds r1, r4, r6 - lsls r1, 2 - add r1, r10 - ldrh r0, [r1] - adds r0, 0xE - movs r3, 0 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1, 0x2] - cmp r0, r1 - bcc _08009E3E - ldr r0, _08009DCC @ =gRemoteLinkPlayersNotReceived - adds r0, r6, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08009DE6 - lsls r1, r6, 8 - ldr r0, _08009DC4 @ =gBlockRecvBuffer - adds r1, r0 - mov r8, r1 - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - ldr r1, _08009DD0 @ =gLinkPlayers - adds r2, r0, r1 - adds r1, r2, 0 - mov r0, r8 - adds r0, 0x10 - ldm r0!, {r4,r5,r7} - stm r1!, {r4,r5,r7} - ldm r0!, {r4,r5,r7} - stm r1!, {r4,r5,r7} - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r2] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _08009D9A - strb r3, [r2, 0x12] - strb r3, [r2, 0x11] - strb r3, [r2, 0x10] -_08009D9A: - adds r0, r2, 0 - bl sub_800B284 - ldr r5, _08009DD4 @ =gUnknown_82345C0 - mov r0, r8 - adds r1, r5, 0 - bl strcmp - cmp r0, 0 - bne _08009DBC - mov r0, r8 - adds r0, 0x2C - adds r1, r5, 0 - bl strcmp - cmp r0, 0 - beq _08009DDC -_08009DBC: - ldr r0, _08009DD8 @ =c2_800ACD4 - bl SetMainCallback2 - b _08009E3E - .align 2, 0 -_08009DC4: .4byte gBlockRecvBuffer -_08009DC8: .4byte gRecvCmds -_08009DCC: .4byte gRemoteLinkPlayersNotReceived -_08009DD0: .4byte gLinkPlayers -_08009DD4: .4byte gUnknown_82345C0 -_08009DD8: .4byte c2_800ACD4 -_08009DDC: - lsls r0, r6, 24 - lsrs r0, 24 - bl HandleReceiveRemoteLinkPlayer - b _08009E3E -_08009DE6: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_800A524 - b _08009E3E -_08009DF0: - ldr r0, _08009DF4 @ =gUnknown_3003F30 - b _08009DFA - .align 2, 0 -_08009DF4: .4byte gUnknown_3003F30 -_08009DF8: - ldr r0, _08009E04 @ =gUnknown_3003F2C -_08009DFA: - adds r0, r6, r0 - movs r1, 0x1 - strb r1, [r0] - b _08009E3E - .align 2, 0 -_08009E04: .4byte gUnknown_3003F2C -_08009E08: - bl sub_800A3CC - b _08009E3E -_08009E0E: - ldr r3, _08009E2C @ =gUnknown_8234598 - ldr r0, _08009E30 @ =gRecvCmds - adds r0, 0x2 - adds r0, r4, r0 - ldrh r2, [r0] - lsls r2, 3 - adds r0, r2, r3 - ldr r1, [r0] - adds r3, 0x4 - adds r2, r3 - ldrh r2, [r2] - movs r0, 0 - bl SendBlock - b _08009E3E - .align 2, 0 -_08009E2C: .4byte gUnknown_8234598 -_08009E30: .4byte gRecvCmds -_08009E34: - ldr r0, _08009E5C @ =gRecvCmds - adds r0, 0x2 - adds r0, r4, r0 - ldrh r0, [r0] - strh r0, [r3] -_08009E3E: - ldr r5, [sp] - lsls r0, r5, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bhi _08009E4A - b _08009B7E -_08009E4A: - 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 -_08009E5C: .4byte gRecvCmds - thumb_func_end sub_8009B70 - - thumb_func_start sub_8009E60 -sub_8009E60: @ 8009E60 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _08009E8C @ =0x00006666 - cmp r2, r0 - beq _08009F30 - cmp r2, r0 - bgt _08009EC0 - ldr r0, _08009E90 @ =0x00004444 - cmp r2, r0 - beq _08009F1C - cmp r2, r0 - bgt _08009E9C - ldr r0, _08009E94 @ =0x00002222 - cmp r2, r0 - beq _08009F08 - ldr r0, _08009E98 @ =0x00002ffe -_08009E82: - cmp r2, r0 - bne _08009E88 - b _08009FB4 -_08009E88: - b _08009FD6 - .align 2, 0 -_08009E8C: .4byte 0x00006666 -_08009E90: .4byte 0x00004444 -_08009E94: .4byte 0x00002222 -_08009E98: .4byte 0x00002ffe -_08009E9C: - ldr r0, _08009EAC @ =0x00005566 - cmp r2, r0 - bne _08009EA4 - b _08009FB4 -_08009EA4: - cmp r2, r0 - bgt _08009EB0 - subs r0, 0x11 - b _08009E82 - .align 2, 0 -_08009EAC: .4byte 0x00005566 -_08009EB0: - ldr r0, _08009EBC @ =0x00005fff - cmp r2, r0 - bne _08009EB8 - b _08009FA0 -_08009EB8: - b _08009FD6 - .align 2, 0 -_08009EBC: .4byte 0x00005fff -_08009EC0: - ldr r0, _08009ED4 @ =0x0000aaab - cmp r2, r0 - beq _08009F78 - cmp r2, r0 - bgt _08009EE0 - ldr r0, _08009ED8 @ =0x00007777 - cmp r2, r0 - beq _08009F3C - ldr r0, _08009EDC @ =0x0000aaaa - b _08009E82 - .align 2, 0 -_08009ED4: .4byte 0x0000aaab -_08009ED8: .4byte 0x00007777 -_08009EDC: .4byte 0x0000aaaa -_08009EE0: - ldr r0, _08009EF4 @ =0x0000cafe - cmp r2, r0 - beq _08009FC0 - cmp r2, r0 - bgt _08009EFC - ldr r0, _08009EF8 @ =0x0000bbbb - cmp r2, r0 - beq _08009F5C - b _08009FD6 - .align 2, 0 -_08009EF4: .4byte 0x0000cafe -_08009EF8: .4byte 0x0000bbbb -_08009EFC: - ldr r0, _08009F04 @ =0x0000cccc - cmp r2, r0 - beq _08009F8C - b _08009FD6 - .align 2, 0 -_08009F04: .4byte 0x0000cccc -_08009F08: - ldr r0, _08009F14 @ =gSendCmd - strh r2, [r0] - ldr r1, _08009F18 @ =gLinkType - ldrh r1, [r1] - b _08009FD4 - .align 2, 0 -_08009F14: .4byte gSendCmd -_08009F18: .4byte gLinkType -_08009F1C: - ldr r0, _08009F28 @ =gSendCmd - strh r2, [r0] - ldr r1, _08009F2C @ =gMain - ldrh r1, [r1, 0x2C] - b _08009FD4 - .align 2, 0 -_08009F28: .4byte gSendCmd -_08009F2C: .4byte gMain -_08009F30: - ldr r0, _08009F38 @ =gSendCmd - movs r1, 0 - b _08009FD2 - .align 2, 0 -_08009F38: .4byte gSendCmd -_08009F3C: - ldr r0, _08009F58 @ =gSendCmd - strh r2, [r0] - movs r1, 0 - adds r3, r0, 0 - movs r2, 0xEE -_08009F46: - adds r1, 0x1 - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x4 - bls _08009F46 - b _08009FD6 - .align 2, 0 -_08009F58: .4byte gSendCmd -_08009F5C: - ldr r1, _08009F70 @ =gSendCmd - strh r2, [r1] - ldr r2, _08009F74 @ =sBlockSend - ldrh r0, [r2, 0x2] - strh r0, [r1, 0x2] - ldrb r0, [r2, 0x9] - adds r0, 0x80 - strh r0, [r1, 0x4] - b _08009FD6 - .align 2, 0 -_08009F70: .4byte gSendCmd -_08009F74: .4byte sBlockSend -_08009F78: - ldr r0, _08009F84 @ =gSendCmd - strh r2, [r0] - ldr r1, _08009F88 @ =gSpecialVar_ItemId - ldrh r1, [r1] - b _08009FD4 - .align 2, 0 -_08009F84: .4byte gSendCmd -_08009F88: .4byte gSpecialVar_ItemId -_08009F8C: - ldr r0, _08009F98 @ =gSendCmd - strh r2, [r0] - ldr r1, _08009F9C @ =gUnknown_3003F90 - ldrb r1, [r1] - b _08009FD4 - .align 2, 0 -_08009F98: .4byte gSendCmd -_08009F9C: .4byte gUnknown_3003F90 -_08009FA0: - ldr r0, _08009FAC @ =gSendCmd - strh r2, [r0] - ldr r1, _08009FB0 @ =gUnknown_3003F34 - ldrh r1, [r1] - b _08009FD4 - .align 2, 0 -_08009FAC: .4byte gSendCmd -_08009FB0: .4byte gUnknown_3003F34 -_08009FB4: - ldr r0, _08009FBC @ =gSendCmd - strh r2, [r0] - b _08009FD6 - .align 2, 0 -_08009FBC: .4byte gSendCmd -_08009FC0: - ldr r0, _08009FDC @ =gUnknown_3005028 - ldrh r1, [r0] - cmp r1, 0 - beq _08009FD6 - ldr r0, _08009FE0 @ =gLinkTransferringData - ldrb r0, [r0] - cmp r0, 0 - bne _08009FD6 - ldr r0, _08009FE4 @ =gSendCmd -_08009FD2: - strh r2, [r0] -_08009FD4: - strh r1, [r0, 0x2] -_08009FD6: - pop {r0} - bx r0 - .align 2, 0 -_08009FDC: .4byte gUnknown_3005028 -_08009FE0: .4byte gLinkTransferringData -_08009FE4: .4byte gSendCmd - thumb_func_end sub_8009E60 - thumb_func_start sub_8009FE8 sub_8009FE8: @ 8009FE8 push {lr} @@ -845,7 +62,7 @@ sub_800A040: @ 800A040 cmp r0, 0x1 bne _0800A050 ldr r0, _0800A058 @ =0x0000cafe - bl sub_8009E60 + bl BuildSendCmd _0800A050: pop {r0} bx r0 @@ -892,7 +109,7 @@ GetLinkPlayerCount: @ 800A088 ldrb r0, [r0] cmp r0, 0 bne _0800A0A8 - ldr r0, _0800A0A4 @ =gUnknown_3003F20 + ldr r0, _0800A0A4 @ =gLinkStatus ldr r0, [r0] movs r1, 0x1C ands r0, r1 @@ -900,7 +117,7 @@ GetLinkPlayerCount: @ 800A088 b _0800A0B0 .align 2, 0 _0800A0A0: .4byte gWirelessCommType -_0800A0A4: .4byte gUnknown_3003F20 +_0800A0A4: .4byte gLinkStatus _0800A0A8: bl sub_80FA4EC lsls r0, 24 @@ -1217,7 +434,7 @@ _0800A2E8: str r5, [r4, 0x4] _0800A2EA: ldr r0, _0800A308 @ =0x0000bbbb - bl sub_8009E60 + bl BuildSendCmd ldr r1, _0800A30C @ =gLinkCallback ldr r0, _0800A310 @ =LinkCB_BlockSendBegin str r0, [r1] @@ -1324,7 +541,7 @@ sub_800A3AC: @ 800A3AC push {lr} bl GetMultiplayerId ldr r0, _0800A3C4 @ =0x00004444 - bl sub_8009E60 + bl BuildSendCmd ldr r1, _0800A3C8 @ =gUnknown_2022114 ldr r0, [r1] adds r0, 0x1 @@ -1364,7 +581,7 @@ _0800A3F0: .4byte gUnknown_2022114 sub_800A3F4: @ 800A3F4 push {lr} ldr r0, _0800A400 @ =0x0000aaaa - bl sub_8009E60 + bl BuildSendCmd pop {r0} bx r0 .align 2, 0 @@ -1464,16 +681,16 @@ _0800A494: .align 2, 0 _0800A4A0: .4byte gLinkCallback _0800A4A4: - ldr r0, _0800A4B4 @ =gUnknown_3003F90 + ldr r0, _0800A4B4 @ =gBlockRequestType strb r2, [r0] ldr r0, _0800A4B8 @ =0x0000cccc - bl sub_8009E60 + bl BuildSendCmd movs r0, 0x1 _0800A4B0: pop {r1} bx r1 .align 2, 0 -_0800A4B4: .4byte gUnknown_3003F90 +_0800A4B4: .4byte gBlockRequestType _0800A4B8: .4byte 0x0000cccc thumb_func_end sub_800A474 @@ -1513,7 +730,7 @@ GetBlockReceivedStatus: @ 800A4EC ldrb r0, [r0] cmp r0, 0x1 beq _0800A518 - ldr r2, _0800A514 @ =gUnknown_3003EBC + ldr r2, _0800A514 @ =gBlockReceivedStatus ldrb r0, [r2, 0x3] lsls r0, 3 ldrb r1, [r2, 0x2] @@ -1527,7 +744,7 @@ GetBlockReceivedStatus: @ 800A4EC b _0800A51C .align 2, 0 _0800A510: .4byte gWirelessCommType -_0800A514: .4byte gUnknown_3003EBC +_0800A514: .4byte gBlockReceivedStatus _0800A518: bl sub_80F9CC8 _0800A51C: @@ -1537,8 +754,8 @@ _0800A51C: bx r1 thumb_func_end GetBlockReceivedStatus - thumb_func_start sub_800A524 -sub_800A524: @ 800A524 + thumb_func_start SetBlockReceivedFlag +SetBlockReceivedFlag: @ 800A524 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -1552,7 +769,7 @@ sub_800A524: @ 800A524 .align 2, 0 _0800A53C: .4byte gWirelessCommType _0800A540: - ldr r0, _0800A54C @ =gUnknown_3003EBC + ldr r0, _0800A54C @ =gBlockReceivedStatus adds r0, r1, r0 movs r1, 0x1 strb r1, [r0] @@ -1560,8 +777,8 @@ _0800A548: pop {r0} bx r0 .align 2, 0 -_0800A54C: .4byte gUnknown_3003EBC - thumb_func_end sub_800A524 +_0800A54C: .4byte gBlockReceivedStatus + thumb_func_end SetBlockReceivedFlag thumb_func_start ResetBlockReceivedFlags ResetBlockReceivedFlags: @ 800A550 @@ -1582,7 +799,7 @@ _0800A55C: .align 2, 0 _0800A56C: .4byte gWirelessCommType _0800A570: - ldr r1, _0800A584 @ =gUnknown_3003EBC + ldr r1, _0800A584 @ =gBlockReceivedStatus movs r2, 0 adds r0, r1, 0x3 _0800A576: @@ -1595,7 +812,7 @@ _0800A57E: pop {r0} bx r0 .align 2, 0 -_0800A584: .4byte gUnknown_3003EBC +_0800A584: .4byte gBlockReceivedStatus thumb_func_end ResetBlockReceivedFlags thumb_func_start ResetBlockReceivedFlag @@ -1613,7 +830,7 @@ ResetBlockReceivedFlag: @ 800A588 .align 2, 0 _0800A5A0: .4byte gWirelessCommType _0800A5A4: - ldr r0, _0800A5B8 @ =gUnknown_3003EBC + ldr r0, _0800A5B8 @ =gBlockReceivedStatus adds r1, r0 ldrb r0, [r1] cmp r0, 0 @@ -1624,13 +841,13 @@ _0800A5B2: pop {r0} bx r0 .align 2, 0 -_0800A5B8: .4byte gUnknown_3003EBC +_0800A5B8: .4byte gBlockReceivedStatus thumb_func_end ResetBlockReceivedFlag thumb_func_start CheckShouldAdvanceLinkState CheckShouldAdvanceLinkState: @ 800A5BC push {lr} - ldr r0, _0800A5DC @ =gUnknown_3003F20 + ldr r0, _0800A5DC @ =gLinkStatus ldr r1, [r0] movs r0, 0x20 ands r0, r1 @@ -1647,7 +864,7 @@ _0800A5D8: pop {r0} bx r0 .align 2, 0 -_0800A5DC: .4byte gUnknown_3003F20 +_0800A5DC: .4byte gLinkStatus _0800A5E0: .4byte gShouldAdvanceLinkState thumb_func_end CheckShouldAdvanceLinkState @@ -1837,14 +1054,14 @@ _0800A718: thumb_func_start LinkCB_RequestPlayerDataExchange LinkCB_RequestPlayerDataExchange: @ 800A720 push {lr} - ldr r0, _0800A740 @ =gUnknown_3003F20 + ldr r0, _0800A740 @ =gLinkStatus ldr r0, [r0] movs r1, 0x20 ands r0, r1 cmp r0, 0 beq _0800A734 ldr r0, _0800A744 @ =0x00002222 - bl sub_8009E60 + bl BuildSendCmd _0800A734: ldr r1, _0800A748 @ =gLinkCallback movs r0, 0 @@ -1852,7 +1069,7 @@ _0800A734: pop {r0} bx r0 .align 2, 0 -_0800A740: .4byte gUnknown_3003F20 +_0800A740: .4byte gLinkStatus _0800A744: .4byte 0x00002222 _0800A748: .4byte gLinkCallback thumb_func_end LinkCB_RequestPlayerDataExchange @@ -1861,7 +1078,7 @@ _0800A748: .4byte gLinkCallback task00_link_test: @ 800A74C push {r4-r6,lr} sub sp, 0x20 - ldr r1, _0800A86C @ =gUnknown_82345D0 + ldr r1, _0800A86C @ =gASCIITestPrint mov r0, sp bl strcpy mov r0, sp @@ -1874,13 +1091,13 @@ task00_link_test: @ 800A74C movs r2, 0x1 movs r3, 0x2 bl LinkTest_prnthex - ldr r4, _0800A874 @ =gUnknown_3003F20 + ldr r4, _0800A874 @ =gLinkStatus ldr r0, [r4] movs r1, 0xF movs r2, 0x1 movs r3, 0x8 bl LinkTest_prnthex - ldr r0, _0800A878 @ =gUnknown_3003FB0 + ldr r0, _0800A878 @ =gLink ldrb r0, [r0, 0x1] movs r1, 0x2 movs r2, 0xA @@ -1901,13 +1118,13 @@ task00_link_test: @ 800A74C movs r2, 0xC movs r3, 0x2 bl LinkTest_prnthex - ldr r0, _0800A87C @ =gUnknown_3003FA0 + ldr r0, _0800A87C @ =gLastSendQueueCount ldrb r0, [r0] movs r1, 0x19 movs r2, 0x1 movs r3, 0x2 bl LinkTest_prnthex - ldr r0, _0800A880 @ =gUnknown_3004F70 + ldr r0, _0800A880 @ =gLastRecvQueueCount ldrb r0, [r0] movs r1, 0x19 movs r2, 0x2 @@ -1920,13 +1137,13 @@ task00_link_test: @ 800A74C movs r2, 0x5 movs r3, 0x2 bl LinkTest_prnthex - ldr r0, _0800A884 @ =gUnknown_3003E6C + ldr r0, _0800A884 @ =gLinkDebugSeed ldr r0, [r0] movs r1, 0x2 movs r2, 0xC movs r3, 0x8 bl LinkTest_prnthex - ldr r0, _0800A888 @ =gUnknown_3003EB0 + ldr r0, _0800A888 @ =gLinkDebugFlags ldr r0, [r0] movs r1, 0x2 movs r2, 0xD @@ -1982,27 +1199,27 @@ _0800A84A: pop {r0} bx r0 .align 2, 0 -_0800A86C: .4byte gUnknown_82345D0 +_0800A86C: .4byte gASCIITestPrint _0800A870: .4byte gShouldAdvanceLinkState -_0800A874: .4byte gUnknown_3003F20 -_0800A878: .4byte gUnknown_3003FB0 -_0800A87C: .4byte gUnknown_3003FA0 -_0800A880: .4byte gUnknown_3004F70 -_0800A884: .4byte gUnknown_3003E6C -_0800A888: .4byte gUnknown_3003EB0 +_0800A874: .4byte gLinkStatus +_0800A878: .4byte gLink +_0800A87C: .4byte gLastSendQueueCount +_0800A880: .4byte gLastRecvQueueCount +_0800A884: .4byte gLinkDebugSeed +_0800A888: .4byte gLinkDebugFlags _0800A88C: .4byte gLinkTestBlockChecksums thumb_func_end task00_link_test thumb_func_start SetLinkDebugValues SetLinkDebugValues: @ 800A890 - ldr r2, _0800A89C @ =gUnknown_3003E6C + ldr r2, _0800A89C @ =gLinkDebugSeed str r0, [r2] - ldr r0, _0800A8A0 @ =gUnknown_3003EB0 + ldr r0, _0800A8A0 @ =gLinkDebugFlags str r1, [r0] bx lr .align 2, 0 -_0800A89C: .4byte gUnknown_3003E6C -_0800A8A0: .4byte gUnknown_3003EB0 +_0800A89C: .4byte gLinkDebugSeed +_0800A8A0: .4byte gLinkDebugFlags thumb_func_end SetLinkDebugValues thumb_func_start sub_800A8A4 @@ -2010,7 +1227,7 @@ sub_800A8A4: @ 800A8A4 push {r4,lr} movs r1, 0 movs r2, 0 - ldr r0, _0800A8D0 @ =gUnknown_3003F40 + ldr r0, _0800A8D0 @ =gSavedLinkPlayerCount ldrb r0, [r0] cmp r1, r0 bge _0800A8C6 @@ -2031,7 +1248,7 @@ _0800A8C6: pop {r1} bx r1 .align 2, 0 -_0800A8D0: .4byte gUnknown_3003F40 +_0800A8D0: .4byte gSavedLinkPlayerCount thumb_func_end sub_800A8A4 thumb_func_start sub_800A8D4 @@ -2063,10 +1280,10 @@ _0800A8EA: thumb_func_start sub_800A900 sub_800A900: @ 800A900 push {r4-r7,lr} - ldr r1, _0800A934 @ =gUnknown_3003F40 + ldr r1, _0800A934 @ =gSavedLinkPlayerCount strb r0, [r1] bl GetMultiplayerId - ldr r1, _0800A938 @ =gUnknown_3003F60 + ldr r1, _0800A938 @ =gSavedMultiplayerId strb r0, [r1] ldr r4, _0800A93C @ =gLinkPlayers ldr r3, _0800A940 @ =gSavedLinkPlayers @@ -2089,35 +1306,35 @@ _0800A914: pop {r0} bx r0 .align 2, 0 -_0800A934: .4byte gUnknown_3003F40 -_0800A938: .4byte gUnknown_3003F60 +_0800A934: .4byte gSavedLinkPlayerCount +_0800A938: .4byte gSavedMultiplayerId _0800A93C: .4byte gLinkPlayers _0800A940: .4byte gSavedLinkPlayers thumb_func_end sub_800A900 thumb_func_start sub_800A944 sub_800A944: @ 800A944 - ldr r0, _0800A94C @ =gUnknown_3003F40 + ldr r0, _0800A94C @ =gSavedLinkPlayerCount ldrb r0, [r0] bx lr .align 2, 0 -_0800A94C: .4byte gUnknown_3003F40 +_0800A94C: .4byte gSavedLinkPlayerCount thumb_func_end sub_800A944 thumb_func_start sub_800A950 sub_800A950: @ 800A950 - ldr r0, _0800A958 @ =gUnknown_3003F60 + ldr r0, _0800A958 @ =gSavedMultiplayerId ldrb r0, [r0] bx lr .align 2, 0 -_0800A958: .4byte gUnknown_3003F60 +_0800A958: .4byte gSavedMultiplayerId thumb_func_end sub_800A950 thumb_func_start sub_800A95C sub_800A95C: @ 800A95C push {r4-r6,lr} movs r5, 0 - ldr r0, _0800A990 @ =gUnknown_3003F40 + ldr r0, _0800A990 @ =gSavedLinkPlayerCount ldrb r2, [r0] adds r6, r0, 0 cmp r5, r2 @@ -2145,7 +1362,7 @@ _0800A986: movs r0, 0 b _0800A99E .align 2, 0 -_0800A990: .4byte gUnknown_3003F40 +_0800A990: .4byte gSavedLinkPlayerCount _0800A994: .4byte gLinkPlayers _0800A998: .4byte gSavedLinkPlayers _0800A99C: @@ -2162,7 +1379,7 @@ sub_800A9A4: @ 800A9A4 mov r7, r8 push {r7} movs r4, 0 - ldr r0, _0800AA10 @ =gUnknown_3003F40 + ldr r0, _0800AA10 @ =gSavedLinkPlayerCount ldrb r0, [r0] cmp r4, r0 bcs _0800AA04 @@ -2196,13 +1413,13 @@ _0800A9E6: movs r0, 0x1 strb r0, [r1] bl CloseLink - ldr r0, _0800AA20 @ =c2_800ACD4 + ldr r0, _0800AA20 @ =CB2_LinkError bl SetMainCallback2 _0800A9F6: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _0800AA10 @ =gUnknown_3003F40 + ldr r0, _0800AA10 @ =gSavedLinkPlayerCount ldrb r0, [r0] cmp r4, r0 bcc _0800A9C2 @@ -2213,36 +1430,36 @@ _0800AA04: pop {r0} bx r0 .align 2, 0 -_0800AA10: .4byte gUnknown_3003F40 +_0800AA10: .4byte gSavedLinkPlayerCount _0800AA14: .4byte gSavedLinkPlayers _0800AA18: .4byte gLinkPlayers _0800AA1C: .4byte gLinkErrorOccurred -_0800AA20: .4byte c2_800ACD4 +_0800AA20: .4byte CB2_LinkError thumb_func_end sub_800A9A4 thumb_func_start sub_800AA24 sub_800AA24: @ 800AA24 - ldr r0, _0800AA30 @ =gUnknown_3003F40 + ldr r0, _0800AA30 @ =gSavedLinkPlayerCount movs r1, 0 strb r1, [r0] - ldr r0, _0800AA34 @ =gUnknown_3003F60 + ldr r0, _0800AA34 @ =gSavedMultiplayerId strb r1, [r0] bx lr .align 2, 0 -_0800AA30: .4byte gUnknown_3003F40 -_0800AA34: .4byte gUnknown_3003F60 +_0800AA30: .4byte gSavedLinkPlayerCount +_0800AA34: .4byte gSavedMultiplayerId thumb_func_end sub_800AA24 thumb_func_start GetLinkPlayerCount_2 GetLinkPlayerCount_2: @ 800AA38 - ldr r0, _0800AA44 @ =gUnknown_3003F20 + ldr r0, _0800AA44 @ =gLinkStatus ldr r0, [r0] movs r1, 0x1C ands r0, r1 lsrs r0, 2 bx lr .align 2, 0 -_0800AA44: .4byte gUnknown_3003F20 +_0800AA44: .4byte gLinkStatus thumb_func_end GetLinkPlayerCount_2 thumb_func_start IsLinkMaster @@ -2252,7 +1469,7 @@ IsLinkMaster: @ 800AA48 ldrb r0, [r0] cmp r0, 0 bne _0800AA68 - ldr r0, _0800AA64 @ =gUnknown_3003F20 + ldr r0, _0800AA64 @ =gLinkStatus ldr r0, [r0] lsrs r0, 5 movs r1, 0x1 @@ -2260,7 +1477,7 @@ IsLinkMaster: @ 800AA48 b _0800AA70 .align 2, 0 _0800AA60: .4byte gWirelessCommType -_0800AA64: .4byte gUnknown_3003F20 +_0800AA64: .4byte gLinkStatus _0800AA68: bl sub_80FBA2C lsls r0, 24 @@ -2356,12 +1573,12 @@ _0800AB08: .4byte gUnknown_3003F34 thumb_func_start sub_800AB0C sub_800AB0C: @ 800AB0C push {lr} - ldr r0, _0800AB28 @ =gUnknown_3004F70 + ldr r0, _0800AB28 @ =gLastRecvQueueCount ldrb r0, [r0] cmp r0, 0 bne _0800AB22 ldr r0, _0800AB2C @ =0x00005fff - bl sub_8009E60 + bl BuildSendCmd ldr r1, _0800AB30 @ =gLinkCallback ldr r0, _0800AB34 @ =sub_800AB38 str r0, [r1] @@ -2369,7 +1586,7 @@ _0800AB22: pop {r0} bx r0 .align 2, 0 -_0800AB28: .4byte gUnknown_3004F70 +_0800AB28: .4byte gLastRecvQueueCount _0800AB2C: .4byte 0x00005fff _0800AB30: .4byte gLinkCallback _0800AB34: .4byte sub_800AB38 @@ -2460,12 +1677,12 @@ _0800ABD0: .4byte gUnknown_3003F24 thumb_func_start sub_800ABD4 sub_800ABD4: @ 800ABD4 push {lr} - ldr r0, _0800ABF0 @ =gUnknown_3004F70 + ldr r0, _0800ABF0 @ =gLastRecvQueueCount ldrb r0, [r0] cmp r0, 0 bne _0800ABEA ldr r0, _0800ABF4 @ =0x00002ffe - bl sub_8009E60 + bl BuildSendCmd ldr r1, _0800ABF8 @ =gLinkCallback ldr r0, _0800ABFC @ =sub_800AC00 str r0, [r1] @@ -2473,7 +1690,7 @@ _0800ABEA: pop {r0} bx r0 .align 2, 0 -_0800ABF0: .4byte gUnknown_3004F70 +_0800ABF0: .4byte gLastRecvQueueCount _0800ABF4: .4byte 0x00002ffe _0800ABF8: .4byte gLinkCallback _0800ABFC: .4byte sub_800AC00 @@ -2528,14 +1745,14 @@ _0800AC50: .4byte gUnknown_3003F2C _0800AC54: .4byte gLinkCallback thumb_func_end sub_800AC00 - thumb_func_start sub_800AC58 -sub_800AC58: @ 800AC58 + thumb_func_start CheckErrorStatus +CheckErrorStatus: @ 800AC58 push {lr} ldr r0, _0800AC9C @ =gLinkOpen ldrb r0, [r0] cmp r0, 0 beq _0800AC98 - ldr r0, _0800ACA0 @ =gUnknown_3003F20 + ldr r0, _0800ACA0 @ =gLinkStatus ldr r2, [r0] movs r0, 0xFE lsls r0, 11 @@ -2548,13 +1765,13 @@ sub_800AC58: @ 800AC58 bne _0800AC8E ldr r1, _0800ACA8 @ =sLinkErrorBuffer str r2, [r1] - ldr r0, _0800ACAC @ =gUnknown_3004F70 + ldr r0, _0800ACAC @ =gLastRecvQueueCount ldrb r0, [r0] strb r0, [r1, 0x4] - ldr r0, _0800ACB0 @ =gUnknown_3003FA0 + ldr r0, _0800ACB0 @ =gLastSendQueueCount ldrb r0, [r0] strb r0, [r1, 0x5] - ldr r0, _0800ACB4 @ =c2_800ACD4 + ldr r0, _0800ACB4 @ =CB2_LinkError bl SetMainCallback2 _0800AC8E: ldr r1, _0800ACB8 @ =gLinkErrorOccurred @@ -2566,14 +1783,14 @@ _0800AC98: bx r0 .align 2, 0 _0800AC9C: .4byte gLinkOpen -_0800ACA0: .4byte gUnknown_3003F20 +_0800ACA0: .4byte gLinkStatus _0800ACA4: .4byte gSuppressLinkErrorMessage _0800ACA8: .4byte sLinkErrorBuffer -_0800ACAC: .4byte gUnknown_3004F70 -_0800ACB0: .4byte gUnknown_3003FA0 -_0800ACB4: .4byte c2_800ACD4 +_0800ACAC: .4byte gLastRecvQueueCount +_0800ACB0: .4byte gLastSendQueueCount +_0800ACB4: .4byte CB2_LinkError _0800ACB8: .4byte gLinkErrorOccurred - thumb_func_end sub_800AC58 + thumb_func_end CheckErrorStatus thumb_func_start sub_800ACBC sub_800ACBC: @ 800ACBC @@ -2590,8 +1807,8 @@ sub_800ACBC: @ 800ACBC _0800ACD0: .4byte sLinkErrorBuffer thumb_func_end sub_800ACBC - thumb_func_start c2_800ACD4 -c2_800ACD4: @ 800ACD4 + thumb_func_start CB2_LinkError +CB2_LinkError: @ 800ACD4 push {r4,lr} movs r0, 0 movs r1, 0 @@ -2710,7 +1927,7 @@ _0800AE0C: .4byte gSoftResetDisabled _0800AE10: .4byte Task_DestroySelf _0800AE14: .4byte gMain _0800AE18: .4byte sub_800AF2C - thumb_func_end c2_800ACD4 + thumb_func_end CB2_LinkError thumb_func_start sub_800AE1C sub_800AE1C: @ 800AE1C @@ -2730,7 +1947,7 @@ sub_800AE1C: @ 800AE1C bl CopyToBgTilemapBuffer movs r0, 0x1 bl CopyBgTilemapBufferToVram - ldr r0, _0800AEC0 @ =gUnknown_8231EC4 + ldr r0, _0800AEC0 @ =gWirelessLinkDisplayPal movs r1, 0 movs r2, 0x20 bl LoadPalette @@ -2780,7 +1997,7 @@ sub_800AE1C: @ 800AE1C .align 2, 0 _0800AEB8: .4byte gWirelessLinkDisplay4bpp _0800AEBC: .4byte gWirelessLinkDisplayBin -_0800AEC0: .4byte gUnknown_8231EC4 +_0800AEC0: .4byte gWirelessLinkDisplayPal _0800AEC4: .4byte gUnknown_8234610 _0800AEC8: .4byte gUnknown_841DEF0 _0800AECC: .4byte gUnknown_841DF05 @@ -3010,14 +2227,14 @@ _0800B088: .4byte 0x04000128 thumb_func_start IsLinkConnectionEstablished IsLinkConnectionEstablished: @ 800B08C - ldr r0, _0800B098 @ =gUnknown_3003F20 + ldr r0, _0800B098 @ =gLinkStatus ldr r0, [r0] lsrs r0, 6 movs r1, 0x1 ands r0, r1 bx lr .align 2, 0 -_0800B098: .4byte gUnknown_3003F20 +_0800B098: .4byte gLinkStatus thumb_func_end IsLinkConnectionEstablished thumb_func_start SetSuppressLinkErrorMessage @@ -3042,7 +2259,7 @@ _0800B0B0: .4byte gLinkErrorOccurred sub_800B0B4: @ 800B0B4 push {r4-r6,lr} bl InitLocalLinkPlayer - ldr r1, _0800B100 @ =gUnknown_3003E70 + ldr r1, _0800B100 @ =gLocalLinkPlayerBlock adds r2, r1, 0 adds r2, 0x10 ldr r0, _0800B104 @ =gLocalLinkPlayer @@ -3052,7 +2269,7 @@ sub_800B0B4: @ 800B0B4 stm r2!, {r3,r4,r6} ldr r0, [r0] str r0, [r2] - ldr r3, _0800B108 @ =gUnknown_82345C0 + ldr r3, _0800B108 @ =gASCIIGameFreakInc adds r2, r1, 0 adds r0, r3, 0 ldm r0!, {r4-r6} @@ -3076,9 +2293,9 @@ sub_800B0B4: @ 800B0B4 pop {r0} bx r0 .align 2, 0 -_0800B100: .4byte gUnknown_3003E70 +_0800B100: .4byte gLocalLinkPlayerBlock _0800B104: .4byte gLocalLinkPlayer -_0800B108: .4byte gUnknown_82345C0 +_0800B108: .4byte gASCIIGameFreakInc _0800B10C: .4byte gBlockSendBuffer thumb_func_end sub_800B0B4 @@ -3106,7 +2323,7 @@ sub_800B110: @ 800B110 str r0, [r1] adds r0, r2, 0 bl sub_800B284 - ldr r5, _0800B170 @ =gUnknown_82345C0 + ldr r5, _0800B170 @ =gASCIIGameFreakInc adds r0, r4, 0 adds r1, r5, 0 bl strcmp @@ -3119,7 +2336,7 @@ sub_800B110: @ 800B110 cmp r0, 0 beq _0800B160 _0800B15A: - ldr r0, _0800B174 @ =c2_800ACD4 + ldr r0, _0800B174 @ =CB2_LinkError bl SetMainCallback2 _0800B160: pop {r4-r6} @@ -3128,8 +2345,8 @@ _0800B160: .align 2, 0 _0800B168: .4byte gBlockRecvBuffer _0800B16C: .4byte gLinkPlayers -_0800B170: .4byte gUnknown_82345C0 -_0800B174: .4byte c2_800ACD4 +_0800B170: .4byte gASCIIGameFreakInc +_0800B174: .4byte CB2_LinkError thumb_func_end sub_800B110 thumb_func_start HandleLinkConnection @@ -3143,7 +2360,7 @@ HandleLinkConnection: @ 800B178 ldr r1, _0800B1B8 @ =gSendCmd ldr r2, _0800B1BC @ =gRecvCmds bl LinkMain1 - ldr r4, _0800B1C0 @ =gUnknown_3003F20 + ldr r4, _0800B1C0 @ =gLinkStatus str r0, [r4] ldr r0, _0800B1C4 @ =gMain + 0x2C bl LinkMain2 @@ -3164,7 +2381,7 @@ _0800B1B0: .4byte gWirelessCommType _0800B1B4: .4byte gShouldAdvanceLinkState _0800B1B8: .4byte gSendCmd _0800B1BC: .4byte gRecvCmds -_0800B1C0: .4byte gUnknown_3003F20 +_0800B1C0: .4byte gLinkStatus _0800B1C4: .4byte gMain + 0x2C _0800B1C8: bl sub_80FAE94 @@ -3248,14 +2465,14 @@ sub_800B248: @ 800B248 ldrb r0, [r0] cmp r0, 0 bne _0800B268 - ldr r0, _0800B260 @ =gUnknown_3003FB0 + ldr r0, _0800B260 @ =gLink ldr r1, _0800B264 @ =0x00000fbd adds r0, r1 ldrb r0, [r0] b _0800B26C .align 2, 0 _0800B25C: .4byte gWirelessCommType -_0800B260: .4byte gUnknown_3003FB0 +_0800B260: .4byte gLink _0800B264: .4byte 0x00000fbd _0800B268: bl sub_80FC460 @@ -3318,7 +2535,7 @@ DisableSerial: @ 800B29C str r0, [r2] str r1, [r2, 0x4] str r0, [sp] - ldr r1, _0800B2EC @ =gUnknown_3003FB0 + ldr r1, _0800B2EC @ =gLink ldr r2, _0800B2F0 @ =0x050003f0 mov r0, sp bl CpuSet @@ -3330,7 +2547,7 @@ _0800B2DC: .4byte 0x04000128 _0800B2E0: .4byte 0x0400010e _0800B2E4: .4byte 0x0400012a _0800B2E8: .4byte 0x04000120 -_0800B2EC: .4byte gUnknown_3003FB0 +_0800B2EC: .4byte gLink _0800B2F0: .4byte 0x050003f0 thumb_func_end DisableSerial @@ -3359,7 +2576,7 @@ EnableSerial: @ 800B2F4 strh r4, [r0] movs r5, 0 str r5, [sp] - ldr r1, _0800B364 @ =gUnknown_3003FB0 + ldr r1, _0800B364 @ =gLink ldr r2, _0800B368 @ =0x050003f0 mov r0, sp bl CpuSet @@ -3373,9 +2590,9 @@ EnableSerial: @ 800B2F4 strb r4, [r0] ldr r0, _0800B37C @ =sHandshakePlayerCount strb r4, [r0] - ldr r0, _0800B380 @ =gUnknown_3003FA0 + ldr r0, _0800B380 @ =gLastSendQueueCount strb r4, [r0] - ldr r0, _0800B384 @ =gUnknown_3004F70 + ldr r0, _0800B384 @ =gLastRecvQueueCount strb r4, [r0] add sp, 0x4 pop {r4,r5} @@ -3386,15 +2603,15 @@ _0800B354: .4byte 0x04000134 _0800B358: .4byte 0x04000128 _0800B35C: .4byte 0x00004003 _0800B360: .4byte 0x0400012a -_0800B364: .4byte gUnknown_3003FB0 +_0800B364: .4byte gLink _0800B368: .4byte 0x050003f0 _0800B36C: .4byte sNumVBlanksWithoutSerialIntr _0800B370: .4byte sSendNonzeroCheck _0800B374: .4byte sRecvNonzeroCheck _0800B378: .4byte sChecksumAvailable _0800B37C: .4byte sHandshakePlayerCount -_0800B380: .4byte gUnknown_3003FA0 -_0800B384: .4byte gUnknown_3004F70 +_0800B380: .4byte gLastSendQueueCount +_0800B384: .4byte gLastRecvQueueCount thumb_func_end EnableSerial thumb_func_start ResetSerial @@ -3412,7 +2629,7 @@ LinkMain1: @ 800B398 adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 - ldr r0, _0800B3B4 @ =gUnknown_3003FB0 + ldr r0, _0800B3B4 @ =gLink ldrb r0, [r0, 0x1] cmp r0, 0x4 bhi _0800B44A @@ -3422,7 +2639,7 @@ LinkMain1: @ 800B398 ldr r0, [r0] mov pc, r0 .align 2, 0 -_0800B3B4: .4byte gUnknown_3003FB0 +_0800B3B4: .4byte gLink _0800B3B8: .4byte _0800B3BC .align 2, 0 _0800B3BC: @@ -3433,23 +2650,23 @@ _0800B3BC: .4byte _0800B43E _0800B3D0: bl DisableSerial - ldr r1, _0800B3DC @ =gUnknown_3003FB0 + ldr r1, _0800B3DC @ =gLink movs r0, 0x1 strb r0, [r1, 0x1] b _0800B44A .align 2, 0 -_0800B3DC: .4byte gUnknown_3003FB0 +_0800B3DC: .4byte gLink _0800B3E0: ldrb r0, [r4] cmp r0, 0x1 bne _0800B44A bl EnableSerial - ldr r1, _0800B3F4 @ =gUnknown_3003FB0 + ldr r1, _0800B3F4 @ =gLink movs r0, 0x2 strb r0, [r1, 0x1] b _0800B44A .align 2, 0 -_0800B3F4: .4byte gUnknown_3003FB0 +_0800B3F4: .4byte gLink _0800B3F8: ldrb r1, [r4] cmp r1, 0x1 @@ -3459,7 +2676,7 @@ _0800B3F8: bl CheckMasterOrSlave b _0800B44A _0800B408: - ldr r2, _0800B41C @ =gUnknown_3003FB0 + ldr r2, _0800B41C @ =gLink ldrb r0, [r2] cmp r0, 0x8 bne _0800B44A @@ -3469,20 +2686,20 @@ _0800B408: strb r1, [r2, 0xE] b _0800B44A .align 2, 0 -_0800B41C: .4byte gUnknown_3003FB0 +_0800B41C: .4byte gLink _0800B420: - ldr r0, _0800B42C @ =gUnknown_3003FB0 + ldr r0, _0800B42C @ =gLink movs r1, 0 strb r1, [r0, 0x1] ldr r0, _0800B430 @ =0x0400012a strh r1, [r0] b _0800B44A .align 2, 0 -_0800B42C: .4byte gUnknown_3003FB0 +_0800B42C: .4byte gLink _0800B430: .4byte 0x0400012a _0800B434: bl InitTimer - ldr r1, _0800B484 @ =gUnknown_3003FB0 + ldr r1, _0800B484 @ =gLink movs r0, 0x4 strb r0, [r1, 0x1] _0800B43E: @@ -3493,7 +2710,7 @@ _0800B43E: _0800B44A: movs r0, 0 strb r0, [r4] - ldr r1, _0800B484 @ =gUnknown_3003FB0 + ldr r1, _0800B484 @ =gLink ldrb r2, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 2 @@ -3522,7 +2739,7 @@ _0800B462: orrs r0, r2 b _0800B48C .align 2, 0 -_0800B484: .4byte gUnknown_3003FB0 +_0800B484: .4byte gLink _0800B488: adds r0, r2, 0 orrs r0, r3 @@ -3566,7 +2783,7 @@ CheckMasterOrSlave: @ 800B4C4 ldr r1, [r0] movs r0, 0xC ands r1, r0 - ldr r2, _0800B4E4 @ =gUnknown_3003FB0 + ldr r2, _0800B4E4 @ =gLink cmp r1, 0x8 bne _0800B4E8 ldrb r0, [r2, 0x2] @@ -3576,7 +2793,7 @@ CheckMasterOrSlave: @ 800B4C4 b _0800B4EC .align 2, 0 _0800B4E0: .4byte 0x04000128 -_0800B4E4: .4byte gUnknown_3003FB0 +_0800B4E4: .4byte gLink _0800B4E8: movs r0, 0 strb r0, [r2] @@ -3588,7 +2805,7 @@ _0800B4EC: thumb_func_start InitTimer InitTimer: @ 800B4F0 push {lr} - ldr r0, _0800B514 @ =gUnknown_3003FB0 + ldr r0, _0800B514 @ =gLink ldrb r0, [r0] cmp r0, 0 beq _0800B50E @@ -3605,7 +2822,7 @@ _0800B50E: pop {r0} bx r0 .align 2, 0 -_0800B514: .4byte gUnknown_3003FB0 +_0800B514: .4byte gLink _0800B518: .4byte 0x0400010c _0800B51C: .4byte 0x0000ff3b thumb_func_end InitTimer @@ -3618,13 +2835,13 @@ sub_800B520: @ 800B520 mov r5, r8 push {r5-r7} adds r3, r0, 0 - ldr r2, _0800B598 @ =gUnknown_3004F74 + ldr r2, _0800B598 @ =gLinkSavedIme ldr r1, _0800B59C @ =0x04000208 ldrh r0, [r1] strh r0, [r2] movs r0, 0 strh r0, [r1] - ldr r1, _0800B5A0 @ =gUnknown_3003FB0 + ldr r1, _0800B5A0 @ =gLink ldr r4, _0800B5A4 @ =0x00000339 adds r0, r1, r4 ldrb r4, [r0] @@ -3647,7 +2864,7 @@ _0800B55E: movs r2, 0 ldr r4, _0800B5A8 @ =sSendNonzeroCheck mov r9, r4 - ldr r1, _0800B5AC @ =gUnknown_3003FA0 + ldr r1, _0800B5AC @ =gLastSendQueueCount mov r10, r1 lsls r5, r0, 1 movs r0, 0x18 @@ -3675,18 +2892,18 @@ _0800B574: bls _0800B574 b _0800B5BC .align 2, 0 -_0800B598: .4byte gUnknown_3004F74 +_0800B598: .4byte gLinkSavedIme _0800B59C: .4byte 0x04000208 -_0800B5A0: .4byte gUnknown_3003FB0 +_0800B5A0: .4byte gLink _0800B5A4: .4byte 0x00000339 _0800B5A8: .4byte sSendNonzeroCheck -_0800B5AC: .4byte gUnknown_3003FA0 +_0800B5AC: .4byte gLastSendQueueCount _0800B5B0: movs r0, 0x1 strb r0, [r6, 0x12] ldr r2, _0800B5F4 @ =sSendNonzeroCheck mov r9, r2 - ldr r4, _0800B5F8 @ =gUnknown_3003FA0 + ldr r4, _0800B5F8 @ =gLastSendQueueCount mov r10, r4 _0800B5BC: mov r1, r9 @@ -3703,7 +2920,7 @@ _0800B5BC: strh r2, [r4] _0800B5D4: ldr r1, _0800B600 @ =0x04000208 - ldr r2, _0800B604 @ =gUnknown_3004F74 + ldr r2, _0800B604 @ =gLinkSavedIme ldrh r0, [r2] strh r0, [r1] ldr r4, _0800B5FC @ =0x00000339 @@ -3720,10 +2937,10 @@ _0800B5D4: bx r0 .align 2, 0 _0800B5F4: .4byte sSendNonzeroCheck -_0800B5F8: .4byte gUnknown_3003FA0 +_0800B5F8: .4byte gLastSendQueueCount _0800B5FC: .4byte 0x00000339 _0800B600: .4byte 0x04000208 -_0800B604: .4byte gUnknown_3004F74 +_0800B604: .4byte gLinkSavedIme thumb_func_end sub_800B520 thumb_func_start sub_800B608 @@ -3734,13 +2951,13 @@ sub_800B608: @ 800B608 mov r5, r8 push {r5-r7} mov r9, r0 - ldr r2, _0800B664 @ =gUnknown_3004F74 + ldr r2, _0800B664 @ =gLinkSavedIme ldr r1, _0800B668 @ =0x04000208 ldrh r0, [r1] strh r0, [r2] movs r0, 0 strh r0, [r1] - ldr r1, _0800B66C @ =gUnknown_3003FB0 + ldr r1, _0800B66C @ =gLink ldr r3, _0800B670 @ =0x00000fbd adds r0, r1, r3 ldrb r0, [r0] @@ -3777,9 +2994,9 @@ _0800B65A: strb r0, [r7, 0xC] b _0800B6F0 .align 2, 0 -_0800B664: .4byte gUnknown_3004F74 +_0800B664: .4byte gLinkSavedIme _0800B668: .4byte 0x04000208 -_0800B66C: .4byte gUnknown_3003FB0 +_0800B66C: .4byte gLink _0800B670: .4byte 0x00000fbd _0800B674: movs r3, 0 @@ -3850,7 +3067,7 @@ _0800B6EC: strb r3, [r2, 0xC] _0800B6F0: ldr r1, _0800B710 @ =0x04000208 - ldr r3, _0800B714 @ =gUnknown_3004F74 + ldr r3, _0800B714 @ =gLinkSavedIme ldrh r0, [r3] strh r0, [r1] pop {r3-r5} @@ -3864,13 +3081,13 @@ _0800B6F0: _0800B708: .4byte 0x00000fbc _0800B70C: .4byte 0x00000fbd _0800B710: .4byte 0x04000208 -_0800B714: .4byte gUnknown_3004F74 +_0800B714: .4byte gLinkSavedIme thumb_func_end sub_800B608 thumb_func_start LinkVSync LinkVSync: @ 800B718 push {r4,lr} - ldr r3, _0800B740 @ =gUnknown_3003FB0 + ldr r3, _0800B740 @ =gLink ldrb r4, [r3] cmp r4, 0 beq _0800B754 @@ -3890,7 +3107,7 @@ LinkVSync: @ 800B718 strb r0, [r3, 0x13] b _0800B77E .align 2, 0 -_0800B740: .4byte gUnknown_3003FB0 +_0800B740: .4byte gLink _0800B744: ldrb r0, [r3, 0x13] cmp r0, 0x1 @@ -3944,7 +3161,7 @@ Timer3Intr: @ 800B788 thumb_func_start SerialCB SerialCB: @ 800B798 push {r4,lr} - ldr r4, _0800B7C4 @ =gUnknown_3003FB0 + ldr r4, _0800B7C4 @ =gLink ldr r0, _0800B7C8 @ =0x04000128 ldr r1, [r0] lsls r0, r1, 26 @@ -3963,7 +3180,7 @@ SerialCB: @ 800B798 bl SendRecvDone b _0800B7EA .align 2, 0 -_0800B7C4: .4byte gUnknown_3003FB0 +_0800B7C4: .4byte gLink _0800B7C8: .4byte 0x04000128 _0800B7CC: bl DoHandshake @@ -3982,7 +3199,7 @@ _0800B7E6: movs r0, 0x4 strb r0, [r4, 0x1] _0800B7EA: - ldr r3, _0800B810 @ =gUnknown_3003FB0 + ldr r3, _0800B810 @ =gLink ldrb r0, [r3, 0xD] adds r0, 0x1 movs r2, 0 @@ -3993,7 +3210,7 @@ _0800B7EA: asrs r0, 24 cmp r0, 0x8 bne _0800B80A - ldr r0, _0800B818 @ =gUnknown_3004F70 + ldr r0, _0800B818 @ =gLastRecvQueueCount ldr r2, _0800B81C @ =0x00000fbd adds r1, r3, r2 ldrb r1, [r1] @@ -4003,9 +3220,9 @@ _0800B80A: pop {r0} bx r0 .align 2, 0 -_0800B810: .4byte gUnknown_3003FB0 +_0800B810: .4byte gLink _0800B814: .4byte sNumVBlanksWithoutSerialIntr -_0800B818: .4byte gUnknown_3004F70 +_0800B818: .4byte gLastRecvQueueCount _0800B81C: .4byte 0x00000fbd thumb_func_end SerialCB @@ -4029,7 +3246,7 @@ DoHandshake: @ 800B830 push {r6,r7} movs r5, 0 ldr r6, _0800B84C @ =0x0000ffff - ldr r0, _0800B850 @ =gUnknown_3003FB0 + ldr r0, _0800B850 @ =gLink ldrb r1, [r0, 0xE] adds r7, r0, 0 cmp r1, 0x1 @@ -4039,7 +3256,7 @@ DoHandshake: @ 800B830 b _0800B860 .align 2, 0 _0800B84C: .4byte 0x0000ffff -_0800B850: .4byte gUnknown_3003FB0 +_0800B850: .4byte gLink _0800B854: .4byte 0x0400012a _0800B858: .4byte 0x00008fff _0800B85C: @@ -4048,7 +3265,7 @@ _0800B85C: _0800B860: adds r0, r2, 0 strh r0, [r1] - ldr r2, _0800B8BC @ =gSioMlt_Recv + ldr r2, _0800B8BC @ =gLink + 4 ldr r3, _0800B8C0 @ =0x04000120 ldr r0, [r3] ldr r1, [r3, 0x4] @@ -4093,7 +3310,7 @@ _0800B8A0: .align 2, 0 _0800B8B4: .4byte 0x0400012a _0800B8B8: .4byte 0x0000b9a0 -_0800B8BC: .4byte gSioMlt_Recv +_0800B8BC: .4byte gLink + 4 _0800B8C0: .4byte 0x04000120 _0800B8C4: .4byte sHandshakePlayerCount _0800B8C8: .4byte 0x00008fff @@ -4162,7 +3379,7 @@ DoRecv: @ 800B92C ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] - ldr r0, _0800B988 @ =gUnknown_3003FB0 + ldr r0, _0800B988 @ =gLink ldrb r1, [r0, 0x16] adds r6, r0, 0 cmp r1, 0 @@ -4202,7 +3419,7 @@ _0800B97A: b _0800BA30 .align 2, 0 _0800B984: .4byte 0x04000120 -_0800B988: .4byte gUnknown_3003FB0 +_0800B988: .4byte gLink _0800B98C: .4byte sChecksumAvailable _0800B990: ldr r2, _0800BA00 @ =0x00000fbc @@ -4303,7 +3520,7 @@ _0800BA40: .4byte 0x00000fbd thumb_func_start DoSend DoSend: @ 800BA44 push {r4,lr} - ldr r0, _0800BA80 @ =gUnknown_3003FB0 + ldr r0, _0800BA80 @ =gLink ldrb r1, [r0, 0x16] adds r4, r0, 0 cmp r1, 0x8 @@ -4333,7 +3550,7 @@ DoSend: @ 800BA44 strb r2, [r1] b _0800BAEC .align 2, 0 -_0800BA80: .4byte gUnknown_3003FB0 +_0800BA80: .4byte gLink _0800BA84: .4byte 0x0400012a _0800BA88: .4byte sSendBufferEmpty _0800BA8C: .4byte 0x00000339 @@ -4397,7 +3614,7 @@ _0800BAF4: .4byte 0x0400012a thumb_func_start StopTimer StopTimer: @ 800BAF8 push {lr} - ldr r0, _0800BB18 @ =gUnknown_3003FB0 + ldr r0, _0800BB18 @ =gLink ldrb r0, [r0] cmp r0, 0 beq _0800BB14 @@ -4414,7 +3631,7 @@ _0800BB14: pop {r0} bx r0 .align 2, 0 -_0800BB18: .4byte gUnknown_3003FB0 +_0800BB18: .4byte gLink _0800BB1C: .4byte 0x0400010e _0800BB20: .4byte 0x0000ff7f _0800BB24: .4byte 0x0400010c @@ -4424,7 +3641,7 @@ _0800BB28: .4byte 0x0000ff3b thumb_func_start SendRecvDone SendRecvDone: @ 800BB2C push {lr} - ldr r1, _0800BB40 @ =gUnknown_3003FB0 + ldr r1, _0800BB40 @ =gLink ldrb r0, [r1, 0x17] cmp r0, 0x8 bne _0800BB44 @@ -4433,7 +3650,7 @@ SendRecvDone: @ 800BB2C strb r0, [r1, 0x17] b _0800BB54 .align 2, 0 -_0800BB40: .4byte gUnknown_3003FB0 +_0800BB40: .4byte gLink _0800BB44: ldrb r0, [r1] cmp r0, 0 @@ -4453,7 +3670,7 @@ _0800BB58: .4byte 0x0400010e thumb_func_start ResetSendBuffer ResetSendBuffer: @ 800BB5C push {r4-r6,lr} - ldr r1, _0800BBA4 @ =gUnknown_3003FB0 + ldr r1, _0800BBA4 @ =gLink ldr r2, _0800BBA8 @ =0x00000339 adds r0, r1, r2 movs r2, 0 @@ -4490,7 +3707,7 @@ _0800BB82: pop {r0} bx r0 .align 2, 0 -_0800BBA4: .4byte gUnknown_3003FB0 +_0800BBA4: .4byte gLink _0800BBA8: .4byte 0x00000339 _0800BBAC: .4byte 0x0000efff thumb_func_end ResetSendBuffer @@ -4498,7 +3715,7 @@ _0800BBAC: .4byte 0x0000efff thumb_func_start ResetRecvBuffer ResetRecvBuffer: @ 800BBB0 push {r4-r7,lr} - ldr r1, _0800BC10 @ =gUnknown_3003FB0 + ldr r1, _0800BC10 @ =gLink ldr r2, _0800BC14 @ =0x00000fbd adds r0, r1, r2 movs r2, 0 @@ -4549,7 +3766,7 @@ _0800BBE6: pop {r0} bx r0 .align 2, 0 -_0800BC10: .4byte gUnknown_3003FB0 +_0800BC10: .4byte gLink _0800BC14: .4byte 0x00000fbd _0800BC18: .4byte 0x00000fbc _0800BC1C: .4byte 0x0000efff diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 582cc073e..3b6ec730f 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -2244,7 +2244,7 @@ rfu_func_080F97B8: @ 80F97B8 ldrb r0, [r0] cmp r0, 0 beq _080F97EA - ldr r3, _080F97F4 @ =gUnknown_3005028 + ldr r3, _080F97F4 @ =gHeldKeyCodeToSend ldrh r2, [r3] cmp r2, 0 beq _080F97EA @@ -2268,7 +2268,7 @@ _080F97EA: bx r0 .align 2, 0 _080F97F0: .4byte gReceivedRemoteLinkPlayers -_080F97F4: .4byte gUnknown_3005028 +_080F97F4: .4byte gHeldKeyCodeToSend _080F97F8: .4byte gLinkTransferringData _080F97FC: .4byte gUnknown_3001188 thumb_func_end rfu_func_080F97B8 @@ -2444,12 +2444,12 @@ _080F9914: beq _080F9924 b _080F9BF8 _080F9924: - ldr r1, _080F9948 @ =gUnknown_3003ED2 + ldr r1, _080F9948 @ =gRecvCmds + 2 adds r0, r2, r1 ldrh r0, [r0] ldr r3, _080F993C @ =gUnknown_3005450 strb r0, [r3, 0xD] - ldr r4, _080F994C @ =gUnknown_3003ED4 + ldr r4, _080F994C @ =gRecvCmds + 4 adds r0, r2, r4 bl sub_80F9770 ldr r1, _080F9950 @ =gUnknown_3005DD6 @@ -2459,8 +2459,8 @@ _080F9924: _080F993C: .4byte gUnknown_3005450 _080F9940: .4byte gReceivedRemoteLinkPlayers _080F9944: .4byte gUnknown_3007460 -_080F9948: .4byte gUnknown_3003ED2 -_080F994C: .4byte gUnknown_3003ED4 +_080F9948: .4byte gRecvCmds + 2 +_080F994C: .4byte gRecvCmds + 4 _080F9950: .4byte gUnknown_3005DD6 _080F9954: ldr r2, _080F99AC @ =gUnknown_3005450 @@ -2484,13 +2484,13 @@ _080F9974: adds r0, 0x80 movs r2, 0 strh r4, [r0] - ldr r1, _080F99B0 @ =gUnknown_3003ED2 + ldr r1, _080F99B0 @ =gRecvCmds + 2 adds r0, r5, r1 ldrh r0, [r0] adds r1, r3, 0 adds r1, 0x82 strh r0, [r1] - ldr r1, _080F99B4 @ =gUnknown_3003ED4 + ldr r1, _080F99B4 @ =gRecvCmds + 4 adds r0, r5, r1 ldrh r1, [r0] adds r0, r3, 0 @@ -2510,8 +2510,8 @@ _080F9974: b _080F9BF8 .align 2, 0 _080F99AC: .4byte gUnknown_3005450 -_080F99B0: .4byte gUnknown_3003ED2 -_080F99B4: .4byte gUnknown_3003ED4 +_080F99B0: .4byte gRecvCmds + 2 +_080F99B4: .4byte gRecvCmds + 4 _080F99B8: ldr r4, _080F9A88 @ =gUnknown_3005450 mov r9, r4 @@ -2628,7 +2628,7 @@ _080F9A94: .4byte gUnknown_843EBD4 _080F9A98: .4byte gReceivedRemoteLinkPlayers _080F9A9C: ldr r2, _080F9AB8 @ =gUnknown_843EC64 - ldr r3, _080F9ABC @ =gUnknown_3003ED2 + ldr r3, _080F9ABC @ =gRecvCmds + 2 adds r0, r5, r3 ldrh r1, [r0] lsls r1, 3 @@ -2641,7 +2641,7 @@ _080F9A9C: b _080F9BF4 .align 2, 0 _080F9AB8: .4byte gUnknown_843EC64 -_080F9ABC: .4byte gUnknown_3003ED2 +_080F9ABC: .4byte gRecvCmds + 2 _080F9AC0: ldr r1, _080F9ACC @ =gUnknown_3005534 add r1, r8 @@ -2655,7 +2655,7 @@ _080F9AD0: movs r4, 0x80 lsls r4, 1 adds r0, r2, r4 - ldr r3, _080F9AFC @ =gUnknown_3003ED2 + ldr r3, _080F9AFC @ =gRecvCmds + 2 adds r1, r5, r3 ldrh r0, [r0] mov r6, r8 @@ -2673,7 +2673,7 @@ _080F9AEA: b _080F9BF8 .align 2, 0 _080F9AF8: .4byte gUnknown_3005450 -_080F9AFC: .4byte gUnknown_3003ED2 +_080F9AFC: .4byte gRecvCmds + 2 _080F9B00: ldr r7, _080F9B4C @ =gUnknown_3005450 ldrb r2, [r7, 0xC] @@ -2685,7 +2685,7 @@ _080F9B00: adds r6, 0x1 cmp r0, 0 beq _080F9BF8 - ldr r0, _080F9B54 @ =gUnknown_3003ED2 + ldr r0, _080F9B54 @ =gRecvCmds + 2 adds r4, r5, r0 ldrh r1, [r4] ldr r0, _080F9B58 @ =gUnknown_3007460 @@ -2696,7 +2696,7 @@ _080F9B00: beq _080F9B38 strb r2, [r3] bl sub_80FEB14 - ldr r1, _080F9B5C @ =gUnknown_3003ED4 + ldr r1, _080F9B5C @ =gRecvCmds + 4 adds r0, r5, r1 ldrh r1, [r0] ldr r2, _080F9B60 @ =0x0000099c @@ -2714,9 +2714,9 @@ _080F9B38: .align 2, 0 _080F9B4C: .4byte gUnknown_3005450 _080F9B50: .4byte gReceivedRemoteLinkPlayers -_080F9B54: .4byte gUnknown_3003ED2 +_080F9B54: .4byte gRecvCmds + 2 _080F9B58: .4byte gUnknown_3007460 -_080F9B5C: .4byte gUnknown_3003ED4 +_080F9B5C: .4byte gRecvCmds + 4 _080F9B60: .4byte 0x0000099c _080F9B64: .4byte gRecvCmds _080F9B68: @@ -2724,11 +2724,11 @@ _080F9B68: lsls r0, 8 bl sub_80F9D04 ldr r1, _080F9B90 @ =gSendCmd - ldr r3, _080F9B94 @ =gUnknown_3003ED2 + ldr r3, _080F9B94 @ =gRecvCmds + 2 adds r0, r5, r3 ldrh r0, [r0] strh r0, [r1, 0x2] - ldr r4, _080F9B98 @ =gUnknown_3003ED4 + ldr r4, _080F9B98 @ =gRecvCmds + 4 adds r0, r5, r4 ldrh r0, [r0] strh r0, [r1, 0x4] @@ -2740,8 +2740,8 @@ _080F9B68: b _080F9BF4 .align 2, 0 _080F9B90: .4byte gSendCmd -_080F9B94: .4byte gUnknown_3003ED2 -_080F9B98: .4byte gUnknown_3003ED4 +_080F9B94: .4byte gRecvCmds + 2 +_080F9B98: .4byte gRecvCmds + 4 _080F9B9C: .4byte gRecvCmds _080F9BA0: ldr r4, _080F9BD0 @ =gUnknown_3005450 @@ -2752,13 +2752,13 @@ _080F9BA0: bne _080F9C34 ldr r0, _080F9BD4 @ =0x0000099b adds r2, r4, r0 - ldr r1, _080F9BD8 @ =gUnknown_3003ED2 + ldr r1, _080F9BD8 @ =gRecvCmds + 2 adds r3, r5, r1 ldrb r1, [r3] ldrb r0, [r2] orrs r0, r1 strb r0, [r2] - ldr r2, _080F9BDC @ =gUnknown_3003ED4 + ldr r2, _080F9BDC @ =gRecvCmds + 4 adds r0, r5, r2 ldrh r1, [r0] ldr r2, _080F9BE0 @ =0x0000099c @@ -2770,15 +2770,15 @@ _080F9BA0: .align 2, 0 _080F9BD0: .4byte gUnknown_3005450 _080F9BD4: .4byte 0x0000099b -_080F9BD8: .4byte gUnknown_3003ED2 -_080F9BDC: .4byte gUnknown_3003ED4 +_080F9BD8: .4byte gRecvCmds + 2 +_080F9BDC: .4byte gRecvCmds + 4 _080F9BE0: .4byte 0x0000099c _080F9BE4: - ldr r0, _080F9C24 @ =gUnknown_3003E60 + ldr r0, _080F9C24 @ =gLinkPartnersHeldKeys mov r3, r8 lsls r1, r3, 1 adds r1, r0 - ldr r4, _080F9C28 @ =gUnknown_3003ED2 + ldr r4, _080F9C28 @ =gRecvCmds + 2 adds r0, r5, r4 ldrh r0, [r0] strh r0, [r1] @@ -2808,8 +2808,8 @@ _080F9BF8: strb r1, [r2] b _080F9C34 .align 2, 0 -_080F9C24: .4byte gUnknown_3003E60 -_080F9C28: .4byte gUnknown_3003ED2 +_080F9C24: .4byte gLinkPartnersHeldKeys +_080F9C28: .4byte gRecvCmds + 2 _080F9C2C: .4byte gUnknown_3005450 _080F9C30: adds r0, 0x1 @@ -3087,7 +3087,7 @@ _080F9E00: .align 2, 0 _080F9E18: .4byte gUnknown_3005542 _080F9E1C: - ldr r0, _080F9E28 @ =gUnknown_3005028 + ldr r0, _080F9E28 @ =gHeldKeyCodeToSend ldrh r0, [r0] _080F9E20: strh r0, [r5, 0x2] @@ -3096,7 +3096,7 @@ _080F9E22: pop {r0} bx r0 .align 2, 0 -_080F9E28: .4byte gUnknown_3005028 +_080F9E28: .4byte gHeldKeyCodeToSend thumb_func_end sub_80F9D04 thumb_func_start sub_80F9E2C @@ -5159,7 +5159,7 @@ sub_80FAD98: @ 80FAD98 movs r0, 0x2 strb r0, [r1] _080FADC0: - ldr r4, _080FAE24 @ =c2_800ACD4 + ldr r4, _080FAE24 @ =CB2_LinkError adds r0, r4, 0 bl SetMainCallback2 str r4, [r6, 0x8] @@ -5201,7 +5201,7 @@ _080FAE14: .4byte gUnknown_3005E10 _080FAE18: .4byte gMain _080FAE1C: .4byte c2_mystery_gift_e_reader_run _080FAE20: .4byte gWirelessCommType -_080FAE24: .4byte c2_800ACD4 +_080FAE24: .4byte CB2_LinkError _080FAE28: .4byte 0x0000069e _080FAE2C: .4byte 0x000008d2 _080FAE30: diff --git a/asm/overworld.s b/asm/overworld.s index 5cc051c8a..f2ec7532b 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5649,7 +5649,7 @@ c1_link_related: @ 8057884 _0805789E: ldr r0, _080578CC @ =gUnknown_300502C ldrb r4, [r0] - ldr r0, _080578D0 @ =gUnknown_3003E60 + ldr r0, _080578D0 @ =gLinkPartnersHeldKeys adds r1, r4, 0 bl sub_8057BE4 ldr r0, _080578D4 @ =gUnknown_3000E84 @@ -5667,7 +5667,7 @@ _080578C0: .align 2, 0 _080578C8: .4byte gWirelessCommType _080578CC: .4byte gUnknown_300502C -_080578D0: .4byte gUnknown_3003E60 +_080578D0: .4byte gLinkPartnersHeldKeys _080578D4: .4byte gUnknown_3000E84 thumb_func_end c1_link_related @@ -5686,12 +5686,12 @@ _080578E8: .4byte sub_8057D5C thumb_func_start sub_80578EC sub_80578EC: @ 80578EC push {lr} - ldr r0, _080578F8 @ =gUnknown_3003E60 + ldr r0, _080578F8 @ =gLinkPartnersHeldKeys bl sub_8057D48 pop {r0} bx r0 .align 2, 0 -_080578F8: .4byte gUnknown_3003E60 +_080578F8: .4byte gLinkPartnersHeldKeys thumb_func_end sub_80578EC thumb_func_start c1_link_related_func_set @@ -6126,14 +6126,14 @@ sub_8057C4C: @ 8057C4C lsrs r0, 16 cmp r0, 0xC bhi _08057C6C - ldr r0, _08057C68 @ =gUnknown_3005028 + ldr r0, _08057C68 @ =gHeldKeyCodeToSend strh r4, [r0] b _08057C72 .align 2, 0 _08057C64: .4byte 0xffef0000 -_08057C68: .4byte gUnknown_3005028 +_08057C68: .4byte gHeldKeyCodeToSend _08057C6C: - ldr r1, _08057CB0 @ =gUnknown_3005028 + ldr r1, _08057CB0 @ =gHeldKeyCodeToSend movs r0, 0x11 strh r0, [r1] _08057C72: @@ -6159,7 +6159,7 @@ _08057C72: cmp r4, 0x18 blt _08057CA8 _08057CA2: - ldr r1, _08057CB0 @ =gUnknown_3005028 + ldr r1, _08057CB0 @ =gHeldKeyCodeToSend movs r0, 0 strh r0, [r1] _08057CA8: @@ -6167,7 +6167,7 @@ _08057CA8: pop {r0} bx r0 .align 2, 0 -_08057CB0: .4byte gUnknown_3005028 +_08057CB0: .4byte gHeldKeyCodeToSend _08057CB4: .4byte gWirelessCommType thumb_func_end sub_8057C4C @@ -7114,14 +7114,14 @@ sub_805833C: @ 805833C ldrb r0, [r0] cmp r0, 0 bne _0805835C - ldr r0, _08058354 @ =gUnknown_3003FB0 + ldr r0, _08058354 @ =gLink ldr r1, _08058358 @ =0x00000339 adds r0, r1 ldrb r0, [r0] b _08058364 .align 2, 0 _08058350: .4byte gWirelessCommType -_08058354: .4byte gUnknown_3003FB0 +_08058354: .4byte gLink _08058358: .4byte 0x00000339 _0805835C: ldr r0, _08058368 @ =gUnknown_3005450 diff --git a/asm/trade.s b/asm/trade.s index 4c3932ef1..52db4c7d2 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -7179,7 +7179,7 @@ _0804FF7A: cmp r1, r0 bls _0804FFAC bl CloseLink - ldr r0, _0804FFC0 @ =c2_800ACD4 + ldr r0, _0804FFC0 @ =CB2_LinkError bl SetMainCallback2 ldr r1, [r4] adds r3, r1, 0 @@ -7203,7 +7203,7 @@ _0804FFAC: pop {r0} bx r0 .align 2, 0 -_0804FFC0: .4byte c2_800ACD4 +_0804FFC0: .4byte CB2_LinkError thumb_func_end sub_804FF4C thumb_func_start sub_804FFC4 diff --git a/baserom.ips b/baserom.ips index df32a8df24ca8af27454e46d174bee6a7c415ef8..362a80b8448cafb1e81dbcb469ef8f724db3e49f 100644 GIT binary patch delta 136 zcmWN=y$ymu0D#eO9H5B&s0i}sG`GRcaJ4N|7Dft&Ur8vbOJ! y^%Jv_Y8zj@Hi9-K9lG>*;E_I040vY9h%pmhc;$^L@64F z=j{9P=fC{mpFjKIk8iEKb?ohHm(KsGx>!|x+pc{2@n@fZ_vWkZH$FA{(aoEG``TZx zo__h4Uwz`~s`|)d-+z!+{xCVaT2)n-PX1=~LVEY^WW8NXtM1^ST1@T3F&>};y^1}a zk0Qvr*{oXh{j{6OiR`+A;LXPJML(^eM_sdl96s8`48eos%mWqy7Db@31H&5f1)Y}x z+)lhHf-5s-XBi@aRvCoR2Rg`(!@-c@$R2_C>86w;6cS%7tSX27w;@39xFQ>tH#=a3 z+_9=GZu-W0AEQI-tGRR<^i?(Q$%B=8GQgeB z;lucpkxY*~^DkqFml==13p(XF3k=$Sg;GX)fhgwX4$9%U4@0Lf?jvPje>QKW1*=!;)F9& zcaSc>J=wLRYB-I26PrV*^OPDk5p%+`p?5;nXqjP4g?OO*_)UBt*TqD*m@Oi%qm%2%cTMBy1rdpl`TXX~l~LiziQ1;V2e3 z`Xl9K8M8gz!^g~%(29aRK0{!PiX^+L?O0`lxV+Y*UWL4aPF}V?F*yL2G3KDmmNG=p zymFc{MS?9e41_qC79@CyX)p)OU=A6GGRdLGDWZEn0IO$Ezgl_3U;WFQ%VS2~|c0E){Z(7$D{gSqDGgKzRy(FWtLS-)Q5~GS>x% zmy-tNjmEL@c>UpLEXPFvcMX$RKU{A3Y{Uyt*yqcUg=n*b-fvjT0dUE})xmC6ymgfD zcnu+5yyQoI%(v-MKXj-^%B@LX{`I-_bZcYnM7r458|hm&HaDJjEqN`%aVWwUK>4jG zt@QPU^x}K;X2fm8+voi&Sotnyn3%n;O8nM1V;vNt zmR2f48kzv6+xP27A6FPiVv3hauVnf@o$TxL#{&-fboHI}ok@-{Pj9|epV@4X8_Ckz zqCWjAhO(L3$hi?4F@iD+grq;80-ZNTCsjSfm08;AEm|1;Hh-)(%R}{&hB~RU20KA zzq70OM3-k%BQQ$O#L0%9dMXT4iN>|BbQugx#?rv9=bor# zhrD%39<6Xp8dix*Oaqr;cMqrBbwm_BhE`vyC}Qp`E)~ev&jSweQ3Q?jtc^hxHk&LP z<6EZUk%cD(MxPfT*#Xe>Y2zd<^V!k?Tj7L;GN!sWn4pBL1A;)V1cm^%RA|OIfKYON zp`kNdj_JdA8kh0S7(zo{`~(C~Yz55bu2;win9-zEjq6oi>~4XbeHo{s{_Gttn(b&%Bu`Q9992V+deKhDr=M8`PbUc zgukpwl`vf3?REO(kOs?+e^Lk}>`@N=ODFpJbPF*}(1{M|Gf^u_?mYy3q51NUtQW=hr6dcvqRmg~qANtG@lNvb$lcxASp@qiz}!1if$ z;Gs)%w4oAM(}>;b)l8+_auBY1!5_rh%GC7A%c!Ve0gFi}xw68!I+SoTwc63l*P5n) zG6o=9+pkE`WSkceAEe{f-U(a?P=^wrjrk&CR!z$pBZ*qf2 zLqsNJS*HNH~Ibw;ds z9$v@vlkv&U?aep$m>7zHnN|Qqh|L$b9!G%dnmNza2{ZvQo*fA1nMp*0Kg$m}8gM4+ z(iVN5IH=_p>R@lmcqVFAfB}XK$ipLS2^>97cF^EJ!Ag5rggxVHEMwNfNT3{JMh~Go zXGR_Xh%xD!SM5GRq;&vbM*6!u^l8G_TmWW{_)y^A#A%WX1tFuV!8s#nfrrkLod4|* z-o3XVbO3W+(ijvmL=0~Jl|R-jQNlSDB!L25s>xV#`KAhIz&(ruz%xumQDTBO8V9GI zT}vU43dl$i0wI)K4zIa%u0j`-6C$*jhNtG8%jKV%QTnh?_kO$e)TPhufBU7+e)pyQ zmoI+vJ1>5`s;*yq{`$qeuYCTw>yy39lf5gGy=NwSpRB5%KDc%a^dZnHs0OWp)> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1) +#define LINKCMD_SEND_LINK_TYPE 0x2222 +#define LINKCMD_0x2FFE 0x2FFE +#define LINKCMD_SEND_HELD_KEYS 0x4444 +#define LINKCMD_0x5555 0x5555 +#define LINKCMD_0x5566 0x5566 +#define LINKCMD_0x5FFF 0x5FFF +#define LINKCMD_0x6666 0x6666 +#define LINKCMD_0x7777 0x7777 +#define LINKCMD_CONT_BLOCK 0x8888 +#define LINKCMD_0xAAAA 0xAAAA +#define LINKCMD_0xAAAB 0xAAAB +#define LINKCMD_INIT_BLOCK 0xBBBB +#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE +#define LINKCMD_0xCCCC 0xCCCC + #define MASTER_HANDSHAKE 0x8FFF #define SLAVE_HANDSHAKE 0xB9A0 @@ -148,12 +163,11 @@ extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; extern u8 gShouldAdvanceLinkState; -extern u64 gSioMlt_Recv; void Task_DestroySelf(u8); void OpenLink(void); void CloseLink(void); -u16 LinkMain2(u16 *); +u16 LinkMain2(const u16 *); void sub_8007B14(void); bool32 sub_8007B24(void); void ClearLinkCallback(void); diff --git a/include/main.h b/include/main.h index d326909ff..7218dc896 100644 --- a/include/main.h +++ b/include/main.h @@ -71,4 +71,6 @@ void SeedRngAndSetTrainerId(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; +extern u8 gLinkTransferringData; + #endif // GUARD_MAIN_H diff --git a/ld_script.txt b/ld_script.txt index 433528ed4..233a65bb8 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -380,6 +380,7 @@ SECTIONS { src/sprite.o(.rodata); src/bg_regs.o(.rodata); src/string_util.o(.rodata); + src/link.o(.rodata); data/data.o(.rodata); src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); diff --git a/src/link.c b/src/link.c index b1e1466fc..6f28f78c8 100644 --- a/src/link.c +++ b/src/link.c @@ -1,7 +1,10 @@ #include "global.h" #include "palette.h" +#include "bg_regs.h" #include "gpu_regs.h" -#include "link.h" +#include "decompress.h" +#include "malloc.h" +#include "save.h" #include "quest_log.h" #include "link_rfu.h" #include "librfu.h" @@ -9,6 +12,10 @@ #include "task.h" #include "event_data.h" #include "string_util.h" +#include "item_menu.h" +#include "link.h" + +extern u16 gHeldKeyCodeToSend; struct BlockTransfer { @@ -27,6 +34,8 @@ struct LinkTestBGInfo u32 dummy_C; }; +#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) + #define static __attribute__((section(".bss"))) static struct BlockTransfer sBlockSend; ALIGNED(8) static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS]; @@ -45,17 +54,43 @@ static u8 sChecksumAvailable; static u8 sHandshakePlayerCount; #undef static -struct LinkTestBGInfo gLinkTestBGInfo; +u16 gLinkPartnersHeldKeys[6]; +u32 gLinkDebugSeed; +struct LinkPlayerBlock gLocalLinkPlayerBlock; bool8 gLinkErrorOccurred; -bool8 gSuppressLinkErrorMessage; -void (*gLinkCallback)(void); -bool8 gUnknown_3003F28; +u32 gLinkDebugFlags; +//u32 gFiller_03003074; +bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS]; +u8 gBlockReceivedStatus[MAX_LINK_PLAYERS]; +//u32 gFiller_03003080; +u16 gLinkHeldKeys; +u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; +u32 gLinkStatus; bool8 gUnknown_3003F24; +bool8 gUnknown_3003F28; +bool8 gUnknown_3003F2C[MAX_LINK_PLAYERS]; +bool8 gUnknown_3003F30[MAX_LINK_PLAYERS]; u16 gUnknown_3003F34; -u8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS]; -u8 gUnknown_3003F30[MAX_LINK_PLAYERS]; -u8 gUnknown_3003F2C[MAX_LINK_PLAYERS]; +u8 gSuppressLinkErrorMessage; +bool8 gWirelessCommType; +bool8 gSavedLinkPlayerCount; +u16 gSendCmd[CMD_LENGTH]; +u8 gSavedMultiplayerId; +bool8 gReceivedRemoteLinkPlayers; +struct LinkTestBGInfo gLinkTestBGInfo; +void (*gLinkCallback)(void); +u8 gShouldAdvanceLinkState; u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS]; +u8 gBlockRequestType; +//u32 gFiller_03003154; +//u32 gFiller_03003158; +//u32 gFiller_0300315c; +u8 gLastSendQueueCount; +struct Link gLink; +u8 gLastRecvQueueCount; +u16 gLinkSavedIme; +//u32 gFiller_03004138; +//u32 gFiller_0300413C; EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = FALSE; EWRAM_DATA bool8 gUnknown_2022111 = FALSE; @@ -79,20 +114,42 @@ EWRAM_DATA void *gUnknown_2022860 = NULL; void InitLocalLinkPlayer(void); void sub_800978C(void); +void CB2_LinkTest(void); +void ProcessRecvCmds(u8 id); +void InitBlockSend(const void * src, size_t size); u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2); void LinkCB_RequestPlayerDataExchange(void); void ResetBlockSend(void); void task00_link_test(u8 taskId); -void CB2_LinkTest(void); void EnableSerial(void); void sub_800B210(void); void sub_80F8DC0(void); void DisableSerial(void); +void CheckErrorStatus(void); +void sub_800B284(struct LinkPlayer * linkPlayer); +void SetBlockReceivedFlag(u8 id); +void sub_800A3CC(void); -extern const u16 gLinkTestDigitsPal[0x20]; -extern const u16 gLinkTestDigitsGfx[0x1000]; -extern const u8 gBGControlRegOffsets[]; +ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); +const u16 gWirelessLinkDisplay4bpp[] = INCBIN_U16("graphics/interface/wireless_link_display.4bpp.lz"); +const u16 gWirelessLinkDisplayBin[] = INCBIN_U16("graphics/interface/wireless_link_display.bin.lz"); +const u16 gLinkTestFontPal[] = INCBIN_U16("graphics/interface/link_test_font.gbapal"); +const u16 gLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp"); + +const struct BlockRequest gUnknown_8234598[] = { + {gBlockSendBuffer, 200}, + {gBlockSendBuffer, 200}, + {gBlockSendBuffer, 100}, + {gBlockSendBuffer, 220}, + {gBlockSendBuffer, 40} +}; +const char gASCIIGameFreakInc[] = "GameFreak inc."; +const char gASCIITestPrint[] = "TEST PRINT\n" + "P0\n" + "P1\n" + "P2\n" + "P3"; bool8 IsWirelessAdapterConnected(void) { @@ -121,8 +178,8 @@ void Task_DestroySelf(u8 taskId) void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4) { - LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20); - DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestDigitsGfx); + LoadPalette(gLinkTestFontPal, paletteNum * 16, 0x20); + DmaCopy16(3, gLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestFontGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; gLinkTestBGInfo.dummy_8 = a4; @@ -144,8 +201,8 @@ void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBloc void sub_80095BC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) { - LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20); - DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestDigitsGfx); + LoadPalette(gLinkTestFontPal, paletteNum * 16, 0x20); + DmaCopy16(3, gLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestFontGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; gLinkTestBGInfo.dummy_8 = 0; @@ -311,3 +368,275 @@ void TestBlockTransfer(u8 nothing, u8 is, u8 used) } } +void LinkTestProcessKeyInput(void) +{ + if (JOY_NEW(A_BUTTON)) + { + gShouldAdvanceLinkState = 1; + } + if (JOY_HELD(B_BUTTON)) + { + InitBlockSend(gHeap + 0x4000, 0x2004); + } + if (JOY_NEW(L_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(2, 0, 0)); + } + if (JOY_NEW(START_BUTTON)) + { + SetSuppressLinkErrorMessage(TRUE); + } + if (JOY_NEW(R_BUTTON)) + { + TrySavingData(1); + } + if (JOY_NEW(SELECT_BUTTON)) + { + sub_800AAC0(); + } + if (gLinkTestDebugValuesEnabled) + { + SetLinkDebugValues(gMain.vblankCounter2, gLinkCallback ? gLinkVSyncDisabled : gLinkVSyncDisabled | 0x10); + } +} + +void CB2_LinkTest(void) +{ + LinkTestProcessKeyInput(); + TestBlockTransfer(1, 1, 0); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +u16 LinkMain2(const u16 *heldKeys) +{ + u8 i; + + if (!gLinkOpen) + { + return 0; + } + for (i = 0; i < 8; i++) + { + gSendCmd[i] = 0; + } + gLinkHeldKeys = *heldKeys; + if (gLinkStatus & LINK_STAT_CONN_ESTABLISHED) + { + ProcessRecvCmds(SIO_MULTI_CNT->id); + if (gLinkCallback != NULL) + { + gLinkCallback(); + } + CheckErrorStatus(); + } + return gLinkStatus; +} + +void HandleReceiveRemoteLinkPlayer(u8 who) +{ + int i; + int count; + + count = 0; + gRemoteLinkPlayersNotReceived[who] = FALSE; + for (i = 0; i < GetLinkPlayerCount_2(); i++) + { + count += gRemoteLinkPlayersNotReceived[i]; + } + if (count == 0 && gReceivedRemoteLinkPlayers == 0) + { + gReceivedRemoteLinkPlayers = 1; + } +} + +void ProcessRecvCmds(u8 unused) +{ + u16 i; + + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gLinkPartnersHeldKeys[i] = 0; + if (gRecvCmds[i][0] == 0) + { + continue; + } + switch (gRecvCmds[i][0]) + { + case LINKCMD_SEND_LINK_TYPE: + { + struct LinkPlayerBlock *block; + + InitLocalLinkPlayer(); + block = &gLocalLinkPlayerBlock; + block->linkPlayer = gLocalLinkPlayer; + memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1); + memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1); + InitBlockSend(block, sizeof(*block)); + break; + } + case LINKCMD_SEND_HELD_KEYS: + gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; + break; + case LINKCMD_0x5555: + gUnknown_3003F28 = TRUE; + break; + case LINKCMD_0x5566: + gUnknown_3003F28 = TRUE; + break; + case LINKCMD_INIT_BLOCK: + { + struct BlockTransfer *blockRecv; + + blockRecv = &sBlockRecv[i]; + blockRecv->pos = 0; + blockRecv->size = gRecvCmds[i][1]; + blockRecv->multiplayerId = gRecvCmds[i][2]; + break; + } + case LINKCMD_CONT_BLOCK: + { + if (sBlockRecv[i].size > BLOCK_BUFFER_SIZE) + { + u16 *buffer; + u16 j; + + buffer = (u16 *)gDecompressionBuffer; + for (j = 0; j < CMD_LENGTH - 1; j++) + { + buffer[(sBlockRecv[i].pos / 2) + j] = gRecvCmds[i][j + 1]; + } + } + else + { + u16 j; + + for (j = 0; j < CMD_LENGTH - 1; j++) + { + gBlockRecvBuffer[i][(sBlockRecv[i].pos / 2) + j] = gRecvCmds[i][j + 1]; + } + } + + sBlockRecv[i].pos += (CMD_LENGTH - 1) * 2; + + if (sBlockRecv[i].pos >= sBlockRecv[i].size) + { + if (gRemoteLinkPlayersNotReceived[i] == TRUE) + { + struct LinkPlayerBlock *block; + struct LinkPlayer *linkPlayer; + + block = (struct LinkPlayerBlock *)&gBlockRecvBuffer[i]; + linkPlayer = &gLinkPlayers[i]; + *linkPlayer = block->linkPlayer; + if ((linkPlayer->version & 0xFF) == VERSION_RUBY || (linkPlayer->version & 0xFF) == VERSION_SAPPHIRE) + { + linkPlayer->name[10] = 0; + linkPlayer->name[9] = 0; + linkPlayer->name[8] = 0; + } + sub_800B284(linkPlayer); + if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 + || strcmp(block->magic2, gASCIIGameFreakInc) != 0) + { + SetMainCallback2(CB2_LinkError); + } + else + { + HandleReceiveRemoteLinkPlayer(i); + } + } + else + { + SetBlockReceivedFlag(i); + } + } + } + break; + case LINKCMD_0x5FFF: + gUnknown_3003F30[i] = TRUE; + break; + case LINKCMD_0x2FFE: + gUnknown_3003F2C[i] = TRUE; + break; + case LINKCMD_0xAAAA: + sub_800A3CC(); + break; + case LINKCMD_0xCCCC: + SendBlock(0, gUnknown_8234598[gRecvCmds[i][1]].address, gUnknown_8234598[gRecvCmds[i][1]].size); + break; + case LINKCMD_SEND_HELD_KEYS_2: + gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; + break; + } + } +} + +void BuildSendCmd(u16 command) +{ + switch (command) + { + case LINKCMD_SEND_LINK_TYPE: + gSendCmd[0] = LINKCMD_SEND_LINK_TYPE; + gSendCmd[1] = gLinkType; + break; + case LINKCMD_0x2FFE: + gSendCmd[0] = LINKCMD_0x2FFE; + break; + case LINKCMD_SEND_HELD_KEYS: + gSendCmd[0] = LINKCMD_SEND_HELD_KEYS; + gSendCmd[1] = gMain.heldKeys; + break; + case LINKCMD_0x5555: + gSendCmd[0] = LINKCMD_0x5555; + break; + case LINKCMD_0x6666: + gSendCmd[0] = LINKCMD_0x6666; + gSendCmd[1] = 0; + break; + case LINKCMD_0x7777: + { + u8 i; + + gSendCmd[0] = LINKCMD_0x7777; + for (i = 0; i < 5; i++) + { + gSendCmd[i + 1] = 0xEE; + } + break; + } + case LINKCMD_INIT_BLOCK: + gSendCmd[0] = LINKCMD_INIT_BLOCK; + gSendCmd[1] = sBlockSend.size; + gSendCmd[2] = sBlockSend.multiplayerId + 0x80; + break; + case LINKCMD_0xAAAA: + gSendCmd[0] = LINKCMD_0xAAAA; + break; + case LINKCMD_0xAAAB: + gSendCmd[0] = LINKCMD_0xAAAB; + gSendCmd[1] = gSpecialVar_ItemId; + break; + case LINKCMD_0xCCCC: + gSendCmd[0] = LINKCMD_0xCCCC; + gSendCmd[1] = gBlockRequestType; + break; + case LINKCMD_0x5FFF: + gSendCmd[0] = LINKCMD_0x5FFF; + gSendCmd[1] = gUnknown_3003F34; + break; + case LINKCMD_0x5566: + gSendCmd[0] = LINKCMD_0x5566; + break; + case LINKCMD_SEND_HELD_KEYS_2: + if (gHeldKeyCodeToSend == 0 || gLinkTransferringData) + { + break; + } + gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2; + gSendCmd[1] = gHeldKeyCodeToSend; + break; + } +} diff --git a/src/mevent.c b/src/mevent.c index a4a9ea82d..25c5294e9 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -143,7 +143,7 @@ bool32 sub_81436EC(void) vu16 imeBak = REG_IME; u16 data[4]; REG_IME = 0; - *(u64 *)data = gSioMlt_Recv; + *(u64 *)data = *(u64 *)gLink.tempRecvBuffer; REG_IME = imeBak; if ( data[0] == 0xB9A0 && data[1] == 0xCCD0 diff --git a/sym_common.txt b/sym_common.txt index 646d333cb..0adbe29b3 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -6,40 +6,34 @@ .include "sprite.o" .align 4 -gUnknown_3003E60: @ 3003E60 +gLinkPartnersHeldKeys: @ 3003E60 .space 0xC -gUnknown_3003E6C: @ 3003E6C +gLinkDebugSeed: @ 3003E6C .space 0x4 -gUnknown_3003E70: @ 3003E70 +gLocalLinkPlayerBlock: @ 3003E70 .space 0x3C gLinkErrorOccurred: @ 3003EAC .space 0x4 -gUnknown_3003EB0: @ 3003EB0 +gLinkDebugFlags: @ 3003EB0 .space 0x8 gRemoteLinkPlayersNotReceived: @ 3003EB8 .space 0x4 -gUnknown_3003EBC: @ 3003EBC +gBlockReceivedStatus: @ 3003EBC .space 0x8 -gUnknown_3003EC4: @ 3003EC4 +gLinkHeldKeys: @ 3003EC4 .space 0xC gRecvCmds: @ 3003ED0 - .space 0x2 + .space 0x50 -gUnknown_3003ED2: @ 3003ED2 - .space 0x2 - -gUnknown_3003ED4: @ 3003ED4 - .space 0x4C - -gUnknown_3003F20: @ 3003F20 +gLinkStatus: @ 3003F20 .space 0x4 gUnknown_3003F24: @ 3003F24 @@ -63,13 +57,13 @@ gSuppressLinkErrorMessage: @ 3003F38 gWirelessCommType: @ 3003F3C .space 0x4 -gUnknown_3003F40: @ 3003F40 +gSavedLinkPlayerCount: @ 3003F40 .space 0x10 gSendCmd: @ 3003F50 .space 0x10 -gUnknown_3003F60: @ 3003F60 +gSavedMultiplayerId: @ 3003F60 .space 0x4 gReceivedRemoteLinkPlayers: @ 3003F64 @@ -87,22 +81,19 @@ gShouldAdvanceLinkState: @ 3003F84 gLinkTestBlockChecksums: @ 3003F88 .space 0x8 -gUnknown_3003F90: @ 3003F90 +gBlockRequestType: @ 3003F90 .space 0x10 -gUnknown_3003FA0: @ 3003FA0 +gLastSendQueueCount: @ 3003FA0 .space 0x10 -gUnknown_3003FB0: @ 3003FB0 +gLink: @ 3003FB0 + .space 0xFC0 + +gLastRecvQueueCount: @ 3004F70 .space 0x4 -gSioMlt_Recv: @ 3003FB4 - .space 0xFBC - -gUnknown_3004F70: @ 3004F70 - .space 0x4 - -gUnknown_3004F74: @ 3004F74 +gLinkSavedIme: @ 3004F74 .space 0xC gPreBattleCallback1: @ 3004F80 @@ -151,7 +142,7 @@ gFieldCallback: @ 3005020 gFieldCallback2: @ 3005024 .space 0x4 -gUnknown_3005028: @ 3005028 +gHeldKeyCodeToSend: @ 3005028 .space 0x4 gUnknown_300502C: @ 300502C From 76fd98fffee901012c1e41580aff23d70a977330 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 20:04:37 -0400 Subject: [PATCH 093/100] link through CheckErrorStatus --- asm/battle_2.s | 2 +- asm/cable_club.s | 22 +- asm/link.s | 1787 ------------------------------------ asm/link_rfu_2.s | 60 +- asm/overworld.s | 10 +- asm/trade.s | 10 +- include/link.h | 27 +- include/link_rfu.h | 13 +- include/trade.h | 6 + src/field_fadetransition.c | 2 +- src/link.c | 757 ++++++++++++++- src/mystery_gift_menu.c | 4 +- 12 files changed, 847 insertions(+), 1853 deletions(-) create mode 100644 include/trade.h diff --git a/asm/battle_2.s b/asm/battle_2.s index 344325ff4..90c429e19 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -1645,7 +1645,7 @@ _08010B2A: ldrb r0, [r0] cmp r0, 0 beq _08010B64 - bl IsNoOneConnected + bl IsRfuTaskFinished lsls r0, 24 cmp r0, 0 beq _08010B82 diff --git a/asm/cable_club.s b/asm/cable_club.s index 03105bc3d..d7432e2c2 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -142,7 +142,7 @@ sub_8080844: @ 8080844 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 - bl sub_800A0D0 + bl GetLinkPlayerDataExchangeStatusTimed lsls r0, 24 lsrs r0, 24 subs r0, 0x1 @@ -384,9 +384,9 @@ sub_80809F8: @ 80809F8 ldrsh r2, [r4, r3] cmp r2, 0 bne _08080A30 - bl sub_800A0B4 + bl OpenLinkTimed bl sub_800AA24 - bl sub_800A270 + bl ResetLinkPlayers ldr r0, _08080A2C @ =gUnknown_83C6AB0 bl AddWindow strh r0, [r4, 0xA] @@ -608,7 +608,7 @@ sub_8080BC8: @ 8080BC8 lsls r0, 24 cmp r0, 0 bne _08080C5C - bl sub_800A944 + bl GetSavedPlayerCount adds r4, r0, 0 bl GetLinkPlayerCount_2 lsls r4, 24 @@ -685,7 +685,7 @@ sub_8080C6C: @ 8080C6C beq _08080CCE bl GetLinkPlayerCount_2 adds r4, r0, 0 - bl sub_800A944 + bl GetSavedPlayerCount lsls r4, 24 lsls r0, 24 cmp r4, r0 @@ -1368,7 +1368,7 @@ sub_80811FC: @ 80811FC cmp r2, 0 bne _08081230 bl OpenLink - bl sub_800A270 + bl ResetLinkPlayers ldr r0, _0808122C @ =sub_8081A90 movs r1, 0x50 bl CreateTask @@ -1443,7 +1443,7 @@ sub_80812A0: @ 80812A0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - bl sub_800A944 + bl GetSavedPlayerCount adds r4, r0, 0 bl GetLinkPlayerCount_2 lsls r4, 24 @@ -1541,7 +1541,7 @@ _0808135C: ldr r2, _08081378 @ =0x00002211 adds r0, r2, 0 strh r0, [r1] - bl sub_800A068 + bl ClearLinkCallback_2 b _080813AA .align 2, 0 _08081374: .4byte gLinkType @@ -1698,7 +1698,7 @@ _080814A0: ldr r2, _080814C0 @ =0x00002211 adds r1, r2, 0 strh r1, [r0] - bl sub_800A068 + bl ClearLinkCallback_2 movs r0, 0x1 strh r0, [r6] b _0808160A @@ -2180,7 +2180,7 @@ _08081882: movs r0, 0x1 movs r1, 0 bl fade_screen - bl sub_800A068 + bl ClearLinkCallback_2 b _080818B8 _08081894: ldr r0, _080818A4 @ =gPaletteFade @@ -2256,7 +2256,7 @@ _0808191A: movs r0, 0x1 movs r1, 0 bl fade_screen - bl sub_80F985C + bl Rfu_set_zero b _08081950 _0808192C: ldr r0, _0808193C @ =gPaletteFade diff --git a/asm/link.s b/asm/link.s index 14131af9e..b0de10227 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,1793 +5,6 @@ .text - thumb_func_start sub_8009FE8 -sub_8009FE8: @ 8009FE8 - push {lr} - ldr r0, _0800A000 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08009FF6 - bl sub_80F9828 -_08009FF6: - ldr r1, _0800A004 @ =gLinkCallback - ldr r0, _0800A008 @ =sub_800A040 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0800A000: .4byte gWirelessCommType -_0800A004: .4byte gLinkCallback -_0800A008: .4byte sub_800A040 - thumb_func_end sub_8009FE8 - - thumb_func_start sub_800A00C -sub_800A00C: @ 800A00C - push {lr} - ldr r0, _0800A01C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0800A020 - bl sub_80F9808 - b _0800A03A - .align 2, 0 -_0800A01C: .4byte gWirelessCommType -_0800A020: - ldr r0, _0800A030 @ =gLinkCallback - ldr r1, [r0] - ldr r0, _0800A034 @ =sub_800A040 - cmp r1, r0 - beq _0800A038 - movs r0, 0 - b _0800A03A - .align 2, 0 -_0800A030: .4byte gLinkCallback -_0800A034: .4byte sub_800A040 -_0800A038: - movs r0, 0x1 -_0800A03A: - pop {r1} - bx r1 - thumb_func_end sub_800A00C - - thumb_func_start sub_800A040 -sub_800A040: @ 800A040 - push {lr} - ldr r0, _0800A054 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A050 - ldr r0, _0800A058 @ =0x0000cafe - bl BuildSendCmd -_0800A050: - pop {r0} - bx r0 - .align 2, 0 -_0800A054: .4byte gReceivedRemoteLinkPlayers -_0800A058: .4byte 0x0000cafe - thumb_func_end sub_800A040 - - thumb_func_start sub_800A05C -sub_800A05C: @ 800A05C - ldr r1, _0800A064 @ =gLinkCallback - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_0800A064: .4byte gLinkCallback - thumb_func_end sub_800A05C - - thumb_func_start sub_800A068 -sub_800A068: @ 800A068 - push {lr} - ldr r0, _0800A078 @ =gWirelessCommType - ldrb r1, [r0] - cmp r1, 0 - beq _0800A07C - bl sub_80F985C - b _0800A080 - .align 2, 0 -_0800A078: .4byte gWirelessCommType -_0800A07C: - ldr r0, _0800A084 @ =gLinkCallback - str r1, [r0] -_0800A080: - pop {r0} - bx r0 - .align 2, 0 -_0800A084: .4byte gLinkCallback - thumb_func_end sub_800A068 - - thumb_func_start GetLinkPlayerCount -GetLinkPlayerCount: @ 800A088 - push {lr} - ldr r0, _0800A0A0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0800A0A8 - ldr r0, _0800A0A4 @ =gLinkStatus - ldr r0, [r0] - movs r1, 0x1C - ands r0, r1 - lsrs r0, 2 - b _0800A0B0 - .align 2, 0 -_0800A0A0: .4byte gWirelessCommType -_0800A0A4: .4byte gLinkStatus -_0800A0A8: - bl sub_80FA4EC - lsls r0, 24 - lsrs r0, 24 -_0800A0B0: - pop {r1} - bx r1 - thumb_func_end GetLinkPlayerCount - - thumb_func_start sub_800A0B4 -sub_800A0B4: @ 800A0B4 - push {lr} - ldr r0, _0800A0C8 @ =sPlayerDataExchangeStatus - movs r1, 0 - str r1, [r0] - ldr r0, _0800A0CC @ =gLinkTimeOutCounter - strh r1, [r0] - bl OpenLink - pop {r0} - bx r0 - .align 2, 0 -_0800A0C8: .4byte sPlayerDataExchangeStatus -_0800A0CC: .4byte gLinkTimeOutCounter - thumb_func_end sub_800A0B4 - - thumb_func_start sub_800A0D0 -sub_800A0D0: @ 800A0D0 - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r7, 0 - ldr r0, _0800A0F8 @ =gReceivedRemoteLinkPlayers - ldrb r4, [r0] - cmp r4, 0x1 - bne _0800A1C8 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bgt _0800A0F0 - cmp r0, r6 - ble _0800A100 -_0800A0F0: - ldr r1, _0800A0FC @ =sPlayerDataExchangeStatus - movs r0, 0x6 - str r0, [r1] - b _0800A1E2 - .align 2, 0 -_0800A0F8: .4byte gReceivedRemoteLinkPlayers -_0800A0FC: .4byte sPlayerDataExchangeStatus -_0800A100: - bl GetLinkPlayerCount - lsls r0, 24 - cmp r0, 0 - bne _0800A112 - ldr r0, _0800A11C @ =gLinkErrorOccurred - strb r4, [r0] - bl CloseLink -_0800A112: - movs r6, 0 - ldr r4, _0800A120 @ =gLinkPlayers - movs r5, 0 - b _0800A138 - .align 2, 0 -_0800A11C: .4byte gLinkErrorOccurred -_0800A120: .4byte gLinkPlayers -_0800A124: - adds r0, r4, 0 - adds r0, 0x14 - adds r0, r5, r0 - ldr r1, [r0] - ldr r0, [r4, 0x14] - cmp r1, r0 - bne _0800A134 - adds r7, 0x1 -_0800A134: - adds r5, 0x1C - adds r6, 0x1 -_0800A138: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - blt _0800A124 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r7, r0 - bne _0800A1B8 - ldr r0, _0800A170 @ =gLinkPlayers - ldr r1, [r0, 0x14] - ldr r0, _0800A174 @ =0x00001133 - cmp r1, r0 - bne _0800A1AC - bl sub_804FB34 - cmp r0, 0x1 - beq _0800A194 - cmp r0, 0x1 - bgt _0800A17C - cmp r0, 0 - beq _0800A188 - ldr r2, _0800A178 @ =sPlayerDataExchangeStatus - b _0800A1E0 - .align 2, 0 -_0800A170: .4byte gLinkPlayers -_0800A174: .4byte 0x00001133 -_0800A178: .4byte sPlayerDataExchangeStatus -_0800A17C: - cmp r0, 0x2 - beq _0800A1A0 - ldr r2, _0800A184 @ =sPlayerDataExchangeStatus - b _0800A1E0 - .align 2, 0 -_0800A184: .4byte sPlayerDataExchangeStatus -_0800A188: - ldr r1, _0800A190 @ =sPlayerDataExchangeStatus - movs r0, 0x1 - b _0800A1BC - .align 2, 0 -_0800A190: .4byte sPlayerDataExchangeStatus -_0800A194: - ldr r1, _0800A19C @ =sPlayerDataExchangeStatus - movs r0, 0x4 - b _0800A1BC - .align 2, 0 -_0800A19C: .4byte sPlayerDataExchangeStatus -_0800A1A0: - ldr r1, _0800A1A8 @ =sPlayerDataExchangeStatus - movs r0, 0x5 - b _0800A1BC - .align 2, 0 -_0800A1A8: .4byte sPlayerDataExchangeStatus -_0800A1AC: - ldr r1, _0800A1B4 @ =sPlayerDataExchangeStatus - movs r0, 0x1 - b _0800A1BC - .align 2, 0 -_0800A1B4: .4byte sPlayerDataExchangeStatus -_0800A1B8: - ldr r1, _0800A1C4 @ =sPlayerDataExchangeStatus - movs r0, 0x3 -_0800A1BC: - str r0, [r1] - adds r2, r1, 0 - b _0800A1E0 - .align 2, 0 -_0800A1C4: .4byte sPlayerDataExchangeStatus -_0800A1C8: - ldr r0, _0800A1E8 @ =gLinkTimeOutCounter - ldrh r1, [r0] - adds r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x96 - lsls r0, 18 - ldr r2, _0800A1EC @ =sPlayerDataExchangeStatus - cmp r1, r0 - bls _0800A1E0 - movs r0, 0x2 - str r0, [r2] -_0800A1E0: - ldrb r0, [r2] -_0800A1E2: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800A1E8: .4byte gLinkTimeOutCounter -_0800A1EC: .4byte sPlayerDataExchangeStatus - thumb_func_end sub_800A0D0 - - thumb_func_start IsLinkPlayerDataExchangeComplete -IsLinkPlayerDataExchangeComplete: @ 800A1F0 - push {r4-r6,lr} - movs r6, 0 - movs r4, 0 - ldr r5, _0800A1FC @ =gLinkPlayers - b _0800A220 - .align 2, 0 -_0800A1FC: .4byte gLinkPlayers -_0800A200: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x14 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r5, 0x14] - cmp r1, r0 - bne _0800A21A - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0800A21A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0800A220: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bcc _0800A200 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bne _0800A244 - movs r2, 0x1 - ldr r0, _0800A240 @ =sPlayerDataExchangeStatus - str r2, [r0] - b _0800A24C - .align 2, 0 -_0800A240: .4byte sPlayerDataExchangeStatus -_0800A244: - movs r2, 0 - ldr r1, _0800A254 @ =sPlayerDataExchangeStatus - movs r0, 0x3 - str r0, [r1] -_0800A24C: - adds r0, r2, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0800A254: .4byte sPlayerDataExchangeStatus - thumb_func_end IsLinkPlayerDataExchangeComplete - - thumb_func_start GetLinkPlayerTrainerId -GetLinkPlayerTrainerId: @ 800A258 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800A26C @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r2, 0x4 - adds r1, r2 - ldr r0, [r1] - bx lr - .align 2, 0 -_0800A26C: .4byte gLinkPlayers - thumb_func_end GetLinkPlayerTrainerId - - thumb_func_start sub_800A270 -sub_800A270: @ 800A270 - push {r4,r5,lr} - ldr r5, _0800A290 @ =gLinkPlayers - movs r4, 0x4 -_0800A276: - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x1C - bl memset - adds r5, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _0800A276 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A290: .4byte gLinkPlayers - thumb_func_end sub_800A270 - - thumb_func_start ResetBlockSend -ResetBlockSend: @ 800A294 - ldr r1, _0800A2A4 @ =sBlockSend - movs r0, 0 - strb r0, [r1, 0x8] - strh r0, [r1] - strh r0, [r1, 0x2] - str r0, [r1, 0x4] - bx lr - .align 2, 0 -_0800A2A4: .4byte sBlockSend - thumb_func_end ResetBlockSend - - thumb_func_start InitBlockSend -InitBlockSend: @ 800A2A8 - push {r4-r7,lr} - adds r7, r0, 0 - adds r6, r1, 0 - ldr r4, _0800A2BC @ =sBlockSend - ldrb r5, [r4, 0x8] - cmp r5, 0 - beq _0800A2C0 - movs r0, 0 - b _0800A2FE - .align 2, 0 -_0800A2BC: .4byte sBlockSend -_0800A2C0: - bl GetMultiplayerId - strb r0, [r4, 0x9] - movs r0, 0x1 - strb r0, [r4, 0x8] - strh r6, [r4, 0x2] - strh r5, [r4] - adds r0, 0xFF - cmp r6, r0 - bls _0800A2D8 - str r7, [r4, 0x4] - b _0800A2EA -_0800A2D8: - ldr r5, _0800A304 @ =gBlockSendBuffer - cmp r7, r5 - beq _0800A2E8 - adds r0, r5, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl memcpy -_0800A2E8: - str r5, [r4, 0x4] -_0800A2EA: - ldr r0, _0800A308 @ =0x0000bbbb - bl BuildSendCmd - ldr r1, _0800A30C @ =gLinkCallback - ldr r0, _0800A310 @ =LinkCB_BlockSendBegin - str r0, [r1] - ldr r1, _0800A314 @ =sBlockSendDelayCounter - movs r0, 0 - str r0, [r1] - movs r0, 0x1 -_0800A2FE: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800A304: .4byte gBlockSendBuffer -_0800A308: .4byte 0x0000bbbb -_0800A30C: .4byte gLinkCallback -_0800A310: .4byte LinkCB_BlockSendBegin -_0800A314: .4byte sBlockSendDelayCounter - thumb_func_end InitBlockSend - - thumb_func_start LinkCB_BlockSendBegin -LinkCB_BlockSendBegin: @ 800A318 - push {lr} - ldr r1, _0800A330 @ =sBlockSendDelayCounter - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x2 - bls _0800A32C - ldr r1, _0800A334 @ =gLinkCallback - ldr r0, _0800A338 @ =LinkCB_BlockSend - str r0, [r1] -_0800A32C: - pop {r0} - bx r0 - .align 2, 0 -_0800A330: .4byte sBlockSendDelayCounter -_0800A334: .4byte gLinkCallback -_0800A338: .4byte LinkCB_BlockSend - thumb_func_end LinkCB_BlockSendBegin - - thumb_func_start LinkCB_BlockSend -LinkCB_BlockSend: @ 800A33C - push {r4-r6,lr} - ldr r0, _0800A38C @ =sBlockSend - ldr r5, [r0, 0x4] - ldr r2, _0800A390 @ =gSendCmd - ldr r1, _0800A394 @ =0x00008888 - strh r1, [r2] - movs r3, 0 - adds r4, r0, 0 - adds r6, r4, 0 - adds r2, 0x2 -_0800A350: - lsls r0, r3, 1 - ldrh r1, [r6] - adds r0, r1 - adds r0, r5 - ldrb r1, [r0, 0x1] - lsls r1, 8 - ldrb r0, [r0] - orrs r0, r1 - strh r0, [r2] - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x6 - ble _0800A350 - ldrh r0, [r4] - adds r0, 0xE - strh r0, [r4] - ldrh r1, [r4, 0x2] - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bhi _0800A384 - movs r0, 0 - strb r0, [r4, 0x8] - ldr r1, _0800A398 @ =gLinkCallback - ldr r0, _0800A39C @ =sub_800A3A0 - str r0, [r1] -_0800A384: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800A38C: .4byte sBlockSend -_0800A390: .4byte gSendCmd -_0800A394: .4byte 0x00008888 -_0800A398: .4byte gLinkCallback -_0800A39C: .4byte sub_800A3A0 - thumb_func_end LinkCB_BlockSend - - thumb_func_start sub_800A3A0 -sub_800A3A0: @ 800A3A0 - ldr r1, _0800A3A8 @ =gLinkCallback - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_0800A3A8: .4byte gLinkCallback - thumb_func_end sub_800A3A0 - - thumb_func_start sub_800A3AC -sub_800A3AC: @ 800A3AC - push {lr} - bl GetMultiplayerId - ldr r0, _0800A3C4 @ =0x00004444 - bl BuildSendCmd - ldr r1, _0800A3C8 @ =gUnknown_2022114 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0800A3C4: .4byte 0x00004444 -_0800A3C8: .4byte gUnknown_2022114 - thumb_func_end sub_800A3AC - - thumb_func_start sub_800A3CC -sub_800A3CC: @ 800A3CC - ldr r1, _0800A3DC @ =gUnknown_2022114 - movs r0, 0 - str r0, [r1] - ldr r1, _0800A3E0 @ =gLinkCallback - ldr r0, _0800A3E4 @ =sub_800A3AC - str r0, [r1] - bx lr - .align 2, 0 -_0800A3DC: .4byte gUnknown_2022114 -_0800A3E0: .4byte gLinkCallback -_0800A3E4: .4byte sub_800A3AC - thumb_func_end sub_800A3CC - - thumb_func_start sub_800A3E8 -sub_800A3E8: @ 800A3E8 - ldr r0, _0800A3F0 @ =gUnknown_2022114 - ldr r0, [r0] - bx lr - .align 2, 0 -_0800A3F0: .4byte gUnknown_2022114 - thumb_func_end sub_800A3E8 - - thumb_func_start sub_800A3F4 -sub_800A3F4: @ 800A3F4 - push {lr} - ldr r0, _0800A400 @ =0x0000aaaa - bl BuildSendCmd - pop {r0} - bx r0 - .align 2, 0 -_0800A400: .4byte 0x0000aaaa - thumb_func_end sub_800A3F4 - - thumb_func_start GetMultiplayerId -GetMultiplayerId: @ 800A404 - push {lr} - ldr r0, _0800A418 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - beq _0800A420 - ldr r0, _0800A41C @ =0x04000128 - ldr r0, [r0] - lsls r0, 26 - lsrs r0, 30 - b _0800A428 - .align 2, 0 -_0800A418: .4byte gWirelessCommType -_0800A41C: .4byte 0x04000128 -_0800A420: - bl rfu_get_multiplayer_id - lsls r0, 24 - lsrs r0, 24 -_0800A428: - pop {r1} - bx r1 - thumb_func_end GetMultiplayerId - - thumb_func_start bitmask_all_link_players_but_self -bitmask_all_link_players_but_self: @ 800A42C - push {lr} - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - lsls r0, r1 - movs r1, 0xF - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end bitmask_all_link_players_but_self - - thumb_func_start SendBlock -SendBlock: @ 800A448 - push {lr} - adds r3, r1, 0 - lsls r2, 16 - lsrs r1, r2, 16 - ldr r0, _0800A460 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - beq _0800A464 - adds r0, r3, 0 - bl InitBlockSend - b _0800A46A - .align 2, 0 -_0800A460: .4byte gWirelessCommType -_0800A464: - adds r0, r3, 0 - bl sub_80F9E60 -_0800A46A: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end SendBlock - - thumb_func_start sub_800A474 -sub_800A474: @ 800A474 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _0800A490 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A494 - adds r0, r1, 0 - bl sub_80FA0F8 - lsls r0, 24 - lsrs r0, 24 - b _0800A4B0 - .align 2, 0 -_0800A490: .4byte gWirelessCommType -_0800A494: - ldr r0, _0800A4A0 @ =gLinkCallback - ldr r0, [r0] - cmp r0, 0 - beq _0800A4A4 - movs r0, 0 - b _0800A4B0 - .align 2, 0 -_0800A4A0: .4byte gLinkCallback -_0800A4A4: - ldr r0, _0800A4B4 @ =gBlockRequestType - strb r2, [r0] - ldr r0, _0800A4B8 @ =0x0000cccc - bl BuildSendCmd - movs r0, 0x1 -_0800A4B0: - pop {r1} - bx r1 - .align 2, 0 -_0800A4B4: .4byte gBlockRequestType -_0800A4B8: .4byte 0x0000cccc - thumb_func_end sub_800A474 - - thumb_func_start IsLinkTaskFinished -IsLinkTaskFinished: @ 800A4BC - push {lr} - ldr r0, _0800A4D0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A4D4 - bl IsNoOneConnected - lsls r0, 24 - lsrs r0, 24 - b _0800A4E2 - .align 2, 0 -_0800A4D0: .4byte gWirelessCommType -_0800A4D4: - movs r1, 0 - ldr r0, _0800A4E8 @ =gLinkCallback - ldr r0, [r0] - cmp r0, 0 - bne _0800A4E0 - movs r1, 0x1 -_0800A4E0: - adds r0, r1, 0 -_0800A4E2: - pop {r1} - bx r1 - .align 2, 0 -_0800A4E8: .4byte gLinkCallback - thumb_func_end IsLinkTaskFinished - - thumb_func_start GetBlockReceivedStatus -GetBlockReceivedStatus: @ 800A4EC - push {lr} - ldr r0, _0800A510 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - beq _0800A518 - ldr r2, _0800A514 @ =gBlockReceivedStatus - ldrb r0, [r2, 0x3] - lsls r0, 3 - ldrb r1, [r2, 0x2] - lsls r1, 2 - orrs r0, r1 - ldrb r1, [r2, 0x1] - lsls r1, 1 - orrs r0, r1 - ldrb r1, [r2] - orrs r0, r1 - b _0800A51C - .align 2, 0 -_0800A510: .4byte gWirelessCommType -_0800A514: .4byte gBlockReceivedStatus -_0800A518: - bl sub_80F9CC8 -_0800A51C: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetBlockReceivedStatus - - thumb_func_start SetBlockReceivedFlag -SetBlockReceivedFlag: @ 800A524 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0800A53C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A540 - adds r0, r1, 0 - bl sub_80F9720 - b _0800A548 - .align 2, 0 -_0800A53C: .4byte gWirelessCommType -_0800A540: - ldr r0, _0800A54C @ =gBlockReceivedStatus - adds r0, r1, r0 - movs r1, 0x1 - strb r1, [r0] -_0800A548: - pop {r0} - bx r0 - .align 2, 0 -_0800A54C: .4byte gBlockReceivedStatus - thumb_func_end SetBlockReceivedFlag - - thumb_func_start ResetBlockReceivedFlags -ResetBlockReceivedFlags: @ 800A550 - push {r4,lr} - ldr r0, _0800A56C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A570 - movs r4, 0 -_0800A55C: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80F974C - adds r4, 0x1 - cmp r4, 0x4 - ble _0800A55C - b _0800A57E - .align 2, 0 -_0800A56C: .4byte gWirelessCommType -_0800A570: - ldr r1, _0800A584 @ =gBlockReceivedStatus - movs r2, 0 - adds r0, r1, 0x3 -_0800A576: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _0800A576 -_0800A57E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800A584: .4byte gBlockReceivedStatus - thumb_func_end ResetBlockReceivedFlags - - thumb_func_start ResetBlockReceivedFlag -ResetBlockReceivedFlag: @ 800A588 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0800A5A0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800A5A4 - adds r0, r1, 0 - bl sub_80F974C - b _0800A5B2 - .align 2, 0 -_0800A5A0: .4byte gWirelessCommType -_0800A5A4: - ldr r0, _0800A5B8 @ =gBlockReceivedStatus - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0800A5B2 - movs r0, 0 - strb r0, [r1] -_0800A5B2: - pop {r0} - bx r0 - .align 2, 0 -_0800A5B8: .4byte gBlockReceivedStatus - thumb_func_end ResetBlockReceivedFlag - - thumb_func_start CheckShouldAdvanceLinkState -CheckShouldAdvanceLinkState: @ 800A5BC - push {lr} - ldr r0, _0800A5DC @ =gLinkStatus - ldr r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0800A5D8 - movs r0, 0x1C - ands r1, r0 - cmp r1, 0x4 - bls _0800A5D8 - ldr r1, _0800A5E0 @ =gShouldAdvanceLinkState - movs r0, 0x1 - strb r0, [r1] -_0800A5D8: - pop {r0} - bx r0 - .align 2, 0 -_0800A5DC: .4byte gLinkStatus -_0800A5E0: .4byte gShouldAdvanceLinkState - thumb_func_end CheckShouldAdvanceLinkState - - thumb_func_start LinkTestCalcBlockChecksum -LinkTestCalcBlockChecksum: @ 800A5E4 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 16 - movs r3, 0 - movs r2, 0 - lsrs r1, 17 - cmp r3, r1 - bcs _0800A60A -_0800A5F4: - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r1 - bcc _0800A5F4 -_0800A60A: - adds r0, r3, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end LinkTestCalcBlockChecksum - - thumb_func_start PrintHexDigit -PrintHexDigit: @ 800A614 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - ldr r4, _0800A648 @ =gLinkTestBGInfo - ldr r3, [r4] - lsls r3, 11 - movs r5, 0xC0 - lsls r5, 19 - adds r3, r5 - lsrs r2, 19 - adds r2, r1 - lsls r2, 1 - adds r2, r3 - ldr r3, [r4, 0x4] - lsls r3, 12 - ldr r1, [r4, 0x8] - adds r1, 0x1 - adds r0, r1 - orrs r3, r0 - strh r3, [r2] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A648: .4byte gLinkTestBGInfo - thumb_func_end PrintHexDigit - - thumb_func_start sub_800A64C -sub_800A64C: @ 800A64C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - ldr r4, _0800A680 @ =gLinkTestBGInfo - ldr r3, [r4] - lsls r3, 11 - movs r5, 0xC0 - lsls r5, 19 - adds r3, r5 - lsrs r2, 19 - adds r2, r1 - lsls r2, 1 - adds r2, r3 - ldr r3, [r4, 0x4] - lsls r3, 12 - ldr r1, [r4, 0x8] - adds r1, r0 - orrs r3, r1 - strh r3, [r2] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800A680: .4byte gLinkTestBGInfo - thumb_func_end sub_800A64C - - thumb_func_start LinkTest_prnthex -LinkTest_prnthex: @ 800A684 - push {r4-r7,lr} - sub sp, 0x10 - adds r5, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r3, 24 - movs r4, 0 - cmp r4, r3 - bge _0800A6B0 - movs r2, 0xF -_0800A69E: - mov r0, sp - adds r1, r0, r4 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - lsrs r5, 4 - adds r4, 0x1 - cmp r4, r3 - blt _0800A69E -_0800A6B0: - subs r4, r3, 0x1 - cmp r4, 0 - blt _0800A6D0 -_0800A6B6: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - adds r1, r6, 0 - adds r2, r7, 0 - bl PrintHexDigit - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bge _0800A6B6 -_0800A6D0: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end LinkTest_prnthex - - thumb_func_start sub_800A6D8 -sub_800A6D8: @ 800A6D8 - push {r4-r7,lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r6, 0 - ldrb r0, [r3] - cmp r0, 0 - beq _0800A718 - adds r4, r3, 0 - lsls r5, r2, 24 -_0800A6F0: - ldrb r0, [r4] - cmp r0, 0xA - bne _0800A700 - movs r0, 0x80 - lsls r0, 17 - adds r5, r0 - movs r6, 0 - b _0800A710 -_0800A700: - ldrb r0, [r4] - adds r1, r7, r6 - lsls r1, 24 - lsrs r1, 24 - lsrs r2, r5, 24 - bl sub_800A64C - adds r6, 0x1 -_0800A710: - adds r4, 0x1 - ldrb r0, [r4] - cmp r0, 0 - bne _0800A6F0 -_0800A718: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800A6D8 - - thumb_func_start LinkCB_RequestPlayerDataExchange -LinkCB_RequestPlayerDataExchange: @ 800A720 - push {lr} - ldr r0, _0800A740 @ =gLinkStatus - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0800A734 - ldr r0, _0800A744 @ =0x00002222 - bl BuildSendCmd -_0800A734: - ldr r1, _0800A748 @ =gLinkCallback - movs r0, 0 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0800A740: .4byte gLinkStatus -_0800A744: .4byte 0x00002222 -_0800A748: .4byte gLinkCallback - thumb_func_end LinkCB_RequestPlayerDataExchange - - thumb_func_start task00_link_test -task00_link_test: @ 800A74C - push {r4-r6,lr} - sub sp, 0x20 - ldr r1, _0800A86C @ =gASCIITestPrint - mov r0, sp - bl strcpy - mov r0, sp - movs r1, 0x5 - movs r2, 0x2 - bl sub_800A6D8 - ldr r0, _0800A870 @ =gShouldAdvanceLinkState - ldrb r0, [r0] - movs r1, 0x2 - movs r2, 0x1 - movs r3, 0x2 - bl LinkTest_prnthex - ldr r4, _0800A874 @ =gLinkStatus - ldr r0, [r4] - movs r1, 0xF - movs r2, 0x1 - movs r3, 0x8 - bl LinkTest_prnthex - ldr r0, _0800A878 @ =gLink - ldrb r0, [r0, 0x1] - movs r1, 0x2 - movs r2, 0xA - movs r3, 0x2 - bl LinkTest_prnthex - ldr r0, [r4] - movs r1, 0x1C - ands r0, r1 - lsrs r0, 2 - movs r1, 0xF - movs r2, 0xA - movs r3, 0x2 - bl LinkTest_prnthex - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xF - movs r2, 0xC - movs r3, 0x2 - bl LinkTest_prnthex - ldr r0, _0800A87C @ =gLastSendQueueCount - ldrb r0, [r0] - movs r1, 0x19 - movs r2, 0x1 - movs r3, 0x2 - bl LinkTest_prnthex - ldr r0, _0800A880 @ =gLastRecvQueueCount - ldrb r0, [r0] - movs r1, 0x19 - movs r2, 0x2 - movs r3, 0x2 - bl LinkTest_prnthex - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xF - movs r2, 0x5 - movs r3, 0x2 - bl LinkTest_prnthex - ldr r0, _0800A884 @ =gLinkDebugSeed - ldr r0, [r0] - movs r1, 0x2 - movs r2, 0xC - movs r3, 0x8 - bl LinkTest_prnthex - ldr r0, _0800A888 @ =gLinkDebugFlags - ldr r0, [r0] - movs r1, 0x2 - movs r2, 0xD - movs r3, 0x8 - bl LinkTest_prnthex - bl GetSioMultiSI - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0x5 - movs r3, 0x1 - bl LinkTest_prnthex - bl IsSioMultiMaster - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0x6 - movs r3, 0x1 - bl LinkTest_prnthex - bl IsLinkConnectionEstablished - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0x7 - movs r3, 0x1 - bl LinkTest_prnthex - bl HasLinkErrorOccurred - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x19 - movs r2, 0x8 - movs r3, 0x1 - bl LinkTest_prnthex - movs r6, 0 - movs r5, 0x80 - lsls r5, 19 - ldr r4, _0800A88C @ =gLinkTestBlockChecksums -_0800A84A: - ldrh r0, [r4] - lsrs r2, r5, 24 - movs r1, 0xA - movs r3, 0x4 - bl LinkTest_prnthex - movs r0, 0x80 - lsls r0, 17 - adds r5, r0 - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0800A84A - add sp, 0x20 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800A86C: .4byte gASCIITestPrint -_0800A870: .4byte gShouldAdvanceLinkState -_0800A874: .4byte gLinkStatus -_0800A878: .4byte gLink -_0800A87C: .4byte gLastSendQueueCount -_0800A880: .4byte gLastRecvQueueCount -_0800A884: .4byte gLinkDebugSeed -_0800A888: .4byte gLinkDebugFlags -_0800A88C: .4byte gLinkTestBlockChecksums - thumb_func_end task00_link_test - - thumb_func_start SetLinkDebugValues -SetLinkDebugValues: @ 800A890 - ldr r2, _0800A89C @ =gLinkDebugSeed - str r0, [r2] - ldr r0, _0800A8A0 @ =gLinkDebugFlags - str r1, [r0] - bx lr - .align 2, 0 -_0800A89C: .4byte gLinkDebugSeed -_0800A8A0: .4byte gLinkDebugFlags - thumb_func_end SetLinkDebugValues - - thumb_func_start sub_800A8A4 -sub_800A8A4: @ 800A8A4 - push {r4,lr} - movs r1, 0 - movs r2, 0 - ldr r0, _0800A8D0 @ =gSavedLinkPlayerCount - ldrb r0, [r0] - cmp r1, r0 - bge _0800A8C6 - movs r4, 0x1 - adds r3, r0, 0 -_0800A8B6: - adds r0, r4, 0 - lsls r0, r2 - orrs r1, r0 - lsls r0, r1, 24 - lsrs r1, r0, 24 - adds r2, 0x1 - cmp r2, r3 - blt _0800A8B6 -_0800A8C6: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0800A8D0: .4byte gSavedLinkPlayerCount - thumb_func_end sub_800A8A4 - - thumb_func_start sub_800A8D4 -sub_800A8D4: @ 800A8D4 - push {r4-r6,lr} - movs r4, 0 - movs r5, 0 - movs r6, 0x1 - b _0800A8EA -_0800A8DE: - adds r0, r6, 0 - lsls r0, r5 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 - adds r5, 0x1 -_0800A8EA: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - blt _0800A8DE - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_800A8D4 - - thumb_func_start sub_800A900 -sub_800A900: @ 800A900 - push {r4-r7,lr} - ldr r1, _0800A934 @ =gSavedLinkPlayerCount - strb r0, [r1] - bl GetMultiplayerId - ldr r1, _0800A938 @ =gSavedMultiplayerId - strb r0, [r1] - ldr r4, _0800A93C @ =gLinkPlayers - ldr r3, _0800A940 @ =gSavedLinkPlayers - movs r2, 0x4 -_0800A914: - adds r0, r3, 0 - adds r1, r4, 0 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldr r1, [r1] - str r1, [r0] - adds r4, 0x1C - adds r3, 0x1C - subs r2, 0x1 - cmp r2, 0 - bge _0800A914 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800A934: .4byte gSavedLinkPlayerCount -_0800A938: .4byte gSavedMultiplayerId -_0800A93C: .4byte gLinkPlayers -_0800A940: .4byte gSavedLinkPlayers - thumb_func_end sub_800A900 - - thumb_func_start sub_800A944 -sub_800A944: @ 800A944 - ldr r0, _0800A94C @ =gSavedLinkPlayerCount - ldrb r0, [r0] - bx lr - .align 2, 0 -_0800A94C: .4byte gSavedLinkPlayerCount - thumb_func_end sub_800A944 - - thumb_func_start sub_800A950 -sub_800A950: @ 800A950 - ldr r0, _0800A958 @ =gSavedMultiplayerId - ldrb r0, [r0] - bx lr - .align 2, 0 -_0800A958: .4byte gSavedMultiplayerId - thumb_func_end sub_800A950 - - thumb_func_start sub_800A95C -sub_800A95C: @ 800A95C - push {r4-r6,lr} - movs r5, 0 - ldr r0, _0800A990 @ =gSavedLinkPlayerCount - ldrb r2, [r0] - adds r6, r0, 0 - cmp r5, r2 - bge _0800A986 - ldr r1, _0800A994 @ =gLinkPlayers - ldr r0, _0800A998 @ =gSavedLinkPlayers - adds r4, r0, 0x4 - adds r3, r1, 0x4 -_0800A972: - ldr r1, [r3] - ldr r0, [r4] - cmp r1, r0 - bne _0800A97C - adds r5, 0x1 -_0800A97C: - adds r4, 0x1C - adds r3, 0x1C - subs r2, 0x1 - cmp r2, 0 - bne _0800A972 -_0800A986: - ldrb r6, [r6] - cmp r5, r6 - beq _0800A99C - movs r0, 0 - b _0800A99E - .align 2, 0 -_0800A990: .4byte gSavedLinkPlayerCount -_0800A994: .4byte gLinkPlayers -_0800A998: .4byte gSavedLinkPlayers -_0800A99C: - movs r0, 0x1 -_0800A99E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_800A95C - - thumb_func_start sub_800A9A4 -sub_800A9A4: @ 800A9A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r0, _0800AA10 @ =gSavedLinkPlayerCount - ldrb r0, [r0] - cmp r4, r0 - bcs _0800AA04 - ldr r6, _0800AA14 @ =gSavedLinkPlayers - ldr r5, _0800AA18 @ =gLinkPlayers - movs r0, 0x8 - adds r0, r6 - mov r8, r0 - adds r7, r5, 0 - adds r7, 0x8 -_0800A9C2: - lsls r0, r4, 3 - subs r0, r4 - lsls r2, r0, 2 - adds r1, r6, 0x4 - adds r1, r2, r1 - adds r0, r5, 0x4 - adds r0, r2, r0 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - bne _0800A9E6 - mov r1, r8 - adds r0, r2, r1 - adds r1, r2, r7 - bl StringCompare - cmp r0, 0 - beq _0800A9F6 -_0800A9E6: - ldr r1, _0800AA1C @ =gLinkErrorOccurred - movs r0, 0x1 - strb r0, [r1] - bl CloseLink - ldr r0, _0800AA20 @ =CB2_LinkError - bl SetMainCallback2 -_0800A9F6: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800AA10 @ =gSavedLinkPlayerCount - ldrb r0, [r0] - cmp r4, r0 - bcc _0800A9C2 -_0800AA04: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800AA10: .4byte gSavedLinkPlayerCount -_0800AA14: .4byte gSavedLinkPlayers -_0800AA18: .4byte gLinkPlayers -_0800AA1C: .4byte gLinkErrorOccurred -_0800AA20: .4byte CB2_LinkError - thumb_func_end sub_800A9A4 - - thumb_func_start sub_800AA24 -sub_800AA24: @ 800AA24 - ldr r0, _0800AA30 @ =gSavedLinkPlayerCount - movs r1, 0 - strb r1, [r0] - ldr r0, _0800AA34 @ =gSavedMultiplayerId - strb r1, [r0] - bx lr - .align 2, 0 -_0800AA30: .4byte gSavedLinkPlayerCount -_0800AA34: .4byte gSavedMultiplayerId - thumb_func_end sub_800AA24 - - thumb_func_start GetLinkPlayerCount_2 -GetLinkPlayerCount_2: @ 800AA38 - ldr r0, _0800AA44 @ =gLinkStatus - ldr r0, [r0] - movs r1, 0x1C - ands r0, r1 - lsrs r0, 2 - bx lr - .align 2, 0 -_0800AA44: .4byte gLinkStatus - thumb_func_end GetLinkPlayerCount_2 - - thumb_func_start IsLinkMaster -IsLinkMaster: @ 800AA48 - push {lr} - ldr r0, _0800AA60 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0800AA68 - ldr r0, _0800AA64 @ =gLinkStatus - ldr r0, [r0] - lsrs r0, 5 - movs r1, 0x1 - ands r0, r1 - b _0800AA70 - .align 2, 0 -_0800AA60: .4byte gWirelessCommType -_0800AA64: .4byte gLinkStatus -_0800AA68: - bl sub_80FBA2C - lsls r0, 24 - lsrs r0, 24 -_0800AA70: - pop {r1} - bx r1 - thumb_func_end IsLinkMaster - - thumb_func_start sub_800AA74 -sub_800AA74: @ 800AA74 - ldr r0, _0800AA7C @ =gUnknown_3000E50 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0800AA7C: .4byte gUnknown_3000E50 - thumb_func_end sub_800AA74 - - thumb_func_start sub_800AA80 -sub_800AA80: @ 800AA80 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _0800AA94 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800AA98 - bl task_add_05_task_del_08FA224_when_no_RfuFunc - b _0800AAAC - .align 2, 0 -_0800AA94: .4byte gWirelessCommType -_0800AA98: - ldr r2, _0800AAB0 @ =gLinkCallback - ldr r1, [r2] - cmp r1, 0 - bne _0800AAAC - ldr r0, _0800AAB4 @ =sub_800AB0C - str r0, [r2] - ldr r0, _0800AAB8 @ =gUnknown_3003F24 - strb r1, [r0] - ldr r0, _0800AABC @ =gUnknown_3003F34 - strh r3, [r0] -_0800AAAC: - pop {r0} - bx r0 - .align 2, 0 -_0800AAB0: .4byte gLinkCallback -_0800AAB4: .4byte sub_800AB0C -_0800AAB8: .4byte gUnknown_3003F24 -_0800AABC: .4byte gUnknown_3003F34 - thumb_func_end sub_800AA80 - - thumb_func_start sub_800AAC0 -sub_800AAC0: @ 800AAC0 - push {lr} - ldr r0, _0800AAD0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800AAD4 - bl task_add_05_task_del_08FA224_when_no_RfuFunc - b _0800AAFC - .align 2, 0 -_0800AAD0: .4byte gWirelessCommType -_0800AAD4: - ldr r2, _0800AAE8 @ =gLinkCallback - ldr r1, [r2] - cmp r1, 0 - beq _0800AAF0 - ldr r1, _0800AAEC @ =gUnknown_202285C - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0800AAFC - .align 2, 0 -_0800AAE8: .4byte gLinkCallback -_0800AAEC: .4byte gUnknown_202285C -_0800AAF0: - ldr r0, _0800AB00 @ =sub_800AB0C - str r0, [r2] - ldr r0, _0800AB04 @ =gUnknown_3003F24 - strb r1, [r0] - ldr r0, _0800AB08 @ =gUnknown_3003F34 - strh r1, [r0] -_0800AAFC: - pop {r0} - bx r0 - .align 2, 0 -_0800AB00: .4byte sub_800AB0C -_0800AB04: .4byte gUnknown_3003F24 -_0800AB08: .4byte gUnknown_3003F34 - thumb_func_end sub_800AAC0 - - thumb_func_start sub_800AB0C -sub_800AB0C: @ 800AB0C - push {lr} - ldr r0, _0800AB28 @ =gLastRecvQueueCount - ldrb r0, [r0] - cmp r0, 0 - bne _0800AB22 - ldr r0, _0800AB2C @ =0x00005fff - bl BuildSendCmd - ldr r1, _0800AB30 @ =gLinkCallback - ldr r0, _0800AB34 @ =sub_800AB38 - str r0, [r1] -_0800AB22: - pop {r0} - bx r0 - .align 2, 0 -_0800AB28: .4byte gLastRecvQueueCount -_0800AB2C: .4byte 0x00005fff -_0800AB30: .4byte gLinkCallback -_0800AB34: .4byte sub_800AB38 - thumb_func_end sub_800AB0C - - thumb_func_start sub_800AB38 -sub_800AB38: @ 800AB38 - push {r4,lr} - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r2, r0, 24 - movs r3, 0 - movs r1, 0 - cmp r3, r2 - bge _0800AB5C - ldr r4, _0800AB84 @ =gUnknown_3003F30 -_0800AB4C: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0800AB56 - adds r3, 0x1 -_0800AB56: - adds r1, 0x1 - cmp r1, r2 - blt _0800AB4C -_0800AB5C: - cmp r3, r2 - bne _0800AB7E - ldr r2, _0800AB88 @ =gBattleTypeFlags - ldr r0, [r2] - ldr r1, _0800AB8C @ =0x0000ffdf - ands r0, r1 - str r0, [r2] - ldr r0, _0800AB90 @ =gLinkVSyncDisabled - movs r4, 0x1 - strb r4, [r0] - bl CloseLink - ldr r1, _0800AB94 @ =gLinkCallback - movs r0, 0 - str r0, [r1] - ldr r0, _0800AB98 @ =gUnknown_3003F24 - strb r4, [r0] -_0800AB7E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800AB84: .4byte gUnknown_3003F30 -_0800AB88: .4byte gBattleTypeFlags -_0800AB8C: .4byte 0x0000ffdf -_0800AB90: .4byte gLinkVSyncDisabled -_0800AB94: .4byte gLinkCallback -_0800AB98: .4byte gUnknown_3003F24 - thumb_func_end sub_800AB38 - - thumb_func_start sub_800AB9C -sub_800AB9C: @ 800AB9C - push {lr} - ldr r0, _0800ABAC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _0800ABB0 - bl sub_80FA42C - b _0800ABC2 - .align 2, 0 -_0800ABAC: .4byte gWirelessCommType -_0800ABB0: - ldr r1, _0800ABC8 @ =gLinkCallback - ldr r0, [r1] - cmp r0, 0 - bne _0800ABBC - ldr r0, _0800ABCC @ =sub_800ABD4 - str r0, [r1] -_0800ABBC: - ldr r1, _0800ABD0 @ =gUnknown_3003F24 - movs r0, 0 - strb r0, [r1] -_0800ABC2: - pop {r0} - bx r0 - .align 2, 0 -_0800ABC8: .4byte gLinkCallback -_0800ABCC: .4byte sub_800ABD4 -_0800ABD0: .4byte gUnknown_3003F24 - thumb_func_end sub_800AB9C - - thumb_func_start sub_800ABD4 -sub_800ABD4: @ 800ABD4 - push {lr} - ldr r0, _0800ABF0 @ =gLastRecvQueueCount - ldrb r0, [r0] - cmp r0, 0 - bne _0800ABEA - ldr r0, _0800ABF4 @ =0x00002ffe - bl BuildSendCmd - ldr r1, _0800ABF8 @ =gLinkCallback - ldr r0, _0800ABFC @ =sub_800AC00 - str r0, [r1] -_0800ABEA: - pop {r0} - bx r0 - .align 2, 0 -_0800ABF0: .4byte gLastRecvQueueCount -_0800ABF4: .4byte 0x00002ffe -_0800ABF8: .4byte gLinkCallback -_0800ABFC: .4byte sub_800AC00 - thumb_func_end sub_800ABD4 - - thumb_func_start sub_800AC00 -sub_800AC00: @ 800AC00 - push {r4,lr} - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - cmp r1, r2 - bcs _0800AC2A - ldr r3, _0800AC50 @ =gUnknown_3003F2C - ldrb r0, [r3] - cmp r0, 0 - beq _0800AC2A -_0800AC18: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcs _0800AC2A - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _0800AC18 -_0800AC2A: - cmp r1, r2 - bne _0800AC48 - movs r1, 0 - ldr r4, _0800AC54 @ =gLinkCallback - ldr r3, _0800AC50 @ =gUnknown_3003F2C - movs r2, 0 -_0800AC36: - adds r0, r1, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _0800AC36 - movs r0, 0 - str r0, [r4] -_0800AC48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800AC50: .4byte gUnknown_3003F2C -_0800AC54: .4byte gLinkCallback - thumb_func_end sub_800AC00 - - thumb_func_start CheckErrorStatus -CheckErrorStatus: @ 800AC58 - push {lr} - ldr r0, _0800AC9C @ =gLinkOpen - ldrb r0, [r0] - cmp r0, 0 - beq _0800AC98 - ldr r0, _0800ACA0 @ =gLinkStatus - ldr r2, [r0] - movs r0, 0xFE - lsls r0, 11 - ands r0, r2 - cmp r0, 0 - beq _0800AC98 - ldr r0, _0800ACA4 @ =gSuppressLinkErrorMessage - ldrb r0, [r0] - cmp r0, 0 - bne _0800AC8E - ldr r1, _0800ACA8 @ =sLinkErrorBuffer - str r2, [r1] - ldr r0, _0800ACAC @ =gLastRecvQueueCount - ldrb r0, [r0] - strb r0, [r1, 0x4] - ldr r0, _0800ACB0 @ =gLastSendQueueCount - ldrb r0, [r0] - strb r0, [r1, 0x5] - ldr r0, _0800ACB4 @ =CB2_LinkError - bl SetMainCallback2 -_0800AC8E: - ldr r1, _0800ACB8 @ =gLinkErrorOccurred - movs r0, 0x1 - strb r0, [r1] - bl CloseLink -_0800AC98: - pop {r0} - bx r0 - .align 2, 0 -_0800AC9C: .4byte gLinkOpen -_0800ACA0: .4byte gLinkStatus -_0800ACA4: .4byte gSuppressLinkErrorMessage -_0800ACA8: .4byte sLinkErrorBuffer -_0800ACAC: .4byte gLastRecvQueueCount -_0800ACB0: .4byte gLastSendQueueCount -_0800ACB4: .4byte CB2_LinkError -_0800ACB8: .4byte gLinkErrorOccurred - thumb_func_end CheckErrorStatus - thumb_func_start sub_800ACBC sub_800ACBC: @ 800ACBC push {r4,lr} diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 3b6ec730f..04c4621e7 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -2148,8 +2148,8 @@ _080F9718: .4byte gUnknown_3005AF0 _080F971C: .4byte gUnknown_30054BE thumb_func_end sub_80F965C - thumb_func_start sub_80F9720 -sub_80F9720: @ 80F9720 + thumb_func_start Rfu_SetBlockReceivedFlag +Rfu_SetBlockReceivedFlag: @ 80F9720 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -2173,10 +2173,10 @@ _080F9740: _080F9748: pop {r0} bx r0 - thumb_func_end sub_80F9720 + thumb_func_end Rfu_SetBlockReceivedFlag - thumb_func_start sub_80F974C -sub_80F974C: @ 80F974C + thumb_func_start Rfu_ResetBlockReceivedFlag +Rfu_ResetBlockReceivedFlag: @ 80F974C lsls r0, 24 lsrs r0, 24 ldr r3, _080F976C @ =gUnknown_3005450 @@ -2194,7 +2194,7 @@ sub_80F974C: @ 80F974C bx lr .align 2, 0 _080F976C: .4byte gUnknown_3005450 - thumb_func_end sub_80F974C + thumb_func_end Rfu_ResetBlockReceivedFlag thumb_func_start sub_80F9770 sub_80F9770: @ 80F9770 @@ -2281,8 +2281,8 @@ sub_80F9800: @ 80F9800 _080F9804: .4byte gUnknown_3005440 thumb_func_end sub_80F9800 - thumb_func_start sub_80F9808 -sub_80F9808: @ 80F9808 + thumb_func_start IsSendingKeysToRfu +IsSendingKeysToRfu: @ 80F9808 push {lr} movs r2, 0 ldr r0, _080F9820 @ =gUnknown_3005450 @@ -2298,7 +2298,7 @@ _080F9818: .align 2, 0 _080F9820: .4byte gUnknown_3005450 _080F9824: .4byte rfu_func_080F97B8 - thumb_func_end sub_80F9808 + thumb_func_end IsSendingKeysToRfu thumb_func_start sub_80F9828 sub_80F9828: @ 80F9828 @@ -2326,15 +2326,15 @@ _080F9854: .4byte gUnknown_843EDC4 _080F9858: .4byte rfu_func_080F97B8 thumb_func_end sub_80F9828 - thumb_func_start sub_80F985C -sub_80F985C: @ 80F985C + thumb_func_start Rfu_set_zero +Rfu_set_zero: @ 80F985C ldr r1, _080F9864 @ =gUnknown_3005450 movs r0, 0 str r0, [r1] bx lr .align 2, 0 _080F9864: .4byte gUnknown_3005450 - thumb_func_end sub_80F985C + thumb_func_end Rfu_set_zero thumb_func_start sub_80F9868 sub_80F9868: @ 80F9868 @@ -2597,7 +2597,7 @@ _080F9A4C: mov r1, r8 lsls r0, r1, 24 lsrs r0, 24 - bl sub_80F9720 + bl Rfu_SetBlockReceivedFlag bl sub_80F9800 ldrb r1, [r0, 0xA] movs r0, 0x7F @@ -2637,7 +2637,7 @@ _080F9A9C: adds r2, 0x4 adds r1, r2 ldrh r1, [r1] - bl sub_80F9E60 + bl Rfu_InitBlockSend b _080F9BF4 .align 2, 0 _080F9AB8: .4byte gUnknown_843EC64 @@ -2909,8 +2909,8 @@ sub_80F9CB4: @ 80F9CB4 bx lr thumb_func_end sub_80F9CB4 - thumb_func_start sub_80F9CC8 -sub_80F9CC8: @ 80F9CC8 + thumb_func_start Rfu_GetBlockReceivedStatus +Rfu_GetBlockReceivedStatus: @ 80F9CC8 push {r4,lr} movs r2, 0 movs r1, 0 @@ -2942,7 +2942,7 @@ _080F9CEE: bx r1 .align 2, 0 _080F9D00: .4byte gUnknown_3005450 - thumb_func_end sub_80F9CC8 + thumb_func_end Rfu_GetBlockReceivedStatus thumb_func_start sub_80F9D04 sub_80F9D04: @ 80F9D04 @@ -3126,8 +3126,8 @@ _080F9E58: .4byte gSendCmd _080F9E5C: .4byte gUnknown_3005542 thumb_func_end sub_80F9E2C - thumb_func_start sub_80F9E60 -sub_80F9E60: @ 80F9E60 + thumb_func_start Rfu_InitBlockSend +Rfu_InitBlockSend: @ 80F9E60 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -3235,7 +3235,7 @@ _080F9F2A: _080F9F38: .4byte gBlockSendBuffer _080F9F3C: .4byte gUnknown_3005450 _080F9F40: .4byte rfufunc_80F9F44 - thumb_func_end sub_80F9E60 + thumb_func_end Rfu_InitBlockSend thumb_func_start rfufunc_80F9F44 rfufunc_80F9F44: @ 80F9F44 @@ -4003,17 +4003,17 @@ _080FA4E6: bx r1 thumb_func_end rfu_get_multiplayer_id - thumb_func_start sub_80FA4EC -sub_80FA4EC: @ 80FA4EC + thumb_func_start GetRfuPlayerCount +GetRfuPlayerCount: @ 80FA4EC ldr r0, _080FA4F4 @ =gUnknown_3005450 ldrb r0, [r0, 0xD] bx lr .align 2, 0 _080FA4F4: .4byte gUnknown_3005450 - thumb_func_end sub_80FA4EC + thumb_func_end GetRfuPlayerCount - thumb_func_start IsNoOneConnected -IsNoOneConnected: @ 80FA4F8 + thumb_func_start IsRfuTaskFinished +IsRfuTaskFinished: @ 80FA4F8 push {lr} movs r1, 0 ldr r0, _080FA50C @ =gUnknown_3005450 @@ -4027,7 +4027,7 @@ _080FA506: bx r1 .align 2, 0 _080FA50C: .4byte gUnknown_3005450 - thumb_func_end IsNoOneConnected + thumb_func_end IsRfuTaskFinished thumb_func_start sub_80FA510 sub_80FA510: @ 80FA510 @@ -4590,7 +4590,7 @@ _080FA940: bl sub_800B110 lsls r0, r4, 24 lsrs r0, 24 - bl sub_80F974C + bl Rfu_ResetBlockReceivedFlag adds r4, 0x1 ldrb r2, [r5, 0xD] cmp r4, r2 @@ -6812,14 +6812,14 @@ sub_80FBA1C: @ 80FBA1C _080FBA28: .4byte gUnknown_3005450 thumb_func_end sub_80FBA1C - thumb_func_start sub_80FBA2C -sub_80FBA2C: @ 80FBA2C + thumb_func_start Rfu_IsMaster +Rfu_IsMaster: @ 80FBA2C ldr r0, _080FBA34 @ =gUnknown_3005450 ldrb r0, [r0, 0xC] bx lr .align 2, 0 _080FBA34: .4byte gUnknown_3005450 - thumb_func_end sub_80FBA2C + thumb_func_end Rfu_IsMaster thumb_func_start RFUVSync RFUVSync: @ 80FBA38 diff --git a/asm/overworld.s b/asm/overworld.s index 10d1b4ee8..ef63df6bb 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5643,7 +5643,7 @@ c1_link_related: @ 8057884 bl sub_80F90DC cmp r0, 0 beq _0805789E - bl sub_800A00C + bl IsSendingKeysToLink cmp r0, 0 bne _080578C0 _0805789E: @@ -6147,7 +6147,7 @@ _08057C72: bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _08057CA8 - bl sub_800A00C + bl IsSendingKeysToLink cmp r0, 0x1 bne _08057CA8 cmp r4, 0x11 @@ -7012,7 +7012,7 @@ sub_8058274: @ 8058274 bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _080582D8 - bl sub_800A00C + bl IsSendingKeysToLink cmp r0, 0x1 bne _080582D8 ldr r0, _080582C4 @ =gUnknown_3000E84 @@ -7065,7 +7065,7 @@ sub_80582E0: @ 80582E0 bl IsUpdateLinkStateCBActive cmp r0, 0x1 bne _08058304 - bl sub_800A00C + bl IsSendingKeysToLink cmp r0, 0x1 bne _08058304 ldr r0, _08058308 @ =gUnknown_3000E84 @@ -7093,7 +7093,7 @@ sub_8058318: @ 8058318 ldrb r0, [r0] cmp r0, 0 bne _08058334 - bl sub_800A00C + bl IsSendingKeysToLink cmp r0, 0 beq _08058334 movs r0, 0x1 diff --git a/asm/trade.s b/asm/trade.s index 52db4c7d2..0c1c168cc 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -334,7 +334,7 @@ _0804C8F0: .4byte gUnknown_2031DA8 _0804C8F4: bl GetLinkPlayerCount_2 adds r4, r0, 0 - bl sub_800A944 + bl GetSavedPlayerCount lsls r4, 24 lsls r0, 24 cmp r4, r0 @@ -422,7 +422,7 @@ _0804C9B0: ldrb r0, [r0] cmp r0, 0 beq _0804C9E8 - bl IsNoOneConnected + bl IsRfuTaskFinished lsls r0, 24 cmp r0, 0 bne _0804C9C4 @@ -1832,7 +1832,7 @@ sub_804D5A4: @ 804D5A4 ldrb r0, [r0] cmp r0, 0 beq _0804D5FC - bl IsNoOneConnected + bl IsRfuTaskFinished lsls r0, 24 cmp r0, 0 beq _0804D620 @@ -7557,7 +7557,7 @@ _080502A8: _080502B4: bl GetLinkPlayerCount_2 adds r4, r0, 0 - bl sub_800A944 + bl GetSavedPlayerCount lsls r4, 24 lsls r0, 24 cmp r4, r0 @@ -14745,7 +14745,7 @@ _0805434C: ldr r0, _08054378 @ =sub_804C718 cmp r1, r0 bne _08054384 - bl IsNoOneConnected + bl IsRfuTaskFinished lsls r0, 24 cmp r0, 0 beq _08054396 diff --git a/include/link.h b/include/link.h index 220465046..1360ce8cc 100644 --- a/include/link.h +++ b/include/link.h @@ -19,6 +19,20 @@ #define LINK_STAT_RECEIVED_NOTHING 0x00000100 #define LINK_STAT_RECEIVED_NOTHING_SHIFT 8 #define LINK_STAT_ERRORS 0x0007F000 +#define LINK_STAT_ERRORS_SHIFT 12 + +#define LINK_STAT_ERROR_HARDWARE 0x00001000 +#define LINK_STAT_ERROR_HARDWARE_SHIFT 12 +#define LINK_STAT_ERROR_CHECKSUM 0x00002000 +#define LINK_STAT_ERROR_CHECKSUM_SHIFT 13 +#define LINK_STAT_ERROR_QUEUE_FULL 0x00004000 +#define LINK_STAT_ERROR_QUEUE_FULL_SHIFT 14 +#define LINK_STAT_ERROR_LAG_MASTER 0x00010000 +#define LINK_STAT_ERROR_LAG_MASTER_SHIFT 16 +#define LINK_STAT_ERROR_INVALID_ID 0x00020000 +#define LINK_STAT_ERROR_INVALID_ID_SHIFT 17 +#define LINK_STAT_ERROR_LAG_SLAVE 0x00040000 +#define LINK_STAT_ERROR_LAG_SLAVE_SHIFT 18 #define EXTRACT_PLAYER_COUNT(status) \ (((status) & LINK_STAT_PLAYER_COUNT) >> LINK_STAT_PLAYER_COUNT_SHIFT) @@ -28,6 +42,8 @@ (((status) >> LINK_STAT_CONN_ESTABLISHED_SHIFT) & 1) #define EXTRACT_RECEIVED_NOTHING(status) \ (((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1) +#define EXTRACT_LINK_ERRORS(status) \ +(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) #define LINKCMD_SEND_LINK_TYPE 0x2222 #define LINKCMD_0x2FFE 0x2FFE @@ -62,6 +78,10 @@ enum EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, EXCHANGE_IN_PROGRESS, + EXCHANGE_STAT_4, + EXCHANGE_STAT_5, + EXCHANGE_STAT_6, + EXCHANGE_STAT_7 }; enum @@ -174,7 +194,7 @@ void ClearLinkCallback(void); void ClearLinkCallback_2(void); u8 GetLinkPlayerCount(void); void OpenLinkTimed(void); -u8 GetLinkPlayerDataExchangeStatusTimed(void); +u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int higher); bool8 IsLinkPlayerDataExchangeComplete(void); u32 GetLinkPlayerTrainerId(u8); void ResetLinkPlayers(void); @@ -217,7 +237,7 @@ void sub_800AAC0(void); void OpenLink(void); bool8 IsLinkMaster(void); void CheckShouldAdvanceLinkState(void); -void sub_800AA80(u8); +void sub_800AA80(u16 a0); void sub_80098D8(void); void CloseLink(void); bool8 IsLinkTaskFinished(void); @@ -228,6 +248,7 @@ void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); -void sub_800A068(void); +void ClearLinkCallback_2(void); +void sub_80FA42C(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index e7fa2a848..e64c0ed59 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -11,7 +11,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); void MG_DrawCheckerboardPattern(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); -bool8 IsNoOneConnected(void); +bool8 IsRfuTaskFinished(void); void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); @@ -22,5 +22,16 @@ void sub_80FBB4C(void); void sub_80F86F4(void); void sub_80FB128(bool32 a0); u32 sub_80FD3A4(void); +bool32 IsSendingKeysToRfu(void); +void Rfu_set_zero(void); +u8 GetRfuPlayerCount(void); +void sub_80F9828(void); +u8 rfu_get_multiplayer_id(void); +bool8 Rfu_InitBlockSend(const void * src, u16 size); +bool8 sub_80FA0F8(u8 a0); +u8 Rfu_GetBlockReceivedStatus(void); +void Rfu_SetBlockReceivedFlag(u8 who); +void Rfu_ResetBlockReceivedFlag(u8 who); +bool8 Rfu_IsMaster(void); #endif //GUARD_LINK_RFU_H diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..02ed7d8c4 --- /dev/null +++ b/include/trade.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +s32 sub_804FB34(void); + +#endif //GUARD_TRADE_H diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index b8ed41c06..2ed3b80b9 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -654,7 +654,7 @@ static void sub_807E678(u8 taskId) switch (data[0]) { case 0: - sub_800A068(); + ClearLinkCallback_2(); fade_screen(1, 0); sub_8055F88(); PlaySE(SE_KAIDAN); diff --git a/src/link.c b/src/link.c index 6f28f78c8..fce0026c6 100644 --- a/src/link.c +++ b/src/link.c @@ -5,6 +5,7 @@ #include "decompress.h" #include "malloc.h" #include "save.h" +#include "battle.h" #include "quest_log.h" #include "link_rfu.h" #include "librfu.h" @@ -13,7 +14,9 @@ #include "event_data.h" #include "string_util.h" #include "item_menu.h" +#include "trade.h" #include "link.h" +#include "constants/battle.h" extern u16 gHeldKeyCodeToSend; @@ -116,20 +119,29 @@ void InitLocalLinkPlayer(void); void sub_800978C(void); void CB2_LinkTest(void); void ProcessRecvCmds(u8 id); -void InitBlockSend(const void * src, size_t size); +void sub_800A040(void); +void ResetBlockSend(void); +bool32 InitBlockSend(const void * src, size_t size); +void LinkCB_BlockSendBegin(void); +void LinkCB_BlockSend(void); +void LinkCB_BlockSendEnd(void); +void sub_800A3CC(void); +void SetBlockReceivedFlag(u8 id); u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2); void LinkCB_RequestPlayerDataExchange(void); -void ResetBlockSend(void); -void task00_link_test(u8 taskId); +void Task_PrintTestData(u8 taskId); +void sub_800AB0C(void); +void sub_800AB38(void); +void sub_800ABD4(void); +void sub_800AC00(void); +void CheckErrorStatus(void); void EnableSerial(void); void sub_800B210(void); void sub_80F8DC0(void); void DisableSerial(void); -void CheckErrorStatus(void); void sub_800B284(struct LinkPlayer * linkPlayer); -void SetBlockReceivedFlag(u8 id); -void sub_800A3CC(void); +bool8 IsSioMultiMaster(void); ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); const u16 gWirelessLinkDisplay4bpp[] = INCBIN_U16("graphics/interface/wireless_link_display.4bpp.lz"); @@ -234,7 +246,7 @@ void LinkTestScreen(void) UpdatePaletteFade(); gUnknown_3000E58 = 0; InitLocalLinkPlayer(); - CreateTask(task00_link_test, 0); + CreateTask(Task_PrintTestData, 0); SetMainCallback2(CB2_LinkTest); } @@ -640,3 +652,734 @@ void BuildSendCmd(u16 command) break; } } + +void sub_8009FE8(void) +{ + if (gWirelessCommType) + { + sub_80F9828(); + } + gLinkCallback = sub_800A040; +} + +bool32 IsSendingKeysToLink(void) +{ + if (gWirelessCommType) + { + return IsSendingKeysToRfu(); + } + if (gLinkCallback == sub_800A040) + { + return TRUE; + } + return FALSE; +} + +void sub_800A040(void) +{ + if (gReceivedRemoteLinkPlayers == TRUE) + { + BuildSendCmd(LINKCMD_SEND_HELD_KEYS_2); + } +} + +void ClearLinkCallback(void) +{ + gLinkCallback = NULL; +} + +void ClearLinkCallback_2(void) +{ + if (gWirelessCommType) + { + Rfu_set_zero(); + } + else + { + gLinkCallback = NULL; + } +} + +u8 GetLinkPlayerCount(void) +{ + if (gWirelessCommType) + { + return GetRfuPlayerCount(); + } + return EXTRACT_PLAYER_COUNT(gLinkStatus); +} + +void OpenLinkTimed(void) +{ + sPlayerDataExchangeStatus = 0; + gLinkTimeOutCounter = 0; + OpenLink(); +} + +u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper) +{ + int i; + int count; + u32 index; + u8 cmpVal; + u32 linkType1; + u32 linkType2; + + count = 0; + if (gReceivedRemoteLinkPlayers == TRUE) + { + cmpVal = GetLinkPlayerCount_2(); + if (lower > cmpVal || cmpVal > upper) + { + sPlayerDataExchangeStatus = EXCHANGE_STAT_6; + return 6; + } + else + { + if (GetLinkPlayerCount() == 0) + { + gLinkErrorOccurred = TRUE; + CloseLink(); + } + for (i = 0, index = 0; i < GetLinkPlayerCount(); index++, i++) + { + if (gLinkPlayers[index].linkType == gLinkPlayers[0].linkType) + { + count++; + } + } + if (count == GetLinkPlayerCount()) + { + if (gLinkPlayers[0].linkType == 0x1133) + { + switch (sub_804FB34()) + { + case 0: + sPlayerDataExchangeStatus = EXCHANGE_COMPLETE; + break; + case 1: + sPlayerDataExchangeStatus = EXCHANGE_STAT_4; + break; + case 2: + sPlayerDataExchangeStatus = EXCHANGE_STAT_5; + break; + } + } + else + { + sPlayerDataExchangeStatus = EXCHANGE_COMPLETE; + } + } + else + { + sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; + } + } + } + else if (++gLinkTimeOutCounter > 600) + { + sPlayerDataExchangeStatus = EXCHANGE_TIMED_OUT; + } + return sPlayerDataExchangeStatus; +} + +bool8 IsLinkPlayerDataExchangeComplete(void) +{ + u8 i; + u8 count; + bool8 retval; + + count = 0; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (gLinkPlayers[i].linkType == gLinkPlayers[0].linkType) + { + count++; + } + } + if (count == GetLinkPlayerCount()) + { + retval = TRUE; + sPlayerDataExchangeStatus = EXCHANGE_COMPLETE; + } + else + { + retval = FALSE; + sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; + } + return retval; +} + +u32 GetLinkPlayerTrainerId(u8 who) +{ + return gLinkPlayers[who].trainerId; +} + +void ResetLinkPlayers(void) +{ + int i; + + for (i = 0; i <= MAX_LINK_PLAYERS; i++) + { + gLinkPlayers[i] = (struct LinkPlayer){}; + } +} + +void ResetBlockSend(void) +{ + sBlockSend.active = FALSE; + sBlockSend.pos = 0; + sBlockSend.size = 0; + sBlockSend.src = NULL; +} + +bool32 InitBlockSend(const void *src, size_t size) +{ + if (sBlockSend.active) + { + return FALSE; + } + sBlockSend.multiplayerId = GetMultiplayerId(); + sBlockSend.active = TRUE; + sBlockSend.size = size; + sBlockSend.pos = 0; + if (size > 0x100) + { + sBlockSend.src = src; + } + else + { + if (src != gBlockSendBuffer) + { + memcpy(gBlockSendBuffer, src, size); + } + sBlockSend.src = gBlockSendBuffer; + } + BuildSendCmd(LINKCMD_INIT_BLOCK); + gLinkCallback = LinkCB_BlockSendBegin; + sBlockSendDelayCounter = 0; + return TRUE; +} + +void LinkCB_BlockSendBegin(void) +{ + if (++sBlockSendDelayCounter > 2) + { + gLinkCallback = LinkCB_BlockSend; + } +} + +void LinkCB_BlockSend(void) +{ + int i; + const u8 *src; + + src = sBlockSend.src; + gSendCmd[0] = LINKCMD_CONT_BLOCK; + for (i = 0; i < 7; i++) + { + gSendCmd[i + 1] = (src[sBlockSend.pos + i * 2 + 1] << 8) | src[sBlockSend.pos + i * 2]; + } + sBlockSend.pos += 14; + if (sBlockSend.size <= sBlockSend.pos) + { + sBlockSend.active = FALSE; + gLinkCallback = LinkCB_BlockSendEnd; + } +} + +void LinkCB_BlockSendEnd(void) +{ + gLinkCallback = NULL; +} +void sub_800A3AC(void) +{ + GetMultiplayerId(); + BuildSendCmd(LINKCMD_SEND_HELD_KEYS); + gUnknown_2022114++; +} + +void sub_800A3CC(void) +{ + gUnknown_2022114 = 0; + gLinkCallback = sub_800A3AC; +} + + +u32 sub_800A3E8(void) +{ + return gUnknown_2022114; +} + +void sub_800A3F4(void) +{ + BuildSendCmd(LINKCMD_0xAAAA); +} + +u8 GetMultiplayerId(void) +{ + if (gWirelessCommType == TRUE) + { + return rfu_get_multiplayer_id(); + } + return SIO_MULTI_CNT->id; +} + +u8 bitmask_all_link_players_but_self(void) +{ + u8 mpId; + + mpId = GetMultiplayerId(); + return ((1 << MAX_LINK_PLAYERS) - 1) ^ (1 << mpId); +} + +bool8 SendBlock(u8 unused, const void *src, u16 size) +{ + if (gWirelessCommType == TRUE) + { + return Rfu_InitBlockSend(src, size); + } + return InitBlockSend(src, size); +} + +bool8 sub_800A474(u8 a0) +{ + if (gWirelessCommType == TRUE) + { + return sub_80FA0F8(a0); + } + if (gLinkCallback == NULL) + { + gBlockRequestType = a0; + BuildSendCmd(LINKCMD_0xCCCC); + return TRUE; + } + return FALSE; +} + +bool8 IsLinkTaskFinished(void) +{ + if (gWirelessCommType == TRUE) + { + return IsRfuTaskFinished(); + } + return gLinkCallback == NULL; +} + +u8 GetBlockReceivedStatus(void) +{ + if (gWirelessCommType == TRUE) + { + return Rfu_GetBlockReceivedStatus(); + } + return (gBlockReceivedStatus[3] << 3) | (gBlockReceivedStatus[2] << 2) | (gBlockReceivedStatus[1] << 1) | (gBlockReceivedStatus[0] << 0); +} + +void SetBlockReceivedFlag(u8 who) +{ + if (gWirelessCommType == TRUE) + { + Rfu_SetBlockReceivedFlag(who); + } + else + { + gBlockReceivedStatus[who] = TRUE; + } +} + +void ResetBlockReceivedFlags(void) +{ + int i; + + if (gWirelessCommType == TRUE) + { + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + Rfu_ResetBlockReceivedFlag(i); + } + } + else + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gBlockReceivedStatus[i] = FALSE; + } + } +} + +void ResetBlockReceivedFlag(u8 who) +{ + if (gWirelessCommType == TRUE) + { + Rfu_ResetBlockReceivedFlag(who); + } + else if (gBlockReceivedStatus[who]) + { + gBlockReceivedStatus[who] = FALSE; + } +} + +void CheckShouldAdvanceLinkState(void) +{ + if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1) + { + gShouldAdvanceLinkState = 1; + } +} + +u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size) +{ + u16 chksum; + u16 i; + + chksum = 0; + for (i = 0; i < size / 2; i++) + { + chksum += src[i]; + } + return chksum; +} + +void LinkTest_prnthexchar(char a0, u8 a1, u8 a2) +{ + u16 *vAddr; + + vAddr = (u16 *)BG_SCREEN_ADDR(gLinkTestBGInfo.screenBaseBlock); + vAddr[a2 * 32 + a1] = (gLinkTestBGInfo.paletteNum << 12) | (a0 + 1 + gLinkTestBGInfo.dummy_8); +} + +void LinkTest_prntchar(char a0, u8 a1, u8 a2) +{ + u16 *vAddr; + + vAddr = (u16 *)BG_SCREEN_ADDR(gLinkTestBGInfo.screenBaseBlock); + vAddr[a2 * 32 + a1] = (gLinkTestBGInfo.paletteNum << 12) | (a0 + gLinkTestBGInfo.dummy_8); +} + +void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2) +{ + char sp[32 / 2]; + int i; + + for (i = 0; i < a2; i++) + { + sp[i] = pos & 0xf; + pos >>= 4; + } + for (i = a2 - 1; i >= 0; i--) + { + LinkTest_prnthexchar(sp[i], a0, a1); + a0++; + } +} + +void LinkTest_prntstr(const char *a0, u8 a1, u8 a2) +{ + int r6; + int i; + int r5; + + r5 = 0; + r6 = 0; + for (i = 0; a0[i] != 0; a0++) + { + if (a0[i] == *"\n") + { + r5++; + r6 = 0; + } + else + { + LinkTest_prntchar(a0[i], a1 + r6, a2 + r5); + r6++; + } + } +} + +void LinkCB_RequestPlayerDataExchange(void) +{ + if (gLinkStatus & LINK_STAT_MASTER) + { + BuildSendCmd(LINKCMD_SEND_LINK_TYPE); + } + gLinkCallback = NULL; +} + +void Task_PrintTestData(u8 taskId) +{ + char sp[32]; + int i; + + strcpy(sp, gASCIITestPrint); + LinkTest_prntstr(sp, 5, 2); + LinkTest_prnthex(gShouldAdvanceLinkState, 2, 1, 2); + LinkTest_prnthex(gLinkStatus, 15, 1, 8); + LinkTest_prnthex(gLink.state, 2, 10, 2); + LinkTest_prnthex(EXTRACT_PLAYER_COUNT(gLinkStatus), 15, 10, 2); + LinkTest_prnthex(GetMultiplayerId(), 15, 12, 2); + LinkTest_prnthex(gLastSendQueueCount, 25, 1, 2); + LinkTest_prnthex(gLastRecvQueueCount, 25, 2, 2); + LinkTest_prnthex(GetBlockReceivedStatus(), 15, 5, 2); + LinkTest_prnthex(gLinkDebugSeed, 2, 12, 8); + LinkTest_prnthex(gLinkDebugFlags, 2, 13, 8); + LinkTest_prnthex(GetSioMultiSI(), 25, 5, 1); + LinkTest_prnthex(IsSioMultiMaster(), 25, 6, 1); + LinkTest_prnthex(IsLinkConnectionEstablished(), 25, 7, 1); + LinkTest_prnthex(HasLinkErrorOccurred(), 25, 8, 1); + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + LinkTest_prnthex(gLinkTestBlockChecksums[i], 10, 4 + i, 4); + } +} + +void SetLinkDebugValues(u32 seed, u32 flags) +{ + gLinkDebugSeed = seed; + gLinkDebugFlags = flags; +} + +u8 sub_800A8A4(void) +{ + int i; + u8 flags; + + flags = 0; + for (i = 0; i < gSavedLinkPlayerCount; i++) + { + flags |= (1 << i); + } + return flags; +} + +u8 sub_800A8D4(void) +{ + int i; + u8 flags; + + flags = 0; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + flags |= (1 << i); + } + return flags; +} + +void sub_800A900(u8 a0) +{ + int i; + + gSavedLinkPlayerCount = a0; + gSavedMultiplayerId = GetMultiplayerId(); + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + gSavedLinkPlayers[i] = gLinkPlayers[i]; + } +} + +// The number of players when trading began. This is frequently compared against the +// current number of connected players to check if anyone dropped out. +u8 GetSavedPlayerCount(void) +{ + return gSavedLinkPlayerCount; +} + +u8 GetSavedMultiplayerId(void) +{ + return gSavedMultiplayerId; +} + +bool8 sub_800A95C(void) +{ + int i; + unsigned count; + + count = 0; + for (i = 0; i < gSavedLinkPlayerCount; i++) + { + if (gLinkPlayers[i].trainerId == gSavedLinkPlayers[i].trainerId) + { + count++; + } + } + if (count == gSavedLinkPlayerCount) + { + return TRUE; + } + return FALSE; +} + +void sub_800A9A4(void) +{ + u8 i; + + for (i = 0; i < gSavedLinkPlayerCount; i++) + { + if (gSavedLinkPlayers[i].trainerId != gLinkPlayers[i].trainerId || StringCompare(gSavedLinkPlayers[i].name, gLinkPlayers[i].name) != 0) + { + gLinkErrorOccurred = TRUE; + CloseLink(); + SetMainCallback2(CB2_LinkError); + } + } +} + +void sub_800AA24(void) +{ + gSavedLinkPlayerCount = 0; + gSavedMultiplayerId = 0; +} + +u8 GetLinkPlayerCount_2(void) +{ + return EXTRACT_PLAYER_COUNT(gLinkStatus); +} + +bool8 IsLinkMaster(void) +{ + if (gWirelessCommType) + { + return Rfu_IsMaster(); + } + return EXTRACT_MASTER(gLinkStatus); +} + +u8 sub_800AA74(void) +{ + return gUnknown_3000E50; +} + +void sub_800AA80(u16 a0) +{ + if (gWirelessCommType == TRUE) + { + task_add_05_task_del_08FA224_when_no_RfuFunc(); + } + else + { + if (gLinkCallback == NULL) + { + gLinkCallback = sub_800AB0C; + gUnknown_3003F24 = FALSE; + gUnknown_3003F34 = a0; + } + } +} + +void sub_800AAC0(void) +{ + if (gWirelessCommType == TRUE) + { + task_add_05_task_del_08FA224_when_no_RfuFunc(); + } + else + { + if (gLinkCallback != NULL) + { + gUnknown_202285C++; + } + else + { + gLinkCallback = sub_800AB0C; + gUnknown_3003F24 = FALSE; + gUnknown_3003F34 = 0; + } + } +} + +void sub_800AB0C(void) +{ + if (gLastRecvQueueCount == 0) + { + BuildSendCmd(LINKCMD_0x5FFF); + gLinkCallback = sub_800AB38; + } +} + +void sub_800AB38(void) +{ + int i; + unsigned count; + u8 linkPlayerCount; + + linkPlayerCount = GetLinkPlayerCount(); + count = 0; + for (i = 0; i < linkPlayerCount; i++) + { + if (gUnknown_3003F30[i]) + { + count++; + } + } + if (count == linkPlayerCount) + { + gBattleTypeFlags &= ~(BATTLE_TYPE_20 | 0xFFFF0000); + gLinkVSyncDisabled = TRUE; + CloseLink(); + gLinkCallback = NULL; + gUnknown_3003F24 = TRUE; + } +} + +void sub_800AB9C(void) +{ + if (gWirelessCommType == TRUE) + { + sub_80FA42C(); + } + else + { + if (gLinkCallback == NULL) + { + gLinkCallback = sub_800ABD4; + } + gUnknown_3003F24 = FALSE; + } +} + +void sub_800ABD4(void) +{ + if (gLastRecvQueueCount == 0) + { + BuildSendCmd(LINKCMD_0x2FFE); + gLinkCallback = sub_800AC00; + } +} + +void sub_800AC00(void) +{ + u8 i; + u8 linkPlayerCount; + + linkPlayerCount = GetLinkPlayerCount(); + for (i = 0; i < linkPlayerCount; i++) + { + if (!gUnknown_3003F2C[i]) + { + break; + } + } + if (i == linkPlayerCount) + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gUnknown_3003F2C[i] = FALSE; + } + gLinkCallback = NULL; + } +} + +void CheckErrorStatus(void) +{ + if (gLinkOpen && EXTRACT_LINK_ERRORS(gLinkStatus)) + { + if (!gSuppressLinkErrorMessage) + { + sLinkErrorBuffer.status = gLinkStatus; + sLinkErrorBuffer.lastRecvQueueCount = gLastRecvQueueCount; + sLinkErrorBuffer.lastSendQueueCount = gLastSendQueueCount; + SetMainCallback2(CB2_LinkError); + } + gLinkErrorOccurred = TRUE; + CloseLink(); + } +} \ No newline at end of file diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 57bc07f33..dbc685602 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -1436,7 +1436,7 @@ void task00_mystery_gift(u8 taskId) } break; case 13: - if (IsNoOneConnected()) + if (IsRfuTaskFinished()) { DestroyWirelessStatusIndicatorSprite(); data->state = 14; @@ -1712,7 +1712,7 @@ void task00_mystery_gift(u8 taskId) data->state = 34; break; case 34: - if (IsNoOneConnected()) + if (IsRfuTaskFinished()) { DestroyWirelessStatusIndicatorSprite(); data->state = 35; From 23d011b04b641a4b3dc7cf92898fc60d6377e82f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 20:05:20 -0400 Subject: [PATCH 094/100] Add missing graphics --- graphics/interface/link_test_font.png | Bin 0 -> 1801 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 graphics/interface/link_test_font.png diff --git a/graphics/interface/link_test_font.png b/graphics/interface/link_test_font.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f72c83a06253cdcd53c6791fa36737f035d2b4 GIT binary patch literal 1801 zcmV+k2ln`hP)Ce{}RC<;kB`O~xeXWuwuYmAl%2xvqsZT8b-+jnHv z?G@WH%c(><+I)J+F-G&eM}0PDTjnOU1Ocy?18n=zEIYtNN4DpZ54NLE5HRQ305V}0 z1y02gR2_?ohA~M&0@$1AxW$Z{9BVMCAOI=ICA{`n29{%;B>?=naVeK2T$y;P%dyIK zyfIVm#CWc6QO@V~E>8S(8MDXCs;g9%TH3o<@0yJa9b<@MAnNKB?Q@_G^=FySvwmq) zFrwRhqt84+HU8&Mw;Aof8-7=#0By7E-P*v2KCFj;toiQ*Ie-!0y^OzWTTyeFYJlKRCMb8u=*?B&9QSEW4+gz3xMy!Iq*0L_VU3FdQ8v*o9Aqa zShfH;S^!~c0ywa5w3a1a79djKgN=M?Cjczt1qxz$r=@^wGg}krmDUEf#z|`!=~u zeZrf*)aN_Dzw~00X!JVFLe!{qcYeQ0LeL1QG&(tj&2WGlzn^+g#O&`3U~aVIrNL+^ z8b|be28c^(3tK^egY=Msi{D2sl5qtK0N?Tz;KuKJN9qFsa(UK1$`Wq;er~2Hj9<|x&I>o26v185MX(< z=CPoIBn1)3S!wM`Fb>9h16fgPLu;gxQBNVgU){l7JE=Z08;Pzz-`!mdM0U zCFmIKRX0YFST2Dl7S2k5JO&ws)D2x!2nilB6KABnIlE_#<59=?;pft$FsSEWBtLdq z#dtJ?+{Z@q%^Hk+rXV^wn4`^eCB)hODGrgL$Sdm!GpxHB*35E z^SFr_U3`mz1Rw<_^D!2Ha<{_{BtXoe2{EWNuBO2;@$)rRHjlhKQ_{Tsk%^zD8=2ne zz^z{RwZbTC1=sB=fVd&Tr5Bw7i^F*G6ZZ#QXaXZ6~xcx?zNr8qrA`_uVebx0D0MnYx>6K}4Lh$k#fShvP z%V~N4$O0_`C3He_10tSyn)`oGka@VQx`p#*FZ%d}pvu}qYYpy1l};mULk@yc^_a*f z@b?R#+dhw2w2F(?H^>PJqFXN#%$?hpxKd0ffMTKeBWt~U69ER7w0cLq_tiZKAQiDT zrD@`%w3j28M+5W=QaD!kdSjfJqv>$z+F~gg!FyjYj&74aAr*?U2UF3bFI_S3f(H$* zFEm^^v` z_!Wwvd9>4v1w4gBlrfS>+2;L1djO=)mtgAzz-@L~d{`XmNkOLqrP25!fY7~{z;o^I zE(@Rzegp_peNl`II?MhpO8}{U$iSWtK16sU9v|wcHuLA?|8J0kdH%`Amm_fb)Kps> zL!Dj@ToEe@jimBCrwoloc=3VAjQpkj7z`-uHzOEMoCj=Br}e)8WJn0TS>KG{$}q@8 zHwr*RsEF(Zu|Zr^V5JuSfd|OS`3I~PFAu_)Xa=bDn-L-!*uGJ1KiccL(ql#ayK!Ru zw)l;l=Kv3U2R Date: Sun, 6 Oct 2019 21:08:53 -0400 Subject: [PATCH 095/100] link through ResetSerial --- asm/link.s | 831 -------------------------------------------- asm/link_rfu_2.s | 14 +- asm/overworld.s | 10 +- baserom.ips | Bin 1992005 -> 1991957 bytes data/data.s | 12 +- data/strings.s | 10 +- include/link.h | 2 +- include/link_rfu.h | 5 + include/overworld.h | 2 + include/strings.h | 7 + src/link.c | 379 +++++++++++++++++++- 11 files changed, 413 insertions(+), 859 deletions(-) diff --git a/asm/link.s b/asm/link.s index b0de10227..4b5b0e6b5 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,837 +5,6 @@ .text - thumb_func_start sub_800ACBC -sub_800ACBC: @ 800ACBC - push {r4,lr} - ldr r4, _0800ACD0 @ =sLinkErrorBuffer - str r0, [r4] - strb r1, [r4, 0x5] - strb r2, [r4, 0x4] - strb r3, [r4, 0x6] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800ACD0: .4byte sLinkErrorBuffer - thumb_func_end sub_800ACBC - - thumb_func_start CB2_LinkError -CB2_LinkError: @ 800ACD4 - push {r4,lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r0, _0800ADE0 @ =gMPlayInfo_SE1 - bl m4aMPlayStop - ldr r0, _0800ADE4 @ =gMPlayInfo_SE2 - bl m4aMPlayStop - ldr r0, _0800ADE8 @ =gMPlayInfo_SE3 - bl m4aMPlayStop - ldr r0, _0800ADEC @ =gHeap - movs r1, 0xE0 - lsls r1, 9 - bl InitHeap - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetPaletteFadeControl - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - bl ResetTasks - bl ScanlineEffect_Stop - ldr r1, _0800ADF0 @ =gWirelessCommType - ldrb r0, [r1] - cmp r0, 0 - beq _0800AD30 - ldr r0, _0800ADF4 @ =sLinkErrorBuffer - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _0800AD2C - movs r0, 0x3 - strb r0, [r1] -_0800AD2C: - bl sub_80F85F8 -_0800AD30: - ldr r0, _0800ADF8 @ =sub_800978C - bl SetVBlankCallback - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0800ADFC @ =gUnknown_82345E8 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r4, _0800AE00 @ =gUnknown_2022860 - movs r0, 0x80 - lsls r0, 4 - bl Alloc - adds r1, r0, 0 - str r1, [r4] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r0, _0800AE04 @ =gUnknown_82345F0 - bl InitWindows - lsls r0, 16 - cmp r0, 0 - beq _0800ADD8 - bl DeactivateAllTextPrinters - bl ResetTempTileDataBuffers - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r1, 0xE0 - lsls r1, 8 - movs r0, 0 - bl ClearGpuRegBits - ldr r0, _0800AE08 @ =gTMCaseMainWindowPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0800AE0C @ =gSoftResetDisabled - movs r0, 0 - strb r0, [r1] - ldr r0, _0800AE10 @ =Task_DestroySelf - movs r1, 0 - bl CreateTask - bl StopMapMusic - ldr r1, _0800AE14 @ =gMain - movs r0, 0 - str r0, [r1] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r0, _0800AE18 @ =sub_800AF2C - bl SetMainCallback2 -_0800ADD8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800ADE0: .4byte gMPlayInfo_SE1 -_0800ADE4: .4byte gMPlayInfo_SE2 -_0800ADE8: .4byte gMPlayInfo_SE3 -_0800ADEC: .4byte gHeap -_0800ADF0: .4byte gWirelessCommType -_0800ADF4: .4byte sLinkErrorBuffer -_0800ADF8: .4byte sub_800978C -_0800ADFC: .4byte gUnknown_82345E8 -_0800AE00: .4byte gUnknown_2022860 -_0800AE04: .4byte gUnknown_82345F0 -_0800AE08: .4byte gTMCaseMainWindowPalette -_0800AE0C: .4byte gSoftResetDisabled -_0800AE10: .4byte Task_DestroySelf -_0800AE14: .4byte gMain -_0800AE18: .4byte sub_800AF2C - thumb_func_end CB2_LinkError - - thumb_func_start sub_800AE1C -sub_800AE1C: @ 800AE1C - push {r4,r5,lr} - sub sp, 0xC - ldr r1, _0800AEB8 @ =gWirelessLinkDisplay4bpp - movs r5, 0 - str r5, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, _0800AEBC @ =gWirelessLinkDisplayBin - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r0, _0800AEC0 @ =gWirelessLinkDisplayPal - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r4, _0800AEC4 @ =gUnknown_8234610 - str r4, [sp] - str r5, [sp, 0x4] - ldr r0, _0800AEC8 @ =gUnknown_841DEF0 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0x5 - bl AddTextPrinterParameterized3 - str r4, [sp] - str r5, [sp, 0x4] - ldr r0, _0800AECC @ =gUnknown_841DF05 - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0x2 - bl AddTextPrinterParameterized3 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0 - bl CopyWindowToVram - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800AEB8: .4byte gWirelessLinkDisplay4bpp -_0800AEBC: .4byte gWirelessLinkDisplayBin -_0800AEC0: .4byte gWirelessLinkDisplayPal -_0800AEC4: .4byte gUnknown_8234610 -_0800AEC8: .4byte gUnknown_841DEF0 -_0800AECC: .4byte gUnknown_841DF05 - thumb_func_end sub_800AE1C - - thumb_func_start sub_800AED0 -sub_800AED0: @ 800AED0 - push {lr} - sub sp, 0xC - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, _0800AF24 @ =gUnknown_8234610 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, _0800AF28 @ =gUnknown_841DE9D - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0 - bl CopyWindowToVram - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0 - bl ShowBg - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0800AF24: .4byte gUnknown_8234610 -_0800AF28: .4byte gUnknown_841DE9D - thumb_func_end sub_800AED0 - - thumb_func_start sub_800AF2C -sub_800AF2C: @ 800AF2C - push {r4,lr} - sub sp, 0xC - ldr r0, _0800AF4C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3C - beq _0800AF72 - cmp r0, 0x3C - bgt _0800AF50 - cmp r0, 0 - beq _0800AF5A - cmp r0, 0x1E - beq _0800AF72 - b _0800AFC4 - .align 2, 0 -_0800AF4C: .4byte gMain -_0800AF50: - cmp r0, 0x5A - beq _0800AF72 - cmp r0, 0x82 - beq _0800AF7A - b _0800AFC4 -_0800AF5A: - ldr r0, _0800AF68 @ =sLinkErrorBuffer - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _0800AF6C - bl sub_800AE1C - b _0800AFC4 - .align 2, 0 -_0800AF68: .4byte sLinkErrorBuffer -_0800AF6C: - bl sub_800AED0 - b _0800AFC4 -_0800AF72: - movs r0, 0x16 - bl PlaySE - b _0800AFC4 -_0800AF7A: - ldr r0, _0800AF9C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x2 - bne _0800AFA8 - ldr r0, _0800AFA0 @ =gUnknown_8234610 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, _0800AFA4 @ =gUnknown_841DF6B - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0x14 - bl AddTextPrinterParameterized3 - b _0800AFC4 - .align 2, 0 -_0800AF9C: .4byte gWirelessCommType -_0800AFA0: .4byte gUnknown_8234610 -_0800AFA4: .4byte gUnknown_841DF6B -_0800AFA8: - cmp r0, 0x1 - bne _0800AFC4 - ldr r0, _0800AFFC @ =gUnknown_8234610 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r0, _0800B000 @ =gUnknown_841DF4C - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0x14 - bl AddTextPrinterParameterized3 -_0800AFC4: - ldr r0, _0800B004 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r0, r2 - ldrb r1, [r1] - cmp r1, 0xA0 - bne _0800B03C - ldr r4, _0800B008 @ =gWirelessCommType - ldrb r2, [r4] - cmp r2, 0x1 - bne _0800B010 - ldrh r0, [r0, 0x2E] - ands r2, r0 - cmp r2, 0 - beq _0800B02E - bl sub_812B484 - movs r0, 0x15 - bl PlaySE - movs r0, 0 - strb r0, [r4] - ldr r1, _0800B00C @ =sLinkErrorBuffer - movs r0, 0 - strb r0, [r1, 0x6] - bl sub_8079B7C - b _0800B02E - .align 2, 0 -_0800AFFC: .4byte gUnknown_8234610 -_0800B000: .4byte gUnknown_841DF4C -_0800B004: .4byte gMain -_0800B008: .4byte gWirelessCommType -_0800B00C: .4byte sLinkErrorBuffer -_0800B010: - cmp r2, 0x2 - bne _0800B02E - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0800B02E - bl sub_812B484 - bl rfu_REQ_stopMode - bl rfu_waitREQComplete - bl DoSoftReset -_0800B02E: - ldr r0, _0800B050 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r0, r2 - ldrb r1, [r1] - cmp r1, 0xA0 - beq _0800B048 -_0800B03C: - movs r2, 0x87 - lsls r2, 3 - adds r1, r0, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0800B048: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B050: .4byte gMain - thumb_func_end sub_800AF2C - - thumb_func_start GetSioMultiSI -GetSioMultiSI: @ 800B054 - ldr r0, _0800B060 @ =0x04000128 - ldrh r0, [r0] - lsrs r0, 2 - movs r1, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_0800B060: .4byte 0x04000128 - thumb_func_end GetSioMultiSI - - thumb_func_start IsSioMultiMaster -IsSioMultiMaster: @ 800B064 - push {lr} - movs r3, 0 - ldr r2, _0800B088 @ =0x04000128 - ldrh r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800B080 - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0800B080 - movs r3, 0x1 -_0800B080: - adds r0, r3, 0 - pop {r1} - bx r1 - .align 2, 0 -_0800B088: .4byte 0x04000128 - thumb_func_end IsSioMultiMaster - - thumb_func_start IsLinkConnectionEstablished -IsLinkConnectionEstablished: @ 800B08C - ldr r0, _0800B098 @ =gLinkStatus - ldr r0, [r0] - lsrs r0, 6 - movs r1, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_0800B098: .4byte gLinkStatus - thumb_func_end IsLinkConnectionEstablished - - thumb_func_start SetSuppressLinkErrorMessage -SetSuppressLinkErrorMessage: @ 800B09C - ldr r1, _0800B0A4 @ =gSuppressLinkErrorMessage - strb r0, [r1] - bx lr - .align 2, 0 -_0800B0A4: .4byte gSuppressLinkErrorMessage - thumb_func_end SetSuppressLinkErrorMessage - - thumb_func_start HasLinkErrorOccurred -HasLinkErrorOccurred: @ 800B0A8 - ldr r0, _0800B0B0 @ =gLinkErrorOccurred - ldrb r0, [r0] - bx lr - .align 2, 0 -_0800B0B0: .4byte gLinkErrorOccurred - thumb_func_end HasLinkErrorOccurred - - thumb_func_start sub_800B0B4 -sub_800B0B4: @ 800B0B4 - push {r4-r6,lr} - bl InitLocalLinkPlayer - ldr r1, _0800B100 @ =gLocalLinkPlayerBlock - adds r2, r1, 0 - adds r2, 0x10 - ldr r0, _0800B104 @ =gLocalLinkPlayer - ldm r0!, {r3-r5} - stm r2!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldr r0, [r0] - str r0, [r2] - ldr r3, _0800B108 @ =gASCIIGameFreakInc - adds r2, r1, 0 - adds r0, r3, 0 - ldm r0!, {r4-r6} - stm r2!, {r4-r6} - ldrh r4, [r0] - strh r4, [r2] - ldrb r0, [r0, 0x2] - strb r0, [r2, 0x2] - adds r0, r1, 0 - adds r0, 0x2C - ldm r3!, {r2,r5,r6} - stm r0!, {r2,r5,r6} - ldrh r2, [r3] - strh r2, [r0] - ldrb r2, [r3, 0x2] - strb r2, [r0, 0x2] - ldr r0, _0800B10C @ =gBlockSendBuffer - movs r2, 0x3C - bl memcpy - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800B100: .4byte gLocalLinkPlayerBlock -_0800B104: .4byte gLocalLinkPlayer -_0800B108: .4byte gASCIIGameFreakInc -_0800B10C: .4byte gBlockSendBuffer - thumb_func_end sub_800B0B4 - - thumb_func_start sub_800B110 -sub_800B110: @ 800B110 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 8 - ldr r1, _0800B168 @ =gBlockRecvBuffer - adds r4, r2, r1 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - ldr r0, _0800B16C @ =gLinkPlayers - adds r2, r0 - adds r1, r2, 0 - adds r0, r4, 0 - adds r0, 0x10 - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldr r0, [r0] - str r0, [r1] - adds r0, r2, 0 - bl sub_800B284 - ldr r5, _0800B170 @ =gASCIIGameFreakInc - adds r0, r4, 0 - adds r1, r5, 0 - bl strcmp - cmp r0, 0 - bne _0800B15A - adds r0, r4, 0 - adds r0, 0x2C - adds r1, r5, 0 - bl strcmp - cmp r0, 0 - beq _0800B160 -_0800B15A: - ldr r0, _0800B174 @ =CB2_LinkError - bl SetMainCallback2 -_0800B160: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800B168: .4byte gBlockRecvBuffer -_0800B16C: .4byte gLinkPlayers -_0800B170: .4byte gASCIIGameFreakInc -_0800B174: .4byte CB2_LinkError - thumb_func_end sub_800B110 - - thumb_func_start HandleLinkConnection -HandleLinkConnection: @ 800B178 - push {r4,r5,lr} - ldr r0, _0800B1B0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0800B1C8 - ldr r0, _0800B1B4 @ =gShouldAdvanceLinkState - ldr r1, _0800B1B8 @ =gSendCmd - ldr r2, _0800B1BC @ =gRecvCmds - bl LinkMain1 - ldr r4, _0800B1C0 @ =gLinkStatus - str r0, [r4] - ldr r0, _0800B1C4 @ =gMain + 0x2C - bl LinkMain2 - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 1 - ands r0, r1 - cmp r0, 0 - beq _0800B1EC - bl sub_8058318 - cmp r0, 0x1 - bne _0800B1EC -_0800B1AA: - movs r0, 0x1 - b _0800B1EE - .align 2, 0 -_0800B1B0: .4byte gWirelessCommType -_0800B1B4: .4byte gShouldAdvanceLinkState -_0800B1B8: .4byte gSendCmd -_0800B1BC: .4byte gRecvCmds -_0800B1C0: .4byte gLinkStatus -_0800B1C4: .4byte gMain + 0x2C -_0800B1C8: - bl sub_80FAE94 - adds r4, r0, 0 - bl sub_80FAEF0 - adds r5, r0, 0 - bl sub_8058318 - cmp r0, 0x1 - bne _0800B1EC - cmp r4, 0x1 - beq _0800B1AA - bl sub_80F90DC - cmp r0, 0 - bne _0800B1AA - cmp r5, 0 - bne _0800B1AA -_0800B1EC: - movs r0, 0 -_0800B1EE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end HandleLinkConnection - - thumb_func_start sub_800B1F4 -sub_800B1F4: @ 800B1F4 - push {lr} - ldr r0, _0800B208 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800B204 - ldr r1, _0800B20C @ =gWirelessCommType - movs r0, 0x1 - strb r0, [r1] -_0800B204: - pop {r0} - bx r0 - .align 2, 0 -_0800B208: .4byte gReceivedRemoteLinkPlayers -_0800B20C: .4byte gWirelessCommType - thumb_func_end sub_800B1F4 - - thumb_func_start sub_800B210 -sub_800B210: @ 800B210 - push {lr} - ldr r0, _0800B224 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _0800B21E - ldr r0, _0800B228 @ =gWirelessCommType - strb r1, [r0] -_0800B21E: - pop {r0} - bx r0 - .align 2, 0 -_0800B224: .4byte gReceivedRemoteLinkPlayers -_0800B228: .4byte gWirelessCommType - thumb_func_end sub_800B210 - - thumb_func_start sub_800B22C -sub_800B22C: @ 800B22C - push {lr} - ldr r0, _0800B240 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _0800B23A - ldr r0, _0800B244 @ =gWirelessCommType - strb r1, [r0] -_0800B23A: - pop {r0} - bx r0 - .align 2, 0 -_0800B240: .4byte gReceivedRemoteLinkPlayers -_0800B244: .4byte gWirelessCommType - thumb_func_end sub_800B22C - - thumb_func_start sub_800B248 -sub_800B248: @ 800B248 - push {lr} - ldr r0, _0800B25C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0800B268 - ldr r0, _0800B260 @ =gLink - ldr r1, _0800B264 @ =0x00000fbd - adds r0, r1 - ldrb r0, [r0] - b _0800B26C - .align 2, 0 -_0800B25C: .4byte gWirelessCommType -_0800B260: .4byte gLink -_0800B264: .4byte 0x00000fbd -_0800B268: - bl sub_80FC460 -_0800B26C: - pop {r1} - bx r1 - thumb_func_end sub_800B248 - - thumb_func_start sub_800B270 -sub_800B270: @ 800B270 - push {lr} - bl sub_800B248 - cmp r0, 0x2 - bhi _0800B27E - movs r0, 0 - b _0800B280 -_0800B27E: - movs r0, 0x1 -_0800B280: - pop {r1} - bx r1 - thumb_func_end sub_800B270 - - thumb_func_start sub_800B284 -sub_800B284: @ 800B284 - push {lr} - ldrb r1, [r0, 0x10] - strb r1, [r0, 0x12] - adds r2, r0, 0 - adds r2, 0x8 - ldrb r1, [r0, 0x1A] - adds r0, r2, 0 - bl ConvertInternationalString - pop {r0} - bx r0 - thumb_func_end sub_800B284 - - thumb_func_start DisableSerial -DisableSerial: @ 800B29C - push {lr} - sub sp, 0x4 - movs r0, 0xC0 - bl DisableInterrupts - ldr r1, _0800B2DC @ =0x04000128 - movs r2, 0x80 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0800B2E0 @ =0x0400010e - movs r2, 0 - strh r2, [r0] - adds r1, 0xDA - movs r0, 0xC0 - strh r0, [r1] - ldr r0, _0800B2E4 @ =0x0400012a - strh r2, [r0] - ldr r2, _0800B2E8 @ =0x04000120 - movs r0, 0 - movs r1, 0 - str r0, [r2] - str r1, [r2, 0x4] - str r0, [sp] - ldr r1, _0800B2EC @ =gLink - ldr r2, _0800B2F0 @ =0x050003f0 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0800B2DC: .4byte 0x04000128 -_0800B2E0: .4byte 0x0400010e -_0800B2E4: .4byte 0x0400012a -_0800B2E8: .4byte 0x04000120 -_0800B2EC: .4byte gLink -_0800B2F0: .4byte 0x050003f0 - thumb_func_end DisableSerial - - thumb_func_start EnableSerial -EnableSerial: @ 800B2F4 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0xC0 - bl DisableInterrupts - ldr r0, _0800B354 @ =0x04000134 - movs r4, 0 - strh r4, [r0] - ldr r2, _0800B358 @ =0x04000128 - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - strh r0, [r2] - ldrh r0, [r2] - ldr r3, _0800B35C @ =0x00004003 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - movs r0, 0x80 - bl EnableInterrupts - ldr r0, _0800B360 @ =0x0400012a - strh r4, [r0] - movs r5, 0 - str r5, [sp] - ldr r1, _0800B364 @ =gLink - ldr r2, _0800B368 @ =0x050003f0 - mov r0, sp - bl CpuSet - ldr r0, _0800B36C @ =sNumVBlanksWithoutSerialIntr - strb r4, [r0] - ldr r0, _0800B370 @ =sSendNonzeroCheck - strh r5, [r0] - ldr r0, _0800B374 @ =sRecvNonzeroCheck - strh r5, [r0] - ldr r0, _0800B378 @ =sChecksumAvailable - strb r4, [r0] - ldr r0, _0800B37C @ =sHandshakePlayerCount - strb r4, [r0] - ldr r0, _0800B380 @ =gLastSendQueueCount - strb r4, [r0] - ldr r0, _0800B384 @ =gLastRecvQueueCount - strb r4, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B354: .4byte 0x04000134 -_0800B358: .4byte 0x04000128 -_0800B35C: .4byte 0x00004003 -_0800B360: .4byte 0x0400012a -_0800B364: .4byte gLink -_0800B368: .4byte 0x050003f0 -_0800B36C: .4byte sNumVBlanksWithoutSerialIntr -_0800B370: .4byte sSendNonzeroCheck -_0800B374: .4byte sRecvNonzeroCheck -_0800B378: .4byte sChecksumAvailable -_0800B37C: .4byte sHandshakePlayerCount -_0800B380: .4byte gLastSendQueueCount -_0800B384: .4byte gLastRecvQueueCount - thumb_func_end EnableSerial - - thumb_func_start ResetSerial -ResetSerial: @ 800B388 - push {lr} - bl EnableSerial - bl DisableSerial - pop {r0} - bx r0 - thumb_func_end ResetSerial - thumb_func_start LinkMain1 LinkMain1: @ 800B398 push {r4-r7,lr} diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 04c4621e7..fd1cf3dc6 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -1360,8 +1360,8 @@ _080F90D4: .4byte 0x000008d4 _080F90D8: .4byte 0x000008f2 thumb_func_end sub_80F906C - thumb_func_start sub_80F90DC -sub_80F90DC: @ 80F90DC + thumb_func_start IsRfuRecvQueueEmpty +IsRfuRecvQueueEmpty: @ 80F90DC push {r4,lr} ldr r0, _080F90EC @ =gUnknown_3007460 ldr r0, [r0] @@ -1398,7 +1398,7 @@ _080F9110: bx r1 .align 2, 0 _080F9118: .4byte gRecvCmds - thumb_func_end sub_80F90DC + thumb_func_end IsRfuRecvQueueEmpty thumb_func_start sub_80F911C sub_80F911C: @ 80F911C @@ -2029,7 +2029,7 @@ _080F9618: cmp r1, 0x6 bls _080F9618 _080F9628: - bl sub_80F90DC + bl IsRfuRecvQueueEmpty add sp, 0x58 pop {r3} mov r8, r3 @@ -8105,8 +8105,8 @@ _080FC458: .4byte gUnknown_3005450 _080FC45C: .4byte 0x000008d2 thumb_func_end sub_80FC44C - thumb_func_start sub_80FC460 -sub_80FC460: @ 80FC460 + thumb_func_start GetRfuRecvQueueLength +GetRfuRecvQueueLength: @ 80FC460 ldr r0, _080FC46C @ =gUnknown_3005450 ldr r1, _080FC470 @ =0x0000069e adds r0, r1 @@ -8115,7 +8115,7 @@ sub_80FC460: @ 80FC460 .align 2, 0 _080FC46C: .4byte gUnknown_3005450 _080FC470: .4byte 0x0000069e - thumb_func_end sub_80FC460 + thumb_func_end GetRfuRecvQueueLength thumb_func_start nullsub_89 nullsub_89: @ 80FC474 diff --git a/asm/overworld.s b/asm/overworld.s index ef63df6bb..ec8a03ddd 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5640,7 +5640,7 @@ c1_link_related: @ 8057884 ldrb r0, [r0] cmp r0, 0 beq _0805789E - bl sub_80F90DC + bl IsRfuRecvQueueEmpty cmp r0, 0 beq _0805789E bl IsSendingKeysToLink @@ -6289,7 +6289,7 @@ sub_8057D5C: @ 8057D5C movs r0, 0x11 b _08057D92 _08057D70: - bl sub_800B248 + bl GetLinkRecvQueueLength cmp r0, 0x4 bls _08057D7C movs r0, 0x1B @@ -6344,7 +6344,7 @@ _08057DC4: .4byte sub_8057D98 thumb_func_start sub_8057DC8 sub_8057DC8: @ 8057DC8 push {r4,lr} - bl sub_800B248 + bl GetLinkRecvQueueLength movs r4, 0x11 cmp r0, 0x2 bhi _08057DE0 @@ -6982,7 +6982,7 @@ sub_8058244: @ 8058244 movs r0, 0 b _0805826C _08058252: - bl sub_800B248 + bl GetLinkRecvQueueLength cmp r0, 0x2 bls _08058264 ldr r1, _08058260 @ =gUnknown_3000E88 @@ -7006,7 +7006,7 @@ _08058270: .4byte gUnknown_3000E88 thumb_func_start sub_8058274 sub_8058274: @ 8058274 push {lr} - bl sub_800B248 + bl GetLinkRecvQueueLength cmp r0, 0x1 bls _080582D8 bl IsUpdateLinkStateCBActive diff --git a/baserom.ips b/baserom.ips index 362a80b8448cafb1e81dbcb469ef8f724db3e49f..ae98df16507a8fe70b515252cbaf271d221a5e00 100644 GIT binary patch delta 136 zcmWN=xebFb06oCQl(tl99zH(Pf699s7C@CQRTJb?fJ delta 184 zcmWm3yA8rH7)9aVh9m?C4iMhpEWrw1fgz}9(}9G<1W0r&fkZ)(iYAjV0u|=?N}o<~ zuTAxCs^eKb^viAC=YIGqky9>VHZq#THZeDv(Y^BF2~%49&&#ED8ZERDAx44@QgqQn e9~lNP$T7qSV-%QRiW%luV2Ksh*gR`zcjX@!_CI<6 diff --git a/data/data.s b/data/data.s index 5a5580d37..fa97f6dea 100644 --- a/data/data.s +++ b/data/data.s @@ -7,15 +7,9 @@ .section .rodata .align 2, 0 -gUnknown_82345E8:: @ 82345E8 - .incbin "baserom.gba", 0x2345E8, 0x8 - -gUnknown_82345F0:: @ 82345F0 - .incbin "baserom.gba", 0x2345F0, 0x20 - -gUnknown_8234610:: @ 8234610 - .incbin "baserom.gba", 0x234610, 0x8 - + .string "$" + .string "\n$" + .align 2, 0 gUnknown_8234618:: @ 8234618 .incbin "baserom.gba", 0x234618, 0x8 diff --git a/data/strings.s b/data/strings.s index 98b137425..be47054b5 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3714,22 +3714,22 @@ gUnknown_841DE9B:: @ 841DE9B gUnknown_841DE9C:: @ 841DE9C .string "$" -gUnknown_841DE9D:: @ 841DE9D +gText_CommErrorCheckConnections:: @ 841DE9D .string "Communication error…\n" .string "Please check all connections,\n" .string "then turn the power OFF and ON.$" -gUnknown_841DEF0:: @ 841DEF0 +gText_CommErrorEllipsis:: @ 841DEF0 .string "Communication error…$" -gUnknown_841DF05:: @ 841DF05 +gText_MoveCloserToLinkPartner:: @ 841DF05 .string "Move closer to your link partner(s).\n" .string "Avoid obstacles between partners.$" -gUnknown_841DF4C:: @ 841DF4C +gText_ABtnRegistrationCounter:: @ 841DF4C .string "A Button: Registration Counter$" -gUnknown_841DF6B:: @ 841DF6B +gText_ABtnTitleScreen:: @ 841DF6B .string "A Button: Title Screen$" gUnknown_841DF82:: @ 841DF82 diff --git a/include/link.h b/include/link.h index 1360ce8cc..b8c6bcd59 100644 --- a/include/link.h +++ b/include/link.h @@ -215,7 +215,7 @@ bool8 IsLinkConnectionEstablished(void); void SetSuppressLinkErrorMessage(bool8); bool8 HasLinkErrorOccurred(void); void ResetSerial(void); -u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]); +u32 LinkMain1(u8 *, u16 *, u16[MAX_RFU_PLAYERS][CMD_LENGTH]); void RFUVSync(void); void Timer3Intr(void); void SerialCB(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index e64c0ed59..bfea690ae 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -33,5 +33,10 @@ u8 Rfu_GetBlockReceivedStatus(void); void Rfu_SetBlockReceivedFlag(u8 who); void Rfu_ResetBlockReceivedFlag(u8 who); bool8 Rfu_IsMaster(void); +void sub_80F85F8(void); +bool32 sub_80FAE94(void); +bool32 sub_80FAEF0(void); +bool32 IsRfuRecvQueueEmpty(void); +u32 GetRfuRecvQueueLength(void); #endif //GUARD_LINK_RFU_H diff --git a/include/overworld.h b/include/overworld.h index f2ef24e9e..77cacff94 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -142,4 +142,6 @@ void ResetGameStats(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); +bool32 sub_8058318(void); + #endif //GUARD_OVERWORLD_H diff --git a/include/strings.h b/include/strings.h index 9ddce6044..1bafbacbe 100644 --- a/include/strings.h +++ b/include/strings.h @@ -329,4 +329,11 @@ extern const u8 gText_ItemfinderResponding[]; extern const u8 gText_ItemfinderShakingWildly[]; extern const u8 gText_NopeTheresNoResponse[]; +// link +extern const u8 gText_CommErrorEllipsis[]; +extern const u8 gText_MoveCloserToLinkPartner[]; +extern const u8 gText_CommErrorCheckConnections[]; +extern const u8 gText_ABtnTitleScreen[]; +extern const u8 gText_ABtnRegistrationCounter[]; + #endif //GUARD_STRINGS_H diff --git a/src/link.c b/src/link.c index fce0026c6..385538e5e 100644 --- a/src/link.c +++ b/src/link.c @@ -1,5 +1,8 @@ #include "global.h" #include "palette.h" +#include "bg.h" +#include "m4a.h" +#include "scanline_effect.h" #include "bg_regs.h" #include "gpu_regs.h" #include "decompress.h" @@ -15,8 +18,19 @@ #include "string_util.h" #include "item_menu.h" #include "trade.h" +#include "text.h" +#include "sound.h" +#include "menu.h" +#include "overworld.h" +#include "new_menu_helpers.h" #include "link.h" +#include "window.h" +#include "graphics.h" +#include "strings.h" +#include "help_system.h" +#include "reset_save_heap.h" #include "constants/battle.h" +#include "constants/songs.h" extern u16 gHeldKeyCodeToSend; @@ -136,6 +150,7 @@ void sub_800AB38(void); void sub_800ABD4(void); void sub_800AC00(void); void CheckErrorStatus(void); +void CB2_PrintErrorMessage(void); void EnableSerial(void); void sub_800B210(void); void sub_80F8DC0(void); @@ -163,6 +178,50 @@ const char gASCIITestPrint[] = "TEST PRINT\n" "P2\n" "P3"; +const struct BgTemplate gUnknown_82345E8[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .priority = 0 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .priority = 1 + } +}; + +const struct WindowTemplate gUnknown_82345F0[] = { + { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 5, + .paletteNum = 15, + .baseBlock = 0x002 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 6, + .width = 30, + .height = 7, + .paletteNum = 15, + .baseBlock = 0x098 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 13, + .width = 30, + .height = 7, + .paletteNum = 15, + .baseBlock = 0x16A + }, DUMMY_WIN_TEMPLATE +}; + +const u8 gUnknown_8234610[4] = { 0x00, 0x01, 0x02 }; + bool8 IsWirelessAdapterConnected(void) { if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) @@ -1382,4 +1441,322 @@ void CheckErrorStatus(void) gLinkErrorOccurred = TRUE; CloseLink(); } -} \ No newline at end of file +} + +void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06) +{ + sLinkErrorBuffer.status = status; + sLinkErrorBuffer.lastSendQueueCount = lastSendQueueCount; + sLinkErrorBuffer.lastRecvQueueCount = lastRecvQueueCount; + sLinkErrorBuffer.unk_06 = unk_06; +} + +void CB2_LinkError(void) +{ + u8 *tilemapBuffer; + + SetGpuReg(REG_OFFSET_DISPCNT, 0); + m4aMPlayStop(&gMPlayInfo_SE1); + m4aMPlayStop(&gMPlayInfo_SE2); + m4aMPlayStop(&gMPlayInfo_SE3); + InitHeap(gHeap, HEAP_SIZE); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetPaletteFadeControl(); + FillPalette(0, 0, 2); + ResetTasks(); + ScanlineEffect_Stop(); + if (gWirelessCommType) + { + if (!sLinkErrorBuffer.unk_06) + { + gWirelessCommType = 3; + } + sub_80F85F8(); + } + SetVBlankCallback(sub_800978C); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_82345E8, 2); + gUnknown_2022860 = tilemapBuffer = malloc(0x800); + SetBgTilemapBuffer(1, tilemapBuffer); + if (InitWindows(gUnknown_82345F0)) + { + DeactivateAllTextPrinters(); + ResetTempTileDataBuffers(); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON); + LoadPalette(gTMCaseMainWindowPalette, 0xf0, 0x20); + gSoftResetDisabled = FALSE; + CreateTask(Task_DestroySelf, 0); + StopMapMusic(); + gMain.callback1 = NULL; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_PrintErrorMessage); + } +} + +void sub_800AE1C(void) +{ + DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplay4bpp, FALSE, 0, 0); + CopyToBgTilemapBuffer(1, gWirelessLinkDisplayBin, 0, 0); + CopyBgTilemapBufferToVram(1); + LoadPalette(gWirelessLinkDisplayPal, 0, 0x20); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + AddTextPrinterParameterized3(0, 3, 2, 5, gUnknown_8234610, 0, gText_CommErrorEllipsis); + AddTextPrinterParameterized3(2, 3, 2, 2, gUnknown_8234610, 0, gText_MoveCloserToLinkPartner); + PutWindowTilemap(0); + PutWindowTilemap(2); + CopyWindowToVram(0, 0); + CopyWindowToVram(2, 3); + ShowBg(0); + ShowBg(1); +} + +void sub_800AED0(void) +{ + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_8234610, 0, gText_CommErrorCheckConnections); + PutWindowTilemap(1); + PutWindowTilemap(2); + CopyWindowToVram(1, 0); + CopyWindowToVram(2, 3); + ShowBg(0); +} + +void CB2_PrintErrorMessage(void) +{ + switch (gMain.state) + { + case 00: + if (sLinkErrorBuffer.unk_06) + { + sub_800AE1C(); + } + else + { + sub_800AED0(); + } + break; + case 30: + PlaySE(SE_BOO); + break; + case 60: + PlaySE(SE_BOO); + break; + case 90: + PlaySE(SE_BOO); + break; + case 130: + if (gWirelessCommType == 2) + { + AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnTitleScreen); + } + else if (gWirelessCommType == 1) + { + AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnRegistrationCounter); + } + break; + } + if (gMain.state == 160) + { + if (gWirelessCommType == 1) + { + if (JOY_NEW(A_BUTTON)) + { + sub_812B484(); + PlaySE(SE_PIN); + gWirelessCommType = 0; + sLinkErrorBuffer.unk_06 = 0; + sub_8079B7C(); + } + } + else if (gWirelessCommType == 2) + { + if (JOY_NEW(A_BUTTON)) + { + sub_812B484(); + rfu_REQ_stopMode(); + rfu_waitREQComplete(); + DoSoftReset(); + } + } + } + if (gMain.state != 160) + { + gMain.state++; + } +} + +bool8 GetSioMultiSI(void) +{ + return (REG_SIOCNT & 0x04) != 0; +} + +bool8 IsSioMultiMaster(void) +{ + return (REG_SIOCNT & 0x8) && !(REG_SIOCNT & 0x04); +} + +bool8 IsLinkConnectionEstablished(void) +{ + return EXTRACT_CONN_ESTABLISHED(gLinkStatus); +} + +void SetSuppressLinkErrorMessage(bool8 flag) +{ + gSuppressLinkErrorMessage = flag; +} + +bool8 HasLinkErrorOccurred(void) +{ + return gLinkErrorOccurred; +} + +void sub_800B0B4(void) +{ + struct LinkPlayerBlock *block; + + InitLocalLinkPlayer(); + block = &gLocalLinkPlayerBlock; + block->linkPlayer = gLocalLinkPlayer; + memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1); + memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1); + memcpy(gBlockSendBuffer, block, sizeof(*block)); +} + +void sub_800B110(u32 who) +{ + u8 who_ = who; + struct LinkPlayerBlock *block; + struct LinkPlayer *player; + + block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_]; + player = &gLinkPlayers[who_]; + *player = block->linkPlayer; + sub_800B284(player); + if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 || strcmp(block->magic2, gASCIIGameFreakInc) != 0) + { + SetMainCallback2(CB2_LinkError); + } +} + +bool8 HandleLinkConnection(void) +{ + bool32 r4; + bool32 r5; + + if (gWirelessCommType == 0) + { + gLinkStatus = LinkMain1(&gShouldAdvanceLinkState, gSendCmd, gRecvCmds); + LinkMain2(&gMain.heldKeys); + if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && sub_8058318() == TRUE) + { + return TRUE; + } + } + else + { + r4 = sub_80FAE94(); + r5 = sub_80FAEF0(); + if (sub_8058318() == TRUE) + { + if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5) + { + return TRUE; + } + } + } + return FALSE; +} + +void sub_800B1F4(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + gWirelessCommType = 1; + } +} + +void sub_800B210(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + gWirelessCommType = 0; + } +} + +void sub_800B22C(void) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + gWirelessCommType = 0; + } +} + +u32 GetLinkRecvQueueLength(void) +{ + if (gWirelessCommType != 0) + { + return GetRfuRecvQueueLength(); + } + return gLink.recvQueue.count; +} + +bool32 sub_800B270(void) +{ + if (GetLinkRecvQueueLength() > 2) + { + return TRUE; + } + return FALSE; +} + +void sub_800B284(struct LinkPlayer *player) +{ + player->name[10] = player->name[8]; + ConvertInternationalString(player->name, player->language); +} + +void DisableSerial(void) +{ + DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); + REG_SIOCNT = SIO_MULTI_MODE; + REG_TM3CNT_H = 0; + REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL; + REG_SIOMLT_SEND = 0; + REG_SIOMLT_RECV = 0; + CpuFill32(0, &gLink, sizeof(gLink)); +} + +void EnableSerial(void) +{ + DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); + REG_RCNT = 0; + REG_SIOCNT = SIO_MULTI_MODE; + REG_SIOCNT |= SIO_115200_BPS | SIO_INTR_ENABLE; + EnableInterrupts(INTR_FLAG_SERIAL); + REG_SIOMLT_SEND = 0; + CpuFill32(0, &gLink, sizeof(gLink)); + sNumVBlanksWithoutSerialIntr = 0; + sSendNonzeroCheck = 0; + sRecvNonzeroCheck = 0; + sChecksumAvailable = 0; + sHandshakePlayerCount = 0; + gLastSendQueueCount = 0; + gLastRecvQueueCount = 0; +} + +void ResetSerial(void) +{ + EnableSerial(); + DisableSerial(); +} From f39511d7c804d16c14ab84ede7015222f9d715c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 10:54:45 -0400 Subject: [PATCH 096/100] Finish link.s decomp --- asm/link.s | 1157 ------------------------------------------ common_syms/link.txt | 35 ++ include/link.h | 6 + include/link_rfu.h | 1 + ld_script.txt | 1 - src/link.c | 621 ++++++++++++++++++++--- sym_common.txt | 91 +--- 7 files changed, 602 insertions(+), 1310 deletions(-) delete mode 100644 asm/link.s create mode 100644 common_syms/link.txt diff --git a/asm/link.s b/asm/link.s deleted file mode 100644 index 4b5b0e6b5..000000000 --- a/asm/link.s +++ /dev/null @@ -1,1157 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start LinkMain1 -LinkMain1: @ 800B398 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r0, _0800B3B4 @ =gLink - ldrb r0, [r0, 0x1] - cmp r0, 0x4 - bhi _0800B44A - lsls r0, 2 - ldr r1, _0800B3B8 @ =_0800B3BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800B3B4: .4byte gLink -_0800B3B8: .4byte _0800B3BC - .align 2, 0 -_0800B3BC: - .4byte _0800B3D0 - .4byte _0800B3E0 - .4byte _0800B3F8 - .4byte _0800B434 - .4byte _0800B43E -_0800B3D0: - bl DisableSerial - ldr r1, _0800B3DC @ =gLink - movs r0, 0x1 - strb r0, [r1, 0x1] - b _0800B44A - .align 2, 0 -_0800B3DC: .4byte gLink -_0800B3E0: - ldrb r0, [r4] - cmp r0, 0x1 - bne _0800B44A - bl EnableSerial - ldr r1, _0800B3F4 @ =gLink - movs r0, 0x2 - strb r0, [r1, 0x1] - b _0800B44A - .align 2, 0 -_0800B3F4: .4byte gLink -_0800B3F8: - ldrb r1, [r4] - cmp r1, 0x1 - beq _0800B408 - cmp r1, 0x2 - beq _0800B420 - bl CheckMasterOrSlave - b _0800B44A -_0800B408: - ldr r2, _0800B41C @ =gLink - ldrb r0, [r2] - cmp r0, 0x8 - bne _0800B44A - ldrb r0, [r2, 0x3] - cmp r0, 0x1 - bls _0800B44A - strb r1, [r2, 0xE] - b _0800B44A - .align 2, 0 -_0800B41C: .4byte gLink -_0800B420: - ldr r0, _0800B42C @ =gLink - movs r1, 0 - strb r1, [r0, 0x1] - ldr r0, _0800B430 @ =0x0400012a - strh r1, [r0] - b _0800B44A - .align 2, 0 -_0800B42C: .4byte gLink -_0800B430: .4byte 0x0400012a -_0800B434: - bl InitTimer - ldr r1, _0800B484 @ =gLink - movs r0, 0x4 - strb r0, [r1, 0x1] -_0800B43E: - adds r0, r5, 0 - bl sub_800B520 - adds r0, r6, 0 - bl sub_800B608 -_0800B44A: - movs r0, 0 - strb r0, [r4] - ldr r1, _0800B484 @ =gLink - ldrb r2, [r1, 0x2] - ldrb r0, [r1, 0x3] - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r1] - cmp r0, 0x8 - bne _0800B462 - movs r0, 0x20 - orrs r2, r0 -_0800B462: - ldrb r0, [r1, 0xC] - lsls r3, r0, 8 - ldrb r0, [r1, 0xF] - lsls r4, r0, 9 - ldrb r0, [r1, 0x10] - lsls r5, r0, 12 - ldrb r0, [r1, 0x11] - lsls r6, r0, 13 - ldrb r0, [r1, 0x12] - lsls r7, r0, 14 - ldrb r0, [r1, 0x1] - cmp r0, 0x4 - bne _0800B488 - movs r0, 0x40 - orrs r0, r3 - orrs r0, r2 - b _0800B48C - .align 2, 0 -_0800B484: .4byte gLink -_0800B488: - adds r0, r2, 0 - orrs r0, r3 -_0800B48C: - orrs r0, r4 - orrs r0, r5 - orrs r0, r6 - orrs r0, r7 - adds r2, r0, 0 - ldrb r3, [r1, 0x13] - cmp r3, 0x1 - bne _0800B4A2 - movs r0, 0x80 - lsls r0, 9 - orrs r2, r0 -_0800B4A2: - ldrb r0, [r1, 0x2] - cmp r0, 0x3 - bls _0800B4AE - movs r0, 0x80 - lsls r0, 10 - orrs r2, r0 -_0800B4AE: - adds r1, r2, 0 - cmp r3, 0x2 - bne _0800B4BA - movs r0, 0x80 - lsls r0, 11 - orrs r1, r0 -_0800B4BA: - adds r0, r1, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end LinkMain1 - - thumb_func_start CheckMasterOrSlave -CheckMasterOrSlave: @ 800B4C4 - push {lr} - ldr r0, _0800B4E0 @ =0x04000128 - ldr r1, [r0] - movs r0, 0xC - ands r1, r0 - ldr r2, _0800B4E4 @ =gLink - cmp r1, 0x8 - bne _0800B4E8 - ldrb r0, [r2, 0x2] - cmp r0, 0 - bne _0800B4E8 - strb r1, [r2] - b _0800B4EC - .align 2, 0 -_0800B4E0: .4byte 0x04000128 -_0800B4E4: .4byte gLink -_0800B4E8: - movs r0, 0 - strb r0, [r2] -_0800B4EC: - pop {r0} - bx r0 - thumb_func_end CheckMasterOrSlave - - thumb_func_start InitTimer -InitTimer: @ 800B4F0 - push {lr} - ldr r0, _0800B514 @ =gLink - ldrb r0, [r0] - cmp r0, 0 - beq _0800B50E - ldr r1, _0800B518 @ =0x0400010c - ldr r2, _0800B51C @ =0x0000ff3b - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x41 - strh r0, [r1] - movs r0, 0x40 - bl EnableInterrupts -_0800B50E: - pop {r0} - bx r0 - .align 2, 0 -_0800B514: .4byte gLink -_0800B518: .4byte 0x0400010c -_0800B51C: .4byte 0x0000ff3b - thumb_func_end InitTimer - - thumb_func_start sub_800B520 -sub_800B520: @ 800B520 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r3, r0, 0 - ldr r2, _0800B598 @ =gLinkSavedIme - ldr r1, _0800B59C @ =0x04000208 - ldrh r0, [r1] - strh r0, [r2] - movs r0, 0 - strh r0, [r1] - ldr r1, _0800B5A0 @ =gLink - ldr r4, _0800B5A4 @ =0x00000339 - adds r0, r1, r4 - ldrb r4, [r0] - adds r6, r1, 0 - cmp r4, 0x31 - bhi _0800B5B0 - movs r1, 0xCE - lsls r1, 2 - adds r0, r6, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - bls _0800B55E - subs r0, 0x32 - lsls r0, 24 - lsrs r0, 24 -_0800B55E: - movs r2, 0 - ldr r4, _0800B5A8 @ =sSendNonzeroCheck - mov r9, r4 - ldr r1, _0800B5AC @ =gLastSendQueueCount - mov r10, r1 - lsls r5, r0, 1 - movs r0, 0x18 - adds r0, r6 - mov r8, r0 - mov r12, r2 - movs r7, 0x64 -_0800B574: - ldrh r0, [r4] - ldrh r1, [r3] - orrs r0, r1 - strh r0, [r4] - adds r0, r2, 0 - muls r0, r7 - adds r0, r5, r0 - add r0, r8 - strh r1, [r0] - mov r1, r12 - strh r1, [r3] - adds r3, 0x2 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _0800B574 - b _0800B5BC - .align 2, 0 -_0800B598: .4byte gLinkSavedIme -_0800B59C: .4byte 0x04000208 -_0800B5A0: .4byte gLink -_0800B5A4: .4byte 0x00000339 -_0800B5A8: .4byte sSendNonzeroCheck -_0800B5AC: .4byte gLastSendQueueCount -_0800B5B0: - movs r0, 0x1 - strb r0, [r6, 0x12] - ldr r2, _0800B5F4 @ =sSendNonzeroCheck - mov r9, r2 - ldr r4, _0800B5F8 @ =gLastSendQueueCount - mov r10, r4 -_0800B5BC: - mov r1, r9 - ldrh r0, [r1] - cmp r0, 0 - beq _0800B5D4 - ldr r2, _0800B5FC @ =0x00000339 - adds r0, r6, r2 - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - mov r4, r9 - strh r2, [r4] -_0800B5D4: - ldr r1, _0800B600 @ =0x04000208 - ldr r2, _0800B604 @ =gLinkSavedIme - ldrh r0, [r2] - strh r0, [r1] - ldr r4, _0800B5FC @ =0x00000339 - adds r0, r6, r4 - ldrb r0, [r0] - mov r1, r10 - strb r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800B5F4: .4byte sSendNonzeroCheck -_0800B5F8: .4byte gLastSendQueueCount -_0800B5FC: .4byte 0x00000339 -_0800B600: .4byte 0x04000208 -_0800B604: .4byte gLinkSavedIme - thumb_func_end sub_800B520 - - thumb_func_start sub_800B608 -sub_800B608: @ 800B608 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - ldr r2, _0800B664 @ =gLinkSavedIme - ldr r1, _0800B668 @ =0x04000208 - ldrh r0, [r1] - strh r0, [r2] - movs r0, 0 - strh r0, [r1] - ldr r1, _0800B66C @ =gLink - ldr r3, _0800B670 @ =0x00000fbd - adds r0, r1, r3 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0 - bne _0800B674 - movs r3, 0 - ldrb r0, [r1, 0x3] - cmp r3, r0 - bcs _0800B65A - movs r5, 0 - adds r6, r0, 0 -_0800B63A: - movs r2, 0 - lsls r1, r3, 4 - adds r4, r3, 0x1 - add r1, r9 -_0800B642: - lsls r0, r2, 1 - adds r0, r1 - strh r5, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _0800B642 - lsls r0, r4, 24 - lsrs r3, r0, 24 - cmp r3, r6 - bcc _0800B63A -_0800B65A: - movs r0, 0x1 - mov r7, r12 - strb r0, [r7, 0xC] - b _0800B6F0 - .align 2, 0 -_0800B664: .4byte gLinkSavedIme -_0800B668: .4byte 0x04000208 -_0800B66C: .4byte gLink -_0800B670: .4byte 0x00000fbd -_0800B674: - movs r3, 0 - mov r0, r12 - ldrb r1, [r0, 0x3] - cmp r3, r1 - bcs _0800B6CA - ldr r0, _0800B708 @ =0x00000fbc - add r0, r12 - ldrb r0, [r0] - lsls r6, r0, 1 - movs r2, 0xCF - lsls r2, 2 - add r2, r12 - mov r8, r2 - mov r10, r1 -_0800B690: - movs r2, 0 - lsls r1, r3, 4 - adds r4, r3, 0x1 - lsls r0, r3, 1 - mov r7, r9 - adds r5, r1, r7 - adds r0, r3 - lsls r0, 3 - adds r0, r3 - lsls r3, r0, 5 -_0800B6A4: - lsls r1, r2, 1 - adds r1, r5 - movs r7, 0x64 - adds r0, r2, 0 - muls r0, r7 - adds r0, r6, r0 - adds r0, r3 - add r0, r8 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _0800B6A4 - lsls r0, r4, 24 - lsrs r3, r0, 24 - cmp r3, r10 - bcc _0800B690 -_0800B6CA: - mov r2, r12 - ldr r0, _0800B70C @ =0x00000fbd - adds r1, r2, r0 - ldrb r0, [r1] - subs r0, 0x1 - movs r3, 0 - strb r0, [r1] - ldr r1, _0800B708 @ =0x00000fbc - adds r2, r1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - bls _0800B6EC - strb r3, [r2] -_0800B6EC: - mov r2, r12 - strb r3, [r2, 0xC] -_0800B6F0: - ldr r1, _0800B710 @ =0x04000208 - ldr r3, _0800B714 @ =gLinkSavedIme - ldrh r0, [r3] - strh r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800B708: .4byte 0x00000fbc -_0800B70C: .4byte 0x00000fbd -_0800B710: .4byte 0x04000208 -_0800B714: .4byte gLinkSavedIme - thumb_func_end sub_800B608 - - thumb_func_start LinkVSync -LinkVSync: @ 800B718 - push {r4,lr} - ldr r3, _0800B740 @ =gLink - ldrb r4, [r3] - cmp r4, 0 - beq _0800B754 - ldrb r0, [r3, 0x1] - cmp r0, 0x2 - beq _0800B74E - cmp r0, 0x4 - bne _0800B77E - movs r0, 0xD - ldrsb r0, [r3, r0] - cmp r0, 0x8 - bgt _0800B744 - ldrb r0, [r3, 0x10] - cmp r0, 0x1 - beq _0800B74E - movs r0, 0x1 - strb r0, [r3, 0x13] - b _0800B77E - .align 2, 0 -_0800B740: .4byte gLink -_0800B744: - ldrb r0, [r3, 0x13] - cmp r0, 0x1 - beq _0800B77E - movs r0, 0 - strb r0, [r3, 0xD] -_0800B74E: - bl sub_800B820 - b _0800B77E -_0800B754: - ldrb r2, [r3, 0x1] - cmp r2, 0x4 - beq _0800B75E - cmp r2, 0x2 - bne _0800B77E -_0800B75E: - ldr r1, _0800B784 @ =sNumVBlanksWithoutSerialIntr - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - bls _0800B77E - cmp r2, 0x4 - bne _0800B776 - movs r0, 0x2 - strb r0, [r3, 0x13] -_0800B776: - cmp r2, 0x2 - bne _0800B77E - strb r4, [r3, 0x3] - strb r4, [r3, 0xF] -_0800B77E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B784: .4byte sNumVBlanksWithoutSerialIntr - thumb_func_end LinkVSync - - thumb_func_start Timer3Intr -Timer3Intr: @ 800B788 - push {lr} - bl StopTimer - bl sub_800B820 - pop {r0} - bx r0 - thumb_func_end Timer3Intr - - thumb_func_start SerialCB -SerialCB: @ 800B798 - push {r4,lr} - ldr r4, _0800B7C4 @ =gLink - ldr r0, _0800B7C8 @ =0x04000128 - ldr r1, [r0] - lsls r0, r1, 26 - lsrs r0, 30 - strb r0, [r4, 0x2] - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _0800B7CC - cmp r0, 0x4 - bne _0800B7EA - lsls r0, r1, 25 - lsrs r0, 31 - strb r0, [r4, 0x10] - bl DoRecv - bl DoSend - bl SendRecvDone - b _0800B7EA - .align 2, 0 -_0800B7C4: .4byte gLink -_0800B7C8: .4byte 0x04000128 -_0800B7CC: - bl DoHandshake - lsls r0, 24 - cmp r0, 0 - beq _0800B7EA - ldrb r0, [r4] - cmp r0, 0 - beq _0800B7E6 - movs r0, 0x3 - strb r0, [r4, 0x1] - movs r0, 0x8 - strb r0, [r4, 0xD] - b _0800B7EA -_0800B7E6: - movs r0, 0x4 - strb r0, [r4, 0x1] -_0800B7EA: - ldr r3, _0800B810 @ =gLink - ldrb r0, [r3, 0xD] - adds r0, 0x1 - movs r2, 0 - strb r0, [r3, 0xD] - ldr r1, _0800B814 @ =sNumVBlanksWithoutSerialIntr - strb r2, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x8 - bne _0800B80A - ldr r0, _0800B818 @ =gLastRecvQueueCount - ldr r2, _0800B81C @ =0x00000fbd - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] -_0800B80A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800B810: .4byte gLink -_0800B814: .4byte sNumVBlanksWithoutSerialIntr -_0800B818: .4byte gLastRecvQueueCount -_0800B81C: .4byte 0x00000fbd - thumb_func_end SerialCB - - thumb_func_start sub_800B820 -sub_800B820: @ 800B820 - ldr r0, _0800B82C @ =0x04000128 - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] - bx lr - .align 2, 0 -_0800B82C: .4byte 0x04000128 - thumb_func_end sub_800B820 - - thumb_func_start DoHandshake -DoHandshake: @ 800B830 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r5, 0 - ldr r6, _0800B84C @ =0x0000ffff - ldr r0, _0800B850 @ =gLink - ldrb r1, [r0, 0xE] - adds r7, r0, 0 - cmp r1, 0x1 - bne _0800B85C - ldr r1, _0800B854 @ =0x0400012a - ldr r2, _0800B858 @ =0x00008fff - b _0800B860 - .align 2, 0 -_0800B84C: .4byte 0x0000ffff -_0800B850: .4byte gLink -_0800B854: .4byte 0x0400012a -_0800B858: .4byte 0x00008fff -_0800B85C: - ldr r1, _0800B8B4 @ =0x0400012a - ldr r2, _0800B8B8 @ =0x0000b9a0 -_0800B860: - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _0800B8BC @ =gLink + 4 - ldr r3, _0800B8C0 @ =0x04000120 - ldr r0, [r3] - ldr r1, [r3, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - movs r0, 0 - movs r1, 0 - str r0, [r3] - str r1, [r3, 0x4] - strb r0, [r2, 0xA] - movs r4, 0 - ldr r0, _0800B8C4 @ =sHandshakePlayerCount - mov r9, r0 - mov r8, r2 - ldr r2, _0800B8C8 @ =0x00008fff - ldr r1, _0800B8CC @ =0x0000ffff - mov r12, r1 -_0800B888: - lsls r0, r4, 1 - add r0, r8 - ldrh r3, [r0] - movs r0, 0x4 - negs r0, r0 - ands r0, r3 - ldr r1, _0800B8B8 @ =0x0000b9a0 - cmp r0, r1 - beq _0800B8A0 - adds r0, r3, 0 - cmp r0, r2 - bne _0800B8D0 -_0800B8A0: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r3, 0 - cmp r6, r0 - bls _0800B8D8 - cmp r0, 0 - beq _0800B8D8 - adds r6, r3, 0 - b _0800B8D8 - .align 2, 0 -_0800B8B4: .4byte 0x0400012a -_0800B8B8: .4byte 0x0000b9a0 -_0800B8BC: .4byte gLink + 4 -_0800B8C0: .4byte 0x04000120 -_0800B8C4: .4byte sHandshakePlayerCount -_0800B8C8: .4byte 0x00008fff -_0800B8CC: .4byte 0x0000ffff -_0800B8D0: - cmp r0, r12 - beq _0800B8E2 - movs r5, 0 - b _0800B8E2 -_0800B8D8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0800B888 -_0800B8E2: - strb r5, [r7, 0x3] - adds r0, r5, 0 - cmp r0, 0x1 - bls _0800B912 - mov r2, r9 - ldrb r2, [r2] - cmp r0, r2 - bne _0800B904 - ldrh r1, [r7, 0x4] - ldr r0, _0800B900 @ =0x00008fff - cmp r1, r0 - bne _0800B904 - movs r0, 0x1 - b _0800B91E - .align 2, 0 -_0800B900: .4byte 0x00008fff -_0800B904: - ldrb r0, [r7, 0x3] - cmp r0, 0x1 - bls _0800B912 - movs r0, 0x3 - ands r6, r0 - adds r0, r6, 0x1 - b _0800B914 -_0800B912: - movs r0, 0 -_0800B914: - strb r0, [r7, 0xF] - ldrb r0, [r7, 0x3] - mov r1, r9 - strb r0, [r1] - movs r0, 0 -_0800B91E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end DoHandshake - - thumb_func_start DoRecv -DoRecv: @ 800B92C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r0, _0800B984 @ =0x04000120 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, _0800B988 @ =gLink - ldrb r1, [r0, 0x16] - adds r6, r0, 0 - cmp r1, 0 - bne _0800B990 - movs r4, 0 - ldr r7, _0800B98C @ =sChecksumAvailable - ldrb r0, [r6, 0x3] - cmp r4, r0 - bcs _0800B97A - adds r5, r6, 0 - ldrh r1, [r6, 0x14] - adds r3, r7, 0 - adds r2, r6, 0 -_0800B95A: - lsls r0, r4, 1 - add r0, sp - ldrh r0, [r0] - cmp r1, r0 - beq _0800B96E - ldrb r0, [r3] - cmp r0, 0 - beq _0800B96E - movs r0, 0x1 - strb r0, [r5, 0x11] -_0800B96E: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r2, 0x3] - cmp r4, r0 - bcc _0800B95A -_0800B97A: - movs r0, 0 - strh r0, [r6, 0x14] - movs r0, 0x1 - strb r0, [r7] - b _0800BA30 - .align 2, 0 -_0800B984: .4byte 0x04000120 -_0800B988: .4byte gLink -_0800B98C: .4byte sChecksumAvailable -_0800B990: - ldr r2, _0800BA00 @ =0x00000fbc - adds r1, r6, r2 - adds r2, 0x1 - adds r0, r6, r2 - ldrb r2, [r0] - ldrb r1, [r1] - adds r0, r2, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - bls _0800B9AC - subs r0, 0x32 - lsls r0, 24 - lsrs r0, 24 -_0800B9AC: - cmp r2, 0x31 - bhi _0800BA08 - movs r4, 0 - ldrb r1, [r6, 0x3] - cmp r4, r1 - bcs _0800BA0C - adds r5, r6, 0 - ldr r7, _0800BA04 @ =sRecvNonzeroCheck - lsls r0, 1 - mov r12, r0 - movs r2, 0xCF - lsls r2, 2 - adds r2, r6 - mov r8, r2 -_0800B9C8: - lsls r1, r4, 1 - mov r2, sp - adds r0, r2, r1 - ldrh r3, [r0] - ldrh r2, [r5, 0x14] - adds r0, r3, r2 - strh r0, [r5, 0x14] - ldrh r0, [r7] - orrs r0, r3 - strh r0, [r7] - ldrb r2, [r5, 0x17] - movs r0, 0x64 - muls r0, r2 - add r0, r12 - adds r1, r4 - lsls r1, 3 - adds r1, r4 - lsls r1, 5 - adds r0, r1 - add r0, r8 - strh r3, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5, 0x3] - cmp r4, r0 - bcc _0800B9C8 - b _0800BA0C - .align 2, 0 -_0800BA00: .4byte 0x00000fbc -_0800BA04: .4byte sRecvNonzeroCheck -_0800BA08: - movs r0, 0x2 - strb r0, [r6, 0x12] -_0800BA0C: - ldrb r0, [r6, 0x17] - adds r0, 0x1 - strb r0, [r6, 0x17] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - bne _0800BA30 - ldr r2, _0800BA3C @ =sRecvNonzeroCheck - ldrh r0, [r2] - cmp r0, 0 - beq _0800BA30 - ldr r1, _0800BA40 @ =0x00000fbd - adds r0, r6, r1 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r0, 0 - strh r0, [r2] -_0800BA30: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800BA3C: .4byte sRecvNonzeroCheck -_0800BA40: .4byte 0x00000fbd - thumb_func_end DoRecv - - thumb_func_start DoSend -DoSend: @ 800BA44 - push {r4,lr} - ldr r0, _0800BA80 @ =gLink - ldrb r1, [r0, 0x16] - adds r4, r0, 0 - cmp r1, 0x8 - bne _0800BA96 - ldr r1, _0800BA84 @ =0x0400012a - ldrh r0, [r4, 0x14] - strh r0, [r1] - ldr r1, _0800BA88 @ =sSendBufferEmpty - ldrb r2, [r1] - cmp r2, 0 - bne _0800BA90 - ldr r0, _0800BA8C @ =0x00000339 - adds r1, r4, r0 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - movs r0, 0xCE - lsls r0, 2 - adds r1, r4, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - bls _0800BAEC - strb r2, [r1] - b _0800BAEC - .align 2, 0 -_0800BA80: .4byte gLink -_0800BA84: .4byte 0x0400012a -_0800BA88: .4byte sSendBufferEmpty -_0800BA8C: .4byte 0x00000339 -_0800BA90: - movs r0, 0 - strb r0, [r1] - b _0800BAEC -_0800BA96: - ldr r1, _0800BABC @ =sSendBufferEmpty - ldrb r0, [r1] - cmp r0, 0 - bne _0800BAB2 - ldr r2, _0800BAC0 @ =0x00000339 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0800BAAC - movs r0, 0x1 - strb r0, [r1] -_0800BAAC: - ldrb r0, [r1] - cmp r0, 0 - beq _0800BAC8 -_0800BAB2: - ldr r1, _0800BAC4 @ =0x0400012a - movs r0, 0 - strh r0, [r1] - b _0800BAE6 - .align 2, 0 -_0800BABC: .4byte sSendBufferEmpty -_0800BAC0: .4byte 0x00000339 -_0800BAC4: .4byte 0x0400012a -_0800BAC8: - ldr r3, _0800BAF4 @ =0x0400012a - movs r1, 0xCE - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, 1 - ldrb r2, [r4, 0x16] - movs r1, 0x64 - muls r1, r2 - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x18 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3] -_0800BAE6: - ldrb r0, [r4, 0x16] - adds r0, 0x1 - strb r0, [r4, 0x16] -_0800BAEC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800BAF4: .4byte 0x0400012a - thumb_func_end DoSend - - thumb_func_start StopTimer -StopTimer: @ 800BAF8 - push {lr} - ldr r0, _0800BB18 @ =gLink - ldrb r0, [r0] - cmp r0, 0 - beq _0800BB14 - ldr r2, _0800BB1C @ =0x0400010e - ldrh r1, [r2] - ldr r0, _0800BB20 @ =0x0000ff7f - ands r0, r1 - strh r0, [r2] - ldr r1, _0800BB24 @ =0x0400010c - ldr r2, _0800BB28 @ =0x0000ff3b - adds r0, r2, 0 - strh r0, [r1] -_0800BB14: - pop {r0} - bx r0 - .align 2, 0 -_0800BB18: .4byte gLink -_0800BB1C: .4byte 0x0400010e -_0800BB20: .4byte 0x0000ff7f -_0800BB24: .4byte 0x0400010c -_0800BB28: .4byte 0x0000ff3b - thumb_func_end StopTimer - - thumb_func_start SendRecvDone -SendRecvDone: @ 800BB2C - push {lr} - ldr r1, _0800BB40 @ =gLink - ldrb r0, [r1, 0x17] - cmp r0, 0x8 - bne _0800BB44 - movs r0, 0 - strb r0, [r1, 0x16] - strb r0, [r1, 0x17] - b _0800BB54 - .align 2, 0 -_0800BB40: .4byte gLink -_0800BB44: - ldrb r0, [r1] - cmp r0, 0 - beq _0800BB54 - ldr r0, _0800BB58 @ =0x0400010e - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] -_0800BB54: - pop {r0} - bx r0 - .align 2, 0 -_0800BB58: .4byte 0x0400010e - thumb_func_end SendRecvDone - - thumb_func_start ResetSendBuffer -ResetSendBuffer: @ 800BB5C - push {r4-r6,lr} - ldr r1, _0800BBA4 @ =gLink - ldr r2, _0800BBA8 @ =0x00000339 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - movs r3, 0xCE - lsls r3, 2 - adds r0, r1, r3 - strb r2, [r0] - movs r0, 0 - movs r6, 0x64 - adds r5, r1, 0 - adds r5, 0x18 - ldr r4, _0800BBAC @ =0x0000efff -_0800BB7A: - movs r2, 0 - adds r1, r0, 0x1 - adds r3, r0, 0 - muls r3, r6 -_0800BB82: - lsls r0, r2, 1 - adds r0, r3 - adds r0, r5 - strh r4, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x31 - bls _0800BB82 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _0800BB7A - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800BBA4: .4byte gLink -_0800BBA8: .4byte 0x00000339 -_0800BBAC: .4byte 0x0000efff - thumb_func_end ResetSendBuffer - - thumb_func_start ResetRecvBuffer -ResetRecvBuffer: @ 800BBB0 - push {r4-r7,lr} - ldr r1, _0800BC10 @ =gLink - ldr r2, _0800BC14 @ =0x00000fbd - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _0800BC18 @ =0x00000fbc - adds r0, r1, r3 - strb r2, [r0] - movs r0, 0x64 - mov r12, r0 - movs r3, 0xCF - lsls r3, 2 - adds r7, r1, r3 - ldr r6, _0800BC1C @ =0x0000efff -_0800BBCE: - movs r3, 0 - lsls r0, r2, 1 - adds r5, r2, 0x1 - adds r0, r2 - lsls r0, 3 - adds r0, r2 - lsls r4, r0, 5 -_0800BBDC: - movs r2, 0 - adds r1, r3, 0x1 - mov r0, r12 - muls r0, r3 - adds r3, r0, 0 -_0800BBE6: - lsls r0, r2, 1 - adds r0, r3 - adds r0, r4 - adds r0, r7 - strh r6, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x31 - bls _0800BBE6 - lsls r0, r1, 24 - lsrs r3, r0, 24 - cmp r3, 0x7 - bls _0800BBDC - lsls r0, r5, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0800BBCE - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800BC10: .4byte gLink -_0800BC14: .4byte 0x00000fbd -_0800BC18: .4byte 0x00000fbc -_0800BC1C: .4byte 0x0000efff - thumb_func_end ResetRecvBuffer - - .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/link.txt b/common_syms/link.txt new file mode 100644 index 000000000..32c25d708 --- /dev/null +++ b/common_syms/link.txt @@ -0,0 +1,35 @@ +gLinkPartnersHeldKeys +gLinkDebugSeed +gLocalLinkPlayerBlock +gLinkErrorOccurred +gLinkDebugFlags +gFiller_3003EB4 +gRemoteLinkPlayersNotReceived +gBlockReceivedStatus +gFiller_3003EC0 +gLinkHeldKeys +gRecvCmds +gLinkStatus +gUnknown_3003F24 +gUnknown_3003F28 +gUnknown_3003F2C +gUnknown_3003F30 +gUnknown_3003F34 +gSuppressLinkErrorMessage +gWirelessCommType +gSavedLinkPlayerCount +gSendCmd +gSavedMultiplayerId +gReceivedRemoteLinkPlayers +gLinkTestBGInfo +gLinkCallback +gShouldAdvanceLinkState +gLinkTestBlockChecksums +gBlockRequestType +gFiller_3003F94 +gFiller_3003F98 +gFiller_3003F9C +gLastSendQueueCount +gLink +gLastRecvQueueCount +gLinkSavedIme diff --git a/include/link.h b/include/link.h index b8c6bcd59..51f103745 100644 --- a/include/link.h +++ b/include/link.h @@ -9,6 +9,9 @@ #define QUEUE_CAPACITY 50 #define BLOCK_BUFFER_SIZE 0x100 +#define LINK_SLAVE 0 +#define LINK_MASTER 8 + #define LINK_STAT_LOCAL_ID 0x00000003 #define LINK_STAT_PLAYER_COUNT 0x0000001C #define LINK_STAT_PLAYER_COUNT_SHIFT 2 @@ -18,6 +21,8 @@ #define LINK_STAT_CONN_ESTABLISHED_SHIFT 6 #define LINK_STAT_RECEIVED_NOTHING 0x00000100 #define LINK_STAT_RECEIVED_NOTHING_SHIFT 8 +#define LINK_STAT_UNK_FLAG_9 0x00000200 +#define LINK_STAT_UNK_FLAG_9_SHIFT 9 #define LINK_STAT_ERRORS 0x0007F000 #define LINK_STAT_ERRORS_SHIFT 12 @@ -250,5 +255,6 @@ void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); void ClearLinkCallback_2(void); void sub_80FA42C(void); +void sub_800B284(struct LinkPlayer * linkPlayer); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index bfea690ae..2757e5296 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -38,5 +38,6 @@ bool32 sub_80FAE94(void); bool32 sub_80FAEF0(void); bool32 IsRfuRecvQueueEmpty(void); u32 GetRfuRecvQueueLength(void); +void sub_80F8DC0(void); #endif //GUARD_LINK_RFU_H diff --git a/ld_script.txt b/ld_script.txt index bd63a0778..fbf00f9c1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -61,7 +61,6 @@ SECTIONS { src/sprite.o(.text); src/string_util.o(.text); src/link.o(.text); - asm/link.o(.text); src/multiboot.o(.text); asm/main_menu.o(.text); src/battle_controllers.o(.text); diff --git a/src/link.c b/src/link.c index 385538e5e..0bb637881 100644 --- a/src/link.c +++ b/src/link.c @@ -53,7 +53,6 @@ struct LinkTestBGInfo #define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) -#define static __attribute__((section(".bss"))) static struct BlockTransfer sBlockSend; ALIGNED(8) static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS]; static u32 sBlockSendDelayCounter; @@ -63,23 +62,23 @@ static u32 sPlayerDataExchangeStatus; static u32 gUnknown_3000E58; static u8 sLinkTestLastBlockSendPos; ALIGNED(8) static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS]; +// File break? static u8 sNumVBlanksWithoutSerialIntr; static bool8 sSendBufferEmpty; static u16 sSendNonzeroCheck; static u16 sRecvNonzeroCheck; static u8 sChecksumAvailable; static u8 sHandshakePlayerCount; -#undef static u16 gLinkPartnersHeldKeys[6]; u32 gLinkDebugSeed; struct LinkPlayerBlock gLocalLinkPlayerBlock; bool8 gLinkErrorOccurred; u32 gLinkDebugFlags; -//u32 gFiller_03003074; +u32 gFiller_3003EB4; bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS]; u8 gBlockReceivedStatus[MAX_LINK_PLAYERS]; -//u32 gFiller_03003080; +u32 gFiller_3003EC0; u16 gLinkHeldKeys; u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; u32 gLinkStatus; @@ -99,15 +98,13 @@ void (*gLinkCallback)(void); u8 gShouldAdvanceLinkState; u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS]; u8 gBlockRequestType; -//u32 gFiller_03003154; -//u32 gFiller_03003158; -//u32 gFiller_0300315c; +u32 gFiller_3003F94; // file +u32 gFiller_3003F98; // boundary +u32 gFiller_3003F9C; // here? u8 gLastSendQueueCount; struct Link gLink; u8 gLastRecvQueueCount; u16 gLinkSavedIme; -//u32 gFiller_03004138; -//u32 gFiller_0300413C; EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = FALSE; EWRAM_DATA bool8 gUnknown_2022111 = FALSE; @@ -129,34 +126,42 @@ EWRAM_DATA struct { EWRAM_DATA u16 gUnknown_202285C = 0; EWRAM_DATA void *gUnknown_2022860 = NULL; -void InitLocalLinkPlayer(void); -void sub_800978C(void); -void CB2_LinkTest(void); -void ProcessRecvCmds(u8 id); -void sub_800A040(void); -void ResetBlockSend(void); -bool32 InitBlockSend(const void * src, size_t size); -void LinkCB_BlockSendBegin(void); -void LinkCB_BlockSend(void); -void LinkCB_BlockSendEnd(void); -void sub_800A3CC(void); -void SetBlockReceivedFlag(u8 id); -u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); -void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2); -void LinkCB_RequestPlayerDataExchange(void); -void Task_PrintTestData(u8 taskId); -void sub_800AB0C(void); -void sub_800AB38(void); -void sub_800ABD4(void); -void sub_800AC00(void); -void CheckErrorStatus(void); -void CB2_PrintErrorMessage(void); -void EnableSerial(void); -void sub_800B210(void); -void sub_80F8DC0(void); -void DisableSerial(void); -void sub_800B284(struct LinkPlayer * linkPlayer); -bool8 IsSioMultiMaster(void); +static void InitLocalLinkPlayer(void); +static void sub_800978C(void); +static void CB2_LinkTest(void); +static void ProcessRecvCmds(u8 id); +static void sub_800A040(void); +static void ResetBlockSend(void); +static bool32 InitBlockSend(const void *src, size_t size); +static void LinkCB_BlockSendBegin(void); +static void LinkCB_BlockSend(void); +static void LinkCB_BlockSendEnd(void); +static void sub_800A3CC(void); +static void SetBlockReceivedFlag(u8 id); +static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); +static void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2); +static void LinkCB_RequestPlayerDataExchange(void); +static void Task_PrintTestData(u8 taskId); +static void sub_800AB0C(void); +static void sub_800AB38(void); +static void sub_800ABD4(void); +static void sub_800AC00(void); +static void CheckErrorStatus(void); +static void CB2_PrintErrorMessage(void); +static void sub_800B210(void); +static void DisableSerial(void); +static void EnableSerial(void); +static bool8 IsSioMultiMaster(void); +static void CheckMasterOrSlave(void); +static void InitTimer(void); +static void EnqueueSendCmd(u16 *sendCmd); +static void DequeueRecvCmds(u16 (*recvCmds)[CMD_LENGTH]); +static void StartTransfer(void); +static bool8 DoHandshake(void); +static void DoRecv(void); +static void DoSend(void); +static void StopTimer(void); +static void SendRecvDone(void); ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); const u16 gWirelessLinkDisplay4bpp[] = INCBIN_U16("graphics/interface/wireless_link_display.4bpp.lz"); @@ -314,7 +319,7 @@ void SetLocalLinkPlayerId(u8 playerId) gLocalLinkPlayer.id = playerId; } -void InitLocalLinkPlayer(void) +static void InitLocalLinkPlayer(void) { gLocalLinkPlayer.trainerId = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24); StringCopy(gLocalLinkPlayer.name, gSaveBlock2Ptr->playerName); @@ -330,7 +335,7 @@ void InitLocalLinkPlayer(void) } } -void sub_800978C(void) +static void sub_800978C(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -471,7 +476,7 @@ void LinkTestProcessKeyInput(void) } } -void CB2_LinkTest(void) +static void CB2_LinkTest(void) { LinkTestProcessKeyInput(); TestBlockTransfer(1, 1, 0); @@ -734,7 +739,7 @@ bool32 IsSendingKeysToLink(void) return FALSE; } -void sub_800A040(void) +static void sub_800A040(void) { if (gReceivedRemoteLinkPlayers == TRUE) { @@ -884,7 +889,7 @@ void ResetLinkPlayers(void) } } -void ResetBlockSend(void) +static void ResetBlockSend(void) { sBlockSend.active = FALSE; sBlockSend.pos = 0; @@ -892,7 +897,7 @@ void ResetBlockSend(void) sBlockSend.src = NULL; } -bool32 InitBlockSend(const void *src, size_t size) +static bool32 InitBlockSend(const void *src, size_t size) { if (sBlockSend.active) { @@ -920,7 +925,7 @@ bool32 InitBlockSend(const void *src, size_t size) return TRUE; } -void LinkCB_BlockSendBegin(void) +static void LinkCB_BlockSendBegin(void) { if (++sBlockSendDelayCounter > 2) { @@ -928,7 +933,7 @@ void LinkCB_BlockSendBegin(void) } } -void LinkCB_BlockSend(void) +static void LinkCB_BlockSend(void) { int i; const u8 *src; @@ -947,7 +952,7 @@ void LinkCB_BlockSend(void) } } -void LinkCB_BlockSendEnd(void) +static void LinkCB_BlockSendEnd(void) { gLinkCallback = NULL; } @@ -958,7 +963,7 @@ void sub_800A3AC(void) gUnknown_2022114++; } -void sub_800A3CC(void) +static void sub_800A3CC(void) { gUnknown_2022114 = 0; gLinkCallback = sub_800A3AC; @@ -1086,7 +1091,7 @@ void CheckShouldAdvanceLinkState(void) } } -u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size) +static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size) { u16 chksum; u16 i; @@ -1115,7 +1120,7 @@ void LinkTest_prntchar(char a0, u8 a1, u8 a2) vAddr[a2 * 32 + a1] = (gLinkTestBGInfo.paletteNum << 12) | (a0 + gLinkTestBGInfo.dummy_8); } -void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2) +static void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2) { char sp[32 / 2]; int i; @@ -1155,7 +1160,7 @@ void LinkTest_prntstr(const char *a0, u8 a1, u8 a2) } } -void LinkCB_RequestPlayerDataExchange(void) +static void LinkCB_RequestPlayerDataExchange(void) { if (gLinkStatus & LINK_STAT_MASTER) { @@ -1164,7 +1169,7 @@ void LinkCB_RequestPlayerDataExchange(void) gLinkCallback = NULL; } -void Task_PrintTestData(u8 taskId) +static void Task_PrintTestData(u8 taskId) { char sp[32]; int i; @@ -1345,7 +1350,7 @@ void sub_800AAC0(void) } } -void sub_800AB0C(void) +static void sub_800AB0C(void) { if (gLastRecvQueueCount == 0) { @@ -1354,7 +1359,7 @@ void sub_800AB0C(void) } } -void sub_800AB38(void) +static void sub_800AB38(void) { int i; unsigned count; @@ -1395,7 +1400,7 @@ void sub_800AB9C(void) } } -void sub_800ABD4(void) +static void sub_800ABD4(void) { if (gLastRecvQueueCount == 0) { @@ -1404,7 +1409,7 @@ void sub_800ABD4(void) } } -void sub_800AC00(void) +static void sub_800AC00(void) { u8 i; u8 linkPlayerCount; @@ -1427,7 +1432,7 @@ void sub_800AC00(void) } } -void CheckErrorStatus(void) +static void CheckErrorStatus(void) { if (gLinkOpen && EXTRACT_LINK_ERRORS(gLinkStatus)) { @@ -1532,7 +1537,7 @@ void sub_800AED0(void) ShowBg(0); } -void CB2_PrintErrorMessage(void) +static void CB2_PrintErrorMessage(void) { switch (gMain.state) { @@ -1601,7 +1606,7 @@ bool8 GetSioMultiSI(void) return (REG_SIOCNT & 0x04) != 0; } -bool8 IsSioMultiMaster(void) +static bool8 IsSioMultiMaster(void) { return (REG_SIOCNT & 0x8) && !(REG_SIOCNT & 0x04); } @@ -1686,7 +1691,7 @@ void sub_800B1F4(void) } } -void sub_800B210(void) +static void sub_800B210(void) { if (gReceivedRemoteLinkPlayers == 0) { @@ -1720,13 +1725,15 @@ bool32 sub_800B270(void) return FALSE; } -void sub_800B284(struct LinkPlayer *player) +void sub_800B284(struct LinkPlayer * player) { player->name[10] = player->name[8]; ConvertInternationalString(player->name, player->language); } -void DisableSerial(void) +// File break? + +static void DisableSerial(void) { DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); REG_SIOCNT = SIO_MULTI_MODE; @@ -1737,7 +1744,7 @@ void DisableSerial(void) CpuFill32(0, &gLink, sizeof(gLink)); } -void EnableSerial(void) +static void EnableSerial(void) { DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); REG_RCNT = 0; @@ -1760,3 +1767,493 @@ void ResetSerial(void) EnableSerial(); DisableSerial(); } + +u32 LinkMain1(u8 *shouldAdvanceLinkState, u16 *sendCmd, u16 (*recvCmds)[CMD_LENGTH]) +{ + u32 retVal; + u32 retVal2; + + switch (gLink.state) + { + case LINK_STATE_START0: + DisableSerial(); + gLink.state = LINK_STATE_START1; + break; + case LINK_STATE_START1: + if (*shouldAdvanceLinkState == 1) + { + EnableSerial(); + gLink.state = LINK_STATE_HANDSHAKE; + } + break; + case LINK_STATE_HANDSHAKE: + switch (*shouldAdvanceLinkState) + { + default: + CheckMasterOrSlave(); + break; + case 1: + if (gLink.isMaster == LINK_MASTER && gLink.playerCount > 1) + { + gLink.handshakeAsMaster = TRUE; + } + break; + case 2: + gLink.state = LINK_STATE_START0; + REG_SIOMLT_SEND = 0; + break; + } + break; + case LINK_STATE_INIT_TIMER: + InitTimer(); + gLink.state = LINK_STATE_CONN_ESTABLISHED; + // fallthrough + case LINK_STATE_CONN_ESTABLISHED: + EnqueueSendCmd(sendCmd); + DequeueRecvCmds(recvCmds); + break; + } + *shouldAdvanceLinkState = 0; + retVal = gLink.localId; + retVal |= (gLink.playerCount << LINK_STAT_PLAYER_COUNT_SHIFT); + if (gLink.isMaster == LINK_MASTER) + { + retVal |= LINK_STAT_MASTER; + } + { + u32 receivedNothing = gLink.receivedNothing << LINK_STAT_RECEIVED_NOTHING_SHIFT; + u32 link_field_F = gLink.link_field_F << LINK_STAT_UNK_FLAG_9_SHIFT; + u32 hardwareError = gLink.hardwareError << LINK_STAT_ERROR_HARDWARE_SHIFT; + u32 badChecksum = gLink.badChecksum << LINK_STAT_ERROR_CHECKSUM_SHIFT; + u32 queueFull = gLink.queueFull << LINK_STAT_ERROR_QUEUE_FULL_SHIFT; + u32 val; + + if (gLink.state == LINK_STATE_CONN_ESTABLISHED) + { + val = LINK_STAT_CONN_ESTABLISHED; + val |= receivedNothing; + val |= retVal; + val |= link_field_F; + val |= hardwareError; + val |= badChecksum; + val |= queueFull; + } + else + { + val = retVal; + val |= receivedNothing; + val |= link_field_F; + val |= hardwareError; + val |= badChecksum; + val |= queueFull; + } + + retVal = val; + } + + if (gLink.lag == LAG_MASTER) + { + retVal |= LINK_STAT_ERROR_LAG_MASTER; + } + + if (gLink.localId >= MAX_LINK_PLAYERS) + { + retVal |= LINK_STAT_ERROR_INVALID_ID; + } + + retVal2 = retVal; + if (gLink.lag == LAG_SLAVE) + { + retVal2 |= LINK_STAT_ERROR_LAG_SLAVE; + } + + return retVal2; +} + +static void CheckMasterOrSlave(void) +{ + u32 terminals; + + terminals = *(vu32 *)REG_ADDR_SIOCNT & (SIO_MULTI_SD | SIO_MULTI_SI); + if (terminals == SIO_MULTI_SD && gLink.localId == 0) + { + gLink.isMaster = LINK_MASTER; + } + else + { + gLink.isMaster = LINK_SLAVE; + } +} + +static void InitTimer(void) +{ + if (gLink.isMaster) + { + REG_TM3CNT_L = -197; + REG_TM3CNT_H = TIMER_64CLK | TIMER_INTR_ENABLE; + EnableInterrupts(INTR_FLAG_TIMER3); + } +} + +static void EnqueueSendCmd(u16 *sendCmd) +{ + u8 i; + u8 offset; + + gLinkSavedIme = REG_IME; + REG_IME = 0; + if (gLink.sendQueue.count < QUEUE_CAPACITY) + { + offset = gLink.sendQueue.pos + gLink.sendQueue.count; + if (offset >= QUEUE_CAPACITY) + { + offset -= QUEUE_CAPACITY; + } + for (i = 0; i < CMD_LENGTH; i++) + { + sSendNonzeroCheck |= *sendCmd; + gLink.sendQueue.data[i][offset] = *sendCmd; + *sendCmd = 0; + sendCmd++; + } + } + else + { + gLink.queueFull = QUEUE_FULL_SEND; + } + if (sSendNonzeroCheck) + { + gLink.sendQueue.count++; + sSendNonzeroCheck = 0; + } + REG_IME = gLinkSavedIme; + gLastSendQueueCount = gLink.sendQueue.count; +} + +static void DequeueRecvCmds(u16 (*recvCmds)[CMD_LENGTH]) +{ + u8 i; + u8 j; + + gLinkSavedIme = REG_IME; + REG_IME = 0; + if (gLink.recvQueue.count == 0) + { + for (i = 0; i < gLink.playerCount; i++) + { + for (j = 0; j < CMD_LENGTH; j++) + { + recvCmds[i][j] = 0; + } + } + + gLink.receivedNothing = TRUE; + } + else + { + for (i = 0; i < gLink.playerCount; i++) + { + for (j = 0; j < CMD_LENGTH; j++) + { + recvCmds[i][j] = gLink.recvQueue.data[i][j][gLink.recvQueue.pos]; + } + } + gLink.recvQueue.count--; + gLink.recvQueue.pos++; + if (gLink.recvQueue.pos >= QUEUE_CAPACITY) + { + gLink.recvQueue.pos = 0; + } + gLink.receivedNothing = FALSE; + } + REG_IME = gLinkSavedIme; +} + +void LinkVSync(void) +{ + if (gLink.isMaster) + { + switch (gLink.state) + { + case LINK_STATE_CONN_ESTABLISHED: + if (gLink.serialIntrCounter < 9) + { + if (gLink.hardwareError != TRUE) + { + gLink.lag = LAG_MASTER; + } + else + { + StartTransfer(); + } + } + else if (gLink.lag != LAG_MASTER) + { + gLink.serialIntrCounter = 0; + StartTransfer(); + } + break; + case LINK_STATE_HANDSHAKE: + StartTransfer(); + break; + } + } + else if (gLink.state == LINK_STATE_CONN_ESTABLISHED || gLink.state == LINK_STATE_HANDSHAKE) + { + if (++sNumVBlanksWithoutSerialIntr > 10) + { + if (gLink.state == LINK_STATE_CONN_ESTABLISHED) + { + gLink.lag = LAG_SLAVE; + } + if (gLink.state == LINK_STATE_HANDSHAKE) + { + gLink.playerCount = 0; + gLink.link_field_F = FALSE; + } + } + } +} + +void Timer3Intr(void) +{ + StopTimer(); + StartTransfer(); +} + +void SerialCB(void) +{ + gLink.localId = SIO_MULTI_CNT->id; + switch (gLink.state) + { + case LINK_STATE_CONN_ESTABLISHED: + gLink.hardwareError = SIO_MULTI_CNT->error; + DoRecv(); + DoSend(); + SendRecvDone(); + break; + case LINK_STATE_HANDSHAKE: + if (DoHandshake()) + { + if (gLink.isMaster) + { + gLink.state = LINK_STATE_INIT_TIMER; + gLink.serialIntrCounter = 8; + } + else + { + gLink.state = LINK_STATE_CONN_ESTABLISHED; + } + } + break; + } + gLink.serialIntrCounter++; + sNumVBlanksWithoutSerialIntr = 0; + if (gLink.serialIntrCounter == 8) + { + gLastRecvQueueCount = gLink.recvQueue.count; + } +} + +static void StartTransfer(void) +{ + REG_SIOCNT |= SIO_START; +} + +static bool8 DoHandshake(void) +{ + u8 i; + u8 playerCount; + u16 minRecv; + + playerCount = 0; + minRecv = 0xFFFF; + if (gLink.handshakeAsMaster == TRUE) + { + REG_SIOMLT_SEND = MASTER_HANDSHAKE; + } + else + { + REG_SIOMLT_SEND = SLAVE_HANDSHAKE; + } + *(u64 *)gLink.tempRecvBuffer = REG_SIOMLT_RECV; + REG_SIOMLT_RECV = 0; + gLink.handshakeAsMaster = FALSE; + for (i = 0; i < 4; i++) + { + if ((gLink.tempRecvBuffer[i] & ~0x3) == SLAVE_HANDSHAKE || gLink.tempRecvBuffer[i] == MASTER_HANDSHAKE) + { + playerCount++; + if (minRecv > gLink.tempRecvBuffer[i] && gLink.tempRecvBuffer[i] != 0) + { + minRecv = gLink.tempRecvBuffer[i]; + } + } + else + { + if (gLink.tempRecvBuffer[i] != 0xFFFF) + { + playerCount = 0; + } + break; + } + } + gLink.playerCount = playerCount; + if (gLink.playerCount > 1 && gLink.playerCount == sHandshakePlayerCount && gLink.tempRecvBuffer[0] == MASTER_HANDSHAKE) + { + return TRUE; + } + if (gLink.playerCount > 1) + { + gLink.link_field_F = (minRecv & 3) + 1; + } + else + { + gLink.link_field_F = 0; + } + sHandshakePlayerCount = gLink.playerCount; + return FALSE; +} + +static void DoRecv(void) +{ + u16 recv[4]; + u8 i; + u8 index; + + *(u64 *)recv = REG_SIOMLT_RECV; + if (gLink.sendCmdIndex == 0) + { + for (i = 0; i < gLink.playerCount; i++) + { + if (gLink.checksum != recv[i] && sChecksumAvailable) + { + gLink.badChecksum = TRUE; + } + } + gLink.checksum = 0; + sChecksumAvailable = TRUE; + } + else + { + index = gLink.recvQueue.pos + gLink.recvQueue.count; + if (index >= QUEUE_CAPACITY) + { + index -= QUEUE_CAPACITY; + } + if (gLink.recvQueue.count < QUEUE_CAPACITY) + { + for (i = 0; i < gLink.playerCount; i++) + { + gLink.checksum += recv[i]; + sRecvNonzeroCheck |= recv[i]; + gLink.recvQueue.data[i][gLink.recvCmdIndex][index] = recv[i]; + } + } + else + { + gLink.queueFull = QUEUE_FULL_RECV; + } + gLink.recvCmdIndex++; + if (gLink.recvCmdIndex == CMD_LENGTH && sRecvNonzeroCheck) + { + gLink.recvQueue.count++; + sRecvNonzeroCheck = 0; + } + } +} + +static void DoSend(void) +{ + if (gLink.sendCmdIndex == CMD_LENGTH) + { + REG_SIOMLT_SEND = gLink.checksum; + if (!sSendBufferEmpty) + { + gLink.sendQueue.count--; + gLink.sendQueue.pos++; + if (gLink.sendQueue.pos >= QUEUE_CAPACITY) + { + gLink.sendQueue.pos = 0; + } + } + else + { + sSendBufferEmpty = FALSE; + } + } + else + { + if (!sSendBufferEmpty && gLink.sendQueue.count == 0) + { + sSendBufferEmpty = TRUE; + } + if (sSendBufferEmpty) + { + REG_SIOMLT_SEND = 0; + } + else + { + REG_SIOMLT_SEND = gLink.sendQueue.data[gLink.sendCmdIndex][gLink.sendQueue.pos]; + } + gLink.sendCmdIndex++; + } +} + +static void StopTimer(void) +{ + if (gLink.isMaster) + { + REG_TM3CNT_H &= ~TIMER_ENABLE; + REG_TM3CNT_L = -197; + } +} + +static void SendRecvDone(void) +{ + if (gLink.recvCmdIndex == CMD_LENGTH) + { + gLink.sendCmdIndex = 0; + gLink.recvCmdIndex = 0; + } + else if (gLink.isMaster) + { + REG_TM3CNT_H |= TIMER_ENABLE; + } +} + +void ResetSendBuffer(void) +{ + u8 i; + u8 j; + + gLink.sendQueue.count = 0; + gLink.sendQueue.pos = 0; + for (i = 0; i < CMD_LENGTH; i++) + { + for (j = 0; j < QUEUE_CAPACITY; j++) + { + gLink.sendQueue.data[i][j] = 0xEFFF; + } + } +} + +void ResetRecvBuffer(void) +{ + u8 i; + u8 j; + u8 k; + + gLink.recvQueue.count = 0; + gLink.recvQueue.pos = 0; + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + for (j = 0; j < CMD_LENGTH; j++) + { + for (k = 0; k < QUEUE_CAPACITY; k++) + { + gLink.recvQueue.data[i][j][k] = 0xEFFF; + } + } + } +} diff --git a/sym_common.txt b/sym_common.txt index 0adbe29b3..b251a32ba 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -4,98 +4,9 @@ .include "window.o" .include "text.o" .include "sprite.o" + .include "link.o" .align 4 -gLinkPartnersHeldKeys: @ 3003E60 - .space 0xC - -gLinkDebugSeed: @ 3003E6C - .space 0x4 - -gLocalLinkPlayerBlock: @ 3003E70 - .space 0x3C - -gLinkErrorOccurred: @ 3003EAC - .space 0x4 - -gLinkDebugFlags: @ 3003EB0 - .space 0x8 - -gRemoteLinkPlayersNotReceived: @ 3003EB8 - .space 0x4 - -gBlockReceivedStatus: @ 3003EBC - .space 0x8 - -gLinkHeldKeys: @ 3003EC4 - .space 0xC - -gRecvCmds: @ 3003ED0 - .space 0x50 - -gLinkStatus: @ 3003F20 - .space 0x4 - -gUnknown_3003F24: @ 3003F24 - .space 0x4 - -gUnknown_3003F28: @ 3003F28 - .space 0x4 - -gUnknown_3003F2C: @ 3003F2C - .space 0x4 - -gUnknown_3003F30: @ 3003F30 - .space 0x4 - -gUnknown_3003F34: @ 3003F34 - .space 0x4 - -gSuppressLinkErrorMessage: @ 3003F38 - .space 0x4 - -gWirelessCommType: @ 3003F3C - .space 0x4 - -gSavedLinkPlayerCount: @ 3003F40 - .space 0x10 - -gSendCmd: @ 3003F50 - .space 0x10 - -gSavedMultiplayerId: @ 3003F60 - .space 0x4 - -gReceivedRemoteLinkPlayers: @ 3003F64 - .space 0xC - -gLinkTestBGInfo: @ 3003F70 - .space 0x10 - -gLinkCallback: @ 3003F80 - .space 0x4 - -gShouldAdvanceLinkState: @ 3003F84 - .space 0x4 - -gLinkTestBlockChecksums: @ 3003F88 - .space 0x8 - -gBlockRequestType: @ 3003F90 - .space 0x10 - -gLastSendQueueCount: @ 3003FA0 - .space 0x10 - -gLink: @ 3003FB0 - .space 0xFC0 - -gLastRecvQueueCount: @ 3004F70 - .space 0x4 - -gLinkSavedIme: @ 3004F74 - .space 0xC - gPreBattleCallback1: @ 3004F80 .space 0x4 From 6d0f19184e5e1832b3759a949c9a0d64c9c6c912 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 11:27:34 -0400 Subject: [PATCH 097/100] Static const --- data/data.s | 4 ++++ src/link.c | 68 ++++++++++++++++++++++++++--------------------------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/data/data.s b/data/data.s index fa97f6dea..d0bd198e1 100644 --- a/data/data.s +++ b/data/data.s @@ -7,8 +7,12 @@ .section .rodata .align 2, 0 +gUnknown_8234614:: .string "$" + +gUnknown_8234615:: .string "\n$" + .align 2, 0 gUnknown_8234618:: @ 8234618 .incbin "baserom.gba", 0x234618, 0x8 diff --git a/src/link.c b/src/link.c index 0bb637881..a42fc0f25 100644 --- a/src/link.c +++ b/src/link.c @@ -163,27 +163,27 @@ static void DoSend(void); static void StopTimer(void); static void SendRecvDone(void); -ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); -const u16 gWirelessLinkDisplay4bpp[] = INCBIN_U16("graphics/interface/wireless_link_display.4bpp.lz"); -const u16 gWirelessLinkDisplayBin[] = INCBIN_U16("graphics/interface/wireless_link_display.bin.lz"); -const u16 gLinkTestFontPal[] = INCBIN_U16("graphics/interface/link_test_font.gbapal"); -const u16 gLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp"); +ALIGNED(4) static const u16 sWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); +static const u16 sWirelessLinkDisplay4bpp[] = INCBIN_U16("graphics/interface/wireless_link_display.4bpp.lz"); +static const u16 sWirelessLinkDisplayBin[] = INCBIN_U16("graphics/interface/wireless_link_display.bin.lz"); +static const u16 sLinkTestFontPal[] = INCBIN_U16("graphics/interface/link_test_font.gbapal"); +static const u16 sLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp"); -const struct BlockRequest gUnknown_8234598[] = { +static const struct BlockRequest sBlockRequests[] = { {gBlockSendBuffer, 200}, {gBlockSendBuffer, 200}, {gBlockSendBuffer, 100}, {gBlockSendBuffer, 220}, {gBlockSendBuffer, 40} }; -const char gASCIIGameFreakInc[] = "GameFreak inc."; -const char gASCIITestPrint[] = "TEST PRINT\n" +static const char sASCIIGameFreakInc[] = "GameFreak inc."; +static const char sASCIITestPrint[] = "TEST PRINT\n" "P0\n" "P1\n" "P2\n" "P3"; -const struct BgTemplate gUnknown_82345E8[] = { +static const struct BgTemplate sLinkErrorBgTemplates[] = { { .bg = 0, .charBaseIndex = 2, @@ -197,7 +197,7 @@ const struct BgTemplate gUnknown_82345E8[] = { } }; -const struct WindowTemplate gUnknown_82345F0[] = { +static const struct WindowTemplate sLinkErrorWindowTemplates[] = { { .bg = 0, .tilemapLeft = 0, @@ -225,7 +225,7 @@ const struct WindowTemplate gUnknown_82345F0[] = { }, DUMMY_WIN_TEMPLATE }; -const u8 gUnknown_8234610[4] = { 0x00, 0x01, 0x02 }; +static const u8 sLinkErrorTextColor[] = { 0x00, 0x01, 0x02 }; bool8 IsWirelessAdapterConnected(void) { @@ -254,8 +254,8 @@ void Task_DestroySelf(u8 taskId) void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4) { - LoadPalette(gLinkTestFontPal, paletteNum * 16, 0x20); - DmaCopy16(3, gLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestFontGfx); + LoadPalette(sLinkTestFontPal, paletteNum * 16, 0x20); + DmaCopy16(3, sLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof sLinkTestFontGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; gLinkTestBGInfo.dummy_8 = a4; @@ -277,8 +277,8 @@ void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBloc void sub_80095BC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) { - LoadPalette(gLinkTestFontPal, paletteNum * 16, 0x20); - DmaCopy16(3, gLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestFontGfx); + LoadPalette(sLinkTestFontPal, paletteNum * 16, 0x20); + DmaCopy16(3, sLinkTestFontGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof sLinkTestFontGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; gLinkTestBGInfo.dummy_8 = 0; @@ -548,8 +548,8 @@ void ProcessRecvCmds(u8 unused) InitLocalLinkPlayer(); block = &gLocalLinkPlayerBlock; block->linkPlayer = gLocalLinkPlayer; - memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1); - memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1); + memcpy(block->magic1, sASCIIGameFreakInc, sizeof(block->magic1) - 1); + memcpy(block->magic2, sASCIIGameFreakInc, sizeof(block->magic2) - 1); InitBlockSend(block, sizeof(*block)); break; } @@ -614,8 +614,8 @@ void ProcessRecvCmds(u8 unused) linkPlayer->name[8] = 0; } sub_800B284(linkPlayer); - if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 - || strcmp(block->magic2, gASCIIGameFreakInc) != 0) + if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 + || strcmp(block->magic2, sASCIIGameFreakInc) != 0) { SetMainCallback2(CB2_LinkError); } @@ -641,7 +641,7 @@ void ProcessRecvCmds(u8 unused) sub_800A3CC(); break; case LINKCMD_0xCCCC: - SendBlock(0, gUnknown_8234598[gRecvCmds[i][1]].address, gUnknown_8234598[gRecvCmds[i][1]].size); + SendBlock(0, sBlockRequests[gRecvCmds[i][1]].address, sBlockRequests[gRecvCmds[i][1]].size); break; case LINKCMD_SEND_HELD_KEYS_2: gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; @@ -1174,7 +1174,7 @@ static void Task_PrintTestData(u8 taskId) char sp[32]; int i; - strcpy(sp, gASCIITestPrint); + strcpy(sp, sASCIITestPrint); LinkTest_prntstr(sp, 5, 2); LinkTest_prnthex(gShouldAdvanceLinkState, 2, 1, 2); LinkTest_prnthex(gLinkStatus, 15, 1, 8); @@ -1481,10 +1481,10 @@ void CB2_LinkError(void) } SetVBlankCallback(sub_800978C); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_82345E8, 2); + InitBgsFromTemplates(0, sLinkErrorBgTemplates, 2); gUnknown_2022860 = tilemapBuffer = malloc(0x800); SetBgTilemapBuffer(1, tilemapBuffer); - if (InitWindows(gUnknown_82345F0)) + if (InitWindows(sLinkErrorWindowTemplates)) { DeactivateAllTextPrinters(); ResetTempTileDataBuffers(); @@ -1509,14 +1509,14 @@ void CB2_LinkError(void) void sub_800AE1C(void) { - DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplay4bpp, FALSE, 0, 0); - CopyToBgTilemapBuffer(1, gWirelessLinkDisplayBin, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, sWirelessLinkDisplay4bpp, FALSE, 0, 0); + CopyToBgTilemapBuffer(1, sWirelessLinkDisplayBin, 0, 0); CopyBgTilemapBufferToVram(1); - LoadPalette(gWirelessLinkDisplayPal, 0, 0x20); + LoadPalette(sWirelessLinkDisplayPal, 0, 0x20); FillWindowPixelBuffer(0, PIXEL_FILL(0)); FillWindowPixelBuffer(2, PIXEL_FILL(0)); - AddTextPrinterParameterized3(0, 3, 2, 5, gUnknown_8234610, 0, gText_CommErrorEllipsis); - AddTextPrinterParameterized3(2, 3, 2, 2, gUnknown_8234610, 0, gText_MoveCloserToLinkPartner); + AddTextPrinterParameterized3(0, 3, 2, 5, sLinkErrorTextColor, 0, gText_CommErrorEllipsis); + AddTextPrinterParameterized3(2, 3, 2, 2, sLinkErrorTextColor, 0, gText_MoveCloserToLinkPartner); PutWindowTilemap(0); PutWindowTilemap(2); CopyWindowToVram(0, 0); @@ -1529,7 +1529,7 @@ void sub_800AED0(void) { FillWindowPixelBuffer(1, PIXEL_FILL(0)); FillWindowPixelBuffer(2, PIXEL_FILL(0)); - AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_8234610, 0, gText_CommErrorCheckConnections); + AddTextPrinterParameterized3(1, 3, 2, 0, sLinkErrorTextColor, 0, gText_CommErrorCheckConnections); PutWindowTilemap(1); PutWindowTilemap(2); CopyWindowToVram(1, 0); @@ -1563,11 +1563,11 @@ static void CB2_PrintErrorMessage(void) case 130: if (gWirelessCommType == 2) { - AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnTitleScreen); + AddTextPrinterParameterized3(0, 3, 2, 20, sLinkErrorTextColor, 0, gText_ABtnTitleScreen); } else if (gWirelessCommType == 1) { - AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnRegistrationCounter); + AddTextPrinterParameterized3(0, 3, 2, 20, sLinkErrorTextColor, 0, gText_ABtnRegistrationCounter); } break; } @@ -1633,8 +1633,8 @@ void sub_800B0B4(void) InitLocalLinkPlayer(); block = &gLocalLinkPlayerBlock; block->linkPlayer = gLocalLinkPlayer; - memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1); - memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1); + memcpy(block->magic1, sASCIIGameFreakInc, sizeof(block->magic1) - 1); + memcpy(block->magic2, sASCIIGameFreakInc, sizeof(block->magic2) - 1); memcpy(gBlockSendBuffer, block, sizeof(*block)); } @@ -1648,7 +1648,7 @@ void sub_800B110(u32 who) player = &gLinkPlayers[who_]; *player = block->linkPlayer; sub_800B284(player); - if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 || strcmp(block->magic2, gASCIIGameFreakInc) != 0) + if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 || strcmp(block->magic2, sASCIIGameFreakInc) != 0) { SetMainCallback2(CB2_LinkError); } From 5ba9fcdd3fe7610f2bbca449c2683f2e31c20898 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 12:34:42 -0400 Subject: [PATCH 098/100] Consistent spacing for struct ptr arg/var decls --- include/librfu.h | 12 ++++++------ src/link.c | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/librfu.h b/include/librfu.h index d107894dd..2fe66ea84 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -199,17 +199,17 @@ struct RfuUnk5 struct RfuUnk5Sub unk_14[4]; }; -extern struct RfuStruct *gRfuState; +extern struct RfuStruct * gRfuState; -extern struct RfuUnk5 *gUnknown_03007890; +extern struct RfuUnk5 * gUnknown_03007890; extern u32 *gUnknown_03007894; -extern struct RfuUnk3* gUnknown_03007898; -extern struct RfuUnk2* gUnknown_03007880[4]; -extern struct RfuUnk1* gUnknown_03007870[4]; +extern struct RfuUnk3 * gUnknown_03007898; +extern struct RfuUnk2 * gUnknown_03007880[4]; +extern struct RfuUnk1 * gUnknown_03007870[4]; extern void* sub_82E53F4; extern void rfu_STC_clearAPIVariables(void); -void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); +void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); void rfu_REQ_stopMode(void); void rfu_waitREQComplete(void); u32 rfu_REQBN_softReset_and_checkID(void); diff --git a/src/link.c b/src/link.c index a42fc0f25..9d67c984e 100644 --- a/src/link.c +++ b/src/link.c @@ -543,7 +543,7 @@ void ProcessRecvCmds(u8 unused) { case LINKCMD_SEND_LINK_TYPE: { - struct LinkPlayerBlock *block; + struct LinkPlayerBlock * block; InitLocalLinkPlayer(); block = &gLocalLinkPlayerBlock; @@ -564,7 +564,7 @@ void ProcessRecvCmds(u8 unused) break; case LINKCMD_INIT_BLOCK: { - struct BlockTransfer *blockRecv; + struct BlockTransfer * blockRecv; blockRecv = &sBlockRecv[i]; blockRecv->pos = 0; @@ -601,8 +601,8 @@ void ProcessRecvCmds(u8 unused) { if (gRemoteLinkPlayersNotReceived[i] == TRUE) { - struct LinkPlayerBlock *block; - struct LinkPlayer *linkPlayer; + struct LinkPlayerBlock * block; + struct LinkPlayer * linkPlayer; block = (struct LinkPlayerBlock *)&gBlockRecvBuffer[i]; linkPlayer = &gLinkPlayers[i]; @@ -1628,7 +1628,7 @@ bool8 HasLinkErrorOccurred(void) void sub_800B0B4(void) { - struct LinkPlayerBlock *block; + struct LinkPlayerBlock * block; InitLocalLinkPlayer(); block = &gLocalLinkPlayerBlock; @@ -1641,8 +1641,8 @@ void sub_800B0B4(void) void sub_800B110(u32 who) { u8 who_ = who; - struct LinkPlayerBlock *block; - struct LinkPlayer *player; + struct LinkPlayerBlock * block; + struct LinkPlayer * player; block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_]; player = &gLinkPlayers[who_]; From adf65c8289892a70d868332a0a91e22d51f945c2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 12:54:42 -0400 Subject: [PATCH 099/100] More parameter spacing fixes --- include/librfu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/librfu.h b/include/librfu.h index 2fe66ea84..b002420fd 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -119,8 +119,8 @@ struct RfuStruct void (*callbackM)(); void (*callbackS)(); u32 callbackID; - union RfuPacket *txPacket; - union RfuPacket *rxPacket; + union RfuPacket * txPacket; + union RfuPacket * rxPacket; vu8 unk_2c; u8 padding[3]; }; @@ -206,7 +206,7 @@ extern u32 *gUnknown_03007894; extern struct RfuUnk3 * gUnknown_03007898; extern struct RfuUnk2 * gUnknown_03007880[4]; extern struct RfuUnk1 * gUnknown_03007870[4]; -extern void* sub_82E53F4; +extern void *sub_82E53F4; extern void rfu_STC_clearAPIVariables(void); void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); From 13468377bc85b2daa309b049e3d9f733dadce440 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 13:07:11 -0400 Subject: [PATCH 100/100] Correct symbols in librfu.h --- include/librfu.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/include/librfu.h b/include/librfu.h index b002420fd..69f0bb695 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -201,12 +201,20 @@ struct RfuUnk5 extern struct RfuStruct * gRfuState; -extern struct RfuUnk5 * gUnknown_03007890; -extern u32 *gUnknown_03007894; -extern struct RfuUnk3 * gUnknown_03007898; -extern struct RfuUnk2 * gUnknown_03007880[4]; -extern struct RfuUnk1 * gUnknown_03007870[4]; -extern void *sub_82E53F4; +extern struct RfuUnk5 * gUnknown_3007460; +extern u32 *gUnknown_3007464; +extern struct RfuUnk3 * gUnknown_3007468; +extern struct RfuUnk2 * gUnknown_3007450[4]; +extern struct RfuUnk1 * gUnknown_3007440[4]; +extern struct { + u8 unk0; + u8 unk1; + u16 unk2; + u16 unk4; + u8 fill6[4]; + u16 unkA; +} gUnknown_3007470; + extern void rfu_STC_clearAPIVariables(void); void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);