diff options
57 files changed, 8249 insertions, 20405 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s index 90c429e19..775cb1033 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -99,10 +99,10 @@ sub_800FE24: @ 800FE24 movs r0, 0x4A movs r1, 0 bl SetGpuReg - ldr r1, _0800FF30 @ =gUnknown_2022984 + ldr r1, _0800FF30 @ =gBattle_WIN0H movs r0, 0xF0 strh r0, [r1] - ldr r0, _0800FF34 @ =gUnknown_2022986 + ldr r0, _0800FF34 @ =gBattle_WIN0V strh r4, [r0] bl ScanlineEffect_Clear ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers @@ -184,8 +184,8 @@ _0800FEA6: .align 2, 0 _0800FF28: .4byte 0x05006000 _0800FF2C: .4byte 0x00005051 -_0800FF30: .4byte gUnknown_2022984 -_0800FF34: .4byte gUnknown_2022986 +_0800FF30: .4byte gBattle_WIN0H +_0800FF34: .4byte gBattle_WIN0V _0800FF38: .4byte gScanlineEffectRegBuffers _0800FF3C: .4byte gUnknown_824EFE4 _0800FF40: .4byte 0x0000ff10 @@ -3157,11 +3157,11 @@ VBlankCB_Battle: @ 80116F4 ldrh r1, [r0] movs r0, 0x1E bl SetGpuReg - ldr r0, _080117A8 @ =gUnknown_2022984 + ldr r0, _080117A8 @ =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x40 bl SetGpuReg - ldr r0, _080117AC @ =gUnknown_2022986 + ldr r0, _080117AC @ =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x44 bl SetGpuReg @@ -3188,8 +3188,8 @@ _08011798: .4byte gBattle_BG2_X _0801179C: .4byte gBattle_BG2_Y _080117A0: .4byte gBattle_BG3_X _080117A4: .4byte gBattle_BG3_Y -_080117A8: .4byte gUnknown_2022984 -_080117AC: .4byte gUnknown_2022986 +_080117A8: .4byte gBattle_WIN0H +_080117AC: .4byte gBattle_WIN0V _080117B0: .4byte gUnknown_2022988 _080117B4: .4byte gUnknown_202298A thumb_func_end VBlankCB_Battle @@ -3543,10 +3543,10 @@ sub_8011A1C: @ 8011A1C movs r0, 0x4A movs r1, 0 bl SetGpuReg - ldr r1, _08011B48 @ =gUnknown_2022984 + ldr r1, _08011B48 @ =gBattle_WIN0H movs r0, 0xF0 strh r0, [r1] - ldr r0, _08011B4C @ =gUnknown_2022986 + ldr r0, _08011B4C @ =gBattle_WIN0V strh r4, [r0] bl ScanlineEffect_Clear ldr r0, _08011B50 @ =gScanlineEffectRegBuffers @@ -3643,8 +3643,8 @@ _08011A9C: .align 2, 0 _08011B40: .4byte 0x05006000 _08011B44: .4byte 0x00005051 -_08011B48: .4byte gUnknown_2022984 -_08011B4C: .4byte gUnknown_2022986 +_08011B48: .4byte gBattle_WIN0H +_08011B4C: .4byte gBattle_WIN0V _08011B50: .4byte gScanlineEffectRegBuffers _08011B54: .4byte 0x0000ff10 _08011B58: .4byte gBattle_BG0_X @@ -4145,16 +4145,16 @@ _08011F3C: lsls r0, 16 lsrs r0, 16 _08011F46: - ldr r1, _08011F4C @ =gUnknown_82349CC + ldr r1, _08011F4C @ =gMonFrontPicCoords lsls r0, 2 b _08011F88 .align 2, 0 -_08011F4C: .4byte gUnknown_82349CC +_08011F4C: .4byte gMonFrontPicCoords _08011F50: ldr r0, _08011F68 @ =0x00000181 cmp r4, r0 bne _08011F74 - ldr r0, _08011F6C @ =gUnknown_83AE03C + ldr r0, _08011F6C @ =gCastformFrontSpriteCoords ldr r1, _08011F70 @ =gBattleMonForms adds r1, r6, r1 ldrb r1, [r1] @@ -4164,19 +4164,19 @@ _08011F50: b _08011F8C .align 2, 0 _08011F68: .4byte 0x00000181 -_08011F6C: .4byte gUnknown_83AE03C +_08011F6C: .4byte gCastformFrontSpriteCoords _08011F70: .4byte gBattleMonForms _08011F74: movs r0, 0xCE lsls r0, 1 cmp r4, r0 bls _08011F84 - ldr r0, _08011F80 @ =gUnknown_82349CC + ldr r0, _08011F80 @ =gMonFrontPicCoords b _08011F8A .align 2, 0 -_08011F80: .4byte gUnknown_82349CC +_08011F80: .4byte gMonFrontPicCoords _08011F84: - ldr r1, _08011FAC @ =gUnknown_82349CC + ldr r1, _08011FAC @ =gMonFrontPicCoords lsls r0, r4, 2 _08011F88: adds r0, r1 @@ -4199,7 +4199,7 @@ _08011F8C: pop {r0} bx r0 .align 2, 0 -_08011FAC: .4byte gUnknown_82349CC +_08011FAC: .4byte gMonFrontPicCoords _08011FB0: .4byte sub_8011FB4 thumb_func_end SpriteCB_FaintOpponentMon diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 9d16e91e1..d5e389807 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -16,7 +16,7 @@ ClearBattleAnimationVars: @ 80724C0 strb r1, [r0] ldr r0, _08072558 @ =gAnimScriptActive strb r1, [r0] - ldr r0, _0807255C @ =gUnknown_2037EE2 + ldr r0, _0807255C @ =gAnimVisualTaskCount strb r1, [r0] ldr r0, _08072560 @ =gUnknown_2037EE3 strb r1, [r0] @@ -86,7 +86,7 @@ _08072520: .align 2, 0 _08072554: .4byte gUnknown_2037EE0 _08072558: .4byte gAnimScriptActive -_0807255C: .4byte gUnknown_2037EE2 +_0807255C: .4byte gAnimVisualTaskCount _08072560: .4byte gUnknown_2037EE3 _08072564: .4byte gAnimDisableStructPtr _08072568: .4byte gAnimMoveDmg @@ -152,7 +152,7 @@ LaunchBattleAnimation: @ 80725D4 movs r4, 0 ldr r6, _08072618 @ =gBattlerPartyIndexes movs r7, 0x64 - ldr r5, _0807261C @ =gUnknown_2037F1C + ldr r5, _0807261C @ =gAnimBattlerSpecies _08072600: lsls r0, r4, 24 lsrs r0, 24 @@ -166,7 +166,7 @@ _08072600: b _0807262A .align 2, 0 _08072618: .4byte gBattlerPartyIndexes -_0807261C: .4byte gUnknown_2037F1C +_0807261C: .4byte gAnimBattlerSpecies _08072620: .4byte gEnemyParty _08072624: ldrh r0, [r6] @@ -276,10 +276,10 @@ _080726EE: movs r2, 0x80 bl m4aMPlayVolumeControl _08072706: - ldr r0, _08072730 @ =gUnknown_2022984 + ldr r0, _08072730 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, _08072734 @ =gUnknown_2022986 + ldr r0, _08072734 @ =gBattle_WIN0V strh r1, [r0] ldr r0, _08072738 @ =gUnknown_2022988 strh r1, [r0] @@ -296,8 +296,8 @@ _08072706: .align 2, 0 _08072728: .4byte 0x0000ffff _0807272C: .4byte gMPlayInfo_BGM -_08072730: .4byte gUnknown_2022984 -_08072734: .4byte gUnknown_2022986 +_08072730: .4byte gBattle_WIN0H +_08072734: .4byte gBattle_WIN0V _08072738: .4byte gUnknown_2022988 _0807273C: .4byte gUnknown_202298A thumb_func_end LaunchBattleAnimation @@ -309,7 +309,7 @@ DestroyAnimSprite: @ 8072740 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite - ldr r1, _0807275C @ =gUnknown_2037EE2 + ldr r1, _0807275C @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -317,7 +317,7 @@ DestroyAnimSprite: @ 8072740 pop {r0} bx r0 .align 2, 0 -_0807275C: .4byte gUnknown_2037EE2 +_0807275C: .4byte gAnimVisualTaskCount thumb_func_end DestroyAnimSprite thumb_func_start DestroyAnimVisualTask @@ -326,14 +326,14 @@ DestroyAnimVisualTask: @ 8072760 lsls r0, 24 lsrs r0, 24 bl DestroyTask - ldr r1, _08072778 @ =gUnknown_2037EE2 + ldr r1, _08072778 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] pop {r0} bx r0 .align 2, 0 -_08072778: .4byte gUnknown_2037EE2 +_08072778: .4byte gAnimVisualTaskCount thumb_func_end DestroyAnimVisualTask thumb_func_start DestroyAnimSoundTask @@ -666,7 +666,7 @@ _080729CC: adds r0, r7, 0 adds r1, r4, 0 bl CreateSpriteAndAnimate - ldr r1, _08072A0C @ =gUnknown_2037EE2 + ldr r1, _08072A0C @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -676,7 +676,7 @@ _080729CC: .align 2, 0 _08072A04: .4byte gBattleAnimAttacker _08072A08: .4byte gBattleAnimTarget -_08072A0C: .4byte gUnknown_2037EE2 +_08072A0C: .4byte gAnimVisualTaskCount thumb_func_end ScriptCmd_createsprite thumb_func_start ScriptCmd_createvisualtask @@ -729,7 +729,7 @@ _08072A60: lsls r0, 24 lsrs r0, 24 bl _call_via_r6 - ldr r1, _08072A88 @ =gUnknown_2037EE2 + ldr r1, _08072A88 @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -739,7 +739,7 @@ _08072A60: .align 2, 0 _08072A80: .4byte gUnknown_2037ED4 _08072A84: .4byte gBattleAnimArgs -_08072A88: .4byte gUnknown_2037EE2 +_08072A88: .4byte gAnimVisualTaskCount thumb_func_end ScriptCmd_createvisualtask thumb_func_start ScriptCmd_delay @@ -778,7 +778,7 @@ _08072AC8: .4byte WaitAnimFrameCount thumb_func_start sub_8072ACC sub_8072ACC: @ 8072ACC push {lr} - ldr r0, _08072AE4 @ =gUnknown_2037EE2 + ldr r0, _08072AE4 @ =gAnimVisualTaskCount ldrb r2, [r0] cmp r2, 0 bne _08072AF0 @@ -790,7 +790,7 @@ sub_8072ACC: @ 8072ACC strb r2, [r0] b _08072AF6 .align 2, 0 -_08072AE4: .4byte gUnknown_2037EE2 +_08072AE4: .4byte gAnimVisualTaskCount _08072AE8: .4byte gUnknown_2037ED4 _08072AEC: .4byte gUnknown_2037EE0 _08072AF0: @@ -821,7 +821,7 @@ sub_8072B08: @ 8072B08 push {r7} movs r0, 0 mov r8, r0 - ldr r0, _08072B38 @ =gUnknown_2037EE2 + ldr r0, _08072B38 @ =gAnimVisualTaskCount ldrb r0, [r0] cmp r0, 0 bne _08072B30 @@ -842,7 +842,7 @@ _08072B30: strh r0, [r1] b _08072B62 .align 2, 0 -_08072B38: .4byte gUnknown_2037EE2 +_08072B38: .4byte gAnimVisualTaskCount _08072B3C: .4byte gUnknown_2037EE3 _08072B40: .4byte gUnknown_2037F14 _08072B44: .4byte gUnknown_2037F12 @@ -1007,7 +1007,7 @@ _08072C62: _08072C88: adds r0, r5, 0 adds r1, r7, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG ldr r0, _08072CDC @ =gBattlerSpriteIds adds r0, r5, r0 ldrb r4, [r0] @@ -1091,7 +1091,7 @@ _08072D12: _08072D3E: adds r0, r5, 0 adds r1, r7, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG ldr r0, _08072D9C @ =gBattlerSpriteIds adds r0, r5, r0 ldrb r4, [r0] @@ -1217,8 +1217,8 @@ _08072E42: bx r1 thumb_func_end IsBattlerSpriteVisible - thumb_func_start sub_8072E48 -sub_8072E48: @ 8072E48 + thumb_func_start MoveBattlerSpriteToBG +MoveBattlerSpriteToBG: @ 8072E48 push {r4-r7,lr} mov r7, r8 push {r7} @@ -1490,7 +1490,7 @@ _080730B0: .4byte gBattle_BG2_Y _080730B4: .4byte gPlttBufferUnfaded + 0x200 _080730B8: .4byte 0x05000120 _080730BC: .4byte 0x04000008 - thumb_func_end sub_8072E48 + thumb_func_end MoveBattlerSpriteToBG thumb_func_start sub_80730C0 sub_80730C0: @ 80730C0 @@ -1914,7 +1914,7 @@ _080733CE: movs r1, 0 _080733F4: adds r0, r4, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG ldr r2, _08073478 @ =gSprites ldr r0, _0807347C @ =gBattlerSpriteIds adds r0, r4, r0 @@ -1952,7 +1952,7 @@ _08073416: movs r1, 0 _08073442: adds r0, r4, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG ldr r2, _08073478 @ =gSprites ldr r0, _0807347C @ =gBattlerSpriteIds adds r0, r4, r0 @@ -2767,8 +2767,8 @@ ScriptCmd_changebg: @ 8073A24 _08073A40: .4byte gUnknown_2037ED4 thumb_func_end ScriptCmd_changebg - thumb_func_start sub_8073A44 -sub_8073A44: @ 8073A44 + thumb_func_start BattleAnimAdjustPanning +BattleAnimAdjustPanning: @ 8073A44 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -2867,10 +2867,10 @@ _08073AFC: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8073A44 + thumb_func_end BattleAnimAdjustPanning - thumb_func_start sub_8073B08 -sub_8073B08: @ 8073B08 + thumb_func_start BattleAnimAdjustPanning2 +BattleAnimAdjustPanning2: @ 8073B08 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -2914,10 +2914,10 @@ _08073B56: pop {r4} pop {r1} bx r1 - thumb_func_end sub_8073B08 + thumb_func_end BattleAnimAdjustPanning2 - thumb_func_start sub_8073B60 -sub_8073B60: @ 8073B60 + thumb_func_start KeepPanInRange +KeepPanInRange: @ 8073B60 push {lr} lsls r0, 16 lsrs r1, r0, 16 @@ -2939,7 +2939,7 @@ _08073B7A: bx r1 .align 2, 0 _08073B84: .4byte 0x0000ffc0 - thumb_func_end sub_8073B60 + thumb_func_end KeepPanInRange thumb_func_start CalculatePanIncrement CalculatePanIncrement: @ 8073B88 @@ -2994,7 +2994,7 @@ ScriptCmd_playsewithpan: @ 8073BC8 orrs r4, r0 movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -3019,7 +3019,7 @@ ScriptCmd_setpan: @ 8073C00 str r0, [r4] movs r0, 0x1 ldrsb r0, [r1, r0] - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 bl SE12PanpotControl @@ -3058,14 +3058,14 @@ ScriptCmd_panse_1B: @ 8073C2C ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl sub_8073A44 + bl BattleAnimAdjustPanning mov r8, r0 lsls r5, 24 asrs r5, 24 @@ -3301,14 +3301,14 @@ ScriptCmd_panse_27: @ 8073E10 ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_8073B08 + bl BattleAnimAdjustPanning2 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl sub_8073B08 + bl BattleAnimAdjustPanning2 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -3317,7 +3317,7 @@ ScriptCmd_panse_27: @ 8073E10 asrs r1, 24 mov r8, r1 mov r0, r8 - bl sub_8073B08 + bl BattleAnimAdjustPanning2 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3387,7 +3387,7 @@ ScriptCmd_loopsewithpan: @ 8073ED0 mov r9, r2 movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3498,7 +3498,7 @@ ScriptCmd_waitplaysewithpan: @ 8073FB4 mov r8, r0 movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -3873,7 +3873,7 @@ ScriptCmd_invisible: @ 80742A4 ldr r4, _080742D8 @ =gUnknown_2037ED4 ldr r0, [r4] ldrb r0, [r0, 0x1] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF @@ -3906,7 +3906,7 @@ ScriptCmd_visible: @ 80742E0 ldr r4, _08074318 @ =gUnknown_2037ED4 ldr r0, [r4] ldrb r0, [r0, 0x1] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF @@ -3960,7 +3960,7 @@ sub_8074320: @ 8074320 cmp r7, 0 bne _08074370 ldrb r0, [r6] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 @@ -3971,12 +3971,12 @@ _08074368: .4byte gBattleAnimAttacker _0807436C: .4byte gBattleAnimTarget _08074370: ldrb r0, [r5] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x1 _0807437C: - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF @@ -4042,7 +4042,7 @@ sub_80743C8: @ 80743C8 cmp r7, 0 bne _08074418 ldrb r0, [r6] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 @@ -4053,12 +4053,12 @@ _08074410: .4byte gBattleAnimAttacker _08074414: .4byte gBattleAnimTarget _08074418: ldrb r0, [r5] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x1 _08074424: - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index 2d436f3ef..b71600380 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -96,7 +96,7 @@ sub_80A2388: @ 80A2388 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A23C8 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] @@ -115,7 +115,7 @@ sub_80A2388: @ 80A2388 strh r0, [r4, 0x36] ldr r0, _080A23D0 @ =StartAnimLinearTranslation str r0, [r4, 0x1C] - ldr r1, _080A23D4 @ =move_anim_8074EE0 + ldr r1, _080A23D4 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -125,7 +125,7 @@ sub_80A2388: @ 80A2388 _080A23C8: .4byte gBattleAnimArgs _080A23CC: .4byte gBattleAnimAttacker _080A23D0: .4byte StartAnimLinearTranslation -_080A23D4: .4byte move_anim_8074EE0 +_080A23D4: .4byte DestroySpriteAndMatrix thumb_func_end sub_80A2388 thumb_func_start sub_80A23D8 @@ -133,7 +133,7 @@ sub_80A23D8: @ 80A23D8 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080A2420 @ =gBattleAnimArgs ldrb r1, [r5, 0x6] adds r0, r4, 0 @@ -173,7 +173,7 @@ sub_80A2430: @ 80A2430 push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r6, _080A2480 @ =gBattleAnimArgs ldrh r0, [r6, 0x4] strh r0, [r4, 0x2E] @@ -195,7 +195,7 @@ sub_80A2430: @ 80A2430 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r6, 0x6] strh r0, [r4, 0x38] ldr r1, _080A2488 @ =sub_80A248C @@ -215,7 +215,7 @@ _080A2488: .4byte sub_80A248C sub_80A248C: @ 80A248C push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A24A2 @@ -338,7 +338,7 @@ sub_80A2580: @ 80A2580 push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r6, _080A25C4 @ =gBattleAnimArgs ldrh r0, [r6, 0x6] strh r0, [r4, 0x2E] @@ -358,7 +358,7 @@ sub_80A2580: @ 80A2580 ldrh r0, [r6, 0x4] strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080A25CC @ =sub_80A25D0 str r0, [r4, 0x1C] pop {r4-r6} @@ -374,7 +374,7 @@ _080A25CC: .4byte sub_80A25D0 sub_80A25D0: @ 80A25D0 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080A25E4 @@ -451,7 +451,7 @@ _080A263C: lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl sub_8075804 + bl InitAnimFastLinearTranslationWithSpeed bl Random movs r1, 0xFF ands r1, r0 @@ -476,7 +476,7 @@ _080A26A0: .4byte sub_80A26A4 sub_80A26A4: @ 80A26A4 push {r4,lr} adds r4, r0, 0 - bl sub_807578C + bl AnimFastTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A26BA @@ -520,7 +520,7 @@ sub_80A26F0: @ 80A26F0 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A2750 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -555,7 +555,7 @@ _080A2710: ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] adds r0, r6, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080A275C @ =sub_80A2760 str r0, [r6, 0x1C] pop {r4-r6} @@ -572,7 +572,7 @@ _080A275C: .4byte sub_80A2760 sub_80A2760: @ 80A2760 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080A278A @@ -584,7 +584,7 @@ sub_80A2760: @ 80A2760 strb r0, [r2] movs r0, 0xA strh r0, [r4, 0x2E] - ldr r0, _080A2790 @ =sub_8074C44 + ldr r0, _080A2790 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080A2794 @ =sub_80A2798 adds r0, r4, 0 @@ -594,7 +594,7 @@ _080A278A: pop {r0} bx r0 .align 2, 0 -_080A2790: .4byte sub_8074C44 +_080A2790: .4byte WaitAnimForDuration _080A2794: .4byte sub_80A2798 thumb_func_end sub_80A2760 @@ -614,7 +614,7 @@ sub_80A2798: @ 80A2798 bl StartSpriteAnim movs r0, 0x3C strh r0, [r4, 0x2E] - ldr r0, _080A27C8 @ =sub_8074C44 + ldr r0, _080A27C8 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080A27CC @ =DestroyAnimSprite adds r0, r4, 0 @@ -623,7 +623,7 @@ sub_80A2798: @ 80A2798 pop {r0} bx r0 .align 2, 0 -_080A27C8: .4byte sub_8074C44 +_080A27C8: .4byte WaitAnimForDuration _080A27CC: .4byte DestroyAnimSprite thumb_func_end sub_80A2798 @@ -632,7 +632,7 @@ sub_80A27D0: @ 80A27D0 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r5, _080A2814 @ =gBattleAnimArgs ldrb r1, [r5, 0x8] adds r0, r4, 0 @@ -694,7 +694,7 @@ sub_80A281C: @ 80A281C bhi _080A2870 ldr r0, _080A286C @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -709,7 +709,7 @@ _080A286C: .4byte gBattleAnimTarget _080A2870: ldr r0, _080A28C0 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority adds r0, 0x1 lsls r0, 24 lsrs r2, r0, 24 @@ -771,7 +771,7 @@ _080A28DE: _080A28E6: ldr r0, _080A2904 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -802,7 +802,7 @@ sub_80A2920: @ 80A2920 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080A2968 @ =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -821,7 +821,7 @@ sub_80A2920: @ 80A2920 adds r0, r5 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r4, 0x38] ldr r1, _080A2970 @ =sub_80A2974 @@ -841,7 +841,7 @@ _080A2970: .4byte sub_80A2974 sub_80A2974: @ 80A2974 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080A29E0 @@ -904,7 +904,7 @@ sub_80A29EC: @ 80A29EC push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080A2A34 @ =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -923,7 +923,7 @@ sub_80A29EC: @ 80A29EC adds r0, r5 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r4, 0x38] ldr r1, _080A2A3C @ =sub_80A2A40 @@ -943,7 +943,7 @@ _080A2A3C: .4byte sub_80A2A40 sub_80A2A40: @ 80A2A40 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080A2A98 @@ -1132,7 +1132,7 @@ sub_80A2B9C: @ 80A2B9C push {r4-r6,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A2BF0 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1180,7 +1180,7 @@ _080A2BFC: adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions ldrh r0, [r6, 0x4] ldrh r1, [r5, 0x32] adds r0, r1 @@ -1194,7 +1194,7 @@ _080A2C1C: ldrh r0, [r0, 0xA] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080A2C50 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1235,7 +1235,7 @@ sub_80A2C68: @ 80A2C68 movs r0, 0x1 strh r0, [r6, 0x2E] adds r0, r6, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc ldrh r0, [r6, 0x3C] strh r5, [r6, 0x2E] lsls r4, 16 @@ -1336,7 +1336,7 @@ sub_80A2D10: @ 80A2D10 adds r3, r4, 0 adds r3, 0x22 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions _080A2D3C: ldrh r0, [r4, 0x22] adds r0, 0x20 @@ -1419,7 +1419,7 @@ _080A2DAC: bgt _080A2DEC ldr r0, _080A2DE8 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 subs r0, 0x1 @@ -1429,7 +1429,7 @@ _080A2DE8: .4byte gBattleAnimTarget _080A2DEC: ldr r0, _080A2E24 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -1464,7 +1464,7 @@ sub_80A2E28: @ 80A2E28 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget adds r2, r5, 0 adds r2, 0x2C ldrb r0, [r2] @@ -1505,7 +1505,7 @@ sub_80A2E64: @ 80A2E64 ands r0, r1 strb r0, [r2] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0x2E] @@ -1526,7 +1526,7 @@ sub_80A2EA0: @ 80A2EA0 push {r4,lr} adds r4, r0, 0 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0 @@ -1587,7 +1587,7 @@ sub_80A2F0C: @ 80A2F0C lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r2, r0, 24 ldr r1, _080A2F38 @ =gSprites @@ -1641,7 +1641,7 @@ sub_80A2F74: @ 80A2F74 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 @@ -1682,7 +1682,7 @@ _080A2FBE: movs r3, 0 bl SetSpriteRotScale adds r0, r6, 0 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] @@ -1725,7 +1725,7 @@ sub_80A3004: @ 80A3004 cmp r5, 0 bne _080A3074 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1866,7 +1866,7 @@ _080A3104: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _080A3160 @ =sub_8075764 + ldr r0, _080A3160 @ =InitAndRunAnimFastLinearTranslation str r0, [r5, 0x1C] ldr r1, _080A3164 @ =DestroyAnimSprite adds r0, r5, 0 @@ -1877,7 +1877,7 @@ _080A3156: bx r0 .align 2, 0 _080A315C: .4byte gBattleAnimAttacker -_080A3160: .4byte sub_8075764 +_080A3160: .4byte InitAndRunAnimFastLinearTranslation _080A3164: .4byte DestroyAnimSprite thumb_func_end sub_80A3098 @@ -2370,7 +2370,7 @@ sub_80A3518: @ 80A3518 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r4, _080A3560 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 @@ -2546,7 +2546,7 @@ sub_80A3670: @ 80A3670 bne _080A368A adds r0, r4, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r0, _080A36B0 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x30] @@ -2579,7 +2579,7 @@ sub_80A36B4: @ 80A36B4 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r4, _080A36FC @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 @@ -2672,7 +2672,7 @@ _080A3756: cmp r0, 0 bne _080A378A movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2690,7 +2690,7 @@ _080A378A: str r0, [r4, 0x1C] movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -3014,11 +3014,11 @@ sub_80A39C0: @ 80A39C0 strh r0, [r5, 0x16] ldrb r0, [r4] movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x1C] ldrb r0, [r4] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x1E] ldrb r0, [r4] bl GetBattlerSide @@ -3139,7 +3139,7 @@ _080A3A60: adds r0, r1 lsls r0, 2 adds r0, r4 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080A3B24 @ =sub_80A3B28 str r0, [r5] pop {r4-r6} @@ -3207,7 +3207,7 @@ _080A3B80: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080A3B96 @@ -3236,7 +3236,7 @@ _080A3BB4: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080A3BCA @@ -3265,7 +3265,7 @@ _080A3BE6: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080A3BFC @@ -3309,7 +3309,7 @@ _080A3C04: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3318,7 +3318,7 @@ _080A3C54: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080A3C6A @@ -3381,7 +3381,7 @@ _080A3C72: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3440,7 +3440,7 @@ _080A3CE8: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3449,7 +3449,7 @@ _080A3D62: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080A3D78 @@ -3494,7 +3494,7 @@ _080A3D80: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3551,7 +3551,7 @@ _080A3DD2: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3560,7 +3560,7 @@ _080A3E48: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080A3EFC @@ -3603,7 +3603,7 @@ _080A3E64: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _080A3EFA @@ -3612,7 +3612,7 @@ _080A3EB6: adds r1, r2, 0 bl sub_80A3F24 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080A3EFC @@ -3902,7 +3902,7 @@ _080A40D4: _080A40E4: strh r0, [r4, 0x22] adds r0, r6, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -3924,10 +3924,10 @@ _080A4100: adds r0, r7 strh r0, [r4, 0x22] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId _080A411A: adds r0, r6, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -4008,7 +4008,7 @@ _080A41A4: bgt _080A41BC _080A41B6: adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080A41BC: pop {r4,r5} pop {r0} @@ -4221,7 +4221,7 @@ _080A4318: subs r1, r5 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 lsrs r4, r0, 16 bl IsContest @@ -4239,7 +4239,7 @@ _080A437A: adds r0, r6, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldr r0, _080A439C @ =sub_80A43A0 str r0, [r6, 0x1C] _080A438E: @@ -4280,7 +4280,7 @@ sub_80A43A0: @ 80A43A0 b _080A43D6 _080A43D0: adds r0, r2, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080A43D6: pop {r4} pop {r0} @@ -4335,7 +4335,7 @@ _080A442C: ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, _080A4448 @ =sub_8074F6C + ldr r0, _080A4448 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080A444C @ =DestroyAnimSprite adds r0, r4, 0 @@ -4345,7 +4345,7 @@ _080A442C: bx r0 .align 2, 0 _080A4444: .4byte gBattleAnimArgs -_080A4448: .4byte sub_8074F6C +_080A4448: .4byte RunStoredCallbackWhenAnimEnds _080A444C: .4byte DestroyAnimSprite thumb_func_end sub_80A43F8 @@ -4369,7 +4369,7 @@ _080A446A: movs r0, 0 ldrsh r1, [r4, r0] adds r0, r5, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r4, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 @@ -4407,18 +4407,18 @@ sub_80A4494: @ 80A4494 ldrb r1, [r1, 0xC] adds r0, r4, 0 bl StartSpriteAffineAnim - ldr r1, _080A44D8 @ =move_anim_8074EE0 + ldr r1, _080A44D8 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A44DC @ =sub_8074E70 + ldr r0, _080A44DC @ =TranslateSpriteLinearAndFlicker str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080A44D4: .4byte gBattleAnimArgs -_080A44D8: .4byte move_anim_8074EE0 -_080A44DC: .4byte sub_8074E70 +_080A44D8: .4byte DestroySpriteAndMatrix +_080A44DC: .4byte TranslateSpriteLinearAndFlicker thumb_func_end sub_80A4494 thumb_func_start sub_80A44E0 @@ -4717,7 +4717,7 @@ _080A46F2: bl StoreSpriteCallbackInData6 movs r0, 0x3 strh r0, [r4, 0x2E] - ldr r0, _080A4734 @ =sub_8074C44 + ldr r0, _080A4734 @ =WaitAnimForDuration str r0, [r4, 0x1C] _080A4728: pop {r4} @@ -4725,7 +4725,7 @@ _080A4728: bx r0 .align 2, 0 _080A4730: .4byte DestroyAnimSprite -_080A4734: .4byte sub_8074C44 +_080A4734: .4byte WaitAnimForDuration thumb_func_end sub_80A46CC thumb_func_start sub_80A4738 @@ -4971,7 +4971,7 @@ _080A4906: ldr r6, _080A4968 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, _080A4964 @ =gBattleAnimArgs lsrs r0, 24 @@ -4980,7 +4980,7 @@ _080A4906: strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x1 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -4997,7 +4997,7 @@ _080A4906: beq _080A496C _080A4944: ldrb r0, [r6] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -5016,7 +5016,7 @@ _080A4964: .4byte gBattleAnimArgs _080A4968: .4byte gBattleAnimAttacker _080A496C: ldrb r0, [r6] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -5185,14 +5185,14 @@ _080A4A80: movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, _080A4AC8 @ =sub_8074F88 + ldr r0, _080A4AC8 @ =DestroyAnimSpriteAndDisableBlend str r0, [r4, 0x1C] _080A4AC2: pop {r4-r6} pop {r0} bx r0 .align 2, 0 -_080A4AC8: .4byte sub_8074F88 +_080A4AC8: .4byte DestroyAnimSpriteAndDisableBlend thumb_func_end sub_80A49D4 thumb_func_start sub_80A4ACC @@ -5503,12 +5503,12 @@ sub_80A4D0C: @ 80A4D0C cmp r0, 0 bne _080A4D20 adds r0, r4, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords _080A4D20: movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 @@ -5522,7 +5522,7 @@ _080A4D20: ldr r1, _080A4D54 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A4D58 @ =sub_8074D00 + ldr r0, _080A4D58 @ =TranslateSpriteLinearFixedPoint str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -5530,7 +5530,7 @@ _080A4D20: .align 2, 0 _080A4D50: .4byte gBattleAnimArgs _080A4D54: .4byte DestroyAnimSprite -_080A4D58: .4byte sub_8074D00 +_080A4D58: .4byte TranslateSpriteLinearFixedPoint thumb_func_end sub_80A4D0C thumb_func_start sub_80A4D5C @@ -5569,11 +5569,11 @@ _080A4D7A: adds r3, r5, 0 adds r3, 0x22 adds r0, r6, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions movs r2, 0 ldrsh r1, [r4, r2] adds r0, r5, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r4, 0x2] ldrh r1, [r5, 0x22] adds r0, r1 @@ -5619,7 +5619,7 @@ _080A4DFA: movs r2, 0 ldrsh r1, [r0, r2] adds r0, r5, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset _080A4E14: ldr r1, _080A4E34 @ =gBattleAnimArgs ldrh r0, [r1, 0xA] @@ -5631,7 +5631,7 @@ _080A4E14: ldr r1, _080A4E38 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A4E3C @ =sub_8074D00 + ldr r0, _080A4E3C @ =TranslateSpriteLinearFixedPoint str r0, [r5, 0x1C] pop {r4-r6} pop {r0} @@ -5639,14 +5639,14 @@ _080A4E14: .align 2, 0 _080A4E34: .4byte gBattleAnimArgs _080A4E38: .4byte DestroyAnimSprite -_080A4E3C: .4byte sub_8074D00 +_080A4E3C: .4byte TranslateSpriteLinearFixedPoint thumb_func_end sub_80A4D5C thumb_func_start sub_80A4E40 sub_80A4E40: @ 80A4E40 push {r4,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080A4E6C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -5738,7 +5738,7 @@ _080A4EEC: sub_80A4EF4: @ 80A4EF4 push {r4,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080A4F24 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -5819,7 +5819,7 @@ sub_80A4F60: @ 80A4F60 cmp r0, 0x3C ble _080A4FA4 adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080A4FA4: pop {r4} pop {r0} @@ -5837,14 +5837,14 @@ sub_80A4FAC: @ 80A4FAC strh r1, [r0, 0x22] movs r1, 0x14 strh r1, [r0, 0x2E] - ldr r1, _080A4FCC @ =sub_8074C44 + ldr r1, _080A4FCC @ =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, _080A4FD0 @ =sub_80A4FD4 bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080A4FCC: .4byte sub_8074C44 +_080A4FCC: .4byte WaitAnimForDuration _080A4FD0: .4byte sub_80A4FD4 thumb_func_end sub_80A4FAC @@ -5863,14 +5863,14 @@ sub_80A4FD4: @ 80A4FD4 b _080A506A _080A4FEA: strh r1, [r5, 0x2E] - ldr r0, _080A4FFC @ =sub_8074C44 + ldr r0, _080A4FFC @ =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, _080A5000 @ =sub_80A4FD4 adds r0, r5, 0 bl StoreSpriteCallbackInData6 b _080A506A .align 2, 0 -_080A4FFC: .4byte sub_8074C44 +_080A4FFC: .4byte WaitAnimForDuration _080A5000: .4byte sub_80A4FD4 _080A5004: ldrh r3, [r5, 0x24] @@ -5915,7 +5915,7 @@ _080A5004: adds r0, r1 strh r0, [r5, 0x38] movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -5946,14 +5946,14 @@ sub_80A5084: @ 80A5084 bne _080A50AC movs r0, 0xA strh r0, [r2, 0x2E] - ldr r0, _080A50A4 @ =sub_8074C44 + ldr r0, _080A50A4 @ =WaitAnimForDuration str r0, [r2, 0x1C] ldr r1, _080A50A8 @ =sub_80A50B8 adds r0, r2, 0 bl StoreSpriteCallbackInData6 b _080A50B0 .align 2, 0 -_080A50A4: .4byte sub_8074C44 +_080A50A4: .4byte WaitAnimForDuration _080A50A8: .4byte sub_80A50B8 _080A50AC: ldr r0, _080A50B4 @ =sub_80A4FD4 @@ -5976,14 +5976,14 @@ sub_80A50B8: @ 80A50B8 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] strh r1, [r5, 0x32] - ldr r0, _080A50D8 @ =sub_8074C44 + ldr r0, _080A50D8 @ =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, _080A50DC @ =sub_80A5174 adds r0, r5, 0 bl StoreSpriteCallbackInData6 b _080A5160 .align 2, 0 -_080A50D8: .4byte sub_8074C44 +_080A50D8: .4byte WaitAnimForDuration _080A50DC: .4byte sub_80A5174 _080A50E0: ldrh r0, [r5, 0x6] @@ -6126,7 +6126,7 @@ _080A51A4: movs r2, 0x4 bl LoadPalette movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -6447,7 +6447,7 @@ _080A5424: ldrh r0, [r5, 0x34] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] @@ -6589,7 +6589,7 @@ _080A5538: ldrh r0, [r5, 0x34] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] @@ -6694,7 +6694,7 @@ _080A55FA: ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] @@ -6732,7 +6732,7 @@ _080A564C: ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] @@ -6906,7 +6906,7 @@ _080A579E: adds r1, r2, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation b _080A58D4 _080A57C4: movs r0, 0x8 @@ -7097,7 +7097,7 @@ sub_80A58EC: @ 80A58EC adds r1, r2, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0xE] subs r0, 0x1 strh r0, [r4, 0xE] @@ -7154,7 +7154,7 @@ _080A595E: ldr r1, _080A59A0 @ =sub_80A5A8C adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A59A4 @ =sub_8074F6C + ldr r0, _080A59A4 @ =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4-r6} pop {r0} @@ -7162,7 +7162,7 @@ _080A595E: .align 2, 0 _080A599C: .4byte gBattleAnimTarget _080A59A0: .4byte sub_80A5A8C -_080A59A4: .4byte sub_8074F6C +_080A59A4: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A5940 thumb_func_start sub_80A59A8 @@ -7187,7 +7187,7 @@ sub_80A59A8: @ 80A59A8 ldr r1, _080A59E8 @ =sub_80A5A44 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A59EC @ =sub_8074F6C + ldr r0, _080A59EC @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -7196,7 +7196,7 @@ sub_80A59A8: @ 80A59A8 _080A59E0: .4byte gBattleAnimTarget _080A59E4: .4byte 0x0000ffd0 _080A59E8: .4byte sub_80A5A44 -_080A59EC: .4byte sub_8074F6C +_080A59EC: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A59A8 thumb_func_start sub_80A59F0 @@ -7259,7 +7259,7 @@ sub_80A5A44: @ 80A5A44 ldr r1, _080A5A74 @ =sub_80A5A7C adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A5A78 @ =sub_8074CD0 + ldr r0, _080A5A78 @ =TranslateSpriteLinear str r0, [r4, 0x1C] _080A5A6E: pop {r4} @@ -7267,7 +7267,7 @@ _080A5A6E: bx r0 .align 2, 0 _080A5A74: .4byte sub_80A5A7C -_080A5A78: .4byte sub_8074CD0 +_080A5A78: .4byte TranslateSpriteLinear thumb_func_end sub_80A5A44 thumb_func_start sub_80A5A7C @@ -7436,7 +7436,7 @@ sub_80A5B7C: @ 80A5B7C strh r5, [r4, 0x34] strh r5, [r4, 0x36] subs r0, 0x42 - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x38] @@ -7656,7 +7656,7 @@ sub_80A5D4C: @ 80A5D4C push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget adds r2, r4, 0 adds r2, 0x2C ldrb r0, [r2] @@ -8042,7 +8042,7 @@ sub_80A5FC0: @ 80A5FC0 adds r5, 0x1E adds r1, r5, 0 mov r2, r8 - bl sub_80765C0 + bl StorePointerInVars ldr r0, _080A6098 @ =0x000027d2 bl IndexOfSpritePaletteTag lsls r0, 24 @@ -8273,7 +8273,7 @@ _080A61EC: ldrsh r0, [r4, r1] movs r2, 0x26 ldrsh r1, [r4, r2] - bl sub_80765C8 + bl LoadPointerFromVars ldr r1, _080A621C @ =0x00007fbb str r1, [sp] movs r1, 0 @@ -8506,7 +8506,7 @@ sub_80A63B4: @ 80A63B4 ldr r1, _080A6444 @ =gTasks adds r6, r0, r1 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x8] @@ -8598,7 +8598,7 @@ _080A6488: cmp r5, 0x1 bhi _080A649A movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 asrs r0, 16 cmp r0, 0 @@ -8608,7 +8608,7 @@ _080A649A: str r0, [r6] ldr r0, _080A64C4 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8652,7 +8652,7 @@ sub_80A64E0: @ 80A64E0 bne _080A6532 ldr r0, _080A6518 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -8764,14 +8764,14 @@ sub_80A65CC: @ 80A65CC adds r4, r0, 0 ldr r1, _080A65E0 @ =DestroyAnimSprite bl StoreSpriteCallbackInData6 - ldr r0, _080A65E4 @ =sub_8074F6C + ldr r0, _080A65E4 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] pop {r4} pop {r0} bx r0 .align 2, 0 _080A65E0: .4byte DestroyAnimSprite -_080A65E4: .4byte sub_8074F6C +_080A65E4: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A65CC thumb_func_start sub_80A65E8 @@ -8903,7 +8903,7 @@ sub_80A66D4: @ 80A66D4 push {r4-r6,lr} sub sp, 0x4 adds r5, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r4, _080A672C @ =gBattleAnimArgs ldrb r1, [r4] adds r0, r5, 0 @@ -9091,7 +9091,7 @@ _080A6800: ble _080A6856 _080A684E: adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix b _080A68A6 _080A6856: movs r0, 0x34 @@ -9267,7 +9267,7 @@ _080A699E: cmp r0, 0x30 bne _080A69B2 adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080A69B2: pop {r4} pop {r0} @@ -9314,7 +9314,7 @@ _080A69DE: strh r0, [r5, 0x22] movs r0, 0x8 strh r0, [r5, 0x2E] - ldr r0, _080A6A20 @ =sub_8074C44 + ldr r0, _080A6A20 @ =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, _080A6A24 @ =DestroyAnimSprite adds r0, r5, 0 @@ -9325,7 +9325,7 @@ _080A69DE: .align 2, 0 _080A6A18: .4byte 0x0000fff0 _080A6A1C: .4byte gBattleAnimAttacker -_080A6A20: .4byte sub_8074C44 +_080A6A20: .4byte WaitAnimForDuration _080A6A24: .4byte DestroyAnimSprite thumb_func_end sub_80A69B8 @@ -9333,7 +9333,7 @@ _080A6A24: .4byte DestroyAnimSprite sub_80A6A28: @ 80A6A28 push {r4,r5,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldrh r0, [r4, 0x22] adds r0, 0x8 strh r0, [r4, 0x22] @@ -9381,7 +9381,7 @@ _080A6A74: subs r0, 0x28 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r5, 0x6] strh r0, [r4, 0x38] ldr r0, _080A6AAC @ =sub_80A6AB0 @@ -9400,7 +9400,7 @@ _080A6AAC: .4byte sub_80A6AB0 sub_80A6AB0: @ 80A6AB0 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080A6B00 @@ -9458,13 +9458,13 @@ sub_80A6B0C: @ 80A6B0C bne _080A6B2C adds r0, r5, 0 movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 b _080A6B36 _080A6B2C: adds r0, r5, 0 movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 _080A6B36: strh r0, [r6, 0x20] @@ -9474,7 +9474,7 @@ _080A6B36: adds r4, r0, 0 adds r0, r5, 0 movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r4, 24 lsrs r4, 24 lsls r0, 16 @@ -9529,7 +9529,7 @@ _080A6B82: ldr r1, _080A6BC8 @ =sub_80A6BD0 adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A6BCC @ =sub_8074F6C + ldr r0, _080A6BCC @ =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} @@ -9538,7 +9538,7 @@ _080A6B82: _080A6BC0: .4byte gBattleAnimTarget _080A6BC4: .4byte gBattleAnimArgs _080A6BC8: .4byte sub_80A6BD0 -_080A6BCC: .4byte sub_8074F6C +_080A6BCC: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A6B64 thumb_func_start sub_80A6BD0 @@ -9559,7 +9559,7 @@ sub_80A6BD0: @ 80A6BD0 lsrs r1, 24 adds r0, r4, 0 bl StartSpriteAnim - ldr r0, _080A6C04 @ =sub_8074F6C + ldr r0, _080A6C04 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] _080A6BF8: pop {r4} @@ -9567,7 +9567,7 @@ _080A6BF8: bx r0 .align 2, 0 _080A6C00: .4byte DestroyAnimSprite -_080A6C04: .4byte sub_8074F6C +_080A6C04: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A6BD0 thumb_func_start sub_80A6C08 @@ -9595,7 +9595,7 @@ _080A6C26: ldr r1, _080A6C48 @ =sub_80A6C50 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A6C4C @ =sub_8074F50 + ldr r0, _080A6C4C @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -9603,7 +9603,7 @@ _080A6C26: .align 2, 0 _080A6C44: .4byte gBattleAnimTarget _080A6C48: .4byte sub_80A6C50 -_080A6C4C: .4byte sub_8074F50 +_080A6C4C: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80A6C08 thumb_func_start sub_80A6C50 @@ -9620,18 +9620,18 @@ sub_80A6C50: @ 80A6C50 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAffineAnim - ldr r1, _080A6C7C @ =move_anim_8074EE0 + ldr r1, _080A6C7C @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A6C80 @ =sub_8074F50 + ldr r0, _080A6C80 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] _080A6C76: pop {r4} pop {r0} bx r0 .align 2, 0 -_080A6C7C: .4byte move_anim_8074EE0 -_080A6C80: .4byte sub_8074F50 +_080A6C7C: .4byte DestroySpriteAndMatrix +_080A6C80: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80A6C50 thumb_func_start sub_80A6C84 @@ -9661,7 +9661,7 @@ _080A6CA2: strh r0, [r4, 0x20] adds r0, r5, 0 movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r4, 0x22] lsls r0, 16 asrs r0, 16 @@ -9684,7 +9684,7 @@ _080A6CCA: ldr r1, _080A6CF8 @ =sub_80A6D00 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A6CFC @ =sub_8074F50 + ldr r0, _080A6CFC @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] pop {r4-r6} pop {r0} @@ -9692,7 +9692,7 @@ _080A6CCA: .align 2, 0 _080A6CF4: .4byte gBattleAnimTarget _080A6CF8: .4byte sub_80A6D00 -_080A6CFC: .4byte sub_8074F50 +_080A6CFC: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80A6C84 thumb_func_start sub_80A6D00 @@ -9850,7 +9850,7 @@ sub_80A6DF0: @ 80A6DF0 ldr r1, _080A6E24 @ =sub_80A6E2C adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A6E28 @ =sub_8074F6C + ldr r0, _080A6E28 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] _080A6E1E: pop {r4} @@ -9858,7 +9858,7 @@ _080A6E1E: bx r0 .align 2, 0 _080A6E24: .4byte sub_80A6E2C -_080A6E28: .4byte sub_8074F6C +_080A6E28: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80A6DF0 thumb_func_start sub_80A6E2C diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index 722ff51ba..67ac6a13e 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -9,12 +9,12 @@ sub_80A6E48: @ 80A6E48 push {r4,r5,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r5, _080A6E8C @ =gBattleAnimArgs movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 @@ -27,10 +27,10 @@ sub_80A6E48: @ 80A6E48 strh r0, [r4, 0x34] ldrh r0, [r5, 0x6] strh r0, [r4, 0x36] - ldr r1, _080A6E90 @ =move_anim_8074EE0 + ldr r1, _080A6E90 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r1, _080A6E94 @ =sub_8074BE4 + ldr r1, _080A6E94 @ =TranslateSpriteInEllipseOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -39,8 +39,8 @@ sub_80A6E48: @ 80A6E48 bx r0 .align 2, 0 _080A6E8C: .4byte gBattleAnimArgs -_080A6E90: .4byte move_anim_8074EE0 -_080A6E94: .4byte sub_8074BE4 +_080A6E90: .4byte DestroySpriteAndMatrix +_080A6E94: .4byte TranslateSpriteInEllipseOverDuration thumb_func_end sub_80A6E48 thumb_func_start sub_80A6E98 @@ -166,7 +166,7 @@ sub_80A6F3C: @ 80A6F3C adds r0, r3 strh r2, [r0, 0x24] adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080A6F7A: ldrh r0, [r4, 0x2E] subs r0, 0x1 @@ -254,7 +254,7 @@ sub_80A7020: @ 80A7020 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080A704C @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] @@ -262,7 +262,7 @@ sub_80A7020: @ 80A7020 strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x38] - ldr r0, _080A7050 @ =sub_8074C44 + ldr r0, _080A7050 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080A7054 @ =sub_80A7058 adds r0, r4, 0 @@ -272,7 +272,7 @@ sub_80A7020: @ 80A7020 bx r0 .align 2, 0 _080A704C: .4byte gBattleAnimArgs -_080A7050: .4byte sub_8074C44 +_080A7050: .4byte WaitAnimForDuration _080A7054: .4byte sub_80A7058 thumb_func_end sub_80A7020 @@ -438,7 +438,7 @@ _080A7176: _080A718A: strh r1, [r0, 0x26] adds r0, r4, 0 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldr r0, _080A71C8 @ =gTasks adds r1, r6, r5 lsls r1, 3 @@ -479,7 +479,7 @@ _080A71D0: sub_80A71D8: @ 80A71D8 push {r4,r5,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080A71FC @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -544,7 +544,7 @@ _080A724C: orrs r0, r1 strb r0, [r2] _080A7260: - ldr r0, _080A7274 @ =sub_8074F6C + ldr r0, _080A7274 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080A7278 @ =DestroyAnimSprite adds r0, r4, 0 @@ -553,7 +553,7 @@ _080A7260: pop {r0} bx r0 .align 2, 0 -_080A7274: .4byte sub_8074F6C +_080A7274: .4byte RunStoredCallbackWhenAnimEnds _080A7278: .4byte DestroyAnimSprite thumb_func_end sub_80A71D8 @@ -562,8 +562,8 @@ sub_80A727C: @ 80A727C push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 - ldr r0, _080A7298 @ =sub_8074F50 + bl InitSpritePosToAnimAttacker + ldr r0, _080A7298 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] ldr r1, _080A729C @ =sub_80A72A0 adds r0, r4, 0 @@ -572,7 +572,7 @@ sub_80A727C: @ 80A727C pop {r0} bx r0 .align 2, 0 -_080A7298: .4byte sub_8074F50 +_080A7298: .4byte RunStoredCallbackWhenAffineAnimEnds _080A729C: .4byte sub_80A72A0 thumb_func_end sub_80A727C @@ -635,7 +635,7 @@ _080A72EC: _080A730E: adds r0, r5, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r4, _080A73BC @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 @@ -671,7 +671,7 @@ _080A730E: subs r1, r2 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xF0 lsls r1, 24 @@ -692,7 +692,7 @@ _080A7380: adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] mov r0, r8 @@ -1118,7 +1118,7 @@ _080A7690: strh r0, [r4, 0xA] movs r0, 0x3F negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -1276,7 +1276,7 @@ _080A77B6: movs r1, 0 mov r2, sp mov r3, r10 - bl sub_8076D9C + bl SetAverageBattlerPositions b _080A7842 .align 2, 0 _080A7810: .4byte gBattleAnimAttacker @@ -1506,7 +1506,7 @@ sub_80A79E8: @ 80A79E8 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A7A10 @ =gUnknown_83E3D18 ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag @@ -1592,7 +1592,7 @@ sub_80A7A88: @ 80A7A88 sub sp, 0x4 adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r4, _080A7B28 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 @@ -1636,7 +1636,7 @@ _080A7ACC: subs r1, r2 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 @@ -1648,7 +1648,7 @@ _080A7ACC: adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrh r0, [r4, 0x8] strh r0, [r5, 0x2E] strh r6, [r5, 0x32] @@ -1748,7 +1748,7 @@ sub_80A7BC4: @ 80A7BC4 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0x14 strh r0, [r4, 0x2E] ldr r5, _080A7C10 @ =gBattleAnimTarget @@ -1789,7 +1789,7 @@ sub_80A7C1C: @ 80A7C1C push {r4,lr} adds r4, r0, 0 movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -1907,7 +1907,7 @@ sub_80A7D04: @ 80A7D04 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A7D54 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1929,7 +1929,7 @@ _080A7D22: strh r0, [r4, 0x34] ldrh r0, [r1, 0x6] strh r0, [r4, 0x36] - ldr r0, _080A7D5C @ =sub_8074A80 + ldr r0, _080A7D5C @ =TranslateSpriteInCircleOverDuration str r0, [r4, 0x1C] ldr r1, _080A7D60 @ =DestroyAnimSprite adds r0, r4, 0 @@ -1943,7 +1943,7 @@ _080A7D22: .align 2, 0 _080A7D54: .4byte gBattleAnimAttacker _080A7D58: .4byte gBattleAnimArgs -_080A7D5C: .4byte sub_8074A80 +_080A7D5C: .4byte TranslateSpriteInCircleOverDuration _080A7D60: .4byte DestroyAnimSprite thumb_func_end sub_80A7D04 @@ -2094,7 +2094,7 @@ _080A7E48: adds r0, r6 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r7] strh r0, [r5, 0x38] ldrh r0, [r5, 0x2E] @@ -2119,7 +2119,7 @@ _080A7EB8: .4byte sub_80A7EBC sub_80A7EBC: @ 80A7EBC push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A7F20 @@ -2233,7 +2233,7 @@ _080A7F90: .4byte sub_80A7F94 sub_80A7F94: @ 80A7F94 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A7FA8 @@ -2252,7 +2252,7 @@ sub_80A7FB0: @ 80A7FB0 lsls r5, 24 lsrs r5, 24 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -2273,7 +2273,7 @@ sub_80A7FB0: @ 80A7FB0 lsrs r0, 4 adds r0, 0x10 movs r1, 0 - bl sub_8075B48 + bl SetGreyscaleOrOriginalPalette ldr r1, _080A800C @ =gTasks lsls r0, r5, 2 adds r0, r5 @@ -2312,7 +2312,7 @@ sub_80A8014: @ 80A8014 cmp r1, r0 bne _080A8064 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -2327,7 +2327,7 @@ sub_80A8014: @ 80A8014 lsrs r0, 4 adds r0, 0x10 movs r1, 0x1 - bl sub_8075B48 + bl SetGreyscaleOrOriginalPalette adds r0, r5, 0 bl DestroyAnimVisualTask _080A8064: @@ -2350,7 +2350,7 @@ sub_80A8074: @ 80A8074 ldr r0, _080A80C0 @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -2441,7 +2441,7 @@ _080A8128: movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0x20 @@ -2473,7 +2473,7 @@ _080A816E: movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale movs r0, 0x2 strh r0, [r4, 0xA] b _080A81F6 @@ -2504,7 +2504,7 @@ _080A81A4: movs r3, 0 bl SetSpriteRotScale ldrb r0, [r4, 0x8] - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0x20 @@ -2550,7 +2550,7 @@ sub_80A8200: @ 80A8200 lsrs r1, 24 mov r9, r1 movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r0, 16 mov r8, r0 @@ -2720,7 +2720,7 @@ _080A835C: .4byte gTasks _080A8360: .4byte gBattleAnimArgs _080A8364: ldrb r0, [r5] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -2733,7 +2733,7 @@ _080A8364: strh r2, [r4, 0x10] ldr r2, _080A8390 @ =gUnknown_83E3E60 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080A8394 @ =sub_80A8398 str r0, [r4] _080A838A: @@ -2774,7 +2774,7 @@ _080A83C0: b _080A84A8 _080A83CA: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData ldrh r2, [r4, 0x10] adds r2, 0x3 strh r2, [r4, 0x10] @@ -2801,7 +2801,7 @@ _080A83CA: _080A83FC: .4byte gSprites _080A8400: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData ldr r2, _080A8430 @ =gSprites movs r0, 0x8 ldrsh r1, [r4, r0] @@ -2853,7 +2853,7 @@ _080A845C: b _080A84A8 _080A8464: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -2881,7 +2881,7 @@ _080A849C: ldrb r1, [r4, 0x8] ldr r2, _080A84B0 @ =gUnknown_83E3E60 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData strh r5, [r4, 0xA] _080A84A8: pop {r4-r6} @@ -2902,13 +2902,13 @@ sub_80A84B4: @ 80A84B4 ldr r0, _080A84E4 @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A84E8 @ =gUnknown_83E3E80 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080A84EC @ =sub_80A84F0 str r0, [r4] pop {r4} @@ -2930,7 +2930,7 @@ sub_80A84F0: @ 80A84F0 lsls r0, 3 ldr r1, _080A8518 @ =gTasks adds r0, r1 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080A8510 @@ -2998,7 +2998,7 @@ _080A856A: ldr r1, _080A85A4 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A85A8 @ =sub_8074D00 + ldr r0, _080A85A8 @ =TranslateSpriteLinearFixedPoint str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -3007,7 +3007,7 @@ _080A856A: _080A859C: .4byte 0x0000ffc0 _080A85A0: .4byte gBattleAnimAttacker _080A85A4: .4byte DestroyAnimSprite -_080A85A8: .4byte sub_8074D00 +_080A85A8: .4byte TranslateSpriteLinearFixedPoint thumb_func_end sub_80A851C thumb_func_start sub_80A85AC @@ -3064,10 +3064,10 @@ _080A85E4: movs r0, 0x8 strh r0, [r6, 0x22] _080A8616: - ldr r1, _080A8630 @ =move_anim_8074EE0 + ldr r1, _080A8630 @ =DestroySpriteAndMatrix adds r0, r6, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080A8634 @ =sub_8074F50 + ldr r0, _080A8634 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r6, 0x1C] pop {r4-r6} pop {r0} @@ -3075,8 +3075,8 @@ _080A8616: .align 2, 0 _080A8628: .4byte gBattleAnimTarget _080A862C: .4byte gBattleAnimArgs -_080A8630: .4byte move_anim_8074EE0 -_080A8634: .4byte sub_8074F50 +_080A8630: .4byte DestroySpriteAndMatrix +_080A8634: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80A85AC thumb_func_start sub_80A8638 @@ -3090,7 +3090,7 @@ sub_80A8638: @ 80A8638 ldr r0, _080A866C @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -3099,7 +3099,7 @@ sub_80A8638: @ 80A8638 strh r0, [r4, 0xA] ldr r2, _080A8670 @ =gUnknown_83E3F1C adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080A8674 @ =sub_80A8678 str r0, [r4] pop {r4} @@ -3121,7 +3121,7 @@ sub_80A8678: @ 80A8678 lsls r0, 3 ldr r1, _080A86A0 @ =gTasks adds r0, r1 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080A8698 @@ -3146,7 +3146,7 @@ sub_80A86A4: @ 80A86A4 ldr r0, _080A8718 @ =gTasks adds r4, r1, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r2, 0 @@ -3389,7 +3389,7 @@ sub_80A8874: @ 80A8874 adds r5, r1, r0 ldr r4, _080A88C8 @ =gBattleAnimTarget ldrb r0, [r4] - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -3402,10 +3402,10 @@ sub_80A8874: @ 80A8874 strh r1, [r5, 0x10] strh r1, [r5, 0x12] ldrb r0, [r4] - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x26] ldrb r0, [r4] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3609,7 +3609,7 @@ sub_80A8A1C: @ 80A8A1C movs r5, 0 strh r0, [r4, 0x20] ldrb r0, [r6] - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x10 @@ -3622,11 +3622,11 @@ sub_80A8A1C: @ 80A8A1C strh r5, [r4, 0x36] ldrb r0, [r6] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x2 strh r0, [r4, 0x38] movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x3A] @@ -3864,7 +3864,7 @@ _080A8BF2: adds r1, r4, 0 mov r2, sp adds r3, r7, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions cmp r4, 0 bne _080A8C30 adds r0, r5, 0 @@ -3919,7 +3919,7 @@ _080A8C80: .4byte sub_8075D9C sub_80A8C84: @ 80A8C84 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080A8C9E @@ -4128,7 +4128,7 @@ _080A8DFA: mov r2, sp mov r3, sp adds r3, 0x2 - bl sub_8076D9C + bl SetAverageBattlerPositions b _080A8E6C .align 2, 0 _080A8E40: .4byte gSprites @@ -4192,7 +4192,7 @@ _080A8E9E: ldrh r0, [r2] strh r0, [r5, 0x2E] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, _080A8EE4 @ =sub_80A8C84 str r1, [r5, 0x1C] adds r0, r5, 0 @@ -4252,7 +4252,7 @@ sub_80A8F38: @ 80A8F38 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080A8F6C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -4565,14 +4565,14 @@ sub_80A917C: @ 80A917C ldr r0, _080A91AC @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x8] ldr r2, _080A91B0 @ =gUnknown_83E4128 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080A91B4 @ =sub_80A91B8 str r0, [r4] pop {r4} @@ -4595,7 +4595,7 @@ sub_80A91B8: @ 80A91B8 ldr r1, _080A9208 @ =gTasks adds r4, r0, r1 adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 @@ -4668,7 +4668,7 @@ _080A9250: _080A9256: strh r0, [r4, 0x24] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -4861,7 +4861,7 @@ sub_80A939C: @ 80A939C movs r0, 0x2 strh r0, [r4, 0x24] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -5411,7 +5411,7 @@ sub_80A97E8: @ 80A97E8 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r6, _080A9850 @ =gBattleAnimAttacker ldrb r0, [r6] bl GetBattlerSide @@ -5474,7 +5474,7 @@ sub_80A9860: @ 80A9860 bne _080A987A adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker _080A987A: movs r1, 0x30 ldrsh r0, [r4, r1] @@ -5517,9 +5517,9 @@ sub_80A98B0: @ 80A98B0 movs r6, 0x98 _080A98C4: movs r5, 0 - ldr r1, _080A9918 @ =gUnknown_2022984 + ldr r1, _080A9918 @ =gBattle_WIN0H strh r6, [r1] - ldr r4, _080A991C @ =gUnknown_2022986 + ldr r4, _080A991C @ =gBattle_WIN0V movs r0, 0xA0 strh r0, [r4] ldrh r1, [r1] @@ -5553,8 +5553,8 @@ _080A98C4: pop {r0} bx r0 .align 2, 0 -_080A9918: .4byte gUnknown_2022984 -_080A991C: .4byte gUnknown_2022986 +_080A9918: .4byte gBattle_WIN0H +_080A991C: .4byte gBattle_WIN0V _080A9920: .4byte 0x00003f1f _080A9924: .4byte 0x00003f3f _080A9928: .4byte gTasks @@ -5583,7 +5583,7 @@ sub_80A9930: @ 80A9930 lsls r0, r2, 16 cmp r1, r0 blt _080A9970 - ldr r0, _080A9968 @ =gUnknown_2022984 + ldr r0, _080A9968 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] ldr r0, _080A996C @ =sub_80A9984 @@ -5591,10 +5591,10 @@ sub_80A9930: @ 80A9930 b _080A9978 .align 2, 0 _080A9964: .4byte gTasks -_080A9968: .4byte gUnknown_2022984 +_080A9968: .4byte gBattle_WIN0H _080A996C: .4byte sub_80A9984 _080A9970: - ldr r1, _080A9980 @ =gUnknown_2022984 + ldr r1, _080A9980 @ =gBattle_WIN0H lsls r0, r4, 8 orrs r2, r0 strh r2, [r1] @@ -5603,7 +5603,7 @@ _080A9978: pop {r0} bx r0 .align 2, 0 -_080A9980: .4byte gUnknown_2022984 +_080A9980: .4byte gBattle_WIN0H thumb_func_end sub_80A9930 thumb_func_start sub_80A9984 @@ -5649,9 +5649,9 @@ _080A99D4: .4byte 0x00007fff _080A99D8: cmp r0, 0x4 ble _080A9A0C - ldr r0, _080A9A14 @ =gUnknown_2022984 + ldr r0, _080A9A14 @ =gBattle_WIN0H strh r4, [r0] - ldr r0, _080A9A18 @ =gUnknown_2022986 + ldr r0, _080A9A18 @ =gBattle_WIN0V strh r4, [r0] ldr r4, _080A9A1C @ =0x00003f3f movs r0, 0x48 @@ -5674,8 +5674,8 @@ _080A9A0C: pop {r0} bx r0 .align 2, 0 -_080A9A14: .4byte gUnknown_2022984 -_080A9A18: .4byte gUnknown_2022986 +_080A9A14: .4byte gBattle_WIN0H +_080A9A18: .4byte gBattle_WIN0V _080A9A1C: .4byte 0x00003f3f thumb_func_end sub_80A9984 @@ -5686,7 +5686,7 @@ sub_80A9A20: @ 80A9A20 lsrs r0, 24 adds r6, r0, 0 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080A9A70 @ =gTasks @@ -5702,13 +5702,13 @@ sub_80A9A20: @ 80A9A20 cmp r0, 0x1 bne _080A9A7C movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A9A74 @ =gUnknown_83E4200 adds r0, r5, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r1, _080A9A78 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -5731,7 +5731,7 @@ _080A9A7C: negs r0, r0 strh r0, [r4, 0x24] adds r0, r5, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -5755,7 +5755,7 @@ sub_80A9AB0: @ 80A9AB0 lsrs r0, 24 adds r6, r0, 0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080A9B00 @ =gTasks @@ -5771,13 +5771,13 @@ sub_80A9AB0: @ 80A9AB0 cmp r0, 0x1 bne _080A9B0C movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080A9B04 @ =gUnknown_83E4200 adds r0, r5, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r1, _080A9B08 @ =gSprites lsls r0, r4, 4 adds r0, r4 @@ -5800,7 +5800,7 @@ _080A9B0C: negs r0, r0 strh r0, [r4, 0x24] adds r0, r5, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -5822,7 +5822,7 @@ sub_80A9B40: @ 80A9B40 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0x5F strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] @@ -5843,7 +5843,7 @@ sub_80A9B40: @ 80A9B40 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080A9B88 @ =sub_80A9B8C str r0, [r4, 0x1C] pop {r4,r5} @@ -5858,7 +5858,7 @@ _080A9B88: .4byte sub_80A9B8C sub_80A9B8C: @ 80A9B8C push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080A9BB6 @@ -5967,7 +5967,7 @@ sub_80A9C4C: @ 80A9C4C strh r1, [r0, 0x2E] ldrh r1, [r2, 0x2] strh r1, [r0, 0x30] - ldr r1, _080A9C74 @ =sub_8074C44 + ldr r1, _080A9C74 @ =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, _080A9C78 @ =sub_80A9C7C bl StoreSpriteCallbackInData6 @@ -5975,7 +5975,7 @@ sub_80A9C4C: @ 80A9C4C bx r0 .align 2, 0 _080A9C70: .4byte gBattleAnimArgs -_080A9C74: .4byte sub_8074C44 +_080A9C74: .4byte WaitAnimForDuration _080A9C78: .4byte sub_80A9C7C thumb_func_end sub_80A9C4C @@ -6082,13 +6082,13 @@ _080A9D2A: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -6360,7 +6360,7 @@ _080A9F98: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap b _080A9FC6 .align 2, 0 _080A9FB4: .4byte gBattleAnimTarget @@ -6369,14 +6369,14 @@ _080A9FBC: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap _080A9FC6: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -6907,7 +6907,7 @@ sub_80AA3F0: @ 80AA3F0 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080AA404 @ =sub_80AA3D4 str r0, [r4, 0x1C] pop {r4} @@ -7428,7 +7428,7 @@ sub_80AA7C8: @ 80AA7C8 lsrs r5, 24 ldr r0, _080AA7FC @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7439,7 +7439,7 @@ sub_80AA7C8: @ 80AA7C8 adds r4, r0 ldr r2, _080AA804 @ =gUnknown_83E4410 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080AA808 @ =sub_80AA80C str r0, [r4] pop {r4,r5} @@ -7462,7 +7462,7 @@ sub_80AA80C: @ 80AA80C lsls r0, 3 ldr r1, _080AA834 @ =gTasks adds r0, r1 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080AA82C @@ -7640,7 +7640,7 @@ _080AA95A: lsrs r0, 4 adds r0, 0x10 movs r1, 0 - bl sub_8075B48 + bl SetGreyscaleOrOriginalPalette _080AA978: movs r0, 0x2E ldrsh r1, [r4, r0] @@ -7857,7 +7857,7 @@ sub_80AAAE4: @ 80AAAE4 adds r3, r5, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldrh r0, [r5, 0x22] adds r0, 0x28 strh r0, [r5, 0x22] diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s index d1356c619..004ad8786 100644 --- a/asm/battle_anim_effects_3.s +++ b/asm/battle_anim_effects_3.s @@ -128,7 +128,7 @@ sub_80DE39C: @ 80DE39C adds r4, r0, 0 movs r0, 0x5A strh r0, [r4, 0x2E] - ldr r0, _080DE3D8 @ =sub_8074C44 + ldr r0, _080DE3D8 @ =WaitAnimForDuration str r0, [r4, 0x1C] movs r0, 0x7 strh r0, [r4, 0x30] @@ -152,7 +152,7 @@ sub_80DE39C: @ 80DE39C pop {r0} bx r0 .align 2, 0 -_080DE3D8: .4byte sub_8074C44 +_080DE3D8: .4byte WaitAnimForDuration _080DE3DC: .4byte sub_80DE3E0 thumb_func_end sub_80DE39C @@ -228,7 +228,7 @@ sub_80DE440: @ 80DE440 adds r6, r0, 0 adds r0, r5, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldrh r0, [r5, 0x20] subs r0, r7 lsls r0, 16 @@ -237,7 +237,7 @@ sub_80DE440: @ 80DE440 subs r1, r6 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 23 @@ -259,7 +259,7 @@ _080DE49E: adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldr r0, _080DE4D0 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r5, 0x2E] @@ -572,7 +572,7 @@ sub_80DE6F0: @ 80DE6F0 adds r1, r2 ldr r0, _080DE710 @ =sub_80DE718 str r0, [r1] - ldr r1, _080DE714 @ =gUnknown_2037EE2 + ldr r1, _080DE714 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -580,7 +580,7 @@ sub_80DE6F0: @ 80DE6F0 .align 2, 0 _080DE70C: .4byte gTasks _080DE710: .4byte sub_80DE718 -_080DE714: .4byte gUnknown_2037EE2 +_080DE714: .4byte gAnimVisualTaskCount thumb_func_end sub_80DE6F0 thumb_func_start sub_80DE718 @@ -674,7 +674,7 @@ sub_80DE7B4: @ 80DE7B4 adds r1, r2 ldr r0, _080DE7D4 @ =sub_80DE7DC str r0, [r1] - ldr r1, _080DE7D8 @ =gUnknown_2037EE2 + ldr r1, _080DE7D8 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -682,7 +682,7 @@ sub_80DE7B4: @ 80DE7B4 .align 2, 0 _080DE7D0: .4byte gTasks _080DE7D4: .4byte sub_80DE7DC -_080DE7D8: .4byte gUnknown_2037EE2 +_080DE7D8: .4byte gAnimVisualTaskCount thumb_func_end sub_80DE7B4 thumb_func_start sub_80DE7DC @@ -799,7 +799,7 @@ sub_80DE8B0: @ 80DE8B0 sub sp, 0x4 adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080DE914 @ =gBattleAnimTarget ldrb r0, [r0] mov r5, sp @@ -807,7 +807,7 @@ sub_80DE8B0: @ 80DE8B0 movs r1, 0 mov r2, sp adds r3, r5, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080DE918 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -834,7 +834,7 @@ _080DE8E4: ldr r0, _080DE920 @ =0x0000ffce strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080DE924 @ =sub_80DE928 str r0, [r4, 0x1C] add sp, 0x4 @@ -853,7 +853,7 @@ _080DE924: .4byte sub_80DE928 sub_80DE928: @ 80DE928 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080DE94A @@ -861,7 +861,7 @@ sub_80DE928: @ 80DE928 movs r0, 0x1E strh r0, [r4, 0x2E] strh r1, [r4, 0x30] - ldr r0, _080DE950 @ =sub_8074C44 + ldr r0, _080DE950 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080DE954 @ =sub_80DE958 adds r0, r4, 0 @@ -871,7 +871,7 @@ _080DE94A: pop {r0} bx r0 .align 2, 0 -_080DE950: .4byte sub_8074C44 +_080DE950: .4byte WaitAnimForDuration _080DE954: .4byte sub_80DE958 thumb_func_end sub_80DE928 @@ -918,17 +918,17 @@ _080DE998: sub_80DE99C: @ 80DE99C push {r4,r5,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r5, _080DE9CC @ =gBattleAnimArgs movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, _080DE9D0 @ =sub_8074F6C + ldr r0, _080DE9D0 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080DE9D4 @ =DestroyAnimSprite adds r0, r4, 0 @@ -938,7 +938,7 @@ sub_80DE99C: @ 80DE99C bx r0 .align 2, 0 _080DE9CC: .4byte gBattleAnimArgs -_080DE9D0: .4byte sub_8074F6C +_080DE9D0: .4byte RunStoredCallbackWhenAnimEnds _080DE9D4: .4byte DestroyAnimSprite thumb_func_end sub_80DE99C @@ -951,12 +951,12 @@ sub_80DE9D8: @ 80DE9D8 cmp r0, 0 bne _080DEA38 adds r0, r4, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r5, _080DEA14 @ =gBattleAnimArgs movs r2, 0 ldrsh r1, [r5, r2] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset bl IsContest lsls r0, 24 cmp r0, 0 @@ -1127,10 +1127,10 @@ sub_80DEB20: @ 80DEB20 lsls r1, 8 movs r0, 0 bl SetGpuRegBits - ldr r0, _080DEB80 @ =gUnknown_2022984 + ldr r0, _080DEB80 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r4, _080DEB84 @ =gUnknown_2022986 + ldr r4, _080DEB84 @ =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 @@ -1140,7 +1140,7 @@ sub_80DEB20: @ 80DEB20 bl SetGpuReg adds r0, r5, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldrb r1, [r5, 0x1] movs r0, 0xD negs r0, r0 @@ -1161,8 +1161,8 @@ sub_80DEB20: @ 80DEB20 bx r0 .align 2, 0 _080DEB7C: .4byte 0x00001f3f -_080DEB80: .4byte gUnknown_2022984 -_080DEB84: .4byte gUnknown_2022986 +_080DEB80: .4byte gBattle_WIN0H +_080DEB84: .4byte gBattle_WIN0V _080DEB88: .4byte sub_80DEB8C thumb_func_end sub_80DEB20 @@ -1414,7 +1414,7 @@ sub_80DED48: @ 80DED48 bne _080DEDA6 movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -1488,11 +1488,11 @@ sub_80DEDD8: @ 80DEDD8 ldr r1, _080DEE20 @ =gUnknown_202298A movs r0, 0xA0 strh r0, [r1] - ldr r0, _080DEE24 @ =gUnknown_2022984 + ldr r0, _080DEE24 @ =gBattle_WIN0H ldrh r1, [r0] movs r0, 0x42 bl SetGpuReg - ldr r0, _080DEE28 @ =gUnknown_2022986 + ldr r0, _080DEE28 @ =gBattle_WIN0V ldrh r1, [r0] movs r0, 0x46 bl SetGpuReg @@ -1502,8 +1502,8 @@ _080DEE14: .4byte 0x00001f3f _080DEE18: .4byte gUnknown_2022988 _080DEE1C: .4byte 0x000098f0 _080DEE20: .4byte gUnknown_202298A -_080DEE24: .4byte gUnknown_2022984 -_080DEE28: .4byte gUnknown_2022986 +_080DEE24: .4byte gBattle_WIN0H +_080DEE28: .4byte gBattle_WIN0V _080DEE2C: ldr r1, _080DEE68 @ =0x00001f3f movs r0, 0x48 @@ -1712,11 +1712,11 @@ _080DEFC8: ldr r4, _080DF010 @ =gBattleAnimTarget _080DEFCA: ldrb r0, [r4] - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r7, r0, 24 adds r0, r6, 0 @@ -2021,7 +2021,7 @@ sub_80DF1DC: @ 80DF1DC strh r0, [r4, 0x12] strh r5, [r4, 0x14] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -2109,7 +2109,7 @@ _080DF2A8: lsrs r4, r0, 24 movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2155,7 +2155,7 @@ _080DF324: lsrs r1, 24 ldr r2, _080DF348 @ =gUnknown_83FF080 adds r0, r6, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r6, 0xA] adds r0, 0x1 strh r0, [r6, 0xA] @@ -2168,7 +2168,7 @@ _080DF344: .4byte SpriteCallbackDummy _080DF348: .4byte gUnknown_83FF080 _080DF34C: adds r0, r6, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -2329,7 +2329,7 @@ sub_80DF468: @ 80DF468 bne _080DF47C adds r0, r5, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker _080DF47C: ldrh r0, [r5, 0x2E] adds r0, 0x1 @@ -2437,13 +2437,13 @@ sub_80DF524: @ 80DF524 _080DF544: .4byte gTasks _080DF548: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080DF564 @ =gUnknown_83FF130 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2452,7 +2452,7 @@ _080DF548: _080DF564: .4byte gUnknown_83FF130 _080DF568: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080DF57A @@ -2469,7 +2469,7 @@ sub_80DF580: @ 80DF580 push {r4-r6,lr} adds r5, r0, 0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x2E @@ -2857,13 +2857,13 @@ sub_80DF848: @ 80DF848 cmp r0, 0 bne _080DF888 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080DF884 @ =gUnknown_83FF198 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2873,7 +2873,7 @@ _080DF880: .4byte gTasks _080DF884: .4byte gUnknown_83FF198 _080DF888: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080DF89A @@ -2901,13 +2901,13 @@ sub_80DF8A0: @ 80DF8A0 cmp r0, 0 bne _080DF8E0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080DF8DC @ =gUnknown_83FF1C0 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2917,7 +2917,7 @@ _080DF8D8: .4byte gTasks _080DF8DC: .4byte gUnknown_83FF1C0 _080DF8E0: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080DF8F2 @@ -2943,7 +2943,7 @@ sub_80DF8F8: @ 80DF8F8 _080DF90A: adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0x90 lsls r0, 4 strh r0, [r4, 0x30] @@ -3002,13 +3002,13 @@ sub_80DF964: @ 80DF964 cmp r0, 0 bne _080DF9A4 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080DF9A0 @ =gUnknown_83FF210 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -3018,7 +3018,7 @@ _080DF99C: .4byte gTasks _080DF9A0: .4byte gUnknown_83FF210 _080DF9A4: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080DF9B6 @@ -3069,7 +3069,7 @@ _080DFA00: bl SetGpuReg ldr r0, _080DFA24 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3234,7 +3234,7 @@ _080DFB58: bl SetGpuReg ldr r0, _080DFB7C @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3411,13 +3411,13 @@ _080DFCCE: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -3603,7 +3603,7 @@ _080DFE66: strh r0, [r1, 0x8] movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -4053,13 +4053,13 @@ _080E01FC: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -4371,13 +4371,13 @@ sub_80E0488: @ 80E0488 cmp r0, 0 bne _080E04C8 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 ldr r2, _080E04C4 @ =gUnknown_83FF290 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -4387,7 +4387,7 @@ _080E04C0: .4byte gTasks _080E04C4: .4byte gUnknown_83FF290 _080E04C8: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080E04DA @@ -4410,7 +4410,7 @@ sub_80E04E0: @ 80E04E0 bne _080E04FE adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] @@ -4523,7 +4523,7 @@ _080E059C: subs r0, 0x1 strh r0, [r4, 0x14] ldrb r0, [r5] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -4625,7 +4625,7 @@ _080E065C: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] @@ -4666,7 +4666,7 @@ _080E06B0: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r1, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0xA] @@ -4710,7 +4710,7 @@ _080E0708: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] @@ -4874,7 +4874,7 @@ sub_80E0850: @ 80E0850 strh r0, [r4, 0x24] ldr r0, _080E089C @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -5044,7 +5044,7 @@ _080E09BA: ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80759DC + bl SetBattlerSpriteYOffsetFromRotation ldr r2, _080E0A28 @ =gSprites movs r0, 0x26 ldrsh r1, [r7, r0] @@ -5237,7 +5237,7 @@ _080E0B3E: strh r0, [r2, 0x1E] mov r1, r8 ldrb r0, [r1] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r5, r0, 24 ldr r1, _080E0B7C @ =gTasks @@ -5276,7 +5276,7 @@ _080E0B88: movs r3, 0 bl SetSpriteRotScale adds r0, r5, 0 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale lsls r2, r5, 4 b _080E0BE8 _080E0BA0: @@ -5295,7 +5295,7 @@ _080E0BB2: movs r1, 0xD0 bl SetSpriteRotScale adds r0, r5, 0 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale bl IsContest lsls r0, 24 cmp r0, 0 @@ -5535,10 +5535,10 @@ sub_80E0D74: @ 80E0D74 lsls r1, 8 movs r0, 0 bl SetGpuRegBits - ldr r0, _080E0DDC @ =gUnknown_2022984 + ldr r0, _080E0DDC @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r4, _080E0DE0 @ =gUnknown_2022986 + ldr r4, _080E0DE0 @ =gBattle_WIN0V strh r1, [r4] movs r0, 0x40 movs r1, 0 @@ -5551,7 +5551,7 @@ sub_80E0D74: @ 80E0D74 strh r0, [r5, 0x2E] adds r0, r5, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldrb r1, [r5, 0x1] movs r0, 0xD negs r0, r0 @@ -5572,8 +5572,8 @@ sub_80E0D74: @ 80E0D74 bx r0 .align 2, 0 _080E0DD8: .4byte 0x00001f3f -_080E0DDC: .4byte gUnknown_2022984 -_080E0DE0: .4byte gUnknown_2022986 +_080E0DDC: .4byte gBattle_WIN0H +_080E0DE0: .4byte gBattle_WIN0V _080E0DE4: .4byte gBattleAnimArgs _080E0DE8: .4byte sub_80E0DEC thumb_func_end sub_80E0D74 @@ -5825,7 +5825,7 @@ sub_80E0FB8: @ 80E0FB8 lsrs r0, 24 str r0, [sp, 0x18] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r0, _080E1040 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -5979,7 +5979,7 @@ _080E110E: _080E1112: ldr r0, _080E1200 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r7, r0, 24 ldr r5, _080E1200 @ =gBattleAnimAttacker @@ -6186,7 +6186,7 @@ sub_80E1274: @ 80E1274 str r4, [sp] adds r0, r6, 0 movs r1, 0x1 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrh r0, [r5, 0x20] adds r0, 0x1 strh r0, [r5, 0x20] @@ -6197,8 +6197,8 @@ sub_80E1274: @ 80E1274 adds r0, r6, 0 bl sub_8075AD8 adds r0, r6, 0 - bl sub_8076B20 - ldr r0, _080E12F4 @ =sub_8074FA8 + bl DestroySpriteAndFreeResources_ + ldr r0, _080E12F4 @ =DestroyAnimVisualTaskAndDisableBlend str r0, [r5] _080E12E2: add sp, 0x4 @@ -6208,7 +6208,7 @@ _080E12E2: .align 2, 0 _080E12EC: .4byte gTasks _080E12F0: .4byte gSprites -_080E12F4: .4byte sub_8074FA8 +_080E12F4: .4byte DestroyAnimVisualTaskAndDisableBlend thumb_func_end sub_80E1274 thumb_func_start sub_80E12F8 @@ -6262,7 +6262,7 @@ _080E1326: strh r0, [r4, 0x18] _080E1358: adds r0, r5, 0 - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 subs r0, 0x22 @@ -6276,12 +6276,12 @@ _080E136C: strh r0, [r4, 0x24] ldr r0, _080E13A8 @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] adds r0, r5, 0 - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -6389,7 +6389,7 @@ sub_80E1450: @ 80E1450 ldr r1, _080E1484 @ =gTasks adds r6, r0, r1 ldrb r0, [r6, 0x12] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -6743,14 +6743,14 @@ sub_80E1704: @ 80E1704 strh r0, [r4, 0x8] ldr r0, _080E1740 @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, _080E1744 @ =gUnknown_83FF3D0 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080E1748 @ =sub_80E174C str r0, [r4] pop {r4} @@ -6826,7 +6826,7 @@ _080E17C0: adds r0, r4 lsls r0, 3 adds r0, r6 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080E17D8 @@ -6920,7 +6920,7 @@ sub_80E186C: @ 80E186C adds r4, r0, 0 ldrh r6, [r4, 0x20] ldrh r5, [r4, 0x22] - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080E18B4 @ =gBattleAnimArgs ldrb r1, [r0] adds r0, r4, 0 @@ -7001,7 +7001,7 @@ sub_80E18BC: @ 80E18BC cmp r0, 0x3 ble _080E1922 adds r0, r5, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080E1922: pop {r4,r5} pop {r0} @@ -7218,7 +7218,7 @@ _080E1AAA: bgt _080E1ACA adds r0, r5, 0 bl DestroyTask - ldr r1, _080E1AD4 @ =gUnknown_2037EE2 + ldr r1, _080E1AD4 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -7229,7 +7229,7 @@ _080E1ACA: pop {r0} bx r0 .align 2, 0 -_080E1AD4: .4byte gUnknown_2037EE2 +_080E1AD4: .4byte gAnimVisualTaskCount thumb_func_end sub_80E1990 thumb_func_start sub_80E1AD8 @@ -7619,14 +7619,14 @@ _080E1DA2: strh r0, [r5, 0x14] ldr r0, _080E1DF4 @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r5, 0x26] ldr r2, _080E1DF8 @ =gUnknown_83FF52C adds r0, r5, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080E1DFC @ =sub_80E1E00 str r0, [r5] pop {r4,r5} @@ -7679,7 +7679,7 @@ _080E1E3A: bl sub_80E1E98 _080E1E4A: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -7701,7 +7701,7 @@ _080E1E6C: lsrs r1, 24 ldr r2, _080E1E80 @ =gUnknown_83FF52C adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData b _080E1E92 .align 2, 0 _080E1E80: .4byte gUnknown_83FF52C @@ -7892,7 +7892,7 @@ sub_80E1FC4: @ 80E1FC4 ldrh r0, [r1, 0x2] strh r0, [r4, 0xA] ldrb r0, [r1] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080E2014 @ =gSprites @@ -8168,7 +8168,7 @@ sub_80E21CC: @ 80E21CC adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r4, 24 lsrs r4, 24 lsls r0, 16 @@ -8190,7 +8190,7 @@ _080E2224: adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r4, 24 lsrs r4, 24 lsls r0, 16 @@ -8210,7 +8210,7 @@ _080E2248: adds r4, r0, 0 ldrb r0, [r5] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r4, 24 lsrs r4, 24 lsls r0, 16 @@ -8565,7 +8565,7 @@ sub_80E24E0: @ 80E24E0 ldr r1, _080E2510 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080E2514 @ =sub_8075764 + ldr r0, _080E2514 @ =InitAndRunAnimFastLinearTranslation str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -8573,7 +8573,7 @@ sub_80E24E0: @ 80E24E0 .align 2, 0 _080E250C: .4byte gBattleAnimArgs _080E2510: .4byte DestroyAnimSprite -_080E2514: .4byte sub_8075764 +_080E2514: .4byte InitAndRunAnimFastLinearTranslation thumb_func_end sub_80E24E0 thumb_func_start sub_80E2518 @@ -8622,7 +8622,7 @@ sub_80E2518: @ 80E2518 mov r1, r8 ldrb r0, [r1] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r4, 24 lsrs r4, 24 lsls r0, 16 @@ -8694,7 +8694,7 @@ _080E258A: adds r0, r1 lsls r0, 2 adds r0, r4 - bl sub_8075068 + bl InitAnimArcTranslation mov r1, r10 ldrb r0, [r1] bl GetBattlerSide @@ -8778,7 +8778,7 @@ _080E269A: lsls r0, 2 ldr r1, _080E26CC @ =gSprites adds r0, r1 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] @@ -8797,7 +8797,7 @@ _080E26D0: lsls r0, 2 ldr r1, _080E26F0 @ =gSprites adds r0, r1 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080E276E @@ -8938,7 +8938,7 @@ _080E27C0: strb r0, [r4, 0x3] adds r0, r5, 0 movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 b _080E280E .align 2, 0 @@ -8948,7 +8948,7 @@ _080E2800: .4byte 0xfffffc00 _080E2804: adds r0, r5, 0 movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 _080E280E: strh r0, [r4, 0x20] @@ -9091,14 +9091,14 @@ _080E28F8: ldrh r0, [r2, 0x2] strh r0, [r4, 0x8] ldrb r0, [r2] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, _080E292C @ =gUnknown_83FF65C adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080E2930 @ =sub_80E2934 str r0, [r4] _080E2920: @@ -9160,7 +9160,7 @@ _080E298C: strh r1, [r0, 0x24] _080E298E: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -9188,7 +9188,7 @@ _080E298E: lsls r1, 24 lsrs r1, 24 ldr r2, _080E29E0 @ =gUnknown_83FF65C - bl sub_80762D0 + bl PrepareAffineAnimInTaskData strh r5, [r4, 0xA] strh r5, [r4, 0xC] b _080E29EA @@ -9231,7 +9231,7 @@ _080E2A0E: strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x22] movs r1, 0x22 ldrsh r0, [r5, r1] @@ -9613,7 +9613,7 @@ sub_80E2CE4: @ 80E2CE4 ldr r0, _080E2D34 @ =gTasks adds r6, r1, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] @@ -9902,7 +9902,7 @@ sub_80E2F14: @ 80E2F14 bne _080E2F38 adds r0, r4, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080E2F34 @ =gBattleAnimAttacker b _080E2F3A .align 2, 0 @@ -9932,7 +9932,7 @@ _080E2F5E: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r2, 0x3 ands r2, r0 lsls r2, 2 @@ -10010,7 +10010,7 @@ _080E2FFC: lsls r0, 24 lsrs r0, 24 movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 @@ -10024,7 +10024,7 @@ _080E3018: lsls r0, 24 lsrs r0, 24 movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 @@ -10032,7 +10032,7 @@ _080E3018: lsls r0, 24 lsrs r0, 24 movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x4 b _080E3076 _080E303A: @@ -10040,7 +10040,7 @@ _080E303A: lsls r0, 24 lsrs r0, 24 movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 @@ -10054,7 +10054,7 @@ _080E3056: lsls r0, 24 lsrs r0, 24 movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x4 lsls r0, 16 lsrs r5, r0, 16 @@ -10063,7 +10063,7 @@ _080E3056: lsrs r0, 24 movs r1, 0x2 _080E3070: - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x4 _080E3076: lsls r0, 16 @@ -10107,11 +10107,11 @@ _080E30B2: strh r0, [r4, 0x34] strh r1, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation b _080E3188 _080E30C8: adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080E3196 @@ -10360,7 +10360,7 @@ sub_80E3294: @ 80E3294 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r5, r0, 24 adds r2, r5, 0 @@ -10471,7 +10471,7 @@ sub_80E3374: @ 80E3374 lsls r0, 24 lsrs r6, r0, 24 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r3, r0, 24 ldr r1, _080E33A0 @ =gTasks @@ -10554,7 +10554,7 @@ _080E3412: bne _080E34C6 movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10627,7 +10627,7 @@ _080E34A4: bne _080E34C6 movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10724,7 +10724,7 @@ _080E3564: cmp r0, 0 blt _080E365E movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10753,7 +10753,7 @@ _080E3588: cmp r1, 0x7F ble _080E365E movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10797,7 +10797,7 @@ _080E35F8: cmp r0, 0x8 ble _080E365E movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10856,7 +10856,7 @@ sub_80E3664: @ 80E3664 lsls r0, 24 lsrs r7, r0, 24 movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 str r1, [sp] @@ -10864,7 +10864,7 @@ sub_80E3664: @ 80E3664 cmp r6, 0 blt _080E36A6 movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 @@ -11251,7 +11251,7 @@ _080E3964: .4byte _080E3D90 _080E3978: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _080E39C4 @ =gTasks @@ -11392,7 +11392,7 @@ _080E3AA0: ldrh r5, [r1, 0x2] _080E3AA2: movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080E3AC8 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -11460,7 +11460,7 @@ _080E3B30: ldrh r5, [r1, 0x2] _080E3B32: movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080E3BD0 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -11682,7 +11682,7 @@ _080E3D04: .4byte 0x0000ffff _080E3D08: .4byte gTasks _080E3D0C: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _080E3D58 @ =gTasks @@ -11699,7 +11699,7 @@ _080E3D0C: lsls r0, 2 ldr r5, _080E3D5C @ =gSprites adds r0, r5 - bl sub_8076B20 + bl DestroySpriteAndFreeResources_ ldr r0, _080E3D60 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -11746,7 +11746,7 @@ _080E3D82: _080E3D8C: .4byte gTasks _080E3D90: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r7, r0, 24 ldr r1, _080E3E04 @ =gTasks @@ -11883,7 +11883,7 @@ _080E3E96: cmp r1, r0 bne _080E3F28 movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -11917,7 +11917,7 @@ _080E3E96: cmp r0, 0x1 bne _080E3FB8 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080E3F24 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -12235,7 +12235,7 @@ sub_80E4160: @ 80E4160 ldr r0, _080E41C8 @ =gTasks adds r4, r1, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -12532,7 +12532,7 @@ sub_80E43A4: @ 80E43A4 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr strh r0, [r5, 0x22] lsls r0, 16 asrs r0, 16 @@ -12688,7 +12688,7 @@ _080E44D6: b _080E44E4 _080E44DE: adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080E44E4: pop {r4} pop {r0} @@ -12757,14 +12757,14 @@ sub_80E4540: @ 80E4540 strh r0, [r4, 0x8] ldr r0, _080E457C @ =gBattleAnimArgs ldrb r0, [r0] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x26] ldr r2, _080E4580 @ =gUnknown_83FF7A8 adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080E4584 @ =sub_80E4588 str r0, [r4] pop {r4} @@ -12840,7 +12840,7 @@ _080E45FC: adds r0, r4 lsls r0, 3 adds r0, r6 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080E4614 diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s deleted file mode 100644 index ddb5d6977..000000000 --- a/asm/battle_anim_mons.s +++ /dev/null @@ -1,6343 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start GetBattlerSpriteCoord -GetBattlerSpriteCoord: @ 8074480 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r4, 0x4 - bhi _08074500 - lsls r0, r4, 2 - ldr r1, _08074498 @ =_0807449C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08074498: .4byte _0807449C - .align 2, 0 -_0807449C: - .4byte _080744B0 - .4byte _080744D8 - .4byte _080744B0 - .4byte _08074500 - .4byte _08074500 -_080744B0: - ldr r4, _080744D0 @ =gUnknown_83AE01C - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080744D4 @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - b _08074588 - .align 2, 0 -_080744D0: .4byte gUnknown_83AE01C -_080744D4: .4byte gBattleTypeFlags -_080744D8: - ldr r4, _080744F8 @ =gUnknown_83AE01C - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080744FC @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x1] - b _08074588 - .align 2, 0 -_080744F8: .4byte gUnknown_83AE01C -_080744FC: .4byte gBattleTypeFlags -_08074500: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08074538 - ldr r0, _0807452C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08074570 - ldr r1, _08074530 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08074534 @ =gEnemyParty - b _08074556 - .align 2, 0 -_0807452C: .4byte gBattleSpritesDataPtr -_08074530: .4byte gBattlerPartyIndexes -_08074534: .4byte gEnemyParty -_08074538: - ldr r0, _08074564 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08074570 - ldr r1, _08074568 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807456C @ =gPlayerParty -_08074556: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _08074572 - .align 2, 0 -_08074564: .4byte gBattleSpritesDataPtr -_08074568: .4byte gBattlerPartyIndexes -_0807456C: .4byte gPlayerParty -_08074570: - ldrh r1, [r1, 0x2] -_08074572: - cmp r4, 0x3 - bne _0807457C - adds r0, r5, 0 - movs r2, 0x1 - b _08074580 -_0807457C: - adds r0, r5, 0 - movs r2, 0 -_08074580: - bl sub_80747AC - lsls r0, 24 - lsrs r0, 24 -_08074588: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetBattlerSpriteCoord - - thumb_func_start sub_8074590 -sub_8074590: @ 8074590 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08074674 - cmp r4, 0xC9 - bne _08074638 - ldr r0, _080745D8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080745E4 - ldr r1, _080745DC @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080745E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080745EA - .align 2, 0 -_080745D8: .4byte gBattleSpritesDataPtr -_080745DC: .4byte gBattlerPartyIndexes -_080745E0: .4byte gPlayerParty -_080745E4: - ldr r0, _08074620 @ =gTransformedPersonalities - adds r0, r1, r0 - ldr r2, [r0] -_080745EA: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08074624 - adds r0, r7, 0 - b _0807462E - .align 2, 0 -_08074620: .4byte gTransformedPersonalities -_08074624: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_0807462E: - ldr r1, _08074634 @ =gUnknown_8235E6C - lsls r0, 2 - b _0807473C - .align 2, 0 -_08074634: .4byte gUnknown_8235E6C -_08074638: - ldr r0, _0807464C @ =0x00000181 - cmp r4, r0 - bne _08074658 - ldr r0, _08074650 @ =gUnknown_83AE050 - ldr r1, _08074654 @ =gBattleMonForms - adds r1, r5, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - b _08074740 - .align 2, 0 -_0807464C: .4byte 0x00000181 -_08074650: .4byte gUnknown_83AE050 -_08074654: .4byte gBattleMonForms -_08074658: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074668 - ldr r0, _08074664 @ =gUnknown_8235E6C - b _0807473E - .align 2, 0 -_08074664: .4byte gUnknown_8235E6C -_08074668: - ldr r1, _08074670 @ =gUnknown_8235E6C - lsls r0, r4, 2 - b _0807473C - .align 2, 0 -_08074670: .4byte gUnknown_8235E6C -_08074674: - cmp r4, 0xC9 - bne _08074704 - ldr r0, _080746A4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080746B0 - ldr r1, _080746A8 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080746AC @ =gEnemyParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080746B6 - .align 2, 0 -_080746A4: .4byte gBattleSpritesDataPtr -_080746A8: .4byte gBattlerPartyIndexes -_080746AC: .4byte gEnemyParty -_080746B0: - ldr r0, _080746EC @ =gTransformedPersonalities - adds r0, r1, r0 - ldr r2, [r0] -_080746B6: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080746F0 - adds r0, r7, 0 - b _080746FA - .align 2, 0 -_080746EC: .4byte gTransformedPersonalities -_080746F0: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080746FA: - ldr r1, _08074700 @ =gUnknown_82349CC - lsls r0, 2 - b _0807473C - .align 2, 0 -_08074700: .4byte gUnknown_82349CC -_08074704: - ldr r0, _0807471C @ =0x00000181 - cmp r4, r0 - bne _08074728 - ldr r0, _08074720 @ =gUnknown_83AE03C - ldr r1, _08074724 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _08074740 - .align 2, 0 -_0807471C: .4byte 0x00000181 -_08074720: .4byte gUnknown_83AE03C -_08074724: .4byte gBattleMonForms -_08074728: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074738 - ldr r0, _08074734 @ =gUnknown_82349CC - b _0807473E - .align 2, 0 -_08074734: .4byte gUnknown_82349CC -_08074738: - ldr r1, _08074748 @ =gUnknown_82349CC - lsls r0, r7, 2 -_0807473C: - adds r0, r1 -_0807473E: - ldrb r0, [r0, 0x1] -_08074740: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08074748: .4byte gUnknown_82349CC - thumb_func_end sub_8074590 - - thumb_func_start sub_807474C -sub_807474C: @ 807474C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - movs r5, 0 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807479E - ldr r0, _0807477C @ =0x00000181 - cmp r4, r0 - bne _08074788 - ldr r0, _08074780 @ =gUnknown_83AE04C - ldr r1, _08074784 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - b _0807479E - .align 2, 0 -_0807477C: .4byte 0x00000181 -_08074780: .4byte gUnknown_83AE04C -_08074784: .4byte gBattleMonForms -_08074788: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074798 - ldr r0, _08074794 @ =gEnemyMonElevation - b _0807479C - .align 2, 0 -_08074794: .4byte gEnemyMonElevation -_08074798: - ldr r0, _080747A8 @ =gEnemyMonElevation - adds r0, r7, r0 -_0807479C: - ldrb r5, [r0] -_0807479E: - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080747A8: .4byte gEnemyMonElevation - thumb_func_end sub_807474C - - thumb_func_start sub_80747AC -sub_80747AC: @ 80747AC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080747D4 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8074590 - lsls r0, 24 - lsrs r5, r0, 24 - b _080747F2 -_080747D4: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8074590 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_807474C - lsls r0, 24 - lsrs r0, 24 - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 -_080747F2: - adds r0, r6, 0 - bl GetBattlerPosition - ldr r3, _0807483C @ =gUnknown_83AE01C - lsls r0, 24 - lsrs r0, 22 - ldr r1, _08074840 @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, r5 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r7, 0 - beq _08074832 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0807482C - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 -_0807482C: - cmp r4, 0x68 - bls _08074832 - movs r4, 0x68 -_08074832: - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807483C: .4byte gUnknown_83AE01C -_08074840: .4byte gBattleTypeFlags - thumb_func_end sub_80747AC - - thumb_func_start sub_8074844 -sub_8074844: @ 8074844 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - movs r0, 0xFD - lsls r0, 24 - adds r1, r0 - lsrs r1, 24 - cmp r1, 0x1 - bhi _08074896 - ldr r0, _08074874 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807487C - ldr r1, _08074878 @ =gUnknown_2037F1C - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - b _0807487E - .align 2, 0 -_08074874: .4byte gBattleSpritesDataPtr -_08074878: .4byte gUnknown_2037F1C -_0807487C: - ldrh r1, [r1, 0x2] -_0807487E: - cmp r3, 0x3 - bne _0807488C - adds r0, r2, 0 - movs r2, 0x1 - bl sub_80747AC - b _0807489E -_0807488C: - adds r0, r2, 0 - movs r2, 0 - bl sub_80747AC - b _0807489E -_08074896: - adds r0, r2, 0 - adds r1, r3, 0 - bl GetBattlerSpriteCoord -_0807489E: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8074844 - - thumb_func_start GetBattlerSpriteDefault_Y -GetBattlerSpriteDefault_Y: @ 80748A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetBattlerSpriteDefault_Y - - thumb_func_start GetSubstituteSpriteDefault_Y -GetSubstituteSpriteDefault_Y: @ 80748BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080748E0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x80 - lsls r1, 13 - b _080748F0 -_080748E0: - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x88 - lsls r1, 13 -_080748F0: - adds r0, r1 - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetSubstituteSpriteDefault_Y - - thumb_func_start GetGhostSpriteDefault_Y -GetGhostSpriteDefault_Y: @ 8074900 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807491A - adds r0, r4, 0 - movs r1, 0x1 - b _0807491E -_0807491A: - adds r0, r4, 0 - movs r1, 0x4 -_0807491E: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetGhostSpriteDefault_Y - - thumb_func_start sub_807492C -sub_807492C: @ 807492C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08074978 - ldr r0, _0807496C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080749B0 - ldr r1, _08074970 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08074974 @ =gEnemyParty - b _08074996 - .align 2, 0 -_0807496C: .4byte gBattleSpritesDataPtr -_08074970: .4byte gBattlerPartyIndexes -_08074974: .4byte gEnemyParty -_08074978: - ldr r0, _080749A4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080749B0 - ldr r1, _080749A8 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080749AC @ =gPlayerParty -_08074996: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - b _080749B2 - .align 2, 0 -_080749A4: .4byte gBattleSpritesDataPtr -_080749A8: .4byte gBattlerPartyIndexes -_080749AC: .4byte gPlayerParty -_080749B0: - ldrh r4, [r1, 0x2] -_080749B2: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080749CC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807474C - subs r0, r6, r0 - lsls r0, 24 - lsrs r6, r0, 24 -_080749CC: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807492C - - thumb_func_start GetAnimBankSpriteId -GetAnimBankSpriteId: @ 80749D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0 - bne _080749FC - ldr r4, _080749F4 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - ldr r1, _080749F8 @ =gBattlerSpriteIds - ldrb r0, [r4] - b _08074A5A - .align 2, 0 -_080749F4: .4byte gBattleAnimAttacker -_080749F8: .4byte gBattlerSpriteIds -_080749FC: - cmp r0, 0x1 - bne _08074A1C - ldr r4, _08074A14 @ =gBattleAnimTarget - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - ldr r1, _08074A18 @ =gBattlerSpriteIds - ldrb r0, [r4] - b _08074A5A - .align 2, 0 -_08074A14: .4byte gBattleAnimTarget -_08074A18: .4byte gBattlerSpriteIds -_08074A1C: - cmp r1, 0x2 - bne _08074A38 - ldr r5, _08074A34 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - b _08074A54 - .align 2, 0 -_08074A34: .4byte gBattleAnimAttacker -_08074A38: - ldr r5, _08074A50 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _08074A54 -_08074A4A: - movs r0, 0xFF - b _08074A5E - .align 2, 0 -_08074A50: .4byte gBattleAnimTarget -_08074A54: - ldr r1, _08074A64 @ =gBattlerSpriteIds - ldrb r0, [r5] - eors r0, r4 -_08074A5A: - adds r0, r1 - ldrb r0, [r0] -_08074A5E: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08074A64: .4byte gBattlerSpriteIds - thumb_func_end GetAnimBankSpriteId - - thumb_func_start StoreSpriteCallbackInData6 -StoreSpriteCallbackInData6: @ 8074A68 - strh r1, [r0, 0x3A] - lsrs r1, 16 - strh r1, [r0, 0x3C] - bx lr - thumb_func_end StoreSpriteCallbackInData6 - - thumb_func_start SetCallbackToStoredInData -SetCallbackToStoredInData: @ 8074A70 - ldrh r2, [r0, 0x3A] - movs r3, 0x3C - ldrsh r1, [r0, r3] - lsls r1, 16 - orrs r2, r1 - str r2, [r0, 0x1C] - bx lr - thumb_func_end SetCallbackToStoredInData - - thumb_func_start sub_8074A80 -sub_8074A80: @ 8074A80 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074AD4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074AC0 - ldr r2, _08074ABC @ =0xffffff00 - b _08074AC8 - .align 2, 0 -_08074ABC: .4byte 0xffffff00 -_08074AC0: - cmp r0, 0 - bge _08074ACC - movs r2, 0x80 - lsls r2, 1 -_08074AC8: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074ACC: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074ADA -_08074AD4: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074ADA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074A80 - - thumb_func_start sub_8074AE0 -sub_8074AE0: @ 8074AE0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074B50 - movs r2, 0x2E - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074B3C - ldr r2, _08074B38 @ =0xffffff00 - b _08074B44 - .align 2, 0 -_08074B38: .4byte 0xffffff00 -_08074B3C: - cmp r0, 0 - bge _08074B48 - movs r2, 0x80 - lsls r2, 1 -_08074B44: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074B48: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074B56 -_08074B50: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074B56: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074AE0 - - thumb_func_start sub_8074B5C -sub_8074B5C: @ 8074B5C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074BD8 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074BA4 - ldr r2, _08074BA0 @ =0xffffff00 - b _08074BAC - .align 2, 0 -_08074BA0: .4byte 0xffffff00 -_08074BA4: - cmp r0, 0 - bge _08074BB0 - movs r2, 0x80 - lsls r2, 1 -_08074BAC: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074BB0: - ldrh r1, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - ble _08074BC4 - ldr r2, _08074BC0 @ =0xffffff00 - b _08074BCC - .align 2, 0 -_08074BC0: .4byte 0xffffff00 -_08074BC4: - cmp r0, 0 - bge _08074BD0 - movs r2, 0x80 - lsls r2, 1 -_08074BCC: - adds r0, r1, r2 - strh r0, [r4, 0x36] -_08074BD0: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074BDE -_08074BD8: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074BDE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074B5C - - thumb_func_start sub_8074BE4 -sub_8074BE4: @ 8074BE4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074C38 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074C24 - ldr r2, _08074C20 @ =0xffffff00 - b _08074C2C - .align 2, 0 -_08074C20: .4byte 0xffffff00 -_08074C24: - cmp r0, 0 - bge _08074C30 - movs r2, 0x80 - lsls r2, 1 -_08074C2C: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074C30: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074C3E -_08074C38: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074C3E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074BE4 - - thumb_func_start sub_8074C44 -sub_8074C44: @ 8074C44 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08074C58 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - b _08074C5E -_08074C58: - adds r0, r1, 0 - bl SetCallbackToStoredInData -_08074C5E: - pop {r0} - bx r0 - thumb_func_end sub_8074C44 - - thumb_func_start sub_8074C64 -sub_8074C64: @ 8074C64 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074C80 - ldr r1, _08074C7C @ =sub_8074CD0 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08074C7C: .4byte sub_8074CD0 - thumb_func_end sub_8074C64 - - thumb_func_start sub_8074C80 -sub_8074C80: @ 8074C80 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _08074C96 - ldrh r0, [r4, 0x2E] - negs r0, r0 - strh r0, [r4, 0x2E] -_08074C96: - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - ldrh r5, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - cmp r0, 0 - bge _08074CB0 - negs r0, r0 -_08074CB0: - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x32] - strh r5, [r4, 0x30] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8074C80 - - thumb_func_start sub_8074CD0 -sub_8074CD0: @ 8074CD0 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08074CF4 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r1, 0x32] - ldrh r3, [r1, 0x26] - adds r0, r3 - strh r0, [r1, 0x26] - b _08074CFA -_08074CF4: - adds r0, r1, 0 - bl SetCallbackToStoredInData -_08074CFA: - pop {r0} - bx r0 - thumb_func_end sub_8074CD0 - - thumb_func_start sub_8074D00 -sub_8074D00: @ 8074D00 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _08074D30 - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - 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 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - b _08074D36 -_08074D30: - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074D36: - pop {r0} - bx r0 - thumb_func_end sub_8074D00 - - thumb_func_start sub_8074D3C -sub_8074D3C: @ 8074D3C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074D6C - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - b _08074D72 -_08074D6C: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074D72: - adds r0, r4, 0 - bl UpdateMonIconFrame - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074D3C - - thumb_func_start sub_8074D80 -sub_8074D80: @ 8074D80 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, _08074DBC @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _08074DC0 @ =sub_8074C64 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074DBC: .4byte gBattleAnimTarget -_08074DC0: .4byte sub_8074C64 - thumb_func_end sub_8074D80 - - thumb_func_start TranslateMonSpriteLinear -TranslateMonSpriteLinear: @ 8074DC4 - push {r4,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - movs r2, 0x2E - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _08074E08 - subs r0, r1, 0x1 - strh r0, [r3, 0x2E] - ldr r2, _08074E04 @ =gSprites - movs r4, 0x34 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x30] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x32] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - b _08074E0E - .align 2, 0 -_08074E04: .4byte gSprites -_08074E08: - adds r0, r3, 0 - bl SetCallbackToStoredInData -_08074E0E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end TranslateMonSpriteLinear - - thumb_func_start TranslateMonSpriteLinearFixedPoint -TranslateMonSpriteLinearFixedPoint: @ 8074E14 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074E64 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldr r3, _08074E60 @ =gSprites - movs r0, 0x38 - ldrsh r2, [r4, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - lsls r1, 16 - asrs r1, 24 - strh r1, [r0, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] - b _08074E6A - .align 2, 0 -_08074E60: .4byte gSprites -_08074E64: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074E6A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end TranslateMonSpriteLinearFixedPoint - - thumb_func_start sub_8074E70 -sub_8074E70: @ 8074E70 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074ED2 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x36] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _08074ED8 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074ED8 - 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] - b _08074ED8 -_08074ED2: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074ED8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074E70 - - thumb_func_start move_anim_8074EE0 -move_anim_8074EE0: @ 8074EE0 - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end move_anim_8074EE0 - - thumb_func_start sub_8074EF4 -sub_8074EF4: @ 8074EF4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, _08074F30 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _08074F34 @ =sub_8074C64 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074F30: .4byte gBattleAnimAttacker -_08074F34: .4byte sub_8074C64 - thumb_func_end sub_8074EF4 - - thumb_func_start sub_8074F38 -sub_8074F38: @ 8074F38 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - bl ResetPaletteStructByUid - adds r0, r4, 0 - bl move_anim_8074EE0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074F38 - - thumb_func_start sub_8074F50 -sub_8074F50: @ 8074F50 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08074F66 - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074F66: - pop {r0} - bx r0 - thumb_func_end sub_8074F50 - - thumb_func_start sub_8074F6C -sub_8074F6C: @ 8074F6C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08074F82 - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074F82: - pop {r0} - bx r0 - thumb_func_end sub_8074F6C - - thumb_func_start sub_8074F88 -sub_8074F88: @ 8074F88 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074F88 - - thumb_func_start sub_8074FA8 -sub_8074FA8: @ 8074FA8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074FA8 - - thumb_func_start sub_8074FCC -sub_8074FCC: @ 8074FCC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _08074FF4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074FF4: .4byte gBattleAnimAttacker - thumb_func_end sub_8074FCC - - thumb_func_start sub_8074FF8 -sub_8074FF8: @ 8074FF8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - mov r8, r5 - ldr r7, _08075030 @ =gBattleAnimAttacker - ldrb r0, [r7] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08075034 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bhi _08075044 - cmp r6, r0 - bcs _08075038 - lsls r0, r5, 16 - b _08075054 - .align 2, 0 -_08075030: .4byte gBattleAnimAttacker -_08075034: .4byte gBattleAnimTarget -_08075038: - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075050 -_08075044: - ldrh r1, [r4, 0x20] - lsls r0, r5, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4, 0x20] - b _0807505C -_08075050: - mov r1, r8 - lsls r0, r1, 16 -_08075054: - asrs r0, 16 - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_0807505C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8074FF8 - - thumb_func_start sub_8075068 -sub_8075068: @ 8075068 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - movs r5, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - strh r0, [r4, 0x3A] - strh r5, [r4, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8075068 - - thumb_func_start AnimateBallThrow -AnimateBallThrow: @ 8075094 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080750C0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - strh r0, [r4, 0x3C] - lsls r0, 16 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r0, 0 - b _080750C2 -_080750C0: - movs r0, 0x1 -_080750C2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end AnimateBallThrow - - thumb_func_start sub_80750C8 -sub_80750C8: @ 80750C8 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080750F4 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - strh r0, [r4, 0x3C] - lsls r0, 16 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r0, 0 - b _080750F6 -_080750F4: - movs r0, 0x1 -_080750F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80750C8 - - thumb_func_start SetSpritePrimaryCoordsFromSecondaryCoords -SetSpritePrimaryCoordsFromSecondaryCoords: @ 80750FC - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - movs r2, 0 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x26] - ldrh r3, [r0, 0x22] - adds r1, r3 - strh r1, [r0, 0x22] - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] - bx lr - thumb_func_end SetSpritePrimaryCoordsFromSecondaryCoords - - thumb_func_start sub_8075114 -sub_8075114: @ 8075114 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - cmp r1, 0 - bne _0807513C - ldr r4, _08075158 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] -_0807513C: - ldr r4, _0807515C @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08075158: .4byte gBattleAnimTarget -_0807515C: .4byte gBattleAnimArgs - thumb_func_end sub_8075114 - - thumb_func_start sub_8075160 -sub_8075160: @ 8075160 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - cmp r1, 0 - bne _08075184 - ldr r4, _08075180 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - b _08075198 - .align 2, 0 -_08075180: .4byte gBattleAnimAttacker -_08075184: - ldr r4, _080751BC @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 -_08075198: - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080751C0 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080751BC: .4byte gBattleAnimAttacker -_080751C0: .4byte gBattleAnimArgs - thumb_func_end sub_8075160 - - thumb_func_start GetBattlerSide -GetBattlerSide: @ 80751C4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080751D4 @ =gBattlerPositions - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_080751D4: .4byte gBattlerPositions - thumb_func_end GetBattlerSide - - thumb_func_start GetBattlerPosition -GetBattlerPosition: @ 80751D8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080751E4 @ =gBattlerPositions - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080751E4: .4byte gBattlerPositions - thumb_func_end GetBattlerPosition - - thumb_func_start GetBattlerAtPosition -GetBattlerAtPosition: @ 80751E8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r1, 0 - ldr r0, _0807521C @ =gBattlersCount - ldrb r2, [r0] - cmp r1, r2 - bcs _08075212 - ldr r4, _08075220 @ =gBattlerPositions - ldrb r0, [r4] - cmp r0, r3 - beq _08075212 -_08075200: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcs _08075212 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _08075200 -_08075212: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807521C: .4byte gBattlersCount -_08075220: .4byte gBattlerPositions - thumb_func_end GetBattlerAtPosition - - thumb_func_start IsBattlerSpritePresent -IsBattlerSpritePresent: @ 8075224 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08075254 @ =gBattlerPositions - adds r0, r4, r0 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08075288 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075260 - ldr r1, _08075258 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807525C @ =gEnemyParty - b _0807526E - .align 2, 0 -_08075254: .4byte gBattlerPositions -_08075258: .4byte gBattlerPartyIndexes -_0807525C: .4byte gEnemyParty -_08075260: - ldr r1, _08075280 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08075284 @ =gPlayerParty -_0807526E: - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08075288 - movs r0, 0x1 - b _0807528A - .align 2, 0 -_08075280: .4byte gBattlerPartyIndexes -_08075284: .4byte gPlayerParty -_08075288: - movs r0, 0 -_0807528A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsBattlerSpritePresent - - thumb_func_start IsDoubleBattle -IsDoubleBattle: @ 8075290 - ldr r0, _0807529C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_0807529C: .4byte gBattleTypeFlags - thumb_func_end IsDoubleBattle - - thumb_func_start sub_80752A0 -sub_80752A0: @ 80752A0 - ldr r1, _080752C0 @ =gUnknown_2022BB8 - ldr r1, [r1] - str r1, [r0] - ldr r1, _080752C4 @ =gUnknown_2022BBC - ldr r1, [r1] - str r1, [r0, 0x4] - movs r2, 0 - movs r1, 0x8 - strb r1, [r0, 0x8] - movs r1, 0x1 - strb r1, [r0, 0x9] - movs r1, 0x80 - lsls r1, 2 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - bx lr - .align 2, 0 -_080752C0: .4byte gUnknown_2022BB8 -_080752C4: .4byte gUnknown_2022BBC - thumb_func_end sub_80752A0 - - thumb_func_start sub_80752C8 -sub_80752C8: @ 80752C8 - push {lr} - adds r2, r0, 0 - cmp r1, 0x1 - bne _080752D6 - bl sub_80752A0 - b _080752F4 -_080752D6: - ldr r0, _080752F8 @ =gUnknown_2022BB8 - ldr r0, [r0] - str r0, [r2] - ldr r0, _080752FC @ =gUnknown_2022BBC - ldr r0, [r0] - str r0, [r2, 0x4] - movs r1, 0 - movs r0, 0x9 - strb r0, [r2, 0x8] - movs r0, 0x2 - strb r0, [r2, 0x9] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r2, 0xA] - strh r1, [r2, 0xC] -_080752F4: - pop {r0} - bx r0 - .align 2, 0 -_080752F8: .4byte gUnknown_2022BB8 -_080752FC: .4byte gUnknown_2022BBC - thumb_func_end sub_80752C8 - - thumb_func_start sub_8075300 -sub_8075300: @ 8075300 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08075334 @ =gUnknown_2022BB8 - ldr r0, [r0] - str r0, [r4] - ldr r0, _08075338 @ =gUnknown_2022BBC - ldr r0, [r0] - str r0, [r4, 0x4] - ldr r0, _0807533C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bne _08075340 - movs r0, 0 - movs r1, 0x8 - strb r1, [r4, 0x8] - strb r2, [r4, 0x9] - movs r1, 0x80 - lsls r1, 2 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - b _08075352 - .align 2, 0 -_08075334: .4byte gUnknown_2022BB8 -_08075338: .4byte gUnknown_2022BBC -_0807533C: .4byte gBattleAnimAttacker -_08075340: - movs r1, 0 - movs r0, 0x9 - strb r0, [r4, 0x8] - movs r0, 0x2 - strb r0, [r4, 0x9] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r4, 0xA] - strh r1, [r4, 0xC] -_08075352: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075300 - - thumb_func_start sub_8075358 -sub_8075358: @ 8075358 - push {r4,lr} - sub sp, 0x20 - adds r4, r0, 0 - add r0, sp, 0xC - adds r1, r4, 0 - bl sub_80752C8 - movs r0, 0 - str r0, [sp, 0x1C] - add r0, sp, 0x1C - ldr r1, [sp, 0xC] - ldr r2, _080753B0 @ =0x05000800 - bl CpuSet - lsls r4, 24 - lsrs r4, 24 - ldr r1, [sp, 0xC] - movs r2, 0x80 - lsls r2, 6 - add r0, sp, 0xC - ldrh r3, [r0, 0xA] - adds r0, r4, 0 - bl LoadBgTiles - movs r0, 0x20 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - adds r0, r4, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080753B0: .4byte 0x05000800 - thumb_func_end sub_8075358 - - thumb_func_start sub_80753B4 -sub_80753B4: @ 80753B4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r5, r0, 0 - mov r8, r1 - adds r6, r2, 0 - movs r0, 0 - str r0, [sp] - ldr r4, _080753FC @ =gUnknown_2022BB8 - ldr r1, [r4] - ldr r2, _08075400 @ =0x05000800 - mov r0, sp - bl CpuSet - ldr r1, [r4] - mov r0, r8 - bl LZDecompressWram - lsls r5, 24 - lsrs r5, 24 - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 6 - lsls r6, 16 - lsrs r6, 16 - adds r0, r5, 0 - adds r3, r6, 0 - bl LoadBgTiles - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080753FC: .4byte gUnknown_2022BB8 -_08075400: .4byte 0x05000800 - thumb_func_end sub_80753B4 - - thumb_func_start sub_8075404 -sub_8075404: @ 8075404 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x20 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8075404 - - thumb_func_start sub_807543C -sub_807543C: @ 807543C - push {r4,lr} - adds r4, r0, 0 - bl sub_8075404 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl CopyBgTilemapBufferToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807543C - - thumb_func_start sub_8075454 -sub_8075454: @ 8075454 - movs r0, 0x2 - bx lr - thumb_func_end sub_8075454 - - thumb_func_start sub_8075458 -sub_8075458: @ 8075458 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _08075476 - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1 - bl SetAnimBgAttribute - b _0807548A -_08075476: - movs r0, 0x3 - movs r1, 0 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute -_0807548A: - pop {r0} - bx r0 - thumb_func_end sub_8075458 - - thumb_func_start sub_8075490 -sub_8075490: @ 8075490 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl InitSpriteDataForLinearTranslation - ldr r1, _080754B4 @ =sub_8074D3C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080754B4: .4byte sub_8074D3C - thumb_func_end sub_8075490 - - thumb_func_start InitSpriteDataForLinearTranslation -InitSpriteDataForLinearTranslation: @ 80754B8 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x32] - ldrh r1, [r5, 0x30] - subs r0, r1 - ldrh r4, [r5, 0x36] - ldrh r1, [r5, 0x34] - subs r4, r1 - lsls r4, 24 - lsrs r4, 16 - lsls r0, 24 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r5, r2] - bl __divsi3 - movs r6, 0 - strh r0, [r5, 0x30] - lsls r4, 16 - asrs r4, 16 - movs r0, 0x2E - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl __divsi3 - strh r0, [r5, 0x32] - strh r6, [r5, 0x36] - strh r6, [r5, 0x34] - pop {r4-r6} - pop {r0} - bx r0 - 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 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - movs r0, 0x32 - ldrsh r1, [r7, r0] - movs r2, 0x30 - ldrsh r0, [r7, r2] - subs r1, r0 - movs r3, 0x36 - ldrsh r2, [r7, r3] - movs r3, 0x34 - ldrsh r0, [r7, r3] - subs r2, r0 - lsrs r0, r1, 31 - mov r8, r0 - lsrs r3, r2, 31 - mov r9, r3 - cmp r1, 0 - bge _08075524 - negs r1, r1 -_08075524: - lsls r0, r1, 24 - lsrs r6, r0, 16 - adds r0, r2, 0 - cmp r0, 0 - bge _08075530 - negs r0, r0 -_08075530: - lsls r0, 24 - lsrs r5, r0, 16 - movs r0, 0x2E - ldrsh r4, [r7, r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r8 - cmp r2, 0 - beq _0807555C - movs r0, 0x1 - orrs r6, r0 - b _08075560 -_0807555C: - ldr r0, _0807556C @ =0x0000fffe - ands r6, r0 -_08075560: - mov r3, r9 - cmp r3, 0 - beq _08075570 - movs r0, 0x1 - orrs r5, r0 - b _08075574 - .align 2, 0 -_0807556C: .4byte 0x0000fffe -_08075570: - ldr r0, _0807558C @ =0x0000fffe - ands r5, r0 -_08075574: - movs r0, 0 - strh r6, [r7, 0x30] - strh r5, [r7, 0x32] - strh r0, [r7, 0x36] - strh r0, [r7, 0x34] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807558C: .4byte 0x0000fffe - thumb_func_end obj_translate_based_on_private_1_2_3_4 - - thumb_func_start StartAnimLinearTranslation -StartAnimLinearTranslation: @ 8075590 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080755B4 @ =sub_807563C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080755B4: .4byte sub_807563C - thumb_func_end StartAnimLinearTranslation - - thumb_func_start sub_80755B8 -sub_80755B8: @ 80755B8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080755DC @ =sub_8075658 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080755DC: .4byte sub_8075658 - thumb_func_end sub_80755B8 - - thumb_func_start sub_80755E0 -sub_80755E0: @ 80755E0 - push {r4-r6,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080755F0 - movs r0, 0x1 - b _08075634 -_080755F0: - ldrh r1, [r2, 0x30] - ldrh r4, [r2, 0x32] - ldrh r6, [r2, 0x34] - ldrh r5, [r2, 0x36] - adds r0, r6, r1 - lsls r3, r0, 16 - lsrs r6, r3, 16 - adds r0, r5, r4 - lsls r0, 16 - lsrs r5, r0, 16 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08075612 - lsrs r0, r3, 24 - negs r0, r0 - b _08075614 -_08075612: - lsrs r0, r3, 24 -_08075614: - strh r0, [r2, 0x24] - movs r0, 0x1 - ands r4, r0 - cmp r4, 0 - beq _08075624 - lsrs r0, r5, 8 - negs r0, r0 - b _08075626 -_08075624: - lsrs r0, r5, 8 -_08075626: - strh r0, [r2, 0x26] - strh r6, [r2, 0x34] - strh r5, [r2, 0x36] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - movs r0, 0 -_08075634: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80755E0 - - thumb_func_start sub_807563C -sub_807563C: @ 807563C - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _08075650 - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08075650: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807563C - - thumb_func_start sub_8075658 -sub_8075658: @ 8075658 - push {r4,lr} - adds r4, r0, 0 - bl sub_801236C - adds r0, r4, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _08075672 - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08075672: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075658 - - thumb_func_start sub_8075678 -sub_8075678: @ 8075678 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - subs r0, r1, r0 - cmp r0, 0 - bge _0807568C - negs r0, r0 -_0807568C: - lsls r0, 8 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075678 - - thumb_func_start sub_80756A4 -sub_80756A4: @ 80756A4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_8075678 - ldr r1, _080756C8 @ =sub_807563C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080756C8: .4byte sub_807563C - thumb_func_end sub_80756A4 - - thumb_func_start sub_80756CC -sub_80756CC: @ 80756CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - movs r0, 0x32 - ldrsh r1, [r7, r0] - movs r2, 0x30 - ldrsh r0, [r7, r2] - subs r1, r0 - movs r3, 0x36 - ldrsh r2, [r7, r3] - movs r3, 0x34 - ldrsh r0, [r7, r3] - subs r2, r0 - lsrs r0, r1, 31 - mov r8, r0 - lsrs r3, r2, 31 - mov r9, r3 - cmp r1, 0 - bge _080756F8 - negs r1, r1 -_080756F8: - lsls r0, r1, 20 - lsrs r6, r0, 16 - adds r0, r2, 0 - cmp r0, 0 - bge _08075704 - negs r0, r0 -_08075704: - lsls r0, 20 - lsrs r5, r0, 16 - movs r0, 0x2E - ldrsh r4, [r7, r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r8 - cmp r2, 0 - beq _08075730 - movs r0, 0x1 - orrs r6, r0 - b _08075734 -_08075730: - ldr r0, _08075740 @ =0x0000fffe - ands r6, r0 -_08075734: - mov r3, r9 - cmp r3, 0 - beq _08075744 - movs r0, 0x1 - orrs r5, r0 - b _08075748 - .align 2, 0 -_08075740: .4byte 0x0000fffe -_08075744: - ldr r0, _08075760 @ =0x0000fffe - ands r5, r0 -_08075748: - movs r0, 0 - strh r6, [r7, 0x30] - strh r5, [r7, 0x32] - strh r0, [r7, 0x36] - strh r0, [r7, 0x34] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075760: .4byte 0x0000fffe - thumb_func_end sub_80756CC - - thumb_func_start sub_8075764 -sub_8075764: @ 8075764 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_80756CC - ldr r1, _08075788 @ =sub_80757E8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075788: .4byte sub_80757E8 - thumb_func_end sub_8075764 - - thumb_func_start sub_807578C -sub_807578C: @ 807578C - push {r4-r6,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0807579C - movs r0, 0x1 - b _080757E0 -_0807579C: - ldrh r1, [r2, 0x30] - ldrh r4, [r2, 0x32] - ldrh r6, [r2, 0x34] - ldrh r5, [r2, 0x36] - adds r0, r6, r1 - lsls r3, r0, 16 - lsrs r6, r3, 16 - adds r0, r5, r4 - lsls r0, 16 - lsrs r5, r0, 16 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080757BE - lsrs r0, r3, 20 - negs r0, r0 - b _080757C0 -_080757BE: - lsrs r0, r3, 20 -_080757C0: - strh r0, [r2, 0x24] - movs r0, 0x1 - ands r4, r0 - cmp r4, 0 - beq _080757D0 - lsrs r0, r5, 4 - negs r0, r0 - b _080757D2 -_080757D0: - lsrs r0, r5, 4 -_080757D2: - strh r0, [r2, 0x26] - strh r6, [r2, 0x34] - strh r5, [r2, 0x36] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - movs r0, 0 -_080757E0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807578C - - thumb_func_start sub_80757E8 -sub_80757E8: @ 80757E8 - push {r4,lr} - adds r4, r0, 0 - bl sub_807578C - lsls r0, 24 - cmp r0, 0 - beq _080757FC - adds r0, r4, 0 - bl SetCallbackToStoredInData -_080757FC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80757E8 - - thumb_func_start sub_8075804 -sub_8075804: @ 8075804 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - subs r0, r1, r0 - cmp r0, 0 - bge _08075818 - negs r0, r0 -_08075818: - lsls r0, 4 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_80756CC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075804 - - thumb_func_start sub_8075830 -sub_8075830: @ 8075830 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_8075804 - ldr r1, _08075854 @ =sub_80757E8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075854: .4byte sub_80757E8 - thumb_func_end sub_8075830 - - thumb_func_start SetSpriteRotScale -SetSpriteRotScale: @ 8075858 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r5, _080758D0 @ =0xffff0000 - lsls r2, 16 - lsrs r1, 16 - orrs r1, r2 - str r1, [sp] - ldr r0, [sp, 0x4] - ands r0, r5 - orrs r0, r3 - str r0, [sp, 0x4] - bl sub_80758DC - lsls r0, 24 - cmp r0, 0 - beq _08075894 - mov r0, sp - ldrh r0, [r0] - negs r0, r0 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp] - ands r1, r5 - orrs r1, r0 - str r1, [sp] -_08075894: - ldr r1, _080758D4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x3] - lsls r4, 26 - lsrs r4, 27 - add r5, sp, 0x8 - mov r0, sp - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ObjAffineSet - ldr r0, _080758D8 @ =gOamMatrices - lsls r4, 3 - adds r4, r0 - ldrh r0, [r5] - strh r0, [r4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x6] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080758D0: .4byte 0xffff0000 -_080758D4: .4byte gSprites -_080758D8: .4byte gOamMatrices - thumb_func_end SetSpriteRotScale - - thumb_func_start sub_80758DC -sub_80758DC: @ 80758DC - movs r0, 0 - bx lr - thumb_func_end sub_80758DC - - thumb_func_start PrepareBattlerSpriteForRotScale -PrepareBattlerSpriteForRotScale: @ 80758E0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r2, _08075978 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r4, r1, r2 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075914 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_08075914: - movs r7, 0x3 - ands r5, r7 - lsls r2, r5, 2 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, 0x1] - lsls r0, 30 - cmp r0, 0 - bne _0807595C - ldr r0, _0807597C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x6] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_0807595C: - ldrb r3, [r4, 0x1] - orrs r3, r7 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075978: .4byte gSprites -_0807597C: .4byte gBattleSpritesDataPtr - thumb_func_end PrepareBattlerSpriteForRotScale - - thumb_func_start ResetSpriteRotScale -ResetSpriteRotScale: @ 8075980 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldr r1, _080759D8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - movs r2, 0xD - negs r2, r2 - ands r1, r2 - strb r1, [r0, 0x1] - adds r3, r0, 0 - adds r3, 0x2C - ldrb r2, [r3] - movs r1, 0x7F - ands r1, r2 - strb r1, [r3] - ldrb r3, [r0, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - bl CalcCenterToCornerVec - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080759D8: .4byte gSprites - thumb_func_end ResetSpriteRotScale - - thumb_func_start sub_80759DC -sub_80759DC: @ 80759DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08075A14 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r2 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _08075A18 @ =gOamMatrices - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x4] - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - bge _08075A08 - negs r0, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_08075A08: - lsls r0, r1, 16 - asrs r0, 19 - strh r0, [r2, 0x26] - pop {r0} - bx r0 - .align 2, 0 -_08075A14: .4byte gSprites -_08075A18: .4byte gOamMatrices - thumb_func_end sub_80759DC - - thumb_func_start sub_8075A1C -sub_8075A1C: @ 8075A1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r4, r0, 0 - ldr r0, [sp, 0x28] - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 16 - lsrs r5, r2, 16 - lsls r3, 16 - lsrs r7, r3, 16 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08075AC2 - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - cmp r6, 0 - beq _08075A6A - ldrb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_08075A6A: - ldr r6, _08075AD0 @ =0xffff0000 - lsls r0, r7, 16 - orrs r5, r0 - str r5, [sp] - ldr r0, [sp, 0x4] - ands r0, r6 - mov r1, r8 - orrs r0, r1 - str r0, [sp, 0x4] - bl sub_80758DC - lsls r0, 24 - cmp r0, 0 - beq _08075A98 - mov r0, sp - ldrh r0, [r0] - negs r0, r0 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp] - ands r1, r6 - orrs r1, r0 - str r1, [sp] -_08075A98: - ldrb r4, [r4, 0x3] - lsls r4, 26 - lsrs r4, 27 - add r5, sp, 0x8 - mov r0, sp - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ObjAffineSet - ldr r0, _08075AD4 @ =gOamMatrices - lsls r4, 3 - adds r4, r0 - ldrh r0, [r5] - strh r0, [r4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x6] -_08075AC2: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075AD0: .4byte 0xffff0000 -_08075AD4: .4byte gOamMatrices - thumb_func_end sub_8075A1C - - thumb_func_start sub_8075AD8 -sub_8075AD8: @ 8075AD8 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r3, 0x80 - lsls r3, 1 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0x1 - adds r2, r3, 0 - bl sub_8075A1C - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075AD8 - - thumb_func_start ArcTan2_ -ArcTan2_: @ 8075B18 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end ArcTan2_ - - thumb_func_start sub_8075B30 -sub_8075B30: @ 8075B30 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2_ - lsls r0, 16 - negs r0, r0 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8075B30 - - thumb_func_start sub_8075B48 -sub_8075B48: @ 8075B48 - push {r4-r7,lr} - lsls r1, 24 - lsls r0, 20 - lsrs r0, 16 - cmp r1, 0 - bne _08075BC4 - ldr r2, _08075BB8 @ =gPlttBufferUnfaded - ldr r1, _08075BBC @ =gPlttBufferFaded - lsls r0, 1 - adds r4, r0, r1 - adds r5, r0, r2 - movs r6, 0xF -_08075B60: - ldr r0, [r5] - lsls r2, r0, 27 - lsrs r2, 27 - lsls r1, r0, 22 - lsrs r1, 27 - adds r2, r1 - lsls r0, 17 - lsrs r0, 27 - adds r0, r2 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - ldrb r1, [r4] - movs r3, 0x20 - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4] - lsls r3, r0, 5 - ldrh r1, [r4] - ldr r7, _08075BC0 @ =0xfffffc1f - adds r2, r7, 0 - ands r1, r2 - orrs r1, r3 - strh r1, [r4] - lsls r0, 2 - ldrb r1, [r4, 0x1] - movs r3, 0x7D - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x1] - adds r4, 0x2 - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08075B60 - b _08075BD4 - .align 2, 0 -_08075BB8: .4byte gPlttBufferUnfaded -_08075BBC: .4byte gPlttBufferFaded -_08075BC0: .4byte 0xfffffc1f -_08075BC4: - lsls r1, r0, 1 - ldr r0, _08075BDC @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _08075BE0 @ =gPlttBufferFaded - adds r1, r2 - ldr r2, _08075BE4 @ =0x04000008 - bl CpuSet -_08075BD4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075BDC: .4byte gPlttBufferUnfaded -_08075BE0: .4byte gPlttBufferFaded -_08075BE4: .4byte 0x04000008 - thumb_func_end sub_8075B48 - - thumb_func_start sub_8075BE8 -sub_8075BE8: @ 8075BE8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - ldr r6, [sp, 0x24] - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r7, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - lsls r6, 24 - lsrs r6, 24 - mov r9, r6 - movs r4, 0 - cmp r0, 0 - beq _08075C1C - movs r4, 0xE -_08075C1C: - cmp r1, 0 - beq _08075C2E - ldr r0, _08075CB0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C2E: - cmp r2, 0 - beq _08075C40 - ldr r0, _08075CB4 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C40: - cmp r3, 0 - beq _08075C64 - ldr r6, _08075CB0 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075C64 - ldrb r0, [r6] - eors r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C64: - cmp r7, 0 - beq _08075C88 - ldr r6, _08075CB4 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075C88 - ldrb r0, [r6] - eors r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C88: - mov r0, r8 - cmp r0, 0 - beq _08075C94 - movs r0, 0x80 - lsls r0, 1 - orrs r4, r0 -_08075C94: - mov r0, r9 - cmp r0, 0 - beq _08075CA0 - movs r0, 0x80 - lsls r0, 2 - orrs r4, r0 -_08075CA0: - adds r0, r4, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08075CB0: .4byte gBattleAnimAttacker -_08075CB4: .4byte gBattleAnimTarget - thumb_func_end sub_8075BE8 - - thumb_func_start sub_8075CB8 -sub_8075CB8: @ 8075CB8 - push {r4-r7,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - movs r4, 0 - cmp r0, 0 - beq _08075CF2 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075CF2 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r4, 0x1 - lsls r4, r0 -_08075CF2: - cmp r5, 0 - beq _08075D1E - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075D1E - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D1E: - cmp r6, 0 - beq _08075D4A - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075D4A - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D4A: - cmp r7, 0 - beq _08075D76 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08075D76 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D76: - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8075CB8 - - thumb_func_start sub_8075D80 -sub_8075D80: @ 8075D80 - lsls r0, 24 - lsrs r0, 24 - bx lr - thumb_func_end sub_8075D80 - - thumb_func_start sub_8075D88 -sub_8075D88: @ 8075D88 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8075D88 - - thumb_func_start sub_8075D9C -sub_8075D9C: @ 8075D9C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08075DDA - ldr r2, _08075DC8 @ =gBattleAnimArgs - movs r3, 0x6 - ldrsh r0, [r2, r3] - movs r1, 0 - cmp r0, 0 - bne _08075DB6 - movs r1, 0x1 -_08075DB6: - movs r3, 0x4 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08075DCC - adds r0, r4, 0 - bl sub_8075160 - b _08075DD2 - .align 2, 0 -_08075DC8: .4byte gBattleAnimArgs -_08075DCC: - adds r0, r4, 0 - bl sub_8075114 -_08075DD2: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08075DEE -_08075DDA: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - beq _08075DEE - adds r0, r4, 0 - bl move_anim_8074EE0 -_08075DEE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075D9C - - thumb_func_start sub_8075DF4 -sub_8075DF4: @ 8075DF4 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r6, _08075E6C @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r6, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0 - cmp r0, 0 - bne _08075E0C - movs r1, 0x1 -_08075E0C: - ldrb r0, [r6, 0xA] - movs r7, 0x1 - cmp r0, 0 - bne _08075E16 - movs r7, 0x3 -_08075E16: - adds r0, r5, 0 - bl sub_8075160 - ldr r0, _08075E70 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075E30 - ldrh r0, [r6, 0x4] - negs r0, r0 - strh r0, [r6, 0x4] -_08075E30: - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - ldr r4, _08075E74 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - adds r1, r7, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _08075E78 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _08075E7C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075E6C: .4byte gBattleAnimArgs -_08075E70: .4byte gBattleAnimAttacker -_08075E74: .4byte gBattleAnimTarget -_08075E78: .4byte StartAnimLinearTranslation -_08075E7C: .4byte DestroyAnimSprite - thumb_func_end sub_8075DF4 - - thumb_func_start sub_8075E80 -sub_8075E80: @ 8075E80 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _08075EE0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075EA0 - ldr r1, _08075EE4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08075EA0: - ldr r4, _08075EE4 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _08075EE8 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_8075068 - ldr r0, _08075EEC @ =sub_8075EF0 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08075EE0: .4byte gBattleAnimAttacker -_08075EE4: .4byte gBattleAnimArgs -_08075EE8: .4byte gBattleAnimTarget -_08075EEC: .4byte sub_8075EF0 - thumb_func_end sub_8075E80 - - thumb_func_start sub_8075EF0 -sub_8075EF0: @ 8075EF0 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _08075F04 - adds r0, r4, 0 - bl DestroyAnimSprite -_08075F04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075EF0 - - thumb_func_start sub_8075F0C -sub_8075F0C: @ 8075F0C - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _08075F20 @ =gBattleAnimArgs - movs r2, 0xC - ldrsh r1, [r0, r2] - cmp r1, 0 - bne _08075F24 - movs r4, 0x1 - movs r7, 0x3 - b _08075F28 - .align 2, 0 -_08075F20: .4byte gBattleAnimArgs -_08075F24: - movs r4, 0 - movs r7, 0x1 -_08075F28: - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08075F40 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075160 - ldr r0, _08075F3C @ =gBattleAnimAttacker - b _08075F4A - .align 2, 0 -_08075F3C: .4byte gBattleAnimAttacker -_08075F40: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075114 - ldr r0, _08075FA8 @ =gBattleAnimTarget -_08075F4A: - ldrb r6, [r0] - ldr r0, _08075FAC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075F62 - ldr r1, _08075FB0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08075F62: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075114 - ldr r4, _08075FB0 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r5, 0x32] - adds r0, r6, 0 - adds r1, r7, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r5, 0x36] - ldr r0, _08075FB4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _08075FB8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075FA8: .4byte gBattleAnimTarget -_08075FAC: .4byte gBattleAnimAttacker -_08075FB0: .4byte gBattleAnimArgs -_08075FB4: .4byte StartAnimLinearTranslation -_08075FB8: .4byte DestroyAnimSprite - thumb_func_end sub_8075F0C - - thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode -duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _08076026 - movs r6, 0 - ldr r2, _08076018 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r1, r0, 2 -_08075FD8: - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r4, r0, r2 - adds r5, r4, 0 - adds r5, 0x3E - ldrb r0, [r5] - lsls r0, 31 - cmp r0, 0 - bne _0807601C - adds r0, r4, 0 - adds r1, r2 - movs r2, 0x44 - bl memcpy - ldrb r1, [r4, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] - ldrb r0, [r5] - adds r2, 0x8 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r5] - lsls r0, r6, 16 - asrs r0, 16 - b _0807602A - .align 2, 0 -_08076018: .4byte gSprites -_0807601C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3F - bls _08075FD8 -_08076026: - movs r0, 0x1 - negs r0, r0 -_0807602A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode - - thumb_func_start obj_delete_but_dont_free_vram -obj_delete_but_dont_free_vram: @ 8076030 - push {lr} - adds r3, r0, 0 - adds r3, 0x3F - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - bl DestroySprite - pop {r0} - bx r0 - thumb_func_end obj_delete_but_dont_free_vram - - thumb_func_start sub_8076048 -sub_8076048: @ 8076048 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - movs r3, 0 - ldr r2, _080760C0 @ =gBattleAnimArgs - movs r0, 0x4 - ldrsh r1, [r2, r0] - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r1, r0 - ble _08076062 - movs r3, 0x1 -_08076062: - cmp r1, r0 - bge _08076068 - ldr r3, _080760C4 @ =0x0000ffff -_08076068: - movs r0, 0x6 - ldrsh r1, [r2, r0] - movs r4, 0x2 - ldrsh r0, [r2, r4] - cmp r1, r0 - ble _08076076 - movs r6, 0x1 -_08076076: - cmp r1, r0 - bge _0807607C - ldr r6, _080760C4 @ =0x0000ffff -_0807607C: - ldr r0, _080760C8 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0x8] - ldrh r0, [r2, 0x8] - strh r0, [r4, 0xA] - strh r1, [r4, 0xC] - ldrh r0, [r2] - strh r0, [r4, 0xE] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x10] - strh r3, [r4, 0x12] - strh r6, [r4, 0x14] - ldrh r0, [r2, 0x4] - strh r0, [r4, 0x16] - ldrh r0, [r2, 0x6] - strh r0, [r4, 0x18] - ldrh r1, [r2, 0x2] - lsls r1, 8 - ldrh r0, [r2] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080760CC @ =sub_80760D0 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080760C0: .4byte gBattleAnimArgs -_080760C4: .4byte 0x0000ffff -_080760C8: .4byte gTasks -_080760CC: .4byte sub_80760D0 - thumb_func_end sub_8076048 - - thumb_func_start sub_80760D0 -sub_80760D0: @ 80760D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807611C @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xA - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _08076164 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08076120 - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r1, [r4, r3] - movs r3, 0x16 - ldrsh r0, [r4, r3] - cmp r1, r0 - beq _08076134 - ldrh r0, [r4, 0x12] - adds r0, r2, r0 - strh r0, [r4, 0xE] - b _08076134 - .align 2, 0 -_0807611C: .4byte gTasks -_08076120: - ldrh r2, [r4, 0x10] - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r3, 0x18 - ldrsh r0, [r4, r3] - cmp r1, r0 - beq _08076134 - ldrh r0, [r4, 0x14] - adds r0, r2, r0 - strh r0, [r4, 0x10] -_08076134: - ldrh r1, [r4, 0x10] - lsls r1, 8 - ldrh r0, [r4, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076164 - movs r3, 0x10 - ldrsh r1, [r4, r3] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076164 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08076164: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80760D0 - - thumb_func_start sub_807616C -sub_807616C: @ 807616C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807618C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - bne _08076190 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080761B6 - .align 2, 0 -_0807618C: .4byte gBattleAnimArgs -_08076190: - ldr r1, _080761BC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, _080761C0 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - lsls r1, 4 - ldr r3, _080761C4 @ =0x00000101 - adds r2, r3, 0 - adds r1, r2 - strh r1, [r0, 0x8] - bl sub_80761C8 -_080761B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080761BC: .4byte gTasks -_080761C0: .4byte gSprites -_080761C4: .4byte 0x00000101 - thumb_func_end sub_807616C - - thumb_func_start sub_80761C8 -sub_80761C8: @ 80761C8 - ldr r3, _080761E8 @ =gBattleAnimArgs - ldrh r1, [r3, 0x2] - movs r2, 0 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - ldrh r1, [r3, 0x4] - strh r1, [r0, 0xE] - strh r2, [r0, 0x10] - ldrh r1, [r3, 0x6] - strh r1, [r0, 0x12] - strh r2, [r0, 0x14] - ldrh r1, [r3, 0x8] - strh r1, [r0, 0x16] - ldr r1, _080761EC @ =sub_80761F0 - str r1, [r0] - bx lr - .align 2, 0 -_080761E8: .4byte gBattleAnimArgs -_080761EC: .4byte sub_80761F0 - thumb_func_end sub_80761C8 - - thumb_func_start sub_80761F0 -sub_80761F0: @ 80761F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08076248 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _08076280 - movs r0, 0 - strh r0, [r4, 0x10] - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0807624C - ldrh r2, [r4, 0xC] - adds r2, 0x1 - strh r2, [r4, 0xC] - ldrh r0, [r4, 0x8] - lsls r2, 24 - lsrs r2, 24 - ldrh r3, [r4, 0xA] - movs r1, 0xF - bl BlendPalette - movs r2, 0xC - ldrsh r1, [r4, r2] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076280 - movs r0, 0x1 - strh r0, [r4, 0x14] - b _08076280 - .align 2, 0 -_08076248: .4byte gTasks -_0807624C: - ldrh r2, [r4, 0xC] - subs r2, 0x1 - strh r2, [r4, 0xC] - ldrh r0, [r4, 0x8] - lsls r2, 24 - lsrs r2, 24 - ldrh r3, [r4, 0xA] - movs r1, 0xF - bl BlendPalette - movs r0, 0xC - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _08076280 - ldrh r0, [r4, 0x16] - subs r0, 0x1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - beq _0807627A - strh r1, [r4, 0x10] - strh r1, [r4, 0x14] - b _08076280 -_0807627A: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08076280: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80761F0 - - thumb_func_start sub_8076288 -sub_8076288: @ 8076288 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080762A8 @ =gBattleAnimArgs - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _080762AC - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080762C2 - .align 2, 0 -_080762A8: .4byte gBattleAnimArgs -_080762AC: - ldr r1, _080762C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - lsls r1, r2, 4 - ldr r2, _080762CC @ =0x00000101 - adds r1, r2 - strh r1, [r0, 0x8] - bl sub_80761C8 -_080762C2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080762C8: .4byte gTasks -_080762CC: .4byte 0x00000101 - thumb_func_end sub_8076288 - - thumb_func_start sub_80762D0 -sub_80762D0: @ 80762D0 - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - strh r1, [r3, 0x16] - strh r1, [r3, 0x18] - strh r1, [r3, 0x1A] - strh r4, [r3, 0x26] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x1C] - strh r0, [r3, 0x1E] - strh r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x22 - adds r3, 0x24 - adds r1, r3, 0 - bl sub_80765C0 - adds r0, r4, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80762D0 - - thumb_func_start sub_8076308 -sub_8076308: @ 8076308 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080763A8 @ =gUnknown_2037F28 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - bl sub_80765C8 - movs r3, 0x16 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r1, r0, r1 - str r1, [r5] - movs r6, 0 - ldrsh r2, [r1, r6] - ldr r0, _080763AC @ =0x00007ffe - cmp r2, r0 - beq _080763B0 - cmp r2, r0 - bgt _08076410 - subs r0, 0x1 - cmp r2, r0 - beq _080763B6 - ldrb r0, [r1, 0x5] - cmp r0, 0 - bne _08076356 - ldrh r0, [r1] - strh r0, [r4, 0x1C] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x1E] - ldrb r0, [r1, 0x4] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - adds r0, r1, 0 - adds r0, 0x8 - str r0, [r5] -_08076356: - ldr r1, [r5] - ldrh r0, [r1] - ldrh r2, [r4, 0x1C] - adds r0, r2 - strh r0, [r4, 0x1C] - ldrh r0, [r1, 0x2] - ldrh r3, [r4, 0x1E] - adds r0, r3 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x20] - ldrb r1, [r1, 0x4] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r6, 0x1C - ldrsh r1, [r4, r6] - movs r3, 0x1E - ldrsh r2, [r4, r3] - ldrh r3, [r4, 0x20] - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076440 - ldrh r0, [r4, 0x18] - adds r0, 0x1 - strh r0, [r4, 0x18] - lsls r0, 16 - asrs r0, 16 - ldr r1, [r5] - ldrb r1, [r1, 0x5] - cmp r0, r1 - blt _08076436 - movs r0, 0 - strh r0, [r4, 0x18] - b _08076408 - .align 2, 0 -_080763A8: .4byte gUnknown_2037F28 -_080763AC: .4byte 0x00007ffe -_080763B0: - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x16] - b _08076436 -_080763B6: - ldrh r2, [r1, 0x2] - movs r6, 0x2 - ldrsh r0, [r1, r6] - cmp r0, 0 - beq _08076408 - ldrh r1, [r4, 0x1A] - movs r3, 0x1A - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080763D6 - subs r0, r1, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bne _080763D8 - b _08076408 -_080763D6: - strh r2, [r4, 0x1A] -_080763D8: - movs r6, 0x16 - ldrsh r0, [r4, r6] - cmp r0, 0 - beq _08076436 - ldr r3, _08076400 @ =gUnknown_2037F28 - ldr r5, _08076404 @ =0x00007ffd -_080763E4: - ldrh r2, [r4, 0x16] - subs r1, r2, 0x1 - strh r1, [r4, 0x16] - ldr r0, [r3] - subs r0, 0x8 - str r0, [r3] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r0, r5 - beq _08076434 - lsls r0, r1, 16 - cmp r0, 0 - bne _080763E4 - b _08076436 - .align 2, 0 -_08076400: .4byte gUnknown_2037F28 -_08076404: .4byte 0x00007ffd -_08076408: - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - b _08076436 -_08076410: - ldr r2, _08076430 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - movs r0, 0 - b _08076438 - .align 2, 0 -_08076430: .4byte gSprites -_08076434: - strh r2, [r4, 0x16] -_08076436: - movs r0, 0x1 -_08076438: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8076308 - - thumb_func_start sub_8076440 -sub_8076440: @ 8076440 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80764EC - lsls r0, 16 - lsrs r0, 15 - movs r1, 0x40 - subs r5, r1, r0 - ldr r1, _0807648C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrb r1, [r4, 0x3] - lsls r1, 26 - lsrs r1, 27 - lsls r0, r5, 8 - ldr r2, _08076490 @ =gOamMatrices - lsls r1, 3 - adds r1, r2 - movs r2, 0x6 - ldrsh r1, [r1, r2] - bl __divsi3 - cmp r0, 0x80 - ble _0807647C - movs r0, 0x80 -_0807647C: - subs r0, r5, r0 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807648C: .4byte gSprites -_08076490: .4byte gOamMatrices - thumb_func_end sub_8076440 - - thumb_func_start sub_8076494 -sub_8076494: @ 8076494 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - lsrs r0, 24 - bl sub_80764EC - lsls r0, 16 - lsrs r0, 15 - movs r1, 0x40 - subs r5, r1, r0 - ldr r1, _080764E4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrb r1, [r4, 0x3] - lsls r1, 26 - lsrs r1, 27 - lsls r0, r5, 8 - ldr r2, _080764E8 @ =gOamMatrices - lsls r1, 3 - adds r1, r2 - movs r2, 0x6 - ldrsh r1, [r1, r2] - bl __divsi3 - cmp r0, 0x80 - ble _080764D4 - movs r0, 0x80 -_080764D4: - subs r0, r5, r0 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080764E4: .4byte gSprites -_080764E8: .4byte gOamMatrices - thumb_func_end sub_8076494 - - thumb_func_start sub_80764EC -sub_80764EC: @ 80764EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08076548 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r1, _0807654C @ =gBattlerSpriteIds - ldr r6, _08076550 @ =gBattlerPartyIndexes -_08076508: - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, r2 - bne _080765AC - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08076568 - ldr r0, _08076554 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807655C - lsls r0, r4, 1 - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08076558 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _0807655E - .align 2, 0 -_08076548: .4byte gSprites -_0807654C: .4byte gBattlerSpriteIds -_08076550: .4byte gBattlerPartyIndexes -_08076554: .4byte gBattleSpritesDataPtr -_08076558: .4byte gPlayerParty -_0807655C: - ldrh r1, [r1, 0x2] -_0807655E: - ldr r0, _08076564 @ =gUnknown_8235E6C - b _080765A0 - .align 2, 0 -_08076564: .4byte gUnknown_8235E6C -_08076568: - ldr r0, _08076594 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807659C - lsls r0, r4, 1 - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08076598 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _0807659E - .align 2, 0 -_08076594: .4byte gBattleSpritesDataPtr -_08076598: .4byte gEnemyParty -_0807659C: - ldrh r1, [r1, 0x2] -_0807659E: - ldr r0, _080765A8 @ =gUnknown_82349CC -_080765A0: - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _080765B8 - .align 2, 0 -_080765A8: .4byte gUnknown_82349CC -_080765AC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08076508 - movs r0, 0x40 -_080765B8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80764EC - - thumb_func_start sub_80765C0 -sub_80765C0: @ 80765C0 - strh r2, [r0] - asrs r2, 16 - strh r2, [r1] - bx lr - thumb_func_end sub_80765C0 - - thumb_func_start sub_80765C8 -sub_80765C8: @ 80765C8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - orrs r0, r1 - bx lr - thumb_func_end sub_80765C8 - - thumb_func_start sub_80765D4 -sub_80765D4: @ 80765D4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r5, r3, 0 - ldr r0, [sp, 0x14] - ldr r4, [sp, 0x18] - ldr r6, [sp, 0x1C] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 16 - lsrs r2, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r3, r8 - strh r6, [r3, 0x18] - strh r1, [r3, 0x26] - strh r2, [r3, 0x1A] - strh r5, [r3, 0x1C] - strh r0, [r3, 0x22] - strh r4, [r3, 0x24] - lsls r0, 16 - asrs r0, 16 - lsls r2, 16 - asrs r2, 16 - subs r0, r2 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1, 0x1E] - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - subs r4, r5 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - mov r3, r8 - strh r0, [r3, 0x20] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80765D4 - - thumb_func_start sub_8076640 -sub_8076640: @ 8076640 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x18] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _08076652 - movs r0, 0 - b _080766AE -_08076652: - subs r0, r1, 0x1 - strh r0, [r4, 0x18] - lsls r0, 16 - cmp r0, 0 - beq _0807666C - ldrh r0, [r4, 0x1E] - ldrh r3, [r4, 0x1A] - adds r0, r3 - strh r0, [r4, 0x1A] - ldrh r0, [r4, 0x20] - ldrh r1, [r4, 0x1C] - adds r0, r1 - b _08076672 -_0807666C: - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x1A] - ldrh r0, [r4, 0x24] -_08076672: - strh r0, [r4, 0x1C] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1A - ldrsh r1, [r4, r2] - movs r3, 0x1C - ldrsh r2, [r4, r3] - movs r3, 0 - bl SetSpriteRotScale - movs r0, 0x18 - ldrsh r3, [r4, r0] - cmp r3, 0 - beq _0807669C - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076440 - b _080766AC -_0807669C: - ldr r2, _080766B4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] -_080766AC: - ldrb r0, [r4, 0x18] -_080766AE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080766B4: .4byte gSprites - thumb_func_end sub_8076640 - - thumb_func_start sub_80766B8 -sub_80766B8: @ 80766B8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080766E4 @ =gAnimFriendship - ldrb r0, [r0] - movs r1, 0 - cmp r0, 0x1E - bls _080766D6 - movs r1, 0x1 - cmp r0, 0x64 - bls _080766D6 - movs r1, 0x3 - cmp r0, 0xC8 - bhi _080766D6 - movs r1, 0x2 -_080766D6: - ldr r0, _080766E8 @ =gBattleAnimArgs - strh r1, [r0, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080766E4: .4byte gAnimFriendship -_080766E8: .4byte gBattleAnimArgs - thumb_func_end sub_80766B8 - - thumb_func_start sub_80766EC -sub_80766EC: @ 80766EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - ldr r6, _080767E0 @ =gBattleAnimTarget - ldrb r0, [r6] - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0807672C - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0807672C: - ldr r0, _080767EC @ =gBattleAnimAttacker - mov r8, r0 - ldrb r0, [r0] - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08076764 - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - mov r3, r8 - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_08076764: - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0807679C - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - ldrb r0, [r6] - eors r0, r5 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0807679C: - mov r1, r8 - ldrb r0, [r1] - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080767D4 - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - mov r3, r8 - ldrb r0, [r3] - eors r0, r5 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - ands r7, r0 - lsls r3, r7, 2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] -_080767D4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080767E0: .4byte gBattleAnimTarget -_080767E4: .4byte gSprites -_080767E8: .4byte gBattlerSpriteIds -_080767EC: .4byte gBattleAnimAttacker - thumb_func_end sub_80766EC - - thumb_func_start sub_80767F0 -sub_80767F0: @ 80767F0 - push {r4-r6,lr} - movs r5, 0 - ldr r0, _08076850 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0807684A - ldr r6, _08076854 @ =gSprites -_080767FE: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08076840 - adds r0, r4, 0 - bl GetBattlerSpriteSubpriority - ldr r3, _08076858 @ =gBattlerSpriteIds - adds r3, r5, r3 - ldrb r2, [r3] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r6 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r2, [r0, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r2, r1 - movs r1, 0x8 - orrs r2, r1 - strb r2, [r0, 0x5] -_08076840: - adds r5, 0x1 - ldr r0, _08076850 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _080767FE -_0807684A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08076850: .4byte gBattlersCount -_08076854: .4byte gSprites -_08076858: .4byte gBattlerSpriteIds - thumb_func_end sub_80767F0 - - thumb_func_start GetBattlerSpriteSubpriority -GetBattlerSpriteSubpriority: @ 807685C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1E - cmp r0, 0 - beq _0807687E - movs r1, 0x14 - cmp r0, 0x2 - beq _0807687E - movs r1, 0x32 - cmp r0, 0x1 - bne _0807687E - movs r1, 0x28 -_0807687E: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end GetBattlerSpriteSubpriority - - thumb_func_start sub_8076884 -sub_8076884: @ 8076884 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807689A - cmp r0, 0x3 - bne _0807689E -_0807689A: - movs r0, 0x2 - b _080768A0 -_0807689E: - movs r0, 0x1 -_080768A0: - movs r1, 0x4 - bl sub_80BC30C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8076884 - - thumb_func_start sub_80768B0 -sub_80768B0: @ 80768B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080768C6 - cmp r0, 0x3 - bne _080768CA -_080768C6: - movs r0, 0x2 - b _080768CC -_080768CA: - movs r0, 0x1 -_080768CC: - pop {r1} - bx r1 - thumb_func_end sub_80768B0 - - thumb_func_start sub_80768D0 -sub_80768D0: @ 80768D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r4, [sp, 0x30] - ldr r5, [sp, 0x34] - ldr r6, [sp, 0x38] - mov r8, r6 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 16 - lsrs r3, 16 - mov r10, r3 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x8] - lsls r0, r7, 3 - ldr r1, _080769B0 @ =gUnknown_83AE084 - adds r0, r1 - bl LoadSpriteSheet - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - ldr r1, _080769B4 @ =gUnknown_83AE054 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x2] - bl AllocSpritePalette - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080769B8 @ =gMonSpritesGfxPtr - ldr r0, [r4] - cmp r0, 0 - beq _0807694E - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0807694E - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - ldr r1, [r4] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - str r0, [r1] -_0807694E: - mov r3, r9 - cmp r3, 0 - bne _080769EC - adds r0, r6, 0 - ldr r1, [sp, 0x3C] - mov r2, r8 - bl GetMonSpritePalFromSpeciesAndPersonality - lsls r1, r5, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r3, [sp, 0x44] - cmp r3, 0x1 - beq _0807699A - ldr r0, [sp, 0x40] - lsls r1, r0, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_804455C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0807699A - ldr r0, _080769BC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - ldr r2, [sp, 0x40] - lsls r0, r2, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080769C4 -_0807699A: - lsls r0, r6, 3 - ldr r1, _080769C0 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080769B8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r3, 0xBE - lsls r3, 1 - adds r1, r3 - ldr r1, [r1] - movs r2, 0x1 - b _08076A46 - .align 2, 0 -_080769B0: .4byte gUnknown_83AE084 -_080769B4: .4byte gUnknown_83AE054 -_080769B8: .4byte gMonSpritesGfxPtr -_080769BC: .4byte gBattleSpritesDataPtr -_080769C0: .4byte gMonFrontPicTable -_080769C4: - lsls r0, r6, 3 - ldr r1, _080769E4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080769E8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - movs r2, 0x1 - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic - b _08076A7C - .align 2, 0 -_080769E4: .4byte gMonFrontPicTable -_080769E8: .4byte gMonSpritesGfxPtr -_080769EC: - adds r0, r6, 0 - ldr r1, [sp, 0x3C] - mov r2, r8 - bl GetMonSpritePalFromSpeciesAndPersonality - lsls r1, r5, 20 - movs r3, 0x80 - lsls r3, 17 - adds r1, r3 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, [sp, 0x44] - cmp r0, 0x1 - beq _08076A32 - ldr r2, [sp, 0x40] - lsls r1, r2, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_804455C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08076A32 - ldr r0, _08076A54 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - ldr r3, [sp, 0x40] - lsls r0, r3, 2 - adds r0, r1 - ldrh r2, [r0, 0x2] - cmp r2, 0 - beq _08076A60 -_08076A32: - lsls r0, r6, 3 - ldr r1, _08076A58 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08076A5C @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 -_08076A46: - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic_DontHandleDeoxys - b _08076A7C - .align 2, 0 -_08076A54: .4byte gBattleSpritesDataPtr -_08076A58: .4byte gMonBackPicTable -_08076A5C: .4byte gMonSpritesGfxPtr -_08076A60: - lsls r0, r6, 3 - ldr r1, _08076AC8 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08076ACC @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r3, 0xBE - lsls r3, 1 - adds r1, r3 - ldr r1, [r1] - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic -_08076A7C: - ldr r5, _08076ACC @ =gMonSpritesGfxPtr - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - ldr r2, [sp, 0xC] - lsls r1, r2, 5 - ldr r3, _08076AD0 @ =0x06010000 - adds r1, r3 - movs r2, 0x80 - lsls r2, 4 - movs r3, 0x1 - bl RequestDma3Copy - ldr r0, [r5] - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - mov r0, r9 - cmp r0, 0 - bne _08076ADC - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - ldr r1, _08076AD4 @ =gUnknown_83AE054 - adds r0, r1 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldr r3, _08076AD8 @ =gUnknown_82349CC - b _08076AEE - .align 2, 0 -_08076AC8: .4byte gMonBackPicTable -_08076ACC: .4byte gMonSpritesGfxPtr -_08076AD0: .4byte 0x06010000 -_08076AD4: .4byte gUnknown_83AE054 -_08076AD8: .4byte gUnknown_82349CC -_08076ADC: - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - ldr r1, _08076B18 @ =gUnknown_83AE054 - adds r0, r1 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldr r3, _08076B1C @ =gUnknown_8235E6C -_08076AEE: - lsls r2, r6, 2 - adds r2, r3 - ldrb r2, [r2, 0x1] - ldr r3, [sp, 0x4] - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - ldr r3, [sp, 0x8] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - 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 -_08076B18: .4byte gUnknown_83AE054 -_08076B1C: .4byte gUnknown_8235E6C - thumb_func_end sub_80768D0 - - thumb_func_start sub_8076B20 -sub_8076B20: @ 8076B20 - push {lr} - bl DestroySpriteAndFreeResources - pop {r0} - bx r0 - thumb_func_end sub_8076B20 - - thumb_func_start sub_8076B2C -sub_8076B2C: @ 8076B2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08076C08 - ldr r0, _08076B88 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - mov r1, r8 - lsls r2, r1, 2 - adds r1, r2, r0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08076B94 - ldr r0, _08076B8C @ =gBattlerPartyIndexes - mov r1, r8 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08076B90 @ =gPlayerParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _08076B9C - .align 2, 0 -_08076B88: .4byte gBattleSpritesDataPtr -_08076B8C: .4byte gBattlerPartyIndexes -_08076B90: .4byte gPlayerParty -_08076B94: - ldrh r7, [r1, 0x2] - ldr r0, _08076BD4 @ =gTransformedPersonalities - adds r0, r2, r0 - ldr r2, [r0] -_08076B9C: - cmp r7, 0xC9 - bne _08076BEC - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08076BD8 - movs r0, 0xC9 - b _08076BE2 - .align 2, 0 -_08076BD4: .4byte gTransformedPersonalities -_08076BD8: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08076BE2: - lsls r1, r0, 2 - ldr r0, _08076BE8 @ =gUnknown_8235E6C - b _08076CDC - .align 2, 0 -_08076BE8: .4byte gUnknown_8235E6C -_08076BEC: - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bls _08076BFC - ldr r4, _08076BF8 @ =gUnknown_8235E6C - b _08076CDE - .align 2, 0 -_08076BF8: .4byte gUnknown_8235E6C -_08076BFC: - lsls r1, r7, 2 - ldr r0, _08076C04 @ =gUnknown_8235E6C - b _08076CDC - .align 2, 0 -_08076C04: .4byte gUnknown_8235E6C -_08076C08: - ldr r0, _08076C48 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - mov r1, r8 - lsls r2, r1, 2 - adds r1, r2, r0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08076C54 - ldr r0, _08076C4C @ =gBattlerPartyIndexes - mov r1, r8 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08076C50 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _08076C5C - .align 2, 0 -_08076C48: .4byte gBattleSpritesDataPtr -_08076C4C: .4byte gBattlerPartyIndexes -_08076C50: .4byte gEnemyParty -_08076C54: - ldrh r7, [r1, 0x2] - ldr r0, _08076C94 @ =gTransformedPersonalities - adds r0, r2, r0 - ldr r2, [r0] -_08076C5C: - cmp r7, 0xC9 - bne _08076CA6 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08076C98 - movs r0, 0xC9 - b _08076CA2 - .align 2, 0 -_08076C94: .4byte gTransformedPersonalities -_08076C98: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08076CA2: - lsls r1, r0, 2 - b _08076CDA -_08076CA6: - ldr r0, _08076CBC @ =0x00000181 - cmp r7, r0 - bne _08076CC8 - ldr r0, _08076CC0 @ =gBattleMonForms - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _08076CC4 @ =gUnknown_83AE03C - adds r4, r0, r1 - b _08076CDE - .align 2, 0 -_08076CBC: .4byte 0x00000181 -_08076CC0: .4byte gBattleMonForms -_08076CC4: .4byte gUnknown_83AE03C -_08076CC8: - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bls _08076CD8 - ldr r4, _08076CD4 @ =gUnknown_82349CC - b _08076CDE - .align 2, 0 -_08076CD4: .4byte gUnknown_82349CC -_08076CD8: - lsls r1, r7, 2 -_08076CDA: - ldr r0, _08076CF0 @ =gUnknown_82349CC -_08076CDC: - adds r4, r1, r0 -_08076CDE: - mov r0, r9 - cmp r0, 0x6 - bhi _08076D8E - lsls r0, 2 - ldr r1, _08076CF4 @ =_08076CF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08076CF0: .4byte gUnknown_82349CC -_08076CF4: .4byte _08076CF8 - .align 2, 0 -_08076CF8: - .4byte _08076D14 - .4byte _08076D1E - .4byte _08076D4A - .4byte _08076D62 - .4byte _08076D26 - .4byte _08076D38 - .4byte _08076D7A -_08076D14: - ldrb r1, [r4] - movs r0, 0xF - ands r0, r1 - lsls r0, 3 - b _08076D90 -_08076D1E: - ldrb r0, [r4] - lsrs r0, 4 - lsls r0, 3 - b _08076D90 -_08076D26: - mov r0, r8 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - lsrs r1, 4 - b _08076D5C -_08076D38: - mov r0, r8 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - lsrs r1, 4 - b _08076D74 -_08076D4A: - mov r0, r8 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - movs r1, 0xF - ands r1, r2 -_08076D5C: - lsls r1, 2 - subs r0, r1 - b _08076D90 -_08076D62: - mov r0, r8 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - movs r1, 0xF - ands r1, r2 -_08076D74: - lsls r1, 2 - adds r0, r1 - b _08076D90 -_08076D7A: - mov r0, r8 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - ldrb r1, [r4, 0x1] - subs r0, r1 - b _08076D90 -_08076D8E: - movs r0, 0 -_08076D90: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8076B2C - - thumb_func_start sub_8076D9C -sub_8076D9C: @ 8076D9C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r2 - mov r10, r3 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - cmp r1, 0 - bne _08076DBA - movs r5, 0 - movs r6, 0x1 - b _08076DBE -_08076DBA: - movs r5, 0x2 - movs r6, 0x3 -_08076DBE: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08076E06 - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - adds r1, r6, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r3, r0, 24 - mov r0, r8 - lsls r1, r0, 16 - lsls r2, r7, 16 - b _08076E12 -_08076E06: - mov r0, r8 - lsls r1, r0, 16 - lsrs r5, r1, 16 - lsls r0, r7, 16 - lsrs r3, r0, 16 - adds r2, r0, 0 -_08076E12: - asrs r0, r1, 16 - adds r0, r5 - asrs r0, 1 - mov r1, r9 - strh r0, [r1] - asrs r0, r2, 16 - adds r0, r3 - asrs r0, 1 - mov r1, r10 - strh r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8076D9C - - thumb_func_start sub_8076E34 -sub_8076E34: @ 8076E34 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r6, r1, 24 - lsrs r6, 24 - ldr r0, _08076ECC @ =SpriteCallbackDummy - mov r10, r0 - bl CreateInvisibleSpriteWithCallback - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08076ED0 @ =gSprites - mov r9, r0 - mov r0, r8 - lsls r3, r0, 4 - add r3, r8 - lsls r3, 2 - mov r0, r9 - adds r5, r3, r0 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - add r4, r9 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x44 - str r3, [sp] - bl memcpy - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r5, 0x5] - ldrb r0, [r5, 0x1] - ands r1, r0 - movs r0, 0x8 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldrh r2, [r5, 0x4] - ldr r0, _08076ED4 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r0, 0x1C - add r9, r0 - ldr r3, [sp] - add r3, r9 - mov r0, r10 - str r0, [r3] - mov r0, r8 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08076ECC: .4byte SpriteCallbackDummy -_08076ED0: .4byte gSprites -_08076ED4: .4byte 0xfffffc00 - thumb_func_end sub_8076E34 - - thumb_func_start sub_8076ED8 -sub_8076ED8: @ 8076ED8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _08076F10 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076F18 - ldr r2, _08076F14 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x6] - negs r0, r0 - strh r0, [r2, 0x6] - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r3] - adds r1, r2, 0 - b _08076F22 - .align 2, 0 -_08076F10: .4byte gBattleAnimAttacker -_08076F14: .4byte gBattleAnimArgs -_08076F18: - ldr r1, _08076F4C @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] -_08076F22: - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldr r1, _08076F50 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _08076F54 @ =sub_8074E70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08076F4C: .4byte gBattleAnimArgs -_08076F50: .4byte move_anim_8074EE0 -_08076F54: .4byte sub_8074E70 - thumb_func_end sub_8076ED8 - - thumb_func_start sub_8076F58 -sub_8076F58: @ 8076F58 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08076F80 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076F88 - ldr r2, _08076F84 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - movs r1, 0x6 - ldrsh r0, [r2, r1] - negs r0, r0 - strh r0, [r2, 0x6] - adds r1, r2, 0 - b _08076F92 - .align 2, 0 -_08076F80: .4byte gBattleAnimAttacker -_08076F84: .4byte gBattleAnimArgs -_08076F88: - ldr r1, _08076FC4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] -_08076F92: - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldrb r1, [r1, 0xC] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, _08076FC8 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _08076FCC @ =sub_8074E70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08076FC4: .4byte gBattleAnimArgs -_08076FC8: .4byte move_anim_8074EE0 -_08076FCC: .4byte sub_8074E70 - thumb_func_end sub_8076F58 - - thumb_func_start sub_8076FD0 -sub_8076FD0: @ 8076FD0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _08076FF4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076FFC - ldr r0, _08076FF8 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _08077008 - .align 2, 0 -_08076FF4: .4byte gBattleAnimAttacker -_08076FF8: .4byte gBattleAnimArgs -_08076FFC: - ldr r1, _08077024 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_08077008: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _08077028 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldr r1, _0807702C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08077024: .4byte gBattleAnimArgs -_08077028: .4byte sub_8074F6C -_0807702C: .4byte DestroyAnimSprite - thumb_func_end sub_8076FD0 - - thumb_func_start sub_8077030 -sub_8077030: @ 8077030 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080770C4 @ =gTasks - adds r5, r1, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0x8] - ldr r7, _080770C8 @ =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x8 - cmp r0, 0 - beq _08077064 - movs r0, 0x8 - negs r0, r0 - adds r1, r0, 0 -_08077064: - strh r1, [r5, 0xA] - strh r6, [r5, 0xC] - strh r6, [r5, 0xE] - ldr r4, _080770CC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x24] - ldrh r2, [r5, 0x8] - subs r1, r2 - strh r1, [r0, 0x24] - ldr r0, _080770D0 @ =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - strh r6, [r5, 0x12] - movs r1, 0x10 - ldrsh r0, [r5, r1] - adds r0, 0x10 - lsls r0, 20 - lsrs r6, r0, 16 - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - ldrb r0, [r7] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - cmp r0, 0x14 - beq _080770C0 - cmp r0, 0x28 - bne _080770D4 -_080770C0: - movs r0, 0x2 - b _080770D6 - .align 2, 0 -_080770C4: .4byte gTasks -_080770C8: .4byte gBattleAnimAttacker -_080770CC: .4byte gSprites -_080770D0: .4byte 0x00002771 -_080770D4: - movs r0, 0x3 -_080770D6: - strh r0, [r5, 0x14] - lsls r0, r4, 1 - ldr r1, _08077104 @ =gPlttBufferUnfaded - adds r0, r1 - lsls r1, r6, 1 - ldr r2, _08077108 @ =gPlttBufferFaded - adds r1, r2 - ldr r2, _0807710C @ =0x04000008 - bl CpuSet - ldr r0, _08077110 @ =gBattleAnimArgs - ldrb r2, [r0, 0x2] - ldrh r3, [r0] - adds r0, r6, 0 - movs r1, 0x10 - bl BlendPalette - ldr r0, _08077114 @ =sub_8077118 - str r0, [r5] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077104: .4byte gPlttBufferUnfaded -_08077108: .4byte gPlttBufferFaded -_0807710C: .4byte 0x04000008 -_08077110: .4byte gBattleAnimArgs -_08077114: .4byte sub_8077118 - thumb_func_end sub_8077030 - - thumb_func_start sub_8077118 -sub_8077118: @ 8077118 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807713C @ =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807717C - cmp r0, 0x1 - bgt _08077140 - cmp r0, 0 - beq _08077146 - b _080771D8 - .align 2, 0 -_0807713C: .4byte gTasks -_08077140: - cmp r0, 0x2 - beq _080771C4 - b _080771D8 -_08077146: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80771E4 - ldr r2, _08077178 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0xA] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r1, [r4, 0xE] - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080771D8 - strh r1, [r4, 0xE] - b _080771B6 - .align 2, 0 -_08077178: .4byte gSprites -_0807717C: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80771E4 - ldr r3, _080771C0 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - ldrh r2, [r4, 0xA] - subs r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _080771D8 - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - strh r2, [r1, 0x24] -_080771B6: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080771D8 - .align 2, 0 -_080771C0: .4byte gSprites -_080771C4: - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080771D8 - ldr r0, _080771E0 @ =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080771D8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080771E0: .4byte 0x00002771 - thumb_func_end sub_8077118 - - thumb_func_start sub_80771E4 -sub_80771E4: @ 80771E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r7, r0, 16 - asrs r0, 16 - cmp r0, 0 - blt _08077254 - ldr r5, _08077260 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r3, r4, r5 - movs r0, 0x3 - ldrb r1, [r6, 0x14] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldrb r1, [r6, 0x10] - lsls r1, 4 - movs r2, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - movs r0, 0x8 - strh r0, [r3, 0x2E] - mov r0, r8 - strh r0, [r3, 0x30] - strh r7, [r3, 0x32] - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x24] - strh r0, [r3, 0x24] - adds r5, 0x1C - adds r4, r5 - ldr r0, _08077264 @ =sub_8077268 - str r0, [r4] - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] -_08077254: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077260: .4byte gSprites -_08077264: .4byte sub_8077268 - thumb_func_end sub_80771E4 - - thumb_func_start sub_8077268 -sub_8077268: @ 8077268 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _08077292 - ldr r2, _08077298 @ =gTasks - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x12] - subs r1, 0x1 - strh r1, [r0, 0x12] - adds r0, r3, 0 - bl obj_delete_but_dont_free_vram -_08077292: - pop {r0} - bx r0 - .align 2, 0 -_08077298: .4byte gTasks - thumb_func_end sub_8077268 - - thumb_func_start sub_807729C -sub_807729C: @ 807729C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080772D0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080772D4 - movs r0, 0x5 - b _080772D6 - .align 2, 0 -_080772D0: .4byte gBattleAnimAttacker -_080772D4: - ldr r0, _080772E8 @ =0x0000fff6 -_080772D6: - strh r0, [r5, 0x2E] - ldr r0, _080772EC @ =0x0000ffd8 - strh r0, [r5, 0x30] - ldr r0, _080772F0 @ =sub_80772F4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080772E8: .4byte 0x0000fff6 -_080772EC: .4byte 0x0000ffd8 -_080772F0: .4byte sub_80772F4 - thumb_func_end sub_807729C - - thumb_func_start sub_80772F4 -sub_80772F4: @ 80772F4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r5, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r0, r5, r2 - strh r0, [r4, 0x34] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r2, 0x34 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, r5, 16 - asrs r0, 16 - movs r1, 0x14 - negs r1, r1 - cmp r0, r1 - bge _08077330 - adds r0, r5, 0x1 - strh r0, [r4, 0x30] -_08077330: - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _08077348 - adds r0, r4, 0 - bl DestroyAnimSprite -_08077348: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80772F4 - - thumb_func_start sub_8077350 -sub_8077350: @ 8077350 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _08077388 @ =gBattleAnimArgs - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x36] - ldr r0, _0807738C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08077390 - ldrh r0, [r5, 0x8] - adds r0, 0x1E - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0xA] - subs r0, 0x14 - b _0807739E - .align 2, 0 -_08077388: .4byte gBattleAnimArgs -_0807738C: .4byte gBattleAnimTarget -_08077390: - ldrh r0, [r5, 0x8] - subs r0, 0x1E - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0xA] - subs r0, 0x50 -_0807739E: - strh r0, [r4, 0x22] - ldr r0, _080773B4 @ =StartAnimLinearTranslation - str r0, [r4, 0x1C] - ldr r1, _080773B8 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080773B4: .4byte StartAnimLinearTranslation -_080773B8: .4byte DestroyAnimSprite - thumb_func_end sub_8077350 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s deleted file mode 100644 index dc5517ca0..000000000 --- a/asm/battle_anim_sound_tasks.s +++ /dev/null @@ -1,927 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80DCE10 -sub_80DCE10: @ 80DCE10 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080DCE6C @ =gTasks - lsls r6, r0, 2 - adds r6, r0 - lsls r6, 3 - adds r6, r1 - ldr r1, _080DCE70 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r6, 0x8] - ldrh r0, [r1, 0x2] - strh r0, [r6, 0xA] - movs r0, 0x40 - negs r0, r0 - bl sub_8073A44 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x3F - bl sub_8073A44 - adds r5, r0, 0 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl CalculatePanIncrement - strh r4, [r6, 0xC] - strh r5, [r6, 0xE] - lsls r0, 24 - asrs r0, 24 - strh r0, [r6, 0x10] - movs r0, 0xA - strh r0, [r6, 0x1C] - ldr r0, _080DCE74 @ =sub_80DCE78 - str r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DCE6C: .4byte gTasks -_080DCE70: .4byte gBattleAnimArgs -_080DCE74: .4byte sub_80DCE78 - thumb_func_end sub_80DCE10 - - thumb_func_start sub_80DCE78 -sub_80DCE78: @ 80DCE78 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DCEA8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r5, [r4, 0xC] - ldrb r6, [r4, 0x10] - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6F - bne _080DCEB0 - movs r0, 0x5 - strh r0, [r4, 0x1C] - strh r1, [r4, 0x1E] - ldr r0, _080DCEAC @ =sub_80DCEE4 - str r0, [r4] - b _080DCEDE - .align 2, 0 -_080DCEA8: .4byte gTasks -_080DCEAC: .4byte sub_80DCEE4 -_080DCEB0: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _080DCECA - strh r1, [r4, 0x1C] - ldrh r0, [r4, 0x8] - lsls r1, r5, 24 - asrs r1, 24 - bl PlaySE12WithPanning -_080DCECA: - lsls r1, r6, 24 - asrs r1, 24 - lsls r0, r5, 16 - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_8073B60 - strh r0, [r4, 0xC] -_080DCEDE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DCE78 - - thumb_func_start sub_80DCEE4 -sub_80DCEE4: @ 80DCEE4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DCF34 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080DCF2C - movs r0, 0 - strh r0, [r4, 0x1C] - movs r0, 0x3F - bl sub_8073A44 - adds r1, r0, 0 - ldrh r0, [r4, 0xA] - lsls r1, 24 - asrs r1, 24 - bl PlaySE12WithPanning - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080DCF2C - adds r0, r5, 0 - bl DestroyAnimSoundTask -_080DCF2C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCF34: .4byte gTasks - thumb_func_end sub_80DCEE4 - - thumb_func_start mas_80DCF38 -mas_80DCF38: @ 80DCF38 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _080DCFDC @ =gBattleAnimArgs - ldrh r1, [r0] - str r1, [sp] - ldrb r5, [r0, 0x4] - ldrb r6, [r0, 0x6] - ldrb r3, [r0, 0x8] - mov r10, r3 - ldrb r7, [r0, 0xA] - ldrb r1, [r0, 0xC] - mov r9, r1 - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - bl sub_8073A44 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - asrs r5, 24 - adds r0, r5, 0 - bl sub_8073A44 - adds r5, r0, 0 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CalculatePanIncrement - ldr r2, _080DCFE0 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - mov r6, sp - ldrh r6, [r6] - strh r6, [r1, 0x8] - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0xE] - mov r0, r10 - strh r0, [r1, 0x10] - strh r7, [r1, 0x12] - mov r3, r9 - strh r3, [r1, 0x14] - strh r2, [r1, 0x1C] - strh r4, [r1, 0x1E] - strh r3, [r1, 0x20] - ldr r2, _080DCFE4 @ =sub_80DCFE8 - str r2, [r1] - mov r0, r8 - bl _call_via_r2 - 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 -_080DCFDC: .4byte gBattleAnimArgs -_080DCFE0: .4byte gTasks -_080DCFE4: .4byte sub_80DCFE8 - thumb_func_end mas_80DCF38 - - thumb_func_start sub_80DCFE8 -sub_80DCFE8: @ 80DCFE8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DD02C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x20] - adds r1, r0, 0x1 - strh r1, [r4, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x14 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080DD030 - movs r0, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x8] - movs r1, 0x1E - ldrsb r1, [r4, r1] - bl PlaySE12WithPanning - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bne _080DD030 - adds r0, r5, 0 - bl DestroyAnimSoundTask - b _080DD062 - .align 2, 0 -_080DD02C: .4byte gTasks -_080DD030: - ldr r1, _080DD068 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080DD062 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r0, [r4, 0xE] - ldrh r1, [r4, 0x1E] - adds r0, r1 - strh r0, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - bl sub_8073B60 - strh r0, [r4, 0x1E] -_080DD062: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD068: .4byte gTasks - thumb_func_end sub_80DCFE8 - - thumb_func_start sub_80DD06C -sub_80DD06C: @ 80DD06C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x40 - negs r0, r0 - bl sub_8073A44 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080DD090 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DD098 - ldr r0, _080DD094 @ =gBattleAnimAttacker - ldrb r4, [r0] - b _080DD0BE - .align 2, 0 -_080DD090: .4byte gBattleAnimArgs -_080DD094: .4byte gBattleAnimAttacker -_080DD098: - cmp r0, 0x1 - bne _080DD0A8 - ldr r0, _080DD0A4 @ =gBattleAnimTarget - ldrb r4, [r0] - b _080DD0BE - .align 2, 0 -_080DD0A4: .4byte gBattleAnimTarget -_080DD0A8: - cmp r0, 0x2 - bne _080DD0B4 - ldr r0, _080DD0B0 @ =gBattleAnimAttacker - b _080DD0B6 - .align 2, 0 -_080DD0B0: .4byte gBattleAnimAttacker -_080DD0B4: - ldr r0, _080DD0E0 @ =gBattleAnimTarget -_080DD0B6: - ldrb r1, [r0] - movs r0, 0x2 - adds r4, r0, 0 - eors r4, r1 -_080DD0BE: - ldr r0, _080DD0E4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080DD0CC - cmp r0, 0x3 - bne _080DD0E8 -_080DD0CC: - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080DD0E8 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080DD13A - .align 2, 0 -_080DD0E0: .4byte gBattleAnimTarget -_080DD0E4: .4byte gBattleAnimArgs -_080DD0E8: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DD10C - ldr r1, _080DD104 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080DD108 @ =gEnemyParty - b _080DD11A - .align 2, 0 -_080DD104: .4byte gBattlerPartyIndexes -_080DD108: .4byte gEnemyParty -_080DD10C: - ldr r1, _080DD140 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080DD144 @ =gPlayerParty -_080DD11A: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080DD134 - lsls r1, r6, 24 - asrs r1, 24 - movs r2, 0x3 - bl PlayCry3 -_080DD134: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DD13A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DD140: .4byte gBattlerPartyIndexes -_080DD144: .4byte gPlayerParty - thumb_func_end sub_80DD06C - - thumb_func_start sub_80DD148 -sub_80DD148: @ 80DD148 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x40 - negs r0, r0 - bl sub_8073A44 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080DD16C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DD174 - ldr r0, _080DD170 @ =gBattleAnimAttacker - ldrb r4, [r0] - b _080DD19A - .align 2, 0 -_080DD16C: .4byte gBattleAnimArgs -_080DD170: .4byte gBattleAnimAttacker -_080DD174: - cmp r0, 0x1 - bne _080DD184 - ldr r0, _080DD180 @ =gBattleAnimTarget - ldrb r4, [r0] - b _080DD19A - .align 2, 0 -_080DD180: .4byte gBattleAnimTarget -_080DD184: - cmp r0, 0x2 - bne _080DD190 - ldr r0, _080DD18C @ =gBattleAnimAttacker - b _080DD192 - .align 2, 0 -_080DD18C: .4byte gBattleAnimAttacker -_080DD190: - ldr r0, _080DD1BC @ =gBattleAnimTarget -_080DD192: - ldrb r1, [r0] - movs r0, 0x2 - adds r4, r0, 0 - eors r4, r1 -_080DD19A: - ldr r0, _080DD1C0 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x1 - beq _080DD1A8 - cmp r0, 0x3 - bne _080DD1C4 -_080DD1A8: - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080DD1C4 - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080DD26A - .align 2, 0 -_080DD1BC: .4byte gBattleAnimTarget -_080DD1C0: .4byte gBattleAnimArgs -_080DD1C4: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DD1E8 - ldr r1, _080DD1E0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080DD1E4 @ =gEnemyParty - b _080DD1F6 - .align 2, 0 -_080DD1E0: .4byte gBattlerPartyIndexes -_080DD1E4: .4byte gEnemyParty -_080DD1E8: - ldr r1, _080DD234 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080DD238 @ =gPlayerParty -_080DD1F6: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, _080DD23C @ =gTasks - lsls r2, r6, 2 - adds r0, r2, r6 - lsls r0, 3 - adds r0, r1 - ldr r4, _080DD240 @ =gBattleAnimArgs - ldrh r1, [r4, 0x2] - strh r1, [r0, 0x8] - strh r3, [r0, 0xA] - lsls r1, r5, 24 - asrs r1, 24 - strh r1, [r0, 0xC] - adds r5, r2, 0 - cmp r3, 0 - beq _080DD264 - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bne _080DD244 - adds r0, r3, 0 - movs r2, 0x9 - bl PlayCry3 - b _080DD24C - .align 2, 0 -_080DD234: .4byte gBattlerPartyIndexes -_080DD238: .4byte gPlayerParty -_080DD23C: .4byte gTasks -_080DD240: .4byte gBattleAnimArgs -_080DD244: - adds r0, r3, 0 - movs r2, 0x7 - bl PlayCry3 -_080DD24C: - ldr r0, _080DD25C @ =gTasks - adds r1, r5, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DD260 @ =sub_80DD270 - str r0, [r1] - b _080DD26A - .align 2, 0 -_080DD25C: .4byte gTasks -_080DD260: .4byte sub_80DD270 -_080DD264: - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080DD26A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DD148 - - thumb_func_start sub_80DD270 -sub_80DD270: @ 80DD270 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - mov r9, r4 - ldr r1, _080DD2A0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r6, [r1, 0xA] - mov r8, r6 - ldrb r5, [r1, 0xC] - adds r7, r5, 0 - ldrh r2, [r1, 0x1A] - movs r3, 0x1A - ldrsh r0, [r1, r3] - cmp r0, 0x1 - bgt _080DD2A4 - adds r0, r2, 0x1 - strh r0, [r1, 0x1A] - b _080DD2E6 - .align 2, 0 -_080DD2A0: .4byte gTasks -_080DD2A4: - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0xFF - bne _080DD2CA - bl IsCryPlaying - lsls r0, 24 - cmp r0, 0 - bne _080DD2E6 - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0xA - bl PlayCry3 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DD2E6 -_080DD2CA: - bl IsCryPlaying - lsls r0, 24 - cmp r0, 0 - bne _080DD2E6 - lsls r1, r7, 24 - asrs r1, 24 - mov r0, r8 - movs r2, 0x8 - bl PlayCry3 - mov r0, r9 - bl DestroyAnimVisualTask -_080DD2E6: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DD270 - - thumb_func_start sub_80DD2F4 -sub_80DD2F4: @ 80DD2F4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _080DD318 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x1A] - movs r3, 0x1A - ldrsh r0, [r1, r3] - cmp r0, 0x1 - bgt _080DD31C - adds r0, r2, 0x1 - strh r0, [r1, 0x1A] - b _080DD32C - .align 2, 0 -_080DD318: .4byte gTasks -_080DD31C: - bl IsCryPlaying - lsls r0, 24 - cmp r0, 0 - bne _080DD32C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080DD32C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DD2F4 - - thumb_func_start sub_80DD334 -sub_80DD334: @ 80DD334 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x40 - negs r0, r0 - bl sub_8073A44 - ldr r2, _080DD374 @ =gUnknown_2037F1C - ldr r1, _080DD378 @ =gBattleAnimAttacker - ldrb r1, [r1] - lsls r1, 1 - adds r1, r2 - ldrh r3, [r1] - ldr r2, _080DD37C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r4, r1, r2 - strh r3, [r4, 0xA] - lsls r0, 24 - asrs r1, r0, 24 - strh r1, [r4, 0xC] - cmp r3, 0 - beq _080DD384 - adds r0, r3, 0 - movs r2, 0x4 - bl PlayCry3 - ldr r0, _080DD380 @ =sub_80DD390 - str r0, [r4] - b _080DD38A - .align 2, 0 -_080DD374: .4byte gUnknown_2037F1C -_080DD378: .4byte gBattleAnimAttacker -_080DD37C: .4byte gTasks -_080DD380: .4byte sub_80DD390 -_080DD384: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DD38A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DD334 - - thumb_func_start sub_80DD390 -sub_80DD390: @ 80DD390 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DD3B4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x1A] - movs r2, 0x1A - ldrsh r0, [r4, r2] - cmp r0, 0x1 - bgt _080DD3B8 - adds r0, r1, 0x1 - strh r0, [r4, 0x1A] - b _080DD3D4 - .align 2, 0 -_080DD3B4: .4byte gTasks -_080DD3B8: - bl IsCryPlaying - lsls r0, 24 - cmp r0, 0 - bne _080DD3D4 - ldrh r0, [r4, 0xA] - movs r1, 0xC - ldrsb r1, [r4, r1] - movs r2, 0x6 - bl PlayCry3 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DD3D4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DD390 - - thumb_func_start sub_80DD3DC -sub_80DD3DC: @ 80DD3DC - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080DD40C @ =gBattleAnimArgs - ldrh r5, [r0] - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl PlaySE1WithPanning - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD40C: .4byte gBattleAnimArgs - thumb_func_end sub_80DD3DC - - thumb_func_start sub_80DD410 -sub_80DD410: @ 80DD410 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080DD440 @ =gBattleAnimArgs - ldrh r5, [r0] - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - bl sub_8073A44 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl PlaySE2WithPanning - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD440: .4byte gBattleAnimArgs - thumb_func_end sub_80DD410 - - thumb_func_start sub_80DD444 -sub_80DD444: @ 80DD444 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _080DD4C8 @ =gBattleAnimArgs - ldrb r5, [r0, 0x2] - ldrb r6, [r0, 0x4] - ldrh r1, [r0, 0x6] - mov r9, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - bl sub_8073A44 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - asrs r5, 24 - adds r0, r5, 0 - bl sub_8073A44 - adds r5, r0, 0 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - lsls r6, 24 - asrs r6, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CalculatePanIncrement - ldr r2, _080DD4CC @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0xE] - mov r0, r9 - strh r0, [r1, 0x12] - strh r2, [r1, 0x1C] - strh r4, [r1, 0x1E] - ldr r2, _080DD4D0 @ =sub_80DD4D4 - str r2, [r1] - mov r0, r8 - bl _call_via_r2 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DD4C8: .4byte gBattleAnimArgs -_080DD4CC: .4byte gTasks -_080DD4D0: .4byte sub_80DD4D4 - thumb_func_end sub_80DD444 - - thumb_func_start sub_80DD4D4 -sub_80DD4D4: @ 80DD4D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DD52C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r2, [r4, 0xE] - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080DD50E - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r0, r2, r1 - strh r0, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - bl sub_8073B60 - strh r0, [r4, 0x1E] -_080DD50E: - ldr r1, _080DD530 @ =gUnknown_2037F24 - ldrh r0, [r4, 0x1E] - strb r0, [r1] - movs r3, 0x1E - ldrsh r1, [r4, r3] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080DD526 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DD526: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DD52C: .4byte gTasks -_080DD530: .4byte gUnknown_2037F24 - thumb_func_end sub_80DD4D4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index c95a1099e..e49ba538c 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -18,10 +18,10 @@ sub_80EEC0C: @ 80EEC0C str r0, [sp, 0x10] ldr r0, _080EEDB4 @ =gBattleAnimAttacker ldrb r4, [r0] - ldr r0, _080EEDB8 @ =gUnknown_2022984 + ldr r0, _080EEDB8 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, _080EEDBC @ =gUnknown_2022986 + ldr r0, _080EEDBC @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080EEDC0 @ =0x00003f3f movs r0, 0x48 @@ -155,13 +155,13 @@ sub_80EEC0C: @ 80EEC0C mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -204,8 +204,8 @@ sub_80EEC0C: @ 80EEC0C bx r0 .align 2, 0 _080EEDB4: .4byte gBattleAnimAttacker -_080EEDB8: .4byte gUnknown_2022984 -_080EEDBC: .4byte gUnknown_2022986 +_080EEDB8: .4byte gBattle_WIN0H +_080EEDBC: .4byte gBattle_WIN0V _080EEDC0: .4byte 0x00003f3f _080EEDC4: .4byte 0x00003f3d _080EEDC8: .4byte 0x00003f42 @@ -336,9 +336,9 @@ _080EEE9C: bne _080EEFA8 movs r0, 0 bl sub_8073128 - ldr r0, _080EEFB4 @ =gUnknown_2022984 + ldr r0, _080EEFB4 @ =gBattle_WIN0H strh r4, [r0] - ldr r0, _080EEFB8 @ =gUnknown_2022986 + ldr r0, _080EEFB8 @ =gBattle_WIN0V strh r4, [r0] ldr r4, _080EEFBC @ =0x00003f3f movs r0, 0x48 @@ -439,8 +439,8 @@ _080EEFA8: pop {r0} bx r0 .align 2, 0 -_080EEFB4: .4byte gUnknown_2022984 -_080EEFB8: .4byte gUnknown_2022986 +_080EEFB4: .4byte gBattle_WIN0H +_080EEFB8: .4byte gBattle_WIN0V _080EEFBC: .4byte 0x00003f3f _080EEFC0: .4byte gSprites _080EEFC4: .4byte gHealthboxSpriteIds @@ -855,7 +855,7 @@ _080EF2E6: movs r3, 0 bl SetSpriteRotScale adds r0, r5, 0 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale movs r0, 0x1C ldrsh r1, [r4, r0] ldr r0, _080EF314 @ =0x000002cf @@ -1585,7 +1585,7 @@ sub_80EF8C0: @ 80EF8C0 ldr r0, _080EF8E8 @ =0x0000ffd8 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080EF8EC @ =sub_80EF8F0 str r0, [r4, 0x1C] pop {r4} @@ -1601,7 +1601,7 @@ sub_80EF8F0: @ 80EF8F0 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080EF99E @@ -2804,7 +2804,7 @@ _080F01F2: ldrsb r0, [r1, r0] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_8075068 + bl InitAnimArcTranslation add r4, r10 ldr r0, _080F0270 @ =sub_80F0278 str r0, [r4] @@ -2849,7 +2849,7 @@ sub_80F0278: @ 80F0278 orrs r0, r1 strb r0, [r3] adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080F02A8 @@ -3204,9 +3204,9 @@ sub_80F052C: @ 80F052C movs r0, 0x20 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation adds r0, r4, 0 - bl sub_80750C8 + bl TranslateAnimVerticalArc ldr r0, _080F0570 @ =sub_80F0574 str r0, [r4, 0x1C] pop {r4} @@ -3220,7 +3220,7 @@ _080F0570: .4byte sub_80F0574 sub_80F0574: @ 80F0574 push {r4,lr} adds r4, r0, 0 - bl sub_80750C8 + bl TranslateAnimVerticalArc lsls r0, 24 cmp r0, 0 bne _080F0590 @@ -5317,7 +5317,7 @@ _080F15F0: _080F15F6: ldr r0, _080F1610 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -5982,7 +5982,7 @@ sub_80F1B3C: @ 80F1B3C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0x1E strh r0, [r4, 0x2E] movs r0, 0x1 @@ -6011,7 +6011,7 @@ sub_80F1B3C: @ 80F1B3C ldr r0, _080F1BB4 @ =0x0000ffe0 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r2, _080F1BB8 @ =gSprites ldr r1, _080F1BBC @ =gBattlerSpriteIds ldr r0, _080F1BC0 @ =gBattleAnimAttacker @@ -6074,7 +6074,7 @@ _080F1C00: .4byte sub_80F1C04 sub_80F1C04: @ 80F1C04 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080F1C26 diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s deleted file mode 100644 index f447bdf45..000000000 --- a/asm/battle_anim_utility_funcs.s +++ /dev/null @@ -1,5133 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80BA7F8 -sub_80BA7F8: @ 80BA7F8 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080BA838 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_80B9A14 - adds r6, r0, 0 - ldrh r3, [r4] - lsls r3, 16 - asrs r0, r3, 23 - movs r4, 0x1 - ands r0, r4 - asrs r1, r3, 24 - ands r1, r4 - asrs r2, r3, 25 - ands r2, r4 - asrs r3, 26 - ands r3, r4 - bl sub_8075CB8 - orrs r6, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80BAA4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BA838: .4byte gBattleAnimArgs - thumb_func_end sub_80BA7F8 - - thumb_func_start sub_80BA83C -sub_80BA83C: @ 80BA83C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x1] - movs r0, 0x1 - bl sub_80B9A14 - adds r5, r0, 0 - ldr r0, _080BA868 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - bhi _080BA8E6 - lsls r0, 2 - ldr r1, _080BA86C @ =_080BA870 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BA868: .4byte gBattleAnimArgs -_080BA86C: .4byte _080BA870 - .align 2, 0 -_080BA870: - .4byte _080BA892 - .4byte _080BA89E - .4byte _080BA890 - .4byte _080BA89C - .4byte _080BA8AC - .4byte _080BA8C4 - .4byte _080BA8CC - .4byte _080BA8D8 -_080BA890: - movs r5, 0 -_080BA892: - mov r0, sp - ldr r1, _080BA898 @ =gBattleAnimAttacker - b _080BA8A2 - .align 2, 0 -_080BA898: .4byte gBattleAnimAttacker -_080BA89C: - movs r5, 0 -_080BA89E: - mov r0, sp - ldr r1, _080BA8A8 @ =gBattleAnimTarget -_080BA8A2: - ldrb r1, [r1] - strb r1, [r0] - b _080BA8E6 - .align 2, 0 -_080BA8A8: .4byte gBattleAnimTarget -_080BA8AC: - mov r1, sp - ldr r0, _080BA8BC @ =gBattleAnimAttacker - ldrb r0, [r0] - strb r0, [r1] - ldr r0, _080BA8C0 @ =gBattleAnimTarget - ldrb r0, [r0] - strb r0, [r1, 0x1] - b _080BA8E6 - .align 2, 0 -_080BA8BC: .4byte gBattleAnimAttacker -_080BA8C0: .4byte gBattleAnimTarget -_080BA8C4: - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - b _080BA8E6 -_080BA8CC: - movs r5, 0 - mov r2, sp - ldr r0, _080BA8D4 @ =gBattleAnimAttacker - b _080BA8DE - .align 2, 0 -_080BA8D4: .4byte gBattleAnimAttacker -_080BA8D8: - movs r5, 0 - mov r2, sp - ldr r0, _080BA930 @ =gBattleAnimTarget -_080BA8DE: - ldrb r0, [r0] - movs r1, 0x2 - eors r0, r1 - strb r0, [r2] -_080BA8E6: - movs r4, 0 - mov r6, sp -_080BA8EA: - ldrb r0, [r6] - cmp r4, r0 - beq _080BA914 - ldrb r0, [r6, 0x1] - cmp r4, r0 - beq _080BA914 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080BA914 - adds r0, r4, 0 - bl sub_8075D80 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r0 - orrs r5, r1 -_080BA914: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080BA8EA - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80BAA4C - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA930: .4byte gBattleAnimTarget - thumb_func_end sub_80BA83C - - thumb_func_start sub_80BA934 -sub_80BA934: @ 80BA934 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BA958 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80B9A14 - adds r2, r0, 0 - ldr r0, _080BA95C @ =gBattleTerrain - ldrb r0, [r0] - cmp r0, 0x9 - bhi _080BAA0A - lsls r0, 2 - ldr r1, _080BA960 @ =_080BA964 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BA958: .4byte gBattleAnimArgs -_080BA95C: .4byte gBattleTerrain -_080BA960: .4byte _080BA964 - .align 2, 0 -_080BA964: - .4byte _080BA98C - .4byte _080BA99C - .4byte _080BA9A8 - .4byte _080BA9B8 - .4byte _080BA9C4 - .4byte _080BA9D4 - .4byte _080BA9E4 - .4byte _080BA9F4 - .4byte _080BAA04 - .4byte _080BAA04 -_080BA98C: - ldr r1, _080BA994 @ =gBattleAnimArgs - ldr r0, _080BA998 @ =0x00000b0c - b _080BAA08 - .align 2, 0 -_080BA994: .4byte gBattleAnimArgs -_080BA998: .4byte 0x00000b0c -_080BA99C: - ldr r1, _080BA9A4 @ =gBattleAnimArgs - movs r0, 0x9E - lsls r0, 4 - b _080BAA08 - .align 2, 0 -_080BA9A4: .4byte gBattleAnimArgs -_080BA9A8: - ldr r1, _080BA9B0 @ =gBattleAnimArgs - ldr r0, _080BA9B4 @ =0x00002f1e - b _080BAA08 - .align 2, 0 -_080BA9B0: .4byte gBattleAnimArgs -_080BA9B4: .4byte 0x00002f1e -_080BA9B8: - ldr r1, _080BA9C0 @ =gBattleAnimArgs - movs r0, 0x90 - lsls r0, 7 - b _080BAA08 - .align 2, 0 -_080BA9C0: .4byte gBattleAnimArgs -_080BA9C4: - ldr r1, _080BA9CC @ =gBattleAnimArgs - ldr r0, _080BA9D0 @ =0x00007ecb - b _080BAA08 - .align 2, 0 -_080BA9CC: .4byte gBattleAnimArgs -_080BA9D0: .4byte 0x00007ecb -_080BA9D4: - ldr r1, _080BA9DC @ =gBattleAnimArgs - ldr r0, _080BA9E0 @ =0x00007ecb - b _080BAA08 - .align 2, 0 -_080BA9DC: .4byte gBattleAnimArgs -_080BA9E0: .4byte 0x00007ecb -_080BA9E4: - ldr r1, _080BA9EC @ =gBattleAnimArgs - ldr r0, _080BA9F0 @ =0x00002a16 - b _080BAA08 - .align 2, 0 -_080BA9EC: .4byte gBattleAnimArgs -_080BA9F0: .4byte 0x00002a16 -_080BA9F4: - ldr r1, _080BA9FC @ =gBattleAnimArgs - ldr r0, _080BAA00 @ =0x00000d2e - b _080BAA08 - .align 2, 0 -_080BA9FC: .4byte gBattleAnimArgs -_080BAA00: .4byte 0x00000d2e -_080BAA04: - ldr r1, _080BAA18 @ =gBattleAnimArgs - ldr r0, _080BAA1C @ =0x00007fff -_080BAA08: - strh r0, [r1, 0x8] -_080BAA0A: - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80BAA4C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BAA18: .4byte gBattleAnimArgs -_080BAA1C: .4byte 0x00007fff - thumb_func_end sub_80BA934 - - thumb_func_start sub_80BAA20 -sub_80BAA20: @ 80BAA20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080BAA48 @ =gBattleAnimArgs - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - adds r0, r4, 0 - bl sub_80BAA4C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BAA48: .4byte gBattleAnimArgs - thumb_func_end sub_80BAA20 - - thumb_func_start sub_80BAA4C -sub_80BAA4C: @ 80BAA4C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080BAA84 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - strh r1, [r2, 0x8] - lsrs r1, 16 - strh r1, [r2, 0xA] - ldr r3, _080BAA88 @ =gBattleAnimArgs - ldrh r1, [r3, 0x2] - strh r1, [r2, 0xC] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0xE] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0x10] - ldrh r1, [r3, 0x8] - strh r1, [r2, 0x12] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0x1C] - ldr r1, _080BAA8C @ =sub_80BAA90 - str r1, [r2] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080BAA84: .4byte gTasks -_080BAA88: .4byte gBattleAnimArgs -_080BAA8C: .4byte sub_80BAA90 - thumb_func_end sub_80BAA4C - - thumb_func_start sub_80BAA90 -sub_80BAA90: @ 80BAA90 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - ldr r2, _080BAB10 @ =gTasks - lsls r5, r7, 2 - adds r0, r5, r7 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1A] - mov r8, r0 - movs r4, 0x1A - ldrsh r1, [r3, r4] - movs r4, 0xC - ldrsh r0, [r3, r4] - mov r9, r2 - cmp r1, r0 - bne _080BAB26 - strh r6, [r3, 0x1A] - movs r0, 0x8 - ldrsh r4, [r3, r0] - movs r1, 0xA - ldrsh r0, [r3, r1] - lsls r0, 16 - orrs r4, r0 - mov r8, r5 - cmp r4, 0 - beq _080BAAF2 - adds r5, r3, 0 -_080BAAD0: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080BAAE4 - ldrb r2, [r5, 0x1C] - ldrh r3, [r5, 0x12] - adds r0, r6, 0 - movs r1, 0x10 - bl BlendPalette -_080BAAE4: - adds r0, r6, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - lsrs r4, 1 - cmp r4, 0 - bne _080BAAD0 -_080BAAF2: - mov r4, r8 - adds r0, r4, r7 - lsls r0, 3 - mov r1, r9 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - movs r4, 0x1C - ldrsh r3, [r2, r4] - movs r4, 0x10 - ldrsh r1, [r2, r4] - cmp r3, r1 - bge _080BAB14 - adds r0, 0x1 - strh r0, [r2, 0x1C] - b _080BAB2C - .align 2, 0 -_080BAB10: .4byte gTasks -_080BAB14: - cmp r3, r1 - ble _080BAB1E - subs r0, 0x1 - strh r0, [r2, 0x1C] - b _080BAB2C -_080BAB1E: - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080BAB2C -_080BAB26: - mov r0, r8 - adds r0, 0x1 - strh r0, [r3, 0x1A] -_080BAB2C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BAA90 - - thumb_func_start sub_80BAB38 -sub_80BAB38: @ 80BAB38 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080BAB6C @ =gBattleAnimArgs - ldrb r0, [r4] - ldrb r1, [r4, 0x2] - ldrb r2, [r4, 0x4] - ldrb r3, [r4, 0x6] - ldrb r4, [r4, 0x8] - str r4, [sp] - bl BeginHardwarePaletteFade - ldr r1, _080BAB70 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BAB74 @ =sub_80BAB78 - str r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BAB6C: .4byte gBattleAnimArgs -_080BAB70: .4byte gTasks -_080BAB74: .4byte sub_80BAB78 - thumb_func_end sub_80BAB38 - - thumb_func_start sub_80BAB78 -sub_80BAB78: @ 80BAB78 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080BAB94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BAB90 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080BAB90: - pop {r0} - bx r0 - .align 2, 0 -_080BAB94: .4byte gPaletteFade - thumb_func_end sub_80BAB78 - - thumb_func_start sub_80BAB98 -sub_80BAB98: @ 80BAB98 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080BABC4 @ =gTasks - adds r1, r0 - ldr r2, _080BABC8 @ =gBattleAnimArgs - ldrh r0, [r2] - movs r3, 0 - strh r0, [r1, 0x8] - strh r3, [r1, 0xA] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0xC] - ldrh r0, [r2, 0x4] - strh r0, [r1, 0xE] - ldrh r0, [r2, 0x6] - strh r0, [r1, 0x10] - strh r3, [r1, 0x12] - ldr r0, _080BABCC @ =sub_80BABD0 - str r0, [r1] - bx lr - .align 2, 0 -_080BABC4: .4byte gTasks -_080BABC8: .4byte gBattleAnimArgs -_080BABCC: .4byte sub_80BABD0 - thumb_func_end sub_80BAB98 - - thumb_func_start sub_80BABD0 -sub_80BABD0: @ 80BABD0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080BABFC @ =gTasks - adds r4, r0, r1 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080BAC94 - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080BAC00 - subs r0, r1, 0x1 - strh r0, [r4, 0xA] - b _080BACA2 - .align 2, 0 -_080BABFC: .4byte gTasks -_080BAC00: - ldrb r0, [r4, 0x8] - bl duplicate_obj_of_side_rel2move_in_transparent_mode - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - blt _080BAC7E - ldr r6, _080BAC8C @ =gSprites - movs r1, 0x14 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r3, r1, r6 - movs r2, 0x8 - ldrsh r0, [r4, r2] - movs r2, 0x2 - cmp r0, 0 - beq _080BAC28 - movs r2, 0x1 -_080BAC28: - lsls r2, 2 - ldrb r1, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x5] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0xE] - strh r1, [r0, 0x2E] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r5, [r0, 0x30] - movs r0, 0x14 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5 - strh r1, [r0, 0x32] - movs r2, 0x14 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080BAC90 @ =sub_80BACA8 - str r1, [r0] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] -_080BAC7E: - ldrh r0, [r4, 0x10] - subs r0, 0x1 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xA] - b _080BACA2 - .align 2, 0 -_080BAC8C: .4byte gSprites -_080BAC90: .4byte sub_80BACA8 -_080BAC94: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BACA2 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080BACA2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BABD0 - - thumb_func_start sub_80BACA8 -sub_80BACA8: @ 80BACA8 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080BACBC - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080BACE0 -_080BACBC: - ldr r3, _080BACE8 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_080BACE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BACE8: .4byte gTasks - thumb_func_end sub_80BACA8 - - thumb_func_start sub_80BACEC -sub_80BACEC: @ 80BACEC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r7, 0 - ldr r0, _080BAE20 @ =gUnknown_2022984 - strh r7, [r0] - ldr r0, _080BAE24 @ =gUnknown_2022986 - strh r7, [r0] - ldr r1, _080BAE28 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080BAE2C @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080BAE30 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080BAE34 @ =0x00000c08 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0xA - bl GetGpuReg - add r4, sp, 0x10 - strh r0, [r4] - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - mov r8, r0 - ands r0, r1 - strb r0, [r4] - mov r2, sp - adds r2, 0x11 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - ldrh r1, [r4] - movs r0, 0xA - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BAD7A - ldrb r1, [r4] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldrh r1, [r4] - movs r0, 0xA - bl SetGpuReg -_080BAD7A: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080BADFE - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BADFE - ldr r5, _080BAE38 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080BADAA - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080BADFE -_080BADAA: - ldrb r0, [r5] - movs r6, 0x2 - eors r0, r6 - bl IsBattlerSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BADFE - ldr r3, _080BAE3C @ =gSprites - ldr r1, _080BAE40 @ =gBattlerSpriteIds - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r4] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] - ldrh r1, [r4] - movs r0, 0xA - bl SetGpuReg - movs r7, 0x1 -_080BADFE: - ldr r4, _080BAE38 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080BAE4C - ldr r1, _080BAE44 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BAE48 @ =gEnemyParty - b _080BAE5C - .align 2, 0 -_080BAE20: .4byte gUnknown_2022984 -_080BAE24: .4byte gUnknown_2022986 -_080BAE28: .4byte 0x00003f3f -_080BAE2C: .4byte 0x00003f3d -_080BAE30: .4byte 0x00003f42 -_080BAE34: .4byte 0x00000c08 -_080BAE38: .4byte gBattleAnimAttacker -_080BAE3C: .4byte gSprites -_080BAE40: .4byte gBattlerSpriteIds -_080BAE44: .4byte gBattlerPartyIndexes -_080BAE48: .4byte gEnemyParty -_080BAE4C: - ldr r1, _080BAF0C @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BAF10 @ =gPlayerParty -_080BAE5C: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _080BAF14 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8076E34 - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap - bl sub_807543C - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080BAEAC - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080BAEAC: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080BAF20 @ =gUnknown_83E7CC8 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - adds r1, 0x1 - movs r2, 0x2 - bl LoadPalette - ldr r2, _080BAF24 @ =gBattle_BG1_X - ldr r0, _080BAF28 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r2, _080BAF2C @ =gBattle_BG1_Y - ldrh r0, [r1, 0x22] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldr r1, _080BAF30 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - strh r7, [r0, 0x14] - ldr r1, _080BAF34 @ =sub_80BAF38 - str r1, [r0] - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BAF0C: .4byte gBattlerPartyIndexes -_080BAF10: .4byte gPlayerParty -_080BAF14: .4byte gBattleAnimAttacker -_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap -_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet -_080BAF20: .4byte gUnknown_83E7CC8 -_080BAF24: .4byte gBattle_BG1_X -_080BAF28: .4byte gSprites -_080BAF2C: .4byte gBattle_BG1_Y -_080BAF30: .4byte gTasks -_080BAF34: .4byte sub_80BAF38 - thumb_func_end sub_80BACEC - - thumb_func_start sub_80BAF38 -sub_80BAF38: @ 80BAF38 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080BB068 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x1C] - adds r0, 0x4 - movs r1, 0 - mov r8, r1 - strh r0, [r5, 0x1C] - ldr r7, _080BB06C @ =gBattle_BG1_Y - ldrh r2, [r7] - subs r1, r2, 0x4 - strh r1, [r7] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080BB05A - mov r0, r8 - strh r0, [r5, 0x1C] - adds r0, r2, 0 - adds r0, 0x3C - strh r0, [r7] - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080BB05A - movs r0, 0 - bl sub_8073128 - ldr r0, _080BB070 @ =gUnknown_2022984 - mov r1, r8 - strh r1, [r0] - ldr r0, _080BB074 @ =gUnknown_2022986 - strh r1, [r0] - ldr r4, _080BB078 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BAFCA - movs r0, 0xA - bl GetGpuReg - add r1, sp, 0x10 - strh r0, [r1] - ldrb r2, [r1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrh r1, [r1] - movs r0, 0xA - bl SetGpuReg -_080BAFCA: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl GetAnimBankSpriteId - ldr r4, _080BB07C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080BB050 - ldr r2, _080BB080 @ =gBattlerSpriteIds - ldr r0, _080BB084 @ =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080BB050: - mov r2, r8 - strh r2, [r7] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080BB05A: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BB068: .4byte gTasks -_080BB06C: .4byte gBattle_BG1_Y -_080BB070: .4byte gUnknown_2022984 -_080BB074: .4byte gUnknown_2022986 -_080BB078: .4byte 0x00003f3f -_080BB07C: .4byte gSprites -_080BB080: .4byte gBattlerSpriteIds -_080BB084: .4byte gBattleAnimAttacker - thumb_func_end sub_80BAF38 - - thumb_func_start sub_80BB088 -sub_80BB088: @ 80BB088 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080BB0C8 @ =gUnknown_20399B4 - movs r0, 0x18 - bl AllocZeroed - str r0, [r4] - movs r2, 0 - ldr r3, _080BB0CC @ =gBattleAnimArgs -_080BB09C: - ldr r1, [r4] - lsls r0, r2, 1 - adds r1, 0x4 - adds r1, r0 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080BB09C - ldr r0, _080BB0D0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BB0D4 @ =sub_80BB0D8 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BB0C8: .4byte gUnknown_20399B4 -_080BB0CC: .4byte gBattleAnimArgs -_080BB0D0: .4byte gTasks -_080BB0D4: .4byte sub_80BB0D8 - thumb_func_end sub_80BB088 - - thumb_func_start sub_80BB0D8 -sub_80BB0D8: @ 80BB0D8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080BB0F0 @ =gUnknown_20399B4 - ldr r1, [r0] - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080BB0F8 - ldr r0, _080BB0F4 @ =gBattleAnimAttacker - b _080BB0FA - .align 2, 0 -_080BB0F0: .4byte gUnknown_20399B4 -_080BB0F4: .4byte gBattleAnimAttacker -_080BB0F8: - ldr r0, _080BB230 @ =gBattleAnimTarget -_080BB0FA: - ldrb r0, [r0] - strb r0, [r1] - ldr r4, _080BB234 @ =gUnknown_20399B4 - ldr r2, [r4] - ldrb r0, [r2] - movs r1, 0x2 - eors r0, r1 - strb r0, [r2, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BB12A - ldr r1, [r4] - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080BB130 - ldrb r0, [r1, 0x1] - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080BB130 -_080BB12A: - ldr r1, [r4] - movs r0, 0 - strh r0, [r1, 0xA] -_080BB130: - ldr r0, _080BB238 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080BB23C @ =gUnknown_2022986 - strh r1, [r0] - ldr r1, _080BB240 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080BB244 @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080BB248 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BB18E - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080BB18E: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080BB20A - ldr r4, _080BB234 @ =gUnknown_20399B4 - ldr r1, [r4] - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080BB20A - ldrb r0, [r1] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080BB1C0 - ldr r0, [r4] - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080BB20A -_080BB1C0: - ldr r0, [r4] - ldrb r0, [r0, 0x1] - bl IsBattlerSpriteVisible - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bne _080BB20A - ldr r3, _080BB24C @ =gSprites - ldr r1, _080BB250 @ =gBattlerSpriteIds - ldr r0, [r4] - ldrb r0, [r0, 0x1] - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, [r4] - strb r5, [r0, 0x2] -_080BB20A: - ldr r4, _080BB234 @ =gUnknown_20399B4 - ldr r0, [r4] - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080BB25C - ldr r1, _080BB254 @ =gBattlerPartyIndexes - ldr r0, [r4] - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BB258 @ =gEnemyParty - b _080BB26E - .align 2, 0 -_080BB230: .4byte gBattleAnimTarget -_080BB234: .4byte gUnknown_20399B4 -_080BB238: .4byte gUnknown_2022984 -_080BB23C: .4byte gUnknown_2022986 -_080BB240: .4byte 0x00003f3f -_080BB244: .4byte 0x00003f3d -_080BB248: .4byte 0x00003f42 -_080BB24C: .4byte gSprites -_080BB250: .4byte gBattlerSpriteIds -_080BB254: .4byte gBattlerPartyIndexes -_080BB258: .4byte gEnemyParty -_080BB25C: - ldr r1, _080BB290 @ =gBattlerPartyIndexes - ldr r0, [r4] - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BB294 @ =gPlayerParty -_080BB26E: - adds r0, r1 - movs r1, 0xB - bl GetMonData - ldr r1, [r4] - strh r0, [r1, 0x14] - ldr r0, _080BB298 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BB29C @ =sub_80BB2A0 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB290: .4byte gBattlerPartyIndexes -_080BB294: .4byte gPlayerParty -_080BB298: .4byte gTasks -_080BB29C: .4byte sub_80BB2A0 - thumb_func_end sub_80BB0D8 - - thumb_func_start sub_80BB2A0 -sub_80BB2A0: @ 80BB2A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r6, _080BB300 @ =gBattlerSpriteIds - ldr r4, _080BB304 @ =gUnknown_20399B4 - ldr r2, [r4] - ldrb r0, [r2] - adds r1, r0, r6 - ldrb r1, [r1] - ldrh r2, [r2, 0x14] - bl sub_8076E34 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, [r4] - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _080BB2E2 - ldrb r0, [r2, 0x1] - adds r1, r0, r6 - ldrb r1, [r1] - ldrh r2, [r2, 0x14] - bl sub_8076E34 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_080BB2E2: - mov r0, sp - bl sub_80752A0 - ldr r0, [r4] - movs r4, 0x4 - ldrsh r0, [r0, r4] - cmp r0, 0 - bne _080BB30C - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap - bl sub_807543C - b _080BB316 - .align 2, 0 -_080BB300: .4byte gBattlerSpriteIds -_080BB304: .4byte gUnknown_20399B4 -_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap -_080BB30C: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap - bl sub_807543C -_080BB316: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080BB32E - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080BB32E: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080BB35C @ =gUnknown_20399B4 - ldr r0, [r0] - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0x6 - bhi _080BB3C4 - lsls r0, 2 - ldr r1, _080BB360 @ =_080BB364 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap -_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet -_080BB35C: .4byte gUnknown_20399B4 -_080BB360: .4byte _080BB364 - .align 2, 0 -_080BB364: - .4byte _080BB380 - .4byte _080BB388 - .4byte _080BB390 - .4byte _080BB398 - .4byte _080BB3A0 - .4byte _080BB3A8 - .4byte _080BB3B0 -_080BB380: - ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette - b _080BB3B2 - .align 2, 0 -_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette -_080BB388: - ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette - b _080BB3B2 - .align 2, 0 -_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette -_080BB390: - ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette - b _080BB3B2 - .align 2, 0 -_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette -_080BB398: - ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette - b _080BB3B2 - .align 2, 0 -_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette -_080BB3A0: - ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette - b _080BB3B2 - .align 2, 0 -_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette -_080BB3A8: - ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette - b _080BB3B2 - .align 2, 0 -_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette -_080BB3B0: - ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette -_080BB3B2: - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - b _080BB3D2 - .align 2, 0 -_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette -_080BB3C4: - ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette -_080BB3D2: - ldr r3, _080BB400 @ =gBattle_BG1_X - movs r2, 0 - strh r2, [r3] - ldr r0, _080BB404 @ =gBattle_BG1_Y - strh r2, [r0] - ldr r1, _080BB408 @ =gUnknown_20399B4 - ldr r0, [r1] - movs r4, 0x4 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0x1 - bne _080BB414 - movs r0, 0x40 - strh r0, [r3] - ldr r2, _080BB40C @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - ldr r1, _080BB410 @ =0x0000fffd - b _080BB420 - .align 2, 0 -_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette -_080BB400: .4byte gBattle_BG1_X -_080BB404: .4byte gBattle_BG1_Y -_080BB408: .4byte gUnknown_20399B4 -_080BB40C: .4byte gTasks -_080BB410: .4byte 0x0000fffd -_080BB414: - ldr r2, _080BB43C @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x3 -_080BB420: - strh r1, [r0, 0xA] - ldr r0, [r4] - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BB440 - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0xA - strh r1, [r0, 0x10] - movs r1, 0x14 - b _080BB44C - .align 2, 0 -_080BB43C: .4byte gTasks -_080BB440: - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0xD - strh r1, [r0, 0x10] - movs r1, 0x1E -_080BB44C: - strh r1, [r0, 0x12] - adds r1, r3, r5 - lsls r1, 3 - adds r1, r2 - strh r7, [r1, 0x8] - ldr r3, [r4] - ldrh r0, [r3, 0xA] - strh r0, [r1, 0xC] - mov r4, r8 - strh r4, [r1, 0xE] - ldrb r0, [r3, 0x2] - strh r0, [r1, 0x14] - ldr r2, _080BB490 @ =gBattlerSpriteIds - ldrb r0, [r3, 0x1] - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1, 0x16] - ldr r0, _080BB494 @ =sub_80BB4B8 - str r0, [r1] - movs r1, 0x4 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080BB498 - movs r0, 0x40 - negs r0, r0 - bl sub_8073B08 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xE8 - bl PlaySE12WithPanning - b _080BB4AC - .align 2, 0 -_080BB490: .4byte gBattlerSpriteIds -_080BB494: .4byte sub_80BB4B8 -_080BB498: - movs r0, 0x40 - negs r0, r0 - bl sub_8073B08 - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xEE - bl PlaySE12WithPanning -_080BB4AC: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB2A0 - - thumb_func_start sub_80BB4B8 -sub_80BB4B8: @ 80BB4B8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080BB4E4 @ =gBattle_BG1_Y - ldr r1, _080BB4E8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - movs r0, 0x26 - ldrsh r2, [r5, r0] - cmp r2, 0x1 - beq _080BB52E - cmp r2, 0x1 - bgt _080BB4EC - cmp r2, 0 - beq _080BB4F6 - b _080BB644 - .align 2, 0 -_080BB4E4: .4byte gBattle_BG1_Y -_080BB4E8: .4byte gTasks -_080BB4EC: - cmp r2, 0x2 - beq _080BB544 - cmp r2, 0x3 - beq _080BB582 - b _080BB644 -_080BB4F6: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - cmp r0, 0 - bgt _080BB504 - b _080BB644 -_080BB504: - strh r2, [r5, 0x1E] - ldrh r1, [r5, 0x20] - adds r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r1, r0 - beq _080BB52C - b _080BB644 -_080BB52C: - b _080BB57A -_080BB52E: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r5, r2] - cmp r0, r1 - beq _080BB542 - b _080BB644 -_080BB542: - b _080BB57A -_080BB544: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - cmp r0, 0 - ble _080BB644 - movs r0, 0 - strh r0, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080BB644 - movs r0, 0 - bl sub_8073128 -_080BB57A: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] - b _080BB644 -_080BB582: - ldr r0, _080BB64C @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080BB650 @ =gUnknown_2022986 - strh r1, [r0] - ldr r4, _080BB654 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BB5B2 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080BB5B2: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080BB658 @ =gSprites - adds r0, r4 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080BB606 - movs r2, 0xE - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite -_080BB606: - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080BB632 - movs r2, 0x16 - ldrsh r0, [r5, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] -_080BB632: - ldr r4, _080BB65C @ =gUnknown_20399B4 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080BB644: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB64C: .4byte gUnknown_2022984 -_080BB650: .4byte gUnknown_2022986 -_080BB654: .4byte 0x00003f3f -_080BB658: .4byte gSprites -_080BB65C: .4byte gUnknown_20399B4 - thumb_func_end sub_80BB4B8 - - thumb_func_start sub_80BB660 -sub_80BB660: @ 80BB660 - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8075CB8 - adds r6, r0, 0 - movs r1, 0 - bl sub_80BB790 - ldr r0, _080BB6C0 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - lsrs r0, r6, 16 - movs r5, 0 - strh r0, [r4, 0x24] - str r5, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r6, r0, 0 - ldr r1, _080BB6C4 @ =0x0000ffff - ands r6, r1 - adds r0, r6, 0 - bl sub_80BB790 - strh r6, [r4, 0x26] - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r0, _080BB6C8 @ =sub_80BB6CC - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB6C0: .4byte gTasks -_080BB6C4: .4byte 0x0000ffff -_080BB6C8: .4byte sub_80BB6CC - thumb_func_end sub_80BB660 - - thumb_func_start sub_80BB6CC -sub_80BB6CC: @ 80BB6CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080BB6F0 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080BB710 - cmp r1, 0x1 - bgt _080BB6F4 - cmp r1, 0 - beq _080BB6FA - b _080BB78A - .align 2, 0 -_080BB6F0: .4byte gTasks -_080BB6F4: - cmp r1, 0x2 - beq _080BB784 - b _080BB78A -_080BB6FA: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080BB78A - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - b _080BB778 -_080BB710: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080BB78A - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - movs r5, 0 - movs r6, 0x1 -_080BB72C: - movs r1, 0x26 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080BB746 - lsls r0, r5, 20 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - ldr r3, _080BB780 @ =0x0000ffff - bl BlendPalette -_080BB746: - movs r1, 0x24 - ldrsh r0, [r4, r1] - asrs r0, r5 - ands r0, r6 - cmp r0, 0 - beq _080BB766 - lsls r0, r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldrb r2, [r4, 0xC] - movs r1, 0x10 - movs r3, 0 - bl BlendPalette -_080BB766: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _080BB72C - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BB78A -_080BB778: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080BB78A - .align 2, 0 -_080BB780: .4byte 0x0000ffff -_080BB784: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080BB78A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BB6CC - - thumb_func_start sub_80BB790 -sub_80BB790: @ 80BB790 - push {r4-r6,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - movs r2, 0 -_080BB79A: - movs r0, 0x1 - ands r0, r3 - lsrs r4, r3, 1 - adds r5, r2, 0x1 - cmp r0, 0 - beq _080BB7C6 - lsls r0, r2, 20 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x10 - cmp r2, r0 - bge _080BB7C6 - ldr r1, _080BB7D8 @ =gPlttBufferFaded - adds r3, r0, 0 -_080BB7B6: - lsls r0, r2, 1 - adds r0, r1 - strh r6, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r3 - blt _080BB7B6 -_080BB7C6: - adds r3, r4, 0 - lsls r0, r5, 16 - lsrs r2, r0, 16 - cmp r2, 0x1F - bls _080BB79A - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB7D8: .4byte gPlttBufferFaded - thumb_func_end sub_80BB790 - - thumb_func_start sub_80BB7DC -sub_80BB7DC: @ 80BB7DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - movs r2, 0 - ldr r0, _080BB824 @ =gBattleAnimAttacker - ldrb r3, [r0] - movs r5, 0x1 -_080BB7EC: - cmp r3, r2 - beq _080BB7FA - adds r1, r2, 0 - adds r1, 0x10 - adds r0, r5, 0 - lsls r0, r1 - orrs r4, r0 -_080BB7FA: - adds r2, 0x1 - cmp r2, 0x3 - bls _080BB7EC - movs r2, 0x5 - ldr r0, _080BB828 @ =gBattleAnimArgs - adds r1, r0, 0 - adds r1, 0x8 -_080BB808: - ldrh r0, [r1] - strh r0, [r1, 0x2] - subs r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080BB808 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80BAA4C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB824: .4byte gBattleAnimAttacker -_080BB828: .4byte gBattleAnimArgs - thumb_func_end sub_80BB7DC - - thumb_func_start sub_80BB82C -sub_80BB82C: @ 80BB82C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl sub_8075458 - ldr r0, _080BB894 @ =sub_80BB8A4 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080BB898 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080BB868 - ldr r0, _080BB89C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080BB868 - ldrh r0, [r4] - negs r0, r0 - strh r0, [r4] - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] -_080BB868: - ldr r0, _080BB8A0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r2, _080BB898 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0xA] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0xC] - ldrh r0, [r2, 0x6] - strh r0, [r1, 0xE] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB894: .4byte sub_80BB8A4 -_080BB898: .4byte gBattleAnimArgs -_080BB89C: .4byte gBattleAnimAttacker -_080BB8A0: .4byte gTasks - thumb_func_end sub_80BB82C - - thumb_func_start sub_80BB8A4 -sub_80BB8A4: @ 80BB8A4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080BB910 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r3, [r1, 0xA] - ldrh r0, [r1, 0x1C] - adds r3, r0 - movs r4, 0 - mov r12, r4 - strh r3, [r1, 0x1C] - ldrh r2, [r1, 0xC] - ldrh r7, [r1, 0x1E] - adds r2, r7 - strh r2, [r1, 0x1E] - ldr r6, _080BB914 @ =gBattle_BG3_X - lsls r0, r3, 16 - asrs r0, 24 - ldrh r4, [r6] - adds r0, r4 - strh r0, [r6] - ldr r4, _080BB918 @ =gBattle_BG3_Y - lsls r0, r2, 16 - asrs r0, 24 - ldrh r7, [r4] - adds r0, r7 - strh r0, [r4] - movs r0, 0xFF - ands r3, r0 - strh r3, [r1, 0x1C] - ands r2, r0 - strh r2, [r1, 0x1E] - ldr r0, _080BB91C @ =gBattleAnimArgs - movs r3, 0xE - ldrsh r2, [r0, r3] - movs r7, 0xE - ldrsh r0, [r1, r7] - cmp r2, r0 - bne _080BB90A - mov r0, r12 - strh r0, [r6] - strh r0, [r4] - movs r0, 0x1 - bl sub_8075458 - adds r0, r5, 0 - bl DestroyTask -_080BB90A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BB910: .4byte gTasks -_080BB914: .4byte gBattle_BG3_X -_080BB918: .4byte gBattle_BG3_Y -_080BB91C: .4byte gBattleAnimArgs - thumb_func_end sub_80BB8A4 - - thumb_func_start sub_80BB920 -sub_80BB920: @ 80BB920 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080BB944 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - ldr r1, _080BB948 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB944: .4byte gBattleAnimAttacker -_080BB948: .4byte gBattleAnimArgs - thumb_func_end sub_80BB920 - - thumb_func_start sub_80BB94C -sub_80BB94C: @ 80BB94C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080BB970 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - ldr r1, _080BB974 @ =gBattleAnimArgs - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB970: .4byte gBattleAnimTarget -_080BB974: .4byte gBattleAnimArgs - thumb_func_end sub_80BB94C - - thumb_func_start sub_80BB978 -sub_80BB978: @ 80BB978 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r5, _080BB9A4 @ =gBattleAnimArgs - movs r4, 0 - ldr r0, _080BB9A8 @ =gBattleAnimAttacker - ldrb r2, [r0] - movs r0, 0x2 - ldr r1, _080BB9AC @ =gBattleAnimTarget - eors r0, r2 - ldrb r1, [r1] - cmp r0, r1 - bne _080BB994 - movs r4, 0x1 -_080BB994: - strh r4, [r5, 0xE] - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BB9A4: .4byte gBattleAnimArgs -_080BB9A8: .4byte gBattleAnimAttacker -_080BB9AC: .4byte gBattleAnimTarget - thumb_func_end sub_80BB978 - - thumb_func_start sub_80BB9B0 -sub_80BB9B0: @ 80BB9B0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r6, _080BBA10 @ =gSprites -_080BB9BA: - ldr r0, _080BBA14 @ =gBattleAnimAttacker - ldrb r0, [r0] - cmp r4, r0 - beq _080BB9F8 - lsls r0, r4, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080BB9F8 - ldr r0, _080BBA18 @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldr r1, _080BBA1C @ =gBattleAnimArgs - adds r2, 0x3E - movs r0, 0x1 - ldrb r3, [r1] - ands r3, r0 - lsls r3, 2 - ldrb r0, [r2] - movs r7, 0x5 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_080BB9F8: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080BB9BA - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBA10: .4byte gSprites -_080BBA14: .4byte gBattleAnimAttacker -_080BBA18: .4byte gBattlerSpriteIds -_080BBA1C: .4byte gBattleAnimArgs - thumb_func_end sub_80BB9B0 - - thumb_func_start sub_80BBA20 -sub_80BBA20: @ 80BBA20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r1, [sp, 0x44] - ldr r4, [sp, 0x48] - ldr r5, [sp, 0x4C] - ldr r6, [sp, 0x50] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x14] - lsls r3, 24 - lsrs r7, r3, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x18] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x1C] - lsls r6, 24 - lsrs r6, 24 - mov r10, r6 - movs r0, 0 - str r0, [sp, 0x20] - movs r0, 0x2 - adds r6, r7, 0 - eors r6, r0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BBA82 - mov r1, r8 - cmp r1, 0 - beq _080BBA86 - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080BBA86 -_080BBA82: - movs r2, 0 - mov r8, r2 -_080BBA86: - ldr r0, _080BBB20 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080BBB24 @ =gUnknown_2022986 - strh r1, [r0] - ldr r1, _080BBB28 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080BBB2C @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080BBB30 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0xA - bl GetGpuReg - add r4, sp, 0x10 - strh r0, [r4] - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - mov r2, sp - adds r2, 0x11 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2] - ldrb r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BBAFC - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080BBAFC: - ldrh r1, [r4] - movs r0, 0xA - bl SetGpuReg - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080BBB3C - ldr r1, _080BBB34 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BBB38 @ =gEnemyParty - b _080BBB4A - .align 2, 0 -_080BBB20: .4byte gUnknown_2022984 -_080BBB24: .4byte gUnknown_2022986 -_080BBB28: .4byte 0x00003f3f -_080BBB2C: .4byte 0x00003f3d -_080BBB30: .4byte 0x00003f42 -_080BBB34: .4byte gBattlerPartyIndexes -_080BBB38: .4byte gEnemyParty -_080BBB3C: - ldr r1, _080BBC10 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BBC14 @ =gPlayerParty -_080BBB4A: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r5, _080BBC18 @ =gBattlerSpriteIds - adds r0, r7, r5 - ldrb r1, [r0] - adds r0, r7, 0 - adds r2, r4, 0 - bl sub_8076E34 - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r8 - cmp r0, 0 - beq _080BBB80 - adds r0, r6, r5 - ldrb r1, [r0] - adds r0, r6, 0 - adds r2, r4, 0 - bl sub_8076E34 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x20] -_080BBB80: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, [sp, 0x58] - bl sub_807543C - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080BBBA8 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080BBBA8: - mov r0, sp - ldrb r0, [r0, 0x9] - mov r1, sp - ldrh r2, [r1, 0xA] - ldr r1, [sp, 0x54] - bl sub_80753B4 - mov r0, sp - ldrb r1, [r0, 0x8] - lsls r1, 4 - ldr r0, [sp, 0x5C] - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080BBC1C @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080BBC20 @ =gBattle_BG1_Y - strh r1, [r0] - ldr r1, _080BBC24 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r1, sp - ldrh r1, [r1, 0x14] - strh r1, [r0, 0xA] - mov r2, sp - ldrh r2, [r2, 0x18] - strh r2, [r0, 0x10] - mov r1, r10 - strh r1, [r0, 0x12] - mov r2, sp - ldrh r2, [r2, 0x1C] - strh r2, [r0, 0x14] - strh r7, [r0, 0x8] - mov r1, r8 - strh r1, [r0, 0xC] - mov r2, sp - ldrh r2, [r2, 0x20] - strh r2, [r0, 0xE] - ldr r1, _080BBC28 @ =sub_80BBC2C - str r1, [r0] - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBC10: .4byte gBattlerPartyIndexes -_080BBC14: .4byte gPlayerParty -_080BBC18: .4byte gBattlerSpriteIds -_080BBC1C: .4byte gBattle_BG1_X -_080BBC20: .4byte gBattle_BG1_Y -_080BBC24: .4byte gTasks -_080BBC28: .4byte sub_80BBC2C - thumb_func_end sub_80BBA20 - - thumb_func_start sub_80BBC2C -sub_80BBC2C: @ 80BBC2C - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080BBC68 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r1 - movs r0, 0xA - ldrsh r2, [r3, r0] - adds r5, r1, 0 - cmp r2, 0 - bge _080BBC4A - negs r2, r2 -_080BBC4A: - ldrh r0, [r3, 0x22] - adds r4, r0, r2 - strh r4, [r3, 0x22] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0 - bge _080BBC70 - ldr r2, _080BBC6C @ =gBattle_BG1_Y - lsls r1, r4, 16 - asrs r1, 24 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - b _080BBC7C - .align 2, 0 -_080BBC68: .4byte gTasks -_080BBC6C: .4byte gBattle_BG1_Y -_080BBC70: - ldr r1, _080BBCA0 @ =gBattle_BG1_Y - lsls r0, r4, 16 - asrs r0, 24 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] -_080BBC7C: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r5 - ldrh r1, [r5, 0x22] - movs r0, 0xFF - ands r0, r1 - movs r2, 0 - strh r0, [r5, 0x22] - movs r3, 0x26 - ldrsh r0, [r5, r3] - cmp r0, 0x1 - beq _080BBCE6 - cmp r0, 0x1 - bgt _080BBCA4 - cmp r0, 0 - beq _080BBCAA - b _080BBDD8 - .align 2, 0 -_080BBCA0: .4byte gBattle_BG1_Y -_080BBCA4: - cmp r0, 0x2 - beq _080BBD00 - b _080BBDD8 -_080BBCAA: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r5, r3] - cmp r0, r1 - bge _080BBCBE - b _080BBDD8 -_080BBCBE: - strh r2, [r5, 0x1E] - ldrh r1, [r5, 0x20] - adds r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x20 - ldrsh r1, [r5, r0] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _080BBDD8 - b _080BBCF8 -_080BBCE6: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x12 - ldrsh r1, [r5, r3] - cmp r0, r1 - bne _080BBDD8 -_080BBCF8: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] - b _080BBDD8 -_080BBD00: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x14 - ldrsh r1, [r5, r3] - cmp r0, r1 - blt _080BBDD8 - strh r2, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x20 - ldrsh r4, [r5, r0] - cmp r4, 0 - bne _080BBDD8 - movs r0, 0 - bl sub_8073128 - ldr r0, _080BBDE0 @ =gUnknown_2022984 - strh r4, [r0] - ldr r0, _080BBDE4 @ =gUnknown_2022986 - strh r4, [r0] - ldr r4, _080BBDE8 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BBD7E - movs r0, 0xA - bl GetGpuReg - mov r1, sp - strh r0, [r1] - mov r2, sp - ldrb r1, [r2] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r0, sp - ldrh r1, [r0] - movs r0, 0xA - bl SetGpuReg -_080BBD7E: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r3, 0x8 - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080BBDEC @ =gSprites - adds r0, r4 - bl DestroySprite - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080BBDD2 - movs r2, 0xE - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite -_080BBDD2: - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080BBDD8: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BBDE0: .4byte gUnknown_2022984 -_080BBDE4: .4byte gUnknown_2022986 -_080BBDE8: .4byte 0x00003f3f -_080BBDEC: .4byte gSprites - thumb_func_end sub_80BBC2C - - thumb_func_start sub_80BBDF0 -sub_80BBDF0: @ 80BBDF0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BBE08 @ =gBattleAnimArgs - ldr r1, _080BBE0C @ =gBattleTerrain - ldrb r1, [r1] - strh r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080BBE08: .4byte gBattleAnimArgs -_080BBE0C: .4byte gBattleTerrain - thumb_func_end sub_80BBDF0 - - thumb_func_start sub_80BBE10 -sub_80BBE10: @ 80BBE10 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - ldr r1, _080BBE38 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - str r0, [r1] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBE38: .4byte gMonSpritesGfxPtr - thumb_func_end sub_80BBE10 - - thumb_func_start sub_80BBE3C -sub_80BBE3C: @ 80BBE3C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _080BBE68 @ =gMonSpritesGfxPtr - ldr r0, [r6] - movs r5, 0xBE - lsls r5, 1 - adds r0, r5 - ldr r0, [r0] - bl Free - ldr r0, [r6] - adds r0, r5 - movs r1, 0 - str r1, [r0] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BBE68: .4byte gMonSpritesGfxPtr - thumb_func_end sub_80BBE3C - - thumb_func_start sub_80BBE6C -sub_80BBE6C: @ 80BBE6C - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080BBEAC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BBEB0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BBEC8 - movs r2, 0x1 -_080BBE9E: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080BBE9E - b _080BBEC8 - .align 2, 0 -_080BBEAC: .4byte gBattleAnimArgs -_080BBEB0: - cmp r0, 0x1 - bne _080BBEBC - ldr r0, _080BBEB8 @ =gBattleAnimAttacker - b _080BBEC2 - .align 2, 0 -_080BBEB8: .4byte gBattleAnimAttacker -_080BBEBC: - cmp r0, 0x2 - bne _080BBEC8 - ldr r0, _080BBEF8 @ =gBattleAnimTarget -_080BBEC2: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080BBEC8: - ldr r0, _080BBEFC @ =gMonSpritesGfxPtr - ldr r1, [r0] - ldr r0, _080BBF00 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r0, r2] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - lsls r0, 5 - adds r0, r1 - lsls r1, r4, 5 - ldr r2, _080BBF04 @ =gPlttBufferUnfaded - adds r1, r2 - movs r2, 0x20 - bl memcpy - adds r0, r5, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BBEF8: .4byte gBattleAnimTarget -_080BBEFC: .4byte gMonSpritesGfxPtr -_080BBF00: .4byte gBattleAnimArgs -_080BBF04: .4byte gPlttBufferUnfaded - thumb_func_end sub_80BBE6C - - thumb_func_start sub_80BBF08 -sub_80BBF08: @ 80BBF08 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080BBF48 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BBF4C - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BBF64 - movs r2, 0x1 -_080BBF3A: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080BBF3A - b _080BBF64 - .align 2, 0 -_080BBF48: .4byte gBattleAnimArgs -_080BBF4C: - cmp r0, 0x1 - bne _080BBF58 - ldr r0, _080BBF54 @ =gBattleAnimAttacker - b _080BBF5E - .align 2, 0 -_080BBF54: .4byte gBattleAnimAttacker -_080BBF58: - cmp r0, 0x2 - bne _080BBF64 - ldr r0, _080BBF94 @ =gBattleAnimTarget -_080BBF5E: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080BBF64: - lsls r0, r4, 5 - ldr r1, _080BBF98 @ =gPlttBufferUnfaded - adds r0, r1 - ldr r1, _080BBF9C @ =gMonSpritesGfxPtr - ldr r2, [r1] - ldr r1, _080BBFA0 @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r1, r3] - movs r3, 0xBE - lsls r3, 1 - adds r2, r3 - ldr r2, [r2] - lsls r1, 5 - adds r1, r2 - movs r2, 0x20 - bl memcpy - adds r0, r5, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BBF94: .4byte gBattleAnimTarget -_080BBF98: .4byte gPlttBufferUnfaded -_080BBF9C: .4byte gMonSpritesGfxPtr -_080BBFA0: .4byte gBattleAnimArgs - thumb_func_end sub_80BBF08 - - thumb_func_start sub_80BBFA4 -sub_80BBFA4: @ 80BBFA4 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080BBFE4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BBFE8 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r1, r0, 0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BC000 - movs r2, 0x1 -_080BBFD6: - lsrs r1, 1 - adds r4, 0x1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080BBFD6 - b _080BC000 - .align 2, 0 -_080BBFE4: .4byte gBattleAnimArgs -_080BBFE8: - cmp r0, 0x1 - bne _080BBFF4 - ldr r0, _080BBFF0 @ =gBattleAnimAttacker - b _080BBFFA - .align 2, 0 -_080BBFF0: .4byte gBattleAnimAttacker -_080BBFF4: - cmp r0, 0x2 - bne _080BC000 - ldr r0, _080BC020 @ =gBattleAnimTarget -_080BBFFA: - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 -_080BC000: - lsls r1, r4, 5 - ldr r0, _080BC024 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _080BC028 @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x20 - bl memcpy - adds r0, r5, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC020: .4byte gBattleAnimTarget -_080BC024: .4byte gPlttBufferUnfaded -_080BC028: .4byte gPlttBufferFaded - thumb_func_end sub_80BBFA4 - - thumb_func_start sub_80BC02C -sub_80BC02C: @ 80BC02C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080BC04C - ldr r1, _080BC048 @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] - b _080BC050 - .align 2, 0 -_080BC048: .4byte gBattleAnimArgs -_080BC04C: - ldr r0, _080BC05C @ =gBattleAnimArgs - strh r1, [r0, 0xE] -_080BC050: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BC05C: .4byte gBattleAnimArgs - thumb_func_end sub_80BC02C - - thumb_func_start sub_80BC060 -sub_80BC060: @ 80BC060 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BC080 @ =gBattleAnimAttacker - ldr r1, _080BC084 @ =gBattlerTarget - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080BC088 @ =gBattleAnimTarget - ldr r1, _080BC08C @ =gEffectBattler - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080BC080: .4byte gBattleAnimAttacker -_080BC084: .4byte gBattlerTarget -_080BC088: .4byte gBattleAnimTarget -_080BC08C: .4byte gEffectBattler - thumb_func_end sub_80BC060 - - thumb_func_start sub_80BC090 -sub_80BC090: @ 80BC090 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080BC0B8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, _080BC0BC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080BC0C4 - ldr r1, _080BC0C0 @ =gBattleAnimArgs - movs r0, 0x1 - b _080BC0C8 - .align 2, 0 -_080BC0B8: .4byte gBattleAnimAttacker -_080BC0BC: .4byte gBattleAnimTarget -_080BC0C0: .4byte gBattleAnimArgs -_080BC0C4: - ldr r1, _080BC0D8 @ =gBattleAnimArgs - movs r0, 0 -_080BC0C8: - strh r0, [r1, 0xE] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC0D8: .4byte gBattleAnimArgs - thumb_func_end sub_80BC090 - - thumb_func_start sub_80BC0DC -sub_80BC0DC: @ 80BC0DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BC0F4 @ =gBattleAnimTarget - ldr r1, _080BC0F8 @ =gBattlerTarget - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080BC0F4: .4byte gBattleAnimTarget -_080BC0F8: .4byte gBattlerTarget - thumb_func_end sub_80BC0DC - - thumb_func_start sub_80BC0FC -sub_80BC0FC: @ 80BC0FC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BC11C @ =gBattleAnimAttacker - ldr r1, _080BC120 @ =gBattlerAttacker - ldrb r1, [r1] - strb r1, [r2] - ldr r2, _080BC124 @ =gBattleAnimTarget - ldr r1, _080BC128 @ =gEffectBattler - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080BC11C: .4byte gBattleAnimAttacker -_080BC120: .4byte gBattlerAttacker -_080BC124: .4byte gBattleAnimTarget -_080BC128: .4byte gEffectBattler - thumb_func_end sub_80BC0FC - - thumb_func_start sub_80BC12C -sub_80BC12C: @ 80BC12C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080BC144 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080BC180 -_080BC144: - ldr r0, _080BC188 @ =gTasks - lsls r3, r4, 2 - adds r3, r4 - lsls r3, 3 - adds r3, r0 - ldr r0, _080BC18C @ =gBattleSpritesDataPtr - ldr r4, [r0] - ldr r2, _080BC190 @ =gBattleAnimAttacker - ldrb r0, [r2] - ldr r1, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r3, 0x8] - ldrb r1, [r2] - ldr r0, [r4] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, _080BC194 @ =sub_80BC19C - str r0, [r3] - ldr r1, _080BC198 @ =gUnknown_2037EE2 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080BC180: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BC188: .4byte gTasks -_080BC18C: .4byte gBattleSpritesDataPtr -_080BC190: .4byte gBattleAnimAttacker -_080BC194: .4byte sub_80BC19C -_080BC198: .4byte gUnknown_2037EE2 - thumb_func_end sub_80BC12C - - thumb_func_start sub_80BC19C -sub_80BC19C: @ 80BC19C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BC1E8 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _080BC1E0 - ldr r0, _080BC1EC @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080BC1F0 @ =gBattleAnimAttacker - ldrb r3, [r0] - ldr r0, [r1] - lsls r3, 2 - adds r3, r0 - ldr r1, _080BC1F4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r1, 0x1 - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyTask -_080BC1E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BC1E8: .4byte gBattleAnimArgs -_080BC1EC: .4byte gBattleSpritesDataPtr -_080BC1F0: .4byte gBattleAnimAttacker -_080BC1F4: .4byte gTasks - thumb_func_end sub_80BC19C - - thumb_func_start SetAnimBgAttribute -SetAnimBgAttribute: @ 80BC1F8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r6, 0x3 - bls _080BC20C - b _080BC2FE -_080BC20C: - ldr r0, _080BC228 @ =gUnknown_83E7CCA - adds r0, r6, r0 - ldrb r0, [r0] - bl GetGpuReg - ldr r1, _080BC22C @ =gUnknown_20399B8 - strh r0, [r1] - cmp r5, 0x6 - bhi _080BC2F0 - lsls r0, r5, 2 - ldr r1, _080BC230 @ =_080BC234 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BC228: .4byte gUnknown_83E7CCA -_080BC22C: .4byte gUnknown_20399B8 -_080BC230: .4byte _080BC234 - .align 2, 0 -_080BC234: - .4byte _080BC250 - .4byte _080BC264 - .4byte _080BC27C - .4byte _080BC294 - .4byte _080BC2AC - .4byte _080BC2C8 - .4byte _080BC2DC -_080BC250: - ldr r2, _080BC260 @ =gUnknown_20399B8 - lsls r3, r4, 6 - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x1] - b _080BC2F0 - .align 2, 0 -_080BC260: .4byte gUnknown_20399B8 -_080BC264: - ldr r3, _080BC278 @ =gUnknown_20399B8 - movs r0, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 5 - ldrb r2, [r3, 0x1] - movs r0, 0x21 - negs r0, r0 - b _080BC2EA - .align 2, 0 -_080BC278: .4byte gUnknown_20399B8 -_080BC27C: - ldr r3, _080BC290 @ =gUnknown_20399B8 - movs r0, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 6 - ldrb r2, [r3] - movs r0, 0x41 - negs r0, r0 - b _080BC2BA - .align 2, 0 -_080BC290: .4byte gUnknown_20399B8 -_080BC294: - ldr r3, _080BC2A8 @ =gUnknown_20399B8 - movs r0, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0xD - negs r0, r0 - b _080BC2BA - .align 2, 0 -_080BC2A8: .4byte gUnknown_20399B8 -_080BC2AC: - ldr r3, _080BC2C4 @ =gUnknown_20399B8 - movs r0, 0x3 - adds r1, r4, 0 - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x4 - negs r0, r0 -_080BC2BA: - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080BC2F0 - .align 2, 0 -_080BC2C4: .4byte gUnknown_20399B8 -_080BC2C8: - ldr r2, _080BC2D8 @ =gUnknown_20399B8 - lsls r3, r4, 7 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - b _080BC2F0 - .align 2, 0 -_080BC2D8: .4byte gUnknown_20399B8 -_080BC2DC: - ldr r3, _080BC304 @ =gUnknown_20399B8 - movs r0, 0x1F - adds r1, r4, 0 - ands r1, r0 - ldrb r2, [r3, 0x1] - movs r0, 0x20 - negs r0, r0 -_080BC2EA: - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] -_080BC2F0: - ldr r0, _080BC308 @ =gUnknown_83E7CCA - adds r0, r6, r0 - ldrb r0, [r0] - ldr r1, _080BC304 @ =gUnknown_20399B8 - ldrh r1, [r1] - bl SetGpuReg -_080BC2FE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BC304: .4byte gUnknown_20399B8 -_080BC308: .4byte gUnknown_83E7CCA - thumb_func_end SetAnimBgAttribute - - thumb_func_start sub_80BC30C -sub_80BC30C: @ 80BC30C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r2, 0x3 - bhi _080BC394 - ldr r0, _080BC338 @ =gUnknown_83E7CCE - adds r0, r2, r0 - ldrb r0, [r0] - bl GetGpuReg - mov r1, sp - strh r0, [r1] - cmp r4, 0x6 - bhi _080BC394 - lsls r0, r4, 2 - ldr r1, _080BC33C @ =_080BC340 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BC338: .4byte gUnknown_83E7CCE -_080BC33C: .4byte _080BC340 - .align 2, 0 -_080BC340: - .4byte _080BC35C - .4byte _080BC364 - .4byte _080BC36C - .4byte _080BC374 - .4byte _080BC37C - .4byte _080BC384 - .4byte _080BC38C -_080BC35C: - ldr r0, [sp] - lsls r0, 16 - lsrs r0, 30 - b _080BC396 -_080BC364: - ldr r0, [sp] - lsls r0, 18 - lsrs r0, 31 - b _080BC396 -_080BC36C: - ldr r0, [sp] - lsls r0, 25 - lsrs r0, 31 - b _080BC396 -_080BC374: - ldr r0, [sp] - lsls r0, 28 - lsrs r0, 30 - b _080BC396 -_080BC37C: - ldr r0, [sp] - lsls r0, 30 - lsrs r0, 30 - b _080BC396 -_080BC384: - ldr r0, [sp] - lsls r0, 24 - lsrs r0, 31 - b _080BC396 -_080BC38C: - ldr r0, [sp] - lsls r0, 19 - lsrs r0, 27 - b _080BC396 -_080BC394: - movs r0, 0 -_080BC396: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BC30C - - thumb_func_start HandleIntroSlide -HandleIntroSlide: @ 80BC3A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BC3B8 @ =gBattleTypeFlags - ldr r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BC3C0 - ldr r0, _080BC3BC @ =sub_80BCC4C - b _080BC3E8 - .align 2, 0 -_080BC3B8: .4byte gBattleTypeFlags -_080BC3BC: .4byte sub_80BCC4C -_080BC3C0: - movs r0, 0x80 - lsls r0, 5 - ands r1, r0 - cmp r1, 0 - beq _080BC3E0 - ldr r0, _080BC3D8 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - beq _080BC3E0 - movs r4, 0x3 - ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8 - b _080BC3E8 - .align 2, 0 -_080BC3D8: .4byte gGameVersion -_080BC3DC: .4byte task00_battle_intro_80BC6C8 -_080BC3E0: - ldr r1, _080BC414 @ =gUnknown_83E7CD4 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] -_080BC3E8: - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080BC418 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - strh r0, [r1, 0xC] - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BC414: .4byte gUnknown_83E7CD4 -_080BC418: .4byte gTasks - thumb_func_end HandleIntroSlide - - thumb_func_start sub_80BC41C -sub_80BC41C: @ 80BC41C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080BC468 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080BC46C @ =gBattle_BG1_Y - strh r1, [r0] - ldr r0, _080BC470 @ =gBattle_BG2_X - strh r1, [r0] - ldr r0, _080BC474 @ =gBattle_BG2_Y - strh r1, [r0] - 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, _080BC478 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BC468: .4byte gBattle_BG1_X -_080BC46C: .4byte gBattle_BG1_Y -_080BC470: .4byte gBattle_BG2_X -_080BC474: .4byte gBattle_BG2_Y -_080BC478: .4byte 0x00003f3f - thumb_func_end sub_80BC41C - - thumb_func_start task_battle_intro_80BC47C -task_battle_intro_80BC47C: @ 80BC47C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080BC4B4 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 - strh r0, [r1] - ldr r1, _080BC4B8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - mov r8, r1 - cmp r0, 0x4 - bls _080BC4A8 - b _080BC6BA -_080BC4A8: - lsls r0, 2 - ldr r1, _080BC4BC @ =_080BC4C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BC4B4: .4byte gBattle_BG1_X -_080BC4B8: .4byte gTasks -_080BC4BC: .4byte _080BC4C0 - .align 2, 0 -_080BC4C0: - .4byte _080BC4D4 - .4byte _080BC504 - .4byte _080BC52C - .4byte _080BC574 - .4byte _080BC6B4 -_080BC4D4: - ldr r0, _080BC4EC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BC4F0 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x10 - b _080BC4FA - .align 2, 0 -_080BC4EC: .4byte gBattleTypeFlags -_080BC4F0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x1 -_080BC4FA: - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080BC6BA -_080BC504: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080BC51C - b _080BC6BA -_080BC51C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _080BC6BA -_080BC52C: - ldr r1, _080BC568 @ =gUnknown_2022986 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080BC544 - b _080BC6BA -_080BC544: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080BC56C @ =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, _080BC570 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080BC6BA - .align 2, 0 -_080BC568: .4byte gUnknown_2022986 -_080BC56C: .4byte gIntroSlideFlags -_080BC570: .4byte 0x0000fffe -_080BC574: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - mov r5, r8 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r5, 0xE - ldrsh r1, [r2, r5] - mov r12, r0 - cmp r1, 0 - beq _080BC590 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080BC5BE -_080BC590: - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080BC5B0 - ldr r2, _080BC5A8 @ =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, _080BC5AC @ =0x0000ffb0 - cmp r1, r0 - beq _080BC5BE - subs r0, r1, 0x2 - b _080BC5BC - .align 2, 0 -_080BC5A8: .4byte gBattle_BG1_Y -_080BC5AC: .4byte 0x0000ffb0 -_080BC5B0: - ldr r2, _080BC690 @ =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, _080BC694 @ =0x0000ffc8 - cmp r1, r0 - beq _080BC5BE - subs r0, r1, 0x1 -_080BC5BC: - strh r0, [r2] -_080BC5BE: - ldr r2, _080BC698 @ =gUnknown_2022986 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080BC5D2 - ldr r3, _080BC69C @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080BC5D2: - mov r5, r12 - adds r0, r5, r4 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BC5EA - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080BC5EA: - movs r3, 0 - ldr r5, _080BC6A0 @ =gScanlineEffect - mov r9, r5 - ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers - mov r6, r9 - adds r5, r1, 0 -_080BC5F6: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080BC5F6 - cmp r3, 0x9F - bgt _080BC63A - ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers - ldr r6, _080BC6A0 @ =gScanlineEffect - ldr r1, _080BC6A8 @ =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_080BC620: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080BC620 -_080BC63A: - mov r3, r12 - adds r0, r3, r4 - lsls r0, 3 - mov r5, r8 - adds r1, r0, r5 - movs r0, 0xC - ldrsh r2, [r1, r0] - cmp r2, 0 - bne _080BC6BA - movs r0, 0x3 - mov r3, r9 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080BC6AC @ =0x0600e000 - ldr r2, _080BC6B0 @ =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _080BC6BA - .align 2, 0 -_080BC690: .4byte gBattle_BG1_Y -_080BC694: .4byte 0x0000ffc8 -_080BC698: .4byte gUnknown_2022986 -_080BC69C: .4byte 0xfffffc04 -_080BC6A0: .4byte gScanlineEffect -_080BC6A4: .4byte gScanlineEffectRegBuffers -_080BC6A8: .4byte gTasks -_080BC6AC: .4byte 0x0600e000 -_080BC6B0: .4byte 0x05000200 -_080BC6B4: - adds r0, r4, 0 - bl sub_80BC41C -_080BC6BA: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_battle_intro_80BC47C - - thumb_func_start task00_battle_intro_80BC6C8 -task00_battle_intro_80BC6C8: @ 80BC6C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080BC6F4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0xA - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x3 - beq _080BC708 - cmp r0, 0x3 - bgt _080BC6F8 - cmp r0, 0x2 - beq _080BC6FC - b _080BC710 - .align 2, 0 -_080BC6F4: .4byte gTasks -_080BC6F8: - cmp r0, 0x4 - bne _080BC710 -_080BC6FC: - ldr r1, _080BC704 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - b _080BC70E - .align 2, 0 -_080BC704: .4byte gBattle_BG1_X -_080BC708: - ldr r1, _080BC74C @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 -_080BC70E: - strh r0, [r1] -_080BC710: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r4, r1, r2 - movs r3, 0xA - ldrsh r1, [r4, r3] - adds r6, r0, 0 - cmp r1, 0x4 - bne _080BC774 - ldr r7, _080BC750 @ =gBattle_BG1_Y - ldrh r0, [r4, 0x14] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080BC736 - ldr r1, _080BC754 @ =0x000001ff - adds r0, r1 -_080BC736: - asrs r0, 9 - subs r0, 0x8 - strh r0, [r7] - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0xB3 - bgt _080BC758 - adds r0, r1, 0x4 - b _080BC75A - .align 2, 0 -_080BC74C: .4byte gBattle_BG1_X -_080BC750: .4byte gBattle_BG1_Y -_080BC754: .4byte 0x000001ff -_080BC758: - adds r0, r1, 0x6 -_080BC75A: - strh r0, [r4, 0x14] - ldr r2, _080BC790 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r3, r0, r2 - movs r0, 0x14 - ldrsh r1, [r3, r0] - movs r0, 0xB4 - lsls r0, 1 - cmp r1, r0 - bne _080BC774 - movs r0, 0 - strh r0, [r3, 0x14] -_080BC774: - adds r0, r6, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _080BC784 - b _080BC9AA -_080BC784: - lsls r0, 2 - ldr r1, _080BC794 @ =_080BC798 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BC790: .4byte gTasks -_080BC794: .4byte _080BC798 - .align 2, 0 -_080BC798: - .4byte _080BC7AC - .4byte _080BC7DC - .4byte _080BC808 - .4byte _080BC858 - .4byte _080BC9A4 -_080BC7AC: - ldr r1, _080BC7C8 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x10 - strh r3, [r2, 0x10] - ldr r0, _080BC7CC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BC7D0 - strh r3, [r2, 0xC] - b _080BC7D4 - .align 2, 0 -_080BC7C8: .4byte gTasks -_080BC7CC: .4byte gBattleTypeFlags -_080BC7D0: - movs r0, 0x1 - strh r0, [r2, 0xC] -_080BC7D4: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080BC9AA -_080BC7DC: - ldr r0, _080BC804 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080BC7F2 - b _080BC9AA -_080BC7F2: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _080BC9AA - .align 2, 0 -_080BC804: .4byte gTasks -_080BC808: - ldr r1, _080BC848 @ =gUnknown_2022986 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080BC820 - b _080BC9AA -_080BC820: - ldr r0, _080BC84C @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080BC850 @ =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, _080BC854 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080BC9AA - .align 2, 0 -_080BC848: .4byte gUnknown_2022986 -_080BC84C: .4byte gTasks -_080BC850: .4byte gIntroSlideFlags -_080BC854: .4byte 0x0000fffe -_080BC858: - ldr r0, _080BC890 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xE] - movs r3, 0xE - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BC898 - subs r0, r2, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080BC8B8 - ldr r1, _080BC894 @ =0x00001842 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0xF - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - b _080BC8B8 - .align 2, 0 -_080BC890: .4byte gTasks -_080BC894: .4byte 0x00001842 -_080BC898: - ldrh r2, [r1, 0x10] - movs r0, 0x1F - ands r0, r2 - cmp r0, 0 - beq _080BC8B8 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080BC8B8 - adds r0, r2, 0 - adds r0, 0xFF - strh r0, [r1, 0x10] - movs r0, 0x4 - strh r0, [r1, 0x12] -_080BC8B8: - ldr r2, _080BC988 @ =gUnknown_2022986 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080BC8CC - ldr r3, _080BC98C @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080BC8CC: - ldr r0, _080BC990 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BC8E2 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080BC8E2: - movs r3, 0 - ldr r0, _080BC994 @ =gScanlineEffect - mov r8, r0 - ldr r2, _080BC998 @ =gScanlineEffectRegBuffers - mov r12, r2 - mov r7, r8 - adds r4, r1, 0 -_080BC8F0: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080BC8F0 - cmp r3, 0x9F - bgt _080BC934 - ldr r0, _080BC998 @ =gScanlineEffectRegBuffers - mov r12, r0 - ldr r7, _080BC994 @ =gScanlineEffect - ldr r1, _080BC990 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r4, r0, r1 -_080BC91A: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080BC91A -_080BC934: - ldr r1, _080BC990 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080BC9AA - movs r0, 0x3 - mov r3, r8 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080BC99C @ =0x0600e000 - ldr r2, _080BC9A0 @ =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _080BC9AA - .align 2, 0 -_080BC988: .4byte gUnknown_2022986 -_080BC98C: .4byte 0xfffffc04 -_080BC990: .4byte gTasks -_080BC994: .4byte gScanlineEffect -_080BC998: .4byte gScanlineEffectRegBuffers -_080BC99C: .4byte 0x0600e000 -_080BC9A0: .4byte 0x05000200 -_080BC9A4: - adds r0, r5, 0 - bl sub_80BC41C -_080BC9AA: - ldr r0, _080BC9D0 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _080BC9C2 - ldrh r1, [r1, 0x10] - movs r0, 0x52 - bl SetGpuReg -_080BC9C2: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BC9D0: .4byte gTasks - thumb_func_end task00_battle_intro_80BC6C8 - - thumb_func_start task_battle_intro_anim -task_battle_intro_anim: @ 80BC9D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080BCA08 @ =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - strh r0, [r1] - ldr r1, _080BCA0C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x4 - bls _080BC9FE - b _080BCC22 -_080BC9FE: - lsls r0, 2 - ldr r1, _080BCA10 @ =_080BCA14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BCA08: .4byte gBattle_BG1_X -_080BCA0C: .4byte gTasks -_080BCA10: .4byte _080BCA14 - .align 2, 0 -_080BCA14: - .4byte _080BCA28 - .4byte _080BCA7C - .4byte _080BCAA8 - .4byte _080BCAF8 - .4byte _080BCC1C -_080BCA28: - ldr r1, _080BCA60 @ =0x00001842 - movs r0, 0x50 - bl SetGpuReg - ldr r4, _080BCA64 @ =0x00000808 - movs r0, 0x52 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r1, _080BCA68 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x10] - ldr r0, _080BCA6C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BCA70 - movs r0, 0x10 - b _080BCA72 - .align 2, 0 -_080BCA60: .4byte 0x00001842 -_080BCA64: .4byte 0x00000808 -_080BCA68: .4byte gTasks -_080BCA6C: .4byte gBattleTypeFlags -_080BCA70: - movs r0, 0x1 -_080BCA72: - strh r0, [r2, 0xC] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080BCC22 -_080BCA7C: - ldr r0, _080BCAA4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080BCA94 - b _080BCC22 -_080BCA94: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _080BCC22 - .align 2, 0 -_080BCAA4: .4byte gTasks -_080BCAA8: - ldr r1, _080BCAE8 @ =gUnknown_2022986 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080BCAC0 - b _080BCC22 -_080BCAC0: - ldr r0, _080BCAEC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, _080BCAF0 @ =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, _080BCAF4 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080BCC22 - .align 2, 0 -_080BCAE8: .4byte gUnknown_2022986 -_080BCAEC: .4byte gTasks -_080BCAF0: .4byte gIntroSlideFlags -_080BCAF4: .4byte 0x0000fffe -_080BCAF8: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r2, r1, r4 - ldrh r3, [r2, 0xE] - movs r6, 0xE - ldrsh r1, [r2, r6] - mov r12, r0 - cmp r1, 0 - beq _080BCB12 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _080BCB32 -_080BCB12: - ldrh r1, [r2, 0x10] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _080BCB32 - ldrh r0, [r2, 0x12] - subs r0, 0x1 - strh r0, [r2, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _080BCB32 - adds r0, r1, 0 - adds r0, 0xFF - strh r0, [r2, 0x10] - movs r0, 0x6 - strh r0, [r2, 0x12] -_080BCB32: - ldr r2, _080BCC00 @ =gUnknown_2022986 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080BCB46 - ldr r3, _080BCC04 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080BCB46: - mov r6, r12 - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r4 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BCB5C - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080BCB5C: - movs r3, 0 - ldr r6, _080BCC08 @ =gScanlineEffect - mov r8, r6 - ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers - adds r4, r1, 0 -_080BCB66: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080BCB66 - cmp r3, 0x9F - bgt _080BCBAA - ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers - ldr r6, _080BCC08 @ =gScanlineEffect - ldr r1, _080BCC10 @ =gTasks - mov r2, r12 - adds r0, r2, r5 - lsls r0, 3 - adds r4, r0, r1 -_080BCB90: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080BCB90 -_080BCBAA: - ldr r1, _080BCC10 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080BCC22 - movs r0, 0x3 - mov r6, r8 - strb r0, [r6, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, _080BCC14 @ =0x0600e000 - ldr r2, _080BCC18 @ =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _080BCC22 - .align 2, 0 -_080BCC00: .4byte gUnknown_2022986 -_080BCC04: .4byte 0xfffffc04 -_080BCC08: .4byte gScanlineEffect -_080BCC0C: .4byte gScanlineEffectRegBuffers -_080BCC10: .4byte gTasks -_080BCC14: .4byte 0x0600e000 -_080BCC18: .4byte 0x05000200 -_080BCC1C: - adds r0, r5, 0 - bl sub_80BC41C -_080BCC22: - ldr r0, _080BCC48 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _080BCC3C - ldrh r1, [r1, 0x10] - movs r0, 0x52 - bl SetGpuReg -_080BCC3C: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BCC48: .4byte gTasks - thumb_func_end task_battle_intro_anim - - thumb_func_start sub_80BCC4C -sub_80BCC4C: @ 80BCC4C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080BCC98 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - ble _080BCCC2 - movs r2, 0x10 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _080BCCC2 - ldr r2, _080BCC9C @ =gBattle_BG1_X - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _080BCC8A - cmp r1, 0x4F - bhi _080BCCA4 -_080BCC8A: - adds r0, r1, 0x3 - strh r0, [r2] - ldr r1, _080BCCA0 @ =gBattle_BG2_X - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - b _080BCCC2 - .align 2, 0 -_080BCC98: .4byte gTasks -_080BCC9C: .4byte gBattle_BG1_X -_080BCCA0: .4byte gBattle_BG2_X -_080BCCA4: - str r5, [sp] - ldr r1, _080BCCE4 @ =0x0600e000 - ldr r4, _080BCCE8 @ =0x05000200 - mov r0, sp - adds r2, r4, 0 - bl CpuSet - str r5, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, _080BCCEC @ =0x0600f000 - adds r2, r4, 0 - bl CpuSet - movs r0, 0x1 - strh r0, [r7, 0x10] -_080BCCC2: - ldr r0, _080BCCF0 @ =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - mov r9, r0 - adds r5, r2, 0 - cmp r1, 0x4 - bls _080BCCDA - b _080BCEE6 -_080BCCDA: - lsls r0, r1, 2 - ldr r1, _080BCCF4 @ =_080BCCF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BCCE4: .4byte 0x0600e000 -_080BCCE8: .4byte 0x05000200 -_080BCCEC: .4byte 0x0600f000 -_080BCCF0: .4byte gTasks -_080BCCF4: .4byte _080BCCF8 - .align 2, 0 -_080BCCF8: - .4byte _080BCD0C - .4byte _080BCD1E - .4byte _080BCDC4 - .4byte _080BCE08 - .4byte _080BCEE0 -_080BCD0C: - adds r0, r5, r6 - lsls r0, 3 - add r0, r9 - movs r1, 0x20 - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080BCEE6 -_080BCD1E: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _080BCD34 - b _080BCEE6 -_080BCD34: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r4, _080BCDB4 @ =gSprites - ldr r5, _080BCDB8 @ =gBattleStruct - ldr r0, [r5] - adds r0, 0x7D - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x8 - mov r9, r3 - mov r3, r9 - orrs r0, r3 - strb r0, [r1, 0x1] - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x7D - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1C - adds r1, r4 - mov r8, r1 - add r0, r8 - ldr r6, _080BCDBC @ =sub_801182C - str r6, [r0] - adds r3, 0x7E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - ands r2, r1 - mov r3, r9 - orrs r2, r3 - strb r2, [r0, 0x1] - ldr r0, [r5] - adds r0, 0x7E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - str r6, [r0] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - ldr r1, _080BCDC0 @ =0x00003f06 - movs r0, 0x4A - bl SetGpuReg - b _080BCEE6 - .align 2, 0 -_080BCDB4: .4byte gSprites -_080BCDB8: .4byte gBattleStruct -_080BCDBC: .4byte sub_801182C -_080BCDC0: .4byte 0x00003f06 -_080BCDC4: - ldr r1, _080BCDFC @ =gUnknown_2022986 - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _080BCDDC - b _080BCEE6 -_080BCDDC: - adds r1, r5, r6 - lsls r1, 3 - add r1, r9 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, _080BCE00 @ =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, _080BCE04 @ =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _080BCEE6 - .align 2, 0 -_080BCDFC: .4byte gUnknown_2022986 -_080BCE00: .4byte gIntroSlideFlags -_080BCE04: .4byte 0x0000fffe -_080BCE08: - ldr r2, _080BCECC @ =gUnknown_2022986 - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _080BCE1C - ldr r3, _080BCED0 @ =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_080BCE1C: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080BCE32 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_080BCE32: - movs r3, 0 - ldr r0, _080BCED4 @ =gScanlineEffect - mov r12, r0 - ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers - mov r8, r2 - mov r7, r12 - adds r4, r1, 0 -_080BCE40: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _080BCE40 - cmp r3, 0x9F - bgt _080BCE84 - ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers - mov r8, r0 - ldr r7, _080BCED4 @ =gScanlineEffect - ldr r1, _080BCEDC @ =gTasks - adds r0, r5, r6 - lsls r0, 3 - adds r4, r0, r1 -_080BCE6A: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _080BCE6A -_080BCE84: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080BCEE6 - movs r0, 0x3 - mov r2, r12 - strb r0, [r2, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _080BCEE6 - .align 2, 0 -_080BCECC: .4byte gUnknown_2022986 -_080BCED0: .4byte 0xfffffc04 -_080BCED4: .4byte gScanlineEffect -_080BCED8: .4byte gScanlineEffectRegBuffers -_080BCEDC: .4byte gTasks -_080BCEE0: - adds r0, r6, 0 - bl sub_80BC41C -_080BCEE6: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BCC4C - - thumb_func_start sub_80BCEF4 -sub_80BCEF4: @ 80BCEF4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - adds r6, r2, 0 - adds r4, r3, 0 - ldr r0, [sp, 0x24] - ldr r7, [sp, 0x28] - ldr r2, [sp, 0x2C] - mov r9, r2 - ldr r5, [sp, 0x30] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr - ldr r2, [r1] - lsls r4, 2 - adds r2, 0x4 - adds r2, r4 - ldr r1, _080BCFC8 @ =gBattleMonForms - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x80 - lsls r2, 3 - adds r1, r7, 0 - bl CpuSet - ldr r1, [sp] - lsls r0, r1, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 5 - adds r1, r7, 0 - adds r3, r5, 0 - bl LoadBgTiles - adds r0, r6, 0 - adds r0, 0x8 - cmp r6, r0 - bge _080BCFA0 - mov r12, r0 - mov r2, r8 - lsls r7, r2, 1 -_080BCF72: - mov r1, r8 - adds r2, r1, 0 - adds r2, 0x8 - adds r4, r6, 0x1 - cmp r1, r2 - bge _080BCF9A - mov r0, r10 - lsls r3, r0, 12 - lsls r0, r6, 6 - add r0, r9 - adds r6, r7, r0 - subs r1, r2, r1 -_080BCF8A: - adds r0, r5, 0 - orrs r0, r3 - strh r0, [r6] - adds r5, 0x1 - adds r6, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _080BCF8A -_080BCF9A: - adds r6, r4, 0 - cmp r6, r12 - blt _080BCF72 -_080BCFA0: - ldr r1, [sp] - lsls r0, r1, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 4 - mov r1, r9 - movs r3, 0 - bl LoadBgTilemap - 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 -_080BCFC4: .4byte gMonSpritesGfxPtr -_080BCFC8: .4byte gBattleMonForms - thumb_func_end sub_80BCEF4 - - thumb_func_start sub_80BCFCC -sub_80BCFCC: @ 80BCFCC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - mov r8, r5 - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - mov r7, r8 - lsls r7, 16 - lsrs r6, r7, 16 - lsls r5, 24 - lsrs r5, 24 - mov r0, r9 - lsls r0, 24 - mov r9, r0 - ldr r4, _080BD090 @ =0x040000d4 - ldr r0, _080BD094 @ =gMonSpritesGfxPtr - ldr r0, [r0] - lsrs r2, 22 - adds r0, 0x4 - adds r0, r2 - lsrs r3, 13 - ldr r0, [r0] - adds r0, r3 - str r0, [r4] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r4, 0x4] - ldr r0, _080BD098 @ =0x80000400 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r2, r7, 0 - lsrs r2, 21 - mov r6, r9 - lsrs r6, 15 - subs r4, r2, r6 - lsrs r0, r1, 24 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _080BD080 - mov r9, r1 - mov r7, r12 - lsls r7, 1 - mov r8, r7 - lsls r5, 11 - str r5, [sp] -_080BD048: - mov r2, r12 - adds r3, r2, 0 - adds r3, 0x8 - adds r5, r0, 0x1 - cmp r2, r3 - bge _080BD07A - mov r1, r10 - lsls r6, r1, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - ldr r1, [sp] - adds r0, r1, r0 - mov r7, r8 - adds r1, r7, r0 - subs r2, r3, r2 -_080BD06A: - adds r0, r4, 0 - orrs r0, r6 - strh r0, [r1] - adds r4, 0x1 - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _080BD06A -_080BD07A: - adds r0, r5, 0 - cmp r0, r9 - blt _080BD048 -_080BD080: - 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 -_080BD090: .4byte 0x040000d4 -_080BD094: .4byte gMonSpritesGfxPtr -_080BD098: .4byte 0x80000400 - thumb_func_end sub_80BCFCC - - .align 2, 0 @ Don't pad with nop. @@ -53,7 +53,7 @@ _080B4008: ldr r5, _080B406C @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, _080B4070 @ =gBattleAnimArgs lsrs r0, 24 @@ -62,7 +62,7 @@ _080B4008: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -137,7 +137,7 @@ _080B40BC: ldr r5, _080B4118 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, _080B411C @ =gBattleAnimArgs lsrs r0, 24 @@ -146,7 +146,7 @@ _080B40BC: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_8074844 + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -199,7 +199,7 @@ sub_80B4128: @ 80B4128 _080B4144: adds r0, r5, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080B4184 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r5, 0x2E] @@ -236,7 +236,7 @@ _080B418C: adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions _080B419E: adds r0, r5, 0 bl sub_8075678 @@ -258,7 +258,7 @@ _080B41BC: .4byte sub_80B41C0 sub_80B41C0: @ 80B41C0 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080B41D6 @@ -296,7 +296,7 @@ sub_80B41F8: @ 80B41F8 adds r3, r4, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080B422C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -552,7 +552,7 @@ _080B43E4: _080B43F6: adds r0, r7, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080B4488 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 @@ -586,7 +586,7 @@ _080B43F6: subs r1, r2 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 @@ -598,7 +598,7 @@ _080B43F6: adds r0, r7, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrh r0, [r6, 0x8] strh r0, [r7, 0x2E] strh r4, [r7, 0x32] @@ -625,7 +625,7 @@ sub_80B4494: @ 80B4494 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080B4500 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -660,7 +660,7 @@ _080B44B4: ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] adds r0, r6, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080B450C @ =sub_80B4510 str r0, [r6, 0x1C] adds r2, r6, 0 @@ -694,7 +694,7 @@ sub_80B4510: @ 80B4510 ands r1, r0 strb r1, [r2] adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B453C @@ -729,7 +729,7 @@ _080B4552: lsls r0, 16 lsrs r6, r0, 16 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 bne _080B45CC @@ -749,7 +749,7 @@ _080B4552: subs r1, r2 lsls r1, 16 asrs r1, 16 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 @@ -761,7 +761,7 @@ _080B4552: adds r0, r4, 0 movs r1, 0 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale add r2, sp, 0x4 mov r1, r8 movs r3, 0x7 @@ -812,18 +812,18 @@ _080B45F6: lsrs r0, 24 adds r0, 0x12 strh r0, [r5, 0x22] - ldr r1, _080B462C @ =move_anim_8074EE0 + ldr r1, _080B462C @ =DestroySpriteAndMatrix adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080B4630 @ =sub_8074F50 + ldr r0, _080B4630 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B4628: .4byte gBattleAnimTarget -_080B462C: .4byte move_anim_8074EE0 -_080B4630: .4byte sub_8074F50 +_080B462C: .4byte DestroySpriteAndMatrix +_080B4630: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80B45D8 .align 2, 0 @ Don't pad with nop. diff --git a/asm/dark.s b/asm/dark.s deleted file mode 100644 index cbc4060c3..000000000 --- a/asm/dark.s +++ /dev/null @@ -1,2323 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B78E0 -sub_80B78E0: @ 80B78E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B791C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B7920 @ =gBattleAnimArgs - ldrh r1, [r1] - strh r1, [r0, 0x8] - ldr r1, _080B7924 @ =gBattleAnimAttacker - ldrb r4, [r1] - movs r1, 0x10 - strh r1, [r0, 0xA] - movs r0, 0x52 - bl SetGpuReg - adds r0, r4, 0 - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B792C - ldr r1, _080B7928 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - b _080B7934 - .align 2, 0 -_080B791C: .4byte gTasks -_080B7920: .4byte gBattleAnimArgs -_080B7924: .4byte gBattleAnimAttacker -_080B7928: .4byte 0x00003f42 -_080B792C: - ldr r1, _080B7948 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg -_080B7934: - ldr r0, _080B794C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080B7950 @ =sub_80B7954 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B7948: .4byte 0x00003f44 -_080B794C: .4byte gTasks -_080B7950: .4byte sub_80B7954 - thumb_func_end sub_80B78E0 - - thumb_func_start sub_80B7954 -sub_80B7954: @ 80B7954 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080B79C0 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0xA] - lsrs r4, r0, 8 - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC - ldrsh r0, [r6, r2] - ldrb r2, [r6, 0x8] - cmp r0, r2 - bne _080B79D0 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 8 - orrs r1, r0 - movs r5, 0 - strh r1, [r6, 0xA] - ldrh r1, [r6, 0xA] - movs r0, 0x52 - bl SetGpuReg - strh r5, [r6, 0xC] - cmp r4, 0x10 - bne _080B79D6 - ldr r2, _080B79C4 @ =gSprites - ldr r1, _080B79C8 @ =gBattlerSpriteIds - ldr r0, _080B79CC @ =gBattleAnimAttacker - ldrb r0, [r0] - 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] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080B79D6 - .align 2, 0 -_080B79C0: .4byte gTasks -_080B79C4: .4byte gSprites -_080B79C8: .4byte gBattlerSpriteIds -_080B79CC: .4byte gBattleAnimAttacker -_080B79D0: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] -_080B79D6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B7954 - - thumb_func_start sub_80B79DC -sub_80B79DC: @ 80B79DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B7A08 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - ldr r0, _080B7A0C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r2, 0x8] - movs r1, 0x80 - lsls r1, 5 - strh r1, [r2, 0xA] - ldr r0, _080B7A10 @ =sub_80B7A14 - str r0, [r2] - movs r0, 0x52 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_080B7A08: .4byte gTasks -_080B7A0C: .4byte gBattleAnimArgs -_080B7A10: .4byte sub_80B7A14 - thumb_func_end sub_80B79DC - - thumb_func_start sub_80B7A14 -sub_80B7A14: @ 80B7A14 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080B7A70 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0xA] - lsrs r4, r0, 8 - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC - ldrsh r0, [r6, r2] - ldrb r2, [r6, 0x8] - cmp r0, r2 - bne _080B7A74 - subs r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 8 - orrs r1, r0 - movs r5, 0 - strh r1, [r6, 0xA] - ldrh r1, [r6, 0xA] - movs r0, 0x52 - bl SetGpuReg - strh r5, [r6, 0xC] - cmp r4, 0 - bne _080B7A7A - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080B7A7A - .align 2, 0 -_080B7A70: .4byte gTasks -_080B7A74: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] -_080B7A7A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B7A14 - - thumb_func_start sub_80B7A80 -sub_80B7A80: @ 80B7A80 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080B7AAC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B7AB4 - ldr r1, _080B7AB0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - b _080B7ABC - .align 2, 0 -_080B7AAC: .4byte gBattleAnimAttacker -_080B7AB0: .4byte 0x00003f42 -_080B7AB4: - ldr r1, _080B7AC8 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg -_080B7ABC: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B7AC8: .4byte 0x00003f44 - thumb_func_end sub_80B7A80 - - thumb_func_start sub_80B7ACC -sub_80B7ACC: @ 80B7ACC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080B7B38 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x30] - ldr r5, _080B7B3C @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - movs r0, 0x7E - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl InitSpriteDataForLinearTranslation - ldrh r0, [r4, 0x30] - negs r0, r0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - negs r0, r0 - strh r0, [r4, 0x36] - ldr r0, _080B7B40 @ =0x0000ffd8 - strh r0, [r4, 0x3A] - ldr r1, _080B7B44 @ =sub_80B7B48 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B7B38: .4byte gBattleAnimTarget -_080B7B3C: .4byte gBattleAnimAttacker -_080B7B40: .4byte 0x0000ffd8 -_080B7B44: .4byte sub_80B7B48 - thumb_func_end sub_80B7ACC - - thumb_func_start sub_80B7B48 -sub_80B7B48: @ 80B7B48 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r5, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r2, r5, r0 - strh r2, [r4, 0x34] - ldrh r3, [r4, 0x32] - ldrh r6, [r4, 0x36] - adds r1, r3, r6 - strh r1, [r4, 0x36] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - movs r6, 0x3C - ldrsh r0, [r4, r6] - cmp r0, 0 - bne _080B7B8A - adds r0, r2, r5 - strh r0, [r4, 0x34] - adds r1, r3 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] -_080B7B8A: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - ldrh r6, [r4, 0x26] - adds r0, r6 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - cmp r0, 0x7F - ble _080B7BBA - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x14 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] -_080B7BBA: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080B7BCC - adds r0, r4, 0 - bl DestroyAnimSprite -_080B7BCC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B7B48 - - thumb_func_start sub_80B7BD4 -sub_80B7BD4: @ 80B7BD4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080B7C08 @ =gBattleAnimArgs - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrb r1, [r5, 0x4] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x32] - ldr r0, _080B7C0C @ =sub_80B7C10 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B7C08: .4byte gBattleAnimArgs -_080B7C0C: .4byte sub_80B7C10 - thumb_func_end sub_80B7BD4 - - thumb_func_start sub_80B7C10 -sub_80B7C10: @ 80B7C10 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x36] - adds r0, r1 - strh r0, [r2, 0x36] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x38] - adds r1, r3 - strh r1, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - bne _080B7C46 - ldr r0, _080B7C4C @ =sub_80B7C50 - str r0, [r2, 0x1C] -_080B7C46: - pop {r0} - bx r0 - .align 2, 0 -_080B7C4C: .4byte sub_80B7C50 - thumb_func_end sub_80B7C10 - - thumb_func_start sub_80B7C50 -sub_80B7C50: @ 80B7C50 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x36] - ldrh r0, [r3, 0x2E] - subs r1, r0 - strh r1, [r3, 0x36] - ldrh r0, [r3, 0x38] - ldrh r2, [r3, 0x30] - subs r0, r2 - strh r0, [r3, 0x38] - lsls r1, 16 - asrs r1, 24 - strh r1, [r3, 0x24] - lsls r0, 16 - asrs r0, 24 - strh r0, [r3, 0x26] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080B7C82 - adds r0, r3, 0 - bl move_anim_8074EE0 -_080B7C82: - pop {r0} - bx r0 - thumb_func_end sub_80B7C50 - - thumb_func_start sub_80B7C88 -sub_80B7C88: @ 80B7C88 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080B7C9C @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _080B7CA4 - ldr r0, _080B7CA0 @ =gBattleAnimAttacker - b _080B7CA6 - .align 2, 0 -_080B7C9C: .4byte gBattleAnimArgs -_080B7CA0: .4byte gBattleAnimAttacker -_080B7CA4: - ldr r0, _080B7CD4 @ =gBattleAnimTarget -_080B7CA6: - ldrb r5, [r0] - movs r6, 0x14 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x4 - ldr r7, _080B7CD8 @ =0x000003ff - adds r0, r7, 0 - ands r1, r0 - ldr r0, _080B7CDC @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - movs r1, 0x2 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080B7D04 - cmp r0, 0x1 - bgt _080B7CE0 - cmp r0, 0 - beq _080B7CEA - b _080B7D58 - .align 2, 0 -_080B7CD4: .4byte gBattleAnimTarget -_080B7CD8: .4byte 0x000003ff -_080B7CDC: .4byte 0xfffffc00 -_080B7CE0: - cmp r0, 0x2 - beq _080B7D1E - cmp r0, 0x3 - beq _080B7D36 - b _080B7D58 -_080B7CEA: - adds r0, r5, 0 - movs r1, 0x5 - bl sub_8076B2C - subs r0, 0x8 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8076B2C - adds r0, 0x8 - strh r0, [r4, 0x22] - b _080B7D58 -_080B7D04: - adds r0, r5, 0 - movs r1, 0x5 - bl sub_8076B2C - subs r0, 0xE - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8076B2C - adds r0, 0x10 - strh r0, [r4, 0x22] - b _080B7D58 -_080B7D1E: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_8076B2C - adds r0, 0x8 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8076B2C - adds r0, 0x8 - b _080B7D4C -_080B7D36: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_8076B2C - adds r0, 0xE - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_8076B2C - adds r0, 0x10 -_080B7D4C: - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r6, 0xEC -_080B7D58: - movs r0, 0x20 - strh r0, [r4, 0x2E] - lsls r0, r6, 24 - asrs r0, 24 - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - adds r0, 0xC - strh r0, [r4, 0x36] - ldr r0, _080B7D80 @ =0x0000fff4 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_8075068 - ldr r0, _080B7D84 @ =sub_80B7D88 - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B7D80: .4byte 0x0000fff4 -_080B7D84: .4byte sub_80B7D88 - thumb_func_end sub_80B7C88 - - thumb_func_start sub_80B7D88 -sub_80B7D88: @ 80B7D88 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080B7D9C - adds r0, r4, 0 - bl move_anim_8074EE0 -_080B7D9C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B7D88 - - thumb_func_start sub_80B7DA4 -sub_80B7DA4: @ 80B7DA4 - push {r4-r7,lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080B7E08 @ =gTasks - adds r5, r1, r0 - ldr r4, _080B7E0C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - movs r6, 0 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8076B2C - subs r0, 0x7 - strh r0, [r5, 0x14] - ldrh r1, [r5, 0x16] - strh r1, [r5, 0x12] - strh r0, [r5, 0x10] - subs r1, r0 - lsls r1, 8 - strh r1, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r5, 0x24] - adds r0, 0x20 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080B7E14 - ldr r0, _080B7E10 @ =0x0000fff4 - b _080B7E16 - .align 2, 0 -_080B7E08: .4byte gTasks -_080B7E0C: .4byte gBattleAnimAttacker -_080B7E10: .4byte 0x0000fff4 -_080B7E14: - ldr r0, _080B7E60 @ =0x0000ffc0 -_080B7E16: - strh r0, [r5, 0x18] - ldr r0, _080B7E64 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - cmp r0, 0x1 - bne _080B7E78 - add r4, sp, 0xC - adds r0, r4, 0 - bl sub_80752A0 - ldr r0, _080B7E68 @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r5, 0x1C] - ldr r1, _080B7E6C @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldrb r1, [r4, 0x8] - lsls r1, 4 - movs r0, 0 - movs r2, 0x20 - bl FillPalette - ldr r0, _080B7E70 @ =0x04000016 - str r0, [sp] - movs r7, 0x2 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080B7EA8 - ldr r1, _080B7E74 @ =gBattle_BG2_X - b _080B7EA2 - .align 2, 0 -_080B7E60: .4byte 0x0000ffc0 -_080B7E64: .4byte gBattleAnimAttacker -_080B7E68: .4byte gBattle_BG1_Y -_080B7E6C: .4byte 0x00003f42 -_080B7E70: .4byte 0x04000016 -_080B7E74: .4byte gBattle_BG2_X -_080B7E78: - ldr r0, _080B7F30 @ =gBattle_BG2_Y - ldrh r0, [r0] - strh r0, [r5, 0x1C] - ldr r1, _080B7F34 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0 - movs r1, 0x90 - movs r2, 0x20 - bl FillPalette - ldr r0, _080B7F38 @ =0x0400001a - str r0, [sp] - movs r7, 0x4 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080B7EA8 - ldr r1, _080B7F3C @ =gBattle_BG1_X -_080B7EA2: - ldrh r0, [r1] - adds r0, 0xF0 - strh r0, [r1] -_080B7EA8: - ldr r0, _080B7F40 @ =0xa2600001 - str r0, [sp, 0x4] - mov r2, sp - movs r1, 0 - movs r0, 0x1 - strb r0, [r2, 0x8] - mov r0, sp - strb r1, [r0, 0x9] - strh r1, [r5, 0x1E] - movs r0, 0x10 - strh r0, [r5, 0x20] - strh r1, [r5, 0x8] - strh r1, [r5, 0xA] - strh r1, [r5, 0xC] - movs r0, 0x3 - bl sub_80B856C - movs r3, 0 - ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080B7ED4: - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x1C] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x1C] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6F - bls _080B7ED4 - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - movs r0, 0x3F - eors r7, r0 - movs r1, 0xFC - lsls r1, 6 - adds r0, r1, 0 - orrs r7, r0 - movs r0, 0x4A - adds r1, r7, 0 - bl SetGpuReg - ldr r1, _080B7F48 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r2, _080B7F4C @ =gUnknown_2022984 - ldrh r0, [r5, 0x24] - lsls r0, 8 - ldrh r1, [r5, 0x26] - orrs r0, r1 - strh r0, [r2] - ldr r1, _080B7F50 @ =gUnknown_2022986 - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080B7F54 @ =sub_80B7F58 - str r0, [r5] - add sp, 0x1C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B7F30: .4byte gBattle_BG2_Y -_080B7F34: .4byte 0x00003f44 -_080B7F38: .4byte 0x0400001a -_080B7F3C: .4byte gBattle_BG1_X -_080B7F40: .4byte 0xa2600001 -_080B7F44: .4byte gScanlineEffectRegBuffers -_080B7F48: .4byte 0x00003f3f -_080B7F4C: .4byte gUnknown_2022984 -_080B7F50: .4byte gUnknown_2022986 -_080B7F54: .4byte sub_80B7F58 - thumb_func_end sub_80B7DA4 - - thumb_func_start sub_80B7F58 -sub_80B7F58: @ 80B7F58 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B7F7C @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080B7F72 - b _080B806A -_080B7F72: - lsls r0, 2 - ldr r1, _080B7F80 @ =_080B7F84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B7F7C: .4byte gTasks -_080B7F80: .4byte _080B7F84 - .align 2, 0 -_080B7F84: - .4byte _080B7F98 - .4byte _080B7FFA - .4byte _080B8014 - .4byte _080B8050 - .4byte _080B8064 -_080B7F98: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B806A - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B7FC8 - ldrh r1, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0xC - beq _080B7FD6 - adds r0, r1, 0x1 - strh r0, [r4, 0x1E] - b _080B7FD6 -_080B7FC8: - ldrh r1, [r4, 0x20] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x8 - beq _080B7FD6 - subs r0, r1, 0x1 - strh r0, [r4, 0x20] -_080B7FD6: - ldrh r1, [r4, 0x20] - lsls r1, 8 - ldrh r0, [r4, 0x1E] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xC - bne _080B806A - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x8 - bne _080B806A - b _080B8056 -_080B7FFA: - ldrh r0, [r4, 0x10] - subs r0, 0x8 - strh r0, [r4, 0x10] - adds r0, r4, 0 - bl sub_80B843C - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r1, r0 - bge _080B806A - b _080B8056 -_080B8014: - ldrh r0, [r4, 0x10] - subs r0, 0x8 - strh r0, [r4, 0x10] - adds r0, r4, 0 - bl sub_80B843C - ldrh r1, [r4, 0x24] - adds r1, 0x4 - strh r1, [r4, 0x24] - ldrh r0, [r4, 0x26] - subs r2, r0, 0x4 - strh r2, [r4, 0x26] - lsls r1, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080B8036 - strh r2, [r4, 0x24] -_080B8036: - ldr r3, _080B804C @ =gUnknown_2022984 - ldrh r2, [r4, 0x24] - lsls r0, r2, 8 - ldrh r1, [r4, 0x26] - orrs r0, r1 - strh r0, [r3] - lsls r2, 16 - lsls r1, 16 - cmp r2, r1 - bne _080B806A - b _080B8056 - .align 2, 0 -_080B804C: .4byte gUnknown_2022984 -_080B8050: - ldr r1, _080B8060 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080B8056: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B806A - .align 2, 0 -_080B8060: .4byte gScanlineEffect -_080B8064: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080B806A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B7F58 - - thumb_func_start sub_80B8070 -sub_80B8070: @ 80B8070 - push {r4-r7,lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080B8098 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _080B808C - b _080B829E -_080B808C: - lsls r0, 2 - ldr r1, _080B809C @ =_080B80A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B8098: .4byte gTasks -_080B809C: .4byte _080B80A0 - .align 2, 0 -_080B80A0: - .4byte _080B80B4 - .4byte _080B8138 - .4byte _080B817C - .4byte _080B81E8 - .4byte _080B8250 -_080B80B4: - bl IsContest - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B80F0 - ldr r0, _080B80E4 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080B80E8 @ =gUnknown_2022986 - strh r1, [r0] - ldr r4, _080B80EC @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080B829E - .align 2, 0 -_080B80E4: .4byte gUnknown_2022984 -_080B80E8: .4byte gUnknown_2022986 -_080B80EC: .4byte 0x00003f3f -_080B80F0: - ldr r0, _080B8110 @ =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - cmp r0, 0x1 - bne _080B811C - ldr r1, _080B8114 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080B8118 @ =gBattle_BG2_X - b _080B8126 - .align 2, 0 -_080B8110: .4byte gBattleAnimTarget -_080B8114: .4byte 0x00003f42 -_080B8118: .4byte gBattle_BG2_X -_080B811C: - ldr r1, _080B8130 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080B8134 @ =gBattle_BG1_X -_080B8126: - ldrh r0, [r1] - adds r0, 0xF0 - strh r0, [r1] - b _080B823C - .align 2, 0 -_080B8130: .4byte 0x00003f44 -_080B8134: .4byte gBattle_BG1_X -_080B8138: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080B8160 - mov r0, sp - bl sub_80752A0 - ldr r0, _080B815C @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r5, 0x1C] - mov r0, sp - ldrb r1, [r0, 0x8] - lsls r1, 4 - movs r0, 0 - movs r2, 0x20 - bl FillPalette - b _080B8170 - .align 2, 0 -_080B815C: .4byte gBattle_BG1_Y -_080B8160: - ldr r0, _080B8178 @ =gBattle_BG2_Y - ldrh r0, [r0] - strh r0, [r5, 0x1C] - movs r0, 0 - movs r1, 0x90 - movs r2, 0x20 - bl FillPalette -_080B8170: - movs r0, 0x3 - bl sub_80B856C - b _080B823C - .align 2, 0 -_080B8178: .4byte gBattle_BG2_Y -_080B817C: - ldr r4, _080B81C8 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - movs r6, 0 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8076B2C - subs r0, 0x7 - strh r0, [r5, 0x14] - ldrh r1, [r5, 0x16] - subs r1, r0 - lsls r1, 8 - strh r1, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x4 - strh r1, [r5, 0x24] - adds r0, 0x4 - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080B81D0 - ldr r0, _080B81CC @ =0x0000fff4 - b _080B81D2 - .align 2, 0 -_080B81C8: .4byte gBattleAnimTarget -_080B81CC: .4byte 0x0000fff4 -_080B81D0: - ldr r0, _080B81E4 @ =0x0000ffc0 -_080B81D2: - strh r0, [r5, 0x18] - ldrh r0, [r5, 0x18] - strh r0, [r5, 0x10] - strh r0, [r5, 0x12] - movs r0, 0xC - strh r0, [r5, 0x1E] - movs r0, 0x8 - strh r0, [r5, 0x20] - b _080B823C - .align 2, 0 -_080B81E4: .4byte 0x0000ffc0 -_080B81E8: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080B81F8 - ldr r0, _080B81F4 @ =0x04000016 - b _080B81FA - .align 2, 0 -_080B81F4: .4byte 0x04000016 -_080B81F8: - ldr r0, _080B8244 @ =0x0400001a -_080B81FA: - str r0, [sp, 0x10] - movs r3, 0 - add r4, sp, 0x10 - ldr r6, _080B8248 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r7, r6, r0 -_080B8208: - lsls r1, r3, 1 - adds r2, r1, r6 - ldrh r0, [r5, 0x1C] - adds r0, 0x9F - subs r0, r3 - strh r0, [r2] - adds r1, r7 - ldrh r0, [r5, 0x1C] - adds r0, 0x9F - subs r0, r3 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6F - bls _080B8208 - ldr r1, _080B824C @ =0xa2600001 - str r1, [r4, 0x4] - movs r2, 0 - movs r0, 0x1 - strb r0, [r4, 0x8] - strb r2, [r4, 0x9] - ldr r0, [sp, 0x10] - ldr r2, [r4, 0x8] - bl ScanlineEffect_SetParams -_080B823C: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080B829E - .align 2, 0 -_080B8244: .4byte 0x0400001a -_080B8248: .4byte gScanlineEffectRegBuffers -_080B824C: .4byte 0xa2600001 -_080B8250: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080B8268 - ldr r1, _080B8264 @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - b _080B8270 - .align 2, 0 -_080B8264: .4byte 0x00003f3d -_080B8268: - ldr r1, _080B82A8 @ =0x00003f3b - movs r0, 0x4A - bl SetGpuReg -_080B8270: - ldr r1, _080B82AC @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r2, _080B82B0 @ =gUnknown_2022984 - ldrh r0, [r5, 0x24] - lsls r0, 8 - ldrh r1, [r5, 0x26] - orrs r0, r1 - strh r0, [r2] - ldr r1, _080B82B4 @ =gUnknown_2022986 - movs r0, 0xA0 - strh r0, [r1] - movs r0, 0 - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - ldr r1, _080B82B8 @ =0x0000080c - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080B82BC @ =sub_80B82C0 - str r0, [r5] -_080B829E: - add sp, 0x1C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B82A8: .4byte 0x00003f3b -_080B82AC: .4byte 0x00003f3f -_080B82B0: .4byte gUnknown_2022984 -_080B82B4: .4byte gUnknown_2022986 -_080B82B8: .4byte 0x0000080c -_080B82BC: .4byte sub_80B82C0 - thumb_func_end sub_80B8070 - - thumb_func_start sub_80B82C0 -sub_80B82C0: @ 80B82C0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080B82E4 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080B82DA - b _080B842A -_080B82DA: - lsls r0, 2 - ldr r1, _080B82E8 @ =_080B82EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B82E4: .4byte gTasks -_080B82E8: .4byte _080B82EC - .align 2, 0 -_080B82EC: - .4byte _080B8300 - .4byte _080B832C - .4byte _080B8394 - .4byte _080B83F6 - .4byte _080B8408 -_080B8300: - ldrh r0, [r4, 0x12] - adds r0, 0x8 - strh r0, [r4, 0x12] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0x16] - movs r3, 0x16 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080B8316 - strh r2, [r4, 0x12] -_080B8316: - adds r0, r4, 0 - bl sub_80B843C - movs r0, 0x12 - ldrsh r1, [r4, r0] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r1, r0 - beq _080B832A - b _080B842A -_080B832A: - b _080B83FC -_080B832C: - movs r3, 0x26 - ldrsh r0, [r4, r3] - movs r2, 0x24 - ldrsh r1, [r4, r2] - subs r0, r1 - cmp r0, 0x3F - bgt _080B8348 - ldrh r0, [r4, 0x24] - subs r0, 0x4 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - adds r0, 0x4 - strh r0, [r4, 0x26] - b _080B834C -_080B8348: - movs r0, 0x1 - strh r0, [r4, 0xA] -_080B834C: - ldr r2, _080B8390 @ =gUnknown_2022984 - ldrh r0, [r4, 0x24] - lsls r0, 8 - ldrh r1, [r4, 0x26] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x10] - adds r0, 0x8 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0x14] - movs r3, 0x14 - ldrsh r1, [r4, r3] - cmp r0, r1 - blt _080B836E - strh r2, [r4, 0x10] -_080B836E: - adds r0, r4, 0 - bl sub_80B843C - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080B842A - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080B842A - movs r0, 0 - strh r0, [r4, 0xA] - b _080B83FC - .align 2, 0 -_080B8390: .4byte gUnknown_2022984 -_080B8394: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B842A - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080B83C4 - ldrh r1, [r4, 0x1E] - movs r2, 0x1E - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080B83D2 - subs r0, r1, 0x1 - strh r0, [r4, 0x1E] - b _080B83D2 -_080B83C4: - ldrh r1, [r4, 0x20] - movs r3, 0x20 - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080B83D2 - adds r0, r1, 0x1 - strh r0, [r4, 0x20] -_080B83D2: - ldrh r1, [r4, 0x20] - lsls r1, 8 - ldrh r0, [r4, 0x1E] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080B842A - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _080B842A - b _080B83FC -_080B83F6: - ldr r1, _080B8404 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080B83FC: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B842A - .align 2, 0 -_080B8404: .4byte gScanlineEffect -_080B8408: - ldr r0, _080B8430 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080B8434 @ =gUnknown_2022986 - strh r1, [r0] - ldr r4, _080B8438 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080B842A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B8430: .4byte gUnknown_2022984 -_080B8434: .4byte gUnknown_2022986 -_080B8438: .4byte 0x00003f3f - thumb_func_end sub_80B82C0 - - thumb_func_start sub_80B843C -sub_80B843C: @ 80B843C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldrh r0, [r6, 0x12] - ldrh r4, [r6, 0x10] - subs r0, r4 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - beq _080B8530 - movs r2, 0x22 - ldrsh r0, [r6, r2] - bl __divsi3 - mov r8, r0 - movs r3, 0x14 - ldrsh r0, [r6, r3] - lsls r5, r0, 8 - lsls r0, r4, 16 - movs r4, 0 - cmp r0, 0 - ble _080B849C - ldr r0, _080B8528 @ =gScanlineEffectRegBuffers - mov r12, r0 - ldr r7, _080B852C @ =gScanlineEffect -_080B8470: - lsls r2, r4, 16 - asrs r2, 16 - lsls r3, r2, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r3, r0 - add r3, r12 - adds r1, r2, 0 - subs r1, 0x9F - ldrh r0, [r6, 0x1C] - subs r0, r1 - strh r0, [r3] - adds r2, 0x1 - lsls r2, 16 - lsrs r4, r2, 16 - asrs r2, 16 - movs r1, 0x10 - ldrsh r0, [r6, r1] - cmp r2, r0 - blt _080B8470 -_080B849C: - ldrh r4, [r6, 0x10] - lsls r3, r4, 16 - asrs r1, r3, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - cmp r1, r0 - bgt _080B84E6 - ldr r0, _080B8528 @ =gScanlineEffectRegBuffers - mov r12, r0 - ldr r7, _080B852C @ =gScanlineEffect -_080B84B0: - asrs r4, r3, 16 - cmp r4, 0 - blt _080B84D2 - asrs r1, r5, 8 - subs r1, r4 - lsls r3, r4, 1 - ldrb r2, [r7, 0x14] - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 7 - adds r3, r0 - add r3, r12 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r6, 0x1C] - adds r1, r2 - strh r1, [r3] -_080B84D2: - add r5, r8 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r3, r4, 16 - asrs r1, r3, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080B84B0 -_080B84E6: - movs r3, 0x1C - ldrsh r0, [r6, r3] - adds r0, 0x9F - lsls r2, r4, 16 - asrs r1, r2, 16 - subs r5, r0, r1 - movs r3, 0x16 - ldrsh r0, [r6, r3] - cmp r1, r0 - bge _080B855E - ldr r7, _080B8528 @ =gScanlineEffectRegBuffers - ldr r4, _080B852C @ =gScanlineEffect -_080B84FE: - asrs r3, r2, 16 - cmp r3, 0 - blt _080B8516 - lsls r2, r3, 1 - ldrb r1, [r4, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - strh r5, [r2] - subs r5, 0x1 -_080B8516: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x16 - ldrsh r0, [r6, r3] - cmp r1, r0 - blt _080B84FE - b _080B855E - .align 2, 0 -_080B8528: .4byte gScanlineEffectRegBuffers -_080B852C: .4byte gScanlineEffect -_080B8530: - movs r1, 0x1C - ldrsh r0, [r6, r1] - adds r5, r0, 0 - adds r5, 0x9F - movs r4, 0 - ldr r3, _080B8568 @ =gScanlineEffectRegBuffers - movs r2, 0xF0 - lsls r2, 3 - adds r6, r3, r2 -_080B8542: - lsls r0, r4, 16 - asrs r0, 16 - lsls r2, r0, 1 - adds r1, r2, r3 - strh r5, [r1] - adds r2, r6 - strh r5, [r2] - subs r5, 0x1 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x6F - ble _080B8542 -_080B855E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B8568: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80B843C - - thumb_func_start sub_80B856C -sub_80B856C: @ 80B856C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - movs r4, 0 - ldr r7, _080B85B4 @ =gSprites - movs r1, 0x3 - ands r0, r1 - lsls r5, r0, 2 - movs r0, 0xD - negs r0, r0 - adds r6, r0, 0 -_080B8582: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080B85A2 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r0, [r1, 0x5] - ands r0, r6 - orrs r0, r5 - strb r0, [r1, 0x5] -_080B85A2: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080B8582 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B85B4: .4byte gSprites - thumb_func_end sub_80B856C - - thumb_func_start sub_80B85B8 -sub_80B85B8: @ 80B85B8 - 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 - ldr r6, _080B8658 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - ldrb r0, [r6] - adds r1, r4, 0 - bl sub_8072E48 - ldr r0, _080B865C @ =gSprites - mov r9, r0 - ldr r0, _080B8660 @ =gBattlerSpriteIds - mov r8, r0 - ldrb r0, [r6] - add r0, r8 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r9 - adds r1, 0x3E - ldrb r2, [r1] - movs r7, 0x5 - negs r7, r7 - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080B8642 - ldrb r0, [r6] - eors r0, r5 - movs r1, 0x1 - eors r4, r1 - adds r1, r4, 0 - bl sub_8072E48 - ldrb r0, [r6] - eors r0, r5 - add r0, r8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r0, 0x3E - ldrb r2, [r0] - adds r1, r7, 0 - ands r1, r2 - strb r1, [r0] -_080B8642: - mov r0, r10 - bl DestroyAnimVisualTask - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B8658: .4byte gBattleAnimAttacker -_080B865C: .4byte gSprites -_080B8660: .4byte gBattlerSpriteIds - thumb_func_end sub_80B85B8 - - thumb_func_start sub_80B8664 -sub_80B8664: @ 80B8664 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _080B86AC @ =gBattleAnimAttacker - ldrb r0, [r4] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r5, r1, 31 - adds r0, r5, 0 - bl sub_8073128 - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080B86A0 - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_8073128 -_080B86A0: - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B86AC: .4byte gBattleAnimAttacker - thumb_func_end sub_80B8664 - - thumb_func_start sub_80B86B0 -sub_80B86B0: @ 80B86B0 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080B86E0 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080B86E4 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldr r1, _080B86E8 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B86E0: .4byte gBattleAnimArgs -_080B86E4: .4byte sub_8074F6C -_080B86E8: .4byte DestroyAnimSprite - thumb_func_end sub_80B86B0 - - thumb_func_start sub_80B86EC -sub_80B86EC: @ 80B86EC - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - ldr r0, _080B87EC @ =gUnknown_2022984 - strh r6, [r0] - ldr r0, _080B87F0 @ =gUnknown_2022986 - strh r6, [r0] - ldr r1, _080B87F4 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080B87F8 @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080B87FC @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080B8800 @ =0x00000c08 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080B8750 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080B8750: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080B87CA - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080B87CA - ldr r4, _080B8804 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080B8780 - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - bne _080B87CA -_080B8780: - ldrb r0, [r4] - movs r5, 0x2 - eors r0, r5 - bl IsBattlerSpriteVisible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B87CA - ldr r3, _080B8808 @ =gSprites - ldr r1, _080B880C @ =gBattlerSpriteIds - ldrb r0, [r4] - eors r0, r5 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - subs r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r6, 0x1 -_080B87CA: - ldr r4, _080B8804 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080B8818 - ldr r1, _080B8810 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080B8814 @ =gEnemyParty - b _080B8828 - .align 2, 0 -_080B87EC: .4byte gUnknown_2022984 -_080B87F0: .4byte gUnknown_2022986 -_080B87F4: .4byte 0x00003f3f -_080B87F8: .4byte 0x00003f3d -_080B87FC: .4byte 0x00003f42 -_080B8800: .4byte 0x00000c08 -_080B8804: .4byte gBattleAnimAttacker -_080B8808: .4byte gSprites -_080B880C: .4byte gBattlerSpriteIds -_080B8810: .4byte gBattlerPartyIndexes -_080B8814: .4byte gEnemyParty -_080B8818: - ldr r1, _080B88B8 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080B88BC @ =gPlayerParty -_080B8828: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - movs r0, 0 - bl GetAnimBankSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B88C0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8076E34 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap - bl sub_807543C - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80753B4 - ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r2, _080B88D0 @ =gBattle_BG1_X - ldr r0, _080B88D4 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - negs r0, r0 - adds r0, 0x60 - strh r0, [r2] - ldr r2, _080B88D8 @ =gBattle_BG1_Y - ldrh r0, [r1, 0x22] - negs r0, r0 - adds r0, 0x20 - strh r0, [r2] - ldrb r0, [r1, 0x5] - lsrs r0, 4 - adds r0, 0x10 - adds r1, r0, 0 - ldr r2, _080B88DC @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080B88E0 - adds r0, r1, 0 - movs r1, 0 - bl sub_8075B48 - b _080B88EC - .align 2, 0 -_080B88B8: .4byte gBattlerPartyIndexes -_080B88BC: .4byte gPlayerParty -_080B88C0: .4byte gBattleAnimAttacker -_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap -_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet -_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette -_080B88D0: .4byte gBattle_BG1_X -_080B88D4: .4byte gSprites -_080B88D8: .4byte gBattle_BG1_Y -_080B88DC: .4byte gBattleAnimArgs -_080B88E0: - lsls r0, r1, 4 - ldrh r3, [r2, 0x4] - movs r1, 0x10 - movs r2, 0xB - bl BlendPalette -_080B88EC: - ldr r1, _080B8914 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r2, _080B8918 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0xA] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xC] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0xE] - strh r6, [r0, 0x14] - ldr r1, _080B891C @ =sub_80B8920 - str r1, [r0] - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B8914: .4byte gTasks -_080B8918: .4byte gBattleAnimArgs -_080B891C: .4byte sub_80B8920 - thumb_func_end sub_80B86EC - - thumb_func_start sub_80B8920 -sub_80B8920: @ 80B8920 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _080B89E8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x4 - movs r5, 0 - strh r0, [r4, 0x1C] - ldr r2, _080B89EC @ =gBattle_BG1_X - ldrh r3, [r2] - subs r1, r3, 0x4 - strh r1, [r2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x80 - beq _080B894E - b _080B8A5E -_080B894E: - strh r5, [r4, 0x1C] - adds r0, r3, 0 - adds r0, 0x7C - strh r0, [r2] - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080B89FC - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080B89F0 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r0, [r1, 0x5] - lsrs r0, 4 - adds r0, 0x10 - adds r1, r0, 0 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080B8990 - adds r0, r1, 0 - movs r1, 0x1 - bl sub_8075B48 -_080B8990: - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080B8A5E - ldr r2, _080B89F4 @ =gBattlerSpriteIds - ldr r0, _080B89F8 @ =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - adds r0, r2 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldrb r3, [r2, 0x5] - lsls r1, r3, 28 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x3 - ands r1, r0 - lsls r1, 2 - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x5] - b _080B8A5E - .align 2, 0 -_080B89E8: .4byte gTasks -_080B89EC: .4byte gBattle_BG1_X -_080B89F0: .4byte gSprites -_080B89F4: .4byte gBattlerSpriteIds -_080B89F8: .4byte gBattleAnimAttacker -_080B89FC: - cmp r0, 0x3 - bne _080B8A5E - ldr r0, _080B8A68 @ =gUnknown_2022984 - strh r5, [r0] - ldr r0, _080B8A6C @ =gUnknown_2022986 - strh r5, [r0] - ldr r4, _080B8A70 @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080B8A2E - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080B8A2E: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080B8A5E: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B8A68: .4byte gUnknown_2022984 -_080B8A6C: .4byte gUnknown_2022986 -_080B8A70: .4byte 0x00003f3f - thumb_func_end sub_80B8920 - - thumb_func_start sub_80B8A74 -sub_80B8A74: @ 80B8A74 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080B8A94 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0x7 - bhi _080B8AD8 - lsls r0, r1, 2 - ldr r1, _080B8A98 @ =_080B8A9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B8A94: .4byte gBattleAnimArgs -_080B8A98: .4byte _080B8A9C - .align 2, 0 -_080B8A9C: - .4byte _080B8ABC - .4byte _080B8ABC - .4byte _080B8ABC - .4byte _080B8ABC - .4byte _080B8AC8 - .4byte _080B8ACC - .4byte _080B8AD0 - .4byte _080B8AD4 -_080B8ABC: - ldrb r0, [r2] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - b _080B8ADA -_080B8AC8: - movs r4, 0 - b _080B8AE0 -_080B8ACC: - movs r4, 0x2 - b _080B8AE0 -_080B8AD0: - movs r4, 0x1 - b _080B8AE0 -_080B8AD4: - movs r4, 0x3 - b _080B8AE0 -_080B8AD8: - movs r2, 0xFF -_080B8ADA: - movs r0, 0 - cmp r0, 0 - beq _080B8B06 -_080B8AE0: - adds r0, r4, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080B8B04 - ldr r0, _080B8B00 @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r2, [r0] - b _080B8B06 - .align 2, 0 -_080B8B00: .4byte gBattlerSpriteIds -_080B8B04: - movs r2, 0xFF -_080B8B06: - cmp r2, 0xFF - beq _080B8B22 - ldr r1, _080B8B30 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - ldr r1, _080B8B34 @ =gBattleAnimArgs - ldrb r1, [r1, 0x2] - bl sub_8075B48 -_080B8B22: - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B8B30: .4byte gSprites -_080B8B34: .4byte gBattleAnimArgs - thumb_func_end sub_80B8A74 - - thumb_func_start sub_80B8B38 -sub_80B8B38: @ 80B8B38 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080B8B64 @ =gAnimMoveTurn - ldrb r0, [r2] - cmp r0, 0x1 - bhi _080B8B4C - ldr r1, _080B8B68 @ =gBattleAnimArgs - movs r0, 0 - strh r0, [r1, 0xE] -_080B8B4C: - ldrb r0, [r2] - cmp r0, 0x2 - bne _080B8B58 - ldr r1, _080B8B68 @ =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] -_080B8B58: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080B8B64: .4byte gAnimMoveTurn -_080B8B68: .4byte gBattleAnimArgs - thumb_func_end sub_80B8B38 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/dragon.s b/asm/dragon.s deleted file mode 100644 index bd01691f1..000000000 --- a/asm/dragon.s +++ /dev/null @@ -1,835 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B725C -sub_80B725C: @ 80B725C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080B72A4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080B72AC - ldr r2, _080B72A8 @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x6] - negs r0, r0 - strh r0, [r2, 0x6] - ldrh r0, [r2, 0x8] - negs r0, r0 - strh r0, [r2, 0x8] - adds r1, r2, 0 - b _080B72B6 - .align 2, 0 -_080B72A4: .4byte gBattleAnimAttacker -_080B72A8: .4byte gBattleAnimArgs -_080B72AC: - ldr r1, _080B72EC @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080B72B6: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080B72F0 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080B72F4 @ =sub_8074E70 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B72EC: .4byte gBattleAnimArgs -_080B72F0: .4byte move_anim_8074EE0 -_080B72F4: .4byte sub_8074E70 - thumb_func_end sub_80B725C - - thumb_func_start sub_80B72F8 -sub_80B72F8: @ 80B72F8 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8074FCC - ldr r4, _080B7350 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080B7354 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080B735C - ldr r2, _080B7358 @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r1, r0 - strh r1, [r5, 0x22] - ldrh r0, [r5, 0x32] - ldrh r1, [r2, 0x4] - subs r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - b _080B7386 - .align 2, 0 -_080B7350: .4byte gBattleAnimTarget -_080B7354: .4byte gBattleAnimAttacker -_080B7358: .4byte gBattleAnimArgs -_080B735C: - ldr r1, _080B73A0 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080B7386: - ldr r0, _080B73A0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080B73A4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080B73A8 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B73A0: .4byte gBattleAnimArgs -_080B73A4: .4byte StartAnimLinearTranslation -_080B73A8: .4byte move_anim_8074EE0 - thumb_func_end sub_80B72F8 - - thumb_func_start sub_80B73AC -sub_80B73AC: @ 80B73AC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080B73C0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080B73C8 - ldr r4, _080B73C4 @ =gBattleAnimAttacker - b _080B73CA - .align 2, 0 -_080B73C0: .4byte gBattleAnimArgs -_080B73C4: .4byte gBattleAnimAttacker -_080B73C8: - ldr r4, _080B740C @ =gBattleAnimTarget -_080B73CA: - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080B7410 @ =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, _080B7414 @ =sub_8074F6C - str r0, [r5, 0x1C] - ldr r1, _080B7418 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B740C: .4byte gBattleAnimTarget -_080B7410: .4byte gBattleAnimArgs -_080B7414: .4byte sub_8074F6C -_080B7418: .4byte move_anim_8074EE0 - thumb_func_end sub_80B73AC - - thumb_func_start sub_80B741C -sub_80B741C: @ 80B741C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080B7444 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080B7436 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080B7436: - adds r0, r4, 0 - bl sub_80B72F8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B7444: .4byte gBattleAnimAttacker - thumb_func_end sub_80B741C - - thumb_func_start sub_80B7448 -sub_80B7448: @ 80B7448 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r4, _080B749C @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - strh r5, [r6, 0x36] - movs r0, 0x1 - strh r0, [r6, 0x38] - ldr r0, _080B74A0 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r6, 0x3A] - ldr r4, _080B74A4 @ =gBattlerAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8076B2C - lsls r7, r0, 16 - lsrs r5, r7, 16 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8076B2C - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r5, r0 - bls _080B74A8 - lsrs r0, r7, 17 - b _080B74AA - .align 2, 0 -_080B749C: .4byte gBattleAnimAttacker -_080B74A0: .4byte gBattleAnimArgs -_080B74A4: .4byte gBattlerAttacker -_080B74A8: - lsrs r0, r1, 17 -_080B74AA: - strh r0, [r6, 0x3C] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Cos - strh r0, [r6, 0x24] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - ldr r0, _080B74D4 @ =sub_80B74D8 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B74D4: .4byte sub_80B74D8 - thumb_func_end sub_80B7448 - - thumb_func_start sub_80B74D8 -sub_80B74D8: @ 80B74D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080B74EA - cmp r5, 0x1 - beq _080B7556 - b _080B75DA -_080B74EA: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080B753C - strh r5, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080B753C - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080B753C - movs r0, 0x10 - strh r0, [r4, 0x38] -_080B753C: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080B75DA - movs r0, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080B75DA -_080B7556: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x95 - bgt _080B757E - adds r0, r1, 0 - adds r0, 0x8 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x95 - ble _080B757E - movs r0, 0x96 - strh r0, [r4, 0x3C] -_080B757E: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080B75C6 - movs r0, 0 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080B75C6 - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080B75C6 - movs r0, 0x10 - strh r0, [r4, 0x38] -_080B75C6: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080B75DA - adds r0, r4, 0 - bl DestroyAnimSprite -_080B75DA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80B74D8 - - thumb_func_start sub_80B75E0 -sub_80B75E0: @ 80B75E0 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080B760C @ =gTasks - adds r4, r1, r0 - ldr r0, _080B7610 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B761C - ldr r0, _080B7614 @ =0x04000014 - str r0, [sp] - ldr r0, _080B7618 @ =gBattle_BG1_X - b _080B7622 - .align 2, 0 -_080B760C: .4byte gTasks -_080B7610: .4byte gBattleAnimAttacker -_080B7614: .4byte 0x04000014 -_080B7618: .4byte gBattle_BG1_X -_080B761C: - ldr r0, _080B7698 @ =0x04000018 - str r0, [sp] - ldr r0, _080B769C @ =gBattle_BG2_X -_080B7622: - ldrh r0, [r0] - strh r0, [r4, 0xC] - ldr r0, _080B76A0 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r5, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r5, [r0, 0x9] - ldr r0, _080B76A4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0xE] - adds r0, 0x20 - strh r0, [r4, 0x10] - cmp r1, 0 - bge _080B7652 - strh r5, [r4, 0xE] -_080B7652: - ldrh r3, [r4, 0xE] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bgt _080B7680 - ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080B7664: - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0xC] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - ble _080B7664 -_080B7680: - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _080B76AC @ =sub_80B76B0 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B7698: .4byte 0x04000018 -_080B769C: .4byte gBattle_BG2_X -_080B76A0: .4byte 0xa2600001 -_080B76A4: .4byte gBattleAnimAttacker -_080B76A8: .4byte gScanlineEffectRegBuffers -_080B76AC: .4byte sub_80B76B0 - thumb_func_end sub_80B75E0 - - thumb_func_start sub_80B76B0 -sub_80B76B0: @ 80B76B0 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B76D4 @ =gTasks - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bhi _080B7766 - lsls r0, 2 - ldr r1, _080B76D8 @ =_080B76DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B76D4: .4byte gTasks -_080B76D8: .4byte _080B76DC - .align 2, 0 -_080B76DC: - .4byte _080B76F0 - .4byte _080B7712 - .4byte _080B7722 - .4byte _080B774E - .4byte _080B7760 -_080B76F0: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B7746 - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - adds r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080B7746 - b _080B7740 -_080B7712: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080B7746 - b _080B7740 -_080B7722: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B7746 - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - subs r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080B7746 -_080B7740: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_080B7746: - adds r0, r2, 0 - bl sub_80B776C - b _080B7766 -_080B774E: - ldr r1, _080B775C @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080B7766 - .align 2, 0 -_080B775C: .4byte gScanlineEffect -_080B7760: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080B7766: - pop {r0} - bx r0 - thumb_func_end sub_80B76B0 - - thumb_func_start sub_80B776C -sub_80B776C: @ 80B776C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldrh r3, [r5, 0x12] - ldrh r4, [r5, 0xE] - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r4, r0 - bgt _080B77C2 - ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers - mov r12, r7 - ldr r0, _080B77DC @ =gSineTable - mov r8, r0 - ldr r6, _080B77E0 @ =gScanlineEffect -_080B778A: - lsls r2, r4, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - lsls r0, r3, 1 - add r0, r8 - movs r7, 0 - ldrsh r1, [r0, r7] - movs r7, 0x14 - ldrsh r0, [r5, r7] - muls r0, r1 - asrs r0, 7 - ldrh r1, [r5, 0xC] - adds r0, r1 - strh r0, [r2] - adds r3, 0x8 - movs r0, 0xFF - ands r3, r0 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - movs r7, 0x10 - ldrsh r0, [r5, r7] - cmp r4, r0 - ble _080B778A -_080B77C2: - ldrh r0, [r5, 0x12] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x12] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B77D8: .4byte gScanlineEffectRegBuffers -_080B77DC: .4byte gSineTable -_080B77E0: .4byte gScanlineEffect - thumb_func_end sub_80B776C - - thumb_func_start sub_80B77E4 -sub_80B77E4: @ 80B77E4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - ldr r5, _080B7884 @ =gBattleAnimArgs - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - movs r1, 0x5 - bl __divsi3 - adds r6, r0, 0 - ldr r1, _080B7888 @ =gBattleAnimAttacker - mov r8, r1 - ldrb r0, [r1] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r5, 0x8] - adds r0, r3 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r5, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r4, 0x30] - movs r3, 0x2 - ldrsh r0, [r5, r3] - lsls r6, 16 - asrs r6, 16 - adds r1, r6, 0 - bl Sin - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - ldrh r2, [r5] - adds r3, r2, 0 - muls r3, r1 - adds r1, r3, 0 - ldrh r3, [r4, 0x20] - adds r1, r3 - strh r1, [r4, 0x20] - adds r1, r2, 0 - muls r1, r0 - adds r0, r1, 0 - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x34] - ldr r0, _080B788C @ =sub_80B7894 - str r0, [r4, 0x1C] - adds r4, 0x2E - ldr r2, _080B7890 @ =gUnknown_20399A4 - movs r1, 0x6 -_080B786C: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080B786C - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B7884: .4byte gBattleAnimArgs -_080B7888: .4byte gBattleAnimAttacker -_080B788C: .4byte sub_80B7894 -_080B7890: .4byte gUnknown_20399A4 - thumb_func_end sub_80B77E4 - - thumb_func_start sub_80B7894 -sub_80B7894: @ 80B7894 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _080B78D8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080B78D8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B7894 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/electric.s b/asm/electric.s index d020459d5..fa92c096a 100644 --- a/asm/electric.s +++ b/asm/electric.s @@ -110,7 +110,7 @@ sub_80ADC9C: @ 80ADC9C cmp r0, 0 beq _080ADCB2 adds r0, r2, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080ADCB2: pop {r0} bx r0 @@ -173,18 +173,18 @@ _080ADD1C: strh r0, [r5, 0x32] ldrh r0, [r2, 0x8] strh r0, [r5, 0x34] - ldr r1, _080ADD44 @ =move_anim_8074EE0 + ldr r1, _080ADD44 @ =DestroySpriteAndMatrix adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080ADD48 @ =sub_8074A80 + ldr r0, _080ADD48 @ =TranslateSpriteInCircleOverDuration str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080ADD40: .4byte gBattleAnimArgs -_080ADD44: .4byte move_anim_8074EE0 -_080ADD48: .4byte sub_8074A80 +_080ADD44: .4byte DestroySpriteAndMatrix +_080ADD48: .4byte TranslateSpriteInCircleOverDuration thumb_func_end sub_80ADCB8 thumb_func_start sub_80ADD4C @@ -315,7 +315,7 @@ _080ADE02: cmp r0, 0 beq _080ADE66 adds r0, r4, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -370,7 +370,7 @@ sub_80ADEB0: @ 80ADEB0 push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080ADF24 @ =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -392,7 +392,7 @@ sub_80ADEB0: @ 80ADEB0 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r5, 0x4] strh r0, [r4, 0x38] ldrh r0, [r5, 0xA] @@ -432,7 +432,7 @@ _080ADF34: .4byte sub_80ADF38 sub_80ADF38: @ 80ADF38 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080ADFA2 @@ -743,7 +743,7 @@ sub_80AE1A0: @ 80AE1A0 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldrh r2, [r4, 0x4] lsls r1, r2, 22 lsrs r1, 22 @@ -788,7 +788,7 @@ _080AE1FA: ldr r0, _080AE214 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] - ldr r0, _080AE218 @ =sub_8074C44 + ldr r0, _080AE218 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080AE21C @ =DestroyAnimSprite adds r0, r4, 0 @@ -798,7 +798,7 @@ _080AE1FA: bx r0 .align 2, 0 _080AE214: .4byte gBattleAnimArgs -_080AE218: .4byte sub_8074C44 +_080AE218: .4byte WaitAnimForDuration _080AE21C: .4byte DestroyAnimSprite thumb_func_end sub_80AE1A0 @@ -1142,7 +1142,7 @@ sub_80AE470: @ 80AE470 ands r0, r5 orrs r0, r1 strh r0, [r6, 0x4] - ldr r1, _080AE4EC @ =gUnknown_2037EE2 + ldr r1, _080AE4EC @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -1160,7 +1160,7 @@ _080AE4DC: .4byte gUnknown_83E60B8 _080AE4E0: .4byte gSprites _080AE4E4: .4byte 0x000003ff _080AE4E8: .4byte 0xfffffc00 -_080AE4EC: .4byte gUnknown_2037EE2 +_080AE4EC: .4byte gAnimVisualTaskCount _080AE4F0: .4byte sub_80AE4F4 thumb_func_end sub_80AE470 @@ -1344,11 +1344,11 @@ sub_80AE5BC: @ 80AE5BC strh r0, [r4, 0x36] strh r6, [r4, 0x38] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, _080AE6B4 @ =sub_80AE704 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080AE6B8 @ =sub_8074F6C + ldr r0, _080AE6B8 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldrh r0, [r5, 0x1A] adds r0, 0x1 @@ -1390,7 +1390,7 @@ _080AE6A8: .4byte gUnknown_83E6120 _080AE6AC: .4byte gSprites _080AE6B0: .4byte gUnknown_83E60D0 _080AE6B4: .4byte sub_80AE704 -_080AE6B8: .4byte sub_8074F6C +_080AE6B8: .4byte RunStoredCallbackWhenAnimEnds _080AE6BC: movs r1, 0x16 ldrsh r0, [r5, r1] @@ -1408,7 +1408,7 @@ _080AE6CA: sub_80AE6D0: @ 80AE6D0 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080AE6F8 @@ -1476,18 +1476,18 @@ _080AE73A: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] - ldr r1, _080AE76C @ =move_anim_8074EE0 + ldr r1, _080AE76C @ =DestroySpriteAndMatrix adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080AE770 @ =sub_8074F50 + ldr r0, _080AE770 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AE768: .4byte gBattleAnimTarget -_080AE76C: .4byte move_anim_8074EE0 -_080AE770: .4byte sub_8074F50 +_080AE76C: .4byte DestroySpriteAndMatrix +_080AE770: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80AE71C thumb_func_start sub_80AE774 @@ -1527,7 +1527,7 @@ _080AE792: ldr r1, _080AE7D4 @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080AE7D8 @ =sub_8074F6C + ldr r0, _080AE7D8 @ =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} @@ -1536,7 +1536,7 @@ _080AE792: _080AE7CC: .4byte gBattleAnimTarget _080AE7D0: .4byte gBattleAnimArgs _080AE7D4: .4byte DestroyAnimSprite -_080AE7D8: .4byte sub_8074F6C +_080AE7D8: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80AE774 thumb_func_start sub_80AE7DC @@ -1559,7 +1559,7 @@ sub_80AE7DC: @ 80AE7DC lsrs r0, 24 strh r0, [r5, 0x22] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x3A] @@ -1632,7 +1632,7 @@ _080AE864: cmp r0, r1 bls _080AE894 adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080AE894: pop {r4} pop {r0} @@ -1672,7 +1672,7 @@ _080AE8D2: b _080AEA04 _080AE8D4: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r6, 0 @@ -2203,7 +2203,7 @@ _080AECC4: cmp r0, 0 beq _080AECD8 adds r0, r5, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080AECD8: pop {r4,r5} pop {r0} @@ -2279,12 +2279,12 @@ _080AED20: movs r0, 0xC strh r0, [r5, 0x1E] subs r0, 0x4C - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x20] movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x22] diff --git a/asm/fighting.s b/asm/fighting.s index 81785b16b..89168ced6 100644 --- a/asm/fighting.s +++ b/asm/fighting.s @@ -13,14 +13,14 @@ unc_080B08A0: @ 80B08A0 movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] movs r0, 0xF strh r0, [r4, 0x2E] - ldr r0, _080B08D4 @ =sub_8074C44 + ldr r0, _080B08D4 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080B08D8 @ =DestroyAnimSprite adds r0, r4, 0 @@ -30,7 +30,7 @@ unc_080B08A0: @ 80B08A0 bx r0 .align 2, 0 _080B08D0: .4byte gBattleAnimArgs -_080B08D4: .4byte sub_8074C44 +_080B08D4: .4byte WaitAnimForDuration _080B08D8: .4byte DestroyAnimSprite thumb_func_end unc_080B08A0 @@ -110,19 +110,19 @@ sub_80B0954: @ 80B0954 bne _080B0978 adds r0, r5, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080B0980 .align 2, 0 _080B0974: .4byte gBattleAnimArgs _080B0978: adds r0, r5, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget _080B0980: ldr r0, _080B0998 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r5, 0x2E] - ldr r0, _080B099C @ =sub_8074C44 + ldr r0, _080B099C @ =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, _080B09A0 @ =DestroyAnimSprite adds r0, r5, 0 @@ -132,7 +132,7 @@ _080B0980: bx r0 .align 2, 0 _080B0998: .4byte gBattleAnimArgs -_080B099C: .4byte sub_8074C44 +_080B099C: .4byte WaitAnimForDuration _080B09A0: .4byte DestroyAnimSprite thumb_func_end sub_80B0954 @@ -188,7 +188,7 @@ _080B09E8: strh r0, [r5, 0x22] mov r0, r8 movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 @@ -197,7 +197,7 @@ _080B09E8: lsrs r6, r1, 16 mov r0, r8 movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 cmp r0, 0 @@ -267,7 +267,7 @@ _080B0A9C: mov r1, r9 ldrh r0, [r1, 0x2] strh r0, [r5, 0x2E] - ldr r0, _080B0B1C @ =gUnknown_83E7C08 + ldr r0, _080B0B1C @ =gBasicHitSplatSpriteTemplate movs r2, 0x20 ldrsh r1, [r5, r2] movs r3, 0x22 @@ -315,7 +315,7 @@ _080B0B00: _080B0B10: .4byte gBattleAnimTarget _080B0B14: .4byte gBattlerPositions _080B0B18: .4byte 0xfff00000 -_080B0B1C: .4byte gUnknown_83E7C08 +_080B0B1C: .4byte gBasicHitSplatSpriteTemplate _080B0B20: .4byte gSprites _080B0B24: .4byte SpriteCallbackDummy _080B0B28: .4byte sub_80B0B2C @@ -371,7 +371,7 @@ sub_80B0B80: @ 80B0B80 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget movs r0, 0x1E strh r0, [r4, 0x2E] ldr r0, _080B0BA0 @ =gBattleAnimArgs @@ -480,7 +480,7 @@ sub_80B0C28: @ 80B0C28 _080B0C54: adds r0, r6, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r0, _080B0CA4 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -505,7 +505,7 @@ _080B0C72: strh r0, [r6, 0x34] strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] ldrh r0, [r4, 0x8] @@ -527,7 +527,7 @@ _080B0CB0: .4byte sub_80B0CB4 sub_80B0CB4: @ 80B0CB4 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080B0CE0 @@ -559,14 +559,14 @@ sub_80B0CEC: @ 80B0CEC push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r5, _080B0D18 @ =gBattleAnimArgs ldrb r1, [r5, 0x4] adds r0, r4, 0 bl StartSpriteAnim ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] - ldr r0, _080B0D1C @ =sub_8074C44 + ldr r0, _080B0D1C @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080B0D20 @ =sub_80B0D24 adds r0, r4, 0 @@ -576,7 +576,7 @@ sub_80B0CEC: @ 80B0CEC bx r0 .align 2, 0 _080B0D18: .4byte gBattleAnimArgs -_080B0D1C: .4byte sub_8074C44 +_080B0D1C: .4byte WaitAnimForDuration _080B0D20: .4byte sub_80B0D24 thumb_func_end sub_80B0CEC @@ -594,7 +594,7 @@ sub_80B0D24: @ 80B0D24 strb r0, [r2] movs r0, 0x14 strh r0, [r4, 0x2E] - ldr r0, _080B0D50 @ =sub_8074C44 + ldr r0, _080B0D50 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080B0D54 @ =DestroyAnimSprite adds r0, r4, 0 @@ -603,7 +603,7 @@ sub_80B0D24: @ 80B0D24 pop {r0} bx r0 .align 2, 0 -_080B0D50: .4byte sub_8074C44 +_080B0D50: .4byte WaitAnimForDuration _080B0D54: .4byte DestroyAnimSprite thumb_func_end sub_80B0D24 @@ -612,7 +612,7 @@ sub_80B0D58: @ 80B0D58 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r0, _080B0D74 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] @@ -674,14 +674,14 @@ sub_80B0DD4: @ 80B0DD4 push {lr} movs r1, 0xF strh r1, [r0, 0x2E] - ldr r1, _080B0DE8 @ =sub_8074C44 + ldr r1, _080B0DE8 @ =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, _080B0DEC @ =DestroyAnimSprite bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080B0DE8: .4byte sub_8074C44 +_080B0DE8: .4byte WaitAnimForDuration _080B0DEC: .4byte DestroyAnimSprite thumb_func_end sub_80B0DD4 @@ -695,7 +695,7 @@ sub_80B0DF0: @ 80B0DF0 bne _080B0E1C adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r1, _080B0E18 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x30] @@ -1052,7 +1052,7 @@ sub_80B107C: @ 80B107C strh r0, [r5, 0x22] ldr r0, _080B10D0 @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1072,7 +1072,7 @@ _080B10D4: .4byte gBattleAnimTarget _080B10D8: ldr r0, _080B1110 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1140,8 +1140,8 @@ sub_80B111C: @ 80B111C lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080B1180 @ =move_anim_8074EE0 + bl InitAnimLinearTranslation + ldr r1, _080B1180 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 ldr r0, _080B1184 @ =sub_807563C @@ -1151,7 +1151,7 @@ _080B1178: pop {r0} bx r0 .align 2, 0 -_080B1180: .4byte move_anim_8074EE0 +_080B1180: .4byte DestroySpriteAndMatrix _080B1184: .4byte sub_807563C thumb_func_end sub_80B111C @@ -1171,7 +1171,7 @@ sub_80B1188: @ 80B1188 adds r1, r5, 0 adds r1, 0x38 lsls r2, 8 - bl sub_80765C0 + bl StorePointerInVars ldrh r0, [r4, 0x2] strh r0, [r5, 0x3A] ldrh r2, [r5, 0x4] @@ -1214,7 +1214,7 @@ sub_80B11E4: @ 80B11E4 ldrsh r0, [r7, r2] movs r2, 0x38 ldrsh r1, [r7, r2] - bl sub_80765C8 + bl LoadPointerFromVars adds r4, r0, 0 movs r1, 0x3A ldrsh r0, [r7, r1] @@ -1224,7 +1224,7 @@ sub_80B11E4: @ 80B11E4 adds r1, r7, 0 adds r1, 0x38 adds r2, r4, 0 - bl sub_80765C0 + bl StorePointerInVars asrs r4, 8 strh r4, [r7, 0x22] lsls r4, 16 @@ -1369,7 +1369,7 @@ _080B132C: ldr r0, _080B1368 @ =gBattleAnimTarget _080B1332: ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1431,7 +1431,7 @@ _080B138C: lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, _080B13CC @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 @@ -1546,14 +1546,14 @@ sub_80B1484: @ 80B1484 bne _080B14A0 adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080B14A8 .align 2, 0 _080B149C: .4byte gBattleAnimArgs _080B14A0: adds r0, r4, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget _080B14A8: bl IsContest lsls r0, 24 @@ -1574,7 +1574,7 @@ _080B14BC: movs r1, 0x1 bl StartSpriteAnim _080B14D2: - ldr r0, _080B14E8 @ =sub_8074F6C + ldr r0, _080B14E8 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080B14EC @ =DestroyAnimSprite adds r0, r4, 0 @@ -1584,7 +1584,7 @@ _080B14D2: bx r0 .align 2, 0 _080B14E4: .4byte gBattleAnimAttacker -_080B14E8: .4byte sub_8074F6C +_080B14E8: .4byte RunStoredCallbackWhenAnimEnds _080B14EC: .4byte DestroyAnimSprite thumb_func_end sub_80B1484 diff --git a/asm/fire.s b/asm/fire.s index d838039ac..efdfc8315 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -24,7 +24,7 @@ sub_80AC90C: @ 80AC90C ldr r1, _080AC944 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r1, _080AC948 @ =sub_8074AE0 + ldr r1, _080AC948 @ =TranslateSpriteInGrowingCircleOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -34,7 +34,7 @@ sub_80AC90C: @ 80AC90C .align 2, 0 _080AC940: .4byte gBattleAnimArgs _080AC944: .4byte DestroyAnimSprite -_080AC948: .4byte sub_8074AE0 +_080AC948: .4byte TranslateSpriteInGrowingCircleOverDuration thumb_func_end sub_80AC90C thumb_func_start sub_80AC94C @@ -45,7 +45,7 @@ sub_80AC94C: @ 80AC94C movs r0, 0 ldrsh r1, [r5, r0] adds r0, r4, 0 - bl sub_8074FF8 + bl SetAnimSpriteInitialXOffset ldrh r0, [r5, 0x2] ldrh r1, [r4, 0x22] adds r0, r1 @@ -56,7 +56,7 @@ sub_80AC94C: @ 80AC94C strh r0, [r4, 0x30] ldrh r0, [r5, 0x6] strh r0, [r4, 0x32] - ldr r0, _080AC988 @ =sub_8074D00 + ldr r0, _080AC988 @ =TranslateSpriteLinearFixedPoint str r0, [r4, 0x1C] ldr r1, _080AC98C @ =DestroyAnimSprite adds r0, r4, 0 @@ -66,7 +66,7 @@ sub_80AC94C: @ 80AC94C bx r0 .align 2, 0 _080AC984: .4byte gBattleAnimArgs -_080AC988: .4byte sub_8074D00 +_080AC988: .4byte TranslateSpriteLinearFixedPoint _080AC98C: .4byte DestroyAnimSprite thumb_func_end sub_80AC94C @@ -74,7 +74,7 @@ _080AC98C: .4byte DestroyAnimSprite sub_80AC990: @ 80AC990 push {r4,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080AC9C4 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -212,7 +212,7 @@ _080ACA92: cmp r1, r0 bne _080ACAA4 adds r0, r2, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080ACAA4: pop {r0} bx r0 @@ -222,7 +222,7 @@ _080ACAA4: sub_80ACAA8: @ 80ACAA8 push {r4,lr} adds r4, r0, 0 - bl sub_8074FCC + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, _080ACACC @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -348,7 +348,7 @@ _080ACB9C: b _080ACBAA _080ACBA4: adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080ACBAA: pop {r4} pop {r0} @@ -449,7 +449,7 @@ sub_80ACC60: @ 80ACC60 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080ACC80 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] movs r1, 0 @@ -497,7 +497,7 @@ sub_80ACC88: @ 80ACC88 lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080ACCDC @ =sub_80ACCE0 str r0, [r5, 0x1C] _080ACCD2: @@ -513,7 +513,7 @@ _080ACCDC: .4byte sub_80ACCE0 sub_80ACCE0: @ 80ACCE0 push {r4-r6,lr} adds r6, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080ACD28 @@ -634,7 +634,7 @@ sub_80ACDA8: @ 80ACDA8 ldr r1, _080ACDE0 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080ACDE4 @ =sub_8074CD0 + ldr r0, _080ACDE4 @ =TranslateSpriteLinear str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -642,7 +642,7 @@ sub_80ACDA8: @ 80ACDA8 .align 2, 0 _080ACDDC: .4byte gBattleAnimArgs _080ACDE0: .4byte DestroyAnimSprite -_080ACDE4: .4byte sub_8074CD0 +_080ACDE4: .4byte TranslateSpriteLinear thumb_func_end sub_80ACDA8 thumb_func_start sub_80ACDE8 @@ -650,7 +650,7 @@ sub_80ACDE8: @ 80ACDE8 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080ACE1C @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x30] @@ -662,7 +662,7 @@ sub_80ACDE8: @ 80ACDE8 movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, _080ACE20 @ =sub_8074C44 + ldr r0, _080ACE20 @ =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, _080ACE24 @ =sub_80ACE28 adds r0, r4, 0 @@ -672,7 +672,7 @@ sub_80ACDE8: @ 80ACDE8 bx r0 .align 2, 0 _080ACE1C: .4byte gBattleAnimArgs -_080ACE20: .4byte sub_8074C44 +_080ACE20: .4byte WaitAnimForDuration _080ACE24: .4byte sub_80ACE28 thumb_func_end sub_80ACDE8 @@ -753,7 +753,7 @@ sub_80ACEA4: @ 80ACEA4 ldr r0, _080ACF04 @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r5, 0 @@ -923,7 +923,7 @@ _080AD00C: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale ldr r2, _080AD030 @ =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] @@ -1635,7 +1635,7 @@ _080AD556: _080AD55C: adds r0, r5, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r4, _080AD584 @ =gBattleAnimArgs ldrb r1, [r4, 0x4] adds r0, r5, 0 @@ -1659,7 +1659,7 @@ _080AD58E: strh r0, [r5, 0x36] ldr r0, _080AD5B0 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1787,7 +1787,7 @@ _080AD68C: .4byte sub_80AD690 sub_80AD690: @ 80AD690 push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080AD6E8 @@ -1889,7 +1889,7 @@ _080AD70C: bls _080AD780 ldr r0, _080AD77C @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1906,7 +1906,7 @@ _080AD77C: .4byte gBattleAnimTarget _080AD780: ldr r0, _080AD7A4 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -2005,12 +2005,12 @@ _080AD826: adds r0, 0x1 strh r0, [r4, 0x22] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] movs r0, 0x3 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] diff --git a/asm/flying.s b/asm/flying.s index a776b54cb..252a1a957 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -46,7 +46,7 @@ sub_80B18E4: @ 80B18E4 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldrh r0, [r4, 0x22] adds r0, 0x14 strh r0, [r4, 0x22] @@ -208,7 +208,7 @@ sub_80B1A1C: @ 80B1A1C push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080B1A88 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -245,8 +245,8 @@ _080B1A3C: adds r0, r4 strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080B1A94 @ =sub_8074F50 + bl InitAnimLinearTranslation + ldr r0, _080B1A94 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r6, 0x1C] ldr r1, _080B1A98 @ =sub_80B1A9C adds r0, r6, 0 @@ -258,7 +258,7 @@ _080B1A3C: _080B1A88: .4byte gBattleAnimAttacker _080B1A8C: .4byte gBattleAnimArgs _080B1A90: .4byte gBattleAnimTarget -_080B1A94: .4byte sub_8074F50 +_080B1A94: .4byte RunStoredCallbackWhenAffineAnimEnds _080B1A98: .4byte sub_80B1A9C thumb_func_end sub_80B1A1C @@ -266,7 +266,7 @@ _080B1A98: .4byte sub_80B1A9C sub_80B1A9C: @ 80B1A9C push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080B1AB0 @@ -365,7 +365,7 @@ _080B1B60: adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions _080B1B72: ldr r4, _080B1BA4 @ =gBattleAnimArgs ldrh r0, [r4, 0x4] @@ -399,7 +399,7 @@ sub_80B1BB0: @ 80B1BB0 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080B1BEC @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] @@ -408,7 +408,7 @@ sub_80B1BB0: @ 80B1BB0 ldr r0, _080B1BF0 @ =sub_80B1BF8 str r0, [r4, 0x1C] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B1BF4 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -517,7 +517,7 @@ _080B1C72: lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080B1CBC @ =sub_80B1CC0 str r0, [r5, 0x1C] pop {r4,r5} @@ -537,7 +537,7 @@ sub_80B1CC0: @ 80B1CC0 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear ldrh r1, [r4, 0x34] lsrs r0, r1, 8 cmp r0, 0xC8 @@ -571,7 +571,7 @@ _080B1CE8: ble _080B1D30 _080B1D0A: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B1D38 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -624,7 +624,7 @@ sub_80B1D3C: @ 80B1D3C _080B1D6E: adds r0, r4, 0 bl DestroySprite - ldr r1, _080B1D84 @ =gUnknown_2037EE2 + ldr r1, _080B1D84 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -633,7 +633,7 @@ _080B1D7C: pop {r0} bx r0 .align 2, 0 -_080B1D84: .4byte gUnknown_2037EE2 +_080B1D84: .4byte gAnimVisualTaskCount thumb_func_end sub_80B1D3C thumb_func_start sub_80B1D88 @@ -725,7 +725,7 @@ _080B1DC8: cmp r0, 0 bne _080B1E64 adds r0, r6, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -744,7 +744,7 @@ _080B1E5C: .4byte gBattleAnimTarget _080B1E60: .4byte gBattleAnimArgs _080B1E64: adds r0, r6, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -790,7 +790,7 @@ _080B1E7C: b _080B1F16 _080B1EBE: adds r0, r6, 0 - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1614,7 +1614,7 @@ sub_80B24C0: @ 80B24C0 adds r4, r0, 0 ldr r0, _080B2508 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1637,7 +1637,7 @@ sub_80B24C0: @ 80B24C0 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] - ldr r0, _080B2510 @ =sub_8075DF4 + ldr r0, _080B2510 @ =TranslateAnimSpriteToTargetMonLocation str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -1645,7 +1645,7 @@ sub_80B24C0: @ 80B24C0 .align 2, 0 _080B2508: .4byte gBattleAnimTarget _080B250C: .4byte gBattleAnimAttacker -_080B2510: .4byte sub_8075DF4 +_080B2510: .4byte TranslateAnimSpriteToTargetMonLocation thumb_func_end sub_80B24C0 thumb_func_start sub_80B2514 @@ -1700,7 +1700,7 @@ _080B256E: beq _080B25A4 ldr r0, _080B25A0 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -1720,7 +1720,7 @@ _080B25A0: .4byte gBattleAnimTarget _080B25A4: ldr r0, _080B25C0 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1974,14 +1974,14 @@ sub_80B2780: @ 80B2780 bne _080B279C adds r0, r5, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080B27A4 .align 2, 0 _080B2798: .4byte gBattleAnimArgs _080B279C: adds r0, r5, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget _080B27A4: ldr r4, _080B280C @ =gBattleAnimArgs movs r2, 0x4 @@ -2101,7 +2101,7 @@ sub_80B2868: @ 80B2868 ands r0, r1 cmp r0, 0 bne _080B28E2 - ldr r1, _080B2904 @ =gUnknown_2037EE2 + ldr r1, _080B2904 @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -2159,7 +2159,7 @@ _080B28F6: bx r0 .align 2, 0 _080B2900: .4byte gTasks -_080B2904: .4byte gUnknown_2037EE2 +_080B2904: .4byte gAnimVisualTaskCount _080B2908: .4byte gBattleAnimArgs _080B290C: .4byte gUnknown_83E7C98 _080B2910: .4byte gBattleAnimTarget @@ -2179,9 +2179,9 @@ sub_80B2914: @ 80B2914 _080B2926: adds r0, r4, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B2954 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -2273,7 +2273,7 @@ _080B29C0: cmp r0, r1 bge _080B29FE movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B2A04 @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -2302,7 +2302,7 @@ sub_80B2A08: @ 80B2A08 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080B2A44 @ =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] @@ -2311,7 +2311,7 @@ sub_80B2A08: @ 80B2A08 ldr r0, _080B2A48 @ =sub_80B2A50 str r0, [r4, 0x1C] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B2A4C @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -2473,7 +2473,7 @@ _080B2B22: str r0, [sp] adds r0, r5, 0 movs r1, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] @@ -2503,7 +2503,7 @@ _080B2B72: ldrsh r3, [r5, r0] str r1, [sp] adds r0, r5, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldrb r1, [r5, 0x3] lsls r1, 26 lsrs r1, 27 @@ -2822,7 +2822,7 @@ sub_80B2D64: @ 80B2D64 asrs r5, 16 adds r0, r4, 0 adds r1, r5, 0 - bl sub_8075B30 + bl ArcTan2Neg lsls r0, 16 movs r1, 0xC0 lsls r1, 24 @@ -2834,7 +2834,7 @@ sub_80B2D64: @ 80B2D64 mov r0, r8 movs r1, 0x1 adds r2, r3, 0 - bl sub_8075A1C + bl TrySetSpriteRotScale ldr r0, _080B2E1C @ =sub_80B2E20 mov r2, r8 str r0, [r2, 0x1C] @@ -2883,7 +2883,7 @@ sub_80B2E20: @ 80B2E20 bge _080B2E60 _080B2E5A: adds r0, r2, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080B2E60: pop {r0} bx r0 @@ -2900,7 +2900,7 @@ sub_80B2E64: @ 80B2E64 cmp r0, 0 bne _080B2E9C movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080B2E98 @ =gSprites @@ -2918,7 +2918,7 @@ _080B2E94: .4byte gBattleAnimArgs _080B2E98: .4byte gSprites _080B2E9C: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 ldr r2, _080B2EC8 @ =gSprites diff --git a/asm/ghost.s b/asm/ghost.s index 194f728fe..0e8796310 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -10,7 +10,7 @@ sub_80B5268: @ 80B5268 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080B52C4 @ =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] @@ -59,7 +59,7 @@ sub_80B52D0: @ 80B52D0 adds r4, r0, 0 bl sub_80B53C0 adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080B52F0 @@ -119,7 +119,7 @@ sub_80B5344: @ 80B5344 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xA @@ -163,11 +163,11 @@ _080B5396: movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, _080B53B0 @ =sub_8074F88 + ldr r0, _080B53B0 @ =DestroyAnimSpriteAndDisableBlend str r0, [r4, 0x1C] b _080B53BA .align 2, 0 -_080B53B0: .4byte sub_8074F88 +_080B53B0: .4byte DestroyAnimSpriteAndDisableBlend _080B53B4: adds r0, r4, 0 bl sub_80B53C0 @@ -262,7 +262,7 @@ sub_80B5450: @ 80B5450 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r1, _080B546C @ =sub_80B5470 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -352,7 +352,7 @@ sub_80B54E8: @ 80B54E8 movs r0, 0x52 bl SetGpuReg movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -470,7 +470,7 @@ sub_80B55C8: @ 80B55C8 _080B55EC: .4byte gTasks _080B55F0: movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r1, r0, 24 ldrh r0, [r4, 0x8] @@ -719,7 +719,7 @@ _080B57DE: _080B57E8: .4byte gBattleAnimTarget _080B57EC: adds r0, r5, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080B57F2: pop {r4,r5} pop {r0} @@ -731,7 +731,7 @@ sub_80B57F8: @ 80B57F8 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r0, _080B580C @ =sub_80B5810 str r0, [r4, 0x1C] pop {r4} @@ -841,7 +841,7 @@ sub_80B58AC: @ 80B58AC ldr r1, _080B58D8 @ =gTasks adds r5, r0, r1 movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend movs r6, 0 movs r1, 0 strh r0, [r5, 0x8] @@ -956,7 +956,7 @@ _080B596E: lsls r0, 2 adds r4, 0x1C adds r0, r4 - ldr r1, _080B59CC @ =sub_8074D00 + ldr r1, _080B59CC @ =TranslateSpriteLinearFixedPoint str r1, [r0] ldr r0, _080B59D0 @ =sub_80B59D4 str r0, [r5] @@ -968,7 +968,7 @@ _080B59B8: _080B59C0: .4byte 0x0000ff90 _080B59C4: .4byte gSprites _080B59C8: .4byte SpriteCallbackDummy -_080B59CC: .4byte sub_8074D00 +_080B59CC: .4byte TranslateSpriteLinearFixedPoint _080B59D0: .4byte sub_80B59D4 thumb_func_end sub_80B58AC @@ -1120,7 +1120,7 @@ sub_80B5AD4: @ 80B5AD4 adds r5, r0, r1 ldr r0, _080B5B10 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 @@ -1159,7 +1159,7 @@ _080B5B2C: cmp r0, 0xF beq _080B5B5A movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend strh r0, [r5, 0x8] lsls r0, 16 cmp r0, 0 @@ -1238,7 +1238,7 @@ _080B5B68: movs r0, 0x10 strh r0, [r5, 0xE] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1492,7 +1492,7 @@ sub_80B5DCC: @ 80B5DCC adds r4, r0, r1 ldr r0, _080B5E00 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r6, r0, 24 movs r1, 0x26 @@ -1516,7 +1516,7 @@ _080B5E0A: movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x24] @@ -1814,7 +1814,7 @@ sub_80B6020: @ 80B6020 str r0, [sp, 0x4] ldrb r0, [r4] movs r1, 0x3 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x8] @@ -1866,7 +1866,7 @@ _080B6092: mov r10, r0 adds r0, r4, 0 movs r1, 0x3 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 lsrs r0, 16 mov r9, r0 @@ -2230,10 +2230,10 @@ sub_80B63B4: @ 80B63B4 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 - ldr r0, _080B6400 @ =gUnknown_2022984 + ldr r0, _080B6400 @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, _080B6404 @ =gUnknown_2022986 + ldr r0, _080B6404 @ =gBattle_WIN0V strh r1, [r0] ldr r1, _080B6408 @ =0x00003f3f movs r0, 0x48 @@ -2261,21 +2261,21 @@ _080B63FC: movs r6, 0x28 b _080B6416 .align 2, 0 -_080B6400: .4byte gUnknown_2022984 -_080B6404: .4byte gUnknown_2022986 +_080B6400: .4byte gBattle_WIN0H +_080B6404: .4byte gBattle_WIN0V _080B6408: .4byte 0x00003f3f _080B640C: .4byte 0x00003f1f _080B6410: .4byte gBattleAnimAttacker _080B6414: movs r6, 0xC8 _080B6416: - ldr r1, _080B6454 @ =gUnknown_2022984 + ldr r1, _080B6454 @ =gBattle_WIN0H lsls r3, r6, 16 asrs r2, r3, 16 lsls r0, r2, 8 orrs r0, r2 strh r0, [r1] - ldr r1, _080B6458 @ =gUnknown_2022986 + ldr r1, _080B6458 @ =gBattle_WIN0V movs r5, 0x28 ldr r0, _080B645C @ =0x00002828 strh r0, [r1] @@ -2300,8 +2300,8 @@ _080B6416: pop {r0} bx r0 .align 2, 0 -_080B6454: .4byte gUnknown_2022984 -_080B6458: .4byte gUnknown_2022986 +_080B6454: .4byte gBattle_WIN0H +_080B6458: .4byte gBattle_WIN0V _080B645C: .4byte 0x00002828 _080B6460: .4byte gTasks _080B6464: .4byte sub_80B6468 @@ -2457,12 +2457,12 @@ _080B6594: ldr r0, _080B65E4 @ =sub_80B65F0 str r0, [r4] _080B65C2: - ldr r1, _080B65E8 @ =gUnknown_2022984 + ldr r1, _080B65E8 @ =gBattle_WIN0H mov r2, r9 lsls r0, r2, 8 orrs r7, r0 strh r7, [r1] - ldr r1, _080B65EC @ =gUnknown_2022986 + ldr r1, _080B65EC @ =gBattle_WIN0V lsls r0, r6, 8 orrs r5, r0 strh r5, [r1] @@ -2476,8 +2476,8 @@ _080B65C2: bx r0 .align 2, 0 _080B65E4: .4byte sub_80B65F0 -_080B65E8: .4byte gUnknown_2022984 -_080B65EC: .4byte gUnknown_2022986 +_080B65E8: .4byte gBattle_WIN0H +_080B65EC: .4byte gBattle_WIN0V thumb_func_end sub_80B6468 thumb_func_start sub_80B65F0 @@ -2493,9 +2493,9 @@ sub_80B65F0: @ 80B65F0 lsrs r1, r0, 24 cmp r1, 0 bne _080B6636 - ldr r0, _080B6640 @ =gUnknown_2022984 + ldr r0, _080B6640 @ =gBattle_WIN0H strh r1, [r0] - ldr r0, _080B6644 @ =gUnknown_2022986 + ldr r0, _080B6644 @ =gBattle_WIN0V strh r1, [r0] ldr r4, _080B6648 @ =0x00003f3f movs r0, 0x48 @@ -2518,8 +2518,8 @@ _080B6636: bx r0 .align 2, 0 _080B663C: .4byte gPaletteFade -_080B6640: .4byte gUnknown_2022984 -_080B6644: .4byte gUnknown_2022986 +_080B6640: .4byte gBattle_WIN0H +_080B6644: .4byte gBattle_WIN0V _080B6648: .4byte 0x00003f3f thumb_func_end sub_80B65F0 @@ -2528,7 +2528,7 @@ sub_80B664C: @ 80B664C push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080B6678 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -2616,7 +2616,7 @@ _080B66BA: bne _080B671C movs r0, 0x1E strh r0, [r3, 0x2E] - ldr r0, _080B6714 @ =sub_8074C44 + ldr r0, _080B6714 @ =WaitAnimForDuration str r0, [r3, 0x1C] ldr r1, _080B6718 @ =sub_80B6728 adds r0, r3, 0 @@ -2625,7 +2625,7 @@ _080B66BA: .align 2, 0 _080B670C: .4byte 0x000003ff _080B6710: .4byte 0xfffffc00 -_080B6714: .4byte sub_8074C44 +_080B6714: .4byte WaitAnimForDuration _080B6718: .4byte sub_80B6728 _080B671C: movs r0, 0x28 @@ -2711,10 +2711,10 @@ sub_80B67A0: @ 80B67A0 movs r0, 0x52 movs r1, 0 bl SetGpuReg - ldr r0, _080B67CC @ =gUnknown_2022984 + ldr r0, _080B67CC @ =gBattle_WIN0H movs r1, 0 strh r1, [r0] - ldr r0, _080B67D0 @ =gUnknown_2022986 + ldr r0, _080B67D0 @ =gBattle_WIN0V strh r1, [r0] adds r0, r4, 0 bl DestroyAnimSprite @@ -2722,8 +2722,8 @@ sub_80B67A0: @ 80B67A0 pop {r0} bx r0 .align 2, 0 -_080B67CC: .4byte gUnknown_2022984 -_080B67D0: .4byte gUnknown_2022986 +_080B67CC: .4byte gBattle_WIN0H +_080B67D0: .4byte gBattle_WIN0V thumb_func_end sub_80B67A0 thumb_func_start sub_80B67D4 @@ -2877,13 +2877,13 @@ sub_80B68C8: @ 80B68C8 lsrs r0, 24 strh r0, [r4, 0x1A] ldrb r0, [r5] - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] ldrb r0, [r5] movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 @@ -2893,7 +2893,7 @@ sub_80B68C8: @ 80B68C8 strh r1, [r4, 0x1E] strh r6, [r4, 0x16] ldrb r0, [r5] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x12] @@ -3272,7 +3272,7 @@ sub_80B6BE4: @ 80B6BE4 adds r6, r1, r0 ldr r0, _080B6C1C @ =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r4, r0, 24 movs r1, 0x26 @@ -3315,7 +3315,7 @@ _080B6C44: movs r0, 0x10 strh r0, [r6, 0xE] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x10] @@ -3437,7 +3437,7 @@ _080B6D28: ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet add r2, sp, 0xC ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette add r1, sp, 0xC ldrb r1, [r1, 0x8] @@ -4040,7 +4040,7 @@ _080B7218: ldrh r1, [r0, 0x22] subs r1, 0x8 strh r1, [r0, 0x22] - ldr r0, _080B7258 @ =move_anim_8074EE0 + ldr r0, _080B7258 @ =DestroySpriteAndMatrix str r0, [r5, 0x1C] _080B724C: pop {r4,r5} @@ -4048,7 +4048,7 @@ _080B724C: bx r0 .align 2, 0 _080B7254: .4byte gSprites -_080B7258: .4byte move_anim_8074EE0 +_080B7258: .4byte DestroySpriteAndMatrix thumb_func_end sub_80B71B0 .align 2, 0 @ Don't pad with nop. diff --git a/asm/ground.s b/asm/ground.s deleted file mode 100644 index 3df01daf8..000000000 --- a/asm/ground.s +++ /dev/null @@ -1,1787 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B8B6C -sub_80B8B6C: @ 80B8B6C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080B8BC4 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080B8BC8 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080B8BCC @ =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_8075068 - ldr r0, _080B8BD0 @ =sub_80B8BD4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B8BC4: .4byte gBattleAnimAttacker -_080B8BC8: .4byte gBattleAnimTarget -_080B8BCC: .4byte 0x0000ffd8 -_080B8BD0: .4byte sub_80B8BD4 - thumb_func_end sub_80B8B6C - - thumb_func_start sub_80B8BD4 -sub_80B8BD4: @ 80B8BD4 - push {r4,r5,lr} - adds r5, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080B8C28 - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - movs r0, 0x14 - strh r0, [r5, 0x2E] - ldr r4, _080B8C30 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - movs r0, 0x28 - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_8075068 - ldr r0, _080B8C34 @ =sub_80B8C38 - str r0, [r5, 0x1C] -_080B8C28: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B8C30: .4byte gBattleAnimAttacker -_080B8C34: .4byte sub_80B8C38 - thumb_func_end sub_80B8BD4 - - thumb_func_start sub_80B8C38 -sub_80B8C38: @ 80B8C38 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080B8C4C - adds r0, r4, 0 - bl DestroyAnimSprite -_080B8C4C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B8C38 - - thumb_func_start sub_80B8C54 -sub_80B8C54: @ 80B8C54 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8075114 - ldr r0, _080B8CB4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080B8C74 - ldr r1, _080B8CB8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080B8C74: - ldr r4, _080B8CB8 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080B8CBC @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - ldr r0, _080B8CC0 @ =StartAnimLinearTranslation - str r0, [r6, 0x1C] - ldr r1, _080B8CC4 @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B8CB4: .4byte gBattleAnimAttacker -_080B8CB8: .4byte gBattleAnimArgs -_080B8CBC: .4byte gBattleAnimTarget -_080B8CC0: .4byte StartAnimLinearTranslation -_080B8CC4: .4byte DestroyAnimSprite - thumb_func_end sub_80B8C54 - - thumb_func_start sub_80B8CC8 -sub_80B8CC8: @ 80B8CC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r4, _080B8D48 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074844 - lsls r0, 24 - lsrs r7, r0, 24 - bl Random - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - bl Random - ands r4, r0 - adds r1, r5, 0 - cmp r1, 0x10 - ble _080B8D10 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_080B8D10: - lsls r0, r4, 16 - asrs r1, r0, 16 - cmp r1, 0x10 - ble _080B8D20 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080B8D20: - ldr r0, _080B8D4C @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r6, 0x2E] - mov r1, r8 - adds r0, r1, r5 - strh r0, [r6, 0x32] - adds r0, r7, r4 - strh r0, [r6, 0x36] - ldr r0, _080B8D50 @ =StartAnimLinearTranslation - str r0, [r6, 0x1C] - ldr r1, _080B8D54 @ =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B8D48: .4byte gBattleAnimTarget -_080B8D4C: .4byte gBattleAnimArgs -_080B8D50: .4byte StartAnimLinearTranslation -_080B8D54: .4byte move_anim_8074EE0 - thumb_func_end sub_80B8CC8 - - thumb_func_start sub_80B8D58 -sub_80B8D58: @ 80B8D58 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x1 - ldr r3, _080B8DB8 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080B8DBC @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r6, _080B8DC0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080B8DCC - ldr r4, _080B8DC4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x2] - adds r0, r2 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r6, 0x4] - adds r0, r3 - strh r0, [r5, 0x22] - movs r1, 0x2 - ldrsh r0, [r6, r1] - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - ble _080B8DB2 - movs r1, 0x1 -_080B8DB2: - strh r1, [r5, 0x2E] - ldr r0, _080B8DC8 @ =sub_80B8DE8 - b _080B8DDA - .align 2, 0 -_080B8DB8: .4byte 0x000003ff -_080B8DBC: .4byte 0xfffffc00 -_080B8DC0: .4byte gBattleAnimArgs -_080B8DC4: .4byte gBattleAnimAttacker -_080B8DC8: .4byte sub_80B8DE8 -_080B8DCC: - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x20] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x22] - negs r0, r0 - strh r0, [r5, 0x26] - ldr r0, _080B8DE4 @ =sub_80B8E24 -_080B8DDA: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B8DE4: .4byte sub_80B8E24 - thumb_func_end sub_80B8D58 - - thumb_func_start sub_80B8DE8 -sub_80B8DE8: @ 80B8DE8 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B8E06 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] -_080B8E06: - ldrh r0, [r2, 0x22] - subs r0, 0x4 - strh r0, [r2, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x4 - negs r1, r1 - cmp r0, r1 - bge _080B8E1E - adds r0, r2, 0 - bl DestroyAnimSprite -_080B8E1E: - pop {r0} - bx r0 - thumb_func_end sub_80B8DE8 - - thumb_func_start sub_80B8E24 -sub_80B8E24: @ 80B8E24 - push {lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _080B8E36 - cmp r1, 0x1 - beq _080B8E4C - b _080B8E8E -_080B8E36: - ldrh r0, [r3, 0x26] - adds r0, 0x4 - strh r0, [r3, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _080B8E8E - strh r1, [r3, 0x26] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - b _080B8E8E -_080B8E4C: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _080B8E8E - movs r0, 0 - strh r0, [r3, 0x30] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - ldrb r2, [r1] - 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 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080B8E8E - adds r0, r3, 0 - bl DestroyAnimSprite -_080B8E8E: - pop {r0} - bx r0 - thumb_func_end sub_80B8E24 - - thumb_func_start sub_80B8E94 -sub_80B8E94: @ 80B8E94 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B8EB4 @ =gTasks - adds r1, r0, r1 - ldr r0, _080B8EB8 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080B8EC0 - ldr r0, _080B8EBC @ =sub_80B8ED4 - b _080B8EC2 - .align 2, 0 -_080B8EB4: .4byte gTasks -_080B8EB8: .4byte gBattleAnimArgs -_080B8EBC: .4byte sub_80B8ED4 -_080B8EC0: - ldr r0, _080B8ED0 @ =sub_80B908C -_080B8EC2: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080B8ED0: .4byte sub_80B908C - thumb_func_end sub_80B8E94 - - thumb_func_start sub_80B8ED4 -sub_80B8ED4: @ 80B8ED4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B8EF8 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080B8EEE - b _080B9082 -_080B8EEE: - lsls r0, 2 - ldr r1, _080B8EFC @ =_080B8F00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B8EF8: .4byte gTasks -_080B8EFC: .4byte _080B8F00 - .align 2, 0 -_080B8F00: - .4byte _080B8F14 - .4byte _080B8F9C - .4byte _080B8FAC - .4byte _080B9050 - .4byte _080B9064 -_080B8F14: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, _080B8F3C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080B8F48 - ldr r0, _080B8F40 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080B8F44 @ =gBattle_BG1_Y - b _080B8F50 - .align 2, 0 -_080B8F3C: .4byte gBattleAnimAttacker -_080B8F40: .4byte gBattle_BG1_X -_080B8F44: .4byte gBattle_BG1_Y -_080B8F48: - ldr r0, _080B8F8C @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080B8F90 @ =gBattle_BG2_Y -_080B8F50: - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, _080B8F94 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0x24] - adds r0, 0x20 - strh r0, [r4, 0x26] - cmp r1, 0 - bge _080B8F72 - movs r0, 0 - strh r0, [r4, 0x24] -_080B8F72: - ldr r2, _080B8F98 @ =gSprites - movs r3, 0x1C - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080B9056 - .align 2, 0 -_080B8F8C: .4byte gBattle_BG2_X -_080B8F90: .4byte gBattle_BG2_Y -_080B8F94: .4byte gBattleAnimAttacker -_080B8F98: .4byte gSprites -_080B8F9C: - ldrb r0, [r4, 0x1E] - movs r2, 0x24 - ldrsh r1, [r4, r2] - movs r3, 0x26 - ldrsh r2, [r4, r3] - bl sub_80B92B8 - b _080B9056 -_080B8FAC: - ldrh r0, [r4, 0xC] - adds r0, 0x6 - movs r1, 0x7F - ands r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B8FCE - movs r0, 0 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_080B8FCE: - ldr r1, _080B8FF0 @ =gSineTable - movs r2, 0xC - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - ldrh r3, [r4, 0xE] - adds r2, r0, r3 - strh r2, [r4, 0x12] - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080B8FF8 - ldr r1, _080B8FF4 @ =gBattle_BG1_Y - b _080B8FFA - .align 2, 0 -_080B8FF0: .4byte gSineTable -_080B8FF4: .4byte gBattle_BG1_Y -_080B8FF8: - ldr r1, _080B901C @ =gBattle_BG2_Y -_080B8FFA: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0x3F - ble _080B9082 - ldrh r0, [r4, 0x24] - movs r1, 0x78 - subs r2, r1, r0 - strh r2, [r4, 0x12] - movs r3, 0x1E - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080B9024 - ldr r1, _080B9020 @ =gBattle_BG1_Y - b _080B9026 - .align 2, 0 -_080B901C: .4byte gBattle_BG2_Y -_080B9020: .4byte gBattle_BG1_Y -_080B9024: - ldr r1, _080B9048 @ =gBattle_BG2_Y -_080B9026: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - ldr r2, _080B904C @ =gSprites - movs r1, 0x1C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r1, 0x20] - movs r3, 0x88 - lsls r3, 1 - adds r0, r3, 0 - subs r0, r2 - strh r0, [r1, 0x24] - b _080B9056 - .align 2, 0 -_080B9048: .4byte gBattle_BG2_Y -_080B904C: .4byte gSprites -_080B9050: - ldr r1, _080B9060 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080B9056: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B9082 - .align 2, 0 -_080B9060: .4byte gScanlineEffect -_080B9064: - adds r0, r2, 0 - bl DestroyAnimVisualTask - ldr r2, _080B9088 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080B9082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B9088: .4byte gSprites - thumb_func_end sub_80B8ED4 - - thumb_func_start sub_80B908C -sub_80B908C: @ 80B908C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B90CC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r3] - movs r4, 0 - strh r4, [r1, 0x24] - strh r4, [r1, 0x26] - ldr r0, _080B90D0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B90D8 - ldr r0, _080B90D4 @ =gBattle_BG1_Y - b _080B90DA - .align 2, 0 -_080B90CC: .4byte gSprites -_080B90D0: .4byte gBattleAnimAttacker -_080B90D4: .4byte gBattle_BG1_Y -_080B90D8: - ldr r0, _080B90E8 @ =gBattle_BG2_Y -_080B90DA: - strh r4, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B90E8: .4byte gBattle_BG2_Y - thumb_func_end sub_80B908C - - thumb_func_start sub_80B90EC -sub_80B90EC: @ 80B90EC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B910C @ =gTasks - adds r1, r0, r1 - ldr r0, _080B9110 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080B9118 - ldr r0, _080B9114 @ =sub_80B912C - b _080B911A - .align 2, 0 -_080B910C: .4byte gTasks -_080B9110: .4byte gBattleAnimArgs -_080B9114: .4byte sub_80B912C -_080B9118: - ldr r0, _080B9128 @ =sub_80B91B0 -_080B911A: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080B9128: .4byte sub_80B91B0 - thumb_func_end sub_80B90EC - - thumb_func_start sub_80B912C -sub_80B912C: @ 80B912C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B914C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080B9150 - cmp r5, 0x1 - beq _080B91A4 - b _080B91AA - .align 2, 0 -_080B914C: .4byte gTasks -_080B9150: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r3, _080B91A0 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r5, [r0, 0x24] - movs r1, 0x1C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x22] - movs r0, 0xA0 - subs r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B91AA - .align 2, 0 -_080B91A0: .4byte gSprites -_080B91A4: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080B91AA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80B912C - - thumb_func_start sub_80B91B0 -sub_80B91B0: @ 80B91B0 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B91D4 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _080B92B2 - lsls r0, 2 - ldr r1, _080B91D8 @ =_080B91DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B91D4: .4byte gTasks -_080B91D8: .4byte _080B91DC - .align 2, 0 -_080B91DC: - .4byte _080B91F0 - .4byte _080B9244 - .4byte _080B9252 - .4byte _080B926C - .4byte _080B92AC -_080B91F0: - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, _080B9214 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _080B921C - ldr r0, _080B9218 @ =gBattle_BG1_X - b _080B921E - .align 2, 0 -_080B9214: .4byte gBattleAnimAttacker -_080B9218: .4byte gBattle_BG1_X -_080B921C: - ldr r0, _080B923C @ =gBattle_BG2_X -_080B921E: - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, _080B9240 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0x24] - adds r0, 0x20 - strh r0, [r4, 0x26] - b _080B929A - .align 2, 0 -_080B923C: .4byte gBattle_BG2_X -_080B9240: .4byte gBattleAnimAttacker -_080B9244: - ldrb r0, [r4, 0x1E] - movs r1, 0x26 - ldrsh r2, [r4, r1] - movs r1, 0 - bl sub_80B92B8 - b _080B929A -_080B9252: - ldr r2, _080B9268 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x60 - strh r1, [r0, 0x26] - b _080B929A - .align 2, 0 -_080B9268: .4byte gSprites -_080B926C: - ldr r2, _080B92A4 @ =gSprites - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x8 - strh r1, [r0, 0x26] - movs r0, 0x1C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080B92B2 - ldr r1, _080B92A8 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080B929A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B92B2 - .align 2, 0 -_080B92A4: .4byte gSprites -_080B92A8: .4byte gScanlineEffect -_080B92AC: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080B92B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B91B0 - - thumb_func_start sub_80B92B8 -sub_80B92B8: @ 80B92B8 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - cmp r0, 0x1 - bne _080B92DC - ldr r0, _080B92D4 @ =gBattle_BG1_X - ldrh r3, [r0] - ldr r0, _080B92D8 @ =0x04000014 - b _080B92E2 - .align 2, 0 -_080B92D4: .4byte gBattle_BG1_X -_080B92D8: .4byte 0x04000014 -_080B92DC: - ldr r0, _080B9368 @ =gBattle_BG2_X - ldrh r3, [r0] - ldr r0, _080B936C @ =0x04000018 -_080B92E2: - str r0, [sp] - lsls r0, r1, 16 - cmp r0, 0 - bge _080B92EC - movs r1, 0 -_080B92EC: - lsls r2, r1, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - cmp r2, r0 - bge _080B9318 - ldr r5, _080B9370 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080B92FE: - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r5 - strh r3, [r0] - adds r1, r6 - strh r3, [r1] - adds r2, 0x1 - lsls r2, 16 - lsrs r1, r2, 16 - lsls r2, r1, 16 - asrs r0, r2, 16 - cmp r0, r4 - blt _080B92FE -_080B9318: - lsls r1, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _080B9346 - ldr r4, _080B9370 @ =gScanlineEffectRegBuffers - lsls r0, r3, 16 - asrs r0, 16 - adds r3, r0, 0 - adds r3, 0xF0 - movs r0, 0xF0 - lsls r0, 3 - adds r5, r4, r0 -_080B9330: - asrs r2, r1, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - adds r1, r5 - strh r3, [r1] - adds r2, 0x1 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _080B9330 -_080B9346: - ldr r0, _080B9374 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B9368: .4byte gBattle_BG2_X -_080B936C: .4byte 0x04000018 -_080B9370: .4byte gScanlineEffectRegBuffers -_080B9374: .4byte 0xa2600001 - thumb_func_end sub_80B92B8 - - thumb_func_start sub_80B9378 -sub_80B9378: @ 80B9378 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080B938C @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r7, r0, 0 - cmp r1, 0 - bne _080B9394 - ldr r0, _080B9390 @ =gBattleAnimAttacker - b _080B9396 - .align 2, 0 -_080B938C: .4byte gBattleAnimArgs -_080B9390: .4byte gBattleAnimAttacker -_080B9394: - ldr r0, _080B93F8 @ =gBattleAnimTarget -_080B9396: - ldrb r4, [r0] - movs r6, 0x18 - adds r1, r7, 0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _080B93B2 - negs r0, r6 - lsls r0, 16 - lsrs r6, r0, 16 - movs r2, 0x4 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x4] -_080B93B2: - adds r0, r4, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - adds r0, r4, 0 - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1E - strh r0, [r5, 0x22] - ldrh r1, [r7, 0xA] - strh r1, [r5, 0x2E] - ldrh r1, [r7, 0x4] - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x32] - ldrh r1, [r7, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_8075068 - ldr r0, _080B93FC @ =sub_80B9400 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B93F8: .4byte gBattleAnimTarget -_080B93FC: .4byte sub_80B9400 - thumb_func_end sub_80B9378 - - thumb_func_start sub_80B9400 -sub_80B9400: @ 80B9400 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080B9414 - adds r0, r4, 0 - bl DestroyAnimSprite -_080B9414: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B9400 - - thumb_func_start sub_80B941C -sub_80B941C: @ 80B941C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080B9430 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080B9438 - ldr r0, _080B9434 @ =gBattleAnimAttacker - b _080B943A - .align 2, 0 -_080B9430: .4byte gBattleAnimArgs -_080B9434: .4byte gBattleAnimAttacker -_080B9438: - ldr r0, _080B9498 @ =gBattleAnimTarget -_080B943A: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B949C @ =0x0000fff0 - adds r0, r2 - ldr r4, _080B94A0 @ =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r4, r3] - lsls r1, 5 - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - bl sub_807492C - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r6, 0x22] - ldrh r2, [r6, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x2 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r1, r0 - ldr r3, _080B94A4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080B94A8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, _080B94AC @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldr r0, _080B94B0 @ =sub_8074C44 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B9498: .4byte gBattleAnimTarget -_080B949C: .4byte 0x0000fff0 -_080B94A0: .4byte gBattleAnimArgs -_080B94A4: .4byte 0x000003ff -_080B94A8: .4byte 0xfffffc00 -_080B94AC: .4byte DestroyAnimSprite -_080B94B0: .4byte sub_8074C44 - thumb_func_end sub_80B941C - - thumb_func_start sub_80B94B4 -sub_80B94B4: @ 80B94B4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080B94D8 @ =gTasks - adds r4, r0, r1 - ldr r0, _080B94DC @ =gBattleAnimArgs - ldrh r2, [r0, 0x2] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r6, r0, 0 - cmp r1, 0 - beq _080B94E0 - adds r0, r2, 0x3 - b _080B94EC - .align 2, 0 -_080B94D8: .4byte gTasks -_080B94DC: .4byte gBattleAnimArgs -_080B94E0: - ldr r0, _080B950C @ =gAnimMovePower - ldrh r0, [r0] - movs r1, 0xA - bl __udivsi3 - adds r0, 0x3 -_080B94EC: - strh r0, [r4, 0x26] - strh r0, [r4, 0x24] - adds r1, r6, 0 - ldrh r0, [r1, 0x4] - strh r0, [r4, 0xE] - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _080B9518 - cmp r0, 0x5 - bne _080B9558 - ldr r0, _080B9510 @ =gBattle_BG3_X - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, _080B9514 @ =sub_80B9584 - b _080B9576 - .align 2, 0 -_080B950C: .4byte gAnimMovePower -_080B9510: .4byte gBattle_BG3_X -_080B9514: .4byte sub_80B9584 -_080B9518: - movs r0, 0 - strh r0, [r4, 0x22] - movs r5, 0 -_080B951E: - lsls r0, r5, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080B9548 - movs r3, 0x22 - ldrsh r0, [r4, r3] - adds r0, 0x9 - lsls r0, 1 - adds r1, r4, 0 - adds r1, 0x8 - adds r1, r0 - ldr r0, _080B9554 @ =gBattlerSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - strh r0, [r1] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_080B9548: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080B951E - b _080B9574 - .align 2, 0 -_080B9554: .4byte gBattlerSpriteIds -_080B9558: - ldrb r0, [r6] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - cmp r0, 0xFF - bne _080B9570 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080B9578 -_080B9570: - movs r0, 0x1 - strh r0, [r4, 0x22] -_080B9574: - ldr r0, _080B9580 @ =sub_80B967C -_080B9576: - str r0, [r4] -_080B9578: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B9580: .4byte sub_80B967C - thumb_func_end sub_80B94B4 - - thumb_func_start sub_80B9584 -sub_80B9584: @ 80B9584 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080B95A8 @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _080B9608 - cmp r1, 0x1 - bgt _080B95AC - cmp r1, 0 - beq _080B95B2 - b _080B9674 - .align 2, 0 -_080B95A8: .4byte gTasks -_080B95AC: - cmp r1, 0x2 - beq _080B9668 - b _080B9674 -_080B95B2: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B9674 - strh r1, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B95DC - ldr r1, _080B95D8 @ =gBattle_BG3_X - ldrh r0, [r3, 0x26] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _080B95E6 - .align 2, 0 -_080B95D8: .4byte gBattle_BG3_X -_080B95DC: - ldr r0, _080B9604 @ =gBattle_BG3_X - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x26] - subs r1, r2 - strh r1, [r0] -_080B95E6: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r3, r2] - cmp r0, r1 - bne _080B9674 - movs r0, 0 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x24] - subs r0, 0x1 - strh r0, [r3, 0x24] - b _080B965C - .align 2, 0 -_080B9604: .4byte gBattle_BG3_X -_080B9608: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B9674 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - ands r1, r0 - cmp r1, 0 - bne _080B9634 - ldr r1, _080B9630 @ =gBattle_BG3_X - ldrh r0, [r3, 0x24] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _080B963E - .align 2, 0 -_080B9630: .4byte gBattle_BG3_X -_080B9634: - ldr r0, _080B9664 @ =gBattle_BG3_X - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x24] - subs r1, r2 - strh r1, [r0] -_080B963E: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080B9674 - movs r0, 0 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x24] - subs r0, 0x1 - strh r0, [r3, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080B9674 -_080B965C: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080B9674 - .align 2, 0 -_080B9664: .4byte gBattle_BG3_X -_080B9668: - ldr r1, _080B9678 @ =gBattle_BG3_X - ldrh r0, [r3, 0x22] - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080B9674: - pop {r0} - bx r0 - .align 2, 0 -_080B9678: .4byte gBattle_BG3_X - thumb_func_end sub_80B9584 - - thumb_func_start sub_80B967C -sub_80B967C: @ 80B967C - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B96A0 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080B96DC - cmp r5, 0x1 - bgt _080B96A4 - cmp r5, 0 - beq _080B96AA - b _080B9756 - .align 2, 0 -_080B96A0: .4byte gTasks -_080B96A4: - cmp r5, 0x2 - beq _080B9718 - b _080B9756 -_080B96AA: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B9756 - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_80B9760 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080B9756 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - b _080B9710 -_080B96DC: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080B9756 - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_80B9760 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080B9756 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080B9756 -_080B9710: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080B9756 -_080B9718: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r4, r7] - cmp r2, r0 - bge _080B9750 - ldr r0, _080B975C @ =gSprites - mov r12, r0 - adds r5, r4, 0 - adds r5, 0x8 - movs r6, 0 -_080B972C: - adds r0, r2, 0 - adds r0, 0x9 - lsls r0, 1 - adds r0, r5, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r12 - strh r6, [r0, 0x24] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r2, r0 - blt _080B972C -_080B9750: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080B9756: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B975C: .4byte gSprites - thumb_func_end sub_80B967C - - thumb_func_start sub_80B9760 -sub_80B9760: @ 80B9760 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0xC] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080B9788 - movs r0, 0x24 - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r2, [r3, 0x24] - adds r0, r4, 0 - ands r0, r2 - adds r1, r0 - lsls r1, 16 - lsrs r4, r1, 16 - b _080B9798 -_080B9788: - movs r1, 0x24 - ldrsh r0, [r3, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - negs r0, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_080B9798: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r3, r7] - cmp r2, r0 - bge _080B97CC - ldr r6, _080B97D4 @ =gSprites - adds r5, r3, 0 - adds r5, 0x8 -_080B97A8: - adds r0, r2, 0 - adds r0, 0x9 - lsls r0, 1 - adds r0, r5, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r4, [r0, 0x24] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x22 - ldrsh r0, [r3, r1] - cmp r2, r0 - blt _080B97A8 -_080B97CC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B97D4: .4byte gSprites - thumb_func_end sub_80B9760 - - thumb_func_start sub_80B97D8 -sub_80B97D8: @ 80B97D8 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, _080B97F8 @ =gBattleAnimArgs - movs r2, 0 - ldr r0, _080B97FC @ =gAnimMovePower - ldrh r0, [r0] - cmp r0, 0x63 - bls _080B97EC - movs r2, 0x1 -_080B97EC: - strh r2, [r3, 0x1E] - adds r0, r1, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080B97F8: .4byte gBattleAnimArgs -_080B97FC: .4byte gAnimMovePower - thumb_func_end sub_80B97D8 - - thumb_func_start sub_80B9800 -sub_80B9800: @ 80B9800 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _080B9818 @ =gBattleAnimArgs - ldrh r1, [r2] - movs r0, 0x1 - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - beq _080B9820 - ldr r0, _080B981C @ =gBattleAnimTarget - b _080B9822 - .align 2, 0 -_080B9818: .4byte gBattleAnimArgs -_080B981C: .4byte gBattleAnimTarget -_080B9820: - ldr r0, _080B9890 @ =gBattleAnimAttacker -_080B9822: - ldrb r0, [r0] - adds r5, r0, 0 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - ble _080B9832 - movs r0, 0x2 - eors r5, r0 -_080B9832: - ldr r0, _080B9894 @ =sub_80B98A8 - ldrb r1, [r6, 0x2] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080B9898 @ =gTasks - adds r4, r0 - adds r0, r5, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x20 - subs r1, r0 - ldr r2, _080B989C @ =0x000001ff - adds r0, r2, 0 - ands r1, r0 - strh r1, [r4, 0xA] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x40 - subs r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r4, 0xC] - ldr r2, _080B98A0 @ =gBattle_BG3_X - ldrh r0, [r4, 0xA] - strh r0, [r2] - ldr r0, _080B98A4 @ =gBattle_BG3_Y - strh r1, [r0] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0xE] - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B9890: .4byte gBattleAnimAttacker -_080B9894: .4byte sub_80B98A8 -_080B9898: .4byte gTasks -_080B989C: .4byte 0x000001ff -_080B98A0: .4byte gBattle_BG3_X -_080B98A4: .4byte gBattle_BG3_Y - thumb_func_end sub_80B9800 - - thumb_func_start sub_80B98A8 -sub_80B98A8: @ 80B98A8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080B98D8 @ =gTasks - adds r2, r0, r1 - ldr r0, _080B98DC @ =gBattleAnimArgs - movs r4, 0xE - ldrsh r1, [r0, r4] - movs r4, 0xE - ldrsh r0, [r2, r4] - cmp r1, r0 - bne _080B98E8 - ldr r0, _080B98E0 @ =gBattle_BG3_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080B98E4 @ =gBattle_BG3_Y - strh r1, [r0] - adds r0, r3, 0 - bl DestroyTask - b _080B98F4 - .align 2, 0 -_080B98D8: .4byte gTasks -_080B98DC: .4byte gBattleAnimArgs -_080B98E0: .4byte gBattle_BG3_X -_080B98E4: .4byte gBattle_BG3_Y -_080B98E8: - ldr r1, _080B98FC @ =gBattle_BG3_X - ldrh r0, [r2, 0xA] - strh r0, [r1] - ldr r1, _080B9900 @ =gBattle_BG3_Y - ldrh r0, [r2, 0xC] - strh r0, [r1] -_080B98F4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B98FC: .4byte gBattle_BG3_X -_080B9900: .4byte gBattle_BG3_Y - thumb_func_end sub_80B98A8 - - .align 2, 0 @ Don't pad with nop. @@ -365,7 +365,7 @@ sub_80AF2F0: @ 80AF2F0 ldr r1, _080AF328 @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r1, _080AF32C @ =sub_8074AE0 + ldr r1, _080AF32C @ =TranslateSpriteInGrowingCircleOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -375,7 +375,7 @@ sub_80AF2F0: @ 80AF2F0 .align 2, 0 _080AF324: .4byte gBattleAnimArgs _080AF328: .4byte DestroyAnimSprite -_080AF32C: .4byte sub_8074AE0 +_080AF32C: .4byte TranslateSpriteInGrowingCircleOverDuration thumb_func_end sub_80AF2F0 thumb_func_start sub_80AF330 @@ -383,7 +383,7 @@ sub_80AF330: @ 80AF330 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080AF364 @ =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x2 @@ -452,7 +452,7 @@ sub_80AF3B8: @ 80AF3B8 bne _080AF3D4 adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget b _080AF40A .align 2, 0 _080AF3D0: .4byte gBattleAnimArgs @@ -464,7 +464,7 @@ _080AF3D4: adds r3, r4, 0 adds r3, 0x22 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080AF420 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -487,7 +487,7 @@ _080AF40A: ldr r1, _080AF424 @ =sub_80AF42C adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080AF428 @ =sub_8074F50 + ldr r0, _080AF428 @ =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -496,7 +496,7 @@ _080AF40A: _080AF41C: .4byte gBattleAnimTarget _080AF420: .4byte gBattleAnimAttacker _080AF424: .4byte sub_80AF42C -_080AF428: .4byte sub_8074F50 +_080AF428: .4byte RunStoredCallbackWhenAffineAnimEnds thumb_func_end sub_80AF3B8 thumb_func_start sub_80AF42C @@ -526,7 +526,7 @@ sub_80AF42C: @ 80AF42C cmp r0, 0x14 bne _080AF462 adds r0, r3, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080AF462: pop {r0} bx r0 @@ -538,7 +538,7 @@ sub_80AF468: @ 80AF468 sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r6, _080AF4B0 @ =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] @@ -577,7 +577,7 @@ _080AF4B8: adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions _080AF4CA: ldr r0, _080AF4E8 @ =gBattleAnimAttacker ldrb r0, [r0] @@ -616,7 +616,7 @@ _080AF504: cmp r4, 0 bge _080AF504 adds r0, r5, 0 - bl sub_8075804 + bl InitAnimFastLinearTranslationWithSpeed ldrh r0, [r5, 0x30] movs r1, 0x1 eors r0, r1 @@ -628,7 +628,7 @@ _080AF526: movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 - bl sub_807578C + bl AnimFastTranslateLinear movs r0, 0x20 ldrsh r1, [r5, r0] movs r2, 0x24 @@ -814,7 +814,7 @@ sub_80AF690: @ 80AF690 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_807578C + bl AnimFastTranslateLinear movs r1, 0x20 ldrsh r0, [r4, r1] movs r2, 0x24 @@ -853,7 +853,7 @@ sub_80AF6D8: @ 80AF6D8 sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r1, _080AF71C @ =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] @@ -890,7 +890,7 @@ _080AF724: adds r3, r5, 0 adds r3, 0x36 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions _080AF736: ldr r0, _080AF758 @ =gBattleAnimAttacker ldrb r0, [r0] @@ -921,7 +921,7 @@ _080AF76A: adds r0, r1 strh r0, [r5, 0x36] adds r0, r5, 0 - bl sub_8075804 + bl InitAnimFastLinearTranslationWithSpeed adds r7, r5, 0 adds r7, 0x2E adds r2, r7, 0 @@ -946,7 +946,7 @@ _080AF79E: movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 - bl sub_807578C + bl AnimFastTranslateLinear movs r2, 0x20 ldrsh r1, [r5, r2] movs r2, 0x24 @@ -1011,7 +1011,7 @@ _080AF818: .4byte sub_80AF81C sub_80AF81C: @ 80AF81C push {r4,lr} adds r4, r0, 0 - bl sub_807578C + bl AnimFastTranslateLinear movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 @@ -1082,7 +1082,7 @@ sub_80AF88C: @ 80AF88C bne _080AF8B0 adds r0, r4, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget b _080AF8E6 .align 2, 0 _080AF8AC: .4byte gBattleAnimArgs @@ -1094,7 +1094,7 @@ _080AF8B0: adds r3, r4, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080AF8F4 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1152,7 +1152,7 @@ sub_80AF914: @ 80AF914 bne _080AF938 adds r0, r5, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080AF976 .align 2, 0 _080AF934: .4byte gBattleAnimArgs @@ -1164,7 +1164,7 @@ _080AF938: adds r3, r5, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -1200,7 +1200,7 @@ _080AF984: bne _080AF996 adds r0, r5, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget b _080AF9D2 _080AF996: ldr r4, _080AF9BC @ =gBattleAnimTarget @@ -1210,7 +1210,7 @@ _080AF996: adds r3, r5, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 @@ -1279,7 +1279,7 @@ _080AFA10: adds r0, r1 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r5, 0x38] ldr r1, _080AFA48 @ =sub_80AFA4C @@ -1299,7 +1299,7 @@ _080AFA48: .4byte sub_80AFA4C sub_80AFA4C: @ 80AFA4C push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 bne _080AFAD6 @@ -1328,7 +1328,7 @@ sub_80AFA4C: @ 80AFA4C ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 - bl sub_8076884 + bl GetBattlerSpriteBGPriority movs r1, 0x3 ands r1, r0 lsls r1, 2 @@ -1343,7 +1343,7 @@ _080AFAA8: ldrh r0, [r4, 0x3C] lsls r0, 24 lsrs r0, 24 - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 24 adds r0, 0x1 @@ -1426,7 +1426,7 @@ _080AFB26: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AFBB0 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap ldr r0, _080AFBB4 @ =gUnknown_83C2CE0 mov r1, sp ldrb r1, [r1, 0x8] @@ -1673,14 +1673,14 @@ sub_80AFD4C: @ 80AFD4C lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] - ldr r0, _080AFD7C @ =sub_8075DF4 + ldr r0, _080AFD7C @ =TranslateAnimSpriteToTargetMonLocation str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080AFD78: .4byte gBattleAnimAttacker -_080AFD7C: .4byte sub_8075DF4 +_080AFD7C: .4byte TranslateAnimSpriteToTargetMonLocation thumb_func_end sub_80AFD4C thumb_func_start sub_80AFD80 @@ -1737,7 +1737,7 @@ _080AFDC2: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AFE50 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap ldr r0, _080AFE54 @ =gUnknown_83C2CE0 mov r1, sp ldrb r1, [r1, 0x8] @@ -2015,7 +2015,7 @@ _080B0008: cmp r0, 0 bne _080B0064 movs r0, 0x1 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId ldr r2, _080B00CC @ =gSprites lsls r0, 24 lsrs r0, 24 @@ -2105,7 +2105,7 @@ _080B00F8: adds r0, r6 strh r0, [r5, 0x36] ldrb r0, [r4] - bl sub_8076884 + bl GetBattlerSpriteBGPriority lsls r0, 24 lsrs r0, 16 ldrh r1, [r5, 0x3C] @@ -2123,7 +2123,7 @@ _080B00F8: strb r0, [r1] _080B012C: adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080B0144 @ =sub_80B0148 str r0, [r5, 0x1C] pop {r3} @@ -2159,7 +2159,7 @@ _080B0168: b _080B0380 _080B016A: adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear ldr r1, _080B0194 @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] @@ -2251,13 +2251,13 @@ _080B0202: ands r0, r1 strh r0, [r4, 0x38] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation b _080B0380 .align 2, 0 _080B022C: .4byte gSineTable _080B0230: adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear ldr r1, _080B028C @ =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] @@ -2397,7 +2397,7 @@ _080B032A: _080B0340: .4byte 0x0000fff0 _080B0344: adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080B0380 @@ -2420,7 +2420,7 @@ _080B0344: _080B0372: adds r0, r4, 0 bl DestroySprite - ldr r1, _080B0388 @ =gUnknown_2037EE2 + ldr r1, _080B0388 @ =gAnimVisualTaskCount ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] @@ -2429,7 +2429,7 @@ _080B0380: pop {r0} bx r0 .align 2, 0 -_080B0388: .4byte gUnknown_2037EE2 +_080B0388: .4byte gAnimVisualTaskCount thumb_func_end sub_80B0148 thumb_func_start sub_80B038C @@ -2610,7 +2610,7 @@ _080B04D0: .4byte gUnknown_83E652C _080B04D4: adds r0, r5, 0 movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x6 @@ -2622,7 +2622,7 @@ _080B04D4: lsrs r7, r1, 16 adds r0, r5, 0 movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x6 @@ -2634,7 +2634,7 @@ _080B04D4: _080B050A: adds r0, r5, 0 movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x6 @@ -2646,7 +2646,7 @@ _080B050A: lsrs r7, r1, 16 adds r0, r5, 0 movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x6 @@ -2904,7 +2904,7 @@ _080B071A: bl StartSpriteAffineAnim adds r0, r5, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r6, _080B0780 @ =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] @@ -2938,7 +2938,7 @@ _080B0742: ldrh r0, [r6, 0xA] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080B078C @ =sub_80B0790 str r0, [r5, 0x1C] pop {r4-r6} @@ -2956,14 +2956,14 @@ _080B078C: .4byte sub_80B0790 sub_80B0790: @ 80B0790 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B07B2 adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim - ldr r0, _080B07B8 @ =sub_8074F6C + ldr r0, _080B07B8 @ =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, _080B07BC @ =DestroyAnimSprite adds r0, r4, 0 @@ -2973,7 +2973,7 @@ _080B07B2: pop {r0} bx r0 .align 2, 0 -_080B07B8: .4byte sub_8074F6C +_080B07B8: .4byte RunStoredCallbackWhenAnimEnds _080B07BC: .4byte DestroyAnimSprite thumb_func_end sub_80B0790 @@ -2994,7 +2994,7 @@ sub_80B07C0: @ 80B07C0 strh r0, [r4, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget bl Random movs r5, 0xFF ands r5, r0 diff --git a/asm/normal.s b/asm/normal.s deleted file mode 100644 index 75c4dcf6e..000000000 --- a/asm/normal.s +++ /dev/null @@ -1,1978 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B9904 -sub_80B9904: @ 80B9904 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080B993C @ =gBattleAnimArgs - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r0, _080B9940 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080B9944 - ldrh r0, [r5, 0x6] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x1 - strh r0, [r4, 0x36] - b _080B9952 - .align 2, 0 -_080B993C: .4byte gBattleAnimArgs -_080B9940: .4byte gBattleAnimAttacker -_080B9944: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - strh r1, [r4, 0x36] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080B9952: - ldr r0, _080B9968 @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r4, 0x34] - ldr r1, _080B996C @ =sub_80B9970 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9968: .4byte gBattleAnimArgs -_080B996C: .4byte sub_80B9970 - thumb_func_end sub_80B9904 - - thumb_func_start sub_80B9970 -sub_80B9970: @ 80B9970 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x1E - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r1, 0xA - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - cmp r0, 0x7F - bhi _080B99A2 - ldrb r0, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080B99AA -_080B99A2: - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] -_080B99AA: - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080B99CE - adds r0, r4, 0 - bl DestroyAnimSprite -_080B99CE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B9970 - - thumb_func_start sub_80B99D4 -sub_80B99D4: @ 80B99D4 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r4, _080B9A0C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_80B9A14 - movs r1, 0x2 - ldrsb r1, [r4, r1] - ldrb r2, [r4, 0x4] - ldrb r3, [r4, 0x6] - ldrh r4, [r4, 0x8] - str r4, [sp] - bl BeginNormalPaletteFade - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080B9A10 @ =sub_80B9A5C - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9A0C: .4byte gBattleAnimArgs -_080B9A10: .4byte sub_80B9A5C - thumb_func_end sub_80B99D4 - - thumb_func_start sub_80B9A14 -sub_80B9A14: @ 80B9A14 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x1 - mov r8, r0 - mov r1, r8 - ands r1, r4 - mov r8, r1 - lsls r0, 16 - asrs r1, r0, 17 - ands r1, r4 - asrs r2, r0, 18 - ands r2, r4 - asrs r3, r0, 19 - ands r3, r4 - asrs r6, r0, 20 - ands r6, r4 - asrs r5, r0, 21 - ands r5, r4 - asrs r0, 22 - ands r0, r4 - str r6, [sp] - str r5, [sp, 0x4] - str r0, [sp, 0x8] - mov r0, r8 - bl sub_8075BE8 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80B9A14 - - thumb_func_start sub_80B9A5C -sub_80B9A5C: @ 80B9A5C - push {lr} - adds r2, r0, 0 - ldr r0, _080B9A78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9A72 - adds r0, r2, 0 - bl DestroyAnimSprite -_080B9A72: - pop {r0} - bx r0 - .align 2, 0 -_080B9A78: .4byte gPaletteFade - thumb_func_end sub_80B9A5C - - thumb_func_start sub_80B9A7C -sub_80B9A7C: @ 80B9A7C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080B9AC8 @ =gBattleAnimArgs - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x32] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x34] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0x38] - ldrh r0, [r4, 0xC] - strh r0, [r5, 0x3A] - ldrh r0, [r4] - strh r0, [r5, 0x3C] - movs r1, 0x3C - ldrsh r0, [r5, r1] - bl sub_80B9A14 - ldrb r1, [r4, 0x8] - ldrh r2, [r4, 0x6] - bl BlendPalettes - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080B9ACC @ =sub_80B9AD0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9AC8: .4byte gBattleAnimArgs -_080B9ACC: .4byte sub_80B9AD0 - thumb_func_end sub_80B9A7C - - thumb_func_start sub_80B9AD0 -sub_80B9AD0: @ 80B9AD0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080B9AE4 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _080B9B54 -_080B9AE4: - ldr r0, _080B9B00 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9B54 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080B9B08 - ldr r0, _080B9B04 @ =sub_80B9B5C - str r0, [r4, 0x1C] - b _080B9B54 - .align 2, 0 -_080B9B00: .4byte gPaletteFade -_080B9B04: .4byte sub_80B9B5C -_080B9B08: - movs r2, 0x3C - ldrsh r0, [r4, r2] - bl sub_80B9A14 - adds r3, r0, 0 - ldrh r1, [r4, 0x30] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080B9B2E - ldrh r1, [r4, 0x36] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x34] - adds r0, r3, 0 - bl BlendPalettes - b _080B9B3C -_080B9B2E: - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x38] - adds r0, r3, 0 - bl BlendPalettes -_080B9B3C: - ldrh r0, [r4, 0x30] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - eors r0, r1 - strh r0, [r4, 0x30] - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x32] - subs r0, 0x1 - strh r0, [r4, 0x32] -_080B9B54: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B9AD0 - - thumb_func_start sub_80B9B5C -sub_80B9B5C: @ 80B9B5C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080B9B88 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9B82 - movs r1, 0x3C - ldrsh r0, [r4, r1] - bl sub_80B9A14 - movs r1, 0 - movs r2, 0 - bl BlendPalettes - adds r0, r4, 0 - bl DestroyAnimSprite -_080B9B82: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B9B88: .4byte gPaletteFade - thumb_func_end sub_80B9B5C - - thumb_func_start sub_80B9B8C -sub_80B9B8C: @ 80B9B8C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080B9BD0 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r2, [r4, 0x2E] - movs r0, 0xA - strh r0, [r4, 0x30] - movs r0, 0x8 - strh r0, [r4, 0x32] - movs r0, 0x28 - strh r0, [r4, 0x34] - movs r0, 0x70 - strh r0, [r4, 0x36] - strh r2, [r4, 0x38] - ldr r1, _080B9BD4 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, _080B9BD8 @ =sub_8074AE0 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B9BD0: .4byte gBattleAnimArgs -_080B9BD4: .4byte move_anim_8074EE0 -_080B9BD8: .4byte sub_8074AE0 - thumb_func_end sub_80B9B8C - - thumb_func_start sub_80B9BDC -sub_80B9BDC: @ 80B9BDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B9C20 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r3, _080B9C24 @ =gBattleAnimArgs - ldrh r1, [r3] - movs r5, 0 - strh r1, [r4, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r4, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r4, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r4, 0xE] - ldrh r2, [r3, 0x8] - strh r2, [r4, 0x10] - ldrh r1, [r3, 0xA] - strh r1, [r4, 0x12] - strh r5, [r4, 0x18] - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - bl sub_80B9C2C - ldr r0, _080B9C28 @ =sub_80B9C7C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9C20: .4byte gTasks -_080B9C24: .4byte gBattleAnimArgs -_080B9C28: .4byte sub_80B9C7C - thumb_func_end sub_80B9BDC - - thumb_func_start sub_80B9C2C -sub_80B9C2C: @ 80B9C2C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B9C78 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - bl sub_80B9A14 - movs r1, 0xA - ldrsb r1, [r4, r1] - ldrh r2, [r4, 0x12] - str r2, [sp] - adds r2, r5, 0 - adds r3, r6, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x18] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x18] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B9C78: .4byte gTasks - thumb_func_end sub_80B9C2C - - thumb_func_start sub_80B9C7C -sub_80B9C7C: @ 80B9C7C - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - ldr r0, _080B9CB4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9CDE - ldr r1, _080B9CB8 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0xC - ldrsh r0, [r3, r5] - adds r6, r1, 0 - adds r5, r2, 0 - cmp r0, 0 - ble _080B9CD8 - movs r1, 0x18 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080B9CBC - ldrb r1, [r3, 0xE] - ldrb r2, [r3, 0x10] - b _080B9CC0 - .align 2, 0 -_080B9CB4: .4byte gPaletteFade -_080B9CB8: .4byte gTasks -_080B9CBC: - ldrb r1, [r3, 0x10] - ldrb r2, [r3, 0xE] -_080B9CC0: - adds r0, r5, r4 - lsls r0, 3 - adds r0, r6 - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0x1 - bne _080B9CD0 - movs r2, 0 -_080B9CD0: - adds r0, r4, 0 - bl sub_80B9C2C - b _080B9CDE -_080B9CD8: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080B9CDE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B9C7C - - thumb_func_start sub_80B9CE4 -sub_80B9CE4: @ 80B9CE4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r3, _080B9D88 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r3 - ldr r2, _080B9D8C @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x8] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0xA] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0xC] - ldrh r1, [r2, 0x6] - strh r1, [r0, 0xE] - ldrh r1, [r2, 0x8] - strh r1, [r0, 0x10] - ldrh r1, [r2, 0xA] - strh r1, [r0, 0x12] - strh r5, [r0, 0x18] - movs r4, 0 - ldr r0, _080B9D90 @ =gBattlersCount - ldrb r1, [r0] - mov r9, r3 - mov r8, r2 - cmp r5, r1 - bge _080B9D4C - ldr r0, _080B9D94 @ =gBattleAnimAttacker - ldrb r3, [r0] - ldr r7, _080B9D98 @ =gBattleAnimTarget - movs r0, 0x1 - mov r12, r0 - adds r2, r1, 0 -_080B9D32: - cmp r4, r3 - beq _080B9D46 - ldrb r1, [r7] - cmp r4, r1 - beq _080B9D46 - adds r1, r4, 0 - adds r1, 0x10 - mov r0, r12 - lsls r0, r1 - orrs r5, r0 -_080B9D46: - adds r4, 0x1 - cmp r4, r2 - blt _080B9D32 -_080B9D4C: - mov r2, r8 - movs r1, 0 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080B9D5A - movs r0, 0xE - orrs r5, r0 -_080B9D5A: - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - add r4, r9 - lsrs r0, r5, 16 - strh r0, [r4, 0x1A] - movs r0, 0xFF - ands r5, r0 - strh r5, [r4, 0x1C] - ldrb r2, [r4, 0x10] - adds r0, r6, 0 - movs r1, 0 - bl sub_80B9DA0 - ldr r0, _080B9D9C @ =sub_80B9DF0 - str r0, [r4] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B9D88: .4byte gTasks -_080B9D8C: .4byte gBattleAnimArgs -_080B9D90: .4byte gBattlersCount -_080B9D94: .4byte gBattleAnimAttacker -_080B9D98: .4byte gBattleAnimTarget -_080B9D9C: .4byte sub_80B9DF0 - thumb_func_end sub_80B9CE4 - - thumb_func_start sub_80B9DA0 -sub_80B9DA0: @ 80B9DA0 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r3, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r1, _080B9DEC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrh r0, [r4, 0x1A] - lsls r0, 16 - ldrh r1, [r4, 0x1C] - orrs r0, r1 - movs r1, 0xA - ldrsb r1, [r4, r1] - ldrh r2, [r4, 0x12] - str r2, [sp] - adds r2, r5, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x18] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x18] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9DEC: .4byte gTasks - thumb_func_end sub_80B9DA0 - - thumb_func_start sub_80B9DF0 -sub_80B9DF0: @ 80B9DF0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - ldr r0, _080B9E28 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9E52 - ldr r1, _080B9E2C @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0xC - ldrsh r0, [r3, r5] - adds r6, r1, 0 - adds r5, r2, 0 - cmp r0, 0 - ble _080B9E4C - movs r1, 0x18 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080B9E30 - ldrb r1, [r3, 0xE] - ldrb r2, [r3, 0x10] - b _080B9E34 - .align 2, 0 -_080B9E28: .4byte gPaletteFade -_080B9E2C: .4byte gTasks -_080B9E30: - ldrb r1, [r3, 0x10] - ldrb r2, [r3, 0xE] -_080B9E34: - adds r0, r5, r4 - lsls r0, 3 - adds r0, r6 - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0x1 - bne _080B9E44 - movs r2, 0 -_080B9E44: - adds r0, r4, 0 - bl sub_80B9DA0 - b _080B9E52 -_080B9E4C: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080B9E52: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B9DF0 - - thumb_func_start sub_80B9E58 -sub_80B9E58: @ 80B9E58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B9E9C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r3, _080B9EA0 @ =gBattleAnimArgs - ldrh r1, [r3] - movs r5, 0 - strh r1, [r4, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r4, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r4, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r4, 0xE] - ldrh r2, [r3, 0x8] - strh r2, [r4, 0x10] - ldrh r1, [r3, 0xA] - strh r1, [r4, 0x12] - strh r5, [r4, 0x18] - lsls r2, 24 - lsrs r2, 24 - movs r1, 0 - bl sub_80B9EA8 - ldr r0, _080B9EA4 @ =sub_80B9F04 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9E9C: .4byte gTasks -_080B9EA0: .4byte gBattleAnimArgs -_080B9EA4: .4byte sub_80B9F04 - thumb_func_end sub_80B9E58 - - thumb_func_start sub_80B9EA8 -sub_80B9EA8: @ 80B9EA8 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B9F00 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrh r0, [r4, 0x8] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r2, 0x1 - lsls r2, r0 - movs r1, 0xA - ldrsb r1, [r4, r1] - ldrh r0, [r4, 0x12] - str r0, [sp] - adds r0, r2, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x18] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x18] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B9F00: .4byte gTasks - thumb_func_end sub_80B9EA8 - - thumb_func_start sub_80B9F04 -sub_80B9F04: @ 80B9F04 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - ldr r0, _080B9F3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080B9F66 - ldr r1, _080B9F40 @ =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0xC - ldrsh r0, [r3, r5] - adds r6, r1, 0 - adds r5, r2, 0 - cmp r0, 0 - ble _080B9F60 - movs r1, 0x18 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080B9F44 - ldrb r1, [r3, 0xE] - ldrb r2, [r3, 0x10] - b _080B9F48 - .align 2, 0 -_080B9F3C: .4byte gPaletteFade -_080B9F40: .4byte gTasks -_080B9F44: - ldrb r1, [r3, 0x10] - ldrb r2, [r3, 0xE] -_080B9F48: - adds r0, r5, r4 - lsls r0, 3 - adds r0, r6 - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0x1 - bne _080B9F58 - movs r2, 0 -_080B9F58: - adds r0, r4, 0 - bl sub_80B9EA8 - b _080B9F66 -_080B9F60: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080B9F66: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B9F04 - - thumb_func_start sub_80B9F6C -sub_80B9F6C: @ 80B9F6C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B9FCC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r5, _080B9FD0 @ =gBattleAnimArgs - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x8] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0xE] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x10] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x12] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r5] - strh r0, [r4, 0x16] - ldrh r0, [r5] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - ldrb r3, [r5, 0x8] - ldrh r0, [r5, 0x6] - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080B9FD4 @ =sub_80B9FD8 - str r0, [r4] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B9FCC: .4byte gTasks -_080B9FD0: .4byte gBattleAnimArgs -_080B9FD4: .4byte sub_80B9FD8 - thumb_func_end sub_80B9F6C - - thumb_func_start sub_80B9FD8 -sub_80B9FD8: @ 80B9FD8 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B9FFC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080BA000 - subs r0, r1, 0x1 - strh r0, [r4, 0x8] - b _080BA084 - .align 2, 0 -_080B9FFC: .4byte gTasks -_080BA000: - ldr r0, _080BA01C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BA084 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080BA024 - ldr r0, _080BA020 @ =sub_80BA090 - str r0, [r4] - b _080BA084 - .align 2, 0 -_080BA01C: .4byte gPaletteFade -_080BA020: .4byte sub_80BA090 -_080BA024: - ldrh r0, [r4, 0x16] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r2, 0x1 - lsls r2, r0 - ldrh r1, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BA052 - ldrb r3, [r4, 0x10] - ldrh r0, [r4, 0xE] - str r0, [sp] - adds r0, r2, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade - b _080BA062 -_080BA052: - ldrb r3, [r4, 0x14] - ldrh r0, [r4, 0x12] - str r0, [sp] - adds r0, r2, 0 - movs r1, 0 - adds r2, r3, 0 - bl BeginNormalPaletteFade -_080BA062: - ldr r0, _080BA08C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - movs r3, 0x80 - lsls r3, 1 - adds r2, r3, 0 - eors r0, r2 - strh r0, [r1, 0xA] - movs r2, 0xFF - ands r0, r2 - strh r0, [r1, 0x8] - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] -_080BA084: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA08C: .4byte gTasks - thumb_func_end sub_80B9FD8 - - thumb_func_start sub_80BA090 -sub_80BA090: @ 80BA090 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BA0E0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080BA0D6 - ldr r1, _080BA0E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x16] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - str r5, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl BeginNormalPaletteFade - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080BA0D6: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA0E0: .4byte gPaletteFade -_080BA0E4: .4byte gTasks - thumb_func_end sub_80BA090 - - thumb_func_start sub_80BA0E8 -sub_80BA0E8: @ 80BA0E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r2, 0 - ldr r0, _080BA160 @ =gBattleAnimAttacker - ldrb r6, [r0] - ldr r0, _080BA164 @ =gBattleAnimTarget - ldrb r7, [r0] - ldr r4, _080BA168 @ =gBattleAnimArgs - ldrh r1, [r4] - movs r5, 0x80 - lsls r5, 1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA122 - str r2, [sp] - str r2, [sp, 0x4] - str r2, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r3, 0 - bl sub_8075BE8 - adds r2, r0, 0 -_080BA122: - ldrh r1, [r4, 0x2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA134 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r6 - orrs r2, r0 -_080BA134: - ldrh r1, [r4, 0x4] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA146 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r7 - orrs r2, r0 -_080BA146: - adds r0, r2, 0 - bl InvertPlttBuffer - mov r0, r8 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA160: .4byte gBattleAnimAttacker -_080BA164: .4byte gBattleAnimTarget -_080BA168: .4byte gBattleAnimArgs - thumb_func_end sub_80BA0E8 - - thumb_func_start sub_80BA16C -sub_80BA16C: @ 80BA16C - 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 r1, _080BA260 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BA1AE - ldr r1, _080BA264 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x10] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xA] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x12] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x16] -_080BA1AE: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldr r0, _080BA268 @ =gBattleAnimAttacker - ldrb r0, [r0] - mov r9, r0 - ldr r0, _080BA26C @ =gBattleAnimTarget - ldrb r0, [r0] - mov r10, r0 - ldrh r1, [r4, 0xC] - movs r7, 0x80 - lsls r7, 1 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA1D0 - ldr r5, _080BA270 @ =0x0000ffff -_080BA1D0: - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA200 - ldr r2, _080BA274 @ =gSprites - ldr r0, _080BA278 @ =gHealthboxSpriteIds - add r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x14 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r1, r6, 0 - lsls r1, r0 - lsls r1, 16 - orrs r5, r1 -_080BA200: - ldrh r1, [r4, 0xE] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA214 - adds r0, r6, 0 - mov r2, r9 - lsls r0, r2 - lsls r0, 16 - orrs r5, r0 -_080BA214: - ldrh r1, [r4, 0x10] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080BA228 - adds r0, r6, 0 - mov r1, r10 - lsls r0, r1 - lsls r0, 16 - orrs r5, r0 -_080BA228: - movs r1, 0x12 - ldrsb r1, [r4, r1] - movs r2, 0x14 - ldrsb r2, [r4, r2] - movs r3, 0x16 - ldrsb r3, [r4, r3] - adds r0, r5, 0 - bl TintPlttBuffer - movs r2, 0x8 - ldrsh r1, [r4, r2] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080BA252 - adds r0, r5, 0 - bl UnfadePlttBuffer - mov r0, r8 - bl DestroyAnimVisualTask -_080BA252: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA260: .4byte gTasks -_080BA264: .4byte gBattleAnimArgs -_080BA268: .4byte gBattleAnimAttacker -_080BA26C: .4byte gBattleAnimTarget -_080BA270: .4byte 0x0000ffff -_080BA274: .4byte gSprites -_080BA278: .4byte gHealthboxSpriteIds - thumb_func_end sub_80BA16C - - thumb_func_start sub_80BA27C -sub_80BA27C: @ 80BA27C - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080BA2B0 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x34] - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080BA2C4 - cmp r0, 0x1 - bgt _080BA2B4 - cmp r0, 0 - beq _080BA2BA - b _080BA2DC - .align 2, 0 -_080BA2B0: .4byte gBattleAnimArgs -_080BA2B4: - cmp r0, 0x2 - beq _080BA2CC - b _080BA2DC -_080BA2BA: - ldr r1, _080BA2C0 @ =gBattle_BG3_X - b _080BA2CE - .align 2, 0 -_080BA2C0: .4byte gBattle_BG3_X -_080BA2C4: - ldr r1, _080BA2C8 @ =gBattle_BG3_Y - b _080BA2CE - .align 2, 0 -_080BA2C8: .4byte gBattle_BG3_Y -_080BA2CC: - ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX -_080BA2CE: - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - b _080BA2E4 - .align 2, 0 -_080BA2D8: .4byte gSpriteCoordOffsetX -_080BA2DC: - ldr r1, _080BA314 @ =gSpriteCoordOffsetY - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080BA2E4: - movs r0, 0x3A - ldrsh r1, [r4, r0] - movs r2, 0x3C - ldrsh r0, [r4, r2] - lsls r0, 16 - orrs r1, r0 - ldrh r0, [r1] - strh r0, [r4, 0x36] - ldr r0, _080BA318 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r4, 0x38] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BA308 - bl sub_80BA3CC -_080BA308: - ldr r0, _080BA31C @ =sub_80BA320 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA314: .4byte gSpriteCoordOffsetY -_080BA318: .4byte gBattleAnimArgs -_080BA31C: .4byte sub_80BA320 - thumb_func_end sub_80BA27C - - thumb_func_start sub_80BA320 -sub_80BA320: @ 80BA320 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x34] - movs r2, 0x34 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080BA362 - subs r0, r1, 0x1 - strh r0, [r3, 0x34] - ldrh r1, [r3, 0x30] - movs r2, 0x30 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080BA342 - subs r0, r1, 0x1 - strh r0, [r3, 0x30] - b _080BA3BA -_080BA342: - ldrh r0, [r3, 0x32] - strh r0, [r3, 0x30] - movs r0, 0x3A - ldrsh r1, [r3, r0] - movs r2, 0x3C - ldrsh r0, [r3, r2] - lsls r0, 16 - orrs r1, r0 - ldrh r0, [r3, 0x2E] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - ldrh r0, [r3, 0x2E] - negs r0, r0 - strh r0, [r3, 0x2E] - b _080BA3BA -_080BA362: - movs r0, 0x3A - ldrsh r1, [r3, r0] - movs r2, 0x3C - ldrsh r0, [r3, r2] - lsls r0, 16 - orrs r1, r0 - ldrh r0, [r3, 0x36] - strh r0, [r1] - ldrh r0, [r3, 0x38] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BA3B4 - movs r4, 0 - ldr r5, _080BA3C0 @ =gBattlersCount - ldrb r0, [r5] - cmp r4, r0 - bcs _080BA3B4 - ldr r2, _080BA3C4 @ =gSprites - mov r12, r2 - ldr r6, _080BA3C8 @ =gBattlerSpriteIds - movs r7, 0x3 - negs r7, r7 -_080BA392: - adds r0, r4, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - cmp r4, r0 - bcc _080BA392 -_080BA3B4: - adds r0, r3, 0 - bl DestroyAnimSprite -_080BA3BA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA3C0: .4byte gBattlersCount -_080BA3C4: .4byte gSprites -_080BA3C8: .4byte gBattlerSpriteIds - thumb_func_end sub_80BA320 - - thumb_func_start sub_80BA3CC -sub_80BA3CC: @ 80BA3CC - push {r4-r6,lr} - ldr r6, _080BA440 @ =gSprites - ldr r4, _080BA444 @ =gBattlerSpriteIds - ldr r5, _080BA448 @ =gBattleAnimAttacker - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x3 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r3, _080BA44C @ =gBattleAnimTarget - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r0, _080BA450 @ =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x2 - bne _080BA454 - ldrb r0, [r5] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r3] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - b _080BA470 - .align 2, 0 -_080BA440: .4byte gSprites -_080BA444: .4byte gBattlerSpriteIds -_080BA448: .4byte gBattleAnimAttacker -_080BA44C: .4byte gBattleAnimTarget -_080BA450: .4byte gBattleAnimArgs -_080BA454: - cmp r0, 0 - bne _080BA45C - ldrb r0, [r5] - b _080BA45E -_080BA45C: - ldrb r0, [r3] -_080BA45E: - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x2 -_080BA470: - orrs r1, r2 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BA3CC - - thumb_func_start sub_80BA47C -sub_80BA47C: @ 80BA47C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080BA4BC @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - ldr r3, _080BA4C0 @ =gBattleAnimArgs - ldrh r1, [r3] - strh r1, [r2, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r2, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r2, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0xE] - ldrh r1, [r3, 0x6] - strh r1, [r2, 0x18] - ldr r4, _080BA4C4 @ =gBattle_BG3_X - ldrh r1, [r3] - strh r1, [r4] - ldr r4, _080BA4C8 @ =gBattle_BG3_Y - ldrh r1, [r3, 0x2] - strh r1, [r4] - ldr r1, _080BA4CC @ =sub_80BA4D0 - str r1, [r2] - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA4BC: .4byte gTasks -_080BA4C0: .4byte gBattleAnimArgs -_080BA4C4: .4byte gBattle_BG3_X -_080BA4C8: .4byte gBattle_BG3_Y -_080BA4CC: .4byte sub_80BA4D0 - thumb_func_end sub_80BA47C - - thumb_func_start sub_80BA4D0 -sub_80BA4D0: @ 80BA4D0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080BA500 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r1 - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - mov r12, r1 - cmp r0, 0 - bne _080BA556 - ldr r0, _080BA504 @ =gBattle_BG3_X - ldrh r2, [r0] - movs r7, 0x8 - ldrsh r1, [r3, r7] - adds r6, r0, 0 - cmp r2, r1 - bne _080BA508 - ldrh r0, [r3, 0x8] - negs r0, r0 - b _080BA50A - .align 2, 0 -_080BA500: .4byte gTasks -_080BA504: .4byte gBattle_BG3_X -_080BA508: - ldrh r0, [r3, 0x8] -_080BA50A: - strh r0, [r6] - ldr r2, _080BA528 @ =gBattle_BG3_Y - ldrh r3, [r2] - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - mov r7, r12 - adds r4, r0, r7 - movs r7, 0xA - ldrsh r0, [r4, r7] - cmn r3, r0 - bne _080BA52C - movs r0, 0 - b _080BA530 - .align 2, 0 -_080BA528: .4byte gBattle_BG3_Y -_080BA52C: - ldrh r0, [r4, 0xA] - negs r0, r0 -_080BA530: - strh r0, [r2] - adds r0, r1, r5 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x18] - strh r1, [r0, 0xE] - ldrh r1, [r0, 0xC] - subs r1, 0x1 - strh r1, [r0, 0xC] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0 - bne _080BA55A - strh r1, [r6] - strh r1, [r2] - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080BA55A -_080BA556: - subs r0, r2, 0x1 - strh r0, [r3, 0xE] -_080BA55A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BA4D0 - - thumb_func_start sub_80BA560 -sub_80BA560: @ 80BA560 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080BA580 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BA584 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075160 - b _080BA58C - .align 2, 0 -_080BA580: .4byte gBattleAnimArgs -_080BA584: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075114 -_080BA58C: - ldr r0, _080BA5A0 @ =sub_8074F50 - str r0, [r5, 0x1C] - ldr r1, _080BA5A4 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA5A0: .4byte sub_8074F50 -_080BA5A4: .4byte DestroyAnimSprite - thumb_func_end sub_80BA560 - - thumb_func_start sub_80BA5A8 -sub_80BA5A8: @ 80BA5A8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080BA5C8 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BA5CC - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075160 - b _080BA5D4 - .align 2, 0 -_080BA5C8: .4byte gBattleAnimArgs -_080BA5CC: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075114 -_080BA5D4: - ldr r0, _080BA5EC @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080BA5F0 @ =sub_8074F50 - str r0, [r5, 0x1C] - ldr r1, _080BA5F4 @ =sub_80B1D3C - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA5EC: .4byte gBattleAnimArgs -_080BA5F0: .4byte sub_8074F50 -_080BA5F4: .4byte sub_80B1D3C - thumb_func_end sub_80BA5A8 - - thumb_func_start sub_80BA5F8 -sub_80BA5F8: @ 80BA5F8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080BA628 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080BA61C - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080BA61C - ldr r1, _080BA62C @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_080BA61C: - adds r0, r4, 0 - bl sub_80BA560 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA628: .4byte gBattleAnimAttacker -_080BA62C: .4byte gBattleAnimArgs - thumb_func_end sub_80BA5F8 - - thumb_func_start sub_80BA630 -sub_80BA630: @ 80BA630 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080BA668 @ =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r5, r0] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080BA64C - bl Random - movs r1, 0x3 - ands r1, r0 - strh r1, [r5, 0x2] -_080BA64C: - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080BA66C - adds r0, r4, 0 - movs r1, 0 - bl sub_8075160 - b _080BA674 - .align 2, 0 -_080BA668: .4byte gBattleAnimArgs -_080BA66C: - adds r0, r4, 0 - movs r1, 0 - bl sub_8075114 -_080BA674: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x30 - bl __umodsi3 - ldr r1, _080BA6B8 @ =0x0000ffe8 - adds r0, r1 - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x18 - bl __umodsi3 - ldr r1, _080BA6BC @ =0x0000fff4 - adds r0, r1 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldr r1, _080BA6C0 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080BA6C4 @ =sub_8074F50 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA6B8: .4byte 0x0000ffe8 -_080BA6BC: .4byte 0x0000fff4 -_080BA6C0: .4byte move_anim_8074EE0 -_080BA6C4: .4byte sub_8074F50 - thumb_func_end sub_80BA630 - - thumb_func_start sub_80BA6C8 -sub_80BA6C8: @ 80BA6C8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080BA728 @ =gBattleAnimArgs - ldrb r0, [r5] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x2E] - ldr r2, _080BA72C @ =gSprites - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - ldrh r0, [r0, 0x20] - adds r1, r0 - strh r1, [r4, 0x20] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r4, 0x22] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x26] - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAffineAnim - ldr r1, _080BA730 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080BA734 @ =sub_8074F50 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA728: .4byte gBattleAnimArgs -_080BA72C: .4byte gSprites -_080BA730: .4byte move_anim_8074EE0 -_080BA734: .4byte sub_8074F50 - thumb_func_end sub_80BA6C8 - - thumb_func_start sub_80BA738 -sub_80BA738: @ 80BA738 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080BA750 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080BA754 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8075160 - b _080BA75C - .align 2, 0 -_080BA750: .4byte gBattleAnimArgs -_080BA754: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8075114 -_080BA75C: - ldr r0, _080BA774 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r4, 0x2E] - ldr r1, _080BA778 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080BA77C @ =sub_8074C44 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA774: .4byte gBattleAnimArgs -_080BA778: .4byte DestroyAnimSprite -_080BA77C: .4byte sub_8074C44 - thumb_func_end sub_80BA738 - - thumb_func_start sub_80BA780 -sub_80BA780: @ 80BA780 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080BA7A0 @ =gBattleAnimArgs - ldrb r1, [r4, 0x6] - bl StartSpriteAffineAnim - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080BA7A4 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075160 - b _080BA7AC - .align 2, 0 -_080BA7A0: .4byte gBattleAnimArgs -_080BA7A4: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075114 -_080BA7AC: - ldr r0, _080BA7B8 @ =sub_80BA7BC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BA7B8: .4byte sub_80BA7BC - thumb_func_end sub_80BA780 - - thumb_func_start sub_80BA7BC -sub_80BA7BC: @ 80BA7BC - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - 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 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x2E] - adds r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080BA7F2 - adds r0, r3, 0 - bl DestroyAnimSprite -_080BA7F2: - pop {r0} - bx r0 - thumb_func_end sub_80BA7BC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/poison.s b/asm/poison.s index 770941be8..e80bd01af 100644 --- a/asm/poison.s +++ b/asm/poison.s @@ -20,7 +20,7 @@ sub_80B1620: @ 80B1620 _080B1636: adds r0, r5, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldrh r0, [r4, 0x4] strh r0, [r5, 0x2E] ldr r4, _080B1678 @ =gBattleAnimTarget @@ -39,7 +39,7 @@ _080B1636: ldr r0, _080B167C @ =0x0000ffe2 strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080B1680 @ =sub_80B1684 str r0, [r5, 0x1C] pop {r4,r5} @@ -56,7 +56,7 @@ _080B1680: .4byte sub_80B1684 sub_80B1684: @ 80B1684 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B1698 @@ -84,7 +84,7 @@ sub_80B16A0: @ 80B16A0 _080B16B8: adds r0, r4, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080B1718 @ =gBattleAnimTarget ldrb r0, [r0] mov r6, sp @@ -92,7 +92,7 @@ _080B16B8: movs r1, 0x1 mov r2, sp adds r3, r6, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080B171C @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -117,7 +117,7 @@ _080B16E6: ldr r0, _080B1720 @ =0x0000ffe2 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080B1724 @ =sub_80B1728 str r0, [r4, 0x1C] add sp, 0x4 @@ -136,7 +136,7 @@ _080B1724: .4byte sub_80B1728 sub_80B1728: @ 80B1728 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B173C @@ -193,7 +193,7 @@ _080B1794: .4byte sub_80B1798 sub_80B1798: @ 80B1798 push {r4,lr} adds r4, r0, 0 - bl sub_8074D00 + bl TranslateSpriteLinearFixedPoint ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x38] subs r0, r1 @@ -225,7 +225,7 @@ sub_80B17C4: @ 80B17C4 adds r3, r4, 0 adds r3, 0x22 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080B1828 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -280,7 +280,7 @@ sub_80B1838: @ 80B1838 bne _080B1854 adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget b _080B188A .align 2, 0 _080B1850: .4byte gBattleAnimArgs @@ -292,7 +292,7 @@ _080B1854: adds r3, r4, 0 adds r3, 0x22 movs r1, 0x1 - bl sub_8076D9C + bl SetAverageBattlerPositions ldr r0, _080B1898 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide diff --git a/asm/pokeball.s b/asm/pokeball.s index 1d01b5c7e..fa1f4eee0 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -290,7 +290,7 @@ _0804AB6C: ldr r0, _0804ABC8 @ =0x0000ffd8 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation mov r0, sp ldrh r0, [r0] strh r0, [r4, 0x6] @@ -328,7 +328,7 @@ SpriteCB_TestBallThrow: @ 804ABD4 push {r7} sub sp, 0x4 adds r7, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _0804AC74 @@ -1692,7 +1692,7 @@ SpriteCB_PlayerMonSendOut_1: @ 804B684 ldrh r0, [r4, 0x3A] strh r0, [r4, 0x6] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _0804B6D0 @ =SpriteCB_PlayerMonSendOut_2 str r0, [r4, 0x1C] pop {r4} @@ -1754,7 +1754,7 @@ SpriteCB_PlayerMonSendOut_2: @ 804B6D4 _0804B736: ldrh r4, [r5, 0x2E] adds r0, r5, 0 - bl sub_80755E0 + bl AnimTranslateLinear movs r1, 0x3A ldrsh r0, [r5, r1] movs r1, 0x3 @@ -1825,7 +1825,7 @@ _0804B78E: b _0804B834 _0804B7C8: adds r0, r5, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _0804B834 @@ -2580,13 +2580,13 @@ _0804BD80: _0804BD84: .4byte SpriteCallbackDummy thumb_func_end sub_804BD6C - thumb_func_start DestroySpriteAndFreeResources_ -DestroySpriteAndFreeResources_: @ 804BD88 + thumb_func_start DestroySpriteAndFreeResources2 +DestroySpriteAndFreeResources2: @ 804BD88 push {lr} bl DestroySpriteAndFreeResources pop {r0} bx r0 - thumb_func_end DestroySpriteAndFreeResources_ + thumb_func_end DestroySpriteAndFreeResources2 thumb_func_start sub_804BD94 sub_804BD94: @ 804BD94 diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index 66bb3dc52..44598a330 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -6157,7 +6157,7 @@ sub_814A8B8: @ 814A8B8 movs r6, 0 cmp r6, r10 bge _0814A922 - ldr r0, _0814A938 @ =gUnknown_82349CC + ldr r0, _0814A938 @ =gMonFrontPicCoords mov r9, r0 ldr r1, _0814A93C @ =gUnknown_203F3D8 mov r8, r1 @@ -6200,7 +6200,7 @@ _0814A922: bx r0 .align 2, 0 _0814A934: .4byte gUnknown_846D9D4 -_0814A938: .4byte gUnknown_82349CC +_0814A938: .4byte gMonFrontPicCoords _0814A93C: .4byte gUnknown_203F3D8 thumb_func_end sub_814A8B8 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 71e5cbfaf..f6f746313 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -10728,7 +10728,7 @@ sub_8139D90: @ 8139D90 lsls r0, 2 ldr r1, _08139DB8 @ =gSprites adds r0, r1 - bl DestroySpriteAndFreeResources_ + bl DestroySpriteAndFreeResources2 pop {r0} bx r0 .align 2, 0 diff --git a/asm/psychic.s b/asm/psychic.s index cff45fc8c..d2a694e13 100644 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -42,7 +42,7 @@ _080B2EFE: lsrs r4, r0, 24 adds r7, r4, 0 adds r0, r4, 0 - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -57,7 +57,7 @@ _080B2EFE: beq _080B2F3C adds r0, r4, 0 adds r1, r5, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG _080B2F3C: movs r0, 0x2 adds r4, r0, 0 @@ -71,7 +71,7 @@ _080B2F3C: eors r5, r0 adds r0, r4, 0 adds r1, r5, 0 - bl sub_8072E48 + bl MoveBattlerSpriteToBG _080B2F5A: bl IsContest lsls r0, 24 @@ -354,7 +354,7 @@ sub_80B3168: @ 80B3168 lsls r0, 24 lsrs r0, 24 adds r4, r0, 0 - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 movs r1, 0x1 @@ -448,14 +448,14 @@ _080B3232: bne _080B324C adds r0, r4, 0 adds r1, r6, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080B3254 .align 2, 0 _080B3248: .4byte gBattleAnimArgs _080B324C: adds r0, r4, 0 adds r1, r6, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget _080B3254: ldrh r0, [r4, 0x2E] adds r0, 0x1 @@ -470,7 +470,7 @@ _080B325C: cmp r0, 0 beq _080B3270 adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _080B3270: pop {r4-r6} pop {r0} @@ -526,14 +526,14 @@ _080B32D6: ldr r1, _080B32EC @ =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080B32F0 @ =sub_8074F6C + ldr r0, _080B32F0 @ =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080B32EC: .4byte DestroyAnimSprite -_080B32F0: .4byte sub_8074F6C +_080B32F0: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80B3278 thumb_func_start sub_80B32F4 @@ -543,7 +543,7 @@ sub_80B32F4: @ 80B32F4 ldr r6, _080B3378 @ =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 @@ -552,7 +552,7 @@ sub_80B32F4: @ 80B32F4 lsrs r4, r1, 16 ldrb r0, [r6] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r1, r0, 16 lsrs r0, 31 @@ -595,7 +595,7 @@ _080B3366: ldr r1, _080B337C @ =sub_80B3384 adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, _080B3380 @ =sub_8074F6C + ldr r0, _080B3380 @ =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4-r7} pop {r0} @@ -603,7 +603,7 @@ _080B3366: .align 2, 0 _080B3378: .4byte gBattleAnimAttacker _080B337C: .4byte sub_80B3384 -_080B3380: .4byte sub_8074F6C +_080B3380: .4byte RunStoredCallbackWhenAnimEnds thumb_func_end sub_80B32F4 thumb_func_start sub_80B3384 @@ -696,14 +696,14 @@ sub_80B3418: @ 80B3418 ldr r0, _080B3448 @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 strh r1, [r4, 0x8] ldr r2, _080B344C @ =gUnknown_83E700C adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080B3450 @ =sub_80B3454 str r0, [r4] pop {r4} @@ -725,7 +725,7 @@ sub_80B3454: @ 80B3454 lsls r0, 3 ldr r1, _080B347C @ =gTasks adds r0, r1 - bl sub_8076308 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _080B3474 @@ -750,7 +750,7 @@ sub_80B3480: @ 80B3480 ldr r0, _080B34CC @ =gTasks adds r4, r1, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 movs r1, 0 @@ -770,7 +770,7 @@ _080B34B4: ldrb r1, [r4, 0x8] ldr r2, _080B34D4 @ =gUnknown_83E702C adds r0, r4, 0 - bl sub_80762D0 + bl PrepareAffineAnimInTaskData ldr r0, _080B34D8 @ =sub_80B34DC str r0, [r4] pop {r4} @@ -804,7 +804,7 @@ sub_80B34DC: @ 80B34DC _080B34FC: .4byte gTasks _080B3500: adds r0, r4, 0 - bl sub_8076308 + bl RunAffineAnimFromTaskData ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] @@ -900,7 +900,7 @@ sub_80B3584: @ 80B3584 strh r0, [r5, 0x24] ldrb r0, [r4] movs r1, 0x1 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x3 @@ -909,7 +909,7 @@ sub_80B3584: @ 80B3584 lsrs r6, r0, 16 ldrb r0, [r4] movs r1, 0 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr lsls r0, 16 asrs r0, 16 movs r1, 0x3 @@ -1254,23 +1254,23 @@ sub_80B3834: @ 80B3834 ldr r4, _080B389C @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B38A0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 b _080B3962 .align 2, 0 @@ -1285,18 +1285,18 @@ _080B38A4: ldr r4, _080B38D0 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x3 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B38D4 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 b _080B3956 .align 2, 0 @@ -1313,23 +1313,23 @@ _080B38D8: ldr r4, _080B3924 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B3928 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x4 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x2 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr adds r0, 0x8 b _080B3962 .align 2, 0 @@ -1343,24 +1343,24 @@ _080B392C: ldr r4, _080B3974 @ =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 strh r0, [r5, 0x1E] ldrb r0, [r4] movs r1, 0x3 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 strh r0, [r5, 0x20] ldr r4, _080B3978 @ =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x5 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 _080B3956: strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x3 - bl sub_8076B2C + bl GetBattlerSpriteCoordAttr subs r0, 0x8 _080B3962: strh r0, [r5, 0x24] @@ -1430,7 +1430,7 @@ _080B39A4: ldrh r0, [r5, 0x1C] strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldrb r0, [r5, 0xC] movs r1, 0x3 ands r1, r0 @@ -1471,7 +1471,7 @@ _080B3A2C: sub_80B3A34: @ 80B3A34 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B3A52 @@ -1500,7 +1500,7 @@ sub_80B3A58: @ 80B3A58 adds r4, r1, r0 ldr r0, _080B3A94 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_807492C + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r1, r0, 24 adds r0, r1, 0 @@ -1558,7 +1558,7 @@ _080B3ACA: _080B3AD6: ldr r0, _080B3AF0 @ =gBattleAnimTarget ldrb r0, [r0] - bl sub_80768B0 + bl GetBattlerSpriteBGPriorityRank lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1804,7 +1804,7 @@ _080B3CAC: .4byte gTasks _080B3CB0: ldr r1, _080B3CD4 @ =gBattleAnimArgs ldrb r0, [r1] - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 @@ -1871,7 +1871,7 @@ _080B3CD8: bl CalcCenterToCornerVec ldr r1, _080B3D70 @ =gBattleAnimArgs ldrb r0, [r1] - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r7, 0x22] @@ -1954,7 +1954,7 @@ _080B3DAA: ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 - bl sub_8076494 + bl SetBattlerSpriteYOffsetFromOtherYScale movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0x30 @@ -1993,7 +1993,7 @@ _080B3DFC: ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 - bl sub_8076494 + bl SetBattlerSpriteYOffsetFromOtherYScale movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 @@ -2099,7 +2099,7 @@ _080B3EFC: beq _080B3FA4 movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 diff --git a/asm/rock.s b/asm/rock.s index c0da2bcfa..7df02ecc3 100644 --- a/asm/rock.s +++ b/asm/rock.s @@ -21,7 +21,7 @@ sub_80B4634: @ 80B4634 adds r3, r5, 0 adds r3, 0x22 movs r1, 0 - bl sub_8076D9C + bl SetAverageBattlerPositions _080B4654: ldrh r0, [r6] ldrh r1, [r5, 0x20] @@ -49,7 +49,7 @@ _080B4654: ldr r1, _080B46AC @ =sub_80B46B4 adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r1, _080B46B0 @ =sub_8074BE4 + ldr r1, _080B46B0 @ =TranslateSpriteInEllipseOverDuration str r1, [r5, 0x1C] adds r0, r5, 0 bl _call_via_r1 @@ -61,7 +61,7 @@ _080B46A0: .4byte gBattleAnimArgs _080B46A4: .4byte gBattleAnimTarget _080B46A8: .4byte 0x0000ffba _080B46AC: .4byte sub_80B46B4 -_080B46B0: .4byte sub_8074BE4 +_080B46B0: .4byte TranslateSpriteInEllipseOverDuration thumb_func_end sub_80B4634 thumb_func_start sub_80B46B4 @@ -81,10 +81,10 @@ sub_80B46B4: @ 80B46B4 strh r0, [r4, 0x34] ldr r0, _080B46EC @ =0x0000ffe8 strh r0, [r4, 0x36] - ldr r1, _080B46F0 @ =move_anim_8074EE0 + ldr r1, _080B46F0 @ =DestroySpriteAndMatrix adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r1, _080B46F4 @ =sub_8074BE4 + ldr r1, _080B46F4 @ =TranslateSpriteInEllipseOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -93,8 +93,8 @@ sub_80B46B4: @ 80B46B4 bx r0 .align 2, 0 _080B46EC: .4byte 0x0000ffe8 -_080B46F0: .4byte move_anim_8074EE0 -_080B46F4: .4byte sub_8074BE4 +_080B46F0: .4byte DestroySpriteAndMatrix +_080B46F4: .4byte TranslateSpriteInEllipseOverDuration thumb_func_end sub_80B46B4 thumb_func_start sub_80B46F8 @@ -146,9 +146,9 @@ _080B472E: bl InitSpriteDataForLinearTranslation strh r4, [r5, 0x34] strh r4, [r5, 0x36] - ldr r0, _080B4774 @ =sub_8074D00 + ldr r0, _080B4774 @ =TranslateSpriteLinearFixedPoint str r0, [r5, 0x1C] - ldr r1, _080B4778 @ =move_anim_8074EE0 + ldr r1, _080B4778 @ =DestroySpriteAndMatrix adds r0, r5, 0 bl StoreSpriteCallbackInData6 pop {r4,r5} @@ -156,8 +156,8 @@ _080B472E: bx r0 .align 2, 0 _080B4770: .4byte gBattleAnimArgs -_080B4774: .4byte sub_8074D00 -_080B4778: .4byte move_anim_8074EE0 +_080B4774: .4byte TranslateSpriteLinearFixedPoint +_080B4778: .4byte DestroySpriteAndMatrix thumb_func_end sub_80B46F8 thumb_func_start sub_80B477C @@ -171,14 +171,14 @@ sub_80B477C: @ 80B477C bne _080B4798 adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker b _080B47A0 .align 2, 0 _080B4794: .4byte gBattleAnimArgs _080B4798: adds r0, r4, 0 movs r1, 0 - bl sub_8075114 + bl InitSpritePosToAnimTarget _080B47A0: ldr r1, _080B47BC @ =gBattleAnimArgs ldrh r0, [r1, 0x6] @@ -286,13 +286,13 @@ _080B4854: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette mov r1, sp ldrb r1, [r1, 0x8] @@ -673,7 +673,7 @@ sub_80B4B8C: @ 80B4B8C bl StartSpriteAnim adds r0, r4, 0 movs r1, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] @@ -806,13 +806,13 @@ _080B4C7A: strh r4, [r6, 0x16] movs r0, 0x40 negs r0, r0 - bl sub_8073A44 + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 asrs r4, 8 lsrs r4, 16 movs r0, 0x3F - bl sub_8073A44 + bl BattleAnimAdjustPanning lsls r0, 24 strh r4, [r6, 0x22] asrs r0, 24 @@ -825,7 +825,7 @@ _080B4C7A: strh r0, [r6, 0x24] strh r5, [r6, 0xA] movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r6, 0x26] @@ -1141,7 +1141,7 @@ _080B4ECC: ands r1, r3 orrs r1, r2 strh r1, [r0, 0x4] - bl sub_8075068 + bl InitAnimArcTranslation ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] @@ -1165,7 +1165,7 @@ _080B4F74: .4byte 0xfffffc00 sub_80B4F78: @ 80B4F78 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080B4FAA @@ -1316,7 +1316,7 @@ sub_80B5074: @ 80B5074 bl StartSpriteAffineAnim _080B5090: adds r0, r4, 0 - bl sub_8075DF4 + bl TranslateAnimSpriteToTargetMonLocation pop {r4} pop {r0} bx r0 diff --git a/asm/trade.s b/asm/trade.s index 8e6131f9d..bd98dd698 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -9300,7 +9300,7 @@ _0805139C: adds r1, r0 lsls r1, 2 adds r1, r3 - ldr r2, _08051410 @ =gUnknown_82349CC + ldr r2, _08051410 @ =gMonFrontPicCoords adds r0, r4, 0 adds r0, 0xF0 ldrh r0, [r0] @@ -9324,7 +9324,7 @@ _0805139C: .align 2, 0 _08051408: .4byte gSprites _0805140C: .4byte 0x0000ff4c -_08051410: .4byte gUnknown_82349CC +_08051410: .4byte gMonFrontPicCoords _08051414: ldr r5, [r7] adds r6, r5, 0 @@ -10839,7 +10839,7 @@ _08052070: adds r1, r0 lsls r1, 2 adds r1, r4 - ldr r3, _08052120 @ =gUnknown_82349CC + ldr r3, _08052120 @ =gMonFrontPicCoords adds r2, 0xF2 ldrh r0, [r2] lsls r0, 2 @@ -10906,7 +10906,7 @@ _08052070: b _080522AC .align 2, 0 _0805211C: .4byte gSprites -_08052120: .4byte gUnknown_82349CC +_08052120: .4byte gMonFrontPicCoords _08052124: .4byte 0x000fffff _08052128: movs r1, 0xAA @@ -11476,7 +11476,7 @@ _0805278C: adds r1, r0 lsls r1, 2 adds r1, r3 - ldr r2, _08052800 @ =gUnknown_82349CC + ldr r2, _08052800 @ =gMonFrontPicCoords adds r0, r4, 0 adds r0, 0xF0 ldrh r0, [r0] @@ -11500,7 +11500,7 @@ _0805278C: .align 2, 0 _080527F8: .4byte gSprites _080527FC: .4byte 0x0000ff4c -_08052800: .4byte gUnknown_82349CC +_08052800: .4byte gMonFrontPicCoords _08052804: ldr r5, [r7] adds r6, r5, 0 @@ -13064,7 +13064,7 @@ _080534CC: adds r1, r0 lsls r1, 2 adds r1, r4 - ldr r3, _0805357C @ =gUnknown_82349CC + ldr r3, _0805357C @ =gMonFrontPicCoords adds r2, 0xF2 ldrh r0, [r2] lsls r0, 2 @@ -13131,7 +13131,7 @@ _080534CC: b _08053708 .align 2, 0 _08053578: .4byte gSprites -_0805357C: .4byte gUnknown_82349CC +_0805357C: .4byte gMonFrontPicCoords _08053580: .4byte 0x000fffff _08053584: movs r1, 0xAA diff --git a/asm/water.s b/asm/water.s index d40e8f594..a2918ec33 100644 --- a/asm/water.s +++ b/asm/water.s @@ -197,7 +197,7 @@ _080AAD10: lsrs r0, 24 strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080AADAC @ =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback adds r4, r0, 0 @@ -273,7 +273,7 @@ sub_80AADB8: @ 80AADB8 movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 - bl sub_80755E0 + bl AnimTranslateLinear mov r1, r8 lsrs r6, r1, 8 movs r0, 0x2E @@ -329,14 +329,14 @@ sub_80AAE40: @ 80AAE40 negs r1, r1 ands r1, r2 strb r1, [r3] - ldr r1, _080AAE60 @ =sub_8074F6C + ldr r1, _080AAE60 @ =RunStoredCallbackWhenAnimEnds str r1, [r0, 0x1C] ldr r1, _080AAE64 @ =sub_80AAE68 bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080AAE60: .4byte sub_8074F6C +_080AAE60: .4byte RunStoredCallbackWhenAnimEnds _080AAE64: .4byte sub_80AAE68 thumb_func_end sub_80AAE40 @@ -345,15 +345,15 @@ sub_80AAE68: @ 80AAE68 push {lr} movs r1, 0xA strh r1, [r0, 0x2E] - ldr r1, _080AAE7C @ =sub_8074C44 + ldr r1, _080AAE7C @ =WaitAnimForDuration str r1, [r0, 0x1C] - ldr r1, _080AAE80 @ =move_anim_8074EE0 + ldr r1, _080AAE80 @ =DestroySpriteAndMatrix bl StoreSpriteCallbackInData6 pop {r0} bx r0 .align 2, 0 -_080AAE7C: .4byte sub_8074C44 -_080AAE80: .4byte move_anim_8074EE0 +_080AAE7C: .4byte WaitAnimForDuration +_080AAE80: .4byte DestroySpriteAndMatrix thumb_func_end sub_80AAE68 thumb_func_start sub_80AAE84 @@ -361,7 +361,7 @@ sub_80AAE84: @ 80AAE84 push {r4-r7,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080AAEAC @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -406,7 +406,7 @@ _080AAEBA: adds r0, r7 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, _080AAF18 @ =sub_80AAF1C str r0, [r5, 0x1C] adds r2, r5, 0 @@ -447,7 +447,7 @@ sub_80AAF1C: @ 80AAF1C strb r0, [r2] _080AAF3E: adds r0, r4, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080AAF50 @@ -569,7 +569,7 @@ sub_80AB024: @ 80AB024 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker movs r0, 0x1E strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] @@ -590,7 +590,7 @@ sub_80AB024: @ 80AB024 lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x2E ldrsh r1, [r5, r0] movs r0, 0xD2 @@ -634,7 +634,7 @@ _080AB0A8: .4byte sub_80AB0AC sub_80AB0AC: @ 80AB0AC push {r4,lr} adds r4, r0, 0 - bl sub_80755E0 + bl AnimTranslateLinear lsls r0, 24 cmp r0, 0 beq _080AB0C0 @@ -861,7 +861,7 @@ _080AB256: movs r7, 0x3 _080AB260: adds r0, r6, 0 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r0, _080AB2B8 @ =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -912,7 +912,7 @@ sub_80AB2CC: @ 80AB2CC push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget ldr r0, _080AB2FC @ =gBattleAnimArgs ldrh r1, [r0, 0x8] strh r1, [r4, 0x2E] @@ -948,14 +948,14 @@ sub_80AB308: @ 80AB308 beq _080AB324 adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget b _080AB32C .align 2, 0 _080AB320: .4byte gBattleAnimArgs _080AB324: adds r0, r4, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker _080AB32C: ldr r0, _080AB33C @ =gBattleAnimArgs ldrh r0, [r0, 0x4] @@ -1054,7 +1054,7 @@ sub_80AB38C: @ 80AB38C mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap b _080AB42E .align 2, 0 _080AB3FC: .4byte 0x00003f42 @@ -1064,7 +1064,7 @@ _080AB408: mov r0, sp ldrb r0, [r0, 0x9] ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap - bl sub_807543C + bl AnimLoadCompressedBgTilemap b _080AB42E .align 2, 0 _080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap @@ -1084,7 +1084,7 @@ _080AB42E: ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet mov r2, sp ldrh r2, [r2, 0xA] - bl sub_80753B4 + bl AnimLoadCompressedBgGfx ldr r0, _080AB460 @ =gBattleAnimArgs movs r1, 0 ldrsh r0, [r0, r1] @@ -1904,7 +1904,7 @@ sub_80ABA78: @ 80ABA78 strh r0, [r4, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8075114 + bl InitSpritePosToAnimTarget bl Random movs r5, 0xFF ands r5, r0 @@ -1991,7 +1991,7 @@ sub_80ABB28: @ 80ABB28 ldr r0, _080ABB78 @ =gTasks adds r4, r0 movs r0, 0 - bl GetAnimBankSpriteId + bl GetAnimBattlerSpriteId lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x26] @@ -2138,7 +2138,7 @@ _080ABC66: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_8076440 + bl SetBattlerSpriteYOffsetFromYScale ldr r2, _080ABC84 @ =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] @@ -2727,7 +2727,7 @@ _080AC0AE: ldr r1, [r0] adds r0, r2, 0 bl _call_via_r1 - ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldr r1, _080AC144 @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -2748,7 +2748,7 @@ _080AC0F8: ldr r1, [r0] adds r0, r2, 0 bl _call_via_r1 - ldr r1, _080AC144 @ =gUnknown_2037EE2 + ldr r1, _080AC144 @ =gAnimVisualTaskCount ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] @@ -2769,7 +2769,7 @@ _080AC128: .align 2, 0 _080AC13C: .4byte gBattleAnimArgs _080AC140: .4byte sub_80B94B4 -_080AC144: .4byte gUnknown_2037EE2 +_080AC144: .4byte gAnimVisualTaskCount _080AC148: movs r2, 0x1A ldrsh r0, [r4, r2] @@ -3287,7 +3287,7 @@ sub_80AC504: @ 80AC504 strh r1, [r0, 0x36] ldrh r1, [r6, 0x1A] strh r1, [r0, 0x38] - bl sub_8075068 + bl InitAnimArcTranslation adds r5, 0x1C adds r4, r5 ldr r0, _080AC56C @ =sub_80AC570 @@ -3309,7 +3309,7 @@ _080AC56C: .4byte sub_80AC570 sub_80AC570: @ 80AC570 push {r4-r6,lr} adds r6, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080AC5CA @@ -3344,7 +3344,7 @@ sub_80AC570: @ 80AC570 mvns r1, r1 strh r1, [r6, 0x38] adds r0, r6, 0 - bl sub_8075068 + bl InitAnimArcTranslation ldr r0, _080AC5D4 @ =sub_80AC5D8 str r0, [r6, 0x1C] _080AC5CA: @@ -3360,7 +3360,7 @@ _080AC5D4: .4byte sub_80AC5D8 sub_80AC5D8: @ 80AC5D8 push {r4-r6,lr} adds r5, r0, 0 - bl AnimateBallThrow + bl TranslateAnimHorizontalArc lsls r0, 24 cmp r0, 0 beq _080AC614 @@ -3498,7 +3498,7 @@ sub_80AC6D8: @ 80AC6D8 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_8075160 + bl InitSpritePosToAnimAttacker ldr r5, _080AC714 @ =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 diff --git a/data/battle_anim.s b/data/battle_anim.s index 3fae69431..c166708a2 100644 --- a/data/battle_anim.s +++ b/data/battle_anim.s @@ -242,21 +242,3 @@ gUnknown_83ADE18:: @ 83ADE18 gUnknown_83ADF5C:: @ 83ADF5C .incbin "baserom.gba", 0x3ADF5C, 0xC0 - -gUnknown_83AE01C:: @ 83AE01C - .incbin "baserom.gba", 0x3AE01C, 0x20 - -gUnknown_83AE03C:: @ 83AE03C - .incbin "baserom.gba", 0x3AE03C, 0x10 - -gUnknown_83AE04C:: @ 83AE04C - .incbin "baserom.gba", 0x3AE04C, 0x4 - -gUnknown_83AE050:: @ 83AE050 - .incbin "baserom.gba", 0x3AE050, 0x4 - -gUnknown_83AE054:: @ 83AE054 - .incbin "baserom.gba", 0x3AE054, 0x30 - -gUnknown_83AE084:: @ 0x83AE084 - .incbin "baserom.gba", 0x3AE084, 0x10 diff --git a/data/data.s b/data/data.s index 0883c65d7..fd4b9d274 100644 --- a/data/data.s +++ b/data/data.s @@ -55,7 +55,7 @@ gUnknown_823499C:: @ 823499C gUnknown_82349BC:: @ 82349BC .incbin "baserom.gba", 0x2349BC, 0x10 -gUnknown_82349CC:: @ 82349CC +gMonFrontPicCoords:: @ 82349CC .incbin "baserom.gba", 0x2349CC, 0x6E0 gMonFrontPicTable:: @ 82350AC @@ -64,7 +64,7 @@ gMonFrontPicTable:: @ 82350AC gUnknown_8235194:: @ 8235194 .incbin "baserom.gba", 0x235194, 0xCD8 -gUnknown_8235E6C:: @ 8235E6C +gMonBackPicCoords:: @ 8235E6C .incbin "baserom.gba", 0x235E6C, 0x6E0 gMonBackPicTable:: @ 823654C diff --git a/data/data_835B488.s b/data/data_835B488.s index 742224d2b..41b35a648 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -930,28 +930,9 @@ gUnknown_83E7668:: @ 83E7668 .incbin "baserom.gba", 0x3E7668, 0x78 gUnknown_83E76E0:: @ 83E76E0 - .incbin "baserom.gba", 0x3E76E0, 0x528 + .incbin "baserom.gba", 0x3E76E0, 0x30 -gUnknown_83E7C08:: @ 83E7C08 - .incbin "baserom.gba", 0x3E7C08, 0x30 - -gUnknown_83E7C38:: @ 83E7C38 - .incbin "baserom.gba", 0x3E7C38, 0x60 - -gUnknown_83E7C98:: @ 83E7C98 - .incbin "baserom.gba", 0x3E7C98, 0x30 - -gUnknown_83E7CC8:: @ 83E7CC8 - .incbin "baserom.gba", 0x3E7CC8, 0x2 - -gUnknown_83E7CCA:: @ 83E7CCA - .incbin "baserom.gba", 0x3E7CCA, 0x4 - -gUnknown_83E7CCE:: @ 83E7CCE - .incbin "baserom.gba", 0x3E7CCE, 0x6 - -gUnknown_83E7CD4:: @ 83E7CD4 - .incbin "baserom.gba", 0x3E7CD4, 0x28 + .section .rodata.83E7CFC gUnknown_83E7CFC:: @ 83E7CFC .incbin "baserom.gba", 0x3E7CFC, 0x14 diff --git a/data/graphics.s b/data/graphics.s index 9c5d1c3f9..79b622cfa 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -1624,15 +1624,15 @@ gFile_graphics_battle_anims_backgrounds_00_tilemap:: @ 8D1CFD4 .incbin "graphics/battle_anims/backgrounds/00.bin.lz" .align 2 -gFile_graphics_battle_anims_masks_metal_shine_sheet:: @ 8D1D224 +gMetalShineGfx:: @ 8D1D224 .incbin "graphics/battle_anims/masks/metal_shine.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_metal_shine_palette:: @ 8D1D360 +gMetalShinePalette:: @ 8D1D360 .incbin "graphics/battle_anims/masks/metal_shine.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_metal_shine_tilemap:: @ 8D1D388 +gMetalShineTilemap:: @ 8D1D388 .incbin "graphics/battle_anims/masks/metal_shine.bin.lz" .align 2 @@ -2412,47 +2412,47 @@ gFile_graphics_battle_anims_sprites_243_palette:: @ 8D2D8CC .incbin "graphics/battle_anims/sprites/243.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat_sheet:: @ 8D2D8F4 +gBattleStatMask_Gfx:: @ 8D2D8F4 .incbin "graphics/battle_anims/masks/stat.4bpp.lz" .align 2 -gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap:: @ 8D2DB04 +gBattleStatMask1_Tilemap:: @ 8D2DB04 .incbin "graphics/battle_anims/masks/stat_tilemap_1.bin.lz" .align 2 -gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap:: @ 8D2DC20 +gBattleStatMask2_Tilemap:: @ 8D2DC20 .incbin "graphics/battle_anims/masks/stat_tilemap_2.bin.lz" .align 2 -gFile_graphics_battle_anims_masks_stat1_palette:: @ 8D2DD3C +gBattleStatMask1_Pal:: @ 8D2DD3C .incbin "graphics/battle_anims/masks/stat1.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat2_palette:: @ 8D2DD5C +gBattleStatMask2_Pal:: @ 8D2DD5C .incbin "graphics/battle_anims/masks/stat2.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat3_palette:: @ 8D2DD7C +gBattleStatMask3_Pal:: @ 8D2DD7C .incbin "graphics/battle_anims/masks/stat3.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat4_palette:: @ 8D2DD9C +gBattleStatMask4_Pal:: @ 8D2DD9C .incbin "graphics/battle_anims/masks/stat4.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat5_palette:: @ 8D2DDBC +gBattleStatMask5_Pal:: @ 8D2DDBC .incbin "graphics/battle_anims/masks/stat5.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat6_palette:: @ 8D2DDDC +gBattleStatMask6_Pal:: @ 8D2DDDC .incbin "graphics/battle_anims/masks/stat6.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat7_palette:: @ 8D2DDFC +gBattleStatMask7_Pal:: @ 8D2DDFC .incbin "graphics/battle_anims/masks/stat7.gbapal.lz" .align 2 -gFile_graphics_battle_anims_masks_stat8_palette:: @ 8D2DE1C +gBattleStatMask8_Pal:: @ 8D2DE1C .incbin "graphics/battle_anims/masks/stat8.gbapal.lz" .align 2 diff --git a/include/battle.h b/include/battle.h index 1f7fc5bf6..754e92997 100644 --- a/include/battle.h +++ b/include/battle.h @@ -820,9 +820,6 @@ extern struct BattleSpriteData *gBattleSpritesDataPtr; extern u8 *gLinkBattleSendBuffer; extern u8 *gLinkBattleRecvBuffer; -extern u8 *gUnknown_0202305C; -extern u8 *gUnknown_02023060; - // Move this somewhere else #include "sprite.h" @@ -836,7 +833,7 @@ struct MonSpritesGfx u8 field_F4[0x80]; u8 *barFontGfx; void *field_178; - void *field_17C; + u16 *field_17C; }; extern u16 gBattle_BG0_X; diff --git a/include/battle_anim.h b/include/battle_anim.h index 3536e89f4..16c3b7819 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -1,19 +1,9 @@ #ifndef GUARD_BATTLE_ANIM_H #define GUARD_BATTLE_ANIM_H -#include "global.h" - -#ifndef BATTLE_BANKS_COUNT -#define BATTLE_BANKS_COUNT 4 -#endif // BATTLE_BANKS_COUNT - -enum -{ - ANIM_BANK_ATTACKER, - ANIM_BANK_TARGET, - ANIM_BANK_ATK_PARTNER, - ANIM_BANK_DEF_PARTNER, -}; +#include "battle.h" +#include "constants/battle_anim.h" +#include "task.h" enum { @@ -60,11 +50,24 @@ extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; extern u8 gAnimMoveTurn; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; -extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02038440; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; extern u16 gAnimMovePower; extern s32 gAnimMoveDmg; +extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; +extern u8 gUnknown_2037F24; + +extern struct OamData gOamData_83ACA40; +extern struct OamData gOamData_83AC9C8; +extern struct OamData gOamData_83ACA38; +extern struct OamData gOamData_83AC9D0; +extern struct OamData gOamData_83AC9F8; +extern struct OamData gOamData_83AC9D8; +extern struct OamData gOamData_83ACB58; +extern struct OamData gOamData_83ACAF8; +extern struct OamData gOamData_83ACB60; +extern struct OamData gOamData_83ACA30; +extern struct OamData gOamData_83ACA98; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); @@ -80,23 +83,17 @@ s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); bool8 IsBattlerSpriteVisible(u8 battlerId); +s16 KeepPanInRange(s16 a, s32 oldPan); +void sub_80730C0(u16, const u16 *, u16 *, u8); -// battle_anim_80FE840.s +// battle_intro.c void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); -void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7); -void HandleIntroSlide(u8 terrainId); - -// battle_anim_80A5C6C.s -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 BattleAnimBgData *); -void sub_80A6B90(struct BattleAnimBgData *, u32 arg1); -u8 sub_80A82E4(u8 bank); -bool8 AnimateBallThrow(struct Sprite *sprite); - -// battle_anim_special +s32 GetAnimBgAttribute(u8 bgId, u8 attributeId); +void HandleIntroSlide(u8 terrain); +void sub_80BC41C(u8 taskId); +void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset); + +// battle_anim_special.s void sub_80F1720(u8 battler, struct Pokemon *mon); enum @@ -119,24 +116,24 @@ enum BATTLER_COORD_ATTR_RAW_BOTTOM, }; -u8 GetBattlerSpriteCoord(u8 bank, u8 attributeId); +u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); -bool8 IsBankSpritePresent(u8 bank); +bool8 IsBankSpritePresent(u8 battlerId); void sub_80A6C68(u8 arg0); -u8 GetAnimBankSpriteId(u8 wantedBank); +u8 GetAnimBattlerSpriteId(u8 wantedBank); bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); u8 sub_80A8364(u8); -void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); +void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite *)); void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); -u8 GetBattlerSpriteDefault_Y(u8 bank); -u8 sub_80A82E4(u8 bank); -u8 GetSubstituteSpriteDefault_Y(u8 bank); +u8 GetBattlerSpriteDefault_Y(u8 battlerId); +u8 sub_80A82E4(u8 battlerId); +u8 GetSubstituteSpriteDefault_Y(u8 battlerId); u8 GetGhostSpriteDefault_Y(u8 battlerId); -void sub_8072E48(u8 battlerId, u8); +void MoveBattlerSpriteToBG(u8 battlerId, u8); void sub_8073128(u8); -// battle_anim_80A9C70.s +// battle_anim_status_effects.s #define STAT_ANIM_PLUS1 15 #define STAT_ANIM_PLUS2 39 #define STAT_ANIM_MINUS1 22 @@ -147,25 +144,114 @@ void sub_8073128(u8); #define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 bank, u8 statusAnimId); -// battle_anim_8170478.s +// battle_anim_special.s u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); -u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -// battle_anim_mons.s -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_mons.c +u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType); +u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType); +u8 GetBattlerSpriteDefault_Y(u8 battlerId); +u8 GetSubstituteSpriteDefault_Y(u8 battlerId); +u8 GetGhostSpriteDefault_Y(u8 battlerId); +u8 GetBattlerYCoordWithElevation(u8 battlerId); +u8 GetAnimBattlerSpriteId(u8 animBattler); +void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback); +void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); +void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite); +void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite); +void WaitAnimForDuration(struct Sprite *sprite); +void sub_8074C80(struct Sprite *sprite); +void TranslateSpriteLinear(struct Sprite *sprite); +void TranslateSpriteLinearFixedPoint(struct Sprite *sprite); +void TranslateMonSpriteLinear(struct Sprite *sprite); +void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite); +void TranslateSpriteLinearAndFlicker(struct Sprite *sprite); +void DestroySpriteAndMatrix(struct Sprite *sprite); +void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); +void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite); +void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite); +void DestroyAnimVisualTaskAndDisableBlend(u8 taskId); +void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite); +void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset); +void InitAnimArcTranslation(struct Sprite *sprite); +bool8 TranslateAnimHorizontalArc(struct Sprite *sprite); +bool8 TranslateAnimVerticalArc(struct Sprite *sprite); +void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); +void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets); +void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets); +u8 GetBattlerSide(u8 battlerId); +u8 GetBattlerPosition(u8 battlerId); +u8 GetBattlerAtPosition(u8 position); bool8 IsBattlerSpritePresent(u8 battlerId); -u8 GetBattlerSpriteSubpriority(u8 battlerId); +bool8 IsDoubleBattle(void); +void sub_80752A0(struct BattleAnimBgData *animBgData); +void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1); +void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused); +void sub_8075358(u32 bgId); +void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset); +void InitAnimBgTilemapBuffer(u32 bgId, const void *src); +void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src); +u8 sub_8075454(void); +void sub_8075458(bool8 arg0); +void sub_8075490(struct Sprite *sprite); +void InitSpriteDataForLinearTranslation(struct Sprite *sprite); +void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); void sub_80755B8(struct Sprite *sprite); -u8 sub_80768B0(u8 battlerId); +bool8 AnimTranslateLinear(struct Sprite *sprite); +void sub_807563C(struct Sprite *sprite); +void sub_8075678(struct Sprite *sprite); +void sub_80756A4(struct Sprite *sprite); +void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); +bool8 AnimFastTranslateLinear(struct Sprite *sprite); +void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); +void sub_8075830(struct Sprite *sprite); +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); +void ResetSpriteRotScale(u8 spriteId); +void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation); +void sub_8075AD8(struct Sprite *sprite); +u16 ArcTan2Neg(s16 a, s16 b); +void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); +u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7); +u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4); +u8 sub_8075D80(u8 a1); +void sub_8075D9C(struct Sprite *sprite); +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); +void sub_8075E80(struct Sprite *sprite); +void sub_8075F0C(struct Sprite *sprite); +s16 CloneBattlerSpriteWithBlend(u8 animBattler); +void obj_delete_but_dont_free_vram(struct Sprite *sprite); +void sub_8076048(u8 taskId); +void AnimTask_BlendMonInAndOut(u8 task); +void sub_8076288(u8 taskId); +void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); +bool8 RunAffineAnimFromTaskData(struct Task *task); +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); +void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId); +void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr); +void *LoadPointerFromVars(s16 lo, s16 hi); +void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7); +u8 sub_8076640(struct Task *task); +void AnimTask_GetFrustrationPowerLevel(u8 taskId); +void sub_80767F0(void); +u8 GetBattlerSpriteSubpriority(u8 battlerId); +u8 GetBattlerSpriteBGPriority(u8 battlerId); +u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); +u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10); +void DestroySpriteAndFreeResources_(struct Sprite *sprite); +s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr); +void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y); +u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species); +void sub_8076ED8(struct Sprite *sprite); +void sub_8076F58(struct Sprite *sprite); +void sub_8076FD0(struct Sprite *sprite); +void sub_8077030(u8 taskId); +void sub_807729C(struct Sprite *sprite); +void sub_8077350(struct Sprite *sprite); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); @@ -182,4 +268,68 @@ void sub_8099980(u8 taskId); void sub_8099A78(u8 taskId); void sub_8099BD4(u8 taskId); +// normal.c +u32 UnpackSelectedBattleAnimPalettes(s16 selector); +void sub_80B9BDC(u8 taskId); +void sub_80B9CE4(u8 taskId); +void sub_80B9E58(u8 taskId); +void sub_80B9F6C(u8 taskId); +void sub_80BA0E8(u8 taskId); +void sub_80BA47C(u8 taskId); + +// ground.c +void sub_80B8E94(u8 taskId); +void sub_80B90EC(u8 taskId); +void sub_80B94B4(u8 taskId); +void AnimTask_IsPowerOver99(u8 taskId); +void sub_80B9800(u8 taskId); + +// dragon.c +void sub_80B75E0(u8 taskId); + +// flying.s +void sub_80B1D3C(struct Sprite *sprite); + +// dark.c +void sub_80B78E0(u8 taskId); +void sub_80B79DC(u8 taskId); +void sub_80B7A80(u8 taskId); +void sub_80B7DA4(u8 taskId); +void sub_80B8070(u8 taskId); +void sub_80B85B8(u8 taskId); +void sub_80B8664(u8 taskId); +void AnimTask_MetallicShine(u8 taskId); +void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId); +void sub_80B8B38(u8 taskId); + +// battle_anim_utility_funcs.c +void sub_80BA7F8(u8 taskId); +void sub_80BA83C(u8 taskId); +void AnimTask_SetCamouflageBlend(u8 taskId); +void AnimTask_BlendParticle(u8 taskId); +void sub_80BAB38(u8 taskId); +void sub_80BAB98(u8 taskId); +void sub_80BACEC(u8 taskId); +void sub_80BB088(u8 taskId); +void sub_80BB660(u8 taskId); +void sub_80BB7DC(u8 taskId); +void sub_80BB82C(u8 taskId); +void AnimTask_GetAttackerSide(u8 taskId); +void AnimTask_GetTargetSide(u8 taskId); +void AnimTask_GetTargetIsAttackerPartner(u8 taskId); +void sub_80BB9B0(u8 taskId); +void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette); +void AnimTask_GetBattleTerrain(u8 taskId); +void sub_80BBE10(u8 taskId); +void sub_80BBE3C(u8 taskId); +void sub_80BBE6C(u8 taskId); +void sub_80BBF08(u8 taskId); +void sub_80BBFA4(u8 taskId); +void AnimTask_IsContest(u8 taskId); +void sub_80BC060(u8 taskId); +void AnimTask_IsTargetSameSide(u8 taskId); +void sub_80BC0DC(u8 taskId); +void sub_80BC0FC(u8 taskId); +void sub_80BC12C(u8 taskId); + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_main.h b/include/battle_main.h index 27aae9970..757ee3468 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -49,7 +49,7 @@ void CB2_QuitRecordedBattle(void); void sub_8038528(struct Sprite* sprite); void sub_8038A04(void); // unused void VBlankCB_Battle(void); -void sub_8038B74(struct Sprite *sprite); +void sub_801182C(struct Sprite *sprite); void sub_8011A1C(void); u32 sub_80391E0(u8 arrayId, u8 caseId); u32 sub_80397C4(u32 setId, u32 tableId); @@ -67,7 +67,7 @@ void EndBounceEffect(u8 bank, bool8 b); 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 sub_801236C(struct Sprite *sprite); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); diff --git a/include/data.h b/include/data.h index 6479237f2..d3bc77799 100644 --- a/include/data.h +++ b/include/data.h @@ -31,6 +31,8 @@ extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct MonCoords gMonBackPicCoords[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; diff --git a/include/gba/defines.h b/include/gba/defines.h index c0eec12b1..65561f10a 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -77,8 +77,6 @@ #define RGB_BLACK RGB(0, 0, 0) #define RGB_WHITE RGB(31, 31, 31) -#define WIN_RANGE(a, b) (((a) << 8) | (b)) - #define NAKED __attribute__((naked)) #define UNUSED __attribute__((unused)) diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 6dbe5e8ed..2eefb2482 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -538,6 +538,40 @@ #define BGCNT_AFF512x512 0x8000 #define BGCNT_AFF1024x1024 0xC000 +// WININ/OUT +#define WININ_WIN0_BG0 (1 << 0) +#define WININ_WIN0_BG1 (1 << 1) +#define WININ_WIN0_BG2 (1 << 2) +#define WININ_WIN0_BG3 (1 << 3) +#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3) +#define WININ_WIN0_OBJ (1 << 4) +#define WININ_WIN0_CLR (1 << 5) +#define WININ_WIN1_BG0 (1 << 8) +#define WININ_WIN1_BG1 (1 << 9) +#define WININ_WIN1_BG2 (1 << 10) +#define WININ_WIN1_BG3 (1 << 11) +#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3) +#define WININ_WIN1_OBJ (1 << 12) +#define WININ_WIN1_CLR (1 << 13) + +#define WINOUT_WIN01_BG0 (1 << 0) +#define WINOUT_WIN01_BG1 (1 << 1) +#define WINOUT_WIN01_BG2 (1 << 2) +#define WINOUT_WIN01_BG3 (1 << 3) +#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3) +#define WINOUT_WIN01_OBJ (1 << 4) +#define WINOUT_WIN01_CLR (1 << 5) +#define WINOUT_WINOBJ_BG0 (1 << 8) +#define WINOUT_WINOBJ_BG1 (1 << 9) +#define WINOUT_WINOBJ_BG2 (1 << 10) +#define WINOUT_WINOBJ_BG3 (1 << 11) +#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3) +#define WINOUT_WINOBJ_OBJ (1 << 12) +#define WINOUT_WINOBJ_CLR (1 << 13) + +#define WIN_RANGE(a, b) (((a) << 8) | (b)) +#define WIN_RANGE2(a, b) ((b) | ((a) << 8)) + // BLDCNT // Bits 0-5 select layers for the 1st target #define BLDCNT_TGT1_BG0 (1 << 0) @@ -558,6 +592,7 @@ #define BLDCNT_TGT2_BG3 (1 << 11) #define BLDCNT_TGT2_OBJ (1 << 12) #define BLDCNT_TGT2_BD (1 << 13) +#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD) // BLDALPHA #define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) diff --git a/include/global.h b/include/global.h index 35f8de01b..5ddf9a0a8 100644 --- a/include/global.h +++ b/include/global.h @@ -76,6 +76,18 @@ extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; +struct Coords8 +{ + s8 x; + s8 y; +}; + +struct UCoords8 +{ + u8 x; + u8 y; +}; + struct Coords16 { s16 x; @@ -88,6 +100,18 @@ struct UCoords16 u16 y; }; +struct Coords32 +{ + s32 x; + s32 y; +}; + +struct UCoords32 +{ + u32 x; + u32 y; +}; + struct Time { /*0x00*/ s16 days; diff --git a/include/graphics.h b/include/graphics.h index 5e133ee01..c769f6ab8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -961,6 +961,26 @@ 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[]; +// battle_anim_utility_funcs +extern const u32 gFile_graphics_battle_anims_masks_curse_sheet[]; +extern const u32 gFile_graphics_battle_anims_masks_curse_tilemap[]; +extern const u32 gBattleStatMask_Gfx[]; +extern const u32 gBattleStatMask1_Pal[]; +extern const u32 gBattleStatMask2_Pal[]; +extern const u32 gBattleStatMask3_Pal[]; +extern const u32 gBattleStatMask4_Pal[]; +extern const u32 gBattleStatMask5_Pal[]; +extern const u32 gBattleStatMask6_Pal[]; +extern const u32 gBattleStatMask7_Pal[]; +extern const u32 gBattleStatMask8_Pal[]; +extern const u32 gBattleStatMask1_Tilemap[]; +extern const u32 gBattleStatMask2_Tilemap[]; + +// dark +extern const u32 gMetalShineGfx[]; +extern const u32 gMetalShinePalette[]; +extern const u32 gMetalShineTilemap[]; + // title_screen extern const u16 gGraphics_TitleScreen_PokemonFireRedLogoPals[]; extern const u8 gGraphics_TitleScreen_PokemonFireRedLogoTiles[]; diff --git a/include/overworld.h b/include/overworld.h index 77cacff94..0abbeee4b 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -18,11 +18,6 @@ struct LinkPlayerMapObject u8 mode; }; -struct UCoords32 -{ - u32 x, y; -}; - struct CreditsOverworldCmd { s16 unk_0; diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index cd8c798f9..60da74bcb 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -16,5 +16,6 @@ u16 sub_8096FD4(u16); u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32); void sub_8097070(struct Sprite *); u16 GetUnownLetterByPersonality(u32 personality); +u8 UpdateMonIconFrame(struct Sprite *sprite); #endif // GUARD_POKEMON_ICON_H diff --git a/include/rom6.h b/include/rom6.h deleted file mode 100644 index 753c07305..000000000 --- a/include/rom6.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef GUARD_ROM6_H -#define GUARD_ROM6_H - -#include "global.h" - -void sub_81357FC(u8, void(void)); -u8 GetLeadMonIndex(void); -u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y); -void sub_813BADC(bool8); -bool8 sub_813B9C0(void); -void UpdateMirageRnd(u16 days); -void UpdateBirchState(u16 days); -void UpdateFrontierManiac(u16 days); -void UpdateFrontierGambler(u16 days); -void SetShoalItemFlag(u16 days); - -#endif //GUARD_ROM6_H diff --git a/include/sprite.h b/include/sprite.h index 27e5dc852..04c992dae 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -251,6 +251,7 @@ extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; extern const struct SpriteTemplate gDummySpriteTemplate; extern struct Sprite gSprites[]; +extern struct OamMatrix gOamMatrices[]; void ResetSpriteData(void); void AnimateSprites(void); diff --git a/ld_script.txt b/ld_script.txt index c9de54716..27ac542bc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -111,7 +111,7 @@ SECTIONS { src/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); - asm/battle_anim_mons.o(.text); + src/battle_anim_mons.o(.text); src/task.o(.text); src/reshow_battle_screen.o(.text); asm/battle_anim_status_effects.o(.text); @@ -166,11 +166,12 @@ SECTIONS { asm/bug.o(.text); asm/rock.o(.text); asm/ghost.o(.text); - asm/dragon.o(.text); - asm/dark.o(.text); - asm/ground.o(.text); - asm/normal.o(.text); - asm/battle_anim_utility_funcs.o(.text); + src/dragon.o(.text); + src/dark.o(.text); + src/ground.o(.text); + src/normal.o(.text); + src/battle_anim_utility_funcs.o(.text); + src/battle_intro.o(.text); asm/bike.o(.text); asm/easy_chat.o(.text); asm/mon_markings.o(.text); @@ -200,7 +201,7 @@ SECTIONS { src/save.o(.text); src/mystery_event_script.o(.text); asm/field_effect_helpers.o(.text); - asm/battle_anim_sound_tasks.o(.text); + src/battle_anim_sound_tasks.o(.text); src/battle_controller_safari.o(.text); src/fldeff_sweetscent.o(.text); asm/battle_anim_effects_3.o(.text); @@ -412,6 +413,7 @@ SECTIONS { src/palette.o(.rodata); src/sound.o(.rodata); data/battle_anim.o(.rodata); + src/battle_anim_mons.o(.rodata); data/map_events.o(.rodata); data/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); @@ -421,6 +423,13 @@ SECTIONS { src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); data/data_835B488.o(.rodata.83DF09C); + src/dragon.o(.rodata); + src/dark.o(.rodata); + src/ground.o(.rodata); + src/normal.o(.rodata); + src/battle_anim_utility_funcs.o(.rodata); + src/battle_intro.o(.rodata); + data/data_835B488.o(.rodata.83E7CFC); src/heal_location.o(.rodata); data/data_835B488.o(.rodata.83EEC98); src/battle_ai_script_commands.o(.rodata); diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 88fbce6da..21d07246f 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -92,7 +92,7 @@ const struct SpriteTemplate gUnknown_83D4EB4 = // arg 4: frame delay void AnimTask_ShakeMon(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (spriteId == 0xFF) DestroyAnimVisualTask(taskId); @@ -150,7 +150,7 @@ void AnimTask_ShakeMon2(u8 taskId) if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT) { - spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (spriteId == 0xFF) abort = TRUE; } @@ -228,7 +228,7 @@ static void AnimTask_ShakeMon2Step(u8 taskId) // arg 4: delay void AnimTask_ShakeMonInPlace(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (spriteId == 0xFF) DestroyAnimVisualTask(taskId); @@ -290,7 +290,7 @@ static void AnimTask_ShakeMonInPlaceStep(u8 taskId) // arg 4: duration void AnimTask_ShakeAndSinkMon(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); gSprites[spriteId].pos2.x = gBattleAnimArgs[1]; gTasks[taskId].data[0] = spriteId; @@ -331,7 +331,7 @@ void AnimTask_TranslateMonElliptical(u8 taskId) { u8 wavePeriod = 1; u8 i; - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) gBattleAnimArgs[4] = 5; for (i = 0; i < gBattleAnimArgs[4]; i++) @@ -414,7 +414,7 @@ static void DoVerticalDip(struct Sprite * sprite) { u8 spriteId; sprite->invisible = TRUE; - spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = 0; sprite->data[2] = gBattleAnimArgs[1]; @@ -581,7 +581,7 @@ void AnimTask_WindUpLunge(u8 taskId) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; } - gTasks[taskId].data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]); + gTasks[taskId].data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); gTasks[taskId].data[1] = gBattleAnimArgs[1] * 256 / gBattleAnimArgs[3]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; @@ -627,7 +627,7 @@ void sub_80995FC(u8 taskId) { case 0: case 1: - spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; case 2: if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK)) @@ -678,7 +678,7 @@ void AnimTask_SwayMon(u8 taskId) u8 spriteId; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]); + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[4]); gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; @@ -735,7 +735,7 @@ static void AnimTask_SwayMonStep(u8 taskId) // arg 4: sprite object mode void AnimTask_ScaleMonAndRestore(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]); PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]); gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; @@ -773,7 +773,7 @@ static void AnimTask_ScaleMonAndRestoreStep(u8 taskId) void sub_8099980(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; @@ -806,7 +806,7 @@ void sub_8099980(u8 taskId) void sub_8099A78(u8 taskId) { - u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; @@ -844,7 +844,7 @@ static void sub_8099B54(u8 taskId) gTasks[taskId].data[3] += gTasks[taskId].data[4]; SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); if (gTasks[taskId].data[7]) - sub_80759DC(gTasks[taskId].data[5]); + SetBattlerSpriteYOffsetFromRotation(gTasks[taskId].data[5]); if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2]) { switch (gTasks[taskId].data[6]) @@ -888,7 +888,7 @@ void sub_8099BD4(u8 taskId) gTasks[taskId].data[12] = 0; gTasks[taskId].data[10] = gBattleAnimArgs[3]; gTasks[taskId].data[11] = gBattleAnimArgs[4]; - gTasks[taskId].data[7] = GetAnimBankSpriteId(1); + gTasks[taskId].data[7] = GetAnimBattlerSpriteId(1); gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x; gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y; gTasks[taskId].data[0] = 0; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c new file mode 100644 index 000000000..ed9c9bc2b --- /dev/null +++ b/src/battle_anim_mons.c @@ -0,0 +1,2253 @@ +#include "global.h" +#include "battle_anim.h" +#include "bg.h" +#include "data.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "malloc.h" +#include "palette.h" +#include "pokemon_icon.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/battle_anim.h" +#include "constants/species.h" + +#define GET_UNOWN_LETTER(personality) (( \ + (((personality & 0x03000000) >> 24) << 6) \ + | (((personality & 0x00030000) >> 16) << 4) \ + | (((personality & 0x00000300) >> 8) << 2) \ + | (((personality & 0x00000003) >> 0) << 0) \ +) % 28) + +#define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + +static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); +static void sub_8075658(struct Sprite *sprite); +static void sub_80757E8(struct Sprite *sprite); +static bool8 sub_80758DC(void); +static void sub_8075EF0(struct Sprite *sprite); +static void sub_80760D0(u8 taskId); +static void AnimTask_BlendMonInAndOutSetup(struct Task *task); +static void AnimTask_BlendMonInAndOutStep(u8 taskId); +static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); +static void sub_8077118(u8 taskId); +static void sub_80771E4(struct Task *task, u8 taskId); +static void sub_8077268(struct Sprite *sprite); +static void sub_80772F4(struct Sprite *sprite); + +static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL; +static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used + +static const struct UCoords8 sBattlerCoords[][4] = +{ + { + { 72, 80 }, + { 176, 40 }, + { 48, 40 }, + { 112, 80 }, + }, + { + { 32, 80 }, + { 200, 40 }, + { 90, 88 }, + { 152, 32 }, + }, +}; + +// One entry for each of the four Castform forms. +const struct MonCoords gCastformFrontSpriteCoords[] = +{ + { .size = 0x44, .y_offset = 17 }, // NORMAL + { .size = 0x66, .y_offset = 9 }, // SUN + { .size = 0x46, .y_offset = 9 }, // RAIN + { .size = 0x86, .y_offset = 8 }, // HAIL +}; + +static const u8 sCastformElevations[] = +{ + 13, // NORMAL + 14, // SUN + 13, // RAIN + 13, // HAIL +}; + +// Y position of the backsprite for each of the four Castform forms. +static const u8 sCastformBackSpriteYCoords[] = +{ + 0, // NORMAL + 0, // SUN + 0, // RAIN + 0, // HAIL +}; + +static const struct SpriteTemplate gUnknown_83AE054[] = +{ + { + .tileTag = 0xD755, + .paletteTag = 0xD755, + .oam = &gOamData_83ACA40, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 0xD756, + .paletteTag = 0xD756, + .oam = &gOamData_83ACA40, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + } +}; + +static const struct SpriteSheet gUnknown_83AE084[] = +{ + { gMiscBlank_Gfx, 0x800, 0xD755 }, + { gMiscBlank_Gfx, 0x800, 0xD756 }, +}; + +u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) +{ + u8 retVal; + u16 species; + struct BattleSpriteInfo *spriteInfo; + + switch (coordType) + { + case BATTLER_COORD_X: + case BATTLER_COORD_X_2: + retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].x; + break; + case BATTLER_COORD_Y: + retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + break; + case BATTLER_COORD_Y_PIC_OFFSET: + case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT: + default: + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + if (coordType == BATTLER_COORD_Y_PIC_OFFSET) + retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE); + else + retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE); + break; + } + return retVal; +} + +static u8 GetBattlerYDelta(u8 battlerId, u16 species) +{ + u16 letter; + u32 personality; + struct BattleSpriteInfo *spriteInfo; + u8 ret; + u16 coordSpecies; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + if (species == SPECIES_UNOWN) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + else + personality = gTransformedPersonalities[battlerId]; + letter = GET_UNOWN_LETTER(personality); + if (!letter) + coordSpecies = species; + else + coordSpecies = letter + SPECIES_UNOWN_B - 1; + ret = gMonBackPicCoords[coordSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + ret = sCastformBackSpriteYCoords[gBattleMonForms[battlerId]]; + } + else if (species > NUM_SPECIES) + { + ret = gMonBackPicCoords[0].y_offset; + } + else + { + ret = gMonBackPicCoords[species].y_offset; + } + } + else + { + if (species == SPECIES_UNOWN) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + else + personality = gTransformedPersonalities[battlerId]; + letter = GET_UNOWN_LETTER(personality); + if (!letter) + coordSpecies = species; + else + coordSpecies = letter + SPECIES_UNOWN_B - 1; + ret = gMonFrontPicCoords[coordSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + ret = gCastformFrontSpriteCoords[gBattleMonForms[battlerId]].y_offset; + } + else if (species > NUM_SPECIES) + { + ret = gMonFrontPicCoords[0].y_offset; + } + else + { + ret = gMonFrontPicCoords[species].y_offset; + } + } + return ret; +} + +static u8 GetBattlerElevation(u8 battlerId, u16 species) +{ + u8 ret = 0; + + if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) + { + if (species == SPECIES_CASTFORM) + ret = sCastformElevations[gBattleMonForms[battlerId]]; + else if (species > NUM_SPECIES) + ret = gEnemyMonElevation[0]; + else + ret = gEnemyMonElevation[species]; + } + return ret; +} + +static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) +{ + u16 offset; + u8 y; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + offset = GetBattlerYDelta(battlerId, species); + } + else + { + offset = GetBattlerYDelta(battlerId, species); + offset -= GetBattlerElevation(battlerId, species); + } + y = offset + sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + if (a3) + { + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + y += 8; + if (y > 104) + y = 104; + } + return y; +} + +u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType) +{ + u16 species; + struct BattleSpriteInfo *spriteInfo; + + if (coordType == BATTLER_COORD_Y_PIC_OFFSET || coordType == BATTLER_COORD_Y_PIC_OFFSET_DEFAULT) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = gAnimBattlerSpecies[battlerId]; + else + species = spriteInfo[battlerId].transformSpecies; + if (coordType == BATTLER_COORD_Y_PIC_OFFSET) + return GetBattlerSpriteFinal_Y(battlerId, species, TRUE); + else + return GetBattlerSpriteFinal_Y(battlerId, species, FALSE); + } + else + { + return GetBattlerSpriteCoord(battlerId, coordType); + } +} + +u8 GetBattlerSpriteDefault_Y(u8 battlerId) +{ + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT); +} + +u8 GetSubstituteSpriteDefault_Y(u8 battlerId) +{ + u16 y; + + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 16; + else + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 17; + return y; +} + +u8 GetGhostSpriteDefault_Y(u8 battlerId) +{ + if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT); + else + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y); +} + +u8 GetBattlerYCoordWithElevation(u8 battlerId) +{ + u16 species; + u8 y; + struct BattleSpriteInfo *spriteInfo; + + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y); + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + y -= GetBattlerElevation(battlerId, species); + return y; +} + +u8 GetAnimBattlerSpriteId(u8 animBattler) +{ + u8 *sprites; + + if (animBattler == ANIM_ATTACKER) + { + if (IsBattlerSpritePresent(gBattleAnimAttacker)) + { + sprites = gBattlerSpriteIds; + return sprites[gBattleAnimAttacker]; + } + else + { + return 0xFF; + } + } + else if (animBattler == ANIM_TARGET) + { + if (IsBattlerSpritePresent(gBattleAnimTarget)) + { + sprites = gBattlerSpriteIds; + return sprites[gBattleAnimTarget]; + } + else + { + return 0xFF; + } + } + else if (animBattler == ANIM_ATK_PARTNER) + { + if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + return 0xFF; + else + return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]; + } + else + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]; + else + return 0xFF; + } +} + +void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback) +{ + sprite->data[6] = (u32)(callback) & 0xFFFF; + sprite->data[7] = (u32)(callback) >> 16; +} + +static void SetCallbackToStoredInData6(struct Sprite *sprite) +{ + u32 callback = (u16)sprite->data[6] | (sprite->data[7] << 16); + + sprite->callback = (SpriteCallback)callback; +} + +void TranslateSpriteInCircleOverDuration(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); + sprite->data[0] += sprite->data[2]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + --sprite->data[3]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); + sprite->data[0] += sprite->data[2]; + sprite->data[5] += sprite->data[4]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + --sprite->data[3]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +// not used +static void sub_8074B5C(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]); + sprite->data[0] += sprite->data[2]; + sprite->data[4] += sprite->data[5]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + if (sprite->data[4] >= 0x100) + sprite->data[4] -= 0x100; + else if (sprite->data[4] < 0) + sprite->data[4] += 0x100; + --sprite->data[3]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]); + sprite->data[0] += sprite->data[2]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + --sprite->data[3]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +// Simply waits until the sprite's data[0] hits zero. +// This is used to let sprite anims or affine anims to run for a designated +// duration. +void WaitAnimForDuration(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + --sprite->data[0]; + else + SetCallbackToStoredInData6(sprite); +} + +static void sub_8074C64(struct Sprite *sprite) +{ + sub_8074C80(sprite); + sprite->callback = TranslateSpriteLinear; + sprite->callback(sprite); +} + +void sub_8074C80(struct Sprite *sprite) +{ + s16 old; + s32 xDiff; + + if (sprite->data[1] > sprite->data[2]) + sprite->data[0] = -sprite->data[0]; + xDiff = sprite->data[2] - sprite->data[1]; + old = sprite->data[0]; + sprite->data[0] = abs(xDiff / sprite->data[0]); + sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0]; + sprite->data[1] = old; +} + +void TranslateSpriteLinear(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + sprite->pos2.x += sprite->data[1]; + sprite->pos2.y += sprite->data[2]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void TranslateSpriteLinearFixedPoint(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } + + UpdateMonIconFrame(sprite); +} + +// not used +static void sub_8074D80(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x + sprite->pos2.x; + sprite->data[3] = sprite->pos1.y + sprite->pos2.y; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = sub_8074C64; +} + +void TranslateMonSpriteLinear(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + gSprites[sprite->data[3]].pos2.x += sprite->data[1]; + gSprites[sprite->data[3]].pos2.y += sprite->data[2]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8; + gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void TranslateSpriteLinearAndFlicker(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + --sprite->data[0]; + sprite->pos2.x = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[1]; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[4] += sprite->data[3]; + if (sprite->data[0] % sprite->data[5] == 0) + { + if (sprite->data[5]) + sprite->invisible ^= 1; + } + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void DestroySpriteAndMatrix(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroyAnimSprite(sprite); +} + +// not used +static void sub_8074EF4(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x + sprite->pos2.x; + sprite->data[3] = sprite->pos1.y + sprite->pos2.y; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = sub_8074C64; +} + +// not used +static void sub_8074F38(struct Sprite *sprite) +{ + ResetPaletteStructByUid(sprite->data[5]); + DestroySpriteAndMatrix(sprite); +} + +void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + SetCallbackToStoredInData6(sprite); +} + +void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite) +{ + if (sprite->animEnded) + SetCallbackToStoredInData6(sprite); +} + +void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +void DestroyAnimVisualTaskAndDisableBlend(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); +} + +void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); +} + +// Sets the initial x offset of the anim sprite depending on the horizontal orientation +// of the two involved mons. +void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset) +{ + u16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + u16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + + if (attackerX > targetX) + { + sprite->pos1.x -= xOffset; + } + else if (attackerX < targetX) + { + sprite->pos1.x += xOffset; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= xOffset; + else + sprite->pos1.x += xOffset; + } +} + +void InitAnimArcTranslation(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimLinearTranslation(sprite); + sprite->data[6] = 0x8000 / sprite->data[0]; + sprite->data[7] = 0; +} + +bool8 TranslateAnimHorizontalArc(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite)) + return TRUE; + sprite->data[7] += sprite->data[6]; + sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); + return FALSE; +} + +bool8 TranslateAnimVerticalArc(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite)) + return TRUE; + sprite->data[7] += sprite->data[6]; + sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); + return FALSE; +} + +void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; +} + +void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets) +{ + // Battle anim sprites are automatically created at the anim target's center, which + // is why there is no else clause for the "respectMonPicOffsets" check. + if (!respectMonPicOffsets) + { + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y); + } + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets) +{ + if (!respectMonPicOffsets) + { + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +u8 GetBattlerSide(u8 battlerId) +{ + return GET_BATTLER_SIDE2(battlerId); +} + +u8 GetBattlerPosition(u8 battlerId) +{ + return GET_BATTLER_POSITION(battlerId); +} + +u8 GetBattlerAtPosition(u8 position) +{ + u8 i; + + for (i = 0; i < gBattlersCount; ++i) + if (gBattlerPositions[i] == position) + break; + return i; +} + +bool8 IsBattlerSpritePresent(u8 battlerId) +{ + if (gBattlerPositions[battlerId] == 0xFF) + { + return FALSE; + } + else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_HP) != 0) + return TRUE; + } + else + { + if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_HP) != 0) + return TRUE; + } + return FALSE; +} + +bool8 IsDoubleBattle(void) +{ + return IS_DOUBLE_BATTLE(); +} + +void sub_80752A0(struct BattleAnimBgData *animBgData) +{ + animBgData->bgTiles = gUnknown_2022BB8; + animBgData->bgTilemap = (u16 *)gUnknown_2022BBC; + animBgData->paletteId = 8; + animBgData->bgId = 1; + animBgData->tilesOffset = 0x200; + animBgData->unused = 0; +} + +void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1) +{ + if (arg1 == 1) + { + sub_80752A0(animBgData); + } + else + { + animBgData->bgTiles = gUnknown_2022BB8; + animBgData->bgTilemap = (u16 *)gUnknown_2022BBC; + animBgData->paletteId = 9; + animBgData->bgId = 2; + animBgData->tilesOffset = 0x300; + animBgData->unused = 0; + } +} + +void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused) +{ + animBgData->bgTiles = gUnknown_2022BB8; + animBgData->bgTilemap = (u16 *)gUnknown_2022BBC; + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + { + animBgData->paletteId = 8; + animBgData->bgId = 1; + animBgData->tilesOffset = 0x200; + animBgData->unused = 0; + } + else + { + animBgData->paletteId = 9; + animBgData->bgId = 2; + animBgData->tilesOffset = 0x300; + animBgData->unused = 0; + } +} + +void sub_8075358(u32 bgId) +{ + struct BattleAnimBgData animBgData; + + sub_80752C8(&animBgData, bgId); + CpuFill32(0, animBgData.bgTiles, 0x2000); + LoadBgTiles(bgId, animBgData.bgTiles, 0x2000, animBgData.tilesOffset); + FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17); + CopyBgTilemapBufferToVram(bgId); +} + +void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset) +{ + CpuFill32(0, gUnknown_2022BB8, 0x2000); + LZDecompressWram(src, gUnknown_2022BB8); + LoadBgTiles(bgId, gUnknown_2022BB8, 0x2000, tilesOffset); +} + +void InitAnimBgTilemapBuffer(u32 bgId, const void *src) +{ + FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17); + CopyToBgTilemapBuffer(bgId, src, 0, 0); +} + +void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src) +{ + InitAnimBgTilemapBuffer(bgId, src); + CopyBgTilemapBufferToVram(bgId); +} + +u8 sub_8075454(void) +{ + return 2; +} + +void sub_8075458(bool8 arg0) +{ + if (!arg0) + { + SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 1); + } + else + { + SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 1); + SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 0); + } +} + +void sub_8075490(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitSpriteDataForLinearTranslation(sprite); + sprite->callback = TranslateSpriteLinearFixedPointIconFrame; + sprite->callback(sprite); +} + +void InitSpriteDataForLinearTranslation(struct Sprite *sprite) +{ + s16 x = (sprite->data[2] - sprite->data[1]) << 8; + s16 y = (sprite->data[4] - sprite->data[3]) << 8; + + sprite->data[1] = x / sprite->data[0]; + sprite->data[2] = y / sprite->data[0]; + sprite->data[4] = 0; + sprite->data[3] = 0; +} + +void InitAnimLinearTranslation(struct Sprite *sprite) +{ + s32 x = sprite->data[2] - sprite->data[1]; + s32 y = sprite->data[4] - sprite->data[3]; + bool8 movingLeft = x < 0; + bool8 movingUp = y < 0; + u16 xDelta = abs(x) << 8; + u16 yDelta = abs(y) << 8; + + xDelta = xDelta / sprite->data[0]; + yDelta = yDelta / sprite->data[0]; + + if (movingLeft) + xDelta |= 1; + else + xDelta &= ~1; + + if (movingUp) + yDelta |= 1; + else + yDelta &= ~1; + + sprite->data[1] = xDelta; + sprite->data[2] = yDelta; + sprite->data[4] = 0; + sprite->data[3] = 0; +} + +void StartAnimLinearTranslation(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimLinearTranslation(sprite); + sprite->callback = sub_807563C; + sprite->callback(sprite); +} + +void sub_80755B8(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimLinearTranslation(sprite); + sprite->callback = sub_8075658; + sprite->callback(sprite); +} + +bool8 AnimTranslateLinear(struct Sprite *sprite) +{ + u16 v1, v2, x, y; + + if (!sprite->data[0]) + return TRUE; + v1 = sprite->data[1]; + v2 = sprite->data[2]; + x = sprite->data[3]; + y = sprite->data[4]; + x += v1; + y += v2; + if (v1 & 1) + sprite->pos2.x = -(x >> 8); + else + sprite->pos2.x = x >> 8; + + if (v2 & 1) + sprite->pos2.y = -(y >> 8); + else + sprite->pos2.y = y >> 8; + sprite->data[3] = x; + sprite->data[4] = y; + --sprite->data[0]; + return FALSE; +} + +void sub_807563C(struct Sprite *sprite) +{ + if (AnimTranslateLinear(sprite)) + SetCallbackToStoredInData6(sprite); +} + +static void sub_8075658(struct Sprite *sprite) +{ + sub_801236C(sprite); + if (AnimTranslateLinear(sprite)) + SetCallbackToStoredInData6(sprite); +} + +void sub_8075678(struct Sprite *sprite) +{ + s32 v1 = abs(sprite->data[2] - sprite->data[1]) << 8; + + sprite->data[0] = v1 / sprite->data[0]; + InitAnimLinearTranslation(sprite); +} + +void sub_80756A4(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sub_8075678(sprite); + sprite->callback = sub_807563C; + sprite->callback(sprite); +} + +static void InitAnimFastLinearTranslation(struct Sprite *sprite) +{ + s32 xDiff = sprite->data[2] - sprite->data[1]; + s32 yDiff = sprite->data[4] - sprite->data[3]; + bool8 xSign = xDiff < 0; + bool8 ySign = yDiff < 0; + u16 x2 = abs(xDiff) << 4; + u16 y2 = abs(yDiff) << 4; + + x2 /= sprite->data[0]; + y2 /= sprite->data[0]; + if (xSign) + x2 |= 1; + else + x2 &= ~1; + if (ySign) + y2 |= 1; + else + y2 &= ~1; + sprite->data[1] = x2; + sprite->data[2] = y2; + sprite->data[4] = 0; + sprite->data[3] = 0; +} + +void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimFastLinearTranslation(sprite); + sprite->callback = sub_80757E8; + sprite->callback(sprite); +} + +bool8 AnimFastTranslateLinear(struct Sprite *sprite) +{ + u16 v1, v2, x, y; + + if (!sprite->data[0]) + return TRUE; + v1 = sprite->data[1]; + v2 = sprite->data[2]; + x = sprite->data[3]; + y = sprite->data[4]; + x += v1; + y += v2; + if (v1 & 1) + sprite->pos2.x = -(x >> 4); + else + sprite->pos2.x = x >> 4; + if (v2 & 1) + sprite->pos2.y = -(y >> 4); + else + sprite->pos2.y = y >> 4; + sprite->data[3] = x; + sprite->data[4] = y; + --sprite->data[0]; + return FALSE; +} + +static void sub_80757E8(struct Sprite *sprite) +{ + if (AnimFastTranslateLinear(sprite)) + SetCallbackToStoredInData6(sprite); +} + +void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) +{ + s32 xDiff = abs(sprite->data[2] - sprite->data[1]) << 4; + + sprite->data[0] = xDiff / sprite->data[0]; + InitAnimFastLinearTranslation(sprite); +} + +void sub_8075830(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimFastLinearTranslationWithSpeed(sprite); + sprite->callback = sub_80757E8; + sprite->callback(sprite); +} + +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) +{ + s32 i; + struct ObjAffineSrcData src; + struct OamMatrix matrix; + + src.xScale = xScale; + src.yScale = yScale; + src.rotation = rotation; + if (sub_80758DC()) + src.xScale = -src.xScale; + i = gSprites[spriteId].oam.matrixNum; + ObjAffineSet(&src, &matrix, 1, 2); + gOamMatrices[i].a = matrix.a; + gOamMatrices[i].b = matrix.b; + gOamMatrices[i].c = matrix.c; + gOamMatrices[i].d = matrix.d; +} + +static bool8 sub_80758DC(void) +{ + return FALSE; +} + +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode) +{ + u8 battlerId = gSprites[spriteId].data[0]; + + if (IsBattlerSpriteVisible(battlerId)) + gSprites[spriteId].invisible = FALSE; + gSprites[spriteId].oam.objMode = objMode; + gSprites[spriteId].affineAnimPaused = TRUE; + if (!gSprites[spriteId].oam.affineMode) + gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); +} + +void ResetSpriteRotScale(u8 spriteId) +{ + SetSpriteRotScale(spriteId, 0x100, 0x100, 0); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.objMode = 0; + gSprites[spriteId].affineAnimPaused = FALSE; + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); +} + +// Sets the sprite's y offset equal to the y displacement caused by the +// matrix's rotation. +void SetBattlerSpriteYOffsetFromRotation(u8 spriteId) +{ + u16 matrixNum = gSprites[spriteId].oam.matrixNum; + // The "c" component of the battler sprite matrix contains the sine of the rotation angle divided by some scale amount. + s16 c = gOamMatrices[matrixNum].c; + + if (c < 0) + c = -c; + gSprites[spriteId].pos2.y = c >> 3; +} + +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation) +{ + s32 i; + struct ObjAffineSrcData src; + struct OamMatrix matrix; + + if (sprite->oam.affineMode & 1) + { + sprite->affineAnimPaused = TRUE; + if (recalcCenterVector) + CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); + src.xScale = xScale; + src.yScale = yScale; + src.rotation = rotation; + if (sub_80758DC()) + src.xScale = -src.xScale; + i = sprite->oam.matrixNum; + ObjAffineSet(&src, &matrix, 1, 2); + gOamMatrices[i].a = matrix.a; + gOamMatrices[i].b = matrix.b; + gOamMatrices[i].c = matrix.c; + gOamMatrices[i].d = matrix.d; + } +} + +void sub_8075AD8(struct Sprite *sprite) +{ + TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0); + sprite->affineAnimPaused = FALSE; + CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); +} + +static u16 ArcTan2_(s16 a, s16 b) +{ + return ArcTan2(a, b); +} + +u16 ArcTan2Neg(s16 a, s16 b) +{ + u16 var = ArcTan2_(a, b); + return -var; +} + +void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) +{ + s32 i; + struct PlttData *originalColor; + struct PlttData *destColor; + u16 average; + + paletteNum *= 16; + + if (!restoreOriginalColor) + { + for (i = 0; i < 16; ++i) + { + originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i]; + average = originalColor->r + originalColor->g + originalColor->b; + average /= 3; + destColor = (struct PlttData *)&gPlttBufferFaded[paletteNum + i]; + destColor->r = average; + destColor->g = average; + destColor->b = average; + } + } + else + { + CpuCopy32(&gPlttBufferUnfaded[paletteNum], &gPlttBufferFaded[paletteNum], 32); + } +} + +u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7) +{ + u32 selectedPalettes = 0; + u32 shift; + + if (battleBackground) + { + selectedPalettes = 0xe; + } + if (attacker) + { + shift = gBattleAnimAttacker + 16; + selectedPalettes |= 1 << shift; + } + if (target) + { + shift = gBattleAnimTarget + 16; + selectedPalettes |= 1 << shift; + } + if (attackerPartner) + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + { + shift = BATTLE_PARTNER(gBattleAnimAttacker) + 16; + selectedPalettes |= 1 << shift; + } + } + if (targetPartner) + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + { + shift = BATTLE_PARTNER(gBattleAnimTarget) + 16; + selectedPalettes |= 1 << shift; + } + } + if (a6) + { + selectedPalettes |= 0x100; + } + if (a7) + { + selectedPalettes |= 0x200; + } + return selectedPalettes; +} + +u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4) +{ + u32 var = 0; + u32 shift; + + if (a1) + { + if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT))) + { + var |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16); + } + } + if (a2) + { + if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT))) + { + shift = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) + 16; + var |= 1 << shift; + } + } + if (a3) + { + if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))) + { + shift = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT) + 16; + var |= 1 << shift; + } + } + if (a4) + { + if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) + { + shift = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT) + 16; + var |= 1 << shift; + } + } + return var; +} + +u8 sub_8075D80(u8 a1) +{ + return a1; +} + +// not used +static u8 GetBattlerAtPosition_(u8 position) +{ + return GetBattlerAtPosition(position); +} + +void sub_8075D9C(struct Sprite *sprite) +{ + bool8 var; + + if (!sprite->data[0]) + { + if (!gBattleAnimArgs[3]) + var = TRUE; + else + var = FALSE; + if (!gBattleAnimArgs[2]) + InitSpritePosToAnimAttacker(sprite, var); + else + InitSpritePosToAnimTarget(sprite, var); + ++sprite->data[0]; + + } + else if (sprite->animEnded || sprite->affineAnimEnded) + { + DestroySpriteAndMatrix(sprite); + } +} + +// Linearly translates a sprite to a target position on the +// other mon's sprite. +// arg 0: initial x offset +// arg 1: initial y offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: duration +// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) +{ + bool8 v1; + u8 coordType; + + if (!(gBattleAnimArgs[5] & 0xFF00)) + v1 = TRUE; + else + v1 = FALSE; + if (!(gBattleAnimArgs[5] & 0xFF)) + coordType = BATTLER_COORD_Y_PIC_OFFSET; + else + coordType = BATTLER_COORD_Y; + InitSpritePosToAnimAttacker(sprite, v1); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_8075E80(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, 1); + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + sprite->callback = sub_8075EF0; +} + +static void sub_8075EF0(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); +} + +void sub_8075F0C(struct Sprite *sprite) +{ + bool8 r4; + u8 battlerId, coordType; + + if (!gBattleAnimArgs[6]) + { + r4 = TRUE; + coordType = BATTLER_COORD_Y_PIC_OFFSET; + } + else + { + r4 = FALSE; + coordType = BATTLER_COORD_Y; + } + if (!gBattleAnimArgs[5]) + { + InitSpritePosToAnimAttacker(sprite, r4); + battlerId = gBattleAnimAttacker; + } + else + { + InitSpritePosToAnimTarget(sprite, r4); + battlerId = gBattleAnimTarget; + } + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + InitSpritePosToAnimTarget(sprite, r4); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +s16 CloneBattlerSpriteWithBlend(u8 animBattler) +{ + u16 i; + u8 spriteId = GetAnimBattlerSpriteId(animBattler); + + if (spriteId != 0xFF) + { + for (i = 0; i < MAX_SPRITES; ++i) + { + if (!gSprites[i].inUse) + { + gSprites[i] = gSprites[spriteId]; + gSprites[i].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[i].invisible = FALSE; + return i; + } + } + } + return -1; +} + +void obj_delete_but_dont_free_vram(struct Sprite *sprite) +{ + sprite->usingSheet = TRUE; + DestroySprite(sprite); +} + +void sub_8076048(u8 taskId) +{ + s16 v1 = 0, v2 = 0; + + if (gBattleAnimArgs[2] > gBattleAnimArgs[0]) + v2 = 1; + if (gBattleAnimArgs[2] < gBattleAnimArgs[0]) + v2 = -1; + if (gBattleAnimArgs[3] > gBattleAnimArgs[1]) + v1 = 1; + if (gBattleAnimArgs[3] < gBattleAnimArgs[1]) + v1 = -1; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gBattleAnimArgs[4]; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = gBattleAnimArgs[0]; + gTasks[taskId].data[4] = gBattleAnimArgs[1]; + gTasks[taskId].data[5] = v2; + gTasks[taskId].data[6] = v1; + gTasks[taskId].data[7] = gBattleAnimArgs[2]; + gTasks[taskId].data[8] = gBattleAnimArgs[3]; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gBattleAnimArgs[0], gBattleAnimArgs[1])); + gTasks[taskId].func = sub_80760D0; +} + +static void sub_80760D0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (++task->data[0] > task->data[1]) + { + task->data[0] = 0; + if (++task->data[2] & 1) + { + if (task->data[3] != task->data[7]) + task->data[3] += task->data[5]; + } + else + { + if (task->data[4] != task->data[8]) + task->data[4] += task->data[6]; + } + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4])); + if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) + { + DestroyAnimVisualTask(taskId); + return; + } + } +} + +// Linearly blends a mon's sprite colors with a target color with increasing +// strength, and then blends out to the original color. +// arg 0: anim bank +// arg 1: blend color +// arg 2: target blend coefficient +// arg 3: initial delay +// arg 4: number of times to blend in and out +void AnimTask_BlendMonInAndOut(u8 task) +{ + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + + if (spriteId == 0xFF) + { + DestroyAnimVisualTask(task); + return; + } + gTasks[task].data[0] = (gSprites[spriteId].oam.paletteNum * 0x10) + 0x101; + AnimTask_BlendMonInAndOutSetup(&gTasks[task]); +} + +static void AnimTask_BlendMonInAndOutSetup(struct Task *task) +{ + task->data[1] = gBattleAnimArgs[1]; + task->data[2] = 0; + task->data[3] = gBattleAnimArgs[2]; + task->data[4] = 0; + task->data[5] = gBattleAnimArgs[3]; + task->data[6] = 0; + task->data[7] = gBattleAnimArgs[4]; + task->func = AnimTask_BlendMonInAndOutStep; +} + +static void AnimTask_BlendMonInAndOutStep(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (++task->data[4] >= task->data[5]) + { + task->data[4] = 0; + if (!task->data[6]) + { + ++task->data[2]; + BlendPalette(task->data[0], 15, task->data[2], task->data[1]); + if (task->data[2] == task->data[3]) + task->data[6] = 1; + } + else + { + --task->data[2]; + BlendPalette(task->data[0], 15, task->data[2], task->data[1]); + if (!task->data[2]) + { + if (--task->data[7]) + { + task->data[4] = 0; + task->data[6] = 0; + } + else + { + DestroyAnimVisualTask(taskId); + return; + } + } + } + } +} + +void sub_8076288(u8 taskId) +{ + u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); + + if (palette == 0xFF) + { + DestroyAnimVisualTask(taskId); + return; + } + gTasks[taskId].data[0] = (palette * 0x10) + 0x101; + AnimTask_BlendMonInAndOutSetup(&gTasks[taskId]); +} + +void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds) +{ + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 0; + task->data[15] = spriteId; + task->data[10] = 0x100; + task->data[11] = 0x100; + task->data[12] = 0; + StorePointerInVars(&task->data[13], &task->data[14], affineAnimCmds); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); +} + +bool8 RunAffineAnimFromTaskData(struct Task *task) +{ + sAnimTaskAffineAnim = LoadPointerFromVars(task->data[13], task->data[14]) + (task->data[7] << 3); + switch (sAnimTaskAffineAnim->type) + { + default: + if (!sAnimTaskAffineAnim->frame.duration) + { + task->data[10] = sAnimTaskAffineAnim->frame.xScale; + task->data[11] = sAnimTaskAffineAnim->frame.yScale; + task->data[12] = sAnimTaskAffineAnim->frame.rotation; + ++task->data[7]; + ++sAnimTaskAffineAnim; + } + task->data[10] += sAnimTaskAffineAnim->frame.xScale; + task->data[11] += sAnimTaskAffineAnim->frame.yScale; + task->data[12] += sAnimTaskAffineAnim->frame.rotation; + SetSpriteRotScale(task->data[15], task->data[10], task->data[11], task->data[12]); + SetBattlerSpriteYOffsetFromYScale(task->data[15]); + if (++task->data[8] >= sAnimTaskAffineAnim->frame.duration) + { + task->data[8] = 0; + ++task->data[7]; + } + break; + case AFFINEANIMCMDTYPE_JUMP: + task->data[7] = sAnimTaskAffineAnim->jump.target; + break; + case AFFINEANIMCMDTYPE_LOOP: + if (sAnimTaskAffineAnim->loop.count) + { + if (task->data[9]) + { + if (!--task->data[9]) + { + ++task->data[7]; + break; + } + } + else + { + task->data[9] = sAnimTaskAffineAnim->loop.count; + } + if (!task->data[7]) + { + break; + } + while (TRUE) + { + --task->data[7]; + --sAnimTaskAffineAnim; + if (sAnimTaskAffineAnim->type == AFFINEANIMCMDTYPE_LOOP) + { + ++task->data[7]; + return TRUE; + } + if (!task->data[7]) + return TRUE; + } + } + ++task->data[7]; + break; + case AFFINEANIMCMDTYPE_END: + gSprites[task->data[15]].pos2.y = 0; + ResetSpriteRotScale(task->data[15]); + return FALSE; + } + return TRUE; +} + +// Sets the sprite's y offset equal to the y displacement caused by the +// matrix's scale in the y dimension. +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) +{ + s32 var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2; + u16 matrix = gSprites[spriteId].oam.matrixNum; + s32 var2 = (var << 8) / gOamMatrices[matrix].d; + + if (var2 > 128) + var2 = 128; + gSprites[spriteId].pos2.y = (var - var2) / 2; +} + +// Sets the sprite's y offset equal to the y displacement caused by another sprite +// matrix's scale in the y dimension. +void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId) +{ + s32 var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; + u16 matrix = gSprites[spriteId].oam.matrixNum; + s32 var2 = (var << 8) / gOamMatrices[matrix].d; + + if (var2 > 128) + var2 = 128; + gSprites[spriteId].pos2.y = (var - var2) / 2; +} + +static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) +{ + struct BattleSpriteInfo *spriteInfo; + u8 battlerId = gSprites[spriteId].data[0]; + u16 species; + u16 i; + + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + if (gBattlerSpriteIds[i] == spriteId) + { + if (GetBattlerSide(i) == B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + return gMonBackPicCoords[species].y_offset; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + return gMonFrontPicCoords[species].y_offset; + } + } + } + return 64; +} + +void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr) +{ + *lo = ((intptr_t)ptr) & 0xffff; + *hi = (((intptr_t)ptr) >> 16) & 0xffff; +} + +void *LoadPointerFromVars(s16 lo, s16 hi) +{ + return (void *)((u16)lo | ((u16)hi << 16)); +} + +void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) +{ + task->data[8] = a7; + task->data[15] = spriteId; + task->data[9] = a3; + task->data[10] = a4; + task->data[13] = a5; + task->data[14] = a6; + task->data[11] = (a5 - a3) / a7; + task->data[12] = (a6 - a4) / a7; +} + +u8 sub_8076640(struct Task *task) +{ + if (!task->data[8]) + return 0; + if (--task->data[8] != 0) + { + task->data[9] += task->data[11]; + task->data[10] += task->data[12]; + } + else + { + task->data[9] = task->data[13]; + task->data[10] = task->data[14]; + } + SetSpriteRotScale(task->data[15], task->data[9], task->data[10], 0); + if (task->data[8]) + SetBattlerSpriteYOffsetFromYScale(task->data[15]); + else + gSprites[task->data[15]].pos2.y = 0; + return task->data[8]; +} + +void AnimTask_GetFrustrationPowerLevel(u8 taskId) +{ + u16 powerLevel; + + if (gAnimFriendship <= 30) + powerLevel = 0; + else if (gAnimFriendship <= 100) + powerLevel = 1; + else if (gAnimFriendship <= 200) + powerLevel = 2; + else + powerLevel = 3; + gBattleAnimArgs[7] = powerLevel; + DestroyAnimVisualTask(taskId); +} + +// not used +static void sub_80766EC(u8 priority) +{ + if (IsBattlerSpriteVisible(gBattleAnimTarget)) + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority; + if (IsBattlerSpriteVisible(gBattleAnimAttacker)) + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].oam.priority = priority; + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]].oam.priority = priority; + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority; +} + +void sub_80767F0(void) +{ + s32 i; + + for (i = 0; i < gBattlersCount; ++i) + { + if (IsBattlerSpriteVisible(i)) + { + gSprites[gBattlerSpriteIds[i]].subpriority = GetBattlerSpriteSubpriority(i); + gSprites[gBattlerSpriteIds[i]].oam.priority = 2; + } + } +} + +u8 GetBattlerSpriteSubpriority(u8 battlerId) +{ + u8 subpriority; + u8 position = GetBattlerPosition(battlerId); + + if (position == B_POSITION_PLAYER_LEFT) + subpriority = 30; + else if (position == B_POSITION_PLAYER_RIGHT) + subpriority = 20; + else if (position == B_POSITION_OPPONENT_LEFT) + subpriority = 40; + else + subpriority = 50; + return subpriority; +} + +u8 GetBattlerSpriteBGPriority(u8 battlerId) +{ + u8 position = GetBattlerPosition(battlerId); + + if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT) + return GetAnimBgAttribute(2, BG_ANIM_PRIORITY); + else + return GetAnimBgAttribute(1, BG_ANIM_PRIORITY); +} + +u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) +{ + u8 position = GetBattlerPosition(battlerId); + + if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT) + return 2; + else + return 1; +} + +u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10) +{ + u8 spriteId; + u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]); + u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag); + + if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->field_17C == NULL) + gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); + if (!isBackpic) + { + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); + if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) + LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], + gMonSpritesGfxPtr->field_17C, + species, + personality, + TRUE); + else + LoadSpecialPokePic(&gMonFrontPicTable[species], + gMonSpritesGfxPtr->field_17C, + species, + personality, + TRUE); + } + else + { + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); + if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) + LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], + gMonSpritesGfxPtr->field_17C, + species, + personality, + FALSE); + else + LoadSpecialPokePic(&gMonBackPicTable[species], + gMonSpritesGfxPtr->field_17C, + species, + personality, + FALSE); + } + RequestDma3Copy(gMonSpritesGfxPtr->field_17C, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1); + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + if (!isBackpic) + spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + else + spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority); + return spriteId; +} + +void DestroySpriteAndFreeResources_(struct Sprite *sprite) +{ + DestroySpriteAndFreeResources(sprite); +} + +s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) +{ + u16 species; + u32 personality; + u16 letter; + u16 unownSpecies; + s32 ret; + const struct MonCoords *coords; + struct BattleSpriteInfo *spriteInfo; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + { + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + } + else + { + species = spriteInfo[battlerId].transformSpecies; + personality = gTransformedPersonalities[battlerId]; + } + if (species == SPECIES_UNOWN) + { + letter = GET_UNOWN_LETTER(personality); + if (!letter) + unownSpecies = SPECIES_UNOWN; + else + unownSpecies = letter + SPECIES_UNOWN_B - 1; + coords = &gMonBackPicCoords[unownSpecies]; + } + else if (species > NUM_SPECIES) + { + coords = &gMonBackPicCoords[0]; + } + else + { + coords = &gMonBackPicCoords[species]; + } + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + { + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + } + else + { + species = spriteInfo[battlerId].transformSpecies; + personality = gTransformedPersonalities[battlerId]; + } + + if (species == SPECIES_UNOWN) + { + letter = GET_UNOWN_LETTER(personality); + if (!letter) + unownSpecies = SPECIES_UNOWN; + else + unownSpecies = letter + SPECIES_UNOWN_B - 1; + coords = &gMonFrontPicCoords[unownSpecies]; + } + else if (species == SPECIES_CASTFORM) + { + coords = &gCastformFrontSpriteCoords[gBattleMonForms[battlerId]]; + } + else if (species > NUM_SPECIES) + { + coords = &gMonFrontPicCoords[0]; + } + else + { + coords = &gMonFrontPicCoords[species]; + } + } + switch (attr) + { + case BATTLER_COORD_ATTR_HEIGHT: + return (coords->size & 0xf) * 8; + case BATTLER_COORD_ATTR_WIDTH: + return (coords->size >> 4) * 8; + case BATTLER_COORD_ATTR_LEFT: + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->size >> 4) * 4); + case BATTLER_COORD_ATTR_RIGHT: + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->size >> 4) * 4); + case BATTLER_COORD_ATTR_TOP: + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->size & 0xf) * 4); + case BATTLER_COORD_ATTR_BOTTOM: + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->size & 0xf) * 4); + case BATTLER_COORD_ATTR_RAW_BOTTOM: + ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31; + return ret - coords->y_offset; + default: + return 0; + } +} + +void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y) +{ + u8 xCoordType, yCoordType; + s16 battlerX, battlerY; + s16 partnerX, partnerY; + + if (!respectMonPicOffsets) + { + xCoordType = BATTLER_COORD_X; + yCoordType = BATTLER_COORD_Y; + } + else + { + xCoordType = BATTLER_COORD_X_2; + yCoordType = BATTLER_COORD_Y_PIC_OFFSET; + } + battlerX = GetBattlerSpriteCoord(battlerId, xCoordType); + battlerY = GetBattlerSpriteCoord(battlerId, yCoordType); + if (IsDoubleBattle()) + { + partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), xCoordType); + partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), yCoordType); + } + else + { + partnerX = battlerX; + partnerY = battlerY; + } + *x = (battlerX + partnerX) / 2; + *y = (battlerY + partnerY) / 2; +} + +u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species) +{ + u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + + gSprites[newSpriteId] = gSprites[spriteId]; + gSprites[newSpriteId].usingSheet = TRUE; + gSprites[newSpriteId].oam.priority = 0; + gSprites[newSpriteId].oam.objMode = 2; + gSprites[newSpriteId].oam.tileNum = gSprites[spriteId].oam.tileNum; + gSprites[newSpriteId].callback = SpriteCallbackDummy; + return newSpriteId; +} + +void sub_8076ED8(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker)) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + sprite->hFlip = TRUE; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteLinearAndFlicker; +} + +void sub_8076F58(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + gBattleAnimArgs[3] *= -1; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + StartSpriteAnim(sprite, gBattleAnimArgs[6]); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteLinearAndFlicker; +} + +void sub_8076FD0(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker)) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_8077030(u8 taskId) +{ + u16 src; + u16 dest; + struct Task *task = &gTasks[taskId]; + + task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8; + task->data[2] = 0; + task->data[3] = 0; + gSprites[task->data[0]].pos2.x -= task->data[0]; + task->data[4] = AllocSpritePalette(10097); + task->data[5] = 0; + dest = (task->data[4] + 0x10) * 0x10; + src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; + task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + if (task->data[6] == 20 || task->data[6] == 40) + task->data[6] = 2; + else + task->data[6] = 3; + CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); + BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]); + task->func = sub_8077118; +} + +static void sub_8077118(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[2]) + { + case 0: + sub_80771E4(task, taskId); + gSprites[task->data[0]].pos2.x += task->data[1]; + if (++task->data[3] == 5) + { + --task->data[3]; + ++task->data[2]; + } + break; + case 1: + sub_80771E4(task, taskId); + gSprites[task->data[0]].pos2.x -= task->data[1]; + if (--task->data[3] == 0) + { + gSprites[task->data[0]].pos2.x = 0; + ++task->data[2]; + } + break; + case 2: + if (!task->data[5]) + { + FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); + DestroyAnimVisualTask(taskId); + } + break; + } +} + +static void sub_80771E4(struct Task *task, u8 taskId) +{ + s16 spriteId = CloneBattlerSpriteWithBlend(0); + if (spriteId >= 0) + { + gSprites[spriteId].oam.priority = task->data[6]; + gSprites[spriteId].oam.paletteNum = task->data[4]; + gSprites[spriteId].data[0] = 8; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = spriteId; + gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x; + gSprites[spriteId].callback = sub_8077268; + ++task->data[5]; + } +} + +static void sub_8077268(struct Sprite *sprite) +{ + if (--sprite->data[0] == 0) + { + --gTasks[sprite->data[1]].data[5]; + obj_delete_but_dont_free_vram(sprite); + } +} + +void sub_807729C(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + if (!GetBattlerSide(gBattleAnimAttacker)) + sprite->data[0] = 5; + else + sprite->data[0] = -10; + sprite->data[1] = -40; + sprite->callback = sub_80772F4; +} + +static void sub_80772F4(struct Sprite *sprite) +{ + sprite->data[2] += sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->pos2.x = sprite->data[2] / 10; + sprite->pos2.y = sprite->data[3] / 10; + if (sprite->data[1] < -20) + ++sprite->data[1]; + if (sprite->pos1.y + sprite->pos2.y < -32) + DestroyAnimSprite(sprite); +} + +void sub_8077350(struct Sprite *sprite) +{ + s32 x; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4]; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5]; + if (!GetBattlerSide(gBattleAnimTarget)) + { + x = (u16)gBattleAnimArgs[4] + 30; + sprite->pos1.x += x; + sprite->pos1.y = gBattleAnimArgs[5] - 20; + } + else + { + x = (u16)gBattleAnimArgs[4] - 30; + sprite->pos1.x += x; + sprite->pos1.y = gBattleAnimArgs[5] - 80; + } + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c new file mode 100644 index 000000000..e67c91bfa --- /dev/null +++ b/src/battle_anim_sound_tasks.c @@ -0,0 +1,313 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "sound.h" +#include "task.h" +#include "constants/battle_anim.h" +#include "constants/species.h" + +static void sub_80DCE78(u8 taskId); +static void sub_80DCEE4(u8 taskId); +static void sub_80DCFE8(u8 taskId); +static void sub_80DD270(u8 taskId); +static void sub_80DD390(u8 taskId); +static void sub_80DD4D4(u8 taskId); + +void sub_80DCE10(u8 taskId) +{ + s8 pan1, pan2, panIncrement; + + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + panIncrement = CalculatePanIncrement(pan1, pan2, 2); + gTasks[taskId].data[2] = pan1; + gTasks[taskId].data[3] = pan2; + gTasks[taskId].data[4] = panIncrement; + gTasks[taskId].data[10] = 10; + gTasks[taskId].func = sub_80DCE78; +} + +static void sub_80DCE78(u8 taskId) +{ + s16 pan = gTasks[taskId].data[2]; + s8 panIncrement = gTasks[taskId].data[4]; + + if (++gTasks[taskId].data[11] == 111) + { + gTasks[taskId].data[10] = 5; + gTasks[taskId].data[11] = 0; + gTasks[taskId].func = sub_80DCEE4; + } + else + { + if (++gTasks[taskId].data[10] == 11) + { + gTasks[taskId].data[10] = 0; + PlaySE12WithPanning(gTasks[taskId].data[0], pan); + } + pan += panIncrement; + gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement); + } +} + +static void sub_80DCEE4(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 6) + { + s8 pan; + + gTasks[taskId].data[10] = 0; + pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + PlaySE12WithPanning(gTasks[taskId].data[1], pan); + if (++gTasks[taskId].data[11] == 2) + DestroyAnimSoundTask(taskId); + } +} + +void mas_80DCF38(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 targetPan = gBattleAnimArgs[2]; + s8 panIncrement = gBattleAnimArgs[3]; + u8 r10 = gBattleAnimArgs[4]; + u8 r7 = gBattleAnimArgs[5]; + u8 r9 = gBattleAnimArgs[6]; + s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + targetPan = BattleAnimAdjustPanning(targetPan); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + gTasks[taskId].data[0] = songId; + gTasks[taskId].data[1] = sourcePan; + gTasks[taskId].data[2] = targetPan; + gTasks[taskId].data[3] = panIncrement; + gTasks[taskId].data[4] = r10; + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r9; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = sourcePan; + gTasks[taskId].data[12] = r9; + gTasks[taskId].func = sub_80DCFE8; + sub_80DCFE8(taskId); +} + +static void sub_80DCFE8(u8 taskId) +{ + if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6]) + { + gTasks[taskId].data[12] = 0; + PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[11]); + if (--gTasks[taskId].data[4] == 0) + { + DestroyAnimSoundTask(taskId); + return; + } + } + if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5]) + { + u16 dPan, oldPan; + + gTasks[taskId].data[10] = 0; + dPan = gTasks[taskId].data[3]; + oldPan = gTasks[taskId].data[11] ; + gTasks[taskId].data[11] = dPan + oldPan; + gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); + } +} + +void sub_80DD06C(u8 taskId) +{ + u16 species = SPECIES_NONE; + u8 battlerId; + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + + // Get wanted battler. + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battlerId = gBattleAnimAttacker; + else if (gBattleAnimArgs[0] == ANIM_TARGET) + battlerId = gBattleAnimTarget; + else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER) + battlerId = BATTLE_PARTNER(gBattleAnimAttacker); + else + battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. + if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) + && !IsBattlerSpriteVisible(battlerId)) + { + DestroyAnimVisualTask(taskId); + return; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + if (species != SPECIES_NONE) + PlayCry3(species, pan, 3); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD148(u8 taskId) +{ + u16 species = SPECIES_NONE; + u8 battlerId; + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + + // Get wanted battler. + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battlerId = gBattleAnimAttacker; + else if (gBattleAnimArgs[0] == ANIM_TARGET) + battlerId = gBattleAnimTarget; + else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER) + battlerId = BATTLE_PARTNER(gBattleAnimAttacker); + else + battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. + if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) + && !IsBattlerSpriteVisible(battlerId)) + { + DestroyAnimVisualTask(taskId); + return; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = species; + gTasks[taskId].data[2] = pan; + if (species != SPECIES_NONE) + { + if (gBattleAnimArgs[1] == TASK_NONE) + PlayCry3(species, pan, 9); + else + PlayCry3(species, pan, 7); + gTasks[taskId].func = sub_80DD270; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80DD270(u8 taskId) +{ + u16 species = gTasks[taskId].data[1]; + s8 pan = gTasks[taskId].data[2]; + + if (gTasks[taskId].data[9] < 2) + { + ++gTasks[taskId].data[9]; + } + else if (gTasks[taskId].data[0] == TASK_NONE) + { + if (!IsCryPlaying()) + { + PlayCry3(species, pan, 10); + DestroyAnimVisualTask(taskId); + } + } + else if (!IsCryPlaying()) + { + PlayCry3(species, pan, 8); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DD2F4(u8 taskId) +{ + if (gTasks[taskId].data[9] < 2) + ++gTasks[taskId].data[9]; + else if (!IsCryPlaying()) + DestroyAnimVisualTask(taskId); +} + +void sub_80DD334(u8 taskId) +{ + u16 species; + s8 pan; + + pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + species = gAnimBattlerSpecies[gBattleAnimAttacker]; + gTasks[taskId].data[1] = species; + gTasks[taskId].data[2] = pan; + if (species != SPECIES_NONE) + { + PlayCry3(species, pan, 4); + gTasks[taskId].func = sub_80DD390; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80DD390(u8 taskId) +{ + + if (gTasks[taskId].data[9] < 2) + { + ++gTasks[taskId].data[9]; + } + else if (!IsCryPlaying()) + { + u16 species = gTasks[taskId].data[1]; + s8 pan = gTasks[taskId].data[2]; + + PlayCry3(species, pan, 6); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DD3DC(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + PlaySE1WithPanning(songId, pan); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD410(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + PlaySE2WithPanning(songId, pan); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD444(u8 taskId) +{ + s8 targetPan = gBattleAnimArgs[1]; + s8 panIncrement = gBattleAnimArgs[2]; + u16 r9 = gBattleAnimArgs[3]; + s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[0]); + + targetPan = BattleAnimAdjustPanning(targetPan); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + gTasks[taskId].data[1] = sourcePan; + gTasks[taskId].data[2] = targetPan; + gTasks[taskId].data[3] = panIncrement; + gTasks[taskId].data[5] = r9; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = sourcePan; + gTasks[taskId].func = sub_80DD4D4; + sub_80DD4D4(taskId); +} + +static void sub_80DD4D4(u8 taskId) +{ + u16 oldPan, panIncrement = gTasks[taskId].data[3]; + + if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5]) + { + gTasks[taskId].data[10] = 0; + oldPan = gTasks[taskId].data[11]; + gTasks[taskId].data[11] = panIncrement + oldPan; + gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); + } + gUnknown_2037F24 = gTasks[taskId].data[11]; + if (gTasks[taskId].data[11] == gTasks[taskId].data[2]) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c new file mode 100644 index 000000000..14c5ef6c8 --- /dev/null +++ b/src/battle_anim_utility_funcs.c @@ -0,0 +1,946 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "malloc.h" +#include "palette.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "util.h" +#include "constants/songs.h" + +struct AnimStatsChangeData +{ + u8 battler1; + u8 battler2; + u8 higherPriority; + s16 data[8]; + u16 species; +}; + +static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes); +static void AnimTask_BlendSpriteColor_Step2(u8 taskId); +static void sub_80BAB78(u8 taskId); +static void sub_80BABD0(u8 taskId); +static void sub_80BACA8(struct Sprite *sprite); +static void sub_80BAF38(u8 taskId); +static void sub_80BB0D8(u8 taskId); +static void sub_80BB2A0(u8 taskId); +static void sub_80BB4B8(u8 taskId); +static void sub_80BB6CC(u8 taskId); +static void sub_80BB790(u32 selectedPalettes, u16 color); +static void sub_80BB8A4(u8 taskId); +static void sub_80BBC2C(u8 taskId); +static void sub_80BC19C(u8 taskId); + +static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL; + +static const u16 gUnknown_83E7CC8[] = { RGB(31, 31, 31) }; +const u8 gUnknown_83E7CCA[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; +const u8 gUnknown_83E7CCE[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; + +void sub_80BA7F8(u8 taskId) +{ + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + + selectedPalettes |= sub_8075CB8((gBattleAnimArgs[0] >> 7) & 1, + (gBattleAnimArgs[0] >> 8) & 1, + (gBattleAnimArgs[0] >> 9) & 1, + (gBattleAnimArgs[0] >> 10) & 1); + StartBlendAnimSpriteColor(taskId, selectedPalettes); +} + +void sub_80BA83C(u8 taskId) +{ + u8 battler; + u32 selectedPalettes; + u8 animBattlers[2]; + + animBattlers[1] = 0xFF; + selectedPalettes = UnpackSelectedBattleAnimPalettes(1); + switch (gBattleAnimArgs[0]) + { + case 2: + selectedPalettes = 0; + // fall through + case 0: + animBattlers[0] = gBattleAnimAttacker; + break; + case 3: + selectedPalettes = 0; + // fall through + case 1: + animBattlers[0] = gBattleAnimTarget; + break; + case 4: + animBattlers[0] = gBattleAnimAttacker; + animBattlers[1] = gBattleAnimTarget; + break; + case 5: + animBattlers[0] = 0xFF; + break; + case 6: + selectedPalettes = 0; + animBattlers[0] = BATTLE_PARTNER(gBattleAnimAttacker); + break; + case 7: + selectedPalettes = 0; + animBattlers[0] = BATTLE_PARTNER(gBattleAnimTarget); + break; + } + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + { + if (battler != animBattlers[0] + && battler != animBattlers[1] + && IsBattlerSpriteVisible(battler)) + selectedPalettes |= 0x10000 << sub_8075D80(battler); + } + StartBlendAnimSpriteColor(taskId, selectedPalettes); +} + +void AnimTask_SetCamouflageBlend(u8 taskId) +{ + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + + switch (gBattleTerrain) + { + case BATTLE_TERRAIN_GRASS: + gBattleAnimArgs[4] = RGB(12, 24, 2); + break; + case BATTLE_TERRAIN_LONG_GRASS: + gBattleAnimArgs[4] = RGB(0, 15, 2); + break; + case BATTLE_TERRAIN_SAND: + gBattleAnimArgs[4] = RGB(30, 24, 11); + break; + case BATTLE_TERRAIN_UNDERWATER: + gBattleAnimArgs[4] = RGB(0, 0, 18); + break; + case BATTLE_TERRAIN_WATER: + gBattleAnimArgs[4] = RGB(11, 22, 31); + break; + case BATTLE_TERRAIN_POND: + gBattleAnimArgs[4] = RGB(11, 22, 31); + break; + case BATTLE_TERRAIN_MOUNTAIN: + gBattleAnimArgs[4] = RGB(22, 16, 10); + break; + case BATTLE_TERRAIN_CAVE: + gBattleAnimArgs[4] = RGB(14, 9, 3); + break; + case BATTLE_TERRAIN_BUILDING: + gBattleAnimArgs[4] = RGB(31, 31, 31); + break; + case BATTLE_TERRAIN_PLAIN: + gBattleAnimArgs[4] = RGB(31, 31, 31); + break; + } + StartBlendAnimSpriteColor(taskId, selectedPalettes); +} + +void AnimTask_BlendParticle(u8 taskId) +{ + u8 paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); + u32 selectedPalettes = 1 << (paletteIndex + 16); + + StartBlendAnimSpriteColor(taskId, selectedPalettes); +} + +static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes) +{ + gTasks[taskId].data[0] = selectedPalettes; + gTasks[taskId].data[1] = selectedPalettes >> 16; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[4] = gBattleAnimArgs[3]; + gTasks[taskId].data[5] = gBattleAnimArgs[4]; + gTasks[taskId].data[10] = gBattleAnimArgs[2]; + gTasks[taskId].func = AnimTask_BlendSpriteColor_Step2; + gTasks[taskId].func(taskId); +} + +static void AnimTask_BlendSpriteColor_Step2(u8 taskId) +{ + u32 selectedPalettes; + u16 singlePaletteMask = 0; + + if (gTasks[taskId].data[9] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[9] = 0; + selectedPalettes = gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 16); + while (selectedPalettes) + { + if (selectedPalettes & 1) + BlendPalette(singlePaletteMask, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]); + singlePaletteMask += 0x10; + selectedPalettes >>= 1; + } + if (gTasks[taskId].data[10] < gTasks[taskId].data[4]) + ++gTasks[taskId].data[10]; + else if (gTasks[taskId].data[10] > gTasks[taskId].data[4]) + --gTasks[taskId].data[10]; + else + DestroyAnimVisualTask(taskId); + } + else + { + ++gTasks[taskId].data[9]; + } +} + +void sub_80BAB38(u8 taskId) +{ + BeginHardwarePaletteFade(gBattleAnimArgs[0], + gBattleAnimArgs[1], + gBattleAnimArgs[2], + gBattleAnimArgs[3], + gBattleAnimArgs[4]); + gTasks[taskId].func = sub_80BAB78; +} + +static void sub_80BAB78(u8 taskId) +{ + if (!gPaletteFade.active) + DestroyAnimVisualTask(taskId); +} + +void sub_80BAB98(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = gBattleAnimArgs[0]; + task->data[1] = 0; + task->data[2] = gBattleAnimArgs[1]; + task->data[3] = gBattleAnimArgs[2]; + task->data[4] = gBattleAnimArgs[3]; + task->data[5] = 0; + task->func = sub_80BABD0; +} +static void sub_80BABD0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (task->data[4]) + { + if (task->data[1]) + { + --task->data[1]; + } + else + { + task->data[6] = CloneBattlerSpriteWithBlend(task->data[0]); + if (task->data[6] >= 0) + { + gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2; + gSprites[task->data[6]].data[0] = task->data[3]; + gSprites[task->data[6]].data[1] = taskId; + gSprites[task->data[6]].data[2] = 5; + gSprites[task->data[6]].callback = sub_80BACA8; + ++task->data[5]; + } + --task->data[4]; + task->data[1] = task->data[2]; + } + } + else if (task->data[5] == 0) + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80BACA8(struct Sprite *sprite) +{ + if (sprite->data[0]) + { + --sprite->data[0]; + } + else + { + --gTasks[sprite->data[1]].data[sprite->data[2]]; + obj_delete_but_dont_free_vram(sprite); + } +} + +void sub_80BACEC(u8 taskId) +{ + u16 species; + s32 newSpriteId; + u16 var0; + u16 bg1Cnt; + u8 spriteId; + struct BattleAnimBgData animBgData; + + var0 = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12)); + bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + ((struct BgCnt *)&bg1Cnt)->priority = 0; + ((struct BgCnt *)&bg1Cnt)->screenSize = 0; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + if (!IsContest()) + { + ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 1; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + } + if (IsDoubleBattle() && !IsContest()) + { + if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_RIGHT + || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT) + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)) == TRUE) + { + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority -= 1; + ((struct BgCnt *)&bg1Cnt)->priority = 1; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + var0 = 1; + } + } + } + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + spriteId = GetAnimBattlerSpriteId(0); + newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species); + sub_80752A0(&animBgData); + AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap); + if (IsContest()) + sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0); + AnimLoadCompressedBgGfx(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_sheet, animBgData.tilesOffset); + LoadPalette(gUnknown_83E7CC8, animBgData.paletteId * 16 + 1, 2); + gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32; + gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32; + gTasks[taskId].data[0] = newSpriteId; + gTasks[taskId].data[6] = var0; + gTasks[taskId].func = sub_80BAF38; +} + +static void sub_80BAF38(u8 taskId) +{ + struct BattleAnimBgData animBgData; + struct Sprite *sprite; + u16 bg1Cnt; + + gTasks[taskId].data[10] += 4; + gBattle_BG1_Y -= 4; + if (gTasks[taskId].data[10] == 64) + { + gTasks[taskId].data[10] = 0; + gBattle_BG1_Y += 64; + if (++gTasks[taskId].data[11] == 4) + { + sub_8073128(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + { + bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 0; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + } + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused + sprite = &gSprites[gTasks[taskId].data[0]]; + DestroySprite(sprite); + sub_80752A0(&animBgData); + sub_8075358(animBgData.bgId); + if (gTasks[taskId].data[6] == 1) + ++gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority; + gBattle_BG1_Y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80BB088(u8 taskId) +{ + u8 i; + + sAnimStatsChangeData = AllocZeroed(sizeof(struct AnimStatsChangeData)); + for (i = 0; i < 8; ++i) + sAnimStatsChangeData->data[i] = gBattleAnimArgs[i]; + gTasks[taskId].func = sub_80BB0D8; +} + +static void sub_80BB0D8(u8 taskId) +{ + if (sAnimStatsChangeData->data[2] == 0) + sAnimStatsChangeData->battler1 = gBattleAnimAttacker; + else + sAnimStatsChangeData->battler1 = gBattleAnimTarget; + sAnimStatsChangeData->battler2 = BATTLE_PARTNER(sAnimStatsChangeData->battler1); + if (IsContest() || (sAnimStatsChangeData->data[3] && !IsBattlerSpriteVisible(sAnimStatsChangeData->battler2))) + sAnimStatsChangeData->data[3] = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + if (IsDoubleBattle() && sAnimStatsChangeData->data[3] == 0) + { + if (GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_OPPONENT_RIGHT + || GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_PLAYER_LEFT) + { + if (IsBattlerSpriteVisible(sAnimStatsChangeData->battler2) == TRUE) + { + gSprites[gBattlerSpriteIds[sAnimStatsChangeData->battler2]].oam.priority -= 1; + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + sAnimStatsChangeData->higherPriority = 1; + } + } + } + if (GetBattlerSide(sAnimStatsChangeData->battler1) != B_SIDE_PLAYER) + sAnimStatsChangeData->species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES); + else + sAnimStatsChangeData->species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES); + gTasks[taskId].func = sub_80BB2A0; +} + +static void sub_80BB2A0(u8 taskId) +{ + struct BattleAnimBgData animBgData; + u8 spriteId, newSpriteId = 0; + u8 battlerSpriteId; + + battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1]; + spriteId = sub_8076E34(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); + if (sAnimStatsChangeData->data[3]) + { + battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; + newSpriteId = sub_8076E34(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); + } + sub_80752A0(&animBgData); + if (sAnimStatsChangeData->data[0] == 0) + AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask1_Tilemap); + else + AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask2_Tilemap); + if (IsContest()) + sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0); + AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset); + switch (sAnimStatsChangeData->data[1]) + { + case 0: + LoadCompressedPalette(gBattleStatMask2_Pal, animBgData.paletteId * 16, 32); + break; + case 1: + LoadCompressedPalette(gBattleStatMask1_Pal, animBgData.paletteId * 16, 32); + break; + case 2: + LoadCompressedPalette(gBattleStatMask3_Pal, animBgData.paletteId * 16, 32); + break; + case 3: + LoadCompressedPalette(gBattleStatMask4_Pal, animBgData.paletteId * 16, 32); + break; + case 4: + LoadCompressedPalette(gBattleStatMask6_Pal, animBgData.paletteId * 16, 32); + break; + case 5: + LoadCompressedPalette(gBattleStatMask7_Pal, animBgData.paletteId * 16, 32); + break; + case 6: + LoadCompressedPalette(gBattleStatMask8_Pal, animBgData.paletteId * 16, 32); + break; + default: + LoadCompressedPalette(gBattleStatMask5_Pal, animBgData.paletteId * 16, 32); + break; + } + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + if (sAnimStatsChangeData->data[0] == 1) + { + gBattle_BG1_X = 64; + gTasks[taskId].data[1] = -3; + } + else + { + gTasks[taskId].data[1] = 3; + } + + if (sAnimStatsChangeData->data[4] == 0) + { + gTasks[taskId].data[4] = 10; + gTasks[taskId].data[5] = 20; + } + else + { + gTasks[taskId].data[4] = 13; + gTasks[taskId].data[5] = 30; + } + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[2] = sAnimStatsChangeData->data[3]; + gTasks[taskId].data[3] = newSpriteId; + gTasks[taskId].data[6] = sAnimStatsChangeData->higherPriority; + gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; + gTasks[taskId].func = sub_80BB4B8; + if (sAnimStatsChangeData->data[0] == 0) + PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER)); + else + PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER)); +} + +static void sub_80BB4B8(u8 taskId) +{ + gBattle_BG1_Y += gTasks[taskId].data[1]; + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ > 0) + { + gTasks[taskId].data[11] = 0; + ++gTasks[taskId].data[12]; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == gTasks[taskId].data[4]) + ++gTasks[taskId].data[15]; + } + break; + case 1: + if (++gTasks[taskId].data[10] == gTasks[taskId].data[5]) + ++gTasks[taskId].data[15]; + break; + case 2: + if (gTasks[taskId].data[11]++ > 0) + { + gTasks[taskId].data[11] = 0; + --gTasks[taskId].data[12]; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 0) + { + sub_8073128(0); + ++gTasks[taskId].data[15]; + } + } + break; + case 3: + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + if (gTasks[taskId].data[2]) + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + if (gTasks[taskId].data[6] == 1) + ++gSprites[gTasks[taskId].data[7]].oam.priority; + Free(sAnimStatsChangeData); + sAnimStatsChangeData = NULL; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80BB660(u8 taskId) +{ + u32 selectedPalettes = sub_8075CB8(1, 1, 1, 1); + + sub_80BB790(selectedPalettes, 0); + gTasks[taskId].data[14] = selectedPalettes >> 16; + selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + sub_80BB790(selectedPalettes, 0xFFFF); + gTasks[taskId].data[15] = selectedPalettes; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80BB6CC; +} + +static void sub_80BB6CC(u8 taskId) +{ + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 6) + { + task->data[1] = 0; + task->data[2] = 16; + ++task->data[0]; + } + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + --task->data[2]; + for (i = 0; i < 16; ++i) + { + if ((task->data[15] >> i) & 1) + { + u16 paletteOffset = i * 16; + BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF); + } + + if ((task->data[14] >> i) & 1) + { + u16 paletteOffset = i * 16 + 0x100; + BlendPalette(paletteOffset, 16, task->data[2], 0); + } + } + + if (task->data[2] == 0) + ++task->data[0]; + } + break; + case 2: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80BB790(u32 selectedPalettes, u16 color) +{ + u16 i, curOffset, paletteOffset; + + for (i = 0; i < 32; selectedPalettes >>= 1, ++i) + if (selectedPalettes & 1) + for (curOffset = i * 16, paletteOffset = curOffset; curOffset < paletteOffset + 16; ++curOffset) + gPlttBufferFaded[curOffset] = color; +} + +void sub_80BB7DC(u8 taskId) +{ + s32 j; + u32 battler, selectedPalettes = 0; + + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + if (gBattleAnimAttacker != battler) + selectedPalettes |= 1 << (battler + 16); + for (j = 5; j != 0; --j) + gBattleAnimArgs[j] = gBattleAnimArgs[j - 1]; + StartBlendAnimSpriteColor(taskId, selectedPalettes); +} + +void sub_80BB82C(u8 taskId) +{ + u8 newTaskId; + + sub_8075458(0); + newTaskId = CreateTask(sub_80BB8A4, 5); + if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + } + gTasks[newTaskId].data[1] = gBattleAnimArgs[0]; + gTasks[newTaskId].data[2] = gBattleAnimArgs[1]; + gTasks[newTaskId].data[3] = gBattleAnimArgs[3]; + ++gTasks[newTaskId].data[0]; + DestroyAnimVisualTask(taskId); +} + +static void sub_80BB8A4(u8 taskId) +{ + gTasks[taskId].data[10] += gTasks[taskId].data[1]; + gTasks[taskId].data[11] += gTasks[taskId].data[2]; + gBattle_BG3_X += gTasks[taskId].data[10] >> 8; + gBattle_BG3_Y += gTasks[taskId].data[11] >> 8; + gTasks[taskId].data[10] &= 0xFF; + gTasks[taskId].data[11] &= 0xFF; + if (gBattleAnimArgs[7] == gTasks[taskId].data[3]) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_8075458(1); + DestroyTask(taskId); + } +} + +void AnimTask_GetAttackerSide(u8 taskId) +{ + gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetTargetSide(u8 taskId) +{ + gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimTarget); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetTargetIsAttackerPartner(u8 taskId) +{ + gBattleAnimArgs[7] = BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget; + DestroyAnimVisualTask(taskId); +} + +void sub_80BB9B0(u8 taskId) +{ + u16 battler; + + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler)) + gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0]; + DestroyAnimVisualTask(taskId); +} + +void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette) +{ + u16 species; + u8 spriteId, newSpriteId = 0; + u16 bg1Cnt; + struct BattleAnimBgData animBgData; + u8 battler2 = BATTLE_PARTNER(battler1); + + if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2))) + arg4 = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + ((vBgCnt *)&bg1Cnt)->priority = 0; + ((vBgCnt *)&bg1Cnt)->screenSize = 0; + ((vBgCnt *)&bg1Cnt)->areaOverflowMode = 1; + if (!IsContest()) + ((vBgCnt *)&bg1Cnt)->charBaseBlock = 1; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + spriteId = sub_8076E34(battler1, gBattlerSpriteIds[battler1], species); + if (arg4) + newSpriteId = sub_8076E34(battler2, gBattlerSpriteIds[battler2], species); + sub_80752A0(&animBgData); + AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); + if (IsContest()) + sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0); + AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset); + LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gTasks[taskId].data[1] = arg2; + gTasks[taskId].data[4] = arg5; + gTasks[taskId].data[5] = arg7; + gTasks[taskId].data[6] = arg6; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[2] = arg4; + gTasks[taskId].data[3] = newSpriteId; + gTasks[taskId].func = sub_80BBC2C; +} + +static void sub_80BBC2C(u8 taskId) +{ + gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; + if (gTasks[taskId].data[1] < 0) + gBattle_BG1_Y -= gTasks[taskId].data[13] >> 8; + else + gBattle_BG1_Y += gTasks[taskId].data[13] >> 8; + gTasks[taskId].data[13] &= 0xFF; + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6]) + { + gTasks[taskId].data[11] = 0; + ++gTasks[taskId].data[12]; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == gTasks[taskId].data[4]) + ++gTasks[taskId].data[15]; + } + break; + case 1: + if (++gTasks[taskId].data[10] == gTasks[taskId].data[5]) + ++gTasks[taskId].data[15]; + break; + case 2: + if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6]) + { + gTasks[taskId].data[11] = 0; + --gTasks[taskId].data[12]; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 0) + { + sub_8073128(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR + | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + { + u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + ((vBgCnt *)&bg1Cnt)->charBaseBlock = 0; + SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); + } + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + if (gTasks[taskId].data[2]) + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void AnimTask_GetBattleTerrain(u8 taskId) +{ + gBattleAnimArgs[0] = gBattleTerrain; + DestroyAnimVisualTask(taskId); +} + +void sub_80BBE10(u8 taskId) +{ + gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); + DestroyAnimVisualTask(taskId); +} + +void sub_80BBE3C(u8 taskId) +{ + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + DestroyAnimVisualTask(taskId); +} + +void sub_80BBE6C(u8 taskId) +{ + u32 selectedPalettes; + s32 paletteIndex = 0; + + if (gBattleAnimArgs[0] == 0) + for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0); + (selectedPalettes & 1) == 0; + ++paletteIndex) + selectedPalettes >>= 1; + else if (gBattleAnimArgs[0] == 1) + paletteIndex = gBattleAnimAttacker + 16; + else if (gBattleAnimArgs[0] == 2) + paletteIndex = gBattleAnimTarget + 16; + memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32); + DestroyAnimVisualTask(taskId); +} + +void sub_80BBF08(u8 taskId) +{ + u32 selectedPalettes; + s32 paletteIndex = 0; + + if (gBattleAnimArgs[0] == 0) + for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0); + (selectedPalettes & 1) == 0; + ++paletteIndex) + selectedPalettes >>= 1; + else if (gBattleAnimArgs[0] == 1) + paletteIndex = gBattleAnimAttacker + 16; + else if (gBattleAnimArgs[0] == 2) + paletteIndex = gBattleAnimTarget + 16; + memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32); + DestroyAnimVisualTask(taskId); +} + +void sub_80BBFA4(u8 taskId) +{ + u32 selectedPalettes; + s32 paletteIndex = 0; + + if (gBattleAnimArgs[0] == 0) + for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0); + (selectedPalettes & 1) == 0; + ++paletteIndex) + selectedPalettes >>= 1; + else if (gBattleAnimArgs[0] == 1) + paletteIndex = gBattleAnimAttacker + 16; + else if (gBattleAnimArgs[0] == 2) + paletteIndex = gBattleAnimTarget + 16; + memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gPlttBufferFaded[paletteIndex * 16], 32); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsContest(u8 taskId) +{ + if (IsContest()) + gBattleAnimArgs[7] = 1; + else + gBattleAnimArgs[7] = 0; + DestroyAnimVisualTask(taskId); +} + +void sub_80BC060(u8 taskId) +{ + gBattleAnimAttacker = gBattlerTarget; + gBattleAnimTarget = gEffectBattler; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsTargetSameSide(u8 taskId) +{ + if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + gBattleAnimArgs[7] = 1; + else + gBattleAnimArgs[7] = 0; + DestroyAnimVisualTask(taskId); +} + +void sub_80BC0DC(u8 taskId) +{ + gBattleAnimTarget = gBattlerTarget; + DestroyAnimVisualTask(taskId); +} + +void sub_80BC0FC(u8 taskId) +{ + gBattleAnimAttacker = gBattlerAttacker; + gBattleAnimTarget = gEffectBattler; + DestroyAnimVisualTask(taskId); +} + +void sub_80BC12C(u8 taskId) +{ + if (IsContest()) + { + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible; + gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1; + gTasks[taskId].func = sub_80BC19C; + --gAnimVisualTaskCount; + } +} + +static void sub_80BC19C(u8 taskId) +{ + if (gBattleAnimArgs[7] == 0x1000) + { + gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = (u8)gTasks[taskId].data[0] & 1; + DestroyTask(taskId); + } +} diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 0d827c8db..a9bb5bc6e 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1191,7 +1191,7 @@ static void sub_80303A8(u8 taskId) { s16 *data = gTasks[taskId].data; u8 battlerId = tExpTask_battler; - u16 v5 = sub_80768B0(battlerId); + u16 v5 = GetBattlerSpriteBGPriorityRank(battlerId); bool32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER; struct Sprite *sprite = &gSprites[gBattlerSpriteIds[battlerId]]; @@ -1222,7 +1222,7 @@ static void sub_80303A8(u8 taskId) u32 battlerIdAlt = battlerId; bool32 v6Alt = v6; - sub_8072E48(battlerIdAlt, v6Alt); + MoveBattlerSpriteToBG(battlerIdAlt, v6Alt); } ++data[15]; break; diff --git a/src/battle_intro.c b/src/battle_intro.c new file mode 100644 index 000000000..93141f2ca --- /dev/null +++ b/src/battle_intro.c @@ -0,0 +1,495 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_setup.h" +#include "bg.h" +#include "gpu_regs.h" +#include "main.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" +#include "constants/trainers.h" + +static EWRAM_DATA u16 sBgCnt = 0; + +extern const u8 gUnknown_83E7CCA[]; +extern const u8 gUnknown_83E7CCE[]; + +static void BattleIntroSlide1(u8 taskId); +static void BattleIntroSlide2(u8 taskId); +static void BattleIntroSlide3(u8 taskId); +static void BattleIntroSlideLink(u8 taskId); + +static const TaskFunc sBattleIntroSlideFuncs[] = +{ + BattleIntroSlide1, // BATTLE_TERRAIN_GRASS + BattleIntroSlide1, // BATTLE_TERRAIN_LONG_GRASS + BattleIntroSlide2, // BATTLE_TERRAIN_SAND + BattleIntroSlide2, // BATTLE_TERRAIN_UNDERWATER + BattleIntroSlide2, // BATTLE_TERRAIN_WATER + BattleIntroSlide1, // BATTLE_TERRAIN_POND + BattleIntroSlide1, // BATTLE_TERRAIN_MOUNTAIN + BattleIntroSlide1, // BATTLE_TERRAIN_CAVE + BattleIntroSlide3, // BATTLE_TERRAIN_BUILDING + BattleIntroSlide3, // BATTLE_TERRAIN_PLAIN +}; + +void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) +{ + if (bgId < 4) + { + sBgCnt = GetGpuReg(gUnknown_83E7CCA[bgId]); + switch (attributeId) + { + case BG_ANIM_SCREEN_SIZE: + ((struct BgCnt *)&sBgCnt)->screenSize = value; + break; + case BG_ANIM_AREA_OVERFLOW_MODE: + ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value; + break; + case BG_ANIM_MOSAIC: + ((struct BgCnt *)&sBgCnt)->mosaic = value; + break; + case BG_ANIM_CHAR_BASE_BLOCK: + ((struct BgCnt *)&sBgCnt)->charBaseBlock = value; + break; + case BG_ANIM_PRIORITY: + ((struct BgCnt *)&sBgCnt)->priority = value; + break; + case BG_ANIM_PALETTES_MODE: + ((struct BgCnt *)&sBgCnt)->palettes = value; + break; + case BG_ANIM_SCREEN_BASE_BLOCK: + ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value; + break; + } + SetGpuReg(gUnknown_83E7CCA[bgId], sBgCnt); + } +} + +s32 GetAnimBgAttribute(u8 bgId, u8 attributeId) +{ + u16 bgCnt; + + if (bgId < 4) + { + bgCnt = GetGpuReg(gUnknown_83E7CCE[bgId]); + switch (attributeId) + { + case BG_ANIM_SCREEN_SIZE: + return ((struct BgCnt *)&bgCnt)->screenSize; + case BG_ANIM_AREA_OVERFLOW_MODE: + return ((struct BgCnt *)&bgCnt)->areaOverflowMode; + case BG_ANIM_MOSAIC: + return ((struct BgCnt *)&bgCnt)->mosaic; + case BG_ANIM_CHAR_BASE_BLOCK: + return ((struct BgCnt *)&bgCnt)->charBaseBlock; + case BG_ANIM_PRIORITY: + return ((struct BgCnt *)&bgCnt)->priority; + case BG_ANIM_PALETTES_MODE: + return ((struct BgCnt *)&bgCnt)->palettes; + case BG_ANIM_SCREEN_BASE_BLOCK: + return ((struct BgCnt *)&bgCnt)->screenBaseBlock; + } + } + return 0; +} + +void HandleIntroSlide(u8 terrain) +{ + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + taskId = CreateTask(BattleIntroSlideLink, 0); + } + else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + { + terrain = BATTLE_TERRAIN_UNDERWATER; + taskId = CreateTask(BattleIntroSlide2, 0); + } + else + { + taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0); + } + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = terrain; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; +} + +void sub_80BC41C(u8 taskId) +{ + DestroyTask(taskId); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); +} + +static void BattleIntroSlide1(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 6; + switch (gTasks[taskId].data[0]) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + ++gTasks[taskId].data[0]; + } + else + { + gTasks[taskId].data[2] = 1; + ++gTasks[taskId].data[0]; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + ++gTasks[taskId].data[0]; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + ++gTasks[taskId].data[0]; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + --gTasks[taskId].data[3]; + } + else + { + if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else if (gBattle_BG1_Y != 0xFFC8) + { + gBattle_BG1_Y -= 1; + } + } + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + // Scanline settings have already been set in CB2_InitBattleInternal + for (i = 0; i < 80; ++i) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + while (i < 160) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + ++gTasks[taskId].data[0]; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_80BC41C(taskId); + break; + } +} + +static void BattleIntroSlide2(u8 taskId) +{ + s32 i; + + switch (gTasks[taskId].data[1]) + { + case 2: + case 4: + gBattle_BG1_X += 8; + break; + case 3: + gBattle_BG1_X += 6; + break; + } + if (gTasks[taskId].data[1] == 4) + { + gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; + if (gTasks[taskId].data[6] < 180) + gTasks[taskId].data[6] += 4; + else + gTasks[taskId].data[6] += 6; + if (gTasks[taskId].data[6] == 360) + gTasks[taskId].data[6] = 0; + } + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[4] = 16; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + ++gTasks[taskId].data[0]; + } + else + { + gTasks[taskId].data[2] = 1; + ++gTasks[taskId].data[0]; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + ++gTasks[taskId].data[0]; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + ++gTasks[taskId].data[0]; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + if (--gTasks[taskId].data[3] == 0) + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(15, 0)); + SetGpuReg(REG_OFFSET_BLDY, 0); + } + } + else if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 0xFF; + gTasks[taskId].data[5] = 4; + } + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; ++i) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + while (i < 160) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + ++gTasks[taskId].data[0]; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_80BC41C(taskId); + break; + } + if (gTasks[taskId].data[0] != 4) + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0)); +} + +static void BattleIntroSlide3(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 8; + switch (gTasks[taskId].data[0]) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8)); + SetGpuReg(REG_OFFSET_BLDY, 0); + gTasks[taskId].data[4] = BLDALPHA_BLEND(8, 8); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + ++gTasks[taskId].data[0]; + } + else + { + gTasks[taskId].data[2] = 1; + ++gTasks[taskId].data[0]; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + ++gTasks[taskId].data[0]; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + ++gTasks[taskId].data[0]; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + --gTasks[taskId].data[3]; + } + else if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 0xFF; + gTasks[taskId].data[5] = 6; + } + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; ++i) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + while (i < 160) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + ++gTasks[taskId].data[0]; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_80BC41C(taskId); + break; + } + if (gTasks[taskId].data[0] != 4) + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0)); +} + +static void BattleIntroSlideLink(u8 taskId) +{ + s32 i; + + if (gTasks[taskId].data[0] > 1 && !gTasks[taskId].data[4]) + { + u16 var0 = gBattle_BG1_X & 0x8000; + + if (var0 || gBattle_BG1_X < 80) + { + gBattle_BG1_X += 3; + gBattle_BG2_X -= 3; + } + else + { + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + CpuFill32(0, (void *)BG_SCREEN_ADDR(30), BG_SCREEN_SIZE); + gTasks[taskId].data[4] = 1; + } + } + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[2] = 32; + ++gTasks[taskId].data[0]; + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + ++gTasks[taskId].data[0]; + gSprites[gBattleStruct->linkBattleVsSpriteId_V].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_801182C; + gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_801182C; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + ++gTasks[taskId].data[0]; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; ++i) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + while (i < 160) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + ++gTasks[taskId].data[0]; + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_80BC41C(taskId); + break; + } +} + +void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset) +{ + s32 i, j; + u8 battler = GetBattlerAtPosition(battlerPosition); + s32 offset = tilesOffset; + + CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE); + LoadBgTiles(bgId, arg5, 0x1000, tilesOffset); + for (i = arg2; i < arg2 + 8; ++i) + for (j = arg1; j < arg1 + 8; ++j) + arg6[i * 32 + j] = offset++ | (arg4 << 12); + LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0); +} + +// not used +static void sub_80BCFCC(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7) +{ + s32 i, j, offset; + + DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); + offset = (arg5 >> 5) - (arg7 << 9); + for (i = arg1; i < arg1 + 8; ++i) + for (j = arg0; j < arg0 + 8; ++j) + *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset++ | (arg4 << 12); +} diff --git a/src/dark.c b/src/dark.c new file mode 100644 index 000000000..c080e6243 --- /dev/null +++ b/src/dark.c @@ -0,0 +1,921 @@ +#include "global.h" +#include "battle_anim.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "palette.h" +#include "scanline_effect.h" +#include "trig.h" +#include "util.h" + +static void sub_80B7ACC(struct Sprite *sprite); +static void sub_80B7BD4(struct Sprite *sprite); +static void sub_80B7C88(struct Sprite *sprite); +static void sub_80B86B0(struct Sprite *sprite); +static void sub_80B7954(u8 taskId); +static void sub_80B7A14(u8 taskId); +static void sub_80B7B48(struct Sprite *sprite); +static void sub_80B7C10(struct Sprite *sprite); +static void sub_80B7C50(struct Sprite *sprite); +static void sub_80B7D88(struct Sprite *sprite); +static void sub_80B856C(u8 priority); +static void sub_80B7F58(u8 taskId); +static void sub_80B843C(struct Task *task); +static void sub_80B82C0(u8 taskId); +static void sub_80B8920(u8 taskId); + +const struct SpriteTemplate gUnknown_83E7878 = +{ + .tileTag = ANIM_TAG_TIED_BAG, + .paletteTag = ANIM_TAG_TIED_BAG, + .oam = &gOamData_83AC9D0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B7ACC, +}; + +static const union AffineAnimCmd gUnknown_83E7890[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78A0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78B0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78C0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78D0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78E0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E78F0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7900[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gUnknown_83E7910[] = +{ + gUnknown_83E7890, + gUnknown_83E78A0, + gUnknown_83E78B0, + gUnknown_83E78C0, + gUnknown_83E78D0, + gUnknown_83E78E0, + gUnknown_83E78F0, + gUnknown_83E7900, +}; + +const struct SpriteTemplate gUnknown_83E7930 = +{ + .tileTag = ANIM_TAG_SHARP_TEETH, + .paletteTag = ANIM_TAG_SHARP_TEETH, + .oam = &gOamData_83ACB60, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7910, + .callback = sub_80B7BD4, +}; + +const struct SpriteTemplate gUnknown_83E7948 = +{ + .tileTag = ANIM_TAG_CLAMP, + .paletteTag = ANIM_TAG_CLAMP, + .oam = &gOamData_83ACB60, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7910, + .callback = sub_80B7BD4, +}; + +static const union AffineAnimCmd gUnknown_83E7960[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7978[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gUnknown_83E7990[] = +{ + gUnknown_83E7960, + gUnknown_83E7978, +}; + +const struct SpriteTemplate gUnknown_83E7998 = +{ + .tileTag = ANIM_TAG_SMALL_BUBBLES, + .paletteTag = ANIM_TAG_SMALL_BUBBLES, + .oam = &gOamData_83ACA30, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7990, + .callback = sub_80B7C88, +}; + +static const union AnimCmd gUnknown_83E79B0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd gUnknown_83E79C8[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(48, 4, .hFlip = TRUE), + ANIMCMD_FRAME(64, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const gUnknown_83E79E0[] = +{ + gUnknown_83E79B0, + gUnknown_83E79C8, +}; + +const struct SpriteTemplate gUnknown_83E79E8 = +{ + .tileTag = ANIM_TAG_CLAW_SLASH, + .paletteTag = ANIM_TAG_CLAW_SLASH, + .oam = &gOamData_83AC9D8, + .anims = gUnknown_83E79E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B86B0, +}; + +void sub_80B78E0(u8 taskId) +{ + s32 battler; + + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + battler = gBattleAnimAttacker; + gTasks[taskId].data[1] = 16; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + if (GetBattlerSpriteBGPriorityRank(battler) == 1) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + else + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); + gTasks[taskId].func = sub_80B7954; +} + +static void sub_80B7954(u8 taskId) +{ + u8 blendA = gTasks[taskId].data[1] >> 8; + u8 blendB = gTasks[taskId].data[1]; + + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + ++blendA; + --blendB; + gTasks[taskId].data[1] = BLDALPHA_BLEND(blendB, blendA); + SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]); + gTasks[taskId].data[2] = 0; + if (blendA == 16) + { + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 1; + DestroyAnimVisualTask(taskId); + } + } + else + { + ++gTasks[taskId].data[2]; + } +} + +void sub_80B79DC(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = BLDALPHA_BLEND(0, 16); + gTasks[taskId].func = sub_80B7A14; + SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]); +} + +static void sub_80B7A14(u8 taskId) +{ + u8 blendA = gTasks[taskId].data[1] >> 8; + u8 blendB = gTasks[taskId].data[1]; + + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + --blendA; + ++blendB; + gTasks[taskId].data[1] = (blendA << 8) | blendB; + SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]); + gTasks[taskId].data[2] = 0; + if (blendA == 0) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + } + } + else + { + ++gTasks[taskId].data[2]; + } +} + +void sub_80B7A80(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + else + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); + DestroyAnimVisualTask(taskId); +} + +static void sub_80B7ACC(struct Sprite *sprite) +{ + sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[3] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = 0x7E; + InitSpriteDataForLinearTranslation(sprite); + sprite->data[3] = -sprite->data[1]; + sprite->data[4] = -sprite->data[2]; + sprite->data[6] = 0xFFD8; + sprite->callback = sub_80B7B48; + sprite->callback(sprite); +} + +static void sub_80B7B48(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + if (sprite->data[7] == 0) + { + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + --sprite->data[0]; + } + sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]); + sprite->data[5] = (sprite->data[5] + 3) & 0xFF; + if (sprite->data[5] > 0x7F) + { + sprite->data[5] = 0; + sprite->data[6] += 20; + ++sprite->data[7]; + } + if (--sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} + +static void sub_80B7BD4(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[4]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->callback = sub_80B7C10; +} + +static void sub_80B7C10(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[0]; + sprite->data[5] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = sprite->data[5] >> 8; + if (++sprite->data[3] == sprite->data[2]) + sprite->callback = sub_80B7C50; +} + +static void sub_80B7C50(struct Sprite *sprite) +{ + sprite->data[4] -= sprite->data[0]; + sprite->data[5] -= sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = sprite->data[5] >> 8; + if (--sprite->data[3] == 0) + DestroySpriteAndMatrix(sprite); +} + +static void sub_80B7C88(struct Sprite *sprite) +{ + u8 battler; + s8 xOffset; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + xOffset = 20; + sprite->oam.tileNum += 4; + switch (gBattleAnimArgs[1]) + { + case 0: + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8; + sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8; + break; + case 1: + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14; + sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16; + break; + case 2: + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8; + sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8; + StartSpriteAffineAnim(sprite, 1); + xOffset = -20; + break; + case 3: + sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14; + sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16; + StartSpriteAffineAnim(sprite, 1); + xOffset = -20; + break; + } + sprite->data[0] = 32; + sprite->data[2] = sprite->pos1.x + xOffset; + sprite->data[4] = sprite->pos1.y + 12; + sprite->data[5] = -12; + InitAnimArcTranslation(sprite); + sprite->callback = sub_80B7D88; +} + +static void sub_80B7D88(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroySpriteAndMatrix(sprite); +} + +void sub_80B7DA4(u8 taskId) +{ + struct ScanlineEffectParams scanlineParams; + struct BattleAnimBgData animBg; + u16 i; + u8 pos; + s32 var0; + struct Task *task = &gTasks[taskId]; + + task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 31; + task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) - 7; + task->data[5] = task->data[7]; + task->data[4] = task->data[6]; + task->data[13] = (task->data[7] - task->data[6]) << 8; + pos = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + task->data[14] = pos - 32; + task->data[15] = pos + 32; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + task->data[8] = -12; + else + task->data[8] = -64; + task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + if (task->data[3] == 1) + { + sub_80752A0(&animBg); + task->data[10] = gBattle_BG1_Y; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + FillPalette(0, animBg.paletteId * 16, 32); + scanlineParams.dmaDest = ®_BG1VOFS; + var0 = WINOUT_WIN01_BG1; + if (!IsContest()) + gBattle_BG2_X += 240; + } + else + { + task->data[10] = gBattle_BG2_Y; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); + FillPalette(0, 144, 32); + scanlineParams.dmaDest = ®_BG2VOFS; + var0 = WINOUT_WIN01_BG2; + if (!IsContest()) + gBattle_BG1_X += 240; + } + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + task->data[11] = 0; + task->data[12] = 16; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + sub_80B856C(3); + for (i = 0; i < 112; ++i) + { + gScanlineEffectRegBuffers[0][i] = task->data[10]; + gScanlineEffectRegBuffers[1][i] = task->data[10]; + } + ScanlineEffect_SetParams(scanlineParams); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR))); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + gBattle_WIN0V = 160; + + task->func = sub_80B7F58; +} + +static void sub_80B7F58(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (++task->data[2] & 1) + { + if (task->data[11] != 12) + ++task->data[11]; + } + else if (task->data[12] != 8) + { + --task->data[12]; + } + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[11], task->data[12])); + if (task->data[11] == 12 && task->data[12] == 8) + ++task->data[0]; + } + break; + case 1: + task->data[4] -= 8; + sub_80B843C(task); + if (task->data[4] < task->data[8]) + ++task->data[0]; + break; + case 2: + task->data[4] -= 8; + sub_80B843C(task); + task->data[14] += 4; + task->data[15] -= 4; + if (task->data[14] >= task->data[15]) + task->data[14] = task->data[15]; + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + if (task->data[14] == task->data[15]) + ++task->data[0]; + break; + case 3: + gScanlineEffect.state = 3; + ++task->data[0]; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80B8070(u8 taskId) +{ + struct BattleAnimBgData animBg; + struct ScanlineEffectParams scanlineParams; + u8 x; + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (IsContest() == TRUE) + { + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + DestroyAnimVisualTask(taskId); + } + else + { + task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); + if (task->data[3] == 1) + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + gBattle_BG2_X += 240; + } + else + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); + gBattle_BG1_X += 240; + } + ++task->data[0]; + } + break; + case 1: + if (task->data[3] == 1) + { + sub_80752A0(&animBg); + task->data[10] = gBattle_BG1_Y; + FillPalette(0, animBg.paletteId * 16, 32); + } + else + { + task->data[10] = gBattle_BG2_Y; + FillPalette(0, 9 * 16, 32); + } + sub_80B856C(3); + ++task->data[0]; + break; + case 2: + task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 31; + task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) - 7; + task->data[13] = (task->data[7] - task->data[6]) << 8; + x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + task->data[14] = x - 4; + task->data[15] = x + 4; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + task->data[8] = -12; + else + task->data[8] = -64; + task->data[4] = task->data[8]; + task->data[5] = task->data[8]; + task->data[11] = 12; + task->data[12] = 8; + ++task->data[0]; + break; + case 3: + if (task->data[3] == 1) + scanlineParams.dmaDest = ®_BG1VOFS; + else + scanlineParams.dmaDest = ®_BG2VOFS; + for (i = 0; i < 112; ++i) + { + gScanlineEffectRegBuffers[0][i] = task->data[10] + (159 - i); + gScanlineEffectRegBuffers[1][i] = task->data[10] + (159 - i); + } + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + ++task->data[0]; + break; + case 4: + if (task->data[3] == 1) + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + else + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + gBattle_WIN0V = 160; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8)); + task->func = sub_80B82C0; + break; + } +} + +static void sub_80B82C0(u8 taskId) +{ + u8 pos; + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[5] += 8; + if (task->data[5] >= task->data[7]) + task->data[5] = task->data[7]; + sub_80B843C(task); + if (task->data[5] == task->data[7]) + ++task->data[0]; + break; + case 1: + if (task->data[15] - task->data[14] < 0x40) + { + task->data[14] -= 4; + task->data[15] += 4; + } + else + { + task->data[1] = 1; + } + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + task->data[4] += 8; + if (task->data[4] >= task->data[6]) + task->data[4] = task->data[6]; + sub_80B843C(task); + if (task->data[4] == task->data[6] && task->data[1]) + { + task->data[1] = 0; + ++task->data[0]; + } + break; + case 2: + if (++task->data[1] > 1) + { + task->data[1] = 0; + ++task->data[2]; + if (task->data[2] & 1) + { + if (task->data[11]) + --task->data[11]; + } + else if (task->data[12] < 16) + { + ++task->data[12]; + } + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[11], task->data[12])); + if (task->data[11] == 0 && task->data[12] == 16) + ++task->data[0]; + } + break; + case 3: + gScanlineEffect.state = 3; + ++task->data[0]; + break; + case 4: + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80B843C(struct Task *task) +{ + s32 var0, var1, var4; + s16 var2, i; + + var2 = task->data[5] - task->data[4]; + if (var2 != 0) + { + var0 = task->data[13] / var2; + var1 = task->data[6] << 8; + for (i = 0; i < task->data[4]; ++i) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159); + for (i = task->data[4]; i <= task->data[5]; ++i) + { + if (i >= 0) + { + s16 var3 = (var1 >> 8) - i; + + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var3 + task->data[10]; + } + var1 += var0; + } + var4 = task->data[10] - (i - 159); + for (; i < task->data[7]; ++i) + if (i >= 0) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var4--; + } + else + { + var4 = task->data[10] + 159; + for (i = 0; i < 112; ++i) + { + gScanlineEffectRegBuffers[0][i] = var4; + gScanlineEffectRegBuffers[1][i] = var4; + --var4; + } + } +} + +static void sub_80B856C(u8 priority) +{ + u16 i; + + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + u8 spriteId = GetAnimBattlerSpriteId(i); + + if (spriteId != 0xFF) + gSprites[spriteId].oam.priority = priority; + } +} + +void sub_80B85B8(u8 taskId) +{ + u8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? 1 : 0; + + MoveBattlerSpriteToBG(gBattleAnimAttacker, toBG2); + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 0; + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + { + MoveBattlerSpriteToBG(gBattleAnimAttacker ^ 2, toBG2 ^ 1); + gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = 0; + } + DestroyAnimVisualTask(taskId); +} + +void sub_80B8664(u8 taskId) +{ + u8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? 1 : 0; + + sub_8073128(toBG2); + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + sub_8073128(toBG2 ^ 1); + DestroyAnimVisualTask(taskId); +} + +static void sub_80B86B0(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Makes the attacker metallic and shining. +// Used by MOVE_HARDEN and MOVE_IRON_DEFENSE. +// arg0: if true won't change battler's palette back +// arg1: if true, use custom color +// arg2: custom color +// Custom color argument is used in MOVE_POISON_TAIL to make the mon turn purplish/pinkish as if became cloaked in poison. +void AnimTask_MetallicShine(u8 taskId) +{ + u16 species; + u8 spriteId, newSpriteId; + u16 paletteNum; + struct BattleAnimBgData animBg; + bool32 priorityChanged = FALSE; + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + if (IsDoubleBattle() && !IsContest()) + { + if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT) + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)) == TRUE) + { + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority--; + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + priorityChanged = TRUE; + } + } + } + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species); + sub_80752A0(&animBg); + AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); + AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); + LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32); + gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96; + gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32; + paletteNum = 16 + gSprites[spriteId].oam.paletteNum; + if (gBattleAnimArgs[1] == 0) + SetGreyscaleOrOriginalPalette(paletteNum, FALSE); + else + BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]); + gTasks[taskId].data[0] = newSpriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[6] = priorityChanged; + gTasks[taskId].func = sub_80B8920; +} + +static void sub_80B8920(u8 taskId) +{ + struct BattleAnimBgData animBg; + u16 paletteNum; + u8 spriteId; + + gTasks[taskId].data[10] += 4; + gBattle_BG1_X -= 4; + if (gTasks[taskId].data[10] == 128) + { + gTasks[taskId].data[10] = 0; + gBattle_BG1_X += 128; + gTasks[taskId].data[11]++; + if (gTasks[taskId].data[11] == 2) + { + spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + paletteNum = 16 + gSprites[spriteId].oam.paletteNum; + if (gTasks[taskId].data[1] == 0) + SetGreyscaleOrOriginalPalette(paletteNum, 1); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + sub_80752A0(&animBg); + sub_8075358(animBg.bgId); + if (gTasks[taskId].data[6] == 1) + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++; + } + else if (gTasks[taskId].data[11] == 3) + { + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + } + } +} + +// Changes battler's palette to either greyscale or original. +// arg0: which battler +// arg1: 0 grayscale, 1 original +void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) +{ + u8 spriteId, battler; + bool8 calcSpriteId = FALSE; + u8 position = B_POSITION_PLAYER_LEFT; + + switch (gBattleAnimArgs[0]) + { + case 0: + case 1: + case 2: + case 3: + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + break; + case 4: + position = B_POSITION_PLAYER_LEFT; + calcSpriteId = TRUE; + break; + case 5: + position = B_POSITION_PLAYER_RIGHT; + calcSpriteId = TRUE; + break; + case 6: + position = B_POSITION_OPPONENT_LEFT; + calcSpriteId = TRUE; + break; + case 7: + position = B_POSITION_OPPONENT_RIGHT; + calcSpriteId = TRUE; + break; + default: + spriteId = 0xFF; + break; + } + if (calcSpriteId) + { + battler = GetBattlerAtPosition(position); + if (IsBattlerSpriteVisible(battler)) + spriteId = gBattlerSpriteIds[battler]; + else + spriteId = 0xFF; + } + if (spriteId != 0xFF) + SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]); + DestroyAnimVisualTask(taskId); +} + +void sub_80B8B38(u8 taskId) +{ + if (gAnimMoveTurn < 2) + gBattleAnimArgs[7] = 0; + if (gAnimMoveTurn == 2) + gBattleAnimArgs[7] = 1; + DestroyAnimVisualTask(taskId); +} diff --git a/src/daycare.c b/src/daycare.c index 837a2c4e6..fede86156 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -2087,7 +2087,7 @@ struct UnkStruct_82349CC u8 field_3; }; -extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES]; +extern const struct UnkStruct_82349CC gMonFrontPicCoords[NUM_SPECIES]; static void SpriteCB_Egg_2(struct Sprite* sprite) { @@ -2101,7 +2101,7 @@ static void SpriteCB_Egg_2(struct Sprite* sprite) sprite->data[0] = 0; species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; - gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1; + gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].field_1; } else { diff --git a/src/dragon.c b/src/dragon.c new file mode 100644 index 000000000..34f97ba74 --- /dev/null +++ b/src/dragon.c @@ -0,0 +1,431 @@ +#include "global.h" +#include "battle_anim.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" + +static void sub_80B725C(struct Sprite *sprite); +static void sub_80B741C(struct Sprite *sprite); +static void sub_80B73AC(struct Sprite *sprite); +static void sub_80B7448(struct Sprite *sprite); +static void sub_80B77E4(struct Sprite *sprite); +static void sub_80B74D8(struct Sprite *sprite); +static void sub_80B76B0(u8 taskId); +static void sub_80B776C(struct Task *task); +static void sub_80B7894(struct Sprite *sprite); + +static EWRAM_DATA u16 gUnknown_20399A4[7] = {0}; + +static const union AnimCmd gUnknown_83E7710[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const gUnknown_83E7728[] = +{ + gUnknown_83E7710, +}; + +const struct SpriteTemplate gUnknown_83E772C = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_83AC9D8, + .anims = gUnknown_83E7728, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B725C, +}; + +static const union AnimCmd gUnknown_83E7744[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd gUnknown_83E7754[] = +{ + ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const gUnknown_83E7764[] = +{ + gUnknown_83E7744, + gUnknown_83E7754, +}; + +static const union AffineAnimCmd gUnknown_83E776C[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0), + AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7784[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0), + AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gUnknown_83E779C[] = +{ + gUnknown_83E776C, + gUnknown_83E7784, +}; + +const struct SpriteTemplate gUnknown_83E77A4 = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_83ACA98, + .anims = gUnknown_83E7764, + .images = NULL, + .affineAnims = gUnknown_83E779C, + .callback = sub_80B741C, +}; + +const union AnimCmd gUnknown_83E77BC[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_FRAME(64, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const gUnknown_83E77D4[] = +{ + gUnknown_83E77BC, +}; + +const struct SpriteTemplate gUnknown_83E77D8 = +{ + .tileTag = ANIM_TAG_FIRE_PLUME, + .paletteTag = ANIM_TAG_FIRE_PLUME, + .oam = &gOamData_83AC9D8, + .anims = gUnknown_83E77D4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B73AC, +}; + +static const union AnimCmd gUnknown_83E77F0[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const gUnknown_83E7800[] = +{ + gUnknown_83E77F0, + gUnknown_83E77F0, +}; + +static const union AffineAnimCmd gUnknown_83E7808[] = +{ + AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7818[] = +{ + AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gUnknown_83E7828[] = +{ + gUnknown_83E7808, + gUnknown_83E7818, +}; + +const struct SpriteTemplate gUnknown_83E7830 = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_83ACA98, + .anims = gUnknown_83E7800, + .images = NULL, + .affineAnims = gUnknown_83E7828, + .callback = sub_80B741C, +}; + +const struct SpriteTemplate gUnknown_83E7848 = +{ + .tileTag = ANIM_TAG_HOLLOW_ORB, + .paletteTag = ANIM_TAG_HOLLOW_ORB, + .oam = &gOamData_83AC9D0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B7448, +}; + +const struct SpriteTemplate gUnknown_83E7860 = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_83AC9D8, + .anims = gUnknown_83E7728, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B77E4, +}; + +static void sub_80B725C(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + sprite->invisible = TRUE; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteLinearAndFlicker; +} + +static void sub_80B72F8(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] -= gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + StartSpriteAnim(sprite, 1); + } + sprite->data[0] = gBattleAnimArgs[4]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); +} + +static void sub_80B73AC(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + } + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]); + sprite->pos1.y += gBattleAnimArgs[2]; + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); +} + +static void sub_80B741C(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + StartSpriteAffineAnim(sprite, 1); + sub_80B72F8(sprite); +} + +static void sub_80B7448(struct Sprite *sprite) +{ + u16 r5; + u16 r0; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[4] = 0; + sprite->data[5] = 1; + sprite->data[6] = gBattleAnimArgs[0]; + r5 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_HEIGHT); + r0 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_WIDTH); + if (r5 > r0) + sprite->data[7] = r5 / 2; + else + sprite->data[7] = r0 / 2; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + sprite->callback = sub_80B74D8; +} + +static void sub_80B74D8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 0x3C) + { + sprite->data[3] = 0; + ++sprite->data[0]; + } + break; + case 1: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95) + sprite->data[7] = 0x96; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 20) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_80B75E0(u8 taskId) +{ + struct ScanlineEffectParams sp; + struct Task *task = &gTasks[taskId]; + u16 i; + u8 r1; + + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + { + sp.dmaDest = ®_BG1HOFS; + task->data[2] = gBattle_BG1_X; + } + else + { + sp.dmaDest = ®_BG2HOFS; + task->data[2] = gBattle_BG2_X; + } + sp.dmaControl = 0xA2600001; + sp.initState = 1; + sp.unused9 = 0; + r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); + task->data[3] = r1 - 32; + task->data[4] = r1 + 32; + if (task->data[3] < 0) + task->data[3] = 0; + for (i = task->data[3]; i <= task->data[4]; ++i) + { + gScanlineEffectRegBuffers[0][i] = task->data[2]; + gScanlineEffectRegBuffers[1][i] = task->data[2]; + } + ScanlineEffect_SetParams(sp); + task->func = sub_80B76B0; +} + +static void sub_80B76B0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (++task->data[6] == 3) + ++task->data[0]; + } + sub_80B776C(task); + break; + case 1: + if (++task->data[1] > 0x3C) + ++task->data[0]; + sub_80B776C(task); + break; + case 2: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (--task->data[6] == 0) + ++task->data[0]; + } + sub_80B776C(task); + break; + case 3: + gScanlineEffect.state = 3; + ++task->data[0]; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80B776C(struct Task *task) +{ + u16 i, r3 = task->data[5]; + + for (i = task->data[3]; i <= task->data[4]; ++i) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; + r3 = (r3 + 8) & 0xFF; + } + task->data[5] = (task->data[5] + 9) & 0xFF; +} + +static void sub_80B77E4(struct Sprite *sprite) +{ + s32 i, r6 = (gBattleAnimArgs[2] * 3) / 5; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4]; + sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]); + sprite->data[2] = Sin(gBattleAnimArgs[1], r6); + sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0]; + sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->callback = sub_80B7894; + for (i = 0; i < 7; ++i) + gUnknown_20399A4[i] = sprite->data[i]; +} + +static void sub_80B7894(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + sprite->pos2.x = sprite->data[4] / 10; + sprite->pos2.y = sprite->data[5] / 10; + if (++sprite->data[0] > sprite->data[3]) + DestroyAnimSprite(sprite); +} diff --git a/src/ground.c b/src/ground.c new file mode 100644 index 000000000..4ae4d8370 --- /dev/null +++ b/src/ground.c @@ -0,0 +1,724 @@ +#include "global.h" +#include "battle_anim.h" +#include "random.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" + +static void AnimBonemerangProjectile(struct Sprite *sprite); +static void AnimBoneHitProjectile(struct Sprite *sprite); +static void AnimDirtScatter(struct Sprite *sprite); +static void AnimMudSportDirt(struct Sprite *sprite); +static void AnimFissureDirtPlumeParticle(struct Sprite *sprite); +static void AnimDigDirtMound(struct Sprite *sprite); +static void AnimBonemerangProjectileStep(struct Sprite *sprite); +static void AnimBonemerangProjectileEnd(struct Sprite *sprite); +static void AnimMudSportDirtRising(struct Sprite *sprite); +static void AnimMudSportDirtFalling(struct Sprite *sprite); +static void sub_80B8ED4(u8 taskId); +static void sub_80B908C(u8 taskId); +static void sub_80B92B8(u8 useBg1, s16 y, s16 endY); +static void sub_80B912C(u8 taskId); +static void sub_80B91B0(u8 taskId); +static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite); +static void sub_80B9584(u8 taskId); +static void sub_80B967C(u8 taskId); +static void sub_80B9760(struct Task *task); +static void sub_80B98A8(u8 taskId); + +static const union AffineAnimCmd gUnknown_83E7A00[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gUnknown_83E7A10[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const gUnknown_83E7A20[] = +{ + gUnknown_83E7A00, +}; + +static const union AffineAnimCmd *const gUnknown_83E7A24[] = +{ + gUnknown_83E7A10, +}; + +const struct SpriteTemplate gUnknown_83E7A28 = +{ + .tileTag = ANIM_TAG_BONE, + .paletteTag = ANIM_TAG_BONE, + .oam = &gOamData_83ACA38, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7A20, + .callback = AnimBonemerangProjectile, +}; + +const struct SpriteTemplate gUnknown_83E7A40 = +{ + .tileTag = ANIM_TAG_BONE, + .paletteTag = ANIM_TAG_BONE, + .oam = &gOamData_83ACA38, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7A24, + .callback = AnimBoneHitProjectile, +}; + +const struct SpriteTemplate gUnknown_83E7A58 = +{ + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gOamData_83AC9C8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDirtScatter, +}; + +static const union AnimCmd gUnknown_83E7A70[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const gUnknown_83E7A78[] = +{ + gUnknown_83E7A70, +}; + +const struct SpriteTemplate gUnknown_83E7A7C = +{ + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gOamData_83AC9D0, + .anims = gUnknown_83E7A78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDirtScatter, +}; + +const struct SpriteTemplate gUnknown_83E7A94 = +{ + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gOamData_83AC9D0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMudSportDirt, +}; + +const struct SpriteTemplate gUnknown_83E7AAC = +{ + .tileTag = ANIM_TAG_MUD_SAND, + .paletteTag = ANIM_TAG_MUD_SAND, + .oam = &gOamData_83AC9C8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFissureDirtPlumeParticle, +}; + +const struct SpriteTemplate gUnknown_83E7AC4 = +{ + .tileTag = ANIM_TAG_DIRT_MOUND, + .paletteTag = ANIM_TAG_DIRT_MOUND, + .oam = &gOamData_83AC9F8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDigDirtMound, +}; + +// Moves a bone projectile towards the target mon, which moves like +// a boomerang. After hitting the target mon, it comes back to the user. +static void AnimBonemerangProjectile(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[5] = -40; + InitAnimArcTranslation(sprite); + sprite->callback = AnimBonemerangProjectileStep; +} + +static void AnimBonemerangProjectileStep(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[5] = 40; + InitAnimArcTranslation(sprite); + sprite->callback = AnimBonemerangProjectileEnd; + } +} + +static void AnimBonemerangProjectileEnd(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); +} + +// Moves a bone projectile towards the target mon, starting right next to +// the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x pixel offset +// arg 3: target y pixel offset +// arg 4: duration +static void AnimBoneHitProjectile(struct Sprite *sprite) +{ + InitSpritePosToAnimTarget(sprite, TRUE); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Moves a small dirt projectile towards the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +// arg 3: target x pixel offset +// arg 4: target y pixel offset +static void AnimDirtScatter(struct Sprite *sprite) +{ + u8 targetXPos, targetYPos; + s16 xOffset, yOffset; + + InitSpritePosToAnimAttacker(sprite, 1); + targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2); + targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3); + xOffset = Random() & 0x1F; + yOffset = Random() & 0x1F; + if (xOffset > 16) + xOffset = 16 - xOffset; + if (yOffset > 16) + yOffset = 16 - yOffset; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = targetXPos + xOffset; + sprite->data[4] = targetYPos + yOffset; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); +} + +// Moves a particle of dirt in the Mud Sport animation. +// The dirt can either be rising upward, or falling down. +// arg 0: 0 = dirt is rising into the air, 1 = dirt is falling down +// arg 1: initial x pixel offset +// arg 2: initial y pixel offset +static void AnimMudSportDirt(struct Sprite *sprite) +{ + ++sprite->oam.tileNum; + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; + sprite->callback = AnimMudSportDirtRising; + } + else + { + sprite->pos1.x = gBattleAnimArgs[1]; + sprite->pos1.y = gBattleAnimArgs[2]; + sprite->pos2.y = -gBattleAnimArgs[2]; + sprite->callback = AnimMudSportDirtFalling; + } +} + +static void AnimMudSportDirtRising(struct Sprite *sprite) +{ + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->pos1.x += sprite->data[0]; + } + sprite->pos1.y -= 4; + if (sprite->pos1.y < -4) + DestroyAnimSprite(sprite); +} + +static void AnimMudSportDirtFalling(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y += 4; + if (sprite->pos2.y >= 0) + { + sprite->pos2.y = 0; + ++sprite->data[0]; + } + break; + case 1: + if (++sprite->data[1] > 0) + { + sprite->data[1] = 0; + sprite->invisible ^= 1; + if (++sprite->data[2] == 10) + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_80B8E94(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == 0) + task->func = sub_80B8ED4; + else + task->func = sub_80B908C; + task->func(taskId); +} + +static void sub_80B8ED4(u8 taskId) +{ + u8 var0; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + if (task->data[11] == 1) + { + task->data[12] = gBattle_BG1_X; + task->data[13] = gBattle_BG1_Y; + } + else + { + task->data[12] = gBattle_BG2_X; + task->data[13] = gBattle_BG2_Y; + } + var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); + task->data[14] = var0 - 32; + task->data[15] = var0 + 32; + if (task->data[14] < 0) + task->data[14] = 0; + gSprites[task->data[10]].invisible = TRUE; + ++task->data[0]; + break; + case 1: + sub_80B92B8(task->data[11], task->data[14], task->data[15]); + ++task->data[0]; + break; + case 2: + task->data[2] = (task->data[2] + 6) & 0x7F; + if (++task->data[4] > 2) + { + task->data[4] = 0; + ++task->data[3]; + } + task->data[5] = task->data[3] + (gSineTable[task->data[2]] >> 4); + if (task->data[11] == 1) + gBattle_BG1_Y = task->data[13] - task->data[5]; + else + gBattle_BG2_Y = task->data[13] - task->data[5]; + + if (task->data[5] > 63) + { + task->data[5] = 120 - task->data[14]; + if (task->data[11] == 1) + gBattle_BG1_Y = task->data[13] - task->data[5]; + else + gBattle_BG2_Y = task->data[13] - task->data[5]; + + gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x; + ++task->data[0]; + } + break; + case 3: + gScanlineEffect.state = 3; + ++task->data[0]; + break; + case 4: + DestroyAnimVisualTask(taskId); + gSprites[task->data[10]].invisible = TRUE; + break; + } +} + +static void sub_80B908C(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(0); + + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) + gBattle_BG1_Y = 0; + else + gBattle_BG2_Y = 0; + DestroyAnimVisualTask(taskId); +} + +void sub_80B90EC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == 0) + task->func = sub_80B912C; + else + task->func = sub_80B91B0; + + task->func(taskId); +} + +static void sub_80B912C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + gSprites[task->data[10]].invisible = FALSE; + gSprites[task->data[10]].pos2.x = 0; + gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y; + ++task->data[0]; + break; + case 1: + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80B91B0(u8 taskId) +{ + u8 var0; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker); + if (task->data[11] == 1) + task->data[12] = gBattle_BG1_X; + else + task->data[12] = gBattle_BG2_X; + + var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); + task->data[14] = var0 - 32; + task->data[15] = var0 + 32; + ++task->data[0]; + break; + case 1: + sub_80B92B8(task->data[11], 0, task->data[15]); + ++task->data[0]; + break; + case 2: + gSprites[task->data[10]].pos2.y = 96; + ++task->data[0]; + break; + case 3: + gSprites[task->data[10]].pos2.y -= 8; + if (gSprites[task->data[10]].pos2.y == 0) + { + gScanlineEffect.state = 3; + ++task->data[0]; + } + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80B92B8(u8 useBG1, s16 y, s16 endY) +{ + s16 bgX; + struct ScanlineEffectParams scanlineParams; + + if (useBG1 == 1) + { + bgX = gBattle_BG1_X; + scanlineParams.dmaDest = ®_BG1HOFS; + } + else + { + bgX = gBattle_BG2_X; + scanlineParams.dmaDest = ®_BG2HOFS; + } + if (y < 0) + y = 0; + while (y < endY) + { + gScanlineEffectRegBuffers[0][y] = bgX; + gScanlineEffectRegBuffers[1][y] = bgX; + ++y; + } + while (y < 160) + { + gScanlineEffectRegBuffers[0][y] = bgX + 240; + gScanlineEffectRegBuffers[1][y] = bgX + 240; + ++y; + } + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); +} + +// Moves a particle of dirt in a plume of dirt. Used in Fissure and Dig. +// arg 0: which mon (0 = attacker, 1 = target) +// arg 1: which side of mon (0 = left, 1 = right) +// arg 2: target x offset +// arg 3: target y offset +// arg 4: wave amplitude +// arg 5: duration +static void AnimFissureDirtPlumeParticle(struct Sprite *sprite) +{ + s8 battler; + s16 xOffset; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + xOffset = 24; + if (gBattleAnimArgs[1] == 1) + { + xOffset *= -1; + gBattleAnimArgs[2] *= -1; + } + sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset; + sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30; + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[4]; + InitAnimArcTranslation(sprite); + sprite->callback = AnimFissureDirtPlumeParticleStep; +} + +static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + DestroyAnimSprite(sprite); +} + +// Displays the dirt mound seen in the move Dig for set duration. +// The dirt mound image is too large for a single sprite, so two +// sprites are lined up next to each other. +// arg 0: which mon (0 = attacker, 1 = target) +// arg 1: oam tile num (0 = left half of image, 1 = right half of image) +// arg 2: duration +static void AnimDigDirtMound(struct Sprite *sprite) +{ + s8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32); + sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32; + sprite->oam.tileNum += gBattleAnimArgs[1] * 8; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = WaitAnimForDuration; +} + +void sub_80B94B4(u8 taskId) +{ + u16 i; + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[1]) + task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3; + else + task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3; + + task->data[3] = gBattleAnimArgs[2]; + switch (gBattleAnimArgs[0]) + { + case 5: + task->data[13] = gBattle_BG3_X; + task->func = sub_80B9584; + break; + case 4: + task->data[13] = 0; + for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + { + if (IsBattlerSpriteVisible(i)) + { + task->data[task->data[13] + 9] = gBattlerSpriteIds[i]; + ++task->data[13]; + } + } + task->func = sub_80B967C; + break; + default: + task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + if (task->data[9] == 0xFF) + { + DestroyAnimVisualTask(taskId); + } + else + { + task->data[13] = 1; + task->func = sub_80B967C; + } + + break; + } +} + +static void sub_80B9584(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if ((task->data[2] & 1) == 0) + gBattle_BG3_X = task->data[13] + task->data[15]; + else + gBattle_BG3_X = task->data[13] - task->data[15]; + + if (++task->data[2] == task->data[3]) + { + task->data[2] = 0; + --task->data[14]; + ++task->data[0]; + } + } + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if ((task->data[2] & 1) == 0) + gBattle_BG3_X = task->data[13] + task->data[14]; + else + gBattle_BG3_X = task->data[13] - task->data[14]; + + if (++task->data[2] == 4) + { + task->data[2] = 0; + if (--task->data[14] == 0) + ++task->data[0]; + } + } + break; + case 2: + gBattle_BG3_X = task->data[13]; + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80B967C(u8 taskId) +{ + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + sub_80B9760(task); + if (++task->data[2] == task->data[3]) + { + task->data[2] = 0; + --task->data[14]; + ++task->data[0]; + } + } + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + sub_80B9760(task); + if (++task->data[2] == 4) + { + task->data[2] = 0; + if (--task->data[14] == 0) + ++task->data[0]; + } + } + break; + case 2: + for (i = 0; i < task->data[13]; ++i) + gSprites[task->data[9 + i]].pos2.x = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80B9760(struct Task *task) +{ + u16 i, xOffset; + + if ((task->data[2] & 1) == 0) + xOffset = (task->data[14] / 2) + (task->data[14] & 1); + else + xOffset = -(task->data[14] / 2); + for (i = 0; i < task->data[13]; ++i) + gSprites[task->data[9 + i]].pos2.x = xOffset; +} + +void AnimTask_IsPowerOver99(u8 taskId) +{ + gBattleAnimArgs[15] = gAnimMovePower > 99; + DestroyAnimVisualTask(taskId); +} + +void sub_80B9800(u8 taskId) +{ + struct Task *newTask; + u8 battler = (gBattleAnimArgs[0] & 1) ? gBattleAnimTarget : gBattleAnimAttacker; + + if (gBattleAnimArgs[0] > 1) + battler ^= BIT_FLANK; + newTask = &gTasks[CreateTask(sub_80B98A8, gBattleAnimArgs[1])]; + newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF; + newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF; + gBattle_BG3_X = newTask->data[1]; + gBattle_BG3_Y = newTask->data[2]; + newTask->data[3] = gBattleAnimArgs[2]; + DestroyAnimVisualTask(taskId); +} + +static void sub_80B98A8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[7] == task->data[3]) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + DestroyTask(taskId); + } + else + { + gBattle_BG3_X = task->data[1]; + gBattle_BG3_Y = task->data[2]; + } +} diff --git a/src/normal.c b/src/normal.c new file mode 100644 index 000000000..4d86b55a6 --- /dev/null +++ b/src/normal.c @@ -0,0 +1,916 @@ +#include "global.h" +#include "battle_anim.h" +#include "palette.h" +#include "random.h" +#include "task.h" +#include "trig.h" + +static void AnimConfusionDuck(struct Sprite *sprite); +static void AnimSimplePaletteBlend(struct Sprite *sprite); +static void sub_80B9A7C(struct Sprite *sprite); +static void sub_80B9B8C(struct Sprite *sprite); +static void sub_80BA27C(struct Sprite *sprite); +static void sub_80BA560(struct Sprite *sprite); +static void sub_80BA5F8(struct Sprite *sprite); +static void sub_80BA630(struct Sprite *sprite); +static void sub_80BA6C8(struct Sprite *sprite); +static void sub_80BA738(struct Sprite *sprite); +static void sub_80BA780(struct Sprite *sprite); +static void sub_80BA5A8(struct Sprite *sprite); +static void AnimConfusionDuckStep(struct Sprite *sprite); +static void AnimSimplePaletteBlendStep(struct Sprite *sprite); +static void sub_80B9AD0(struct Sprite *sprite); +static void sub_80B9B5C(struct Sprite *sprite); +static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void sub_80B9C7C(u8 taskId); +static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void sub_80B9DF0(u8 taskId); +static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void sub_80B9F04(u8 taskId); +static void sub_80B9FD8(u8 taskId); +static void sub_80BA090(u8 taskId); +static void sub_80BA3CC(void); +static void sub_80BA320(struct Sprite *sprite); +static void sub_80BA4D0(u8 taskId); +static void sub_80BA7BC(struct Sprite *sprite); + + +static const union AnimCmd gUnknown_83E7ADC[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(8, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd gUnknown_83E7AF0[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const gUnknown_83E7B04[] = +{ + gUnknown_83E7ADC, + gUnknown_83E7AF0, +}; + +const struct SpriteTemplate gConfusionDuckSpriteTemplate = +{ + .tileTag = ANIM_TAG_DUCK, + .paletteTag = ANIM_TAG_DUCK, + .oam = &gOamData_83AC9D0, + .anims = gUnknown_83E7B04, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimConfusionDuck, +}; + +const struct SpriteTemplate gSimplePaletteBlendSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSimplePaletteBlend, +}; + +const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B9A7C, +}; + +static const union AnimCmd gUnknown_83E7B54[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const gUnknown_83E7B6C[] = +{ + gUnknown_83E7B54, +}; + +const struct SpriteTemplate gUnknown_83E7B70 = +{ + .tileTag = ANIM_TAG_SPARKLE_4, + .paletteTag = ANIM_TAG_SPARKLE_4, + .oam = &gOamData_83AC9D8, + .anims = gUnknown_83E7B6C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80B9B8C, +}; + +const struct SpriteTemplate gUnknown_83E7B88 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80BA27C, +}; + +static const union AffineAnimCmd gUnknown_83E7BA0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7BB0[] = +{ + AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7BC8[] = +{ + AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gUnknown_83E7BE0[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gUnknown_83E7BF8[] = +{ + gUnknown_83E7BA0, + gUnknown_83E7BB0, + gUnknown_83E7BC8, + gUnknown_83E7BE0, +}; + +const struct SpriteTemplate gBasicHitSplatSpriteTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA560, +}; + +const struct SpriteTemplate gUnknown_83E7C20 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA5F8, +}; + +const struct SpriteTemplate gUnknown_83E7C38 = +{ + .tileTag = ANIM_TAG_WATER_IMPACT, + .paletteTag = ANIM_TAG_WATER_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA560, +}; + +const struct SpriteTemplate gUnknown_83E7C50 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA630, +}; + +const struct SpriteTemplate gUnknown_83E7C68 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA6C8, +}; + +const struct SpriteTemplate gUnknown_83E7C80 = +{ + .tileTag = ANIM_TAG_CROSS_IMPACT, + .paletteTag = ANIM_TAG_CROSS_IMPACT, + .oam = &gOamData_83ACAF8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80BA738, +}; + +const struct SpriteTemplate gUnknown_83E7C98 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACA38, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA780, +}; + +const struct SpriteTemplate gUnknown_83E7CB0 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_83ACB58, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83E7BF8, + .callback = sub_80BA5A8, +}; + +// Moves a spinning duck around the mon's head. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: initial wave offset +// arg 3: wave period (higher means faster wave) +// arg 4: duration +static void AnimConfusionDuck(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->data[1] = -gBattleAnimArgs[3]; + sprite->data[4] = 1; + } + else + { + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[4] = 0; + StartSpriteAnim(sprite, 1); + } + sprite->data[3] = gBattleAnimArgs[4]; + sprite->callback = AnimConfusionDuckStep; + sprite->callback(sprite); +} + +static void AnimConfusionDuckStep(struct Sprite *sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 30); + sprite->pos2.y = Sin(sprite->data[0], 10); + if ((u16)sprite->data[0] < 128) + sprite->oam.priority = 1; + else + sprite->oam.priority = 3; + sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; + if (++sprite->data[2] == sprite->data[3]) + DestroyAnimSprite(sprite); +} + +// Performs a simple color blend on a specified sprite. +// arg 0: palette selector +// arg 1: delay +// arg 2: start blend amount +// arg 3: end blend amount +// arg 4: blend color +static void AnimSimplePaletteBlend(struct Sprite *sprite) +{ + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + + BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); + sprite->invisible = TRUE; + sprite->callback = AnimSimplePaletteBlendStep; +} + +// Unpacks a bitfield and returns a bitmask of its selected palettes. +// Bits 0-6 of the selector parameter result in the following palettes being selected: +// 0: battle background palettes (BG palettes 1, 2, and 3) +// 1: gBattleAnimAttacker OBJ palette +// 2: gBattleAnimTarget OBJ palette +// 3: gBattleAnimAttacker partner OBJ palette +// 4: gBattleAnimTarget partner OBJ palette +// 5: BG palette 4 +// 6: BG palette 5 +u32 UnpackSelectedBattleAnimPalettes(s16 selector) +{ + u8 battleBackground = selector & 1; + u8 attacker = (selector >> 1) & 1; + u8 target = (selector >> 2) & 1; + u8 attackerPartner = (selector >> 3) & 1; + u8 targetPartner = (selector >> 4) & 1; + u8 arg5 = (selector >> 5) & 1; + u8 arg6 = (selector >> 6) & 1; + + return sub_8075BE8(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); +} + +static void AnimSimplePaletteBlendStep(struct Sprite *sprite) +{ + if (!gPaletteFade.active) + DestroyAnimSprite(sprite); +} + +static void sub_80B9A7C(struct Sprite *sprite) +{ + u32 selectedPalettes; + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + sprite->data[6] = gBattleAnimArgs[6]; + sprite->data[7] = gBattleAnimArgs[0]; + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); + sprite->invisible = TRUE; + sprite->callback = sub_80B9AD0; +} + +static void sub_80B9AD0(struct Sprite *sprite) +{ + u32 selectedPalettes; + + if (sprite->data[0] > 0) + { + --sprite->data[0]; + return; + } + if (gPaletteFade.active) + return; + if (sprite->data[2] == 0) + { + sprite->callback = sub_80B9B5C; + return; + } + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + if (sprite->data[1] & 0x100) + BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); + else + BlendPalettes(selectedPalettes, sprite->data[6], sprite->data[5]); + sprite->data[1] ^= 0x100; + sprite->data[0] = sprite->data[1] & 0xFF; + --sprite->data[2]; +} + +static void sub_80B9B5C(struct Sprite *sprite) +{ + u32 selectedPalettes; + + if (!gPaletteFade.active) + { + selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + BlendPalettes(selectedPalettes, 0, 0); + DestroyAnimSprite(sprite); + } +} + +static void sub_80B9B8C(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = 0; + sprite->data[1] = 10; + sprite->data[2] = 8; + sprite->data[3] = 40; + sprite->data[4] = 112; + sprite->data[5] = 0; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback(sprite); +} + +void sub_80B9BDC(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].data[8] = 0; + sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]); + gTasks[taskId].func = sub_80B9C7C; +} + +static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +{ + u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]); + + BeginNormalPaletteFade(selectedPalettes, + gTasks[taskId].data[1], + initialBlendAmount, + targetBlendAmount, + gTasks[taskId].data[5]); + --gTasks[taskId].data[2]; + gTasks[taskId].data[8] ^= 1; +} + +static void sub_80B9C7C(u8 taskId) +{ + u8 initialBlendAmount, targetBlendAmount; + + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[2] > 0) + { + if (gTasks[taskId].data[8] == 0) + { + initialBlendAmount = gTasks[taskId].data[3]; + targetBlendAmount = gTasks[taskId].data[4]; + } + else + { + initialBlendAmount = gTasks[taskId].data[4]; + targetBlendAmount = gTasks[taskId].data[3]; + } + if (gTasks[taskId].data[2] == 1) + targetBlendAmount = 0; + sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount); + } + else + { + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80B9CE4(u8 taskId) +{ + s32 battler; + u32 selectedPalettes = 0; + + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].data[8] = 0; + for (battler = 0; battler < gBattlersCount; ++battler) + if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget) + selectedPalettes |= 1 << (battler + 16); + if (gBattleAnimArgs[0] == 1) + selectedPalettes |= 0xE; + gTasks[taskId].data[9] = selectedPalettes >> 16; + gTasks[taskId].data[10] = selectedPalettes & 0xFF; + sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]); + gTasks[taskId].func = sub_80B9DF0; +} + +static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +{ + u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10]; + + BeginNormalPaletteFade(selectedPalettes, + gTasks[taskId].data[1], + initialBlendAmount, + targetBlendAmount, + gTasks[taskId].data[5]); + --gTasks[taskId].data[2]; + gTasks[taskId].data[8] ^= 1; +} + +static void sub_80B9DF0(u8 taskId) +{ + u8 initialBlendAmount, targetBlendAmount; + + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[2] > 0) + { + if (gTasks[taskId].data[8] == 0) + { + initialBlendAmount = gTasks[taskId].data[3]; + targetBlendAmount = gTasks[taskId].data[4]; + } + else + { + initialBlendAmount = gTasks[taskId].data[4]; + targetBlendAmount = gTasks[taskId].data[3]; + } + + if (gTasks[taskId].data[2] == 1) + targetBlendAmount = 0; + sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount); + } + else + { + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80B9E58(u8 taskId) +{ + u8 paletteIndex; + + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].data[8] = 0; + sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]); + gTasks[taskId].func = sub_80B9F04; +} + +static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +{ + u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]); + + BeginNormalPaletteFade(1 << (paletteIndex + 16), + gTasks[taskId].data[1], + initialBlendAmount, + targetBlendAmount, + gTasks[taskId].data[5]); + --gTasks[taskId].data[2]; + gTasks[taskId].data[8] ^= 1; +} + +static void sub_80B9F04(u8 taskId) +{ + u8 initialBlendAmount, targetBlendAmount; + + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[2] > 0) + { + if (gTasks[taskId].data[8] == 0) + { + initialBlendAmount = gTasks[taskId].data[3]; + targetBlendAmount = gTasks[taskId].data[4]; + } + else + { + initialBlendAmount = gTasks[taskId].data[4]; + targetBlendAmount = gTasks[taskId].data[3]; + } + + if (gTasks[taskId].data[2] == 1) + targetBlendAmount = 0; + sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount); + } + else + { + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80B9F6C(u8 taskId) +{ + u8 paletteIndex; + + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].data[6] = gBattleAnimArgs[6]; + gTasks[taskId].data[7] = gBattleAnimArgs[0]; + paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); + BeginNormalPaletteFade(1 << (paletteIndex + 16), + 0, + gBattleAnimArgs[4], + gBattleAnimArgs[4], + gBattleAnimArgs[3]); + gTasks[taskId].func = sub_80B9FD8; +} + +static void sub_80B9FD8(u8 taskId) +{ + u32 selectedPalettes; + + if (gTasks[taskId].data[0] > 0) + { + --gTasks[taskId].data[0]; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].func = sub_80BA090; + return; + } + selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16); + if (gTasks[taskId].data[1] & 0x100) + BeginNormalPaletteFade(selectedPalettes, + 0, + gTasks[taskId].data[4], + gTasks[taskId].data[4], + gTasks[taskId].data[3]); + else + BeginNormalPaletteFade(selectedPalettes, + 0, + gTasks[taskId].data[6], + gTasks[taskId].data[6], + gTasks[taskId].data[5]); + gTasks[taskId].data[1] ^= 0x100; + gTasks[taskId].data[0] = gTasks[taskId].data[1] & 0xFF; + --gTasks[taskId].data[2]; +} + +static void sub_80BA090(u8 taskId) +{ + u32 selectedPalettes; + + if (!gPaletteFade.active) + { + selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16); + BeginNormalPaletteFade(selectedPalettes, 0, 0, 0, RGB(0, 0, 0)); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80BA0E8(u8 taskId) +{ + u32 selectedPalettes = 0; + u8 attackerBattler = gBattleAnimAttacker; + u8 targetBattler = gBattleAnimTarget; + + if (gBattleAnimArgs[0] & 0x100) + selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0); + if (gBattleAnimArgs[1] & 0x100) + selectedPalettes |= (0x10000 << attackerBattler); + if (gBattleAnimArgs[2] & 0x100) + selectedPalettes |= (0x10000 << targetBattler); + InvertPlttBuffer(selectedPalettes); + DestroyAnimVisualTask(taskId); +} + +// not used +static void sub_80BA16C(u8 taskId) +{ + u8 attackerBattler; + u8 targetBattler; + u8 paletteIndex; + u32 selectedPalettes = 0; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[2] = gBattleAnimArgs[0]; + gTasks[taskId].data[3] = gBattleAnimArgs[1]; + gTasks[taskId].data[4] = gBattleAnimArgs[2]; + gTasks[taskId].data[1] = gBattleAnimArgs[3]; + gTasks[taskId].data[5] = gBattleAnimArgs[4]; + gTasks[taskId].data[6] = gBattleAnimArgs[5]; + gTasks[taskId].data[7] = gBattleAnimArgs[6]; + } + ++gTasks[taskId].data[0]; + attackerBattler = gBattleAnimAttacker; + targetBattler = gBattleAnimTarget; + if (gTasks[taskId].data[2] & 0x100) + selectedPalettes = 0x0000FFFF; + if (gTasks[taskId].data[2] & 0x1) + { + paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxSpriteIds[attackerBattler]].template->paletteTag); + selectedPalettes |= (1 << paletteIndex) << 16; + } + if (gTasks[taskId].data[3] & 0x100) + selectedPalettes |= (1 << attackerBattler) << 16; + if (gTasks[taskId].data[4] & 0x100) + selectedPalettes |= (1 << targetBattler) << 16; + TintPlttBuffer(selectedPalettes, gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]); + if (gTasks[taskId].data[0] == gTasks[taskId].data[1]) + { + UnfadePlttBuffer(selectedPalettes); + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80BA27C(struct Sprite *sprite) +{ + u16 var0; + + sprite->invisible = TRUE; + sprite->data[0] = -gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[2]; + + switch (gBattleAnimArgs[3]) + { + case 0: + StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_X); + break; + case 1: + StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_Y); + break; + case 2: + StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetX); + break; + default: + StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetY); + break; + } + sprite->data[4] = *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)); + sprite->data[5] = gBattleAnimArgs[3]; + var0 = sprite->data[5] - 2; + if (var0 < 2) + sub_80BA3CC(); + sprite->callback = sub_80BA320; +} + +static void sub_80BA320(struct Sprite *sprite) +{ + u8 i; + u16 var0; + + if (sprite->data[3] > 0) + { + --sprite->data[3]; + if (sprite->data[1] > 0) + { + --sprite->data[1]; + } + else + { + sprite->data[1] = sprite->data[2]; + *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) += sprite->data[0]; + sprite->data[0] = -sprite->data[0]; + } + } + else + { + *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) = sprite->data[4]; + var0 = sprite->data[5] - 2; + if (var0 < 2) + for (i = 0; i < gBattlersCount; ++i) + gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0; + DestroyAnimSprite(sprite); + } +} + +static void sub_80BA3CC(void) +{ + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0; + if (gBattleAnimArgs[4] == 2) + { + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + } + else + { + if (gBattleAnimArgs[4] == 0) + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; + else + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + } +} + +void sub_80BA47C(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + gTasks[taskId].data[8] = gBattleAnimArgs[3]; + gBattle_BG3_X = gBattleAnimArgs[0]; + gBattle_BG3_Y = gBattleAnimArgs[1]; + gTasks[taskId].func = sub_80BA4D0; + gTasks[taskId].func(taskId); +} + +static void sub_80BA4D0(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + if (gBattle_BG3_X == gTasks[taskId].data[0]) + gBattle_BG3_X = -gTasks[taskId].data[0]; + else + gBattle_BG3_X = gTasks[taskId].data[0]; + + if (gBattle_BG3_Y == -gTasks[taskId].data[1]) + gBattle_BG3_Y = 0; + else + gBattle_BG3_Y = -gTasks[taskId].data[1]; + + gTasks[taskId].data[3] = gTasks[taskId].data[8]; + if (--gTasks[taskId].data[2] == 0) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + DestroyAnimVisualTask(taskId); + } + } + else + { + --gTasks[taskId].data[3]; + } +} + +static void sub_80BA560(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); + if (gBattleAnimArgs[2] == 0) + InitSpritePosToAnimAttacker(sprite, 1); + else + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +static void sub_80BA5A8(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); + if (gBattleAnimArgs[2] == 0) + InitSpritePosToAnimAttacker(sprite, 1); + else + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + StoreSpriteCallbackInData6(sprite, sub_80B1D3C); +} + +static void sub_80BA5F8(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest()) + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + sub_80BA560(sprite); +} + +static void sub_80BA630(struct Sprite *sprite) +{ + if (gBattleAnimArgs[1] == -1) + gBattleAnimArgs[1] = Random() & 3; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]); + if (gBattleAnimArgs[0] == 0) + InitSpritePosToAnimAttacker(sprite, 0); + else + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->pos2.x += (Random() % 48) - 24; + sprite->pos2.y += (Random() % 24) - 12; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void sub_80BA6C8(struct Sprite *sprite) +{ + sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x; + sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y; + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void sub_80BA738(struct Sprite *sprite) +{ + if (gBattleAnimArgs[2] == 0) + InitSpritePosToAnimAttacker(sprite, 1); + else + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[3]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = WaitAnimForDuration; +} + +static void sub_80BA780(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); + if (gBattleAnimArgs[2] == 0) + InitSpritePosToAnimAttacker(sprite, 1); + else + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->callback = sub_80BA7BC; +} + +static void sub_80BA7BC(struct Sprite *sprite) +{ + sprite->invisible ^= 1; + if (sprite->data[0]++ > 12) + DestroyAnimSprite(sprite); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index f821f7170..160b9d574 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -44,10 +44,10 @@ gBattle_BG3_X: @ 2022980 gBattle_BG3_Y: @ 2022982 .space 0x2 -gUnknown_2022984: @ 2022984 +gBattle_WIN0H: @ 2022984 .space 0x2 -gUnknown_2022986: @ 2022986 +gBattle_WIN0V: @ 2022986 .space 0x2 gUnknown_2022988: @ 2022988 @@ -621,7 +621,7 @@ gUnknown_2037EE0: @ 2037EE0 gAnimScriptActive: @ 2037EE1 .space 0x1 -gUnknown_2037EE2: @ 2037EE2 +gAnimVisualTaskCount: @ 2037EE2 .space 0x1 gUnknown_2037EE3: @ 2037EE3 @@ -669,16 +669,13 @@ gBattleAnimAttacker: @ 2037F1A gBattleAnimTarget: @ 2037F1B .space 0x1 -gUnknown_2037F1C: @ 2037F1C +gAnimBattlerSpecies: @ 2037F1C .space 0x8 gUnknown_2037F24: @ 2037F24 .space 0x4 -gUnknown_2037F28: @ 2037F28 - .space 0x8 - - .align 2 + .include "src/battle_anim_mons.o" .include "src/title_screen.o" .align 2 @@ -881,15 +878,11 @@ gUnknown_203998C: @ 203998C gUnknown_203999C: @ 203999C .space 0x8 -gUnknown_20399A4: @ 20399A4 - .space 0x10 - -gUnknown_20399B4: @ 20399B4 - .space 0x4 - -gUnknown_20399B8: @ 20399B8 - .space 0x4 + .include "src/dragon.o" + .include "src/battle_anim_utility_funcs.o" + .include "src/battle_intro.o" + .align 2 gUnknown_20399BC: @ 20399BC .space 0x4 |