diff options
76 files changed, 4383 insertions, 9516 deletions
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index b31af7d1e..362183765 100644 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -125,7 +125,7 @@ sub_815A1B0: @ 815A1B0 adds r4, r0, 0 movs r0, 0x5A strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] movs r0, 0x7 strh r0, [r4, 0x30] @@ -259,7 +259,7 @@ _0815A2B2: strh r0, [r5, 0x2E] strh r7, [r5, 0x32] strh r6, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 @@ -767,7 +767,7 @@ sub_815A6C4: @ 815A6C4 sub sp, 0x4 adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimTarget ldrb r0, [r0] mov r5, sp @@ -802,7 +802,7 @@ _0815A6F8: ldr r0, =0x0000ffce strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_815A73C str r0, [r4, 0x1C] add sp, 0x4 @@ -824,7 +824,7 @@ sub_815A73C: @ 815A73C movs r0, 0x1E strh r0, [r4, 0x2E] strh r1, [r4, 0x30] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =sub_815A76C adds r0, r4, 0 @@ -2216,7 +2216,7 @@ sub_815B27C: @ 815B27C bne _0815B290 adds r0, r5, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos _0815B290: ldrh r0, [r5, 0x2E] adds r0, 0x1 @@ -2291,7 +2291,7 @@ _0815B2D8: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] _0815B324: pop {r4,r5} @@ -2810,7 +2810,7 @@ sub_815B70C: @ 815B70C _0815B71E: adds r0, r4, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0x90 lsls r0, 4 strh r0, [r4, 0x30] @@ -4309,7 +4309,7 @@ sub_815C400: @ 815C400 bne _0815C41E adds r0, r4, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] @@ -8448,7 +8448,7 @@ _0815E4EE: adds r0, r1 lsls r0, 2 adds r0, r4 - bl sub_80A68D4 + bl InitAnimArcTranslation mov r1, r10 ldrb r0, [r1] bl GetBattlerSide @@ -9605,7 +9605,7 @@ sub_815EE84: @ 815EE84 bne _0815EEA8 adds r0, r4, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker b _0815EEAA .pool diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index ab3f27799..c0881e682 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -1473,7 +1473,7 @@ sub_8171104: @ 8171104 ldr r0, =0x0000ffd8 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_8171134 str r0, [r4, 0x1C] pop {r4} @@ -2631,7 +2631,7 @@ _08171A26: ldrsb r0, [r1, r0] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation add r4, r10 ldr r0, =sub_8171AAC str r0, [r4] @@ -5571,7 +5571,7 @@ sub_817330C: @ 817330C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0x1E strh r0, [r4, 0x2E] movs r0, 0x1 @@ -5600,7 +5600,7 @@ sub_817330C: @ 817330C ldr r0, =0x0000ffe0 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r2, =gSprites ldr r1, =gBattlerSpriteIds ldr r0, =gBattleAnimAttacker diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s index 138cc271e..910b09b8c 100644 --- a/asm/battle_anim_effects_1.s +++ b/asm/battle_anim_effects_1.s @@ -92,7 +92,7 @@ sub_80FE8E0: @ 80FE8E0 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] @@ -109,7 +109,7 @@ sub_80FE8E0: @ 80FE8E0 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, =move_anim_8074EE0 adds r0, r4, 0 @@ -125,7 +125,7 @@ sub_80FE930: @ 80FE930 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r5, =gBattleAnimArgs ldrb r1, [r5, 0x6] adds r0, r4, 0 @@ -145,7 +145,7 @@ sub_80FE930: @ 80FE930 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 @@ -161,7 +161,7 @@ sub_80FE988: @ 80FE988 push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x4] strh r0, [r4, 0x2E] @@ -337,7 +337,7 @@ sub_80FEAD8: @ 80FEAD8 ldrh r0, [r6, 0x4] strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_80FEB28 str r0, [r4, 0x1C] pop {r4-r6} @@ -493,7 +493,7 @@ sub_80FEC48: @ 80FEC48 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -528,7 +528,7 @@ _080FEC68: ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] adds r0, r6, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_80FECB8 str r0, [r6, 0x1C] pop {r4-r6} @@ -553,7 +553,7 @@ sub_80FECB8: @ 80FECB8 strb r0, [r2] movs r0, 0xA strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =sub_80FECF0 adds r0, r4, 0 @@ -581,7 +581,7 @@ sub_80FECF0: @ 80FECF0 bl StartSpriteAnim movs r0, 0x3C strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 @@ -762,7 +762,7 @@ sub_80FEE78: @ 80FEE78 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r5, =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -859,7 +859,7 @@ sub_80FEF44: @ 80FEF44 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r5, =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -1079,7 +1079,7 @@ sub_80FF0F4: @ 80FF0F4 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1138,7 +1138,7 @@ _080FF174: ldrh r0, [r0, 0xA] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1256,8 +1256,8 @@ _080FF260: bx r0 thumb_func_end sub_80FF1C0 - thumb_func_start sub_80FF268 -sub_80FF268: @ 80FF268 + thumb_func_start AnimMoveTwisterParticle +AnimMoveTwisterParticle: @ 80FF268 push {r4,lr} adds r4, r0, 0 bl IsDoubleBattle @@ -1294,7 +1294,7 @@ _080FF28A: pop {r0} bx r0 .pool - thumb_func_end sub_80FF268 + thumb_func_end AnimMoveTwisterParticle thumb_func_start sub_80FF2BC sub_80FF2BC: @ 80FF2BC @@ -2348,7 +2348,7 @@ sub_80FFB18: @ 80FFB18 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 @@ -3100,7 +3100,7 @@ _08100060: adds r0, r1 lsls r0, 2 adds r0, r4 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_8100128 str r0, [r5] pop {r4-r6} @@ -3263,7 +3263,7 @@ _08100204: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -3335,7 +3335,7 @@ _08100272: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -3394,7 +3394,7 @@ _081002E8: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -3448,7 +3448,7 @@ _08100380: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -3505,7 +3505,7 @@ _081003D2: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -3557,7 +3557,7 @@ _08100464: adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrh r0, [r6, 0x8] adds r0, 0x1 b _081004FA @@ -4624,7 +4624,7 @@ _08100CF2: bl StoreSpriteCallbackInData6 movs r0, 0x3 strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] _08100D28: pop {r4} @@ -5704,7 +5704,7 @@ sub_81015AC: @ 81015AC strh r1, [r0, 0x22] movs r1, 0x14 strh r1, [r0, 0x2E] - ldr r1, =sub_80A64B0 + ldr r1, =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, =sub_81015D4 bl StoreSpriteCallbackInData6 @@ -5728,7 +5728,7 @@ sub_81015D4: @ 81015D4 b _0810166A _081015EA: strh r1, [r5, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, =sub_81015D4 adds r0, r5, 0 @@ -5766,7 +5766,7 @@ _08101604: asrs r0, 24 adds r4, r0 strh r4, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =sub_8101684 adds r0, r5, 0 @@ -5806,7 +5806,7 @@ sub_8101684: @ 8101684 bne _081016AC movs r0, 0xA strh r0, [r2, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r2, 0x1C] ldr r1, =sub_81016B8 adds r0, r2, 0 @@ -5833,7 +5833,7 @@ sub_81016B8: @ 81016B8 strh r0, [r5, 0x2E] strh r1, [r5, 0x30] strh r1, [r5, 0x32] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, =sub_8101774 adds r0, r5, 0 @@ -5900,7 +5900,7 @@ _08101718: lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =sub_8101820 adds r0, r5, 0 @@ -7478,7 +7478,7 @@ _08102390: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 @@ -9019,7 +9019,7 @@ _08102FDE: strh r0, [r5, 0x22] movs r0, 0x8 strh r0, [r5, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s index 8ace81dbb..c8cd53398 100644 --- a/asm/battle_anim_effects_2.s +++ b/asm/battle_anim_effects_2.s @@ -240,7 +240,7 @@ sub_8103620: @ 8103620 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] @@ -248,7 +248,7 @@ sub_8103620: @ 8103620 strh r0, [r4, 0x30] ldrh r0, [r1, 0x8] strh r0, [r4, 0x38] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =sub_8103658 adds r0, r4, 0 @@ -269,7 +269,7 @@ sub_8103658: @ 8103658 ldrh r1, [r0, 0x22] adds r1, 0xF strh r1, [r0, 0x36] - ldr r1, =sub_80A6EEC + ldr r1, =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, =sub_8103680 bl StoreSpriteCallbackInData6 @@ -526,7 +526,7 @@ sub_810387C: @ 810387C push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =sub_80A67BC str r0, [r4, 0x1C] ldr r1, =sub_81038A0 @@ -548,7 +548,7 @@ sub_81038A0: @ 81038A0 ldrh r1, [r0, 0x22] subs r1, 0x20 strh r1, [r0, 0x36] - ldr r1, =sub_80A6EEC + ldr r1, =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 @@ -594,7 +594,7 @@ _081038EC: _0810390E: adds r0, r5, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 @@ -657,7 +657,7 @@ _08103980: mov r0, r8 strh r0, [r5, 0x32] strh r7, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 @@ -1424,7 +1424,7 @@ sub_8103FE8: @ 8103FE8 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gUnknown_085934A0 ldrh r0, [r0, 0x2] bl IndexOfSpritePaletteTag @@ -1507,7 +1507,7 @@ sub_8104088: @ 8104088 sub sp, 0x4 adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 @@ -1655,7 +1655,7 @@ sub_81041C4: @ 81041C4 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0x14 strh r0, [r4, 0x2E] ldr r5, =gBattleAnimTarget @@ -1671,7 +1671,7 @@ sub_81041C4: @ 81041C4 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r4, 0x1C] adds r2, r4, 0 adds r2, 0x2C @@ -1809,7 +1809,7 @@ sub_8104304: @ 8104304 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -1896,7 +1896,7 @@ _08104390: lsrs r0, 24 adds r0, r6 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =sub_81043F8 adds r0, r5, 0 @@ -4038,7 +4038,7 @@ sub_8105538: @ 8105538 push {r4,lr} adds r4, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -5141,7 +5141,7 @@ sub_8105DE8: @ 8105DE8 push {r4-r6,lr} adds r5, r0, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r6, =gBattleAnimAttacker ldrb r0, [r6] bl GetBattlerSide @@ -5172,7 +5172,7 @@ _08105E08: ldrh r1, [r4, 0x6] adds r0, r1 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 @@ -5200,7 +5200,7 @@ sub_8105E60: @ 8105E60 bne _08105E7A adds r0, r4, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos _08105E7A: movs r1, 0x30 ldrsh r0, [r4, r1] @@ -5525,7 +5525,7 @@ sub_8106140: @ 8106140 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0x5F strh r0, [r4, 0x2E] ldrh r0, [r4, 0x20] @@ -5667,7 +5667,7 @@ sub_810624C: @ 810624C strh r1, [r0, 0x2E] ldrh r1, [r2, 0x2] strh r1, [r0, 0x30] - ldr r1, =sub_80A64B0 + ldr r1, =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, =sub_810627C bl StoreSpriteCallbackInData6 @@ -6543,7 +6543,7 @@ sub_81069B8: @ 81069B8 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =sub_810699C str r0, [r4, 0x1C] pop {r4} @@ -7496,7 +7496,7 @@ _08107118: ldrh r0, [r5, 0x22] subs r0, 0x48 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 diff --git a/asm/bug.s b/asm/bug.s deleted file mode 100644 index 36ac05ace..000000000 --- a/asm/bug.s +++ /dev/null @@ -1,791 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8110368 -sub_8110368: @ 8110368 - push {r4-r6,lr} - adds r6, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08110394 - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0x4] - negs r1, r1 - strh r1, [r0, 0x4] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] - b _081103C4 - .pool -_08110394: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081103C4 - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_081103C4: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - 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, =sub_80A6EEC - str r0, [r6, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110368 - - thumb_func_start sub_8110438 -sub_8110438: @ 8110438 - push {r4-r6,lr} - adds r6, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0811045C - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _08110478 - .pool -_0811045C: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08110478 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] -_08110478: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x36] - ldr r0, =sub_80A6EEC - str r0, [r6, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110438 - - thumb_func_start sub_81104E4 -sub_81104E4: @ 81104E4 - push {r4,r5,lr} - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08110500 - ldr r0, =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - strh r1, [r0, 0x4] -_08110500: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80A69CC - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08110548 - ldr r4, =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] - b _0811055A - .pool -_08110548: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl SetAverageBattlerPositions -_0811055A: - adds r0, r5, 0 - bl sub_80A6FD4 - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x38] - ldr r0, =sub_811057C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81104E4 - - thumb_func_start sub_811057C -sub_811057C: @ 811057C - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _08110592 - adds r0, r4, 0 - bl DestroyAnimSprite - b _081105AE -_08110592: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0xD - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] -_081105AE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811057C - - thumb_func_start sub_81105B4 -sub_81105B4: @ 81105B4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0 - bl SetAverageBattlerPositions - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _081105F0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _081105FC - .pool -_081105F0: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_081105FC: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08110618 - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] -_08110618: - ldr r0, =sub_8110630 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81105B4 - - thumb_func_start sub_8110630 -sub_8110630: @ 8110630 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _08110664 - movs r0, 0 - strh r0, [r3, 0x2E] - 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] -_08110664: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _08110678 - adds r0, r3, 0 - bl DestroyAnimSprite -_08110678: - pop {r0} - bx r0 - thumb_func_end sub_8110630 - - thumb_func_start sub_811067C -sub_811067C: @ 811067C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - movs r0, 0x10 - strh r0, [r4, 0x2E] - ldr r0, =sub_81106A4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_811067C - - thumb_func_start sub_81106A4 -sub_81106A4: @ 81106A4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0x13 - bgt _081106B8 - adds r0, r1, 0x1 - strh r0, [r4, 0x32] - b _081106F6 -_081106B8: - ldrh r1, [r4, 0x30] - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081106F6 - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - 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, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081106F6 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, =sub_8110700 - str r0, [r4, 0x1C] -_081106F6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81106A4 - - thumb_func_start sub_8110700 -sub_8110700: @ 8110700 - 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_8110700 - - thumb_func_start sub_8110720 -sub_8110720: @ 8110720 - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08110740 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _08110762 - .pool -_08110740: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08110762 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_08110762: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _081107B2 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _081107B2 - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - cmp r0, 0 - beq _081107A0 - ldrb r0, [r5] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081107B2 -_081107A0: - ldr r0, =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0, 0x4] - movs r2, 0 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0] -_081107B2: - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80A69CC - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - ldr r6, =gBattleAnimArgs - lsrs r4, 24 - ldrh r0, [r6, 0x4] - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r6, 0x6] - adds r1, r2 - lsls r1, 16 - ldrh r2, [r7, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - subs r0, r2 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r7, 0x22] - lsrs r5, r1, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_80A73E0 - ldrh r0, [r6, 0x8] - strh r0, [r7, 0x2E] - strh r4, [r7, 0x32] - strh r5, [r7, 0x36] - ldr r0, =sub_80A6EEC - str r0, [r7, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r7, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110720 - - thumb_func_start sub_8110850 -sub_8110850: @ 8110850 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80A69CC - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08110870 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08110870: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, =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_80A68D4 - ldr r0, =sub_81108CC - str r0, [r6, 0x1C] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110850 - - thumb_func_start sub_81108CC -sub_81108CC: @ 81108CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081108F8 - adds r0, r4, 0 - bl DestroyAnimSprite - b _08110988 -_081108F8: - movs r0, 0x2E - adds r0, r4 - mov r8, r0 - ldrh r7, [r4, 0x20] - ldrh r5, [r4, 0x24] - ldrh r1, [r4, 0x22] - mov r12, r1 - ldrh r6, [r4, 0x26] - mov r2, r8 - add r1, sp, 0x4 - movs r3, 0x7 -_0811090E: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0811090E - adds r0, r7, r5 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r12 - adds r0, r2, r6 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _08110988 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r1, r5, 16 - asrs r1, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r1, r2 - lsls r2, r6, 16 - asrs r2, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_80A73E0 - add r2, sp, 0x4 - mov r1, r8 - movs r3, 0x7 -_0811097A: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0811097A -_08110988: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81108CC - - thumb_func_start sub_8110994 -sub_8110994: @ 8110994 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _081109B0 - ldr r4, =gBattleAnimAttacker - b _081109B2 - .pool -_081109B0: - ldr r4, =gBattleAnimTarget -_081109B2: - 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 - adds r0, 0x12 - strh r0, [r5, 0x22] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110994 - - .align 2, 0 diff --git a/asm/dark.s b/asm/dark.s index 07f24d27e..e4373723d 100644 --- a/asm/dark.s +++ b/asm/dark.s @@ -264,7 +264,7 @@ sub_81138D4: @ 81138D4 movs r0, 0x7E strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80A6E14 + bl InitSpriteDataForLinearTranslation ldrh r0, [r4, 0x30] negs r0, r0 strh r0, [r4, 0x34] @@ -563,7 +563,7 @@ _08113B60: ldr r0, =0x0000fff4 strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_8113B90 str r0, [r4, 0x1C] pop {r4-r7} diff --git a/asm/dragon.s b/asm/dragon.s deleted file mode 100644 index dc3ca1d0b..000000000 --- a/asm/dragon.s +++ /dev/null @@ -1,793 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8113064 -sub_8113064: @ 8113064 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =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 _081130B4 - ldr r2, =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 _081130BE - .pool -_081130B4: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_081130BE: - 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, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A66DC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8113064 - - thumb_func_start sub_8113100 -sub_8113100: @ 8113100 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_80A6838 - ldr r4, =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, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08113164 - ldr r2, =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 _0811318E - .pool -_08113164: - ldr r1, =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 -_0811318E: - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, =sub_80A6EEC - str r0, [r5, 0x1C] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8113100 - - thumb_func_start sub_81131B4 -sub_81131B4: @ 81131B4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _081131D0 - ldr r4, =gBattleAnimAttacker - b _081131D2 - .pool -_081131D0: - ldr r4, =gBattleAnimTarget -_081131D2: - 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, =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_80A6864 - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, =sub_80A67D8 - str r0, [r5, 0x1C] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81131B4 - - thumb_func_start sub_8113224 -sub_8113224: @ 8113224 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0811323E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0811323E: - adds r0, r4, 0 - bl sub_8113100 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8113224 - - thumb_func_start sub_8113250 -sub_8113250: @ 8113250 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r4, =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, =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r6, 0x3A] - ldr r4, =gBattlerAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_80A861C - lsls r7, r0, 16 - lsrs r5, r7, 16 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_80A861C - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r5, r0 - bls _081132B0 - lsrs r0, r7, 17 - b _081132B2 - .pool -_081132B0: - lsrs r0, r1, 17 -_081132B2: - 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, =sub_81132E0 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8113250 - - thumb_func_start sub_81132E0 -sub_81132E0: @ 81132E0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _081132F2 - cmp r5, 0x1 - beq _0811335E - b _081133E2 -_081132F2: - 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 _08113344 - strh r5, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _08113344 - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _08113344 - movs r0, 0x10 - strh r0, [r4, 0x38] -_08113344: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _081133E2 - movs r0, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _081133E2 -_0811335E: - 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 _08113386 - adds r0, r1, 0 - adds r0, 0x8 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x95 - ble _08113386 - movs r0, 0x96 - strh r0, [r4, 0x3C] -_08113386: - 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 _081133CE - movs r0, 0 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _081133CE - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _081133CE - movs r0, 0x10 - strh r0, [r4, 0x38] -_081133CE: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _081133E2 - adds r0, r4, 0 - bl DestroyAnimSprite -_081133E2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81132E0 - - thumb_func_start sub_81133E8 -sub_81133E8: @ 81133E8 - 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, =gTasks - adds r4, r1, r0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08113424 - ldr r0, =0x04000014 - str r0, [sp] - ldr r0, =gBattle_BG1_X - b _0811342A - .pool -_08113424: - ldr r0, =0x04000018 - str r0, [sp] - ldr r0, =gBattle_BG2_X -_0811342A: - ldrh r0, [r0] - strh r0, [r4, 0xC] - ldr r0, =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, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerYCoordWithElevation - 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 _0811345A - strh r5, [r4, 0xE] -_0811345A: - ldrh r3, [r4, 0xE] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bgt _08113488 - ldr r5, =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_0811346C: - 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 _0811346C -_08113488: - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, =sub_81134B8 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81133E8 - - thumb_func_start sub_81134B8 -sub_81134B8: @ 81134B8 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, =gTasks - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bhi _0811356E - lsls r0, 2 - ldr r1, =_081134E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081134E4: - .4byte _081134F8 - .4byte _0811351A - .4byte _0811352A - .4byte _08113556 - .4byte _08113568 -_081134F8: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811354E - 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 _0811354E - b _08113548 -_0811351A: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _0811354E - b _08113548 -_0811352A: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811354E - 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 _0811354E -_08113548: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811354E: - adds r0, r2, 0 - bl sub_8113574 - b _0811356E -_08113556: - ldr r1, =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _0811356E - .pool -_08113568: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_0811356E: - pop {r0} - bx r0 - thumb_func_end sub_81134B8 - - thumb_func_start sub_8113574 -sub_8113574: @ 8113574 - 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 _081135CA - ldr r7, =gScanlineEffectRegBuffers - mov r12, r7 - ldr r0, =gSineTable - mov r8, r0 - ldr r6, =gScanlineEffect -_08113592: - 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 _08113592 -_081135CA: - 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 - .pool - thumb_func_end sub_8113574 - - thumb_func_start sub_81135EC -sub_81135EC: @ 81135EC - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - ldr r5, =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, =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, =sub_811369C - str r0, [r4, 0x1C] - adds r4, 0x2E - ldr r2, =gUnknown_0203A100 - movs r1, 0x6 -_08113674: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08113674 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81135EC - - thumb_func_start sub_811369C -sub_811369C: @ 811369C - 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 _081136E0 - adds r0, r4, 0 - bl DestroyAnimSprite -_081136E0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811369C - - .align 2, 0 diff --git a/asm/electric.s b/asm/electric.s index 3d8864186..b1fa8b9ae 100644 --- a/asm/electric.s +++ b/asm/electric.s @@ -345,7 +345,7 @@ sub_810A46C: @ 810A46C push {r4-r6,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r5, =gBattleAnimArgs ldrh r0, [r5, 0x6] strh r0, [r4, 0x2E] @@ -744,7 +744,7 @@ _0810A7B6: ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 diff --git a/asm/fight.s b/asm/fight.s deleted file mode 100644 index 508b942bc..000000000 --- a/asm/fight.s +++ /dev/null @@ -1,1649 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start unc_080B08A0 -unc_080B08A0: @ 810CE2C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_80A6864 - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0xF - strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end unc_080B08A0 - - thumb_func_start sub_810CE68 -sub_810CE68: @ 810CE68 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _0810CE90 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810CE90 - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r4, 0x6] -_0810CE90: - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r0, r5, 0 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r4, 0xC] - adds r0, r5, 0 - bl sub_80A7938 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810CE68 - - thumb_func_start sub_810CEB4 -sub_810CEB4: @ 810CEB4 - push {r4,lr} - adds r4, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0810CED0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0, 0x6] - negs r1, r1 - strh r1, [r0, 0x6] -_0810CED0: - adds r0, r4, 0 - bl sub_810CE68 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810CEB4 - - thumb_func_start sub_810CEE0 -sub_810CEE0: @ 810CEE0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0x8] - bl StartSpriteAnim - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0810CF04 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80A69CC - b _0810CF0C - .pool -_0810CF04: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80A6980 -_0810CF0C: - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, =sub_80A64B0 - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810CEE0 - - thumb_func_start sub_810CF30 -sub_810CF30: @ 810CF30 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - mov r9, r0 - cmp r1, 0 - bne _0810CF54 - ldr r0, =gBattleAnimAttacker - b _0810CF56 - .pool -_0810CF54: - ldr r0, =gBattleAnimTarget -_0810CF56: - ldrb r0, [r0] - mov r8, r0 - mov r4, r9 - movs r3, 0x4 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _0810CF74 - bl Random2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - strh r0, [r4, 0x4] -_0810CF74: - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim - mov r0, r8 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - mov r0, r8 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - mov r0, r8 - movs r1, 0x1 - bl sub_80A861C - lsls r0, 16 - asrs r1, r0, 16 - lsrs r0, 31 - adds r1, r0 - lsls r1, 15 - lsrs r6, r1, 16 - mov r0, r8 - movs r1, 0 - bl sub_80A861C - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0810CFBE - adds r0, 0x3 -_0810CFBE: - lsls r4, r0, 14 - lsrs r4, 16 - bl Random2 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - bl __modsi3 - lsls r0, 16 - lsrs r6, r0, 16 - bl Random2 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - asrs r4, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 16 - lsrs r4, r0, 16 - bl Random2 - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - cmp r1, 0 - beq _0810D000 - lsls r0, r6, 16 - negs r0, r0 - lsrs r6, r0, 16 -_0810D000: - bl Random2 - adds r1, r7, 0 - ands r1, r0 - cmp r1, 0 - beq _0810D012 - lsls r0, r4, 16 - negs r0, r0 - lsrs r4, r0, 16 -_0810D012: - ldr r0, =gBattlerPositions - add r0, r8 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _0810D028 - lsls r0, r4, 16 - ldr r1, =0xfff00000 - adds r0, r1 - lsrs r4, r0, 16 -_0810D028: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r3, [r5, 0x22] - adds r0, r3 - strh r0, [r5, 0x22] - mov r1, r9 - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x2E] - ldr r0, =gBasicHitSplatSpriteTemplate - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - adds r3, r5, 0 - adds r3, 0x43 - ldrb r3, [r3] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3C] - cmp r0, 0x40 - beq _0810D08C - movs r0, 0x3C - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - movs r2, 0x3C - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, =SpriteCallbackDummy - str r1, [r0] -_0810D08C: - ldr r0, =sub_810D0B8 - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810CF30 - - thumb_func_start sub_810D0B8 -sub_810D0B8: @ 810D0B8 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _0810D100 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0x40 - beq _0810D0F4 - ldr r4, =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - movs r0, 0x3C - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite -_0810D0F4: - adds r0, r5, 0 - bl DestroyAnimSprite - b _0810D104 - .pool -_0810D100: - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] -_0810D104: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810D0B8 - - thumb_func_start sub_810D10C -sub_810D10C: @ 810D10C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - movs r0, 0x1E - strh r0, [r4, 0x2E] - ldr r0, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810D130 - ldrh r0, [r4, 0x20] - subs r0, 0x14 - strh r0, [r4, 0x32] - b _0810D142 - .pool -_0810D130: - ldrh r0, [r4, 0x20] - adds r0, 0x14 - strh r0, [r4, 0x32] - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_0810D142: - ldrh r0, [r4, 0x22] - subs r0, 0x14 - strh r0, [r4, 0x36] - ldr r0, =sub_80A6EEC - str r0, [r4, 0x1C] - ldr r1, =sub_810D164 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D10C - - thumb_func_start sub_810D164 -sub_810D164: @ 810D164 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - adds r0, 0x1 - movs r6, 0 - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _0810D1A4 - ldrh r2, [r5, 0x20] - ldrh r4, [r5, 0x24] - subs r0, r2, r4 - strh r0, [r5, 0x32] - ldrh r1, [r5, 0x22] - ldrh r3, [r5, 0x26] - subs r0, r1, r3 - strh r0, [r5, 0x36] - movs r0, 0x8 - strh r0, [r5, 0x2E] - adds r2, r4 - strh r2, [r5, 0x20] - adds r1, r3 - strh r1, [r5, 0x22] - strh r6, [r5, 0x26] - strh r6, [r5, 0x24] - ldr r0, =sub_80A6EEC - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_0810D1A4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D164 - - thumb_func_start sub_810D1B4 -sub_810D1B4: @ 810D1B4 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - ldr r2, =gBattleAnimTarget - eors r0, r1 - ldrb r1, [r2] - cmp r0, r1 - bne _0810D1E0 - ldrb r0, [r2] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0810D1E0 - ldr r1, =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_0810D1E0: - adds r0, r6, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810D1FE - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_0810D1FE: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x6] - movs r5, 0 - strh r0, [r6, 0x2E] - ldrh r0, [r6, 0x20] - strh r0, [r6, 0x30] - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrh r0, [r6, 0x22] - strh r0, [r6, 0x34] - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl InitAnimLinearTranslation - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x3A] - strh r5, [r6, 0x3C] - ldr r0, =sub_810D240 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D1B4 - - thumb_func_start sub_810D240 -sub_810D240: @ 810D240 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _0810D26C - ldrh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r0, r2 - strh r0, [r4, 0x3C] - b _0810D272 -_0810D26C: - adds r0, r4, 0 - bl DestroyAnimSprite -_0810D272: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810D240 - - thumb_func_start sub_810D278 -sub_810D278: @ 810D278 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 - str r0, [r4, 0x1C] - ldr r1, =sub_810D2B0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D278 - - thumb_func_start sub_810D2B0 -sub_810D2B0: @ 810D2B0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl StartSpriteAffineAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r0, =sub_80A64B0 - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D2B0 - - thumb_func_start sub_810D2E4 -sub_810D2E4: @ 810D2E4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, =sub_810D308 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D2E4 - - thumb_func_start sub_810D308 -sub_810D308: @ 810D308 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - subs r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0810D34C - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, =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, =sub_80A6EEC - str r0, [r5, 0x1C] - ldr r1, =sub_810D360 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_0810D34C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D308 - - thumb_func_start sub_810D360 -sub_810D360: @ 810D360 - push {lr} - movs r1, 0xF - strh r1, [r0, 0x2E] - ldr r1, =sub_80A64B0 - str r1, [r0, 0x1C] - ldr r1, =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D360 - - thumb_func_start sub_810D37C -sub_810D37C: @ 810D37C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0810D3A8 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0810D404 - .pool -_0810D3A8: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _0810D3F6 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0810D3F6: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _0810D404 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810D404: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810D37C - - thumb_func_start sub_810D40C -sub_810D40C: @ 810D40C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810D428 - ldr r4, =gBattleAnimAttacker - b _0810D42A - .pool -_0810D428: - ldr r4, =gBattleAnimTarget -_0810D42A: - 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 r1, =gBattleAnimArgs - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r5, 0x20] - ldrh r0, [r1, 0x4] - ldrh r3, [r5, 0x22] - adds r0, r3 - strh r0, [r5, 0x22] - strh r2, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x32] - strh r2, [r5, 0x34] - ldr r0, =sub_810D47C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D40C - - thumb_func_start sub_810D47C -sub_810D47C: @ 810D47C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - cmp r2, 0 - beq _0810D48E - cmp r2, 0x1 - beq _0810D4B2 - b _0810D4EC -_0810D48E: - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _0810D4EC - movs r2, 0x32 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0810D4AA - adds r0, r1, 0 - bl DestroyAnimSprite - b _0810D4EC -_0810D4AA: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _0810D4EC -_0810D4B2: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810D4DA - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r0, [r1, 0x34] - adds r0, 0x1 - strh r0, [r1, 0x34] - ands r0, r2 - lsls r0, 16 - cmp r0, 0 - beq _0810D4D6 - movs r0, 0x2 - b _0810D4D8 -_0810D4D6: - ldr r0, =0x0000fffe -_0810D4D8: - strh r0, [r1, 0x24] -_0810D4DA: - ldrh r0, [r1, 0x32] - subs r0, 0x1 - strh r0, [r1, 0x32] - lsls r0, 16 - cmp r0, 0 - bne _0810D4EC - adds r0, r1, 0 - bl DestroyAnimSprite -_0810D4EC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D47C - - thumb_func_start sub_810D4F4 -sub_810D4F4: @ 810D4F4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0810D520 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x4] - adds r0, r2 - b _0810D532 - .pool -_0810D520: - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 -_0810D532: - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - strh r0, [r5, 0x22] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldr r3, =gBattleAnimArgs - movs r4, 0x2 - ldrsh r0, [r3, r4] - lsls r0, 4 - adds r1, r0 - ldr r4, =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r1, 0 - movs r0, 0 - strh r0, [r5, 0x2E] - movs r2, 0x2 - ldrsh r0, [r3, r2] - cmp r0, 0x1 - beq _0810D5A0 - cmp r0, 0x1 - bgt _0810D58C - cmp r0, 0 - beq _0810D596 - b _0810D5C6 - .pool -_0810D58C: - cmp r0, 0x2 - beq _0810D5B0 - cmp r0, 0x3 - beq _0810D5C0 - b _0810D5C6 -_0810D596: - ldr r0, =0x0000fffd - b _0810D5C0 - .pool -_0810D5A0: - movs r0, 0x3 - strh r0, [r5, 0x3A] - ldr r0, =0x0000fffd - strh r0, [r5, 0x3C] - b _0810D5CE - .pool -_0810D5B0: - ldr r0, =0x0000fffd - strh r0, [r5, 0x3A] - movs r0, 0x3 - strh r0, [r5, 0x3C] - b _0810D5CE - .pool -_0810D5C0: - strh r0, [r5, 0x3A] - strh r0, [r5, 0x3C] - b _0810D5CE -_0810D5C6: - adds r0, r5, 0 - bl DestroyAnimSprite - b _0810D5D2 -_0810D5CE: - ldr r0, =sub_810D5DC - str r0, [r5, 0x1C] -_0810D5D2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D4F4 - - thumb_func_start sub_810D5DC -sub_810D5DC: @ 810D5DC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x3A] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0x3C] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _0810D604 - adds r0, r1, 0 - bl DestroyAnimSprite -_0810D604: - pop {r0} - bx r0 - thumb_func_end sub_810D5DC - - thumb_func_start sub_810D608 -sub_810D608: @ 810D608 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810D664 - ldr r4, =gBattlerAttacker - 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] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - ldr r0, =gBattleAnimTarget - b _0810D680 - .pool -_0810D664: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - ldr r0, =gBattleAnimAttacker -_0810D680: - ldrb r0, [r0] - strh r0, [r5, 0x3C] - movs r0, 0 - strh r0, [r5, 0x2E] - movs r0, 0xC - strh r0, [r5, 0x30] - movs r0, 0x8 - strh r0, [r5, 0x32] - ldr r0, =sub_810D6A8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D608 - - thumb_func_start sub_810D6A8 -sub_810D6A8: @ 810D6A8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB4 - bne _0810D704 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A6F98 - str r0, [r4, 0x1C] -_0810D704: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D6A8 - - thumb_func_start sub_810D714 -sub_810D714: @ 810D714 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x20] - movs r2, 0x78 - strh r2, [r5, 0x22] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - adds r0, 0x36 - adds r1, r5, 0 - adds r1, 0x38 - lsls r2, 8 - bl sub_80A8048 - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x3A] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x4 - ldrsh r0, [r4, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, =sub_810D770 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D714 - - thumb_func_start sub_810D770 -sub_810D770: @ 810D770 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r1, 0x2E - ldrsh r0, [r7, r1] - cmp r0, 0 - beq _0810D7C2 - movs r2, 0x36 - ldrsh r0, [r7, r2] - movs r2, 0x38 - ldrsh r1, [r7, r2] - bl sub_80A8050 - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r7, r1] - subs r4, r0 - adds r0, r7, 0 - adds r0, 0x36 - adds r1, r7, 0 - adds r1, 0x38 - adds r2, r4, 0 - bl sub_80A8048 - asrs r4, 8 - strh r4, [r7, 0x22] - lsls r4, 16 - asrs r4, 16 - movs r0, 0x8 - negs r0, r0 - cmp r4, r0 - bge _0810D7BA - adds r0, r7, 0 - bl DestroyAnimSprite - b _0810D818 -_0810D7BA: - ldrh r0, [r7, 0x2E] - subs r0, 0x1 - strh r0, [r7, 0x2E] - b _0810D818 -_0810D7C2: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r2, =gBattleAnimTarget - mov r8, r2 - ldrb r0, [r2] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - subs r4, r6 - strh r4, [r7, 0x2E] - lsrs r0, 24 - subs r0, r5 - strh r0, [r7, 0x30] - ldrh r0, [r7, 0x20] - lsls r0, 4 - strh r0, [r7, 0x32] - ldrh r0, [r7, 0x22] - lsls r0, 4 - strh r0, [r7, 0x34] - ldr r0, =sub_810D830 - str r0, [r7, 0x1C] -_0810D818: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D770 - - thumb_func_start sub_810D830 -sub_810D830: @ 810D830 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x34] - adds r1, r3 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r3, r1, 20 - strh r3, [r2, 0x22] - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _0810D86A - adds r1, r3, 0 - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _0810D86A - cmp r1, 0x78 - ble _0810D870 -_0810D86A: - adds r0, r2, 0 - bl DestroyAnimSprite -_0810D870: - pop {r0} - bx r0 - thumb_func_end sub_810D830 - - thumb_func_start sub_810D874 -sub_810D874: @ 810D874 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810D8B8 - ldr r4, =gBattlerAttacker - 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] - ldr r0, =gBattleAnimTarget - ldrb r4, [r0] - ldr r0, =gBattleAnimAttacker - b _0810D8BE - .pool -_0810D8B8: - ldr r0, =gBattleAnimAttacker - ldrb r4, [r0] - ldr r0, =gBattleAnimTarget -_0810D8BE: - ldrb r0, [r0] - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0810D8F8 - ldrb r2, [r5, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - b _0810D912 - .pool -_0810D8F8: - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810D918 - ldrb r2, [r5, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 -_0810D912: - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x3] -_0810D918: - movs r0, 0x10 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - adds r0, r4, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - adds r0, r4, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A6F98 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D874 - - thumb_func_start sub_810D960 -sub_810D960: @ 810D960 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _0810D976 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810D976: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810D960 - - thumb_func_start sub_810D984 -sub_810D984: @ 810D984 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimTarget - 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] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1] - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x34] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x36] - ldr r0, =gAnimMoveTurn - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810D9CE - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0810D9CE: - movs r0, 0x1 - ands r6, r0 - cmp r6, 0 - beq _0810D9E2 - ldrh r0, [r5, 0x32] - negs r0, r0 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] -_0810D9E2: - ldrh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x32] - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x34] - strh r0, [r5, 0x26] - ldr r0, =sub_810D960 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810D984 - - thumb_func_start sub_810DA10 -sub_810DA10: @ 810DA10 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810DA2C - adds r0, r4, 0 - movs r1, 0 - bl sub_80A69CC - b _0810DA34 - .pool -_0810DA2C: - adds r0, r4, 0 - movs r1, 0 - bl sub_80A6980 -_0810DA34: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0810DA48 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - b _0810DA5E -_0810DA48: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810DA5E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_0810DA5E: - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DA10 - - thumb_func_start sub_810DA7C -sub_810DA7C: @ 810DA7C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0810DAB6 - ldrh r0, [r4, 0x30] - adds r0, 0x28 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x2 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _0810DAB6 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810DAB6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810DA7C - - thumb_func_start sub_810DABC -sub_810DABC: @ 810DABC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0810DAF4 - cmp r0, 0x1 - bgt _0810DB0E - cmp r0, 0 - bne _0810DB0E - movs r0, 0 - bl sub_80A6DAC - ldr r0, =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x18] - b _0810DB06 - .pool -_0810DAF4: - ldrh r0, [r4, 0x18] - subs r0, 0x1 - strh r0, [r4, 0x18] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0810DB1A -_0810DB06: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0810DB1A -_0810DB0E: - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r1, [r4, 0x1A] - adds r0, r1 - strh r0, [r4, 0x1A] -_0810DB1A: - movs r2, 0xB0 - lsls r2, 4 - adds r0, r2, 0 - ldrh r1, [r4, 0x1C] - adds r0, r1 - strh r0, [r4, 0x1C] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810DB50 - ldr r1, =gBattle_BG3_X - ldrh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - adds r7, r1, 0 - b _0810DB60 - .pool -_0810DB50: - ldr r2, =gBattle_BG3_X - ldrh r1, [r4, 0x1A] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - adds r7, r2, 0 -_0810DB60: - ldr r3, =gBattle_BG3_Y - ldrh r2, [r4, 0x1C] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r3] - adds r0, r1 - strh r0, [r3] - movs r0, 0xFF - ldrb r1, [r4, 0x1A] - movs r5, 0 - strh r1, [r4, 0x1A] - ands r0, r2 - strh r0, [r4, 0x1C] - ldr r0, =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0810DB98 - strh r5, [r7] - strh r5, [r3] - movs r0, 0x1 - bl sub_80A6DAC - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0810DB98: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DABC - - .align 2, 0 diff --git a/asm/fire.s b/asm/fire.s index e7ca3072b..cd0339b9b 100644 --- a/asm/fire.s +++ b/asm/fire.s @@ -347,7 +347,7 @@ sub_810916C: @ 810916C strh r1, [r0, 0x32] movs r1, 0x50 strh r1, [r0, 0x36] - ldr r1, =sub_80A6EEC + ldr r1, =StartAnimLinearTranslation str r1, [r0, 0x1C] ldr r1, =DestroyAnimSprite bl StoreSpriteCallbackInData6 @@ -421,7 +421,7 @@ sub_810921C: @ 810921C push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] movs r1, 0 @@ -613,7 +613,7 @@ sub_81093A4: @ 81093A4 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x30] @@ -625,7 +625,7 @@ sub_81093A4: @ 81093A4 movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] ldr r1, =sub_81093E4 adds r0, r4, 0 @@ -1564,7 +1564,7 @@ _08109B12: _08109B18: adds r0, r5, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r4, =gBattleAnimArgs ldrb r1, [r4, 0x4] adds r0, r5, 0 diff --git a/asm/flying.s b/asm/flying.s index 87ba79c91..b981b4306 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -5,42 +5,6 @@ .text - thumb_func_start sub_810DE2C -sub_810DE2C: @ 810DE2C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0810DE68 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810DE68: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810DE2C - thumb_func_start sub_810DE70 sub_810DE70: @ 810DE70 push {r4,lr} @@ -199,7 +163,7 @@ sub_810DFA8: @ 810DFA8 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -359,7 +323,7 @@ _0810E0FE: ldrh r3, [r5, 0x36] adds r0, r3 strh r0, [r5, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r5, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r5, 0 @@ -378,7 +342,7 @@ sub_810E13C: @ 810E13C push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] @@ -1613,7 +1577,7 @@ sub_810EAA0: @ 810EAA0 bne _0810EABC adds r0, r5, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos b _0810EAC4 .pool _0810EABC: @@ -1807,7 +1771,7 @@ sub_810EC34: @ 810EC34 _0810EC46: adds r0, r4, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0 bl GetAnimBattlerSpriteId ldr r2, =gSprites @@ -1927,7 +1891,7 @@ sub_810ED28: @ 810ED28 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x4] strh r0, [r4, 0x2E] diff --git a/asm/ghost.s b/asm/ghost.s index 8b16d94c5..5a0991468 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -10,7 +10,7 @@ sub_811160C: @ 811160C push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r4, 0x2E] @@ -2441,7 +2441,7 @@ sub_81129F0: @ 81129F0 push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -2525,7 +2525,7 @@ _08112A5E: bne _08112AC0 movs r0, 0x1E strh r0, [r3, 0x2E] - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r3, 0x1C] ldr r1, =sub_8112ACC adds r0, r3, 0 diff --git a/asm/ground.s b/asm/ground.s deleted file mode 100644 index c5f3d80b6..000000000 --- a/asm/ground.s +++ /dev/null @@ -1,1675 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8114994 -sub_8114994: @ 8114994 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =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, =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, =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80A68D4 - ldr r0, =sub_81149FC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114994 - - thumb_func_start sub_81149FC -sub_81149FC: @ 81149FC - push {r4,r5,lr} - adds r5, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _08114A50 - 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, =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_80A68D4 - ldr r0, =sub_8114A60 - str r0, [r5, 0x1C] -_08114A50: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81149FC - - thumb_func_start sub_8114A60 -sub_8114A60: @ 8114A60 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _08114A74 - adds r0, r4, 0 - bl DestroyAnimSprite -_08114A74: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8114A60 - - thumb_func_start sub_8114A7C -sub_8114A7C: @ 8114A7C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08114A9C - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08114A9C: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, =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, =sub_80A6EEC - str r0, [r6, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114A7C - - thumb_func_start sub_8114AF0 -sub_8114AF0: @ 8114AF0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80A69CC - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r7, r0, 24 - bl Random2 - movs r4, 0x1F - adds r5, r4, 0 - ands r5, r0 - bl Random2 - ands r4, r0 - adds r1, r5, 0 - cmp r1, 0x10 - ble _08114B38 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_08114B38: - lsls r0, r4, 16 - asrs r1, r0, 16 - cmp r1, 0x10 - ble _08114B48 - movs r0, 0x10 - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_08114B48: - ldr r0, =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, =sub_80A6EEC - str r0, [r6, 0x1C] - ldr r1, =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114AF0 - - thumb_func_start sub_8114B80 -sub_8114B80: @ 8114B80 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x1 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08114BF4 - ldr r4, =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 _08114BDA - movs r1, 0x1 -_08114BDA: - strh r1, [r5, 0x2E] - ldr r0, =sub_8114C10 - b _08114C02 - .pool -_08114BF4: - 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, =sub_8114C4C -_08114C02: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114B80 - - thumb_func_start sub_8114C10 -sub_8114C10: @ 8114C10 - 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 _08114C2E - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] -_08114C2E: - 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 _08114C46 - adds r0, r2, 0 - bl DestroyAnimSprite -_08114C46: - pop {r0} - bx r0 - thumb_func_end sub_8114C10 - - thumb_func_start sub_8114C4C -sub_8114C4C: @ 8114C4C - push {lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _08114C5E - cmp r1, 0x1 - beq _08114C74 - b _08114CB6 -_08114C5E: - ldrh r0, [r3, 0x26] - adds r0, 0x4 - strh r0, [r3, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _08114CB6 - strh r1, [r3, 0x26] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - b _08114CB6 -_08114C74: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _08114CB6 - 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 _08114CB6 - adds r0, r3, 0 - bl DestroyAnimSprite -_08114CB6: - pop {r0} - bx r0 - thumb_func_end sub_8114C4C - - thumb_func_start sub_8114CBC -sub_8114CBC: @ 8114CBC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r1, r0, r1 - ldr r0, =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _08114CE8 - ldr r0, =sub_8114CFC - b _08114CEA - .pool -_08114CE8: - ldr r0, =sub_8114EB4 -_08114CEA: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114CBC - - thumb_func_start sub_8114CFC -sub_8114CFC: @ 8114CFC - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _08114D16 - b _08114EAA -_08114D16: - lsls r0, 2 - ldr r1, =_08114D28 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08114D28: - .4byte _08114D3C - .4byte _08114DC4 - .4byte _08114DD4 - .4byte _08114E78 - .4byte _08114E8C -_08114D3C: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _08114D70 - ldr r0, =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, =gBattle_BG1_Y - b _08114D78 - .pool -_08114D70: - ldr r0, =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, =gBattle_BG2_Y -_08114D78: - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerYCoordWithElevation - 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 _08114D9A - movs r0, 0 - strh r0, [r4, 0x24] -_08114D9A: - ldr r2, =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 _08114E7E - .pool -_08114DC4: - ldrb r0, [r4, 0x1E] - movs r2, 0x24 - ldrsh r1, [r4, r2] - movs r3, 0x26 - ldrsh r2, [r4, r3] - bl sub_81150E0 - b _08114E7E -_08114DD4: - 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 _08114DF6 - movs r0, 0 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_08114DF6: - ldr r1, =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 _08114E20 - ldr r1, =gBattle_BG1_Y - b _08114E22 - .pool -_08114E20: - ldr r1, =gBattle_BG2_Y -_08114E22: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0x3F - ble _08114EAA - 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 _08114E4C - ldr r1, =gBattle_BG1_Y - b _08114E4E - .pool -_08114E4C: - ldr r1, =gBattle_BG2_Y -_08114E4E: - ldrh r0, [r4, 0x22] - subs r0, r2 - strh r0, [r1] - ldr r2, =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 _08114E7E - .pool -_08114E78: - ldr r1, =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_08114E7E: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08114EAA - .pool -_08114E8C: - adds r0, r2, 0 - bl DestroyAnimVisualTask - ldr r2, =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] -_08114EAA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114CFC - - thumb_func_start sub_8114EB4 -sub_8114EB4: @ 8114EB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, =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, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08114F00 - ldr r0, =gBattle_BG1_Y - b _08114F02 - .pool -_08114F00: - ldr r0, =gBattle_BG2_Y -_08114F02: - strh r4, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114EB4 - - thumb_func_start sub_8114F14 -sub_8114F14: @ 8114F14 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r1, r0, r1 - ldr r0, =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _08114F40 - ldr r0, =sub_8114F54 - b _08114F42 - .pool -_08114F40: - ldr r0, =sub_8114FD8 -_08114F42: - str r0, [r1] - ldr r1, [r1] - adds r0, r2, 0 - bl _call_via_r1 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8114F14 - - thumb_func_start sub_8114F54 -sub_8114F54: @ 8114F54 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _08114F78 - cmp r5, 0x1 - beq _08114FCC - b _08114FD2 - .pool -_08114F78: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r3, =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 _08114FD2 - .pool -_08114FCC: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_08114FD2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8114F54 - - thumb_func_start sub_8114FD8 -sub_8114FD8: @ 8114FD8 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _081150DA - lsls r0, 2 - ldr r1, =_08115004 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08115004: - .4byte _08115018 - .4byte _0811506C - .4byte _0811507A - .4byte _08115094 - .4byte _081150D4 -_08115018: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1E] - cmp r0, 0x1 - bne _08115044 - ldr r0, =gBattle_BG1_X - b _08115046 - .pool -_08115044: - ldr r0, =gBattle_BG2_X -_08115046: - ldrh r0, [r0] - strh r0, [r4, 0x20] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerYCoordWithElevation - 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 _081150C2 - .pool -_0811506C: - ldrb r0, [r4, 0x1E] - movs r1, 0x26 - ldrsh r2, [r4, r1] - movs r1, 0 - bl sub_81150E0 - b _081150C2 -_0811507A: - ldr r2, =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 _081150C2 - .pool -_08115094: - ldr r2, =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 _081150DA - ldr r1, =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_081150C2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _081150DA - .pool -_081150D4: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_081150DA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8114FD8 - - thumb_func_start sub_81150E0 -sub_81150E0: @ 81150E0 - 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 _08115104 - ldr r0, =gBattle_BG1_X - ldrh r3, [r0] - ldr r0, =0x04000014 - b _0811510A - .pool -_08115104: - ldr r0, =gBattle_BG2_X - ldrh r3, [r0] - ldr r0, =0x04000018 -_0811510A: - str r0, [sp] - lsls r0, r1, 16 - cmp r0, 0 - bge _08115114 - movs r1, 0 -_08115114: - lsls r2, r1, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - cmp r2, r0 - bge _08115140 - ldr r5, =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_08115126: - 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 _08115126 -_08115140: - lsls r1, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _0811516E - ldr r4, =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 -_08115158: - 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 _08115158 -_0811516E: - ldr r0, =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 - .pool - thumb_func_end sub_81150E0 - - thumb_func_start sub_81151A0 -sub_81151A0: @ 81151A0 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r7, r0, 0 - cmp r1, 0 - bne _081151BC - ldr r0, =gBattleAnimAttacker - b _081151BE - .pool -_081151BC: - ldr r0, =gBattleAnimTarget -_081151BE: - ldrb r4, [r0] - movs r6, 0x18 - adds r1, r7, 0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _081151DA - negs r0, r6 - lsls r0, 16 - lsrs r6, r0, 16 - movs r2, 0x4 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x4] -_081151DA: - 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 GetBattlerYCoordWithElevation - 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_80A68D4 - ldr r0, =sub_8115228 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81151A0 - - thumb_func_start sub_8115228 -sub_8115228: @ 8115228 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _0811523C - adds r0, r4, 0 - bl DestroyAnimSprite -_0811523C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8115228 - - thumb_func_start sub_8115244 -sub_8115244: @ 8115244 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08115260 - ldr r0, =gBattleAnimAttacker - b _08115262 - .pool -_08115260: - ldr r0, =gBattleAnimTarget -_08115262: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x0000fff0 - adds r0, r2 - ldr r4, =gBattleAnimArgs - movs r3, 0x2 - ldrsh r1, [r4, r3] - lsls r1, 5 - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - bl GetBattlerYCoordWithElevation - 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, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldr r0, =sub_80A64B0 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8115244 - - thumb_func_start sub_81152DC -sub_81152DC: @ 81152DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - ldr r0, =gBattleAnimArgs - ldrh r2, [r0, 0x2] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r6, r0, 0 - cmp r1, 0 - beq _08115308 - adds r0, r2, 0x3 - b _08115314 - .pool -_08115308: - ldr r0, =gAnimMovePower - ldrh r0, [r0] - movs r1, 0xA - bl __udivsi3 - adds r0, 0x3 -_08115314: - 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 _08115340 - cmp r0, 0x5 - bne _08115380 - ldr r0, =gBattle_BG3_X - ldrh r0, [r0] - strh r0, [r4, 0x22] - ldr r0, =sub_81153AC - b _0811539E - .pool -_08115340: - movs r0, 0 - strh r0, [r4, 0x22] - movs r5, 0 -_08115346: - lsls r0, r5, 24 - lsrs r0, 24 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08115370 - 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, =gBattlerSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - strh r0, [r1] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_08115370: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _08115346 - b _0811539C - .pool -_08115380: - ldrb r0, [r6] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - cmp r0, 0xFF - bne _08115398 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _081153A0 -_08115398: - movs r0, 0x1 - strh r0, [r4, 0x22] -_0811539C: - ldr r0, =sub_81154A4 -_0811539E: - str r0, [r4] -_081153A0: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81152DC - - thumb_func_start sub_81153AC -sub_81153AC: @ 81153AC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _08115430 - cmp r1, 0x1 - bgt _081153D4 - cmp r1, 0 - beq _081153DA - b _0811549C - .pool -_081153D4: - cmp r1, 0x2 - beq _08115490 - b _0811549C -_081153DA: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811549C - strh r1, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08115404 - ldr r1, =gBattle_BG3_X - ldrh r0, [r3, 0x26] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _0811540E - .pool -_08115404: - ldr r0, =gBattle_BG3_X - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x26] - subs r1, r2 - strh r1, [r0] -_0811540E: - 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 _0811549C - movs r0, 0 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x24] - subs r0, 0x1 - strh r0, [r3, 0x24] - b _08115484 - .pool -_08115430: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811549C - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - ands r1, r0 - cmp r1, 0 - bne _0811545C - ldr r1, =gBattle_BG3_X - ldrh r0, [r3, 0x24] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r1] - b _08115466 - .pool -_0811545C: - ldr r0, =gBattle_BG3_X - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x24] - subs r1, r2 - strh r1, [r0] -_08115466: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _0811549C - 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 _0811549C -_08115484: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _0811549C - .pool -_08115490: - ldr r1, =gBattle_BG3_X - ldrh r0, [r3, 0x22] - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0811549C: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81153AC - - thumb_func_start sub_81154A4 -sub_81154A4: @ 81154A4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _08115504 - cmp r5, 0x1 - bgt _081154CC - cmp r5, 0 - beq _081154D2 - b _0811557E - .pool -_081154CC: - cmp r5, 0x2 - beq _08115540 - b _0811557E -_081154D2: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811557E - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_8115588 - 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 _0811557E - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - b _08115538 -_08115504: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0811557E - strh r5, [r4, 0xA] - adds r0, r4, 0 - bl sub_8115588 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _0811557E - strh r5, [r4, 0xC] - ldrh r0, [r4, 0x24] - subs r0, 0x1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _0811557E -_08115538: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0811557E -_08115540: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r4, r7] - cmp r2, r0 - bge _08115578 - ldr r0, =gSprites - mov r12, r0 - adds r5, r4, 0 - adds r5, 0x8 - movs r6, 0 -_08115554: - 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 _08115554 -_08115578: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_0811557E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81154A4 - - thumb_func_start sub_8115588 -sub_8115588: @ 8115588 - 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 _081155B0 - 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 _081155C0 -_081155B0: - 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 -_081155C0: - movs r2, 0 - movs r7, 0x22 - ldrsh r0, [r3, r7] - cmp r2, r0 - bge _081155F4 - ldr r6, =gSprites - adds r5, r3, 0 - adds r5, 0x8 -_081155D0: - 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 _081155D0 -_081155F4: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8115588 - - thumb_func_start AnimTask_IsPowerOver99 -AnimTask_IsPowerOver99: @ 8115600 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, =gBattleAnimArgs - movs r2, 0 - ldr r0, =gAnimMovePower - ldrh r0, [r0] - cmp r0, 0x63 - bls _08115614 - movs r2, 0x1 -_08115614: - strh r2, [r3, 0x1E] - adds r0, r1, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_IsPowerOver99 - - thumb_func_start sub_8115628 -sub_8115628: @ 8115628 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, =gBattleAnimArgs - ldrh r1, [r2] - movs r0, 0x1 - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - beq _08115648 - ldr r0, =gBattleAnimTarget - b _0811564A - .pool -_08115648: - ldr r0, =gBattleAnimAttacker -_0811564A: - ldrb r0, [r0] - adds r5, r0, 0 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - ble _0811565A - movs r0, 0x2 - eors r5, r0 -_0811565A: - ldr r0, =sub_81156D0 - ldrb r1, [r6, 0x2] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =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, =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, =gBattle_BG3_X - ldrh r0, [r4, 0xA] - strh r0, [r2] - ldr r0, =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 - .pool - thumb_func_end sub_8115628 - - thumb_func_start sub_81156D0 -sub_81156D0: @ 81156D0 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, =gTasks - adds r2, r0, r1 - ldr r0, =gBattleAnimArgs - movs r4, 0xE - ldrsh r1, [r0, r4] - movs r4, 0xE - ldrsh r0, [r2, r4] - cmp r1, r0 - bne _08115710 - ldr r0, =gBattle_BG3_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG3_Y - strh r1, [r0] - adds r0, r3, 0 - bl DestroyTask - b _0811571C - .pool -_08115710: - ldr r1, =gBattle_BG3_X - ldrh r0, [r2, 0xA] - strh r0, [r1] - ldr r1, =gBattle_BG3_Y - ldrh r0, [r2, 0xC] - strh r0, [r1] -_0811571C: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81156D0 - - .align 2, 0 @@ -370,7 +370,7 @@ sub_810B8EC: @ 810B8EC push {r4,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimTarget ldrb r0, [r0] movs r1, 0x2 @@ -413,7 +413,7 @@ _0810B936: ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -513,7 +513,7 @@ sub_810BA24: @ 810BA24 sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] @@ -814,7 +814,7 @@ sub_810BC94: @ 810BC94 sub sp, 0x10 adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r1, =gBattleAnimArgs ldrh r0, [r1, 0x8] strh r0, [r5, 0x2E] @@ -1103,7 +1103,7 @@ sub_810BED0: @ 810BED0 bne _0810BEF4 adds r0, r5, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos b _0810BF32 .pool _0810BEF4: @@ -2762,7 +2762,7 @@ _0810CCA6: bl StartSpriteAffineAnim adds r0, r5, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r6, =gBattleAnimArgs ldrh r0, [r6, 0x8] strh r0, [r5, 0x2E] @@ -2796,7 +2796,7 @@ _0810CCCE: ldrh r0, [r6, 0xA] strh r0, [r5, 0x38] adds r0, r5, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_810CD1C str r0, [r5, 0x1C] pop {r4-r6} diff --git a/asm/normal.s b/asm/normal.s index b52477221..3ee1308c9 100644 --- a/asm/normal.s +++ b/asm/normal.s @@ -1584,7 +1584,7 @@ sub_8116388: @ 8116388 bne _081163AC adds r0, r5, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos b _081163B4 .pool _081163AC: @@ -1616,7 +1616,7 @@ sub_81163D0: @ 81163D0 bne _081163F4 adds r0, r5, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos b _081163FC .pool _081163F4: @@ -1690,7 +1690,7 @@ _08116474: bne _08116494 adds r0, r4, 0 movs r1, 0 - bl sub_80A69CC + bl InitAnimSpritePos b _0811649C .pool _08116494: @@ -1789,7 +1789,7 @@ sub_8116560: @ 8116560 bne _0811657C adds r0, r4, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos b _08116584 .pool _0811657C: @@ -1803,7 +1803,7 @@ _08116584: ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A64B0 + ldr r0, =WaitAnimForDuration str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -1824,7 +1824,7 @@ sub_81165A8: @ 81165A8 bne _081165CC adds r0, r5, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos b _081165D4 .pool _081165CC: diff --git a/asm/party_menu.s b/asm/party_menu.s index 231cb72d7..bbb36b109 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -1219,7 +1219,7 @@ sub_81B0A9C: @ 81B0A9C muls r0, r5 ldr r1, =gPlayerParty adds r0, r1 - ldr r6, =gUnknown_0203CEF8 + ldr r6, =gSelectedOrderFromParty bl sub_81B85AC lsls r0, 24 cmp r0, 0 @@ -9304,7 +9304,7 @@ sub_81B4E8C: @ 81B4E8C adds r0, r1 mov r8, r0 _081B4EC6: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r4, r5, r0 ldrb r0, [r4] cmp r0, 0 @@ -9418,7 +9418,7 @@ sub_81B4FA8: @ 81B4FA8 movs r4, 0 cmp r4, r5 bcs _081B502A - ldr r6, =gUnknown_0203CEF8 + ldr r6, =gSelectedOrderFromParty subs r2, r5, 0x1 adds r7, r6, 0 ldr r3, =gUnknown_0203CEC8 @@ -9476,7 +9476,7 @@ _081B502A: cmp r4, r5 bge _081B5078 _081B504E: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r1, r4, r0 ldrb r0, [r1] cmp r0, 0 @@ -15518,7 +15518,7 @@ sub_81B8518: @ 81B8518 thumb_func_start sub_81B8558 sub_81B8558: @ 81B8558 push {lr} - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty movs r1, 0 movs r2, 0x4 bl memset @@ -15655,7 +15655,7 @@ sub_81B865C: @ 81B865C lsls r0, 24 lsrs r2, r0, 24 adds r1, r2, 0 - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty adds r0, r2, r3 subs r0, 0x1 ldrb r0, [r0] @@ -15700,7 +15700,7 @@ _081B86C0: movs r5, 0 b _081B8750 _081B86CE: - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty adds r4, r3, r5 ldrb r0, [r4] movs r1, 0x64 @@ -15731,7 +15731,7 @@ _081B86CE: bcs _081B8748 movs r7, 0x64 _081B870E: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r5, r0, r4 ldrb r0, [r5] muls r0, r7 @@ -15787,7 +15787,7 @@ sub_81B8770: @ 81B8770 lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 - ldr r3, =gUnknown_0203CEF8 + ldr r3, =gSelectedOrderFromParty _081B877A: adds r0, r1, r3 ldrb r0, [r0] diff --git a/asm/poison.s b/asm/poison.s deleted file mode 100644 index 22f6c3971..000000000 --- a/asm/poison.s +++ /dev/null @@ -1,306 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_810DBAC -sub_810DBAC: @ 810DBAC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0810DBC2 - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAnim -_0810DBC2: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80A69CC - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r4, =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, =0x0000ffe2 - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80A68D4 - ldr r0, =sub_810DC10 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DBAC - - thumb_func_start sub_810DC10 -sub_810DC10: @ 810DC10 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _0810DC24 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810DC24: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810DC10 - - thumb_func_start sub_810DC2C -sub_810DC2C: @ 810DC2C - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810DC44 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_0810DC44: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A69CC - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - mov r6, sp - adds r6, 0x2 - movs r1, 0x1 - mov r2, sp - adds r3, r6, 0 - bl SetAverageBattlerPositions - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810DC72 - ldrh r0, [r5, 0x8] - negs r0, r0 - strh r0, [r5, 0x8] -_0810DC72: - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - mov r1, sp - ldrh r0, [r5, 0x8] - ldrh r1, [r1] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - ldrh r6, [r6] - adds r0, r6 - strh r0, [r4, 0x36] - ldr r0, =0x0000ffe2 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80A68D4 - ldr r0, =sub_810DCB4 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DC2C - - thumb_func_start sub_810DCB4 -sub_810DCB4: @ 810DCB4 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _0810DCC8 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810DCC8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810DCB4 - - thumb_func_start sub_810DCD0 -sub_810DCD0: @ 810DCD0 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r1, [r5] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_80A6E14 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0x38] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0x3A] - ldr r0, =sub_810DD24 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DCD0 - - thumb_func_start sub_810DD24 -sub_810DD24: @ 810DD24 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A656C - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - subs r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x3A] - subs r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0810DD4A - adds r0, r4, 0 - bl DestroyAnimSprite -_0810DD4A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810DD24 - - thumb_func_start sub_810DD50 -sub_810DD50: @ 810DD50 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl SetAverageBattlerPositions - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810DD7C - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_0810DD7C: - ldr r0, =gBattleAnimArgs - ldrh r2, [r0] - ldrh r1, [r4, 0x20] - adds r2, r1 - strh r2, [r4, 0x20] - ldrh r1, [r0, 0x2] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - ldrh r3, [r0, 0x8] - strh r3, [r4, 0x2E] - ldrh r0, [r0, 0x4] - adds r2, r0 - strh r2, [r4, 0x32] - adds r1, r3 - strh r1, [r4, 0x36] - ldr r0, =sub_80A6EEC - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DD50 - - thumb_func_start sub_810DDC4 -sub_810DDC4: @ 810DDC4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810DDE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A6980 - b _0810DE16 - .pool -_0810DDE0: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl SetAverageBattlerPositions - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810DE06 - ldrh r0, [r5] - negs r0, r0 - strh r0, [r5] -_0810DE06: - 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] -_0810DE16: - ldr r0, =sub_810DE2C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810DDC4 - - .align 2, 0 diff --git a/asm/psychic.s b/asm/psychic.s index 8cd95d95a..ef1915241 100644 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -514,7 +514,7 @@ _0810F5EE: bne _0810F608 adds r0, r4, 0 adds r1, r6, 0 - bl sub_80A69CC + bl InitAnimSpritePos b _0810F610 .pool _0810F608: @@ -1449,7 +1449,7 @@ _0810FD60: ldrh r0, [r5, 0x1C] strh r0, [r4, 0x38] adds r0, r4, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldrb r0, [r5, 0xC] movs r1, 0x3 ands r1, r0 diff --git a/asm/rock.s b/asm/rock.s deleted file mode 100644 index ed8147600..000000000 --- a/asm/rock.s +++ /dev/null @@ -1,1469 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81109F0 -sub_81109F0: @ 81109F0 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _08110A10 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl SetAverageBattlerPositions -_08110A10: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r4, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r0, 0xE - strh r0, [r5, 0x22] - ldrb r1, [r6, 0x2] - adds r0, r5, 0 - bl StartSpriteAnim - adds r0, r5, 0 - bl AnimateSprite - strh r4, [r5, 0x2E] - strh r4, [r5, 0x30] - movs r0, 0x4 - strh r0, [r5, 0x32] - movs r0, 0x10 - strh r0, [r5, 0x34] - ldr r0, =0x0000ffba - strh r0, [r5, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x38] - ldr r1, =sub_8110A70 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r1, =sub_80A6450 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81109F0 - - thumb_func_start sub_8110A70 -sub_8110A70: @ 8110A70 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x38] - ldrh r2, [r4, 0x20] - adds r0, r1, r2 - strh r0, [r4, 0x20] - movs r0, 0xC0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r0, 0x4 - strh r0, [r4, 0x32] - movs r0, 0x20 - strh r0, [r4, 0x34] - ldr r0, =0x0000ffe8 - strh r0, [r4, 0x36] - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, =sub_80A6450 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110A70 - - thumb_func_start sub_8110AB4 -sub_8110AB4: @ 8110AB4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0xA] - bl StartSpriteAnim - adds r0, r5, 0 - bl AnimateSprite - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08110AE4 - ldrh r0, [r5, 0x20] - ldrh r1, [r4] - subs r0, r1 - b _08110AEA - .pool -_08110AE4: - ldrh r0, [r4] - ldrh r1, [r5, 0x20] - adds r0, r1 -_08110AEA: - strh r0, [r5, 0x20] - ldr r3, =gBattleAnimArgs - ldrh r2, [r3, 0x2] - ldrh r0, [r5, 0x22] - adds r2, r0 - movs r4, 0 - strh r2, [r5, 0x22] - ldrh r0, [r3, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r1, [r3, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - strh r2, [r5, 0x34] - ldrh r0, [r3, 0x6] - adds r2, r0 - strh r2, [r5, 0x36] - adds r0, r5, 0 - bl sub_80A6E14 - strh r4, [r5, 0x34] - strh r4, [r5, 0x36] - ldr r0, =sub_80A656C - str r0, [r5, 0x1C] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110AB4 - - thumb_func_start sub_8110B38 -sub_8110B38: @ 8110B38 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08110B54 - adds r0, r4, 0 - movs r1, 0 - bl sub_80A69CC - b _08110B5C - .pool -_08110B54: - adds r0, r4, 0 - movs r1, 0 - bl sub_80A6980 -_08110B5C: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x34] - ldr r0, =sub_8110B80 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110B38 - - thumb_func_start sub_8110B80 -sub_8110B80: @ 8110B80 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08110BC6 - adds r0, r4, 0 - bl DestroyAnimSprite -_08110BC6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8110B80 - - thumb_func_start AnimTask_LoadSandstormBackground -AnimTask_LoadSandstormBackground: @ 8110BCC - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r1, =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, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _08110C10 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_08110C10: - ldr r0, =gBattle_BG1_X - strh r5, [r0] - ldr r4, =gBattle_BG1_Y - strh r5, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80A6B30 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, =gUnknown_08D8D58C - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80A6CC0 - ldr r1, =gUnknown_08D8D410 - mov r0, sp - movs r2, 0 - bl sub_80A6D60 - ldr r0, =gBattleAnimSpritePalette_261 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08110C6E - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08110C6E - movs r5, 0x1 -_08110C6E: - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - strh r5, [r1, 0x8] - ldr r0, =sub_8110CB0 - str r0, [r1] - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_LoadSandstormBackground - - thumb_func_start sub_8110CB0 -sub_8110CB0: @ 8110CB0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0 - bne _08110CE4 - ldr r1, =gBattle_BG1_X - ldr r3, =0x0000fffa - adds r0, r3, 0 - ldrh r3, [r1] - adds r0, r3 - b _08110CEA - .pool -_08110CE4: - ldr r1, =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 -_08110CEA: - strh r0, [r1] - ldr r1, =gBattle_BG1_Y - ldr r3, =0x0000ffff - adds r0, r3, 0 - ldrh r3, [r1] - adds r0, r3 - strh r0, [r1] - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - movs r3, 0x20 - ldrsh r0, [r0, r3] - adds r4, r1, 0 - cmp r0, 0x4 - bls _08110D0C - b _08110E3A -_08110D0C: - lsls r0, 2 - ldr r1, =_08110D28 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08110D28: - .4byte _08110D3C - .4byte _08110D7E - .4byte _08110D98 - .4byte _08110DDA - .4byte _08110DFC -_08110D3C: - adds r0, r4, r5 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _08110E3A - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - 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, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _08110E3A - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _08110E3A -_08110D7E: - adds r0, r4, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x65 - bne _08110E3A - movs r0, 0x7 - strh r0, [r1, 0x1E] - b _08110DF0 -_08110D98: - adds r0, r4, r5 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _08110E3A - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - 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, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08110E3A - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _08110E3A -_08110DDA: - mov r0, sp - bl sub_80A6B30 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_80A6C68 - ldr r0, =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 -_08110DF0: - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _08110E3A - .pool -_08110DFC: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _08110E10 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_08110E10: - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08110E3A: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110CB0 - - thumb_func_start sub_8110E4C -sub_8110E4C: @ 8110E4C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08110EC8 - ldr r4, =gBattleAnimArgs - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08110E98 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08110E98 - movs r0, 0x98 - lsls r0, 1 - strh r0, [r5, 0x20] - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] - movs r0, 0x1 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - subs r0, 0x40 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - b _08110E9C - .pool -_08110E98: - ldr r0, =0x0000ffc0 - strh r0, [r5, 0x20] -_08110E9C: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x22] - ldr r1, =gUnknown_08596BC0 - adds r0, r5, 0 - bl SetSubspriteTables - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _08110F24 - .pool -_08110EC8: - ldrh r1, [r5, 0x30] - ldrh r3, [r5, 0x34] - adds r1, r3 - ldrh r2, [r5, 0x32] - ldrh r0, [r5, 0x36] - adds r2, r0 - lsls r0, r1, 16 - asrs r0, 24 - ldrh r3, [r5, 0x24] - adds r0, r3 - strh r0, [r5, 0x24] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r3, [r5, 0x26] - adds r0, r3 - strh r0, [r5, 0x26] - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x34] - ands r2, r0 - strh r2, [r5, 0x36] - movs r1, 0x38 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08110F0E - movs r2, 0x20 - ldrsh r0, [r5, r2] - movs r3, 0x24 - ldrsh r1, [r5, r3] - adds r0, r1 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - ble _08110F24 - b _08110F20 -_08110F0E: - movs r1, 0x20 - ldrsh r0, [r5, r1] - movs r2, 0x24 - ldrsh r1, [r5, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _08110F24 -_08110F20: - ldr r0, =DestroyAnimSprite - str r0, [r5, 0x1C] -_08110F24: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110E4C - - thumb_func_start sub_8110F30 -sub_8110F30: @ 8110F30 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x8] - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl sub_80A69CC - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0x4] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x36] - ldr r0, =sub_80A6EEC - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110F30 - - thumb_func_start sub_8110F74 -sub_8110F74: @ 8110F74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r6, r1, r0 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r1, 0xC0 - lsls r1, 13 - adds r0, r1 - lsrs r7, r0, 16 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r2, 0xC0 - lsls r2, 13 - adds r0, r2 - lsrs r0, 16 - mov r8, r0 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _08110FE4 - mov r8, r7 -_08110FE4: - bl sub_811135C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bne _08111000 - movs r0, 0x20 - b _08111006 - .pool -_08111000: - lsls r1, r5, 3 - movs r0, 0x30 - subs r0, r1 -_08111006: - strh r0, [r6, 0x18] - movs r4, 0 - strh r4, [r6, 0x8] - strh r4, [r6, 0x1E] - strh r4, [r6, 0x1A] - movs r0, 0x1 - strh r0, [r6, 0x20] - movs r1, 0x18 - ldrsh r0, [r6, r1] - cmp r0, 0 - bge _0811101E - adds r0, 0x7 -_0811101E: - asrs r0, 3 - subs r0, 0x1 - strh r0, [r6, 0x1C] - mov r2, r9 - lsls r0, r2, 3 - strh r0, [r6, 0xC] - lsls r0, r7, 3 - strh r0, [r6, 0xE] - mov r1, r10 - subs r0, r1, r2 - lsls r0, 3 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x10] - mov r1, r8 - subs r0, r1, r7 - lsls r0, 3 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x12] - strh r4, [r6, 0x14] - strh r4, [r6, 0x16] - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r4, r0, 0 - lsls r4, 24 - asrs r4, 8 - lsrs r4, 16 - movs r0, 0x3F - bl BattleAnimAdjustPanning - lsls r0, 24 - strh r4, [r6, 0x22] - asrs r0, 24 - lsls r4, 16 - asrs r4, 16 - subs r0, r4 - movs r2, 0x18 - ldrsh r1, [r6, r2] - bl __divsi3 - strh r0, [r6, 0x24] - strh r5, [r6, 0xA] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - ldr r0, =sub_81110A4 - str r0, [r6] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8110F74 - - thumb_func_start sub_81110A4 -sub_81110A4: @ 81110A4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _081110BE - b _0811120C -_081110BE: - lsls r0, 2 - ldr r1, =_081110D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081110D0: - .4byte _081110E4 - .4byte _08111148 - .4byte _08111150 - .4byte _081111AC - .4byte _081111FE -_081110E4: - ldrh r2, [r4, 0x14] - ldrh r0, [r4, 0x10] - subs r2, r0 - strh r2, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - ldr r3, =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - lsls r2, 16 - asrs r2, 19 - strh r2, [r0, 0x24] - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08111134 - movs r0, 0x14 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08111134: - ldrh r1, [r4, 0x22] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xA2 - bl PlaySE12WithPanning - b _0811120C - .pool -_08111148: - ldrh r0, [r4, 0x1E] - subs r0, 0x1 - strh r0, [r4, 0x1E] - b _081111F0 -_08111150: - ldrh r0, [r4, 0x1A] - subs r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - beq _08111170 - ldrh r0, [r4, 0x10] - ldrh r2, [r4, 0x14] - adds r0, r2 - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - b _0811117A -_08111170: - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811117A: - ldr r2, =gSprites - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x24] - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 19 - strh r0, [r1, 0x26] - b _0811120C - .pool -_081111AC: - ldrh r0, [r4, 0x10] - ldrh r2, [r4, 0xC] - adds r0, r2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0xE] - adds r0, r1 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0x1A] - adds r0, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1C - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _081111EA - movs r0, 0 - strh r0, [r4, 0x1A] - adds r0, r4, 0 - bl sub_8111214 - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x22] - adds r1, r0 - strh r1, [r4, 0x22] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xAF - bl PlaySE12WithPanning -_081111EA: - ldrh r0, [r4, 0x18] - subs r0, 0x1 - strh r0, [r4, 0x18] -_081111F0: - lsls r0, 16 - cmp r0, 0 - bne _0811120C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0811120C -_081111FE: - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0811120C - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0811120C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81110A4 - - thumb_func_start sub_8111214 -sub_8111214: @ 8111214 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bhi _08111304 - lsls r0, 2 - ldr r1, =_08111234 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08111234: - .4byte _08111248 - .4byte _08111254 - .4byte _08111254 - .4byte _08111260 - .4byte _0811126C -_08111248: - ldr r3, =gUnknown_08596C28 - movs r5, 0 - b _08111270 - .pool -_08111254: - ldr r3, =gUnknown_08596C40 - movs r5, 0x50 - b _08111270 - .pool -_08111260: - ldr r3, =gUnknown_08596C40 - movs r5, 0x40 - b _08111270 - .pool -_0811126C: - ldr r3, =gUnknown_08596C40 - movs r5, 0x30 -_08111270: - ldrh r1, [r4, 0xC] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r1, 16 - ldrh r2, [r4, 0xE] - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - movs r6, 0x20 - ldrsh r0, [r4, r6] - lsls r0, 2 - adds r1, r0 - lsls r1, 16 - lsrs r6, r1, 16 - asrs r1, 16 - lsrs r7, r2, 16 - asrs r2, 16 - adds r0, r3, 0 - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _081112FC - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0x12 - strh r1, [r0, 0x2E] - movs r2, 0x20 - ldrsh r1, [r4, r2] - lsls r2, r1, 2 - adds r2, r1 - lsls r2, 2 - adds r2, r6, r2 - movs r6, 0xA - ldrsh r3, [r4, r6] - lsls r1, r3, 1 - adds r1, r3 - adds r2, r1 - strh r2, [r0, 0x32] - strh r7, [r0, 0x36] - movs r1, 0xA - ldrsh r2, [r4, r1] - lsls r2, 1 - movs r3, 0x10 - negs r3, r3 - adds r1, r3, 0 - subs r1, r2 - strh r1, [r0, 0x38] - ldrh r3, [r0, 0x4] - lsls r2, r3, 22 - lsrs r2, 22 - adds r2, r5 - ldr r5, =0x000003ff - adds r1, r5, 0 - ands r2, r1 - ldr r1, =0xfffffc00 - ands r1, r3 - orrs r1, r2 - strh r1, [r0, 0x4] - bl sub_80A68D4 - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] -_081112FC: - movs r6, 0x20 - ldrsh r0, [r4, r6] - negs r0, r0 - strh r0, [r4, 0x20] -_08111304: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8111214 - - thumb_func_start sub_811131C -sub_811131C: @ 811131C - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _0811134E - ldr r0, =sub_81110A4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _08111348 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1E] - subs r0, 0x1 - strh r0, [r1, 0x1E] -_08111348: - adds r0, r4, 0 - bl DestroySprite -_0811134E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_811131C - - thumb_func_start sub_811135C -sub_811135C: @ 811135C - push {lr} - ldr r0, =gAnimDisableStructPtr - ldr r0, [r0] - ldrb r1, [r0, 0x11] - lsrs r0, r1, 4 - lsls r1, 28 - lsrs r1, 28 - subs r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xFF - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x4 - bls _0811137E - movs r1, 0x1 -_0811137E: - adds r0, r1, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_811135C - - thumb_func_start sub_8111388 -sub_8111388: @ 8111388 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x8] - bl StartSpriteAnim - ldrh r0, [r5] - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - ldrh r1, [r5, 0x4] - subs r0, r1 - strh r0, [r4, 0x34] - movs r0, 0x3 - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, =sub_81113C8 - str r0, [r4, 0x1C] - adds r4, 0x3E - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8111388 - - thumb_func_start sub_81113C8 -sub_81113C8: @ 81113C8 - push {lr} - adds r2, r0, 0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldrh r1, [r2, 0x34] - movs r3, 0x34 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _08111400 - ldrh r3, [r2, 0x32] - adds r0, r1, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - adds r1, r0 - strh r1, [r2, 0x34] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r1, 16 - cmp r1, 0 - ble _08111412 - movs r0, 0 - strh r0, [r2, 0x34] - b _08111412 -_08111400: - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _08111412 - adds r0, r2, 0 - bl DestroyAnimSprite -_08111412: - pop {r0} - bx r0 - thumb_func_end sub_81113C8 - - thumb_func_start sub_8111418 -sub_8111418: @ 8111418 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08111434 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08111434: - adds r0, r4, 0 - bl TranslateAnimSpriteToTargetMonLocation - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8111418 - - thumb_func_start sub_8111444 -sub_8111444: @ 8111444 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBattleAnimArgs - ldrh r3, [r2] - ldrh r5, [r4, 0x20] - adds r1, r3, r5 - strh r1, [r4, 0x20] - ldrh r1, [r2, 0x2] - adds r0, r1 - strh r0, [r4, 0x22] - strh r3, [r4, 0x30] - strh r1, [r4, 0x32] - ldrh r0, [r2, 0x4] - strh r0, [r4, 0x38] - ldrb r1, [r2, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, =sub_811149C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8111444 - - thumb_func_start sub_811149C -sub_811149C: @ 811149C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - ldrh r1, [r4, 0x24] - adds r1, r0 - strh r1, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - subs r1, r0 - strh r1, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x8C - ble _081114E6 - adds r0, r4, 0 - bl DestroyAnimSprite -_081114E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811149C - - thumb_func_start AnimTask_GetSeismicTossDamageLevel -AnimTask_GetSeismicTossDamageLevel: @ 81114EC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, =gAnimMoveDmg - ldr r0, [r2] - cmp r0, 0x20 - bgt _08111500 - ldr r1, =gBattleAnimArgs - movs r0, 0 - strh r0, [r1, 0xE] -_08111500: - ldr r2, [r2] - adds r0, r2, 0 - subs r0, 0x21 - cmp r0, 0x20 - bhi _08111510 - ldr r1, =gBattleAnimArgs - movs r0, 0x1 - strh r0, [r1, 0xE] -_08111510: - cmp r2, 0x41 - ble _0811151A - ldr r1, =gBattleAnimArgs - movs r0, 0x2 - strh r0, [r1, 0xE] -_0811151A: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_GetSeismicTossDamageLevel - - thumb_func_start sub_811152C -sub_811152C: @ 811152C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0811154E - movs r0, 0 - bl sub_80A6DAC - movs r0, 0xC8 - strh r0, [r5, 0xA] -_0811154E: - ldr r4, =gBattle_BG3_Y - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - ldrh r1, [r4] - adds r1, r0 - strh r1, [r4] - ldrh r0, [r5, 0xA] - subs r0, 0x3 - strh r0, [r5, 0xA] - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x78 - bne _0811157A - movs r0, 0x1 - bl sub_80A6DAC - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0811157A: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_811152C - - thumb_func_start sub_8111590 -sub_8111590: @ 8111590 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081115BC - movs r0, 0 - bl sub_80A6DAC - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldr r0, =gBattle_BG3_Y - ldrh r0, [r0] - strh r0, [r4, 0xC] -_081115BC: - ldrh r0, [r4, 0xA] - adds r0, 0x50 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0xA] - ldr r6, =gBattle_BG3_Y - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r0, 0x4 - bl Cos - ldrh r4, [r4, 0xC] - adds r0, r4 - strh r0, [r6] - ldr r0, =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - ldr r0, =0x00000fff - cmp r1, r0 - bne _081115F4 - movs r0, 0 - strh r0, [r6] - movs r0, 0x1 - bl sub_80A6DAC - adds r0, r5, 0 - bl DestroyAnimVisualTask -_081115F4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8111590 - - .align 2, 0 diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 6103785da..a52c2bc88 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -10149,7 +10149,7 @@ sub_801AAD4: @ 801AAD4 ldr r6, =gPlayerParty ldr r5, =gEnemyParty _0801AAE4: - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty adds r0, r4, r0 ldrb r0, [r0] subs r0, 0x1 @@ -10504,7 +10504,7 @@ _0801AE54: movs r1, 0 movs r2, 0x20 bl memset - ldr r0, =gUnknown_0203CEF8 + ldr r0, =gSelectedOrderFromParty ldrb r1, [r0] ldrb r0, [r0, 0x1] cmn r1, r0 diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s deleted file mode 100644 index 1202473ee..000000000 --- a/asm/script_pokemon_util_80F87D8.s +++ /dev/null @@ -1,1667 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80F87D8 -sub_80F87D8: @ 80F87D8 - push {r4,lr} - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, =gContestMons - ldrb r3, [r1, 0x15] - ldr r4, =0x000013bc - adds r0, r2, r4 - strh r3, [r0] - adds r0, r1, 0 - adds r0, 0x55 - ldrb r3, [r0] - adds r4, 0x2 - adds r0, r2, r4 - strh r3, [r0] - adds r1, 0x95 - ldrb r0, [r1] - movs r1, 0x9E - lsls r1, 5 - adds r2, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F87D8 - - thumb_func_start sub_80F8814 -sub_80F8814: @ 80F8814 - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r0, 0x1 - beq _080F883A - cmp r0, 0x1 - bgt _080F8830 - cmp r0, 0 - beq _080F8836 - b _080F8842 - .pool -_080F8830: - cmp r1, 0x2 - beq _080F883E - b _080F8842 -_080F8836: - movs r1, 0x3 - b _080F8844 -_080F883A: - movs r1, 0x4 - b _080F8844 -_080F883E: - movs r1, 0x5 - b _080F8844 -_080F8842: - movs r1, 0x64 -_080F8844: - ldr r0, =gSpecialVar_0x8004 - strh r1, [r0] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8814 - - thumb_func_start sub_80F8850 -sub_80F8850: @ 80F8850 - push {lr} - bl sub_80F8264 - bl sub_80F8290 - bl sub_80F8438 - pop {r0} - bx r0 - thumb_func_end sub_80F8850 - - thumb_func_start sub_80F8864 -sub_80F8864: @ 80F8864 - push {lr} - ldr r0, =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080F88A4 - lsls r0, 2 - ldr r1, =_080F8880 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F8880: - .4byte _080F8894 - .4byte _080F8898 - .4byte _080F889C - .4byte _080F88A0 - .4byte _080F88A4 -_080F8894: - movs r1, 0x8 - b _080F88A6 -_080F8898: - movs r1, 0x9 - b _080F88A6 -_080F889C: - movs r1, 0xA - b _080F88A6 -_080F88A0: - movs r1, 0xB - b _080F88A6 -_080F88A4: - movs r1, 0xC -_080F88A6: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, 5 - adds r0, r1 - ldr r1, =0x00002e98 - adds r0, r1 - ldrh r1, [r0] - cmp r1, 0 - bne _080F88CC - ldr r0, =gSpecialVar_0x8004 - strh r1, [r0] - b _080F88D2 - .pool -_080F88CC: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] -_080F88D2: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8864 - - thumb_func_start sub_80F88DC -sub_80F88DC: @ 80F88DC - push {lr} - movs r0, 0xFF - bl sub_80DEDA8 - pop {r0} - bx r0 - thumb_func_end sub_80F88DC - - thumb_func_start sub_80F88E8 -sub_80F88E8: @ 80F88E8 - push {lr} - ldr r0, =gContestFinalStandings - ldr r1, =gContestPlayerMonIndex - ldrb r2, [r1] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8930 - ldr r0, =gSpecialVar_ContestRank - ldrh r0, [r0] - cmp r0, 0x3 - bne _080F8930 - ldr r1, =gUnknown_02039F08 - lsls r0, r2, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, =0x0000031f - cmp r1, r0 - ble _080F8930 - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - b _080F8934 - .pool -_080F8930: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0 -_080F8934: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F88E8 - - thumb_func_start sub_80F8940 -sub_80F8940: @ 80F8940 - push {lr} - movs r3, 0 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x00002f98 - adds r1, r0, r2 - movs r2, 0x4 -_080F894E: - ldrh r0, [r1] - cmp r0, 0 - beq _080F895A - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080F895A: - adds r1, 0x20 - subs r2, 0x1 - cmp r2, 0 - bge _080F894E - adds r0, r3, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F8940 - - thumb_func_start sub_80F8970 -sub_80F8970: @ 80F8970 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, =gContestMonConditions - mov r12, r0 - ldr r1, =gSpecialVar_0x8006 - mov r9, r1 - ldr r2, =gContestMons + 2 - mov r10, r2 - mov r2, r12 - mov r1, sp - movs r6, 0x3 -_080F898E: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _080F898E - movs r6, 0 -_080F899E: - movs r1, 0x3 - cmp r1, r6 - ble _080F89C8 -_080F89A4: - subs r5, r1, 0x1 - lsls r0, r5, 1 - mov r4, sp - adds r3, r4, r0 - lsls r0, r1, 1 - adds r2, r4, r0 - ldrh r4, [r3] - movs r7, 0 - ldrsh r1, [r3, r7] - movs r7, 0 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080F89C2 - strh r4, [r2] - strh r0, [r3] -_080F89C2: - adds r1, r5, 0 - cmp r1, r6 - bgt _080F89A4 -_080F89C8: - adds r6, 0x1 - cmp r6, 0x2 - ble _080F899E - mov r2, r9 - ldrh r0, [r2] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - movs r2, 0 - mov r8, r2 - movs r6, 0 - lsls r0, 16 - asrs r4, r0, 16 - adds r3, r0, 0 - mov r1, sp - mov r5, r9 -_080F89E8: - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, r4 - bne _080F8A02 - lsls r0, r2, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r2, r0, 24 - ldrh r7, [r5] - cmp r6, r7 - bne _080F8A02 - mov r8, r2 -_080F8A02: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080F89E8 - movs r6, 0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - asrs r1, r3, 16 - lsls r2, 24 - mov r9, r2 - cmp r0, r1 - beq _080F8A30 - adds r2, r1, 0 - mov r1, sp -_080F8A20: - adds r1, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - bgt _080F8A30 - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, r2 - bne _080F8A20 -_080F8A30: - lsls r0, r6, 24 - lsrs r7, r0, 24 - mov r2, r8 - movs r6, 0 - asrs r1, r3, 16 - mov r5, r12 - movs r4, 0 - ldrsh r0, [r5, r4] - b _080F8A66 - .pool -_080F8A50: - subs r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080F8A56: - adds r6, 0x1 - cmp r6, 0x3 - bgt _080F8A6E - lsls r0, r6, 1 - add r0, r12 - asrs r1, r3, 16 - movs r5, 0 - ldrsh r0, [r0, r5] -_080F8A66: - cmp r1, r0 - bne _080F8A56 - cmp r2, 0x1 - bne _080F8A50 -_080F8A6E: - lsls r4, r6, 6 - mov r0, r10 - adds r1, r4, r0 - ldr r0, =gStringVar1 - bl StringCopy - ldr r5, =gStringVar2 - mov r0, r10 - adds r0, 0xB - adds r4, r0 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringCopy - adds r0, r5, 0 - bl sub_81DB5AC - mov r1, r9 - asrs r0, r1, 24 - cmp r0, 0x1 - beq _080F8A9C - cmp r8, r0 - bne _080F8AB0 -_080F8A9C: - ldr r0, =gSpecialVar_0x8006 - strh r7, [r0] - b _080F8AB6 - .pool -_080F8AB0: - ldr r1, =gSpecialVar_0x8006 - adds r0, r7, 0x4 - strh r0, [r1] -_080F8AB6: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8970 - - thumb_func_start sub_80F8ACC -sub_80F8ACC: @ 80F8ACC - push {lr} - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8ACC - - thumb_func_start ShowContestWinner -ShowContestWinner: @ 80F8ADC - push {lr} - ldr r0, =sub_812FDEC - bl SetMainCallback2 - ldr r1, =gMain - ldr r0, =sub_80F8ACC - str r0, [r1, 0x8] - pop {r0} - bx r0 - .pool - thumb_func_end ShowContestWinner - - thumb_func_start sub_80F8AFC -sub_80F8AFC: @ 80F8AFC - push {r4,r5,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8B7C - movs r3, 0 - ldr r0, =gUnknown_02039F30 - adds r4, r0, 0 - ldr r5, =gContestMons - ldrb r0, [r4] - cmp r3, r0 - bge _080F8B50 - adds r2, r5, 0 - ldr r1, =gLinkPlayers -_080F8B1C: - ldrb r0, [r1] - subs r0, 0x1 - cmp r0, 0x1 - bhi _080F8B44 - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8B40 - movs r0, 0xEB - b _080F8B42 - .pool -_080F8B40: - movs r0, 0xEC -_080F8B42: - strb r0, [r2, 0x15] -_080F8B44: - adds r2, 0x40 - adds r1, 0x1C - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _080F8B1C -_080F8B50: - ldr r0, =0x00004010 - ldrb r1, [r5, 0x15] - bl VarSet - ldr r0, =0x00004011 - adds r1, r5, 0 - adds r1, 0x55 - ldrb r1, [r1] - bl VarSet - ldr r0, =0x00004012 - adds r1, r5, 0 - adds r1, 0x95 - ldrb r1, [r1] - bl VarSet - ldr r0, =0x00004013 - adds r1, r5, 0 - adds r1, 0xD5 - ldrb r1, [r1] - bl VarSet -_080F8B7C: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8AFC - - thumb_func_start sub_80F8B94 -sub_80F8B94: @ 80F8B94 - push {r4-r7,lr} - ldr r1, =gReservedSpritePaletteCount - movs r0, 0xC - strb r0, [r1] - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8C6E - movs r5, 0 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r5, r0 - bge _080F8C6E - movs r7, 0 - movs r6, 0x60 - movs r4, 0xB0 - lsls r4, 17 -_080F8BBA: - ldr r0, =gUnknown_0858D8EC - adds r0, r5, r0 - ldrb r0, [r0] - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl GetEventObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gEventObjects - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, =gSprites - adds r1, r0 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r6 - strb r0, [r1, 0x5] - ldr r0, =gLinkPlayers - adds r1, r7, r0 - ldrb r0, [r1] - subs r0, 0x1 - cmp r0, 0x1 - bhi _080F8C38 - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8C2C - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette33 - b _080F8C42 - .pool -_080F8C2C: - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette34 - b _080F8C42 - .pool -_080F8C38: - ldrb r0, [r1, 0x13] - cmp r0, 0 - bne _080F8C50 - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette8 -_080F8C42: - movs r2, 0x20 - bl LoadPalette - b _080F8C5A - .pool -_080F8C50: - lsrs r1, r4, 16 - ldr r0, =gEventObjectPalette17 - movs r2, 0x20 - bl LoadPalette -_080F8C5A: - movs r0, 0x80 - lsls r0, 13 - adds r4, r0 - adds r7, 0x1C - adds r6, 0x10 - adds r5, 0x1 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r5, r0 - blt _080F8BBA -_080F8C6E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8B94 - - thumb_func_start sub_80F8C7C -sub_80F8C7C: @ 80F8C7C - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, =gUnknown_02039F24 - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, =gPlayerParty - adds r0, r4 - movs r1, 0x46 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - cmp r0, 0 - bne _080F8D18 - ldr r0, =gContestFinalStandings - ldr r1, =gContestPlayerMonIndex - ldrb r2, [r1] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8D18 - ldr r0, =gSpecialVar_ContestRank - ldrh r0, [r0] - cmp r0, 0x3 - bne _080F8D18 - ldr r1, =gUnknown_02039F08 - lsls r0, r2, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, =0x0000031f - cmp r1, r0 - ble _080F8D18 - movs r1, 0x1 - mov r0, sp - strb r1, [r0] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0x46 - mov r2, sp - bl SetMonData - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - bl GetRibbonCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _080F8CF6 - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0x46 - bl sub_80EE4DC -_080F8CF6: - movs r0, 0x1 - b _080F8D1A - .pool -_080F8D18: - movs r0, 0 -_080F8D1A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F8C7C - - thumb_func_start sub_80F8D24 -sub_80F8D24: @ 80F8D24 - movs r0, 0 - bx lr - thumb_func_end sub_80F8D24 - - thumb_func_start sub_80F8D28 -sub_80F8D28: @ 80F8D28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, =sub_80F8EE8 - adds r0, r7, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080F8D44 - b _080F8E9C -_080F8D44: - bl AllocateMonSpritesGfx - movs r0, 0xA - mov r9, r0 - movs r1, 0x3 - mov r10, r1 - ldr r2, =gContestMons - ldr r4, =gSpecialVar_0x8006 - ldrh r1, [r4] - lsls r1, 6 - adds r0, r1, r2 - ldrh r6, [r0] - adds r0, r2, 0 - adds r0, 0x38 - adds r0, r1, r0 - ldr r5, [r0] - adds r2, 0x3C - adds r1, r2 - ldr r1, [r1] - mov r8, r1 - adds r0, r7, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, =gContestPlayerMonIndex - ldrh r0, [r4] - ldrb r1, [r1] - cmp r0, r1 - bne _080F8DC4 - lsls r0, r6, 3 - ldr r1, =gMonFrontPicTable - adds r0, r1 - ldr r1, =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r5, 0 - bl HandleLoadSpecialPokePic_2 - b _080F8DD8 - .pool -_080F8DC4: - lsls r0, r6, 3 - ldr r1, =gMonFrontPicTable - adds r0, r1 - ldr r1, =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r5, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys -_080F8DD8: - adds r0, r6, 0 - mov r1, r8 - adds r2, r5, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedObjectPalette - adds r0, r6, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, =gMultiuseSpriteTemplate - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x2] - mov r1, r9 - adds r1, 0x1 - lsls r1, 19 - movs r2, 0x80 - lsls r2, 14 - adds r1, r2 - asrs r1, 16 - mov r3, r10 - lsls r2, r3, 19 - movs r3, 0xA0 - lsls r3, 14 - adds r2, r3 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8E58 - movs r0, 0x4 - ands r0, r1 - lsls r4, r5, 4 - cmp r0, 0 - bne _080F8E6C - adds r0, r4, r5 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl DoMonFrontSpriteAnimation - b _080F8E6C - .pool -_080F8E58: - lsls r4, r5, 4 - adds r0, r4, r5 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl DoMonFrontSpriteAnimation -_080F8E6C: - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - mov r2, r10 - strh r2, [r0, 0x10] - ldr r3, =gSprites - adds r1, r4, r5 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, =SpriteCallbackDummy - str r2, [r0] - adds r1, r3 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_080F8E9C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8D28 - - thumb_func_start sub_80F8EB8 -sub_80F8EB8: @ 80F8EB8 - push {lr} - ldr r0, =sub_80F8EE8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080F8EDC - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - bl FreeMonSpritesGfx -_080F8EDC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8EB8 - - thumb_func_start sub_80F8EE8 -sub_80F8EE8: @ 80F8EE8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r2, 0x8 - ldrsh r0, [r5, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _080F8F98 - lsls r0, 2 - ldr r1, =_080F8F14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F8F14: - .4byte _080F8F78 - .4byte _080F8F28 - .4byte _080F8F98 - .4byte _080F8F42 - .4byte _080F8F84 -_080F8F28: - movs r0, 0xA - movs r1, 0x3 - movs r2, 0x8 - movs r3, 0x8 - bl CreateWindowFromRect - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - movs r1, 0x1 - bl SetStandardWindowBorderStyle - b _080F8F78 -_080F8F42: - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r4, r0, r1 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - bl GetSpritePaletteTagByPaletteNum - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - ldrb r0, [r4, 0x1] - lsls r0, 30 - cmp r0, 0 - beq _080F8F72 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix -_080F8F72: - adds r0, r4, 0 - bl DestroySprite -_080F8F78: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080F8F98 - .pool -_080F8F84: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x12] - bl sub_80E2A78 - adds r0, r4, 0 - bl DestroyTask -_080F8F98: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F8EE8 - - thumb_func_start sub_80F8FA0 -sub_80F8FA0: @ 80F8FA0 - push {r4,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8FD8 - ldr r0, =gUnknown_02039F30 - ldrb r0, [r0] - cmp r0, 0x4 - bne _080F8FD8 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F8FD8 - ldr r4, =gSpecialVar_Result - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - b _080F8FDE - .pool -_080F8FD8: - ldr r1, =gSpecialVar_Result - movs r0, 0x4 - strh r0, [r1] -_080F8FDE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8FA0 - - thumb_func_start sub_80F8FE8 -sub_80F8FE8: @ 80F8FE8 - push {r4,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F9020 - ldr r2, =gContestRngValue - ldr r1, [r2] - ldr r0, =0x41c64e6d - muls r0, r1 - ldr r1, =0x00006073 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - ldr r4, =gSpecialVar_Result - b _080F902A - .pool -_080F9020: - ldr r4, =gSpecialVar_Result - bl Random - lsls r0, 16 - lsrs r0, 16 -_080F902A: - ldrh r1, [r4] - bl __umodsi3 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F8FE8 - - thumb_func_start sub_80F903C -sub_80F903C: @ 80F903C - ldr r2, =gContestRngValue - ldr r1, [r2] - ldr r0, =0x41c64e6d - muls r0, r1 - ldr r1, =0x00006073 - adds r0, r1 - str r0, [r2] - lsrs r0, 16 - bx lr - .pool - thumb_func_end sub_80F903C - - thumb_func_start sub_80F905C -sub_80F905C: @ 80F905C - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F9074 - movs r0, 0 - b _080F907E - .pool -_080F9074: - ldr r0, =sub_80F9088 - movs r1, 0x5 - bl CreateTask - movs r0, 0x1 -_080F907E: - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F905C - - thumb_func_start sub_80F9088 -sub_80F9088: @ 80F9088 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080F90C0 - cmp r0, 0x1 - beq _080F90CE - bl sub_800A520 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F90D4 - bl EnableBothScriptContexts - adds r0, r5, 0 - bl DestroyTask - b _080F90D4 - .pool -_080F90C0: - bl sub_800A520 - lsls r0, 24 - cmp r0, 0 - beq _080F90D4 - bl sub_800ADF8 -_080F90CE: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080F90D4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F9088 - - thumb_func_start sub_80F90DC -sub_80F90DC: @ 80F90DC - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F90FE - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F90FE - bl sub_800E0E8 - movs r0, 0x8 - movs r1, 0x8 - bl CreateWirelessStatusIndicatorSprite -_080F90FE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F90DC - - thumb_func_start sub_80F910C -sub_80F910C: @ 80F910C - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F9126 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F9126 - bl sub_800E084 -_080F9126: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F910C - - thumb_func_start sub_80F9134 -sub_80F9134: @ 80F9134 - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080F914C - movs r0, 0 - b _080F914E - .pool -_080F914C: - movs r0, 0x1 -_080F914E: - pop {r1} - bx r1 - thumb_func_end sub_80F9134 - - thumb_func_start sub_80F9154 -sub_80F9154: @ 80F9154 - ldr r1, =gIsLinkContest - movs r0, 0 - strb r0, [r1] - bx lr - .pool - thumb_func_end sub_80F9154 - - thumb_func_start sub_80F9160 -sub_80F9160: @ 80F9160 - push {lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F9178 - movs r0, 0 - b _080F917A - .pool -_080F9178: - movs r0, 0x1 -_080F917A: - pop {r1} - bx r1 - thumb_func_end sub_80F9160 - - thumb_func_start HealPlayerParty -HealPlayerParty: @ 80F9180 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r0, 0 - mov r8, r0 - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - cmp r8, r0 - bcs _080F922C - ldr r1, =gPlayerParty - mov r10, r1 - mov r6, sp -_080F919E: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - lsls r1, r0, 16 - strb r0, [r6] - lsrs r1, 24 - strb r1, [r6, 0x1] - adds r0, r4, 0 - movs r1, 0x39 - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - lsls r0, 24 - lsrs r7, r0, 24 - movs r5, 0 - movs r1, 0x1 - add r1, r8 - mov r9, r1 -_080F91D4: - adds r1, r5, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r7, 0 - adds r2, r5, 0 - bl CalculatePPWithBonus - strb r0, [r6] - adds r1, r5, 0 - adds r1, 0x11 - adds r0, r4, 0 - mov r2, sp - bl SetMonData - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080F91D4 - movs r0, 0 - strb r0, [r6] - strb r0, [r6, 0x1] - strb r0, [r6, 0x2] - strb r0, [r6, 0x3] - movs r1, 0x64 - mov r0, r8 - muls r0, r1 - add r0, r10 - movs r1, 0x37 - mov r2, sp - bl SetMonData - mov r1, r9 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - cmp r8, r0 - bcc _080F919E -_080F922C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end HealPlayerParty - - thumb_func_start ScriptGiveMon -@ void ScriptGiveMon(s16 species_num, u8 level, int held_item) -ScriptGiveMon: @ 80F9244 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x78 - adds r5, r0, 0 - adds r3, r1, 0 - adds r4, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 16 - lsrs r0, r4, 16 - mov r8, r0 - add r6, sp, 0x14 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r3, 0 - movs r3, 0x20 - bl CreateMon - add r0, sp, 0x10 - mov r1, r8 - strb r1, [r0] - lsrs r4, 24 - strb r4, [r0, 0x1] - adds r0, r6, 0 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData - adds r0, r6, 0 - bl GiveMonToPlayer - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0x1 - bgt _080F92B8 - cmp r4, 0 - blt _080F92B8 - adds r0, r5, 0 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r0, r5, 0 - movs r1, 0x3 - bl GetSetPokedexFlag -_080F92B8: - adds r0, r4, 0 - add sp, 0x78 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScriptGiveMon - - thumb_func_start ScriptGiveEgg -ScriptGiveEgg: @ 80F92C8 - push {lr} - sub sp, 0x68 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, sp - movs r2, 0x1 - bl CreateEgg - add r2, sp, 0x64 - movs r0, 0x1 - strb r0, [r2] - mov r0, sp - movs r1, 0x2D - bl SetMonData - mov r0, sp - bl GiveMonToPlayer - lsls r0, 24 - lsrs r0, 24 - add sp, 0x68 - pop {r1} - bx r1 - thumb_func_end ScriptGiveEgg - - thumb_func_start HasEnoughMonsForDoubleBattle -HasEnoughMonsForDoubleBattle: @ 80F92F8 - push {lr} - bl GetMonsStateToDoubles - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - beq _080F9314 - cmp r1, 0x1 - bgt _080F9310 - cmp r1, 0 - beq _080F9314 - b _080F9318 -_080F9310: - cmp r1, 0x2 - bne _080F9318 -_080F9314: - ldr r0, =gSpecialVar_Result - strh r1, [r0] -_080F9318: - pop {r0} - bx r0 - .pool - thumb_func_end HasEnoughMonsForDoubleBattle - - thumb_func_start sub_80F9320 -sub_80F9320: @ 80F9320 - push {r4-r7,lr} - lsls r0, 16 - lsrs r6, r0, 16 - movs r5, 0 - movs r7, 0xCE - lsls r7, 1 -_080F932C: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080F9360 - cmp r0, r7 - beq _080F9360 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - cmp r0, r6 - bne _080F9360 - movs r0, 0x1 - b _080F9368 - .pool -_080F9360: - adds r5, 0x1 - cmp r5, 0x5 - ble _080F932C - movs r0, 0 -_080F9368: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F9320 - - thumb_func_start sub_80F9370 -sub_80F9370: @ 80F9370 - push {r4,lr} - movs r0, 0xAF - bl sub_80F9320 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r4, 0x1 - bne _080F9392 - movs r0, 0xAF - bl ItemIdToBerryType - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gStringVar1 - bl GetBerryNameByBerryType -_080F9392: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F9370 - - thumb_func_start CreateScriptedWildMon -CreateScriptedWildMon: @ 80F93A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - lsls r7, r2, 16 - lsrs r6, r7, 16 - bl ZeroEnemyPartyMons - ldr r0, =gEnemyParty - mov r8, r0 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x20 - bl CreateMon - cmp r6, 0 - beq _080F93EE - add r0, sp, 0x10 - strb r6, [r0] - adds r1, r0, 0 - lsrs r0, r7, 24 - strb r0, [r1, 0x1] - mov r0, r8 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData -_080F93EE: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CreateScriptedWildMon - - thumb_func_start ScriptSetMonMoveSlot -ScriptSetMonMoveSlot: @ 80F9400 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r2, 24 - cmp r3, 0x6 - bls _080F941C - ldr r0, =gPlayerPartyCount - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080F941C: - movs r0, 0x64 - muls r0, r3 - ldr r1, =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl SetMonMoveSlot - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ScriptSetMonMoveSlot - - thumb_func_start sub_80F9438 -sub_80F9438: @ 80F9438 - push {lr} - ldr r0, =gMain - ldr r1, =sub_80F9460 - str r1, [r0, 0x8] - ldr r0, =0x000040cf - movs r1, 0x9 - bl VarSet - movs r0, 0 - bl sub_81B8518 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9438 - - thumb_func_start sub_80F9460 -sub_80F9460: @ 80F9460 - push {lr} - ldr r0, =gUnknown_0203CEF8 - ldrb r1, [r0] - cmp r1, 0 - bne _080F9478 - ldr r0, =gSpecialVar_Result - strh r1, [r0] - b _080F947E - .pool -_080F9478: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_080F947E: - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9460 - - thumb_func_start sub_80F9490 -sub_80F9490: @ 80F9490 - push {lr} - ldr r1, =gMain - ldr r0, =sub_80F94B8 - str r0, [r1, 0x8] - ldr r0, =gSpecialVar_0x8004 - ldrb r0, [r0] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - bl sub_81B8518 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F9490 - - thumb_func_start sub_80F94B8 -sub_80F94B8: @ 80F94B8 - push {lr} - ldr r0, =gUnknown_0203CEF8 - ldrb r1, [r0] - cmp r1, 0 - bne _080F94D0 - ldr r0, =gSpecialVar_Result - strh r1, [r0] - b _080F94D6 - .pool -_080F94D0: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_080F94D6: - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F94B8 - - thumb_func_start ReducePlayerPartyToThree -ReducePlayerPartyToThree: @ 80F94E8 - push {r4-r7,lr} - sub sp, 0x198 - add r0, sp, 0x190 - movs r1, 0 - str r1, [r0] - ldr r2, =0x05000064 - mov r1, sp - bl CpuSet - movs r5, 0 - movs r7, 0x64 - ldr r6, =gPlayerParty - mov r4, sp -_080F9502: - ldr r0, =gUnknown_0203CEF8 - adds r1, r5, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080F951C - subs r0, 0x1 - adds r1, r0, 0 - muls r1, r7 - adds r1, r6 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy -_080F951C: - adds r4, 0x64 - adds r5, 0x1 - cmp r5, 0x3 - ble _080F9502 - add r0, sp, 0x194 - movs r1, 0 - str r1, [r0] - ldr r4, =gPlayerParty - ldr r2, =0x05000096 - adds r1, r4, 0 - bl CpuSet - mov r5, sp - add r6, sp, 0x12C -_080F9538: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r5, 0x64 - adds r4, 0x64 - cmp r5, r6 - ble _080F9538 - bl CalculatePlayerPartyCount - add sp, 0x198 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ReducePlayerPartyToThree - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/water.s b/asm/water.s index cce11a615..6965d6371 100644 --- a/asm/water.s +++ b/asm/water.s @@ -329,7 +329,7 @@ sub_8107430: @ 8107430 push {lr} movs r1, 0xA strh r1, [r0, 0x2E] - ldr r1, =sub_80A64B0 + ldr r1, =WaitAnimForDuration str r1, [r0, 0x1C] ldr r1, =move_anim_8074EE0 bl StoreSpriteCallbackInData6 @@ -343,7 +343,7 @@ sub_810744C: @ 810744C push {r4-r7,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -538,7 +538,7 @@ sub_81075EC: @ 81075EC push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos movs r0, 0x1E strh r0, [r5, 0x2E] ldrh r0, [r5, 0x20] @@ -819,7 +819,7 @@ _0810781E: movs r7, 0x3 _08107828: adds r0, r6, 0 - bl sub_80A69CC + bl InitAnimSpritePos ldr r0, =gBattleAnimAttacker ldrb r0, [r0] bl GetBattlerSide @@ -849,7 +849,7 @@ _08107842: ldrh r5, [r5, 0x6] adds r0, r5 strh r0, [r6, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r6, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r6, 0 @@ -876,7 +876,7 @@ sub_8107894: @ 8107894 ldrh r0, [r4, 0x22] adds r1, r0 strh r1, [r4, 0x36] - ldr r0, =sub_80A6EEC + ldr r0, =StartAnimLinearTranslation str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 @@ -904,7 +904,7 @@ sub_81078D0: @ 81078D0 _081078EC: adds r0, r4, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos _081078F4: ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] @@ -3137,7 +3137,7 @@ sub_8108AC0: @ 8108AC0 strh r1, [r0, 0x36] ldrh r1, [r6, 0x1A] strh r1, [r0, 0x38] - bl sub_80A68D4 + bl InitAnimArcTranslation adds r5, 0x1C adds r4, r5 ldr r0, =sub_8108B2C @@ -3191,7 +3191,7 @@ sub_8108B2C: @ 8108B2C mvns r1, r1 strh r1, [r6, 0x38] adds r0, r6, 0 - bl sub_80A68D4 + bl InitAnimArcTranslation ldr r0, =sub_8108B94 str r0, [r6, 0x1C] _08108B86: @@ -3339,7 +3339,7 @@ sub_8108C94: @ 8108C94 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x1 - bl sub_80A69CC + bl InitAnimSpritePos ldr r5, =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc index 1dfc72bcc..65749894b 100644 --- a/data/maps/LilycoveCity_ContestLobby/scripts.inc +++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc @@ -57,7 +57,7 @@ LilycoveCity_ContestLobby_EventScript_21A2AA:: @ 821A2AA closemessage special sub_80F88DC setvar VAR_0x4099, 0 - specialvar VAR_RESULT, sub_80F8C7C + specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 call_if 1, LilycoveCity_ContestLobby_EventScript_21A314 applymovement 4, LilycoveCity_ContestLobby_Movement_21A40F @@ -230,7 +230,7 @@ LilycoveCity_ContestLobby_EventScript_21A47A:: @ 821A47A closemessage special sub_80F88DC setvar VAR_0x4099, 0 - specialvar VAR_RESULT, sub_80F8C7C + specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 call_if 1, LilycoveCity_ContestLobby_EventScript_21A4E4 applymovement 11, LilycoveCity_ContestLobby_Movement_21A53C @@ -324,7 +324,7 @@ LilycoveCity_ContestLobby_EventScript_21A554:: @ 821A554 goto_eq LilycoveCity_ContestLobby_EventScript_21A5CF call LilycoveCity_ContestLobby_EventScript_279CC5 call LilycoveCity_ContestLobby_EventScript_21A670 - special sub_80F87D8 + special SetContestTrainerGfxIds call LilycoveCity_ContestLobby_EventScript_23BEB6 call LilycoveCity_ContestLobby_EventScript_21A585 call LilycoveCity_ContestLobby_EventScript_21A5EF diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc index 242d1b8d8..424ee4bf3 100644 --- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc @@ -260,7 +260,7 @@ MossdeepCity_SpaceCenter_2F_EventScript_22400C:: @ 822400C goto MossdeepCity_SpaceCenter_2F_EventScript_223FDA MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032 - special ReducePlayerPartyToThree + special ReducePlayerPartyToSelectedMons setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 special CallFrontierUtilFunc diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc index 4bd15c332..e11d3ae9f 100644 --- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc +++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc @@ -106,7 +106,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58 compare VAR_RESULT, 0 goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2 special SavePlayerParty - special ReducePlayerPartyToThree + special ReducePlayerPartyToSelectedMons msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227D21, 4 closemessage compare VAR_FACING, 2 diff --git a/data/maps/UnknownMap_25_34/scripts.inc b/data/maps/UnknownMap_25_34/scripts.inc index eb6bf8da4..2e13983fa 100644 --- a/data/maps/UnknownMap_25_34/scripts.inc +++ b/data/maps/UnknownMap_25_34/scripts.inc @@ -18,7 +18,7 @@ LinkContestRoom1_MapScript1_23B79F: @ 823B79F LinkContestRoom1_EventScript_23B7AF:: @ 823B7AF call LinkContestRoom1_EventScript_27A133 - special sub_80F8FA0 + special ScriptGetMultiplayerId compare VAR_RESULT, 0 call_if 1, LinkContestRoom1_EventScript_23B7EF compare VAR_RESULT, 1 @@ -134,7 +134,7 @@ LinkContestRoom1_EventScript_23B8ED:: @ 823B8ED LinkContestRoom1_EventScript_23B8F8:: @ 823B8F8 setvar VAR_RESULT, 32 - special sub_80F8FE8 + special ScriptRandom addvar VAR_RESULT, 1 switch VAR_RESULT case 1, LinkContestRoom1_EventScript_23BA6B diff --git a/data/script_pokemon_util_80F87D8.s b/data/script_pokemon_util_80F87D8.s deleted file mode 100644 index dcf9edeea..000000000 --- a/data/script_pokemon_util_80F87D8.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 -gUnknown_0858D8EC:: @ 858D8EC - .byte 3, 4, 5, 14 diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index afd2ca851..48c5d8d01 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -388,7 +388,7 @@ LinkContestRoom1_EventScript_27A1D2:: @ 827A1D2 releaseall addvar VAR_0x8006, 65535 playse SE_BOWA2 - special sub_80F8D28 + special ShowContestEntryMonPic call LinkContestRoom1_EventScript_27A217 return @@ -517,7 +517,7 @@ LinkContestRoom1_EventScript_27A34F:: @ 827A34F LinkContestRoom1_EventScript_27A3E5:: @ 827A3E5 setvar VAR_RESULT, 8 - special sub_80F8FE8 + special ScriptRandom compare VAR_RESULT, 0 call_if 1, LinkContestRoom1_EventScript_27A65A compare VAR_RESULT, 1 diff --git a/data/specials.inc b/data/specials.inc index 75f180420..a1d9734ca 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -94,7 +94,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F8390 def_special sub_80F8850 def_special sub_80F82B4 - def_special sub_80F87D8 + def_special SetContestTrainerGfxIds def_special sub_80F7F30 def_special sub_80F8970 def_special sub_80F8AFC @@ -102,7 +102,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F7F7C def_special sub_80F7FFC def_special sub_80F8D24 - def_special sub_80F8C7C + def_special GiveMonArtistRibbon def_special sub_80B3000 def_special SaveGame def_special sub_80FAFF8 @@ -259,7 +259,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F9490 def_special ValidateEReaderTrainer def_special GetBestBattleTowerStreak - def_special ReducePlayerPartyToThree + def_special ReducePlayerPartyToSelectedMons def_special BedroomPC def_special PlayerPC def_special FieldShowRegionMap @@ -330,13 +330,13 @@ gSpecials:: @ 81DBA64 def_special sub_80AC81C def_special sp13E_warp_to_last_warp def_special sp13F_fall_to_last_warp - def_special sub_80F8D28 + def_special ShowContestEntryMonPic def_special sub_80F8EB8 def_special SetEReaderTrainerGfxId def_special BattleSetup_StartLatiBattle def_special SetRoute119Weather def_special SetRoute123Weather - def_special sub_80F8FA0 + def_special ScriptGetMultiplayerId def_special ScriptGetPartyMonSpecies def_special sub_81B98DC def_special nullsub_54 @@ -350,7 +350,7 @@ gSpecials:: @ 81DBA64 def_special BufferLottoTicketNumber def_special sub_81653CC def_special sub_80F9370 - def_special sub_80F8FE8 + def_special ScriptRandom def_special sub_81AFDD0 def_special sub_80EDCE8 def_special sub_80EE2CC diff --git a/graphics/interface/menu.png b/graphics/battle_interface/textbox.png Binary files differindex 96f6b8b15..96f6b8b15 100644 --- a/graphics/interface/menu.png +++ b/graphics/battle_interface/textbox.png diff --git a/graphics/interface/menu_0.pal b/graphics/battle_interface/textbox_0.pal index 67e1af896..67e1af896 100644 --- a/graphics/interface/menu_0.pal +++ b/graphics/battle_interface/textbox_0.pal diff --git a/graphics/interface/menu_1.pal b/graphics/battle_interface/textbox_1.pal index 3adc73766..3adc73766 100644 --- a/graphics/interface/menu_1.pal +++ b/graphics/battle_interface/textbox_1.pal diff --git a/graphics/interface/menu_map.bin b/graphics/battle_interface/textbox_map.bin Binary files differindex 8a7b3f1f0..8a7b3f1f0 100644 --- a/graphics/interface/menu_map.bin +++ b/graphics/battle_interface/textbox_map.bin diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index fb250ad82..0a22a711c 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -309,8 +309,8 @@ graphics/pokenav/region_map.8bpp: %.8bpp: %.png $(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 29 -$(INTERFACEGFXDIR)/menu.gbapal: $(INTERFACEGFXDIR)/menu_0.gbapal \ - $(INTERFACEGFXDIR)/menu_1.gbapal +$(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \ + $(BATINTGFXDIR)/textbox_1.gbapal @cat $^ >$@ $(BTLANMSPRGFXDIR)/010.4bpp: $(BTLANMSPRGFXDIR)/010_0.4bpp \ diff --git a/include/battle_anim.h b/include/battle_anim.h index e164cef7a..16e9de0ac 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -73,9 +73,35 @@ void HandleIntroSlide(u8 terrainId); u32 GetAnimBgAttribute(u8 bgId, u8 attributeId); // battle_anim_80A5C6C.s -void sub_80A6EEC(struct Sprite *sprite); -void sub_80A68D4(struct Sprite *sprite); +void sub_80A6450(struct Sprite *sprite); +void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y); +void move_anim_8074EE0(struct Sprite *sprite); +void sub_80A656C(struct Sprite *sprite); +void InitAnimSpritePos(struct Sprite *sprite, u8 a2); +void sub_80A6980(struct Sprite *sprite, bool8 a2); +void StartAnimLinearTranslation(struct Sprite *sprite); +void InitAnimArcTranslation(struct Sprite *sprite); bool8 TranslateAnimLinear(struct Sprite *sprite); +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); +void sub_80A8EE4(struct Sprite *sprite); +u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId); +void sub_80A6FD4(struct Sprite *sprite); +u16 ArcTan2Neg(s16 a, s16 b); +void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); +void sub_80A67BC(struct Sprite *sprite); +void sub_80A66DC(struct Sprite *sprite); +void sub_80A6838(struct Sprite *sprite); +void sub_80A67D8(struct Sprite *sprite); +void sub_80A6864(struct Sprite *sprite, s16 a2); +s16 sub_80A861C(u8 battlerId, u8 a2); +u8 GetBattlerYCoordWithElevation(u8 battlerId); +void WaitAnimForDuration(struct Sprite *sprite); +void sub_80A7938(struct Sprite *sprite); +void InitAnimLinearTranslation(struct Sprite *sprite); +void sub_80A6F98(struct Sprite *sprite); +u8 sub_80A8328(u8 battlerId); +void *sub_80A8050(s16 bottom, s16 top); +void sub_80A8048(s16 *bottom, s16 *top, const void *ptr); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); @@ -85,7 +111,7 @@ void sub_80A6630(struct Sprite *sprite); void sub_80A6680(struct Sprite *sprite); void sub_80A7344(u8 spriteId); void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); -void sub_80A6E14(struct Sprite *sprite); +void InitSpriteDataForLinearTranslation(struct Sprite *sprite); void sub_80A7270(u8 spriteId, u8 objMode); void sub_80A73A0(u8 spriteId); u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); diff --git a/include/contest.h b/include/contest.h index 502d44b90..8790d7371 100644 --- a/include/contest.h +++ b/include/contest.h @@ -226,6 +226,11 @@ extern u8 gUnknown_02039F24; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; extern u8 gUnknown_02039F30; +extern u8 gContestFinalStandings[4]; +extern u8 gContestPlayerMonIndex; +extern s16 gUnknown_02039F08[4]; +extern s16 gContestMonConditions[4]; +extern u8 gIsLinkContest; struct Shared18000 { @@ -427,5 +432,6 @@ bool8 Contest_IsMonsTurnDisabled(u8 a); bool8 sub_80DE1E8(u8 a); void SetStartledString(u8 a, u8 b); s8 Contest_GetMoveExcitement(u16); +void sub_80DEDA8(u8); #endif //GUARD_CONTEST_H diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h index 3c12e5e53..b4ccf2803 100644 --- a/include/contest_link_80F57C4.h +++ b/include/contest_link_80F57C4.h @@ -1,7 +1,10 @@ #ifndef GUARD_CONTEST_LINK_80F57C4_H #define GUARD_CONTEST_LINK_80F57C4_H +void sub_80F8264(void); +void sub_80F8290(void); void sub_80F840C(void); +void sub_80F8438(void); void sub_80F8484(void); void sub_80F84C4(u8); void sub_80FC998(u8 taskId); diff --git a/include/contest_painting.h b/include/contest_painting.h index f8366a997..67a845d62 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -2,5 +2,6 @@ #define GUARD_CONTESTPAINTING_H void sub_812FDA8(u32); +void sub_812FDEC(void); #endif diff --git a/include/graphics.h b/include/graphics.h index a3af44ad7..ba7f87929 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4732,4 +4732,7 @@ extern const u32 gUnknown_08D927EC[]; extern const u32 gSlotMachineReelTime_Gfx[]; +extern const u32 gUnknown_08D8D410[]; +extern const u32 gUnknown_08D8D58C[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/international_string_util.h b/include/international_string_util.h index 426a2d48c..343c5453c 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -16,7 +16,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2); // sub_81DB494 void PadNameString(u8 *dst, u8 padWith); void sub_81DB554(u8 *, u8); -// sub_81DB5AC +void sub_81DB5AC(u8 *); u32 sub_81DB604(const u8 *); // sub_81DB620 diff --git a/include/pokemon.h b/include/pokemon.h index f9063db9e..5d7f7f2ae 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -112,25 +112,6 @@ #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 - #define FRIENDSHIP_EVENT_GROW_LEVEL 0x0 #define FRIENDSHIP_EVENT_VITAMIN 0x1 // unused #define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 // unused diff --git a/include/script_pokemon_util_80F87D8.h b/include/script_pokemon_util_80F87D8.h index 7c2a1ff66..02a35ecba 100644 --- a/include/script_pokemon_util_80F87D8.h +++ b/include/script_pokemon_util_80F87D8.h @@ -1,9 +1,8 @@ - #ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H #define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H u16 sub_80F903C(void); -void ReducePlayerPartyToThree(void); +void ReducePlayerPartyToSelectedMons(void); void HealPlayerParty(void); #endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H diff --git a/ld_script.txt b/ld_script.txt index 635f09662..45bfd94cb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -147,7 +147,7 @@ SECTIONS { src/secret_base.o(.text); src/tv.o(.text); asm/contest_link_80F57C4.o(.text); - asm/script_pokemon_util_80F87D8.o(.text); + src/script_pokemon_util_80F87D8.o(.text); src/field_poison.o(.text); src/pokemon_size_record.o(.text); asm/fldeff_80F9BCC.o(.text); @@ -162,16 +162,16 @@ SECTIONS { asm/fire.o(.text); asm/electric.o(.text); asm/ice.o(.text); - asm/fight.o(.text); - asm/poison.o(.text); + src/fight.o(.text); + src/poison.o(.text); asm/flying.o(.text); asm/psychic.o(.text); - asm/bug.o(.text); - asm/rock.o(.text); + src/bug.o(.text); + src/rock.o(.text); asm/ghost.o(.text); - asm/dragon.o(.text); + src/dragon.o(.text); asm/dark.o(.text); - asm/ground.o(.text); + src/ground.o(.text); asm/normal.o(.text); src/battle_anim_utility_funcs.o(.text); asm/battle_intro.o(.text); @@ -474,7 +474,7 @@ SECTIONS { src/secret_base.o(.rodata); src/tv.o(.rodata); data/contest_link_80F57C4.o(.rodata); - data/script_pokemon_util_80F87D8.o(.rodata); + src/script_pokemon_util_80F87D8.o(.rodata); src/pokemon_size_record.o(.rodata) data/field_effect_misc.o(.rodata); src/field_special_scene.o(.rodata); diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c index d8e422bb5..2ac6cca90 100644 --- a/src/battle_anim_80A5C6C.c +++ b/src/battle_anim_80A5C6C.c @@ -36,9 +36,7 @@ extern const union AffineAnimCmd *gUnknown_082FF6C0[]; // This file's functions. void sub_80A64EC(struct Sprite *sprite); void sub_80A653C(struct Sprite *sprite); -void InitAnimLinearTranslation(struct Sprite *sprite); void sub_80A6FB4(struct Sprite *sprite); -void sub_80A6F98(struct Sprite *sprite); void sub_80A7144(struct Sprite *sprite); void sub_80A791C(struct Sprite *sprite); void sub_80A8DFC(struct Sprite *sprite); @@ -50,8 +48,6 @@ void sub_80A7AFC(u8 taskId); void sub_80A8CAC(u8 taskId); void AnimTask_BlendMonInAndOutStep(u8 taskId); bool8 sub_80A7238(void); -void sub_80A8048(s16 *bottom, s16 *top, const void *ptr); -void *sub_80A8050(s16 bottom, s16 top); u8 sub_80A82E4(u8 battlerId); void sub_80A8D78(struct Task *task, u8 taskId); @@ -532,7 +528,7 @@ void sub_80A6450(struct Sprite *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 sub_80A64B0(struct Sprite *sprite) +void WaitAnimForDuration(struct Sprite *sprite) { if (sprite->data[0] > 0) sprite->data[0]--; @@ -745,7 +741,7 @@ void sub_80A6864(struct Sprite *sprite, s16 a2) } } -void sub_80A68D4(struct Sprite *sprite) +void InitAnimArcTranslation(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; @@ -791,7 +787,7 @@ void sub_80A6980(struct Sprite *sprite, bool8 a2) sprite->pos1.y += gBattleAnimArgs[1]; } -void sub_80A69CC(struct Sprite *sprite, u8 a2) +void InitAnimSpritePos(struct Sprite *sprite, u8 a2) { if (!a2) { @@ -1004,12 +1000,12 @@ void sub_80A6DEC(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; - sub_80A6E14(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->callback = sub_80A65A8; sprite->callback(sprite); } -void sub_80A6E14(struct Sprite *sprite) +void InitSpriteDataForLinearTranslation(struct Sprite *sprite) { s16 x = (sprite->data[2] - sprite->data[1]) << 8; s16 y = (sprite->data[4] - sprite->data[3]) << 8; @@ -1047,7 +1043,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite) sprite->data[3] = 0; } -void sub_80A6EEC(struct Sprite *sprite) +void StartAnimLinearTranslation(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; @@ -1476,7 +1472,7 @@ void sub_80A77C8(struct Sprite *sprite) else var = FALSE; if (!gBattleAnimArgs[2]) - sub_80A69CC(sprite, var); + InitAnimSpritePos(sprite, var); else sub_80A6980(sprite, var); sprite->data[0]++; @@ -1511,27 +1507,27 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) else attributeId = BATTLER_COORD_Y; - sub_80A69CC(sprite, v1); + InitAnimSpritePos(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, attributeId) + gBattleAnimArgs[3]; - sprite->callback = sub_80A6EEC; + sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } void sub_80A78AC(struct Sprite *sprite) { - sub_80A69CC(sprite, 1); + InitAnimSpritePos(sprite, 1); if (GetBattlerSide(gBattleAnimAttacker)) 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->data[5] = gBattleAnimArgs[5]; - sub_80A68D4(sprite); + InitAnimArcTranslation(sprite); sprite->callback = sub_80A791C; } @@ -1558,7 +1554,7 @@ void sub_80A7938(struct Sprite *sprite) } if (!gBattleAnimArgs[5]) { - sub_80A69CC(sprite, r4); + InitAnimSpritePos(sprite, r4); battlerId = gBattleAnimAttacker; } else @@ -1572,7 +1568,7 @@ void sub_80A7938(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(battlerId, attributeId) + gBattleAnimArgs[3]; - sprite->callback = sub_80A6EEC; + sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -2454,6 +2450,6 @@ void sub_80A8EE4(struct Sprite *sprite) sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 80; } - sprite->callback = sub_80A6EEC; + sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_80D51AC.c index 1864a1a7a..25e07dc3a 100644 --- a/src/battle_anim_80D51AC.c +++ b/src/battle_anim_80D51AC.c @@ -442,7 +442,7 @@ void SlideMonToOriginalPos(struct Sprite *sprite) sprite->data[2] = gSprites[monSpriteId].pos1.x; sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y; sprite->data[4] = gSprites[monSpriteId].pos1.y; - sub_80A6E14(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = gSprites[monSpriteId].pos2.x; @@ -520,7 +520,7 @@ void SlideMonToOffset(struct Sprite *sprite) sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1]; sprite->data[3] = gSprites[monSpriteId].pos1.y; sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2]; - sub_80A6E14(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = monSpriteId; @@ -556,7 +556,7 @@ void sub_80D5B48(struct Sprite *sprite) sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1]; sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2]; - sub_80A6E14(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = gSprites[spriteId].pos2.x << 8; sprite->data[4] = gSprites[spriteId].pos2.y << 8; sprite->data[5] = spriteId; diff --git a/src/battle_bg.c b/src/battle_bg.c index 51138040c..bb66a41fd 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -157,9 +157,9 @@ const struct BgTemplate gBattleBgTemplates[] = }, }; -static const struct WindowTemplate gUnknown_0831AA18[] = +static const struct WindowTemplate gStandardBattleWindowTemplates[] = { - { + { // 0 Standard battle message .bg = 0, .tilemapLeft = 2, .tilemapTop = 15, @@ -168,7 +168,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 0, .baseBlock = 0x0090, }, - { + { // 1 "What will (pokemon) do?" .bg = 0, .tilemapLeft = 1, .tilemapTop = 35, @@ -177,7 +177,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 0, .baseBlock = 0x01c0, }, - { + { // 2 "Fight/Pokemon/Bag/Run" .bg = 0, .tilemapLeft = 17, .tilemapTop = 35, @@ -186,7 +186,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 5, .baseBlock = 0x0190, }, - { + { // 3 Top left move .bg = 0, .tilemapLeft = 2, .tilemapTop = 55, @@ -195,7 +195,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 5, .baseBlock = 0x0300, }, - { + { // 4 Top right move .bg = 0, .tilemapLeft = 11, .tilemapTop = 55, @@ -204,7 +204,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 5, .baseBlock = 0x0310, }, - { + { // 5 Bottom left move .bg = 0, .tilemapLeft = 2, .tilemapTop = 57, @@ -213,7 +213,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = .paletteNum = 5, .baseBlock = 0x0320, }, - { + { // 6 Bottom right move .bg = 0, .tilemapLeft = 11, .tilemapTop = 57, @@ -378,7 +378,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_0831AAE0[] = +static const struct WindowTemplate gBattleArenaWindowTemplates[] = { { .bg = 0, @@ -592,8 +592,8 @@ static const struct WindowTemplate gUnknown_0831AAE0[] = const struct WindowTemplate * const gBattleWindowTemplates[] = { - gUnknown_0831AA18, - gUnknown_0831AAE0, + gStandardBattleWindowTemplates, + gBattleArenaWindowTemplates, }; static const struct BattleBackground gBattleTerrainTable[] = diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 7589eb962..0cec046e4 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1344,7 +1344,7 @@ static void LinkOpponentHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_8064470; } @@ -1706,7 +1706,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80676FC); diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 04554a81b..04a3784da 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1166,7 +1166,7 @@ static void LinkPartnerHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_814AF54; } @@ -1532,7 +1532,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 72dfb7e6b..403cc5eed 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1381,7 +1381,7 @@ static void OpponentHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_805F240; } @@ -1855,7 +1855,7 @@ static void OpponentHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_806280C); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 3fabf25f8..49629198c 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -114,7 +114,7 @@ static void MoveSelectionDisplayPpNumber(void); static void MoveSelectionDisplayPpString(void); static void MoveSelectionDisplayMoveType(void); static void MoveSelectionDisplayMoveNames(void); -static void HandleMoveSwitchting(void); +static void HandleMoveSwitching(void); static void sub_8058FC0(void); static void WaitForMonSelection(void); static void CompleteWhenChoseItem(void); @@ -617,7 +617,7 @@ static void HandleInputChooseMove(void) MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB); - gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitchting; + gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching; } } } @@ -672,7 +672,7 @@ u32 sub_8057FBC(void) // unused return var; } -static void HandleMoveSwitchting(void) +static void HandleMoveSwitching(void) { u8 perMovePPBonuses[4]; struct ChooseMoveStruct moveStruct; @@ -2385,7 +2385,7 @@ static void PlayerHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); gBattlerControllerFuncs[gActiveBattler] = sub_80588B4; @@ -2930,7 +2930,7 @@ static void PlayerHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 0790cbbff..bd892c922 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1361,7 +1361,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_81BAE98; } @@ -1785,7 +1785,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00); diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 83c4965ea..b54e61255 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -1275,7 +1275,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_81865C8; } @@ -1649,7 +1649,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_818962C); diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index cbb46a940..17b115caa 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -1276,7 +1276,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); gBattlerControllerFuncs[gActiveBattler] = sub_81899F0; } @@ -1671,7 +1671,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00); diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 922c5d80b..1a3a2d53d 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -1435,7 +1435,7 @@ static void WallyHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; - gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00); diff --git a/src/battle_dome.c b/src/battle_dome.c index c4cb24204..152a11ae8 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -63,9 +63,9 @@ extern u8 GetFrontierBrainMonNature(u8); extern void sub_81A4C30(void); extern u8 sub_81A3610(void); extern u16 GetFrontierBrainMonSpecies(u8); -extern void ReducePlayerPartyToThree(void); +extern void ReducePlayerPartyToSelectedMons(void); -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; extern const u16 gBattleFrontierHeldItems[]; extern const struct FacilityMon gBattleFrontierMons[]; @@ -2465,8 +2465,8 @@ static void sub_818EA84(void) break; case 8: sub_81B8558(); - gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0; - gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; + gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0; + gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8; break; case 9: gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B; @@ -2535,7 +2535,7 @@ static void sub_818ED28(void) } break; case 8: - gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8); + gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gSelectedOrderFromParty); break; } } @@ -6070,7 +6070,7 @@ static void sub_8194D68(void) for (i = 0; i < 2; i++) { - s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1; + s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; s32 count; for (moveSlot = 0; moveSlot < 4; moveSlot++) @@ -6096,7 +6096,7 @@ static void sub_8194E44(void) for (i = 0; i < 2; i++) { - s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gUnknown_0203CEF8[i] - 1] - 1; + s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL); SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item); } @@ -6104,7 +6104,7 @@ static void sub_8194E44(void) static void sub_8194EB4(void) { - ReducePlayerPartyToThree(); + ReducePlayerPartyToSelectedMons(); } static void sub_8194EC0(void) diff --git a/src/battle_interface.c b/src/battle_interface.c index ec8a06094..c7eb11293 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -168,15 +168,15 @@ extern const u8 gText_DynColor1Female[]; // this file's functions static const u8 *GetHealthboxElementGfxPtr(u8 elementId); -static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId); +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId); static void RemoveWindowOnHealthbox(u32 windowId); static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); -static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2); -static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2); -static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2); +static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth); +static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); +static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2); static void sub_8073E08(u8 taskId); @@ -965,7 +965,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) healthBarSpritePtr->subspriteMode = 2; healthBarSpritePtr->oam.priority = 1; - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * 32), 64); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * TILE_SIZE_4BPP), 64); gSprites[healthboxLeftSpriteId].hMain_HealthBarSpriteId = healthbarSpriteId; gSprites[healthboxLeftSpriteId].hMain_Battler = battlerId; @@ -1154,7 +1154,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) xPos += var1; windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) { @@ -1182,7 +1182,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle()) { - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; if (maxOrCurrent != HP_CURRENT) // singles, max { ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -1243,7 +1243,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) for (i = 0; i < 3; i++) { CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32], - (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), + (void*)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), 0x20); } } @@ -1261,7 +1261,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 { if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible { - spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * 32; + spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * TILE_SIZE_4BPP; objVram = (void*)(OBJ_VRAM0) + spriteTileNum; if (maxOrCurrent != HP_CURRENT) // doubles, max hp @@ -1271,7 +1271,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 HpTextIntoHealthboxObject((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2); RemoveWindowOnHealthbox(windowId); CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116), - (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32), + (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x20); } else @@ -1328,16 +1328,16 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 if (maxOrCurrent == HP_CURRENT) { CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224], - (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)), + (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)), 0x20); - CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20); + CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20); } else { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side. { CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116), - (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32), + (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP), 0x20); } } @@ -1349,7 +1349,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon) { u8 text[20]; - s32 j, var2; + s32 j, spriteTileNum; u8 *barFontGfx; u8 i, var, nature, healthBarSpriteId; @@ -1376,12 +1376,12 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon) for (j = 1; j < var + 1; j++) { - var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; - CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20); + spriteTileNum = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP; + CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20); barFontGfx += 0x20; - var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; - CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20); + spriteTileNum = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP; + CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20); barFontGfx += 0x20; } @@ -1398,13 +1398,13 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon) if (j <= 1) { CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20], - (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * 32, + (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * TILE_SIZE_4BPP, 32); } else { CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20], - (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * 32, + (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * TILE_SIZE_4BPP, 32); } } @@ -1436,7 +1436,7 @@ void SwapHpBarsWithHpText(void) { healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId; - CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 0x100); + CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x100); UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT); UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX); } @@ -1444,7 +1444,7 @@ void SwapHpBarsWithHpText(void) { UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]); UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR); - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32); } } else @@ -1970,7 +1970,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) break; } - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER) { @@ -2008,9 +2008,9 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId; if (noStatus) - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32); else - CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32); + CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32); } static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) @@ -2068,10 +2068,10 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39); for (i = 0; i < 3; i++) - CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32); + CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32); if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 64); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64); TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE); return; @@ -2082,13 +2082,13 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2); CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2); - CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96); + CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96); if (IsDoubleBattle() == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) { if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) { - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 32); - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * 32), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32); + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32); } } TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE); @@ -2160,7 +2160,7 @@ static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId) u8 *windowTileData; windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId); - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6); TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2); RemoveWindowOnHealthbox(windowId); @@ -2177,7 +2177,7 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, 2, &windowId); - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32; + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2); SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4); RemoveWindowOnHealthbox(windowId); @@ -2323,10 +2323,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar) u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId; if (i < 2) CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32, - (void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * 32), 32); + (void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32); else CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32, - (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * 32), 32); + (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32); } break; case EXP_BAR: @@ -2345,10 +2345,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar) { if (i < 4) CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32, - (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32); + (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32); else CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32, - (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * 32), 32); + (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32); } break; } @@ -2571,16 +2571,16 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp) return result; } -static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId) +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId) { u16 winId; u8 color[3]; struct WindowTemplate winTemplate = sHealthboxWindowTemplate; winId = AddWindow(&winTemplate); - FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3)); + FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor)); - color[0] = arg3; + color[0] = bgColor; color[1] = 1; color[2] = 3; @@ -2597,31 +2597,31 @@ static void RemoveWindowOnHealthbox(u32 windowId) static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2) { - CpuFill32(0x11111111 * arg1, dest, arg2 * 32); + CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP); } -static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2) +static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth) { - CpuCopy32(windowTileData + 256, dest, arg2 * 32); + CpuCopy32(windowTileData + 256, dest, windowWidth * TILE_SIZE_4BPP); } -static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2) +static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth) { - CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32); - - if (arg2 > 0) + CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP); +// + 256 as that prevents the top 4 blank rows of sHealthboxWindowTemplate from being copied + if (windowWidth > 0) { do { CpuCopy32(windowTileData + 20, dest + 20, 12); dest += 32, windowTileData += 32; - arg2--; - } while (arg2 != 0); + windowWidth--; + } while (windowWidth != 0); } } -static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2) +static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth) { - CpuCopy32(windowTileData, dest, arg2 * 32); - CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32); + CpuCopy32(windowTileData, dest, windowWidth * TILE_SIZE_4BPP); + CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP); } diff --git a/src/battle_main.c b/src/battle_main.c index 116f5963a..8bdd2220b 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -166,7 +166,7 @@ static void HandleAction_WatchesCarefully(void); static void HandleAction_SafariZoneBallThrow(void); static void HandleAction_ThrowPokeblock(void); static void HandleAction_GoNear(void); -static void HandleAction_SafriZoneRun(void); +static void HandleAction_SafariZoneRun(void); static void HandleAction_WallyBallThrow(void); static void HandleAction_Action11(void); static void HandleAction_NothingIsFainted(void); @@ -515,7 +515,7 @@ static void (* const sTurnActionsFuncsTable[])(void) = HandleAction_SafariZoneBallThrow, // B_ACTION_SAFARI_BALL HandleAction_ThrowPokeblock, // B_ACTION_SAFARI_POKEBLOCK HandleAction_GoNear, // B_ACTION_SAFARI_GO_NEAR - HandleAction_SafriZoneRun, // B_ACTION_SAFARI_RUN + HandleAction_SafariZoneRun, // B_ACTION_SAFARI_RUN HandleAction_WallyBallThrow, // B_ACTION_WALLY_THROW HandleAction_RunBattleScript, // B_ACTION_EXEC_SCRIPT HandleAction_Action11, // not sure about this one @@ -5783,7 +5783,7 @@ static void HandleAction_GoNear(void) gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } -static void HandleAction_SafriZoneRun(void) +static void HandleAction_SafariZoneRun(void) { gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; PlaySE(SE_NIGERU); diff --git a/src/battle_message.c b/src/battle_message.c index 44ea5d7d7..47c4cbe1d 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1,25 +1,25 @@ #include "global.h" #include "battle.h" +#include "battle_controllers.h" #include "battle_message.h" -#include "constants/battle_string_ids.h" -#include "constants/moves.h" -#include "text.h" -#include "string_util.h" -#include "constants/items.h" -#include "constants/trainers.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "data2.h" #include "event_data.h" -#include "link.h" +#include "frontier_util.h" +#include "international_string_util.h" #include "item.h" -#include "window.h" -#include "palette.h" -#include "battle_controllers.h" -#include "battle_setup.h" +#include "link.h" #include "menu.h" +#include "palette.h" #include "recorded_battle.h" -#include "international_string_util.h" -#include "frontier_util.h" -#include "battle_tower.h" -#include "data2.h" +#include "string_util.h" +#include "text.h" +#include "window.h" +#include "constants/battle_string_ids.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/trainers.h" struct BattleWindowText { @@ -1367,7 +1367,8 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { - { // 0 +// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c + { // 0 Standard battle message .fillValue = 0xFF, .fontId = 1, .x = 0, @@ -1379,7 +1380,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 15, .shadowColor = 6, }, - { // 1 + { // 1 "What will (pokemon) do?" .fillValue = 0xFF, .fontId = 1, .x = 1, @@ -1391,7 +1392,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 15, .shadowColor = 6, }, - { // 2 + { // 2 "Fight/Pokemon/Bag/Run" .fillValue = 0xEE, .fontId = 1, .x = 0, @@ -1403,7 +1404,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 3 + { // 3 Top left move .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1415,7 +1416,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 4 + { // 4 Top right move .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1427,7 +1428,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 5 + { // 5 Bottom left move .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1439,7 +1440,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 6 + { // 6 Bottom right move .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1451,7 +1452,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 7 + { // 7 "PP" .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1475,7 +1476,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 9 + { // 9 PP remaining .fillValue = 0xEE, .fontId = 1, .x = 2, @@ -1487,7 +1488,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 11, }, - { // 10 + { // 10 "type" .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1499,7 +1500,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 11 + { // 11 "switch which?" .fillValue = 0xEE, .fontId = 7, .x = 0, @@ -1511,7 +1512,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .bgColor = 14, .shadowColor = 15, }, - { // 12 + { // 12 "gText_BattleYesNoChoice" .fillValue = 0xEE, .fontId = 1, .x = 0, diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 01f138925..4bbc74dee 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -29,7 +29,7 @@ #include "constants/maps.h" #include "constants/moves.h" -extern u8 gUnknown_0203CEF8[3]; +extern u8 gSelectedOrderFromParty[3]; extern void door_upload_tiles(void); extern const struct MapLayout *const gMapLayouts[]; @@ -550,14 +550,14 @@ static void sub_81A9834(void) SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k); } gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j]; - gUnknown_0203CEF8[j] = id + 1; + gSelectedOrderFromParty[j] = id + 1; break; } } } for (i = 0; i < 3; i++) - gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i]; + gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; } static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2) @@ -1,15 +1,22 @@ #include "global.h" #include "battle_anim.h" +#include "gpu_regs.h" +#include "trig.h" #include "constants/rgb.h" -extern void sub_8110368(struct Sprite *); -extern void sub_8110438(struct Sprite *); -extern void sub_81104E4(struct Sprite *); -extern void sub_81105B4(struct Sprite *); -extern void sub_811067C(struct Sprite *); -extern void sub_8110720(struct Sprite *); -extern void sub_8110850(struct Sprite *); -extern void sub_8110994(struct Sprite *); +void sub_8110368(struct Sprite *); +void sub_8110438(struct Sprite *); +void sub_81104E4(struct Sprite *); +void sub_81105B4(struct Sprite *); +void sub_811067C(struct Sprite *); +void AnimTranslateStinger(struct Sprite *); +void AnimMissileArc(struct Sprite *); +void sub_8110994(struct Sprite *); +static void sub_811057C(struct Sprite *); +static void sub_8110630(struct Sprite *); +static void sub_81106A4(struct Sprite *); +static void sub_8110700(struct Sprite *); +static void AnimMissileArcStep(struct Sprite *); const union AffineAnimCmd gUnknown_08596938[] = { @@ -136,7 +143,7 @@ const struct SpriteTemplate gLinearStingerSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8110720, + .callback = AnimTranslateStinger, }; const struct SpriteTemplate gPinMissileSpriteTemplate = @@ -147,7 +154,7 @@ const struct SpriteTemplate gPinMissileSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8110850, + .callback = AnimMissileArc, }; const struct SpriteTemplate gIcicleSpearSpriteTemplate = @@ -158,7 +165,7 @@ const struct SpriteTemplate gIcicleSpearSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8110850, + .callback = AnimMissileArc, }; const union AffineAnimCmd gUnknown_08596A8C[] = @@ -187,3 +194,291 @@ const struct SpriteTemplate gUnknown_08596AC8 = .affineAnims = gUnknown_08596AC4, .callback = sub_8110994, }; + +void sub_8110368(struct Sprite *sprite) +{ + if (IsContest()) + { + StartSpriteAffineAnim(sprite, 2); + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + else if (!GetBattlerSide(gBattleAnimTarget)) + { + StartSpriteAffineAnim(sprite, 1); + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + 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); +} + +void sub_8110438(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + StartSpriteAffineAnim(sprite, 2); + } + else if (!GetBattlerSide(gBattleAnimTarget)) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_81104E4(struct Sprite *sprite) +{ + if (IsContest()) + gBattleAnimArgs[2] /= 2; + + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + + if (!gBattleAnimArgs[4]) + { + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + } + else + { + SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]); + } + + sub_80A6FD4(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_811057C; +} + +static void sub_811057C(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite)) + { + DestroyAnimSprite(sprite); + return; + } + + sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]); + sprite->data[6] = (sprite->data[6] + 13) & 0xFF; +} + +void sub_81105B4(struct Sprite *sprite) +{ + SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + if (GetBattlerSide(gBattleAnimAttacker)) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (!GetBattlerSide(gBattleAnimTarget)) + sprite->pos1.y += 8; + + sprite->callback = sub_8110630; +} + +static void sub_8110630(struct Sprite *sprite) +{ + if (++sprite->data[0] == 3) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + } + + if (++sprite->data[1] == 51) + { + DestroyAnimSprite(sprite); + } +} + +void sub_811067C(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + + sprite->data[0] = 16; + sprite->callback = sub_81106A4; +} + +static void sub_81106A4(struct Sprite *sprite) +{ + if (sprite->data[2] < 20) + { + sprite->data[2]++; + } + else if (sprite->data[1]++ & 1) + { + sprite->data[0]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + + if (sprite->data[0] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_8110700; + } + } +} + +static void sub_8110700(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +// Translates a stinger sprite linearly to a destination location. The sprite is +// initially rotated so that it appears to be traveling in a straight line. +// 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 +void AnimTranslateStinger(struct Sprite *sprite) +{ + s16 lVarX, lVarY; + u16 rot; + + if (IsContest()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + } + + if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + { + if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT + || GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT) + { + s16 temp1, temp2; + + temp1 = gBattleAnimArgs[2]; + gBattleAnimArgs[2] = -temp1; + + temp2 = gBattleAnimArgs[0]; + gBattleAnimArgs[0] = -temp2; + } + } + + InitAnimSpritePos(sprite, 1); + + lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y); + rot += 0xC000; + sub_80A73E0(sprite, FALSE, 0x100, 0x100, rot); + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = lVarX; + sprite->data[4] = lVarY; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Rotates sprite and moves it in an arc, so that it appears like a missle or arrow traveling. +// 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 +// arg 5: wave amplitude +void AnimMissileArc(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, 1); + + if (GetBattlerSide(gBattleAnimAttacker)) + 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->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + + sprite->callback = AnimMissileArcStep; + sprite->invisible = TRUE; +} + +static void AnimMissileArcStep(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + + if (TranslateAnimArc(sprite)) + { + DestroyAnimSprite(sprite); + } + else + { + s16 tempData[8]; + u16 *data = sprite->data; + u16 x1 = sprite->pos1.x; + s16 x2 = sprite->pos2.x; + u16 y1 = sprite->pos1.y; + s16 y2 = sprite->pos2.y; + int i; + + for (i = 0; i < 8; i++) + tempData[i] = data[i]; + + x2 += x1; + y2 += y1; + + if (!TranslateAnimArc(sprite)) + { + u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2, + sprite->pos1.y + sprite->pos2.y - y2); + rotation += 0xC000; + sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation); + + for (i = 0; i < 8; i++) + data[i] = tempData[i]; + } + } +} + +void sub_8110994(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; + } + + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80A67BC; +} diff --git a/src/cable_club.c b/src/cable_club.c index b0e5f0500..56154d5bf 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -31,7 +31,7 @@ #include "constants/songs.h" extern u8 gUnknown_02032298[2]; -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; static const struct WindowTemplate gUnknown_08550594 = { .bg = 0, @@ -358,8 +358,8 @@ static void sub_80B2918(u8 taskId) sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); - card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL); - card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gTasks[taskId].func = sub_80B2C30; } } @@ -405,8 +405,8 @@ static void sub_80B2A08(u8 taskId) sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); - card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL); - card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL); + card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gTasks[taskId].func = sub_80B2C30; sub_800A4D8(2); } @@ -800,7 +800,7 @@ static void sub_80B3260(int a0) gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER; break; case 5: - ReducePlayerPartyToThree(); + ReducePlayerPartyToSelectedMons(); gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI; break; case 9: diff --git a/src/contest_ai.c b/src/contest_ai.c index 3324ddf87..1342ea102 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -4,8 +4,6 @@ #include "contest_ai.h" #include "contest_effect.h" -extern u16 gContestMonConditions[]; - extern const u8 *gAIScriptPtr; extern const u8 *gContestAIs[]; diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 877bf3475..29d0ff32e 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -47,211 +47,212 @@ const struct MonCoords gMonBackPicCoords[] = {0x66, 0x0a}, // SPECIES_GLOOM {0x87, 0x07}, // SPECIES_VILEPLUME {0x63, 0x14}, // SPECIES_PARAS - {0x87, 0x07}, // SPECIES_VENONAT - {0x77, 0x06}, // SPECIES_VENOMOTH - {0x77, 0x04}, // SPECIES_DIGLETT - {0x54, 0x10}, // SPECIES_DUGTRIO - {0x66, 0x0b}, // SPECIES_MEOWTH - {0x65, 0x0c}, // SPECIES_PERSIAN - {0x87, 0x07}, // SPECIES_PSYDUCK - {0x67, 0x07}, // SPECIES_GOLDUCK - {0x77, 0x05}, // SPECIES_MANKEY - {0x76, 0x0b}, // SPECIES_PRIMEAPE - {0x77, 0x07}, // SPECIES_GROWLITHE - {0x66, 0x08}, // SPECIES_ARCANINE - {0x87, 0x06}, // SPECIES_POLIWAG - {0x74, 0x10}, // SPECIES_POLIWHIRL - {0x65, 0x0c}, // SPECIES_POLIWRATH - {0x86, 0x0b}, // SPECIES_ABRA - {0x66, 0x0b}, // SPECIES_KADABRA - {0x76, 0x08}, // SPECIES_ALAKAZAM - {0x67, 0x05}, // SPECIES_MACHOP - {0x65, 0x0c}, // SPECIES_MACHOKE - {0x76, 0x09}, // SPECIES_MACHAMP - {0x67, 0x04}, // SPECIES_BELLSPROUT - {0x66, 0x0a}, // SPECIES_WEEPINBELL - {0x66, 0x09}, // SPECIES_VICTREEBEL - {0x87, 0x06}, // SPECIES_TENTACOOL - {0x56, 0x0a}, // SPECIES_TENTACRUEL - {0x86, 0x0b}, // SPECIES_GEODUDE - {0x66, 0x0b}, // SPECIES_GRAVELER - {0x75, 0x0c}, // SPECIES_GOLEM - {0x84, 0x10}, // SPECIES_PONYTA - {0x66, 0x09}, // SPECIES_RAPIDASH - {0x87, 0x05}, // SPECIES_SLOWPOKE - {0x85, 0x0e}, // SPECIES_SLOWBRO - {0x86, 0x0a}, // SPECIES_MAGNEMITE - {0x43, 0x14}, // SPECIES_MAGNETON + {0x87, 0x07}, // SPECIES_PARASECT + {0x77, 0x06}, // SPECIES_VENONAT + {0x77, 0x04}, // SPECIES_VENOMOTH + {0x54, 0x10}, // SPECIES_DIGLETT + {0x66, 0x0b}, // SPECIES_DUGTRIO + {0x65, 0x0c}, // SPECIES_MEOWTH + {0x87, 0x07}, // SPECIES_PERSIAN + {0x67, 0x07}, // SPECIES_PSYDUCK + {0x77, 0x05}, // SPECIES_GOLDUCK + {0x76, 0x0b}, // SPECIES_MANKEY + {0x77, 0x07}, // SPECIES_PRIMEAPE + {0x66, 0x08}, // SPECIES_GROWLITHE + {0x87, 0x06}, // SPECIES_ARCANINE + {0x74, 0x10}, // SPECIES_POLIWAG + {0x65, 0x0c}, // SPECIES_POLIWHIRL + {0x86, 0x0b}, // SPECIES_POLIWRATH + {0x66, 0x0b}, // SPECIES_ABRA + {0x76, 0x08}, // SPECIES_KADABRA + {0x67, 0x05}, // SPECIES_ALAKAZAM + {0x65, 0x0c}, // SPECIES_MACHOP + {0x76, 0x09}, // SPECIES_MACHOKE + {0x67, 0x04}, // SPECIES_MACHAMP + {0x66, 0x0a}, // SPECIES_BELLSPROUT + {0x66, 0x09}, // SPECIES_WEEPINBELL + {0x87, 0x06}, // SPECIES_VICTREEBEL + {0x56, 0x0a}, // SPECIES_TENTACOOL + {0x86, 0x0b}, // SPECIES_TENTACRUEL + {0x66, 0x0b}, // SPECIES_GEODUDE + {0x75, 0x0c}, // SPECIES_GRAVELER + {0x84, 0x10}, // SPECIES_GOLEM + {0x66, 0x09}, // SPECIES_PONYTA + {0x87, 0x05}, // SPECIES_RAPIDASH + {0x85, 0x0e}, // SPECIES_SLOWPOKE + {0x86, 0x0a}, // SPECIES_SLOWBRO + {0x43, 0x14}, // SPECIES_MAGNEMITE + {0x66, 0x0a}, // SPECIES_MAGNETON {0x66, 0x0a}, // SPECIES_FARFETCHD - {0x66, 0x0a}, // SPECIES_DODUO - {0x66, 0x08}, // SPECIES_DODRIO - {0x88, 0x01}, // SPECIES_SEEL - {0x66, 0x0a}, // SPECIES_DEWGONG - {0x77, 0x05}, // SPECIES_GRIMER - {0x75, 0x0c}, // SPECIES_MUK - {0x87, 0x05}, // SPECIES_SHELLDER - {0x76, 0x0b}, // SPECIES_CLOYSTER - {0x87, 0x06}, // SPECIES_GASTLY - {0x85, 0x0e}, // SPECIES_HAUNTER - {0x76, 0x08}, // SPECIES_GENGAR - {0x76, 0x09}, // SPECIES_ONIX - {0x78, 0x00}, // SPECIES_DROWZEE - {0x65, 0x0d}, // SPECIES_HYPNO - {0x66, 0x09}, // SPECIES_KRABBY - {0x66, 0x0a}, // SPECIES_KINGLER - {0x77, 0x04}, // SPECIES_VOLTORB - {0x55, 0x0e}, // SPECIES_ELECTRODE + {0x66, 0x08}, // SPECIES_DODUO + {0x88, 0x01}, // SPECIES_DODRIO + {0x66, 0x0a}, // SPECIES_SEEL + {0x77, 0x05}, // SPECIES_DEWGONG + {0x75, 0x0c}, // SPECIES_GRIMER + {0x87, 0x05}, // SPECIES_MUK + {0x76, 0x0b}, // SPECIES_SHELLDER + {0x87, 0x06}, // SPECIES_CLOYSTER + {0x85, 0x0e}, // SPECIES_GASTLY + {0x76, 0x08}, // SPECIES_HAUNTER + {0x76, 0x09}, // SPECIES_GENGAR + {0x78, 0x00}, // SPECIES_ONIX + {0x65, 0x0d}, // SPECIES_DROWZEE + {0x66, 0x09}, // SPECIES_HYPNO + {0x66, 0x0a}, // SPECIES_KRABBY + {0x77, 0x04}, // SPECIES_KINGLER + {0x55, 0x0e}, // SPECIES_VOLTORB + {0x65, 0x0d}, // SPECIES_ELECTRODE {0x65, 0x0d}, // SPECIES_EXEGGCUTE - {0x65, 0x0d}, // SPECIES_EXEGGUTOR - {0x87, 0x04}, // SPECIES_CUBONE - {0x66, 0x0a}, // SPECIES_MAROWAK - {0x66, 0x08}, // SPECIES_HITMONLEE + {0x87, 0x04}, // SPECIES_EXEGGUTOR + {0x66, 0x0a}, // SPECIES_CUBONE + {0x66, 0x08}, // SPECIES_MAROWAK + {0x65, 0x0c}, // SPECIES_HITMONLEE {0x65, 0x0c}, // SPECIES_HITMONCHAN - {0x65, 0x0c}, // SPECIES_LICKITUNG - {0x65, 0x0e}, // SPECIES_KOFFING - {0x66, 0x09}, // SPECIES_WEEZING - {0x77, 0x06}, // SPECIES_RHYHORN - {0x85, 0x0c}, // SPECIES_RHYDON - {0x88, 0x03}, // SPECIES_CHANSEY - {0x86, 0x0b}, // SPECIES_TANGELA - {0x85, 0x0e}, // SPECIES_KANGASKHAN - {0x77, 0x05}, // SPECIES_HORSEA - {0x66, 0x09}, // SPECIES_SEADRA + {0x65, 0x0e}, // SPECIES_LICKITUNG + {0x66, 0x09}, // SPECIES_KOFFING + {0x77, 0x06}, // SPECIES_WEEZING + {0x85, 0x0c}, // SPECIES_RHYHORN + {0x88, 0x03}, // SPECIES_RHYDON + {0x86, 0x0b}, // SPECIES_CHANSEY + {0x85, 0x0e}, // SPECIES_TANGELA + {0x77, 0x05}, // SPECIES_KANGASKHAN + {0x66, 0x09}, // SPECIES_HORSEA + {0x66, 0x08}, // SPECIES_SEADRA {0x66, 0x08}, // SPECIES_GOLDEEN - {0x66, 0x08}, // SPECIES_SEAKING - {0x76, 0x0b}, // SPECIES_STARYU - {0x65, 0x0d}, // SPECIES_STARMIE - {0x85, 0x0e}, // SPECIES_MR_MIME - {0x85, 0x0d}, // SPECIES_SCYTHER - {0x77, 0x07}, // SPECIES_JYNX - {0x86, 0x0a}, // SPECIES_ELECTABUZZ + {0x76, 0x0b}, // SPECIES_SEAKING + {0x65, 0x0d}, // SPECIES_STARYU + {0x85, 0x0e}, // SPECIES_STARMIE + {0x85, 0x0d}, // SPECIES_MR_MIME + {0x77, 0x07}, // SPECIES_SCYTHER + {0x86, 0x0a}, // SPECIES_JYNX + {0x66, 0x08}, // SPECIES_ELECTABUZZ {0x66, 0x08}, // SPECIES_MAGMAR - {0x66, 0x08}, // SPECIES_PINSIR - {0x66, 0x09}, // SPECIES_TAUROS - {0x85, 0x0d}, // SPECIES_MAGIKARP - {0x76, 0x09}, // SPECIES_GYARADOS - {0x78, 0x00}, // SPECIES_LAPRAS - {0x77, 0x04}, // SPECIES_DITTO - {0x54, 0x11}, // SPECIES_EEVEE + {0x66, 0x09}, // SPECIES_PINSIR + {0x85, 0x0d}, // SPECIES_TAUROS + {0x76, 0x09}, // SPECIES_MAGIKARP + {0x78, 0x00}, // SPECIES_GYARADOS + {0x77, 0x04}, // SPECIES_LAPRAS + {0x54, 0x11}, // SPECIES_DITTO + {0x66, 0x0a}, // SPECIES_EEVEE {0x66, 0x0a}, // SPECIES_VAPOREON - {0x66, 0x0a}, // SPECIES_JOLTEON - {0x87, 0x06}, // SPECIES_FLAREON - {0x67, 0x05}, // SPECIES_PORYGON - {0x65, 0x0d}, // SPECIES_OMANYTE - {0x66, 0x0a}, // SPECIES_OMASTAR - {0x66, 0x08}, // SPECIES_KABUTO - {0x65, 0x0d}, // SPECIES_KABUTOPS - {0x77, 0x05}, // SPECIES_AERODACTYL - {0x86, 0x08}, // SPECIES_SNORLAX - {0x86, 0x0b}, // SPECIES_ARTICUNO - {0x65, 0x0c}, // SPECIES_ZAPDOS - {0x76, 0x0b}, // SPECIES_MOLTRES - {0x87, 0x04}, // SPECIES_DRATINI - {0x66, 0x09}, // SPECIES_DRAGONAIR - {0x78, 0x00}, // SPECIES_DRAGONITE - {0x87, 0x06}, // SPECIES_MEWTWO - {0x78, 0x01}, // SPECIES_MEW - {0x66, 0x08}, // SPECIES_CHIKORITA - {0x56, 0x0a}, // SPECIES_BAYLEEF - {0x66, 0x08}, // SPECIES_MEGANIUM - {0x78, 0x00}, // SPECIES_CYNDAQUIL - {0x76, 0x09}, // SPECIES_QUILAVA + {0x87, 0x06}, // SPECIES_JOLTEON + {0x67, 0x05}, // SPECIES_FLAREON + {0x65, 0x0d}, // SPECIES_PORYGON + {0x66, 0x0a}, // SPECIES_OMANYTE + {0x66, 0x08}, // SPECIES_OMASTAR + {0x65, 0x0d}, // SPECIES_KABUTO + {0x77, 0x05}, // SPECIES_KABUTOPS + {0x86, 0x08}, // SPECIES_AERODACTYL + {0x86, 0x0b}, // SPECIES_SNORLAX + {0x65, 0x0c}, // SPECIES_ARTICUNO + {0x76, 0x0b}, // SPECIES_ZAPDOS + {0x87, 0x04}, // SPECIES_MOLTRES + {0x66, 0x09}, // SPECIES_DRATINI + {0x78, 0x00}, // SPECIES_DRAGONAIR + {0x87, 0x06}, // SPECIES_DRAGONITE + {0x78, 0x01}, // SPECIES_MEWTWO + {0x66, 0x08}, // SPECIES_MEW + {0x56, 0x0a}, // SPECIES_CHIKORITA + {0x66, 0x08}, // SPECIES_BAYLEEF + {0x78, 0x00}, // SPECIES_MEGANIUM + {0x76, 0x09}, // SPECIES_CYNDAQUIL + {0x87, 0x04}, // SPECIES_QUILAVA {0x87, 0x04}, // SPECIES_TYPHLOSION - {0x87, 0x04}, // SPECIES_TOTODILE - {0x66, 0x0b}, // SPECIES_CROCONAW - {0x67, 0x07}, // SPECIES_FERALIGATR - {0x88, 0x01}, // SPECIES_SENTRET - {0x67, 0x05}, // SPECIES_FURRET + {0x66, 0x0b}, // SPECIES_TOTODILE + {0x67, 0x07}, // SPECIES_CROCONAW + {0x88, 0x01}, // SPECIES_FERALIGATR + {0x67, 0x05}, // SPECIES_SENTRET + {0x66, 0x08}, // SPECIES_FURRET {0x66, 0x08}, // SPECIES_HOOTHOOT - {0x66, 0x08}, // SPECIES_NOCTOWL - {0x68, 0x03}, // SPECIES_LEDYBA - {0x76, 0x0b}, // SPECIES_LEDIAN - {0x77, 0x07}, // SPECIES_SPINARAK - {0x73, 0x15}, // SPECIES_ARIADOS - {0x86, 0x0b}, // SPECIES_CROBAT - {0x87, 0x05}, // SPECIES_CHINCHOU + {0x68, 0x03}, // SPECIES_NOCTOWL + {0x76, 0x0b}, // SPECIES_LEDYBA + {0x77, 0x07}, // SPECIES_LEDIAN + {0x73, 0x15}, // SPECIES_SPINARAK + {0x86, 0x0b}, // SPECIES_ARIADOS + {0x87, 0x05}, // SPECIES_CROBAT + {0x86, 0x08}, // SPECIES_CHINCHOU {0x86, 0x08}, // SPECIES_LANTURN - {0x86, 0x08}, // SPECIES_PICHU - {0x66, 0x0b}, // SPECIES_CLEFFA - {0x65, 0x0f}, // SPECIES_IGGLYBUFF - {0x66, 0x0b}, // SPECIES_TOGEPI - {0x54, 0x10}, // SPECIES_TOGETIC - {0x66, 0x08}, // SPECIES_NATU - {0x54, 0x11}, // SPECIES_XATU - {0x76, 0x08}, // SPECIES_MAREEP + {0x66, 0x0b}, // SPECIES_PICHU + {0x65, 0x0f}, // SPECIES_CLEFFA + {0x66, 0x0b}, // SPECIES_IGGLYBUFF + {0x54, 0x10}, // SPECIES_TOGEPI + {0x66, 0x08}, // SPECIES_TOGETIC + {0x54, 0x11}, // SPECIES_NATU + {0x76, 0x08}, // SPECIES_XATU + {0x66, 0x09}, // SPECIES_MAREEP {0x66, 0x09}, // SPECIES_FLAAFFY - {0x66, 0x09}, // SPECIES_AMPHAROS - {0x88, 0x01}, // SPECIES_BELLOSSOM - {0x66, 0x0b}, // SPECIES_MARILL - {0x75, 0x0c}, // SPECIES_AZUMARILL - {0x86, 0x08}, // SPECIES_SUDOWOODO - {0x66, 0x08}, // SPECIES_POLITOED - {0x66, 0x09}, // SPECIES_HOPPIP - {0x66, 0x0b}, // SPECIES_SKIPLOOM - {0x65, 0x0d}, // SPECIES_JUMPLUFF - {0x87, 0x04}, // SPECIES_AIPOM - {0x66, 0x09}, // SPECIES_SUNKERN - {0x56, 0x0a}, // SPECIES_SUNFLORA - {0x66, 0x08}, // SPECIES_YANMA - {0x77, 0x04}, // SPECIES_WOOPER - {0x85, 0x0f}, // SPECIES_QUAGSIRE - {0x76, 0x08}, // SPECIES_ESPEON - {0x76, 0x0b}, // SPECIES_UMBREON - {0x87, 0x04}, // SPECIES_MURKROW - {0x66, 0x09}, // SPECIES_SLOWKING - {0x66, 0x08}, // SPECIES_MISDREAVUS - {0x66, 0x0a}, // SPECIES_UNOWN - {0x36, 0x08}, // SPECIES_WOBBUFFET - {0x75, 0x0c}, // SPECIES_GIRAFARIG - {0x87, 0x05}, // SPECIES_PINECO - {0x65, 0x0f}, // SPECIES_FORRETRESS - {0x84, 0x10}, // SPECIES_DUNSPARCE - {0x85, 0x0f}, // SPECIES_GLIGAR - {0x87, 0x05}, // SPECIES_STEELIX - {0x88, 0x00}, // SPECIES_SNUBBULL - {0x76, 0x0a}, // SPECIES_GRANBULL - {0x87, 0x05}, // SPECIES_QWILFISH - {0x77, 0x07}, // SPECIES_SCIZOR - {0x77, 0x04}, // SPECIES_SHUCKLE - {0x56, 0x0b}, // SPECIES_HERACROSS - {0x77, 0x04}, // SPECIES_SNEASEL + {0x88, 0x01}, // SPECIES_AMPHAROS + {0x66, 0x0b}, // SPECIES_BELLOSSOM + {0x75, 0x0c}, // SPECIES_MARILL + {0x86, 0x08}, // SPECIES_AZUMARILL + {0x66, 0x08}, // SPECIES_SUDOWOODO + {0x66, 0x09}, // SPECIES_POLITOED + {0x66, 0x0b}, // SPECIES_HOPPIP + {0x65, 0x0d}, // SPECIES_SKIPLOOM + {0x87, 0x04}, // SPECIES_JUMPLUFF + {0x66, 0x09}, // SPECIES_AIPOM + {0x56, 0x0a}, // SPECIES_SUNKERN + {0x66, 0x08}, // SPECIES_SUNFLORA + {0x77, 0x04}, // SPECIES_YANMA + {0x85, 0x0f}, // SPECIES_WOOPER + {0x76, 0x08}, // SPECIES_QUAGSIRE + {0x76, 0x0b}, // SPECIES_ESPEON + {0x87, 0x04}, // SPECIES_UMBREON + {0x66, 0x09}, // SPECIES_MURKROW + {0x66, 0x08}, // SPECIES_SLOWKING + {0x66, 0x0a}, // SPECIES_MISDREAVUS + {0x36, 0x08}, // SPECIES_UNOWN + {0x75, 0x0c}, // SPECIES_WOBBUFFET + {0x87, 0x05}, // SPECIES_GIRAFARIG + {0x65, 0x0f}, // SPECIES_PINECO + {0x84, 0x10}, // SPECIES_FORRETRESS + {0x85, 0x0f}, // SPECIES_DUNSPARCE + {0x87, 0x05}, // SPECIES_GLIGAR + {0x88, 0x00}, // SPECIES_STEELIX + {0x76, 0x0a}, // SPECIES_SNUBBULL + {0x87, 0x05}, // SPECIES_GRANBULL + {0x77, 0x07}, // SPECIES_QWILFISH + {0x77, 0x04}, // SPECIES_SCIZOR + {0x56, 0x0b}, // SPECIES_SHUCKLE + {0x77, 0x04}, // SPECIES_HERACROSS + {0x66, 0x08}, // SPECIES_SNEASEL {0x66, 0x08}, // SPECIES_TEDDIURSA - {0x66, 0x08}, // SPECIES_URSARING - {0x88, 0x03}, // SPECIES_SLUGMA - {0x66, 0x08}, // SPECIES_MAGCARGO - {0x76, 0x09}, // SPECIES_SWINUB - {0x63, 0x15}, // SPECIES_PILOSWINE - {0x75, 0x0d}, // SPECIES_CORSOLA - {0x65, 0x0c}, // SPECIES_REMORAID - {0x75, 0x0d}, // SPECIES_OCTILLERY - {0x66, 0x0a}, // SPECIES_DELIBIRD - {0x67, 0x06}, // SPECIES_MANTINE - {0x87, 0x07}, // SPECIES_SKARMORY - {0x87, 0x04}, // SPECIES_HOUNDOUR - {0x55, 0x0c}, // SPECIES_HOUNDOOM - {0x87, 0x07}, // SPECIES_KINGDRA - {0x87, 0x06}, // SPECIES_PHANPY - {0x65, 0x0e}, // SPECIES_DONPHAN - {0x85, 0x0d}, // SPECIES_PORYGON2 - {0x76, 0x0a}, // SPECIES_STANTLER - {0x78, 0x03}, // SPECIES_SMEARGLE - {0x76, 0x0a}, // SPECIES_TYROGUE - {0x66, 0x08}, // SPECIES_HITMONTOP - {0x87, 0x05}, // SPECIES_SMOOCHUM - {0x56, 0x09}, // SPECIES_ELEKID - {0x66, 0x08}, // SPECIES_MAGBY - {0x66, 0x0b}, // SPECIES_MILTANK - {0x87, 0x07}, // SPECIES_BLISSEY - {0x85, 0x0d}, // SPECIES_RAIKOU - {0x86, 0x0a}, // SPECIES_ENTEI - {0x87, 0x06}, // SPECIES_SUICUNE - {0x88, 0x03}, // SPECIES_LARVITAR - {0x66, 0x08}, // SPECIES_PUPITAR - {0x67, 0x05}, // SPECIES_TYRANITAR - {0x88, 0x00}, // SPECIES_LUGIA + {0x88, 0x03}, // SPECIES_URSARING + {0x66, 0x08}, // SPECIES_SLUGMA + {0x76, 0x09}, // SPECIES_MAGCARGO + {0x63, 0x15}, // SPECIES_SWINUB + {0x75, 0x0d}, // SPECIES_PILOSWINE + {0x65, 0x0c}, // SPECIES_CORSOLA + {0x75, 0x0d}, // SPECIES_REMORAID + {0x66, 0x0a}, // SPECIES_OCTILLERY + {0x67, 0x06}, // SPECIES_DELIBIRD + {0x87, 0x07}, // SPECIES_MANTINE + {0x87, 0x04}, // SPECIES_SKARMORY + {0x55, 0x0c}, // SPECIES_HOUNDOUR + {0x87, 0x07}, // SPECIES_HOUNDOOM + {0x87, 0x06}, // SPECIES_KINGDRA + {0x65, 0x0e}, // SPECIES_PHANPY + {0x85, 0x0d}, // SPECIES_DONPHAN + {0x76, 0x0a}, // SPECIES_PORYGON2 + {0x78, 0x03}, // SPECIES_STANTLER + {0x76, 0x0a}, // SPECIES_SMEARGLE + {0x66, 0x08}, // SPECIES_TYROGUE + {0x87, 0x05}, // SPECIES_HITMONTOP + {0x56, 0x09}, // SPECIES_SMOOCHUM + {0x66, 0x08}, // SPECIES_ELEKID + {0x66, 0x0b}, // SPECIES_MAGBY + {0x87, 0x07}, // SPECIES_MILTANK + {0x85, 0x0d}, // SPECIES_BLISSEY + {0x86, 0x0a}, // SPECIES_RAIKOU + {0x87, 0x06}, // SPECIES_ENTEI + {0x88, 0x03}, // SPECIES_SUICUNE + {0x66, 0x08}, // SPECIES_LARVITAR + {0x67, 0x05}, // SPECIES_PUPITAR + {0x88, 0x00}, // SPECIES_TYRANITAR + {0x88, 0x01}, // SPECIES_LUGIA {0x88, 0x01}, // SPECIES_HO_OH - {0x88, 0x01}, // SPECIES_CELEBI - {0x66, 0x08}, // SPECIES_OLD_UNOWN_B + {0x66, 0x08}, // SPECIES_CELEBI + {0x88, 0x02}, // SPECIES_OLD_UNOWN_B {0x88, 0x02}, // SPECIES_OLD_UNOWN_C {0x88, 0x02}, // SPECIES_OLD_UNOWN_D {0x88, 0x02}, // SPECIES_OLD_UNOWN_E @@ -276,168 +277,167 @@ const struct MonCoords gMonBackPicCoords[] = {0x88, 0x02}, // SPECIES_OLD_UNOWN_X {0x88, 0x02}, // SPECIES_OLD_UNOWN_Y {0x88, 0x02}, // SPECIES_OLD_UNOWN_Z - {0x88, 0x02}, // SPECIES_TREECKO - {0x87, 0x06}, // SPECIES_GROVYLE - {0x86, 0x08}, // SPECIES_SCEPTILE - {0x88, 0x01}, // SPECIES_TORCHIC - {0x67, 0x05}, // SPECIES_COMBUSKEN + {0x87, 0x06}, // SPECIES_TREECKO + {0x86, 0x08}, // SPECIES_GROVYLE + {0x88, 0x01}, // SPECIES_SCEPTILE + {0x67, 0x05}, // SPECIES_TORCHIC + {0x88, 0x00}, // SPECIES_COMBUSKEN {0x88, 0x00}, // SPECIES_BLAZIKEN - {0x88, 0x00}, // SPECIES_MUDKIP - {0x77, 0x05}, // SPECIES_MARSHTOMP - {0x87, 0x04}, // SPECIES_SWAMPERT - {0x87, 0x05}, // SPECIES_POOCHYENA - {0x76, 0x09}, // SPECIES_MIGHTYENA - {0x87, 0x04}, // SPECIES_ZIGZAGOON - {0x76, 0x0b}, // SPECIES_LINOONE - {0x85, 0x0f}, // SPECIES_WURMPLE - {0x76, 0x0b}, // SPECIES_SILCOON - {0x83, 0x15}, // SPECIES_BEAUTIFLY - {0x88, 0x00}, // SPECIES_CASCOON - {0x73, 0x14}, // SPECIES_DUSTOX - {0x83, 0x14}, // SPECIES_LOTAD - {0x75, 0x0f}, // SPECIES_LOMBRE - {0x86, 0x08}, // SPECIES_LUDICOLO - {0x86, 0x0a}, // SPECIES_SEEDOT - {0x86, 0x09}, // SPECIES_NUZLEAF - {0x76, 0x0a}, // SPECIES_SHIFTRY - {0x86, 0x08}, // SPECIES_NINCADA - {0x83, 0x14}, // SPECIES_NINJASK - {0x86, 0x08}, // SPECIES_SHEDINJA - {0x77, 0x06}, // SPECIES_TAILLOW - {0x64, 0x11}, // SPECIES_SWELLOW - {0x86, 0x08}, // SPECIES_SHROOMISH - {0x85, 0x0d}, // SPECIES_BRELOOM - {0x87, 0x04}, // SPECIES_SPINDA - {0x77, 0x04}, // SPECIES_WINGULL - {0x85, 0x0e}, // SPECIES_PELIPPER - {0x87, 0x06}, // SPECIES_SURSKIT - {0x86, 0x0b}, // SPECIES_MASQUERAIN - {0x88, 0x00}, // SPECIES_WAILMER - {0x83, 0x15}, // SPECIES_WAILORD - {0x83, 0x16}, // SPECIES_SKITTY - {0x86, 0x0a}, // SPECIES_DELCATTY - {0x86, 0x08}, // SPECIES_KECLEON - {0x87, 0x06}, // SPECIES_BALTOY - {0x86, 0x08}, // SPECIES_CLAYDOL - {0x87, 0x07}, // SPECIES_NOSEPASS - {0x85, 0x0c}, // SPECIES_TORKOAL - {0x86, 0x0a}, // SPECIES_SABLEYE - {0x76, 0x08}, // SPECIES_BARBOACH - {0x66, 0x0a}, // SPECIES_WHISCASH - {0x86, 0x0a}, // SPECIES_LUVDISC - {0x46, 0x0a}, // SPECIES_CORPHISH - {0x77, 0x07}, // SPECIES_CRAWDAUNT - {0x87, 0x05}, // SPECIES_FEEBAS - {0x67, 0x07}, // SPECIES_MILOTIC - {0x68, 0x02}, // SPECIES_CARVANHA - {0x87, 0x07}, // SPECIES_SHARPEDO - {0x88, 0x02}, // SPECIES_TRAPINCH - {0x75, 0x0e}, // SPECIES_VIBRAVA - {0x74, 0x11}, // SPECIES_FLYGON - {0x88, 0x02}, // SPECIES_MAKUHITA - {0x76, 0x0b}, // SPECIES_HARIYAMA - {0x87, 0x07}, // SPECIES_ELECTRIKE - {0x84, 0x10}, // SPECIES_MANECTRIC - {0x87, 0x04}, // SPECIES_NUMEL - {0x86, 0x0b}, // SPECIES_CAMERUPT - {0x84, 0x13}, // SPECIES_SPHEAL - {0x64, 0x12}, // SPECIES_SEALEO - {0x86, 0x0a}, // SPECIES_WALREIN - {0x87, 0x06}, // SPECIES_CACNEA - {0x85, 0x0f}, // SPECIES_CACTURNE - {0x87, 0x07}, // SPECIES_SNORUNT - {0x76, 0x0a}, // SPECIES_GLALIE - {0x85, 0x0c}, // SPECIES_LUNATONE + {0x77, 0x05}, // SPECIES_MUDKIP + {0x87, 0x04}, // SPECIES_MARSHTOMP + {0x87, 0x05}, // SPECIES_SWAMPERT + {0x76, 0x09}, // SPECIES_POOCHYENA + {0x87, 0x04}, // SPECIES_MIGHTYENA + {0x76, 0x0b}, // SPECIES_ZIGZAGOON + {0x85, 0x0f}, // SPECIES_LINOONE + {0x76, 0x0b}, // SPECIES_WURMPLE + {0x83, 0x15}, // SPECIES_SILCOON + {0x88, 0x00}, // SPECIES_BEAUTIFLY + {0x73, 0x14}, // SPECIES_CASCOON + {0x83, 0x14}, // SPECIES_DUSTOX + {0x75, 0x0f}, // SPECIES_LOTAD + {0x86, 0x08}, // SPECIES_LOMBRE + {0x86, 0x0a}, // SPECIES_LUDICOLO + {0x86, 0x09}, // SPECIES_SEEDOT + {0x76, 0x0a}, // SPECIES_NUZLEAF + {0x86, 0x08}, // SPECIES_SHIFTRY + {0x83, 0x14}, // SPECIES_NINCADA + {0x86, 0x08}, // SPECIES_NINJASK + {0x77, 0x06}, // SPECIES_SHEDINJA + {0x64, 0x11}, // SPECIES_TAILLOW + {0x86, 0x08}, // SPECIES_SWELLOW + {0x85, 0x0d}, // SPECIES_SHROOMISH + {0x87, 0x04}, // SPECIES_BRELOOM + {0x77, 0x04}, // SPECIES_SPINDA + {0x85, 0x0e}, // SPECIES_WINGULL + {0x87, 0x06}, // SPECIES_PELIPPER + {0x86, 0x0b}, // SPECIES_SURSKIT + {0x88, 0x00}, // SPECIES_MASQUERAIN + {0x83, 0x15}, // SPECIES_WAILMER + {0x83, 0x16}, // SPECIES_WAILORD + {0x86, 0x0a}, // SPECIES_SKITTY + {0x86, 0x08}, // SPECIES_DELCATTY + {0x87, 0x06}, // SPECIES_KECLEON + {0x86, 0x08}, // SPECIES_BALTOY + {0x87, 0x07}, // SPECIES_CLAYDOL + {0x85, 0x0c}, // SPECIES_NOSEPASS + {0x86, 0x0a}, // SPECIES_TORKOAL + {0x76, 0x08}, // SPECIES_SABLEYE + {0x66, 0x0a}, // SPECIES_BARBOACH + {0x86, 0x0a}, // SPECIES_WHISCASH + {0x46, 0x0a}, // SPECIES_LUVDISC + {0x77, 0x07}, // SPECIES_CORPHISH + {0x87, 0x05}, // SPECIES_CRAWDAUNT + {0x67, 0x07}, // SPECIES_FEEBAS + {0x68, 0x02}, // SPECIES_MILOTIC + {0x87, 0x07}, // SPECIES_CARVANHA + {0x88, 0x02}, // SPECIES_SHARPEDO + {0x75, 0x0e}, // SPECIES_TRAPINCH + {0x74, 0x11}, // SPECIES_VIBRAVA + {0x88, 0x02}, // SPECIES_FLYGON + {0x76, 0x0b}, // SPECIES_MAKUHITA + {0x87, 0x07}, // SPECIES_HARIYAMA + {0x84, 0x10}, // SPECIES_ELECTRIKE + {0x87, 0x04}, // SPECIES_MANECTRIC + {0x86, 0x0b}, // SPECIES_NUMEL + {0x84, 0x13}, // SPECIES_CAMERUPT + {0x64, 0x12}, // SPECIES_SPHEAL + {0x86, 0x0a}, // SPECIES_SEALEO + {0x87, 0x06}, // SPECIES_WALREIN + {0x85, 0x0f}, // SPECIES_CACNEA + {0x87, 0x07}, // SPECIES_CACTURNE + {0x76, 0x0a}, // SPECIES_SNORUNT + {0x85, 0x0c}, // SPECIES_GLALIE + {0x87, 0x05}, // SPECIES_LUNATONE {0x87, 0x05}, // SPECIES_SOLROCK - {0x87, 0x05}, // SPECIES_AZURILL - {0x86, 0x0a}, // SPECIES_SPOINK - {0x56, 0x0b}, // SPECIES_GRUMPIG - {0x87, 0x04}, // SPECIES_PLUSLE + {0x86, 0x0a}, // SPECIES_AZURILL + {0x56, 0x0b}, // SPECIES_SPOINK + {0x87, 0x04}, // SPECIES_GRUMPIG + {0x76, 0x08}, // SPECIES_PLUSLE {0x76, 0x08}, // SPECIES_MINUN - {0x76, 0x08}, // SPECIES_MAWILE - {0x87, 0x04}, // SPECIES_MEDITITE - {0x76, 0x0b}, // SPECIES_MEDICHAM - {0x68, 0x03}, // SPECIES_SWABLU - {0x86, 0x09}, // SPECIES_ALTARIA - {0x87, 0x06}, // SPECIES_WYNAUT - {0x77, 0x07}, // SPECIES_DUSKULL - {0x66, 0x0b}, // SPECIES_DUSCLOPS + {0x87, 0x04}, // SPECIES_MAWILE + {0x76, 0x0b}, // SPECIES_MEDITITE + {0x68, 0x03}, // SPECIES_MEDICHAM + {0x86, 0x09}, // SPECIES_SWABLU + {0x87, 0x06}, // SPECIES_ALTARIA + {0x77, 0x07}, // SPECIES_WYNAUT + {0x66, 0x0b}, // SPECIES_DUSKULL + {0x86, 0x08}, // SPECIES_DUSCLOPS {0x86, 0x08}, // SPECIES_ROSELIA - {0x86, 0x08}, // SPECIES_SLAKOTH - {0x85, 0x0f}, // SPECIES_VIGOROTH - {0x86, 0x0a}, // SPECIES_SLAKING - {0x86, 0x08}, // SPECIES_GULPIN - {0x66, 0x0b}, // SPECIES_SWALOT - {0x77, 0x06}, // SPECIES_TROPIUS - {0x87, 0x07}, // SPECIES_WHISMUR - {0x85, 0x0d}, // SPECIES_LOUDRED - {0x86, 0x09}, // SPECIES_EXPLOUD - {0x88, 0x03}, // SPECIES_CLAMPERL - {0x85, 0x0d}, // SPECIES_HUNTAIL - {0x68, 0x02}, // SPECIES_GOREBYSS - {0x77, 0x05}, // SPECIES_ABSOL - {0x78, 0x03}, // SPECIES_SHUPPET - {0x77, 0x06}, // SPECIES_BANETTE - {0x65, 0x0c}, // SPECIES_SEVIPER - {0x88, 0x03}, // SPECIES_ZANGOOSE - {0x88, 0x01}, // SPECIES_RELICANTH - {0x86, 0x0a}, // SPECIES_ARON - {0x54, 0x11}, // SPECIES_LAIRON - {0x84, 0x11}, // SPECIES_AGGRON - {0x87, 0x07}, // SPECIES_CASTFORM - {0x45, 0x0d}, // SPECIES_VOLBEAT - {0x76, 0x08}, // SPECIES_ILLUMISE - {0x67, 0x06}, // SPECIES_LILEEP - {0x86, 0x09}, // SPECIES_CRADILY - {0x77, 0x04}, // SPECIES_ANORITH - {0x83, 0x17}, // SPECIES_ARMALDO - {0x77, 0x05}, // SPECIES_RALTS - {0x45, 0x0d}, // SPECIES_KIRLIA - {0x57, 0x06}, // SPECIES_GARDEVOIR - {0x77, 0x04}, // SPECIES_BAGON - {0x66, 0x08}, // SPECIES_SHELGON - {0x85, 0x0d}, // SPECIES_SALAMENCE - {0x77, 0x06}, // SPECIES_BELDUM - {0x66, 0x0a}, // SPECIES_METANG - {0x84, 0x10}, // SPECIES_METAGROSS - {0x83, 0x14}, // SPECIES_REGIROCK - {0x86, 0x0a}, // SPECIES_REGICE + {0x85, 0x0f}, // SPECIES_SLAKOTH + {0x86, 0x0a}, // SPECIES_VIGOROTH + {0x86, 0x08}, // SPECIES_SLAKING + {0x66, 0x0b}, // SPECIES_GULPIN + {0x77, 0x06}, // SPECIES_SWALOT + {0x87, 0x07}, // SPECIES_TROPIUS + {0x85, 0x0d}, // SPECIES_WHISMUR + {0x86, 0x09}, // SPECIES_LOUDRED + {0x88, 0x03}, // SPECIES_EXPLOUD + {0x85, 0x0d}, // SPECIES_CLAMPERL + {0x68, 0x02}, // SPECIES_HUNTAIL + {0x77, 0x05}, // SPECIES_GOREBYSS + {0x78, 0x03}, // SPECIES_ABSOL + {0x77, 0x06}, // SPECIES_SHUPPET + {0x65, 0x0c}, // SPECIES_BANETTE + {0x88, 0x03}, // SPECIES_SEVIPER + {0x88, 0x01}, // SPECIES_ZANGOOSE + {0x86, 0x0a}, // SPECIES_RELICANTH + {0x54, 0x11}, // SPECIES_ARON + {0x84, 0x11}, // SPECIES_LAIRON + {0x87, 0x07}, // SPECIES_AGGRON + {0x45, 0x0d}, // SPECIES_CASTFORM + {0x76, 0x08}, // SPECIES_VOLBEAT + {0x67, 0x06}, // SPECIES_ILLUMISE + {0x86, 0x09}, // SPECIES_LILEEP + {0x77, 0x04}, // SPECIES_CRADILY + {0x83, 0x17}, // SPECIES_ANORITH + {0x77, 0x05}, // SPECIES_ARMALDO + {0x45, 0x0d}, // SPECIES_RALTS + {0x57, 0x06}, // SPECIES_KIRLIA + {0x77, 0x04}, // SPECIES_GARDEVOIR + {0x66, 0x08}, // SPECIES_BAGON + {0x85, 0x0d}, // SPECIES_SHELGON + {0x77, 0x06}, // SPECIES_SALAMENCE + {0x66, 0x0a}, // SPECIES_BELDUM + {0x84, 0x10}, // SPECIES_METANG + {0x83, 0x14}, // SPECIES_METAGROSS + {0x86, 0x0a}, // SPECIES_REGIROCK + {0x85, 0x0e}, // SPECIES_REGICE {0x85, 0x0e}, // SPECIES_REGISTEEL - {0x85, 0x0e}, // SPECIES_KYOGRE - {0x84, 0x13}, // SPECIES_GROUDON - {0x87, 0x07}, // SPECIES_RAYQUAZA - {0x78, 0x00}, // SPECIES_LATIAS - {0x88, 0x02}, // SPECIES_LATIOS - {0x88, 0x03}, // SPECIES_JIRACHI - {0x87, 0x05}, // SPECIES_DEOXYS - {0x86, 0x09}, // SPECIES_CHIMECHO - {0x47, 0x07}, // SPECIES_EGG - {0x36, 0x0a}, // SPECIES_UNOWN_B - {0x56, 0x09}, // SPECIES_UNOWN_C - {0x67, 0x06}, // SPECIES_UNOWN_D - {0x56, 0x08}, // SPECIES_UNOWN_E - {0x56, 0x0a}, // SPECIES_UNOWN_F - {0x66, 0x0a}, // SPECIES_UNOWN_G - {0x57, 0x05}, // SPECIES_UNOWN_H - {0x66, 0x08}, // SPECIES_UNOWN_I - {0x37, 0x07}, // SPECIES_UNOWN_J - {0x46, 0x09}, // SPECIES_UNOWN_K - {0x57, 0x07}, // SPECIES_UNOWN_L - {0x46, 0x0a}, // SPECIES_UNOWN_M + {0x84, 0x13}, // SPECIES_KYOGRE + {0x87, 0x07}, // SPECIES_GROUDON + {0x78, 0x00}, // SPECIES_RAYQUAZA + {0x88, 0x02}, // SPECIES_LATIAS + {0x88, 0x03}, // SPECIES_LATIOS + {0x87, 0x05}, // SPECIES_JIRACHI + {0x86, 0x09}, // SPECIES_DEOXYS + {0x47, 0x07}, // SPECIES_CHIMECHO + {0x36, 0x0a}, // SPECIES_EGG + {0x56, 0x09}, // SPECIES_UNOWN_B + {0x67, 0x06}, // SPECIES_UNOWN_C + {0x56, 0x08}, // SPECIES_UNOWN_D + {0x56, 0x0a}, // SPECIES_UNOWN_E + {0x66, 0x0a}, // SPECIES_UNOWN_F + {0x57, 0x05}, // SPECIES_UNOWN_G + {0x66, 0x08}, // SPECIES_UNOWN_H + {0x37, 0x07}, // SPECIES_UNOWN_I + {0x46, 0x09}, // SPECIES_UNOWN_J + {0x57, 0x07}, // SPECIES_UNOWN_K + {0x46, 0x0a}, // SPECIES_UNOWN_L + {0x65, 0x0d}, // SPECIES_UNOWN_M {0x65, 0x0d}, // SPECIES_UNOWN_N - {0x65, 0x0d}, // SPECIES_UNOWN_O - {0x66, 0x08}, // SPECIES_UNOWN_P - {0x46, 0x0a}, // SPECIES_UNOWN_Q - {0x55, 0x0f}, // SPECIES_UNOWN_R - {0x45, 0x0c}, // SPECIES_UNOWN_S - {0x57, 0x04}, // SPECIES_UNOWN_T - {0x45, 0x0d}, // SPECIES_UNOWN_U - {0x65, 0x0d}, // SPECIES_UNOWN_V - {0x56, 0x0b}, // SPECIES_UNOWN_W - {0x55, 0x0d}, // SPECIES_UNOWN_X - {0x55, 0x0f}, // SPECIES_UNOWN_Y + {0x66, 0x08}, // SPECIES_UNOWN_O + {0x46, 0x0a}, // SPECIES_UNOWN_P + {0x55, 0x0f}, // SPECIES_UNOWN_Q + {0x45, 0x0c}, // SPECIES_UNOWN_R + {0x57, 0x04}, // SPECIES_UNOWN_S + {0x45, 0x0d}, // SPECIES_UNOWN_T + {0x65, 0x0d}, // SPECIES_UNOWN_U + {0x56, 0x0b}, // SPECIES_UNOWN_V + {0x55, 0x0d}, // SPECIES_UNOWN_W + {0x55, 0x0f}, // SPECIES_UNOWN_X + {0x46, 0x0a}, // SPECIES_UNOWN_Y {0x46, 0x0a}, // SPECIES_UNOWN_Z - {0x46, 0x0a}, // SPECIES_UNOWN_EMARK - {0x37, 0x06}, // SPECIES_UNOWN_QMARK - {0x47, 0x06}, + {0x37, 0x06}, // SPECIES_UNOWN_EMARK + {0x47, 0x06}, // SPECIES_UNOWN_QMARK }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index fde423570..923df2cde 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -47,211 +47,212 @@ const struct MonCoords gMonFrontPicCoords[] = {0x66, 0x0a}, // SPECIES_GLOOM {0x77, 0x06}, // SPECIES_VILEPLUME {0x55, 0x0f}, // SPECIES_PARAS - {0x86, 0x08}, // SPECIES_VENONAT - {0x66, 0x08}, // SPECIES_VENOMOTH - {0x88, 0x02}, // SPECIES_DIGLETT - {0x54, 0x12}, // SPECIES_DUGTRIO - {0x75, 0x0d}, // SPECIES_MEOWTH - {0x55, 0x0c}, // SPECIES_PERSIAN - {0x77, 0x07}, // SPECIES_PSYDUCK - {0x56, 0x09}, // SPECIES_GOLDUCK - {0x78, 0x02}, // SPECIES_MANKEY - {0x65, 0x0e}, // SPECIES_PRIMEAPE - {0x77, 0x07}, // SPECIES_GROWLITHE - {0x66, 0x0b}, // SPECIES_ARCANINE - {0x88, 0x02}, // SPECIES_POLIWAG - {0x74, 0x13}, // SPECIES_POLIWHIRL - {0x76, 0x0a}, // SPECIES_POLIWRATH - {0x76, 0x08}, // SPECIES_ABRA - {0x66, 0x0b}, // SPECIES_KADABRA - {0x77, 0x05}, // SPECIES_ALAKAZAM - {0x87, 0x04}, // SPECIES_MACHOP - {0x56, 0x0b}, // SPECIES_MACHOKE - {0x67, 0x06}, // SPECIES_MACHAMP - {0x88, 0x01}, // SPECIES_BELLSPROUT - {0x65, 0x0f}, // SPECIES_WEEPINBELL - {0x66, 0x0b}, // SPECIES_VICTREEBEL - {0x77, 0x05}, // SPECIES_TENTACOOL - {0x46, 0x09}, // SPECIES_TENTACRUEL - {0x87, 0x04}, // SPECIES_GEODUDE - {0x54, 0x12}, // SPECIES_GRAVELER - {0x87, 0x04}, // SPECIES_GOLEM - {0x77, 0x05}, // SPECIES_PONYTA - {0x66, 0x08}, // SPECIES_RAPIDASH - {0x88, 0x01}, // SPECIES_SLOWPOKE - {0x66, 0x0b}, // SPECIES_SLOWBRO - {0x86, 0x08}, // SPECIES_MAGNEMITE - {0x43, 0x15}, // SPECIES_MAGNETON - {0x76, 0x08}, // SPECIES_FARFETCHD - {0x66, 0x09}, // SPECIES_DODUO - {0x57, 0x05}, // SPECIES_DODRIO - {0x88, 0x00}, // SPECIES_SEEL - {0x76, 0x0a}, // SPECIES_DEWGONG - {0x87, 0x07}, // SPECIES_GRIMER - {0x65, 0x0c}, // SPECIES_MUK - {0x87, 0x04}, // SPECIES_SHELLDER - {0x55, 0x10}, // SPECIES_CLOYSTER - {0x87, 0x05}, // SPECIES_GASTLY - {0x77, 0x06}, // SPECIES_HAUNTER + {0x86, 0x08}, // SPECIES_PARASECT + {0x66, 0x08}, // SPECIES_VENONAT + {0x88, 0x02}, // SPECIES_VENOMOTH + {0x54, 0x12}, // SPECIES_DIGLETT + {0x75, 0x0d}, // SPECIES_DUGTRIO + {0x55, 0x0c}, // SPECIES_MEOWTH + {0x77, 0x07}, // SPECIES_PERSIAN + {0x56, 0x09}, // SPECIES_PSYDUCK + {0x78, 0x02}, // SPECIES_GOLDUCK + {0x65, 0x0e}, // SPECIES_MANKEY + {0x77, 0x07}, // SPECIES_PRIMEAPE + {0x66, 0x0b}, // SPECIES_GROWLITHE + {0x88, 0x02}, // SPECIES_ARCANINE + {0x74, 0x13}, // SPECIES_POLIWAG + {0x76, 0x0a}, // SPECIES_POLIWHIRL + {0x76, 0x08}, // SPECIES_POLIWRATH + {0x66, 0x0b}, // SPECIES_ABRA + {0x77, 0x05}, // SPECIES_KADABRA + {0x87, 0x04}, // SPECIES_ALAKAZAM + {0x56, 0x0b}, // SPECIES_MACHOP + {0x67, 0x06}, // SPECIES_MACHOKE + {0x88, 0x01}, // SPECIES_MACHAMP + {0x65, 0x0f}, // SPECIES_BELLSPROUT + {0x66, 0x0b}, // SPECIES_WEEPINBELL + {0x77, 0x05}, // SPECIES_VICTREEBEL + {0x46, 0x09}, // SPECIES_TENTACOOL + {0x87, 0x04}, // SPECIES_TENTACRUEL + {0x54, 0x12}, // SPECIES_GEODUDE + {0x87, 0x04}, // SPECIES_GRAVELER + {0x77, 0x05}, // SPECIES_GOLEM + {0x66, 0x08}, // SPECIES_PONYTA + {0x88, 0x01}, // SPECIES_RAPIDASH + {0x66, 0x0b}, // SPECIES_SLOWPOKE + {0x86, 0x08}, // SPECIES_SLOWBRO + {0x43, 0x15}, // SPECIES_MAGNEMITE + {0x76, 0x08}, // SPECIES_MAGNETON + {0x66, 0x09}, // SPECIES_FARFETCHD + {0x57, 0x05}, // SPECIES_DODUO + {0x88, 0x00}, // SPECIES_DODRIO + {0x76, 0x0a}, // SPECIES_SEEL + {0x87, 0x07}, // SPECIES_DEWGONG + {0x65, 0x0c}, // SPECIES_GRIMER + {0x87, 0x04}, // SPECIES_MUK + {0x55, 0x10}, // SPECIES_SHELLDER + {0x87, 0x05}, // SPECIES_CLOYSTER + {0x77, 0x06}, // SPECIES_GASTLY + {0x77, 0x05}, // SPECIES_HAUNTER {0x77, 0x05}, // SPECIES_GENGAR - {0x77, 0x05}, // SPECIES_ONIX - {0x78, 0x02}, // SPECIES_DROWZEE - {0x77, 0x07}, // SPECIES_HYPNO - {0x77, 0x04}, // SPECIES_KRABBY - {0x65, 0x0d}, // SPECIES_KINGLER - {0x88, 0x03}, // SPECIES_VOLTORB - {0x44, 0x13}, // SPECIES_ELECTRODE - {0x55, 0x0e}, // SPECIES_EXEGGCUTE - {0x87, 0x07}, // SPECIES_EXEGGUTOR - {0x88, 0x00}, // SPECIES_CUBONE - {0x55, 0x0f}, // SPECIES_MAROWAK - {0x76, 0x0b}, // SPECIES_HITMONLEE - {0x87, 0x04}, // SPECIES_HITMONCHAN - {0x67, 0x04}, // SPECIES_LICKITUNG - {0x86, 0x08}, // SPECIES_KOFFING - {0x66, 0x08}, // SPECIES_WEEZING - {0x88, 0x02}, // SPECIES_RHYHORN - {0x76, 0x09}, // SPECIES_RHYDON - {0x88, 0x02}, // SPECIES_CHANSEY - {0x76, 0x09}, // SPECIES_TANGELA - {0x67, 0x07}, // SPECIES_KANGASKHAN - {0x88, 0x00}, // SPECIES_HORSEA - {0x45, 0x0f}, // SPECIES_SEADRA - {0x67, 0x07}, // SPECIES_GOLDEEN - {0x66, 0x0a}, // SPECIES_SEAKING - {0x77, 0x04}, // SPECIES_STARYU - {0x66, 0x0a}, // SPECIES_STARMIE - {0x77, 0x06}, // SPECIES_MR_MIME - {0x66, 0x08}, // SPECIES_SCYTHER - {0x88, 0x00}, // SPECIES_JYNX - {0x77, 0x04}, // SPECIES_ELECTABUZZ - {0x78, 0x02}, // SPECIES_MAGMAR + {0x78, 0x02}, // SPECIES_ONIX + {0x77, 0x07}, // SPECIES_DROWZEE + {0x77, 0x04}, // SPECIES_HYPNO + {0x65, 0x0d}, // SPECIES_KRABBY + {0x88, 0x03}, // SPECIES_KINGLER + {0x44, 0x13}, // SPECIES_VOLTORB + {0x55, 0x0e}, // SPECIES_ELECTRODE + {0x87, 0x07}, // SPECIES_EXEGGCUTE + {0x88, 0x00}, // SPECIES_EXEGGUTOR + {0x55, 0x0f}, // SPECIES_CUBONE + {0x76, 0x0b}, // SPECIES_MAROWAK + {0x87, 0x04}, // SPECIES_HITMONLEE + {0x67, 0x04}, // SPECIES_HITMONCHAN + {0x86, 0x08}, // SPECIES_LICKITUNG + {0x66, 0x08}, // SPECIES_KOFFING + {0x88, 0x02}, // SPECIES_WEEZING + {0x76, 0x09}, // SPECIES_RHYHORN + {0x88, 0x02}, // SPECIES_RHYDON + {0x76, 0x09}, // SPECIES_CHANSEY + {0x67, 0x07}, // SPECIES_TANGELA + {0x88, 0x00}, // SPECIES_KANGASKHAN + {0x45, 0x0f}, // SPECIES_HORSEA + {0x67, 0x07}, // SPECIES_SEADRA + {0x66, 0x0a}, // SPECIES_GOLDEEN + {0x77, 0x04}, // SPECIES_SEAKING + {0x66, 0x0a}, // SPECIES_STARYU + {0x77, 0x06}, // SPECIES_STARMIE + {0x66, 0x08}, // SPECIES_MR_MIME + {0x88, 0x00}, // SPECIES_SCYTHER + {0x77, 0x04}, // SPECIES_JYNX + {0x78, 0x02}, // SPECIES_ELECTABUZZ + {0x77, 0x04}, // SPECIES_MAGMAR {0x77, 0x04}, // SPECIES_PINSIR - {0x77, 0x04}, // SPECIES_TAUROS - {0x78, 0x00}, // SPECIES_MAGIKARP - {0x67, 0x06}, // SPECIES_GYARADOS - {0x88, 0x08}, // SPECIES_LAPRAS - {0x85, 0x0d}, // SPECIES_DITTO - {0x54, 0x11}, // SPECIES_EEVEE - {0x56, 0x09}, // SPECIES_VAPOREON - {0x67, 0x06}, // SPECIES_JOLTEON - {0x76, 0x09}, // SPECIES_FLAREON - {0x66, 0x0a}, // SPECIES_PORYGON - {0x55, 0x0d}, // SPECIES_OMANYTE - {0x45, 0x0f}, // SPECIES_OMASTAR - {0x67, 0x07}, // SPECIES_KABUTO - {0x54, 0x11}, // SPECIES_KABUTOPS - {0x88, 0x03}, // SPECIES_AERODACTYL - {0x88, 0x01}, // SPECIES_SNORLAX - {0x87, 0x05}, // SPECIES_ARTICUNO - {0x88, 0x03}, // SPECIES_ZAPDOS - {0x87, 0x04}, // SPECIES_MOLTRES - {0x88, 0x00}, // SPECIES_DRATINI - {0x75, 0x0e}, // SPECIES_DRAGONAIR - {0x87, 0x06}, // SPECIES_DRAGONITE + {0x78, 0x00}, // SPECIES_TAUROS + {0x67, 0x06}, // SPECIES_MAGIKARP + {0x88, 0x08}, // SPECIES_GYARADOS + {0x85, 0x0d}, // SPECIES_LAPRAS + {0x54, 0x11}, // SPECIES_DITTO + {0x56, 0x09}, // SPECIES_EEVEE + {0x67, 0x06}, // SPECIES_VAPOREON + {0x76, 0x09}, // SPECIES_JOLTEON + {0x66, 0x0a}, // SPECIES_FLAREON + {0x55, 0x0d}, // SPECIES_PORYGON + {0x45, 0x0f}, // SPECIES_OMANYTE + {0x67, 0x07}, // SPECIES_OMASTAR + {0x54, 0x11}, // SPECIES_KABUTO + {0x88, 0x03}, // SPECIES_KABUTOPS + {0x88, 0x01}, // SPECIES_AERODACTYL + {0x87, 0x05}, // SPECIES_SNORLAX + {0x88, 0x03}, // SPECIES_ARTICUNO + {0x87, 0x04}, // SPECIES_ZAPDOS + {0x88, 0x00}, // SPECIES_MOLTRES + {0x75, 0x0e}, // SPECIES_DRATINI + {0x87, 0x06}, // SPECIES_DRAGONAIR + {0x88, 0x00}, // SPECIES_DRAGONITE {0x88, 0x00}, // SPECIES_MEWTWO - {0x88, 0x00}, // SPECIES_MEW - {0x55, 0x0d}, // SPECIES_CHIKORITA - {0x75, 0x0d}, // SPECIES_BAYLEEF - {0x77, 0x04}, // SPECIES_MEGANIUM - {0x88, 0x00}, // SPECIES_CYNDAQUIL - {0x55, 0x0e}, // SPECIES_QUILAVA - {0x76, 0x08}, // SPECIES_TYPHLOSION - {0x78, 0x00}, // SPECIES_TOTODILE - {0x55, 0x0f}, // SPECIES_CROCONAW - {0x67, 0x06}, // SPECIES_FERALIGATR - {0x88, 0x00}, // SPECIES_SENTRET - {0x47, 0x04}, // SPECIES_FURRET - {0x67, 0x07}, // SPECIES_HOOTHOOT - {0x55, 0x0d}, // SPECIES_NOCTOWL - {0x58, 0x03}, // SPECIES_LEDYBA - {0x56, 0x0c}, // SPECIES_LEDIAN - {0x67, 0x04}, // SPECIES_SPINARAK - {0x54, 0x13}, // SPECIES_ARIADOS - {0x87, 0x05}, // SPECIES_CROBAT - {0x88, 0x00}, // SPECIES_CHINCHOU - {0x75, 0x10}, // SPECIES_LANTURN - {0x87, 0x0b}, // SPECIES_PICHU - {0x45, 0x0c}, // SPECIES_CLEFFA - {0x44, 0x14}, // SPECIES_IGGLYBUFF - {0x44, 0x12}, // SPECIES_TOGEPI - {0x34, 0x14}, // SPECIES_TOGETIC - {0x46, 0x09}, // SPECIES_NATU - {0x44, 0x14}, // SPECIES_XATU - {0x47, 0x07}, // SPECIES_MAREEP - {0x55, 0x10}, // SPECIES_FLAAFFY - {0x56, 0x0a}, // SPECIES_AMPHAROS - {0x77, 0x05}, // SPECIES_BELLOSSOM - {0x45, 0x0e}, // SPECIES_MARILL - {0x65, 0x0e}, // SPECIES_AZUMARILL - {0x76, 0x09}, // SPECIES_SUDOWOODO + {0x55, 0x0d}, // SPECIES_MEW + {0x75, 0x0d}, // SPECIES_CHIKORITA + {0x77, 0x04}, // SPECIES_BAYLEEF + {0x88, 0x00}, // SPECIES_MEGANIUM + {0x55, 0x0e}, // SPECIES_CYNDAQUIL + {0x76, 0x08}, // SPECIES_QUILAVA + {0x78, 0x00}, // SPECIES_TYPHLOSION + {0x55, 0x0f}, // SPECIES_TOTODILE + {0x67, 0x06}, // SPECIES_CROCONAW + {0x88, 0x00}, // SPECIES_FERALIGATR + {0x47, 0x04}, // SPECIES_SENTRET + {0x67, 0x07}, // SPECIES_FURRET + {0x55, 0x0d}, // SPECIES_HOOTHOOT + {0x58, 0x03}, // SPECIES_NOCTOWL + {0x56, 0x0c}, // SPECIES_LEDYBA + {0x67, 0x04}, // SPECIES_LEDIAN + {0x54, 0x13}, // SPECIES_SPINARAK + {0x87, 0x05}, // SPECIES_ARIADOS + {0x88, 0x00}, // SPECIES_CROBAT + {0x75, 0x10}, // SPECIES_CHINCHOU + {0x87, 0x0b}, // SPECIES_LANTURN + {0x45, 0x0c}, // SPECIES_PICHU + {0x44, 0x14}, // SPECIES_CLEFFA + {0x44, 0x12}, // SPECIES_IGGLYBUFF + {0x34, 0x14}, // SPECIES_TOGEPI + {0x46, 0x09}, // SPECIES_TOGETIC + {0x44, 0x14}, // SPECIES_NATU + {0x47, 0x07}, // SPECIES_XATU + {0x55, 0x10}, // SPECIES_MAREEP + {0x56, 0x0a}, // SPECIES_FLAAFFY + {0x77, 0x05}, // SPECIES_AMPHAROS + {0x45, 0x0e}, // SPECIES_BELLOSSOM + {0x65, 0x0e}, // SPECIES_MARILL + {0x76, 0x09}, // SPECIES_AZUMARILL + {0x67, 0x06}, // SPECIES_SUDOWOODO {0x67, 0x06}, // SPECIES_POLITOED - {0x67, 0x06}, // SPECIES_HOPPIP - {0x66, 0x0a}, // SPECIES_SKIPLOOM - {0x55, 0x0f}, // SPECIES_JUMPLUFF - {0x77, 0x07}, // SPECIES_AIPOM - {0x58, 0x03}, // SPECIES_SUNKERN - {0x44, 0x10}, // SPECIES_SUNFLORA - {0x56, 0x08}, // SPECIES_YANMA - {0x86, 0x0a}, // SPECIES_WOOPER - {0x54, 0x10}, // SPECIES_QUAGSIRE - {0x77, 0x07}, // SPECIES_ESPEON - {0x66, 0x08}, // SPECIES_UMBREON - {0x67, 0x08}, // SPECIES_MURKROW - {0x66, 0x0b}, // SPECIES_SLOWKING - {0x58, 0x01}, // SPECIES_MISDREAVUS - {0x55, 0x0c}, // SPECIES_UNOWN - {0x35, 0x0f}, // SPECIES_WOBBUFFET - {0x77, 0x06}, // SPECIES_GIRAFARIG - {0x88, 0x03}, // SPECIES_PINECO - {0x56, 0x0a}, // SPECIES_FORRETRESS - {0x76, 0x09}, // SPECIES_DUNSPARCE - {0x74, 0x11}, // SPECIES_GLIGAR - {0x78, 0x03}, // SPECIES_STEELIX - {0x88, 0x00}, // SPECIES_SNUBBULL - {0x55, 0x0d}, // SPECIES_GRANBULL - {0x57, 0x06}, // SPECIES_QWILFISH - {0x56, 0x0a}, // SPECIES_SCIZOR - {0x88, 0x00}, // SPECIES_SHUCKLE - {0x66, 0x09}, // SPECIES_HERACROSS - {0x88, 0x03}, // SPECIES_SNEASEL - {0x67, 0x05}, // SPECIES_TEDDIURSA - {0x45, 0x0d}, // SPECIES_URSARING - {0x78, 0x01}, // SPECIES_SLUGMA - {0x45, 0x0d}, // SPECIES_MAGCARGO - {0x57, 0x0d}, // SPECIES_SWINUB - {0x43, 0x14}, // SPECIES_PILOSWINE - {0x66, 0x08}, // SPECIES_CORSOLA - {0x65, 0x0c}, // SPECIES_REMORAID - {0x55, 0x0e}, // SPECIES_OCTILLERY - {0x66, 0x0a}, // SPECIES_DELIBIRD - {0x56, 0x08}, // SPECIES_MANTINE - {0x88, 0x01}, // SPECIES_SKARMORY - {0x88, 0x00}, // SPECIES_HOUNDOUR - {0x56, 0x0b}, // SPECIES_HOUNDOOM - {0x77, 0x05}, // SPECIES_KINGDRA - {0x78, 0x04}, // SPECIES_PHANPY - {0x54, 0x10}, // SPECIES_DONPHAN - {0x86, 0x08}, // SPECIES_PORYGON2 - {0x55, 0x0f}, // SPECIES_STANTLER - {0x88, 0x00}, // SPECIES_SMEARGLE - {0x77, 0x06}, // SPECIES_TYROGUE - {0x46, 0x09}, // SPECIES_HITMONTOP - {0x67, 0x05}, // SPECIES_SMOOCHUM - {0x35, 0x0f}, // SPECIES_ELEKID - {0x76, 0x0a}, // SPECIES_MAGBY - {0x45, 0x0d}, // SPECIES_MILTANK - {0x77, 0x04}, // SPECIES_BLISSEY - {0x77, 0x06}, // SPECIES_RAIKOU + {0x66, 0x0a}, // SPECIES_HOPPIP + {0x55, 0x0f}, // SPECIES_SKIPLOOM + {0x77, 0x07}, // SPECIES_JUMPLUFF + {0x58, 0x03}, // SPECIES_AIPOM + {0x44, 0x10}, // SPECIES_SUNKERN + {0x56, 0x08}, // SPECIES_SUNFLORA + {0x86, 0x0a}, // SPECIES_YANMA + {0x54, 0x10}, // SPECIES_WOOPER + {0x77, 0x07}, // SPECIES_QUAGSIRE + {0x66, 0x08}, // SPECIES_ESPEON + {0x67, 0x08}, // SPECIES_UMBREON + {0x66, 0x0b}, // SPECIES_MURKROW + {0x58, 0x01}, // SPECIES_SLOWKING + {0x55, 0x0c}, // SPECIES_MISDREAVUS + {0x35, 0x0f}, // SPECIES_UNOWN + {0x77, 0x06}, // SPECIES_WOBBUFFET + {0x88, 0x03}, // SPECIES_GIRAFARIG + {0x56, 0x0a}, // SPECIES_PINECO + {0x76, 0x09}, // SPECIES_FORRETRESS + {0x74, 0x11}, // SPECIES_DUNSPARCE + {0x78, 0x03}, // SPECIES_GLIGAR + {0x88, 0x00}, // SPECIES_STEELIX + {0x55, 0x0d}, // SPECIES_SNUBBULL + {0x57, 0x06}, // SPECIES_GRANBULL + {0x56, 0x0a}, // SPECIES_QWILFISH + {0x88, 0x00}, // SPECIES_SCIZOR + {0x66, 0x09}, // SPECIES_SHUCKLE + {0x88, 0x03}, // SPECIES_HERACROSS + {0x67, 0x05}, // SPECIES_SNEASEL + {0x45, 0x0d}, // SPECIES_TEDDIURSA + {0x78, 0x01}, // SPECIES_URSARING + {0x45, 0x0d}, // SPECIES_SLUGMA + {0x57, 0x0d}, // SPECIES_MAGCARGO + {0x43, 0x14}, // SPECIES_SWINUB + {0x66, 0x08}, // SPECIES_PILOSWINE + {0x65, 0x0c}, // SPECIES_CORSOLA + {0x55, 0x0e}, // SPECIES_REMORAID + {0x66, 0x0a}, // SPECIES_OCTILLERY + {0x56, 0x08}, // SPECIES_DELIBIRD + {0x88, 0x01}, // SPECIES_MANTINE + {0x88, 0x00}, // SPECIES_SKARMORY + {0x56, 0x0b}, // SPECIES_HOUNDOUR + {0x77, 0x05}, // SPECIES_HOUNDOOM + {0x78, 0x04}, // SPECIES_KINGDRA + {0x54, 0x10}, // SPECIES_PHANPY + {0x86, 0x08}, // SPECIES_DONPHAN + {0x55, 0x0f}, // SPECIES_PORYGON2 + {0x88, 0x00}, // SPECIES_STANTLER + {0x77, 0x06}, // SPECIES_SMEARGLE + {0x46, 0x09}, // SPECIES_TYROGUE + {0x67, 0x05}, // SPECIES_HITMONTOP + {0x35, 0x0f}, // SPECIES_SMOOCHUM + {0x76, 0x0a}, // SPECIES_ELEKID + {0x45, 0x0d}, // SPECIES_MAGBY + {0x77, 0x04}, // SPECIES_MILTANK + {0x77, 0x06}, // SPECIES_BLISSEY + {0x88, 0x00}, // SPECIES_RAIKOU {0x88, 0x00}, // SPECIES_ENTEI {0x88, 0x00}, // SPECIES_SUICUNE - {0x88, 0x00}, // SPECIES_LARVITAR - {0x46, 0x09}, // SPECIES_PUPITAR - {0x56, 0x09}, // SPECIES_TYRANITAR + {0x46, 0x09}, // SPECIES_LARVITAR + {0x56, 0x09}, // SPECIES_PUPITAR + {0x88, 0x00}, // SPECIES_TYRANITAR {0x88, 0x00}, // SPECIES_LUGIA {0x88, 0x00}, // SPECIES_HO_OH - {0x88, 0x00}, // SPECIES_CELEBI - {0x55, 0x0e}, // SPECIES_OLD_UNOWN_B + {0x55, 0x0e}, // SPECIES_CELEBI + {0x87, 0x04}, // SPECIES_OLD_UNOWN_B {0x87, 0x04}, // SPECIES_OLD_UNOWN_C {0x87, 0x04}, // SPECIES_OLD_UNOWN_D {0x87, 0x04}, // SPECIES_OLD_UNOWN_E @@ -276,168 +277,167 @@ const struct MonCoords gMonFrontPicCoords[] = {0x87, 0x04}, // SPECIES_OLD_UNOWN_X {0x87, 0x04}, // SPECIES_OLD_UNOWN_Y {0x87, 0x04}, // SPECIES_OLD_UNOWN_Z - {0x87, 0x04}, // SPECIES_TREECKO - {0x66, 0x08}, // SPECIES_GROVYLE - {0x87, 0x04}, // SPECIES_SCEPTILE - {0x88, 0x00}, // SPECIES_TORCHIC - {0x56, 0x08}, // SPECIES_COMBUSKEN - {0x88, 0x01}, // SPECIES_BLAZIKEN - {0x88, 0x00}, // SPECIES_MUDKIP - {0x56, 0x0c}, // SPECIES_MARSHTOMP - {0x67, 0x06}, // SPECIES_SWAMPERT - {0x88, 0x00}, // SPECIES_POOCHYENA - {0x55, 0x0c}, // SPECIES_MIGHTYENA - {0x87, 0x04}, // SPECIES_ZIGZAGOON - {0x85, 0x0f}, // SPECIES_LINOONE - {0x78, 0x03}, // SPECIES_WURMPLE - {0x45, 0x0e}, // SPECIES_SILCOON - {0x75, 0x11}, // SPECIES_BEAUTIFLY - {0x86, 0x09}, // SPECIES_CASCOON - {0x74, 0x10}, // SPECIES_DUSTOX - {0x86, 0x0f}, // SPECIES_LOTAD - {0x65, 0x0e}, // SPECIES_LOMBRE - {0x66, 0x09}, // SPECIES_LUDICOLO - {0x88, 0x00}, // SPECIES_SEEDOT - {0x46, 0x10}, // SPECIES_NUZLEAF - {0x56, 0x08}, // SPECIES_SHIFTRY - {0x88, 0x02}, // SPECIES_NINCADA - {0x74, 0x12}, // SPECIES_NINJASK - {0x86, 0x0a}, // SPECIES_SHEDINJA - {0x66, 0x0a}, // SPECIES_TAILLOW - {0x64, 0x10}, // SPECIES_SWELLOW - {0x87, 0x06}, // SPECIES_SHROOMISH - {0x54, 0x10}, // SPECIES_BRELOOM - {0x77, 0x04}, // SPECIES_SPINDA - {0x68, 0x08}, // SPECIES_WINGULL - {0x84, 0x18}, // SPECIES_PELIPPER - {0x77, 0x04}, // SPECIES_SURSKIT - {0x65, 0x0f}, // SPECIES_MASQUERAIN - {0x88, 0x01}, // SPECIES_WAILMER - {0x75, 0x0f}, // SPECIES_WAILORD - {0x87, 0x0a}, // SPECIES_SKITTY - {0x66, 0x0b}, // SPECIES_DELCATTY - {0x66, 0x08}, // SPECIES_KECLEON - {0x67, 0x07}, // SPECIES_BALTOY - {0x55, 0x10}, // SPECIES_CLAYDOL - {0x78, 0x06}, // SPECIES_NOSEPASS - {0x56, 0x0c}, // SPECIES_TORKOAL - {0x88, 0x02}, // SPECIES_SABLEYE - {0x66, 0x09}, // SPECIES_BARBOACH - {0x46, 0x0b}, // SPECIES_WHISCASH - {0x76, 0x09}, // SPECIES_LUVDISC - {0x46, 0x18}, // SPECIES_CORPHISH - {0x66, 0x0c}, // SPECIES_CRAWDAUNT - {0x88, 0x01}, // SPECIES_FEEBAS - {0x46, 0x0d}, // SPECIES_MILOTIC - {0x88, 0x00}, // SPECIES_CARVANHA - {0x67, 0x06}, // SPECIES_SHARPEDO - {0x78, 0x03}, // SPECIES_TRAPINCH - {0x54, 0x10}, // SPECIES_VIBRAVA - {0x86, 0x0c}, // SPECIES_FLYGON - {0x88, 0x01}, // SPECIES_MAKUHITA - {0x65, 0x0c}, // SPECIES_HARIYAMA - {0x88, 0x01}, // SPECIES_ELECTRIKE - {0x64, 0x12}, // SPECIES_MANECTRIC - {0x67, 0x04}, // SPECIES_NUMEL - {0x65, 0x0f}, // SPECIES_CAMERUPT - {0x87, 0x09}, // SPECIES_SPHEAL - {0x65, 0x10}, // SPECIES_SEALEO - {0x86, 0x0a}, // SPECIES_WALREIN - {0x88, 0x01}, // SPECIES_CACNEA - {0x74, 0x10}, // SPECIES_CACTURNE - {0x88, 0x00}, // SPECIES_SNORUNT - {0x56, 0x0b}, // SPECIES_GLALIE - {0x76, 0x0a}, // SPECIES_LUNATONE - {0x66, 0x09}, // SPECIES_SOLROCK - {0x88, 0x01}, // SPECIES_AZURILL - {0x55, 0x0f}, // SPECIES_SPOINK - {0x46, 0x09}, // SPECIES_GRUMPIG - {0x77, 0x05}, // SPECIES_PLUSLE - {0x56, 0x0e}, // SPECIES_MINUN - {0x66, 0x0c}, // SPECIES_MAWILE - {0x76, 0x08}, // SPECIES_MEDITITE - {0x65, 0x0c}, // SPECIES_MEDICHAM - {0x68, 0x01}, // SPECIES_SWABLU - {0x76, 0x11}, // SPECIES_ALTARIA - {0x88, 0x02}, // SPECIES_WYNAUT - {0x55, 0x0c}, // SPECIES_DUSKULL - {0x66, 0x0a}, // SPECIES_DUSCLOPS - {0x77, 0x05}, // SPECIES_ROSELIA - {0x76, 0x08}, // SPECIES_SLAKOTH - {0x74, 0x12}, // SPECIES_VIGOROTH - {0x78, 0x00}, // SPECIES_SLAKING - {0x86, 0x08}, // SPECIES_GULPIN - {0x55, 0x12}, // SPECIES_SWALOT - {0x66, 0x08}, // SPECIES_TROPIUS - {0x88, 0x00}, // SPECIES_WHISMUR - {0x55, 0x0e}, // SPECIES_LOUDRED - {0x78, 0x03}, // SPECIES_EXPLOUD - {0x88, 0x01}, // SPECIES_CLAMPERL - {0x55, 0x0e}, // SPECIES_HUNTAIL - {0x78, 0x03}, // SPECIES_GOREBYSS - {0x86, 0x0b}, // SPECIES_ABSOL - {0x68, 0x00}, // SPECIES_SHUPPET - {0x56, 0x0e}, // SPECIES_BANETTE - {0x55, 0x0c}, // SPECIES_SEVIPER - {0x77, 0x08}, // SPECIES_ZANGOOSE - {0x87, 0x05}, // SPECIES_RELICANTH - {0x77, 0x0b}, // SPECIES_ARON - {0x43, 0x14}, // SPECIES_LAIRON - {0x75, 0x0d}, // SPECIES_AGGRON - {0x88, 0x00}, // SPECIES_CASTFORM - {0x34, 0x11}, // SPECIES_VOLBEAT - {0x66, 0x08}, // SPECIES_ILLUMISE - {0x56, 0x08}, // SPECIES_LILEEP - {0x67, 0x07}, // SPECIES_CRADILY - {0x78, 0x00}, // SPECIES_ANORITH - {0x66, 0x08}, // SPECIES_ARMALDO - {0x88, 0x00}, // SPECIES_RALTS - {0x35, 0x0f}, // SPECIES_KIRLIA - {0x47, 0x06}, // SPECIES_GARDEVOIR - {0x78, 0x01}, // SPECIES_BAGON - {0x56, 0x0b}, // SPECIES_SHELGON - {0x66, 0x09}, // SPECIES_SALAMENCE - {0x87, 0x04}, // SPECIES_BELDUM - {0x55, 0x0f}, // SPECIES_METANG - {0x87, 0x07}, // SPECIES_METAGROSS - {0x87, 0x06}, // SPECIES_REGIROCK - {0x78, 0x04}, // SPECIES_REGICE - {0x88, 0x02}, // SPECIES_REGISTEEL - {0x88, 0x03}, // SPECIES_KYOGRE - {0x87, 0x04}, // SPECIES_GROUDON - {0x88, 0x01}, // SPECIES_RAYQUAZA - {0x88, 0x00}, // SPECIES_LATIAS - {0x88, 0x01}, // SPECIES_LATIOS - {0x88, 0x02}, // SPECIES_JIRACHI - {0x66, 0x0d}, // SPECIES_DEOXYS - {0x88, 0x01}, // SPECIES_CHIMECHO - {0x37, 0x06}, // SPECIES_EGG - {0x33, 0x14}, // SPECIES_UNOWN_B - {0x34, 0x10}, // SPECIES_UNOWN_C + {0x66, 0x08}, // SPECIES_TREECKO + {0x87, 0x04}, // SPECIES_GROVYLE + {0x88, 0x00}, // SPECIES_SCEPTILE + {0x56, 0x08}, // SPECIES_TORCHIC + {0x88, 0x01}, // SPECIES_COMBUSKEN + {0x88, 0x00}, // SPECIES_BLAZIKEN + {0x56, 0x0c}, // SPECIES_MUDKIP + {0x67, 0x06}, // SPECIES_MARSHTOMP + {0x88, 0x00}, // SPECIES_SWAMPERT + {0x55, 0x0c}, // SPECIES_POOCHYENA + {0x87, 0x04}, // SPECIES_MIGHTYENA + {0x85, 0x0f}, // SPECIES_ZIGZAGOON + {0x78, 0x03}, // SPECIES_LINOONE + {0x45, 0x0e}, // SPECIES_WURMPLE + {0x75, 0x11}, // SPECIES_SILCOON + {0x86, 0x09}, // SPECIES_BEAUTIFLY + {0x74, 0x10}, // SPECIES_CASCOON + {0x86, 0x0f}, // SPECIES_DUSTOX + {0x65, 0x0e}, // SPECIES_LOTAD + {0x66, 0x09}, // SPECIES_LOMBRE + {0x88, 0x00}, // SPECIES_LUDICOLO + {0x46, 0x10}, // SPECIES_SEEDOT + {0x56, 0x08}, // SPECIES_NUZLEAF + {0x88, 0x02}, // SPECIES_SHIFTRY + {0x74, 0x12}, // SPECIES_NINCADA + {0x86, 0x0a}, // SPECIES_NINJASK + {0x66, 0x0a}, // SPECIES_SHEDINJA + {0x64, 0x10}, // SPECIES_TAILLOW + {0x87, 0x06}, // SPECIES_SWELLOW + {0x54, 0x10}, // SPECIES_SHROOMISH + {0x77, 0x04}, // SPECIES_BRELOOM + {0x68, 0x08}, // SPECIES_SPINDA + {0x84, 0x18}, // SPECIES_WINGULL + {0x77, 0x04}, // SPECIES_PELIPPER + {0x65, 0x0f}, // SPECIES_SURSKIT + {0x88, 0x01}, // SPECIES_MASQUERAIN + {0x75, 0x0f}, // SPECIES_WAILMER + {0x87, 0x0a}, // SPECIES_WAILORD + {0x66, 0x0b}, // SPECIES_SKITTY + {0x66, 0x08}, // SPECIES_DELCATTY + {0x67, 0x07}, // SPECIES_KECLEON + {0x55, 0x10}, // SPECIES_BALTOY + {0x78, 0x06}, // SPECIES_CLAYDOL + {0x56, 0x0c}, // SPECIES_NOSEPASS + {0x88, 0x02}, // SPECIES_TORKOAL + {0x66, 0x09}, // SPECIES_SABLEYE + {0x46, 0x0b}, // SPECIES_BARBOACH + {0x76, 0x09}, // SPECIES_WHISCASH + {0x46, 0x18}, // SPECIES_LUVDISC + {0x66, 0x0c}, // SPECIES_CORPHISH + {0x88, 0x01}, // SPECIES_CRAWDAUNT + {0x46, 0x0d}, // SPECIES_FEEBAS + {0x88, 0x00}, // SPECIES_MILOTIC + {0x67, 0x06}, // SPECIES_CARVANHA + {0x78, 0x03}, // SPECIES_SHARPEDO + {0x54, 0x10}, // SPECIES_TRAPINCH + {0x86, 0x0c}, // SPECIES_VIBRAVA + {0x88, 0x01}, // SPECIES_FLYGON + {0x65, 0x0c}, // SPECIES_MAKUHITA + {0x88, 0x01}, // SPECIES_HARIYAMA + {0x64, 0x12}, // SPECIES_ELECTRIKE + {0x67, 0x04}, // SPECIES_MANECTRIC + {0x65, 0x0f}, // SPECIES_NUMEL + {0x87, 0x09}, // SPECIES_CAMERUPT + {0x65, 0x10}, // SPECIES_SPHEAL + {0x86, 0x0a}, // SPECIES_SEALEO + {0x88, 0x01}, // SPECIES_WALREIN + {0x74, 0x10}, // SPECIES_CACNEA + {0x88, 0x00}, // SPECIES_CACTURNE + {0x56, 0x0b}, // SPECIES_SNORUNT + {0x76, 0x0a}, // SPECIES_GLALIE + {0x66, 0x09}, // SPECIES_LUNATONE + {0x88, 0x01}, // SPECIES_SOLROCK + {0x55, 0x0f}, // SPECIES_AZURILL + {0x46, 0x09}, // SPECIES_SPOINK + {0x77, 0x05}, // SPECIES_GRUMPIG + {0x56, 0x0e}, // SPECIES_PLUSLE + {0x66, 0x0c}, // SPECIES_MINUN + {0x76, 0x08}, // SPECIES_MAWILE + {0x65, 0x0c}, // SPECIES_MEDITITE + {0x68, 0x01}, // SPECIES_MEDICHAM + {0x76, 0x11}, // SPECIES_SWABLU + {0x88, 0x02}, // SPECIES_ALTARIA + {0x55, 0x0c}, // SPECIES_WYNAUT + {0x66, 0x0a}, // SPECIES_DUSKULL + {0x77, 0x05}, // SPECIES_DUSCLOPS + {0x76, 0x08}, // SPECIES_ROSELIA + {0x74, 0x12}, // SPECIES_SLAKOTH + {0x78, 0x00}, // SPECIES_VIGOROTH + {0x86, 0x08}, // SPECIES_SLAKING + {0x55, 0x12}, // SPECIES_GULPIN + {0x66, 0x08}, // SPECIES_SWALOT + {0x88, 0x00}, // SPECIES_TROPIUS + {0x55, 0x0e}, // SPECIES_WHISMUR + {0x78, 0x03}, // SPECIES_LOUDRED + {0x88, 0x01}, // SPECIES_EXPLOUD + {0x55, 0x0e}, // SPECIES_CLAMPERL + {0x78, 0x03}, // SPECIES_HUNTAIL + {0x86, 0x0b}, // SPECIES_GOREBYSS + {0x68, 0x00}, // SPECIES_ABSOL + {0x56, 0x0e}, // SPECIES_SHUPPET + {0x55, 0x0c}, // SPECIES_BANETTE + {0x77, 0x08}, // SPECIES_SEVIPER + {0x87, 0x05}, // SPECIES_ZANGOOSE + {0x77, 0x0b}, // SPECIES_RELICANTH + {0x43, 0x14}, // SPECIES_ARON + {0x75, 0x0d}, // SPECIES_LAIRON + {0x88, 0x00}, // SPECIES_AGGRON + {0x34, 0x11}, // SPECIES_CASTFORM + {0x66, 0x08}, // SPECIES_VOLBEAT + {0x56, 0x08}, // SPECIES_ILLUMISE + {0x67, 0x07}, // SPECIES_LILEEP + {0x78, 0x00}, // SPECIES_CRADILY + {0x66, 0x08}, // SPECIES_ANORITH + {0x88, 0x00}, // SPECIES_ARMALDO + {0x35, 0x0f}, // SPECIES_RALTS + {0x47, 0x06}, // SPECIES_KIRLIA + {0x78, 0x01}, // SPECIES_GARDEVOIR + {0x56, 0x0b}, // SPECIES_BAGON + {0x66, 0x09}, // SPECIES_SHELGON + {0x87, 0x04}, // SPECIES_SALAMENCE + {0x55, 0x0f}, // SPECIES_BELDUM + {0x87, 0x07}, // SPECIES_METANG + {0x87, 0x06}, // SPECIES_METAGROSS + {0x78, 0x04}, // SPECIES_REGIROCK + {0x88, 0x02}, // SPECIES_REGICE + {0x88, 0x03}, // SPECIES_REGISTEEL + {0x87, 0x04}, // SPECIES_KYOGRE + {0x88, 0x01}, // SPECIES_GROUDON + {0x88, 0x00}, // SPECIES_RAYQUAZA + {0x88, 0x01}, // SPECIES_LATIAS + {0x88, 0x02}, // SPECIES_LATIOS + {0x66, 0x0d}, // SPECIES_JIRACHI + {0x88, 0x01}, // SPECIES_DEOXYS + {0x37, 0x06}, // SPECIES_CHIMECHO + {0x33, 0x14}, // SPECIES_EGG + {0x34, 0x10}, // SPECIES_UNOWN_B + {0x44, 0x10}, // SPECIES_UNOWN_C {0x44, 0x10}, // SPECIES_UNOWN_D - {0x44, 0x10}, // SPECIES_UNOWN_E + {0x44, 0x11}, // SPECIES_UNOWN_E {0x44, 0x11}, // SPECIES_UNOWN_F - {0x44, 0x11}, // SPECIES_UNOWN_G - {0x35, 0x0e}, // SPECIES_UNOWN_H - {0x44, 0x10}, // SPECIES_UNOWN_I - {0x34, 0x10}, // SPECIES_UNOWN_J - {0x34, 0x11}, // SPECIES_UNOWN_K - {0x44, 0x11}, // SPECIES_UNOWN_L - {0x34, 0x13}, // SPECIES_UNOWN_M - {0x44, 0x13}, // SPECIES_UNOWN_N - {0x43, 0x14}, // SPECIES_UNOWN_O - {0x44, 0x10}, // SPECIES_UNOWN_P - {0x34, 0x13}, // SPECIES_UNOWN_Q - {0x43, 0x15}, // SPECIES_UNOWN_R - {0x34, 0x13}, // SPECIES_UNOWN_S - {0x45, 0x0c}, // SPECIES_UNOWN_T - {0x34, 0x12}, // SPECIES_UNOWN_U + {0x35, 0x0e}, // SPECIES_UNOWN_G + {0x44, 0x10}, // SPECIES_UNOWN_H + {0x34, 0x10}, // SPECIES_UNOWN_I + {0x34, 0x11}, // SPECIES_UNOWN_J + {0x44, 0x11}, // SPECIES_UNOWN_K + {0x34, 0x13}, // SPECIES_UNOWN_L + {0x44, 0x13}, // SPECIES_UNOWN_M + {0x43, 0x14}, // SPECIES_UNOWN_N + {0x44, 0x10}, // SPECIES_UNOWN_O + {0x34, 0x13}, // SPECIES_UNOWN_P + {0x43, 0x15}, // SPECIES_UNOWN_Q + {0x34, 0x13}, // SPECIES_UNOWN_R + {0x45, 0x0c}, // SPECIES_UNOWN_S + {0x34, 0x12}, // SPECIES_UNOWN_T + {0x44, 0x12}, // SPECIES_UNOWN_U {0x44, 0x12}, // SPECIES_UNOWN_V - {0x44, 0x12}, // SPECIES_UNOWN_W - {0x44, 0x13}, // SPECIES_UNOWN_X - {0x33, 0x15}, // SPECIES_UNOWN_Y - {0x34, 0x11}, // SPECIES_UNOWN_Z - {0x34, 0x10}, // SPECIES_UNOWN_EMARK - {0x35, 0x0f}, // SPECIES_UNOWN_QMARK - {0x35, 0x0d}, + {0x44, 0x13}, // SPECIES_UNOWN_W + {0x33, 0x15}, // SPECIES_UNOWN_X + {0x34, 0x11}, // SPECIES_UNOWN_Y + {0x34, 0x10}, // SPECIES_UNOWN_Z + {0x35, 0x0f}, // SPECIES_UNOWN_EMARK + {0x35, 0x0d}, // SPECIES_UNOWN_QMARK }; diff --git a/src/dragon.c b/src/dragon.c index 20ef357a0..49f1b57c8 100644 --- a/src/dragon.c +++ b/src/dragon.c @@ -1,13 +1,21 @@ #include "global.h" #include "battle_anim.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" #include "constants/rgb.h" -extern void sub_8113064(struct Sprite *); -extern void sub_8113224(struct Sprite *); -extern void sub_81131B4(struct Sprite *); -extern void sub_8113224(struct Sprite *); -extern void sub_8113250(struct Sprite *); -extern void sub_81135EC(struct Sprite *); +extern u16 gUnknown_0203A100[]; + +void sub_8113064(struct Sprite *); +void sub_81131B4(struct Sprite *); +void sub_8113224(struct Sprite *); +void sub_8113250(struct Sprite *); +void sub_81135EC(struct Sprite *); +static void sub_81132E0(struct Sprite *); +static void sub_81134B8(u8); +static void sub_8113574(struct Task *); +static void sub_811369C(struct Sprite *); const union AnimCmd gUnknown_08596E60[] = { @@ -178,3 +186,252 @@ const struct SpriteTemplate gUnknown_08596FB0 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_81135EC, }; + +void sub_8113064(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 = 1; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80A66DC; +} + +static void sub_8113100(struct Sprite *sprite) +{ + sub_80A6838(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, move_anim_8074EE0); +} + +void sub_81131B4(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); + } + + sub_80A6864(sprite, gBattleAnimArgs[1]); + sprite->pos1.y += gBattleAnimArgs[2]; + sprite->callback = sub_80A67D8; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); +} + +void sub_8113224(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + StartSpriteAffineAnim(sprite, 1); + + sub_8113100(sprite); +} + +void sub_8113250(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 = sub_80A861C(gBattlerAttacker, 0); + r0 = sub_80A861C(gBattlerAttacker, 1); + 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_81132E0; +} + +static void sub_81132E0(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_81133E8(u8 taskId) +{ + struct ScanlineEffectParams sp; + struct Task *task = &gTasks[taskId]; + u16 i; + u8 r1; + if (sub_80A8364(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_81134B8; +} + +static void sub_81134B8(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_8113574(task); + break; + case 1: + if (++task->data[1] > 0x3C) + task->data[0]++; + sub_8113574(task); + break; + case 2: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (--task->data[6] == 0) + task->data[0]++; + } + sub_8113574(task); + break; + case 3: + gScanlineEffect.state = 3; + task->data[0]++; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_8113574(struct Task *task) +{ + u16 r3 = task->data[5]; + u16 i; + 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; +} + +void sub_81135EC(struct Sprite *sprite) +{ + int r6 = (gBattleAnimArgs[2] * 3) / 5; + int i; + 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_811369C; + for (i = 0; i < 7; i++) + gUnknown_0203A100[i] = sprite->data[i]; +} + +static void sub_811369C(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/effects_1.c b/src/effects_1.c index 36676b70d..a8687bc38 100644 --- a/src/effects_1.c +++ b/src/effects_1.c @@ -13,7 +13,7 @@ extern void sub_80FED28(struct Sprite *); extern void sub_80FEE78(struct Sprite *); extern void sub_80FEF44(struct Sprite *); extern void sub_80FEFFC(struct Sprite *); -extern void sub_80FF268(struct Sprite *); +extern void AnimMoveTwisterParticle(struct Sprite *); extern void sub_80FF0F4(struct Sprite *); extern void sub_80FF374(struct Sprite *); extern void sub_80FF698(struct Sprite *); @@ -437,7 +437,7 @@ const struct SpriteTemplate gUnknown_085923A8 = .anims = gUnknown_08592388, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FF268, + .callback = AnimMoveTwisterParticle, }; const union AnimCmd gUnknown_085923C0[] = diff --git a/src/fight.c b/src/fight.c index 89fe5900b..c9000fae4 100644 --- a/src/fight.c +++ b/src/fight.c @@ -1,25 +1,42 @@ #include "global.h" #include "battle_anim.h" +#include "gpu_regs.h" +#include "random.h" +#include "task.h" +#include "trig.h" #include "constants/rgb.h" -extern void unc_080B08A0(struct Sprite *); -extern void sub_810CE68(struct Sprite *); -extern void sub_810CEB4(struct Sprite *); -extern void sub_810CEE0(struct Sprite *); -extern void sub_810CF30(struct Sprite *); -extern void sub_810D10C(struct Sprite *); -extern void sub_810D1B4(struct Sprite *); -extern void sub_810D278(struct Sprite *); -extern void sub_810D2E4(struct Sprite *); -extern void sub_810D37C(struct Sprite *); -extern void sub_810D40C(struct Sprite *); -extern void sub_810D4F4(struct Sprite *); -extern void sub_810D608(struct Sprite *); -extern void sub_810D714(struct Sprite *); -extern void sub_810D874(struct Sprite *); -extern void sub_810D984(struct Sprite *); -extern void sub_810DA10(struct Sprite *); -extern void sub_810DA7C(struct Sprite *); +void unc_080B08A0(struct Sprite *); +void sub_810CE68(struct Sprite *); +void sub_810CEB4(struct Sprite *); +void AnimBasicFistOrFoot(struct Sprite *); +void sub_810CF30(struct Sprite *); +void sub_810D10C(struct Sprite *); +void sub_810D1B4(struct Sprite *); +void AnimSpinningKickOrPunch(struct Sprite *); +void AnimStompFoot(struct Sprite *); +void sub_810D37C(struct Sprite *); +void sub_810D40C(struct Sprite *); +void sub_810D4F4(struct Sprite *); +void sub_810D608(struct Sprite *); +void sub_810D714(struct Sprite *); +void sub_810D874(struct Sprite *); +void sub_810D984(struct Sprite *); +void sub_810DA10(struct Sprite *); +void sub_810DA7C(struct Sprite *); +static void sub_810D0B8(struct Sprite *); +static void sub_810D164(struct Sprite *); +static void sub_810D240(struct Sprite *); +static void AnimSpinningKickOrPunchFinish(struct Sprite *); +static void AnimStompFootStep(struct Sprite *); +static void AnimStompFootEnd(struct Sprite *); +static void sub_810D47C(struct Sprite *); +static void sub_810D5DC(struct Sprite *); +static void sub_810D6A8(struct Sprite *); +static void sub_810D770(struct Sprite *); +static void sub_810D830(struct Sprite *); + +extern struct SpriteTemplate gBasicHitSplatSpriteTemplate; const struct SpriteTemplate gUnknown_08595E14 = { @@ -109,7 +126,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate = .anims = gUnknown_08595E54, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810CEE0, + .callback = AnimBasicFistOrFoot, }; const struct SpriteTemplate gUnknown_08595EB0 = @@ -165,7 +182,7 @@ const struct SpriteTemplate gUnknown_08595F14 = .anims = gUnknown_08595E54, .images = NULL, .affineAnims = gUnknown_08595F10, - .callback = sub_810D278, + .callback = AnimSpinningKickOrPunch, }; const union AffineAnimCmd gUnknown_08595F2C[] = @@ -188,7 +205,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate = .anims = gUnknown_08595E54, .images = NULL, .affineAnims = gUnknown_08595F44, - .callback = sub_810D278, + .callback = AnimSpinningKickOrPunch, }; const struct SpriteTemplate gUnknown_08595F60 = @@ -199,7 +216,7 @@ const struct SpriteTemplate gUnknown_08595F60 = .anims = gUnknown_08595E58, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810D2E4, + .callback = AnimStompFoot, }; const struct SpriteTemplate gUnknown_08595F78 = @@ -396,3 +413,623 @@ const struct SpriteTemplate gUnknown_08596104 = .affineAnims = gUnknown_08596100, .callback = sub_810DA7C, }; + +void unc_080B08A0(struct Sprite *sprite) +{ + sub_80A6864(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = 15; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810CE68(struct Sprite *sprite) +{ + if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + StartSpriteAnim(sprite, gBattleAnimArgs[6]); + gBattleAnimArgs[6] = 0; + sub_80A7938(sprite); +} + +void sub_810CEB4(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + sub_810CE68(sprite); +} + +// Displays a basic fist or foot sprite for a given duration. +// Used by many fighting moves (and elemental "punch" moves). +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +// arg 3: ? (todo: related to initial pixel offsets) +// arg 4: anim num +void AnimBasicFistOrFoot(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + + if (gBattleAnimArgs[3] == 0) + InitAnimSpritePos(sprite, 1); + else + sub_80A6980(sprite, TRUE); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810CF30(struct Sprite *sprite) +{ + u8 battler; + s16 xMod, yMod; + s16 x, y; + + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (gBattleAnimArgs[2] < 0) + gBattleAnimArgs[2] = Random2() % 5; + + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->pos1.x = GetBattlerSpriteCoord(battler, 2); + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3); + + xMod = sub_80A861C(battler, 1) / 2; + yMod = sub_80A861C(battler, 0) / 4; + + x = Random2() % xMod; + y = Random2() % yMod; + + if (Random2() & 1) + x *= -1; + if (Random2() & 1) + y *= -1; + + if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER) + y += 0xFFF0; + + sprite->pos1.x += x; + sprite->pos1.y += y; + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + if (sprite->data[7] != 64) + { + StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); + gSprites[sprite->data[7]].callback = SpriteCallbackDummy; + } + + sprite->callback = sub_810D0B8; +} + +static void sub_810D0B8(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + if (sprite->data[7] != 64) + { + FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); + DestroySprite(&gSprites[sprite->data[7]]); + } + + DestroyAnimSprite(sprite); + } + else + { + sprite->data[0]--; + } +} + +void sub_810D10C(struct Sprite *sprite) +{ + sub_80A6980(sprite, TRUE); + sprite->data[0] = 30; + + if (gBattleAnimArgs[2] == 0) + { + sprite->data[2] = sprite->pos1.x - 20; + } + else + { + sprite->data[2] = sprite->pos1.x + 20; + sprite->hFlip = 1; + } + + sprite->data[4] = sprite->pos1.y - 20; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, sub_810D164); +} + +static void sub_810D164(struct Sprite *sprite) +{ + if (++sprite->data[5] == 11) + { + sprite->data[2] = sprite->pos1.x - sprite->pos2.x; + sprite->data[4] = sprite->pos1.y - sprite->pos2.y; + sprite->data[0] = 8; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +void sub_810D1B4(struct Sprite *sprite) +{ + if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT) + gBattleAnimArgs[0] *= -1; + + sub_80A6980(sprite, TRUE); + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y; + + InitAnimLinearTranslation(sprite); + + sprite->data[5] = gBattleAnimArgs[5]; + sprite->data[6] = gBattleAnimArgs[4]; + sprite->data[7] = 0; + + sprite->callback = sub_810D240; +} + +static void sub_810D240(struct Sprite *sprite) +{ + if (!TranslateAnimLinear(sprite)) + { + sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]); + sprite->data[7] += sprite->data[6]; + } + else + { + DestroyAnimSprite(sprite); + } +} + +// Animates the spinning, shrinking kick or punch, which then +// reappears at full size. Used by moves such as MOVE_MEGA_PUNCH and MOVE_MEGA_KICK. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: anim num +// arg 3: spin duration +void AnimSpinningKickOrPunch(struct Sprite *sprite) +{ + sub_80A6980(sprite, TRUE); + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0] = gBattleAnimArgs[3]; + + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish); +} + +static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 0); + sprite->affineAnimPaused = 1; + sprite->data[0] = 20; + + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Animates MOVE_STOMP's foot that slides downward. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: initial wait duration +void AnimStompFoot(struct Sprite *sprite) +{ + sub_80A6980(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->callback = AnimStompFootStep; +} + +static void AnimStompFootStep(struct Sprite *sprite) +{ + if (--sprite->data[0] == -1) + { + sprite->data[0] = 6; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, AnimStompFootEnd); + } +} + +static void AnimStompFootEnd(struct Sprite *sprite) +{ + sprite->data[0] = 15; + + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810D37C(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sub_80A6980(sprite, TRUE); + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + + if (sprite->data[3] > 100) + sprite->invisible = sprite->data[3] % 2; + + if (sprite->data[3] > 120) + DestroyAnimSprite(sprite); + } +} + +void sub_810D40C(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); + } + + sprite->pos1.x += gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[2]; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = 0; + sprite->callback = sub_810D47C; +} + +static void sub_810D47C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (--sprite->data[1] == 0) + { + if (sprite->data[2] == 0) + DestroyAnimSprite(sprite); + else + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->data[3]++; + if (sprite->data[3] & 1) + sprite->pos2.x = 2; + else + sprite->pos2.x = -2; + } + + if (--sprite->data[2] == 0) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_810D4F4(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; + } + + sprite->oam.tileNum += gBattleAnimArgs[1] * 16; + sprite->data[0] = 0; + + switch (gBattleAnimArgs[1]) + { + case 0: + sprite->data[6] = -3; + sprite->data[7] = -3; + break; + case 1: + sprite->data[6] = 3; + sprite->data[7] = -3; + break; + case 2: + sprite->data[6] = -3; + sprite->data[7] = 3; + break; + case 3: + sprite->data[6] = 3; + sprite->data[7] = 3; + break; + default: + DestroyAnimSprite(sprite); + return; + } + + sprite->callback = sub_810D5DC; +} + +static void sub_810D5DC(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[6]; + sprite->pos1.y += sprite->data[7]; + + if (++sprite->data[0] > 40) + DestroyAnimSprite(sprite); +} + +void sub_810D608(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + sprite->oam.priority = sub_80A8328(gBattleAnimAttacker); + sprite->data[7] = gBattleAnimTarget; + } + else + { + sprite->oam.priority = sub_80A8328(gBattleAnimTarget); + sprite->data[7] = gBattleAnimAttacker; + } + + sprite->data[0] = 0; + sprite->data[1] = 12; + sprite->data[2] = 8; + sprite->callback = sub_810D6A8; +} + +static void sub_810D6A8(struct Sprite *sprite) +{ + if (++sprite->data[0] == 180) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + + sprite->data[0] = 16; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); + + InitAnimLinearTranslation(sprite); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80A6F98; + } +} + +void sub_810D714(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 120; + + sprite->data[0] = gBattleAnimArgs[3]; + sub_80A8048(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8)); + + sprite->data[6] = gBattleAnimArgs[1]; + sprite->oam.tileNum += gBattleAnimArgs[2] * 4; + + sprite->callback = sub_810D770; +} + +static void sub_810D770(struct Sprite *sprite) +{ + void *var0; + + if (sprite->data[0] != 0) + { + var0 = sub_80A8050(sprite->data[4], sprite->data[5]); + var0 -= sprite->data[6]; + sub_80A8048(&sprite->data[4], &sprite->data[5], var0); + + var0 = (void *)(((intptr_t)var0) >> 8); + sprite->pos1.y = (intptr_t)var0; + if (sprite->pos1.y < -8) + DestroyAnimSprite(sprite); + else + sprite->data[0]--; + } + else + { + s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + + sprite->data[0] = pos2 - pos0; + sprite->data[1] = pos3 - pos1; + sprite->data[2] = sprite->pos1.x << 4; + sprite->data[3] = sprite->pos1.y << 4; + + sprite->callback = sub_810D830; + } +} + +static void sub_810D830(struct Sprite *sprite) +{ + u16 edgeX; + + sprite->data[2] += sprite->data[0]; + sprite->data[3] += sprite->data[1]; + sprite->pos1.x = sprite->data[2] >> 4; + sprite->pos1.y = sprite->data[3] >> 4; + + edgeX = sprite->pos1.x + 8; + if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + DestroyAnimSprite(sprite); +} + +void sub_810D874(struct Sprite *sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + battler = gBattleAnimTarget; + sprite->oam.priority = sub_80A8328(gBattleAnimAttacker); + } + else + { + battler = gBattleAnimAttacker; + sprite->oam.priority = sub_80A8328(gBattleAnimTarget); + } + + if (IsContest()) + sprite->oam.matrixNum |= 0x8; + else if (GetBattlerSide(battler) == B_SIDE_PLAYER) + sprite->oam.matrixNum |= 0x18; + + sprite->data[0] = 16; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(battler, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(battler, 3); + + InitAnimLinearTranslation(sprite); + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = sub_80A6F98; +} + +static void sub_810D960(struct Sprite *sprite) +{ + if (sprite->data[0] == sprite->data[4]) + DestroyAnimSprite(sprite); + + sprite->data[0]++; +} + +void sub_810D984(struct Sprite *sprite) +{ + u8 turn; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[0]; + sprite->data[3] = gBattleAnimArgs[1]; + sprite->data[4] = gBattleAnimArgs[2]; + + turn = gAnimMoveTurn; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + turn++; + + if (turn & 1) + { + sprite->data[2] = -sprite->data[2]; + sprite->data[1]++; + } + + StartSpriteAnim(sprite, sprite->data[1]); + sprite->pos2.x = sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + sprite->callback = sub_810D960; +} + +void sub_810DA10(struct Sprite *sprite) +{ + if (gBattleAnimArgs[2] == 0) + InitAnimSpritePos(sprite, 0); + else + sub_80A6980(sprite, FALSE); + + if (IsContest()) + { + StartSpriteAnim(sprite, 2); + } + else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + StartSpriteAnim(sprite, 1); + } + + sprite->callback = sub_80A67D8; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810DA7C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + sprite->data[1] = (sprite->data[1] + 40) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], 2); + if (++sprite->data[0] > 40) + DestroyAnimSprite(sprite); + } +} + +void sub_810DABC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sub_80A6DAC(0); + task->data[8] = gBattleAnimArgs[0]; + task->data[0]++; + break; + case 1: + if (--task->data[8] == -1) + task->data[0]++; + break; + case 2: + default: + task->data[9] += 1280; + break; + } + + task->data[10] += 2816; + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + gBattle_BG3_X += task->data[9] >> 8; + else + gBattle_BG3_X -= task->data[9] >> 8; + + gBattle_BG3_Y += task->data[10] >> 8; + task->data[9] &= 0xFF; + task->data[10] &= 0xFF; + + if (gBattleAnimArgs[7] == -1) + { + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + sub_80A6DAC(1); + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/frontier_util.c b/src/frontier_util.c index 846d8076e..a35088f6f 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -36,7 +36,7 @@ #include "constants/items.h" #include "constants/event_objects.h" -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; struct FrontierBrainMon { @@ -779,7 +779,7 @@ static void sub_81A1968(void) break; case 4: for (i = 0; i < 4; i++) - gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i]; + gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; break; case 6: gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006; @@ -796,8 +796,8 @@ static void sub_81A1AD4(void) sub_81B8558(); for (i = 0; i < gSpecialVar_0x8005; i++) - gUnknown_0203CEF8[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; - ReducePlayerPartyToThree(); + gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; + ReducePlayerPartyToSelectedMons(); } static void DoSoftReset_(void) diff --git a/src/graphics.c b/src/graphics.c index 7c28aa7b6..2a21b610a 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1,8 +1,8 @@ #include "global.h" -const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/interface/menu.4bpp.lz"); -const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/interface/menu.gbapal.lz"); -const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/interface/menu_map.bin.lz"); +const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.4bpp.lz"); +const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/battle_interface/textbox.gbapal.lz"); +const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/battle_interface/textbox_map.bin.lz"); const u32 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/front_pics/circled_question_mark_still_front_pic.4bpp.lz"); const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/back_pics/circled_question_mark_back_pic.4bpp.lz"); diff --git a/src/ground.c b/src/ground.c index 33eb3660a..6cb7b8557 100644 --- a/src/ground.c +++ b/src/ground.c @@ -1,14 +1,31 @@ #include "global.h" #include "battle_anim.h" +#include "random.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" #include "constants/rgb.h" -extern void sub_8114994(struct Sprite *); -extern void sub_8114A7C(struct Sprite *); -extern void sub_8114AF0(struct Sprite *); -extern void sub_8114AF0(struct Sprite *); -extern void sub_8114B80(struct Sprite *); -extern void sub_81151A0(struct Sprite *); -extern void sub_8115244(struct Sprite *); +void AnimBonemerangProjectile(struct Sprite *); +void AnimBoneHitProjectile(struct Sprite *); +void AnimDirtScatter(struct Sprite *); +void AnimMudSportDirt(struct Sprite *); +void AnimFissureDirtPlumeParticle(struct Sprite *); +void AnimDigDirtMound(struct Sprite *); +static void AnimBonemerangProjectileStep(struct Sprite *); +static void AnimBonemerangProjectileEnd(struct Sprite *); +static void AnimMudSportDirtRising(struct Sprite *); +static void AnimMudSportDirtFalling(struct Sprite *); +static void sub_8114CFC(u8); +static void sub_8114EB4(u8); +static void sub_8114F54(u8); +static void sub_8114FD8(u8); +static void sub_81150E0(u8, s16, s16); +static void AnimFissureDirtPlumeParticleStep(struct Sprite *); +static void sub_81153AC(u8); +static void sub_81154A4(u8); +static void sub_8115588(struct Task *); +static void sub_81156D0(u8); const union AffineAnimCmd gUnknown_08597150[] = { @@ -40,7 +57,7 @@ const struct SpriteTemplate gUnknown_08597178 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_08597170, - .callback = sub_8114994, + .callback = AnimBonemerangProjectile, }; const struct SpriteTemplate gUnknown_08597190 = @@ -51,7 +68,7 @@ const struct SpriteTemplate gUnknown_08597190 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gUnknown_08597174, - .callback = sub_8114A7C, + .callback = AnimBoneHitProjectile, }; const struct SpriteTemplate gUnknown_085971A8 = @@ -62,7 +79,7 @@ const struct SpriteTemplate gUnknown_085971A8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8114AF0, + .callback = AnimDirtScatter, }; const union AnimCmd gUnknown_085971C0[] = @@ -84,7 +101,7 @@ const struct SpriteTemplate gUnknown_085971CC = .anims = gUnknown_085971C8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8114AF0, + .callback = AnimDirtScatter, }; const struct SpriteTemplate gUnknown_085971E4 = @@ -95,7 +112,7 @@ const struct SpriteTemplate gUnknown_085971E4 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8114B80, + .callback = AnimMudSportDirt, }; const struct SpriteTemplate gUnknown_085971FC = @@ -106,7 +123,7 @@ const struct SpriteTemplate gUnknown_085971FC = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81151A0, + .callback = AnimFissureDirtPlumeParticle, }; const struct SpriteTemplate gUnknown_08597214 = @@ -117,5 +134,615 @@ const struct SpriteTemplate gUnknown_08597214 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8115244, + .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. +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 (TranslateAnimArc(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 (TranslateAnimArc(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 +void AnimBoneHitProjectile(struct Sprite *sprite) +{ + sub_80A6980(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 +void AnimDirtScatter(struct Sprite *sprite) +{ + u8 targetXPos, targetYPos; + s16 xOffset, yOffset; + + InitAnimSpritePos(sprite, 1); + + targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2); + targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3); + + xOffset = Random2() & 0x1F; + yOffset = Random2() & 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, move_anim_8074EE0); +} + +// 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 +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_8114CBC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == 0) + task->func = sub_8114CFC; + else + task->func = sub_8114EB4; + + task->func(taskId); +} + +static void sub_8114CFC(u8 taskId) +{ + u8 var0; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + task->data[11] = sub_80A8364(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 = 1; + task->data[0]++; + break; + case 1: + sub_81150E0(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 = 1; + break; + } +} + +static void sub_8114EB4(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(0); + gSprites[spriteId].invisible = 1; + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + + if (sub_80A8364(gBattleAnimAttacker) == 1) + gBattle_BG1_Y = 0; + else + gBattle_BG2_Y = 0; + + DestroyAnimVisualTask(taskId); +} + +void sub_8114F14(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == 0) + task->func = sub_8114F54; + else + task->func = sub_8114FD8; + + task->func(taskId); +} + +static void sub_8114F54(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + gSprites[task->data[10]].invisible = 0; + 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_8114FD8(u8 taskId) +{ + u8 var0; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] = GetAnimBattlerSpriteId(0); + task->data[11] = sub_80A8364(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_81150E0(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_81150E0(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 +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 (TranslateAnimArc(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 +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_81152DC(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_81153AC; + 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_81154A4; + break; + default: + task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + if (task->data[9] == 0xFF) + { + DestroyAnimVisualTask(taskId); + } + else + { + task->data[13] = 1; + task->func = sub_81154A4; + } + + break; + } +} + +static void sub_81153AC(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_81154A4(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_8115588(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_8115588(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_8115588(struct Task *task) +{ + u16 i; + u16 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_8115628(u8 taskId) +{ + struct Task *newTask; + u8 battler = (gBattleAnimArgs[0] & 1) ? gBattleAnimTarget : gBattleAnimAttacker; + + if (gBattleAnimArgs[0] > 1) + battler ^= 2; + + newTask = &gTasks[CreateTask(sub_81156D0, 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_81156D0(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/poison.c b/src/poison.c index f0d8ec553..efa89ec13 100644 --- a/src/poison.c +++ b/src/poison.c @@ -1,14 +1,19 @@ #include "global.h" #include "battle_anim.h" +#include "trig.h" #include "constants/rgb.h" extern void sub_80A77C8(struct Sprite *); -extern void sub_810DBAC(struct Sprite *); -extern void sub_810DC2C(struct Sprite *); -extern void sub_810DCD0(struct Sprite *); -extern void sub_810DD50(struct Sprite *); -extern void sub_810DDC4(struct Sprite *); -extern void sub_810DDC4(struct Sprite *); + +void sub_810DBAC(struct Sprite *); +void sub_810DC2C(struct Sprite *); +void sub_810DCD0(struct Sprite *); +void sub_810DD50(struct Sprite *); +void AnimBubbleEffect(struct Sprite *); +static void sub_810DC10(struct Sprite *); +static void sub_810DCB4(struct Sprite *); +static void sub_810DD24(struct Sprite *); +static void AnimBubbleEffectStep(struct Sprite *); extern const union AnimCmd *const gUnknown_08595200[]; @@ -170,7 +175,7 @@ const struct SpriteTemplate gPoisonBubbleSpriteTemplate = .anims = gUnknown_08596164, .images = NULL, .affineAnims = gUnknown_0859623C, - .callback = sub_810DDC4, + .callback = AnimBubbleEffect, }; const struct SpriteTemplate gWaterBubbleSpriteTemplate = @@ -181,5 +186,138 @@ const struct SpriteTemplate gWaterBubbleSpriteTemplate = .anims = gUnknown_08595200, .images = NULL, .affineAnims = gUnknown_0859623C, - .callback = sub_810DDC4, + .callback = AnimBubbleEffect, }; + +void sub_810DBAC(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[3]) + StartSpriteAnim(sprite, 2); + + InitAnimSpritePos(sprite, 1); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[5] = -30; + + InitAnimArcTranslation(sprite); + + sprite->callback = sub_810DC10; +} + +static void sub_810DC10(struct Sprite *sprite) +{ + if (TranslateAnimArc(sprite)) + DestroyAnimSprite(sprite); +} + +void sub_810DC2C(struct Sprite *sprite) +{ + s16 l1, l2; + if (!gBattleAnimArgs[3]) + StartSpriteAnim(sprite, 2); + + InitAnimSpritePos(sprite, 1); + SetAverageBattlerPositions(gBattleAnimTarget, 1, &l1, &l2); + + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = l1 + gBattleAnimArgs[4]; + sprite->data[4] = l2 + gBattleAnimArgs[5]; + sprite->data[5] = -30; + + InitAnimArcTranslation(sprite); + + sprite->callback = sub_810DCB4; +} + +static void sub_810DCB4(struct Sprite *sprite) +{ + if (TranslateAnimArc(sprite)) + DestroyAnimSprite(sprite); +} + +void sub_810DCD0(struct Sprite *sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + + InitSpriteDataForLinearTranslation(sprite); + + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; + sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + + sprite->callback = sub_810DD24; +} + +static void sub_810DD24(struct Sprite *sprite) +{ + sub_80A656C(sprite); + + sprite->data[1] -= sprite->data[5]; + sprite->data[2] -= sprite->data[6]; + + if (!sprite->data[0]) + DestroyAnimSprite(sprite); +} + +void sub_810DD50(struct Sprite *sprite) +{ + SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + sprite->data[0]; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Animates a bubble by rising upward, swaying side to side, and +// enlarging the sprite. This is used as an after-effect by poison-type +// moves, along with MOVE_BUBBLE, and MOVE_BUBBLEBEAM. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: 0 = single-target, 1 = multi-target +void AnimBubbleEffect(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[2]) + { + sub_80A6980(sprite, TRUE); + } + else + { + SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = AnimBubbleEffectStep; +} + +static void AnimBubbleEffectStep(struct Sprite *sprite) +{ + sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; + sprite->pos2.x = Sin(sprite->data[0], 4); + sprite->data[1] += 0x30; + sprite->pos2.y = -(sprite->data[1] >> 8); + + if (sprite->affineAnimEnded) + DestroyAnimSprite(sprite); +} diff --git a/src/pokeball.c b/src/pokeball.c index 09e7ac639..ad839e6af 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -402,7 +402,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X); gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16; gSprites[ballSpriteId].data[5] = -40; - sub_80A68D4(&gSprites[ballSpriteId]); + InitAnimArcTranslation(&gSprites[ballSpriteId]); gSprites[ballSpriteId].oam.affineParam = taskId; gTasks[taskId].tOpponentBattler = gBattlerTarget; gTasks[taskId].func = TaskDummy; @@ -898,7 +898,7 @@ static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, 3) + 24; sprite->data[5] = -30; sprite->oam.affineParam = sprite->sBattler; - sub_80A68D4(sprite); + InitAnimArcTranslation(sprite); sprite->callback = SpriteCB_PlayerMonSendOut_2; } diff --git a/src/rock.c b/src/rock.c index 83af52865..3b8e505d8 100644 --- a/src/rock.c +++ b/src/rock.c @@ -1,22 +1,37 @@ #include "global.h" #include "battle_anim.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "palette.h" +#include "sound.h" +#include "task.h" +#include "trig.h" #include "constants/rgb.h" - -extern void sub_81109F0(struct Sprite *); -extern void sub_8110AB4(struct Sprite *); -extern void sub_8110B38(struct Sprite *); -extern void sub_8110E4C(struct Sprite *); -extern void sub_8110F30(struct Sprite *); -extern void sub_811131C(struct Sprite *); -extern void sub_8111388(struct Sprite *); -extern void sub_8111418(struct Sprite *); -extern void sub_8111444(struct Sprite *); -extern void sub_80FF268(struct Sprite *); -extern void sub_80A8EE4(struct Sprite *); +#include "constants/songs.h" extern const union AnimCmd *const gUnknown_085950E0[]; extern const union AnimCmd *const gUnknown_085954D0[]; +extern void AnimMoveTwisterParticle(struct Sprite *); + +void sub_81109F0(struct Sprite *); +void sub_8110AB4(struct Sprite *); +void AnimDirtParticleAcrossScreen(struct Sprite *); +void AnimRaiseSprite(struct Sprite *); +void sub_81110A4(u8 taskId); +void sub_811131C(struct Sprite *); +void sub_8111388(struct Sprite *); +void sub_8111418(struct Sprite *); +void sub_8111444(struct Sprite *); +void sub_8110B38(struct Sprite *); +static void sub_8110A70(struct Sprite *); +static void sub_8110B80(struct Sprite *sprite); +static void sub_8110CB0(u8 taskId); +static void sub_8111214(struct Task *task); +static u8 sub_811135C(void); +static void sub_81113C8(struct Sprite *sprite); +static void sub_811149C(struct Sprite *sprite); + const union AnimCmd gUnknown_08596AE0[] = { ANIMCMD_FRAME(32, 1), @@ -118,7 +133,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8596BA0 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8110E4C, + .callback = AnimDirtParticleAcrossScreen, }; const struct Subsprite gUnknown_08596BB8[] = @@ -194,7 +209,7 @@ const struct SpriteTemplate gUnknown_08596C10 = .anims = gUnknown_08596BF8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8110F30, + .callback = AnimRaiseSprite, }; const struct SpriteTemplate gUnknown_08596C28 = @@ -278,7 +293,7 @@ const struct SpriteTemplate gUnknown_08596CC8 = .anims = gUnknown_08596C08, .images = NULL, .affineAnims = gUnknown_08596C90, - .callback = sub_80FF268, + .callback = AnimMoveTwisterParticle, }; const struct SpriteTemplate gUnknown_08596CE0 = @@ -291,3 +306,573 @@ const struct SpriteTemplate gUnknown_08596CE0 = .affineAnims = gUnknown_08596C90, .callback = sub_80A8EE4, }; + +void sub_81109F0(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] != 0) + SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += 14; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + AnimateSprite(sprite); + + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 4; + sprite->data[3] = 16; + sprite->data[4] = -70; + sprite->data[5] = gBattleAnimArgs[2]; + + StoreSpriteCallbackInData6(sprite, sub_8110A70); + sprite->callback = sub_80A6450; + sprite->callback(sprite); +} + +static void sub_8110A70(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[5]; + + sprite->data[0] = 192; + sprite->data[1] = sprite->data[5]; + sprite->data[2] = 4; + sprite->data[3] = 32; + sprite->data[4] = -24; + + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80A6450; + sprite->callback(sprite); +} + +void sub_8110AB4(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[5]); + AnimateSprite(sprite); + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; + + InitSpriteDataForLinearTranslation(sprite); + sprite->data[3] = 0; + sprite->data[4] = 0; + + sprite->callback = sub_80A656C; + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); +} + +void sub_8110B38(struct Sprite *sprite) +{ + if (gBattleAnimArgs[6] == 0) + InitAnimSpritePos(sprite, 0); + else + sub_80A6980(sprite, FALSE); + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + + sprite->callback = sub_8110B80; +} + +static void sub_8110B80(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->pos2.y = -(sprite->data[4] >> 8); + sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); + sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF; + + if (--sprite->data[0] == -1) + { + DestroyAnimSprite(sprite); + } +} + +void AnimTask_LoadSandstormBackground(u8 taskId) +{ + int var0; + struct UnknownAnimStruct2 unknownStruct; + + var0 = 0; + 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, 1); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + + sub_80A6B30(&unknownStruct); + sub_80A6CC0(unknownStruct.bgId, gUnknown_08D8D58C, unknownStruct.tilesOffset); + sub_80A6D60(&unknownStruct, gUnknown_08D8D410, 0); + LoadCompressedPalette(&gBattleAnimSpritePalette_261, unknownStruct.unk8 * 16, 32); + + if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + var0 = 1; + + gTasks[taskId].data[0] = var0; + gTasks[taskId].func = sub_8110CB0; +} + +static void sub_8110CB0(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + + if (gTasks[taskId].data[0] == 0) + gBattle_BG1_X += -6; + else + gBattle_BG1_X += 6; + + gBattle_BG1_Y += -1; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 7) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 101) + { + gTasks[taskId].data[11] = 7; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_80A6B30(&unknownStruct); + sub_80A6C68(unknownStruct.bgId); + gTasks[taskId].data[12]++; + break; + case 4: + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + DestroyAnimVisualTask(taskId); + break; + } +} + +// Animates the sprites that fly diagonally across the screen +// in Sandstorm and Heat Wave. +// arg 0: initial y pixel offset +// arg 1: projectile speed +// arg 2: y pixel drop +// arg 3: ??? unknown (possibly a color bit) +void AnimDirtParticleAcrossScreen(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x = 304; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + sprite->data[5] = 1; + sprite->oam.matrixNum = 8; + } + else + { + sprite->pos1.x = -64; + } + + sprite->pos1.y = gBattleAnimArgs[0]; + SetSubspriteTables(sprite, gUnknown_08596BC0); + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[0]++; + } + else + { + 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[3] &= 0xFF; + sprite->data[4] &= 0xFF; + + if (sprite->data[5] == 0) + { + if (sprite->pos1.x + sprite->pos2.x > 272) + { + sprite->callback = DestroyAnimSprite; + } + } + else if (sprite->pos1.x + sprite->pos2.x < -32) + { + sprite->callback = DestroyAnimSprite; + } + } +} + +// Animates the rising rocks in Ancient Power. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: terminal y offset +// arg 3: duration +// arg 4: sprite size [1,5] +void AnimRaiseSprite(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + InitAnimSpritePos(sprite, 0); + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2]; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_8110F74(u8 taskId) +{ + u16 var0, var1, var2, var3; + u8 var4; + int var5; + s16 pan1, pan2; + struct Task *task; + + task = &gTasks[taskId]; + + var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24; + var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24; + + if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) + var3 = var1; + + var4 = sub_811135C(); + if (var4 == 1) + task->data[8] = 32; + else + task->data[8] = 48 - (var4 * 8); + + task->data[0] = 0; + task->data[11] = 0; + task->data[9] = 0; + task->data[12] = 1; + + var5 = task->data[8]; + if (var5 < 0) + var5 += 7; + + task->data[10] = (var5 >> 3) - 1; + + task->data[2] = var0 * 8; + task->data[3] = var1 * 8; + task->data[4] = ((var2 - var0) * 8) / task->data[8]; + task->data[5] = ((var3 - var1) * 8) / task->data[8]; + task->data[6] = 0; + task->data[7] = 0; + + pan1 = BattleAnimAdjustPanning(-64); + pan2 = BattleAnimAdjustPanning(63); + + task->data[13] = pan1; + task->data[14] = (pan2 - pan1) / task->data[8]; + task->data[1] = var4; + task->data[15] = GetAnimBattlerSpriteId(0); + + task->func = sub_81110A4; +} + +void sub_81110A4(u8 taskId) +{ + struct Task *task; + + task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[6] -= task->data[4]; + task->data[7] -= task->data[5]; + gSprites[task->data[15]].pos2.x = task->data[6] >> 3; + gSprites[task->data[15]].pos2.y = task->data[7] >> 3; + + if (++task->data[9] == 10) + { + task->data[11] = 20; + task->data[0]++; + } + + PlaySE12WithPanning(SE_W029, task->data[13]); + break; + case 1: + if (--task->data[11] == 0) + task->data[0]++; + break; + case 2: + if (--task->data[9] != 0) + { + task->data[6] += task->data[4]; + task->data[7] += task->data[5]; + } + else + { + task->data[6] = 0; + task->data[7] = 0; + task->data[0]++; + } + + gSprites[task->data[15]].pos2.x = task->data[6] >> 3; + gSprites[task->data[15]].pos2.y = task->data[7] >> 3; + break; + case 3: + task->data[2] += task->data[4]; + task->data[3] += task->data[5]; + if (++task->data[9] >= task->data[10]) + { + task->data[9] = 0; + sub_8111214(task); + task->data[13] += task->data[14]; + PlaySE12WithPanning(SE_W091, task->data[13]); + } + + if (--task->data[8] == 0) + { + task->data[0]++; + } + break; + case 4: + if (task->data[11] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_8111214(struct Task *task) +{ + const struct SpriteTemplate *spriteTemplate; + int var0; + u16 x, y; + u8 spriteId; + + switch (task->data[1]) + { + case 1: + spriteTemplate = &gUnknown_08596C28; + var0 = 0; + break; + case 2: + case 3: + spriteTemplate = &gUnknown_08596C40; + var0 = 80; + break; + case 4: + spriteTemplate = &gUnknown_08596C40; + var0 = 64; + break; + case 5: + spriteTemplate = &gUnknown_08596C40; + var0 = 48; + break; + default: + return; + } + + x = task->data[2] >> 3; + y = task->data[3] >> 3; + x += (task->data[12] * 4); + + spriteId = CreateSprite(spriteTemplate, x, y, 35); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 18; + gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3); + gSprites[spriteId].data[4] = y; + gSprites[spriteId].data[5] = -16 - (task->data[1] * 2); + gSprites[spriteId].oam.tileNum += var0; + + InitAnimArcTranslation(&gSprites[spriteId]); + task->data[11]++; + } + + task->data[12] *= -1; +} + +void sub_811131C(struct Sprite *sprite) +{ + if (TranslateAnimArc(sprite)) + { + u8 taskId = FindTaskIdByFunc(sub_81110A4); + if (taskId != 0xFF) + gTasks[taskId].data[11]--; + + DestroySprite(sprite); + } +} + +static u8 sub_811135C(void) +{ + u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer; + u8 var0 = retVal - 1; + if (var0 > 4) + retVal = 1; + + return retVal; +} + +void sub_8111388(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] -= gBattleAnimArgs[2]; + sprite->data[0] = 3; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_81113C8; + sprite->invisible = 1; +} + +static void sub_81113C8(struct Sprite *sprite) +{ + sprite->invisible = 0; + if (sprite->data[3] != 0) + { + sprite->pos2.y = sprite->data[2] + sprite->data[3]; + sprite->data[3] += sprite->data[0]; + sprite->data[0]++; + if (sprite->data[3] > 0) + { + sprite->data[3] = 0; + } + } + else + { + if (--sprite->data[1] == 0) + DestroyAnimSprite(sprite); + } +} + +void sub_8111418(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + StartSpriteAffineAnim(sprite, 1); + + TranslateAnimSpriteToTargetMonLocation(sprite); +} + +void sub_8111444(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[5] = gBattleAnimArgs[2]; + + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->callback = sub_811149C; +} + +static void sub_811149C(struct Sprite *sprite) +{ + sprite->data[0] += 8; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + + sprite->pos2.x += sprite->data[3] / 40; + sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]); + + if (sprite->data[0] > 140) + DestroyAnimSprite(sprite); +} + +void AnimTask_GetSeismicTossDamageLevel(u8 taskId) +{ + if (gAnimMoveDmg < 33) + gBattleAnimArgs[7] = 0; + if ((u32)gAnimMoveDmg - 33 < 33) + gBattleAnimArgs[7] = 1; + if (gAnimMoveDmg > 65) + gBattleAnimArgs[7] = 2; + + DestroyAnimVisualTask(taskId); +} + +void sub_811152C(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80A6DAC(0); + gTasks[taskId].data[1] = 200; + } + + gBattle_BG3_Y += gTasks[taskId].data[1] / 10; + gTasks[taskId].data[1] -= 3; + + if (gTasks[taskId].data[0] == 120) + { + sub_80A6DAC(1); + DestroyAnimVisualTask(taskId); + } + + gTasks[taskId].data[0]++; +} + +void sub_8111590(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80A6DAC(0); + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = gBattle_BG3_Y; + } + + gTasks[taskId].data[1] += 80; + gTasks[taskId].data[1] &= 0xFF; + gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]); + + if (gBattleAnimArgs[7] == 0xFFF) + { + gBattle_BG3_Y = 0; + sub_80A6DAC(1); + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c index bf16a20fc..b7ca087fd 100644 --- a/src/rom_8011DC0.c +++ b/src/rom_8011DC0.c @@ -1784,7 +1784,7 @@ void sub_801440C(u8 taskId) ScriptContext2_Disable(); } -extern u8 gUnknown_0203CEF8[]; +extern u8 gSelectedOrderFromParty[]; void sub_8014790(u8 taskId) { @@ -1802,8 +1802,8 @@ void sub_8014790(u8 taskId) gLinkPlayers[0].linkType = 0x2211; gLinkPlayers[0].id = 0; gLinkPlayers[1].id = 2; - sendBuff[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES); - sendBuff[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL); + sendBuff[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES); + sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL); gMain.savedCallback = NULL; data[0] = 4; sub_800E3A8(); diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c new file mode 100755 index 000000000..7fc61f953 --- /dev/null +++ b/src/script_pokemon_util_80F87D8.c @@ -0,0 +1,707 @@ +#include "global.h" +#include "battle.h" +#include "battle_gfx_sfx_util.h" +#include "berry.h" +#include "contest.h" +#include "contest_link_80F57C4.h" +#include "contest_painting.h" +#include "daycare.h" +#include "decompress.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "international_string_util.h" +#include "link.h" +#include "link_rfu.h" +#include "main.h" +#include "menu.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "pokedex.h" +#include "pokemon.h" +#include "random.h" +#include "script.h" +#include "script_menu.h" +#include "sprite.h" +#include "string_util.h" +#include "tv.h" +#include "constants/event_objects.h" +#include "constants/items.h" +#include "constants/species.h" +#include "constants/vars.h" + +extern const u16 gEventObjectPalette8[]; +extern const u16 gEventObjectPalette17[]; +extern const u16 gEventObjectPalette33[]; +extern const u16 gEventObjectPalette34[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + +extern u8 gSelectedOrderFromParty[]; + +static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 }; + +static void sub_80F8EE8(u8 taskId); +static void sub_80F9088(u8 taskId); +static void sub_80F9460(void); +static void sub_80F94B8(void); + +void SetContestTrainerGfxIds(void) +{ + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId; + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_1 - VARS_START] = gContestMons[1].trainerGfxId; + gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId; +} + +void sub_80F8814(void) +{ + u16 var1; + u8 var0 = gSpecialVar_0x8005; + switch (var0) + { + case 0: + var1 = 3; + break; + case 1: + var1 = 4; + break; + case 2: + var1 = 5; + break; + default: + var1 = 100; + break; + } + + gSpecialVar_0x8004 = var1; +} + +void sub_80F8850(void) +{ + sub_80F8264(); + sub_80F8290(); + sub_80F8438(); +} + +void sub_80F8864(void) +{ + int contestWinner; + switch (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + contestWinner = 8; + break; + case CONTEST_CATEGORY_BEAUTY: + contestWinner = 9; + break; + case CONTEST_CATEGORY_CUTE: + contestWinner = 10; + break; + case CONTEST_CATEGORY_SMART: + contestWinner = 11; + break; + case CONTEST_CATEGORY_TOUGH: + default: + contestWinner = 12; + break; + } + + if (!gSaveBlock1Ptr->contestWinners[contestWinner].species) + gSpecialVar_0x8004 = 0; + else + gSpecialVar_0x8004 = 1; +} + +void sub_80F88DC(void) +{ + sub_80DEDA8(0xFF); +} + +void sub_80F88E8(void) +{ + if (gContestFinalStandings[gContestPlayerMonIndex] == 0 + && gSpecialVar_ContestRank == 3 + && gUnknown_02039F08[gContestPlayerMonIndex] >= 800) + { + gSpecialVar_0x8004 = 1; + } + else + { + gSpecialVar_0x8004 = 0; + } +} + +u8 sub_80F8940(void) +{ + int i; + u8 var0 = 0; + + for (i = 0; i < 5; i++) + { + if (gSaveBlock1Ptr->contestWinners[8 + i].species) + var0++; + } + + return var0; +} + +void sub_80F8970(void) +{ + s16 sp[4]; + int i, j; + s16 condition; + s8 var0; + u8 var2; + u8 r8; + u8 r7; + + for (i = 0; i < 4; i++) + sp[i] = gContestMonConditions[i]; + + for (i = 0; i < 3; i++) + { + for (j = 3; j > i; j--) + { + if (sp[j - 1] < sp[j]) + { + int temp = sp[j]; + sp[j] = sp[j - 1]; + sp[j - 1] = temp; + } + } + } + + condition = sp[gSpecialVar_0x8006]; + var0 = 0; + r8 = 0; + for (i = 0; i < 4; i++) + { + if (sp[i] == condition) + { + var0++; + if (i == gSpecialVar_0x8006) + r8 = var0; + } + } + + for (i = 0; i < 4; i++) + { + if (sp[i] == condition) + break; + } + + r7 = i; + var2 = r8; + for (i = 0; i < 4; i++) + { + if (condition == gContestMonConditions[i]) + { + if (var2 == 1) + break; + var2--; + } + } + + StringCopy(gStringVar1, gContestMons[i].nickname); + StringCopy(gStringVar2, gContestMons[i].trainerName); + sub_81DB5AC(gStringVar2); + + if (var0 == 1) + gSpecialVar_0x8006 = r7; + else if (r8 == var0) + gSpecialVar_0x8006 = r7; + else + gSpecialVar_0x8006 = r7 + 4; +} + +static void ShowContestWinnerCleanup(void) +{ + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void ShowContestWinner(void) +{ + SetMainCallback2(sub_812FDEC); + gMain.savedCallback = ShowContestWinnerCleanup; +} + +void sub_80F8AFC(void) +{ + int i; + + if (gIsLinkContest & 1) + { + for (i = 0; i < gUnknown_02039F30; i++) + { + int version = (u8)gLinkPlayers[i].version; + if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + if (gLinkPlayers[i].gender == MALE) + gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_BRENDAN; + else + gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_MAY; + } + } + + VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId); + VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId); + } +} + +void sub_80F8B94(void) +{ + int i; + u8 eventObjectId; + int version; + struct Sprite *sprite; + + gReservedSpritePaletteCount = 12; + if (gIsLinkContest & 1) + { + for (i = 0; i < gUnknown_02039F30; i++) + { + eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sprite = &gSprites[gEventObjects[eventObjectId].spriteId]; + sprite->oam.paletteNum = 6 + i; + version = (u8)gLinkPlayers[i].version; + if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + if (gLinkPlayers[i].gender == MALE) + LoadPalette(gEventObjectPalette33, 0x160 + i * 0x10, 0x20); + else + LoadPalette(gEventObjectPalette34, 0x160 + i * 0x10, 0x20); + } + else + { + if (gLinkPlayers[i].gender == MALE) + LoadPalette(gEventObjectPalette8, 0x160 + i * 0x10, 0x20); + else + LoadPalette(gEventObjectPalette17, 0x160 + i * 0x10, 0x20); + } + } + } +} + +u8 GiveMonArtistRibbon(void) +{ + u8 hasArtistRibbon; + + hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON); + if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3 + && gUnknown_02039F08[gContestPlayerMonIndex] >= 800) + { + hasArtistRibbon = 1; + SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon); + if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4) + sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON); + + return 1; + } + else + { + return 0; + } +} + +u8 sub_80F8D24(void) +{ + return 0; +} + +void ShowContestEntryMonPic(void) +{ + const struct CompressedSpritePalette *palette; + u32 personality, otId; + u16 species; + u8 spriteId; + u8 taskId; + u8 left, top; + + if (FindTaskIdByFunc(sub_80F8EE8) == 0xFF) + { + AllocateMonSpritesGfx(); + left = 10; + top = 3; + species = gContestMons[gSpecialVar_0x8006].species; + personality = gContestMons[gSpecialVar_0x8006].personality; + otId = gContestMons[gSpecialVar_0x8006].otId; + taskId = CreateTask(sub_80F8EE8, 0x50); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = species; + if (gSpecialVar_0x8006 == gContestPlayerMonIndex) + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + else + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + + palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedObjectPalette(palette); + SetMultiuseSpriteTemplateToPokemon(species, 1); + gMultiuseSpriteTemplate.paletteTag = palette->tag; + spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0); + + if (gIsLinkContest & 1) + { + if (!(gIsLinkContest & 4)) + DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0); + } + else + { + DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0); + } + + gTasks[taskId].data[2] = spriteId; + gTasks[taskId].data[3] = left; + gTasks[taskId].data[4] = top; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.priority = 0; + } +} + +void sub_80F8EB8(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80F8EE8); + if (taskId != 0xFF) + { + gTasks[taskId].data[0]++; + FreeMonSpritesGfx(); + } +} + +static void sub_80F8EE8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + struct Sprite *sprite; + + switch(task->data[0]) + { + case 0: + task->data[0]++; + break; + case 1: + task->data[5] = CreateWindowFromRect(10, 3, 8, 8); + SetStandardWindowBorderStyle(task->data[5], 1); + task->data[0]++; + break; + case 2: + break; + case 3: + sprite = &gSprites[task->data[2]]; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + + if(sprite->oam.affineMode) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); + task->data[0]++; + break; + case 4: + sub_80E2A78(gTasks[taskId].data[5]); + DestroyTask(taskId); + break; + } +} + +void ScriptGetMultiplayerId(void) +{ + if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2)) + gSpecialVar_Result = GetMultiplayerId(); + else + gSpecialVar_Result = 4; +} + +void ScriptRandom(void) +{ + u16 random; + u16 *scriptPtr; + + if (gIsLinkContest & 1) + { + gContestRngValue = 1103515245 * gContestRngValue + 24691; + random = gContestRngValue >> 16; + scriptPtr = &gSpecialVar_Result; + } + else + { + scriptPtr = &gSpecialVar_Result; + random = Random(); + } + *scriptPtr = random % *scriptPtr; +} + +u16 sub_80F903C(void) +{ + gContestRngValue = 1103515245 * gContestRngValue + 24691; + return gContestRngValue >> 16; +} + +u8 sub_80F905C(void) +{ + if (gIsLinkContest & 2) + { + CreateTask(sub_80F9088, 5); + return 1; + } + else + { + return 0; + } +} + +static void sub_80F9088(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (sub_800A520()) + { + sub_800ADF8(); + gTasks[taskId].data[0]++; + } + break; + case 1: + gTasks[taskId].data[0]++; + break; + default: + if (sub_800A520() == 1) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } + break; + } +} + +void sub_80F90DC(void) +{ + if (gIsLinkContest & 2) + { + if (gReceivedRemoteLinkPlayers) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(8, 8); + } + } +} + +void sub_80F910C(void) +{ + if (gIsLinkContest & 2) + { + if (gReceivedRemoteLinkPlayers) + sub_800E084(); + } +} + +u8 sub_80F9134(void) +{ + if (gIsLinkContest & 4) + return 1; + else + return 0; +} + +void sub_80F9154(void) +{ + gIsLinkContest = 0; +} + +u8 sub_80F9160(void) +{ + if (gIsLinkContest & 2) + return 1; + else + return 0; +} + +void HealPlayerParty(void) +{ + u8 i, j; + u8 ppBonuses; + u8 arg[4]; + + // restore HP. + for(i = 0; i < gPlayerPartyCount; i++) + { + u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + arg[0] = maxHP; + arg[1] = maxHP >> 8; + SetMonData(&gPlayerParty[i], MON_DATA_HP, arg); + ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES); + + // restore PP. + for(j = 0; j < 4; j++) + { + arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j); + SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg); + } + + // since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData. + arg[0] = 0; + arg[1] = 0; + arg[2] = 0; + arg[3] = 0; + SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg); + } +} + +u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3) +{ + u16 nationalDexNum; + int sentToPc; + u8 heldItem[2]; + struct Pokemon mon; + + CreateMon(&mon, species, level, 32, 0, 0, 0, 0); + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); + sentToPc = GiveMonToPlayer(&mon); + nationalDexNum = SpeciesToNationalPokedexNum(species); + + switch(sentToPc) + { + case 0: + case 1: + GetSetPokedexFlag(nationalDexNum, 2); + GetSetPokedexFlag(nationalDexNum, 3); + break; + } + return sentToPc; +} + +u8 ScriptGiveEgg(u16 species) +{ + struct Pokemon mon; + u8 isEgg; + + CreateEgg(&mon, species, TRUE); + isEgg = TRUE; + SetMonData(&mon, MON_DATA_IS_EGG, &isEgg); + + return GiveMonToPlayer(&mon); +} + +void HasEnoughMonsForDoubleBattle(void) +{ + switch (GetMonsStateToDoubles()) + { + case 0: + gSpecialVar_Result = 0; + break; + case 1: + gSpecialVar_Result = 1; + break; + case 2: + gSpecialVar_Result = 2; + break; + } +} + +static bool8 CheckPartyMonHasHeldItem(u16 item) +{ + int i; + + for(i = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item) + return TRUE; + } + return FALSE; +} + +bool8 sub_80F9370(void) +{ + bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY); + if (hasItem == TRUE) + GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1); + + return hasItem; +} + +void CreateScriptedWildMon(u16 species, u8 level, u16 item) +{ + u8 heldItem[2]; + + ZeroEnemyPartyMons(); + CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0); + if (item) + { + heldItem[0] = item; + heldItem[1] = item >> 8; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem); + } +} + +void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot) +{ + if (monIndex > PARTY_SIZE) + monIndex = gPlayerPartyCount - 1; + + SetMonMoveSlot(&gPlayerParty[monIndex], move, slot); +} + +void sub_80F9438(void) +{ + gMain.savedCallback = sub_80F9460; + VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??) + sub_81B8518(0); +} + +static void sub_80F9460(void) +{ + switch (gSelectedOrderFromParty[0]) + { + case 0: + gSpecialVar_Result = 0; + break; + default: + gSpecialVar_Result = 1; + break; + } + + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void sub_80F9490(void) +{ + gMain.savedCallback = sub_80F94B8; + sub_81B8518(gSpecialVar_0x8004 + 1); +} + +static void sub_80F94B8(void) +{ + switch (gSelectedOrderFromParty[0]) + { + case 0: + gSpecialVar_Result = 0; + break; + default: + gSpecialVar_Result = 1; + break; + } + + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); +} + +void ReducePlayerPartyToSelectedMons(void) +{ + struct Pokemon party[4]; + int i; + + CpuFill32(0, party, sizeof party); + + // copy the selected pokemon according to the order. + for (i = 0; i < 4; i++) + if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop + party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal + + CpuFill32(0, gPlayerParty, sizeof gPlayerParty); + + // overwrite the first 4 with the order copied to. + for (i = 0; i < 4; i++) + gPlayerParty[i] = party[i]; + + CalculatePlayerPartyCount(); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index bff045d1c..ba06a3dc1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -472,7 +472,7 @@ gUnknown_0203CEF0: @ 203CEF0 gUnknown_0203CEF4: @ 203CEF4 .space 0x4 -gUnknown_0203CEF8: @ 203CEF8 +gSelectedOrderFromParty: @ 203CEF8 .space 0x4 gUnknown_0203CEFC: @ 203CEFC |